From 0a545ff95f10cc2290075a8fb97e62de657eeb08 Mon Sep 17 00:00:00 2001 From: Salil Rajkarnikar Date: Fri, 21 Jul 2023 15:13:39 +0545 Subject: [PATCH 1/2] sidebar ui fix --- public/css/app.css | 228 +- public/css/webportal-app.css | 3126 +++++++++++++++-- public/js/app.js | 869 ++--- public/js/vendor.js | 1016 ++++-- public/mix-manifest.json | 8 +- .../assets/js/components/AdminHeader.vue | 89 +- resources/assets/sass/layouts/_header.scss | 42 +- 7 files changed, 4175 insertions(+), 1203 deletions(-) diff --git a/public/css/app.css b/public/css/app.css index 43eea403c3..4393fa3c9a 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; @@ -577,7 +530,6 @@ video { position: relative; } .sticky { - position: -webkit-sticky; position: sticky; } .inset-0 { @@ -1130,7 +1082,6 @@ video { height: 0px; } .h-fit { - height: -webkit-fit-content; height: -moz-fit-content; height: fit-content; } @@ -1258,7 +1209,6 @@ video { width: 0.75rem; } .w-fit { - width: -webkit-fit-content; width: -moz-fit-content; width: fit-content; } @@ -1633,12 +1583,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 +1590,7 @@ video { } } .animate-spin { - -webkit-animation: spin 1s linear infinite; - animation: spin 1s linear infinite; + animation: spin 1s linear infinite; } .cursor-pointer { cursor: pointer; @@ -1758,6 +1701,11 @@ video { margin-right: calc(1.25rem * var(--tw-space-x-reverse)); margin-left: calc(1.25rem * calc(1 - var(--tw-space-x-reverse))); } +.space-y-2 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(0.5rem * var(--tw-space-y-reverse)); +} .space-x-3 > :not([hidden]) ~ :not([hidden]) { --tw-space-x-reverse: 0; margin-right: calc(0.75rem * var(--tw-space-x-reverse)); @@ -1788,11 +1736,6 @@ video { margin-right: calc(0.625rem * var(--tw-space-x-reverse)); margin-left: calc(0.625rem * calc(1 - var(--tw-space-x-reverse))); } -.space-y-2 > :not([hidden]) ~ :not([hidden]) { - --tw-space-y-reverse: 0; - margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse))); - margin-bottom: calc(0.5rem * var(--tw-space-y-reverse)); -} .space-x-6 > :not([hidden]) ~ :not([hidden]) { --tw-space-x-reverse: 0; margin-right: calc(1.5rem * var(--tw-space-x-reverse)); @@ -2412,6 +2355,13 @@ video { font-size: 2.25rem; line-height: 2.5rem; } +.\!text-xs { + font-size: 0.75rem !important; + line-height: 1rem !important; +} +.text-\[8px\] { + font-size: 8px; +} .text-tiny { font-size: 10px; } @@ -2718,12 +2668,12 @@ video { transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; } -.duration-300 { - transition-duration: 300ms; -} .duration-200 { transition-duration: 200ms; } +.duration-300 { + transition-duration: 300ms; +} .duration-500 { transition-duration: 500ms; } @@ -2848,7 +2798,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; @@ -3034,6 +2983,75 @@ video { font-size: 0.875rem; line-height: 1.25rem; } + .activity-nav-menu .activity-nav-list .nav__pointer, +.activity-nav-menu .activity-nav-list .nav__pointer-hover { + position: relative; + } + .activity-nav-menu .activity-nav-list .nav__pointer:after, +.activity-nav-menu .activity-nav-list .nav__pointer-hover:after { + content: ""; + position: absolute; + bottom: 0px; + left: 0px; + height: 0.25rem; + width: 100%; + --tw-scale-x: 0; + --tw-scale-y: 1; + 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)); + border-radius: 0.125rem; + --tw-bg-opacity: 1; + background-color: rgba(var(--turquoise), var(--tw-bg-opacity)); + transition-property: all; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 500ms; + } +} +@media screen and (max-width: 1420px) and (max-width: 1420px) { + .activity-nav-menu .activity-nav-list .nav__pointer:after, +.activity-nav-menu .activity-nav-list .nav__pointer-hover:after { + bottom: -0.5rem; + height: 0.25rem; + width: 100%; + } +} +@media screen and (max-width: 1420px) { + .activity-nav-menu .activity-nav-list .nav__pointer:hover:after, +.activity-nav-menu .activity-nav-list .nav__pointer-hover:hover:after { + --tw-scale-x: 1; + 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)); + } + .activity-nav-menu .activity-nav-list .nav__pointer:after { + --tw-scale-x: 1; + 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)); + } + .activity-nav-menu .activity-nav-list.activity-list .nav__pointer, +.activity-nav-menu .activity-nav-list.activity-list .nav__pointer-hover { + position: relative; + } + .activity-nav-menu .activity-nav-list.activity-list .nav__pointer:after, +.activity-nav-menu .activity-nav-list.activity-list .nav__pointer-hover:after { + content: ""; + } +} +@media screen and (max-width: 1420px) and (max-width: 1420px) { + .activity-nav-menu .activity-nav-list.activity-list .nav__pointer:after, +.activity-nav-menu .activity-nav-list.activity-list .nav__pointer-hover:after { + top: 0px; + left: -1rem; + height: 1rem; + width: 0.25rem; + } +} +@media screen and (max-width: 1420px) { + .activity-nav-menu .activity-nav-list.activity-list .nav__pointer:hover:after, +.activity-nav-menu .activity-nav-list.activity-list .nav__pointer-hover:hover:after { + --tw-scale-x: 1; + 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)); + } + .activity-nav-menu .activity-nav-list.activity-list .nav__pointer:after { + --tw-scale-x: 1; + 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)); + } .activity-nav-menu .activity-nav-list.language-nav-list { flex-direction: row; margin-bottom: 20px; @@ -3111,7 +3129,7 @@ video { @media screen and (max-width: 1420px) { .nav__pointer:after, .nav__pointer-hover:after { left: -1rem; - height: 100%; + height: 1rem; width: 0.25rem; } } @@ -3848,19 +3866,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 { @@ -5666,8 +5673,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)); @@ -5710,8 +5716,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)); @@ -6243,103 +6248,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; @@ -6966,4 +6920,4 @@ html { background-color: rgba(var(--n-10), var(--tw-bg-opacity)); } -/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzL2FwcC5jc3MiLCJtYXBwaW5ncyI6IkFBQUE7O0NBQUE7OztDQUFBOztBQUFBOzs7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOztFQUFBO0FBQUE7O0FBQUE7Ozs7O0NBQUE7O0FBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtLQUFBO0VBQUE7QUFBQTs7QUFBQTs7O0NBQUE7O0FBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7Ozs7Q0FBQTs7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBO0VBQUE7VUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBOzs7Ozs7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7O0VBQUE7QUFBQTs7QUFBQTs7O0NBQUE7O0FBQUE7Ozs7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBOztFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7RUFBQTtBQUFBOztBQUFBO0VBQUE7QUFBQTs7QUFBQTs7OztDQUFBOztBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7Ozs7Q0FBQTs7QUFBQTs7Ozs7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBOztFQUFBO0FBQUE7O0FBQUE7OztDQUFBOztBQUFBOzs7O0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBO0VBQUE7QUFBQTs7QUFBQTs7Q0FBQTs7QUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7O0VBQUE7QUFBQTs7QUFBQTs7O0NBQUE7O0FBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7RUFBQTtBQUFBOztBQUFBOzs7Q0FBQTs7QUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFBQTs7Q0FBQTs7QUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7Ozs7Ozs7Ozs7Ozs7RUFBQTtBQUFBOztBQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBO0VBQUE7QUFBQTs7QUFBQTs7O0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7RUFBQTtBQUFBOztBQUFBOzs7Q0FBQTs7QUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFBQTs7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7O0VBQUE7QUFBQTs7QUFBQTs7Q0FBQTtBQUFBO0VBQUE7QUFBQTs7QUFBQTs7OztDQUFBOztBQUFBOzs7Ozs7OztFQUFBO0VBQUE7QUFBQTs7QUFBQTs7Q0FBQTs7QUFBQTs7RUFBQTtFQUFBO0FBQUE7O0FBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUNBQTtFQUFBO0FBQUE7QUFBQTs7RUFBQTtJQUFBO0VBQUE7QUFBQTtBQUFBOztFQUFBO0lBQUE7RUFBQTtBQUFBO0FBQUE7O0VBQUE7SUFBQTtFQUFBO0FBQUE7QUFBQTs7RUFBQTtJQUFBO0VBQUE7QUFBQTtBQUFBOztFQUFBO0lBQUE7RUFBQTtBQUFBO0FDQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7O0VBQUE7SUFBQTtFQUFBO0FBQUE7QUFBQTs7RUFBQTtJQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7VUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtPQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtVQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUNBQTtFQUNFO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFFQTtFQUNBO0VBSUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7QUNaRjs7QUN6REE7RUFDRTtJQUNFO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RUQ0REY7QUFDRjtBQzFEQTtFQUNFO0VBQ0E7QUQ0REY7O0FDMURBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQUE7RUFDQTtBRDZERjs7QUMxREU7RUFBQTtFQUFBO0VBQ0E7QUFEQTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FEK0RGO0FDNURJO0VBQUE7RUFBQTtBQUFBO0FBSUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQ0E7RUFBQTtFQUFBO0VBQ0E7QUFGQTtBQUtFO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUtGO0VBQUE7RUFBQTtFQUNBO0FBREE7O0FBSUo7RUFDRTtJQUNFO0VENERGO0VDekRJO0lBQUE7SUFBQTtJQUNBO0VBREE7RUFJRjtJQUNFO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUFBO0lBQ0E7SUFDQTtJQUNBO0VEMkRKO0VDekRFO0lBQ0U7RUQyREo7QUFDRjtBQ3ZERTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBOztFQUFBO0lBQUE7RUFBQTtBQUFBO0FBREY7RUFFRTtFQUNBO0VBQ0E7RUFDQTtBRDBERjs7QUN2REU7RUFDRTtFQUNBO0VBQ0E7QUQwREo7O0FDdERFO0VBREY7SUFFSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFBQTtJQUFBO0lBQUE7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RUQwREY7RUN0RE07SUFBQTtJQUFBO0lBQ0E7SUFDQTtFQUZBO0VBS0U7SUFBQTtJQUFBO0VBQUE7RUFHRjtJQUNFO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUFBO0VEd0RSO0VDdERNO0lBQ0U7RUR3RFI7QUFDRjtBQ25ERTtFQTlDRjtJQStDSTtJQUNBO0lBQ0E7RURzREY7QUFDRjs7QUNsREU7O0VBQUE7SUFBQTtFQUFBO0FBQUE7O0FBSUE7RUFDRTtJQUFBO0VBQUE7QUR1REo7O0FDbkRBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBRHNERjs7QUNuREU7RUFERjtJQUVJO0lBQ0E7SUFD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QTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQU1GO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQ0E7QUFEQTtBQUlFO0VBQUE7RUFBQTtBQUFBO0FBSUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBSUE7RUFBQTtFQUFBO0FBQUE7O0FBTUY7RUFBQTtFQUFBO09BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBR0U7RUFBQTtFQUFBO09BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUNBO0FBREE7QUFFQTtFQUNFO0VBQ0E7QVJzdkJOO0FRbnZCTTtFQUFBO0VBQUE7QUFBQTtBQUlGO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUlBO0VBQUE7RUFBQTtBQUFBO0FBR0Y7RUFDRTtFQUNBO0FSbXZCSjs7QVE3dUJFO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFDQTtBQURBO0FBSUU7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBSUE7RUFBQTtFQUFBO0FBQUE7O0FBS0Y7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFDQTtBQURBO0FBSUU7RUFBQTtFQUFBO0FBQUE7O0FBS0Y7RUFBQTtBQUFBOztBQUlBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQ0E7QUFEQTtBQUlFO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBS0Y7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFJQTtFQUFBO0FBQUE7O0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQ0E7QUFEQTtBQUlFO0VBQUE7RUFBQTtFQUFBO0VBQUE7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REo7QWVqMURJO0VBQ0U7QWZtMUROO0FlaDFESTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FmazFETjs7QWU3MERBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZmcxREY7O0FlNzBEQTtFQUNFO0VBQ0E7RUFDQTtPQUFBO0FmZzFERjtBZTkwREU7RUFDRTtBZmcxREo7O0FlMzBERTtFQUNFO0FmODBESjtBZTUwREk7RUFDRTtFQUNBO0VBQ0E7QWY4MEROO0FlMzBESTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FmNjBETjs7QWV4MERBO0VBQ0U7RUFDQTtBZjIwREY7QWV6MERFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZjIwREo7QWV6MERJO0VBQ0U7QWYyMEROOztBZXQwREE7RUFDRTtFQUNBO0FmeTBERjs7QWV0MERBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZnkwREY7O0FlcDBESTtFQUNFO0VBQ0E7QWZ1MEROO0FlcDBESTtFQUNFO0VBQ0E7RUFDQTtBZnMwRE47QWVuMERJO0VBQ0U7QWZxMEROO0FlbDBESTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWZvMEROO0FlbDBETTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FmbzBEUjtBZWgwREU7RUFDRTtFQUNBO0FmazBESjs7QWU1ekRJO0VBQ0U7RUFDQTtBZit6RE47QWUxekRJO0VBQ0U7RUFDQTtBZjR6RE47QWV2ekRJO0VBQ0U7RUFDQTtBZnl6RE47O0FnQm4rREE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCcytERjtBZ0JyK0RFO0VBYkY7SUFjSTtFaEJ3K0RGO0FBQ0Y7QWdCdCtERTtFQUNFO0FoQncrREo7QWdCcitERTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FoQnUrREo7O0FnQnArREE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQnUrREY7QWdCcitERTtFQUNFO0VBQ0E7QWhCdStESjs7QWdCcCtEQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCdStERjtBZ0JyK0RFO0VBYkY7SUFjSTtJQUNBO0VoQncrREY7QUFDRjtBZ0J0K0RFO0VBQ0U7RUFDQTtBaEJ3K0RKOztBaUIxaUVBO0VBQ0U7RUFDQTtBakI2aUVGOztBaUIzaUVBO0VBQ0U7QWpCOGlFRjs7QWlCemlFRTs7O0VBQ0U7QWpCOGlFSjs7QWlCMWlFRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FqQjZpRUo7O0FpQjFpRUE7RUFDRTtFQUNBO0FqQjZpRUY7O0FpQjNpRUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCOGlFRjs7QWlCM2lFQTtFQUNFO0FqQjhpRUY7QWlCNWlFRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCOGlFSjtBaUI3aUVJO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCK2lFTjtBaUI1aUVFO0VBQ0U7QWpCOGlFSjtBaUI1aUVFO0VBRUU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakI2aUVKO0FpQjVpRUk7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakI4aUVOOztBaUJ6aUVBO0VBQ0U7QWpCNGlFRjtBaUIzaUVFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQjZpRUo7O0FpQjFpRUE7RUFDRTtBakI2aUVGOztBaUIzaUVBO0VBQ0U7QWpCOGlFRjs7QWlCM2lFRTtFQUNFO0FqQjhpRUo7QWlCNWlFRTtFQUNFO0VBQ0E7QWpCOGlFSjs7QWlCM2lFQTtFQUNFO0FqQjhpRUY7O0FpQjVpRUE7RUFDRTtFQUNBO0FqQitpRUY7O0FpQjNpRUU7RUFDRTtBakI4aUVKOztBaUIzaUVBO0VBQ0U7RUFDQTtBakI4aUVGOztBa0I3cUVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbEJnckVGOztBbUJyckVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FuQndyRUY7O0FtQnJyRUU7RUFDRTtBbkJ3ckVKOztBbUJwckVFO0VBQ0U7QW5CdXJFSjs7QW1CbnJFQTtFQUNFO0VBQ0E7RUFDQTtBbkJzckVGOztBbUJ6ckVBO0VBQ0U7RUFDQTtFQUNBO0FuQnNyRUY7O0FtQm5yRUE7RUFDRTtBbkJzckVGOztBbUJuckVBO0VBQ0U7QW5Cc3JFRjs7QW1CcHJFQTtFQUNFO0FuQnVyRUY7O0FtQnJyRUE7RUFDRTtFQUNBO0FuQndyRUY7O0FtQnJyRUE7RUFDRTtFQUNBO0FuQndyRUY7O0FtQnRyRUE7RUFDRTtFQUNBO0VBQ0E7QW5CeXJFRjs7QW1CdHJFQTtFQUNFO0VBQ0E7QW5CeXJFRjs7QW1CdHJFQTtFQUNFO0FuQnlyRUY7O0FtQnRyRUE7RUFDRTtBbkJ5ckVGOztBbUJ0ckVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QW5CeXJFRjs7QW1CdHJFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FuQnlyRUY7O0FtQnRyRUE7RUFDRTtFQUNBO0VBQ0E7QW5CeXJFRjs7QW1CdHJFQTtFQUNFO0VBQ0E7QW5CeXJFRjs7QW1CdHJFQTtFQUNFO0VBQ0E7RUFDQTtBbkJ5ckVGOztBbUJ2ckVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbkIwckVGOztBbUJ2ckVBO0VBQ0U7RUFDQTtBbkIwckVGOztBbUJ2ckVBO0VBQ0U7QW5CMHJFRjs7QW1CdnJFQTtFQUNFO0FuQjByRUY7O0FtQnZyRUE7RUFDRTtBbkIwckVGOztBbUJ2ckVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QW5CMHJFRjs7QW1CdHJFRTtFQUFBO0VBQUE7RUFDQTtFQUNBO0FBRkE7O0FBS0E7RUFBQTtFQUFBO0VBQ0E7QUFEQTs7QUFJQTtFQUFBO0VBQUE7RUFDQTtBQURBOztBbkJ2R0Y7RUFDRTtFQUNBO0VBQ0E7QUF1eUVGOztBSjcwRUE7RUFBQTtDd0JBQTs7QXhCQUE7RUFBQTtDd0JBQTs7QXhCQUE7RUFBQTtDd0JBQTs7QXhCQUE7RUFBQTtDd0JBQTs7QXhCQUE7RUFBQTtDd0JBQTs7QXhCQUE7RUFBQTtDd0JBQTs7QXhCQUE7RUFBQTtDd0JBQTs7QXhCQUE7RUFBQTtDd0JBQTs7QXhCQUE7RUFBQTtDd0JBQTs7QXhCQUE7RUFBQSx1QndCQUE7RXhCQUE7Q3dCQUE7O0F4QkFBO0VBQUEsdUJ3QkFBO0V4QkFBO0N3QkFBOztBeEJBQTtFQUFBLG1Cd0JBQTtFeEJBQTtDd0JBQTs7QXhCQUE7RUFBQSxtQndCQUE7RXhCQUE7Q3dCQUE7O0F4QkFBO0VBQUEsbUJ3QkFBO0V4QkFBO0N3QkFBOztBeEJBQTtFQUFBLG1Cd0JBQTtFeEJBQTtDd0JBQTs7QXhCQUE7RUFBQSxzQndCQUE7RXhCQUE7Q3dCQUE7O0F4QkFBO0VBQUEsc0J3QkFBO0V4QkFBO0N3QkFBOztBeEJBQTtFQUFBLGlCd0JBQTtFeEJBQTtDd0JBQTs7QXhCQUE7RUFBQSxpQndCQUE7RXhCQUE7Q3dCQUE7O0F4QkFBO0VBQUEscUJ3QkFBO0V4QkFBO0N3QkFBOztBeEJBQTtFQUFBLHFCd0JBQTtFeEJBQTtDd0JBQTs7QXhCQUE7RUFBQSwrQndCQUE7RXhCQUE7Q3dCQUE7O0F4QkFBO0VBQUEsK0J3QkFBO0V4QkFBO0N3QkFBOztBeEJBQTtFQUFBO0N3QkFBOztBeEJBQTtFQUFBO0N3QkFBOztBeEJBQTtFQUFBLHVCd0JBQTtFeEJBQTtDd0JBQTs7QXhCQUE7RUFBQSx1QndCQUE7RXhCQUE7Q3dCQUE7O0F4QkFBO0VBQUEsbUJ3QkFBO0V4QkFBO0N3QkFBOztBeEJBQTtFQUFBLG1Cd0JBQTtFeEJBQTtDd0JBQTs7QXhCQUE7RUFBQSxtQndCQUE7RXhCQUE7Q3dCQUE7O0F4QkFBO0VBQUEsbUJ3QkFBO0V4QkFBO0N3QkFBOztBeEJBQTtFQUFBLG1Cd0JBQTtFeEJBQTtDd0JBQTs7QXhCQUE7RUFBQSxxQndCQUE7RXhCQUE7Q3dCQUE7O0F4QkFBO0VBQUEscUJ3QkFBO0V4QkFBO0N3QkFBOztBeEJBQTtFQUFBLGdDd0JBQTtFeEJBQTtDd0JBQTs7QXhCQUE7RUFBQSxxQndCQUE7RXhCQUE7Q3dCQUE7O0F4QkFBO0VBQUEscUJ3QkFBO0V4QkFBO0N3QkFBOztBeEJBQTtFQUFBLHFCd0JBQTtFeEJBQTtDd0JBQTs7QXhCQUE7RUFBQTtDd0JBQTs7QXhCQUE7RUFBQTtDd0JBQTs7QXhCQUE7RUFBQSxzQndCQUE7RXhCQUE7Q3dCQUE7O0F4QkFBO0VBQUEscUJ3QkFBO0V4QkFBO0N3QkFBOztBeEJBQTtFQUFBO0N3QkFBOztBeEJBQTs7RUFBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBLG9Cd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQSx3QndCQUE7SXhCQUEsK0R3QkFBO0l4QkFBO0d3QkFBOztFeEJBQTtJQUFBLGdDd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQSwrQndCQUE7SXhCQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUEscUJ3QkFBO0l4QkFBO0d3QkFBOztFeEJBQTtJQUFBLG9Cd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQSxrQndCQUE7SXhCQUE7R3dCQUE7O0V4QkFBO0lBQUEsb0J3QkFBO0l4QkFBO0d3QkFBOztFeEJBQTtJQUFBLG1Cd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQSxvQndCQUE7SXhCQUE7R3dCQUE7O0V4QkFBO0lBQUEsc0J3QkFBO0l4QkFBO0d3QkFBOztFeEJBQTtJQUFBLHNCd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQSxxQndCQUE7SXhCQUE7R3dCQUE7O0V4QkFBO0lBQUEscUJ3QkFBO0l4QkFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBLGtCd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQSxnQndCQUE7SXhCQUE7R3dCQUE7O0V4QkFBO0lBQUEsbUJ3QkFBO0l4QkFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBO0NBQUE7O0F4QkFBOztFQUFBO0lBQUEsZ0J3QkFBO0l4QkFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBLDZCd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQSw0QndCQUE7SXhCQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUEscUJ3QkFBO0l4QkFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBLG1Cd0JBQTtJeEJBQTtHd0JBQTtDQUFBOztBeEJBQTs7RUFBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBLGtCd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQSxxQndCQUE7SXhCQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7Q0FBQTs7QXhCQUE7O0VBQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQSxrQndCQUE7SXhCQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUEsd0J3QkFBO0l4QkFBLHdEd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQSxxQndCQUE7SXhCQUE7R3dCQUE7O0V4QkFBO0lBQUEsa0J3QkFBO0l4QkFBO0d3QkFBOztFeEJBQTtJQUFBLHFCd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQSxzQndCQUE7SXhCQUE7R3dCQUE7O0V4QkFBO0lBQUEsbUJ3QkFBO0l4QkFBO0d3QkFBOztFeEJBQTtJQUFBLHFCd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTtDQUFBOztBeEJBQTs7RUFBQTtJQUFBO0d3QkFBO0NBQUE7O0F4QkFBO0VBQUEsbUJ3QkFBO0V4QkFBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3RhaWx3aW5kY3NzL2Jhc2UuY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy90YWlsd2luZGNzcy9jb21wb25lbnRzLmNzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdGFpbHdpbmRjc3MvdXRpbGl0aWVzLmNzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvYWJzdHJhY3RzL192YXJpYWJsZXMuc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvYXBwLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2xheW91dHMvX2hlYWRlci5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9sYXlvdXRzL19tYWluLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2xheW91dHMvX2Zvb3Rlci5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9sYXlvdXRzL19hY3Rpdml0eS5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9sYXlvdXRzL19zZXR0aW5nX3BhZ2Uuc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvbGF5b3V0cy9fd2VicG9ydGFscGFnZXMuc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvYmFzZS9fdHlwb2dyYXBoeS5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9jb21wb25lbnQvX2J1dHRvbi5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9jb21wb25lbnQvX2hhbWJ1cmdlci5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9jb21wb25lbnQvX2lucHV0LnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2NvbXBvbmVudC9fdGFibGUuc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvY29tcG9uZW50L19mb3Jtcy5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9jb21wb25lbnQvX3BhZ2luYXRpb24uc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvY29tcG9uZW50L19vdmVybGF5LnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2NvbXBvbmVudC9fc2VsZWN0Mi5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9jb21wb25lbnQvX3NpZGViYXItaWNvbi5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy92ZW5kb3Itb3ZlcnJpZGVzL211bHRpc2VsZWN0LnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL3ZlbmRvci1vdmVycmlkZXMvX3plbmRleC5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy92ZW5kb3Itb3ZlcnJpZGVzL192dWUtZGF0ZXBpY2tlci5zY3NzIiwid2VicGFjazovLy88bm8gc291cmNlPiJdLCJzb3VyY2VzQ29udGVudCI6WyJAdGFpbHdpbmQgYmFzZTtcbiIsIkB0YWlsd2luZCBjb21wb25lbnRzO1xuIiwiQHRhaWx3aW5kIHV0aWxpdGllcztcbiIsIjpyb290IHtcbiAgLS1ibGFjazogMCwgMCwgMDtcbiAgLS13aGl0ZTogMjU1LCAyNTUsIDI1NTtcbiAgLS10cmFuc3BhcmVudDogdHJhbnNwYXJlbnQ7XG5cbiAgLy8gTmV1dHJhbHNcbiAgLS1uLTA6IDI1NSwgMjU1LCAyNTU7XG4gIC0tbi0xMDogMjQxLCAyNDcsIDI0OTtcbiAgLS1uLTIwOiAyMTMsIDIyMCwgMjIyO1xuICAtLW4tMzA6IDE2NiwgMTgxLCAxODY7XG4gIC0tbi00MDogMTA0LCAxMjEsIDEyNjtcbiAgLS1uLTUwOiA0MiwgNDcsIDQ4O1xuXG4gIC8vIFByaW1hcnkgY29sb3JzXG4gIC0tdHVycXVvaXNlOiA2LCAyMTksIDIyODtcbiAgLS1ibHVlY29yYWw6IDIxLCA4MywgMTAyO1xuXG4gIC0tYmx1ZWNvcmFsLTQwOiA2MCwgMTEyLCAxMjg7XG4gIC0tYmx1ZWNvcmFsLTUwOiAyMSwgODMsIDEwMjtcblxuICAvLyBTZWNvbmRhcnkgY29sb3JzXG4gIC8vIENhbWVsXG4gIC0tY2FtZWwtMTA6IDI1MiwgMjM5LCAyMjg7XG4gIC0tY2FtZWwtMjA6IDI0OSwgMjE5LCAxOTM7XG4gIC0tY2FtZWwtMzA6IDI0OCwgMjA3LCAxNzM7XG4gIC0tY2FtZWwtNDA6IDI0NiwgMTk1LCAxNTI7XG4gIC0tY2FtZWwtNTA6IDI0NCwgMTgzLCAxMzI7XG4gIC8vIFRlYWxcbiAgLS10ZWFsLTEwOiAyMzEsIDI0MywgMjQxO1xuICAtLXRlYWwtMjA6IDIxNSwgMjM1LCAyMzI7XG4gIC0tdGVhbC0zMDogMTk1LCAyMjQsIDIyMDtcbiAgLS10ZWFsLTQwOiAxNzUsIDIxNCwgMjA5O1xuICAtLXRlYWwtNTA6IDEzNSwgMTk0LCAxODY7XG4gIC8vIFNwcmluZ1xuICAtLXNwcmluZy0xMDogMTc4LCAyMjEsIDIxMTtcbiAgLS1zcHJpbmctMjA6IDEzOSwgMjA0LCAxODk7XG4gIC0tc3ByaW5nLTMwOiAxMDAsIDE4NywgMTY3O1xuICAtLXNwcmluZy00MDogNjIsIDE3MCwgMTQ1O1xuICAtLXNwcmluZy01MDogMjMsIDE1MywgMTIzO1xuICAvLyBMYWdvb25cbiAgLS1sYWdvb24tMTA6IDIwOSwgMjM4LCAyNDA7XG4gIC0tbGFnb29uLTIwOiAxNzgsIDIyNywgMjI5O1xuICAtLWxhZ29vbi0zMDogMTM5LCAyMTMsIDIxNjtcbiAgLS1sYWdvb24tNDA6IDEwMSwgMjAwLCAyMDQ7XG4gIC0tbGFnb29uLTUwOiAyNCwgMTcyLCAxNzg7XG4gIC8vIFNhbG1vblxuICAtLXNhbG1vbi0xMDogMjU1LCAyMjcsIDIyNDtcbiAgLS1zYWxtb24tMjA6IDI1NSwgMjA4LCAyMDM7XG4gIC0tc2FsbW9uLTMwOiAyNTUsIDE4NCwgMTc3O1xuICAtLXNhbG1vbi00MDogMjU1LCAxNjEsIDE1MjtcbiAgLS1zYWxtb24tNTA6IDI1NSwgMTE0LCAxMDA7XG4gIC8vIExhdmVuZGVyXG4gIC0tbGF2ZW5kZXItMTA6IDIzNywgMjI2LCAyNTE7XG4gIC0tbGF2ZW5kZXItMjA6IDIyNSwgMjA3LCAyNDg7XG4gIC0tbGF2ZW5kZXItMzA6IDIxMCwgMTgyLCAyNDQ7XG4gIC0tbGF2ZW5kZXItNDA6IDE5NiwgMTU4LCAyNDA7XG4gIC0tbGF2ZW5kZXItNTA6IDE2NiwgMTEwLCAyMzM7XG4gIC0tbGF2ZW5kZXItNjA6IDI0NiwgMjQwLCAyNTU7XG4gIC8vIENyaW1zb25cbiAgLS1jcmltc29uLTEwOiAyNTUsIDI0OCwgMjQ3O1xuICAtLWNyaW1zb24tMjA6IDI1MCwgMjEzLCAyMTU7XG4gIC0tY3JpbXNvbi0zMDogMjQxLCAxNTUsIDE2MDtcbiAgLS1jcmltc29uLTQwOiAyMjcsIDc3LCA5MTtcbiAgLS1jcmltc29uLTUwOiAyMDksIDAsIDMwO1xuXG4gIC8vIFBhc3RlbCBjb2xvcnNcbiAgLS1lZ2dzaGVsbDogMjU1LCAyNTMsIDIzMTtcbiAgLS1taW50OiAyMzgsIDI0OSwgMjQ1O1xuICAtLXJvc2U6IDI1NSwgMjQxLCAyNDA7XG4gIC0tcGFwZXI6IDI0NiwgMjQ3LCAyNTI7XG59XG4iLCIvL3RhaWx3aW5kXG5AaW1wb3J0ICd+dGFpbHdpbmRjc3MvYmFzZSc7XG5AaW1wb3J0ICd+dGFpbHdpbmRjc3MvY29tcG9uZW50cyc7XG5AaW1wb3J0ICd+dGFpbHdpbmRjc3MvdXRpbGl0aWVzJztcblxuLy8gQWJzdHJhY3RzXG5AaW1wb3J0ICdhYnN0cmFjdHMvdmFyaWFibGVzJztcblxuLy8gbGF5b3V0c1xuQGltcG9ydCAnbGF5b3V0cy9oZWFkZXInO1xuQGltcG9ydCAnbGF5b3V0cy9tYWluJztcbkBpbXBvcnQgJ2xheW91dHMvZm9vdGVyJztcbkBpbXBvcnQgJ2xheW91dHMvYWN0aXZpdHknO1xuQGltcG9ydCAnbGF5b3V0cy9zZXR0aW5nX3BhZ2UnO1xuQGltcG9ydCAnbGF5b3V0cy9fd2VicG9ydGFscGFnZXMnO1xuXG4vLyBiYXNlXG5AaW1wb3J0ICdiYXNlL3R5cG9ncmFwaHknO1xuXG4vLyBjb21wb25lbnRcbkBpbXBvcnQgJ2NvbXBvbmVudC9idXR0b24nO1xuQGltcG9ydCAnY29tcG9uZW50L2hhbWJ1cmdlcic7XG5AaW1wb3J0ICdjb21wb25lbnQvaW5wdXQnO1xuQGltcG9ydCAnY29tcG9uZW50L3RhYmxlJztcbkBpbXBvcnQgJ2NvbXBvbmVudC9mb3Jtcyc7XG5AaW1wb3J0ICdjb21wb25lbnQvcGFnaW5hdGlvbic7XG5AaW1wb3J0ICdjb21wb25lbnQvb3ZlcmxheSc7XG5AaW1wb3J0ICdjb21wb25lbnQvc2VsZWN0Mic7XG5AaW1wb3J0ICdjb21wb25lbnQvc2lkZWJhci1pY29uJztcblxuLy92ZW5kb3Igb3ZlcnJpZGVzXG5AaW1wb3J0ICd2ZW5kb3Itb3ZlcnJpZGVzL211bHRpc2VsZWN0JztcbkBpbXBvcnQgJ3ZlbmRvci1vdmVycmlkZXMvemVuZGV4JztcbkBpbXBvcnQgJ3ZlbmRvci1vdmVycmlkZXMvX3Z1ZS1kYXRlcGlja2VyJztcblxuaHRtbCB7XG4gIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIG9wYWNpdHk6IDE7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuIiwiQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgLndyYXBwZXI6OmFmdGVyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMjkycHg7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCcvaW1hZ2VzL21hcnF1ZS13aGl0ZS5wbmcnKTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IDEwMCUgMTYuNSU7XG4gICAgYmFja2dyb3VuZC1zaXplOiA3MCU7XG4gICAgb3BhY2l0eTogMC4zO1xuICAgIGNvbnRlbnQ6ICcnO1xuICB9XG59XG4uaGVhZGVyIHtcbiAgbWF4LXdpZHRoOiAxMTY2cHg7XG4gIG1hcmdpbjogYXV0bztcbn1cbi5uYXZfX2FjdGl2ZTo6YWZ0ZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogNHB4O1xuICBAYXBwbHkgYmctdHVycXVvaXNlO1xuICBjb250ZW50OiAnJztcbn1cbi5saW5rc19fYWN0aXZlIHtcbiAgQGFwcGx5IHRleHQtYmxhY2s7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuLm5hdl9fbGlua3Mge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHBhZGRpbmc6IDIwcHggOHB4O1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG5cbiAgYTpob3ZlciB7XG4gICAgQGFwcGx5IHRleHQtbi01MDtcbiAgfVxuXG4gIC5yZWFkX19tb3JlIHtcbiAgICBAYXBwbHkgcm91bmRlZC1zbSBiZy1ibHVlY29yYWwgdGV4dC1jZW50ZXIgdGV4dC14cyB0ZXh0LXdoaXRlO1xuICAgIHdpZHRoOiBmaXQtY29udGVudDtcbiAgICBwYWRkaW5nOiA4cHggMThweDtcblxuICAgICY6aG92ZXIge1xuICAgICAgQGFwcGx5IGJnLW4tNTAgdGV4dC13aGl0ZTtcbiAgICB9XG4gIH1cblxuICBhIHtcbiAgICBAYXBwbHkgdGV4dC13aGl0ZTtcbiAgICBwYWRkaW5nLWJvdHRvbTogMjRweDtcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTI4MHB4KSB7XG4gIC5uYXZfX2xpbmtzIHtcbiAgICBwYWRkaW5nOiAwcHggOHB4IDIwcHg7XG5cbiAgICBhIHtcbiAgICAgIEBhcHBseSB0ZXh0LW4tNTA7XG4gICAgICBmb250LXNpemU6IDEycHg7XG4gICAgfVxuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgYm90dG9tOiAwO1xuICAgICAgbGVmdDogMDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiA0cHg7XG4gICAgICBAYXBwbHkgYmctdHVycXVvaXNlO1xuICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLCAxKTtcbiAgICAgIHRyYW5zaXRpb246IDAuM3M7XG4gICAgICBjb250ZW50OiAnJztcbiAgICB9XG4gICAgJjpob3Zlcjo6YWZ0ZXIge1xuICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLCAxKTtcbiAgICB9XG4gIH1cbn1cbi5kcm9wZG93bl9fY29udGVudCB7XG4gIEBhcHBseSBpbnZpc2libGUgYWJzb2x1dGUgcmlnaHQtMCB0b3AtNyBoaWRkZW4gaC01NiBiZy13aGl0ZSBweS03IHB4LTggb3BhY2l0eS0wIGR1cmF0aW9uLTMwMCB4bDpibG9jaztcbiAgd2lkdGg6IDQyNHB4O1xuICBoZWlnaHQ6IGF1dG87XG4gIGxpbmUtaGVpZ2h0OiAyMnB4O1xuICBib3gtc2hhZG93OiAwcHggOHB4IDE2cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcbn1cbi5kcm9wZG93bjpob3ZlciB7XG4gIC5kcm9wZG93bl9fY29udGVudCB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEycHgpO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuLm5hdl9fbGlzdCB7XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEyODBweCkge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzAwcHg7XG4gICAgaGVpZ2h0OiAxMDB2aDtcbiAgICBwYWRkaW5nOiAzMHB4O1xuICAgIEBhcHBseSBiZy1ibHVlY29yYWwgdGV4dC13aGl0ZTtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDUlKTtcbiAgICB0cmFuc2l0aW9uOiAwLjNzO1xuICAgIHotaW5kZXg6IDExMDtcbiAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KC0wcHggMHB4IDhweCAjMDAwKTtcblxuICAgIC5hY3RpdmUge1xuICAgICAgYSB7XG4gICAgICAgIEBhcHBseSB0ZXh0LXdoaXRlO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAyNHB4O1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgIEBhcHBseSB0ZXh0LXdoaXRlO1xuICAgICAgICB9XG5cbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBib3R0b206IDA7XG4gICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBoZWlnaHQ6IDRweDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAsIDEpO1xuICAgICAgICAgIHRyYW5zaXRpb246IDAuM3M7XG4gICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgQGFwcGx5IGJnLXR1cnF1b2lzZTtcbiAgICAgICAgfVxuICAgICAgICAmOmhvdmVyOjphZnRlciB7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLCAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ0MHB4KSB7XG4gICAgd2lkdGg6IDI1MHB4O1xuICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICB9XG59XG5cbiNtZW51LW92ZXJsYXkge1xuICBAYXBwbHkgeGw6aGlkZGVuO1xufVxuXG4jYWN0aXZpdHktbWVudS1vdmVybGF5IHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTQyMHB4KSB7XG4gICAgQGFwcGx5IGhpZGRlbjtcbiAgfVxufVxuXG4ubWVudS1vdmVybGF5IHtcbiAgcG9zaXRpb246IGZpeGVkICFpbXBvcnRhbnQ7XG4gIHotaW5kZXg6IDEwMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjUpO1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6IDEwMCU7XG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG59XG4uYWN0aXZpdHktbmF2LW1lbnUge1xuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxNDIwcHgpIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDMwMHB4O1xuICAgIGhlaWdodDogMTAwdmg7XG4gICAgcGFkZGluZzogMTAwcHggMzBweDtcbiAgICBAYXBwbHkgYmctYmx1ZWNvcmFsIHRleHQtd2hpdGU7XG4gICAgZm9udC1zaXplOiAxNnB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwNSUpO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cig3cHgpO1xuICAgIHRyYW5zaXRpb246IDAuM3M7XG4gICAgei1pbmRleDogMTAwO1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggMHB4IDhweCAjMDAwKTtcblxuICAgIC5hY3Rpdml0eS1uYXYtbGlzdCB7XG4gICAgICBAYXBwbHkgZmxleCBmbGV4LWNvbCBnYXAteS00IHBsLTQgdGV4dC1zbTtcbiAgICB9XG4gICAgLmFjdGl2aXR5LW5hdi1saXN0Lmxhbmd1YWdlLW5hdi1saXN0IHtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgcGFkZGluZy1ib3R0b206IDI4cHg7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI0KTtcblxuICAgICAgLm5hdl9fcG9pbnRlcixcbiAgICAgIC5uYXZfX3BvaW50ZXItaG92ZXIge1xuICAgICAgICBAYXBwbHkgcmVsYXRpdmU7XG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgIEBhcHBseSBhYnNvbHV0ZSBib3R0b20tMCBsZWZ0LTAgaC0xIHctZnVsbCBzY2FsZS14LTAgc2NhbGUteS0xMDAgcm91bmRlZC1zbSBiZy10dXJxdW9pc2UgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNTAwO1xuXG4gICAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTQyMHB4KSB7XG4gICAgICAgICAgICBAYXBwbHkgLWJvdHRvbS0yICBoLTEgdy1mdWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXI6YWZ0ZXIge1xuICAgICAgICAgIEBhcHBseSBzY2FsZS14LTEwMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLm5hdl9fcG9pbnRlcjphZnRlciB7XG4gICAgICAgIEBhcHBseSBzY2FsZS14LTEwMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbi5uYXYtYWN0aXZlIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTtcbn1cblxuLm5hdiB7XG4gICZfX3BvaW50ZXIsXG4gICZfX3BvaW50ZXItaG92ZXIge1xuICAgIEBhcHBseSByZWxhdGl2ZTtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgQGFwcGx5IGFic29sdXRlIGJvdHRvbS0wIGxlZnQtMCBoLTEgdy1mdWxsIHNjYWxlLXgtMCBzY2FsZS15LTEwMCByb3VuZGVkLXNtIGJnLXR1cnF1b2lzZSB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi01MDA7XG5cbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDE0MjBweCkge1xuICAgICAgICBAYXBwbHkgLWxlZnQtNCBoLWZ1bGwgdy0xO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6aG92ZXI6YWZ0ZXIge1xuICAgICAgQGFwcGx5IHNjYWxlLXgtMTAwO1xuICAgIH1cbiAgfVxuXG4gICZfX3BvaW50ZXI6YWZ0ZXIge1xuICAgIEBhcHBseSBzY2FsZS14LTEwMDtcbiAgfVxufVxuXG4uYWN0aXZpdHktbmF2IHtcbiAgQGFwcGx5IGZsZXggZ3JvdztcblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxNDIwcHgpIHtcbiAgICBAYXBwbHkganVzdGlmeS1lbmQ7XG4gIH1cbn1cblxuLmxhbmd1YWdlLWhvdmVyOmhvdmVyIHtcbiAgQGFwcGx5IG5hdl9fYWN0aXZlIGxpbmtzX19hY3RpdmU7XG4gIGEge1xuICAgIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xuICB9XG59XG4iLCIubWFpbiB7XG4gICZfX2NvbnRhaW5lciB7XG4gICAgbWF4LXdpZHRoOiAxMTY2cHg7XG4gICAgbWFyZ2luOiBhdXRvO1xuICB9XG4gIC5sZWZ0X19jb250YWluZXIge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChcbiAgICAgIDE2MGRlZyxcbiAgICAgIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKSxcbiAgICAgIHRyYW5zcGFyZW50XG4gICAgKTtcblxuICAgIGEge1xuICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgQGFwcGx5IGJvcmRlci1iLTIgYm9yZGVyLXR1cnF1b2lzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLnJpZ2h0IHtcbiAgICB3aWR0aDogOTMlO1xuICAgIGJveC1zaGFkb3c6IDBweCAyMHB4IDQwcHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xuXG4gICAgJl9fY29udGFpbmVyIHtcbiAgICAgIGgyIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDYwcHg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJl9fY29udGVudCB7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgIGJveC1zaGFkb3c6IDBweCAwcHggMjVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICAgICAgQGFwcGx5IGZsZXggaXRlbXMtY2VudGVyIHJvdW5kZWQtbGcgYmctd2hpdGUgcHktNiBweC01O1xuXG4gICAgICAucmlnaHRfX2ljb24ge1xuICAgICAgICBAYXBwbHkgdGV4dC1sYWdvb24tNTA7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IC04cHg7XG4gICAgICB9XG4gICAgICAucmlnaHRfX2Fycm93IHtcbiAgICAgICAgQGFwcGx5IHRleHQtd2hpdGU7XG4gICAgICB9XG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgQGFwcGx5IGJvcmRlciBib3JkZXItdHVycXVvaXNlIGJnLXR1cnF1b2lzZSBiZy1vcGFjaXR5LTEwO1xuICAgICAgICBib3gtc2hhZG93OiAwcHggMHB4IDI1cHggMHB4IHRyYW5zcGFyZW50O1xuXG4gICAgICAgIC5yaWdodF9faWNvbiB7XG4gICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIEBhcHBseSBmaWxsLWxhZ29vbi01MCB0ZXh0LXdoaXRlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAucmlnaHRfX2Fycm93IHtcbiAgICAgICAgICBAYXBwbHkgZmlsbC13aGl0ZSB0ZXh0LXR1cnF1b2lzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMzY2cHgpIHtcbiAgICAuam9pbi1ub3cge1xuICAgICAgQGFwcGx5IHB4LTIwO1xuXG4gICAgICAucmlnaHRfX2NvbnRlbnQge1xuICAgICAgICB3aWR0aDogNDIzcHg7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xuICBpbnB1dCB7XG4gICAgcGFkZGluZy1sZWZ0OiA2MHB4O1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLmxlZnQge1xuICAgIGhlaWdodDogNjQ5cHg7XG5cbiAgICAmX19jb250YWluZXIge1xuICAgICAgd2lkdGg6IDM4NnB4O1xuICAgIH1cbiAgfVxuICAucmlnaHQge1xuICAgIGhlaWdodDogNjQ5cHg7XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gIC5yaWdodCB7XG4gICAgbWFyZ2luLXRvcDogLTI2NXB4O1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0MjBweCkge1xuICAucmlnaHRfX2ljb24ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbiAgLmRldGFpbHMge1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICB9XG59XG46Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgd2lkdGg6IDhweDtcbiAgaGVpZ2h0OiA4cHg7XG59XG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgQGFwcGx5IHJvdW5kZWQtbGcgYmctbi0yMCBob3ZlcjpiZy1uLTMwO1xufVxubWFpbiB7XG4gIGRpc3BsYXk6IGdyaWQ7IC8vIExpbmUgMVxuICBncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG8gMWZyIGF1dG87IC8vIExpbmUgMlxuICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoIC0gNDY1cHgpOyAvLyBMaW5lIDNcbn1cbi5hY3Rpdml0aWVzX19zaWRlYmFyIHtcbiAgZmxleC1zaHJpbms6IDA7XG4gIEBtZWRpYSAobWF4LXdpZHRoOiA3MDBweCkge1xuICAgIHdpZHRoOiAyMjBweCAhaW1wb3J0YW50O1xuICB9XG59XG5ib2R5LmRpc2FibGUtc2Nyb2xsIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgaGVpZ2h0OiAxMHB4O1xufVxuLy8gYm9keSB7XG4vLyAgIHBhZGRpbmctdG9wOiA2MHB4O1xuLy8gfVxuXG4vLyBib2R5Lm5vLW5hdiB7XG4vLyAgIHBhZGRpbmctdG9wOiAwcHggIWltcG9ydGFudDtcbi8vIH1cbmh0bWwge1xuICBzY3JvbGwtcGFkZGluZy10b3A6IDIwcHg7IC8qIGhlaWdodCBvZiBzdGlja3kgaGVhZGVyICovXG59XG4iLCIuZm9vdGVyX19jb250YWluZXIge1xuICBtYXgtd2lkdGg6IDExNjZweDtcbiAgbWFyZ2luOiBhdXRvO1xuXG4gIC5mb290ZXJfX2xpbmtzIHtcbiAgICBhIHtcbiAgICAgIEBhcHBseSBib3JkZXItYi0yIGJvcmRlci10cmFuc3BhcmVudCB0ZXh0LW4tMjA7XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBAYXBwbHkgYm9yZGVyLWItMiBib3JkZXItdHVycXVvaXNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLmVsbGlwc2lzIHtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIC13ZWJraXQtbGluZS1jbGFtcDogMztcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbn1cbi5lbGxpcHNpc19fdGl0bGUge1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgLXdlYmtpdC1saW5lLWNsYW1wOiAyO1xuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICBAYXBwbHkgcmVsYXRpdmU7XG59XG5cbi5lbGxpcHNpc19fdGl0bGUtLWhvdmVyIHtcbiAgQGFwcGx5IGludmlzaWJsZSBhYnNvbHV0ZSAgIGxlZnQtMCB0b3AtZnVsbCB6LTIwIG1heC13LW1kIHNwYWNlLXktMS41IHJvdW5kZWQgYmctZWdnc2hlbGwgcC00IHRleHQtbGVmdCB0ZXh0LXhzIGZvbnQtbm9ybWFsIHRleHQtbi00MCBvcGFjaXR5LTAgZHVyYXRpb24tMjAwO1xuICBib3gtc2hhZG93OiAwcHggNHB4IDQwcHggcmdiKDAgMCAwIC8gMTAlKTtcbiAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQ7XG4gIG1heC1oZWlnaHQ6IDEyMHB4O1xuICBvdmVyZmxvdzogYXV0bztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cbi5lbGxpcHNpczpob3Zlcixcbi5lbGxpcHNpc19fdGl0bGU6aG92ZXIsXG4uYnJlYWRjcnVtYl9fdGl0bGU6aG92ZXIge1xuICAuZWxsaXBzaXNfX3RpdGxlLS1ob3ZlciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDVweCk7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59XG5AbWVkaWEgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gIHRyIHtcbiAgICAuZWxsaXBzaXNfX3RpdGxlLS1ob3ZlciB7XG4gICAgICBAYXBwbHkgaW52aXNpYmxlIGFic29sdXRlIGxlZnQtMS8yICAtdG9wLTIgei0yMCBtYXgtdy1tZCBzcGFjZS15LTEuNSByb3VuZGVkIGJnLWVnZ3NoZWxsIHAtNCB0ZXh0LWxlZnQgdGV4dC14cyBmb250LW5vcm1hbCB0ZXh0LW4tNDAgb3BhY2l0eS0wICBkdXJhdGlvbi0yMDAgbGc6bGVmdC0wIGxnOnRvcC1mdWxsO1xuICAgICAgYm94LXNoYWRvdzogMHB4IDRweCA0MHB4IHJnYigwIDAgMCAvIDEwJSk7XG4gICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dDtcbiAgICAgIG1heC1oZWlnaHQ6IDEyMHB4O1xuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgIH1cblxuICAgIC5lbGxpcHNpczpob3ZlcixcbiAgICAuZWxsaXBzaXNfX3RpdGxlOmhvdmVyIHtcbiAgICAgIC5lbGxpcHNpc19fdGl0bGUtLWhvdmVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDVweCk7XG4gICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4uYnJlYWRjcnVtYl9fdGl0bGUge1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgLXdlYmtpdC1saW5lLWNsYW1wOiAxO1xuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICBAYXBwbHkgcmVsYXRpdmU7XG59XG5cbi8vIGFjdGl2aXR5IGRldGFpbFxuLmFjdGl2aXRpZXNfX2NvbnRlbnQtLWVsZW1lbnQge1xuICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICBtYXgtd2lkdGg6IGNhbGMoMTAwdncgLSAzMHB4KTtcbiAgfVxuICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICAuYWRkX2luZGljYXRvciB7XG4gICAgICBtYXgtd2lkdGg6IDQwMHB4O1xuICAgIH1cbiAgfVxufVxuXG4uYWN0aXZpdGllc19fY29udGVudC0tZWxlbWVudCBkaXYge1xuICAuZWRpdC1idXR0b24sXG4gIC5kZWxldGUtYnV0dG9uIHtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlO1xuXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICAgIC8vIG91dGxpbmU6IDFweCBzb2xpZCByZWQgIWltcG9ydGFudDtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9XG5cbiAgLmVkaXQtYnV0dG9uIHtcbiAgICBvcmRlcjogMjtcbiAgfVxuXG4gIC5kZWxldGUtYnV0dG9uIHtcbiAgICBvcmRlcjogMTtcbiAgfVxuXG4gICY6aG92ZXIgLmVkaXQtYnV0dG9uLFxuICAmOmhvdmVyIC5kZWxldGUtYnV0dG9uIHtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICAuZWxlbWVudHMtc3ZnIHtcbiAgICBAYXBwbHkgbXItMS41IHRleHQteGwgdGV4dC1ibHVlY29yYWw7XG4gIH1cbn1cbi5kZXNjcmlwdGlvbiB7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IDUwMHB4O1xufVxuXG4uZWxlbWVudHMtZGV0YWlsIHtcbiAgQGFwcGx5IGZsZXggZmxleC1jb2wgdGV4dC14cyB0ZXh0LW4tNTA7XG5cbiAgLy8gdGFibGUge1xuICAvLyAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcblxuICAvLyB9XG5cbiAgJiAqIHtcbiAgICBAYXBwbHkgbGVhZGluZy01O1xuICB9XG5cbiAgdGQ6bnRoLWNoaWxkKDEpIHtcbiAgICBAYXBwbHkgdGV4dC1uLTQwO1xuICAgIHdpZHRoOiAxMDBweDtcbiAgfVxuICAmLndpZGVyOm5vdCguc21hbGwpIHtcbiAgICB0ZDpudGgtY2hpbGQoMSkge1xuICAgICAgQGFwcGx5IHRleHQtbi00MDtcbiAgICAgIHdpZHRoOiAxOTBweDtcbiAgICB9XG4gIH1cblxuICB0ZDpudGgtY2hpbGQoMikge1xuICAgIEBhcHBseSBmbGV4IGZsZXgtY29sIHBsLTIgdGV4dC14cyB0ZXh0LW4tNTA7XG4gIH1cbiAgLm11bHRpbGluZSB7XG4gICAgQGFwcGx5IGl0ZW1zLXN0YXJ0O1xuICB9XG5cbiAgdGQge1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gIH1cblxuICB0YWJsZSA+IHRib2R5ID4gdHI6bm90KDpsYXN0LWNoaWxkKSA+IHRkIHtcbiAgICBAYXBwbHkgcGItMztcbiAgfVxufVxuLnZhbHVlIHtcbiAgQGFwcGx5IGZsZXggc3BhY2UteC0xIHRleHQtbi01MDtcbn1cbi5jYXRlZ29yeSB7XG4gIEBhcHBseSBtYi0yIHRleHQtc20gZm9udC1ib2xkIHRleHQtbi01MDtcbn1cbi5sYW5ndWFnZSB7XG4gIEBhcHBseSB3LVszMDBweF0gdGV4dC14cyBpdGFsaWMgdGV4dC1uLTMwICBzbTp3LWF1dG87XG59XG4uZGVzY3JpcHRpb24tY29udGVudCB7XG4gIEBhcHBseSB3LVszMDBweF0gc206dy1hdXRvO1xufVxuLnRpdGxlLWJvcmRlcjo6YWZ0ZXIge1xuICB3aWR0aDogOTUwcHg7XG4gIGNvbnRlbnQ6ICcnO1xuICBAYXBwbHkgYWJzb2x1dGUgdG9wLTIgbGVmdC00IGgtcHggYmctbi0zMDtcbn1cbi5lbGVtZW50cy10aXRsZTo6YWZ0ZXIge1xuICBjb250ZW50OiAnJztcbiAgQGFwcGx5IGgtcHggZ3JvdyBiZy1uLTMwO1xufVxuLnRvcCB7XG4gIG1hcmdpbi10b3A6IDFweDtcbn1cblxuLm1vZGFsIHtcbiAgcDpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICBtYXJnaW4tYm90dG9tOiAyNHB4O1xuICB9XG59XG5cbi5mcmVlemUge1xuICBjb2xvcjogI2E2YjViYSAhaW1wb3J0YW50O1xuICBib3JkZXItY29sb3I6ICNhNmI1YmEgIWltcG9ydGFudDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmUgIWltcG9ydGFudDtcblxuICAuYWRkX21vcmU6OmFmdGVyIHtcbiAgICBib3JkZXItY29sb3I6ICNhNmI1YmE7XG4gIH1cbiAgLmFkZF9tb3JlOjpiZWZvcmUge1xuICAgIGJvcmRlci1jb2xvcjogI2E2YjViYTtcbiAgfVxuXG4gIGJ1dHRvbiA+IGkge1xuICAgIGJhY2tncm91bmQ6IHVybCgnLi4vLi4vaW1hZ2VzL2FkZC1tb3JlLWdyZXkuc3ZnJykgbm8tcmVwZWF0IGNlbnRlciAhaW1wb3J0YW50O1xuICB9XG5cbiAgLmhlbHAgc3ZnIHBhdGgge1xuICAgIGNvbG9yOiAjYTZiNWJhICFpbXBvcnRhbnQ7XG4gICAgZmlsbDogY3VycmVudENvbG9yO1xuICAgIHN0cm9rZTogY3VycmVudENvbG9yO1xuICB9XG59XG4uZnJlZXplICosXG4qOjpwbGFjZWhvbGRlcixcbi5mcmVlemUgc3ZnIHtcbiAgY29sb3I6ICNhNmI1YmEgIWltcG9ydGFudDtcbiAgYm9yZGVyLWNvbG9yOiAjYTZiNWJhICFpbXBvcnRhbnQ7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi5mcmVlemUgKyAuYWRkX3RvX3BhcmVudCB7XG4gIGNvbG9yOiAjYTZiNWJhICFpbXBvcnRhbnQ7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lICFpbXBvcnRhbnQ7XG5cbiAgaSB7XG4gICAgYmFja2dyb3VuZDogdXJsKCcuLi8uLi9pbWFnZXMvYWRkLW1vcmUtZ3JleS5zdmcnKSBuby1yZXBlYXQgY2VudGVyO1xuICB9XG59XG5cbi5mcmVlemUgKyAuYWRkX3RvX3BhcmVudDo6YmVmb3JlIHtcbiAgYm9yZGVyLWNvbG9yOiAjYTZiNWJhICFpbXBvcnRhbnQ7XG59XG5cbi5mcmVlemUgKyAuYWRkX3RvX3BhcmVudDo6YWZ0ZXIge1xuICBib3JkZXItY29sb3I6ICNhNmI1YmEgIWltcG9ydGFudDtcbn1cbiIsIi5zZWN0aW9uLXdyYXBwZXIge1xuICBAYXBwbHkgbXgtMyBiZy1wYXBlciBzbTpteC0xMDtcblxuICAuc2V0dGluZyB7XG4gICAgbWF4LXdpZHRoOiAxMDAwcHg7XG4gICAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gODBweCk7XG4gICAgbWFyZ2luOiBhdXRvO1xuICAgIHBhZGRpbmc6IDE2cHggMHB4IDI0cHg7XG5cbiAgICAmX19jb250YWluZXIge1xuICAgICAgQGFwcGx5IHJlbGF0aXZlIHJvdW5kZWQtbGcgYmctd2hpdGUgcC03IG1kOnB5LTE0IG1kOnB4LTIwO1xuICAgICAgbWF4LWhlaWdodDogNjV2aDtcblxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDQwcHgpIHtcbiAgICAgICAgQGFwcGx5IHB4LTM7XG4gICAgICB9XG5cbiAgICAgIC52dWVfX3NlbGVjdCB7XG4gICAgICAgIG1hcmdpbjogOHB4IDBweDtcbiAgICAgIH1cbiAgICAgIC5yZWdpc3RyeV9faW5mbyB7XG4gICAgICAgIEBhcHBseSBteS00IGZsZXgganVzdGlmeS1iZXR3ZWVuIGJvcmRlci1iIGJvcmRlci1iLW4tMjA7XG4gICAgICB9XG4gICAgICBwIHtcbiAgICAgICAgQGFwcGx5IHRleHQteHMgbGVhZGluZy01IHRleHQtbi00MDtcbiAgICAgIH1cbiAgICAgIC50ZXh0IHtcbiAgICAgICAgQGFwcGx5IG1iLTggdGV4dC1zbTtcbiAgICAgIH1cbiAgICAgIGxhYmVsIHtcbiAgICAgICAgQGFwcGx5IHRleHQteHMgdGV4dC1uLTUwO1xuICAgICAgfVxuICAgIH1cbiAgICAucmVnaXN0ZXIge1xuICAgICAgQGFwcGx5IHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1uLTMwIHAtNCBzbTpwLTY7XG5cbiAgICAgICZfX2NvbnRhaW5lciB7XG4gICAgICAgIEBhcHBseSBncmlkIGdhcC0zIHNtOmdhcC02IGxnOmdyaWQtY29scy0yO1xuXG4gICAgICAgIC50YWdfX2NvcnJlY3Qge1xuICAgICAgICAgIEBhcHBseSBhYnNvbHV0ZSByaWdodC0yIHRvcC0xMCBmbGV4IGgtNSBjdXJzb3ItcG9pbnRlciBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZCBiZy1zcHJpbmctNDAgdGV4dC1jZW50ZXIgdGV4dC14cyB0ZXh0LXdoaXRlO1xuICAgICAgICAgIHdpZHRoOiA1MHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLnRhZ19faW5jb3JyZWN0IHtcbiAgICAgICAgICBAYXBwbHkgYWJzb2x1dGUgcmlnaHQtMiB0b3AtMTAgZmxleCBoLTUgY3Vyc29yLXBvaW50ZXIgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQgYmctc2FsbW9uLTUwIHRleHQtY2VudGVyIHRleHQteHMgdGV4dC13aGl0ZTtcbiAgICAgICAgICB3aWR0aDogNjFweDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLnZlcmlmeS1idG4ge1xuICAgICAgICB3aWR0aDogMTIwcHg7XG4gICAgICAgIG1hcmdpbi10b3A6IDE0cHg7XG4gICAgICAgIEBhcHBseSBmbGV4IGgtMTAganVzdGlmeS1jZW50ZXI7XG4gICAgICB9XG4gICAgfVxuICAgIC5yZWdpc3Rlcl9faW5wdXQge1xuICAgICAgQGFwcGx5IG10LTIgdy1mdWxsIGJvcmRlciBib3JkZXItbi0zMCBvdXRsaW5lLW5vbmUgZHVyYXRpb24tMzAwO1xuICAgICAgcGFkZGluZzogMTNweCAxNnB4O1xuICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0NDBweCkge1xuICAgICAgICBwYWRkaW5nOiAxMHB4O1xuICAgICAgfVxuXG4gICAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICAgIEBhcHBseSB0ZXh0LXNtIHRleHQtbi00MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gICAgICB9XG4gICAgICAmOmZvY3VzIHtcbiAgICAgICAgQGFwcGx5IGJvcmRlciBib3JkZXItbi01MCBiZy1uLTEwO1xuICAgICAgfVxuICAgICAgJjpmb2N1czo6cGxhY2Vob2xkZXIge1xuICAgICAgICBAYXBwbHkgdGV4dC1uLTUwO1xuICAgICAgfVxuICAgIH1cbiAgICAuZXJyb3JfX2lucHV0IHtcbiAgICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLWNyaW1zb24tNTA7XG4gICAgfVxuICB9XG59XG4uc2F2ZS1idG4ge1xuICBAYXBwbHkgcHgtNDtcbn1cbi5idG5fX2FjdGl2ZSB7XG4gIEBhcHBseSBmb250LWJvbGQgdGV4dC13aGl0ZTtcbn1cbiIsIi5zbW9vdGgge1xuICBhbmltYXRpb246IGZhZGVJbkFuaW1hdGlvbiBlYXNlIDAuM3M7XG4gIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDE7XG59XG5cbkBrZXlmcmFtZXMgZmFkZUluQW5pbWF0aW9uIHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuIiwiYm9keSB7XG4gIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgQGFwcGx5IG1pbi1oLXNjcmVlbiBiZy1wYXBlcjtcbn1cblxuYSB7XG4gIGNvbG9yOiByZ2IodmFyKC0tYmx1ZWNvcmFsKSk7XG4gIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7XG5cbiAgJjpob3ZlciB7XG4gICAgY29sb3I6IHJnYih2YXIoLS1zcHJpbmctNTApKTtcbiAgfVxufVxuXG4ubGVmdCB7XG4gICZfX3RpdGxlIHtcbiAgICBmb250LXNpemU6IDI3cHg7XG4gICAgdGV4dC1zaGFkb3c6IDRweCA0cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wMSk7XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgICAgIGZvbnQtc2l6ZTogMzJweDtcbiAgICB9XG4gIH1cbn1cblxuaDIge1xuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0NDBweCkge1xuICAgIEBhcHBseSB0ZXh0LWhlYWRpbmctNDtcbiAgfVxuICBAYXBwbHkgdGV4dC1oZWFkaW5nLTUgZm9udC1ib2xkIHRleHQtbi01MCBtZDp0ZXh0LWhlYWRpbmctMztcbn1cblxuaDQge1xuICBAYXBwbHkgdGV4dC1oZWFkaW5nLTQgbGVhZGluZy1ub3JtYWw7XG59XG4iLCIvLyBUdXJxdW9pc2UgYnV0dG9uXG4uYnRuIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBib3JkZXI6IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgb3V0bGluZTogbm9uZTtcbiAgQGFwcGx5IGJnLXR1cnF1b2lzZSB0ZXh0LW4tNTA7XG5cbiAgJjpob3ZlciB7XG4gICAgQGFwcGx5IGJnLWJsdWVjb3JhbDtcbiAgICBAYXBwbHkgdGV4dC13aGl0ZTtcblxuICAgIHN2ZyB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNHB4KTtcbiAgICAgIHRyYW5zaXRpb246IDAuM3M7XG4gICAgfVxuICB9XG59XG5cbi5idG4tYmFjayB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBmb250LXNpemU6IDE0cHg7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogMC4zcztcbiAgQGFwcGx5IHctMjQgdGV4dC1ibHVlY29yYWw7XG5cbiAgc3ZnIHtcbiAgICB0cmFuc2l0aW9uOiAwLjNzO1xuICB9XG5cbiAgJjpob3ZlciB7XG4gICAgc3ZnIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNHB4KTtcbiAgICB9XG4gIH1cbn1cblxuLmJ0bi1uZXh0IHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgICBoZWlnaHQ6IDQ4cHg7XG4gICAgcGFkZGluZzogMTNweCAyNHB4O1xuICB9XG4gIEBhcHBseSB3LTM2IHB5LTIuNSB0ZXh0LW4tNTAgc206dy00MDtcblxuICBzdmcge1xuICAgIG1hcmdpbi1sZWZ0OiAxM3B4O1xuICAgIHRyYW5zaXRpb246IDAuMnM7XG4gIH1cbn1cblxuLmdldC1zdGFydGVkLWJ0biB7XG4gIHdpZHRoOiAxODVweDtcbn1cblxuLnJlc2V0LWJ0biB7XG4gIEBhcHBseSBtdC02IGZsZXgganVzdGlmeS1jZW50ZXIgcm91bmRlZC1sZyBib3JkZXItbm9uZSBiZy10dXJxdW9pc2UgdGV4dC1zbSBmb250LWJvbGQgdXBwZXJjYXNlIHRleHQtbi01MCBvdXRsaW5lLW5vbmUgZHVyYXRpb24tMjAwIGhvdmVyOmJnLWJsdWVjb3JhbCBob3Zlcjp0ZXh0LXdoaXRlO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMTZweCA5NHB4O1xufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xuICAucmVzZXQtYnRuIHtcbiAgICBwYWRkaW5nOiAxOHB4IDk0cHg7XG4gIH1cbn1cblxuc3ZnIHtcbiAgaGVpZ2h0OiAxZW07XG59XG4uY2hhcnQtd3JhcHBlciB7XG4gIHN2ZyB7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG59XG5cbi52cnBfX3dyYXBwZXIge1xuICBwIHtcbiAgICBAYXBwbHkgdGV4dC1zbSBsZWFkaW5nLW5vcm1hbDtcbiAgfVxuICBzdmcge1xuICAgIGhlaWdodDogYXV0bztcbiAgfVxufVxuXG4uYnV0dG9uLFxuYnV0dG9uIHtcbiAgQGFwcGx5IGZsZXggY3Vyc29yLXBvaW50ZXIgaXRlbXMtY2VudGVyIHRleHQteHMgbGVhZGluZy1ub3JtYWwgdHJhY2tpbmctdGlnaHQ7XG4gIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7XG59XG5cbi8vIHRvb2x0aXAgYnV0dG9uXG4udG9vbHRpcC1idG4ge1xuICBAYXBwbHkgcmVsYXRpdmUgdGV4dC1uLTMwO1xuXG4gIGJ1dHRvbiB7XG4gICAgQGFwcGx5IHJvdW5kZWQtM3hsIGJvcmRlciBib3JkZXItc29saWQgYm9yZGVyLW4tMzAgcHktMS41IHB4LTIuNTtcbiAgfVxuXG4gIHN2ZyB7XG4gICAgQGFwcGx5IG1yLTEgdGV4dC14cztcbiAgfVxuXG4gICZfX2NvbnRlbnQge1xuICAgIEBhcHBseSBhYnNvbHV0ZSB0b3AtZnVsbCBsZWZ0LTAgaGlkZGVuIHctWzM1MnB4XTtcblxuICAgIC5jb250ZW50IHtcbiAgICAgIEBhcHBseSBtdC02IHJvdW5kZWQgYmctZWdnc2hlbGwgdGV4dC1uLTUwO1xuICAgICAgcGFkZGluZzogMTZweCAzM3B4IDE2cHggMTZweDtcbiAgICAgIGJveC1zaGFkb3c6IDBweCA0cHggNDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgfVxuXG4gICAgcCB7XG4gICAgICBAYXBwbHkgbWItMS41IHRleHQteHMgbGVhZGluZy1ub3JtYWw7XG4gICAgfVxuICB9XG5cbiAgJjpob3ZlciAudG9vbHRpcC1idG5fX2NvbnRlbnQge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgJjpob3ZlciBidXR0b24ge1xuICAgIEBhcHBseSBib3JkZXItc3ByaW5nLTUwIHRleHQtc3ByaW5nLTUwO1xuICB9XG59XG5cbi8vIHByaW1hcnkgYnV0dG9uXG4ucHJpbWFyeS1idG4ge1xuICBAYXBwbHkgZ2FwLTEgcm91bmRlZCBiZy1ibHVlY29yYWwgcC0zIGZvbnQtYm9sZCB1cHBlcmNhc2UgdGV4dC13aGl0ZTtcbiAgYm94LXNoYWRvdzogMHB4IDJweCAxMHB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcblxuICAmLnNwYWNlIHtcbiAgICBAYXBwbHkgcHgtNjtcbiAgfVxuXG4gICY6aG92ZXIge1xuICAgIEBhcHBseSBiZy1uLTUwIHRleHQtd2hpdGU7XG4gIH1cblxuICBzdmcge1xuICAgIEBhcHBseSB0ZXh0LWJhc2U7XG4gIH1cbn1cblxuLy8gc2Vjb25kYXJ5IGJ1dHRvblxuLnNlY29uZGFyeS1idG4ge1xuICBAYXBwbHkgZ2FwLTEgZ2FwLXgtMSByb3VuZGVkIGJnLXdoaXRlIHAtMyB1cHBlcmNhc2UgdGV4dC1ibHVlY29yYWw7XG5cbiAgJi0tdG91Y2gge1xuICAgIEBhcHBseSBnYXAtMSBnYXAteC0xIHJvdW5kZWQgYmctd2hpdGUgcC0zIHVwcGVyY2FzZSB0ZXh0LWJsdWVjb3JhbDtcbiAgICBib3gtc2hhZG93OiAwcHggMnB4IDEwcHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xuICAgIC5kcm9wZG93bl9fYXJyb3cge1xuICAgICAgZm9udC1zaXplOiA2cHg7XG4gICAgICB0cmFuc2l0aW9uOiAwLjJzO1xuICAgIH1cbiAgICBzdmcge1xuICAgICAgQGFwcGx5IHRleHQtYmFzZTtcbiAgICB9XG4gIH1cbiAgJjpob3ZlciB7XG4gICAgQGFwcGx5IGJnLWJsdWVjb3JhbCB0ZXh0LXdoaXRlO1xuICB9XG5cbiAgc3ZnIHtcbiAgICBAYXBwbHkgdGV4dC1iYXNlO1xuICB9XG5cbiAgLmRyb3Bkb3duX19hcnJvdyB7XG4gICAgZm9udC1zaXplOiA2cHg7XG4gICAgdHJhbnNpdGlvbjogMC4ycztcbiAgfVxufVxuXG4vLyBwcmltYXJ5IG91dGxpbmUgYnV0dG9uXG4ucHJpbWFyeS1vdXRsaW5lLWJ0biB7XG4gIEBhcHBseSBqdXN0aWZ5LWNlbnRlciBnYXAtMSByb3VuZGVkLTN4bCBib3JkZXIgYm9yZGVyLXNwcmluZy01MCBweC0zLjUgdGV4dC1zbSBsZWFkaW5nLXJlbGF4ZWQgdGV4dC1zcHJpbmctNTA7XG4gIGZpbHRlcjogZHJvcC1zaGFkb3coMHB4IDRweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xKSk7XG5cbiAgJjpob3ZlciB7XG4gICAgQGFwcGx5IGJnLXNwcmluZy01MCB0ZXh0LXdoaXRlO1xuICB9XG5cbiAgc3ZnIHtcbiAgICBAYXBwbHkgdGV4dC1iYXNlO1xuICB9XG59XG5cbi5naG9zdC1idG4ge1xuICBAYXBwbHkgdGV4dC14cyBmb250LWJvbGQgdXBwZXJjYXNlIHRleHQtbi00MDtcbiAgdHJhbnNpdGlvbjogMC40cztcblxuICAmOmhvdmVyIHtcbiAgICBAYXBwbHkgdGV4dC1ibHVlY29yYWw7XG4gIH1cbn1cblxuLnRhYi1idG4tYW5jaG9yIHtcbiAgQGFwcGx5IGN1cnNvci1kZWZhdWx0O1xufVxuXG4udGFiLWJ0biB7XG4gIEBhcHBseSBoLTkgcm91bmRlZCBib3JkZXIgYm9yZGVyLW4tMjAgYmctd2hpdGUgcC0yIHRleHQteHMgdGV4dC1uLTQwO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG5cbiAgJjpob3ZlciB7XG4gICAgQGFwcGx5IGJvcmRlci10dXJxdW9pc2UgYmctbi0xMCB0ZXh0LWJsdWVjb3JhbDtcbiAgfVxufVxuXG4uYWN0aXZlX190YWIge1xuICBAYXBwbHkgYm9yZGVyLXR1cnF1b2lzZSBiZy1uLTEwIHRleHQtYmx1ZWNvcmFsO1xufVxuXG4ucGFuZWwtYnRuIHtcbiAgQGFwcGx5IGgtMTAgc3BhY2UteC0xIHJvdW5kZWQgYm9yZGVyIGJvcmRlci1uLTMwIGJnLWVnZ3NoZWxsIHB5LTMgcHgtMjtcbiAgd2lkdGg6IDQzcHg7XG5cbiAgJjpob3ZlciB7XG4gICAgQGFwcGx5IGJnLWJsdWVjb3JhbCB0ZXh0LXdoaXRlO1xuICB9XG5cbiAgLmRyb3Bkb3duX19hcnJvdyB7XG4gICAgZm9udC1zaXplOiA2cHg7XG4gICAgdHJhbnNpdGlvbjogMC4ycztcbiAgfVxufVxuIiwiLmhhbWJ1cmdlciB7XG4gIEBhcHBseSByZWxhdGl2ZSB6LWF1dG8gZmxleCBoLTExIHctMTEgY3Vyc29yLXBvaW50ZXIgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkIGR1cmF0aW9uLTMwMDtcbiAgei1pbmRleDogMTIwO1xuXG4gICYuYWN0aXZlIHtcbiAgICBzcGFuIHtcbiAgICAgIEBhcHBseSBiZy1uLTEwO1xuICAgIH1cbiAgfVxuXG4gIHNwYW4ge1xuICAgIEBhcHBseSBwb2ludGVyLWV2ZW50cy1ub25lIGFic29sdXRlIGgtMSB3LTEwIHJvdW5kZWQtbGcgZHVyYXRpb24tMzAwO1xuICB9XG4gIHNwYW46bnRoLWNoaWxkKDEpIHtcbiAgICBib3R0b206IDE4cHg7XG4gICAgbGVmdDogMnB4O1xuICAgIHdpZHRoOiAzMHB4O1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTVweCk7XG4gIH1cbiAgJi5hY3RpdmUge1xuICAgIHNwYW46bnRoLWNoaWxkKDEpIHtcbiAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpIHRyYW5zbGF0ZVooMCk7XG4gICAgfVxuICAgIHNwYW46bnRoLWNoaWxkKDIpIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg2MHB4KTtcbiAgICB9XG4gICAgc3BhbjpudGgtY2hpbGQoMykge1xuICAgICAgd2lkdGg6IDQwcHg7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNHB4KSByb3RhdGUoMzE1ZGVnKTtcbiAgICB9XG4gIH1cbiAgc3BhbjpudGgtY2hpbGQoMykge1xuICAgIHRvcDogMThweDtcbiAgICBsZWZ0OiAycHg7XG4gICAgd2lkdGg6IDIwcHg7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDE1cHgpO1xuICB9XG59XG4uaGFtYnVyZ2VyLW1lbnUge1xuICBkaXNwbGF5OiBub25lO1xuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDE0MjBweCkge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG59XG5cbi5ob21lLWJ1cmdlci1tZW51LmFjdGl2ZSB7XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XG4gICAgdHJhbnNsYXRlOiAtMzUwJSAtMTQwJTtcbiAgfVxuICB0cmFuc2xhdGU6IC00OTAlIC05MCU7XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDQwcHgpIHtcbiAgICB0cmFuc2xhdGU6IC0zODAlIC05MCU7XG4gIH1cbn1cbiIsIi5pbnB1dCB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHBhZGRpbmc6IDE0cHggMHB4IDE0cHggNTVweDtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBsaW5lLWhlaWdodDogMjRweDtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBvdXRsaW5lOiBub25lO1xuICB0cmFuc2l0aW9uOiAwLjNzO1xuICBAYXBwbHkgaC0xNCBib3JkZXIgYm9yZGVyLW4tMzAgc206aC0xNjtcblxuICAmOmZvY3VzIHtcbiAgICBAYXBwbHkgYm9yZGVyIGJvcmRlci1uLTUwIGJnLW4tMTA7XG4gIH1cblxuICAmOjpwbGFjZWhvbGRlciB7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gICAgQGFwcGx5IGZvbnQtbm9ybWFsIHRleHQtbi00MDtcbiAgfVxuXG4gICY6Zm9jdXM6OnBsYWNlaG9sZGVyIHtcbiAgICBAYXBwbHkgdGV4dC1uLTUwO1xuICB9XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgICBwYWRkaW5nOiAyMHB4IDBweCAyMHB4IDU1cHg7XG4gIH1cbn1cbi5lcnJvciB7XG4gIEBhcHBseSB0ZXh0LXNtIHRleHQtY3JpbXNvbi01MCBzbTp0ZXh0LWJhc2U7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgbGluZS1oZWlnaHQ6IDE4cHg7XG59XG5cbi5oYXNfZXJyb3Ige1xuICAuZm9ybV9faW5wdXQge1xuICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLWNyaW1zb24tNTA7XG4gIH1cbn1cbnRleHRhcmVhLmZvcm1fX2lucHV0IHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG4udGV4dC1hcmVhIHtcbiAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50O1xuICBoZWlnaHQ6IDYwcHg7XG4gIHJlc2l6ZTogbm9uZTtcbn1cbi5mb3JtX19pbnB1dCB7XG4gIEBhcHBseSBtYi0yIGJveC1ib3JkZXIgdy1mdWxsIHJvdW5kZWQgYm9yZGVyIGJvcmRlci1uLTMwIHRleHQtYmx1ZWNvcmFsIG91dGxpbmUtbm9uZSBkdXJhdGlvbi0zMDA7XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgICBwYWRkaW5nOiAxM3B4IDAgMTNweCAxNnB4O1xuICB9XG4gIHBhZGRpbmc6IDEwcHggMCAxMHB4IDE2cHg7XG5cbiAgJjo6cGxhY2Vob2xkZXIge1xuICAgIEBhcHBseSB0ZXh0LXNtIGZvbnQtbm9ybWFsIHRleHQtbi00MDtcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcbiAgfVxuXG4gICY6Zm9jdXMge1xuICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLW4tNTAgYmctbi0xMDtcbiAgfVxuXG4gICY6Zm9jdXM6OnBsYWNlaG9sZGVyIHtcbiAgICBAYXBwbHkgdGV4dC1uLTUwO1xuICB9XG59XG4uaW5wdXRfX2ZpZWxkIHtcbiAgLm11bHRpc2VsZWN0LW9wdGlvbi5pcy1zZWxlY3RlZCB7XG4gICAgQGFwcGx5IGJnLW4tMjAgdGV4dC1uLTUwO1xuICB9XG5cbiAgLm11bHRpc2VsZWN0LW9wdGlvbi5pcy1zZWxlY3RlZC5pcy1wb2ludGVkIHtcbiAgICBAYXBwbHkgYmctbi0yMCB0ZXh0LW4tNTA7XG4gIH1cblxuICAubXVsdGlzZWxlY3QuaXMtYWN0aXZlIHtcbiAgICBAYXBwbHkgYm9yZGVyIGJvcmRlci1uLTUwIGJnLW4tMTA7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgMDtcbiAgfVxuXG4gIC5tdWx0aXNlbGVjdC1wbGFjZWhvbGRlciB7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gICAgQGFwcGx5IHctWzMxMHB4XSBvdmVyZmxvdy1oaWRkZW4gd2hpdGVzcGFjZS1ub3dyYXAgcHItMyB0ZXh0LXNtIHRleHQtbi00MCBkdXJhdGlvbi0zMDA7XG4gIH1cblxuICAubXVsdGlzZWxlY3QtcGxhY2Vob2xkZXI6OmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBAYXBwbHkgYWJzb2x1dGUgcmlnaHQtMCB0b3AtMyBoLTYgdy03IGJnLXdoaXRlO1xuICB9XG5cbiAgLm11bHRpc2VsZWN0LmlzLW9wZW4ge1xuICAgIC5tdWx0aXNlbGVjdC1wbGFjZWhvbGRlciB7XG4gICAgICBAYXBwbHkgdGV4dC1uLTUwO1xuICAgIH1cbiAgfVxuXG4gIC5tdWx0aXNlbGVjdC1kcm9wZG93biB7XG4gICAgQGFwcGx5IGJvcmRlciBib3JkZXItbi01MDtcbiAgfVxuXG4gIC5tdWx0aXNlbGVjdC1jYXJldCB7XG4gICAgLXdlYmtpdC1tYXNrLWltYWdlOiB1cmwoJy9pbWFnZXMvZHJvcGRvd24tYXJyb3cuc3ZnJyk7XG4gICAgbWFzay1pbWFnZTogdXJsKCcvaW1hZ2VzL2Ryb3Bkb3duLWFycm93LnN2ZycpO1xuICB9XG5cbiAgLm11bHRpc2VsZWN0LXNlYXJjaCB7XG4gICAgQGFwcGx5IGN1cnNvci1wb2ludGVyIGJvcmRlciBib3JkZXItbi0zMCBweS0yLjU7XG4gIH1cblxuICAubXVsdGlzZWxlY3Qtc2VhcmNoOmZvY3VzIHtcbiAgICBAYXBwbHkgYmctbi0xMDtcbiAgfVxuXG4gIC5tdWx0aXNlbGVjdC1zZWFyY2g6Zm9jdXMgKyAubXVsdGlzZWxlY3QtcGxhY2Vob2xkZXI6OmFmdGVyIHtcbiAgICBAYXBwbHkgYmctbi0xMDtcbiAgfVxuXG4gIC52dWVfX3NlbGVjdCB7XG4gICAgQGFwcGx5IG1iLTIgYm9yZGVyIGJvcmRlci1uLTMwIHRleHQtc20gbGVhZGluZy02IG91dGxpbmUtbm9uZSBkdXJhdGlvbi0zMDA7XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xuICAgICAgcGFkZGluZzogMTZweCAwcHggMTZweCA1NXB4O1xuICAgIH1cbiAgICBwYWRkaW5nOiAxM3B4IDBweCAxM3B4IDU1cHg7XG4gIH1cbn1cbi5lcnJvcl9pbnB1dCB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkMTAwMWU7XG59XG4uZXJyb3JfX211bHRpc2VsZWN0IHtcbiAgaW5wdXQge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkMTAwMWU7XG4gIH1cbn1cbi5wYW5lbF9faW5wdXQge1xuICBAYXBwbHkgYm94LWJvcmRlciBoLTEwIHctZnVsbCByb3VuZGVkIGJvcmRlciBib3JkZXItbi0zMCBiZy1wYXBlciBweS0yLjUgcGwtNyBwci0zIG91dGxpbmUtbm9uZSBkdXJhdGlvbi0zMDA7XG5cbiAgJjo6cGxhY2Vob2xkZXIge1xuICAgIEBhcHBseSB0ZXh0LXhzIGZvbnQtbm9ybWFsIHRleHQtbi0zMCBkdXJhdGlvbi0zMDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gIH1cblxuICAmOmZvY3VzOjpwbGFjZWhvbGRlciB7XG4gICAgQGFwcGx5IHRleHQtbi00MDtcbiAgfVxufVxuLnNlYXJjaCB7XG4gIEBhcHBseSByZWxhdGl2ZTtcblxuICAmX19pbnB1dCB7XG4gICAgQGFwcGx5IGJvcmRlciBib3JkZXItbi0zMCBiZy10cmFuc3BhcmVudCBvdXRsaW5lLW5vbmU7XG4gICAgcGFkZGluZzogMTBweCA0MnB4IDEwcHggMzRweDtcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICB9XG4gIHN2ZyB7XG4gICAgQGFwcGx5IGFic29sdXRlIGxlZnQtMyB0b3AtMyB0ZXh0LWJhc2UgdGV4dC1uLTMwO1xuICB9XG59XG4ucmVxdWlyZWQtaWNvbiB7XG4gIEBhcHBseSByZWxhdGl2ZSB0b3AtMC41IHRleHQtYmFzZSBsZWFkaW5nLW5vbmUgdGV4dC1jcmltc29uLTUwO1xufVxuLm9wZW4tdGV4dCB7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2E2YjViYTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBpbnB1dCB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBwYWRkaW5nLXRvcDogNHB4O1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgcGFkZGluZy1sZWZ0OiAzMHB4O1xuICAgICY6Zm9jdXMge1xuICAgICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxufVxuLnVzZXItY2hlY2tsaXN0IHtcbiAgb3BhY2l0eTogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyO1xuICB3aWR0aDogMThweDtcbiAgaGVpZ2h0OiAxOHB4O1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG59XG4ucHNldWRvLWNoZWNrYm94IHtcbiAgaGVpZ2h0OiAxOHB4O1xuICB3aWR0aDogMThweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGJvcmRlcjogMnB4IHNvbGlkICNkNWRjZGU7XG4gIG9wYWNpdHk6IDE7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG59XG4udXNlci1jaGVja2xpc3Q6Y2hlY2tlZCB+IC5wc2V1ZG8tY2hlY2tib3gge1xuICBib3JkZXItY29sb3I6IHJnYih2YXIoLS1zcHJpbmctNTApKTtcbn1cbi50aWNrZWQtc3ZnIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDFweDtcbiAgbGVmdDogMXB4O1xuICBvcGFjaXR5OiAwO1xuICBoZWlnaHQ6IDE2cHg7XG4gIHdpZHRoOiAxNnB4O1xuICB0cmFuc2Zvcm06IHNjYWxlKDAuNyk7XG59XG4udXNlci1jaGVja2xpc3Q6Y2hlY2tlZCB+IC50aWNrZWQtc3ZnIHtcbiAgb3BhY2l0eTogMTtcbn1cbmlucHV0W3R5cGU9J3JhZGlvJ10ge1xuICBhY2NlbnQtY29sb3I6ICMxNTUzNjY7XG59XG4iLCIuaWF0aS1saXN0LXRhYmxlIHtcbiAgQGFwcGx5IHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1uLTIwIHRleHQtbGVmdDtcbiAgbWF4LXdpZHRoOiBjYWxjKDEwMHZ3IC0gNDVweCk7XG5cbiAgQG1lZGlhIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgb3ZlcmZsb3cteTogaGlkZGVuO1xuICB9XG5cbiAgdGFibGUge1xuICAgIEBhcHBseSB0YWJsZSB3LWZ1bGwgIGJnLXdoaXRlO1xuICB9XG4gIHRib2R5IHtcbiAgICB0ciB7XG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgYm94LXNoYWRvdzogMHB4IDRweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTtcbiAgICAgICAgQGFwcGx5IGJnLW4tMTA7XG4gICAgICB9XG4gICAgfVxuICAgIHRyOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgICAgQGFwcGx5IHJlbGF0aXZlO1xuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEodmFyKC0tbi0yMCkpO1xuICAgICAgLy8gJjphZnRlciB7XG4gICAgICAvLyAgIGNvbnRlbnQ6ICcgJztcbiAgICAgIC8vICAgQGFwcGx5IGFic29sdXRlIGxlZnQtMCBib3R0b20tMCBoLXB4IHctZnVsbCBtYXgtdy1mdWxsIGJnLW4tMjA7XG4gICAgICAvLyB9XG5cbiAgICAgIHRkOmZpcnN0LWNoaWxkOmFmdGVyIHtcbiAgICAgICAgQGFwcGx5IG1sLTY7XG4gICAgICB9XG4gICAgICB0aC5jaGVjay1jb2x1bW46YWZ0ZXIge1xuICAgICAgICBAYXBwbHkgLW1sLTY7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdGgge1xuICAgIEBhcHBseSBweS00IHB4LTYgYWxpZ24tdG9wIHRleHQteHMgdXBwZXJjYXNlIGxlYWRpbmctbm9ybWFsO1xuXG4gICAgc3ZnIHtcbiAgICAgIEBhcHBseSBtci0xIHRleHQteGwgdGV4dC1uLTMwO1xuICAgIH1cblxuICAgIGEge1xuICAgICAgQGFwcGx5IGZsZXg7XG4gICAgICBzdmcge1xuICAgICAgICBAYXBwbHkgdGV4dC1iYXNlIHRleHQtYmx1ZWNvcmFsO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHRkIHtcbiAgICBAYXBwbHkgcmVsYXRpdmUgcHktNCBweC02IGFsaWduLXRvcCB0ZXh0LXNtIGxlYWRpbmctcmVsYXhlZDtcbiAgfVxuXG4gIHRyLmFscmVhZHktcHVibGlzaGVkIHtcbiAgICB0ZCxcbiAgICB0aC5jaGVjay1jb2x1bW4ge1xuICAgICAgQGFwcGx5IHB0LTExO1xuICAgIH1cbiAgfVxuXG4gIC5oYXMtc3RhdHVzIHtcbiAgICB0ZCB7XG4gICAgICBAYXBwbHkgcHgtNiBwdC0xMSBwYi03O1xuICAgIH1cbiAgICB0aCB7XG4gICAgICBAYXBwbHkgcHgtNiBwdC0xMSBwYi03O1xuICAgIH1cbiAgfVxuXG4gIC5jaGVjay1jb2x1bW4gLmNoZWNrYm94IHtcbiAgICBtYXJnaW4tdG9wOiA0cHg7XG4gIH1cbn1cblxuLnVwbG9hZC1saXN0LXRhYmxlIHtcbiAgLnVwbG9hZC1lcnJvciB7XG4gICAgLnRpdGxlIHtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIH1cbiAgfVxuXG4gIC51cGxvYWQtZXJyb3ItY29udGVudCB7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIG92ZXJmbG93LXk6IGhpZGRlbjtcbiAgICB0cmFuc2l0aW9uOiBtYXgtaGVpZ2h0IDAuM3MgZWFzZS1vdXQ7IC8vIG5vdGUgdGhhdCB3ZSdyZSB0cmFuc2l0aW9uaW5nIG1heC1oZWlnaHQsIG5vdCBoZWlnaHQhXG4gICAgLmVycm9yLWRyb3Bkb3duIHtcbiAgICAgIGRpdiB7XG4gICAgICAgIEBhcHBseSB0ZXh0LWJsdWVjb3JhbDtcblxuICAgICAgICAmOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgICAgICAgIEBhcHBseSBib3JkZXItYiBib3JkZXItYi1uLTIwIHBiLTQ7XG4gICAgICAgIH1cblxuICAgICAgICB1bCB7XG4gICAgICAgICAgQGFwcGx5IG10LTQgc3BhY2UteS00IHRleHQtc20gZm9udC1ub3JtYWw7XG4gICAgICAgIH1cblxuICAgICAgICBsaSB7XG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgIC8vIHBhZGRpbmctbGVmdDogMzZweDtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcblxuICAgICAgICAgICY6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgICAgICAgICBAYXBwbHkgYm9yZGVyLWIgYm9yZGVyLWItbi0yMCBwYi00O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vICY6OmJlZm9yZSB7XG4gICAgICAgICAgLy8gICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgLy8gICB0b3A6IDhweDtcbiAgICAgICAgICAvLyAgIGxlZnQ6IDIwcHg7XG4gICAgICAgICAgLy8gICB3aWR0aDogNHB4O1xuICAgICAgICAgIC8vICAgaGVpZ2h0OiA0cHg7XG4gICAgICAgICAgLy8gICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgICAgLy8gICBjb250ZW50OiAnJztcbiAgICAgICAgICAvLyAgIEBhcHBseSBiZy1ibHVlY29yYWw7XG4gICAgICAgICAgLy8gfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC5lcnJvci1saXN0IHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHBhZGRpbmctbGVmdDogMjBweDtcbiAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiA4cHg7XG4gICAgICAgIGxlZnQ6IDEwcHg7XG4gICAgICAgIHdpZHRoOiA0cHg7XG4gICAgICAgIGhlaWdodDogNHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBAYXBwbHkgYmctYmx1ZWNvcmFsO1xuICAgICAgfVxuICAgIH1cbiAgICAmLmNsb3NlZCB7XG4gICAgICBtYXgtaGVpZ2h0OiAwO1xuICAgIH1cbiAgfVxuXG4gIC51cGxvYWQtZXJyb3ItaWNvbiB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMjZweDtcbiAgICByaWdodDogMDtcblxuICAgIHN2ZyB7XG4gICAgICBmb250LXNpemU6IDZweDtcbiAgICB9XG5cbiAgICAmLm9wZW4ge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbiAgICB9XG4gIH1cbn1cblxuI2NiIHtcbiAgd2lkdGg6IDY4cHg7XG59XG5cbiNzdGF0dXMge1xuICB3aWR0aDogMTkycHg7XG59XG5cbiNwdWJsaXNoIHtcbiAgd2lkdGg6IDI4MHB4O1xufVxuXG4jZGF0ZSB7XG4gIHdpZHRoOiAxNzNweDtcbn1cbi5pYXRpLWxpc3QtdGFibGUge1xuICB0ciB7XG4gICAgb3ZlcmZsb3cteTogdmlzaWJsZTtcbiAgfVxuICB0ZDpudGgtY2hpbGQoMSkge1xuICAgIG1heC13aWR0aDogMTUwcHggIWltcG9ydGFudDtcblxuICAgIGEge1xuICAgICAgbWF4LXdpZHRoOiAxNDVweDtcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgfVxuICB9XG59XG50ZCB7XG4gIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xufVxuLnVzZXItbGlzdC10YWJsZS5pYXRpLWxpc3QtdGFibGUsXG4ub3JnYW5pemF0aW9uLWxpc3Qge1xuICBvdmVyZmxvdy14OiBhdXRvO1xuICBvdmVyZmxvdy15OiBoaWRkZW47XG4gIG1heC13aWR0aDogY2FsYygxMDB2dyAtIDcwcHgpO1xuICBAbWVkaWEgKG1heC13aWR0aDogNjQwcHgpIHtcbiAgICBtYXgtd2lkdGg6IGNhbGMoMTAwdncgLSA1MHB4KTtcbiAgfVxuICB0Ym9keSB7XG4gICAgdHIge1xuICAgICAgJjpob3ZlciB7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIGJveC1zaGFkb3c6IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMCk7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7XG4gICAgICAgIEBhcHBseSBiZy10cmFuc3BhcmVudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLypGb3IgcHJvZ3Jlc3MgYmFyIGluIGFjdGl2aXRpZXMgbGlzdGluZyBwYWdlXG4gKlxuICovXG4uYm9yZGVyLXRoaXMge1xuICBib3JkZXI6IDFweCBzb2xpZCBibGFjaztcbn1cbi5wcm9ncmVzcy1iYXItaGVhZGVyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTEwMnB4KSB7XG4gICAgdGV4dC1hbGlnbjogZW5kO1xuICB9XG59XG4ucHJvZ3Jlc3MtYmFyLXBhcmVudCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMTAycHgpIHtcbiAgICB3aWR0aDogYXV0bztcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICB9XG59XG4ucHJvZ3Jlc3MtYmFyLXdyYXBwZXIge1xuICBoZWlnaHQ6IDVweDtcbiAgd2lkdGg6IDA7XG4gIGRpc3BsYXk6IG5vbmU7XG5cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMTAycHgpIHtcbiAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgd2lkdGg6IDEwMHB4O1xuICB9XG59XG4ucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciB7XG4gIGhlaWdodDogMTAwJTtcbiAgYm9yZGVyLXJhZGl1czogMTJweDtcbn1cbi5wcm9ncmVzcy1iYXItZmlsbCB7XG4gIGhlaWdodDogMTAwJTtcbiAgYm9yZGVyLXJhZGl1czogaW5oZXJpdDtcbn1cbi5wcm9ncmVzcy1iYXItbnVtYmVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDExMDJweCkge1xuICAgIHRleHQtYWxpZ246IGVuZDtcbiAgICB3aWR0aDogMi4ycmVtO1xuICAgIHBhZGRpbmctbGVmdDogOHB4O1xuICB9XG59XG4iLCIuY2hlY2tib3gge1xuICBAYXBwbHkgcmVsYXRpdmUgYmxvY2sgY3Vyc29yLXBvaW50ZXIgc2VsZWN0LW5vbmU7XG4gIC5jaGVja21hcmsge1xuICAgIEBhcHBseSBmbGV4IGgtNCB3LTQgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQgYm9yZGVyLTIgYm9yZGVyLW4tMjA7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGJvcmRlci13aWR0aDogMCAzcHggM3B4IDA7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIEBhcHBseSBtYi0wLjUgaGlkZGVuIGgtMiB3LVs1cHhdIHJvdGF0ZS00NSBib3JkZXItc3ByaW5nLTUwO1xuICAgIH1cbiAgfVxuICBpbnB1dCB7XG4gICAgQGFwcGx5IGFic29sdXRlIGgtMCB3LTAgY3Vyc29yLXBvaW50ZXIgb3BhY2l0eS0wO1xuICAgICY6Y2hlY2tlZCB+IC5jaGVja21hcmsge1xuICAgICAgQGFwcGx5IGJvcmRlci1zcHJpbmctNTA7XG4gICAgICAmOmFmdGVyIHtcbiAgICAgICAgQGFwcGx5IGJsb2NrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAmOmhvdmVyIGlucHV0IH4gLmNoZWNrbWFyayB7XG4gICAgQGFwcGx5IGJvcmRlci1zcHJpbmctNTA7XG4gIH1cbn1cbi8qKlxuICBMYXJhdmVsIGZvcm0gZGVzaWduXG4gKi9cbmZvcm0ge1xuICAuZm9ybS1maWVsZC1ncm91cCB7XG4gICAgQGFwcGx5IHJlbGF0aXZlIHAtMztcbiAgICAmOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgICAgQGFwcGx5IG1iLTY7XG4gICAgfVxuXG4gICAgLmZvcm0tZmllbGQge1xuICAgICAgQGFwcGx5IHAtMztcbiAgICAgIC5oZWxwLXRleHQge1xuICAgICAgICBAYXBwbHkgbXQtMiB0ZXh0LXhzIGxlYWRpbmctcmVsYXhlZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgYnV0dG9uLmRlbGV0ZS1pdGVtIHtcbiAgICBAYXBwbHkgYWJzb2x1dGUgaC04IHctOCBjdXJzb3ItcG9pbnRlciBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1mdWxsIGJnLW4tNDAgLWluZGVudC00MDtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQ6IHVybCgnL2ltYWdlcy90cmFzaF9mdWxsLnN2ZycpIG5vLXJlcGVhdCBjZW50ZXI7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTEvMiB0b3AtMS8yIGgtWzE4cHhdIHctWzE4cHhdIC10cmFuc2xhdGUteC0xLzIgLXRyYW5zbGF0ZS15LTEvMjtcbiAgICB9XG4gICAgJjpob3ZlciB7XG4gICAgICBAYXBwbHkgYmctYmx1ZWNvcmFsO1xuICAgIH1cbiAgfVxuXG4gIC5mb3JtLWZpZWxkLWdyb3VwLW91dGVyIC5mb3JtLWZpZWxkIHtcbiAgICBAYXBwbHkgcHgtMztcbiAgfVxuXG4gIC5mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICBAYXBwbHkgbWItMiBmbGV4IGp1c3RpZnktYmV0d2VlbjtcbiAgICBsYWJlbCB7XG4gICAgICBAYXBwbHkgdGV4dC14cyBsZWFkaW5nLXJlbGF4ZWQ7XG4gICAgfVxuICAgIC5yZXF1aXJlZCB7XG4gICAgICBAYXBwbHkgZm9udC1ib2xkIHRleHQtc2FsbW9uLTUwO1xuICAgIH1cbiAgfVxuICBpbnB1dFt0eXBlPSd0ZXh0J10sXG4gIGlucHV0W3R5cGU9J2RhdGUnXSxcbiAgdGV4dGFyZWEge1xuICAgIEBhcHBseSBtdC0wIGgtMTIgdy1mdWxsIHJvdW5kZWQgYm9yZGVyIGJvcmRlci1uLTMwIHB4LTQgcHktMi41IHRleHQtc20gbGVhZGluZy1ub3JtYWwgb3V0bGluZS1ub25lIGR1cmF0aW9uLTMwMDtcbiAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICBAYXBwbHkgdGV4dC1zbSB0ZXh0LW4tNDA7XG4gICAgfVxuICAgICY6Zm9jdXMge1xuICAgICAgQGFwcGx5IGJvcmRlciBib3JkZXItbi01MCBiZy1uLTEwO1xuICAgIH1cbiAgICAmOmZvY3VzOjpwbGFjZWhvbGRlciB7XG4gICAgICBAYXBwbHkgdGV4dC1uLTUwO1xuICAgIH1cbiAgfVxuXG4gIGlucHV0W3R5cGU9J3RleHQnXSxcbiAgaW5wdXRbdHlwZT0nZGF0ZSddIHtcbiAgICBAYXBwbHkgaC0xMjtcbiAgfVxuXG4gIHNlbGVjdCB7XG4gICAgQGFwcGx5IHctZnVsbCByb3VuZGVkIGJvcmRlciBib3JkZXItbi0zMCBweC00IHB5LTMgdGV4dC1zbSB0ZXh0LW4tNDAgb3V0bGluZS1ub25lIGR1cmF0aW9uLTMwMDtcbiAgICAmOmZvY3VzIHtcbiAgICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLW4tNTAgYmctbi0xMDtcbiAgICB9XG4gIH1cbiAgLmhlbHAge1xuICAgIEBhcHBseSByZWxhdGl2ZTtcbiAgICAmX190ZXh0IHtcbiAgICAgIEBhcHBseSBpbnZpc2libGUgYWJzb2x1dGUgdG9wLTQgei0yMCBzcGFjZS15LTEuNSByb3VuZGVkIGJnLWVnZ3NoZWxsIHAtNCB0ZXh0LWxlZnQgdGV4dC14cyB0ZXh0LW4tNDAgb3BhY2l0eS0wIGR1cmF0aW9uLTIwMDtcbiAgICAgIGJveC1zaGFkb3c6IDBweCA0cHggNDBweCByZ2IoMCAwIDAgLyAxMCUpO1xuICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQ7XG4gICAgfVxuICB9XG4gIC5oZWxwOmhvdmVyIHtcbiAgICAuaGVscF9fdGV4dCB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNXB4KTtcbiAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgfVxuICAuYWRkX21vcmUge1xuICAgIEBhcHBseSByZWxhdGl2ZTtcbiAgICAmOmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTAgdG9wLTAgaC0xLzIgdy1weCBib3JkZXItbCBib3JkZXItc3ByaW5nLTUwO1xuICAgIH1cbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgQGFwcGx5IGFic29sdXRlIGxlZnQtMCB0b3AtMi80IGgtcHggdy0zLjUgLXRyYW5zbGF0ZS15LTEvMiBib3JkZXItYiBib3JkZXItc3ByaW5nLTUwO1xuICAgIH1cblxuICAgIGkge1xuICAgICAgd2lkdGg6IDE4cHg7XG4gICAgICBoZWlnaHQ6IDE4cHg7XG4gICAgICBiYWNrZ3JvdW5kOiB1cmwoJy9pbWFnZXMvYWRkLW1vcmUtZ3JlZW4uc3ZnJykgbm8tcmVwZWF0IGNlbnRlcjtcbiAgICB9XG4gIH1cbiAgLnN1YmVsZW1lbnQge1xuICAgICYuYm9yZGVyLWwgPiBsYWJlbCB7XG4gICAgICBib3JkZXItbGVmdDogMDtcbiAgICB9XG4gICAgLnN1YmVsZW1lbnQsXG4gICAgLnN1YmVsZW1lbnQgKyBidXR0b24ge1xuICAgICAgQGFwcGx5IG1sLTY7XG4gICAgfVxuXG4gICAgLndyYXBwZWQtY2hpbGQtYm9keSB7XG4gICAgICBAYXBwbHkgcmVsYXRpdmU7XG4gICAgICA+IC5kZWxldGUtcGFyZW50IHtcbiAgICAgICAgQGFwcGx5IGJsb2NrO1xuICAgICAgfVxuICAgIH1cbiAgICA+IC5tdWx0aS1mb3JtOm9ubHktb2YtdHlwZSA+IC5kZWxldGUtcGFyZW50LFxuICAgIC53cmFwcGVkLWNoaWxkLWJvZHk6b25seS1vZi10eXBlID4gLmRlbGV0ZS1wYXJlbnQge1xuICAgICAgQGFwcGx5IGhpZGRlbjtcbiAgICB9XG4gIH1cblxuICAuZm9ybS1maWVsZC1ncm91cDpvbmx5LW9mLXR5cGUgPiAuZGVsZXRlLWl0ZW0ge1xuICAgIEBhcHBseSBoaWRkZW47XG4gIH1cblxuICAvKipcbiAgKiBDb25kaXRpb24gdG8gc2hvdyBhbmQgZGVsZXRlIGNvbGxlY3Rpb24gZXJyb3IgaW4gZm9ybVxuICAqL1xuICAuY29sbGVjdGlvbl9lcnJvciB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC5tdWx0aS1mb3JtICsgLmNvbGxlY3Rpb25fZXJyb3IsXG4gIC5mb3JtLWZpZWxkLWdyb3VwICsgLmNvbGxlY3Rpb25fZXJyb3IsXG4gIC53cmFwcGVkLWNoaWxkLWJvZHkgKyAuY29sbGVjdGlvbl9lcnJvciB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbiAgLmNvbnRyb2wtbGFiZWwgKyAuY29sbGVjdGlvbl9lcnJvcixcbiAgLnRpdGxlLWNvbnRhaW5lciAuY29sbGVjdGlvbl9lcnJvciB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZy1yaWdodDogMjRweDtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgLmRpdiB7XG4gICAgICBsaW5lLWhlaWdodDogNHB4ICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICBTZWxlY3QgMiBmaWVsZFxuKi9cbnNwYW4uc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQge1xuICB3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbiAgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUge1xuICAgIEBhcHBseSBoLTEyIHctZnVsbCByb3VuZGVkIGJvcmRlciBib3JkZXItbi0zMCBweC00IHB5LTMgdGV4dC1zbSB0ZXh0LW4tNDAgb3V0bGluZS1ub25lIGR1cmF0aW9uLTMwMDtcbiAgICAuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkIHtcbiAgICAgIEBhcHBseSBwLTAgdGV4dC1zbSBsZWFkaW5nLW5vcm1hbDtcbiAgICB9XG4gICAgLnNlbGVjdDItc2VsZWN0aW9uX19hcnJvdyB7XG4gICAgICBAYXBwbHkgaC0xMTtcbiAgICB9XG4gICAgLnNlbGVjdDItc2VsZWN0aW9uX19jbGVhciBzcGFuIHtcbiAgICAgIEBhcHBseSBtci0yLjUgdGV4dC1zbTtcbiAgICB9XG4gICAgLnNlbGVjdDItc2VsZWN0aW9uX19wbGFjZWhvbGRlciB7XG4gICAgICBAYXBwbHkgdGV4dC1zbSB0ZXh0LW4tNDA7XG4gICAgfVxuICB9XG4gIC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0taGlnaGxpZ2h0ZWRbYXJpYS1zZWxlY3RlZF0ge1xuICAgIGNvbG9yOiAjMWYyOTM3O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmM2Y0ZjY7XG4gIH1cbiAgLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uW2FyaWEtc2VsZWN0ZWRdIHtcbiAgICBAYXBwbHkgdGV4dC1zbSB0ZXh0LW4tNTA7XG4gIH1cbn1cbi5tYXgtdy1oYWxmIHtcbiAgbWF4LXdpZHRoOiA1MCU7XG59XG5cbi8qKlxuICBBY3Rpdml0eSBEZXRhaWwgUGFnZVxuKi9cbi5hY3Rpdml0aWVzIHtcbiAgQGFwcGx5IGZsZXggZ2FwLTUgeGw6Z2FwLTc7XG5cbiAgJl9fc2lkZWJhciB7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgd2lkdGg6IDI4MHB4O1xuXG4gICAgJi1pbm5lciB7XG4gICAgICBvcmRlcjogMTtcbiAgICB9XG4gIH1cblxuICAmX19jb250ZW50IHtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICAgIG1heC13aWR0aDogY2FsYygxMDB2dyAtIDUwcHgpO1xuICAgIH1cbiAgfVxuXG4gICZfX2NhcmQge1xuICAgIEBhcHBseSBmbGV4IGZsZXgtY29sIGJnLXdoaXRlIHRleHQtY2VudGVyIHRleHQteHMgdGV4dC1uLTQwO1xuICAgIHBhZGRpbmc6IDEzcHg7XG4gIH1cblxuICAucHJvZ3Jlc3Mge1xuICAgIEBhcHBseSBpdGVtcy1jZW50ZXI7XG4gICAgd2lkdGg6IDE1MXB4O1xuICAgIG1pbi1oZWlnaHQ6IDE3NHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweCAwcHggMHB4IDhweDtcbiAgfVxuXG4gIC50YWItYnRuOmRpc2FibGVkIHtcbiAgICBAYXBwbHkgcG9pbnRlci1ldmVudHMtbm9uZSB0ZXh0LW4tMjA7XG5cbiAgICBzdmcge1xuICAgICAgQGFwcGx5IHRleHQtbi0yMDtcbiAgICB9XG4gIH1cbiAgLmhvdmVyLXRleHQge1xuICAgIHN2ZyB7XG4gICAgICBAYXBwbHkgdGV4dC1uLTMwO1xuICAgIH1cbiAgfVxufVxuLmVsZW1lbnRzLWNhcmQge1xuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMTkwcHgpIHtcbiAgICBmbGV4LWJhc2lzOiBhdXRvO1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG59XG4ubWFudWFsLWltcG9ydCB7XG4gIC5oZWxwX190ZXh0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgIWltcG9ydGFudDtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gICAgICB3aWR0aDogMzUwcHggIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbn1cbi5yZWdpc3Rlci1wYWdlIC5oZWxwX190ZXh0IHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKSAhaW1wb3J0YW50O1xufVxuXG4ucmVnaXN0cnlfX2luZm8sXG4ucmVnaXN0ZXIsXG5hc2lkZSB7XG4gIC5oZWxwX190ZXh0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgIWltcG9ydGFudDtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogMTM3MHB4KSB7XG4gICAgICB3aWR0aDogMjUwcHggIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbn1cbi5pbXBvcnQtYWN0aXZpdHksXG4uYWN0aXZpdGllc19fY29udGVudC0tZWxlbWVudCB7XG4gIC5oZWxwX190ZXh0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgIWltcG9ydGFudDtcbiAgfVxufVxuYXNpZGUge1xuICAucHJvZ3Jlc3Mge1xuICAgIC5oZWxwX190ZXh0IHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKSAhaW1wb3J0YW50O1xuXG4gICAgICBAbWVkaWEgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNDUlKSAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuLmFjdGl2aXRpZXNfX2NvbnRlbnQge1xuICB3aWR0aDogMTAwJTtcbn1cbi50YWItYnRuIHtcbiAgLmhlbHBfX3RleHQge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKSAhaW1wb3J0YW50O1xuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAxMDI0cHgpIHtcbiAgICAgIGxlZnQ6IDA7XG4gICAgfVxuICB9XG59XG4uYWN0aXZpdHktZGVmYXVsdC12YWx1ZSB7XG4gIC5oZWxwX190ZXh0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpICFpbXBvcnRhbnQ7XG4gIH1cbn1cbi5lcnJvci10aXRsZSB7XG4gIGNvbG9yOiAjZDEwMDFlO1xuICBwYWRkaW5nLXRvcDogOHB4ICFpbXBvcnRhbnQ7XG4gIHBhZGRpbmctYm90dG9tOiA4cHggIWltcG9ydGFudDtcbn1cbi50ZXh0LWRhbmdlci1lcnJvciB7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgZm9udC1zaXplOiAxMnB4O1xuICBsaW5lLWhlaWdodDogMThweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbn1cbiIsIi5wYWdpbmF0aW9uIHtcbiAgQGFwcGx5IHJlbGF0aXZlIHotMCBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctd2hpdGUgdGV4dC1zbSBsZWFkaW5nLXJlbGF4ZWQgdGV4dC1uLTQwO1xuXG4gIGEge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gIGEsXG4gIC5wYWdpbmF0aW9uLWRvdHMge1xuICAgIEBhcHBseSBmbGV4IGJvcmRlci15IGJvcmRlci1sIGJvcmRlci1uLTIwIHB5LTEuNSBweC0zO1xuXG4gICAgJjpub3QoLnByZXYtYnRuKSB7XG4gICAgICBAYXBwbHkgYm9yZGVyLWwgYm9yZGVyLW4tMjA7XG4gICAgfVxuXG4gICAgJi5wcmV2LWJ0bixcbiAgICAmLm5leHQtYnRuIHtcbiAgICAgIEBhcHBseSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy1uLTEwO1xuXG4gICAgICBzdmcge1xuICAgICAgICBAYXBwbHkgdGV4dC14cztcbiAgICAgIH1cbiAgICB9XG4gICAgJi5wcmV2LWJ0biB7XG4gICAgICBAYXBwbHkgcm91bmRlZC10bCByb3VuZGVkLWJsO1xuICAgIH1cblxuICAgICYubmV4dC1idG4ge1xuICAgICAgQGFwcGx5IHJvdW5kZWQtYnIgcm91bmRlZC10ciBib3JkZXItcjtcbiAgICB9XG5cbiAgICAmLnByZXYtYnRuIHN2ZyB7XG4gICAgICBAYXBwbHkgbXItMTtcbiAgICB9XG5cbiAgICAmLm5leHQtYnRuIHN2ZyB7XG4gICAgICBAYXBwbHkgbWwtMTtcbiAgICB9XG5cbiAgICAmOmhvdmVyLFxuICAgICYuY3VycmVudCB7XG4gICAgICBAYXBwbHkgYmctYmx1ZWNvcmFsIHRleHQtcGFwZXI7XG4gICAgfVxuICB9XG59XG4iLCIub3ZlcmxheSB7XG4gIEBhcHBseSBmaXhlZCBsZWZ0LTAgdG9wLTAgaC1mdWxsIHctZnVsbCBiZy1ibGFjaztcbiAgei1pbmRleDogMTAwO1xuICBvcGFjaXR5OiAwLjc7XG5cbiAgJl9faW5uZXIge1xuICAgIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTAgdG9wLTAgaC1mdWxsIHctZnVsbDtcbiAgfVxuXG4gICZfX2NvbnRlbnQge1xuICAgIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTIvNCB0b3AtMi80O1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuXG4gICAgLnNwaW5uZXIge1xuICAgICAgQGFwcGx5IGlubGluZS1ibG9jayBhbmltYXRlLXNwaW4gcm91bmRlZC1mdWxsIGJvcmRlci0yIGJvcmRlci1uLTEwIGJvcmRlci1vcGFjaXR5LTU7XG4gICAgICB3aWR0aDogNzVweDtcbiAgICAgIGhlaWdodDogNzVweDtcbiAgICAgIGJvcmRlci10b3AtY29sb3I6IHdoaXRlO1xuICAgIH1cbiAgfVxufVxuLmxvYWRvdmVybGF5IHtcbiAgQGFwcGx5IGZpeGVkIGxlZnQtMCB0b3AtMCBoLWZ1bGwgdy1mdWxsIGJnLWJsYWNrO1xuICBvcGFjaXR5OiAwLjc7XG5cbiAgJl9faW5uZXIge1xuICAgIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTAgdG9wLTAgaC1mdWxsIHctZnVsbDtcbiAgfVxuXG4gICZfX2NvbnRlbnQge1xuICAgIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTIvNCB0b3AtMi80O1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuXG4gICAgLnNwaW5uZXIge1xuICAgICAgQGFwcGx5IGlubGluZS1ibG9jayBhbmltYXRlLXNwaW4gcm91bmRlZC1mdWxsIGJvcmRlci0yIGJvcmRlci1uLTEwIGJvcmRlci1vcGFjaXR5LTU7XG4gICAgICB3aWR0aDogNzVweDtcbiAgICAgIGhlaWdodDogNzVweDtcbiAgICAgIGJvcmRlci10b3AtY29sb3I6IHdoaXRlO1xuICAgIH1cbiAgfVxufVxuIiwiLnNlbGVjdDItY29udGFpbmVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIG1hcmdpbjogMDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcblxuICAmOmZvY3VzLXdpdGhpbiB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2YxZjdmOTtcbiAgfVxuXG4gIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGhlaWdodDogMjhweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcblxuICAgICY6Zm9jdXMtd2l0aGluIHtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMyYTJmMzA7XG4gICAgfVxuXG4gICAgLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4O1xuICAgICAgcGFkZGluZy1sZWZ0OiA4cHg7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMTtcbiAgICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgfVxuICB9XG59XG5cbi5zZWxlY3QyLWRyb3Bkb3duIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAtMTAwMDAwcHg7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB3aWR0aDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNhYWE7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbn1cblxuLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uIHtcbiAgcGFkZGluZzogNnB4O1xuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcblxuICAmW2FyaWEtc2VsZWN0ZWRdIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbn1cblxuLnNlbGVjdDItY29udGFpbmVyLS1vcGVuIHtcbiAgLnNlbGVjdDItZHJvcGRvd24ge1xuICAgIGxlZnQ6IDA7XG5cbiAgICAmLS1hYm92ZSB7XG4gICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG4gICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xuICAgIH1cblxuICAgICYtLWJlbG93IHtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICBib3JkZXItdG9wOiBub25lO1xuICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDtcbiAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xuICAgIH1cbiAgfVxufVxuXG4uc2VsZWN0Mi1zZWFyY2gtLWRyb3Bkb3duIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDRweDtcblxuICAuc2VsZWN0Mi1zZWFyY2hfX2ZpZWxkIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDRweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjYTZiNWJhO1xuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcblxuICAgICY6Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24ge1xuICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgIH1cbiAgfVxufVxuXG5bdHlwZT0nc2VhcmNoJ10ge1xuICBvdXRsaW5lLWNvbG9yOiAjYTZiNWJhO1xuICBvdXRsaW5lLW9mZnNldDogMDtcbn1cblxuLnNlbGVjdDItaGlkZGVuLWFjY2Vzc2libGUge1xuICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcbiAgd2lkdGg6IDFweCAhaW1wb3J0YW50O1xuICBoZWlnaHQ6IDFweCAhaW1wb3J0YW50O1xuICBtYXJnaW46IC0xcHggIWltcG9ydGFudDtcbiAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XG4gIGJvcmRlcjogMCAhaW1wb3J0YW50O1xuICBjbGlwOiByZWN0KDAgMCAwIDApICFpbXBvcnRhbnQ7XG59XG5cbi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCB7XG4gIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIHtcbiAgICAuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkIHtcbiAgICAgIGNvbG9yOiAjMTU1MzY2O1xuICAgICAgbGluZS1oZWlnaHQ6IDI4cHg7XG4gICAgfVxuXG4gICAgLnNlbGVjdDItc2VsZWN0aW9uX19jbGVhciB7XG4gICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG5cbiAgICAuc2VsZWN0Mi1zZWxlY3Rpb25fX3BsYWNlaG9sZGVyIHtcbiAgICAgIGNvbG9yOiAjOTk5O1xuICAgIH1cblxuICAgIC5zZWxlY3QyLXNlbGVjdGlvbl9fYXJyb3cge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAxcHg7XG4gICAgICByaWdodDogMXB4O1xuICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICBoZWlnaHQ6IDI2cHg7XG5cbiAgICAgIGIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgIHdpZHRoOiAwO1xuICAgICAgICBoZWlnaHQ6IDA7XG4gICAgICAgIG1hcmdpbi10b3A6IC0ycHg7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAtNHB4O1xuICAgICAgICBib3JkZXItY29sb3I6ICM4ODggdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgICAgIGJvcmRlci13aWR0aDogNXB4IDRweCAwIDRweDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLnNlbGVjdDItcmVzdWx0cyA+IC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbnMge1xuICAgIG1heC1oZWlnaHQ6IDIwMHB4O1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gIH1cbn1cblxuLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0LnNlbGVjdDItY29udGFpbmVyLS1vcGVuIHtcbiAgLnNlbGVjdDItc2VsZWN0aW9uX19hcnJvdyB7XG4gICAgYiB7XG4gICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICM4ODggdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItd2lkdGg6IDAgNHB4IDVweCA0cHg7XG4gICAgfVxuICB9XG5cbiAgJi5zZWxlY3QyLWNvbnRhaW5lci0tYWJvdmUge1xuICAgIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIHtcbiAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcbiAgICB9XG4gIH1cblxuICAmLnNlbGVjdDItY29udGFpbmVyLS1iZWxvdyB7XG4gICAgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUge1xuICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG4gICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xuICAgIH1cbiAgfVxufVxuIiwiLnNpZGViYXItb3Blbi1pY29uIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBoZWlnaHQ6IDQwcHg7XG4gIGxlZnQ6IDBweDtcbiAgYm90dG9tOiA1MHB4O1xuICB6LWluZGV4OiA2MDtcbiAgZGlzcGxheTogZmxleDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2QwZGRlMDtcbiAgcGFkZGluZzogMCA1cHg7XG4gIGJvcmRlci1yYWRpdXM6IDAgMTAwJSAxMDAlIDA7XG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDAuMnM7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZGlzcGxheTogbm9uZTtcbiAgQG1lZGlhIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgJjpob3ZlciB7XG4gICAgcGFkZGluZy1sZWZ0OiAxNXB4O1xuICB9XG5cbiAgc3ZnIHtcbiAgICBtYXJnaW4tdG9wOiA4cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGNvbG9yOiAjMTU1MzY2O1xuICB9XG59XG4uZGV0YWlscy1zaWRlYmFyLWNsb3NlLWljb24ge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGJvdHRvbTogNTBweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBsZWZ0OiAyODBweDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDBkZGUwO1xuICBoZWlnaHQ6IDQwcHg7XG4gIHdpZHRoOiA0MHB4O1xuICB6LWluZGV4OiAzMDA7XG4gIGJvcmRlci1yYWRpdXM6IDEwMCU7XG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDAuM3M7XG5cbiAgc3ZnIHtcbiAgICBtYXJnaW46IGF1dG87XG4gICAgY29sb3I6ICMxNTUzNjY7XG4gIH1cbn1cbi5zaWRlYmFyLWNsb3NlLWljb24ge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGJvdHRvbTogNTBweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBsZWZ0OiAyNzVweDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDBkZGUwO1xuICBoZWlnaHQ6IDQwcHg7XG4gIHdpZHRoOiA0MHB4O1xuICB6LWluZGV4OiAyMDA7XG4gIGJvcmRlci1yYWRpdXM6IDEwMCU7XG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDAuMnM7XG5cbiAgQG1lZGlhIChtYXgtd2lkdGg6IDcwMHB4KSB7XG4gICAgbGVmdDogMjQwcHg7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTtcbiAgfVxuXG4gIHN2ZyB7XG4gICAgbWFyZ2luOiBhdXRvO1xuICAgIGNvbG9yOiAjMTU1MzY2O1xuICB9XG59XG4iLCIubXVsdGlzZWxlY3Qge1xuICBtaW4td2lkdGg6IDE4MHB4ICFpbXBvcnRhbnQ7XG4gIGN1cnNvcjogcG9pbnRlciAhaW1wb3J0YW50O1xufVxuLm11bHRpc2VsZWN0LmlzLWFjdGl2ZSB7XG4gIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbn1cbi5vcmdhbml6YXRpb24sXG4ucm9sZSxcbi5zdGF0dXMge1xuICAubXVsdGlzZWxlY3Qge1xuICAgIHdpZHRoOiAxNjBweCAhaW1wb3J0YW50O1xuICB9XG59XG4uZmlsdGVycyB7XG4gIC5tdWx0aXNlbGVjdC1wbGFjZWhvbGRlciB7XG4gICAgZm9udC1zaXplOiAxMnB4ICFpbXBvcnRhbnQ7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQgIWltcG9ydGFudDtcbiAgICBjb2xvcjogcmdiKHZhcigtLWJsdWVjb3JhbCkpICFpbXBvcnRhbnQ7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50O1xuICB9XG59XG4ubXVsdGlzZWxlY3Qtc2VhcmNoIHtcbiAgY3Vyc29yOiBwb2ludGVyICFpbXBvcnRhbnQ7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2UgIWltcG9ydGFudDtcbn1cbi5tdWx0aXNlbGVjdC1tdWx0aXBsZS1sYWJlbCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50O1xuICBmb250LXNpemU6IDEycHggIWltcG9ydGFudDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQgIWltcG9ydGFudDtcbiAgY29sb3I6IHJnYmEodmFyKC0tYmx1ZWNvcmFsKSwgMCkgIWltcG9ydGFudDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cblxuLm11bHRpc2VsZWN0LWxhYmVsLXdyYXBwZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgLm11bHRpc2VsZWN0LW11bHRpcGxlLWxhYmVsIHtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwICFpbXBvcnRhbnQ7XG4gICAgZm9udC1zaXplOiAxMnB4ICFpbXBvcnRhbnQ7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQgIWltcG9ydGFudDtcbiAgICBjb2xvcjogcmdiYSh2YXIoLS1ibHVlY29yYWwpLCAwKSAhaW1wb3J0YW50O1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgJjo6YWZ0ZXIge1xuICAgICAgY29udGVudDogdmFyKC0tbGFiZWwpO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICBsZWZ0OiAxNHB4O1xuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50O1xuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50O1xuICAgICAgZm9udC1zaXplOiAxMnB4ICFpbXBvcnRhbnQ7XG4gICAgICBmb250LXdlaWdodDogYm9sZCAhaW1wb3J0YW50O1xuICAgICAgY29sb3I6IHJnYmEodmFyKC0tYmx1ZWNvcmFsKSkgIWltcG9ydGFudDtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgfVxuICB9XG4gIC5tdWx0aXNlbGVjdC1zaW5nbGUtbGFiZWwtdGV4dCB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG4gIC5tdWx0aXNlbGVjdC1zaW5nbGUtbGFiZWwge1xuICAgIC8vIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwICFpbXBvcnRhbnQ7XG4gICAgZm9udC1zaXplOiAxMnB4ICFpbXBvcnRhbnQ7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQgIWltcG9ydGFudDtcbiAgICBjb2xvcjogcmdiYSh2YXIoLS1ibHVlY29yYWwpLCAwKSAhaW1wb3J0YW50O1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgJjo6YWZ0ZXIge1xuICAgICAgY29udGVudDogdmFyKC0tbGFiZWwpO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICBsZWZ0OiAxNHB4O1xuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50O1xuICAgICAgZm9udC1zaXplOiAxMnB4ICFpbXBvcnRhbnQ7XG4gICAgICBmb250LXdlaWdodDogYm9sZCAhaW1wb3J0YW50O1xuICAgICAgY29sb3I6IHJnYmEodmFyKC0tYmx1ZWNvcmFsKSkgIWltcG9ydGFudDtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgfVxuICB9XG59XG5cbi5tdWx0aXNlbGVjdC1jYXJldCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1ibHVlY29yYWwpKSAhaW1wb3J0YW50IDtcbiAgJjo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcgJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgaGVpZ2h0OiA0cHg7XG4gICAgd2lkdGg6IDRweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHJvdGF0ZSg0NWRlZyk7XG4gICAgei1pbmRleDogMTA7XG4gICAgdG9wOiAzMCU7XG4gIH1cbn1cbi5tdWx0aXNlbGVjdC1jbGVhci1pY29uIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xufVxuLm11bHRpc2VsZWN0LXNlYXJjaDpmb2N1cy13aXRoaW4gPiAuc2VsZWN0ZWQtcGxhY2Vob2xkZXIge1xuICBvcGFjaXR5OiAwO1xufVxuLnBvcHVwLW1vZGVsIHtcbiAgLm11bHRpc2VsZWN0IHtcbiAgICBoZWlnaHQ6IDUwcHg7XG4gIH1cbiAgLm11bHRpc2VsZWN0LXBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogcmdiKHZhcigtLW4tNDApKSAhaW1wb3J0YW50IDtcbiAgICBmb250LXdlaWdodDogNDAwICFpbXBvcnRhbnQ7XG4gIH1cbn1cbi5tdWx0aXNlbGVjdC1vcHRpb24uaXMtcG9pbnRlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG59XG4ubXVsdGlzZWxlY3QtZHJvcGRvd24ge1xuICBvdmVyZmxvdy14OiBoaWRkZW4gIWltcG9ydGFudDtcbiAgei1pbmRleDogNTAgIWltcG9ydGFudDtcbn1cblxuLm11bHRpc2VsZWN0LW9wdGlvbiB7XG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1uLTEwKSkgIWltcG9ydGFudDtcbiAgfVxufVxuLm11bHRpc2VsZWN0LW9wdGlvbi5pcy1zZWxlY3RlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYih2YXIoLS1uLTIwKSkgIWltcG9ydGFudDtcbiAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7XG59XG4iLCIjbGF1bmNoZXIge1xuICBwb3NpdGlvbjogZml4ZWQgIWltcG9ydGFudDtcbiAgYm90dG9tOiAzNXB4ICFpbXBvcnRhbnQ7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgYm9yZGVyLXJhZGl1czogOTk5OTlweCAhaW1wb3J0YW50O1xuICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMjEsIDgzLCAxMDIpICFpbXBvcnRhbnQ7XG59XG4iLCIuZHBfX2lucHV0IHtcbiAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMDtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgY29sb3I6ICMyYTJmMzAgIWltcG9ydGFudDtcbiAgcGFkZGluZzogMCA4cHggIWltcG9ydGFudDtcbiAgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0ICFpbXBvcnRhbnQ7XG4gIHBhZGRpbmctcmlnaHQ6IDE2cHggIWltcG9ydGFudDtcbn1cbi5hbGwtdGltZSB7XG4gIC5kcF9fc2VsZWN0aW9uX3ByZXZpZXcge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuLmVtcHR5IHtcbiAgLmRwX19pbnB1dF93cmFwIHtcbiAgICBtYXgtd2lkdGg6IDExMHB4ICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLmRwX19pbnB1dDo6cGxhY2Vob2xkZXIge1xuICBmb250LXNpemU6IDE0cHggIWltcG9ydGFudDtcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQgIWltcG9ydGFudDtcbiAgY29sb3I6ICMyYTJmMzAgIWltcG9ydGFudDtcbn1cblxuLmRwX19pbnB1dF9pY29uIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4uZHBfX2NsZWFyX2ljb24ge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG4uZHBfX2lucHV0X3JlYWRvbmx5IHtcbiAgZm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7XG59XG4uZHBfX2NhbGVuZGFyX2hlYWRlcl9pdGVtIHtcbiAgZm9udC13ZWlnaHQ6IGxpZ2h0ZXIgIWltcG9ydGFudDtcbiAgY29sb3I6IHJnYmEodmFyKC0tbi00MCkpICFpbXBvcnRhbnQ7XG59XG5cbi5kcF9fY2FsZW5kYXJfaXRlbSAqIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIG1hcmdpbi1yaWdodDogMDtcbn1cbi5kcF9fY2VsbF9pbm5lciB7XG4gIGNvbG9yOiByZ2JhKHZhcigtLW4tNDApKSAhaW1wb3J0YW50O1xuICBoZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgd2lkdGg6IDQwcHggIWltcG9ydGFudDtcbn1cblxuLmRwX19vdmVybGF5X2NlbGw6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXNwcmluZy01MCksIDEpICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xufVxuXG4uZHBfX292ZXJsYXlfY2VsbF9hY3RpdmUge1xuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXNwcmluZy01MCksIDEpICFpbXBvcnRhbnQ7XG59XG5cbi5kcF9fY2FsZW5kYXJfcm93IHtcbiAgZ2FwOiAwICFpbXBvcnRhbnQ7XG59XG5cbi5kcF9fdG9kYXkge1xuICBib3JkZXItcmFkaXVzOiA1MCUgIWltcG9ydGFudDtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1zcHJpbmctNTApLCAxKSAhaW1wb3J0YW50O1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICBjb2xvcjogdmFyKC0tbi00MCkgIWltcG9ydGFudDtcbn1cblxuLmRwX19yYW5nZV9lbmQge1xuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXNwcmluZy0yMCksIDEpICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xuICBib3JkZXItcmFkaXVzOiAwIDUwJSA1MCUgMCAhaW1wb3J0YW50O1xuICBib3JkZXI6IDAgIWltcG9ydGFudDtcbn1cblxuLmRwX19yYW5nZV9zdGFydCB7XG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tc3ByaW5nLTIwKSwgMSkgIWltcG9ydGFudDtcbiAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1yYWRpdXM6IDUwJSAwIDAgNDAlICFpbXBvcnRhbnQ7XG59XG5cbi5kcF9fcmFuZ2VfYmV0d2VlbiB7XG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tc3ByaW5nLTIwKSwgMSkgIWltcG9ydGFudDtcbiAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG59XG5cbi5kcF9fcHJlc2V0X3JhbmdlcyB7XG4gIGNvbG9yOiByZ2JhKHZhcigtLW4tNTApKSAhaW1wb3J0YW50O1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlICFpbXBvcnRhbnQ7XG4gIG1pbi13aWR0aDogMTUwcHggIWltcG9ydGFudDtcbn1cbi5kcF9fcHJlc2V0X3JhbmdlIHtcbiAgY29sb3I6IHJnYmEodmFyKC0tbi01MCkpICFpbXBvcnRhbnQ7XG4gIHBhZGRpbmctbGVmdDogOHB4ICFpbXBvcnRhbnQ7XG4gIGZvbnQtc2l6ZTogMC44cmVtICFpbXBvcnRhbnQ7XG4gIGZvbnQtd2VpZ2h0OiA1MDAgIWltcG9ydGFudDtcbiAgbWFyZ2luOiA0cHggYXV0byAhaW1wb3J0YW50O1xufVxuXG4uZHBfX3ByZXNldF9yYW5nZTpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tc3ByaW5nLTIwKSwgMSkgIWltcG9ydGFudDtcbiAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG59XG5cbi5mb250LXNwcmluZyB7XG4gIGNvbG9yOiByZ2JhKHZhcigtLXNwcmluZy01MCksIDEpICFpbXBvcnRhbnQ7XG59XG5cbi5mb250LW5ldXRyYWwge1xuICBjb2xvcjogdmFyKC0tbi01MCkgIWltcG9ydGFudDtcbn1cblxuLmRwX19pbnB1dCB7XG4gIG1hcmdpbi1yaWdodDogMTJweCAhaW1wb3J0YW50O1xufVxuXG4uZGF0ZXJhbmdlLWl0ZW0ge1xuICBwYWRkaW5nOiA4cHg7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgbWFyZ2luLXRvcDogMnB4O1xuICBtYXJnaW4tYm90dG9tOiAycHg7XG59XG5cbi5kYXRlcmFuZ2UtaXRlbTpob3ZlciB7XG4gIEBhcHBseSBiZy1zcHJpbmctMjA7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgY29sb3I6IHdoaXRlO1xufVxuLmRhdGVyYW5nZS1pdGVtLWFjdGl2ZSB7XG4gIEBhcHBseSBiZy1zcHJpbmctMjA7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cbi5wcmVzZXQtcmFuZ2UtaXRlbS1hY3RpdmUge1xuICBAYXBwbHkgYmctc3ByaW5nLTIwO1xuICBjb2xvcjogd2hpdGUgIWltcG9ydGFudDtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/ \ No newline at end of file +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzL2FwcC5jc3MiLCJtYXBwaW5ncyI6IkFBQUE7O0NBQUE7OztDQUFBOztBQUFBOzs7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOztFQUFBO0FBQUE7O0FBQUE7Ozs7O0NBQUE7O0FBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtLQUFBO0VBQUE7QUFBQTs7QUFBQTs7O0NBQUE7O0FBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7Ozs7Q0FBQTs7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBO0VBQUE7VUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBOzs7Ozs7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7O0VBQUE7QUFBQTs7QUFBQTs7O0NBQUE7O0FBQUE7Ozs7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBOztFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7RUFBQTtBQUFBOztBQUFBO0VBQUE7QUFBQTs7QUFBQTs7OztDQUFBOztBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7Ozs7Q0FBQTs7QUFBQTs7Ozs7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBOztFQUFBO0FBQUE7O0FBQUE7OztDQUFBOztBQUFBOzs7O0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBO0VBQUE7QUFBQTs7QUFBQTs7Q0FBQTs7QUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7O0VBQUE7QUFBQTs7QUFBQTs7O0NBQUE7O0FBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7RUFBQTtBQUFBOztBQUFBOzs7Q0FBQTs7QUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFBQTs7Q0FBQTs7QUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7Ozs7Ozs7Ozs7Ozs7RUFBQTtBQUFBOztBQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBO0VBQUE7QUFBQTs7QUFBQTs7O0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7RUFBQTtBQUFBOztBQUFBOzs7Q0FBQTs7QUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFBQTs7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7O0VBQUE7QUFBQTs7QUFBQTs7Q0FBQTtBQUFBO0VBQUE7QUFBQTs7QUFBQTs7OztDQUFBOztBQUFBOzs7Ozs7OztFQUFBO0VBQUE7QUFBQTs7QUFBQTs7Q0FBQTs7QUFBQTs7RUFBQTtFQUFBO0FBQUE7O0FBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUNBQTtFQUFBO0FBQUE7QUFBQTs7RUFBQTtJQUFBO0VBQUE7QUFBQTtBQUFBOztFQUFBO0lBQUE7RUFBQTtBQUFBO0FBQUE7O0VBQUE7SUFBQTtFQUFBO0FBQUE7QUFBQTs7RUFBQTtJQUFBO0VBQUE7QUFBQTtBQUFBOztFQUFBO0lBQUE7RUFBQTtBQUFBO0FDQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7O0VBQUE7SUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO09BQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7VUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FDQUE7RUFDRTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBRUE7RUFDQTtFQUlBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0FDWkY7O0FDekRBO0VBQ0U7SUFDRTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VENERGO0FBQ0Y7QUMxREE7RUFDRTtFQUNBO0FENERGOztBQzFEQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUFBO0VBQ0E7QUQ2REY7O0FDMURFO0VBQUE7RUFBQTtFQUNBO0FBREE7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBRCtERjtBQzVESTtFQUFBO0VBQUE7QUFBQTtBQUlBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUNBO0VBQUE7RUFDQTtBQUZBO0FBS0U7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBS0Y7RUFBQTtFQUFBO0VBQ0E7QUFEQTs7QUFJSjtFQUNFO0lBQ0U7RUQ0REY7RUN6REk7SUFBQTtJQUFBO0lBQ0E7RUFEQTtFQUlGO0lBQ0U7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQUE7SUFDQTtJQUNBO0lBQ0E7RUQyREo7RUN6REU7SUFDRTtFRDJESjtBQUNGO0FDdkRFO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7O0VBQUE7SUFBQTtFQUFBO0FBQUE7QUFERjtFQUVFO0VBQ0E7RUFDQTtFQUNBO0FEMERGOztBQ3ZERTtFQUNFO0VBQ0E7RUFDQTtBRDBESjs7QUN0REU7RUFERjtJQUVJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUFBO0lBQUE7SUFBQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFRDBERjtFQ3RETTtJQUFBO0lBQUE7SUFDQTtJQUNBO0VBRkE7RUFLRTtJQUFBO0lBQUE7RUFBQTtFQUdGO0lBQ0U7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQUE7RUR3RFI7RUN0RE07SUFDRTtFRHdEUjtBQUNGO0FDbkRFO0VBOUNGO0lBK0NJO0lBQ0E7SUFDQTtFRHNERjtBQUNGOztBQ2xERTs7RUFBQTtJQUFBO0VBQUE7QUFBQTs7QUFJQTtFQUNFO0lBQUE7RUFBQTtBRHVESjs7QUNuREE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FEc0RGOztBQ25ERTtFQURGO0lBRUk7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFBQTtJQUFBO0lBQUE7SUFDQTtJQUNBO0lBQ0E7SUFDQTtZQUFBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RUR1REY7RUNwREk7SUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7RUFBQTtFQUdFOztJQUFBO0VBQUE7RUFDQTs7SUFDRTtJQUNBO0lBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7RUQwRFI7QUFDRjtBQ3pEVTtFQUNFOztJQUFBO0lBQUE7SUFBQTtFQUFBO0FEOERaO0FDekZFO0VBZ0NROztJQUFBO0lBQUE7RUFBQTtFQUlGO0lBQUE7SUFBQTtFQUFBO0VBT0E7O0lBQUE7RUFBQTtFQUNBOztJQUNFO0VEZ0VSO0FBZEY7QUNoRFU7RUFDRTs7SUFBQTtJQUFBO0lBQUE7SUFBQTtFQUFBO0FEb0VaO0FDcEhFO0VBcURROztJQUFBO0lBQUE7RUFBQTtFQUlGO0lBQUE7SUFBQTtFQUFBO0VBR0o7SUFDRTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VEc0VKO0VDbEVNOztJQUFBO0VBQUE7RUFDQTs7SUFDRTtJQUNBO0lBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7RUR3RVI7QUF0QkY7QUNoRFU7RUFDRTs7SUFBQTtJQUFBO0lBQUE7RUFBQTtBRDRFWjtBQ3ZKRTtFQWdGUTs7SUFBQTtJQUFBO0VBQUE7RUFJRjtJQUFBO0lBQUE7RUFBQTtBRHlFUjs7QUNwRUE7RUFDRTtBRDRFRjs7QUN0RUk7RUFBQTtBQUFBO0FBQ0E7RUFDRTtFQUNBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUQyRU47QUN6RU07RUFDRTtJQUFBO0lBQUE7SUFBQTtFQUFBO0FENkVSO0FDeEVNO0VBQUE7RUFBQTtBQUFBO0FBS0Y7RUFBQTtFQUFBO0FBQUE7O0FBS0Y7RUFBQTtFQUFBO0FBQUE7QUFFQTtFQUNFO0lBQUE7RUFBQTtBRDBFSjs7QUNyRUU7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUNBO0VBQ0U7QUQwRUo7O0FFbFhFO0VBQ0U7RUFDQTtBRnFYSjtBRW5YRTtFQUNFO0FGcVhKO0FFL1dJO0VBQ0U7QUZpWE47QUU5V1E7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUlOO0VBQ0U7RUFDQTtBRitXSjtBRTVXTTtFQUNFO0FGOFdSO0FFMVdJO0VBQ0U7RUFDQTtFQUNBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBRjRXTjtBRXpXUTtFQUFBO0VBQUE7RUFDQTtBQURBO0FBSUE7RUFBQTtFQUFBO0FBQUE7QUFHQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFDQTtBQURBO0FBS0k7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUlGO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFLUjtFQUVJO0lBQUE7SUFBQTtFQUFBO0VBRUE7SUFDRTtFRnVXTjtBQUNGOztBRW5XQTtFQUNFO0lBQ0U7RUZzV0Y7QUFDRjtBRXBXQTtFQUNFO0lBQ0U7RUZzV0Y7RUVwV0U7SUFDRTtFRnNXSjtFRW5XQTtJQUNFO0VGcVdGO0FBQ0Y7QUVuV0E7RUFDRTtJQUNFO0VGcVdGO0FBQ0Y7QUVuV0E7RUFDRTtJQUNFO0VGcVdGO0VFbldBO0lBQ0U7RUZxV0Y7QUFDRjtBRW5XQTtFQUNFO0VBQ0E7QUZxV0Y7O0FFbFdFO0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7RUFBQTtFQUFBO0FBQUE7O0FBRUY7RUFDRTtFQUNBO0VBQ0E7QUZ1V0Y7O0FFcldBO0VBQ0U7QUZ3V0Y7QUV2V0U7RUFGRjtJQUdJO0VGMFdGO0FBQ0Y7O0FFeFdBO0VBQ0U7RUFDQTtBRjJXRjs7QUVsV0E7RUFDRTtBRnFXRjs7QUdwZUE7RUFDRTtFQUNBO0FIdWVGO0FHbmVNO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUdFO0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FDVFI7RUFDRTtFQUNBO0VBQ0E7QUprZkY7O0FJaGZBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QUptZkY7O0FJL2VFO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFMQTs7QUFVQTs7O0VBQ0U7RUFDQTtFQUNBO0FKbWZKOztBSWhmQTtFQUdNO0lBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtFQUFBO0VBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7RUFBQTtFQUFBOztJQUFBO01BQUE7TUFBQTtJQUFBO0VBQUE7RUFERjtJQUVFO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RUprZko7RUk3ZUk7O0lBQ0U7SUFDQTtJQUNBO0VKZ2ZOO0FBQ0Y7QUk1ZUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBSjhlRjs7QUl6ZUU7RUFERjtJQUVJO0VKNmVGO0VJMWVFO0lBQ0U7RUo4ZUo7QUFKRjs7QUlwZUU7O0VBRUU7RUFDQTtFQUNBO0FKNGVKO0FJMWVJO0VBTkY7O0lBT0k7SUFFQTtFSjZlSjtBQUNGO0FJMWVFO0VBQ0U7QUo0ZUo7QUl6ZUU7RUFDRTtBSjJlSjtBSXhlRTtFQUVFO0VBQ0E7QUp5ZUo7QUlyZUk7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBR0o7RUFDRTtFQUNBO0FKd2VGOztBSXBlRTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBUUU7RUFBQTtBQUFBO0FBSUE7RUFBQTtFQUFBO0VBQ0E7QUFEQTtBQUtFO0VBQUE7RUFBQTtFQUNBO0FBREE7QUFNRjtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFHQTtFQUFBO0FBQUE7QUFHRjtFQUNFO0FKOGRKO0FJMWRJO0VBQUE7QUFBQTs7QUFJRjtFQUFBO0FBQUE7O0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFHQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUdBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0VBQUE7SUFBQTtFQUFBO0FBQUE7O0FBR0E7RUFBQTtBQUFBOztBQUFBOztFQUFBO0lBQUE7RUFBQTtBQUFBOztBQUVGO0VBQ0U7RUFDQTtFQUNBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBSmllRjs7QUkvZEE7RUFDRTtFQUNBO0VBQUE7RUFBQTtFQUFBO0FKa2VGOztBSWhlQTtFQUNFO0FKbWVGOztBSS9kRTtFQUNFO0FKa2VKOztBSTlkQTtFQUNFO0VBQ0E7RUFDQTtBSmllRjtBSS9kRTtFQUNFO0FKaWVKO0FJL2RFO0VBQ0U7QUppZUo7QUk5ZEU7RUFDRTtBSmdlSjtBSTdkRTtFQUNFO0VBQ0E7RUFDQTtBSitkSjs7QUk1ZEE7RUFHRTtFQUNBO0VBQ0E7QUorZEY7O0FJcGVBOzs7RUFHRTtFQUNBO0VBQ0E7QUorZEY7O0FJNWRBO0VBQ0U7RUFDQTtBSitkRjtBSTdkRTtFQUNFO0FKK2RKOztBSTNkQTtFQUNFO0FKOGRGOztBSTNkQTtFQUNFO0FKOGRGOztBS3hyQkU7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOztFQUFBO0lBQUE7SUFBQTtFQUFBO0FBQUE7QUFFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FMNHJCSjtBS3pyQk07RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTs7RUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VBQUE7QUFBQTtBQURGO0VBRUU7QUw0ckJOO0FLMXJCTTtFQUNFO0lBQUE7SUFBQTtFQUFBO0FMOHJCUjtBSzNyQk07RUFDRTtBTDZyQlI7QUsxckJRO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUdBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUdBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFHQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFJRjtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBOztFQUFBO0lBQUE7RUFBQTtBQUFBO0FBR0U7RUFBQTtFQUFBO0FBQUE7QUFBQTs7RUFBQTtJQUFBO0VBQUE7QUFBQTtBQUFBOztFQUFBO0lBQUE7RUFBQTtBQUFBO0FBR0U7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUNBO0FBREE7QUFLQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQ0E7QUFEQTtBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQUE7RUFBQTtBTDByQlI7QUt0ckJNO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUNBO0VBQ0E7QUFGQTtBQUlBO0VBTEY7SUFNSTtFTDByQk47QUFDRjtBS3ZyQlE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUNBO0FBREE7QUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQ0E7QUFEQTtBQUlBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBR0E7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUlGO0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBS0o7RUFBQTtFQUFBO0FBQUE7O0FBR0E7RUFBQTtFQUFBO0VBQUE7QUFBQTs7QUNwRkY7RUFDRTtFQUNBO0FOZ3hCRjs7QU03d0JBO0VBQ0U7SUFDRTtFTmd4QkY7RU05d0JBO0lBQ0U7RU5neEJGO0FBQ0Y7QU8zeEJBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFBQTtFQUFBO0FQNnhCRjs7QU8xeEJBO0VBQ0U7RUFDQTtBUDZ4QkY7QU8zeEJFO0VBQ0U7QVA2eEJKOztBT3h4QkU7RUFDRTtFQUNBO0FQMnhCSjtBT3p4Qkk7RUFKRjtJQUtJO0VQNHhCSjtBQUNGOztBT3B4QkU7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOztFQUFBO0lBQUE7RUFBQTtBQUFBO0FBSEE7RUFDRTtJQUFBO0VBQUE7QVAreEJKOztBT3p4QkU7RUFBQTtFQUFBO0FBQUE7O0FDbENGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUFBO0VBQUE7RUFBQTtBUmswQkY7QVEvekJJO0VBQUE7RUFBQTtFQUNBO0VBQUE7QUFEQTtBQUdBO0VBQ0U7RUFDQTtBUmswQk47O0FRN3pCQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFBQTtFQUFBO0FSZzBCRjtBUTl6QkU7RUFDRTtBUmcwQko7QVE1ekJJO0VBQ0U7QVI4ekJOOztBUXB6QkU7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0VBQUE7SUFBQTtFQUFBO0FBQUE7QUFKQTtFQURGO0lBRUk7SUFDQTtFUit6QkY7QUFDRjtBUTV6QkU7RUFDRTtFQUNBO0FSOHpCSjs7QVExekJBO0VBQ0U7QVI2ekJGOztBUXp6QkU7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFERjtFQUVFO0VBQ0E7QVI2ekJGOztBUTF6QkE7RUFDRTtJQUNFO0VSNnpCRjtBQUNGO0FRMXpCQTtFQUNFO0FSNHpCRjs7QVF6ekJFO0VBQ0U7QVI0ekJKOztBUXR6Qkk7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUVGO0VBQ0U7QVIwekJKOztBUXB6QkU7O0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFDQTtBQURBOztBQU1BO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFHRTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBSUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUlBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBR0U7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFDQTtFQUNBO0FBRkE7QUFNQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFJSjtFQUNFO0FSbXpCSjtBUS95Qkk7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQU1GO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQ0E7QUFEQTtBQUlFO0VBQUE7RUFBQTtBQUFBO0FBSUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBSUE7RUFBQTtFQUFBO0FBQUE7O0FBTUY7RUFBQTtFQUFBO09BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBR0U7RUFBQTtFQUFBO09BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUNBO0FBREE7QUFFQTtFQUNFO0VBQ0E7QVI2eUJOO0FRMXlCTTtFQUFBO0VBQUE7QUFBQTtBQUlGO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUlBO0VBQUE7RUFBQTtBQUFBO0FBR0Y7RUFDRTtFQUNBO0FSMHlCSjs7QVFweUJFO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFDQTtBQURBO0FBSUU7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBSUE7RUFBQTtFQUFBO0FBQUE7O0FBS0Y7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFDQTtBQURBO0FBSUU7RUFBQTtFQUFBO0FBQUE7O0FBS0Y7RUFBQTtBQUFBOztBQUlBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQ0E7QUFEQTtBQUlFO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBS0Y7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFJQTtFQUFBO0FBQUE7O0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQ0E7QUFEQTtBQUlFO0VB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QUFBO0FmMDRESjtBZXg0REk7RUFDRTtBZjA0RE47QWV2NERJO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWZ5NEROOztBZXA0REE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FmdTRERjs7QWVwNERBO0VBQ0U7RUFDQTtFQUNBO09BQUE7QWZ1NERGO0FlcjRERTtFQUNFO0FmdTRESjs7QWVsNERFO0VBQ0U7QWZxNERKO0FlbjRESTtFQUNFO0VBQ0E7RUFDQTtBZnE0RE47QWVsNERJO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QWZvNEROOztBZS8zREE7RUFDRTtFQUNBO0FmazRERjtBZWg0REU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FmazRESjtBZWg0REk7RUFDRTtBZms0RE47O0FlNzNEQTtFQUNFO0VBQ0E7QWZnNERGOztBZTczREE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FmZzRERjs7QWUzM0RJO0VBQ0U7RUFDQTtBZjgzRE47QWUzM0RJO0VBQ0U7RUFDQTtFQUNBO0FmNjNETjtBZTEzREk7RUFDRTtBZjQzRE47QWV6M0RJO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZjIzRE47QWV6M0RNO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWYyM0RSO0FldjNERTtFQUNFO0VBQ0E7QWZ5M0RKOztBZW4zREk7RUFDRTtFQUNBO0FmczNETjtBZWozREk7RUFDRTtFQUNBO0FmbTNETjtBZTkyREk7RUFDRTtFQUNBO0FmZzNETjs7QWdCMWhFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEI2aEVGO0FnQjVoRUU7RUFiRjtJQWNJO0VoQitoRUY7QUFDRjtBZ0I3aEVFO0VBQ0U7QWhCK2hFSjtBZ0I1aEVFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QWhCOGhFSjs7QWdCM2hFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCOGhFRjtBZ0I1aEVFO0VBQ0U7RUFDQTtBaEI4aEVKOztBZ0IzaEVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEI4aEVGO0FnQjVoRUU7RUFiRjtJQWNJO0lBQ0E7RWhCK2hFRjtBQUNGO0FnQjdoRUU7RUFDRTtFQUNBO0FoQitoRUo7O0FpQmptRUE7RUFDRTtFQUNBO0FqQm9tRUY7O0FpQmxtRUE7RUFDRTtBakJxbUVGOztBaUJobUVFOzs7RUFDRTtBakJxbUVKOztBaUJqbUVFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QWpCb21FSjs7QWlCam1FQTtFQUNFO0VBQ0E7QWpCb21FRjs7QWlCbG1FQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakJxbUVGOztBaUJsbUVBO0VBQ0U7QWpCcW1FRjtBaUJubUVFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakJxbUVKO0FpQnBtRUk7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakJzbUVOO0FpQm5tRUU7RUFDRTtBakJxbUVKO0FpQm5tRUU7RUFFRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQm9tRUo7QWlCbm1FSTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQnFtRU47O0FpQmhtRUE7RUFDRTtBakJtbUVGO0FpQmxtRUU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCb21FSjs7QWlCam1FQTtFQUNFO0FqQm9tRUY7O0FpQmxtRUE7RUFDRTtBakJxbUVGOztBaUJsbUVFO0VBQ0U7QWpCcW1FSjtBaUJubUVFO0VBQ0U7RUFDQTtBakJxbUVKOztBaUJsbUVBO0VBQ0U7QWpCcW1FRjs7QWlCbm1FQTtFQUNFO0VBQ0E7QWpCc21FRjs7QWlCbG1FRTtFQUNFO0FqQnFtRUo7O0FpQmxtRUE7RUFDRTtFQUNBO0FqQnFtRUY7O0FrQnB1RUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FsQnV1RUY7O0FtQjV1RUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5CK3VFRjs7QW1CNXVFRTtFQUNFO0FuQit1RUo7O0FtQjN1RUU7RUFDRTtBbkI4dUVKOztBbUIxdUVBO0VBQ0U7RUFDQTtFQUNBO0FuQjZ1RUY7O0FtQmh2RUE7RUFDRTtFQUNBO0VBQ0E7QW5CNnVFRjs7QW1CMXVFQTtFQUNFO0FuQjZ1RUY7O0FtQjF1RUE7RUFDRTtBbkI2dUVGOztBbUIzdUVBO0VBQ0U7QW5COHVFRjs7QW1CNXVFQTtFQUNFO0VBQ0E7QW5CK3VFRjs7QW1CNXVFQTtFQUNFO0VBQ0E7QW5CK3VFRjs7QW1CN3VFQTtFQUNFO0VBQ0E7RUFDQTtBbkJndkVGOztBbUI3dUVBO0VBQ0U7RUFDQTtBbkJndkVGOztBbUI3dUVBO0VBQ0U7QW5CZ3ZFRjs7QW1CN3VFQTtFQUNFO0FuQmd2RUY7O0FtQjd1RUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBbkJndkVGOztBbUI3dUVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QW5CZ3ZFRjs7QW1CN3VFQTtFQUNFO0VBQ0E7RUFDQTtBbkJndkVGOztBbUI3dUVBO0VBQ0U7RUFDQTtBbkJndkVGOztBbUI3dUVBO0VBQ0U7RUFDQTtFQUNBO0FuQmd2RUY7O0FtQjl1RUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FuQml2RUY7O0FtQjl1RUE7RUFDRTtFQUNBO0FuQml2RUY7O0FtQjl1RUE7RUFDRTtBbkJpdkVGOztBbUI5dUVBO0VBQ0U7QW5CaXZFRjs7QW1COXVFQTtFQUNFO0FuQml2RUY7O0FtQjl1RUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBbkJpdkVGOztBbUI3dUVFO0VBQUE7RUFBQTtFQUNBO0VBQ0E7QUFGQTs7QUFLQTtFQUFBO0VBQUE7RUFDQTtBQURBOztBQUlBO0VBQUE7RUFBQTtFQUNBO0FBREE7O0FuQnZHRjtFQUNFO0VBQ0E7RUFDQTtBQTgxRUY7O0FKcDRFQTtFQUFBO0N3QkFBOztBeEJBQTtFQUFBO0N3QkFBOztBeEJBQTtFQUFBO0N3QkFBOztBeEJBQTtFQUFBO0N3QkFBOztBeEJBQTtFQUFBO0N3QkFBOztBeEJBQTtFQUFBLHVCd0JBQTtFeEJBQTtDd0JBQTs7QXhCQUE7RUFBQSxtQndCQUE7RXhCQUE7Q3dCQUE7O0F4QkFBO0VBQUEsbUJ3QkFBO0V4QkFBO0N3QkFBOztBeEJBQTtFQUFBLHNCd0JBQTtFeEJBQTtDd0JBQTs7QXhCQUE7RUFBQSxpQndCQUE7RXhCQUE7Q3dCQUE7O0F4QkFBO0VBQUEscUJ3QkFBO0V4QkFBO0N3QkFBOztBeEJBQTtFQUFBLCtCd0JBQTtFeEJBQTtDd0JBQTs7QXhCQUE7RUFBQTtDd0JBQTs7QXhCQUE7RUFBQTtDd0JBQTs7QXhCQUE7RUFBQSx1QndCQUE7RXhCQUE7Q3dCQUE7O0F4QkFBO0VBQUEsdUJ3QkFBO0V4QkFBO0N3QkFBOztBeEJBQTtFQUFBLG1Cd0JBQTtFeEJBQTtDd0JBQTs7QXhCQUE7RUFBQSxtQndCQUE7RXhCQUE7Q3dCQUE7O0F4QkFBO0VBQUEsbUJ3QkFBO0V4QkFBO0N3QkFBOztBeEJBQTtFQUFBLG1Cd0JBQTtFeEJBQTtDd0JBQTs7QXhCQUE7RUFBQSxtQndCQUE7RXhCQUE7Q3dCQUE7O0F4QkFBO0VBQUEscUJ3QkFBO0V4QkFBO0N3QkFBOztBeEJBQTtFQUFBLHFCd0JBQTtFeEJBQTtDd0JBQTs7QXhCQUE7RUFBQSxnQ3dCQUE7RXhCQUE7Q3dCQUE7O0F4QkFBO0VBQUEscUJ3QkFBO0V4QkFBO0N3QkFBOztBeEJBQTtFQUFBLHFCd0JBQTtFeEJBQTtDd0JBQTs7QXhCQUE7RUFBQSxxQndCQUE7RXhCQUE7Q3dCQUE7O0F4QkFBO0VBQUE7Q3dCQUE7O0F4QkFBO0VBQUE7Q3dCQUE7O0F4QkFBO0VBQUEsc0J3QkFBO0V4QkFBO0N3QkFBOztBeEJBQTtFQUFBLHFCd0JBQTtFeEJBQTtDd0JBQTs7QXhCQUE7RUFBQTtDd0JBQTs7QXhCQUE7O0VBQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQSxvQndCQUE7SXhCQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUEsd0J3QkFBO0l4QkFBLCtEd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQSxnQ3dCQUE7SXhCQUE7R3dCQUE7O0V4QkFBO0lBQUEsK0J3QkFBO0l4QkFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBLHFCd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQSxvQndCQUE7SXhCQUE7R3dCQUE7O0V4QkFBO0lBQUEsa0J3QkFBO0l4QkFBO0d3QkFBOztFeEJBQTtJQUFBLG9Cd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQSxtQndCQUE7SXhCQUE7R3dCQUE7O0V4QkFBO0lBQUEsb0J3QkFBO0l4QkFBO0d3QkFBOztFeEJBQTtJQUFBLHNCd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQSxzQndCQUE7SXhCQUE7R3dCQUE7O0V4QkFBO0lBQUEscUJ3QkFBO0l4QkFBO0d3QkFBOztFeEJBQTtJQUFBLHFCd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQSxrQndCQUE7SXhCQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUEsZ0J3QkFBO0l4QkFBO0d3QkFBOztFeEJBQTtJQUFBLG1Cd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTtDQUFBOztBeEJBQTs7RUFBQTtJQUFBLGdCd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQSw2QndCQUE7SXhCQUE7R3dCQUE7O0V4QkFBO0lBQUEsNEJ3QkFBO0l4QkFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBLHFCd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQSxtQndCQUE7SXhCQUE7R3dCQUE7Q0FBQTs7QXhCQUE7O0VBQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQTtHd0JBQTs7RXhCQUE7SUFBQSxrQndCQUE7SXhCQUE7R3dCQUE7O0V4QkFBO0lBQUEscUJ3QkFBO0l4QkFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBO0NBQUE7O0F4QkFBOztFQUFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUEsa0J3QkFBO0l4QkFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBO0d3QkFBOztFeEJBQTtJQUFBLHdCd0JBQTtJeEJBQSx3RHdCQUE7SXhCQUE7R3dCQUE7O0V4QkFBO0lBQUEscUJ3QkFBO0l4QkFBO0d3QkFBOztFeEJBQTtJQUFBLGtCd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQSxxQndCQUE7SXhCQUE7R3dCQUE7O0V4QkFBO0lBQUEsc0J3QkFBO0l4QkFBO0d3QkFBOztFeEJBQTtJQUFBLG1Cd0JBQTtJeEJBQTtHd0JBQTs7RXhCQUE7SUFBQSxxQndCQUE7SXhCQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7O0V4QkFBO0lBQUE7R3dCQUE7Q0FBQTs7QXhCQUE7O0VBQUE7SUFBQTtHd0JBQTtDQUFBOztBeEJBQTtFQUFBLG1Cd0JBQTtFeEJBQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy90YWlsd2luZGNzcy9iYXNlLmNzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdGFpbHdpbmRjc3MvY29tcG9uZW50cy5jc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3RhaWx3aW5kY3NzL3V0aWxpdGllcy5jc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2Fic3RyYWN0cy9fdmFyaWFibGVzLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2FwcC5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9sYXlvdXRzL19oZWFkZXIuc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvbGF5b3V0cy9fbWFpbi5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9sYXlvdXRzL19mb290ZXIuc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvbGF5b3V0cy9fYWN0aXZpdHkuc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvbGF5b3V0cy9fc2V0dGluZ19wYWdlLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2xheW91dHMvX3dlYnBvcnRhbHBhZ2VzLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2Jhc2UvX3R5cG9ncmFwaHkuc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvY29tcG9uZW50L19idXR0b24uc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvY29tcG9uZW50L19oYW1idXJnZXIuc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvY29tcG9uZW50L19pbnB1dC5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9jb21wb25lbnQvX3RhYmxlLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2NvbXBvbmVudC9fZm9ybXMuc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvY29tcG9uZW50L19wYWdpbmF0aW9uLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2NvbXBvbmVudC9fb3ZlcmxheS5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9jb21wb25lbnQvX3NlbGVjdDIuc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvY29tcG9uZW50L19zaWRlYmFyLWljb24uc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvdmVuZG9yLW92ZXJyaWRlcy9tdWx0aXNlbGVjdC5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy92ZW5kb3Itb3ZlcnJpZGVzL196ZW5kZXguc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvdmVuZG9yLW92ZXJyaWRlcy9fdnVlLWRhdGVwaWNrZXIuc2NzcyIsIndlYnBhY2s6Ly8vPG5vIHNvdXJjZT4iXSwic291cmNlc0NvbnRlbnQiOlsiQHRhaWx3aW5kIGJhc2U7XG4iLCJAdGFpbHdpbmQgY29tcG9uZW50cztcbiIsIkB0YWlsd2luZCB1dGlsaXRpZXM7XG4iLCI6cm9vdCB7XG4gIC0tYmxhY2s6IDAsIDAsIDA7XG4gIC0td2hpdGU6IDI1NSwgMjU1LCAyNTU7XG4gIC0tdHJhbnNwYXJlbnQ6IHRyYW5zcGFyZW50O1xuXG4gIC8vIE5ldXRyYWxzXG4gIC0tbi0wOiAyNTUsIDI1NSwgMjU1O1xuICAtLW4tMTA6IDI0MSwgMjQ3LCAyNDk7XG4gIC0tbi0yMDogMjEzLCAyMjAsIDIyMjtcbiAgLS1uLTMwOiAxNjYsIDE4MSwgMTg2O1xuICAtLW4tNDA6IDEwNCwgMTIxLCAxMjY7XG4gIC0tbi01MDogNDIsIDQ3LCA0ODtcblxuICAvLyBQcmltYXJ5IGNvbG9yc1xuICAtLXR1cnF1b2lzZTogNiwgMjE5LCAyMjg7XG4gIC0tYmx1ZWNvcmFsOiAyMSwgODMsIDEwMjtcblxuICAtLWJsdWVjb3JhbC00MDogNjAsIDExMiwgMTI4O1xuICAtLWJsdWVjb3JhbC01MDogMjEsIDgzLCAxMDI7XG5cbiAgLy8gU2Vjb25kYXJ5IGNvbG9yc1xuICAvLyBDYW1lbFxuICAtLWNhbWVsLTEwOiAyNTIsIDIzOSwgMjI4O1xuICAtLWNhbWVsLTIwOiAyNDksIDIxOSwgMTkzO1xuICAtLWNhbWVsLTMwOiAyNDgsIDIwNywgMTczO1xuICAtLWNhbWVsLTQwOiAyNDYsIDE5NSwgMTUyO1xuICAtLWNhbWVsLTUwOiAyNDQsIDE4MywgMTMyO1xuICAvLyBUZWFsXG4gIC0tdGVhbC0xMDogMjMxLCAyNDMsIDI0MTtcbiAgLS10ZWFsLTIwOiAyMTUsIDIzNSwgMjMyO1xuICAtLXRlYWwtMzA6IDE5NSwgMjI0LCAyMjA7XG4gIC0tdGVhbC00MDogMTc1LCAyMTQsIDIwOTtcbiAgLS10ZWFsLTUwOiAxMzUsIDE5NCwgMTg2O1xuICAvLyBTcHJpbmdcbiAgLS1zcHJpbmctMTA6IDE3OCwgMjIxLCAyMTE7XG4gIC0tc3ByaW5nLTIwOiAxMzksIDIwNCwgMTg5O1xuICAtLXNwcmluZy0zMDogMTAwLCAxODcsIDE2NztcbiAgLS1zcHJpbmctNDA6IDYyLCAxNzAsIDE0NTtcbiAgLS1zcHJpbmctNTA6IDIzLCAxNTMsIDEyMztcbiAgLy8gTGFnb29uXG4gIC0tbGFnb29uLTEwOiAyMDksIDIzOCwgMjQwO1xuICAtLWxhZ29vbi0yMDogMTc4LCAyMjcsIDIyOTtcbiAgLS1sYWdvb24tMzA6IDEzOSwgMjEzLCAyMTY7XG4gIC0tbGFnb29uLTQwOiAxMDEsIDIwMCwgMjA0O1xuICAtLWxhZ29vbi01MDogMjQsIDE3MiwgMTc4O1xuICAvLyBTYWxtb25cbiAgLS1zYWxtb24tMTA6IDI1NSwgMjI3LCAyMjQ7XG4gIC0tc2FsbW9uLTIwOiAyNTUsIDIwOCwgMjAzO1xuICAtLXNhbG1vbi0zMDogMjU1LCAxODQsIDE3NztcbiAgLS1zYWxtb24tNDA6IDI1NSwgMTYxLCAxNTI7XG4gIC0tc2FsbW9uLTUwOiAyNTUsIDExNCwgMTAwO1xuICAvLyBMYXZlbmRlclxuICAtLWxhdmVuZGVyLTEwOiAyMzcsIDIyNiwgMjUxO1xuICAtLWxhdmVuZGVyLTIwOiAyMjUsIDIwNywgMjQ4O1xuICAtLWxhdmVuZGVyLTMwOiAyMTAsIDE4MiwgMjQ0O1xuICAtLWxhdmVuZGVyLTQwOiAxOTYsIDE1OCwgMjQwO1xuICAtLWxhdmVuZGVyLTUwOiAxNjYsIDExMCwgMjMzO1xuICAtLWxhdmVuZGVyLTYwOiAyNDYsIDI0MCwgMjU1O1xuICAvLyBDcmltc29uXG4gIC0tY3JpbXNvbi0xMDogMjU1LCAyNDgsIDI0NztcbiAgLS1jcmltc29uLTIwOiAyNTAsIDIxMywgMjE1O1xuICAtLWNyaW1zb24tMzA6IDI0MSwgMTU1LCAxNjA7XG4gIC0tY3JpbXNvbi00MDogMjI3LCA3NywgOTE7XG4gIC0tY3JpbXNvbi01MDogMjA5LCAwLCAzMDtcblxuICAvLyBQYXN0ZWwgY29sb3JzXG4gIC0tZWdnc2hlbGw6IDI1NSwgMjUzLCAyMzE7XG4gIC0tbWludDogMjM4LCAyNDksIDI0NTtcbiAgLS1yb3NlOiAyNTUsIDI0MSwgMjQwO1xuICAtLXBhcGVyOiAyNDYsIDI0NywgMjUyO1xufVxuIiwiLy90YWlsd2luZFxuQGltcG9ydCAnfnRhaWx3aW5kY3NzL2Jhc2UnO1xuQGltcG9ydCAnfnRhaWx3aW5kY3NzL2NvbXBvbmVudHMnO1xuQGltcG9ydCAnfnRhaWx3aW5kY3NzL3V0aWxpdGllcyc7XG5cbi8vIEFic3RyYWN0c1xuQGltcG9ydCAnYWJzdHJhY3RzL3ZhcmlhYmxlcyc7XG5cbi8vIGxheW91dHNcbkBpbXBvcnQgJ2xheW91dHMvaGVhZGVyJztcbkBpbXBvcnQgJ2xheW91dHMvbWFpbic7XG5AaW1wb3J0ICdsYXlvdXRzL2Zvb3Rlcic7XG5AaW1wb3J0ICdsYXlvdXRzL2FjdGl2aXR5JztcbkBpbXBvcnQgJ2xheW91dHMvc2V0dGluZ19wYWdlJztcbkBpbXBvcnQgJ2xheW91dHMvX3dlYnBvcnRhbHBhZ2VzJztcblxuLy8gYmFzZVxuQGltcG9ydCAnYmFzZS90eXBvZ3JhcGh5JztcblxuLy8gY29tcG9uZW50XG5AaW1wb3J0ICdjb21wb25lbnQvYnV0dG9uJztcbkBpbXBvcnQgJ2NvbXBvbmVudC9oYW1idXJnZXInO1xuQGltcG9ydCAnY29tcG9uZW50L2lucHV0JztcbkBpbXBvcnQgJ2NvbXBvbmVudC90YWJsZSc7XG5AaW1wb3J0ICdjb21wb25lbnQvZm9ybXMnO1xuQGltcG9ydCAnY29tcG9uZW50L3BhZ2luYXRpb24nO1xuQGltcG9ydCAnY29tcG9uZW50L292ZXJsYXknO1xuQGltcG9ydCAnY29tcG9uZW50L3NlbGVjdDInO1xuQGltcG9ydCAnY29tcG9uZW50L3NpZGViYXItaWNvbic7XG5cbi8vdmVuZG9yIG92ZXJyaWRlc1xuQGltcG9ydCAndmVuZG9yLW92ZXJyaWRlcy9tdWx0aXNlbGVjdCc7XG5AaW1wb3J0ICd2ZW5kb3Itb3ZlcnJpZGVzL3plbmRleCc7XG5AaW1wb3J0ICd2ZW5kb3Itb3ZlcnJpZGVzL192dWUtZGF0ZXBpY2tlcic7XG5cbmh0bWwge1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICBvcGFjaXR5OiAxO1xuICBkaXNwbGF5OiBibG9jaztcbn1cbiIsIkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XG4gIC53cmFwcGVyOjphZnRlciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDI5MnB4O1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnL2ltYWdlcy9tYXJxdWUtd2hpdGUucG5nJyk7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAxMDAlIDE2LjUlO1xuICAgIGJhY2tncm91bmQtc2l6ZTogNzAlO1xuICAgIG9wYWNpdHk6IDAuMztcbiAgICBjb250ZW50OiAnJztcbiAgfVxufVxuLmhlYWRlciB7XG4gIG1heC13aWR0aDogMTE2NnB4O1xuICBtYXJnaW46IGF1dG87XG59XG4ubmF2X19hY3RpdmU6OmFmdGVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDRweDtcbiAgQGFwcGx5IGJnLXR1cnF1b2lzZTtcbiAgY29udGVudDogJyc7XG59XG4ubGlua3NfX2FjdGl2ZSB7XG4gIEBhcHBseSB0ZXh0LWJsYWNrO1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cbi5uYXZfX2xpbmtzIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nOiAyMHB4IDhweDtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuXG4gIGE6aG92ZXIge1xuICAgIEBhcHBseSB0ZXh0LW4tNTA7XG4gIH1cblxuICAucmVhZF9fbW9yZSB7XG4gICAgQGFwcGx5IHJvdW5kZWQtc20gYmctYmx1ZWNvcmFsIHRleHQtY2VudGVyIHRleHQteHMgdGV4dC13aGl0ZTtcbiAgICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gICAgcGFkZGluZzogOHB4IDE4cHg7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIEBhcHBseSBiZy1uLTUwIHRleHQtd2hpdGU7XG4gICAgfVxuICB9XG5cbiAgYSB7XG4gICAgQGFwcGx5IHRleHQtd2hpdGU7XG4gICAgcGFkZGluZy1ib3R0b206IDI0cHg7XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyODBweCkge1xuICAubmF2X19saW5rcyB7XG4gICAgcGFkZGluZzogMHB4IDhweCAyMHB4O1xuXG4gICAgYSB7XG4gICAgICBAYXBwbHkgdGV4dC1uLTUwO1xuICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgIH1cblxuICAgICY6OmFmdGVyIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGJvdHRvbTogMDtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogNHB4O1xuICAgICAgQGFwcGx5IGJnLXR1cnF1b2lzZTtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMCwgMSk7XG4gICAgICB0cmFuc2l0aW9uOiAwLjNzO1xuICAgICAgY29udGVudDogJyc7XG4gICAgfVxuICAgICY6aG92ZXI6OmFmdGVyIHtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSwgMSk7XG4gICAgfVxuICB9XG59XG4uZHJvcGRvd25fX2NvbnRlbnQge1xuICBAYXBwbHkgaW52aXNpYmxlIGFic29sdXRlIHJpZ2h0LTAgdG9wLTcgaGlkZGVuIGgtNTYgYmctd2hpdGUgcHktNyBweC04IG9wYWNpdHktMCBkdXJhdGlvbi0zMDAgeGw6YmxvY2s7XG4gIHdpZHRoOiA0MjRweDtcbiAgaGVpZ2h0OiBhdXRvO1xuICBsaW5lLWhlaWdodDogMjJweDtcbiAgYm94LXNoYWRvdzogMHB4IDhweCAxNnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMik7XG59XG4uZHJvcGRvd246aG92ZXIge1xuICAuZHJvcGRvd25fX2NvbnRlbnQge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMnB4KTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbn1cbi5uYXZfX2xpc3Qge1xuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMjgwcHgpIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDMwMHB4O1xuICAgIGhlaWdodDogMTAwdmg7XG4gICAgcGFkZGluZzogMzBweDtcbiAgICBAYXBwbHkgYmctYmx1ZWNvcmFsIHRleHQtd2hpdGU7XG4gICAgZm9udC1zaXplOiAxNnB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTA1JSk7XG4gICAgdHJhbnNpdGlvbjogMC4zcztcbiAgICB6LWluZGV4OiAxMTA7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygtMHB4IDBweCA4cHggIzAwMCk7XG5cbiAgICAuYWN0aXZlIHtcbiAgICAgIGEge1xuICAgICAgICBAYXBwbHkgdGV4dC13aGl0ZTtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMjRweDtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICBAYXBwbHkgdGV4dC13aGl0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgaGVpZ2h0OiA0cHg7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLCAxKTtcbiAgICAgICAgICB0cmFuc2l0aW9uOiAwLjNzO1xuICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgIEBhcHBseSBiZy10dXJxdW9pc2U7XG4gICAgICAgIH1cbiAgICAgICAgJjpob3Zlcjo6YWZ0ZXIge1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSwgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0NDBweCkge1xuICAgIHdpZHRoOiAyNTBweDtcbiAgICBwYWRkaW5nOiAyMHB4O1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgfVxufVxuXG4jbWVudS1vdmVybGF5IHtcbiAgQGFwcGx5IHhsOmhpZGRlbjtcbn1cblxuI2FjdGl2aXR5LW1lbnUtb3ZlcmxheSB7XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDE0MjBweCkge1xuICAgIEBhcHBseSBoaWRkZW47XG4gIH1cbn1cblxuLm1lbnUtb3ZlcmxheSB7XG4gIHBvc2l0aW9uOiBmaXhlZCAhaW1wb3J0YW50O1xuICB6LWluZGV4OiAxMDA7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xufVxuLmFjdGl2aXR5LW5hdi1tZW51IHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTQyMHB4KSB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAzMDBweDtcbiAgICBoZWlnaHQ6IDEwMHZoO1xuICAgIHBhZGRpbmc6IDEwMHB4IDMwcHg7XG4gICAgQGFwcGx5IGJnLWJsdWVjb3JhbCB0ZXh0LXdoaXRlO1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDUlKTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoN3B4KTtcbiAgICB0cmFuc2l0aW9uOiAwLjNzO1xuICAgIHotaW5kZXg6IDEwMDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMHB4IDBweCA4cHggIzAwMCk7XG5cbiAgICAuYWN0aXZpdHktbmF2LWxpc3Qge1xuICAgICAgQGFwcGx5IGZsZXggZmxleC1jb2wgZ2FwLXktNCBwbC00IHRleHQtc207XG4gICAgICAubmF2X19wb2ludGVyLFxuICAgICAgLm5hdl9fcG9pbnRlci1ob3ZlciB7XG4gICAgICAgIEBhcHBseSByZWxhdGl2ZTtcbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgQGFwcGx5IGFic29sdXRlIGJvdHRvbS0wIGxlZnQtMCBoLTEgdy1mdWxsIHNjYWxlLXgtMCBzY2FsZS15LTEwMCByb3VuZGVkLXNtIGJnLXR1cnF1b2lzZSB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi01MDA7XG5cbiAgICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxNDIwcHgpIHtcbiAgICAgICAgICAgIEBhcHBseSAtYm90dG9tLTIgIGgtMSB3LWZ1bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlcjphZnRlciB7XG4gICAgICAgICAgQGFwcGx5IHNjYWxlLXgtMTAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAubmF2X19wb2ludGVyOmFmdGVyIHtcbiAgICAgICAgQGFwcGx5IHNjYWxlLXgtMTAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5hY3Rpdml0eS1uYXYtbGlzdC5hY3Rpdml0eS1saXN0IHtcbiAgICAgIC5uYXZfX3BvaW50ZXIsXG4gICAgICAubmF2X19wb2ludGVyLWhvdmVyIHtcbiAgICAgICAgQGFwcGx5IHJlbGF0aXZlO1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICBjb250ZW50OiAnJztcblxuICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDE0MjBweCkge1xuICAgICAgICAgICAgQGFwcGx5IHRvcC0wIC1sZWZ0LTQgaC00IHctMTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyOmFmdGVyIHtcbiAgICAgICAgICBAYXBwbHkgc2NhbGUteC0xMDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC5uYXZfX3BvaW50ZXI6YWZ0ZXIge1xuICAgICAgICBAYXBwbHkgc2NhbGUteC0xMDA7XG4gICAgICB9XG4gICAgfVxuICAgIC5hY3Rpdml0eS1uYXYtbGlzdC5sYW5ndWFnZS1uYXYtbGlzdCB7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAyOHB4O1xuICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNCk7XG5cbiAgICAgIC5uYXZfX3BvaW50ZXIsXG4gICAgICAubmF2X19wb2ludGVyLWhvdmVyIHtcbiAgICAgICAgQGFwcGx5IHJlbGF0aXZlO1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICBAYXBwbHkgYWJzb2x1dGUgYm90dG9tLTAgbGVmdC0wIGgtMSB3LWZ1bGwgc2NhbGUteC0wIHNjYWxlLXktMTAwIHJvdW5kZWQtc20gYmctdHVycXVvaXNlIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMDtcblxuICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDE0MjBweCkge1xuICAgICAgICAgICAgQGFwcGx5IC1ib3R0b20tMiAgaC0xIHctZnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyOmFmdGVyIHtcbiAgICAgICAgICBAYXBwbHkgc2NhbGUteC0xMDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC5uYXZfX3BvaW50ZXI6YWZ0ZXIge1xuICAgICAgICBAYXBwbHkgc2NhbGUteC0xMDA7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4ubmF2LWFjdGl2ZSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7XG59XG5cbi5uYXYge1xuICAmX19wb2ludGVyLFxuICAmX19wb2ludGVyLWhvdmVyIHtcbiAgICBAYXBwbHkgcmVsYXRpdmU7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIEBhcHBseSBhYnNvbHV0ZSBib3R0b20tMCBsZWZ0LTAgaC0xIHctZnVsbCBzY2FsZS14LTAgc2NhbGUteS0xMDAgcm91bmRlZC1zbSBiZy10dXJxdW9pc2UgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNTAwO1xuXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxNDIwcHgpIHtcbiAgICAgICAgQGFwcGx5IC1sZWZ0LTQgaC00IHctMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOmhvdmVyOmFmdGVyIHtcbiAgICAgIEBhcHBseSBzY2FsZS14LTEwMDtcbiAgICB9XG4gIH1cblxuICAmX19wb2ludGVyOmFmdGVyIHtcbiAgICBAYXBwbHkgc2NhbGUteC0xMDA7XG4gIH1cbn1cblxuLmFjdGl2aXR5LW5hdiB7XG4gIEBhcHBseSBmbGV4IGdyb3c7XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTQyMHB4KSB7XG4gICAgQGFwcGx5IGp1c3RpZnktZW5kO1xuICB9XG59XG5cbi5sYW5ndWFnZS1ob3Zlcjpob3ZlciB7XG4gIEBhcHBseSBuYXZfX2FjdGl2ZSBsaW5rc19fYWN0aXZlO1xuICBhIHtcbiAgICBjb2xvcjogd2hpdGUgIWltcG9ydGFudDtcbiAgfVxufVxuIiwiLm1haW4ge1xuICAmX19jb250YWluZXIge1xuICAgIG1heC13aWR0aDogMTE2NnB4O1xuICAgIG1hcmdpbjogYXV0bztcbiAgfVxuICAubGVmdF9fY29udGFpbmVyIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoXG4gICAgICAxNjBkZWcsXG4gICAgICByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMiksXG4gICAgICB0cmFuc3BhcmVudFxuICAgICk7XG5cbiAgICBhIHtcbiAgICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIEBhcHBseSBib3JkZXItYi0yIGJvcmRlci10dXJxdW9pc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC5yaWdodCB7XG4gICAgd2lkdGg6IDkzJTtcbiAgICBib3gtc2hhZG93OiAwcHggMjBweCA0MHB4IDIwcHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcblxuICAgICZfX2NvbnRhaW5lciB7XG4gICAgICBoMiB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiA2MHB4O1xuICAgICAgfVxuICAgIH1cblxuICAgICZfX2NvbnRlbnQge1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICBib3gtc2hhZG93OiAwcHggMHB4IDI1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICAgIEBhcHBseSBmbGV4IGl0ZW1zLWNlbnRlciByb3VuZGVkLWxnIGJnLXdoaXRlIHB5LTYgcHgtNTtcblxuICAgICAgLnJpZ2h0X19pY29uIHtcbiAgICAgICAgQGFwcGx5IHRleHQtbGFnb29uLTUwO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAtOHB4O1xuICAgICAgfVxuICAgICAgLnJpZ2h0X19hcnJvdyB7XG4gICAgICAgIEBhcHBseSB0ZXh0LXdoaXRlO1xuICAgICAgfVxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLXR1cnF1b2lzZSBiZy10dXJxdW9pc2UgYmctb3BhY2l0eS0xMDtcbiAgICAgICAgYm94LXNoYWRvdzogMHB4IDBweCAyNXB4IDBweCB0cmFuc3BhcmVudDtcblxuICAgICAgICAucmlnaHRfX2ljb24ge1xuICAgICAgICAgIHN2ZyB7XG4gICAgICAgICAgICBAYXBwbHkgZmlsbC1sYWdvb24tNTAgdGV4dC13aGl0ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLnJpZ2h0X19hcnJvdyB7XG4gICAgICAgICAgQGFwcGx5IGZpbGwtd2hpdGUgdGV4dC10dXJxdW9pc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTM2NnB4KSB7XG4gICAgLmpvaW4tbm93IHtcbiAgICAgIEBhcHBseSBweC0yMDtcblxuICAgICAgLnJpZ2h0X19jb250ZW50IHtcbiAgICAgICAgd2lkdGg6IDQyM3B4O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgaW5wdXQge1xuICAgIHBhZGRpbmctbGVmdDogNjBweDtcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC5sZWZ0IHtcbiAgICBoZWlnaHQ6IDY0OXB4O1xuXG4gICAgJl9fY29udGFpbmVyIHtcbiAgICAgIHdpZHRoOiAzODZweDtcbiAgICB9XG4gIH1cbiAgLnJpZ2h0IHtcbiAgICBoZWlnaHQ6IDY0OXB4O1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjhweCkge1xuICAucmlnaHQge1xuICAgIG1hcmdpbi10b3A6IC0yNjVweDtcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDIwcHgpIHtcbiAgLnJpZ2h0X19pY29uIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIC5kZXRhaWxzIHtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgfVxufVxuOjotd2Via2l0LXNjcm9sbGJhciB7XG4gIHdpZHRoOiA4cHg7XG4gIGhlaWdodDogOHB4O1xufVxuOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gIEBhcHBseSByb3VuZGVkLWxnIGJnLW4tMjAgaG92ZXI6Ymctbi0zMDtcbn1cbm1haW4ge1xuICBkaXNwbGF5OiBncmlkOyAvLyBMaW5lIDFcbiAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBhdXRvIDFmciBhdXRvOyAvLyBMaW5lIDJcbiAgbWluLWhlaWdodDogY2FsYygxMDB2aCAtIDQ2NXB4KTsgLy8gTGluZSAzXG59XG4uYWN0aXZpdGllc19fc2lkZWJhciB7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICBAbWVkaWEgKG1heC13aWR0aDogNzAwcHgpIHtcbiAgICB3aWR0aDogMjIwcHggIWltcG9ydGFudDtcbiAgfVxufVxuYm9keS5kaXNhYmxlLXNjcm9sbCB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGhlaWdodDogMTBweDtcbn1cbi8vIGJvZHkge1xuLy8gICBwYWRkaW5nLXRvcDogNjBweDtcbi8vIH1cblxuLy8gYm9keS5uby1uYXYge1xuLy8gICBwYWRkaW5nLXRvcDogMHB4ICFpbXBvcnRhbnQ7XG4vLyB9XG5odG1sIHtcbiAgc2Nyb2xsLXBhZGRpbmctdG9wOiAyMHB4OyAvKiBoZWlnaHQgb2Ygc3RpY2t5IGhlYWRlciAqL1xufVxuIiwiLmZvb3Rlcl9fY29udGFpbmVyIHtcbiAgbWF4LXdpZHRoOiAxMTY2cHg7XG4gIG1hcmdpbjogYXV0bztcblxuICAuZm9vdGVyX19saW5rcyB7XG4gICAgYSB7XG4gICAgICBAYXBwbHkgYm9yZGVyLWItMiBib3JkZXItdHJhbnNwYXJlbnQgdGV4dC1uLTIwO1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgQGFwcGx5IGJvcmRlci1iLTIgYm9yZGVyLXR1cnF1b2lzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi5lbGxpcHNpcyB7XG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAtd2Via2l0LWxpbmUtY2xhbXA6IDM7XG4gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG59XG4uZWxsaXBzaXNfX3RpdGxlIHtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIC13ZWJraXQtbGluZS1jbGFtcDogMjtcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgQGFwcGx5IHJlbGF0aXZlO1xufVxuXG4uZWxsaXBzaXNfX3RpdGxlLS1ob3ZlciB7XG4gIEBhcHBseSBpbnZpc2libGUgYWJzb2x1dGUgICBsZWZ0LTAgdG9wLWZ1bGwgei0yMCBtYXgtdy1tZCBzcGFjZS15LTEuNSByb3VuZGVkIGJnLWVnZ3NoZWxsIHAtNCB0ZXh0LWxlZnQgdGV4dC14cyBmb250LW5vcm1hbCB0ZXh0LW4tNDAgb3BhY2l0eS0wIGR1cmF0aW9uLTIwMDtcbiAgYm94LXNoYWRvdzogMHB4IDRweCA0MHB4IHJnYigwIDAgMCAvIDEwJSk7XG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0O1xuICBtYXgtaGVpZ2h0OiAxMjBweDtcbiAgb3ZlcmZsb3c6IGF1dG87XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4uZWxsaXBzaXM6aG92ZXIsXG4uZWxsaXBzaXNfX3RpdGxlOmhvdmVyLFxuLmJyZWFkY3J1bWJfX3RpdGxlOmhvdmVyIHtcbiAgLmVsbGlwc2lzX190aXRsZS0taG92ZXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg1cHgpO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuQG1lZGlhIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICB0ciB7XG4gICAgLmVsbGlwc2lzX190aXRsZS0taG92ZXIge1xuICAgICAgQGFwcGx5IGludmlzaWJsZSBhYnNvbHV0ZSBsZWZ0LTEvMiAgLXRvcC0yIHotMjAgbWF4LXctbWQgc3BhY2UteS0xLjUgcm91bmRlZCBiZy1lZ2dzaGVsbCBwLTQgdGV4dC1sZWZ0IHRleHQteHMgZm9udC1ub3JtYWwgdGV4dC1uLTQwIG9wYWNpdHktMCAgZHVyYXRpb24tMjAwIGxnOmxlZnQtMCBsZzp0b3AtZnVsbDtcbiAgICAgIGJveC1zaGFkb3c6IDBweCA0cHggNDBweCByZ2IoMCAwIDAgLyAxMCUpO1xuICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQ7XG4gICAgICBtYXgtaGVpZ2h0OiAxMjBweDtcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICBvdmVyZmxvdzogYXV0bztcbiAgICB9XG5cbiAgICAuZWxsaXBzaXM6aG92ZXIsXG4gICAgLmVsbGlwc2lzX190aXRsZTpob3ZlciB7XG4gICAgICAuZWxsaXBzaXNfX3RpdGxlLS1ob3ZlciB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg1cHgpO1xuICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuLmJyZWFkY3J1bWJfX3RpdGxlIHtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIC13ZWJraXQtbGluZS1jbGFtcDogMTtcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgQGFwcGx5IHJlbGF0aXZlO1xufVxuXG4vLyBhY3Rpdml0eSBkZXRhaWxcbi5hY3Rpdml0aWVzX19jb250ZW50LS1lbGVtZW50IHtcbiAgQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gICAgbWF4LXdpZHRoOiBjYWxjKDEwMHZ3IC0gMzBweCk7XG4gIH1cbiAgQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gICAgLmFkZF9pbmRpY2F0b3Ige1xuICAgICAgbWF4LXdpZHRoOiA0MDBweDtcbiAgICB9XG4gIH1cbn1cblxuLmFjdGl2aXRpZXNfX2NvbnRlbnQtLWVsZW1lbnQgZGl2IHtcbiAgLmVkaXQtYnV0dG9uLFxuICAuZGVsZXRlLWJ1dHRvbiB7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTtcblxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAxMDI0cHgpIHtcbiAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAvLyBvdXRsaW5lOiAxcHggc29saWQgcmVkICFpbXBvcnRhbnQ7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgfVxuXG4gIC5lZGl0LWJ1dHRvbiB7XG4gICAgb3JkZXI6IDI7XG4gIH1cblxuICAuZGVsZXRlLWJ1dHRvbiB7XG4gICAgb3JkZXI6IDE7XG4gIH1cblxuICAmOmhvdmVyIC5lZGl0LWJ1dHRvbixcbiAgJjpob3ZlciAuZGVsZXRlLWJ1dHRvbiB7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgLmVsZW1lbnRzLXN2ZyB7XG4gICAgQGFwcGx5IG1yLTEuNSB0ZXh0LXhsIHRleHQtYmx1ZWNvcmFsO1xuICB9XG59XG4uZGVzY3JpcHRpb24ge1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiA1MDBweDtcbn1cblxuLmVsZW1lbnRzLWRldGFpbCB7XG4gIEBhcHBseSBmbGV4IGZsZXgtY29sIHRleHQteHMgdGV4dC1uLTUwO1xuXG4gIC8vIHRhYmxlIHtcbiAgLy8gICBmb250LXNpemU6IGluaGVyaXQ7XG5cbiAgLy8gfVxuXG4gICYgKiB7XG4gICAgQGFwcGx5IGxlYWRpbmctNTtcbiAgfVxuXG4gIHRkOm50aC1jaGlsZCgxKSB7XG4gICAgQGFwcGx5IHRleHQtbi00MDtcbiAgICB3aWR0aDogMTAwcHg7XG4gIH1cbiAgJi53aWRlcjpub3QoLnNtYWxsKSB7XG4gICAgdGQ6bnRoLWNoaWxkKDEpIHtcbiAgICAgIEBhcHBseSB0ZXh0LW4tNDA7XG4gICAgICB3aWR0aDogMTkwcHg7XG4gICAgfVxuICB9XG5cbiAgdGQ6bnRoLWNoaWxkKDIpIHtcbiAgICBAYXBwbHkgZmxleCBmbGV4LWNvbCBwbC0yIHRleHQteHMgdGV4dC1uLTUwO1xuICB9XG4gIC5tdWx0aWxpbmUge1xuICAgIEBhcHBseSBpdGVtcy1zdGFydDtcbiAgfVxuXG4gIHRkIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICB9XG5cbiAgdGFibGUgPiB0Ym9keSA+IHRyOm5vdCg6bGFzdC1jaGlsZCkgPiB0ZCB7XG4gICAgQGFwcGx5IHBiLTM7XG4gIH1cbn1cbi52YWx1ZSB7XG4gIEBhcHBseSBmbGV4IHNwYWNlLXgtMSB0ZXh0LW4tNTA7XG59XG4uY2F0ZWdvcnkge1xuICBAYXBwbHkgbWItMiB0ZXh0LXNtIGZvbnQtYm9sZCB0ZXh0LW4tNTA7XG59XG4ubGFuZ3VhZ2Uge1xuICBAYXBwbHkgdy1bMzAwcHhdIHRleHQteHMgaXRhbGljIHRleHQtbi0zMCAgc206dy1hdXRvO1xufVxuLmRlc2NyaXB0aW9uLWNvbnRlbnQge1xuICBAYXBwbHkgdy1bMzAwcHhdIHNtOnctYXV0bztcbn1cbi50aXRsZS1ib3JkZXI6OmFmdGVyIHtcbiAgd2lkdGg6IDk1MHB4O1xuICBjb250ZW50OiAnJztcbiAgQGFwcGx5IGFic29sdXRlIHRvcC0yIGxlZnQtNCBoLXB4IGJnLW4tMzA7XG59XG4uZWxlbWVudHMtdGl0bGU6OmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIEBhcHBseSBoLXB4IGdyb3cgYmctbi0zMDtcbn1cbi50b3Age1xuICBtYXJnaW4tdG9wOiAxcHg7XG59XG5cbi5tb2RhbCB7XG4gIHA6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMjRweDtcbiAgfVxufVxuXG4uZnJlZXplIHtcbiAgY29sb3I6ICNhNmI1YmEgIWltcG9ydGFudDtcbiAgYm9yZGVyLWNvbG9yOiAjYTZiNWJhICFpbXBvcnRhbnQ7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lICFpbXBvcnRhbnQ7XG5cbiAgLmFkZF9tb3JlOjphZnRlciB7XG4gICAgYm9yZGVyLWNvbG9yOiAjYTZiNWJhO1xuICB9XG4gIC5hZGRfbW9yZTo6YmVmb3JlIHtcbiAgICBib3JkZXItY29sb3I6ICNhNmI1YmE7XG4gIH1cblxuICBidXR0b24gPiBpIHtcbiAgICBiYWNrZ3JvdW5kOiB1cmwoJy4uLy4uL2ltYWdlcy9hZGQtbW9yZS1ncmV5LnN2ZycpIG5vLXJlcGVhdCBjZW50ZXIgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5oZWxwIHN2ZyBwYXRoIHtcbiAgICBjb2xvcjogI2E2YjViYSAhaW1wb3J0YW50O1xuICAgIGZpbGw6IGN1cnJlbnRDb2xvcjtcbiAgICBzdHJva2U6IGN1cnJlbnRDb2xvcjtcbiAgfVxufVxuLmZyZWV6ZSAqLFxuKjo6cGxhY2Vob2xkZXIsXG4uZnJlZXplIHN2ZyB7XG4gIGNvbG9yOiAjYTZiNWJhICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1jb2xvcjogI2E2YjViYSAhaW1wb3J0YW50O1xuICBwb2ludGVyLWV2ZW50czogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4uZnJlZXplICsgLmFkZF90b19wYXJlbnQge1xuICBjb2xvcjogI2E2YjViYSAhaW1wb3J0YW50O1xuICBwb2ludGVyLWV2ZW50czogbm9uZSAhaW1wb3J0YW50O1xuXG4gIGkge1xuICAgIGJhY2tncm91bmQ6IHVybCgnLi4vLi4vaW1hZ2VzL2FkZC1tb3JlLWdyZXkuc3ZnJykgbm8tcmVwZWF0IGNlbnRlcjtcbiAgfVxufVxuXG4uZnJlZXplICsgLmFkZF90b19wYXJlbnQ6OmJlZm9yZSB7XG4gIGJvcmRlci1jb2xvcjogI2E2YjViYSAhaW1wb3J0YW50O1xufVxuXG4uZnJlZXplICsgLmFkZF90b19wYXJlbnQ6OmFmdGVyIHtcbiAgYm9yZGVyLWNvbG9yOiAjYTZiNWJhICFpbXBvcnRhbnQ7XG59XG4iLCIuc2VjdGlvbi13cmFwcGVyIHtcbiAgQGFwcGx5IG14LTMgYmctcGFwZXIgc206bXgtMTA7XG5cbiAgLnNldHRpbmcge1xuICAgIG1heC13aWR0aDogMTAwMHB4O1xuICAgIGhlaWdodDogY2FsYygxMDB2aCAtIDgwcHgpO1xuICAgIG1hcmdpbjogYXV0bztcbiAgICBwYWRkaW5nOiAxNnB4IDBweCAyNHB4O1xuXG4gICAgJl9fY29udGFpbmVyIHtcbiAgICAgIEBhcHBseSByZWxhdGl2ZSByb3VuZGVkLWxnIGJnLXdoaXRlIHAtNyBtZDpweS0xNCBtZDpweC0yMDtcbiAgICAgIG1heC1oZWlnaHQ6IDY1dmg7XG5cbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ0MHB4KSB7XG4gICAgICAgIEBhcHBseSBweC0zO1xuICAgICAgfVxuXG4gICAgICAudnVlX19zZWxlY3Qge1xuICAgICAgICBtYXJnaW46IDhweCAwcHg7XG4gICAgICB9XG4gICAgICAucmVnaXN0cnlfX2luZm8ge1xuICAgICAgICBAYXBwbHkgbXktNCBmbGV4IGp1c3RpZnktYmV0d2VlbiBib3JkZXItYiBib3JkZXItYi1uLTIwO1xuICAgICAgfVxuICAgICAgcCB7XG4gICAgICAgIEBhcHBseSB0ZXh0LXhzIGxlYWRpbmctNSB0ZXh0LW4tNDA7XG4gICAgICB9XG4gICAgICAudGV4dCB7XG4gICAgICAgIEBhcHBseSBtYi04IHRleHQtc207XG4gICAgICB9XG4gICAgICBsYWJlbCB7XG4gICAgICAgIEBhcHBseSB0ZXh0LXhzIHRleHQtbi01MDtcbiAgICAgIH1cbiAgICB9XG4gICAgLnJlZ2lzdGVyIHtcbiAgICAgIEBhcHBseSByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItbi0zMCBwLTQgc206cC02O1xuXG4gICAgICAmX19jb250YWluZXIge1xuICAgICAgICBAYXBwbHkgZ3JpZCBnYXAtMyBzbTpnYXAtNiBsZzpncmlkLWNvbHMtMjtcblxuICAgICAgICAudGFnX19jb3JyZWN0IHtcbiAgICAgICAgICBAYXBwbHkgYWJzb2x1dGUgcmlnaHQtMiB0b3AtMTAgZmxleCBoLTUgY3Vyc29yLXBvaW50ZXIgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQgYmctc3ByaW5nLTQwIHRleHQtY2VudGVyIHRleHQteHMgdGV4dC13aGl0ZTtcbiAgICAgICAgICB3aWR0aDogNTBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC50YWdfX2luY29ycmVjdCB7XG4gICAgICAgICAgQGFwcGx5IGFic29sdXRlIHJpZ2h0LTIgdG9wLTEwIGZsZXggaC01IGN1cnNvci1wb2ludGVyIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkIGJnLXNhbG1vbi01MCB0ZXh0LWNlbnRlciB0ZXh0LXhzIHRleHQtd2hpdGU7XG4gICAgICAgICAgd2lkdGg6IDYxcHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC52ZXJpZnktYnRuIHtcbiAgICAgICAgd2lkdGg6IDEyMHB4O1xuICAgICAgICBtYXJnaW4tdG9wOiAxNHB4O1xuICAgICAgICBAYXBwbHkgZmxleCBoLTEwIGp1c3RpZnktY2VudGVyO1xuICAgICAgfVxuICAgIH1cbiAgICAucmVnaXN0ZXJfX2lucHV0IHtcbiAgICAgIEBhcHBseSBtdC0yIHctZnVsbCBib3JkZXIgYm9yZGVyLW4tMzAgb3V0bGluZS1ub25lIGR1cmF0aW9uLTMwMDtcbiAgICAgIHBhZGRpbmc6IDEzcHggMTZweDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcblxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDQwcHgpIHtcbiAgICAgICAgcGFkZGluZzogMTBweDtcbiAgICAgIH1cblxuICAgICAgJjo6cGxhY2Vob2xkZXIge1xuICAgICAgICBAYXBwbHkgdGV4dC1zbSB0ZXh0LW4tNDA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xuICAgICAgfVxuICAgICAgJjpmb2N1cyB7XG4gICAgICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLW4tNTAgYmctbi0xMDtcbiAgICAgIH1cbiAgICAgICY6Zm9jdXM6OnBsYWNlaG9sZGVyIHtcbiAgICAgICAgQGFwcGx5IHRleHQtbi01MDtcbiAgICAgIH1cbiAgICB9XG4gICAgLmVycm9yX19pbnB1dCB7XG4gICAgICBAYXBwbHkgYm9yZGVyIGJvcmRlci1jcmltc29uLTUwO1xuICAgIH1cbiAgfVxufVxuLnNhdmUtYnRuIHtcbiAgQGFwcGx5IHB4LTQ7XG59XG4uYnRuX19hY3RpdmUge1xuICBAYXBwbHkgZm9udC1ib2xkIHRleHQtd2hpdGU7XG59XG4iLCIuc21vb3RoIHtcbiAgYW5pbWF0aW9uOiBmYWRlSW5BbmltYXRpb24gZWFzZSAwLjNzO1xuICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiAxO1xufVxuXG5Aa2V5ZnJhbWVzIGZhZGVJbkFuaW1hdGlvbiB7XG4gIDAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbn1cbiIsImJvZHkge1xuICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gIEBhcHBseSBtaW4taC1zY3JlZW4gYmctcGFwZXI7XG59XG5cbmEge1xuICBjb2xvcjogcmdiKHZhcigtLWJsdWVjb3JhbCkpO1xuICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlO1xuXG4gICY6aG92ZXIge1xuICAgIGNvbG9yOiByZ2IodmFyKC0tc3ByaW5nLTUwKSk7XG4gIH1cbn1cblxuLmxlZnQge1xuICAmX190aXRsZSB7XG4gICAgZm9udC1zaXplOiAyN3B4O1xuICAgIHRleHQtc2hhZG93OiA0cHggNHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDEpO1xuXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gICAgICBmb250LXNpemU6IDMycHg7XG4gICAgfVxuICB9XG59XG5cbmgyIHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDQwcHgpIHtcbiAgICBAYXBwbHkgdGV4dC1oZWFkaW5nLTQ7XG4gIH1cbiAgQGFwcGx5IHRleHQtaGVhZGluZy01IGZvbnQtYm9sZCB0ZXh0LW4tNTAgbWQ6dGV4dC1oZWFkaW5nLTM7XG59XG5cbmg0IHtcbiAgQGFwcGx5IHRleHQtaGVhZGluZy00IGxlYWRpbmctbm9ybWFsO1xufVxuIiwiLy8gVHVycXVvaXNlIGJ1dHRvblxuLmJ0biB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIG91dGxpbmU6IG5vbmU7XG4gIEBhcHBseSBiZy10dXJxdW9pc2UgdGV4dC1uLTUwO1xuXG4gICY6aG92ZXIge1xuICAgIEBhcHBseSBiZy1ibHVlY29yYWw7XG4gICAgQGFwcGx5IHRleHQtd2hpdGU7XG5cbiAgICBzdmcge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDRweCk7XG4gICAgICB0cmFuc2l0aW9uOiAwLjNzO1xuICAgIH1cbiAgfVxufVxuXG4uYnRuLWJhY2sge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IDAuM3M7XG4gIEBhcHBseSB3LTI0IHRleHQtYmx1ZWNvcmFsO1xuXG4gIHN2ZyB7XG4gICAgdHJhbnNpdGlvbjogMC4zcztcbiAgfVxuXG4gICY6aG92ZXIge1xuICAgIHN2ZyB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTRweCk7XG4gICAgfVxuICB9XG59XG5cbi5idG4tbmV4dCB7XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XG4gICAgaGVpZ2h0OiA0OHB4O1xuICAgIHBhZGRpbmc6IDEzcHggMjRweDtcbiAgfVxuICBAYXBwbHkgdy0zNiBweS0yLjUgdGV4dC1uLTUwIHNtOnctNDA7XG5cbiAgc3ZnIHtcbiAgICBtYXJnaW4tbGVmdDogMTNweDtcbiAgICB0cmFuc2l0aW9uOiAwLjJzO1xuICB9XG59XG5cbi5nZXQtc3RhcnRlZC1idG4ge1xuICB3aWR0aDogMTg1cHg7XG59XG5cbi5yZXNldC1idG4ge1xuICBAYXBwbHkgbXQtNiBmbGV4IGp1c3RpZnktY2VudGVyIHJvdW5kZWQtbGcgYm9yZGVyLW5vbmUgYmctdHVycXVvaXNlIHRleHQtc20gZm9udC1ib2xkIHVwcGVyY2FzZSB0ZXh0LW4tNTAgb3V0bGluZS1ub25lIGR1cmF0aW9uLTIwMCBob3ZlcjpiZy1ibHVlY29yYWwgaG92ZXI6dGV4dC13aGl0ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6IDE2cHggOTRweDtcbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgLnJlc2V0LWJ0biB7XG4gICAgcGFkZGluZzogMThweCA5NHB4O1xuICB9XG59XG5cbnN2ZyB7XG4gIGhlaWdodDogMWVtO1xufVxuLmNoYXJ0LXdyYXBwZXIge1xuICBzdmcge1xuICAgIGhlaWdodDogYXV0bztcbiAgfVxufVxuXG4udnJwX193cmFwcGVyIHtcbiAgcCB7XG4gICAgQGFwcGx5IHRleHQtc20gbGVhZGluZy1ub3JtYWw7XG4gIH1cbiAgc3ZnIHtcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH1cbn1cblxuLmJ1dHRvbixcbmJ1dHRvbiB7XG4gIEBhcHBseSBmbGV4IGN1cnNvci1wb2ludGVyIGl0ZW1zLWNlbnRlciB0ZXh0LXhzIGxlYWRpbmctbm9ybWFsIHRyYWNraW5nLXRpZ2h0O1xuICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlO1xufVxuXG4vLyB0b29sdGlwIGJ1dHRvblxuLnRvb2x0aXAtYnRuIHtcbiAgQGFwcGx5IHJlbGF0aXZlIHRleHQtbi0zMDtcblxuICBidXR0b24ge1xuICAgIEBhcHBseSByb3VuZGVkLTN4bCBib3JkZXIgYm9yZGVyLXNvbGlkIGJvcmRlci1uLTMwIHB5LTEuNSBweC0yLjU7XG4gIH1cblxuICBzdmcge1xuICAgIEBhcHBseSBtci0xIHRleHQteHM7XG4gIH1cblxuICAmX19jb250ZW50IHtcbiAgICBAYXBwbHkgYWJzb2x1dGUgdG9wLWZ1bGwgbGVmdC0wIGhpZGRlbiB3LVszNTJweF07XG5cbiAgICAuY29udGVudCB7XG4gICAgICBAYXBwbHkgbXQtNiByb3VuZGVkIGJnLWVnZ3NoZWxsIHRleHQtbi01MDtcbiAgICAgIHBhZGRpbmc6IDE2cHggMzNweCAxNnB4IDE2cHg7XG4gICAgICBib3gtc2hhZG93OiAwcHggNHB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICAgIH1cblxuICAgIHAge1xuICAgICAgQGFwcGx5IG1iLTEuNSB0ZXh0LXhzIGxlYWRpbmctbm9ybWFsO1xuICAgIH1cbiAgfVxuXG4gICY6aG92ZXIgLnRvb2x0aXAtYnRuX19jb250ZW50IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuXG4gICY6aG92ZXIgYnV0dG9uIHtcbiAgICBAYXBwbHkgYm9yZGVyLXNwcmluZy01MCB0ZXh0LXNwcmluZy01MDtcbiAgfVxufVxuXG4vLyBwcmltYXJ5IGJ1dHRvblxuLnByaW1hcnktYnRuIHtcbiAgQGFwcGx5IGdhcC0xIHJvdW5kZWQgYmctYmx1ZWNvcmFsIHAtMyBmb250LWJvbGQgdXBwZXJjYXNlIHRleHQtd2hpdGU7XG4gIGJveC1zaGFkb3c6IDBweCAycHggMTBweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XG5cbiAgJi5zcGFjZSB7XG4gICAgQGFwcGx5IHB4LTY7XG4gIH1cblxuICAmOmhvdmVyIHtcbiAgICBAYXBwbHkgYmctbi01MCB0ZXh0LXdoaXRlO1xuICB9XG5cbiAgc3ZnIHtcbiAgICBAYXBwbHkgdGV4dC1iYXNlO1xuICB9XG59XG5cbi8vIHNlY29uZGFyeSBidXR0b25cbi5zZWNvbmRhcnktYnRuIHtcbiAgQGFwcGx5IGdhcC0xIGdhcC14LTEgcm91bmRlZCBiZy13aGl0ZSBwLTMgdXBwZXJjYXNlIHRleHQtYmx1ZWNvcmFsO1xuXG4gICYtLXRvdWNoIHtcbiAgICBAYXBwbHkgZ2FwLTEgZ2FwLXgtMSByb3VuZGVkIGJnLXdoaXRlIHAtMyB1cHBlcmNhc2UgdGV4dC1ibHVlY29yYWw7XG4gICAgYm94LXNoYWRvdzogMHB4IDJweCAxMHB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcbiAgICAuZHJvcGRvd25fX2Fycm93IHtcbiAgICAgIGZvbnQtc2l6ZTogNnB4O1xuICAgICAgdHJhbnNpdGlvbjogMC4ycztcbiAgICB9XG4gICAgc3ZnIHtcbiAgICAgIEBhcHBseSB0ZXh0LWJhc2U7XG4gICAgfVxuICB9XG4gICY6aG92ZXIge1xuICAgIEBhcHBseSBiZy1ibHVlY29yYWwgdGV4dC13aGl0ZTtcbiAgfVxuXG4gIHN2ZyB7XG4gICAgQGFwcGx5IHRleHQtYmFzZTtcbiAgfVxuXG4gIC5kcm9wZG93bl9fYXJyb3cge1xuICAgIGZvbnQtc2l6ZTogNnB4O1xuICAgIHRyYW5zaXRpb246IDAuMnM7XG4gIH1cbn1cblxuLy8gcHJpbWFyeSBvdXRsaW5lIGJ1dHRvblxuLnByaW1hcnktb3V0bGluZS1idG4ge1xuICBAYXBwbHkganVzdGlmeS1jZW50ZXIgZ2FwLTEgcm91bmRlZC0zeGwgYm9yZGVyIGJvcmRlci1zcHJpbmctNTAgcHgtMy41IHRleHQtc20gbGVhZGluZy1yZWxheGVkIHRleHQtc3ByaW5nLTUwO1xuICBmaWx0ZXI6IGRyb3Atc2hhZG93KDBweCA0cHggNDBweCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuXG4gICY6aG92ZXIge1xuICAgIEBhcHBseSBiZy1zcHJpbmctNTAgdGV4dC13aGl0ZTtcbiAgfVxuXG4gIHN2ZyB7XG4gICAgQGFwcGx5IHRleHQtYmFzZTtcbiAgfVxufVxuXG4uZ2hvc3QtYnRuIHtcbiAgQGFwcGx5IHRleHQteHMgZm9udC1ib2xkIHVwcGVyY2FzZSB0ZXh0LW4tNDA7XG4gIHRyYW5zaXRpb246IDAuNHM7XG5cbiAgJjpob3ZlciB7XG4gICAgQGFwcGx5IHRleHQtYmx1ZWNvcmFsO1xuICB9XG59XG5cbi50YWItYnRuLWFuY2hvciB7XG4gIEBhcHBseSBjdXJzb3ItZGVmYXVsdDtcbn1cblxuLnRhYi1idG4ge1xuICBAYXBwbHkgaC05IHJvdW5kZWQgYm9yZGVyIGJvcmRlci1uLTIwIGJnLXdoaXRlIHAtMiB0ZXh0LXhzIHRleHQtbi00MDtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuXG4gICY6aG92ZXIge1xuICAgIEBhcHBseSBib3JkZXItdHVycXVvaXNlIGJnLW4tMTAgdGV4dC1ibHVlY29yYWw7XG4gIH1cbn1cblxuLmFjdGl2ZV9fdGFiIHtcbiAgQGFwcGx5IGJvcmRlci10dXJxdW9pc2UgYmctbi0xMCB0ZXh0LWJsdWVjb3JhbDtcbn1cblxuLnBhbmVsLWJ0biB7XG4gIEBhcHBseSBoLTEwIHNwYWNlLXgtMSByb3VuZGVkIGJvcmRlciBib3JkZXItbi0zMCBiZy1lZ2dzaGVsbCBweS0zIHB4LTI7XG4gIHdpZHRoOiA0M3B4O1xuXG4gICY6aG92ZXIge1xuICAgIEBhcHBseSBiZy1ibHVlY29yYWwgdGV4dC13aGl0ZTtcbiAgfVxuXG4gIC5kcm9wZG93bl9fYXJyb3cge1xuICAgIGZvbnQtc2l6ZTogNnB4O1xuICAgIHRyYW5zaXRpb246IDAuMnM7XG4gIH1cbn1cbiIsIi5oYW1idXJnZXIge1xuICBAYXBwbHkgcmVsYXRpdmUgei1hdXRvIGZsZXggaC0xMSB3LTExIGN1cnNvci1wb2ludGVyIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZCBkdXJhdGlvbi0zMDA7XG4gIHotaW5kZXg6IDEyMDtcblxuICAmLmFjdGl2ZSB7XG4gICAgc3BhbiB7XG4gICAgICBAYXBwbHkgYmctbi0xMDtcbiAgICB9XG4gIH1cblxuICBzcGFuIHtcbiAgICBAYXBwbHkgcG9pbnRlci1ldmVudHMtbm9uZSBhYnNvbHV0ZSBoLTEgdy0xMCByb3VuZGVkLWxnIGR1cmF0aW9uLTMwMDtcbiAgfVxuICBzcGFuOm50aC1jaGlsZCgxKSB7XG4gICAgYm90dG9tOiAxOHB4O1xuICAgIGxlZnQ6IDJweDtcbiAgICB3aWR0aDogMzBweDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTE1cHgpO1xuICB9XG4gICYuYWN0aXZlIHtcbiAgICBzcGFuOm50aC1jaGlsZCgxKSB7XG4gICAgICB3aWR0aDogNDBweDtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKSB0cmFuc2xhdGVaKDApO1xuICAgIH1cbiAgICBzcGFuOm50aC1jaGlsZCgyKSB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNjBweCk7XG4gICAgfVxuICAgIHNwYW46bnRoLWNoaWxkKDMpIHtcbiAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDRweCkgcm90YXRlKDMxNWRlZyk7XG4gICAgfVxuICB9XG4gIHNwYW46bnRoLWNoaWxkKDMpIHtcbiAgICB0b3A6IDE4cHg7XG4gICAgbGVmdDogMnB4O1xuICAgIHdpZHRoOiAyMHB4O1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxNXB4KTtcbiAgfVxufVxuLmhhbWJ1cmdlci1tZW51IHtcbiAgZGlzcGxheTogbm9uZTtcblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxNDIwcHgpIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxufVxuXG4uaG9tZS1idXJnZXItbWVudS5hY3RpdmUge1xuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xuICAgIHRyYW5zbGF0ZTogLTM1MCUgLTE0MCU7XG4gIH1cbiAgdHJhbnNsYXRlOiAtNDkwJSAtOTAlO1xuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ0MHB4KSB7XG4gICAgdHJhbnNsYXRlOiAtMzgwJSAtOTAlO1xuICB9XG59XG4iLCIuaW5wdXQge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBwYWRkaW5nOiAxNHB4IDBweCAxNHB4IDU1cHg7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgbGluZS1oZWlnaHQ6IDI0cHg7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgb3V0bGluZTogbm9uZTtcbiAgdHJhbnNpdGlvbjogMC4zcztcbiAgQGFwcGx5IGgtMTQgYm9yZGVyIGJvcmRlci1uLTMwIHNtOmgtMTY7XG5cbiAgJjpmb2N1cyB7XG4gICAgQGFwcGx5IGJvcmRlciBib3JkZXItbi01MCBiZy1uLTEwO1xuICB9XG5cbiAgJjo6cGxhY2Vob2xkZXIge1xuICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xuICAgIEBhcHBseSBmb250LW5vcm1hbCB0ZXh0LW4tNDA7XG4gIH1cblxuICAmOmZvY3VzOjpwbGFjZWhvbGRlciB7XG4gICAgQGFwcGx5IHRleHQtbi01MDtcbiAgfVxuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XG4gICAgcGFkZGluZzogMjBweCAwcHggMjBweCA1NXB4O1xuICB9XG59XG4uZXJyb3Ige1xuICBAYXBwbHkgdGV4dC1zbSB0ZXh0LWNyaW1zb24tNTAgc206dGV4dC1iYXNlO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXNpemU6IDEycHg7XG4gIGxpbmUtaGVpZ2h0OiAxOHB4O1xufVxuXG4uaGFzX2Vycm9yIHtcbiAgLmZvcm1fX2lucHV0IHtcbiAgICBAYXBwbHkgYm9yZGVyIGJvcmRlci1jcmltc29uLTUwO1xuICB9XG59XG50ZXh0YXJlYS5mb3JtX19pbnB1dCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuLnRleHQtYXJlYSB7XG4gIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDtcbiAgaGVpZ2h0OiA2MHB4O1xuICByZXNpemU6IG5vbmU7XG59XG4uZm9ybV9faW5wdXQge1xuICBAYXBwbHkgbWItMiBib3gtYm9yZGVyIHctZnVsbCByb3VuZGVkIGJvcmRlciBib3JkZXItbi0zMCB0ZXh0LWJsdWVjb3JhbCBvdXRsaW5lLW5vbmUgZHVyYXRpb24tMzAwO1xuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XG4gICAgcGFkZGluZzogMTNweCAwIDEzcHggMTZweDtcbiAgfVxuICBwYWRkaW5nOiAxMHB4IDAgMTBweCAxNnB4O1xuXG4gICY6OnBsYWNlaG9sZGVyIHtcbiAgICBAYXBwbHkgdGV4dC1zbSBmb250LW5vcm1hbCB0ZXh0LW4tNDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gIH1cblxuICAmOmZvY3VzIHtcbiAgICBAYXBwbHkgYm9yZGVyIGJvcmRlci1uLTUwIGJnLW4tMTA7XG4gIH1cblxuICAmOmZvY3VzOjpwbGFjZWhvbGRlciB7XG4gICAgQGFwcGx5IHRleHQtbi01MDtcbiAgfVxufVxuLmlucHV0X19maWVsZCB7XG4gIC5tdWx0aXNlbGVjdC1vcHRpb24uaXMtc2VsZWN0ZWQge1xuICAgIEBhcHBseSBiZy1uLTIwIHRleHQtbi01MDtcbiAgfVxuXG4gIC5tdWx0aXNlbGVjdC1vcHRpb24uaXMtc2VsZWN0ZWQuaXMtcG9pbnRlZCB7XG4gICAgQGFwcGx5IGJnLW4tMjAgdGV4dC1uLTUwO1xuICB9XG5cbiAgLm11bHRpc2VsZWN0LmlzLWFjdGl2ZSB7XG4gICAgQGFwcGx5IGJvcmRlciBib3JkZXItbi01MCBiZy1uLTEwO1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDA7XG4gIH1cblxuICAubXVsdGlzZWxlY3QtcGxhY2Vob2xkZXIge1xuICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xuICAgIEBhcHBseSB3LVszMTBweF0gb3ZlcmZsb3ctaGlkZGVuIHdoaXRlc3BhY2Utbm93cmFwIHByLTMgdGV4dC1zbSB0ZXh0LW4tNDAgZHVyYXRpb24tMzAwO1xuICB9XG5cbiAgLm11bHRpc2VsZWN0LXBsYWNlaG9sZGVyOjphZnRlciB7XG4gICAgY29udGVudDogJyc7XG4gICAgQGFwcGx5IGFic29sdXRlIHJpZ2h0LTAgdG9wLTMgaC02IHctNyBiZy13aGl0ZTtcbiAgfVxuXG4gIC5tdWx0aXNlbGVjdC5pcy1vcGVuIHtcbiAgICAubXVsdGlzZWxlY3QtcGxhY2Vob2xkZXIge1xuICAgICAgQGFwcGx5IHRleHQtbi01MDtcbiAgICB9XG4gIH1cblxuICAubXVsdGlzZWxlY3QtZHJvcGRvd24ge1xuICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLW4tNTA7XG4gIH1cblxuICAubXVsdGlzZWxlY3QtY2FyZXQge1xuICAgIC13ZWJraXQtbWFzay1pbWFnZTogdXJsKCcvaW1hZ2VzL2Ryb3Bkb3duLWFycm93LnN2ZycpO1xuICAgIG1hc2staW1hZ2U6IHVybCgnL2ltYWdlcy9kcm9wZG93bi1hcnJvdy5zdmcnKTtcbiAgfVxuXG4gIC5tdWx0aXNlbGVjdC1zZWFyY2gge1xuICAgIEBhcHBseSBjdXJzb3ItcG9pbnRlciBib3JkZXIgYm9yZGVyLW4tMzAgcHktMi41O1xuICB9XG5cbiAgLm11bHRpc2VsZWN0LXNlYXJjaDpmb2N1cyB7XG4gICAgQGFwcGx5IGJnLW4tMTA7XG4gIH1cblxuICAubXVsdGlzZWxlY3Qtc2VhcmNoOmZvY3VzICsgLm11bHRpc2VsZWN0LXBsYWNlaG9sZGVyOjphZnRlciB7XG4gICAgQGFwcGx5IGJnLW4tMTA7XG4gIH1cblxuICAudnVlX19zZWxlY3Qge1xuICAgIEBhcHBseSBtYi0yIGJvcmRlciBib3JkZXItbi0zMCB0ZXh0LXNtIGxlYWRpbmctNiBvdXRsaW5lLW5vbmUgZHVyYXRpb24tMzAwO1xuXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgICAgIHBhZGRpbmc6IDE2cHggMHB4IDE2cHggNTVweDtcbiAgICB9XG4gICAgcGFkZGluZzogMTNweCAwcHggMTNweCA1NXB4O1xuICB9XG59XG4uZXJyb3JfaW5wdXQge1xuICBib3JkZXI6IDFweCBzb2xpZCAjZDEwMDFlO1xufVxuLmVycm9yX19tdWx0aXNlbGVjdCB7XG4gIGlucHV0IHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZDEwMDFlO1xuICB9XG59XG4ucGFuZWxfX2lucHV0IHtcbiAgQGFwcGx5IGJveC1ib3JkZXIgaC0xMCB3LWZ1bGwgcm91bmRlZCBib3JkZXIgYm9yZGVyLW4tMzAgYmctcGFwZXIgcHktMi41IHBsLTcgcHItMyBvdXRsaW5lLW5vbmUgZHVyYXRpb24tMzAwO1xuXG4gICY6OnBsYWNlaG9sZGVyIHtcbiAgICBAYXBwbHkgdGV4dC14cyBmb250LW5vcm1hbCB0ZXh0LW4tMzAgZHVyYXRpb24tMzAwO1xuICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xuICB9XG5cbiAgJjpmb2N1czo6cGxhY2Vob2xkZXIge1xuICAgIEBhcHBseSB0ZXh0LW4tNDA7XG4gIH1cbn1cbi5zZWFyY2gge1xuICBAYXBwbHkgcmVsYXRpdmU7XG5cbiAgJl9faW5wdXQge1xuICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLW4tMzAgYmctdHJhbnNwYXJlbnQgb3V0bGluZS1ub25lO1xuICAgIHBhZGRpbmc6IDEwcHggNDJweCAxMHB4IDM0cHg7XG4gICAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgfVxuICBzdmcge1xuICAgIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTMgdG9wLTMgdGV4dC1iYXNlIHRleHQtbi0zMDtcbiAgfVxufVxuLnJlcXVpcmVkLWljb24ge1xuICBAYXBwbHkgcmVsYXRpdmUgdG9wLTAuNSB0ZXh0LWJhc2UgbGVhZGluZy1ub25lIHRleHQtY3JpbXNvbi01MDtcbn1cbi5vcGVuLXRleHQge1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNhNmI1YmE7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaW5wdXQge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgcGFkZGluZy10b3A6IDRweDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIHBhZGRpbmctbGVmdDogMzBweDtcbiAgICAmOmZvY3VzIHtcbiAgICAgIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbn1cbi51c2VyLWNoZWNrbGlzdCB7XG4gIG9wYWNpdHk6IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjtcbiAgd2lkdGg6IDE4cHg7XG4gIGhlaWdodDogMThweDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xufVxuLnBzZXVkby1jaGVja2JveCB7XG4gIGhlaWdodDogMThweDtcbiAgd2lkdGg6IDE4cHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBib3JkZXI6IDJweCBzb2xpZCAjZDVkY2RlO1xuICBvcGFjaXR5OiAxO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xufVxuLnVzZXItY2hlY2tsaXN0OmNoZWNrZWQgfiAucHNldWRvLWNoZWNrYm94IHtcbiAgYm9yZGVyLWNvbG9yOiByZ2IodmFyKC0tc3ByaW5nLTUwKSk7XG59XG4udGlja2VkLXN2ZyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAxcHg7XG4gIGxlZnQ6IDFweDtcbiAgb3BhY2l0eTogMDtcbiAgaGVpZ2h0OiAxNnB4O1xuICB3aWR0aDogMTZweDtcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLjcpO1xufVxuLnVzZXItY2hlY2tsaXN0OmNoZWNrZWQgfiAudGlja2VkLXN2ZyB7XG4gIG9wYWNpdHk6IDE7XG59XG5pbnB1dFt0eXBlPSdyYWRpbyddIHtcbiAgYWNjZW50LWNvbG9yOiAjMTU1MzY2O1xufVxuIiwiLmlhdGktbGlzdC10YWJsZSB7XG4gIEBhcHBseSByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItbi0yMCB0ZXh0LWxlZnQ7XG4gIG1heC13aWR0aDogY2FsYygxMDB2dyAtIDQ1cHgpO1xuXG4gIEBtZWRpYSAobWF4LXdpZHRoOiAxMDI0cHgpIHtcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgIG92ZXJmbG93LXk6IGhpZGRlbjtcbiAgfVxuXG4gIHRhYmxlIHtcbiAgICBAYXBwbHkgdGFibGUgdy1mdWxsICBiZy13aGl0ZTtcbiAgfVxuICB0Ym9keSB7XG4gICAgdHIge1xuICAgICAgJjpob3ZlciB7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIGJveC1zaGFkb3c6IDBweCA0cHggNDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7XG4gICAgICAgIEBhcHBseSBiZy1uLTEwO1xuICAgICAgfVxuICAgIH1cbiAgICB0cjpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICAgIEBhcHBseSByZWxhdGl2ZTtcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKHZhcigtLW4tMjApKTtcbiAgICAgIC8vICY6YWZ0ZXIge1xuICAgICAgLy8gICBjb250ZW50OiAnICc7XG4gICAgICAvLyAgIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTAgYm90dG9tLTAgaC1weCB3LWZ1bGwgbWF4LXctZnVsbCBiZy1uLTIwO1xuICAgICAgLy8gfVxuXG4gICAgICB0ZDpmaXJzdC1jaGlsZDphZnRlciB7XG4gICAgICAgIEBhcHBseSBtbC02O1xuICAgICAgfVxuICAgICAgdGguY2hlY2stY29sdW1uOmFmdGVyIHtcbiAgICAgICAgQGFwcGx5IC1tbC02O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHRoIHtcbiAgICBAYXBwbHkgcHktNCBweC02IGFsaWduLXRvcCB0ZXh0LXhzIHVwcGVyY2FzZSBsZWFkaW5nLW5vcm1hbDtcblxuICAgIHN2ZyB7XG4gICAgICBAYXBwbHkgbXItMSB0ZXh0LXhsIHRleHQtbi0zMDtcbiAgICB9XG5cbiAgICBhIHtcbiAgICAgIEBhcHBseSBmbGV4O1xuICAgICAgc3ZnIHtcbiAgICAgICAgQGFwcGx5IHRleHQtYmFzZSB0ZXh0LWJsdWVjb3JhbDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB0ZCB7XG4gICAgQGFwcGx5IHJlbGF0aXZlIHB5LTQgcHgtNiBhbGlnbi10b3AgdGV4dC1zbSBsZWFkaW5nLXJlbGF4ZWQ7XG4gIH1cblxuICB0ci5hbHJlYWR5LXB1Ymxpc2hlZCB7XG4gICAgdGQsXG4gICAgdGguY2hlY2stY29sdW1uIHtcbiAgICAgIEBhcHBseSBwdC0xMTtcbiAgICB9XG4gIH1cblxuICAuaGFzLXN0YXR1cyB7XG4gICAgdGQge1xuICAgICAgQGFwcGx5IHB4LTYgcHQtMTEgcGItNztcbiAgICB9XG4gICAgdGgge1xuICAgICAgQGFwcGx5IHB4LTYgcHQtMTEgcGItNztcbiAgICB9XG4gIH1cblxuICAuY2hlY2stY29sdW1uIC5jaGVja2JveCB7XG4gICAgbWFyZ2luLXRvcDogNHB4O1xuICB9XG59XG5cbi51cGxvYWQtbGlzdC10YWJsZSB7XG4gIC51cGxvYWQtZXJyb3Ige1xuICAgIC50aXRsZSB7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB9XG4gIH1cblxuICAudXBsb2FkLWVycm9yLWNvbnRlbnQge1xuICAgIGhlaWdodDogYXV0bztcbiAgICBvdmVyZmxvdy15OiBoaWRkZW47XG4gICAgdHJhbnNpdGlvbjogbWF4LWhlaWdodCAwLjNzIGVhc2Utb3V0OyAvLyBub3RlIHRoYXQgd2UncmUgdHJhbnNpdGlvbmluZyBtYXgtaGVpZ2h0LCBub3QgaGVpZ2h0IVxuICAgIC5lcnJvci1kcm9wZG93biB7XG4gICAgICBkaXYge1xuICAgICAgICBAYXBwbHkgdGV4dC1ibHVlY29yYWw7XG5cbiAgICAgICAgJjpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICAgICAgICBAYXBwbHkgYm9yZGVyLWIgYm9yZGVyLWItbi0yMCBwYi00O1xuICAgICAgICB9XG5cbiAgICAgICAgdWwge1xuICAgICAgICAgIEBhcHBseSBtdC00IHNwYWNlLXktNCB0ZXh0LXNtIGZvbnQtbm9ybWFsO1xuICAgICAgICB9XG5cbiAgICAgICAgbGkge1xuICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAvLyBwYWRkaW5nLWxlZnQ6IDM2cHg7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG5cbiAgICAgICAgICAmOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgICAgICAgICAgQGFwcGx5IGJvcmRlci1iIGJvcmRlci1iLW4tMjAgcGItNDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyAmOjpiZWZvcmUge1xuICAgICAgICAgIC8vICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIC8vICAgdG9wOiA4cHg7XG4gICAgICAgICAgLy8gICBsZWZ0OiAyMHB4O1xuICAgICAgICAgIC8vICAgd2lkdGg6IDRweDtcbiAgICAgICAgICAvLyAgIGhlaWdodDogNHB4O1xuICAgICAgICAgIC8vICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICAgIC8vICAgY29udGVudDogJyc7XG4gICAgICAgICAgLy8gICBAYXBwbHkgYmctYmx1ZWNvcmFsO1xuICAgICAgICAgIC8vIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAuZXJyb3ItbGlzdCB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7XG4gICAgICAmOjpiZWZvcmUge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogOHB4O1xuICAgICAgICBsZWZ0OiAxMHB4O1xuICAgICAgICB3aWR0aDogNHB4O1xuICAgICAgICBoZWlnaHQ6IDRweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgQGFwcGx5IGJnLWJsdWVjb3JhbDtcbiAgICAgIH1cbiAgICB9XG4gICAgJi5jbG9zZWQge1xuICAgICAgbWF4LWhlaWdodDogMDtcbiAgICB9XG4gIH1cblxuICAudXBsb2FkLWVycm9yLWljb24ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDI2cHg7XG4gICAgcmlnaHQ6IDA7XG5cbiAgICBzdmcge1xuICAgICAgZm9udC1zaXplOiA2cHg7XG4gICAgfVxuXG4gICAgJi5vcGVuIHtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG4gICAgfVxuICB9XG59XG5cbiNjYiB7XG4gIHdpZHRoOiA2OHB4O1xufVxuXG4jc3RhdHVzIHtcbiAgd2lkdGg6IDE5MnB4O1xufVxuXG4jcHVibGlzaCB7XG4gIHdpZHRoOiAyODBweDtcbn1cblxuI2RhdGUge1xuICB3aWR0aDogMTczcHg7XG59XG4uaWF0aS1saXN0LXRhYmxlIHtcbiAgdHIge1xuICAgIG92ZXJmbG93LXk6IHZpc2libGU7XG4gIH1cbiAgdGQ6bnRoLWNoaWxkKDEpIHtcbiAgICBtYXgtd2lkdGg6IDE1MHB4ICFpbXBvcnRhbnQ7XG5cbiAgICBhIHtcbiAgICAgIG1heC13aWR0aDogMTQ1cHg7XG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIH1cbiAgfVxufVxudGQge1xuICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbn1cbi51c2VyLWxpc3QtdGFibGUuaWF0aS1saXN0LXRhYmxlLFxuLm9yZ2FuaXphdGlvbi1saXN0IHtcbiAgb3ZlcmZsb3cteDogYXV0bztcbiAgb3ZlcmZsb3cteTogaGlkZGVuO1xuICBtYXgtd2lkdGg6IGNhbGMoMTAwdncgLSA3MHB4KTtcbiAgQG1lZGlhIChtYXgtd2lkdGg6IDY0MHB4KSB7XG4gICAgbWF4LXdpZHRoOiBjYWxjKDEwMHZ3IC0gNTBweCk7XG4gIH1cbiAgdGJvZHkge1xuICAgIHRyIHtcbiAgICAgICY6aG92ZXIge1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICBib3gtc2hhZG93OiAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDApO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlO1xuICAgICAgICBAYXBwbHkgYmctdHJhbnNwYXJlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qRm9yIHByb2dyZXNzIGJhciBpbiBhY3Rpdml0aWVzIGxpc3RpbmcgcGFnZVxuICpcbiAqL1xuLmJvcmRlci10aGlzIHtcbiAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7XG59XG4ucHJvZ3Jlc3MtYmFyLWhlYWRlciB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDExMDJweCkge1xuICAgIHRleHQtYWxpZ246IGVuZDtcbiAgfVxufVxuLnByb2dyZXNzLWJhci1wYXJlbnQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTEwMnB4KSB7XG4gICAgd2lkdGg6IGF1dG87XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgfVxufVxuLnByb2dyZXNzLWJhci13cmFwcGVyIHtcbiAgaGVpZ2h0OiA1cHg7XG4gIHdpZHRoOiAwO1xuICBkaXNwbGF5OiBub25lO1xuXG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTEwMnB4KSB7XG4gICAgZGlzcGxheTogaW5saW5lO1xuICAgIHdpZHRoOiAxMDBweDtcbiAgfVxufVxuLnByb2dyZXNzLWJhci1jb250YWluZXIge1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJvcmRlci1yYWRpdXM6IDEycHg7XG59XG4ucHJvZ3Jlc3MtYmFyLWZpbGwge1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7XG59XG4ucHJvZ3Jlc3MtYmFyLW51bWJlciB7XG4gIHdpZHRoOiAxMDAlO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMTAycHgpIHtcbiAgICB0ZXh0LWFsaWduOiBlbmQ7XG4gICAgd2lkdGg6IDIuMnJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDhweDtcbiAgfVxufVxuIiwiLmNoZWNrYm94IHtcbiAgQGFwcGx5IHJlbGF0aXZlIGJsb2NrIGN1cnNvci1wb2ludGVyIHNlbGVjdC1ub25lO1xuICAuY2hlY2ttYXJrIHtcbiAgICBAYXBwbHkgZmxleCBoLTQgdy00IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkIGJvcmRlci0yIGJvcmRlci1uLTIwO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7XG4gICAgJjphZnRlciB7XG4gICAgICBib3JkZXItd2lkdGg6IDAgM3B4IDNweCAwO1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBAYXBwbHkgbWItMC41IGhpZGRlbiBoLTIgdy1bNXB4XSByb3RhdGUtNDUgYm9yZGVyLXNwcmluZy01MDtcbiAgICB9XG4gIH1cbiAgaW5wdXQge1xuICAgIEBhcHBseSBhYnNvbHV0ZSBoLTAgdy0wIGN1cnNvci1wb2ludGVyIG9wYWNpdHktMDtcbiAgICAmOmNoZWNrZWQgfiAuY2hlY2ttYXJrIHtcbiAgICAgIEBhcHBseSBib3JkZXItc3ByaW5nLTUwO1xuICAgICAgJjphZnRlciB7XG4gICAgICAgIEBhcHBseSBibG9jaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgJjpob3ZlciBpbnB1dCB+IC5jaGVja21hcmsge1xuICAgIEBhcHBseSBib3JkZXItc3ByaW5nLTUwO1xuICB9XG59XG4vKipcbiAgTGFyYXZlbCBmb3JtIGRlc2lnblxuICovXG5mb3JtIHtcbiAgLmZvcm0tZmllbGQtZ3JvdXAge1xuICAgIEBhcHBseSByZWxhdGl2ZSBwLTM7XG4gICAgJjpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICAgIEBhcHBseSBtYi02O1xuICAgIH1cblxuICAgIC5mb3JtLWZpZWxkIHtcbiAgICAgIEBhcHBseSBwLTM7XG4gICAgICAuaGVscC10ZXh0IHtcbiAgICAgICAgQGFwcGx5IG10LTIgdGV4dC14cyBsZWFkaW5nLXJlbGF4ZWQ7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGJ1dHRvbi5kZWxldGUtaXRlbSB7XG4gICAgQGFwcGx5IGFic29sdXRlIGgtOCB3LTggY3Vyc29yLXBvaW50ZXIgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtZnVsbCBiZy1uLTQwIC1pbmRlbnQtNDA7XG4gICAgJjphZnRlciB7XG4gICAgICBiYWNrZ3JvdW5kOiB1cmwoJy9pbWFnZXMvdHJhc2hfZnVsbC5zdmcnKSBuby1yZXBlYXQgY2VudGVyO1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBAYXBwbHkgYWJzb2x1dGUgbGVmdC0xLzIgdG9wLTEvMiBoLVsxOHB4XSB3LVsxOHB4XSAtdHJhbnNsYXRlLXgtMS8yIC10cmFuc2xhdGUteS0xLzI7XG4gICAgfVxuICAgICY6aG92ZXIge1xuICAgICAgQGFwcGx5IGJnLWJsdWVjb3JhbDtcbiAgICB9XG4gIH1cblxuICAuZm9ybS1maWVsZC1ncm91cC1vdXRlciAuZm9ybS1maWVsZCB7XG4gICAgQGFwcGx5IHB4LTM7XG4gIH1cblxuICAuZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgQGFwcGx5IG1iLTIgZmxleCBqdXN0aWZ5LWJldHdlZW47XG4gICAgbGFiZWwge1xuICAgICAgQGFwcGx5IHRleHQteHMgbGVhZGluZy1yZWxheGVkO1xuICAgIH1cbiAgICAucmVxdWlyZWQge1xuICAgICAgQGFwcGx5IGZvbnQtYm9sZCB0ZXh0LXNhbG1vbi01MDtcbiAgICB9XG4gIH1cbiAgaW5wdXRbdHlwZT0ndGV4dCddLFxuICBpbnB1dFt0eXBlPSdkYXRlJ10sXG4gIHRleHRhcmVhIHtcbiAgICBAYXBwbHkgbXQtMCBoLTEyIHctZnVsbCByb3VuZGVkIGJvcmRlciBib3JkZXItbi0zMCBweC00IHB5LTIuNSB0ZXh0LXNtIGxlYWRpbmctbm9ybWFsIG91dGxpbmUtbm9uZSBkdXJhdGlvbi0zMDA7XG4gICAgJjo6cGxhY2Vob2xkZXIge1xuICAgICAgQGFwcGx5IHRleHQtc20gdGV4dC1uLTQwO1xuICAgIH1cbiAgICAmOmZvY3VzIHtcbiAgICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLW4tNTAgYmctbi0xMDtcbiAgICB9XG4gICAgJjpmb2N1czo6cGxhY2Vob2xkZXIge1xuICAgICAgQGFwcGx5IHRleHQtbi01MDtcbiAgICB9XG4gIH1cblxuICBpbnB1dFt0eXBlPSd0ZXh0J10sXG4gIGlucHV0W3R5cGU9J2RhdGUnXSB7XG4gICAgQGFwcGx5IGgtMTI7XG4gIH1cblxuICBzZWxlY3Qge1xuICAgIEBhcHBseSB3LWZ1bGwgcm91bmRlZCBib3JkZXIgYm9yZGVyLW4tMzAgcHgtNCBweS0zIHRleHQtc20gdGV4dC1uLTQwIG91dGxpbmUtbm9uZSBkdXJhdGlvbi0zMDA7XG4gICAgJjpmb2N1cyB7XG4gICAgICBAYXBwbHkgYm9yZGVyIGJvcmRlci1uLTUwIGJnLW4tMTA7XG4gICAgfVxuICB9XG4gIC5oZWxwIHtcbiAgICBAYXBwbHkgcmVsYXRpdmU7XG4gICAgJl9fdGV4dCB7XG4gICAgICBAYXBwbHkgaW52aXNpYmxlIGFic29sdXRlIHRvcC00IHotMjAgc3BhY2UteS0xLjUgcm91bmRlZCBiZy1lZ2dzaGVsbCBwLTQgdGV4dC1sZWZ0IHRleHQteHMgdGV4dC1uLTQwIG9wYWNpdHktMCBkdXJhdGlvbi0yMDA7XG4gICAgICBib3gtc2hhZG93OiAwcHggNHB4IDQwcHggcmdiKDAgMCAwIC8gMTAlKTtcbiAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0O1xuICAgIH1cbiAgfVxuICAuaGVscDpob3ZlciB7XG4gICAgLmhlbHBfX3RleHQge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDVweCk7XG4gICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gIH1cbiAgLmFkZF9tb3JlIHtcbiAgICBAYXBwbHkgcmVsYXRpdmU7XG4gICAgJjpiZWZvcmUge1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBAYXBwbHkgYWJzb2x1dGUgbGVmdC0wIHRvcC0wIGgtMS8yIHctcHggYm9yZGVyLWwgYm9yZGVyLXNwcmluZy01MDtcbiAgICB9XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTAgdG9wLTIvNCBoLXB4IHctMy41IC10cmFuc2xhdGUteS0xLzIgYm9yZGVyLWIgYm9yZGVyLXNwcmluZy01MDtcbiAgICB9XG5cbiAgICBpIHtcbiAgICAgIHdpZHRoOiAxOHB4O1xuICAgICAgaGVpZ2h0OiAxOHB4O1xuICAgICAgYmFja2dyb3VuZDogdXJsKCcvaW1hZ2VzL2FkZC1tb3JlLWdyZWVuLnN2ZycpIG5vLXJlcGVhdCBjZW50ZXI7XG4gICAgfVxuICB9XG4gIC5zdWJlbGVtZW50IHtcbiAgICAmLmJvcmRlci1sID4gbGFiZWwge1xuICAgICAgYm9yZGVyLWxlZnQ6IDA7XG4gICAgfVxuICAgIC5zdWJlbGVtZW50LFxuICAgIC5zdWJlbGVtZW50ICsgYnV0dG9uIHtcbiAgICAgIEBhcHBseSBtbC02O1xuICAgIH1cblxuICAgIC53cmFwcGVkLWNoaWxkLWJvZHkge1xuICAgICAgQGFwcGx5IHJlbGF0aXZlO1xuICAgICAgPiAuZGVsZXRlLXBhcmVudCB7XG4gICAgICAgIEBhcHBseSBibG9jaztcbiAgICAgIH1cbiAgICB9XG4gICAgPiAubXVsdGktZm9ybTpvbmx5LW9mLXR5cGUgPiAuZGVsZXRlLXBhcmVudCxcbiAgICAud3JhcHBlZC1jaGlsZC1ib2R5Om9ubHktb2YtdHlwZSA+IC5kZWxldGUtcGFyZW50IHtcbiAgICAgIEBhcHBseSBoaWRkZW47XG4gICAgfVxuICB9XG5cbiAgLmZvcm0tZmllbGQtZ3JvdXA6b25seS1vZi10eXBlID4gLmRlbGV0ZS1pdGVtIHtcbiAgICBAYXBwbHkgaGlkZGVuO1xuICB9XG5cbiAgLyoqXG4gICogQ29uZGl0aW9uIHRvIHNob3cgYW5kIGRlbGV0ZSBjb2xsZWN0aW9uIGVycm9yIGluIGZvcm1cbiAgKi9cbiAgLmNvbGxlY3Rpb25fZXJyb3Ige1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAubXVsdGktZm9ybSArIC5jb2xsZWN0aW9uX2Vycm9yLFxuICAuZm9ybS1maWVsZC1ncm91cCArIC5jb2xsZWN0aW9uX2Vycm9yLFxuICAud3JhcHBlZC1jaGlsZC1ib2R5ICsgLmNvbGxlY3Rpb25fZXJyb3Ige1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG4gIC5jb250cm9sLWxhYmVsICsgLmNvbGxlY3Rpb25fZXJyb3IsXG4gIC50aXRsZS1jb250YWluZXIgLmNvbGxlY3Rpb25fZXJyb3Ige1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmctcmlnaHQ6IDI0cHg7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIC5kaXYge1xuICAgICAgbGluZS1oZWlnaHQ6IDRweCAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAgU2VsZWN0IDIgZmllbGRcbiovXG5zcGFuLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0IHtcbiAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG4gIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIHtcbiAgICBAYXBwbHkgaC0xMiB3LWZ1bGwgcm91bmRlZCBib3JkZXIgYm9yZGVyLW4tMzAgcHgtNCBweS0zIHRleHQtc20gdGV4dC1uLTQwIG91dGxpbmUtbm9uZSBkdXJhdGlvbi0zMDA7XG4gICAgLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCB7XG4gICAgICBAYXBwbHkgcC0wIHRleHQtc20gbGVhZGluZy1ub3JtYWw7XG4gICAgfVxuICAgIC5zZWxlY3QyLXNlbGVjdGlvbl9fYXJyb3cge1xuICAgICAgQGFwcGx5IGgtMTE7XG4gICAgfVxuICAgIC5zZWxlY3QyLXNlbGVjdGlvbl9fY2xlYXIgc3BhbiB7XG4gICAgICBAYXBwbHkgbXItMi41IHRleHQtc207XG4gICAgfVxuICAgIC5zZWxlY3QyLXNlbGVjdGlvbl9fcGxhY2Vob2xkZXIge1xuICAgICAgQGFwcGx5IHRleHQtc20gdGV4dC1uLTQwO1xuICAgIH1cbiAgfVxuICAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLWhpZ2hsaWdodGVkW2FyaWEtc2VsZWN0ZWRdIHtcbiAgICBjb2xvcjogIzFmMjkzNztcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjNmNGY2O1xuICB9XG4gIC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvblthcmlhLXNlbGVjdGVkXSB7XG4gICAgQGFwcGx5IHRleHQtc20gdGV4dC1uLTUwO1xuICB9XG59XG4ubWF4LXctaGFsZiB7XG4gIG1heC13aWR0aDogNTAlO1xufVxuXG4vKipcbiAgQWN0aXZpdHkgRGV0YWlsIFBhZ2VcbiovXG4uYWN0aXZpdGllcyB7XG4gIEBhcHBseSBmbGV4IGdhcC01IHhsOmdhcC03O1xuXG4gICZfX3NpZGViYXIge1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIHdpZHRoOiAyODBweDtcblxuICAgICYtaW5uZXIge1xuICAgICAgb3JkZXI6IDE7XG4gICAgfVxuICB9XG5cbiAgJl9fY29udGVudCB7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gICAgICBtYXgtd2lkdGg6IGNhbGMoMTAwdncgLSA1MHB4KTtcbiAgICB9XG4gIH1cblxuICAmX19jYXJkIHtcbiAgICBAYXBwbHkgZmxleCBmbGV4LWNvbCBiZy13aGl0ZSB0ZXh0LWNlbnRlciB0ZXh0LXhzIHRleHQtbi00MDtcbiAgICBwYWRkaW5nOiAxM3B4O1xuICB9XG5cbiAgLnByb2dyZXNzIHtcbiAgICBAYXBwbHkgaXRlbXMtY2VudGVyO1xuICAgIHdpZHRoOiAxNTFweDtcbiAgICBtaW4taGVpZ2h0OiAxNzRweDtcbiAgICBib3JkZXItcmFkaXVzOiA4cHggMHB4IDBweCA4cHg7XG4gIH1cblxuICAudGFiLWJ0bjpkaXNhYmxlZCB7XG4gICAgQGFwcGx5IHBvaW50ZXItZXZlbnRzLW5vbmUgdGV4dC1uLTIwO1xuXG4gICAgc3ZnIHtcbiAgICAgIEBhcHBseSB0ZXh0LW4tMjA7XG4gICAgfVxuICB9XG4gIC5ob3Zlci10ZXh0IHtcbiAgICBzdmcge1xuICAgICAgQGFwcGx5IHRleHQtbi0zMDtcbiAgICB9XG4gIH1cbn1cbi5lbGVtZW50cy1jYXJkIHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTE5MHB4KSB7XG4gICAgZmxleC1iYXNpczogYXV0bztcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxufVxuLm1hbnVhbC1pbXBvcnQge1xuICAuaGVscF9fdGV4dCB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApICFpbXBvcnRhbnQ7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICAgICAgd2lkdGg6IDM1MHB4ICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG59XG4ucmVnaXN0ZXItcGFnZSAuaGVscF9fdGV4dCB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSkgIWltcG9ydGFudDtcbn1cblxuLnJlZ2lzdHJ5X19pbmZvLFxuLnJlZ2lzdGVyLFxuYXNpZGUge1xuICAuaGVscF9fdGV4dCB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApICFpbXBvcnRhbnQ7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDEzNzBweCkge1xuICAgICAgd2lkdGg6IDI1MHB4ICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG59XG4uaW1wb3J0LWFjdGl2aXR5LFxuLmFjdGl2aXRpZXNfX2NvbnRlbnQtLWVsZW1lbnQge1xuICAuaGVscF9fdGV4dCB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApICFpbXBvcnRhbnQ7XG4gIH1cbn1cbmFzaWRlIHtcbiAgLnByb2dyZXNzIHtcbiAgICAuaGVscF9fdGV4dCB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgIWltcG9ydGFudDtcblxuICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTQ1JSkgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbi5hY3Rpdml0aWVzX19jb250ZW50IHtcbiAgd2lkdGg6IDEwMCU7XG59XG4udGFiLWJ0biB7XG4gIC5oZWxwX190ZXh0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgIWltcG9ydGFudDtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gICAgICBsZWZ0OiAwO1xuICAgIH1cbiAgfVxufVxuLmFjdGl2aXR5LWRlZmF1bHQtdmFsdWUge1xuICAuaGVscF9fdGV4dCB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKSAhaW1wb3J0YW50O1xuICB9XG59XG4uZXJyb3ItdGl0bGUge1xuICBjb2xvcjogI2QxMDAxZTtcbiAgcGFkZGluZy10b3A6IDhweCAhaW1wb3J0YW50O1xuICBwYWRkaW5nLWJvdHRvbTogOHB4ICFpbXBvcnRhbnQ7XG59XG4udGV4dC1kYW5nZXItZXJyb3Ige1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgbGluZS1oZWlnaHQ6IDE4cHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG59XG4iLCIucGFnaW5hdGlvbiB7XG4gIEBhcHBseSByZWxhdGl2ZSB6LTAgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGJnLXdoaXRlIHRleHQtc20gbGVhZGluZy1yZWxheGVkIHRleHQtbi00MDtcblxuICBhIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cblxuICBhLFxuICAucGFnaW5hdGlvbi1kb3RzIHtcbiAgICBAYXBwbHkgZmxleCBib3JkZXIteSBib3JkZXItbCBib3JkZXItbi0yMCBweS0xLjUgcHgtMztcblxuICAgICY6bm90KC5wcmV2LWJ0bikge1xuICAgICAgQGFwcGx5IGJvcmRlci1sIGJvcmRlci1uLTIwO1xuICAgIH1cblxuICAgICYucHJldi1idG4sXG4gICAgJi5uZXh0LWJ0biB7XG4gICAgICBAYXBwbHkgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctbi0xMDtcblxuICAgICAgc3ZnIHtcbiAgICAgICAgQGFwcGx5IHRleHQteHM7XG4gICAgICB9XG4gICAgfVxuICAgICYucHJldi1idG4ge1xuICAgICAgQGFwcGx5IHJvdW5kZWQtdGwgcm91bmRlZC1ibDtcbiAgICB9XG5cbiAgICAmLm5leHQtYnRuIHtcbiAgICAgIEBhcHBseSByb3VuZGVkLWJyIHJvdW5kZWQtdHIgYm9yZGVyLXI7XG4gICAgfVxuXG4gICAgJi5wcmV2LWJ0biBzdmcge1xuICAgICAgQGFwcGx5IG1yLTE7XG4gICAgfVxuXG4gICAgJi5uZXh0LWJ0biBzdmcge1xuICAgICAgQGFwcGx5IG1sLTE7XG4gICAgfVxuXG4gICAgJjpob3ZlcixcbiAgICAmLmN1cnJlbnQge1xuICAgICAgQGFwcGx5IGJnLWJsdWVjb3JhbCB0ZXh0LXBhcGVyO1xuICAgIH1cbiAgfVxufVxuIiwiLm92ZXJsYXkge1xuICBAYXBwbHkgZml4ZWQgbGVmdC0wIHRvcC0wIGgtZnVsbCB3LWZ1bGwgYmctYmxhY2s7XG4gIHotaW5kZXg6IDEwMDtcbiAgb3BhY2l0eTogMC43O1xuXG4gICZfX2lubmVyIHtcbiAgICBAYXBwbHkgYWJzb2x1dGUgbGVmdC0wIHRvcC0wIGgtZnVsbCB3LWZ1bGw7XG4gIH1cblxuICAmX19jb250ZW50IHtcbiAgICBAYXBwbHkgYWJzb2x1dGUgbGVmdC0yLzQgdG9wLTIvNDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcblxuICAgIC5zcGlubmVyIHtcbiAgICAgIEBhcHBseSBpbmxpbmUtYmxvY2sgYW5pbWF0ZS1zcGluIHJvdW5kZWQtZnVsbCBib3JkZXItMiBib3JkZXItbi0xMCBib3JkZXItb3BhY2l0eS01O1xuICAgICAgd2lkdGg6IDc1cHg7XG4gICAgICBoZWlnaHQ6IDc1cHg7XG4gICAgICBib3JkZXItdG9wLWNvbG9yOiB3aGl0ZTtcbiAgICB9XG4gIH1cbn1cbi5sb2Fkb3ZlcmxheSB7XG4gIEBhcHBseSBmaXhlZCBsZWZ0LTAgdG9wLTAgaC1mdWxsIHctZnVsbCBiZy1ibGFjaztcbiAgb3BhY2l0eTogMC43O1xuXG4gICZfX2lubmVyIHtcbiAgICBAYXBwbHkgYWJzb2x1dGUgbGVmdC0wIHRvcC0wIGgtZnVsbCB3LWZ1bGw7XG4gIH1cblxuICAmX19jb250ZW50IHtcbiAgICBAYXBwbHkgYWJzb2x1dGUgbGVmdC0yLzQgdG9wLTIvNDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcblxuICAgIC5zcGlubmVyIHtcbiAgICAgIEBhcHBseSBpbmxpbmUtYmxvY2sgYW5pbWF0ZS1zcGluIHJvdW5kZWQtZnVsbCBib3JkZXItMiBib3JkZXItbi0xMCBib3JkZXItb3BhY2l0eS01O1xuICAgICAgd2lkdGg6IDc1cHg7XG4gICAgICBoZWlnaHQ6IDc1cHg7XG4gICAgICBib3JkZXItdG9wLWNvbG9yOiB3aGl0ZTtcbiAgICB9XG4gIH1cbn1cbiIsIi5zZWxlY3QyLWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBtYXJnaW46IDA7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cbiAgJjpmb2N1cy13aXRoaW4ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmMWY3Zjk7XG4gIH1cblxuICAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBoZWlnaHQ6IDI4cHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG5cbiAgICAmOmZvY3VzLXdpdGhpbiB7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjMmEyZjMwO1xuICAgIH1cblxuICAgIC5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQge1xuICAgICAgcGFkZGluZy1yaWdodDogMjBweDtcbiAgICAgIHBhZGRpbmctbGVmdDogOHB4O1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDE7XG4gICAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAgIH1cbiAgfVxufVxuXG4uc2VsZWN0Mi1kcm9wZG93biB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogLTEwMDAwMHB4O1xuICBkaXNwbGF5OiBibG9jaztcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBib3JkZXI6IDFweCBzb2xpZCAjYWFhO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG59XG5cbi5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbiB7XG4gIHBhZGRpbmc6IDZweDtcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG5cbiAgJlthcmlhLXNlbGVjdGVkXSB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG59XG5cbi5zZWxlY3QyLWNvbnRhaW5lci0tb3BlbiB7XG4gIC5zZWxlY3QyLWRyb3Bkb3duIHtcbiAgICBsZWZ0OiAwO1xuXG4gICAgJi0tYWJvdmUge1xuICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbiAgICB9XG5cbiAgICAmLS1iZWxvdyB7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgYm9yZGVyLXRvcDogbm9uZTtcbiAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcbiAgICB9XG4gIH1cbn1cblxuLnNlbGVjdDItc2VhcmNoLS1kcm9wZG93biB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiA0cHg7XG5cbiAgLnNlbGVjdDItc2VhcmNoX19maWVsZCB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiA0cHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2E2YjViYTtcbiAgICBib3JkZXItcmFkaXVzOiA1cHg7XG5cbiAgICAmOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uIHtcbiAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICB9XG4gIH1cbn1cblxuW3R5cGU9J3NlYXJjaCddIHtcbiAgb3V0bGluZS1jb2xvcjogI2E2YjViYTtcbiAgb3V0bGluZS1vZmZzZXQ6IDA7XG59XG5cbi5zZWxlY3QyLWhpZGRlbi1hY2Nlc3NpYmxlIHtcbiAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG4gIHdpZHRoOiAxcHggIWltcG9ydGFudDtcbiAgaGVpZ2h0OiAxcHggIWltcG9ydGFudDtcbiAgbWFyZ2luOiAtMXB4ICFpbXBvcnRhbnQ7XG4gIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50O1xuICBib3JkZXI6IDAgIWltcG9ydGFudDtcbiAgY2xpcDogcmVjdCgwIDAgMCAwKSAhaW1wb3J0YW50O1xufVxuXG4uc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQge1xuICAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSB7XG4gICAgLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCB7XG4gICAgICBjb2xvcjogIzE1NTM2NjtcbiAgICAgIGxpbmUtaGVpZ2h0OiAyOHB4O1xuICAgIH1cblxuICAgIC5zZWxlY3QyLXNlbGVjdGlvbl9fY2xlYXIge1xuICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuXG4gICAgLnNlbGVjdDItc2VsZWN0aW9uX19wbGFjZWhvbGRlciB7XG4gICAgICBjb2xvcjogIzk5OTtcbiAgICB9XG5cbiAgICAuc2VsZWN0Mi1zZWxlY3Rpb25fX2Fycm93IHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMXB4O1xuICAgICAgcmlnaHQ6IDFweDtcbiAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgaGVpZ2h0OiAyNnB4O1xuXG4gICAgICBiIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICB3aWR0aDogMDtcbiAgICAgICAgaGVpZ2h0OiAwO1xuICAgICAgICBtYXJnaW4tdG9wOiAtMnB4O1xuICAgICAgICBtYXJnaW4tbGVmdDogLTRweDtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjODg4IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgICAgICBib3JkZXItd2lkdGg6IDVweCA0cHggMCA0cHg7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC5zZWxlY3QyLXJlc3VsdHMgPiAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb25zIHtcbiAgICBtYXgtaGVpZ2h0OiAyMDBweDtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICB9XG59XG5cbi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdC5zZWxlY3QyLWNvbnRhaW5lci0tb3BlbiB7XG4gIC5zZWxlY3QyLXNlbGVjdGlvbl9fYXJyb3cge1xuICAgIGIge1xuICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjODg4IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyLXdpZHRoOiAwIDRweCA1cHggNHB4O1xuICAgIH1cbiAgfVxuXG4gICYuc2VsZWN0Mi1jb250YWluZXItLWFib3ZlIHtcbiAgICAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSB7XG4gICAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG4gICAgfVxuICB9XG5cbiAgJi5zZWxlY3QyLWNvbnRhaW5lci0tYmVsb3cge1xuICAgIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIHtcbiAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbiAgICB9XG4gIH1cbn1cbiIsIi5zaWRlYmFyLW9wZW4taWNvbiB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgaGVpZ2h0OiA0MHB4O1xuICBsZWZ0OiAwcHg7XG4gIGJvdHRvbTogNTBweDtcbiAgei1pbmRleDogNjA7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkMGRkZTA7XG4gIHBhZGRpbmc6IDAgNXB4O1xuICBib3JkZXItcmFkaXVzOiAwIDEwMCUgMTAwJSAwO1xuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjJzO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIEBtZWRpYSAobWF4LXdpZHRoOiAxMDI0cHgpIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuXG4gICY6aG92ZXIge1xuICAgIHBhZGRpbmctbGVmdDogMTVweDtcbiAgfVxuXG4gIHN2ZyB7XG4gICAgbWFyZ2luLXRvcDogOHB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBjb2xvcjogIzE1NTM2NjtcbiAgfVxufVxuLmRldGFpbHMtc2lkZWJhci1jbG9zZS1pY29uIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBib3R0b206IDUwcHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgbGVmdDogMjgwcHg7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2QwZGRlMDtcbiAgaGVpZ2h0OiA0MHB4O1xuICB3aWR0aDogNDBweDtcbiAgei1pbmRleDogMzAwO1xuICBib3JkZXItcmFkaXVzOiAxMDAlO1xuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjNzO1xuXG4gIHN2ZyB7XG4gICAgbWFyZ2luOiBhdXRvO1xuICAgIGNvbG9yOiAjMTU1MzY2O1xuICB9XG59XG4uc2lkZWJhci1jbG9zZS1pY29uIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBib3R0b206IDUwcHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgbGVmdDogMjc1cHg7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2QwZGRlMDtcbiAgaGVpZ2h0OiA0MHB4O1xuICB3aWR0aDogNDBweDtcbiAgei1pbmRleDogMjAwO1xuICBib3JkZXItcmFkaXVzOiAxMDAlO1xuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjJzO1xuXG4gIEBtZWRpYSAobWF4LXdpZHRoOiA3MDBweCkge1xuICAgIGxlZnQ6IDI0MHB4O1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7XG4gIH1cblxuICBzdmcge1xuICAgIG1hcmdpbjogYXV0bztcbiAgICBjb2xvcjogIzE1NTM2NjtcbiAgfVxufVxuIiwiLm11bHRpc2VsZWN0IHtcbiAgbWluLXdpZHRoOiAxODBweCAhaW1wb3J0YW50O1xuICBjdXJzb3I6IHBvaW50ZXIgIWltcG9ydGFudDtcbn1cbi5tdWx0aXNlbGVjdC5pcy1hY3RpdmUge1xuICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG59XG4ub3JnYW5pemF0aW9uLFxuLnJvbGUsXG4uc3RhdHVzIHtcbiAgLm11bHRpc2VsZWN0IHtcbiAgICB3aWR0aDogMTYwcHggIWltcG9ydGFudDtcbiAgfVxufVxuLmZpbHRlcnMge1xuICAubXVsdGlzZWxlY3QtcGxhY2Vob2xkZXIge1xuICAgIGZvbnQtc2l6ZTogMTJweCAhaW1wb3J0YW50O1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6IHJnYih2YXIoLS1ibHVlY29yYWwpKSAhaW1wb3J0YW50O1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDtcbiAgfVxufVxuLm11bHRpc2VsZWN0LXNlYXJjaCB7XG4gIGN1cnNvcjogcG9pbnRlciAhaW1wb3J0YW50O1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlICFpbXBvcnRhbnQ7XG59XG4ubXVsdGlzZWxlY3QtbXVsdGlwbGUtbGFiZWwge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDtcbiAgZm9udC1zaXplOiAxMnB4ICFpbXBvcnRhbnQ7XG4gIGZvbnQtd2VpZ2h0OiBib2xkICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiByZ2JhKHZhcigtLWJsdWVjb3JhbCksIDApICFpbXBvcnRhbnQ7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG5cbi5tdWx0aXNlbGVjdC1sYWJlbC13cmFwcGVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIC5tdWx0aXNlbGVjdC1tdWx0aXBsZS1sYWJlbCB7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50O1xuICAgIGZvbnQtc2l6ZTogMTJweCAhaW1wb3J0YW50O1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6IHJnYmEodmFyKC0tYmx1ZWNvcmFsKSwgMCkgIWltcG9ydGFudDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICY6OmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IHZhcigtLWxhYmVsKTtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogNTAlO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgbGVmdDogMTRweDtcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDtcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDtcbiAgICAgIGZvbnQtc2l6ZTogMTJweCAhaW1wb3J0YW50O1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQgIWltcG9ydGFudDtcbiAgICAgIGNvbG9yOiByZ2JhKHZhcigtLWJsdWVjb3JhbCkpICFpbXBvcnRhbnQ7XG4gICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIH1cbiAgfVxuICAubXVsdGlzZWxlY3Qtc2luZ2xlLWxhYmVsLXRleHQge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuICAubXVsdGlzZWxlY3Qtc2luZ2xlLWxhYmVsIHtcbiAgICAvLyBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50O1xuICAgIGZvbnQtc2l6ZTogMTJweCAhaW1wb3J0YW50O1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6IHJnYmEodmFyKC0tYmx1ZWNvcmFsKSwgMCkgIWltcG9ydGFudDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICY6OmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IHZhcigtLWxhYmVsKTtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogNTAlO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgbGVmdDogMTRweDtcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDtcbiAgICAgIGZvbnQtc2l6ZTogMTJweCAhaW1wb3J0YW50O1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQgIWltcG9ydGFudDtcbiAgICAgIGNvbG9yOiByZ2JhKHZhcigtLWJsdWVjb3JhbCkpICFpbXBvcnRhbnQ7XG4gICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIH1cbiAgfVxufVxuXG4ubXVsdGlzZWxlY3QtY2FyZXQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tYmx1ZWNvcmFsKSkgIWltcG9ydGFudCA7XG4gICY6OmFmdGVyIHtcbiAgICBjb250ZW50OiAnICc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGhlaWdodDogNHB4O1xuICAgIHdpZHRoOiA0cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgbGVmdDogNTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSByb3RhdGUoNDVkZWcpO1xuICAgIHotaW5kZXg6IDEwO1xuICAgIHRvcDogMzAlO1xuICB9XG59XG4ubXVsdGlzZWxlY3QtY2xlYXItaWNvbiB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbn1cbi5tdWx0aXNlbGVjdC1zZWFyY2g6Zm9jdXMtd2l0aGluID4gLnNlbGVjdGVkLXBsYWNlaG9sZGVyIHtcbiAgb3BhY2l0eTogMDtcbn1cbi5wb3B1cC1tb2RlbCB7XG4gIC5tdWx0aXNlbGVjdCB7XG4gICAgaGVpZ2h0OiA1MHB4O1xuICB9XG4gIC5tdWx0aXNlbGVjdC1wbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IHJnYih2YXIoLS1uLTQwKSkgIWltcG9ydGFudCA7XG4gICAgZm9udC13ZWlnaHQ6IDQwMCAhaW1wb3J0YW50O1xuICB9XG59XG4ubXVsdGlzZWxlY3Qtb3B0aW9uLmlzLXBvaW50ZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xufVxuLm11bHRpc2VsZWN0LWRyb3Bkb3duIHtcbiAgb3ZlcmZsb3cteDogaGlkZGVuICFpbXBvcnRhbnQ7XG4gIHotaW5kZXg6IDUwICFpbXBvcnRhbnQ7XG59XG5cbi5tdWx0aXNlbGVjdC1vcHRpb24ge1xuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tbi0xMCkpICFpbXBvcnRhbnQ7XG4gIH1cbn1cbi5tdWx0aXNlbGVjdC1vcHRpb24uaXMtc2VsZWN0ZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tbi0yMCkpICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiBibGFjayAhaW1wb3J0YW50O1xufVxuIiwiI2xhdW5jaGVyIHtcbiAgcG9zaXRpb246IGZpeGVkICFpbXBvcnRhbnQ7XG4gIGJvdHRvbTogMzVweCAhaW1wb3J0YW50O1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIGJvcmRlci1yYWRpdXM6IDk5OTk5cHggIWltcG9ydGFudDtcbiAgYm9yZGVyOiAycHggc29saWQgcmdiKDIxLCA4MywgMTAyKSAhaW1wb3J0YW50O1xufVxuIiwiLmRwX19pbnB1dCB7XG4gIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDA7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiAjMmEyZjMwICFpbXBvcnRhbnQ7XG4gIHBhZGRpbmc6IDAgOHB4ICFpbXBvcnRhbnQ7XG4gIGZvbnQtc2l6ZTogMTRweCAhaW1wb3J0YW50O1xuICBmb250LWZhbWlseTogaW5oZXJpdCAhaW1wb3J0YW50O1xuICBwYWRkaW5nLXJpZ2h0OiAxNnB4ICFpbXBvcnRhbnQ7XG59XG4uYWxsLXRpbWUge1xuICAuZHBfX3NlbGVjdGlvbl9wcmV2aWV3IHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cbi5lbXB0eSB7XG4gIC5kcF9faW5wdXRfd3JhcCB7XG4gICAgbWF4LXdpZHRoOiAxMTBweCAhaW1wb3J0YW50O1xuICB9XG59XG5cbi5kcF9faW5wdXQ6OnBsYWNlaG9sZGVyIHtcbiAgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0ICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiAjMmEyZjMwICFpbXBvcnRhbnQ7XG59XG5cbi5kcF9faW5wdXRfaWNvbiB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLmRwX19jbGVhcl9pY29uIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuLmRwX19pbnB1dF9yZWFkb25seSB7XG4gIGZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZiAhaW1wb3J0YW50O1xufVxuLmRwX19jYWxlbmRhcl9oZWFkZXJfaXRlbSB7XG4gIGZvbnQtd2VpZ2h0OiBsaWdodGVyICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiByZ2JhKHZhcigtLW4tNDApKSAhaW1wb3J0YW50O1xufVxuXG4uZHBfX2NhbGVuZGFyX2l0ZW0gKiB7XG4gIG1hcmdpbi1sZWZ0OiAwO1xuICBtYXJnaW4tcmlnaHQ6IDA7XG59XG4uZHBfX2NlbGxfaW5uZXIge1xuICBjb2xvcjogcmdiYSh2YXIoLS1uLTQwKSkgIWltcG9ydGFudDtcbiAgaGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7XG4gIHdpZHRoOiA0MHB4ICFpbXBvcnRhbnQ7XG59XG5cbi5kcF9fb3ZlcmxheV9jZWxsOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1zcHJpbmctNTApLCAxKSAhaW1wb3J0YW50O1xuICBjb2xvcjogd2hpdGUgIWltcG9ydGFudDtcbn1cblxuLmRwX19vdmVybGF5X2NlbGxfYWN0aXZlIHtcbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1zcHJpbmctNTApLCAxKSAhaW1wb3J0YW50O1xufVxuXG4uZHBfX2NhbGVuZGFyX3JvdyB7XG4gIGdhcDogMCAhaW1wb3J0YW50O1xufVxuXG4uZHBfX3RvZGF5IHtcbiAgYm9yZGVyLXJhZGl1czogNTAlICFpbXBvcnRhbnQ7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tc3ByaW5nLTUwKSwgMSkgIWltcG9ydGFudDtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgY29sb3I6IHZhcigtLW4tNDApICFpbXBvcnRhbnQ7XG59XG5cbi5kcF9fcmFuZ2VfZW5kIHtcbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1zcHJpbmctMjApLCAxKSAhaW1wb3J0YW50O1xuICBjb2xvcjogd2hpdGUgIWltcG9ydGFudDtcbiAgYm9yZGVyLXJhZGl1czogMCA1MCUgNTAlIDAgIWltcG9ydGFudDtcbiAgYm9yZGVyOiAwICFpbXBvcnRhbnQ7XG59XG5cbi5kcF9fcmFuZ2Vfc3RhcnQge1xuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXNwcmluZy0yMCksIDEpICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xuICBib3JkZXItcmFkaXVzOiA1MCUgMCAwIDQwJSAhaW1wb3J0YW50O1xufVxuXG4uZHBfX3JhbmdlX2JldHdlZW4ge1xuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXNwcmluZy0yMCksIDEpICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xufVxuXG4uZHBfX3ByZXNldF9yYW5nZXMge1xuICBjb2xvcjogcmdiYSh2YXIoLS1uLTUwKSkgIWltcG9ydGFudDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZSAhaW1wb3J0YW50O1xuICBtaW4td2lkdGg6IDE1MHB4ICFpbXBvcnRhbnQ7XG59XG4uZHBfX3ByZXNldF9yYW5nZSB7XG4gIGNvbG9yOiByZ2JhKHZhcigtLW4tNTApKSAhaW1wb3J0YW50O1xuICBwYWRkaW5nLWxlZnQ6IDhweCAhaW1wb3J0YW50O1xuICBmb250LXNpemU6IDAuOHJlbSAhaW1wb3J0YW50O1xuICBmb250LXdlaWdodDogNTAwICFpbXBvcnRhbnQ7XG4gIG1hcmdpbjogNHB4IGF1dG8gIWltcG9ydGFudDtcbn1cblxuLmRwX19wcmVzZXRfcmFuZ2U6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXNwcmluZy0yMCksIDEpICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xufVxuXG4uZm9udC1zcHJpbmcge1xuICBjb2xvcjogcmdiYSh2YXIoLS1zcHJpbmctNTApLCAxKSAhaW1wb3J0YW50O1xufVxuXG4uZm9udC1uZXV0cmFsIHtcbiAgY29sb3I6IHZhcigtLW4tNTApICFpbXBvcnRhbnQ7XG59XG5cbi5kcF9faW5wdXQge1xuICBtYXJnaW4tcmlnaHQ6IDEycHggIWltcG9ydGFudDtcbn1cblxuLmRhdGVyYW5nZS1pdGVtIHtcbiAgcGFkZGluZzogOHB4O1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIG1hcmdpbi10b3A6IDJweDtcbiAgbWFyZ2luLWJvdHRvbTogMnB4O1xufVxuXG4uZGF0ZXJhbmdlLWl0ZW06aG92ZXIge1xuICBAYXBwbHkgYmctc3ByaW5nLTIwO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cbi5kYXRlcmFuZ2UtaXRlbS1hY3RpdmUge1xuICBAYXBwbHkgYmctc3ByaW5nLTIwO1xuICBjb2xvcjogd2hpdGU7XG59XG4ucHJlc2V0LXJhbmdlLWl0ZW0tYWN0aXZlIHtcbiAgQGFwcGx5IGJnLXNwcmluZy0yMDtcbiAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/ \ No newline at end of file diff --git a/public/css/webportal-app.css b/public/css/webportal-app.css index 37bb3c8f07..652c9addcd 100644 --- a/public/css/webportal-app.css +++ b/public/css/webportal-app.css @@ -415,7 +415,7 @@ video { --tw-backdrop-sepia: ; } -::-webkit-backdrop { +::backdrop { --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; @@ -461,52 +461,67 @@ video { --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; } +.container { + width: 100%; +} +@media (min-width: 640px) { -::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: ; + .container { + max-width: 640px; + } +} +@media (min-width: 768px) { + + .container { + max-width: 768px; + } +} +@media (min-width: 1024px) { + + .container { + max-width: 1024px; + } +} +@media (min-width: 1280px) { + + .container { + max-width: 1280px; + } +} +@media (min-width: 1536px) { + + .container { + max-width: 1536px; + } +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} +.pointer-events-none { + pointer-events: none; +} +.visible { + visibility: visible; +} +.invisible { + visibility: hidden; +} +.static { + position: static; +} +.fixed { + position: fixed; +} +.\!fixed { + position: fixed !important; } .absolute { position: absolute; @@ -514,347 +529,2163 @@ video { .relative { position: relative; } -.top-1\/2 { - top: 50%; -} -.left-2 { - left: 0.5rem; +.sticky { + position: sticky; } -.left-\[2px\] { - left: 2px; +.inset-0 { + top: 0px; + right: 0px; + bottom: 0px; + left: 0px; } -.col-span-2 { - grid-column: span 2 / span 2; +.top-0 { + top: 0px; } -.my-4 { - margin-top: 1rem; - margin-bottom: 1rem; +.right-0 { + right: 0px; } -.mx-2 { - margin-left: 0.5rem; - margin-right: 0.5rem; +.-bottom-24 { + bottom: -6rem; } -.mr-4 { - margin-right: 1rem; +.top-full { + top: 100%; } -.mb-5 { - margin-bottom: 1.25rem; +.left-4 { + left: 1rem; } -.mt-6 { - margin-top: 1.5rem; +.left-2\/4 { + left: 50%; } -.mb-6 { - margin-bottom: 1.5rem; +.right-3 { + right: 0.75rem; } -.mr-1 { - margin-right: 0.25rem; +.right-10 { + right: 2.5rem; } -.mt-0\.5 { - margin-top: 0.125rem; +.top-3 { + top: 0.75rem; } -.mt-0 { - margin-top: 0px; +.right-7 { + right: 1.75rem; } -.mb-4 { - margin-bottom: 1rem; +.right-2\.5 { + right: 0.625rem; } -.mt-1 { - margin-top: 0.25rem; +.top-6 { + top: 1.5rem; } -.block { - display: block; +.right-2 { + right: 0.5rem; } -.flex { - display: flex; +.bottom-0 { + bottom: 0px; } -.inline-flex { - display: inline-flex; +.top-1\/2 { + top: 50%; } -.table { - display: table; +.left-0 { + left: 0px; } -.grid { - display: grid; +.top-\[50vh\] { + top: 50vh; } -.h-\[38px\] { - height: 38px; +.left-1\/2 { + left: 50%; } -.h-3 { - height: 0.75rem; +.top-4 { + top: 1rem; } -.h-full { - height: 100%; +.top-2\/4 { + top: 50%; } -.h-4 { - height: 1rem; +.left-\[80\%\] { + left: 80%; } -.h-5 { - height: 1.25rem; +.bottom-1\/2 { + bottom: 50%; } -.w-full { - width: 100%; +.right-1\/2 { + right: 50%; } -.w-10 { - width: 2.5rem; +.bottom-\[68px\] { + bottom: 68px; } -.w-2 { - width: 0.5rem; +.bottom-\[calc\(100\%-52px\)\] { + bottom: calc(100% - 52px); } -.w-32 { - width: 8rem; +.top-\[60px\] { + top: 60px; } -.w-52 { - width: 13rem; +.top-\[0px\] { + top: 0px; } -.w-7 { - width: 1.75rem; +.-left-2\.5 { + left: -0.625rem; } -.w-3 { - width: 0.75rem; +.-left-2 { + left: -0.5rem; } -.w-5 { - width: 1.25rem; +.left-3 { + left: 0.75rem; } -.max-w-full { - max-width: 100%; +.-top-4 { + top: -1rem; } -.max-w-\[500px\] { - max-width: 500px; +.top-1 { + top: 0.25rem; } -.-translate-y-1\/2 { - --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)); +.-right-6 { + right: -1.5rem; } -.translate-x-0 { - --tw-translate-x: 0px; - 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)); +.left-2\.5 { + left: 0.625rem; } -.translate-x-full { - --tw-translate-x: 100%; - 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)); +.left-2 { + left: 0.5rem; } -.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)); +.left-6 { + left: 1.5rem; } -.cursor-pointer { - cursor: pointer; +.left-\[2px\] { + left: 2px; } -.grid-cols-2 { - grid-template-columns: repeat(2, minmax(0, 1fr)); +.right-4 { + right: 1rem; } -.flex-col { - flex-direction: column; +.top-\[calc\(100\%_\+_8px\)\] { + top: calc(100% + 8px); } -.flex-wrap { - flex-wrap: wrap; +.-left-\[148px\] { + left: -148px; } -.items-start { - align-items: flex-start; +.-bottom-6 { + bottom: -1.5rem; } -.items-end { - align-items: flex-end; +.top-20 { + top: 5rem; } -.items-center { - align-items: center; +.top-2\.5 { + top: 0.625rem; } -.justify-end { - justify-content: flex-end; +.top-2 { + top: 0.5rem; } -.justify-between { - justify-content: space-between; +.top-12 { + top: 3rem; } -.justify-items-center { - justify-items: center; +.left-5 { + left: 1.25rem; } -.gap-2 { - gap: 0.5rem; +.top-16 { + top: 4rem; } -.gap-6 { - gap: 1.5rem; +.z-50 { + z-index: 50; } -.gap-3 { - gap: 0.75rem; +.z-10 { + z-index: 10; } -.space-x-2 > :not([hidden]) ~ :not([hidden]) { - --tw-space-x-reverse: 0; - margin-right: calc(0.5rem * var(--tw-space-x-reverse)); - margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse))); +.z-20 { + z-index: 20; } -.space-x-1 > :not([hidden]) ~ :not([hidden]) { - --tw-space-x-reverse: 0; - margin-right: calc(0.25rem * var(--tw-space-x-reverse)); - margin-left: calc(0.25rem * calc(1 - var(--tw-space-x-reverse))); +.z-40 { + z-index: 40; } -.space-x-6 > :not([hidden]) ~ :not([hidden]) { - --tw-space-x-reverse: 0; - margin-right: calc(1.5rem * var(--tw-space-x-reverse)); - margin-left: calc(1.5rem * calc(1 - var(--tw-space-x-reverse))); +.z-\[200\] { + z-index: 200; } -.space-y-4 > :not([hidden]) ~ :not([hidden]) { - --tw-space-y-reverse: 0; - margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse))); - margin-bottom: calc(1rem * var(--tw-space-y-reverse)); +.z-\[110\] { + z-index: 110; } -.overflow-x-hidden { - overflow-x: hidden; +.z-\[100\] { + z-index: 100; } -.truncate { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; +.z-\[90\] { + z-index: 90; } -.overflow-ellipsis { - text-overflow: ellipsis; +.z-\[1000\] { + z-index: 1000; } -.text-ellipsis { - text-overflow: ellipsis; +.z-\[150\] { + z-index: 150; } -.whitespace-nowrap { - white-space: nowrap; +.\!z-\[200\] { + z-index: 200 !important; } -.rounded { - border-radius: 0.25rem; +.z-\[1\] { + z-index: 1; } -.rounded-lg { - border-radius: 0.5rem; +.z-0 { + z-index: 0; } -.rounded-full { - border-radius: 9999px; +.z-\[50\] { + z-index: 50; } -.border { - border-width: 1px; +.z-\[60\] { + z-index: 60; } -.border-crimson-50 { - --tw-border-opacity: 1; - border-color: rgba(var(--crimson-50), var(--tw-border-opacity)); +.\!z-\[1000\] { + z-index: 1000 !important; +} +.col-span-2 { + grid-column: span 2 / span 2; +} +.col-start-1 { + grid-column-start: 1; +} +.float-right { + float: right; +} +.m-0 { + margin: 0px; +} +.m-2 { + margin: 0.5rem; +} +.m-auto { + margin: auto; +} +.-mx-4 { + margin-left: -1rem; + margin-right: -1rem; +} +.mx-1 { + margin-left: 0.25rem; + margin-right: 0.25rem; +} +.mx-4 { + margin-left: 1rem; + margin-right: 1rem; +} +.mx-2 { + margin-left: 0.5rem; + margin-right: 0.5rem; +} +.mx-auto { + margin-left: auto; + margin-right: auto; +} +.my-3 { + margin-top: 0.75rem; + margin-bottom: 0.75rem; +} +.my-1 { + margin-top: 0.25rem; + margin-bottom: 0.25rem; +} +.mx-3 { + margin-left: 0.75rem; + margin-right: 0.75rem; +} +.my-2 { + margin-top: 0.5rem; + margin-bottom: 0.5rem; +} +.-mx-3 { + margin-left: -0.75rem; + margin-right: -0.75rem; +} +.mx-8 { + margin-left: 2rem; + margin-right: 2rem; +} +.my-8 { + margin-top: 2rem; + margin-bottom: 2rem; +} +.my-5 { + margin-top: 1.25rem; + margin-bottom: 1.25rem; +} +.my-4 { + margin-top: 1rem; + margin-bottom: 1rem; +} +.mx-10 { + margin-left: 2.5rem; + margin-right: 2.5rem; +} +.mx-1\.5 { + margin-left: 0.375rem; + margin-right: 0.375rem; +} +.mx-6 { + margin-left: 1.5rem; + margin-right: 1.5rem; +} +.mx-2\.5 { + margin-left: 0.625rem; + margin-right: 0.625rem; +} +.my-7 { + margin-top: 1.75rem; + margin-bottom: 1.75rem; +} +.my-10 { + margin-top: 2.5rem; + margin-bottom: 2.5rem; +} +.mx-5 { + margin-left: 1.25rem; + margin-right: 1.25rem; +} +.mb-3 { + margin-bottom: 0.75rem; +} +.mb-0 { + margin-bottom: 0px; +} +.mr-3\.5 { + margin-right: 0.875rem; +} +.mr-3 { + margin-right: 0.75rem; +} +.mt-14 { + margin-top: 3.5rem; +} +.ml-1 { + margin-left: 0.25rem; +} +.mr-2 { + margin-right: 0.5rem; +} +.mt-0\.5 { + margin-top: 0.125rem; +} +.mt-0 { + margin-top: 0px; +} +.mb-4 { + margin-bottom: 1rem; +} +.mr-1 { + margin-right: 0.25rem; +} +.ml-6 { + margin-left: 1.5rem; +} +.mr-1\.5 { + margin-right: 0.375rem; +} +.mb-5 { + margin-bottom: 1.25rem; +} +.mb-10 { + margin-bottom: 2.5rem; +} +.ml-4 { + margin-left: 1rem; +} +.mr-6 { + margin-right: 1.5rem; +} +.mb-2\.5 { + margin-bottom: 0.625rem; +} +.mb-2 { + margin-bottom: 0.5rem; +} +.ml-5 { + margin-left: 1.25rem; +} +.mt-4 { + margin-top: 1rem; +} +.mt-2 { + margin-top: 0.5rem; +} +.mt-6 { + margin-top: 1.5rem; +} +.mt-5 { + margin-top: 1.25rem; +} +.mb-6 { + margin-bottom: 1.5rem; +} +.mr-4 { + margin-right: 1rem; +} +.ml-2\.5 { + margin-left: 0.625rem; +} +.mr-2\.5 { + margin-right: 0.625rem; +} +.ml-2 { + margin-left: 0.5rem; +} +.mr-8 { + margin-right: 2rem; +} +.ml-1\.5 { + margin-left: 0.375rem; +} +.mb-1 { + margin-bottom: 0.25rem; +} +.mr-0\.5 { + margin-right: 0.125rem; +} +.mr-0 { + margin-right: 0px; +} +.mt-1 { + margin-top: 0.25rem; +} +.ml-0\.5 { + margin-left: 0.125rem; +} +.ml-0 { + margin-left: 0px; +} +.mt-2\.5 { + margin-top: 0.625rem; +} +.mt-1\.5 { + margin-top: 0.375rem; +} +.ml-3 { + margin-left: 0.75rem; +} +.mb-8 { + margin-bottom: 2rem; +} +.mb-7 { + margin-bottom: 1.75rem; +} +.mt-3 { + margin-top: 0.75rem; +} +.mt-8 { + margin-top: 2rem; +} +.mb-1\.5 { + margin-bottom: 0.375rem; +} +.mt-20 { + margin-top: 5rem; +} +.mt-10 { + margin-top: 2.5rem; +} +.mt-24 { + margin-top: 6rem; +} +.\!mt-3 { + margin-top: 0.75rem !important; +} +.ml-auto { + margin-left: auto; +} +.mb-12 { + margin-bottom: 3rem; +} +.-mt-4 { + margin-top: -1rem; +} +.-mt-1\.5 { + margin-top: -0.375rem; +} +.-mt-1 { + margin-top: -0.25rem; +} +.\!mr-1\.5 { + margin-right: 0.375rem !important; +} +.\!mr-1 { + margin-right: 0.25rem !important; +} +.mt-7 { + margin-top: 1.75rem; +} +.-mb-7 { + margin-bottom: -1.75rem; +} +.ml-8 { + margin-left: 2rem; +} +.mr-auto { + margin-right: auto; +} +.mr-5 { + margin-right: 1.25rem; +} +.-mt-6 { + margin-top: -1.5rem; +} +.ml-\[26px\] { + margin-left: 26px; +} +.mb-\[5px\] { + margin-bottom: 5px; +} +.mb-\[17px\] { + margin-bottom: 17px; +} +.-mt-3 { + margin-top: -0.75rem; +} +.mr-10 { + margin-right: 2.5rem; +} +.box-content { + box-sizing: content-box; +} +.block { + display: block; +} +.inline-block { + display: inline-block; +} +.\!inline-block { + display: inline-block !important; +} +.inline { + display: inline; +} +.flex { + display: flex; +} +.inline-flex { + display: inline-flex; +} +.table { + display: table; +} +.grid { + display: grid; +} +.contents { + display: contents; +} +.hidden { + display: none; +} +.h-\[80px\] { + height: 80px; +} +.h-1 { + height: 0.25rem; +} +.h-full { + height: 100%; +} +.h-3 { + height: 0.75rem; +} +.h-0\.5 { + height: 0.125rem; +} +.h-0 { + height: 0px; +} +.h-fit { + height: -moz-fit-content; + height: fit-content; +} +.h-5 { + height: 1.25rem; +} +.h-screen { + height: 100vh; +} +.h-\[62vh\] { + height: 62vh; +} +.h-px { + height: 1px; +} +.h-\[calc\(100vh_-_60px\)\] { + height: calc(100vh - 60px); +} +.h-\[100vh\] { + height: 100vh; +} +.h-\[280px\] { + height: 280px; +} +.h-\[100px\] { + height: 100px; +} +.\!h-\[100px\] { + height: 100px !important; +} +.\!h-10 { + height: 2.5rem !important; +} +.h-\[120px\] { + height: 120px; +} +.h-10 { + height: 2.5rem; +} +.h-\[20px\] { + height: 20px; +} +.h-\[16px\] { + height: 16px; +} +.h-\[200px\] { + height: 200px; +} +.h-\[auto\] { + height: auto; +} +.h-20 { + height: 5rem; +} +.h-4 { + height: 1rem; +} +.h-\[38px\] { + height: 38px; +} +.h-auto { + height: auto; +} +.h-\[calc\(100vh_-_50px\)\] { + height: calc(100vh - 50px); +} +.h-40 { + height: 10rem; +} +.h-\[150px\] { + height: 150px; +} +.max-h-\[240px\] { + max-height: 240px; +} +.max-h-\[350px\] { + max-height: 350px; +} +.max-h-full { + max-height: 100%; +} +.\!max-h-\[auto\] { + max-height: auto !important; +} +.max-h-\[250px\] { + max-height: 250px; +} +.min-h-\[60px\] { + min-height: 60px; +} +.min-h-\[80px\] { + min-height: 80px; +} +.min-h-\[calc\(100vh_-_60px\)\] { + min-height: calc(100vh - 60px); +} +.min-h-\[48px\] { + min-height: 48px; +} +.min-h-\[300px\] { + min-height: 300px; +} +.min-h-\[65vh\] { + min-height: 65vh; +} +.min-h-full { + min-height: 100%; +} +.min-h-\[647px\] { + min-height: 647px; +} +.w-full { + width: 100%; +} +.w-56 { + width: 14rem; +} +.w-\[calc\(100\%_\+_35px\)\] { + width: calc(100% + 35px); +} +.w-\[300px\] { + width: 300px; +} +.w-3 { + width: 0.75rem; +} +.w-fit { + width: -moz-fit-content; + width: fit-content; +} +.w-\[90\%\] { + width: 90%; +} +.w-\[65\%\] { + width: 65%; +} +.w-\[500px\] { + width: 500px; +} +.w-60 { + width: 15rem; +} +.w-screen { + width: 100vw; +} +.w-\[16px\] { + width: 16px; +} +.w-\[12px\] { + width: 12px; +} +.w-\[calc\(100\%_-_40px\)\] { + width: calc(100% - 40px); +} +.w-\[calc\(100\%_-_10px\)\] { + width: calc(100% - 10px); +} +.w-72 { + width: 18rem; +} +.w-\[250px\] { + width: 250px; +} +.w-\[212px\] { + width: 212px; +} +.w-\[595px\] { + width: 595px; +} +.w-64 { + width: 16rem; +} +.w-\[200px\] { + width: 200px; +} +.w-\[280px\] { + width: 280px; +} +.w-\[100px\] { + width: 100px; +} +.\!w-\[100px\] { + width: 100px !important; +} +.w-\[270px\] { + width: 270px; +} +.w-\[140px\] { + width: 140px; +} +.\!w-\[200px\] { + width: 200px !important; +} +.\!w-\[380px\] { + width: 380px !important; +} +.w-\[315px\] { + width: 315px; +} +.w-\[30px\] { + width: 30px; +} +.w-\[110\%\] { + width: 110%; +} +.w-\[600px\] { + width: 600px; +} +.w-52 { + width: 13rem; +} +.w-\[400px\] { + width: 400px; +} +.w-\[450px\] { + width: 450px; +} +.w-8 { + width: 2rem; +} +.w-2\.5 { + width: 0.625rem; +} +.w-2 { + width: 0.5rem; +} +.w-\[118px\] { + width: 118px; +} +.w-10 { + width: 2.5rem; +} +.w-32 { + width: 8rem; +} +.w-7 { + width: 1.75rem; +} +.w-5 { + width: 1.25rem; +} +.w-\[366px\] { + width: 366px; +} +.w-0\.5 { + width: 0.125rem; +} +.w-0 { + width: 0px; +} +.w-\[352px\] { + width: 352px; +} +.w-\[150px\] { + width: 150px; +} +.w-\[170px\] { + width: 170px; +} +.w-\[800px\] { + width: 800px; +} +.\!w-\[800px\] { + width: 800px !important; +} +.w-\[442px\] { + width: 442px; +} +.min-w-\[150px\] { + min-width: 150px; +} +.min-w-\[430px\] { + min-width: 430px; +} +.min-w-\[300px\] { + min-width: 300px; +} +.min-w-\[400px\] { + min-width: 400px; +} +.min-w-\[450px\] { + min-width: 450px; +} +.min-w-\[480px\] { + min-width: 480px; +} +.min-w-\[335px\] { + min-width: 335px; +} +.max-w-full { + max-width: 100%; +} +.max-w-\[200px\] { + max-width: 200px; +} +.max-w-\[90\%\] { + max-width: 90%; +} +.max-w-\[300px\] { + max-width: 300px; +} +.max-w-\[500px\] { + max-width: 500px; +} +.max-w-\[1000px\] { + max-width: 1000px; +} +.max-w-md { + max-width: 28rem; +} +.max-w-screen-md { + max-width: 768px; +} +.max-w-\[50\%\] { + max-width: 50%; +} +.max-w-\[70\%\] { + max-width: 70%; +} +.max-w-\[1400px\] { + max-width: 1400px; +} +.max-w-\[95\%\] { + max-width: 95%; +} +.max-w-\[565px\] { + max-width: 565px; +} +.max-w-\[520px\] { + max-width: 520px; +} +.max-w-\[700px\] { + max-width: 700px; +} +.\!max-w-full { + max-width: 100% !important; +} +.max-w-sm { + max-width: 24rem; +} +.max-w-3xl { + max-width: 48rem; +} +.max-w-\[400px\] { + max-width: 400px; +} +.max-w-\[887px\] { + max-width: 887px; +} +.max-w-\[40vw\] { + max-width: 40vw; +} +.max-w-\[calc\(50\%_-_12px\)\] { + max-width: calc(50% - 12px); +} +.max-w-\[60vw\] { + max-width: 60vw; +} +.max-w-\[550px\] { + max-width: 550px; +} +.max-w-\[442px\] { + max-width: 442px; +} +.max-w-\[80\%\] { + max-width: 80%; +} +.\!max-w-\[50\%\] { + max-width: 50% !important; +} +.shrink-0 { + flex-shrink: 0; +} +.grow-0 { + flex-grow: 0; +} +.grow { + flex-grow: 1; +} +.basis-6\/12 { + flex-basis: 50%; +} +.basis-full { + flex-basis: 100%; +} +.basis-2\/4 { + flex-basis: 50%; +} +.basis-auto { + flex-basis: auto; +} +.translate-x-1\/2 { + --tw-translate-x: 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-y-1\/2 { + --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-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)); +} +.-translate-y-2 { + --tw-translate-y: -0.5rem; + 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-y-0 { + --tw-translate-y: 0px; + 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-y-11 { + --tw-translate-y: -2.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)); +} +.-translate-y-32 { + --tw-translate-y: -8rem; + 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-y-0 { + --tw-translate-y: -0px; + 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-1\/2 { + --tw-translate-x: -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-y-2\/4 { + --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-2\/4 { + --tw-translate-x: -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-y-1\/2 { + --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-y-full { + --tw-translate-y: 100%; + 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-\[20px\] { + --tw-translate-x: -20px; + 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-\[110\%\] { + --tw-translate-x: -110%; + 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-y-2 { + --tw-translate-y: 0.5rem; + 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-0 { + --tw-translate-x: 0px; + 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-full { + --tw-translate-x: 100%; + 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-\[0px\] { + --tw-translate-x: 0px; + 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-\[150\%\] { + --tw-translate-x: -150%; + 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-1 { + --tw-translate-x: 0.25rem; + 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)); +} +.rotate-180 { + --tw-rotate: 180deg; + 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)); +} +.rotate-0 { + --tw-rotate: 0deg; + 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)); +} +.scale-75 { + --tw-scale-x: .75; + --tw-scale-y: .75; + 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)); +} +.scale-0 { + --tw-scale-x: 0; + --tw-scale-y: 0; + 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)); +} +.scale-90 { + --tw-scale-x: .9; + --tw-scale-y: .9; + 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)); +} +.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)); +} +@keyframes spin { + + to { + transform: rotate(360deg); + } +} +.animate-spin { + animation: spin 1s linear infinite; +} +.cursor-pointer { + cursor: pointer; +} +.\!cursor-not-allowed { + cursor: not-allowed !important; +} +.cursor-not-allowed { + cursor: not-allowed; +} +.resize { + resize: both; +} +.list-disc { + list-style-type: disc; +} +.grid-flow-row { + grid-auto-flow: row; +} +.grid-flow-col { + grid-auto-flow: column; +} +.grid-cols-2 { + grid-template-columns: repeat(2, minmax(0, 1fr)); +} +.flex-row-reverse { + flex-direction: row-reverse; +} +.flex-col { + flex-direction: column; +} +.flex-col-reverse { + flex-direction: column-reverse; +} +.flex-wrap { + flex-wrap: wrap; +} +.flex-wrap-reverse { + flex-wrap: wrap-reverse; +} +.items-start { + align-items: flex-start; +} +.items-end { + align-items: flex-end; +} +.items-center { + align-items: center; +} +.justify-start { + justify-content: flex-start; +} +.justify-end { + justify-content: flex-end; +} +.justify-center { + justify-content: center; +} +.justify-between { + justify-content: space-between; +} +.justify-items-end { + justify-items: end; +} +.justify-items-center { + justify-items: center; +} +.gap-5 { + gap: 1.25rem; +} +.gap-4 { + gap: 1rem; +} +.gap-3 { + gap: 0.75rem; +} +.gap-2 { + gap: 0.5rem; +} +.gap-6 { + gap: 1.5rem; +} +.gap-2\.5 { + gap: 0.625rem; +} +.gap-8 { + gap: 2rem; +} +.gap-y-6 { + row-gap: 1.5rem; +} +.gap-x-2 { + -moz-column-gap: 0.5rem; + column-gap: 0.5rem; +} +.space-x-4 > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 0; + margin-right: calc(1rem * var(--tw-space-x-reverse)); + margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse))); +} +.space-x-2 > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 0; + margin-right: calc(0.5rem * var(--tw-space-x-reverse)); + margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse))); +} +.space-x-5 > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 0; + margin-right: calc(1.25rem * var(--tw-space-x-reverse)); + margin-left: calc(1.25rem * calc(1 - var(--tw-space-x-reverse))); +} +.space-y-2 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(0.5rem * var(--tw-space-y-reverse)); +} +.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))); +} +.space-x-1 > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 0; + margin-right: calc(0.25rem * var(--tw-space-x-reverse)); + margin-left: calc(0.25rem * calc(1 - var(--tw-space-x-reverse))); +} +.space-y-1\.5 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(0.375rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(0.375rem * var(--tw-space-y-reverse)); +} +.space-y-1 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(0.25rem * var(--tw-space-y-reverse)); +} +.space-x-8 > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 0; + margin-right: calc(2rem * var(--tw-space-x-reverse)); + margin-left: calc(2rem * calc(1 - var(--tw-space-x-reverse))); +} +.space-x-2\.5 > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 0; + margin-right: calc(0.625rem * var(--tw-space-x-reverse)); + margin-left: calc(0.625rem * calc(1 - var(--tw-space-x-reverse))); +} +.space-x-6 > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 0; + margin-right: calc(1.5rem * var(--tw-space-x-reverse)); + margin-left: calc(1.5rem * calc(1 - var(--tw-space-x-reverse))); +} +.space-y-4 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(1rem * var(--tw-space-y-reverse)); +} +.overflow-hidden { + overflow: hidden; +} +.overflow-x-auto { + overflow-x: auto; +} +.overflow-y-auto { + overflow-y: auto; +} +.overflow-x-hidden { + overflow-x: hidden; +} +.overflow-y-hidden { + overflow-y: hidden; +} +.overflow-x-scroll { + overflow-x: scroll; +} +.overflow-y-scroll { + overflow-y: scroll; +} +.truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.overflow-ellipsis { + text-overflow: ellipsis; +} +.text-ellipsis { + text-overflow: ellipsis; +} +.whitespace-nowrap { + white-space: nowrap; +} +.whitespace-pre { + white-space: pre; +} +.break-all { + word-break: break-all; +} +.rounded-full { + border-radius: 9999px; +} +.rounded-md { + border-radius: 0.375rem; +} +.rounded-xl { + border-radius: 0.75rem; +} +.rounded { + border-radius: 0.25rem; +} +.rounded-lg { + border-radius: 0.5rem; +} +.\!rounded-sm { + border-radius: 0.125rem !important; +} +.rounded-sm { + border-radius: 0.125rem; +} +.\!rounded-full { + border-radius: 9999px !important; +} +.rounded-t-lg { + border-top-left-radius: 0.5rem; + border-top-right-radius: 0.5rem; +} +.rounded-l-lg { + border-top-left-radius: 0.5rem; + border-bottom-left-radius: 0.5rem; +} +.rounded-r-lg { + border-top-right-radius: 0.5rem; + border-bottom-right-radius: 0.5rem; +} +.rounded-tl-lg { + border-top-left-radius: 0.5rem; +} +.rounded-tr-lg { + border-top-right-radius: 0.5rem; +} +.rounded-br-lg { + border-bottom-right-radius: 0.5rem; +} +.rounded-bl-lg { + border-bottom-left-radius: 0.5rem; +} +.border { + border-width: 1px; +} +.border-2 { + border-width: 2px; +} +.border-0 { + border-width: 0px; +} +.\!border { + border-width: 1px !important; +} +.border-y { + border-top-width: 1px; + border-bottom-width: 1px; +} +.border-b { + border-bottom-width: 1px; +} +.border-l-2 { + border-left-width: 2px; +} +.border-l { + border-left-width: 1px; +} +.border-t { + border-top-width: 1px; +} +.border-r { + border-right-width: 1px; +} +.border-b-2 { + border-bottom-width: 2px; +} +.border-l-4 { + border-left-width: 4px; +} +.border-dashed { + border-style: dashed; +} +.border-none { + border-style: none; +} +.border-n-10 { + --tw-border-opacity: 1; + border-color: rgba(var(--n-10), var(--tw-border-opacity)); +} +.border-spring-50 { + --tw-border-opacity: 1; + border-color: rgba(var(--spring-50), var(--tw-border-opacity)); +} +.border-crimson-20 { + --tw-border-opacity: 1; + border-color: rgba(var(--crimson-20), var(--tw-border-opacity)); +} +.\!border-crimson-20 { + --tw-border-opacity: 1 !important; + border-color: rgba(var(--crimson-20), var(--tw-border-opacity)) !important; +} +.border-n-20 { + --tw-border-opacity: 1; + border-color: rgba(var(--n-20), var(--tw-border-opacity)); +} +.border-lavender-50 { + --tw-border-opacity: 1; + border-color: rgba(var(--lavender-50), var(--tw-border-opacity)); +} +.border-camel-50 { + --tw-border-opacity: 1; + border-color: rgba(var(--camel-50), var(--tw-border-opacity)); +} +.border-crimson-40 { + --tw-border-opacity: 1; + border-color: rgba(var(--crimson-40), var(--tw-border-opacity)); +} +.border-n-40 { + --tw-border-opacity: 1; + border-color: rgba(var(--n-40), var(--tw-border-opacity)); +} +.border-white { + --tw-border-opacity: 1; + border-color: rgba(var(--white), var(--tw-border-opacity)); } .border-n-30 { --tw-border-opacity: 1; border-color: rgba(var(--n-30), var(--tw-border-opacity)); } -.bg-rose { +.\!border-turquoise { + --tw-border-opacity: 1 !important; + border-color: rgba(var(--turquoise), var(--tw-border-opacity)) !important; +} +.border-salmon-50 { + --tw-border-opacity: 1; + border-color: rgba(var(--salmon-50), var(--tw-border-opacity)); +} +.border-crimson-50 { + --tw-border-opacity: 1; + border-color: rgba(var(--crimson-50), var(--tw-border-opacity)); +} +.border-spring-10 { + --tw-border-opacity: 1; + border-color: rgba(var(--spring-10), var(--tw-border-opacity)); +} +.border-b-n-20 { + --tw-border-opacity: 1; + border-bottom-color: rgba(var(--n-20), var(--tw-border-opacity)); +} +.border-l-salmon-50 { + --tw-border-opacity: 1; + border-left-color: rgba(var(--salmon-50), var(--tw-border-opacity)); +} +.border-b-bluecoral { + --tw-border-opacity: 1; + border-bottom-color: rgba(var(--bluecoral), var(--tw-border-opacity)); +} +.border-b-n-10 { + --tw-border-opacity: 1; + border-bottom-color: rgba(var(--n-10), var(--tw-border-opacity)); +} +.border-b-transparent { + border-bottom-color: transparent; +} +.border-l-turquoise { + --tw-border-opacity: 1; + border-left-color: rgba(var(--turquoise), var(--tw-border-opacity)); +} +.border-opacity-20 { + --tw-border-opacity: 0.2; +} +.bg-white { --tw-bg-opacity: 1; - background-color: rgba(var(--rose), var(--tw-bg-opacity)); + background-color: rgba(var(--white), var(--tw-bg-opacity)); +} +.bg-eggshell { + --tw-bg-opacity: 1; + background-color: rgba(var(--eggshell), var(--tw-bg-opacity)); +} +.bg-spring-10 { + --tw-bg-opacity: 1; + background-color: rgba(var(--spring-10), var(--tw-bg-opacity)); +} +.bg-spring-50 { + --tw-bg-opacity: 1; + background-color: rgba(var(--spring-50), var(--tw-bg-opacity)); +} +.bg-bluecoral { + --tw-bg-opacity: 1; + background-color: rgba(var(--bluecoral), var(--tw-bg-opacity)); +} +.bg-n-20 { + --tw-bg-opacity: 1; + background-color: rgba(var(--n-20), var(--tw-bg-opacity)); } .bg-n-10 { --tw-bg-opacity: 1; background-color: rgba(var(--n-10), var(--tw-bg-opacity)); } -.bg-spring-50 { - --tw-bg-opacity: 1; - background-color: rgba(var(--spring-50), var(--tw-bg-opacity)); +.bg-rose { + --tw-bg-opacity: 1; + background-color: rgba(var(--rose), var(--tw-bg-opacity)); +} +.bg-salmon-10 { + --tw-bg-opacity: 1; + background-color: rgba(var(--salmon-10), var(--tw-bg-opacity)); +} +.bg-camel-10 { + --tw-bg-opacity: 1; + background-color: rgba(var(--camel-10), var(--tw-bg-opacity)); +} +.bg-salmon-50 { + --tw-bg-opacity: 1; + background-color: rgba(var(--salmon-50), var(--tw-bg-opacity)); +} +.bg-black\/20 { + background-color: rgba(var(--black), 0.2); +} +.bg-n-50 { + --tw-bg-opacity: 1; + background-color: rgba(var(--n-50), var(--tw-bg-opacity)); +} +.bg-mint { + --tw-bg-opacity: 1; + background-color: rgba(var(--mint), var(--tw-bg-opacity)); +} +.bg-crimson-10 { + --tw-bg-opacity: 1; + background-color: rgba(var(--crimson-10), var(--tw-bg-opacity)); +} +.\!bg-rose { + --tw-bg-opacity: 1 !important; + background-color: rgba(var(--rose), var(--tw-bg-opacity)) !important; +} +.bg-\[\#FFF1F0\] { + --tw-bg-opacity: 1; + background-color: rgb(255 241 240 / var(--tw-bg-opacity)); +} +.bg-lavender-60 { + --tw-bg-opacity: 1; + background-color: rgba(var(--lavender-60), var(--tw-bg-opacity)); +} +.bg-black\/10 { + background-color: rgba(var(--black), 0.1); +} +.bg-paper { + --tw-bg-opacity: 1; + background-color: rgba(var(--paper), var(--tw-bg-opacity)); +} +.\!bg-teal-10 { + --tw-bg-opacity: 1 !important; + background-color: rgba(var(--teal-10), var(--tw-bg-opacity)) !important; +} +.bg-n-0 { + --tw-bg-opacity: 1; + background-color: rgba(var(--n-0), var(--tw-bg-opacity)); +} +.bg-n-40 { + --tw-bg-opacity: 1; + background-color: rgba(var(--n-40), var(--tw-bg-opacity)); +} +.bg-spring-30 { + --tw-bg-opacity: 1; + background-color: rgba(var(--spring-30), var(--tw-bg-opacity)); +} +.bg-black { + --tw-bg-opacity: 1; + background-color: rgba(var(--black), var(--tw-bg-opacity)); +} +.bg-\[\#EEF9F5\] { + --tw-bg-opacity: 1; + background-color: rgb(238 249 245 / var(--tw-bg-opacity)); +} +.p-0 { + padding: 0px; +} +.p-6 { + padding: 1.5rem; +} +.p-\[1px\] { + padding: 1px; +} +.p-4 { + padding: 1rem; +} +.p-2 { + padding: 0.5rem; +} +.p-2\.5 { + padding: 0.625rem; +} +.p-3 { + padding: 0.75rem; +} +.p-5 { + padding: 1.25rem; +} +.\!p-0 { + padding: 0px !important; +} +.p-8 { + padding: 2rem; +} +.p-1 { + padding: 0.25rem; +} +.p-1\.5 { + padding: 0.375rem; +} +.p-10 { + padding: 2.5rem; +} +.py-4 { + padding-top: 1rem; + padding-bottom: 1rem; +} +.px-5 { + padding-left: 1.25rem; + padding-right: 1.25rem; +} +.px-3 { + padding-left: 0.75rem; + padding-right: 0.75rem; +} +.px-4 { + padding-left: 1rem; + padding-right: 1rem; +} +.px-1 { + padding-left: 0.25rem; + padding-right: 0.25rem; +} +.py-2\.5 { + padding-top: 0.625rem; + padding-bottom: 0.625rem; +} +.py-2 { + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} +.px-6 { + padding-left: 1.5rem; + padding-right: 1.5rem; +} +.py-3 { + padding-top: 0.75rem; + padding-bottom: 0.75rem; +} +.py-1 { + padding-top: 0.25rem; + padding-bottom: 0.25rem; +} +.px-2 { + padding-left: 0.5rem; + padding-right: 0.5rem; +} +.px-7 { + padding-left: 1.75rem; + padding-right: 1.75rem; +} +.py-5 { + padding-top: 1.25rem; + padding-bottom: 1.25rem; +} +.py-\[6\.06\%\] { + padding-top: 6.06%; + padding-bottom: 6.06%; +} +.px-\[6\.06\%\] { + padding-left: 6.06%; + padding-right: 6.06%; } -.bg-n-40 { - --tw-bg-opacity: 1; - background-color: rgba(var(--n-40), var(--tw-bg-opacity)); +.py-6 { + padding-top: 1.5rem; + padding-bottom: 1.5rem; } -.bg-white { - --tw-bg-opacity: 1; - background-color: rgba(var(--white), var(--tw-bg-opacity)); +.\!px-14 { + padding-left: 3.5rem !important; + padding-right: 3.5rem !important; } -.p-3 { - padding: 0.75rem; +.px-8 { + padding-left: 2rem; + padding-right: 2rem; } -.p-4 { - padding: 1rem; +.py-8 { + padding-top: 2rem; + padding-bottom: 2rem; } -.px-6 { - padding-left: 1.5rem; - padding-right: 1.5rem; +.px-10 { + padding-left: 2.5rem; + padding-right: 2.5rem; } -.py-4 { - padding-top: 1rem; - padding-bottom: 1rem; +.py-1\.5 { + padding-top: 0.375rem; + padding-bottom: 0.375rem; +} +.px-3\.5 { + padding-left: 0.875rem; + padding-right: 0.875rem; +} +.px-\[3px\] { + padding-left: 3px; + padding-right: 3px; } .\!px-10 { padding-left: 2.5rem !important; padding-right: 2.5rem !important; } -.px-4 { +.py-7 { + padding-top: 1.75rem; + padding-bottom: 1.75rem; +} +.px-\[6\%\] { + padding-left: 6%; + padding-right: 6%; +} +.py-0 { + padding-top: 0px; + padding-bottom: 0px; +} +.py-10 { + padding-top: 2.5rem; + padding-bottom: 2.5rem; +} +.pr-2 { + padding-right: 0.5rem; +} +.pb-11 { + padding-bottom: 2.75rem; +} +.pl-3\.5 { + padding-left: 0.875rem; +} +.pl-3 { + padding-left: 0.75rem; +} +.pl-4 { padding-left: 1rem; +} +.pt-4 { + padding-top: 1rem; +} +.pr-6 { + padding-right: 1.5rem; +} +.pb-2\.5 { + padding-bottom: 0.625rem; +} +.pb-2 { + padding-bottom: 0.5rem; +} +.pb-0\.5 { + padding-bottom: 0.125rem; +} +.pb-0 { + padding-bottom: 0px; +} +.pb-6 { + padding-bottom: 1.5rem; +} +.pr-40 { + padding-right: 10rem; +} +.pb-\[71px\] { + padding-bottom: 71px; +} +.pt-2 { + padding-top: 0.5rem; +} +.pr-4 { padding-right: 1rem; } -.py-1 { +.pb-4 { + padding-bottom: 1rem; +} +.pl-6 { + padding-left: 1.5rem; +} +.pt-8 { + padding-top: 2rem; +} +.pl-8 { + padding-left: 2rem; +} +.pb-3 { + padding-bottom: 0.75rem; +} +.pt-1\.5 { + padding-top: 0.375rem; +} +.pt-1 { padding-top: 0.25rem; +} +.pr-3 { + padding-right: 0.75rem; +} +.pl-10 { + padding-left: 2.5rem; +} +.pb-8 { + padding-bottom: 2rem; +} +.pt-5 { + padding-top: 1.25rem; +} +.pb-72 { + padding-bottom: 18rem; +} +.pt-3 { + padding-top: 0.75rem; +} +.pt-0\.5 { + padding-top: 0.125rem; +} +.pt-0 { + padding-top: 0px; +} +.pr-20 { + padding-right: 5rem; +} +.pb-1 { padding-bottom: 0.25rem; } -.px-2 { - padding-left: 0.5rem; - padding-right: 0.5rem; +.pb-5 { + padding-bottom: 1.25rem; +} +.pt-10 { + padding-top: 2.5rem; +} +.pt-11 { + padding-top: 2.75rem; +} +.text-left { + text-align: left; } .text-center { text-align: center; } -.text-3xl { - font-size: 1.875rem; - line-height: 2.25rem; +.text-right { + text-align: right; +} +.align-baseline { + vertical-align: baseline; +} +.align-middle { + vertical-align: middle; +} +.font-sans { + font-family: Arial, sans-serif; +} +.text-sm { + font-size: 0.875rem; + line-height: 1.25rem; +} +.text-xs { + font-size: 0.75rem; + line-height: 1rem; +} +.text-4xl { + font-size: 2.25rem; + line-height: 2.5rem; +} +.\!text-xs { + font-size: 0.75rem !important; + line-height: 1rem !important; +} +.text-\[8px\] { + font-size: 8px; +} +.text-tiny { + font-size: 10px; } .text-base { font-size: 1rem; line-height: 1.5rem; } +.text-lg { + font-size: 1.125rem; + line-height: 1.75rem; +} +.text-\[7px\] { + font-size: 7px; +} +.text-xl { + font-size: 1.25rem; + line-height: 1.75rem; +} +.text-\[6px\] { + font-size: 6px; +} +.text-\[4px\] { + font-size: 4px; +} +.text-caption-c1 { + font-size: 12px; +} .text-2xl { font-size: 1.5rem; line-height: 2rem; } -.text-sm { - font-size: 0.875rem; +.text-heading-4 { + font-size: 32px; +} +.text-3xl { + font-size: 1.875rem; + line-height: 2.25rem; +} +.text-\[13px\] { + font-size: 13px; +} +.text-\[20px\] { + font-size: 20px; +} +.text-\[10px\] { + font-size: 10px; +} +.text-\[5px\] { + font-size: 5px; +} +.text-8xl { + font-size: 6rem; + line-height: 1; +} +.text-heading-5 { + font-size: 24px; +} +.text-\[30px\] { + font-size: 30px; +} +.\!text-\[6px\] { + font-size: 6px !important; +} +.text-\[94px\] { + font-size: 94px; +} +.text-\[16px\] { + font-size: 16px; +} +.text-6xl { + font-size: 3.75rem; + line-height: 1; +} +.text-\[64px\] { + font-size: 64px; +} +.font-bold { + font-weight: 700; +} +.font-medium { + font-weight: 500; +} +.font-semibold { + font-weight: 600; +} +.font-normal { + font-weight: 400; +} +.uppercase { + text-transform: uppercase; +} +.capitalize { + text-transform: capitalize; +} +.normal-case { + text-transform: none; +} +.italic { + font-style: italic; +} +.leading-normal { + line-height: 1.5; +} +.leading-4 { + line-height: 1rem; +} +.leading-\[1\.5\] { + line-height: 1.5; +} +.leading-relaxed { + line-height: 1.625; +} +.leading-5 { line-height: 1.25rem; } -.text-lg { - font-size: 1.125rem; +.leading-3 { + line-height: .75rem; +} +.leading-7 { line-height: 1.75rem; } -.text-xs { - font-size: 0.75rem; - line-height: 1rem; +.leading-9 { + line-height: 2.25rem; +} +.leading-6 { + line-height: 1.5rem; +} +.tracking-normal { + letter-spacing: 0em; +} +.text-n-40 { + --tw-text-opacity: 1; + color: rgba(var(--n-40), var(--tw-text-opacity)); +} +.text-n-30 { + --tw-text-opacity: 1; + color: rgba(var(--n-30), var(--tw-text-opacity)); +} +.text-bluecoral { + --tw-text-opacity: 1; + color: rgba(var(--bluecoral), var(--tw-text-opacity)); +} +.text-spring-50 { + --tw-text-opacity: 1; + color: rgba(var(--spring-50), var(--tw-text-opacity)); +} +.text-n-50 { + --tw-text-opacity: 1; + color: rgba(var(--n-50), var(--tw-text-opacity)); +} +.text-white { + --tw-text-opacity: 1; + color: rgba(var(--white), var(--tw-text-opacity)); +} +.text-crimson-40 { + --tw-text-opacity: 1; + color: rgba(var(--crimson-40), var(--tw-text-opacity)); +} +.text-salmon-50 { + --tw-text-opacity: 1; + color: rgba(var(--salmon-50), var(--tw-text-opacity)); +} +.text-crimson-50 { + --tw-text-opacity: 1; + color: rgba(var(--crimson-50), var(--tw-text-opacity)); +} +.text-salmon-40 { + --tw-text-opacity: 1; + color: rgba(var(--salmon-40), var(--tw-text-opacity)); +} +.text-camel-40 { + --tw-text-opacity: 1; + color: rgba(var(--camel-40), var(--tw-text-opacity)); +} +.text-blue-50 { + --tw-text-opacity: 1; + color: rgba(var(--bluecoral-50), var(--tw-text-opacity)); +} +.text-lavender-50 { + --tw-text-opacity: 1; + color: rgba(var(--lavender-50), var(--tw-text-opacity)); +} +.text-camel-50 { + --tw-text-opacity: 1; + color: rgba(var(--camel-50), var(--tw-text-opacity)); +} +.text-n-20 { + --tw-text-opacity: 1; + color: rgba(var(--n-20), var(--tw-text-opacity)); +} +.text-n-0 { + --tw-text-opacity: 1; + color: rgba(var(--n-0), var(--tw-text-opacity)); +} +.text-teal-50 { + --tw-text-opacity: 1; + color: rgba(var(--teal-50), var(--tw-text-opacity)); +} +.text-\[red\] { + --tw-text-opacity: 1; + color: rgb(255 0 0 / var(--tw-text-opacity)); +} +.text-black { + --tw-text-opacity: 1; + color: rgba(var(--black), var(--tw-text-opacity)); +} +.text-turquoise { + --tw-text-opacity: 1; + color: rgba(var(--turquoise), var(--tw-text-opacity)); +} +.text-blue-40 { + --tw-text-opacity: 1; + color: rgba(var(--bluecoral-40), var(--tw-text-opacity)); +} +.text-n-10 { + --tw-text-opacity: 1; + color: rgba(var(--n-10), var(--tw-text-opacity)); +} +.underline { + -webkit-text-decoration-line: underline; + text-decoration-line: underline; +} +.antialiased { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.opacity-0 { + opacity: 0; +} +.opacity-100 { + opacity: 1; +} +.opacity-50 { + opacity: 0.5; +} +.opacity-25 { + opacity: 0.25; } -.text-xl { - font-size: 1.25rem; - line-height: 1.75rem; +.opacity-40 { + opacity: 0.4; } -.font-bold { - font-weight: 700; +.shadow-sm { + --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } -.uppercase { - text-transform: uppercase; +.shadow-dropdown { + --tw-shadow: 0px 4px 40px rgba(0, 0, 0, 0.1); + --tw-shadow-colored: 0px 4px 40px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } -.capitalize { - text-transform: capitalize; +.shadow-md { + --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } -.tracking-normal { - letter-spacing: 0em; +.shadow-lg { + --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } -.text-bluecoral { - --tw-text-opacity: 1; - color: rgba(var(--bluecoral), var(--tw-text-opacity)); +.shadow-textbox { + --tw-shadow: 0px 8px 24px 20px rgba(42, 47, 48, 0.1); + --tw-shadow-colored: 0px 8px 24px 20px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } -.text-n-50 { - --tw-text-opacity: 1; - color: rgba(var(--n-50), var(--tw-text-opacity)); +.shadow-default { + --tw-shadow: 0px 2px 10px 10px rgba(0, 0, 0, 0.02); + --tw-shadow-colored: 0px 2px 10px 10px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } -.text-crimson-50 { - --tw-text-opacity: 1; - color: rgba(var(--crimson-50), var(--tw-text-opacity)); +.outline-none { + outline: 2px solid transparent; + outline-offset: 2px; } -.text-crimson-40 { - --tw-text-opacity: 1; - color: rgba(var(--crimson-40), var(--tw-text-opacity)); +.outline { + outline-style: solid; } -.text-n-40 { - --tw-text-opacity: 1; - color: rgba(var(--n-40), var(--tw-text-opacity)); +.drop-shadow { + --tw-drop-shadow: drop-shadow(0 1px 2px rgb(0 0 0 / 0.1)) drop-shadow(0 1px 1px rgb(0 0 0 / 0.06)); + filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); } -.text-spring-50 { - --tw-text-opacity: 1; - color: rgba(var(--spring-50), var(--tw-text-opacity)); +.grayscale { + --tw-grayscale: grayscale(100%); + filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); } .filter { filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); } +.transition-all { + transition-property: all; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} +.transition { + transition-property: color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} +.transition-transform { + transition-property: transform; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} .duration-200 { transition-duration: 200ms; } +.duration-300 { + transition-duration: 300ms; +} +.duration-500 { + transition-duration: 500ms; +} +.duration-75 { + transition-duration: 75ms; +} +.ease-out { + transition-timing-function: cubic-bezier(0, 0, 0.2, 1); +} +.ease-linear { + transition-timing-function: linear; +} :root { --black: 0, 0, 0; --white: 255, 255, 255; @@ -1018,7 +2849,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; @@ -1204,6 +3034,75 @@ h4 { font-size: 0.875rem; line-height: 1.25rem; } + .activity-nav-menu .activity-nav-list .nav__pointer, +.activity-nav-menu .activity-nav-list .nav__pointer-hover { + position: relative; + } + .activity-nav-menu .activity-nav-list .nav__pointer:after, +.activity-nav-menu .activity-nav-list .nav__pointer-hover:after { + content: ""; + position: absolute; + bottom: 0px; + left: 0px; + height: 0.25rem; + width: 100%; + --tw-scale-x: 0; + --tw-scale-y: 1; + 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)); + border-radius: 0.125rem; + --tw-bg-opacity: 1; + background-color: rgba(var(--turquoise), var(--tw-bg-opacity)); + transition-property: all; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 500ms; + } +} +@media screen and (max-width: 1420px) and (max-width: 1420px) { + .activity-nav-menu .activity-nav-list .nav__pointer:after, +.activity-nav-menu .activity-nav-list .nav__pointer-hover:after { + bottom: -0.5rem; + height: 0.25rem; + width: 100%; + } +} +@media screen and (max-width: 1420px) { + .activity-nav-menu .activity-nav-list .nav__pointer:hover:after, +.activity-nav-menu .activity-nav-list .nav__pointer-hover:hover:after { + --tw-scale-x: 1; + 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)); + } + .activity-nav-menu .activity-nav-list .nav__pointer:after { + --tw-scale-x: 1; + 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)); + } + .activity-nav-menu .activity-nav-list.activity-list .nav__pointer, +.activity-nav-menu .activity-nav-list.activity-list .nav__pointer-hover { + position: relative; + } + .activity-nav-menu .activity-nav-list.activity-list .nav__pointer:after, +.activity-nav-menu .activity-nav-list.activity-list .nav__pointer-hover:after { + content: ""; + } +} +@media screen and (max-width: 1420px) and (max-width: 1420px) { + .activity-nav-menu .activity-nav-list.activity-list .nav__pointer:after, +.activity-nav-menu .activity-nav-list.activity-list .nav__pointer-hover:after { + top: 0px; + left: -1rem; + height: 1rem; + width: 0.25rem; + } +} +@media screen and (max-width: 1420px) { + .activity-nav-menu .activity-nav-list.activity-list .nav__pointer:hover:after, +.activity-nav-menu .activity-nav-list.activity-list .nav__pointer-hover:hover:after { + --tw-scale-x: 1; + 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)); + } + .activity-nav-menu .activity-nav-list.activity-list .nav__pointer:after { + --tw-scale-x: 1; + 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)); + } .activity-nav-menu .activity-nav-list.language-nav-list { flex-direction: row; margin-bottom: 20px; @@ -1281,7 +3180,7 @@ h4 { @media screen and (max-width: 1420px) { .nav__pointer:after, .nav__pointer-hover:after { left: -1rem; - height: 100%; + height: 1rem; width: 0.25rem; } } @@ -1466,19 +3365,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 { @@ -2947,12 +4835,6 @@ button { .overlay__content .spinner { display: inline-block; } -@-webkit-keyframes spin { - - to { - transform: rotate(360deg); - } -} @keyframes spin { to { @@ -2960,8 +4842,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)); @@ -3004,8 +4885,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)); @@ -3065,40 +4945,263 @@ button { transform: translateY(15px); } -.hamburger-menu { - display: none; -} -@media screen and (max-width: 1420px) { - .hamburger-menu { +.hamburger-menu { + display: none; +} +@media screen and (max-width: 1420px) { + .hamburger-menu { + display: block; + } +} + +.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; + display: block !important; +} + +.first-letter\:uppercase::first-letter { + text-transform: uppercase; +} + +.file\:cursor-pointer::file-selector-button { + cursor: pointer; +} + +.file\:rounded-full::file-selector-button { + border-radius: 9999px; +} + +.file\:border::file-selector-button { + border-width: 1px; +} + +.file\:border-solid::file-selector-button { + border-style: solid; +} + +.file\:border-spring-50::file-selector-button { + --tw-border-opacity: 1; + border-color: rgba(var(--spring-50), var(--tw-border-opacity)); +} + +.file\:bg-white::file-selector-button { + --tw-bg-opacity: 1; + background-color: rgba(var(--white), var(--tw-bg-opacity)); +} + +.file\:px-4::file-selector-button { + padding-left: 1rem; + padding-right: 1rem; +} + +.file\:py-0\.5::file-selector-button { + padding-top: 0.125rem; + padding-bottom: 0.125rem; +} + +.file\:py-0::file-selector-button { + padding-top: 0px; + padding-bottom: 0px; +} + +.file\:text-spring-50::file-selector-button { + --tw-text-opacity: 1; + color: rgba(var(--spring-50), var(--tw-text-opacity)); +} + +.file\:outline-none::file-selector-button { + outline: 2px solid transparent; + outline-offset: 2px; +} + +.hover\:cursor-pointer:hover { + cursor: pointer; +} + +.hover\:border-b-2:hover { + border-bottom-width: 2px; +} + +.hover\:border-b-spring-50:hover { + --tw-border-opacity: 1; + border-bottom-color: rgba(var(--spring-50), var(--tw-border-opacity)); +} + +.hover\:border-b-turquoise:hover { + --tw-border-opacity: 1; + border-bottom-color: rgba(var(--turquoise), var(--tw-border-opacity)); +} + +.hover\:bg-n-10:hover { + --tw-bg-opacity: 1; + background-color: rgba(var(--n-10), var(--tw-bg-opacity)); +} + +.hover\:bg-n-20:hover { + --tw-bg-opacity: 1; + background-color: rgba(var(--n-20), var(--tw-bg-opacity)); +} + +.hover\:bg-teal-10:hover { + --tw-bg-opacity: 1; + background-color: rgba(var(--teal-10), var(--tw-bg-opacity)); +} + +.hover\:bg-white:hover { + --tw-bg-opacity: 1; + background-color: rgba(var(--white), var(--tw-bg-opacity)); +} + +.hover\:bg-bluecoral:hover { + --tw-bg-opacity: 1; + background-color: rgba(var(--bluecoral), var(--tw-bg-opacity)); +} + +.hover\:text-bluecoral:hover { + --tw-text-opacity: 1; + color: rgba(var(--bluecoral), var(--tw-text-opacity)); +} + +.hover\:text-spring-50:hover { + --tw-text-opacity: 1; + color: rgba(var(--spring-50), var(--tw-text-opacity)); +} + +.hover\:\!text-n-50:hover { + --tw-text-opacity: 1 !important; + color: rgba(var(--n-50), var(--tw-text-opacity)) !important; +} + +.hover\:text-white:hover { + --tw-text-opacity: 1; + color: rgba(var(--white), var(--tw-text-opacity)); +} + +.hover\:text-crimson-50:hover { + --tw-text-opacity: 1; + color: rgba(var(--crimson-50), var(--tw-text-opacity)); +} + +.hover\:text-n-50:hover { + --tw-text-opacity: 1; + color: rgba(var(--n-50), var(--tw-text-opacity)); +} + +.group:hover .group-hover\:visible { + visibility: visible; +} + +.group:hover .group-hover\:block { + display: block; +} + +.group:hover .group-hover\:translate-y-0 { + --tw-translate-y: 0px; + 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)); +} + +.group:hover .group-hover\:text-n-50 { + --tw-text-opacity: 1; + color: rgba(var(--n-50), var(--tw-text-opacity)); +} + +.group:hover .group-hover\:opacity-100 { + opacity: 1; +} + +@media (min-width: 640px) { + + .sm\:left-6 { + left: 1.5rem; + } + + .sm\:mx-10 { + margin-left: 2.5rem; + margin-right: 2.5rem; + } + + .sm\:mt-14 { + margin-top: 3.5rem; + } + + .sm\:mb-8 { + margin-bottom: 2rem; + } + + .sm\:mt-4 { + margin-top: 1rem; + } + + .sm\:mb-6 { + margin-bottom: 1.5rem; + } + + .sm\:mr-8 { + margin-right: 2rem; + } + + .sm\:mb-10 { + margin-bottom: 2.5rem; + } + + .sm\:mt-10 { + margin-top: 2.5rem; + } + + .sm\:mt-12 { + margin-top: 3rem; + } + + .sm\:block { display: block; } -} -.home-burger-menu.active { - translate: -490% -90%; -} -@media screen and (min-width: 640px) { - .home-burger-menu.active { - translate: -350% -140%; + .sm\:h-16 { + height: 4rem; } -} -@media screen and (max-width: 440px) { - .home-burger-menu.active { - translate: -380% -90%; + + .sm\:h-72 { + height: 18rem; } -} -html { - visibility: visible; - opacity: 1; - display: block !important; -} + .sm\:w-64 { + width: 16rem; + } -.first-letter\:uppercase::first-letter { - text-transform: uppercase; -} + .sm\:w-60 { + width: 15rem; + } -@media (min-width: 640px) { + .sm\:grid-cols-2 { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .sm\:justify-end { + justify-content: flex-end; + } + + .sm\:gap-10 { + gap: 2.5rem; + } + + .sm\:gap-y-10 { + row-gap: 2.5rem; + } .sm\:space-y-6 > :not([hidden]) ~ :not([hidden]) { --tw-space-y-reverse: 0; @@ -3106,36 +5209,430 @@ html { margin-bottom: calc(1.5rem * var(--tw-space-y-reverse)); } + .sm\:rounded-r-lg { + border-top-right-radius: 0.5rem; + border-bottom-right-radius: 0.5rem; + } + + .sm\:rounded-l-lg { + border-top-left-radius: 0.5rem; + border-bottom-left-radius: 0.5rem; + } + + .sm\:p-8 { + padding: 2rem; + } + + .sm\:p-10 { + padding: 2.5rem; + } + + .sm\:px-10 { + padding-left: 2.5rem; + padding-right: 2.5rem; + } + + .sm\:py-14 { + padding-top: 3.5rem; + padding-bottom: 3.5rem; + } + + .sm\:py-8 { + padding-top: 2rem; + padding-bottom: 2rem; + } + + .sm\:py-6 { + padding-top: 1.5rem; + padding-bottom: 1.5rem; + } + + .sm\:px-12 { + padding-left: 3rem; + padding-right: 3rem; + } + + .sm\:py-10 { + padding-top: 2.5rem; + padding-bottom: 2.5rem; + } + + .sm\:px-5 { + padding-left: 1.25rem; + padding-right: 1.25rem; + } + + .sm\:px-7 { + padding-left: 1.75rem; + padding-right: 1.75rem; + } + + .sm\:py-5 { + padding-top: 1.25rem; + padding-bottom: 1.25rem; + } + + .sm\:px-6 { + padding-left: 1.5rem; + padding-right: 1.5rem; + } + + .sm\:pr-40 { + padding-right: 10rem; + } + + .sm\:pb-0 { + padding-bottom: 0px; + } + + .sm\:pt-10 { + padding-top: 2.5rem; + } + + .sm\:pt-6 { + padding-top: 1.5rem; + } + + .sm\:pb-8 { + padding-bottom: 2rem; + } + .sm\:text-2xl { font-size: 1.5rem; line-height: 2rem; } + .sm\:text-heading-4 { + font-size: 32px; + } + .sm\:text-base { font-size: 1rem; line-height: 1.5rem; } + + .sm\:text-4xl { + font-size: 2.25rem; + line-height: 2.5rem; + } + + .sm\:text-heading-2 { + font-size: 56px; + } + + .sm\:leading-10 { + line-height: 2.5rem; + } } @media (min-width: 768px) { + .md\:my-0 { + margin-top: 0px; + margin-bottom: 0px; + } + + .md\:-mb-20 { + margin-bottom: -5rem; + } + + .md\:mb-14 { + margin-bottom: 3.5rem; + } + + .md\:mb-20 { + margin-bottom: 5rem; + } + + .md\:mt-20 { + margin-top: 5rem; + } + + .md\:flex { + display: flex; + } + + .md\:w-\[600px\] { + width: 600px; + } + + .md\:w-\[calc\(100\%_-_80px\)\] { + width: calc(100% - 80px); + } + + .md\:w-\[400px\] { + width: 400px; + } + + .md\:max-w-\[60vw\] { + max-width: 60vw; + } + + .md\:shrink-0 { + flex-shrink: 0; + } + + .md\:basis-2\/4 { + flex-basis: 50%; + } + + .md\:grid-cols-2 { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + .md\:flex-row { flex-direction: row; } + .md\:items-end { + align-items: flex-end; + } + + .md\:items-center { + align-items: center; + } + + .md\:rounded-r-none { + border-top-right-radius: 0px; + border-bottom-right-radius: 0px; + } + + .md\:rounded-l-none { + border-top-left-radius: 0px; + border-bottom-left-radius: 0px; + } + + .md\:bg-none { + background-image: none; + } + .md\:px-10 { padding-left: 2.5rem; padding-right: 2.5rem; } + + .md\:pb-0 { + padding-bottom: 0px; + } + + .md\:pb-16 { + padding-bottom: 4rem; + } + + .md\:text-4xl { + font-size: 2.25rem; + line-height: 2.5rem; + } +} + +@media (min-width: 1024px) { + + .lg\:mb-2 { + margin-bottom: 0.5rem; + } + + .lg\:mb-6 { + margin-bottom: 1.5rem; + } + + .lg\:mb-10 { + margin-bottom: 2.5rem; + } + + .lg\:mr-3\.5 { + margin-right: 0.875rem; + } + + .lg\:mr-3 { + margin-right: 0.75rem; + } + + .lg\:block { + display: block; + } + + .lg\:hidden { + display: none; + } + + .lg\:min-h-0 { + min-height: 0px; + } + + .lg\:w-\[auto\] { + width: auto; + } + + .lg\:w-auto { + width: auto; + } + + .lg\:min-w-\[300px\] { + min-width: 300px; + } + + .lg\:max-w-full { + max-width: 100%; + } + + .lg\:basis-6\/12 { + flex-basis: 50%; + } + + .lg\:grid-cols-4 { + grid-template-columns: repeat(4, minmax(0, 1fr)); + } + + .lg\:flex-row { + flex-direction: row; + } + + .lg\:justify-between { + justify-content: space-between; + } + + .lg\:justify-items-center { + justify-items: center; + } + + .lg\:justify-self-end { + justify-self: end; + } + + .lg\:py-28 { + padding-top: 7rem; + padding-bottom: 7rem; + } + + .lg\:px-14 { + padding-left: 3.5rem; + padding-right: 3.5rem; + } + + .lg\:pt-44 { + padding-top: 11rem; + } + + .lg\:pb-44 { + padding-bottom: 11rem; + } } @media (min-width: 1280px) { + .xl\:col-span-1 { + grid-column: span 1 / span 1; + } + + .xl\:mx-24 { + margin-left: 6rem; + margin-right: 6rem; + } + + .xl\:mb-6 { + margin-bottom: 1.5rem; + } + + .xl\:mb-4 { + margin-bottom: 1rem; + } + + .xl\:mr-1 { + margin-right: 0.25rem; + } + + .xl\:mb-8 { + margin-bottom: 2rem; + } + + .xl\:block { + display: block; + } + + .xl\:flex { + display: flex; + } + + .xl\:hidden { + display: none; + } + + .xl\:h-32 { + height: 8rem; + } + + .xl\:w-auto { + width: auto; + } + + .xl\:min-w-\[300px\] { + min-width: 300px; + } + + .xl\:basis-6\/12 { + flex-basis: 50%; + } + + .xl\:grid-cols-2 { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .xl\:flex-row { + 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; + } + + .xl\:px-\[12\%\] { + padding-left: 12%; + padding-right: 12%; + } + .xl\:px-2 { padding-left: 0.5rem; padding-right: 0.5rem; } + .xl\:px-1 { + padding-left: 0.25rem; + padding-right: 0.25rem; + } + + .xl\:px-24 { + padding-left: 6rem; + padding-right: 6rem; + } + + .xl\:px-14 { + padding-left: 3.5rem; + padding-right: 3.5rem; + } + + .xl\:pr-2 { + padding-right: 0.5rem; + } + + .xl\:pr-6 { + padding-right: 1.5rem; + } + + .xl\:pt-0 { + padding-top: 0px; + } + + .xl\:pr-40 { + padding-right: 10rem; + } + .xl\:text-heading-4 { font-size: 32px; } @@ -3148,4 +5645,9 @@ html { } } -/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzL3dlYnBvcnRhbC1hcHAuY3NzIiwibWFwcGluZ3MiOiJBQUFBOztDQUFBOzs7Q0FBQTs7QUFBQTs7O0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFBQTs7RUFBQTtBQUFBOztBQUFBOzs7OztDQUFBOztBQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7S0FBQTtFQUFBO0FBQUE7O0FBQUE7OztDQUFBOztBQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOzs7O0NBQUE7O0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFBQTs7Q0FBQTs7QUFBQTtFQUFBO1VBQUE7QUFBQTs7QUFBQTs7Q0FBQTs7QUFBQTs7Ozs7O0VBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBOztFQUFBO0FBQUE7O0FBQUE7OztDQUFBOztBQUFBOzs7O0VBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBO0VBQUE7QUFBQTs7QUFBQTs7Q0FBQTs7QUFBQTs7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBO0VBQUE7QUFBQTs7QUFBQTtFQUFBO0FBQUE7O0FBQUE7Ozs7Q0FBQTs7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOzs7O0NBQUE7O0FBQUE7Ozs7O0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFBQTs7Q0FBQTs7QUFBQTs7RUFBQTtBQUFBOztBQUFBOzs7Q0FBQTs7QUFBQTs7OztFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBO0VBQUE7QUFBQTs7QUFBQTs7Q0FBQTs7QUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBOztFQUFBO0FBQUE7O0FBQUE7OztDQUFBOztBQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBO0VBQUE7QUFBQTs7QUFBQTs7O0NBQUE7O0FBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBOzs7Ozs7Ozs7Ozs7O0VBQUE7QUFBQTs7QUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFBQTtFQUFBO0FBQUE7O0FBQUE7OztFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBO0VBQUE7QUFBQTs7QUFBQTs7O0NBQUE7O0FBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0VBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBOztFQUFBO0FBQUE7O0FBQUE7O0NBQUE7QUFBQTtFQUFBO0FBQUE7O0FBQUE7Ozs7Q0FBQTs7QUFBQTs7Ozs7Ozs7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7O0VBQUE7RUFBQTtBQUFBOztBQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FDQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtB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RUFDRTtBTGllRjs7QUsvZEE7RUFDRTtFQUNBO0VBQ0E7QUxrZUY7O0FLL2RFO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBS0E7QUFMQTtBQUVBO0VBSEY7SUFJSTtFTHFlRjtBQUNGO0FLamVJO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUNBO0FBREE7QUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFDQTtBQURBO0FBS0E7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFJQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBOztBQUtBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUlBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUlBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUNBO0FBREE7QUFJRjtFQUNFO0VBQ0E7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FMOGRKO0FLM2RFO0VBQ0U7RUFDQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBTDZkSjtBS3hkTTtFQUFBO0VBQUE7QUFBQTtBQUtGO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFHRjtFQUNFO0VBQ0E7QUx3ZEo7QUtwZEk7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUlBO0VBQUE7RUFBQTtBQUFBO0FBSUE7RUFBQTtFQUFBO0FBQUE7QUFJQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUtBO0FBTEE7QUFFQTtFQUhGO0lBSUk7RUxzZEo7QUFDRjs7QUtsZEE7RUFDRTtBTHFkRjs7QUtsZEU7RUFDRTtBTHFkSjs7QUtqZEU7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBR0U7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFDQTtBQURBO0FBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFDQTtBQURBO0FBS0E7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFJRjtFQUFBO0FBQUE7QUFHRTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUNBO0VBQ0E7QUFGQTtBQUtBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFJRjtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBRUY7RUFDRTtFQUNBO0VBQ0E7QUxxZEY7QUtwZEU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTHNkSjtBS3JkSTtFQUNFO0FMdWROOztBS25kQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FMc2RGOztBS3BkQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTHVkRjs7QUtyZEE7RUFDRTtBTHdkRjs7QUt0ZEE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTHlkRjs7QUt2ZEE7RUFDRTtBTDBkRjs7QUt4ZEE7RUFDRTtBTDJkRjs7QU1sckJFO0VBQUE7RUFBQTtFQUFBO0VBQUE7S0FBQTtVQUFBO0FBQUE7QUFFRTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUNBO0FBREE7QUFFQTtFQUNFO0VBQ0E7RUFDQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FOd3JCTjtBTXByQkk7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFFRTtFQUFBO0VBQUE7QUFBQTtBQUVFO0VBQUE7QUFBQTtBQUtKO0VBQUE7RUFBQTtBQUFBOztBQUdKOztFQUFBO0FBR0E7RUEwSEU7O0dBQUE7QU5na0JGO0FNeHJCSTtFQUFBO0VBQUE7QUFBQTtBQUVFO0VBQUE7QUFBQTtBQUlBO0VBQUE7QUFBQTtBQUVFO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUtKO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFDQTtFQUNFO0VBQ0E7RUFDQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FOMnJCTjtBTXhyQk07RUFBQTtFQUFBO0FBQUE7QUFLRjtFQUFBO0VBQUE7QUFBQTtBQUlBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFFRTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBR0E7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQU1GOzs7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFFRTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTs7O0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUdBOzs7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFHQTtFQUFBO0VBQUE7QUFBQTtBQUFBOzs7RUFBQTtFQUFBO0FBQUE7QUFNRjs7RUFBQTtBQUFBO0FBSUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBRUU7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFJRjtFQUFBO0FBQUE7QUFFRTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQ0E7RUFDQTtBQUZBO0FBTUY7RUFDRTtFQUNBO0VBQ0E7QU4yckJOO0FNdnJCSTtFQUFBO0FBQUE7QUFDQTtFQUNFO0VBQ0E7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBTjJyQk47QU0zckJN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QTtBQUFBO0FBSUE7RUFBQTtFQUFBO0FBQUE7O0FBS0Y7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFDQTtBQURBO0FBSUU7RUFBQTtFQUFBO0FBQUE7O0FBS0Y7RUFBQTtBQUFBOztBQUlBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQ0E7QUFEQTtBQUlFO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBS0Y7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFJQTtFQUFBO0FBQUE7O0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQ0E7QUFEQTtBQUlFO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUdGO0VBQ0U7RUFDQTtBVCttQ0o7O0FVcjFDRTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQ0E7RUFDQTtBQUZBO0FBS0U7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFJQTtFQUFBO0VBQUE7RUFBQTtFQUNBO0FBREE7QUFJRTtFQUFBO0FBQUE7QUFBQTs7RUFBQTtJQUFBO0VBQUE7QUFBQTtBQUFBOztFQUFBO0lBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtVQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFDQTtFQUNBO0VBQ0E7QUFIQTs7QUFRSjtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQ0E7QUFEQTtBQUlFO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBSUE7RUFBQTtFQUFBO0VBQUE7RUFDQTtBQURBO0FBSUU7RUFBQTtBQUFBO0FBQUE7O0VBQUE7SUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO1VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUNBO0VBQ0E7RUFDQTtBQUhBOztBQ2pDSjtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFDQTtBQURBO0FBS0k7RUFBQTtFQUFBO0FBQUE7QUFLRjtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBRUY7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBWDIzQ0o7QVd4M0NJO0VBQ0U7RUFDQTtBWDAzQ047QVd4M0NJO0VBQ0U7QVgwM0NOO0FXeDNDSTtFQUNFO0VBQ0E7QVgwM0NOO0FXdjNDRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FYeTNDSjs7QVd0M0NBO0VBQ0U7QVh5M0NGO0FXdjNDRTtFQUhGO0lBSUk7RVgwM0NGO0FBQ0Y7O0FXdjNDQTtFQUlFO0FYdTNDRjtBVzEzQ0U7RUFERjtJQUVJO0VYNjNDRjtBQUNGO0FXMTNDRTtFQU5GO0lBT0k7RVg2M0NGO0FBQ0Y7O0FBNTVDQTtFQUNFO0VBQ0E7RUFDQTtBQSs1Q0Y7O0FIMTdDQTtFQUFBO0NlQUE7O0FmQUE7O0VBQUE7SUFBQSx3QmVBQTtJZkFBLCtEZUFBO0lmQUE7R2VBQTs7RWZBQTtJQUFBLGtCZUFBO0lmQUE7R2VBQTs7RWZBQTtJQUFBLGdCZUFBO0lmQUE7R2VBQTtDQUFBOztBZkFBOztFQUFBO0lBQUE7R2VBQTs7RWZBQTtJQUFBLHFCZUFBO0lmQUE7R2VBQTtDQUFBOztBZkFBOztFQUFBO0lBQUEscUJlQUE7SWZBQTtHZUFBOztFZkFBO0lBQUE7R2VBQTtDQUFBOztBZkFBOztFQUFBO0lBQUE7R2VBQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy90YWlsd2luZGNzcy9iYXNlLmNzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdGFpbHdpbmRjc3MvdXRpbGl0aWVzLmNzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvYWJzdHJhY3RzL192YXJpYWJsZXMuc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3Mvd2VicG9ydGFsLWFwcC5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9iYXNlL190eXBvZ3JhcGh5LnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2xheW91dHMvX2hlYWRlci5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9sYXlvdXRzL19tYWluLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2xheW91dHMvX3dlYnBvcnRhbHBhZ2VzLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2NvbXBvbmVudC9faW5wdXQuc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvY29tcG9uZW50L19mb3Jtcy5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9sYXlvdXRzL19mb290ZXIuc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvY29tcG9uZW50L19zZWxlY3QyLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2NvbXBvbmVudC9fYnV0dG9uLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2NvbXBvbmVudC9fb3ZlcmxheS5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9jb21wb25lbnQvX2hhbWJ1cmdlci5zY3NzIiwid2VicGFjazovLy88bm8gc291cmNlPiJdLCJzb3VyY2VzQ29udGVudCI6WyJAdGFpbHdpbmQgYmFzZTtcbiIsIkB0YWlsd2luZCB1dGlsaXRpZXM7XG4iLCI6cm9vdCB7XG4gIC0tYmxhY2s6IDAsIDAsIDA7XG4gIC0td2hpdGU6IDI1NSwgMjU1LCAyNTU7XG4gIC0tdHJhbnNwYXJlbnQ6IHRyYW5zcGFyZW50O1xuXG4gIC8vIE5ldXRyYWxzXG4gIC0tbi0wOiAyNTUsIDI1NSwgMjU1O1xuICAtLW4tMTA6IDI0MSwgMjQ3LCAyNDk7XG4gIC0tbi0yMDogMjEzLCAyMjAsIDIyMjtcbiAgLS1uLTMwOiAxNjYsIDE4MSwgMTg2O1xuICAtLW4tNDA6IDEwNCwgMTIxLCAxMjY7XG4gIC0tbi01MDogNDIsIDQ3LCA0ODtcblxuICAvLyBQcmltYXJ5IGNvbG9yc1xuICAtLXR1cnF1b2lzZTogNiwgMjE5LCAyMjg7XG4gIC0tYmx1ZWNvcmFsOiAyMSwgODMsIDEwMjtcblxuICAtLWJsdWVjb3JhbC00MDogNjAsIDExMiwgMTI4O1xuICAtLWJsdWVjb3JhbC01MDogMjEsIDgzLCAxMDI7XG5cbiAgLy8gU2Vjb25kYXJ5IGNvbG9yc1xuICAvLyBDYW1lbFxuICAtLWNhbWVsLTEwOiAyNTIsIDIzOSwgMjI4O1xuICAtLWNhbWVsLTIwOiAyNDksIDIxOSwgMTkzO1xuICAtLWNhbWVsLTMwOiAyNDgsIDIwNywgMTczO1xuICAtLWNhbWVsLTQwOiAyNDYsIDE5NSwgMTUyO1xuICAtLWNhbWVsLTUwOiAyNDQsIDE4MywgMTMyO1xuICAvLyBUZWFsXG4gIC0tdGVhbC0xMDogMjMxLCAyNDMsIDI0MTtcbiAgLS10ZWFsLTIwOiAyMTUsIDIzNSwgMjMyO1xuICAtLXRlYWwtMzA6IDE5NSwgMjI0LCAyMjA7XG4gIC0tdGVhbC00MDogMTc1LCAyMTQsIDIwOTtcbiAgLS10ZWFsLTUwOiAxMzUsIDE5NCwgMTg2O1xuICAvLyBTcHJpbmdcbiAgLS1zcHJpbmctMTA6IDE3OCwgMjIxLCAyMTE7XG4gIC0tc3ByaW5nLTIwOiAxMzksIDIwNCwgMTg5O1xuICAtLXNwcmluZy0zMDogMTAwLCAxODcsIDE2NztcbiAgLS1zcHJpbmctNDA6IDYyLCAxNzAsIDE0NTtcbiAgLS1zcHJpbmctNTA6IDIzLCAxNTMsIDEyMztcbiAgLy8gTGFnb29uXG4gIC0tbGFnb29uLTEwOiAyMDksIDIzOCwgMjQwO1xuICAtLWxhZ29vbi0yMDogMTc4LCAyMjcsIDIyOTtcbiAgLS1sYWdvb24tMzA6IDEzOSwgMjEzLCAyMTY7XG4gIC0tbGFnb29uLTQwOiAxMDEsIDIwMCwgMjA0O1xuICAtLWxhZ29vbi01MDogMjQsIDE3MiwgMTc4O1xuICAvLyBTYWxtb25cbiAgLS1zYWxtb24tMTA6IDI1NSwgMjI3LCAyMjQ7XG4gIC0tc2FsbW9uLTIwOiAyNTUsIDIwOCwgMjAzO1xuICAtLXNhbG1vbi0zMDogMjU1LCAxODQsIDE3NztcbiAgLS1zYWxtb24tNDA6IDI1NSwgMTYxLCAxNTI7XG4gIC0tc2FsbW9uLTUwOiAyNTUsIDExNCwgMTAwO1xuICAvLyBMYXZlbmRlclxuICAtLWxhdmVuZGVyLTEwOiAyMzcsIDIyNiwgMjUxO1xuICAtLWxhdmVuZGVyLTIwOiAyMjUsIDIwNywgMjQ4O1xuICAtLWxhdmVuZGVyLTMwOiAyMTAsIDE4MiwgMjQ0O1xuICAtLWxhdmVuZGVyLTQwOiAxOTYsIDE1OCwgMjQwO1xuICAtLWxhdmVuZGVyLTUwOiAxNjYsIDExMCwgMjMzO1xuICAtLWxhdmVuZGVyLTYwOiAyNDYsIDI0MCwgMjU1O1xuICAvLyBDcmltc29uXG4gIC0tY3JpbXNvbi0xMDogMjU1LCAyNDgsIDI0NztcbiAgLS1jcmltc29uLTIwOiAyNTAsIDIxMywgMjE1O1xuICAtLWNyaW1zb24tMzA6IDI0MSwgMTU1LCAxNjA7XG4gIC0tY3JpbXNvbi00MDogMjI3LCA3NywgOTE7XG4gIC0tY3JpbXNvbi01MDogMjA5LCAwLCAzMDtcblxuICAvLyBQYXN0ZWwgY29sb3JzXG4gIC0tZWdnc2hlbGw6IDI1NSwgMjUzLCAyMzE7XG4gIC0tbWludDogMjM4LCAyNDksIDI0NTtcbiAgLS1yb3NlOiAyNTUsIDI0MSwgMjQwO1xuICAtLXBhcGVyOiAyNDYsIDI0NywgMjUyO1xufVxuIiwiLy90YWlsd2luZFxuQGltcG9ydCAnfnRhaWx3aW5kY3NzL2Jhc2UnO1xuQGltcG9ydCAnfnRhaWx3aW5kY3NzL2NvbXBvbmVudHMnO1xuQGltcG9ydCAnfnRhaWx3aW5kY3NzL3V0aWxpdGllcyc7XG5cbi8vIEFic3RyYWN0c1xuQGltcG9ydCAnYWJzdHJhY3RzL3ZhcmlhYmxlcyc7XG4vLyBiYXNlXG5AaW1wb3J0ICdiYXNlL3R5cG9ncmFwaHknO1xuXG4vLyBsYXlvdXRzXG5AaW1wb3J0ICdsYXlvdXRzL2hlYWRlcic7XG5AaW1wb3J0ICdsYXlvdXRzL21haW4nO1xuQGltcG9ydCAnbGF5b3V0cy9fd2VicG9ydGFscGFnZXMnO1xuQGltcG9ydCAnY29tcG9uZW50L2lucHV0JztcbkBpbXBvcnQgJ2NvbXBvbmVudC9mb3Jtcyc7XG5AaW1wb3J0ICdsYXlvdXRzL2Zvb3Rlcic7XG5AaW1wb3J0ICdjb21wb25lbnQvc2VsZWN0Mic7XG5cbi8vY29tcG9uZW50c1xuQGltcG9ydCAnY29tcG9uZW50L2J1dHRvbic7XG5AaW1wb3J0ICdjb21wb25lbnQvb3ZlcmxheSc7XG5AaW1wb3J0ICdjb21wb25lbnQvaGFtYnVyZ2VyJztcblxuaHRtbCB7XG4gIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIG9wYWNpdHk6IDE7XG4gIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG59XG4iLCJib2R5IHtcbiAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICBAYXBwbHkgbWluLWgtc2NyZWVuIGJnLXBhcGVyO1xufVxuXG5hIHtcbiAgY29sb3I6IHJnYih2YXIoLS1ibHVlY29yYWwpKTtcbiAgdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTtcblxuICAmOmhvdmVyIHtcbiAgICBjb2xvcjogcmdiKHZhcigtLXNwcmluZy01MCkpO1xuICB9XG59XG5cbi5sZWZ0IHtcbiAgJl9fdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMjdweDtcbiAgICB0ZXh0LXNoYWRvdzogNHB4IDRweCAxcHggcmdiYSgwLCAwLCAwLCAwLjAxKTtcblxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMjRweCkge1xuICAgICAgZm9udC1zaXplOiAzMnB4O1xuICAgIH1cbiAgfVxufVxuXG5oMiB7XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQ0MHB4KSB7XG4gICAgQGFwcGx5IHRleHQtaGVhZGluZy00O1xuICB9XG4gIEBhcHBseSB0ZXh0LWhlYWRpbmctNSBmb250LWJvbGQgdGV4dC1uLTUwIG1kOnRleHQtaGVhZGluZy0zO1xufVxuXG5oNCB7XG4gIEBhcHBseSB0ZXh0LWhlYWRpbmctNCBsZWFkaW5nLW5vcm1hbDtcbn1cbiIsIkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XG4gIC53cmFwcGVyOjphZnRlciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDI5MnB4O1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnL2ltYWdlcy9tYXJxdWUtd2hpdGUucG5nJyk7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAxMDAlIDE2LjUlO1xuICAgIGJhY2tncm91bmQtc2l6ZTogNzAlO1xuICAgIG9wYWNpdHk6IDAuMztcbiAgICBjb250ZW50OiAnJztcbiAgfVxufVxuLmhlYWRlciB7XG4gIG1heC13aWR0aDogMTE2NnB4O1xuICBtYXJnaW46IGF1dG87XG59XG4ubmF2X19hY3RpdmU6OmFmdGVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDRweDtcbiAgQGFwcGx5IGJnLXR1cnF1b2lzZTtcbiAgY29udGVudDogJyc7XG59XG4ubGlua3NfX2FjdGl2ZSB7XG4gIEBhcHBseSB0ZXh0LWJsYWNrO1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cbi5uYXZfX2xpbmtzIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nOiAyMHB4IDhweDtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuXG4gIGE6aG92ZXIge1xuICAgIEBhcHBseSB0ZXh0LW4tNTA7XG4gIH1cblxuICAucmVhZF9fbW9yZSB7XG4gICAgQGFwcGx5IHJvdW5kZWQtc20gYmctYmx1ZWNvcmFsIHRleHQtY2VudGVyIHRleHQteHMgdGV4dC13aGl0ZTtcbiAgICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gICAgcGFkZGluZzogOHB4IDE4cHg7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIEBhcHBseSBiZy1uLTUwIHRleHQtd2hpdGU7XG4gICAgfVxuICB9XG5cbiAgYSB7XG4gICAgQGFwcGx5IHRleHQtd2hpdGU7XG4gICAgcGFkZGluZy1ib3R0b206IDI0cHg7XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyODBweCkge1xuICAubmF2X19saW5rcyB7XG4gICAgcGFkZGluZzogMHB4IDhweCAyMHB4O1xuXG4gICAgYSB7XG4gICAgICBAYXBwbHkgdGV4dC1uLTUwO1xuICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgIH1cblxuICAgICY6OmFmdGVyIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGJvdHRvbTogMDtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogNHB4O1xuICAgICAgQGFwcGx5IGJnLXR1cnF1b2lzZTtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMCwgMSk7XG4gICAgICB0cmFuc2l0aW9uOiAwLjNzO1xuICAgICAgY29udGVudDogJyc7XG4gICAgfVxuICAgICY6aG92ZXI6OmFmdGVyIHtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSwgMSk7XG4gICAgfVxuICB9XG59XG4uZHJvcGRvd25fX2NvbnRlbnQge1xuICBAYXBwbHkgaW52aXNpYmxlIGFic29sdXRlIHJpZ2h0LTAgdG9wLTcgaGlkZGVuIGgtNTYgYmctd2hpdGUgcHktNyBweC04IG9wYWNpdHktMCBkdXJhdGlvbi0zMDAgeGw6YmxvY2s7XG4gIHdpZHRoOiA0MjRweDtcbiAgaGVpZ2h0OiBhdXRvO1xuICBsaW5lLWhlaWdodDogMjJweDtcbiAgYm94LXNoYWRvdzogMHB4IDhweCAxNnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMik7XG59XG4uZHJvcGRvd246aG92ZXIge1xuICAuZHJvcGRvd25fX2NvbnRlbnQge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMnB4KTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbn1cbi5uYXZfX2xpc3Qge1xuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMjgwcHgpIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDMwMHB4O1xuICAgIGhlaWdodDogMTAwdmg7XG4gICAgcGFkZGluZzogMzBweDtcbiAgICBAYXBwbHkgYmctYmx1ZWNvcmFsIHRleHQtd2hpdGU7XG4gICAgZm9udC1zaXplOiAxNnB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTA1JSk7XG4gICAgdHJhbnNpdGlvbjogMC4zcztcbiAgICB6LWluZGV4OiAxMTA7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygtMHB4IDBweCA4cHggIzAwMCk7XG5cbiAgICAuYWN0aXZlIHtcbiAgICAgIGEge1xuICAgICAgICBAYXBwbHkgdGV4dC13aGl0ZTtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMjRweDtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICBAYXBwbHkgdGV4dC13aGl0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgaGVpZ2h0OiA0cHg7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLCAxKTtcbiAgICAgICAgICB0cmFuc2l0aW9uOiAwLjNzO1xuICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgIEBhcHBseSBiZy10dXJxdW9pc2U7XG4gICAgICAgIH1cbiAgICAgICAgJjpob3Zlcjo6YWZ0ZXIge1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSwgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0NDBweCkge1xuICAgIHdpZHRoOiAyNTBweDtcbiAgICBwYWRkaW5nOiAyMHB4O1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgfVxufVxuXG4jbWVudS1vdmVybGF5IHtcbiAgQGFwcGx5IHhsOmhpZGRlbjtcbn1cblxuI2FjdGl2aXR5LW1lbnUtb3ZlcmxheSB7XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDE0MjBweCkge1xuICAgIEBhcHBseSBoaWRkZW47XG4gIH1cbn1cblxuLm1lbnUtb3ZlcmxheSB7XG4gIHBvc2l0aW9uOiBmaXhlZCAhaW1wb3J0YW50O1xuICB6LWluZGV4OiAxMDA7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xufVxuLmFjdGl2aXR5LW5hdi1tZW51IHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTQyMHB4KSB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAzMDBweDtcbiAgICBoZWlnaHQ6IDEwMHZoO1xuICAgIHBhZGRpbmc6IDEwMHB4IDMwcHg7XG4gICAgQGFwcGx5IGJnLWJsdWVjb3JhbCB0ZXh0LXdoaXRlO1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDUlKTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoN3B4KTtcbiAgICB0cmFuc2l0aW9uOiAwLjNzO1xuICAgIHotaW5kZXg6IDEwMDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMHB4IDBweCA4cHggIzAwMCk7XG5cbiAgICAuYWN0aXZpdHktbmF2LWxpc3Qge1xuICAgICAgQGFwcGx5IGZsZXggZmxleC1jb2wgZ2FwLXktNCBwbC00IHRleHQtc207XG4gICAgfVxuICAgIC5hY3Rpdml0eS1uYXYtbGlzdC5sYW5ndWFnZS1uYXYtbGlzdCB7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAyOHB4O1xuICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNCk7XG5cbiAgICAgIC5uYXZfX3BvaW50ZXIsXG4gICAgICAubmF2X19wb2ludGVyLWhvdmVyIHtcbiAgICAgICAgQGFwcGx5IHJlbGF0aXZlO1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICBAYXBwbHkgYWJzb2x1dGUgYm90dG9tLTAgbGVmdC0wIGgtMSB3LWZ1bGwgc2NhbGUteC0wIHNjYWxlLXktMTAwIHJvdW5kZWQtc20gYmctdHVycXVvaXNlIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMDtcblxuICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDE0MjBweCkge1xuICAgICAgICAgICAgQGFwcGx5IC1ib3R0b20tMiAgaC0xIHctZnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyOmFmdGVyIHtcbiAgICAgICAgICBAYXBwbHkgc2NhbGUteC0xMDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC5uYXZfX3BvaW50ZXI6YWZ0ZXIge1xuICAgICAgICBAYXBwbHkgc2NhbGUteC0xMDA7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4ubmF2LWFjdGl2ZSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7XG59XG5cbi5uYXYge1xuICAmX19wb2ludGVyLFxuICAmX19wb2ludGVyLWhvdmVyIHtcbiAgICBAYXBwbHkgcmVsYXRpdmU7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIEBhcHBseSBhYnNvbHV0ZSBib3R0b20tMCBsZWZ0LTAgaC0xIHctZnVsbCBzY2FsZS14LTAgc2NhbGUteS0xMDAgcm91bmRlZC1zbSBiZy10dXJxdW9pc2UgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNTAwO1xuXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxNDIwcHgpIHtcbiAgICAgICAgQGFwcGx5IC1sZWZ0LTQgaC1mdWxsIHctMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOmhvdmVyOmFmdGVyIHtcbiAgICAgIEBhcHBseSBzY2FsZS14LTEwMDtcbiAgICB9XG4gIH1cblxuICAmX19wb2ludGVyOmFmdGVyIHtcbiAgICBAYXBwbHkgc2NhbGUteC0xMDA7XG4gIH1cbn1cblxuLmFjdGl2aXR5LW5hdiB7XG4gIEBhcHBseSBmbGV4IGdyb3c7XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTQyMHB4KSB7XG4gICAgQGFwcGx5IGp1c3RpZnktZW5kO1xuICB9XG59XG5cbi5sYW5ndWFnZS1ob3Zlcjpob3ZlciB7XG4gIEBhcHBseSBuYXZfX2FjdGl2ZSBsaW5rc19fYWN0aXZlO1xuICBhIHtcbiAgICBjb2xvcjogd2hpdGUgIWltcG9ydGFudDtcbiAgfVxufVxuIiwiLm1haW4ge1xuICAmX19jb250YWluZXIge1xuICAgIG1heC13aWR0aDogMTE2NnB4O1xuICAgIG1hcmdpbjogYXV0bztcbiAgfVxuICAubGVmdF9fY29udGFpbmVyIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoXG4gICAgICAxNjBkZWcsXG4gICAgICByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMiksXG4gICAgICB0cmFuc3BhcmVudFxuICAgICk7XG5cbiAgICBhIHtcbiAgICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIEBhcHBseSBib3JkZXItYi0yIGJvcmRlci10dXJxdW9pc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC5yaWdodCB7XG4gICAgd2lkdGg6IDkzJTtcbiAgICBib3gtc2hhZG93OiAwcHggMjBweCA0MHB4IDIwcHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcblxuICAgICZfX2NvbnRhaW5lciB7XG4gICAgICBoMiB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiA2MHB4O1xuICAgICAgfVxuICAgIH1cblxuICAgICZfX2NvbnRlbnQge1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICBib3gtc2hhZG93OiAwcHggMHB4IDI1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICAgIEBhcHBseSBmbGV4IGl0ZW1zLWNlbnRlciByb3VuZGVkLWxnIGJnLXdoaXRlIHB5LTYgcHgtNTtcblxuICAgICAgLnJpZ2h0X19pY29uIHtcbiAgICAgICAgQGFwcGx5IHRleHQtbGFnb29uLTUwO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAtOHB4O1xuICAgICAgfVxuICAgICAgLnJpZ2h0X19hcnJvdyB7XG4gICAgICAgIEBhcHBseSB0ZXh0LXdoaXRlO1xuICAgICAgfVxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLXR1cnF1b2lzZSBiZy10dXJxdW9pc2UgYmctb3BhY2l0eS0xMDtcbiAgICAgICAgYm94LXNoYWRvdzogMHB4IDBweCAyNXB4IDBweCB0cmFuc3BhcmVudDtcblxuICAgICAgICAucmlnaHRfX2ljb24ge1xuICAgICAgICAgIHN2ZyB7XG4gICAgICAgICAgICBAYXBwbHkgZmlsbC1sYWdvb24tNTAgdGV4dC13aGl0ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLnJpZ2h0X19hcnJvdyB7XG4gICAgICAgICAgQGFwcGx5IGZpbGwtd2hpdGUgdGV4dC10dXJxdW9pc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTM2NnB4KSB7XG4gICAgLmpvaW4tbm93IHtcbiAgICAgIEBhcHBseSBweC0yMDtcblxuICAgICAgLnJpZ2h0X19jb250ZW50IHtcbiAgICAgICAgd2lkdGg6IDQyM3B4O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgaW5wdXQge1xuICAgIHBhZGRpbmctbGVmdDogNjBweDtcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC5sZWZ0IHtcbiAgICBoZWlnaHQ6IDY0OXB4O1xuXG4gICAgJl9fY29udGFpbmVyIHtcbiAgICAgIHdpZHRoOiAzODZweDtcbiAgICB9XG4gIH1cbiAgLnJpZ2h0IHtcbiAgICBoZWlnaHQ6IDY0OXB4O1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjhweCkge1xuICAucmlnaHQge1xuICAgIG1hcmdpbi10b3A6IC0yNjVweDtcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDIwcHgpIHtcbiAgLnJpZ2h0X19pY29uIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIC5kZXRhaWxzIHtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgfVxufVxuOjotd2Via2l0LXNjcm9sbGJhciB7XG4gIHdpZHRoOiA4cHg7XG4gIGhlaWdodDogOHB4O1xufVxuOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gIEBhcHBseSByb3VuZGVkLWxnIGJnLW4tMjAgaG92ZXI6Ymctbi0zMDtcbn1cbm1haW4ge1xuICBkaXNwbGF5OiBncmlkOyAvLyBMaW5lIDFcbiAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBhdXRvIDFmciBhdXRvOyAvLyBMaW5lIDJcbiAgbWluLWhlaWdodDogY2FsYygxMDB2aCAtIDQ2NXB4KTsgLy8gTGluZSAzXG59XG4uYWN0aXZpdGllc19fc2lkZWJhciB7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICBAbWVkaWEgKG1heC13aWR0aDogNzAwcHgpIHtcbiAgICB3aWR0aDogMjIwcHggIWltcG9ydGFudDtcbiAgfVxufVxuYm9keS5kaXNhYmxlLXNjcm9sbCB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGhlaWdodDogMTBweDtcbn1cbi8vIGJvZHkge1xuLy8gICBwYWRkaW5nLXRvcDogNjBweDtcbi8vIH1cblxuLy8gYm9keS5uby1uYXYge1xuLy8gICBwYWRkaW5nLXRvcDogMHB4ICFpbXBvcnRhbnQ7XG4vLyB9XG5odG1sIHtcbiAgc2Nyb2xsLXBhZGRpbmctdG9wOiAyMHB4OyAvKiBoZWlnaHQgb2Ygc3RpY2t5IGhlYWRlciAqL1xufVxuIiwiLnNtb290aCB7XG4gIGFuaW1hdGlvbjogZmFkZUluQW5pbWF0aW9uIGVhc2UgMC4zcztcbiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogMTtcbn1cblxuQGtleWZyYW1lcyBmYWRlSW5BbmltYXRpb24ge1xuICAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59XG4iLCIuaW5wdXQge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBwYWRkaW5nOiAxNHB4IDBweCAxNHB4IDU1cHg7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgbGluZS1oZWlnaHQ6IDI0cHg7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgb3V0bGluZTogbm9uZTtcbiAgdHJhbnNpdGlvbjogMC4zcztcbiAgQGFwcGx5IGgtMTQgYm9yZGVyIGJvcmRlci1uLTMwIHNtOmgtMTY7XG5cbiAgJjpmb2N1cyB7XG4gICAgQGFwcGx5IGJvcmRlciBib3JkZXItbi01MCBiZy1uLTEwO1xuICB9XG5cbiAgJjo6cGxhY2Vob2xkZXIge1xuICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xuICAgIEBhcHBseSBmb250LW5vcm1hbCB0ZXh0LW4tNDA7XG4gIH1cblxuICAmOmZvY3VzOjpwbGFjZWhvbGRlciB7XG4gICAgQGFwcGx5IHRleHQtbi01MDtcbiAgfVxuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XG4gICAgcGFkZGluZzogMjBweCAwcHggMjBweCA1NXB4O1xuICB9XG59XG4uZXJyb3Ige1xuICBAYXBwbHkgdGV4dC1zbSB0ZXh0LWNyaW1zb24tNTAgc206dGV4dC1iYXNlO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXNpemU6IDEycHg7XG4gIGxpbmUtaGVpZ2h0OiAxOHB4O1xufVxuXG4uaGFzX2Vycm9yIHtcbiAgLmZvcm1fX2lucHV0IHtcbiAgICBAYXBwbHkgYm9yZGVyIGJvcmRlci1jcmltc29uLTUwO1xuICB9XG59XG50ZXh0YXJlYS5mb3JtX19pbnB1dCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuLnRleHQtYXJlYSB7XG4gIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDtcbiAgaGVpZ2h0OiA2MHB4O1xuICByZXNpemU6IG5vbmU7XG59XG4uZm9ybV9faW5wdXQge1xuICBAYXBwbHkgbWItMiBib3gtYm9yZGVyIHctZnVsbCByb3VuZGVkIGJvcmRlciBib3JkZXItbi0zMCB0ZXh0LWJsdWVjb3JhbCBvdXRsaW5lLW5vbmUgZHVyYXRpb24tMzAwO1xuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XG4gICAgcGFkZGluZzogMTNweCAwIDEzcHggMTZweDtcbiAgfVxuICBwYWRkaW5nOiAxMHB4IDAgMTBweCAxNnB4O1xuXG4gICY6OnBsYWNlaG9sZGVyIHtcbiAgICBAYXBwbHkgdGV4dC1zbSBmb250LW5vcm1hbCB0ZXh0LW4tNDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gIH1cblxuICAmOmZvY3VzIHtcbiAgICBAYXBwbHkgYm9yZGVyIGJvcmRlci1uLTUwIGJnLW4tMTA7XG4gIH1cblxuICAmOmZvY3VzOjpwbGFjZWhvbGRlciB7XG4gICAgQGFwcGx5IHRleHQtbi01MDtcbiAgfVxufVxuLmlucHV0X19maWVsZCB7XG4gIC5tdWx0aXNlbGVjdC1vcHRpb24uaXMtc2VsZWN0ZWQge1xuICAgIEBhcHBseSBiZy1uLTIwIHRleHQtbi01MDtcbiAgfVxuXG4gIC5tdWx0aXNlbGVjdC1vcHRpb24uaXMtc2VsZWN0ZWQuaXMtcG9pbnRlZCB7XG4gICAgQGFwcGx5IGJnLW4tMjAgdGV4dC1uLTUwO1xuICB9XG5cbiAgLm11bHRpc2VsZWN0LmlzLWFjdGl2ZSB7XG4gICAgQGFwcGx5IGJvcmRlciBib3JkZXItbi01MCBiZy1uLTEwO1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDA7XG4gIH1cblxuICAubXVsdGlzZWxlY3QtcGxhY2Vob2xkZXIge1xuICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xuICAgIEBhcHBseSB3LVszMTBweF0gb3ZlcmZsb3ctaGlkZGVuIHdoaXRlc3BhY2Utbm93cmFwIHByLTMgdGV4dC1zbSB0ZXh0LW4tNDAgZHVyYXRpb24tMzAwO1xuICB9XG5cbiAgLm11bHRpc2VsZWN0LXBsYWNlaG9sZGVyOjphZnRlciB7XG4gICAgY29udGVudDogJyc7XG4gICAgQGFwcGx5IGFic29sdXRlIHJpZ2h0LTAgdG9wLTMgaC02IHctNyBiZy13aGl0ZTtcbiAgfVxuXG4gIC5tdWx0aXNlbGVjdC5pcy1vcGVuIHtcbiAgICAubXVsdGlzZWxlY3QtcGxhY2Vob2xkZXIge1xuICAgICAgQGFwcGx5IHRleHQtbi01MDtcbiAgICB9XG4gIH1cblxuICAubXVsdGlzZWxlY3QtZHJvcGRvd24ge1xuICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLW4tNTA7XG4gIH1cblxuICAubXVsdGlzZWxlY3QtY2FyZXQge1xuICAgIC13ZWJraXQtbWFzay1pbWFnZTogdXJsKCcvaW1hZ2VzL2Ryb3Bkb3duLWFycm93LnN2ZycpO1xuICAgIG1hc2staW1hZ2U6IHVybCgnL2ltYWdlcy9kcm9wZG93bi1hcnJvdy5zdmcnKTtcbiAgfVxuXG4gIC5tdWx0aXNlbGVjdC1zZWFyY2gge1xuICAgIEBhcHBseSBjdXJzb3ItcG9pbnRlciBib3JkZXIgYm9yZGVyLW4tMzAgcHktMi41O1xuICB9XG5cbiAgLm11bHRpc2VsZWN0LXNlYXJjaDpmb2N1cyB7XG4gICAgQGFwcGx5IGJnLW4tMTA7XG4gIH1cblxuICAubXVsdGlzZWxlY3Qtc2VhcmNoOmZvY3VzICsgLm11bHRpc2VsZWN0LXBsYWNlaG9sZGVyOjphZnRlciB7XG4gICAgQGFwcGx5IGJnLW4tMTA7XG4gIH1cblxuICAudnVlX19zZWxlY3Qge1xuICAgIEBhcHBseSBtYi0yIGJvcmRlciBib3JkZXItbi0zMCB0ZXh0LXNtIGxlYWRpbmctNiBvdXRsaW5lLW5vbmUgZHVyYXRpb24tMzAwO1xuXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgICAgIHBhZGRpbmc6IDE2cHggMHB4IDE2cHggNTVweDtcbiAgICB9XG4gICAgcGFkZGluZzogMTNweCAwcHggMTNweCA1NXB4O1xuICB9XG59XG4uZXJyb3JfaW5wdXQge1xuICBib3JkZXI6IDFweCBzb2xpZCAjZDEwMDFlO1xufVxuLmVycm9yX19tdWx0aXNlbGVjdCB7XG4gIGlucHV0IHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZDEwMDFlO1xuICB9XG59XG4ucGFuZWxfX2lucHV0IHtcbiAgQGFwcGx5IGJveC1ib3JkZXIgaC0xMCB3LWZ1bGwgcm91bmRlZCBib3JkZXIgYm9yZGVyLW4tMzAgYmctcGFwZXIgcHktMi41IHBsLTcgcHItMyBvdXRsaW5lLW5vbmUgZHVyYXRpb24tMzAwO1xuXG4gICY6OnBsYWNlaG9sZGVyIHtcbiAgICBAYXBwbHkgdGV4dC14cyBmb250LW5vcm1hbCB0ZXh0LW4tMzAgZHVyYXRpb24tMzAwO1xuICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xuICB9XG5cbiAgJjpmb2N1czo6cGxhY2Vob2xkZXIge1xuICAgIEBhcHBseSB0ZXh0LW4tNDA7XG4gIH1cbn1cbi5zZWFyY2gge1xuICBAYXBwbHkgcmVsYXRpdmU7XG5cbiAgJl9faW5wdXQge1xuICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLW4tMzAgYmctdHJhbnNwYXJlbnQgb3V0bGluZS1ub25lO1xuICAgIHBhZGRpbmc6IDEwcHggNDJweCAxMHB4IDM0cHg7XG4gICAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgfVxuICBzdmcge1xuICAgIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTMgdG9wLTMgdGV4dC1iYXNlIHRleHQtbi0zMDtcbiAgfVxufVxuLnJlcXVpcmVkLWljb24ge1xuICBAYXBwbHkgcmVsYXRpdmUgdG9wLTAuNSB0ZXh0LWJhc2UgbGVhZGluZy1ub25lIHRleHQtY3JpbXNvbi01MDtcbn1cbi5vcGVuLXRleHQge1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNhNmI1YmE7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaW5wdXQge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgcGFkZGluZy10b3A6IDRweDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIHBhZGRpbmctbGVmdDogMzBweDtcbiAgICAmOmZvY3VzIHtcbiAgICAgIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbn1cbi51c2VyLWNoZWNrbGlzdCB7XG4gIG9wYWNpdHk6IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjtcbiAgd2lkdGg6IDE4cHg7XG4gIGhlaWdodDogMThweDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xufVxuLnBzZXVkby1jaGVja2JveCB7XG4gIGhlaWdodDogMThweDtcbiAgd2lkdGg6IDE4cHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBib3JkZXI6IDJweCBzb2xpZCAjZDVkY2RlO1xuICBvcGFjaXR5OiAxO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xufVxuLnVzZXItY2hlY2tsaXN0OmNoZWNrZWQgfiAucHNldWRvLWNoZWNrYm94IHtcbiAgYm9yZGVyLWNvbG9yOiByZ2IodmFyKC0tc3ByaW5nLTUwKSk7XG59XG4udGlja2VkLXN2ZyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAxcHg7XG4gIGxlZnQ6IDFweDtcbiAgb3BhY2l0eTogMDtcbiAgaGVpZ2h0OiAxNnB4O1xuICB3aWR0aDogMTZweDtcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLjcpO1xufVxuLnVzZXItY2hlY2tsaXN0OmNoZWNrZWQgfiAudGlja2VkLXN2ZyB7XG4gIG9wYWNpdHk6IDE7XG59XG5pbnB1dFt0eXBlPSdyYWRpbyddIHtcbiAgYWNjZW50LWNvbG9yOiAjMTU1MzY2O1xufVxuIiwiLmNoZWNrYm94IHtcbiAgQGFwcGx5IHJlbGF0aXZlIGJsb2NrIGN1cnNvci1wb2ludGVyIHNlbGVjdC1ub25lO1xuICAuY2hlY2ttYXJrIHtcbiAgICBAYXBwbHkgZmxleCBoLTQgdy00IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkIGJvcmRlci0yIGJvcmRlci1uLTIwO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7XG4gICAgJjphZnRlciB7XG4gICAgICBib3JkZXItd2lkdGg6IDAgM3B4IDNweCAwO1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBAYXBwbHkgbWItMC41IGhpZGRlbiBoLTIgdy1bNXB4XSByb3RhdGUtNDUgYm9yZGVyLXNwcmluZy01MDtcbiAgICB9XG4gIH1cbiAgaW5wdXQge1xuICAgIEBhcHBseSBhYnNvbHV0ZSBoLTAgdy0wIGN1cnNvci1wb2ludGVyIG9wYWNpdHktMDtcbiAgICAmOmNoZWNrZWQgfiAuY2hlY2ttYXJrIHtcbiAgICAgIEBhcHBseSBib3JkZXItc3ByaW5nLTUwO1xuICAgICAgJjphZnRlciB7XG4gICAgICAgIEBhcHBseSBibG9jaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgJjpob3ZlciBpbnB1dCB+IC5jaGVja21hcmsge1xuICAgIEBhcHBseSBib3JkZXItc3ByaW5nLTUwO1xuICB9XG59XG4vKipcbiAgTGFyYXZlbCBmb3JtIGRlc2lnblxuICovXG5mb3JtIHtcbiAgLmZvcm0tZmllbGQtZ3JvdXAge1xuICAgIEBhcHBseSByZWxhdGl2ZSBwLTM7XG4gICAgJjpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICAgIEBhcHBseSBtYi02O1xuICAgIH1cblxuICAgIC5mb3JtLWZpZWxkIHtcbiAgICAgIEBhcHBseSBwLTM7XG4gICAgICAuaGVscC10ZXh0IHtcbiAgICAgICAgQGFwcGx5IG10LTIgdGV4dC14cyBsZWFkaW5nLXJlbGF4ZWQ7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGJ1dHRvbi5kZWxldGUtaXRlbSB7XG4gICAgQGFwcGx5IGFic29sdXRlIGgtOCB3LTggY3Vyc29yLXBvaW50ZXIgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtZnVsbCBiZy1uLTQwIC1pbmRlbnQtNDA7XG4gICAgJjphZnRlciB7XG4gICAgICBiYWNrZ3JvdW5kOiB1cmwoJy9pbWFnZXMvdHJhc2hfZnVsbC5zdmcnKSBuby1yZXBlYXQgY2VudGVyO1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBAYXBwbHkgYWJzb2x1dGUgbGVmdC0xLzIgdG9wLTEvMiBoLVsxOHB4XSB3LVsxOHB4XSAtdHJhbnNsYXRlLXgtMS8yIC10cmFuc2xhdGUteS0xLzI7XG4gICAgfVxuICAgICY6aG92ZXIge1xuICAgICAgQGFwcGx5IGJnLWJsdWVjb3JhbDtcbiAgICB9XG4gIH1cblxuICAuZm9ybS1maWVsZC1ncm91cC1vdXRlciAuZm9ybS1maWVsZCB7XG4gICAgQGFwcGx5IHB4LTM7XG4gIH1cblxuICAuZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgQGFwcGx5IG1iLTIgZmxleCBqdXN0aWZ5LWJldHdlZW47XG4gICAgbGFiZWwge1xuICAgICAgQGFwcGx5IHRleHQteHMgbGVhZGluZy1yZWxheGVkO1xuICAgIH1cbiAgICAucmVxdWlyZWQge1xuICAgICAgQGFwcGx5IGZvbnQtYm9sZCB0ZXh0LXNhbG1vbi01MDtcbiAgICB9XG4gIH1cbiAgaW5wdXRbdHlwZT0ndGV4dCddLFxuICBpbnB1dFt0eXBlPSdkYXRlJ10sXG4gIHRleHRhcmVhIHtcbiAgICBAYXBwbHkgbXQtMCBoLTEyIHctZnVsbCByb3VuZGVkIGJvcmRlciBib3JkZXItbi0zMCBweC00IHB5LTIuNSB0ZXh0LXNtIGxlYWRpbmctbm9ybWFsIG91dGxpbmUtbm9uZSBkdXJhdGlvbi0zMDA7XG4gICAgJjo6cGxhY2Vob2xkZXIge1xuICAgICAgQGFwcGx5IHRleHQtc20gdGV4dC1uLTQwO1xuICAgIH1cbiAgICAmOmZvY3VzIHtcbiAgICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLW4tNTAgYmctbi0xMDtcbiAgICB9XG4gICAgJjpmb2N1czo6cGxhY2Vob2xkZXIge1xuICAgICAgQGFwcGx5IHRleHQtbi01MDtcbiAgICB9XG4gIH1cblxuICBpbnB1dFt0eXBlPSd0ZXh0J10sXG4gIGlucHV0W3R5cGU9J2RhdGUnXSB7XG4gICAgQGFwcGx5IGgtMTI7XG4gIH1cblxuICBzZWxlY3Qge1xuICAgIEBhcHBseSB3LWZ1bGwgcm91bmRlZCBib3JkZXIgYm9yZGVyLW4tMzAgcHgtNCBweS0zIHRleHQtc20gdGV4dC1uLTQwIG91dGxpbmUtbm9uZSBkdXJhdGlvbi0zMDA7XG4gICAgJjpmb2N1cyB7XG4gICAgICBAYXBwbHkgYm9yZGVyIGJvcmRlci1uLTUwIGJnLW4tMTA7XG4gICAgfVxuICB9XG4gIC5oZWxwIHtcbiAgICBAYXBwbHkgcmVsYXRpdmU7XG4gICAgJl9fdGV4dCB7XG4gICAgICBAYXBwbHkgaW52aXNpYmxlIGFic29sdXRlIHRvcC00IHotMjAgc3BhY2UteS0xLjUgcm91bmRlZCBiZy1lZ2dzaGVsbCBwLTQgdGV4dC1sZWZ0IHRleHQteHMgdGV4dC1uLTQwIG9wYWNpdHktMCBkdXJhdGlvbi0yMDA7XG4gICAgICBib3gtc2hhZG93OiAwcHggNHB4IDQwcHggcmdiKDAgMCAwIC8gMTAlKTtcbiAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0O1xuICAgIH1cbiAgfVxuICAuaGVscDpob3ZlciB7XG4gICAgLmhlbHBfX3RleHQge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDVweCk7XG4gICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gIH1cbiAgLmFkZF9tb3JlIHtcbiAgICBAYXBwbHkgcmVsYXRpdmU7XG4gICAgJjpiZWZvcmUge1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBAYXBwbHkgYWJzb2x1dGUgbGVmdC0wIHRvcC0wIGgtMS8yIHctcHggYm9yZGVyLWwgYm9yZGVyLXNwcmluZy01MDtcbiAgICB9XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTAgdG9wLTIvNCBoLXB4IHctMy41IC10cmFuc2xhdGUteS0xLzIgYm9yZGVyLWIgYm9yZGVyLXNwcmluZy01MDtcbiAgICB9XG5cbiAgICBpIHtcbiAgICAgIHdpZHRoOiAxOHB4O1xuICAgICAgaGVpZ2h0OiAxOHB4O1xuICAgICAgYmFja2dyb3VuZDogdXJsKCcvaW1hZ2VzL2FkZC1tb3JlLWdyZWVuLnN2ZycpIG5vLXJlcGVhdCBjZW50ZXI7XG4gICAgfVxuICB9XG4gIC5zdWJlbGVtZW50IHtcbiAgICAmLmJvcmRlci1sID4gbGFiZWwge1xuICAgICAgYm9yZGVyLWxlZnQ6IDA7XG4gICAgfVxuICAgIC5zdWJlbGVtZW50LFxuICAgIC5zdWJlbGVtZW50ICsgYnV0dG9uIHtcbiAgICAgIEBhcHBseSBtbC02O1xuICAgIH1cblxuICAgIC53cmFwcGVkLWNoaWxkLWJvZHkge1xuICAgICAgQGFwcGx5IHJlbGF0aXZlO1xuICAgICAgPiAuZGVsZXRlLXBhcmVudCB7XG4gICAgICAgIEBhcHBseSBibG9jaztcbiAgICAgIH1cbiAgICB9XG4gICAgPiAubXVsdGktZm9ybTpvbmx5LW9mLXR5cGUgPiAuZGVsZXRlLXBhcmVudCxcbiAgICAud3JhcHBlZC1jaGlsZC1ib2R5Om9ubHktb2YtdHlwZSA+IC5kZWxldGUtcGFyZW50IHtcbiAgICAgIEBhcHBseSBoaWRkZW47XG4gICAgfVxuICB9XG5cbiAgLmZvcm0tZmllbGQtZ3JvdXA6b25seS1vZi10eXBlID4gLmRlbGV0ZS1pdGVtIHtcbiAgICBAYXBwbHkgaGlkZGVuO1xuICB9XG5cbiAgLyoqXG4gICogQ29uZGl0aW9uIHRvIHNob3cgYW5kIGRlbGV0ZSBjb2xsZWN0aW9uIGVycm9yIGluIGZvcm1cbiAgKi9cbiAgLmNvbGxlY3Rpb25fZXJyb3Ige1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAubXVsdGktZm9ybSArIC5jb2xsZWN0aW9uX2Vycm9yLFxuICAuZm9ybS1maWVsZC1ncm91cCArIC5jb2xsZWN0aW9uX2Vycm9yLFxuICAud3JhcHBlZC1jaGlsZC1ib2R5ICsgLmNvbGxlY3Rpb25fZXJyb3Ige1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG4gIC5jb250cm9sLWxhYmVsICsgLmNvbGxlY3Rpb25fZXJyb3IsXG4gIC50aXRsZS1jb250YWluZXIgLmNvbGxlY3Rpb25fZXJyb3Ige1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmctcmlnaHQ6IDI0cHg7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIC5kaXYge1xuICAgICAgbGluZS1oZWlnaHQ6IDRweCAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAgU2VsZWN0IDIgZmllbGRcbiovXG5zcGFuLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0IHtcbiAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG4gIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIHtcbiAgICBAYXBwbHkgaC0xMiB3LWZ1bGwgcm91bmRlZCBib3JkZXIgYm9yZGVyLW4tMzAgcHgtNCBweS0zIHRleHQtc20gdGV4dC1uLTQwIG91dGxpbmUtbm9uZSBkdXJhdGlvbi0zMDA7XG4gICAgLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCB7XG4gICAgICBAYXBwbHkgcC0wIHRleHQtc20gbGVhZGluZy1ub3JtYWw7XG4gICAgfVxuICAgIC5zZWxlY3QyLXNlbGVjdGlvbl9fYXJyb3cge1xuICAgICAgQGFwcGx5IGgtMTE7XG4gICAgfVxuICAgIC5zZWxlY3QyLXNlbGVjdGlvbl9fY2xlYXIgc3BhbiB7XG4gICAgICBAYXBwbHkgbXItMi41IHRleHQtc207XG4gICAgfVxuICAgIC5zZWxlY3QyLXNlbGVjdGlvbl9fcGxhY2Vob2xkZXIge1xuICAgICAgQGFwcGx5IHRleHQtc20gdGV4dC1uLTQwO1xuICAgIH1cbiAgfVxuICAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLWhpZ2hsaWdodGVkW2FyaWEtc2VsZWN0ZWRdIHtcbiAgICBjb2xvcjogIzFmMjkzNztcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjNmNGY2O1xuICB9XG4gIC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvblthcmlhLXNlbGVjdGVkXSB7XG4gICAgQGFwcGx5IHRleHQtc20gdGV4dC1uLTUwO1xuICB9XG59XG4ubWF4LXctaGFsZiB7XG4gIG1heC13aWR0aDogNTAlO1xufVxuXG4vKipcbiAgQWN0aXZpdHkgRGV0YWlsIFBhZ2VcbiovXG4uYWN0aXZpdGllcyB7XG4gIEBhcHBseSBmbGV4IGdhcC01IHhsOmdhcC03O1xuXG4gICZfX3NpZGViYXIge1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIHdpZHRoOiAyODBweDtcblxuICAgICYtaW5uZXIge1xuICAgICAgb3JkZXI6IDE7XG4gICAgfVxuICB9XG5cbiAgJl9fY29udGVudCB7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gICAgICBtYXgtd2lkdGg6IGNhbGMoMTAwdncgLSA1MHB4KTtcbiAgICB9XG4gIH1cblxuICAmX19jYXJkIHtcbiAgICBAYXBwbHkgZmxleCBmbGV4LWNvbCBiZy13aGl0ZSB0ZXh0LWNlbnRlciB0ZXh0LXhzIHRleHQtbi00MDtcbiAgICBwYWRkaW5nOiAxM3B4O1xuICB9XG5cbiAgLnByb2dyZXNzIHtcbiAgICBAYXBwbHkgaXRlbXMtY2VudGVyO1xuICAgIHdpZHRoOiAxNTFweDtcbiAgICBtaW4taGVpZ2h0OiAxNzRweDtcbiAgICBib3JkZXItcmFkaXVzOiA4cHggMHB4IDBweCA4cHg7XG4gIH1cblxuICAudGFiLWJ0bjpkaXNhYmxlZCB7XG4gICAgQGFwcGx5IHBvaW50ZXItZXZlbnRzLW5vbmUgdGV4dC1uLTIwO1xuXG4gICAgc3ZnIHtcbiAgICAgIEBhcHBseSB0ZXh0LW4tMjA7XG4gICAgfVxuICB9XG4gIC5ob3Zlci10ZXh0IHtcbiAgICBzdmcge1xuICAgICAgQGFwcGx5IHRleHQtbi0zMDtcbiAgICB9XG4gIH1cbn1cbi5lbGVtZW50cy1jYXJkIHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTE5MHB4KSB7XG4gICAgZmxleC1iYXNpczogYXV0bztcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxufVxuLm1hbnVhbC1pbXBvcnQge1xuICAuaGVscF9fdGV4dCB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApICFpbXBvcnRhbnQ7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICAgICAgd2lkdGg6IDM1MHB4ICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG59XG4ucmVnaXN0ZXItcGFnZSAuaGVscF9fdGV4dCB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSkgIWltcG9ydGFudDtcbn1cblxuLnJlZ2lzdHJ5X19pbmZvLFxuLnJlZ2lzdGVyLFxuYXNpZGUge1xuICAuaGVscF9fdGV4dCB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApICFpbXBvcnRhbnQ7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDEzNzBweCkge1xuICAgICAgd2lkdGg6IDI1MHB4ICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG59XG4uaW1wb3J0LWFjdGl2aXR5LFxuLmFjdGl2aXRpZXNfX2NvbnRlbnQtLWVsZW1lbnQge1xuICAuaGVscF9fdGV4dCB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApICFpbXBvcnRhbnQ7XG4gIH1cbn1cbmFzaWRlIHtcbiAgLnByb2dyZXNzIHtcbiAgICAuaGVscF9fdGV4dCB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgIWltcG9ydGFudDtcblxuICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTQ1JSkgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbi5hY3Rpdml0aWVzX19jb250ZW50IHtcbiAgd2lkdGg6IDEwMCU7XG59XG4udGFiLWJ0biB7XG4gIC5oZWxwX190ZXh0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgIWltcG9ydGFudDtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gICAgICBsZWZ0OiAwO1xuICAgIH1cbiAgfVxufVxuLmFjdGl2aXR5LWRlZmF1bHQtdmFsdWUge1xuICAuaGVscF9fdGV4dCB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKSAhaW1wb3J0YW50O1xuICB9XG59XG4uZXJyb3ItdGl0bGUge1xuICBjb2xvcjogI2QxMDAxZTtcbiAgcGFkZGluZy10b3A6IDhweCAhaW1wb3J0YW50O1xuICBwYWRkaW5nLWJvdHRvbTogOHB4ICFpbXBvcnRhbnQ7XG59XG4udGV4dC1kYW5nZXItZXJyb3Ige1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgbGluZS1oZWlnaHQ6IDE4cHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG59XG4iLCIuZm9vdGVyX19jb250YWluZXIge1xuICBtYXgtd2lkdGg6IDExNjZweDtcbiAgbWFyZ2luOiBhdXRvO1xuXG4gIC5mb290ZXJfX2xpbmtzIHtcbiAgICBhIHtcbiAgICAgIEBhcHBseSBib3JkZXItYi0yIGJvcmRlci10cmFuc3BhcmVudCB0ZXh0LW4tMjA7XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBAYXBwbHkgYm9yZGVyLWItMiBib3JkZXItdHVycXVvaXNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLnNlbGVjdDItY29udGFpbmVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIG1hcmdpbjogMDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcblxuICAmOmZvY3VzLXdpdGhpbiB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2YxZjdmOTtcbiAgfVxuXG4gIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGhlaWdodDogMjhweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcblxuICAgICY6Zm9jdXMtd2l0aGluIHtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMyYTJmMzA7XG4gICAgfVxuXG4gICAgLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4O1xuICAgICAgcGFkZGluZy1sZWZ0OiA4cHg7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMTtcbiAgICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgfVxuICB9XG59XG5cbi5zZWxlY3QyLWRyb3Bkb3duIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAtMTAwMDAwcHg7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB3aWR0aDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNhYWE7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbn1cblxuLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uIHtcbiAgcGFkZGluZzogNnB4O1xuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcblxuICAmW2FyaWEtc2VsZWN0ZWRdIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbn1cblxuLnNlbGVjdDItY29udGFpbmVyLS1vcGVuIHtcbiAgLnNlbGVjdDItZHJvcGRvd24ge1xuICAgIGxlZnQ6IDA7XG5cbiAgICAmLS1hYm92ZSB7XG4gICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG4gICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xuICAgIH1cblxuICAgICYtLWJlbG93IHtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICBib3JkZXItdG9wOiBub25lO1xuICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDtcbiAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xuICAgIH1cbiAgfVxufVxuXG4uc2VsZWN0Mi1zZWFyY2gtLWRyb3Bkb3duIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDRweDtcblxuICAuc2VsZWN0Mi1zZWFyY2hfX2ZpZWxkIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDRweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjYTZiNWJhO1xuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcblxuICAgICY6Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24ge1xuICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgIH1cbiAgfVxufVxuXG5bdHlwZT0nc2VhcmNoJ10ge1xuICBvdXRsaW5lLWNvbG9yOiAjYTZiNWJhO1xuICBvdXRsaW5lLW9mZnNldDogMDtcbn1cblxuLnNlbGVjdDItaGlkZGVuLWFjY2Vzc2libGUge1xuICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcbiAgd2lkdGg6IDFweCAhaW1wb3J0YW50O1xuICBoZWlnaHQ6IDFweCAhaW1wb3J0YW50O1xuICBtYXJnaW46IC0xcHggIWltcG9ydGFudDtcbiAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XG4gIGJvcmRlcjogMCAhaW1wb3J0YW50O1xuICBjbGlwOiByZWN0KDAgMCAwIDApICFpbXBvcnRhbnQ7XG59XG5cbi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCB7XG4gIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIHtcbiAgICAuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkIHtcbiAgICAgIGNvbG9yOiAjMTU1MzY2O1xuICAgICAgbGluZS1oZWlnaHQ6IDI4cHg7XG4gICAgfVxuXG4gICAgLnNlbGVjdDItc2VsZWN0aW9uX19jbGVhciB7XG4gICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG5cbiAgICAuc2VsZWN0Mi1zZWxlY3Rpb25fX3BsYWNlaG9sZGVyIHtcbiAgICAgIGNvbG9yOiAjOTk5O1xuICAgIH1cblxuICAgIC5zZWxlY3QyLXNlbGVjdGlvbl9fYXJyb3cge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAxcHg7XG4gICAgICByaWdodDogMXB4O1xuICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICBoZWlnaHQ6IDI2cHg7XG5cbiAgICAgIGIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgIHdpZHRoOiAwO1xuICAgICAgICBoZWlnaHQ6IDA7XG4gICAgICAgIG1hcmdpbi10b3A6IC0ycHg7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAtNHB4O1xuICAgICAgICBib3JkZXItY29sb3I6ICM4ODggdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgICAgIGJvcmRlci13aWR0aDogNXB4IDRweCAwIDRweDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLnNlbGVjdDItcmVzdWx0cyA+IC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbnMge1xuICAgIG1heC1oZWlnaHQ6IDIwMHB4O1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gIH1cbn1cblxuLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0LnNlbGVjdDItY29udGFpbmVyLS1vcGVuIHtcbiAgLnNlbGVjdDItc2VsZWN0aW9uX19hcnJvdyB7XG4gICAgYiB7XG4gICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICM4ODggdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItd2lkdGg6IDAgNHB4IDVweCA0cHg7XG4gICAgfVxuICB9XG5cbiAgJi5zZWxlY3QyLWNvbnRhaW5lci0tYWJvdmUge1xuICAgIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIHtcbiAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcbiAgICB9XG4gIH1cblxuICAmLnNlbGVjdDItY29udGFpbmVyLS1iZWxvdyB7XG4gICAgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUge1xuICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG4gICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gVHVycXVvaXNlIGJ1dHRvblxuLmJ0biB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIG91dGxpbmU6IG5vbmU7XG4gIEBhcHBseSBiZy10dXJxdW9pc2UgdGV4dC1uLTUwO1xuXG4gICY6aG92ZXIge1xuICAgIEBhcHBseSBiZy1ibHVlY29yYWw7XG4gICAgQGFwcGx5IHRleHQtd2hpdGU7XG5cbiAgICBzdmcge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDRweCk7XG4gICAgICB0cmFuc2l0aW9uOiAwLjNzO1xuICAgIH1cbiAgfVxufVxuXG4uYnRuLWJhY2sge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IDAuM3M7XG4gIEBhcHBseSB3LTI0IHRleHQtYmx1ZWNvcmFsO1xuXG4gIHN2ZyB7XG4gICAgdHJhbnNpdGlvbjogMC4zcztcbiAgfVxuXG4gICY6aG92ZXIge1xuICAgIHN2ZyB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTRweCk7XG4gICAgfVxuICB9XG59XG5cbi5idG4tbmV4dCB7XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XG4gICAgaGVpZ2h0OiA0OHB4O1xuICAgIHBhZGRpbmc6IDEzcHggMjRweDtcbiAgfVxuICBAYXBwbHkgdy0zNiBweS0yLjUgdGV4dC1uLTUwIHNtOnctNDA7XG5cbiAgc3ZnIHtcbiAgICBtYXJnaW4tbGVmdDogMTNweDtcbiAgICB0cmFuc2l0aW9uOiAwLjJzO1xuICB9XG59XG5cbi5nZXQtc3RhcnRlZC1idG4ge1xuICB3aWR0aDogMTg1cHg7XG59XG5cbi5yZXNldC1idG4ge1xuICBAYXBwbHkgbXQtNiBmbGV4IGp1c3RpZnktY2VudGVyIHJvdW5kZWQtbGcgYm9yZGVyLW5vbmUgYmctdHVycXVvaXNlIHRleHQtc20gZm9udC1ib2xkIHVwcGVyY2FzZSB0ZXh0LW4tNTAgb3V0bGluZS1ub25lIGR1cmF0aW9uLTIwMCBob3ZlcjpiZy1ibHVlY29yYWwgaG92ZXI6dGV4dC13aGl0ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6IDE2cHggOTRweDtcbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgLnJlc2V0LWJ0biB7XG4gICAgcGFkZGluZzogMThweCA5NHB4O1xuICB9XG59XG5cbnN2ZyB7XG4gIGhlaWdodDogMWVtO1xufVxuLmNoYXJ0LXdyYXBwZXIge1xuICBzdmcge1xuICAgIGhlaWdodDogYXV0bztcbiAgfVxufVxuXG4udnJwX193cmFwcGVyIHtcbiAgcCB7XG4gICAgQGFwcGx5IHRleHQtc20gbGVhZGluZy1ub3JtYWw7XG4gIH1cbiAgc3ZnIHtcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH1cbn1cblxuLmJ1dHRvbixcbmJ1dHRvbiB7XG4gIEBhcHBseSBmbGV4IGN1cnNvci1wb2ludGVyIGl0ZW1zLWNlbnRlciB0ZXh0LXhzIGxlYWRpbmctbm9ybWFsIHRyYWNraW5nLXRpZ2h0O1xuICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlO1xufVxuXG4vLyB0b29sdGlwIGJ1dHRvblxuLnRvb2x0aXAtYnRuIHtcbiAgQGFwcGx5IHJlbGF0aXZlIHRleHQtbi0zMDtcblxuICBidXR0b24ge1xuICAgIEBhcHBseSByb3VuZGVkLTN4bCBib3JkZXIgYm9yZGVyLXNvbGlkIGJvcmRlci1uLTMwIHB5LTEuNSBweC0yLjU7XG4gIH1cblxuICBzdmcge1xuICAgIEBhcHBseSBtci0xIHRleHQteHM7XG4gIH1cblxuICAmX19jb250ZW50IHtcbiAgICBAYXBwbHkgYWJzb2x1dGUgdG9wLWZ1bGwgbGVmdC0wIGhpZGRlbiB3LVszNTJweF07XG5cbiAgICAuY29udGVudCB7XG4gICAgICBAYXBwbHkgbXQtNiByb3VuZGVkIGJnLWVnZ3NoZWxsIHRleHQtbi01MDtcbiAgICAgIHBhZGRpbmc6IDE2cHggMzNweCAxNnB4IDE2cHg7XG4gICAgICBib3gtc2hhZG93OiAwcHggNHB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICAgIH1cblxuICAgIHAge1xuICAgICAgQGFwcGx5IG1iLTEuNSB0ZXh0LXhzIGxlYWRpbmctbm9ybWFsO1xuICAgIH1cbiAgfVxuXG4gICY6aG92ZXIgLnRvb2x0aXAtYnRuX19jb250ZW50IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuXG4gICY6aG92ZXIgYnV0dG9uIHtcbiAgICBAYXBwbHkgYm9yZGVyLXNwcmluZy01MCB0ZXh0LXNwcmluZy01MDtcbiAgfVxufVxuXG4vLyBwcmltYXJ5IGJ1dHRvblxuLnByaW1hcnktYnRuIHtcbiAgQGFwcGx5IGdhcC0xIHJvdW5kZWQgYmctYmx1ZWNvcmFsIHAtMyBmb250LWJvbGQgdXBwZXJjYXNlIHRleHQtd2hpdGU7XG4gIGJveC1zaGFkb3c6IDBweCAycHggMTBweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XG5cbiAgJi5zcGFjZSB7XG4gICAgQGFwcGx5IHB4LTY7XG4gIH1cblxuICAmOmhvdmVyIHtcbiAgICBAYXBwbHkgYmctbi01MCB0ZXh0LXdoaXRlO1xuICB9XG5cbiAgc3ZnIHtcbiAgICBAYXBwbHkgdGV4dC1iYXNlO1xuICB9XG59XG5cbi8vIHNlY29uZGFyeSBidXR0b25cbi5zZWNvbmRhcnktYnRuIHtcbiAgQGFwcGx5IGdhcC0xIGdhcC14LTEgcm91bmRlZCBiZy13aGl0ZSBwLTMgdXBwZXJjYXNlIHRleHQtYmx1ZWNvcmFsO1xuXG4gICYtLXRvdWNoIHtcbiAgICBAYXBwbHkgZ2FwLTEgZ2FwLXgtMSByb3VuZGVkIGJnLXdoaXRlIHAtMyB1cHBlcmNhc2UgdGV4dC1ibHVlY29yYWw7XG4gICAgYm94LXNoYWRvdzogMHB4IDJweCAxMHB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcbiAgICAuZHJvcGRvd25fX2Fycm93IHtcbiAgICAgIGZvbnQtc2l6ZTogNnB4O1xuICAgICAgdHJhbnNpdGlvbjogMC4ycztcbiAgICB9XG4gICAgc3ZnIHtcbiAgICAgIEBhcHBseSB0ZXh0LWJhc2U7XG4gICAgfVxuICB9XG4gICY6aG92ZXIge1xuICAgIEBhcHBseSBiZy1ibHVlY29yYWwgdGV4dC13aGl0ZTtcbiAgfVxuXG4gIHN2ZyB7XG4gICAgQGFwcGx5IHRleHQtYmFzZTtcbiAgfVxuXG4gIC5kcm9wZG93bl9fYXJyb3cge1xuICAgIGZvbnQtc2l6ZTogNnB4O1xuICAgIHRyYW5zaXRpb246IDAuMnM7XG4gIH1cbn1cblxuLy8gcHJpbWFyeSBvdXRsaW5lIGJ1dHRvblxuLnByaW1hcnktb3V0bGluZS1idG4ge1xuICBAYXBwbHkganVzdGlmeS1jZW50ZXIgZ2FwLTEgcm91bmRlZC0zeGwgYm9yZGVyIGJvcmRlci1zcHJpbmctNTAgcHgtMy41IHRleHQtc20gbGVhZGluZy1yZWxheGVkIHRleHQtc3ByaW5nLTUwO1xuICBmaWx0ZXI6IGRyb3Atc2hhZG93KDBweCA0cHggNDBweCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuXG4gICY6aG92ZXIge1xuICAgIEBhcHBseSBiZy1zcHJpbmctNTAgdGV4dC13aGl0ZTtcbiAgfVxuXG4gIHN2ZyB7XG4gICAgQGFwcGx5IHRleHQtYmFzZTtcbiAgfVxufVxuXG4uZ2hvc3QtYnRuIHtcbiAgQGFwcGx5IHRleHQteHMgZm9udC1ib2xkIHVwcGVyY2FzZSB0ZXh0LW4tNDA7XG4gIHRyYW5zaXRpb246IDAuNHM7XG5cbiAgJjpob3ZlciB7XG4gICAgQGFwcGx5IHRleHQtYmx1ZWNvcmFsO1xuICB9XG59XG5cbi50YWItYnRuLWFuY2hvciB7XG4gIEBhcHBseSBjdXJzb3ItZGVmYXVsdDtcbn1cblxuLnRhYi1idG4ge1xuICBAYXBwbHkgaC05IHJvdW5kZWQgYm9yZGVyIGJvcmRlci1uLTIwIGJnLXdoaXRlIHAtMiB0ZXh0LXhzIHRleHQtbi00MDtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuXG4gICY6aG92ZXIge1xuICAgIEBhcHBseSBib3JkZXItdHVycXVvaXNlIGJnLW4tMTAgdGV4dC1ibHVlY29yYWw7XG4gIH1cbn1cblxuLmFjdGl2ZV9fdGFiIHtcbiAgQGFwcGx5IGJvcmRlci10dXJxdW9pc2UgYmctbi0xMCB0ZXh0LWJsdWVjb3JhbDtcbn1cblxuLnBhbmVsLWJ0biB7XG4gIEBhcHBseSBoLTEwIHNwYWNlLXgtMSByb3VuZGVkIGJvcmRlciBib3JkZXItbi0zMCBiZy1lZ2dzaGVsbCBweS0zIHB4LTI7XG4gIHdpZHRoOiA0M3B4O1xuXG4gICY6aG92ZXIge1xuICAgIEBhcHBseSBiZy1ibHVlY29yYWwgdGV4dC13aGl0ZTtcbiAgfVxuXG4gIC5kcm9wZG93bl9fYXJyb3cge1xuICAgIGZvbnQtc2l6ZTogNnB4O1xuICAgIHRyYW5zaXRpb246IDAuMnM7XG4gIH1cbn1cbiIsIi5vdmVybGF5IHtcbiAgQGFwcGx5IGZpeGVkIGxlZnQtMCB0b3AtMCBoLWZ1bGwgdy1mdWxsIGJnLWJsYWNrO1xuICB6LWluZGV4OiAxMDA7XG4gIG9wYWNpdHk6IDAuNztcblxuICAmX19pbm5lciB7XG4gICAgQGFwcGx5IGFic29sdXRlIGxlZnQtMCB0b3AtMCBoLWZ1bGwgdy1mdWxsO1xuICB9XG5cbiAgJl9fY29udGVudCB7XG4gICAgQGFwcGx5IGFic29sdXRlIGxlZnQtMi80IHRvcC0yLzQ7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG5cbiAgICAuc3Bpbm5lciB7XG4gICAgICBAYXBwbHkgaW5saW5lLWJsb2NrIGFuaW1hdGUtc3BpbiByb3VuZGVkLWZ1bGwgYm9yZGVyLTIgYm9yZGVyLW4tMTAgYm9yZGVyLW9wYWNpdHktNTtcbiAgICAgIHdpZHRoOiA3NXB4O1xuICAgICAgaGVpZ2h0OiA3NXB4O1xuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogd2hpdGU7XG4gICAgfVxuICB9XG59XG4ubG9hZG92ZXJsYXkge1xuICBAYXBwbHkgZml4ZWQgbGVmdC0wIHRvcC0wIGgtZnVsbCB3LWZ1bGwgYmctYmxhY2s7XG4gIG9wYWNpdHk6IDAuNztcblxuICAmX19pbm5lciB7XG4gICAgQGFwcGx5IGFic29sdXRlIGxlZnQtMCB0b3AtMCBoLWZ1bGwgdy1mdWxsO1xuICB9XG5cbiAgJl9fY29udGVudCB7XG4gICAgQGFwcGx5IGFic29sdXRlIGxlZnQtMi80IHRvcC0yLzQ7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG5cbiAgICAuc3Bpbm5lciB7XG4gICAgICBAYXBwbHkgaW5saW5lLWJsb2NrIGFuaW1hdGUtc3BpbiByb3VuZGVkLWZ1bGwgYm9yZGVyLTIgYm9yZGVyLW4tMTAgYm9yZGVyLW9wYWNpdHktNTtcbiAgICAgIHdpZHRoOiA3NXB4O1xuICAgICAgaGVpZ2h0OiA3NXB4O1xuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogd2hpdGU7XG4gICAgfVxuICB9XG59XG4iLCIuaGFtYnVyZ2VyIHtcbiAgQGFwcGx5IHJlbGF0aXZlIHotYXV0byBmbGV4IGgtMTEgdy0xMSBjdXJzb3ItcG9pbnRlciBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQgZHVyYXRpb24tMzAwO1xuICB6LWluZGV4OiAxMjA7XG5cbiAgJi5hY3RpdmUge1xuICAgIHNwYW4ge1xuICAgICAgQGFwcGx5IGJnLW4tMTA7XG4gICAgfVxuICB9XG5cbiAgc3BhbiB7XG4gICAgQGFwcGx5IHBvaW50ZXItZXZlbnRzLW5vbmUgYWJzb2x1dGUgaC0xIHctMTAgcm91bmRlZC1sZyBkdXJhdGlvbi0zMDA7XG4gIH1cbiAgc3BhbjpudGgtY2hpbGQoMSkge1xuICAgIGJvdHRvbTogMThweDtcbiAgICBsZWZ0OiAycHg7XG4gICAgd2lkdGg6IDMwcHg7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xNXB4KTtcbiAgfVxuICAmLmFjdGl2ZSB7XG4gICAgc3BhbjpudGgtY2hpbGQoMSkge1xuICAgICAgd2lkdGg6IDQwcHg7XG4gICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZykgdHJhbnNsYXRlWigwKTtcbiAgICB9XG4gICAgc3BhbjpudGgtY2hpbGQoMikge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDYwcHgpO1xuICAgIH1cbiAgICBzcGFuOm50aC1jaGlsZCgzKSB7XG4gICAgICB3aWR0aDogNDBweDtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg0cHgpIHJvdGF0ZSgzMTVkZWcpO1xuICAgIH1cbiAgfVxuICBzcGFuOm50aC1jaGlsZCgzKSB7XG4gICAgdG9wOiAxOHB4O1xuICAgIGxlZnQ6IDJweDtcbiAgICB3aWR0aDogMjBweDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTVweCk7XG4gIH1cbn1cbi5oYW1idXJnZXItbWVudSB7XG4gIGRpc3BsYXk6IG5vbmU7XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTQyMHB4KSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbn1cblxuLmhvbWUtYnVyZ2VyLW1lbnUuYWN0aXZlIHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgICB0cmFuc2xhdGU6IC0zNTAlIC0xNDAlO1xuICB9XG4gIHRyYW5zbGF0ZTogLTQ5MCUgLTkwJTtcblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0NDBweCkge1xuICAgIHRyYW5zbGF0ZTogLTM4MCUgLTkwJTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/ \ No newline at end of file +.\[\&\>\*\:nth-child\(odd\)\]\:bg-n-10>*:nth-child(odd) { + --tw-bg-opacity: 1; + background-color: rgba(var(--n-10), var(--tw-bg-opacity)); +} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzL3dlYnBvcnRhbC1hcHAuY3NzIiwibWFwcGluZ3MiOiJBQUFBOztDQUFBOzs7Q0FBQTs7QUFBQTs7O0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFBQTs7RUFBQTtBQUFBOztBQUFBOzs7OztDQUFBOztBQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7S0FBQTtFQUFBO0FBQUE7O0FBQUE7OztDQUFBOztBQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOzs7O0NBQUE7O0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFBQTs7Q0FBQTs7QUFBQTtFQUFBO1VBQUE7QUFBQTs7QUFBQTs7Q0FBQTs7QUFBQTs7Ozs7O0VBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBOztFQUFBO0FBQUE7O0FBQUE7OztDQUFBOztBQUFBOzs7O0VBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBO0VBQUE7QUFBQTs7QUFBQTs7Q0FBQTs7QUFBQTs7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBO0VBQUE7QUFBQTs7QUFBQTtFQUFBO0FBQUE7O0FBQUE7Ozs7Q0FBQTs7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOzs7O0NBQUE7O0FBQUE7Ozs7O0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFBQTs7Q0FBQTs7QUFBQTs7RUFBQTtBQUFBOztBQUFBOzs7Q0FBQTs7QUFBQTs7OztFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBO0VBQUE7QUFBQTs7QUFBQTs7Q0FBQTs7QUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBOztFQUFBO0FBQUE7O0FBQUE7OztDQUFBOztBQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBO0VBQUE7QUFBQTs7QUFBQTs7O0NBQUE7O0FBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBOzs7Ozs7Ozs7Ozs7O0VBQUE7QUFBQTs7QUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFBQTtFQUFBO0FBQUE7O0FBQUE7OztFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBO0VBQUE7QUFBQTs7QUFBQTs7O0NBQUE7O0FBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0VBQUE7RUFBQTtBQUFBOztBQUFBOztDQUFBOztBQUFBOztFQUFBO0FBQUE7O0FBQUE7O0NBQUE7QUFBQTtFQUFBO0FBQUE7O0FBQUE7Ozs7Q0FBQTs7QUFBQTs7Ozs7Ozs7RUFBQTtFQUFBO0FBQUE7O0FBQUE7O0NBQUE7O0FBQUE7O0VBQUE7RUFBQTtBQUFBOztBQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FDQUE7RUFBQTtBQUFBO0FBQUE7O0VBQUE7SUFBQTtFQUFBO0FBQUE7QUFBQTs7RUFBQTtJQUFBO0VBQUE7QUFBQTtBQUFBOztFQUFBO0lBQUE7RUFBQTtBQUFBO0FBQUE7O0VBQUE7SUFBQTtFQUFBO0FBQUE7QUFBQTs7RUFBQTtJQUFBO0VBQUE7QUFBQTtBQ0FBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBOztFQUFBO0lBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtPQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO1VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFBQTtF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QTs7QUNUUjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVJvakNGO0FRbGpDRTtFQUNFO0FSb2pDSjtBUWpqQ0U7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7T0FBQTtBUm1qQ0o7QVFqakNJO0VBQ0U7QVJtakNOO0FRaGpDSTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FSa2pDTjs7QVE3aUNBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBUmdqQ0Y7O0FRN2lDQTtFQUNFO0VBQ0E7RUFDQTtPQUFBO0FSZ2pDRjtBUTlpQ0U7RUFDRTtBUmdqQ0o7O0FRM2lDRTtFQUNFO0FSOGlDSjtBUTVpQ0k7RUFDRTtFQUNBO0VBQ0E7QVI4aUNOO0FRM2lDSTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FSNmlDTjs7QVF4aUNBO0VBQ0U7RUFDQTtBUjJpQ0Y7QVF6aUNFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBUjJpQ0o7QVF6aUNJO0VBQ0U7QVIyaUNOOztBUXRpQ0E7RUFDRTtFQUNBO0FSeWlDRjs7QVF0aUNBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBUnlpQ0Y7O0FRcGlDSTtFQUNFO0VBQ0E7QVJ1aUNOO0FRcGlDSTtFQUNFO0VBQ0E7RUFDQTtBUnNpQ047QVFuaUNJO0VBQ0U7QVJxaUNOO0FRbGlDSTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVJvaUNOO0FRbGlDTTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FSb2lDUjtBUWhpQ0U7RUFDRTtFQUNBO0FSa2lDSjs7QVE1aENJO0VBQ0U7RUFDQTtBUitoQ047QVExaENJO0VBQ0U7RUFDQTtBUjRoQ047QVF2aENJO0VBQ0U7RUFDQTtBUnloQ047O0FTbHNDQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFBQTtFQUFBO0VBQUE7QVRxc0NGO0FTbHNDSTtFQUFBO0VBQUE7RUFDQTtFQUFBO0FBREE7QUFHQTtFQUNFO0VBQ0E7QVRxc0NOOztBU2hzQ0E7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQUE7RUFBQTtBVG1zQ0Y7QVNqc0NFO0VBQ0U7QVRtc0NKO0FTL3JDSTtFQUNFO0FUaXNDTjs7QVN2ckNFO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUFBOztFQUFBO0lBQUE7RUFBQTtBQUFBO0FBSkE7RUFERjtJQUVJO0lBQ0E7RVRrc0NGO0FBQ0Y7QVMvckNFO0VBQ0U7RUFDQTtBVGlzQ0o7O0FTN3JDQTtFQUNFO0FUZ3NDRjs7QVM1ckNFO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBREY7RUFFRTtFQUNBO0FUZ3NDRjs7QVM3ckNBO0VBQ0U7SUFDRTtFVGdzQ0Y7QUFDRjtBUzdyQ0E7RUFDRTtBVCtyQ0Y7O0FTNXJDRTtFQUNFO0FUK3JDSjs7QVN6ckNJO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFFRjtFQUNFO0FUNnJDSjs7QVN2ckNFOztFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQ0E7QUFEQTs7QUFNQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBR0U7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUlBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFJQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUdFO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQ0E7RUFDQTtBQUZBO0FBTUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBSUo7RUFDRTtBVHNyQ0o7QVNsckNJO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTs7QUFNRjtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUNBO0FBREE7QUFJRTtFQUFBO0VBQUE7QUFBQTtBQUlBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUlBO0VBQUE7RUFBQTtBQUFBOztBQU1GO0VBQUE7RUFBQTtPQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUdFO0VBQUE7RUFBQTtPQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFDQTtBQURBO0FBRUE7RUFDRTtFQUNBO0FUZ3JDTjtBUzdxQ007RUFBQTtFQUFBO0FBQUE7QUFJRjtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFJQTtFQUFBO0VBQUE7QUFBQTtBQUdGO0VBQ0U7RUFDQTtBVDZxQ0o7O0FTdnFDRTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQ0E7QUFEQTtBQUlFO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUlBO0VBQUE7RUFBQTtBQUFBOztBQUtGO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQ0E7QUFEQTtBQUlFO0VBQUE7RUFBQTtBQUFBOztBQUtGO0VBQUE7QUFBQTs7QUFJQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUNBO0FBREE7QUFJRTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBOztBQUtGO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBSUE7RUFBQTtBQUFBOztBQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7O0FBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUNBO0FBREE7QUFJRTtFQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUE7QUFHRjtFQUNFO0VBQ0E7QVRzcUNKOztBVTU0Q0U7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUNBO0VBQ0E7QUFGQTtBQUtFO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBSUE7RUFBQTtFQUFBO0VBQUE7RUFDQTtBQURBO0FBSUU7RUFBQTtBQUFBO0FBQUE7O0VBQUE7SUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFDQTtFQUNBO0VBQ0E7QUFIQTs7QUFRSjtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQ0E7QUFEQTtBQUlFO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBO0FBSUE7RUFBQTtFQUFBO0VBQUE7RUFDQTtBQURBO0FBSUU7RUFBQTtBQUFBO0FBQUE7O0VBQUE7SUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFDQTtFQUNBO0VBQ0E7QUFIQTs7QUNqQ0o7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQ0E7QUFEQTtBQUtJO0VBQUE7RUFBQTtBQUFBO0FBS0Y7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7QUFBQTtBQUVGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QVhrN0NKO0FXLzZDSTtFQUNFO0VBQ0E7QVhpN0NOO0FXLzZDSTtFQUNFO0FYaTdDTjtBVy82Q0k7RUFDRTtFQUNBO0FYaTdDTjtBVzk2Q0U7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBWGc3Q0o7O0FXNzZDQTtFQUNFO0FYZzdDRjtBVzk2Q0U7RUFIRjtJQUlJO0VYaTdDRjtBQUNGOztBVzk2Q0E7RUFJRTtBWDg2Q0Y7QVdqN0NFO0VBREY7SUFFSTtFWG83Q0Y7QUFDRjtBV2o3Q0U7RUFORjtJQU9JO0VYbzdDRjtBQUNGOztBQW45Q0E7RUFDRTtFQUNBO0VBQ0E7QUFzOUNGOztBSmovQ0E7RUFBQTtDZ0JBQTs7QWhCQUE7RUFBQTtDZ0JBQTs7QWhCQUE7RUFBQTtDZ0JBQTs7QWhCQUE7RUFBQTtDZ0JBQTs7QWhCQUE7RUFBQTtDZ0JBQTs7QWhCQUE7RUFBQSx1QmdCQUE7RWhCQUE7Q2dCQUE7O0FoQkFBO0VBQUEsbUJnQkFBO0VoQkFBO0NnQkFBOztBaEJBQTtFQUFBLG1CZ0JBQTtFaEJBQTtDZ0JBQTs7QWhCQUE7RUFBQSxzQmdCQUE7RWhCQUE7Q2dCQUE7O0FoQkFBO0VBQUEsaUJnQkFBO0VoQkFBO0NnQkFBOztBaEJBQTtFQUFBLHFCZ0JBQTtFaEJBQTtDZ0JBQTs7QWhCQUE7RUFBQSwrQmdCQUE7RWhCQUE7Q2dCQUE7O0FoQkFBO0VBQUE7Q2dCQUE7O0FoQkFBO0VBQUE7Q2dCQUE7O0FoQkFBO0VBQUEsdUJnQkFBO0VoQkFBO0NnQkFBOztBaEJBQTtFQUFBLHVCZ0JBQTtFaEJBQTtDZ0JBQTs7QWhCQUE7RUFBQSxtQmdCQUE7RWhCQUE7Q2dCQUE7O0FoQkFBO0VBQUEsbUJnQkFBO0VoQkFBO0NnQkFBOztBaEJBQTtFQUFBLG1CZ0JBQTtFaEJBQTtDZ0JBQTs7QWhCQUE7RUFBQSxtQmdCQUE7RWhCQUE7Q2dCQUE7O0FoQkFBO0VBQUEsbUJnQkFBO0VoQkFBO0NnQkFBOztBaEJBQTtFQUFBLHFCZ0JBQTtFaEJBQTtDZ0JBQTs7QWhCQUE7RUFBQSxxQmdCQUE7RWhCQUE7Q2dCQUE7O0FoQkFBO0VBQUEsZ0NnQkFBO0VoQkFBO0NnQkFBOztBaEJBQTtFQUFBLHFCZ0JBQTtFaEJBQTtDZ0JBQTs7QWhCQUE7RUFBQSxxQmdCQUE7RWhCQUE7Q2dCQUE7O0FoQkFBO0VBQUEscUJnQkFBO0VoQkFBO0NnQkFBOztBaEJBQTtFQUFBO0NnQkFBOztBaEJBQTtFQUFBO0NnQkFBOztBaEJBQTtFQUFBLHNCZ0JBQTtFaEJBQTtDZ0JBQTs7QWhCQUE7RUFBQSxxQmdCQUE7RWhCQUE7Q2dCQUE7O0FoQkFBO0VBQUE7Q2dCQUE7O0FoQkFBOztFQUFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUEsb0JnQkFBO0loQkFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBLHdCZ0JBQTtJaEJBQSwrRGdCQUE7SWhCQUE7R2dCQUE7O0VoQkFBO0lBQUEsZ0NnQkFBO0loQkFBO0dnQkFBOztFaEJBQTtJQUFBLCtCZ0JBQTtJaEJBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQSxxQmdCQUE7SWhCQUE7R2dCQUE7O0VoQkFBO0lBQUEsb0JnQkFBO0loQkFBO0dnQkFBOztFaEJBQTtJQUFBLGtCZ0JBQTtJaEJBQTtHZ0JBQTs7RWhCQUE7SUFBQSxvQmdCQUE7SWhCQUE7R2dCQUE7O0VoQkFBO0lBQUEsbUJnQkFBO0loQkFBO0dnQkFBOztFaEJBQTtJQUFBLG9CZ0JBQTtJaEJBQTtHZ0JBQTs7RWhCQUE7SUFBQSxzQmdCQUE7SWhCQUE7R2dCQUE7O0VoQkFBO0lBQUEsc0JnQkFBO0loQkFBO0dnQkFBOztFaEJBQTtJQUFBLHFCZ0JBQTtJaEJBQTtHZ0JBQTs7RWhCQUE7SUFBQSxxQmdCQUE7SWhCQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUEsa0JnQkFBO0loQkFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBLGdCZ0JBQTtJaEJBQTtHZ0JBQTs7RWhCQUE7SUFBQSxtQmdCQUE7SWhCQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7Q0FBQTs7QWhCQUE7O0VBQUE7SUFBQSxnQmdCQUE7SWhCQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUEsNkJnQkFBO0loQkFBO0dnQkFBOztFaEJBQTtJQUFBLDRCZ0JBQTtJaEJBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQSxxQmdCQUE7SWhCQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUEsbUJnQkFBO0loQkFBO0dnQkFBO0NBQUE7O0FoQkFBOztFQUFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUE7R2dCQUE7O0VoQkFBO0lBQUEsa0JnQkFBO0loQkFBO0dnQkFBOztFaEJBQTtJQUFBLHFCZ0JBQTtJaEJBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTtDQUFBOztBaEJBQTs7RUFBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBLGtCZ0JBQTtJaEJBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQTtHZ0JBQTs7RWhCQUE7SUFBQSx3QmdCQUE7SWhCQUEsd0RnQkFBO0loQkFBO0dnQkFBOztFaEJBQTtJQUFBLHFCZ0JBQTtJaEJBQTtHZ0JBQTs7RWhCQUE7SUFBQSxrQmdCQUE7SWhCQUE7R2dCQUE7O0VoQkFBO0lBQUEscUJnQkFBO0loQkFBO0dnQkFBOztFaEJBQTtJQUFBLHNCZ0JBQTtJaEJBQTtHZ0JBQTs7RWhCQUE7SUFBQSxtQmdCQUE7SWhCQUE7R2dCQUE7O0VoQkFBO0lBQUEscUJnQkFBO0loQkFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBOztFaEJBQTtJQUFBO0dnQkFBO0NBQUE7O0FoQkFBOztFQUFBO0lBQUE7R2dCQUE7Q0FBQTs7QWhCQUE7RUFBQSxtQmdCQUE7RWhCQUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdGFpbHdpbmRjc3MvYmFzZS5jc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3RhaWx3aW5kY3NzL2NvbXBvbmVudHMuY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy90YWlsd2luZGNzcy91dGlsaXRpZXMuY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9hYnN0cmFjdHMvX3ZhcmlhYmxlcy5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy93ZWJwb3J0YWwtYXBwLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2Jhc2UvX3R5cG9ncmFwaHkuc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvbGF5b3V0cy9faGVhZGVyLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2xheW91dHMvX21haW4uc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvbGF5b3V0cy9fd2VicG9ydGFscGFnZXMuc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvY29tcG9uZW50L19pbnB1dC5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9jb21wb25lbnQvX2Zvcm1zLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2xheW91dHMvX2Zvb3Rlci5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9jb21wb25lbnQvX3NlbGVjdDIuc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvY29tcG9uZW50L19idXR0b24uc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvY29tcG9uZW50L19vdmVybGF5LnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2NvbXBvbmVudC9faGFtYnVyZ2VyLnNjc3MiLCJ3ZWJwYWNrOi8vLzxubyBzb3VyY2U+Il0sInNvdXJjZXNDb250ZW50IjpbIkB0YWlsd2luZCBiYXNlO1xuIiwiQHRhaWx3aW5kIGNvbXBvbmVudHM7XG4iLCJAdGFpbHdpbmQgdXRpbGl0aWVzO1xuIiwiOnJvb3Qge1xuICAtLWJsYWNrOiAwLCAwLCAwO1xuICAtLXdoaXRlOiAyNTUsIDI1NSwgMjU1O1xuICAtLXRyYW5zcGFyZW50OiB0cmFuc3BhcmVudDtcblxuICAvLyBOZXV0cmFsc1xuICAtLW4tMDogMjU1LCAyNTUsIDI1NTtcbiAgLS1uLTEwOiAyNDEsIDI0NywgMjQ5O1xuICAtLW4tMjA6IDIxMywgMjIwLCAyMjI7XG4gIC0tbi0zMDogMTY2LCAxODEsIDE4NjtcbiAgLS1uLTQwOiAxMDQsIDEyMSwgMTI2O1xuICAtLW4tNTA6IDQyLCA0NywgNDg7XG5cbiAgLy8gUHJpbWFyeSBjb2xvcnNcbiAgLS10dXJxdW9pc2U6IDYsIDIxOSwgMjI4O1xuICAtLWJsdWVjb3JhbDogMjEsIDgzLCAxMDI7XG5cbiAgLS1ibHVlY29yYWwtNDA6IDYwLCAxMTIsIDEyODtcbiAgLS1ibHVlY29yYWwtNTA6IDIxLCA4MywgMTAyO1xuXG4gIC8vIFNlY29uZGFyeSBjb2xvcnNcbiAgLy8gQ2FtZWxcbiAgLS1jYW1lbC0xMDogMjUyLCAyMzksIDIyODtcbiAgLS1jYW1lbC0yMDogMjQ5LCAyMTksIDE5MztcbiAgLS1jYW1lbC0zMDogMjQ4LCAyMDcsIDE3MztcbiAgLS1jYW1lbC00MDogMjQ2LCAxOTUsIDE1MjtcbiAgLS1jYW1lbC01MDogMjQ0LCAxODMsIDEzMjtcbiAgLy8gVGVhbFxuICAtLXRlYWwtMTA6IDIzMSwgMjQzLCAyNDE7XG4gIC0tdGVhbC0yMDogMjE1LCAyMzUsIDIzMjtcbiAgLS10ZWFsLTMwOiAxOTUsIDIyNCwgMjIwO1xuICAtLXRlYWwtNDA6IDE3NSwgMjE0LCAyMDk7XG4gIC0tdGVhbC01MDogMTM1LCAxOTQsIDE4NjtcbiAgLy8gU3ByaW5nXG4gIC0tc3ByaW5nLTEwOiAxNzgsIDIyMSwgMjExO1xuICAtLXNwcmluZy0yMDogMTM5LCAyMDQsIDE4OTtcbiAgLS1zcHJpbmctMzA6IDEwMCwgMTg3LCAxNjc7XG4gIC0tc3ByaW5nLTQwOiA2MiwgMTcwLCAxNDU7XG4gIC0tc3ByaW5nLTUwOiAyMywgMTUzLCAxMjM7XG4gIC8vIExhZ29vblxuICAtLWxhZ29vbi0xMDogMjA5LCAyMzgsIDI0MDtcbiAgLS1sYWdvb24tMjA6IDE3OCwgMjI3LCAyMjk7XG4gIC0tbGFnb29uLTMwOiAxMzksIDIxMywgMjE2O1xuICAtLWxhZ29vbi00MDogMTAxLCAyMDAsIDIwNDtcbiAgLS1sYWdvb24tNTA6IDI0LCAxNzIsIDE3ODtcbiAgLy8gU2FsbW9uXG4gIC0tc2FsbW9uLTEwOiAyNTUsIDIyNywgMjI0O1xuICAtLXNhbG1vbi0yMDogMjU1LCAyMDgsIDIwMztcbiAgLS1zYWxtb24tMzA6IDI1NSwgMTg0LCAxNzc7XG4gIC0tc2FsbW9uLTQwOiAyNTUsIDE2MSwgMTUyO1xuICAtLXNhbG1vbi01MDogMjU1LCAxMTQsIDEwMDtcbiAgLy8gTGF2ZW5kZXJcbiAgLS1sYXZlbmRlci0xMDogMjM3LCAyMjYsIDI1MTtcbiAgLS1sYXZlbmRlci0yMDogMjI1LCAyMDcsIDI0ODtcbiAgLS1sYXZlbmRlci0zMDogMjEwLCAxODIsIDI0NDtcbiAgLS1sYXZlbmRlci00MDogMTk2LCAxNTgsIDI0MDtcbiAgLS1sYXZlbmRlci01MDogMTY2LCAxMTAsIDIzMztcbiAgLS1sYXZlbmRlci02MDogMjQ2LCAyNDAsIDI1NTtcbiAgLy8gQ3JpbXNvblxuICAtLWNyaW1zb24tMTA6IDI1NSwgMjQ4LCAyNDc7XG4gIC0tY3JpbXNvbi0yMDogMjUwLCAyMTMsIDIxNTtcbiAgLS1jcmltc29uLTMwOiAyNDEsIDE1NSwgMTYwO1xuICAtLWNyaW1zb24tNDA6IDIyNywgNzcsIDkxO1xuICAtLWNyaW1zb24tNTA6IDIwOSwgMCwgMzA7XG5cbiAgLy8gUGFzdGVsIGNvbG9yc1xuICAtLWVnZ3NoZWxsOiAyNTUsIDI1MywgMjMxO1xuICAtLW1pbnQ6IDIzOCwgMjQ5LCAyNDU7XG4gIC0tcm9zZTogMjU1LCAyNDEsIDI0MDtcbiAgLS1wYXBlcjogMjQ2LCAyNDcsIDI1Mjtcbn1cbiIsIi8vdGFpbHdpbmRcbkBpbXBvcnQgJ350YWlsd2luZGNzcy9iYXNlJztcbkBpbXBvcnQgJ350YWlsd2luZGNzcy9jb21wb25lbnRzJztcbkBpbXBvcnQgJ350YWlsd2luZGNzcy91dGlsaXRpZXMnO1xuXG4vLyBBYnN0cmFjdHNcbkBpbXBvcnQgJ2Fic3RyYWN0cy92YXJpYWJsZXMnO1xuLy8gYmFzZVxuQGltcG9ydCAnYmFzZS90eXBvZ3JhcGh5JztcblxuLy8gbGF5b3V0c1xuQGltcG9ydCAnbGF5b3V0cy9oZWFkZXInO1xuQGltcG9ydCAnbGF5b3V0cy9tYWluJztcbkBpbXBvcnQgJ2xheW91dHMvX3dlYnBvcnRhbHBhZ2VzJztcbkBpbXBvcnQgJ2NvbXBvbmVudC9pbnB1dCc7XG5AaW1wb3J0ICdjb21wb25lbnQvZm9ybXMnO1xuQGltcG9ydCAnbGF5b3V0cy9mb290ZXInO1xuQGltcG9ydCAnY29tcG9uZW50L3NlbGVjdDInO1xuXG4vL2NvbXBvbmVudHNcbkBpbXBvcnQgJ2NvbXBvbmVudC9idXR0b24nO1xuQGltcG9ydCAnY29tcG9uZW50L292ZXJsYXknO1xuQGltcG9ydCAnY29tcG9uZW50L2hhbWJ1cmdlcic7XG5cbmh0bWwge1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICBvcGFjaXR5OiAxO1xuICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xufVxuIiwiYm9keSB7XG4gIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgQGFwcGx5IG1pbi1oLXNjcmVlbiBiZy1wYXBlcjtcbn1cblxuYSB7XG4gIGNvbG9yOiByZ2IodmFyKC0tYmx1ZWNvcmFsKSk7XG4gIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7XG5cbiAgJjpob3ZlciB7XG4gICAgY29sb3I6IHJnYih2YXIoLS1zcHJpbmctNTApKTtcbiAgfVxufVxuXG4ubGVmdCB7XG4gICZfX3RpdGxlIHtcbiAgICBmb250LXNpemU6IDI3cHg7XG4gICAgdGV4dC1zaGFkb3c6IDRweCA0cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wMSk7XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgICAgIGZvbnQtc2l6ZTogMzJweDtcbiAgICB9XG4gIH1cbn1cblxuaDIge1xuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0NDBweCkge1xuICAgIEBhcHBseSB0ZXh0LWhlYWRpbmctNDtcbiAgfVxuICBAYXBwbHkgdGV4dC1oZWFkaW5nLTUgZm9udC1ib2xkIHRleHQtbi01MCBtZDp0ZXh0LWhlYWRpbmctMztcbn1cblxuaDQge1xuICBAYXBwbHkgdGV4dC1oZWFkaW5nLTQgbGVhZGluZy1ub3JtYWw7XG59XG4iLCJAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xuICAud3JhcHBlcjo6YWZ0ZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAyOTJweDtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy9pbWFnZXMvbWFycXVlLXdoaXRlLnBuZycpO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMTAwJSAxNi41JTtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDcwJTtcbiAgICBvcGFjaXR5OiAwLjM7XG4gICAgY29udGVudDogJyc7XG4gIH1cbn1cbi5oZWFkZXIge1xuICBtYXgtd2lkdGg6IDExNjZweDtcbiAgbWFyZ2luOiBhdXRvO1xufVxuLm5hdl9fYWN0aXZlOjphZnRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiA0cHg7XG4gIEBhcHBseSBiZy10dXJxdW9pc2U7XG4gIGNvbnRlbnQ6ICcnO1xufVxuLmxpbmtzX19hY3RpdmUge1xuICBAYXBwbHkgdGV4dC1ibGFjaztcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG4ubmF2X19saW5rcyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZzogMjBweCA4cHg7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcblxuICBhOmhvdmVyIHtcbiAgICBAYXBwbHkgdGV4dC1uLTUwO1xuICB9XG5cbiAgLnJlYWRfX21vcmUge1xuICAgIEBhcHBseSByb3VuZGVkLXNtIGJnLWJsdWVjb3JhbCB0ZXh0LWNlbnRlciB0ZXh0LXhzIHRleHQtd2hpdGU7XG4gICAgd2lkdGg6IGZpdC1jb250ZW50O1xuICAgIHBhZGRpbmc6IDhweCAxOHB4O1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBAYXBwbHkgYmctbi01MCB0ZXh0LXdoaXRlO1xuICAgIH1cbiAgfVxuXG4gIGEge1xuICAgIEBhcHBseSB0ZXh0LXdoaXRlO1xuICAgIHBhZGRpbmctYm90dG9tOiAyNHB4O1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMjgwcHgpIHtcbiAgLm5hdl9fbGlua3Mge1xuICAgIHBhZGRpbmc6IDBweCA4cHggMjBweDtcblxuICAgIGEge1xuICAgICAgQGFwcGx5IHRleHQtbi01MDtcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICB9XG5cbiAgICAmOjphZnRlciB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBib3R0b206IDA7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IDRweDtcbiAgICAgIEBhcHBseSBiZy10dXJxdW9pc2U7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKDAsIDEpO1xuICAgICAgdHJhbnNpdGlvbjogMC4zcztcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgIH1cbiAgICAmOmhvdmVyOjphZnRlciB7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKDEsIDEpO1xuICAgIH1cbiAgfVxufVxuLmRyb3Bkb3duX19jb250ZW50IHtcbiAgQGFwcGx5IGludmlzaWJsZSBhYnNvbHV0ZSByaWdodC0wIHRvcC03IGhpZGRlbiBoLTU2IGJnLXdoaXRlIHB5LTcgcHgtOCBvcGFjaXR5LTAgZHVyYXRpb24tMzAwIHhsOmJsb2NrO1xuICB3aWR0aDogNDI0cHg7XG4gIGhlaWdodDogYXV0bztcbiAgbGluZS1oZWlnaHQ6IDIycHg7XG4gIGJveC1zaGFkb3c6IDBweCA4cHggMTZweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpO1xufVxuLmRyb3Bkb3duOmhvdmVyIHtcbiAgLmRyb3Bkb3duX19jb250ZW50IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTJweCk7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59XG4ubmF2X19saXN0IHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTI4MHB4KSB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAzMDBweDtcbiAgICBoZWlnaHQ6IDEwMHZoO1xuICAgIHBhZGRpbmc6IDMwcHg7XG4gICAgQGFwcGx5IGJnLWJsdWVjb3JhbCB0ZXh0LXdoaXRlO1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwNSUpO1xuICAgIHRyYW5zaXRpb246IDAuM3M7XG4gICAgei1pbmRleDogMTEwO1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coLTBweCAwcHggOHB4ICMwMDApO1xuXG4gICAgLmFjdGl2ZSB7XG4gICAgICBhIHtcbiAgICAgICAgQGFwcGx5IHRleHQtd2hpdGU7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDI0cHg7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgQGFwcGx5IHRleHQtd2hpdGU7XG4gICAgICAgIH1cblxuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIGhlaWdodDogNHB4O1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMCwgMSk7XG4gICAgICAgICAgdHJhbnNpdGlvbjogMC4zcztcbiAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICBAYXBwbHkgYmctdHVycXVvaXNlO1xuICAgICAgICB9XG4gICAgICAgICY6aG92ZXI6OmFmdGVyIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEsIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDQwcHgpIHtcbiAgICB3aWR0aDogMjUwcHg7XG4gICAgcGFkZGluZzogMjBweDtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gIH1cbn1cblxuI21lbnUtb3ZlcmxheSB7XG4gIEBhcHBseSB4bDpoaWRkZW47XG59XG5cbiNhY3Rpdml0eS1tZW51LW92ZXJsYXkge1xuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxNDIwcHgpIHtcbiAgICBAYXBwbHkgaGlkZGVuO1xuICB9XG59XG5cbi5tZW51LW92ZXJsYXkge1xuICBwb3NpdGlvbjogZml4ZWQgIWltcG9ydGFudDtcbiAgei1pbmRleDogMTAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbn1cbi5hY3Rpdml0eS1uYXYtbWVudSB7XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDE0MjBweCkge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogMzAwcHg7XG4gICAgaGVpZ2h0OiAxMDB2aDtcbiAgICBwYWRkaW5nOiAxMDBweCAzMHB4O1xuICAgIEBhcHBseSBiZy1ibHVlY29yYWwgdGV4dC13aGl0ZTtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTA1JSk7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDdweCk7XG4gICAgdHJhbnNpdGlvbjogMC4zcztcbiAgICB6LWluZGV4OiAxMDA7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDBweCAwcHggOHB4ICMwMDApO1xuXG4gICAgLmFjdGl2aXR5LW5hdi1saXN0IHtcbiAgICAgIEBhcHBseSBmbGV4IGZsZXgtY29sIGdhcC15LTQgcGwtNCB0ZXh0LXNtO1xuICAgICAgLm5hdl9fcG9pbnRlcixcbiAgICAgIC5uYXZfX3BvaW50ZXItaG92ZXIge1xuICAgICAgICBAYXBwbHkgcmVsYXRpdmU7XG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgIEBhcHBseSBhYnNvbHV0ZSBib3R0b20tMCBsZWZ0LTAgaC0xIHctZnVsbCBzY2FsZS14LTAgc2NhbGUteS0xMDAgcm91bmRlZC1zbSBiZy10dXJxdW9pc2UgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNTAwO1xuXG4gICAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTQyMHB4KSB7XG4gICAgICAgICAgICBAYXBwbHkgLWJvdHRvbS0yICBoLTEgdy1mdWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXI6YWZ0ZXIge1xuICAgICAgICAgIEBhcHBseSBzY2FsZS14LTEwMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLm5hdl9fcG9pbnRlcjphZnRlciB7XG4gICAgICAgIEBhcHBseSBzY2FsZS14LTEwMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuYWN0aXZpdHktbmF2LWxpc3QuYWN0aXZpdHktbGlzdCB7XG4gICAgICAubmF2X19wb2ludGVyLFxuICAgICAgLm5hdl9fcG9pbnRlci1ob3ZlciB7XG4gICAgICAgIEBhcHBseSByZWxhdGl2ZTtcbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgY29udGVudDogJyc7XG5cbiAgICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxNDIwcHgpIHtcbiAgICAgICAgICAgIEBhcHBseSB0b3AtMCAtbGVmdC00IGgtNCB3LTE7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlcjphZnRlciB7XG4gICAgICAgICAgQGFwcGx5IHNjYWxlLXgtMTAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAubmF2X19wb2ludGVyOmFmdGVyIHtcbiAgICAgICAgQGFwcGx5IHNjYWxlLXgtMTAwO1xuICAgICAgfVxuICAgIH1cbiAgICAuYWN0aXZpdHktbmF2LWxpc3QubGFuZ3VhZ2UtbmF2LWxpc3Qge1xuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogMjhweDtcbiAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjQpO1xuXG4gICAgICAubmF2X19wb2ludGVyLFxuICAgICAgLm5hdl9fcG9pbnRlci1ob3ZlciB7XG4gICAgICAgIEBhcHBseSByZWxhdGl2ZTtcbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgQGFwcGx5IGFic29sdXRlIGJvdHRvbS0wIGxlZnQtMCBoLTEgdy1mdWxsIHNjYWxlLXgtMCBzY2FsZS15LTEwMCByb3VuZGVkLXNtIGJnLXR1cnF1b2lzZSB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi01MDA7XG5cbiAgICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxNDIwcHgpIHtcbiAgICAgICAgICAgIEBhcHBseSAtYm90dG9tLTIgIGgtMSB3LWZ1bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlcjphZnRlciB7XG4gICAgICAgICAgQGFwcGx5IHNjYWxlLXgtMTAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAubmF2X19wb2ludGVyOmFmdGVyIHtcbiAgICAgICAgQGFwcGx5IHNjYWxlLXgtMTAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuLm5hdi1hY3RpdmUge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpO1xufVxuXG4ubmF2IHtcbiAgJl9fcG9pbnRlcixcbiAgJl9fcG9pbnRlci1ob3ZlciB7XG4gICAgQGFwcGx5IHJlbGF0aXZlO1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBAYXBwbHkgYWJzb2x1dGUgYm90dG9tLTAgbGVmdC0wIGgtMSB3LWZ1bGwgc2NhbGUteC0wIHNjYWxlLXktMTAwIHJvdW5kZWQtc20gYmctdHVycXVvaXNlIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMDtcblxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTQyMHB4KSB7XG4gICAgICAgIEBhcHBseSAtbGVmdC00IGgtNCB3LTE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjpob3ZlcjphZnRlciB7XG4gICAgICBAYXBwbHkgc2NhbGUteC0xMDA7XG4gICAgfVxuICB9XG5cbiAgJl9fcG9pbnRlcjphZnRlciB7XG4gICAgQGFwcGx5IHNjYWxlLXgtMTAwO1xuICB9XG59XG5cbi5hY3Rpdml0eS1uYXYge1xuICBAYXBwbHkgZmxleCBncm93O1xuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDE0MjBweCkge1xuICAgIEBhcHBseSBqdXN0aWZ5LWVuZDtcbiAgfVxufVxuXG4ubGFuZ3VhZ2UtaG92ZXI6aG92ZXIge1xuICBAYXBwbHkgbmF2X19hY3RpdmUgbGlua3NfX2FjdGl2ZTtcbiAgYSB7XG4gICAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG4gIH1cbn1cbiIsIi5tYWluIHtcbiAgJl9fY29udGFpbmVyIHtcbiAgICBtYXgtd2lkdGg6IDExNjZweDtcbiAgICBtYXJnaW46IGF1dG87XG4gIH1cbiAgLmxlZnRfX2NvbnRhaW5lciB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KFxuICAgICAgMTYwZGVnLFxuICAgICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpLFxuICAgICAgdHJhbnNwYXJlbnRcbiAgICApO1xuXG4gICAgYSB7XG4gICAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBAYXBwbHkgYm9yZGVyLWItMiBib3JkZXItdHVycXVvaXNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAucmlnaHQge1xuICAgIHdpZHRoOiA5MyU7XG4gICAgYm94LXNoYWRvdzogMHB4IDIwcHggNDBweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XG5cbiAgICAmX19jb250YWluZXIge1xuICAgICAgaDIge1xuICAgICAgICBsaW5lLWhlaWdodDogNjBweDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmX19jb250ZW50IHtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgYm94LXNoYWRvdzogMHB4IDBweCAyNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgICBAYXBwbHkgZmxleCBpdGVtcy1jZW50ZXIgcm91bmRlZC1sZyBiZy13aGl0ZSBweS02IHB4LTU7XG5cbiAgICAgIC5yaWdodF9faWNvbiB7XG4gICAgICAgIEBhcHBseSB0ZXh0LWxhZ29vbi01MDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogLThweDtcbiAgICAgIH1cbiAgICAgIC5yaWdodF9fYXJyb3cge1xuICAgICAgICBAYXBwbHkgdGV4dC13aGl0ZTtcbiAgICAgIH1cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBAYXBwbHkgYm9yZGVyIGJvcmRlci10dXJxdW9pc2UgYmctdHVycXVvaXNlIGJnLW9wYWNpdHktMTA7XG4gICAgICAgIGJveC1zaGFkb3c6IDBweCAwcHggMjVweCAwcHggdHJhbnNwYXJlbnQ7XG5cbiAgICAgICAgLnJpZ2h0X19pY29uIHtcbiAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgQGFwcGx5IGZpbGwtbGFnb29uLTUwIHRleHQtd2hpdGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC5yaWdodF9fYXJyb3cge1xuICAgICAgICAgIEBhcHBseSBmaWxsLXdoaXRlIHRleHQtdHVycXVvaXNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEzNjZweCkge1xuICAgIC5qb2luLW5vdyB7XG4gICAgICBAYXBwbHkgcHgtMjA7XG5cbiAgICAgIC5yaWdodF9fY29udGVudCB7XG4gICAgICAgIHdpZHRoOiA0MjNweDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XG4gIGlucHV0IHtcbiAgICBwYWRkaW5nLWxlZnQ6IDYwcHg7XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMjRweCkge1xuICAubGVmdCB7XG4gICAgaGVpZ2h0OiA2NDlweDtcblxuICAgICZfX2NvbnRhaW5lciB7XG4gICAgICB3aWR0aDogMzg2cHg7XG4gICAgfVxuICB9XG4gIC5yaWdodCB7XG4gICAgaGVpZ2h0OiA2NDlweDtcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgLnJpZ2h0IHtcbiAgICBtYXJnaW4tdG9wOiAtMjY1cHg7XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQyMHB4KSB7XG4gIC5yaWdodF9faWNvbiB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICAuZGV0YWlscyB7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gIH1cbn1cbjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICB3aWR0aDogOHB4O1xuICBoZWlnaHQ6IDhweDtcbn1cbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICBAYXBwbHkgcm91bmRlZC1sZyBiZy1uLTIwIGhvdmVyOmJnLW4tMzA7XG59XG5tYWluIHtcbiAgZGlzcGxheTogZ3JpZDsgLy8gTGluZSAxXG4gIGdyaWQtdGVtcGxhdGUtcm93czogYXV0byAxZnIgYXV0bzsgLy8gTGluZSAyXG4gIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggLSA0NjVweCk7IC8vIExpbmUgM1xufVxuLmFjdGl2aXRpZXNfX3NpZGViYXIge1xuICBmbGV4LXNocmluazogMDtcbiAgQG1lZGlhIChtYXgtd2lkdGg6IDcwMHB4KSB7XG4gICAgd2lkdGg6IDIyMHB4ICFpbXBvcnRhbnQ7XG4gIH1cbn1cbmJvZHkuZGlzYWJsZS1zY3JvbGwge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBoZWlnaHQ6IDEwcHg7XG59XG4vLyBib2R5IHtcbi8vICAgcGFkZGluZy10b3A6IDYwcHg7XG4vLyB9XG5cbi8vIGJvZHkubm8tbmF2IHtcbi8vICAgcGFkZGluZy10b3A6IDBweCAhaW1wb3J0YW50O1xuLy8gfVxuaHRtbCB7XG4gIHNjcm9sbC1wYWRkaW5nLXRvcDogMjBweDsgLyogaGVpZ2h0IG9mIHN0aWNreSBoZWFkZXIgKi9cbn1cbiIsIi5zbW9vdGgge1xuICBhbmltYXRpb246IGZhZGVJbkFuaW1hdGlvbiBlYXNlIDAuM3M7XG4gIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDE7XG59XG5cbkBrZXlmcmFtZXMgZmFkZUluQW5pbWF0aW9uIHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuIiwiLmlucHV0IHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgcGFkZGluZzogMTRweCAwcHggMTRweCA1NXB4O1xuICBmb250LXNpemU6IDE2cHg7XG4gIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIG91dGxpbmU6IG5vbmU7XG4gIHRyYW5zaXRpb246IDAuM3M7XG4gIEBhcHBseSBoLTE0IGJvcmRlciBib3JkZXItbi0zMCBzbTpoLTE2O1xuXG4gICY6Zm9jdXMge1xuICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLW4tNTAgYmctbi0xMDtcbiAgfVxuXG4gICY6OnBsYWNlaG9sZGVyIHtcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcbiAgICBAYXBwbHkgZm9udC1ub3JtYWwgdGV4dC1uLTQwO1xuICB9XG5cbiAgJjpmb2N1czo6cGxhY2Vob2xkZXIge1xuICAgIEBhcHBseSB0ZXh0LW4tNTA7XG4gIH1cblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xuICAgIHBhZGRpbmc6IDIwcHggMHB4IDIwcHggNTVweDtcbiAgfVxufVxuLmVycm9yIHtcbiAgQGFwcGx5IHRleHQtc20gdGV4dC1jcmltc29uLTUwIHNtOnRleHQtYmFzZTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBsaW5lLWhlaWdodDogMThweDtcbn1cblxuLmhhc19lcnJvciB7XG4gIC5mb3JtX19pbnB1dCB7XG4gICAgQGFwcGx5IGJvcmRlciBib3JkZXItY3JpbXNvbi01MDtcbiAgfVxufVxudGV4dGFyZWEuZm9ybV9faW5wdXQge1xuICBkaXNwbGF5OiBibG9jaztcbn1cbi50ZXh0LWFyZWEge1xuICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7XG4gIGhlaWdodDogNjBweDtcbiAgcmVzaXplOiBub25lO1xufVxuLmZvcm1fX2lucHV0IHtcbiAgQGFwcGx5IG1iLTIgYm94LWJvcmRlciB3LWZ1bGwgcm91bmRlZCBib3JkZXIgYm9yZGVyLW4tMzAgdGV4dC1ibHVlY29yYWwgb3V0bGluZS1ub25lIGR1cmF0aW9uLTMwMDtcblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xuICAgIHBhZGRpbmc6IDEzcHggMCAxM3B4IDE2cHg7XG4gIH1cbiAgcGFkZGluZzogMTBweCAwIDEwcHggMTZweDtcblxuICAmOjpwbGFjZWhvbGRlciB7XG4gICAgQGFwcGx5IHRleHQtc20gZm9udC1ub3JtYWwgdGV4dC1uLTQwO1xuICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xuICB9XG5cbiAgJjpmb2N1cyB7XG4gICAgQGFwcGx5IGJvcmRlciBib3JkZXItbi01MCBiZy1uLTEwO1xuICB9XG5cbiAgJjpmb2N1czo6cGxhY2Vob2xkZXIge1xuICAgIEBhcHBseSB0ZXh0LW4tNTA7XG4gIH1cbn1cbi5pbnB1dF9fZmllbGQge1xuICAubXVsdGlzZWxlY3Qtb3B0aW9uLmlzLXNlbGVjdGVkIHtcbiAgICBAYXBwbHkgYmctbi0yMCB0ZXh0LW4tNTA7XG4gIH1cblxuICAubXVsdGlzZWxlY3Qtb3B0aW9uLmlzLXNlbGVjdGVkLmlzLXBvaW50ZWQge1xuICAgIEBhcHBseSBiZy1uLTIwIHRleHQtbi01MDtcbiAgfVxuXG4gIC5tdWx0aXNlbGVjdC5pcy1hY3RpdmUge1xuICAgIEBhcHBseSBib3JkZXIgYm9yZGVyLW4tNTAgYmctbi0xMDtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAwO1xuICB9XG5cbiAgLm11bHRpc2VsZWN0LXBsYWNlaG9sZGVyIHtcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcbiAgICBAYXBwbHkgdy1bMzEwcHhdIG92ZXJmbG93LWhpZGRlbiB3aGl0ZXNwYWNlLW5vd3JhcCBwci0zIHRleHQtc20gdGV4dC1uLTQwIGR1cmF0aW9uLTMwMDtcbiAgfVxuXG4gIC5tdWx0aXNlbGVjdC1wbGFjZWhvbGRlcjo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIEBhcHBseSBhYnNvbHV0ZSByaWdodC0wIHRvcC0zIGgtNiB3LTcgYmctd2hpdGU7XG4gIH1cblxuICAubXVsdGlzZWxlY3QuaXMtb3BlbiB7XG4gICAgLm11bHRpc2VsZWN0LXBsYWNlaG9sZGVyIHtcbiAgICAgIEBhcHBseSB0ZXh0LW4tNTA7XG4gICAgfVxuICB9XG5cbiAgLm11bHRpc2VsZWN0LWRyb3Bkb3duIHtcbiAgICBAYXBwbHkgYm9yZGVyIGJvcmRlci1uLTUwO1xuICB9XG5cbiAgLm11bHRpc2VsZWN0LWNhcmV0IHtcbiAgICAtd2Via2l0LW1hc2staW1hZ2U6IHVybCgnL2ltYWdlcy9kcm9wZG93bi1hcnJvdy5zdmcnKTtcbiAgICBtYXNrLWltYWdlOiB1cmwoJy9pbWFnZXMvZHJvcGRvd24tYXJyb3cuc3ZnJyk7XG4gIH1cblxuICAubXVsdGlzZWxlY3Qtc2VhcmNoIHtcbiAgICBAYXBwbHkgY3Vyc29yLXBvaW50ZXIgYm9yZGVyIGJvcmRlci1uLTMwIHB5LTIuNTtcbiAgfVxuXG4gIC5tdWx0aXNlbGVjdC1zZWFyY2g6Zm9jdXMge1xuICAgIEBhcHBseSBiZy1uLTEwO1xuICB9XG5cbiAgLm11bHRpc2VsZWN0LXNlYXJjaDpmb2N1cyArIC5tdWx0aXNlbGVjdC1wbGFjZWhvbGRlcjo6YWZ0ZXIge1xuICAgIEBhcHBseSBiZy1uLTEwO1xuICB9XG5cbiAgLnZ1ZV9fc2VsZWN0IHtcbiAgICBAYXBwbHkgbWItMiBib3JkZXIgYm9yZGVyLW4tMzAgdGV4dC1zbSBsZWFkaW5nLTYgb3V0bGluZS1ub25lIGR1cmF0aW9uLTMwMDtcblxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XG4gICAgICBwYWRkaW5nOiAxNnB4IDBweCAxNnB4IDU1cHg7XG4gICAgfVxuICAgIHBhZGRpbmc6IDEzcHggMHB4IDEzcHggNTVweDtcbiAgfVxufVxuLmVycm9yX2lucHV0IHtcbiAgYm9yZGVyOiAxcHggc29saWQgI2QxMDAxZTtcbn1cbi5lcnJvcl9fbXVsdGlzZWxlY3Qge1xuICBpbnB1dCB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2QxMDAxZTtcbiAgfVxufVxuLnBhbmVsX19pbnB1dCB7XG4gIEBhcHBseSBib3gtYm9yZGVyIGgtMTAgdy1mdWxsIHJvdW5kZWQgYm9yZGVyIGJvcmRlci1uLTMwIGJnLXBhcGVyIHB5LTIuNSBwbC03IHByLTMgb3V0bGluZS1ub25lIGR1cmF0aW9uLTMwMDtcblxuICAmOjpwbGFjZWhvbGRlciB7XG4gICAgQGFwcGx5IHRleHQteHMgZm9udC1ub3JtYWwgdGV4dC1uLTMwIGR1cmF0aW9uLTMwMDtcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcbiAgfVxuXG4gICY6Zm9jdXM6OnBsYWNlaG9sZGVyIHtcbiAgICBAYXBwbHkgdGV4dC1uLTQwO1xuICB9XG59XG4uc2VhcmNoIHtcbiAgQGFwcGx5IHJlbGF0aXZlO1xuXG4gICZfX2lucHV0IHtcbiAgICBAYXBwbHkgYm9yZGVyIGJvcmRlci1uLTMwIGJnLXRyYW5zcGFyZW50IG91dGxpbmUtbm9uZTtcbiAgICBwYWRkaW5nOiAxMHB4IDQycHggMTBweCAzNHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gIH1cbiAgc3ZnIHtcbiAgICBAYXBwbHkgYWJzb2x1dGUgbGVmdC0zIHRvcC0zIHRleHQtYmFzZSB0ZXh0LW4tMzA7XG4gIH1cbn1cbi5yZXF1aXJlZC1pY29uIHtcbiAgQGFwcGx5IHJlbGF0aXZlIHRvcC0wLjUgdGV4dC1iYXNlIGxlYWRpbmctbm9uZSB0ZXh0LWNyaW1zb24tNTA7XG59XG4ub3Blbi10ZXh0IHtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjYTZiNWJhO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGlucHV0IHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHBhZGRpbmctdG9wOiA0cHg7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBwYWRkaW5nLWxlZnQ6IDMwcHg7XG4gICAgJjpmb2N1cyB7XG4gICAgICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG59XG4udXNlci1jaGVja2xpc3Qge1xuICBvcGFjaXR5OiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHdpZHRoOiAxOHB4O1xuICBoZWlnaHQ6IDE4cHg7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbn1cbi5wc2V1ZG8tY2hlY2tib3gge1xuICBoZWlnaHQ6IDE4cHg7XG4gIHdpZHRoOiAxOHB4O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgYm9yZGVyOiAycHggc29saWQgI2Q1ZGNkZTtcbiAgb3BhY2l0eTogMTtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbn1cbi51c2VyLWNoZWNrbGlzdDpjaGVja2VkIH4gLnBzZXVkby1jaGVja2JveCB7XG4gIGJvcmRlci1jb2xvcjogcmdiKHZhcigtLXNwcmluZy01MCkpO1xufVxuLnRpY2tlZC1zdmcge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMXB4O1xuICBsZWZ0OiAxcHg7XG4gIG9wYWNpdHk6IDA7XG4gIGhlaWdodDogMTZweDtcbiAgd2lkdGg6IDE2cHg7XG4gIHRyYW5zZm9ybTogc2NhbGUoMC43KTtcbn1cbi51c2VyLWNoZWNrbGlzdDpjaGVja2VkIH4gLnRpY2tlZC1zdmcge1xuICBvcGFjaXR5OiAxO1xufVxuaW5wdXRbdHlwZT0ncmFkaW8nXSB7XG4gIGFjY2VudC1jb2xvcjogIzE1NTM2Njtcbn1cbiIsIi5jaGVja2JveCB7XG4gIEBhcHBseSByZWxhdGl2ZSBibG9jayBjdXJzb3ItcG9pbnRlciBzZWxlY3Qtbm9uZTtcbiAgLmNoZWNrbWFyayB7XG4gICAgQGFwcGx5IGZsZXggaC00IHctNCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZCBib3JkZXItMiBib3JkZXItbi0yMDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlO1xuICAgICY6YWZ0ZXIge1xuICAgICAgYm9yZGVyLXdpZHRoOiAwIDNweCAzcHggMDtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgQGFwcGx5IG1iLTAuNSBoaWRkZW4gaC0yIHctWzVweF0gcm90YXRlLTQ1IGJvcmRlci1zcHJpbmctNTA7XG4gICAgfVxuICB9XG4gIGlucHV0IHtcbiAgICBAYXBwbHkgYWJzb2x1dGUgaC0wIHctMCBjdXJzb3ItcG9pbnRlciBvcGFjaXR5LTA7XG4gICAgJjpjaGVja2VkIH4gLmNoZWNrbWFyayB7XG4gICAgICBAYXBwbHkgYm9yZGVyLXNwcmluZy01MDtcbiAgICAgICY6YWZ0ZXIge1xuICAgICAgICBAYXBwbHkgYmxvY2s7XG4gICAgICB9XG4gICAgfVxuICB9XG4gICY6aG92ZXIgaW5wdXQgfiAuY2hlY2ttYXJrIHtcbiAgICBAYXBwbHkgYm9yZGVyLXNwcmluZy01MDtcbiAgfVxufVxuLyoqXG4gIExhcmF2ZWwgZm9ybSBkZXNpZ25cbiAqL1xuZm9ybSB7XG4gIC5mb3JtLWZpZWxkLWdyb3VwIHtcbiAgICBAYXBwbHkgcmVsYXRpdmUgcC0zO1xuICAgICY6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgICBAYXBwbHkgbWItNjtcbiAgICB9XG5cbiAgICAuZm9ybS1maWVsZCB7XG4gICAgICBAYXBwbHkgcC0zO1xuICAgICAgLmhlbHAtdGV4dCB7XG4gICAgICAgIEBhcHBseSBtdC0yIHRleHQteHMgbGVhZGluZy1yZWxheGVkO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBidXR0b24uZGVsZXRlLWl0ZW0ge1xuICAgIEBhcHBseSBhYnNvbHV0ZSBoLTggdy04IGN1cnNvci1wb2ludGVyIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLWZ1bGwgYmctbi00MCAtaW5kZW50LTQwO1xuICAgICY6YWZ0ZXIge1xuICAgICAgYmFja2dyb3VuZDogdXJsKCcvaW1hZ2VzL3RyYXNoX2Z1bGwuc3ZnJykgbm8tcmVwZWF0IGNlbnRlcjtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgQGFwcGx5IGFic29sdXRlIGxlZnQtMS8yIHRvcC0xLzIgaC1bMThweF0gdy1bMThweF0gLXRyYW5zbGF0ZS14LTEvMiAtdHJhbnNsYXRlLXktMS8yO1xuICAgIH1cbiAgICAmOmhvdmVyIHtcbiAgICAgIEBhcHBseSBiZy1ibHVlY29yYWw7XG4gICAgfVxuICB9XG5cbiAgLmZvcm0tZmllbGQtZ3JvdXAtb3V0ZXIgLmZvcm0tZmllbGQge1xuICAgIEBhcHBseSBweC0zO1xuICB9XG5cbiAgLmZvcm0tZmllbGQtbGFiZWwge1xuICAgIEBhcHBseSBtYi0yIGZsZXgganVzdGlmeS1iZXR3ZWVuO1xuICAgIGxhYmVsIHtcbiAgICAgIEBhcHBseSB0ZXh0LXhzIGxlYWRpbmctcmVsYXhlZDtcbiAgICB9XG4gICAgLnJlcXVpcmVkIHtcbiAgICAgIEBhcHBseSBmb250LWJvbGQgdGV4dC1zYWxtb24tNTA7XG4gICAgfVxuICB9XG4gIGlucHV0W3R5cGU9J3RleHQnXSxcbiAgaW5wdXRbdHlwZT0nZGF0ZSddLFxuICB0ZXh0YXJlYSB7XG4gICAgQGFwcGx5IG10LTAgaC0xMiB3LWZ1bGwgcm91bmRlZCBib3JkZXIgYm9yZGVyLW4tMzAgcHgtNCBweS0yLjUgdGV4dC1zbSBsZWFkaW5nLW5vcm1hbCBvdXRsaW5lLW5vbmUgZHVyYXRpb24tMzAwO1xuICAgICY6OnBsYWNlaG9sZGVyIHtcbiAgICAgIEBhcHBseSB0ZXh0LXNtIHRleHQtbi00MDtcbiAgICB9XG4gICAgJjpmb2N1cyB7XG4gICAgICBAYXBwbHkgYm9yZGVyIGJvcmRlci1uLTUwIGJnLW4tMTA7XG4gICAgfVxuICAgICY6Zm9jdXM6OnBsYWNlaG9sZGVyIHtcbiAgICAgIEBhcHBseSB0ZXh0LW4tNTA7XG4gICAgfVxuICB9XG5cbiAgaW5wdXRbdHlwZT0ndGV4dCddLFxuICBpbnB1dFt0eXBlPSdkYXRlJ10ge1xuICAgIEBhcHBseSBoLTEyO1xuICB9XG5cbiAgc2VsZWN0IHtcbiAgICBAYXBwbHkgdy1mdWxsIHJvdW5kZWQgYm9yZGVyIGJvcmRlci1uLTMwIHB4LTQgcHktMyB0ZXh0LXNtIHRleHQtbi00MCBvdXRsaW5lLW5vbmUgZHVyYXRpb24tMzAwO1xuICAgICY6Zm9jdXMge1xuICAgICAgQGFwcGx5IGJvcmRlciBib3JkZXItbi01MCBiZy1uLTEwO1xuICAgIH1cbiAgfVxuICAuaGVscCB7XG4gICAgQGFwcGx5IHJlbGF0aXZlO1xuICAgICZfX3RleHQge1xuICAgICAgQGFwcGx5IGludmlzaWJsZSBhYnNvbHV0ZSB0b3AtNCB6LTIwIHNwYWNlLXktMS41IHJvdW5kZWQgYmctZWdnc2hlbGwgcC00IHRleHQtbGVmdCB0ZXh0LXhzIHRleHQtbi00MCBvcGFjaXR5LTAgZHVyYXRpb24tMjAwO1xuICAgICAgYm94LXNoYWRvdzogMHB4IDRweCA0MHB4IHJnYigwIDAgMCAvIDEwJSk7XG4gICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dDtcbiAgICB9XG4gIH1cbiAgLmhlbHA6aG92ZXIge1xuICAgIC5oZWxwX190ZXh0IHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg1cHgpO1xuICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9XG4gIC5hZGRfbW9yZSB7XG4gICAgQGFwcGx5IHJlbGF0aXZlO1xuICAgICY6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgQGFwcGx5IGFic29sdXRlIGxlZnQtMCB0b3AtMCBoLTEvMiB3LXB4IGJvcmRlci1sIGJvcmRlci1zcHJpbmctNTA7XG4gICAgfVxuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBAYXBwbHkgYWJzb2x1dGUgbGVmdC0wIHRvcC0yLzQgaC1weCB3LTMuNSAtdHJhbnNsYXRlLXktMS8yIGJvcmRlci1iIGJvcmRlci1zcHJpbmctNTA7XG4gICAgfVxuXG4gICAgaSB7XG4gICAgICB3aWR0aDogMThweDtcbiAgICAgIGhlaWdodDogMThweDtcbiAgICAgIGJhY2tncm91bmQ6IHVybCgnL2ltYWdlcy9hZGQtbW9yZS1ncmVlbi5zdmcnKSBuby1yZXBlYXQgY2VudGVyO1xuICAgIH1cbiAgfVxuICAuc3ViZWxlbWVudCB7XG4gICAgJi5ib3JkZXItbCA+IGxhYmVsIHtcbiAgICAgIGJvcmRlci1sZWZ0OiAwO1xuICAgIH1cbiAgICAuc3ViZWxlbWVudCxcbiAgICAuc3ViZWxlbWVudCArIGJ1dHRvbiB7XG4gICAgICBAYXBwbHkgbWwtNjtcbiAgICB9XG5cbiAgICAud3JhcHBlZC1jaGlsZC1ib2R5IHtcbiAgICAgIEBhcHBseSByZWxhdGl2ZTtcbiAgICAgID4gLmRlbGV0ZS1wYXJlbnQge1xuICAgICAgICBAYXBwbHkgYmxvY2s7XG4gICAgICB9XG4gICAgfVxuICAgID4gLm11bHRpLWZvcm06b25seS1vZi10eXBlID4gLmRlbGV0ZS1wYXJlbnQsXG4gICAgLndyYXBwZWQtY2hpbGQtYm9keTpvbmx5LW9mLXR5cGUgPiAuZGVsZXRlLXBhcmVudCB7XG4gICAgICBAYXBwbHkgaGlkZGVuO1xuICAgIH1cbiAgfVxuXG4gIC5mb3JtLWZpZWxkLWdyb3VwOm9ubHktb2YtdHlwZSA+IC5kZWxldGUtaXRlbSB7XG4gICAgQGFwcGx5IGhpZGRlbjtcbiAgfVxuXG4gIC8qKlxuICAqIENvbmRpdGlvbiB0byBzaG93IGFuZCBkZWxldGUgY29sbGVjdGlvbiBlcnJvciBpbiBmb3JtXG4gICovXG4gIC5jb2xsZWN0aW9uX2Vycm9yIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLm11bHRpLWZvcm0gKyAuY29sbGVjdGlvbl9lcnJvcixcbiAgLmZvcm0tZmllbGQtZ3JvdXAgKyAuY29sbGVjdGlvbl9lcnJvcixcbiAgLndyYXBwZWQtY2hpbGQtYm9keSArIC5jb2xsZWN0aW9uX2Vycm9yIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuICAuY29udHJvbC1sYWJlbCArIC5jb2xsZWN0aW9uX2Vycm9yLFxuICAudGl0bGUtY29udGFpbmVyIC5jb2xsZWN0aW9uX2Vycm9yIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nLXJpZ2h0OiAyNHB4O1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAuZGl2IHtcbiAgICAgIGxpbmUtaGVpZ2h0OiA0cHggIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gIFNlbGVjdCAyIGZpZWxkXG4qL1xuc3Bhbi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCB7XG4gIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuICAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSB7XG4gICAgQGFwcGx5IGgtMTIgdy1mdWxsIHJvdW5kZWQgYm9yZGVyIGJvcmRlci1uLTMwIHB4LTQgcHktMyB0ZXh0LXNtIHRleHQtbi00MCBvdXRsaW5lLW5vbmUgZHVyYXRpb24tMzAwO1xuICAgIC5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQge1xuICAgICAgQGFwcGx5IHAtMCB0ZXh0LXNtIGxlYWRpbmctbm9ybWFsO1xuICAgIH1cbiAgICAuc2VsZWN0Mi1zZWxlY3Rpb25fX2Fycm93IHtcbiAgICAgIEBhcHBseSBoLTExO1xuICAgIH1cbiAgICAuc2VsZWN0Mi1zZWxlY3Rpb25fX2NsZWFyIHNwYW4ge1xuICAgICAgQGFwcGx5IG1yLTIuNSB0ZXh0LXNtO1xuICAgIH1cbiAgICAuc2VsZWN0Mi1zZWxlY3Rpb25fX3BsYWNlaG9sZGVyIHtcbiAgICAgIEBhcHBseSB0ZXh0LXNtIHRleHQtbi00MDtcbiAgICB9XG4gIH1cbiAgLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1oaWdobGlnaHRlZFthcmlhLXNlbGVjdGVkXSB7XG4gICAgY29sb3I6ICMxZjI5Mzc7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2YzZjRmNjtcbiAgfVxuICAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb25bYXJpYS1zZWxlY3RlZF0ge1xuICAgIEBhcHBseSB0ZXh0LXNtIHRleHQtbi01MDtcbiAgfVxufVxuLm1heC13LWhhbGYge1xuICBtYXgtd2lkdGg6IDUwJTtcbn1cblxuLyoqXG4gIEFjdGl2aXR5IERldGFpbCBQYWdlXG4qL1xuLmFjdGl2aXRpZXMge1xuICBAYXBwbHkgZmxleCBnYXAtNSB4bDpnYXAtNztcblxuICAmX19zaWRlYmFyIHtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICB3aWR0aDogMjgwcHg7XG5cbiAgICAmLWlubmVyIHtcbiAgICAgIG9yZGVyOiAxO1xuICAgIH1cbiAgfVxuXG4gICZfX2NvbnRlbnQge1xuICAgIEBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAgICAgbWF4LXdpZHRoOiBjYWxjKDEwMHZ3IC0gNTBweCk7XG4gICAgfVxuICB9XG5cbiAgJl9fY2FyZCB7XG4gICAgQGFwcGx5IGZsZXggZmxleC1jb2wgYmctd2hpdGUgdGV4dC1jZW50ZXIgdGV4dC14cyB0ZXh0LW4tNDA7XG4gICAgcGFkZGluZzogMTNweDtcbiAgfVxuXG4gIC5wcm9ncmVzcyB7XG4gICAgQGFwcGx5IGl0ZW1zLWNlbnRlcjtcbiAgICB3aWR0aDogMTUxcHg7XG4gICAgbWluLWhlaWdodDogMTc0cHg7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4IDBweCAwcHggOHB4O1xuICB9XG5cbiAgLnRhYi1idG46ZGlzYWJsZWQge1xuICAgIEBhcHBseSBwb2ludGVyLWV2ZW50cy1ub25lIHRleHQtbi0yMDtcblxuICAgIHN2ZyB7XG4gICAgICBAYXBwbHkgdGV4dC1uLTIwO1xuICAgIH1cbiAgfVxuICAuaG92ZXItdGV4dCB7XG4gICAgc3ZnIHtcbiAgICAgIEBhcHBseSB0ZXh0LW4tMzA7XG4gICAgfVxuICB9XG59XG4uZWxlbWVudHMtY2FyZCB7XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDExOTBweCkge1xuICAgIGZsZXgtYmFzaXM6IGF1dG87XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbn1cbi5tYW51YWwtaW1wb3J0IHtcbiAgLmhlbHBfX3RleHQge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKSAhaW1wb3J0YW50O1xuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAxMDI0cHgpIHtcbiAgICAgIHdpZHRoOiAzNTBweCAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxufVxuLnJlZ2lzdGVyLXBhZ2UgLmhlbHBfX3RleHQge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpICFpbXBvcnRhbnQ7XG59XG5cbi5yZWdpc3RyeV9faW5mbyxcbi5yZWdpc3RlcixcbmFzaWRlIHtcbiAgLmhlbHBfX3RleHQge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKSAhaW1wb3J0YW50O1xuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAxMzcwcHgpIHtcbiAgICAgIHdpZHRoOiAyNTBweCAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxufVxuLmltcG9ydC1hY3Rpdml0eSxcbi5hY3Rpdml0aWVzX19jb250ZW50LS1lbGVtZW50IHtcbiAgLmhlbHBfX3RleHQge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKSAhaW1wb3J0YW50O1xuICB9XG59XG5hc2lkZSB7XG4gIC5wcm9ncmVzcyB7XG4gICAgLmhlbHBfX3RleHQge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApICFpbXBvcnRhbnQ7XG5cbiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiAxMDI0cHgpIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC00NSUpICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4uYWN0aXZpdGllc19fY29udGVudCB7XG4gIHdpZHRoOiAxMDAlO1xufVxuLnRhYi1idG4ge1xuICAuaGVscF9fdGV4dCB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApICFpbXBvcnRhbnQ7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICAgICAgbGVmdDogMDtcbiAgICB9XG4gIH1cbn1cbi5hY3Rpdml0eS1kZWZhdWx0LXZhbHVlIHtcbiAgLmhlbHBfX3RleHQge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSkgIWltcG9ydGFudDtcbiAgfVxufVxuLmVycm9yLXRpdGxlIHtcbiAgY29sb3I6ICNkMTAwMWU7XG4gIHBhZGRpbmctdG9wOiA4cHggIWltcG9ydGFudDtcbiAgcGFkZGluZy1ib3R0b206IDhweCAhaW1wb3J0YW50O1xufVxuLnRleHQtZGFuZ2VyLWVycm9yIHtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICBmb250LXNpemU6IDEycHg7XG4gIGxpbmUtaGVpZ2h0OiAxOHB4O1xuICBmb250LXdlaWdodDogNDAwO1xufVxuIiwiLmZvb3Rlcl9fY29udGFpbmVyIHtcbiAgbWF4LXdpZHRoOiAxMTY2cHg7XG4gIG1hcmdpbjogYXV0bztcblxuICAuZm9vdGVyX19saW5rcyB7XG4gICAgYSB7XG4gICAgICBAYXBwbHkgYm9yZGVyLWItMiBib3JkZXItdHJhbnNwYXJlbnQgdGV4dC1uLTIwO1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgQGFwcGx5IGJvcmRlci1iLTIgYm9yZGVyLXR1cnF1b2lzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi5zZWxlY3QyLWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBtYXJnaW46IDA7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cbiAgJjpmb2N1cy13aXRoaW4ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmMWY3Zjk7XG4gIH1cblxuICAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBoZWlnaHQ6IDI4cHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG5cbiAgICAmOmZvY3VzLXdpdGhpbiB7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjMmEyZjMwO1xuICAgIH1cblxuICAgIC5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQge1xuICAgICAgcGFkZGluZy1yaWdodDogMjBweDtcbiAgICAgIHBhZGRpbmctbGVmdDogOHB4O1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDE7XG4gICAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAgIH1cbiAgfVxufVxuXG4uc2VsZWN0Mi1kcm9wZG93biB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogLTEwMDAwMHB4O1xuICBkaXNwbGF5OiBibG9jaztcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBib3JkZXI6IDFweCBzb2xpZCAjYWFhO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG59XG5cbi5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbiB7XG4gIHBhZGRpbmc6IDZweDtcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG5cbiAgJlthcmlhLXNlbGVjdGVkXSB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG59XG5cbi5zZWxlY3QyLWNvbnRhaW5lci0tb3BlbiB7XG4gIC5zZWxlY3QyLWRyb3Bkb3duIHtcbiAgICBsZWZ0OiAwO1xuXG4gICAgJi0tYWJvdmUge1xuICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbiAgICB9XG5cbiAgICAmLS1iZWxvdyB7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgYm9yZGVyLXRvcDogbm9uZTtcbiAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcbiAgICB9XG4gIH1cbn1cblxuLnNlbGVjdDItc2VhcmNoLS1kcm9wZG93biB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiA0cHg7XG5cbiAgLnNlbGVjdDItc2VhcmNoX19maWVsZCB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiA0cHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2E2YjViYTtcbiAgICBib3JkZXItcmFkaXVzOiA1cHg7XG5cbiAgICAmOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uIHtcbiAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICB9XG4gIH1cbn1cblxuW3R5cGU9J3NlYXJjaCddIHtcbiAgb3V0bGluZS1jb2xvcjogI2E2YjViYTtcbiAgb3V0bGluZS1vZmZzZXQ6IDA7XG59XG5cbi5zZWxlY3QyLWhpZGRlbi1hY2Nlc3NpYmxlIHtcbiAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG4gIHdpZHRoOiAxcHggIWltcG9ydGFudDtcbiAgaGVpZ2h0OiAxcHggIWltcG9ydGFudDtcbiAgbWFyZ2luOiAtMXB4ICFpbXBvcnRhbnQ7XG4gIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50O1xuICBib3JkZXI6IDAgIWltcG9ydGFudDtcbiAgY2xpcDogcmVjdCgwIDAgMCAwKSAhaW1wb3J0YW50O1xufVxuXG4uc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQge1xuICAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSB7XG4gICAgLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCB7XG4gICAgICBjb2xvcjogIzE1NTM2NjtcbiAgICAgIGxpbmUtaGVpZ2h0OiAyOHB4O1xuICAgIH1cblxuICAgIC5zZWxlY3QyLXNlbGVjdGlvbl9fY2xlYXIge1xuICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuXG4gICAgLnNlbGVjdDItc2VsZWN0aW9uX19wbGFjZWhvbGRlciB7XG4gICAgICBjb2xvcjogIzk5OTtcbiAgICB9XG5cbiAgICAuc2VsZWN0Mi1zZWxlY3Rpb25fX2Fycm93IHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMXB4O1xuICAgICAgcmlnaHQ6IDFweDtcbiAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgaGVpZ2h0OiAyNnB4O1xuXG4gICAgICBiIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICB3aWR0aDogMDtcbiAgICAgICAgaGVpZ2h0OiAwO1xuICAgICAgICBtYXJnaW4tdG9wOiAtMnB4O1xuICAgICAgICBtYXJnaW4tbGVmdDogLTRweDtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjODg4IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgICAgICBib3JkZXItd2lkdGg6IDVweCA0cHggMCA0cHg7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC5zZWxlY3QyLXJlc3VsdHMgPiAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb25zIHtcbiAgICBtYXgtaGVpZ2h0OiAyMDBweDtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICB9XG59XG5cbi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdC5zZWxlY3QyLWNvbnRhaW5lci0tb3BlbiB7XG4gIC5zZWxlY3QyLXNlbGVjdGlvbl9fYXJyb3cge1xuICAgIGIge1xuICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjODg4IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyLXdpZHRoOiAwIDRweCA1cHggNHB4O1xuICAgIH1cbiAgfVxuXG4gICYuc2VsZWN0Mi1jb250YWluZXItLWFib3ZlIHtcbiAgICAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSB7XG4gICAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG4gICAgfVxuICB9XG5cbiAgJi5zZWxlY3QyLWNvbnRhaW5lci0tYmVsb3cge1xuICAgIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIHtcbiAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIFR1cnF1b2lzZSBidXR0b25cbi5idG4ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBmb250LXdlaWdodDogNzAwO1xuICBmb250LXNpemU6IDE0cHg7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBvdXRsaW5lOiBub25lO1xuICBAYXBwbHkgYmctdHVycXVvaXNlIHRleHQtbi01MDtcblxuICAmOmhvdmVyIHtcbiAgICBAYXBwbHkgYmctYmx1ZWNvcmFsO1xuICAgIEBhcHBseSB0ZXh0LXdoaXRlO1xuXG4gICAgc3ZnIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg0cHgpO1xuICAgICAgdHJhbnNpdGlvbjogMC4zcztcbiAgICB9XG4gIH1cbn1cblxuLmJ0bi1iYWNrIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiAwLjNzO1xuICBAYXBwbHkgdy0yNCB0ZXh0LWJsdWVjb3JhbDtcblxuICBzdmcge1xuICAgIHRyYW5zaXRpb246IDAuM3M7XG4gIH1cblxuICAmOmhvdmVyIHtcbiAgICBzdmcge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC00cHgpO1xuICAgIH1cbiAgfVxufVxuXG4uYnRuLW5leHQge1xuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xuICAgIGhlaWdodDogNDhweDtcbiAgICBwYWRkaW5nOiAxM3B4IDI0cHg7XG4gIH1cbiAgQGFwcGx5IHctMzYgcHktMi41IHRleHQtbi01MCBzbTp3LTQwO1xuXG4gIHN2ZyB7XG4gICAgbWFyZ2luLWxlZnQ6IDEzcHg7XG4gICAgdHJhbnNpdGlvbjogMC4ycztcbiAgfVxufVxuXG4uZ2V0LXN0YXJ0ZWQtYnRuIHtcbiAgd2lkdGg6IDE4NXB4O1xufVxuXG4ucmVzZXQtYnRuIHtcbiAgQGFwcGx5IG10LTYgZmxleCBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWxnIGJvcmRlci1ub25lIGJnLXR1cnF1b2lzZSB0ZXh0LXNtIGZvbnQtYm9sZCB1cHBlcmNhc2UgdGV4dC1uLTUwIG91dGxpbmUtbm9uZSBkdXJhdGlvbi0yMDAgaG92ZXI6YmctYmx1ZWNvcmFsIGhvdmVyOnRleHQtd2hpdGU7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAxNnB4IDk0cHg7XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XG4gIC5yZXNldC1idG4ge1xuICAgIHBhZGRpbmc6IDE4cHggOTRweDtcbiAgfVxufVxuXG5zdmcge1xuICBoZWlnaHQ6IDFlbTtcbn1cbi5jaGFydC13cmFwcGVyIHtcbiAgc3ZnIHtcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH1cbn1cblxuLnZycF9fd3JhcHBlciB7XG4gIHAge1xuICAgIEBhcHBseSB0ZXh0LXNtIGxlYWRpbmctbm9ybWFsO1xuICB9XG4gIHN2ZyB7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG59XG5cbi5idXR0b24sXG5idXR0b24ge1xuICBAYXBwbHkgZmxleCBjdXJzb3ItcG9pbnRlciBpdGVtcy1jZW50ZXIgdGV4dC14cyBsZWFkaW5nLW5vcm1hbCB0cmFja2luZy10aWdodDtcbiAgdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTtcbn1cblxuLy8gdG9vbHRpcCBidXR0b25cbi50b29sdGlwLWJ0biB7XG4gIEBhcHBseSByZWxhdGl2ZSB0ZXh0LW4tMzA7XG5cbiAgYnV0dG9uIHtcbiAgICBAYXBwbHkgcm91bmRlZC0zeGwgYm9yZGVyIGJvcmRlci1zb2xpZCBib3JkZXItbi0zMCBweS0xLjUgcHgtMi41O1xuICB9XG5cbiAgc3ZnIHtcbiAgICBAYXBwbHkgbXItMSB0ZXh0LXhzO1xuICB9XG5cbiAgJl9fY29udGVudCB7XG4gICAgQGFwcGx5IGFic29sdXRlIHRvcC1mdWxsIGxlZnQtMCBoaWRkZW4gdy1bMzUycHhdO1xuXG4gICAgLmNvbnRlbnQge1xuICAgICAgQGFwcGx5IG10LTYgcm91bmRlZCBiZy1lZ2dzaGVsbCB0ZXh0LW4tNTA7XG4gICAgICBwYWRkaW5nOiAxNnB4IDMzcHggMTZweCAxNnB4O1xuICAgICAgYm94LXNoYWRvdzogMHB4IDRweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICB9XG5cbiAgICBwIHtcbiAgICAgIEBhcHBseSBtYi0xLjUgdGV4dC14cyBsZWFkaW5nLW5vcm1hbDtcbiAgICB9XG4gIH1cblxuICAmOmhvdmVyIC50b29sdGlwLWJ0bl9fY29udGVudCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuICAmOmhvdmVyIGJ1dHRvbiB7XG4gICAgQGFwcGx5IGJvcmRlci1zcHJpbmctNTAgdGV4dC1zcHJpbmctNTA7XG4gIH1cbn1cblxuLy8gcHJpbWFyeSBidXR0b25cbi5wcmltYXJ5LWJ0biB7XG4gIEBhcHBseSBnYXAtMSByb3VuZGVkIGJnLWJsdWVjb3JhbCBwLTMgZm9udC1ib2xkIHVwcGVyY2FzZSB0ZXh0LXdoaXRlO1xuICBib3gtc2hhZG93OiAwcHggMnB4IDEwcHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xuXG4gICYuc3BhY2Uge1xuICAgIEBhcHBseSBweC02O1xuICB9XG5cbiAgJjpob3ZlciB7XG4gICAgQGFwcGx5IGJnLW4tNTAgdGV4dC13aGl0ZTtcbiAgfVxuXG4gIHN2ZyB7XG4gICAgQGFwcGx5IHRleHQtYmFzZTtcbiAgfVxufVxuXG4vLyBzZWNvbmRhcnkgYnV0dG9uXG4uc2Vjb25kYXJ5LWJ0biB7XG4gIEBhcHBseSBnYXAtMSBnYXAteC0xIHJvdW5kZWQgYmctd2hpdGUgcC0zIHVwcGVyY2FzZSB0ZXh0LWJsdWVjb3JhbDtcblxuICAmLS10b3VjaCB7XG4gICAgQGFwcGx5IGdhcC0xIGdhcC14LTEgcm91bmRlZCBiZy13aGl0ZSBwLTMgdXBwZXJjYXNlIHRleHQtYmx1ZWNvcmFsO1xuICAgIGJveC1zaGFkb3c6IDBweCAycHggMTBweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XG4gICAgLmRyb3Bkb3duX19hcnJvdyB7XG4gICAgICBmb250LXNpemU6IDZweDtcbiAgICAgIHRyYW5zaXRpb246IDAuMnM7XG4gICAgfVxuICAgIHN2ZyB7XG4gICAgICBAYXBwbHkgdGV4dC1iYXNlO1xuICAgIH1cbiAgfVxuICAmOmhvdmVyIHtcbiAgICBAYXBwbHkgYmctYmx1ZWNvcmFsIHRleHQtd2hpdGU7XG4gIH1cblxuICBzdmcge1xuICAgIEBhcHBseSB0ZXh0LWJhc2U7XG4gIH1cblxuICAuZHJvcGRvd25fX2Fycm93IHtcbiAgICBmb250LXNpemU6IDZweDtcbiAgICB0cmFuc2l0aW9uOiAwLjJzO1xuICB9XG59XG5cbi8vIHByaW1hcnkgb3V0bGluZSBidXR0b25cbi5wcmltYXJ5LW91dGxpbmUtYnRuIHtcbiAgQGFwcGx5IGp1c3RpZnktY2VudGVyIGdhcC0xIHJvdW5kZWQtM3hsIGJvcmRlciBib3JkZXItc3ByaW5nLTUwIHB4LTMuNSB0ZXh0LXNtIGxlYWRpbmctcmVsYXhlZCB0ZXh0LXNwcmluZy01MDtcbiAgZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggNHB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjEpKTtcblxuICAmOmhvdmVyIHtcbiAgICBAYXBwbHkgYmctc3ByaW5nLTUwIHRleHQtd2hpdGU7XG4gIH1cblxuICBzdmcge1xuICAgIEBhcHBseSB0ZXh0LWJhc2U7XG4gIH1cbn1cblxuLmdob3N0LWJ0biB7XG4gIEBhcHBseSB0ZXh0LXhzIGZvbnQtYm9sZCB1cHBlcmNhc2UgdGV4dC1uLTQwO1xuICB0cmFuc2l0aW9uOiAwLjRzO1xuXG4gICY6aG92ZXIge1xuICAgIEBhcHBseSB0ZXh0LWJsdWVjb3JhbDtcbiAgfVxufVxuXG4udGFiLWJ0bi1hbmNob3Ige1xuICBAYXBwbHkgY3Vyc29yLWRlZmF1bHQ7XG59XG5cbi50YWItYnRuIHtcbiAgQGFwcGx5IGgtOSByb3VuZGVkIGJvcmRlciBib3JkZXItbi0yMCBiZy13aGl0ZSBwLTIgdGV4dC14cyB0ZXh0LW4tNDA7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcblxuICAmOmhvdmVyIHtcbiAgICBAYXBwbHkgYm9yZGVyLXR1cnF1b2lzZSBiZy1uLTEwIHRleHQtYmx1ZWNvcmFsO1xuICB9XG59XG5cbi5hY3RpdmVfX3RhYiB7XG4gIEBhcHBseSBib3JkZXItdHVycXVvaXNlIGJnLW4tMTAgdGV4dC1ibHVlY29yYWw7XG59XG5cbi5wYW5lbC1idG4ge1xuICBAYXBwbHkgaC0xMCBzcGFjZS14LTEgcm91bmRlZCBib3JkZXIgYm9yZGVyLW4tMzAgYmctZWdnc2hlbGwgcHktMyBweC0yO1xuICB3aWR0aDogNDNweDtcblxuICAmOmhvdmVyIHtcbiAgICBAYXBwbHkgYmctYmx1ZWNvcmFsIHRleHQtd2hpdGU7XG4gIH1cblxuICAuZHJvcGRvd25fX2Fycm93IHtcbiAgICBmb250LXNpemU6IDZweDtcbiAgICB0cmFuc2l0aW9uOiAwLjJzO1xuICB9XG59XG4iLCIub3ZlcmxheSB7XG4gIEBhcHBseSBmaXhlZCBsZWZ0LTAgdG9wLTAgaC1mdWxsIHctZnVsbCBiZy1ibGFjaztcbiAgei1pbmRleDogMTAwO1xuICBvcGFjaXR5OiAwLjc7XG5cbiAgJl9faW5uZXIge1xuICAgIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTAgdG9wLTAgaC1mdWxsIHctZnVsbDtcbiAgfVxuXG4gICZfX2NvbnRlbnQge1xuICAgIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTIvNCB0b3AtMi80O1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuXG4gICAgLnNwaW5uZXIge1xuICAgICAgQGFwcGx5IGlubGluZS1ibG9jayBhbmltYXRlLXNwaW4gcm91bmRlZC1mdWxsIGJvcmRlci0yIGJvcmRlci1uLTEwIGJvcmRlci1vcGFjaXR5LTU7XG4gICAgICB3aWR0aDogNzVweDtcbiAgICAgIGhlaWdodDogNzVweDtcbiAgICAgIGJvcmRlci10b3AtY29sb3I6IHdoaXRlO1xuICAgIH1cbiAgfVxufVxuLmxvYWRvdmVybGF5IHtcbiAgQGFwcGx5IGZpeGVkIGxlZnQtMCB0b3AtMCBoLWZ1bGwgdy1mdWxsIGJnLWJsYWNrO1xuICBvcGFjaXR5OiAwLjc7XG5cbiAgJl9faW5uZXIge1xuICAgIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTAgdG9wLTAgaC1mdWxsIHctZnVsbDtcbiAgfVxuXG4gICZfX2NvbnRlbnQge1xuICAgIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTIvNCB0b3AtMi80O1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuXG4gICAgLnNwaW5uZXIge1xuICAgICAgQGFwcGx5IGlubGluZS1ibG9jayBhbmltYXRlLXNwaW4gcm91bmRlZC1mdWxsIGJvcmRlci0yIGJvcmRlci1uLTEwIGJvcmRlci1vcGFjaXR5LTU7XG4gICAgICB3aWR0aDogNzVweDtcbiAgICAgIGhlaWdodDogNzVweDtcbiAgICAgIGJvcmRlci10b3AtY29sb3I6IHdoaXRlO1xuICAgIH1cbiAgfVxufVxuIiwiLmhhbWJ1cmdlciB7XG4gIEBhcHBseSByZWxhdGl2ZSB6LWF1dG8gZmxleCBoLTExIHctMTEgY3Vyc29yLXBvaW50ZXIgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkIGR1cmF0aW9uLTMwMDtcbiAgei1pbmRleDogMTIwO1xuXG4gICYuYWN0aXZlIHtcbiAgICBzcGFuIHtcbiAgICAgIEBhcHBseSBiZy1uLTEwO1xuICAgIH1cbiAgfVxuXG4gIHNwYW4ge1xuICAgIEBhcHBseSBwb2ludGVyLWV2ZW50cy1ub25lIGFic29sdXRlIGgtMSB3LTEwIHJvdW5kZWQtbGcgZHVyYXRpb24tMzAwO1xuICB9XG4gIHNwYW46bnRoLWNoaWxkKDEpIHtcbiAgICBib3R0b206IDE4cHg7XG4gICAgbGVmdDogMnB4O1xuICAgIHdpZHRoOiAzMHB4O1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTVweCk7XG4gIH1cbiAgJi5hY3RpdmUge1xuICAgIHNwYW46bnRoLWNoaWxkKDEpIHtcbiAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpIHRyYW5zbGF0ZVooMCk7XG4gICAgfVxuICAgIHNwYW46bnRoLWNoaWxkKDIpIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg2MHB4KTtcbiAgICB9XG4gICAgc3BhbjpudGgtY2hpbGQoMykge1xuICAgICAgd2lkdGg6IDQwcHg7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNHB4KSByb3RhdGUoMzE1ZGVnKTtcbiAgICB9XG4gIH1cbiAgc3BhbjpudGgtY2hpbGQoMykge1xuICAgIHRvcDogMThweDtcbiAgICBsZWZ0OiAycHg7XG4gICAgd2lkdGg6IDIwcHg7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDE1cHgpO1xuICB9XG59XG4uaGFtYnVyZ2VyLW1lbnUge1xuICBkaXNwbGF5OiBub25lO1xuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDE0MjBweCkge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG59XG5cbi5ob21lLWJ1cmdlci1tZW51LmFjdGl2ZSB7XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XG4gICAgdHJhbnNsYXRlOiAtMzUwJSAtMTQwJTtcbiAgfVxuICB0cmFuc2xhdGU6IC00OTAlIC05MCU7XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDQwcHgpIHtcbiAgICB0cmFuc2xhdGU6IC0zODAlIC05MCU7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/ \ No newline at end of file diff --git a/public/js/app.js b/public/js/app.js index 4a78ee1068..2380d8ac13 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]; @@ -332,6 +332,7 @@ exports["default"] = (0, vue_1.defineComponent)({ var store = (0, show_1.detailStore)(); var translation = window['globalLang']; var showUserDropdown = (0, vue_2.ref)(false); + var showActivityDropdown = (0, vue_2.ref)(false); var toastVisibility = (0, vue_2.ref)(false); var isLoading = (0, vue_2.ref)(false); var showSidebar = (0, vue_2.ref)(false); @@ -552,6 +553,7 @@ exports["default"] = (0, vue_1.defineComponent)({ props: props, translation: translation, showUserDropdown: showUserDropdown, + showActivityDropdown: showActivityDropdown, toastVisibility: toastVisibility, isLoading: isLoading, showSidebar: showSidebar, @@ -1078,7 +1080,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]; @@ -1680,7 +1682,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]; @@ -4705,7 +4707,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]; @@ -5436,7 +5438,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]; @@ -5964,7 +5966,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]; @@ -7943,7 +7945,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]; @@ -9894,7 +9896,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]; @@ -10572,7 +10574,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]; @@ -11377,7 +11379,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]; @@ -12241,7 +12243,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]; @@ -13453,7 +13455,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]; @@ -14084,7 +14086,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]; @@ -14661,7 +14663,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]; @@ -16334,7 +16336,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]; @@ -17085,7 +17087,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]; @@ -17744,7 +17746,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]; @@ -20091,7 +20093,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]; @@ -20562,97 +20564,108 @@ var _hoisted_7 = { }; var _hoisted_8 = ["href"]; var _hoisted_9 = { - "class": "activity-nav-list -mx-4" + "class": "activity-nav-list activity-list -mx-4 !text-xs" }; var _hoisted_10 = ["href"]; var _hoisted_11 = { - "class": "" -}; -var _hoisted_12 = { - "class": "add-import" -}; -var _hoisted_13 = { key: 0, style: { "visibility": "hidden" }, "class": "button__dropdown add-import-dropdown absolute top-full z-50 w-56 -translate-y-3 bg-white p-2 text-left shadow-dropdown duration-300" }; +var _hoisted_12 = { + "class": "flex flex-col" +}; +var _hoisted_13 = { + key: 0, + "class": "add-import-sidebar-dropdown" +}; var _hoisted_14 = { - "class": "flex-col" + "class": "flex flex-col space-y-2 text-left" }; var _hoisted_15 = { + id: "header-import-activity", + "class": "cursor-pointer text-white", + href: "/import" +}; +var _hoisted_16 = { + id: "header-import-xls", + "class": "cursor-pointer text-white", + href: "/import/xls" +}; +var _hoisted_17 = { key: 2, "class": "button__dropdown invisible absolute left-4 top-full z-10 w-56 -translate-y-3 bg-white p-2 text-left opacity-0 shadow-dropdown outline transition-all duration-300 group-hover:visible group-hover:translate-y-0 group-hover:opacity-100" }; -var _hoisted_16 = { +var _hoisted_18 = { "class": "flex-col" }; -var _hoisted_17 = { +var _hoisted_19 = { "class": "add-import" }; -var _hoisted_18 = { +var _hoisted_20 = { key: 0, "class": "button__dropdown add-import-dropdown absolute top-full z-10 w-56 -translate-y-3 bg-white p-2 text-left shadow-dropdown transition-all duration-300" }; -var _hoisted_19 = { +var _hoisted_21 = { "class": "flex-col" }; -var _hoisted_20 = { +var _hoisted_22 = { key: 4, "class": "button__dropdown invisible absolute left-4 top-full z-10 w-56 -translate-y-3 bg-white p-2 text-left opacity-0 shadow-dropdown outline transition-all duration-300 group-hover:visible group-hover:translate-y-0 group-hover:opacity-100" }; -var _hoisted_21 = { +var _hoisted_23 = { "class": "flex-col" }; -var _hoisted_22 = { +var _hoisted_24 = { "class": "user-nav" }; -var _hoisted_23 = { +var _hoisted_25 = { "class": "search" }; -var _hoisted_24 = ["placeholder"]; -var _hoisted_25 = ["placeholder"]; -var _hoisted_26 = { +var _hoisted_26 = ["placeholder"]; +var _hoisted_27 = ["placeholder"]; +var _hoisted_28 = { key: 2, "class": "spinner" }; -var _hoisted_27 = { +var _hoisted_29 = { "class": "border-b border-b-n-20" }; -var _hoisted_28 = { +var _hoisted_30 = { "class": "flex flex-col break-all capitalize leading-4" }; -var _hoisted_29 = { +var _hoisted_31 = { "class": "text-n-50" }; -var _hoisted_30 = { +var _hoisted_32 = { "class": "outine text-tiny text-n-40" }; -var _hoisted_31 = { +var _hoisted_33 = { "class": "flex w-full space-x-4", href: "/profile" }; -var _hoisted_32 = { +var _hoisted_34 = { "class": "text-sm" }; -var _hoisted_33 = { +var _hoisted_35 = { "class": "border-b border-b-n-20" }; -var _hoisted_34 = { +var _hoisted_36 = { "class": "flex flex-col break-all capitalize leading-4" }; -var _hoisted_35 = { +var _hoisted_37 = { "class": "text-n-50" }; -var _hoisted_36 = { +var _hoisted_38 = { "class": "text-tiny text-n-40" }; -var _hoisted_37 = { +var _hoisted_39 = { "class": "flex w-full space-x-4", href: "/profile" }; -var _hoisted_38 = { +var _hoisted_40 = { "class": "text-sm" }; @@ -20718,18 +20731,30 @@ function render(_ctx, _cache, $props, $setup, $data, $options) { nav__pointer: menu.active }, $setup.data.menuNavAnchorClasses]), href: menu.permalink - }, [(0, vue_1.createElementVNode)("span", _hoisted_11, (0, vue_1.toDisplayString)(menu.name), 1 + }, [(0, vue_1.createElementVNode)("span", null, (0, vue_1.toDisplayString)(menu.name), 1 /* TEXT */ )], 10 /* CLASS, PROPS */ - , _hoisted_10)) : (0, vue_1.createCommentVNode)("v-if", true), menu.name === $setup.translation.common_lang.add_import_activity ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)("span", { + , _hoisted_10)) : (0, vue_1.createCommentVNode)("v-if", true), menu.name === $setup.translation.common_lang.add_import_activity ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)("div", { key: 1, - "class": (0, vue_1.normalizeClass)([{ + "class": (0, vue_1.normalizeClass)([[{ nav__pointer: menu.active - }, $setup.data.menuNavAnchorClasses]) - }, [(0, vue_1.createElementVNode)("span", _hoisted_12, [(0, vue_1.createTextVNode)((0, vue_1.toDisplayString)(menu.name) + " ", 1 + }, $setup.data.menuNavAnchorClasses], "dropdown-trigger-container"]) + }, [(0, vue_1.createElementVNode)("div", { + "class": "add-import flex w-full items-center space-x-4", + onClick: _cache[3] || (_cache[3] = function ($event) { + return $setup.showActivityDropdown = !$setup.showActivityDropdown; + }) + }, [(0, vue_1.createElementVNode)("span", null, (0, vue_1.toDisplayString)(menu.name), 1 /* TEXT */ - ), menu.name === $setup.translation.common_lang.add_import_activity ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)("div", _hoisted_13, [(0, vue_1.createElementVNode)("ul", _hoisted_14, [(0, vue_1.createElementVNode)("li", null, [(0, vue_1.createElementVNode)("a", { + ), (0, vue_1.createElementVNode)("span", null, [(0, vue_1.createVNode)(_component_svg_vue, { + "class": (0, vue_1.normalizeClass)([{ + 'rotate-180': $setup.showActivityDropdown + }, "text-[8px] duration-200"]), + icon: "dropdown-arrow" + }, null, 8 + /* PROPS */ + , ["class"])]), menu.name === $setup.translation.common_lang.add_import_activity ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)("div", _hoisted_11, [(0, vue_1.createElementVNode)("ul", _hoisted_12, [(0, vue_1.createElementVNode)("li", null, [(0, vue_1.createElementVNode)("a", { id: "header-add-activity-manually", "class": (0, vue_1.normalizeClass)(["cursor-pointer", $setup.liClass]), onClick: _cache[2] || (_cache[2] = function ($event) { @@ -20749,9 +20774,21 @@ function render(_ctx, _cache, $props, $setup, $data, $options) { "class": (0, vue_1.normalizeClass)($setup.liClass) }, (0, vue_1.toDisplayString)($setup.translation.common_lang.import_activities_from_xls), 1 /* TEXT */ - )])])])) : (0, vue_1.createCommentVNode)("v-if", true)])], 2 + )])])])) : (0, vue_1.createCommentVNode)("v-if", true)]), $setup.showActivityDropdown ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)("div", _hoisted_13, [(0, vue_1.createElementVNode)("ul", _hoisted_14, [(0, vue_1.createElementVNode)("li", null, [(0, vue_1.createElementVNode)("a", { + id: "header-add-activity-manually", + "class": "cursor-pointer text-white", + onClick: _cache[4] || (_cache[4] = function ($event) { + return $setup.modalValue = true; + }) + }, (0, vue_1.toDisplayString)($setup.translation.common_lang.add_activity_manually), 1 + /* TEXT */ + )]), (0, vue_1.createElementVNode)("li", null, [(0, vue_1.createElementVNode)("a", _hoisted_15, (0, vue_1.toDisplayString)($setup.translation.common_lang.import_activities_from_csv), 1 + /* TEXT */ + )]), (0, vue_1.createElementVNode)("li", null, [(0, vue_1.createElementVNode)("a", _hoisted_16, (0, vue_1.toDisplayString)($setup.translation.common_lang.import_activities_from_xls), 1 + /* TEXT */ + )])])])) : (0, vue_1.createCommentVNode)("v-if", true)], 2 /* CLASS */ - )) : (0, vue_1.createCommentVNode)("v-if", true), menu.name === $setup.translation.common_lang.logs["default"] ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)("div", _hoisted_15, [(0, vue_1.createElementVNode)("ul", _hoisted_16, [(0, vue_1.createElementVNode)("li", null, [(0, vue_1.createElementVNode)("a", { + )) : (0, vue_1.createCommentVNode)("v-if", true), menu.name === $setup.translation.common_lang.logs["default"] ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)("div", _hoisted_17, [(0, vue_1.createElementVNode)("ul", _hoisted_18, [(0, vue_1.createElementVNode)("li", null, [(0, vue_1.createElementVNode)("a", { href: "#", "class": (0, vue_1.normalizeClass)($setup.liClass) }, (0, vue_1.toDisplayString)($setup.translation.common_lang.logs.users), 1 @@ -20776,9 +20813,9 @@ function render(_ctx, _cache, $props, $setup, $data, $options) { "class": (0, vue_1.normalizeClass)([{ nav__pointer: menu.active }, $setup.data.menuNavAnchorClasses]) - }, [(0, vue_1.createElementVNode)("span", _hoisted_17, [(0, vue_1.createTextVNode)((0, vue_1.toDisplayString)(menu.name) + " ", 1 + }, [(0, vue_1.createElementVNode)("span", _hoisted_19, [(0, vue_1.createTextVNode)((0, vue_1.toDisplayString)(menu.name) + " ", 1 /* TEXT */ - ), menu.name === $setup.translation.common_lang.logs["default"] ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)("div", _hoisted_18, [(0, vue_1.createElementVNode)("ul", _hoisted_19, [(0, vue_1.createElementVNode)("li", null, [(0, vue_1.createElementVNode)("a", { + ), menu.name === $setup.translation.common_lang.logs["default"] ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)("div", _hoisted_20, [(0, vue_1.createElementVNode)("ul", _hoisted_21, [(0, vue_1.createElementVNode)("li", null, [(0, vue_1.createElementVNode)("a", { href: "#", "class": (0, vue_1.normalizeClass)(["cursor-pointer", $setup.liClass]) }, (0, vue_1.toDisplayString)($setup.translation.common_lang.logs.users), 1 @@ -20800,9 +20837,9 @@ function render(_ctx, _cache, $props, $setup, $data, $options) { /* TEXT */ )])])])) : (0, vue_1.createCommentVNode)("v-if", true)])], 2 /* CLASS */ - )) : (0, vue_1.createCommentVNode)("v-if", true), menu.name === $setup.translation.common_lang.add_import_activity ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)("div", _hoisted_20, [(0, vue_1.createElementVNode)("ul", _hoisted_21, [(0, vue_1.createElementVNode)("li", null, [(0, vue_1.createElementVNode)("a", { + )) : (0, vue_1.createCommentVNode)("v-if", true), menu.name === $setup.translation.common_lang.add_import_activity ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)("div", _hoisted_22, [(0, vue_1.createElementVNode)("ul", _hoisted_23, [(0, vue_1.createElementVNode)("li", null, [(0, vue_1.createElementVNode)("a", { "class": (0, vue_1.normalizeClass)($setup.liClass), - onClick: _cache[3] || (_cache[3] = function ($event) { + onClick: _cache[5] || (_cache[5] = function ($event) { return $setup.modalValue = true; }) }, (0, vue_1.toDisplayString)($setup.translation.common_lang.add_activity_manually), 1 @@ -20828,37 +20865,37 @@ function render(_ctx, _cache, $props, $setup, $data, $options) { 'grow-0': !$props.superAdmin, 'grow justify-end': $props.superAdmin }]) - }, [(0, vue_1.createElementVNode)("div", _hoisted_22, [(0, vue_1.createElementVNode)("div", _hoisted_23, [!$props.superAdmin ? (0, vue_1.withDirectives)(((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)("input", { + }, [(0, vue_1.createElementVNode)("div", _hoisted_24, [(0, vue_1.createElementVNode)("div", _hoisted_25, [!$props.superAdmin ? (0, vue_1.withDirectives)(((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)("input", { key: 0, - "onUpdate:modelValue": _cache[4] || (_cache[4] = function ($event) { + "onUpdate:modelValue": _cache[6] || (_cache[6] = function ($event) { return $setup.searchValue = $event; }), "class": "search__input mr-3.5", type: "text", placeholder: $setup.translation.admin.header.search_activity, - onKeyup: _cache[5] || (_cache[5] = (0, vue_1.withKeys)(function ($event) { + onKeyup: _cache[7] || (_cache[7] = (0, vue_1.withKeys)(function ($event) { return $setup.searchFunction('/activities'); }, ["enter"])) }, null, 40 /* PROPS, HYDRATE_EVENTS */ - , _hoisted_24)), [[vue_1.vModelText, $setup.searchValue]]) : (0, vue_1.withDirectives)(((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)("input", { + , _hoisted_26)), [[vue_1.vModelText, $setup.searchValue]]) : (0, vue_1.withDirectives)(((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)("input", { key: 1, - "onUpdate:modelValue": _cache[6] || (_cache[6] = function ($event) { + "onUpdate:modelValue": _cache[8] || (_cache[8] = function ($event) { return $setup.searchValue = $event; }), "class": "search__input mr-3.5", type: "text", placeholder: $setup.translation.admin.header.search_organisation, - onKeyup: _cache[7] || (_cache[7] = (0, vue_1.withKeys)(function ($event) { + onKeyup: _cache[9] || (_cache[9] = (0, vue_1.withKeys)(function ($event) { return $setup.searchFunction('/list-organisations'); }, ["enter"])) }, null, 40 /* PROPS, HYDRATE_EVENTS */ - , _hoisted_25)), [[vue_1.vModelText, $setup.searchValue]]), (0, vue_1.createVNode)(_component_svg_vue, { + , _hoisted_27)), [[vue_1.vModelText, $setup.searchValue]]), (0, vue_1.createVNode)(_component_svg_vue, { icon: "search" - }), $setup.spinner ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)("span", _hoisted_26)) : (0, vue_1.createCommentVNode)("v-if", true)]), (0, vue_1.createElementVNode)("button", { + }), $setup.spinner ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)("span", _hoisted_28)) : (0, vue_1.createCommentVNode)("v-if", true)]), (0, vue_1.createElementVNode)("button", { "class": (0, vue_1.normalizeClass)($setup.isTouchDevice ? 'button secondary-btn--touch' : 'button secondary-btn dropdown-btn'), - onClick: _cache[8] || (_cache[8] = function ($event) { + onClick: _cache[10] || (_cache[10] = function ($event) { return $setup.showUserDropdown = !$setup.showUserDropdown; }) }, [(0, vue_1.createVNode)(_component_svg_vue, { @@ -20871,17 +20908,17 @@ function render(_ctx, _cache, $props, $setup, $data, $options) { "class": (0, vue_1.normalizeClass)([{ 'mt-14': $props.hasAdminBar == 1 }, "profile__dropdown"]) - }, [(0, vue_1.createElementVNode)("ul", null, [(0, vue_1.createElementVNode)("li", _hoisted_27, [(0, vue_1.createElementVNode)("div", null, [(0, vue_1.createVNode)(_component_svg_vue, { + }, [(0, vue_1.createElementVNode)("ul", null, [(0, vue_1.createElementVNode)("li", _hoisted_29, [(0, vue_1.createElementVNode)("div", null, [(0, vue_1.createVNode)(_component_svg_vue, { "class": "user-profile", icon: "user-profile" - })]), (0, vue_1.createElementVNode)("div", _hoisted_28, [(0, vue_1.createElementVNode)("span", _hoisted_29, (0, vue_1.toDisplayString)($props.user.full_name), 1 + })]), (0, vue_1.createElementVNode)("div", _hoisted_30, [(0, vue_1.createElementVNode)("span", _hoisted_31, (0, vue_1.toDisplayString)($props.user.full_name), 1 /* TEXT */ - ), (0, vue_1.createElementVNode)("span", _hoisted_30, (0, vue_1.toDisplayString)((_a = $props.organization) === null || _a === void 0 ? void 0 : _a.publisher_name), 1 + ), (0, vue_1.createElementVNode)("span", _hoisted_32, (0, vue_1.toDisplayString)((_a = $props.organization) === null || _a === void 0 ? void 0 : _a.publisher_name), 1 /* TEXT */ )])]), (0, vue_1.createElementVNode)("li", { "class": "dropdown__list border-b border-b-n-20", onClick: $setup.redirectProfile - }, [(0, vue_1.createElementVNode)("a", _hoisted_31, [(0, vue_1.createVNode)(_component_svg_vue, { + }, [(0, vue_1.createElementVNode)("a", _hoisted_33, [(0, vue_1.createVNode)(_component_svg_vue, { "class": "mx-1 text-base", icon: "user" }), (0, vue_1.createElementVNode)("span", null, (0, vue_1.toDisplayString)($setup.translation.admin.header.your_profile), 1 @@ -20892,24 +20929,24 @@ function render(_ctx, _cache, $props, $setup, $data, $options) { }, [(0, vue_1.createVNode)(_component_svg_vue, { "class": "mr-3 ml-1", icon: "logout" - }), (0, vue_1.createElementVNode)("button", _hoisted_32, (0, vue_1.toDisplayString)($setup.translation.admin.header.logout), 1 + }), (0, vue_1.createElementVNode)("button", _hoisted_34, (0, vue_1.toDisplayString)($setup.translation.admin.header.logout), 1 /* TEXT */ )])])], 2 /* CLASS */ )) : ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)("div", { key: 1, "class": (0, vue_1.normalizeClass)([!$setup.showUserDropdown ? 'invisible -translate-y-2 opacity-0' : 'opacity-1 visible translate-y-0', "profile__dropdown--touch"]) - }, [(0, vue_1.createElementVNode)("ul", null, [(0, vue_1.createElementVNode)("li", _hoisted_33, [(0, vue_1.createElementVNode)("div", null, [(0, vue_1.createVNode)(_component_svg_vue, { + }, [(0, vue_1.createElementVNode)("ul", null, [(0, vue_1.createElementVNode)("li", _hoisted_35, [(0, vue_1.createElementVNode)("div", null, [(0, vue_1.createVNode)(_component_svg_vue, { "class": "user-profile", icon: "user-profile" - })]), (0, vue_1.createElementVNode)("div", _hoisted_34, [(0, vue_1.createElementVNode)("span", _hoisted_35, (0, vue_1.toDisplayString)($props.user.full_name), 1 + })]), (0, vue_1.createElementVNode)("div", _hoisted_36, [(0, vue_1.createElementVNode)("span", _hoisted_37, (0, vue_1.toDisplayString)($props.user.full_name), 1 /* TEXT */ - ), (0, vue_1.createElementVNode)("span", _hoisted_36, (0, vue_1.toDisplayString)((_b = $props.organization) === null || _b === void 0 ? void 0 : _b.publisher_name), 1 + ), (0, vue_1.createElementVNode)("span", _hoisted_38, (0, vue_1.toDisplayString)((_b = $props.organization) === null || _b === void 0 ? void 0 : _b.publisher_name), 1 /* TEXT */ )])]), (0, vue_1.createElementVNode)("li", { "class": "dropdown__list border-b border-b-n-20", onClick: $setup.redirectProfile - }, [(0, vue_1.createElementVNode)("a", _hoisted_37, [(0, vue_1.createVNode)(_component_svg_vue, { + }, [(0, vue_1.createElementVNode)("a", _hoisted_39, [(0, vue_1.createVNode)(_component_svg_vue, { "class": "mx-1 text-base", icon: "user" }), (0, vue_1.createElementVNode)("span", null, (0, vue_1.toDisplayString)($setup.translation.admin.header.your_profile), 1 @@ -20920,7 +20957,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) { }, [(0, vue_1.createVNode)(_component_svg_vue, { "class": "mr-3 ml-1", icon: "logout" - }), (0, vue_1.createElementVNode)("button", _hoisted_38, (0, vue_1.toDisplayString)($setup.translation.admin.header.logout), 1 + }), (0, vue_1.createElementVNode)("button", _hoisted_40, (0, vue_1.toDisplayString)($setup.translation.admin.header.logout), 1 /* TEXT */ )])])], 2 /* CLASS */ @@ -49540,7 +49577,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___); @@ -49567,7 +49604,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":";AAgQA;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":";AAgQA;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___); @@ -49594,7 +49631,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":";AAqYA;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":";AAqYA;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___); @@ -49648,7 +49685,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":";AA4lCA;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":";AA4lCA;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___); @@ -49675,7 +49712,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___); @@ -49702,7 +49739,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, ".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.add-import:hover .add-import-dropdown[data-v-6fe59055] {\n visibility: visible !important;\n opacity: 1 !important;\n transform: translateY(0);\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,QAAA;EACA,YAAA;AAAF;AAEE;EACE,aAAA;EACA,WAAA;EACA,8BAAA;AAAJ;AAEI;AALF;IAMI,sBAAA;IACA,uBAAA;AACJ;AACF;AAEM;EAAA,oBAAA;EAAA,iDAAA;AAAA;AAGA;EAAA,aAAA;AAAA;AAIF;AADF;IAEI,aAAA;AAAJ;AACF;AAGI;EAAA,aAAA;EAAA,mBAAA;AAAA;AAIF;EAAA,kBAAA;EAAA,SAAA;EAAA,WAAA;EACA,gCAAA;AADA;AAIA;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;AACF;AACE;AANF;IAOI,YAAA;AAEF;AACF;AACI;EAAA,aAAA;EAAA,mBAAA;AAAA;AAAA;EAAA,uBAAA;EAAA,uDAAA;EAAA,gEAAA;AAAA;AAAA;EAAA,gBAAA;AAAA;AAAA;AAAA;IAAA,aAAA;AAAA;AAAA;AAEE;EAAA,oBAAA;EAAA,qDAAA;AAAA;AAEF;EACE,eAAA;AAGN;AACI;EAAA,kBAAA;EAAA,yDAAA;AAAA;AAAA;EAAA,kBAAA;EAAA,yDAAA;EAAA,oBAAA;EAAA,qDAAA;AAAA;AAEE;EAAA,0BAAA;AAAA;AAKJ;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;AAGF;AACF;AAAI;EAAA,aAAA;EAAA,mBAAA;AAAA;AAAA;EAAA,uBAAA;EAAA,uDAAA;EAAA,gEAAA;AAAA;AAAA;EAAA,gBAAA;AAAA;AAAA;AAAA;IAAA,aAAA;AAAA;AAAA;AAEE;EAAA,oBAAA;EAAA,qDAAA;AAAA;AAEF;EACE,eAAA;AAIN;AAAI;EAAA,kBAAA;EAAA,yDAAA;AAAA;AAAA;EAAA,kBAAA;EAAA,yDAAA;EAAA,oBAAA;EAAA,qDAAA;AAAA;AAEE;EAAA,0BAAA;AAAA;AAOF;;EAAA,mBAAA;EAAA,UAAA;EACA,2BAAA;AADA;AAGF;;EACE,yBAAA;AAGJ;AAAA;EACE,eAAA;AAGF;AADA;EACE,kBAAA;EACA,UAAA;AAIF;AAFA;EACE,8BAAA;EACA,qBAAA;EACA,wBAAA;AAKF;AADE;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.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 ul {\n @apply flex;\n }\n }\n .add-btn {\n @media screen and (max-width: 375px) {\n display: none;\n }\n }\n .user-nav {\n @apply flex items-center;\n }\n}\n.toast {\n @apply absolute left-2/4 z-50;\n transform: translate(-50%, -50%);\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 a:hover {\n @apply text-bluecoral;\n }\n .user-profile {\n font-size: 26px;\n }\n }\n .dropdown__list {\n @apply bg-n-10 hover:bg-n-20 hover:text-bluecoral;\n a {\n @apply capitalize;\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 a:hover {\n @apply text-bluecoral;\n }\n .user-profile {\n font-size: 26px;\n }\n }\n .dropdown__list {\n @apply bg-n-10 hover:bg-n-20 hover:text-bluecoral;\n a {\n @apply capitalize;\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 .dropdown__arrow {\n transform: rotate(180deg);\n }\n}\n.add-import {\n cursor: pointer;\n}\n.add-import-dropdown {\n visibility: hidden;\n opacity: 0;\n}\n.add-import:hover .add-import-dropdown {\n visibility: visible !important;\n opacity: 1 !important;\n transform: translateY(0);\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 padding: 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,YAAA;AAAF;AACE;AAFF;IAGI,aAAA;AAEF;AACF;AAAA;EACE,QAAA;EACA,YAAA;AAGF;AADE;EACE,aAAA;EACA,WAAA;EACA,8BAAA;AAGJ;AADI;AALF;IAMI,sBAAA;IACA,uBAAA;AAIJ;AACF;AADM;EAAA,oBAAA;EAAA,iDAAA;AAAA;AAGA;EAAA,aAAA;AAAA;AAIF;AADF;IAEI,aAAA;AAGJ;AACF;AAAI;EAAA,aAAA;EAAA,mBAAA;AAAA;AAIF;EAAA,kBAAA;EAAA,SAAA;EAAA,WAAA;EACA,gCAAA;AADA;AAIA;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;AAIF;AAFE;AANF;IAOI,YAAA;AAKF;AACF;AAFI;EAAA,aAAA;EAAA,mBAAA;AAAA;AAAA;EAAA,uBAAA;EAAA,uDAAA;EAAA,gEAAA;AAAA;AAAA;EAAA,gBAAA;AAAA;AAAA;AAAA;IAAA,aAAA;AAAA;AAAA;AAEE;EAAA,oBAAA;EAAA,qDAAA;AAAA;AAEF;EACE,eAAA;AAMN;AAFI;EAAA,kBAAA;EAAA,yDAAA;AAAA;AAAA;EAAA,kBAAA;EAAA,yDAAA;EAAA,oBAAA;EAAA,qDAAA;AAAA;AAEE;EAAA,0BAAA;AAAA;AAKJ;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;AAMF;AACF;AAHI;EAAA,aAAA;EAAA,mBAAA;AAAA;AAAA;EAAA,uBAAA;EAAA,uDAAA;EAAA,gEAAA;AAAA;AAAA;EAAA,gBAAA;AAAA;AAAA;AAAA;IAAA,aAAA;AAAA;AAAA;AAEE;EAAA,oBAAA;EAAA,qDAAA;AAAA;AAEF;EACE,eAAA;AAON;AAHI;EAAA,kBAAA;EAAA,yDAAA;AAAA;AAAA;EAAA,kBAAA;EAAA,yDAAA;EAAA,oBAAA;EAAA,qDAAA;AAAA;AAEE;EAAA,0BAAA;AAAA;AAOF;;EAAA,mBAAA;EAAA,UAAA;EACA,2BAAA;AADA;AAGF;;EACE,yBAAA;AAMJ;AAHA;EACE,eAAA;AAMF;AAJA;EACE,kBAAA;EACA,UAAA;AAOF;AALA;EACE,cAAA;AAQF;AAPE;AAFF;IAGI,aAAA;AAUF;AAPF;IAEI,8BAAA;IACA,qBAAA;IACA,wBAAA;AAWF;AAPF;AACE;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 padding: 8px;\n @media (min-width: 1420px) {\n display: none;\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 ul {\n @apply flex;\n }\n }\n .add-btn {\n @media screen and (max-width: 375px) {\n display: none;\n }\n }\n .user-nav {\n @apply flex items-center;\n }\n}\n.toast {\n @apply absolute left-2/4 z-50;\n transform: translate(-50%, -50%);\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 a:hover {\n @apply text-bluecoral;\n }\n .user-profile {\n font-size: 26px;\n }\n }\n .dropdown__list {\n @apply bg-n-10 hover:bg-n-20 hover:text-bluecoral;\n a {\n @apply capitalize;\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 a:hover {\n @apply text-bluecoral;\n }\n .user-profile {\n font-size: 26px;\n }\n }\n .dropdown__list {\n @apply bg-n-10 hover:bg-n-20 hover:text-bluecoral;\n a {\n @apply capitalize;\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 .dropdown__arrow {\n transform: rotate(180deg);\n }\n}\n.add-import {\n cursor: pointer;\n}\n.add-import-dropdown {\n visibility: hidden;\n opacity: 0;\n}\n.dropdown-trigger-container {\n display: block;\n @media (min-width: 1420px) {\n display: flex;\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___); @@ -49729,7 +49766,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___); @@ -49810,7 +49847,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___); @@ -49864,7 +49901,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___); @@ -49918,7 +49955,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___); @@ -50107,7 +50144,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___); @@ -53811,13 +53848,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) {} @@ -53844,7 +53881,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"); @@ -53853,7 +53890,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) {} @@ -53878,13 +53915,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) {} @@ -53907,13 +53944,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) {} @@ -53939,7 +53976,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"); @@ -53947,7 +53984,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) {} @@ -53970,13 +54007,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) {} @@ -54001,13 +54038,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) {} @@ -54030,13 +54067,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) {} @@ -54062,7 +54099,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"); @@ -54070,7 +54107,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) {} @@ -54093,13 +54130,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) {} @@ -54123,7 +54160,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"); @@ -54131,7 +54168,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) {} @@ -54155,7 +54192,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"); @@ -54163,7 +54200,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) {} @@ -54189,7 +54226,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"); @@ -54197,7 +54234,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) {} @@ -54220,13 +54257,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) {} @@ -54250,7 +54287,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"); @@ -54258,7 +54295,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) {} @@ -54283,13 +54320,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) {} @@ -54311,14 +54348,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) {} @@ -54343,13 +54380,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) {} @@ -54372,13 +54409,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) {} @@ -54401,13 +54438,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) {} @@ -54431,7 +54468,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"); @@ -54439,7 +54476,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) {} @@ -54464,13 +54501,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) {} @@ -54495,13 +54532,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) {} @@ -54526,13 +54563,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) {} @@ -54555,13 +54592,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) {} @@ -54586,13 +54623,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) {} @@ -54617,13 +54654,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) {} @@ -54648,13 +54685,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) {} @@ -54678,7 +54715,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"); @@ -54686,7 +54723,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) {} @@ -54711,13 +54748,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) {} @@ -54742,13 +54779,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) {} @@ -54773,13 +54810,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) {} @@ -54803,7 +54840,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"); @@ -54811,7 +54848,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) {} @@ -54837,7 +54874,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"); @@ -54845,7 +54882,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) {} @@ -54869,7 +54906,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"); @@ -54877,7 +54914,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) {} @@ -54899,14 +54936,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) {} @@ -54929,13 +54966,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) {} @@ -54958,13 +54995,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) {} @@ -54989,13 +55026,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) {} @@ -55020,13 +55057,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) {} @@ -55052,7 +55089,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"); @@ -55060,7 +55097,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) {} @@ -55086,7 +55123,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"); @@ -55094,7 +55131,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) {} @@ -55118,7 +55155,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"); @@ -55126,7 +55163,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) {} @@ -55151,13 +55188,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) {} @@ -55180,13 +55217,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) {} @@ -55211,13 +55248,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) {} @@ -55242,13 +55279,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) {} @@ -55273,13 +55310,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) {} @@ -55302,13 +55339,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) {} @@ -55331,13 +55368,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) {} @@ -55360,13 +55397,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) {} @@ -55389,13 +55426,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) {} @@ -55418,13 +55455,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) {} @@ -55447,13 +55484,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) {} @@ -55476,13 +55513,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) {} @@ -55505,13 +55542,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) {} @@ -55536,13 +55573,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) {} @@ -55567,13 +55604,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) {} @@ -55596,13 +55633,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) {} @@ -55625,13 +55662,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) {} @@ -55656,13 +55693,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) {} @@ -55685,13 +55722,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) {} @@ -55716,13 +55753,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) {} @@ -55745,13 +55782,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) {} @@ -55776,13 +55813,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) {} @@ -55805,13 +55842,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) {} @@ -55836,13 +55873,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) {} @@ -55867,13 +55904,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) {} @@ -55898,13 +55935,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) {} @@ -55927,13 +55964,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) {} @@ -55956,13 +55993,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) {} @@ -55985,13 +56022,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) {} @@ -56016,13 +56053,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) {} @@ -56045,13 +56082,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) {} @@ -56074,13 +56111,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) {} @@ -56105,13 +56142,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) {} @@ -56134,13 +56171,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) {} @@ -56163,13 +56200,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) {} @@ -56193,7 +56230,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"); @@ -56201,7 +56238,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) {} @@ -56226,13 +56263,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) {} @@ -56257,13 +56294,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) {} @@ -56289,7 +56326,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"); @@ -56297,7 +56334,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) {} @@ -56322,13 +56359,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) {} @@ -56353,13 +56390,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) {} @@ -56384,13 +56421,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) {} @@ -56413,13 +56450,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) {} @@ -56445,7 +56482,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"); @@ -56453,7 +56490,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) {} @@ -56478,13 +56515,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) {} @@ -56509,13 +56546,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) {} @@ -56538,13 +56575,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) {} @@ -56567,13 +56604,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) {} @@ -56598,13 +56635,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) {} @@ -56629,13 +56666,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) {} @@ -56660,13 +56697,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) {} @@ -56689,13 +56726,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) {} @@ -56720,13 +56757,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) {} @@ -56749,13 +56786,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) {} @@ -56778,13 +56815,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) {} @@ -56807,13 +56844,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) {} @@ -56838,13 +56875,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) {} @@ -56869,13 +56906,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) {} @@ -56900,13 +56937,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) {} @@ -56929,13 +56966,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) {} @@ -56958,13 +56995,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) {} @@ -56987,13 +57024,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) {} @@ -57016,13 +57053,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) {} @@ -57045,13 +57082,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) {} @@ -57074,13 +57111,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) {} @@ -57103,13 +57140,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) {} @@ -57132,13 +57169,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) {} @@ -57161,13 +57198,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) {} @@ -57190,13 +57227,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) {} @@ -57219,13 +57256,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) {} @@ -57250,13 +57287,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) {} @@ -57279,13 +57316,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) {} @@ -57310,13 +57347,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) {} @@ -57341,13 +57378,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) {} @@ -57372,13 +57409,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) {} @@ -57404,7 +57441,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"); @@ -57412,7 +57449,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) {} @@ -57437,13 +57474,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) {} @@ -57468,13 +57505,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) {} @@ -57499,13 +57536,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) {} @@ -57530,13 +57567,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) {} @@ -57562,7 +57599,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"); @@ -57570,7 +57607,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) {} @@ -57595,13 +57632,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) {} @@ -57625,7 +57662,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"); @@ -57633,7 +57670,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) {} @@ -57659,7 +57696,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"); @@ -57667,7 +57704,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) {} @@ -57693,7 +57730,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"); @@ -57701,7 +57738,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) {} @@ -57724,13 +57761,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) {} @@ -57755,13 +57792,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) {} @@ -57786,13 +57823,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) {} @@ -57817,13 +57854,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) {} @@ -57848,13 +57885,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) {} @@ -57877,13 +57914,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) {} @@ -57908,13 +57945,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) {} @@ -57939,13 +57976,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) {} @@ -57970,13 +58007,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) {} @@ -57999,13 +58036,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) {} @@ -58031,7 +58068,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"); @@ -58039,7 +58076,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) {} @@ -58064,13 +58101,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) {} @@ -58095,13 +58132,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) {} @@ -58126,13 +58163,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) {} @@ -58157,13 +58194,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) {} @@ -58188,13 +58225,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) {} @@ -58217,13 +58254,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) {} @@ -58246,13 +58283,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) {} @@ -58278,7 +58315,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"); @@ -58286,7 +58323,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) {} @@ -58312,7 +58349,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"); @@ -58320,7 +58357,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) {} @@ -58345,13 +58382,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) {} @@ -58373,13 +58410,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _AboutPage_vue_vue_type_template_id_7d9fa904__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AboutPage.vue?vue&type=template&id=7d9fa904 */ "./resources/assets/js/views/web/AboutPage.vue?vue&type=template&id=7d9fa904"); /* harmony import */ var _AboutPage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AboutPage.vue?vue&type=script&lang=js */ "./resources/assets/js/views/web/AboutPage.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"])(_AboutPage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_AboutPage_vue_vue_type_template_id_7d9fa904__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_js__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_AboutPage_vue_vue_type_template_id_7d9fa904__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/AboutPage.vue"]]) /* hot reload */ if (false) {} @@ -58402,13 +58439,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) {} @@ -58435,7 +58472,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"); @@ -58444,7 +58481,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) {} @@ -58469,13 +58506,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) {} @@ -58498,13 +58535,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) {} @@ -58531,7 +58568,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"); @@ -58540,7 +58577,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) {} @@ -58563,13 +58600,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) {} @@ -58591,13 +58628,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) {} @@ -58622,13 +58659,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) {} @@ -58651,13 +58688,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) {} @@ -58683,7 +58720,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"); @@ -58691,7 +58728,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) {} @@ -58716,13 +58753,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) {} @@ -58747,13 +58784,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {}; /* 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 _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"])(_WebHeader_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_WebHeader_vue_vue_type_template_id_10c9e0b2_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__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_2__["default"])(_WebHeader_vue_vue_type_script_lang_ts__WEBPACK_IMPORTED_MODULE_1__["default"], [['render',_WebHeader_vue_vue_type_template_id_10c9e0b2_ts_true__WEBPACK_IMPORTED_MODULE_0__.render],['__file',"resources/assets/js/views/web/partials/WebHeader.vue"]]) /* hot reload */ if (false) {} @@ -65097,4 +65134,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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QWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSStPLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUNkanRELEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSWt0RCxXQUFXLEdBQUc7RUFDZGx0RCxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUltdEQsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQ2RydEQsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJc3RELFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjs7QUFDQSxTQUFTcGMsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxJQUFJQyxrQkFBa0IsR0FBRyxDQUFDLEdBQUcvOEMsS0FBSyxDQUFDZzlDLGdCQUFWLEVBQTRCLFNBQTVCLENBQXpCOztFQUNBLE9BQVEsQ0FBQyxHQUFHaDlDLEtBQUssQ0FBQ2k5QyxTQUFWLEtBQXdCLENBQUMsR0FBR2o5QyxLQUFLLENBQUNrOUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNwQixVQUFyQyxFQUFpRCxDQUM1RWMsTUFBTSxDQUFDMWxDLGVBQVIsSUFDTyxDQUFDLEdBQUdsWCxLQUFLLENBQUNpOUMsU0FBVixLQUF3QixDQUFDLEdBQUdqOUMsS0FBSyxDQUFDMDlDLFdBQVYsRUFBdUJkLE1BQU0sQ0FBQyxRQUFELENBQTdCLEVBQXlDO0lBQUVseUMsR0FBRyxFQUFFO0VBQVAsQ0FBekMsQ0FEL0IsSUFFTSxDQUFDLEdBQUcxSyxLQUFLLENBQUNzOUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FIdUUsRUFJN0UsQ0FBQyxHQUFHdDlDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0gsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHLzdDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0YsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHaDhDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0QsVUFBckMsRUFBaUQsQ0FBQyxHQUFHajhDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUM5RyxRQUFQLENBQWdCLFdBQWhCLENBQTNCLENBQWpELEVBQTJHO0VBQUU7RUFBN0csQ0FENkMsQ0FBakQsQ0FENkMsRUFJN0MsQ0FBQyxHQUFHOTFDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0MsVUFBckMsRUFBaUQsQ0FDNUNTLE1BQU0sQ0FBQ2ptQyxTQUFQLENBQWlCOUksVUFBakIsSUFDRyt1QyxNQUFNLENBQUNqbUMsU0FBUCxDQUFpQmxOLE9BRHBCLElBRUdtekMsTUFBTSxDQUFDam1DLFNBQVAsQ0FBaUJsTixPQUFqQixLQUE2QixFQUZqQyxJQUdPLENBQUMsR0FBR3pKLEtBQUssQ0FBQ2k5QyxTQUFWLEtBQXdCLENBQUMsR0FBR2o5QyxLQUFLLENBQUMwOUMsV0FBVixFQUF1QmQsTUFBTSxDQUFDLE9BQUQsQ0FBN0IsRUFBd0M7SUFDL0RseUMsR0FBRyxFQUFFLENBRDBEO0lBRS9EakIsT0FBTyxFQUFFbXpDLE1BQU0sQ0FBQ2ptQyxTQUFQLENBQWlCbE4sT0FGcUM7SUFHL0Q5QyxJQUFJLEVBQUVpMkMsTUFBTSxDQUFDam1DLFNBQVAsQ0FBaUJoUTtFQUh3QyxDQUF4QyxFQUl4QixJQUp3QixFQUlsQjtFQUFFO0VBSmdCLEVBSUgsQ0FBQyxTQUFELEVBQVksTUFBWixDQUpHLENBSC9CLElBUU0sQ0FBQyxHQUFHM0csS0FBSyxDQUFDczlDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBVHVDLEVBVTdDLENBQUMsR0FBR3Q5QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMsSUFBckMsRUFBMkMsQ0FDdkMsQ0FBQyxHQUFHbDhDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixRQUE5QixFQUF3QztJQUNwQyxTQUFPLGFBRDZCO0lBRXBDa0IsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FDbkIsWUFBWTtNQUNSRSxNQUFNLENBQUNuSCxlQUFQLEdBQXlCLElBQXpCO0lBQ0gsQ0FISTtFQUYyQixDQUF4QyxFQU1HLENBQ0MsQ0FBQyxHQUFHejFDLEtBQUssQ0FBQ3E5QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkM5c0MsSUFBSSxFQUFFLE1BRGlDO0lBRXZDLFNBQU87RUFGZ0MsQ0FBM0MsQ0FERCxFQUtDLENBQUMsR0FBR2pRLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ0UsVUFBdEMsRUFBa0QsQ0FBQyxHQUFHcDhDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQjhhLFdBQWhCLENBQTRCaXdDLFlBQTVCLENBQXlDcG5ELE9BQXpDLENBQWlELFVBQWpELEVBQTZEZ3hDLE1BQU0sQ0FBQzMwQyxRQUFQLENBQWdCTSxLQUFoQixDQUFzQkMsTUFBdEIsQ0FBNkJtNEMsWUFBMUYsQ0FBM0IsQ0FBbEQsRUFBdUw7RUFBRTtFQUF6TCxDQUxELENBTkgsQ0FEdUMsQ0FBM0MsQ0FWNkMsQ0FBakQsQ0FKNkMsQ0FBakQsQ0FKNkUsRUFtQzdFLENBQUMsR0FBRzNnRCxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNHLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR3I4QyxLQUFLLENBQUNxOUMsV0FBVixFQUF1QlQsTUFBTSxDQUFDLFlBQUQsQ0FBN0IsRUFBNkM7SUFDekMsZ0JBQWdCQSxNQUFNLENBQUNsSCxnQkFEa0I7SUFFekNrTCxPQUFPLEVBQUVsRSxNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FDbkIsWUFBWTtNQUNSRSxNQUFNLENBQUNsSCxnQkFBUCxHQUEwQixLQUExQjtJQUNILENBSEk7RUFGZ0MsQ0FBN0MsRUFNRztJQUNDLFdBQVMsQ0FBQyxHQUFHMTFDLEtBQUssQ0FBQzI5QyxPQUFWLEVBQW1CLFlBQVk7TUFBRSxPQUFPLENBQzdDLENBQUMsR0FBRzM5QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7UUFDakMsU0FBTyxvQkFEMEI7UUFFakNxRSxPQUFPLEVBQUUsQ0FBQyxHQUFHdmdELEtBQUssQ0FBQ3dnRCxRQUFWLEVBQW9CNUQsTUFBTSxDQUFDeEcsY0FBM0IsRUFBMkMsQ0FBQyxPQUFELENBQTNDO01BRndCLENBQXJDLEVBR0csQ0FDQyxDQUFDLEdBQUdwMkMsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSyxVQUFyQyxFQUFpRCxDQUFDLEdBQUd2OEMsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzMwQyxRQUFQLENBQWdCNmdFLFNBQWhCLENBQTBCWSxlQUFyRCxDQUFqRCxFQUF3SDtNQUFFO01BQTFILENBREQsRUFFQyxDQUFDLEdBQUcxcEUsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQ3ZDLENBQUMsR0FBR2w4QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNNLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR3g4QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUM2QixXQUF2QyxFQUFvRCxDQUNoRCxDQUFDLEdBQUcvOUMsS0FBSyxDQUFDKy9DLGVBQVYsRUFBMkIsQ0FBQyxHQUFHLy9DLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQnF3QyxhQUFoQixDQUE4QmxOLFFBQTlCLENBQXVDdU8sT0FBbEUsSUFBNkUsR0FBeEcsRUFBNkc7TUFBRTtNQUEvRyxDQURnRCxFQUVoRHFFLFdBRmdELENBQXBELENBRDhDLEVBSzlDLENBQUMsR0FBR2grQyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MrQixXQUF0QyxFQUFtRCxDQUMvQyxDQUFDLEdBQUdqK0MsS0FBSyxDQUFDcTlDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztRQUN2QzlzQyxJQUFJLEVBQUUsZUFEaUM7UUFFdkMsU0FBTyxrRUFGZ0M7UUFHdkNtdEMsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FDbkIsWUFBWTtVQUNSRSxNQUFNLENBQUNqSCxtQkFBUCxHQUE2QixDQUFDaUgsTUFBTSxDQUFDakgsbUJBQXJDO1FBQ0gsQ0FISTtNQUg4QixDQUEzQyxDQUQrQyxFQVMvQyxDQUFDLEdBQUczMUMsS0FBSyxDQUFDcWdELGNBQVYsRUFBMEIsQ0FBQyxHQUFHcmdELEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QztRQUM3RCx1QkFBdUJRLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZLFVBQVVjLE1BQVYsRUFBa0I7VUFBRSxPQUFTWixNQUFNLENBQUN0SSxZQUFQLENBQW9CNEIsZ0JBQXJCLEdBQXlDc0gsTUFBakQ7UUFBMkQsQ0FBekcsQ0FEc0M7UUFFN0QsU0FBTyxDQUFDLEdBQUd4OUMsS0FBSyxDQUFDMi9DLGNBQVYsRUFBMEIsQ0FDN0IvQyxNQUFNLENBQUN6RyxpQkFBUCxDQUF5QkQsZ0JBQXpCLEtBQThDLEVBQTlDLEdBQ00sbUJBRE4sR0FFTSxhQUh1QixFQUk3Qix1Q0FKNkIsQ0FBMUIsQ0FGc0Q7UUFRN0R2dkMsSUFBSSxFQUFFaTJDLE1BQU0sQ0FBQ2pILG1CQUFQLEdBQTZCLE1BQTdCLEdBQXNDO01BUmlCLENBQXZDLEVBU3ZCLElBVHVCLEVBU2pCO01BQUc7TUFUYyxFQVNNdUksV0FUTixDQUExQixFQVM4QyxDQUMxQyxDQUFDbCtDLEtBQUssQ0FBQzJwRSxhQUFQLEVBQXNCL3NCLE1BQU0sQ0FBQ3RJLFlBQVAsQ0FBb0I0QixnQkFBMUMsQ0FEMEMsQ0FUOUMsQ0FUK0MsQ0FBbkQsQ0FMOEMsRUEyQjdDMEcsTUFBTSxDQUFDekcsaUJBQVAsQ0FBeUJELGdCQUF6QixLQUE4QyxFQUEvQyxJQUNPLENBQUMsR0FBR2wyQyxLQUFLLENBQUNpOUMsU0FBVixLQUF3QixDQUFDLEdBQUdqOUMsS0FBSyxDQUFDazlDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDaUIsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHbitDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUN6RyxpQkFBUCxDQUF5QkQsZ0JBQXBELENBQW5ELEVBQTBIO01BQUU7TUFBNUgsQ0FEL0IsSUFFTSxDQUFDLEdBQUdsMkMsS0FBSyxDQUFDczlDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBN0J3QyxDQUFsRCxDQUR1QyxDQUEzQyxDQUZELEVBbUNDLENBQUMsR0FBR3Q5QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNrQyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUdwK0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDbUMsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHcitDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixPQUE5QixFQUF1Q29DLFdBQXZDLEVBQW9ELENBQ2hELENBQUMsR0FBR3QrQyxLQUFLLENBQUMrL0MsZUFBVixFQUEyQixDQUFDLEdBQUcvL0MsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzMwQyxRQUFQLENBQWdCcXdDLGFBQWhCLENBQThCbE4sUUFBOUIsT0FBM0IsSUFBeUUsR0FBcEcsRUFBeUc7TUFBRTtNQUEzRyxDQURnRCxFQUVoRG1ULFdBRmdELENBQXBELENBRDhDLEVBSzlDLENBQUMsR0FBR3YrQyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NzQyxXQUF0QyxFQUFtRCxDQUMvQyxDQUFDLEdBQUd4K0MsS0FBSyxDQUFDcTlDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztRQUN2QzlzQyxJQUFJLEVBQUUsZUFEaUM7UUFFdkMsU0FBTyxrRUFGZ0M7UUFHdkNtdEMsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FDbkIsWUFBWTtVQUNSRSxNQUFNLENBQUNoSCxlQUFQLEdBQXlCLENBQUNnSCxNQUFNLENBQUNoSCxlQUFqQztRQUNILENBSEk7TUFIOEIsQ0FBM0MsQ0FEK0MsRUFTL0MsQ0FBQyxHQUFHNTFDLEtBQUssQ0FBQ3FnRCxjQUFWLEVBQTBCLENBQUMsR0FBR3JnRCxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUM7UUFDN0QsdUJBQXVCUSxNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO1VBQUUsT0FBU1osTUFBTSxDQUFDdEksWUFBUCxDQUFvQmxKLFFBQXJCLEdBQWlDb1MsTUFBekM7UUFBbUQsQ0FBakcsQ0FEc0M7UUFFN0QsU0FBTyxDQUFDLEdBQUd4OUMsS0FBSyxDQUFDMi9DLGNBQVYsRUFBMEIsQ0FDN0IvQyxNQUFNLENBQUN6RyxpQkFBUCxDQUF5Qi9LLFFBQXpCLEtBQXNDLEVBQXRDLEdBQ00sbUJBRE4sR0FFTSxhQUh1QixFQUk3Qix1Q0FKNkIsQ0FBMUIsQ0FGc0Q7UUFRN0R6a0MsSUFBSSxFQUFFaTJDLE1BQU0sQ0FBQ2hILGVBQVAsR0FBeUIsTUFBekIsR0FBa0M7TUFScUIsQ0FBdkMsRUFTdkIsSUFUdUIsRUFTakI7TUFBRztNQVRjLEVBU002SSxXQVROLENBQTFCLEVBUzhDLENBQzFDLENBQUN6K0MsS0FBSyxDQUFDMnBFLGFBQVAsRUFBc0Ivc0IsTUFBTSxDQUFDdEksWUFBUCxDQUFvQmxKLFFBQTFDLENBRDBDLENBVDlDLENBVCtDLENBQW5ELENBTDhDLEVBMkI3Q3dSLE1BQU0sQ0FBQ3pHLGlCQUFQLENBQXlCL0ssUUFBekIsS0FBc0MsRUFBdkMsSUFDTyxDQUFDLEdBQUdwckMsS0FBSyxDQUFDaTlDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHajlDLEtBQUssQ0FBQ2s5QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ3dCLFdBQXRDLEVBQW1ELENBQUMsR0FBRzErQyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmIsTUFBTSxDQUFDekcsaUJBQVAsQ0FBeUIvSyxRQUFwRCxDQUFuRCxFQUFrSDtNQUFFO01BQXBILENBRC9CLElBRU0sQ0FBQyxHQUFHcHJDLEtBQUssQ0FBQ3M5QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQTdCd0MsQ0FBbEQsQ0FEOEMsRUFnQzlDLENBQUMsR0FBR3Q5QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUN5QyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUczK0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDMEMsV0FBdkMsRUFBb0QsQ0FDaEQsQ0FBQyxHQUFHNStDLEtBQUssQ0FBQysvQyxlQUFWLEVBQTJCLENBQUMsR0FBRy8vQyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmIsTUFBTSxDQUFDMzBDLFFBQVAsQ0FBZ0Jxd0MsYUFBaEIsQ0FBOEJsTixRQUE5QixDQUF1Q3VPLE9BQWxFLElBQTZFLEdBQXhHLEVBQTZHO01BQUU7TUFBL0csQ0FEZ0QsRUFFaERrRixXQUZnRCxDQUFwRCxDQUQ4QyxFQUs5QyxDQUFDLEdBQUc3K0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDNEMsV0FBdEMsRUFBbUQsQ0FDL0MsQ0FBQyxHQUFHOStDLEtBQUssQ0FBQ3E5QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7UUFDdkM5c0MsSUFBSSxFQUFFLGVBRGlDO1FBRXZDLFNBQU8sa0VBRmdDO1FBR3ZDbXRDLE9BQU8sRUFBRVYsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQ25CLFlBQVk7VUFDUkUsTUFBTSxDQUFDL0csbUJBQVAsR0FBNkIsQ0FBQytHLE1BQU0sQ0FBQy9HLG1CQUFyQztRQUNILENBSEk7TUFIOEIsQ0FBM0MsQ0FEK0MsRUFTL0MsQ0FBQyxHQUFHNzFDLEtBQUssQ0FBQ3FnRCxjQUFWLEVBQTBCLENBQUMsR0FBR3JnRCxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUM7UUFDN0QsdUJBQXVCUSxNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO1VBQUUsT0FBU1osTUFBTSxDQUFDdEksWUFBUCxDQUFvQmpKLHFCQUFyQixHQUE4Q21TLE1BQXREO1FBQWdFLENBQTlHLENBRHNDO1FBRTdELFNBQU8sQ0FBQyxHQUFHeDlDLEtBQUssQ0FBQzIvQyxjQUFWLEVBQTBCLENBQzdCL0MsTUFBTSxDQUFDekcsaUJBQVAsQ0FBeUI5SyxxQkFBekIsS0FBbUQsRUFBbkQsR0FDTSxtQkFETixHQUVNLGFBSHVCLEVBSTdCLDJCQUo2QixDQUExQixDQUZzRDtRQVE3RDFrQyxJQUFJLEVBQUVpMkMsTUFBTSxDQUFDL0csbUJBQVAsR0FBNkIsTUFBN0IsR0FBc0M7TUFSaUIsQ0FBdkMsRUFTdkIsSUFUdUIsRUFTakI7TUFBRztNQVRjLEVBU01rSixXQVROLENBQTFCLEVBUzhDLENBQzFDLENBQUMvK0MsS0FBSyxDQUFDMnBFLGFBQVAsRUFBc0Ivc0IsTUFBTSxDQUFDdEksWUFBUCxDQUFvQmpKLHFCQUExQyxDQUQwQyxDQVQ5QyxDQVQrQyxDQUFuRCxDQUw4QyxFQTJCN0N1UixNQUFNLENBQUN6RyxpQkFBUCxDQUF5QjlLLHFCQUF6QixLQUFtRCxFQUFwRCxJQUNPLENBQUMsR0FBR3JyQyxLQUFLLENBQUNpOUMsU0FBVixLQUF3QixDQUFDLEdBQUdqOUMsS0FBSyxDQUFDazlDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDOEIsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHaC9DLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUN6RyxpQkFBUCxDQUF5QjlLLHFCQUFwRCxDQUFuRCxFQUErSDtNQUFFO01BQWpJLENBRC9CLElBRU0sQ0FBQyxHQUFHcnJDLEtBQUssQ0FBQ3M5QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQTdCd0MsQ0FBbEQsQ0FoQzhDLENBQWxELENBbkNELEVBbUdDLENBQUMsR0FBR3Q5QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMrQyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUdqL0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDO1FBQ3BDLFNBQU8seUJBRDZCO1FBRXBDa0IsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FDbkIsWUFBWTtVQUNSRSxNQUFNLENBQUNsSCxnQkFBUCxHQUEwQixLQUExQjtRQUNILENBSEk7TUFGMkIsQ0FBeEMsRUFNRyxDQUFDLEdBQUcxMUMsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzMwQyxRQUFQLENBQWdCOGEsV0FBaEIsQ0FBNEIrb0MsTUFBdkQsQ0FOSCxFQU1tRTtNQUFFO01BTnJFLENBRDhDLEVBUTlDLENBQUMsR0FBRzlyRCxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsUUFBOUIsRUFBd0M7UUFDcEMsU0FBTyxvQkFENkI7UUFFcENrQixPQUFPLEVBQUVSLE1BQU0sQ0FBQ3hHO01BRm9CLENBQXhDLEVBR0csQ0FBQyxHQUFHcDJDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQjhhLFdBQWhCLENBQTRCZ3BDLElBQXZELENBSEgsRUFHaUU7TUFBRTtNQUhuRSxDQVI4QyxDQUFsRCxDQW5HRCxDQUhILEVBbUhHO01BQUc7TUFuSE4sRUFtSG1DelAsVUFuSG5DLENBRDZDLENBQVA7SUFxSHRDLENBckhLLENBRFY7SUF1SENyM0MsQ0FBQyxFQUFFO0lBQUU7O0VBdkhOLENBTkgsRUE4SEc7RUFBRTtFQTlITCxFQThIa0IsQ0FBQyxjQUFELENBOUhsQixDQUQ2QyxFQWdJN0MsQ0FBQyxHQUFHakYsS0FBSyxDQUFDczlDLGtCQUFWLEVBQThCLDJCQUE5QixDQWhJNkMsRUFpSTdDLENBQUMsR0FBR3Q5QyxLQUFLLENBQUNxOUMsV0FBVixFQUF1QlQsTUFBTSxDQUFDLFlBQUQsQ0FBN0IsRUFBNkM7SUFDekMsZ0JBQWdCQSxNQUFNLENBQUNuSCxlQURrQjtJQUV6Q21MLE9BQU8sRUFBRWxFLE1BQU0sQ0FBQyxFQUFELENBQU4sS0FBZUEsTUFBTSxDQUFDLEVBQUQsQ0FBTixHQUNwQixZQUFZO01BQ1JFLE1BQU0sQ0FBQ25ILGVBQVAsR0FBeUIsS0FBekI7SUFDSCxDQUhJO0VBRmdDLENBQTdDLEVBTUc7SUFDQyxXQUFTLENBQUMsR0FBR3oxQyxLQUFLLENBQUMyOUMsT0FBVixFQUFtQixZQUFZO01BQUUsT0FBTyxDQUM3QyxDQUFDLEdBQUczOUMsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO1FBQ2pDLFNBQU8sYUFEMEI7UUFFakNxRSxPQUFPLEVBQUUsQ0FBQyxHQUFHdmdELEtBQUssQ0FBQ3dnRCxRQUFWLEVBQW9CNUQsTUFBTSxDQUFDckcsYUFBM0IsRUFBMEMsQ0FBQyxPQUFELENBQTFDO01BRndCLENBQXJDLEVBR0csQ0FDQyxDQUFDLEdBQUd2MkMsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDaUQsV0FBckMsRUFBa0QsQ0FBQyxHQUFHbi9DLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUNqOUIsVUFBUCxDQUFrQmk5QixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQjhhLFdBQWhCLENBQTRCaXdDLFlBQTVCLENBQXlDcG5ELE9BQXpDLENBQWlELFVBQWpELEVBQTZEZ3hDLE1BQU0sQ0FBQzMwQyxRQUFQLENBQWdCTSxLQUFoQixDQUFzQkMsTUFBdEIsQ0FBNkJtNEMsWUFBMUYsQ0FBbEIsQ0FBM0IsQ0FBbEQsRUFBME07TUFBRTtNQUE1TSxDQURELEVBRUMsQ0FBQyxHQUFHM2dELEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ2tELFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR3AvQyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNtRCxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUdyL0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDb0QsV0FBdkMsRUFBb0QsQ0FDaEQsQ0FBQyxHQUFHdC9DLEtBQUssQ0FBQysvQyxlQUFWLEVBQTJCLENBQUMsR0FBRy8vQyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmIsTUFBTSxDQUFDMzBDLFFBQVAsQ0FBZ0Jxd0MsYUFBaEIsQ0FBOEJtQixRQUE5QixDQUF1Q3YwQyxLQUFsRSxDQUEzQixFQUFxRztNQUFFO01BQXZHLENBRGdELEVBRWhEcTZDLFdBRmdELENBQXBELENBRDhDLEVBSzlDLENBQUMsR0FBR3YvQyxLQUFLLENBQUNxZ0QsY0FBVixFQUEwQixDQUFDLEdBQUdyZ0QsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDO1FBQzdELHVCQUF1QlEsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVksVUFBVWMsTUFBVixFQUFrQjtVQUFFLE9BQVNaLE1BQU0sQ0FBQzl1QixRQUFQLENBQWdCK2xCLFNBQWpCLEdBQThCMkosTUFBdEM7UUFBZ0QsQ0FBOUYsQ0FEc0M7UUFFN0QsU0FBTyxDQUFDLEdBQUd4OUMsS0FBSyxDQUFDMi9DLGNBQVYsRUFBMEIsQ0FDN0IvQyxNQUFNLENBQUMzRyxhQUFQLENBQXFCcEMsU0FBckIsS0FBbUMsRUFBbkMsR0FDTSxtQkFETixHQUVNLGFBSHVCLEVBSTdCLHVDQUo2QixDQUExQixDQUZzRDtRQVE3RGx0QyxJQUFJLEVBQUU7TUFSdUQsQ0FBdkMsRUFTdkIsSUFUdUIsRUFTakI7TUFBRTtNQVRlLENBQTFCLEVBU3lCLENBQ3JCLENBQUMzRyxLQUFLLENBQUN5Z0QsVUFBUCxFQUFtQjdELE1BQU0sQ0FBQzl1QixRQUFQLENBQWdCK2xCLFNBQW5DLENBRHFCLENBVHpCLENBTDhDLEVBaUI3QytJLE1BQU0sQ0FBQzNHLGFBQVAsQ0FBcUJwQyxTQUFyQixLQUFtQyxFQUFwQyxJQUNPLENBQUMsR0FBRzd6QyxLQUFLLENBQUNpOUMsU0FBVixLQUF3QixDQUFDLEdBQUdqOUMsS0FBSyxDQUFDazlDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDc0MsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHeC9DLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzRyxhQUFQLENBQXFCcEMsU0FBaEQsQ0FBbkQsRUFBK0c7TUFBRTtNQUFqSCxDQUQvQixJQUVNLENBQUMsR0FBRzd6QyxLQUFLLENBQUNzOUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FuQndDLENBQWxELENBRDhDLEVBc0I5QyxDQUFDLEdBQUd0OUMsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDdUQsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHei9DLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixPQUE5QixFQUF1Q3dELFdBQXZDLEVBQW9ELENBQ2hELENBQUMsR0FBRzEvQyxLQUFLLENBQUMrL0MsZUFBVixFQUEyQixDQUFDLEdBQUcvL0MsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzMwQyxRQUFQLENBQWdCcXdDLGFBQWhCLENBQThCMUUsUUFBOUIsQ0FBdUMxdUMsS0FBbEUsQ0FBM0IsRUFBcUc7TUFBRTtNQUF2RyxDQURnRCxFQUVoRHloRCxXQUZnRCxDQUFwRCxDQUQ4QyxFQUs5QyxDQUFDLEdBQUczbUQsS0FBSyxDQUFDcWdELGNBQVYsRUFBMEIsQ0FBQyxHQUFHcmdELEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QztRQUM3RCx1QkFBdUJRLE1BQU0sQ0FBQyxFQUFELENBQU4sS0FBZUEsTUFBTSxDQUFDLEVBQUQsQ0FBTixHQUFhLFVBQVVjLE1BQVYsRUFBa0I7VUFBRSxPQUFTWixNQUFNLENBQUM5dUIsUUFBUCxDQUFnQjhsQixRQUFqQixHQUE2QjRKLE1BQXJDO1FBQStDLENBQS9GLENBRHNDO1FBRTdELFNBQU8sQ0FBQyxHQUFHeDlDLEtBQUssQ0FBQzIvQyxjQUFWLEVBQTBCLENBQzdCL0MsTUFBTSxDQUFDM0csYUFBUCxDQUFxQnJDLFFBQXJCLEtBQWtDLEVBQWxDLEdBQ00sbUJBRE4sR0FFTSxhQUh1QixFQUk3Qix1Q0FKNkIsQ0FBMUIsQ0FGc0Q7UUFRN0RqdEMsSUFBSSxFQUFFO01BUnVELENBQXZDLEVBU3ZCLElBVHVCLEVBU2pCO01BQUU7TUFUZSxDQUExQixFQVN5QixDQUNyQixDQUFDM0csS0FBSyxDQUFDeWdELFVBQVAsRUFBbUI3RCxNQUFNLENBQUM5dUIsUUFBUCxDQUFnQjhsQixRQUFuQyxDQURxQixDQVR6QixDQUw4QyxFQWlCN0NnSixNQUFNLENBQUMzRyxhQUFQLENBQXFCckMsUUFBckIsS0FBa0MsRUFBbkMsSUFDTyxDQUFDLEdBQUc1ekMsS0FBSyxDQUFDaTlDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHajlDLEtBQUssQ0FBQ2s5QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2tLLFdBQXRDLEVBQW1ELENBQUMsR0FBR3BuRCxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmIsTUFBTSxDQUFDM0csYUFBUCxDQUFxQnJDLFFBQWhELENBQW5ELEVBQThHO01BQUU7TUFBaEgsQ0FEL0IsSUFFTSxDQUFDLEdBQUc1ekMsS0FBSyxDQUFDczlDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBbkJ3QyxDQUFsRCxDQXRCOEMsRUEyQzlDLENBQUMsR0FBR3Q5QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNtTCxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUdybkQsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDb0wsV0FBdkMsRUFBb0QsQ0FDaEQsQ0FBQyxHQUFHdG5ELEtBQUssQ0FBQysvQyxlQUFWLEVBQTJCLENBQUMsR0FBRy8vQyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmIsTUFBTSxDQUFDMzBDLFFBQVAsQ0FBZ0I2Z0UsU0FBaEIsQ0FBMEJoK0IsS0FBckQsQ0FBM0IsRUFBd0Y7TUFBRTtNQUExRixDQURnRCxFQUVoRHljLFdBRmdELENBQXBELENBRDhDLEVBSzlDLENBQUMsR0FBR3ZuRCxLQUFLLENBQUNxZ0QsY0FBVixFQUEwQixDQUFDLEdBQUdyZ0QsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDO1FBQzdELHVCQUF1QlEsTUFBTSxDQUFDLEVBQUQsQ0FBTixLQUFlQSxNQUFNLENBQUMsRUFBRCxDQUFOLEdBQWEsVUFBVWMsTUFBVixFQUFrQjtVQUFFLE9BQVNaLE1BQU0sQ0FBQzl1QixRQUFQLENBQWdCZ2QsS0FBakIsR0FBMEIwUyxNQUFsQztRQUE0QyxDQUE1RixDQURzQztRQUU3RCxTQUFPLENBQUMsR0FBR3g5QyxLQUFLLENBQUMyL0MsY0FBVixFQUEwQixDQUM3Qi9DLE1BQU0sQ0FBQzNHLGFBQVAsQ0FBcUJuTCxLQUFyQixLQUErQixFQUEvQixHQUNNLG1CQUROLEdBRU0sYUFIdUIsRUFJN0IsdUNBSjZCLENBQTFCLENBRnNEO1FBUTdEbmtDLElBQUksRUFBRTtNQVJ1RCxDQUF2QyxFQVN2QixJQVR1QixFQVNqQjtNQUFFO01BVGUsQ0FBMUIsRUFTeUIsQ0FDckIsQ0FBQzNHLEtBQUssQ0FBQ3lnRCxVQUFQLEVBQW1CN0QsTUFBTSxDQUFDOXVCLFFBQVAsQ0FBZ0JnZCxLQUFuQyxDQURxQixDQVR6QixDQUw4QyxFQWlCN0M4UixNQUFNLENBQUMzRyxhQUFQLENBQXFCbkwsS0FBckIsS0FBK0IsRUFBaEMsSUFDTyxDQUFDLEdBQUc5cUMsS0FBSyxDQUFDaTlDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHajlDLEtBQUssQ0FBQ2s5QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ3NLLFdBQXRDLEVBQW1ELENBQUMsR0FBR3huRCxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmIsTUFBTSxDQUFDM0csYUFBUCxDQUFxQm5MLEtBQWhELENBQW5ELEVBQTJHO01BQUU7TUFBN0csQ0FEL0IsSUFFTSxDQUFDLEdBQUc5cUMsS0FBSyxDQUFDczlDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBbkJ3QyxDQUFsRCxDQTNDOEMsRUFnRTlDLENBQUMsR0FBR3Q5QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7UUFDakMsU0FBTyxDQUFDLEdBQUdsOEMsS0FBSyxDQUFDMi9DLGNBQVYsRUFBMEIsQ0FDN0IvQyxNQUFNLENBQUMzRyxhQUFQLENBQXFCRCxtQkFBckIsS0FBNkMsRUFBN0MsSUFBbUQsb0JBRHRCLEVBRTdCLGlDQUY2QixDQUExQjtNQUQwQixDQUFyQyxFQUtHLENBQ0MsQ0FBQyxHQUFHaDJDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixPQUE5QixFQUF1Q3VMLFdBQXZDLEVBQW9ELENBQ2hELENBQUMsR0FBR3puRCxLQUFLLENBQUMrL0MsZUFBVixFQUEyQixDQUFDLEdBQUcvL0MsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzMwQyxRQUFQLENBQWdCNmdFLFNBQWhCLENBQTBCOXlCLG1CQUFyRCxDQUEzQixFQUFzRztNQUFFO01BQXhHLENBRGdELEVBRWhEMFIsV0FGZ0QsQ0FBcEQsQ0FERCxFQUtDLENBQUMsR0FBRzFuRCxLQUFLLENBQUNxOUMsV0FBVixFQUF1QlQsTUFBTSxDQUFDLGFBQUQsQ0FBN0IsRUFBOEM7UUFDMUM4RSxVQUFVLEVBQUU5RSxNQUFNLENBQUM5dUIsUUFBUCxDQUFnQmtvQixtQkFEYztRQUUxQyx1QkFBdUIwRyxNQUFNLENBQUMsRUFBRCxDQUFOLEtBQWVBLE1BQU0sQ0FBQyxFQUFELENBQU4sR0FBYSxVQUFVYyxNQUFWLEVBQWtCO1VBQUUsT0FBU1osTUFBTSxDQUFDOXVCLFFBQVAsQ0FBZ0Jrb0IsbUJBQWpCLEdBQXdDd0gsTUFBaEQ7UUFBMEQsQ0FBMUcsQ0FGbUI7UUFHMUN0ZSxPQUFPLEVBQUV5ZCxNQUFNLENBQUNuSCxrQkFIMEI7UUFJMUNtRCxXQUFXLEVBQUUsaUJBSjZCO1FBSzFDc08sVUFBVSxFQUFFO01BTDhCLENBQTlDLEVBTUcsSUFOSCxFQU1TO01BQUU7TUFOWCxFQU13QixDQUFDLFlBQUQsRUFBZSxTQUFmLENBTnhCLENBTEQsRUFZRXJLLE1BQU0sQ0FBQzNHLGFBQVAsQ0FBcUJELG1CQUFyQixLQUE2QyxFQUE5QyxJQUNPLENBQUMsR0FBR2gyQyxLQUFLLENBQUNpOUMsU0FBVixLQUF3QixDQUFDLEdBQUdqOUMsS0FBSyxDQUFDazlDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDeUssV0FBdEMsRUFBbUQsQ0FBQyxHQUFHM25ELEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzRyxhQUFQLENBQXFCRCxtQkFBaEQsQ0FBbkQsRUFBeUg7TUFBRTtNQUEzSCxDQUQvQixJQUVNLENBQUMsR0FBR2gyQyxLQUFLLENBQUNzOUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FkUCxDQUxILEVBb0JHO01BQUU7TUFwQkwsQ0FoRThDLENBQWxELENBRkQsRUF3RkMsQ0FBQyxHQUFHdDlDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQzBMLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBRzVuRCxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsUUFBOUIsRUFBd0M7UUFDcEMsU0FBTyx5QkFENkI7UUFFcENrQixPQUFPLEVBQUVWLE1BQU0sQ0FBQyxFQUFELENBQU4sS0FBZUEsTUFBTSxDQUFDLEVBQUQsQ0FBTixHQUNwQixZQUFZO1VBQ1JFLE1BQU0sQ0FBQ25ILGVBQVAsR0FBeUIsS0FBekI7UUFDSCxDQUhJO01BRjJCLENBQXhDLEVBTUcsQ0FBQyxHQUFHejFDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQjhhLFdBQWhCLENBQTRCK29DLE1BQXZELENBTkgsRUFNbUU7TUFBRTtNQU5yRSxDQUQ4QyxFQVE5QyxDQUFDLEdBQUc5ckQsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDO1FBQ3BDLFNBQU8sb0JBRDZCO1FBRXBDa0IsT0FBTyxFQUFFUixNQUFNLENBQUNyRztNQUZvQixDQUF4QyxFQUdHLENBQUMsR0FBR3YyQyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmIsTUFBTSxDQUFDMzBDLFFBQVAsQ0FBZ0I4YSxXQUFoQixDQUE0QmdwQyxJQUF2RCxDQUhILEVBR2lFO01BQUU7TUFIbkUsQ0FSOEMsQ0FBbEQsQ0F4RkQsQ0FISCxFQXdHRztNQUFHO01BeEdOLEVBd0dtQzdNLFdBeEduQyxDQUQ2QyxDQUFQO0lBMEd0QyxDQTFHSyxDQURWO0lBNEdDajZDLENBQUMsRUFBRTtJQUFFOztFQTVHTixDQU5ILEVBbUhHO0VBQUU7RUFuSEwsRUFtSGtCLENBQUMsY0FBRCxDQW5IbEIsQ0FqSTZDLEVBcVA3QyxDQUFDLEdBQUdqRixLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMyTCxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUc3bkQsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDNEwsV0FBdEMsRUFBbUQsQ0FDL0MsQ0FBQyxHQUFHOW5ELEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxDQUN4QyxDQUFDLEdBQUdsOEMsS0FBSyxDQUFDcTlDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUN2QzlzQyxJQUFJLEVBQUUsY0FEaUM7SUFFdkMsU0FBTztFQUZnQyxDQUEzQyxDQUR3QyxDQUE1QyxDQUQrQyxFQU8vQyxDQUFDLEdBQUdqUSxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0M2TCxXQUFwQyxFQUFpRCxDQUFDLEdBQUcvbkQsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzMwQyxRQUFQLENBQWdCNmdFLFNBQWhCLENBQTBCYyxnQkFBckQsQ0FBakQsRUFBeUg7RUFBRTtFQUEzSCxDQVArQyxDQUFuRCxDQUQ4QyxFQVU5QyxDQUFDLEdBQUc1cEUsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDOEwsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHaG9ELEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQytMLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR2pvRCxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsRUFBNEMsQ0FDeEMsQ0FBQyxHQUFHbDhDLEtBQUssQ0FBQ3E5QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkM5c0MsSUFBSSxFQUFFLEtBRGlDO0lBRXZDLFNBQU87RUFGZ0MsQ0FBM0MsQ0FEd0MsQ0FBNUMsQ0FEOEMsRUFPOUMsQ0FBQyxHQUFHalEsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO0lBQy9CLFNBQU8sa0NBRHdCO0lBRS9Ca0IsT0FBTyxFQUFFVixNQUFNLENBQUMsRUFBRCxDQUFOLEtBQWVBLE1BQU0sQ0FBQyxFQUFELENBQU4sR0FDcEIsWUFBWTtNQUNSRSxNQUFNLENBQUNsSCxnQkFBUCxHQUEwQixJQUExQjtJQUNILENBSEk7RUFGc0IsQ0FBbkMsRUFNRyxDQUNDLENBQUMsR0FBRzExQyxLQUFLLENBQUNzOUMsa0JBQVYsRUFBOEIsaUNBQTlCLENBREQsRUFFQyxDQUFDLEdBQUd0OUMsS0FBSyxDQUFDKy9DLGVBQVYsRUFBMkIsQ0FBQyxHQUFHLy9DLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQjZnRSxTQUFoQixDQUEwQmUsb0JBQXJELENBQTNCLEVBQXVHO0VBQUU7RUFBekcsQ0FGRCxDQU5ILENBUDhDLENBQWxELENBRDhDLENBQWxELENBVjhDLENBQWxELENBclA2QyxFQW9SN0MsQ0FBQyxHQUFHN3BFLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ2dNLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR2xvRCxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNpTSxXQUFyQyxFQUFrRCxDQUFDLEdBQUdub0QsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzMwQyxRQUFQLENBQWdCVyxXQUFoQixDQUE0Qk4sSUFBdkQsQ0FBbEQsRUFBZ0g7RUFBRTtFQUFsSCxDQUQ4QyxFQUU5QyxDQUFDLEdBQUd0SSxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNrTSxXQUFyQyxFQUFrRCxDQUFDLEdBQUdwb0QsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzlHLFFBQVAsQ0FBZ0IsV0FBaEIsQ0FBM0IsQ0FBbEQsRUFBNEc7RUFBRTtFQUE5RyxDQUY4QyxDQUFsRCxDQXBSNkMsRUF3UjdDLENBQUMsR0FBRzkxQyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNtTSxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUdyb0QsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDb00sV0FBckMsRUFBa0QsQ0FBQyxHQUFHdG9ELEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQjZnRSxTQUFoQixDQUEwQmdCLFNBQXJELENBQWxELEVBQW1IO0VBQUU7RUFBckgsQ0FEOEMsRUFFOUMsQ0FBQyxHQUFHOXBFLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ21iLFdBQXJDLEVBQWtELENBQUMsR0FBR3IzRCxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmIsTUFBTSxDQUFDOUcsUUFBUCxDQUFnQixVQUFoQixDQUEzQixDQUFsRCxFQUEyRztFQUFFO0VBQTdHLENBRjhDLENBQWxELENBeFI2QyxFQTRSN0MsQ0FBQyxHQUFHOTFDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ29iLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR3QzRCxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNxYixXQUFyQyxFQUFrRCxDQUFDLEdBQUd2M0QsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzMwQyxRQUFQLENBQWdCNmdFLFNBQWhCLENBQTBCOXlCLG1CQUFyRCxDQUFsRCxFQUE2SDtFQUFFO0VBQS9ILENBRDhDLEVBRTlDLENBQUMsR0FBR2gyQyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNzYixXQUFyQyxFQUFrRCxDQUFDLEdBQUd4M0QsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJkLE1BQU0sQ0FBQ25ILGtCQUFQLENBQTBCb0gsTUFBTSxDQUFDOUcsUUFBUCxDQUFnQixxQkFBaEIsQ0FBMUIsQ0FBM0IsQ0FBbEQsRUFBaUo7RUFBRTtFQUFuSixDQUY4QyxDQUFsRCxDQTVSNkMsRUFnUzdDLENBQUMsR0FBRzkxQyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUN1YixXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUd6M0QsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDd2IsV0FBckMsRUFBa0QsQ0FBQyxHQUFHMTNELEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQjZnRSxTQUFoQixDQUEwQmgrQixLQUFyRCxDQUFsRCxFQUErRztFQUFFO0VBQWpILENBRDhDLEVBRTlDLENBQUMsR0FBRzlxQyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMsSUFBckMsRUFBMkMsQ0FDdkMsQ0FBQyxHQUFHbDhDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQyxJQUFuQyxFQUF5QyxDQUFDLEdBQUdsOEMsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzlHLFFBQVAsQ0FBZ0IsT0FBaEIsQ0FBM0IsQ0FBekMsRUFBK0Y7RUFBRTtFQUFqRyxDQUR1QyxFQUV0QyxDQUFDOEcsTUFBTSxDQUFDOUcsUUFBUCxDQUFnQixtQkFBaEIsQ0FBRixJQUNPLENBQUMsR0FBRzkxQyxLQUFLLENBQUNpOUMsU0FBVixLQUF3QixDQUFDLEdBQUdqOUMsS0FBSyxDQUFDazlDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDeWEsV0FBckMsRUFBa0QsQ0FDekUsQ0FBQyxHQUFHMzNELEtBQUssQ0FBQysvQyxlQUFWLEVBQTJCLENBQUMsR0FBRy8vQyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmIsTUFBTSxDQUFDMzBDLFFBQVAsQ0FBZ0I2Z0UsU0FBaEIsQ0FBMEJpQiw2QkFBckQsSUFBc0YsSUFBdEYsR0FBNkYsQ0FBQyxHQUFHL3BFLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQlcsV0FBaEIsQ0FBNEIyNkMsNEJBQXZELENBQTdGLEdBQW9MLElBQS9NLEVBQXFOO0VBQUU7RUFBdk4sQ0FEeUUsRUFFekUsQ0FBQyxHQUFHdmpELEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztJQUMvQixTQUFPLG9DQUR3QjtJQUUvQmtCLE9BQU8sRUFBRVYsTUFBTSxDQUFDLEVBQUQsQ0FBTixLQUFlQSxNQUFNLENBQUMsRUFBRCxDQUFOLEdBQWEsVUFBVWMsTUFBVixFQUFrQjtNQUFFLE9BQVFaLE1BQU0sQ0FBQ3psQyx1QkFBUCxFQUFSO0lBQTRDLENBQTVGO0VBRnNCLENBQW5DLEVBR0csQ0FBQyxHQUFHblgsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzMwQyxRQUFQLENBQWdCVyxXQUFoQixDQUE0QjQ2Qyw0QkFBdkQsQ0FISCxFQUd5RjtFQUFFO0VBSDNGLENBRnlFLEVBTXpFLENBQUMsR0FBR3hqRCxLQUFLLENBQUMrL0MsZUFBVixFQUEyQixNQUFNLENBQUMsR0FBRy8vQyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmIsTUFBTSxDQUFDMzBDLFFBQVAsQ0FBZ0I2Z0UsU0FBaEIsQ0FBMEJrQixzQkFBckQsQ0FBTixHQUFxRixJQUFoSCxFQUFzSDtFQUFFO0VBQXhILENBTnlFLENBQWxELENBRC9CLElBU00sQ0FBQyxHQUFHaHFFLEtBQUssQ0FBQ3M5QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQVhpQyxDQUEzQyxDQUY4QyxDQUFsRCxDQWhTNkMsRUFnVDVDVixNQUFNLENBQUM5RyxRQUFQLENBQWdCLGNBQWhCLENBQUQsSUFDTyxDQUFDLEdBQUc5MUMsS0FBSyxDQUFDaTlDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHajlDLEtBQUssQ0FBQ2s5QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQzBhLFdBQXJDLEVBQWtELENBQ3pFLENBQUMsR0FBRzUzRCxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMyYixXQUFyQyxFQUFrRCxDQUFDLEdBQUc3M0QsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzMwQyxRQUFQLENBQWdCVyxXQUFoQixDQUE0QnM5QyxZQUF2RCxDQUFsRCxFQUF3SDtFQUFFO0VBQTFILENBRHlFLEVBRXpFLENBQUMsR0FBR2xtRCxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM0YixXQUFyQyxFQUFrRCxDQUFDLEdBQUc5M0QsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzlHLFFBQVAsQ0FBZ0IsbUJBQWhCLENBQTNCLENBQWxELEVBQW9IO0VBQUU7RUFBdEgsQ0FGeUUsQ0FBbEQsQ0FEL0IsSUFLTSxDQUFDLEdBQUc5MUMsS0FBSyxDQUFDczlDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBclR1QyxFQXNUNUNWLE1BQU0sQ0FBQzlHLFFBQVAsQ0FBZ0IsY0FBaEIsQ0FBRCxJQUNPLENBQUMsR0FBRzkxQyxLQUFLLENBQUNpOUMsU0FBVixLQUF3QixDQUFDLEdBQUdqOUMsS0FBSyxDQUFDazlDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDNmEsV0FBckMsRUFBa0QsQ0FDekUsQ0FBQyxHQUFHLzNELEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQzhiLFdBQXJDLEVBQWtELENBQUMsR0FBR2g0RCxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmIsTUFBTSxDQUFDMzBDLFFBQVAsQ0FBZ0I2Z0UsU0FBaEIsQ0FBMEI3MEIsSUFBckQsQ0FBbEQsRUFBOEc7RUFBRTtFQUFoSCxDQUR5RSxFQUV6RSxDQUFDLEdBQUdqMEMsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDK2IsV0FBckMsRUFBa0QsQ0FBQyxHQUFHajRELEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQjZnRSxTQUFoQixDQUEwQkUsVUFBMUIsQ0FBcUNwc0IsTUFBTSxDQUFDOUcsUUFBUCxDQUFnQixXQUFoQixDQUFyQyxDQUEzQixDQUFsRCxFQUFrSjtFQUFFO0VBQXBKLENBRnlFLENBQWxELENBRC9CLElBS00sQ0FBQyxHQUFHOTFDLEtBQUssQ0FBQ3M5QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQTNUdUMsQ0FBakQsQ0FuQzZFLENBQWpELENBQWhDO0FBaVdIOztBQUNEeDlDLGNBQUEsR0FBaUIrN0MsTUFBakI7Ozs7Ozs7Ozs7O0FDcGRhOztBQUNiajhDLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCLEtBQUssQ0FBdEI7O0FBQ0EsSUFBSUUsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUk2N0MsVUFBVSxHQUFHO0VBQ2JoNkMsTUFBTSxFQUFFLE1BREs7RUFFYm1nRCxNQUFNLEVBQUUsRUFGSztFQUdiLFNBQU87QUFITSxDQUFqQjtBQUtBLElBQUlsRyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJRSxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFDYjM1QyxJQUFJLEVBQUUsYUFETztFQUViLFNBQU87QUFGTSxDQUFqQjs7QUFJQSxTQUFTbTVDLE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsSUFBSUMsa0JBQWtCLEdBQUcsQ0FBQyxHQUFHLzhDLEtBQUssQ0FBQ2c5QyxnQkFBVixFQUE0QixTQUE1QixDQUF6Qjs7RUFDQSxPQUFRLENBQUMsR0FBR2g5QyxLQUFLLENBQUNpOUMsU0FBVixLQUF3QixDQUFDLEdBQUdqOUMsS0FBSyxDQUFDazlDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDcEIsVUFBdEMsRUFBa0QsQ0FDOUUsQ0FBQyxHQUFHOTdDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0gsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHLzdDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0YsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHaDhDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQ0QsVUFBbkMsRUFBK0MsQ0FBQyxHQUFHajhDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDeDBDLFFBQUwsQ0FBYzR4QyxrQkFBZCxDQUFpQ293QixtQkFBNUQsQ0FBL0MsRUFBaUk7RUFBRTtFQUFuSSxDQUQ2QyxFQUU3QyxDQUFDLEdBQUdqcUUsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DQyxVQUFuQyxFQUErQyxDQUMzQyxDQUFDLEdBQUduOEMsS0FBSyxDQUFDKy9DLGVBQVYsRUFBMkIsQ0FBQyxHQUFHLy9DLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDeDBDLFFBQUwsQ0FBYzR4QyxrQkFBZCxDQUFpQ3F3QixrQ0FBNUQsSUFBa0cseUNBQTdILEVBQXdLO0VBQUU7RUFBMUssQ0FEMkMsRUFFM0MsQ0FBQyxHQUFHbHFFLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ0UsVUFBdEMsRUFBa0QsQ0FBQyxHQUFHcDhDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDaDJDLEtBQUwsQ0FBV3FrQyxLQUF0QyxDQUFsRCxFQUFnRztFQUFFO0VBQWxHLENBRjJDLEVBRzNDLENBQUMsR0FBRzlxQyxLQUFLLENBQUMrL0MsZUFBVixFQUEyQixPQUFPLENBQUMsR0FBRy8vQyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3gwQyxRQUFMLENBQWM0eEMsa0JBQWQsQ0FBaUNzd0Isa0JBQTVELENBQWxDLEVBQW1IO0VBQUU7RUFBckgsQ0FIMkMsQ0FBL0MsQ0FGNkMsQ0FBakQsQ0FENkMsRUFTN0MsQ0FBQyxHQUFHbnFFLEtBQUssQ0FBQ3E5QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkMsU0FBTyxjQURnQztJQUV2QzlzQyxJQUFJLEVBQUU7RUFGaUMsQ0FBM0MsQ0FUNkMsRUFhN0MsQ0FBQyxHQUFHalEsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DRyxVQUFuQyxFQUErQyxDQUMzQyxDQUFDLEdBQUdyOEMsS0FBSyxDQUFDKy9DLGVBQVYsRUFBMkIsQ0FBQyxHQUFHLy9DLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDeDBDLFFBQUwsQ0FBYzhhLFdBQWQsQ0FBMEJxbkQsV0FBckQsSUFBb0UsR0FBL0YsRUFBb0c7RUFBRTtFQUF0RyxDQUQyQyxFQUUzQyxDQUFDLEdBQUdwcUUsS0FBSyxDQUFDcTlDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUN2QyxTQUFPLFVBRGdDO0lBRXZDOXNDLElBQUksRUFBRTtFQUZpQyxDQUEzQyxDQUYyQyxDQUEvQyxDQWI2QyxDQUFqRCxDQUQ4RSxDQUFsRCxDQUFoQztBQXVCSDs7QUFDRG5RLGNBQUEsR0FBaUIrN0MsTUFBakI7Ozs7Ozs7Ozs7O0FDNUNhOzs7O0FBQ2JqOEMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTY3QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJRSxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFDYjd4QyxHQUFHLEVBQUUsQ0FEUTtFQUViLFNBQU87QUFGTSxDQUFqQjtBQUlBLElBQUk4eEMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSXVCLFdBQVcsR0FBRztFQUNkcnpDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSXN6QyxXQUFXLEdBQUc7RUFDZHR6QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUl1ekMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQ2QxekMsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJMnpDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFOXpDLEdBQUcsRUFBRTtBQUFQLENBQWxCO0FBQ0EsSUFBSSt6QyxXQUFXLEdBQUc7RUFBRS96QyxHQUFHLEVBQUU7QUFBUCxDQUFsQjtBQUNBLElBQUlnMEMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHLENBQUMsS0FBRCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUNkbjBDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSW8wQyxXQUFXLEdBQUcsQ0FBQyxJQUFELEVBQU8scUJBQVAsRUFBOEIsYUFBOUIsRUFBNkMsTUFBN0MsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUcsQ0FBQyxxQkFBRCxFQUF3QixhQUF4QixDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRyxDQUFDLHFCQUFELEVBQXdCLGFBQXhCLEVBQXVDLE1BQXZDLENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQ2R2MEMsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJdzBDLFdBQVcsR0FBRztFQUNkeDBDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTyxPQUZPO0VBR2R1cEMsSUFBSSxFQUFFO0FBSFEsQ0FBbEI7QUFLQSxJQUFJa0wsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQ2QxMEMsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJMjBDLFdBQVcsR0FBRztFQUNkLFNBQU8seUhBRE87RUFFZDM4QyxJQUFJLEVBQUU7QUFGUSxDQUFsQjtBQUlBLElBQUk0OEMsV0FBVyxHQUFHO0VBQ2Q1MEMsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJNjBDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUNkLFNBQU8seUhBRE87RUFFZDk4QyxJQUFJLEVBQUU7QUFGUSxDQUFsQjtBQUlBLElBQUkrOEMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSWlILFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlTLFdBQVcsR0FBRztFQUNkMThDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSTI4QyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFDZDU4QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUk2OEMsV0FBVyxHQUFHO0VBQ2Q3OEMsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJODhDLFdBQVcsR0FBRztFQUNkOThDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCOztBQUlBLFNBQVNteEMsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxJQUFJd04saUJBQWlCLEdBQUcsQ0FBQyxHQUFHdHFELEtBQUssQ0FBQ2c5QyxnQkFBVixFQUE0QixRQUE1QixDQUF4Qjs7RUFDQSxJQUFJcXRCLDRCQUE0QixHQUFHLENBQUMsR0FBR3JxRSxLQUFLLENBQUNnOUMsZ0JBQVYsRUFBNEIsbUJBQTVCLENBQW5DOztFQUNBLElBQUk0SixvQkFBb0IsR0FBRyxDQUFDLEdBQUc1bUQsS0FBSyxDQUFDZzlDLGdCQUFWLEVBQTRCLFdBQTVCLENBQTNCOztFQUNBLElBQUlELGtCQUFrQixHQUFHLENBQUMsR0FBRy84QyxLQUFLLENBQUNnOUMsZ0JBQVYsRUFBNEIsU0FBNUIsQ0FBekI7O0VBQ0EsSUFBSStOLHNCQUFzQixHQUFHLENBQUMsR0FBRy9xRCxLQUFLLENBQUNnOUMsZ0JBQVYsRUFBNEIsYUFBNUIsQ0FBN0I7O0VBQ0EsT0FBUSxDQUFDLEdBQUdoOUMsS0FBSyxDQUFDaTlDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHajlDLEtBQUssQ0FBQ2s5QyxrQkFBVixFQUE4QixTQUE5QixFQUF5Q3BCLFVBQXpDLEVBQXFELENBQ2hGVyxJQUFJLENBQUN2bEMsZUFBTixJQUNPLENBQUMsR0FBR2xYLEtBQUssQ0FBQ2k5QyxTQUFWLEtBQXdCLENBQUMsR0FBR2o5QyxLQUFLLENBQUMwOUMsV0FBVixFQUF1QjRNLGlCQUF2QixFQUEwQztJQUFFNS9DLEdBQUcsRUFBRTtFQUFQLENBQTFDLENBRC9CLElBRU0sQ0FBQyxHQUFHMUssS0FBSyxDQUFDczlDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBSDJFLEVBSWpGLENBQUMsR0FBR3Q5QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNILFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBRy83QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNGLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2g4QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NELFVBQXBDLEVBQWdELENBQUMsR0FBR2o4QyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3gwQyxRQUFMLENBQWNxd0MsYUFBZCxDQUE0Qmd5Qiw0QkFBdkQsQ0FBaEQsRUFBc0k7RUFBRTtFQUF4SSxDQUQ2QyxFQUU3QyxDQUFDLEdBQUd0cUUsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DLElBQW5DLEVBQXlDLENBQUMsR0FBR2w4QyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3gwQyxRQUFMLENBQWNxd0MsYUFBZCxDQUE0Qml5QiwrQkFBdkQsQ0FBekMsRUFBa0k7RUFBRTtFQUFwSSxDQUY2QyxDQUFqRCxDQUQ2QyxFQUs3QyxDQUFDLEdBQUd2cUUsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDQyxVQUFyQyxFQUFpRCxDQUM1Q00sSUFBSSxDQUFDdEUsU0FBTCxDQUFlLEdBQWYsQ0FBRCxJQUNPLENBQUMsR0FBR240QyxLQUFLLENBQUNpOUMsU0FBVixLQUF3QixDQUFDLEdBQUdqOUMsS0FBSyxDQUFDMDlDLFdBQVYsRUFBdUIyc0IsNEJBQXZCLEVBQXFEO0lBQzVFMy9ELEdBQUcsRUFBRSxDQUR1RTtJQUU1RW9nQyxLQUFLLEVBQUUyUixJQUFJLENBQUMzdUIsUUFBTCxDQUFjLE9BQWQ7RUFGcUUsQ0FBckQsRUFHeEIsSUFId0IsRUFHbEI7RUFBRTtFQUhnQixFQUdILENBQUMsT0FBRCxDQUhHLENBRC9CLEtBS08sQ0FBQyxHQUFHOXRCLEtBQUssQ0FBQ2k5QyxTQUFWLEtBQXdCLENBQUMsR0FBR2o5QyxLQUFLLENBQUNrOUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7SUFDNUR4eUMsR0FBRyxFQUFFLENBRHVEO0lBRTVELFNBQU8sbUJBRnFEO0lBRzVENjFDLE9BQU8sRUFBRTdELE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZLENBQUMsR0FBRzE4QyxLQUFLLENBQUN3Z0QsUUFBVixHQUNuQztJQUNBLFlBQVk7TUFDUixJQUFJK0QsSUFBSSxHQUFHLEVBQVg7O01BQ0EsS0FBSyxJQUFJbi9CLEVBQUUsR0FBRyxDQUFkLEVBQWlCQSxFQUFFLEdBQUdZLFNBQVMsQ0FBQzdmLE1BQWhDLEVBQXdDaWYsRUFBRSxFQUExQyxFQUE4QztRQUMxQ20vQixJQUFJLENBQUNuL0IsRUFBRCxDQUFKLEdBQVdZLFNBQVMsQ0FBQ1osRUFBRCxDQUFwQjtNQUNIOztNQUNELE9BQVFxM0IsSUFBSSxDQUFDL0IsWUFBTCxJQUFxQitCLElBQUksQ0FBQy9CLFlBQUwsQ0FBa0IzMUMsS0FBbEIsQ0FBd0IwM0MsSUFBeEIsRUFBOEI4SCxJQUE5QixDQUE3QjtJQUNILENBUmtDLEVBUWhDLENBQUMsT0FBRCxDQVJnQyxDQUExQjtFQUhtRCxDQUFyQyxFQVl4QixDQUNDLENBQUMsR0FBR3ZrRCxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUNFLFVBQXZDLEVBQW1ELENBQy9DLENBQUMsR0FBR3A4QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NHLFVBQXRDLEVBQWtELENBQUMsR0FBR3I4QyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3gwQyxRQUFMLENBQWM4YSxXQUFkLENBQTBCdGUsSUFBckQsSUFBNkQsR0FBN0QsR0FBbUUsQ0FBQyxHQUFHekUsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNqQyxjQUFMLEVBQTNCLENBQW5FLEdBQXVILEdBQXZILEdBQTZILENBQUMsR0FBR3g2QyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3gwQyxRQUFMLENBQWM4YSxXQUFkLENBQTBCeW5ELE1BQXJELENBQTdILEdBQTRMLElBQTlPLEVBQW9QO0VBQUU7RUFBdFAsQ0FEK0MsRUFFL0MsQ0FBQyxHQUFHeHFFLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ0ksVUFBcEMsRUFBZ0QsRUFDM0MsQ0FBQyxHQUFHdDhDLEtBQUssQ0FBQ2k5QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2o5QyxLQUFLLENBQUNrOUMsa0JBQVYsRUFBOEJsOUMsS0FBSyxDQUFDbTlDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR245QyxLQUFLLENBQUM0L0MsVUFBVixFQUFzQm5ELElBQUksQ0FBQ3BFLFlBQTNCLEVBQXlDLFVBQVUvTSxJQUFWLEVBQWdCNWdDLEdBQWhCLEVBQXFCd0UsQ0FBckIsRUFBd0I7SUFDOUksT0FBUSxDQUFDLEdBQUdsUCxLQUFLLENBQUNpOUMsU0FBVixLQUF3QixDQUFDLEdBQUdqOUMsS0FBSyxDQUFDazlDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DO01BQ2hFeHlDLEdBQUcsRUFBRXdFLENBRDJEO01BRWhFLFNBQU8sQ0FBQyxHQUFHbFAsS0FBSyxDQUFDMi9DLGNBQVYsRUFBMEI7UUFDN0IsZ0NBQWdDbEQsSUFBSSxDQUFDdEUsU0FBTCxDQUFlenRDLEdBQWYsQ0FESDtRQUU3QixlQUFlLENBQUMreEMsSUFBSSxDQUFDdEUsU0FBTCxDQUFlenRDLEdBQWY7TUFGYSxDQUExQjtJQUZ5RCxDQUFwQyxFQU03QixDQUNFK3hDLElBQUksQ0FBQ3RFLFNBQUwsQ0FBZXp0QyxHQUFmLENBQUQsSUFDTyxDQUFDLEdBQUcxSyxLQUFLLENBQUNpOUMsU0FBVixLQUF3QixDQUFDLEdBQUdqOUMsS0FBSyxDQUFDazlDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDWCxVQUF0QyxDQUQvQixJQUVNLENBQUMsR0FBR3Y4QyxLQUFLLENBQUNzOUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FIUCxFQUlDLENBQUMsR0FBR3Q5QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNNLFdBQXJDLEVBQWtELENBQzdDLENBQUNsUixJQUFJLENBQUMsYUFBRCxDQUFOLElBQ08sQ0FBQyxHQUFHdHJDLEtBQUssQ0FBQ2k5QyxTQUFWLEtBQXdCLENBQUMsR0FBR2o5QyxLQUFLLENBQUNrOUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NhLFdBQXRDLEVBQW1ELENBQUMsR0FBRy85QyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQnZ1QyxDQUFDLEdBQUcsQ0FBL0IsQ0FBbkQsRUFBc0Y7SUFBRTtJQUF4RixDQUQvQixJQUVNLENBQUMsR0FBR2xQLEtBQUssQ0FBQ3M5QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQUh3QyxFQUk5QyxDQUFDLEdBQUd0OUMsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDO01BQ2xDLFNBQU8sQ0FBQyxHQUFHbDhDLEtBQUssQ0FBQzIvQyxjQUFWLEVBQTBCLENBQUMsV0FBRCxFQUFjO1FBQ3ZDLGFBQWFsRCxJQUFJLENBQUN0RSxTQUFMLENBQWV6dEMsR0FBZixDQUQwQjtRQUV2QyxrQkFBa0IsQ0FBQyt4QyxJQUFJLENBQUN0RSxTQUFMLENBQWV6dEMsR0FBZixDQUFELElBQXdCNGdDLElBQUksQ0FBQ2tOLFdBRlI7UUFHdkMsYUFBYSxDQUFDaUUsSUFBSSxDQUFDdEUsU0FBTCxDQUFlenRDLEdBQWYsQ0FBRCxJQUF3QixDQUFDNGdDLElBQUksQ0FBQ2tOO01BSEosQ0FBZCxDQUExQjtJQUQyQixDQUF0QyxFQU1HLENBQUMsR0FBR3g0QyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQm5TLElBQUksQ0FBQyxPQUFELENBQS9CLENBTkgsRUFNOEM7SUFBRTtJQU5oRCxDQUo4QyxDQUFsRCxDQUpELEVBZ0JFbVIsSUFBSSxDQUFDdEUsU0FBTCxDQUFlenRDLEdBQWYsQ0FBRCxJQUNPLENBQUMsR0FBRzFLLEtBQUssQ0FBQ2k5QyxTQUFWLEtBQXdCLENBQUMsR0FBR2o5QyxLQUFLLENBQUNrOUMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUNjLFdBQW5DLEVBQWdELENBQUMsR0FBR2grQyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQm5TLElBQUksQ0FBQyxhQUFELENBQS9CLENBQWhELEVBQWlHO0lBQUU7SUFBbkcsQ0FEL0IsSUFFTSxDQUFDLEdBQUd0ckMsS0FBSyxDQUFDczlDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBbEJQLENBTjZCLEVBeUI3QjtJQUFFO0lBekIyQixDQUFoQztFQTBCSCxDQTNCZ0YsQ0FBcEQsRUEyQnpCO0VBQUk7RUEzQnFCLENBRGUsRUFBaEQsQ0FGK0MsQ0FBbkQsQ0FERCxFQWtDQyxDQUFDLEdBQUd0OUMsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDK0IsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHaitDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ2dDLFdBQXJDLEVBQWtELENBQzdDekIsSUFBSSxDQUFDcEUsWUFBTCxDQUFrQm9FLElBQUksQ0FBQ2pDLGNBQUwsRUFBbEIsRUFBeUMsWUFBekMsQ0FBRCxJQUNPLENBQUMsR0FBR3g2QyxLQUFLLENBQUNpOUMsU0FBVixLQUF3QixDQUFDLEdBQUdqOUMsS0FBSyxDQUFDMDlDLFdBQVYsRUFBdUJrSixvQkFBdkIsRUFBNkM7SUFDcEVsOEMsR0FBRyxFQUFFLENBRCtEO0lBRXBFLGNBQWMreEMsSUFBSSxDQUFDcEUsWUFBTCxDQUFrQm9FLElBQUksQ0FBQ2pDLGNBQUwsRUFBbEIsRUFBeUMsWUFBekMsQ0FGc0Q7SUFHcEVseUMsSUFBSSxFQUFFbTBDLElBQUksQ0FBQ3BFLFlBQUwsQ0FBa0JvRSxJQUFJLENBQUNqQyxjQUFMLEVBQWxCLEVBQXlDdmlDLEtBSHFCO0lBSXBFSSxRQUFRLEVBQUU7RUFKMEQsQ0FBN0MsRUFLeEIsSUFMd0IsRUFLbEI7RUFBRTtFQUxnQixFQUtILENBQUMsWUFBRCxFQUFlLE1BQWYsQ0FMRyxDQUQvQixJQU9NLENBQUMsR0FBR3JZLEtBQUssQ0FBQ3M5QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQVJ3QyxFQVM5QyxDQUFDLEdBQUd0OUMsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDaUMsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHbitDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDcEUsWUFBTCxDQUFrQm9FLElBQUksQ0FBQ2pDLGNBQUwsRUFBbEIsRUFBeUN2aUMsS0FBcEUsQ0FBbkQsRUFBK0g7RUFBRTtFQUFqSSxDQVQ4QyxDQUFsRCxDQUQ4QyxFQVk3Q3JZLE1BQU0sQ0FBQ3VQLElBQVAsQ0FBWXN0QyxJQUFJLENBQUNqRixTQUFqQixFQUE0QnJ4QyxNQUE1QixHQUFxQyxDQUF0QyxJQUNPLENBQUMsR0FBR25HLEtBQUssQ0FBQ2k5QyxTQUFWLEtBQXdCLENBQUMsR0FBR2o5QyxLQUFLLENBQUNrOUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNrQixXQUFyQyxFQUFrRCxDQUN6RSxDQUFDLEdBQUdwK0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DbUMsV0FBbkMsRUFBZ0QsQ0FDNUMsQ0FBQyxHQUFHcitDLEtBQUssQ0FBQ3E5QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkMsU0FBTyxjQURnQztJQUV2QzlzQyxJQUFJLEVBQUU7RUFGaUMsQ0FBM0MsQ0FENEMsRUFLNUMsQ0FBQyxHQUFHalEsS0FBSyxDQUFDKy9DLGVBQVYsRUFBMkIsTUFBTSxDQUFDLEdBQUcvL0MsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJoQixJQUFJLENBQUN4MEMsUUFBTCxDQUFjVyxXQUFkLENBQTBCb0YsS0FBMUIsV0FBM0IsQ0FBTixHQUE0RSxJQUF2RyxFQUE2RztFQUFFO0VBQS9HLENBTDRDLENBQWhELENBRHlFLEVBUXpFLENBQUMsR0FBR2hPLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ29DLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR3QrQyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NxQyxXQUFwQyxFQUFpRCxFQUM1QyxDQUFDLEdBQUd2K0MsS0FBSyxDQUFDaTlDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHajlDLEtBQUssQ0FBQ2s5QyxrQkFBVixFQUE4Qmw5QyxLQUFLLENBQUNtOUMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHbjlDLEtBQUssQ0FBQzQvQyxVQUFWLEVBQXNCbkQsSUFBSSxDQUFDakYsU0FBM0IsRUFBc0MsVUFBVXhwQyxLQUFWLEVBQWlCeThELFNBQWpCLEVBQTRCO0lBQy9JLE9BQVEsQ0FBQyxHQUFHenFFLEtBQUssQ0FBQ2k5QyxTQUFWLEtBQXdCLENBQUMsR0FBR2o5QyxLQUFLLENBQUNrOUMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0M7TUFBRXh5QyxHQUFHLEVBQUUrL0Q7SUFBUCxDQUFwQyxFQUF3RCxDQUNuRixRQUFPejhELEtBQVAsTUFBaUIsUUFBbEIsSUFDTyxDQUFDLEdBQUdoTyxLQUFLLENBQUNpOUMsU0FBVixLQUF3QixDQUFDLEdBQUdqOUMsS0FBSyxDQUFDazlDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDc0IsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHeCtDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCenZDLEtBQUssQ0FBQyxDQUFELENBQWhDLENBQW5ELEVBQXlGO0lBQUU7SUFBM0YsQ0FEL0IsS0FFTyxDQUFDLEdBQUdoTyxLQUFLLENBQUNpOUMsU0FBVixLQUF3QixDQUFDLEdBQUdqOUMsS0FBSyxDQUFDazlDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDdUIsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHeitDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCenZDLEtBQTNCLENBQW5ELEVBQXNGO0lBQUU7SUFBeEYsQ0FGL0IsQ0FEb0YsQ0FBeEQsQ0FBaEM7RUFLSCxDQU5nRixDQUFwRCxFQU16QjtFQUFJO0VBTnFCLENBRGdCLEVBQWpELENBRDhDLENBQWxELENBUnlFLENBQWxELENBRC9CLElBcUJNLENBQUMsR0FBR2hPLEtBQUssQ0FBQ3M5QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQWpDd0MsRUFrQzlDLENBQUMsR0FBR3Q5QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUN3QyxXQUFyQyxFQUFrRCxFQUM3QyxDQUFDLEdBQUcxK0MsS0FBSyxDQUFDaTlDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHajlDLEtBQUssQ0FBQ2s5QyxrQkFBVixFQUE4Qmw5QyxLQUFLLENBQUNtOUMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHbjlDLEtBQUssQ0FBQzQvQyxVQUFWLEVBQXNCbkQsSUFBSSxDQUFDcEUsWUFBTCxDQUFrQm9FLElBQUksQ0FBQ2pDLGNBQUwsRUFBbEIsRUFBeUMsUUFBekMsQ0FBdEIsRUFBMEUsVUFBVXJHLEtBQVYsRUFBaUJoaUMsS0FBakIsRUFBd0J6SCxHQUF4QixFQUE2QjtJQUNwTCxPQUFRLENBQUMsR0FBRzFLLEtBQUssQ0FBQ2k5QyxTQUFWLEtBQXdCLENBQUMsR0FBR2o5QyxLQUFLLENBQUNrOUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7TUFDakV4eUMsR0FBRyxFQUFFQSxHQUQ0RDtNQUVqRSxTQUFPLENBQUMsR0FBRzFLLEtBQUssQ0FBQzIvQyxjQUFWLEVBQTBCeEwsS0FBSyxTQUEvQjtJQUYwRCxDQUFyQyxFQUc3QixDQUNDLENBQUMsR0FBR24wQyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUN5QyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUczK0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDO01BQ25DLE9BQUsvSCxLQUFLLENBQUM5ekIsRUFEd0I7TUFFbkMsU0FBTztJQUY0QixDQUF2QyxFQUdHLENBQ0MsQ0FBQyxHQUFHcmdCLEtBQUssQ0FBQysvQyxlQUFWLEVBQTJCLENBQUMsR0FBRy8vQyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQnRKLEtBQUssQ0FBQyxPQUFELENBQWhDLElBQTZDLEdBQXhFLEVBQTZFO0lBQUU7SUFBL0UsQ0FERCxFQUVFQSxLQUFLLENBQUN2dEMsUUFBUCxJQUNPLENBQUMsR0FBRzVHLEtBQUssQ0FBQ2k5QyxTQUFWLEtBQXdCLENBQUMsR0FBR2o5QyxLQUFLLENBQUNrOUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MyQixXQUF0QyxFQUFtRCxJQUFuRCxDQUQvQixJQUVNLENBQUMsR0FBRzcrQyxLQUFLLENBQUNzOUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FKUCxDQUhILEVBUUc7SUFBRTtJQVJMLEVBUWtCc0IsV0FSbEIsQ0FEOEMsRUFVN0N6SyxLQUFLLENBQUNzRSxVQUFOLEtBQXFCLEVBQXRCLElBQ08sQ0FBQyxHQUFHejRDLEtBQUssQ0FBQ2k5QyxTQUFWLEtBQXdCLENBQUMsR0FBR2o5QyxLQUFLLENBQUMwOUMsV0FBVixFQUF1QmtKLG9CQUF2QixFQUE2QztNQUNwRWw4QyxHQUFHLEVBQUUsQ0FEK0Q7TUFFcEUsY0FBY3lwQyxLQUFLLENBQUNzRSxVQUZnRDtNQUdwRW53QyxJQUFJLEVBQUU2ckMsS0FBSyxDQUFDanZDO0lBSHdELENBQTdDLEVBSXhCLElBSndCLEVBSWxCO0lBQUU7SUFKZ0IsRUFJSCxDQUFDLFlBQUQsRUFBZSxNQUFmLENBSkcsQ0FEL0IsSUFNTSxDQUFDLEdBQUdsRixLQUFLLENBQUNzOUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FoQndDLENBQWxELENBREQsRUFtQkViLElBQUksQ0FBQ3pFLFdBQUwsQ0FBaUI3RCxLQUFLLENBQUN4dEMsSUFBdkIsRUFBNkJ3dEMsS0FBSyxDQUFDN3JDLElBQW5DLENBQUQsR0FDTSxDQUFDLEdBQUd0SSxLQUFLLENBQUNxZ0QsY0FBVixHQUEyQixDQUFDLEdBQUdyZ0QsS0FBSyxDQUFDaTlDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHajlDLEtBQUssQ0FBQ2s5QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QztNQUN4Rnh5QyxHQUFHLEVBQUUsQ0FEbUY7TUFFeEYyVixFQUFFLEVBQUU4ekIsS0FBSyxDQUFDOXpCLEVBRjhFO01BR3hGLHVCQUF1Qiw0QkFBVW05QixNQUFWLEVBQWtCO1FBQUUsT0FBU2YsSUFBSSxDQUFDM3VCLFFBQUwsQ0FBY3FtQixLQUFLLENBQUM3ckMsSUFBcEIsQ0FBRCxHQUE4QmsxQyxNQUF0QztNQUFnRCxDQUhIO01BSXhGLFNBQU8sQ0FBQyxHQUFHeDlDLEtBQUssQ0FBQzIvQyxjQUFWLEVBQTBCO1FBQzdCLDJCQUEyQmxELElBQUksQ0FBQzdsQyxTQUFMLENBQWV1OUIsS0FBSyxDQUFDN3JDLElBQXJCLENBREU7UUFFN0JvaUUsV0FBVyxFQUFFLENBQUNqdUIsSUFBSSxDQUFDN2xDLFNBQUwsQ0FBZXU5QixLQUFLLENBQUM3ckMsSUFBckI7TUFGZSxDQUExQixDQUppRjtNQVF4RnF3QyxXQUFXLEVBQUV4RSxLQUFLLENBQUN3RSxXQVJxRTtNQVN4Rmh5QyxJQUFJLEVBQUV3dEMsS0FBSyxDQUFDeHRDO0lBVDRFLENBQXZDLEVBVWxELElBVmtELEVBVTVDO0lBQUc7SUFWeUMsRUFVckJtNEMsV0FWcUIsQ0FBbkQsR0FVNkMsQ0FDM0MsQ0FBQzkrQyxLQUFLLENBQUMycEUsYUFBUCxFQUFzQmx0QixJQUFJLENBQUMzdUIsUUFBTCxDQUFjcW1CLEtBQUssQ0FBQzdyQyxJQUFwQixDQUF0QixDQUQyQyxDQVY3QyxDQUROLEdBY00sQ0FBQyxHQUFHdEksS0FBSyxDQUFDczlDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBakNQLEVBa0NFbkosS0FBSyxDQUFDeHRDLElBQU4sS0FBZSxVQUFoQixHQUNNLENBQUMsR0FBRzNHLEtBQUssQ0FBQ3FnRCxjQUFWLEdBQTJCLENBQUMsR0FBR3JnRCxLQUFLLENBQUNpOUMsU0FBVixLQUF3QixDQUFDLEdBQUdqOUMsS0FBSyxDQUFDazlDLGtCQUFWLEVBQThCLFVBQTlCLEVBQTBDO01BQzNGeHlDLEdBQUcsRUFBRSxDQURzRjtNQUUzRis0RCxPQUFPLEVBQUUsSUFGa0Y7TUFHM0Z6aUUsR0FBRyxFQUFFLFVBSHNGO01BSTNGLHVCQUF1Qiw0QkFBVXc4QyxNQUFWLEVBQWtCO1FBQUUsT0FBU2YsSUFBSSxDQUFDM3VCLFFBQUwsQ0FBY3FtQixLQUFLLENBQUM3ckMsSUFBcEIsQ0FBRCxHQUE4QmsxQyxNQUF0QztNQUFnRCxDQUpBO01BSzNGN0UsV0FBVyxFQUFFeEUsS0FBSyxDQUFDd0UsV0FMd0U7TUFNM0YsU0FBTyxDQUFDLEdBQUczNEMsS0FBSyxDQUFDMi9DLGNBQVYsRUFBMEI7UUFDN0IsNEJBQTRCbEQsSUFBSSxDQUFDN2xDLFNBQUwsQ0FBZXU5QixLQUFLLENBQUM3ckMsSUFBckIsQ0FEQztRQUU3QixnQkFBZ0IsQ0FBQ20wQyxJQUFJLENBQUM3bEMsU0FBTCxDQUFldTlCLEtBQUssQ0FBQzdyQyxJQUFyQjtNQUZZLENBQTFCLENBTm9GO01BVTNGcWlFLE9BQU8sRUFBRWp1QixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO1FBQUUsT0FBUWYsSUFBSSxDQUFDaEYsTUFBTCxDQUFZK0YsTUFBWixDQUFSO01BQStCLENBQTdFLENBVmtGO01BVzNGK0MsT0FBTyxFQUFFLENBQ0w3RCxNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO1FBQUUsT0FBUWYsSUFBSSxDQUFDaEYsTUFBTCxDQUFZK0YsTUFBWixDQUFSO01BQStCLENBQTdFLENBREssRUFFTGQsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVksQ0FBQyxHQUFHMThDLEtBQUssQ0FBQ3dnRCxRQUFWLEVBQW9CLENBQUMsR0FBR3hnRCxLQUFLLENBQUM0cUUsYUFBVixFQUF5QixZQUFZLENBQUcsQ0FBeEMsRUFBMEMsQ0FBQyxNQUFELENBQTFDLENBQXBCLEVBQXlFLENBQUMsT0FBRCxDQUF6RSxDQUExQixDQUZLO0lBWGtGLENBQTFDLEVBZWxELElBZmtELEVBZTVDO0lBQUc7SUFmeUMsRUFlTDdyQixXQWZLLENBQW5ELEdBZTZELENBQzNELENBQUMvK0MsS0FBSyxDQUFDeWdELFVBQVAsRUFBbUJoRSxJQUFJLENBQUMzdUIsUUFBTCxDQUFjcW1CLEtBQUssQ0FBQzdyQyxJQUFwQixDQUFuQixDQUQyRCxDQWY3RCxDQUROLEdBbUJNLENBQUMsR0FBR3RJLEtBQUssQ0FBQ3M5QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQXJEUCxFQXNERW5KLEtBQUssQ0FBQzdyQyxJQUFOLEtBQWUsWUFBaEIsR0FDTSxDQUFDLEdBQUd0SSxLQUFLLENBQUNxZ0QsY0FBVixHQUEyQixDQUFDLEdBQUdyZ0QsS0FBSyxDQUFDaTlDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHajlDLEtBQUssQ0FBQ2s5QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QztNQUN4Rnh5QyxHQUFHLEVBQUUsQ0FEbUY7TUFFeEYsdUJBQXVCLDRCQUFVOHlDLE1BQVYsRUFBa0I7UUFBRSxPQUFTZixJQUFJLENBQUMzdUIsUUFBTCxDQUFjcW1CLEtBQUssQ0FBQzdyQyxJQUFwQixDQUFELEdBQThCazFDLE1BQXRDO01BQWdELENBRkg7TUFHeEYsU0FBTyxDQUFDLEdBQUd4OUMsS0FBSyxDQUFDMi9DLGNBQVYsRUFBMEI7UUFDN0IsMkJBQTJCbEQsSUFBSSxDQUFDN2xDLFNBQUwsQ0FBZXU5QixLQUFLLENBQUM3ckMsSUFBckIsQ0FERTtRQUU3Qm9pRSxXQUFXLEVBQUUsQ0FBQ2p1QixJQUFJLENBQUM3bEMsU0FBTCxDQUFldTlCLEtBQUssQ0FBQzdyQyxJQUFyQjtNQUZlLENBQTFCLENBSGlGO01BT3hGcXdDLFdBQVcsRUFBRXhFLEtBQUssQ0FBQ3dFLFdBUHFFO01BUXhGaHlDLElBQUksRUFBRXd0QyxLQUFLLENBQUN4dEMsSUFSNEU7TUFTeEY0NkMsUUFBUSxFQUFFO0lBVDhFLENBQXZDLEVBVWxELElBVmtELEVBVTVDO0lBQUc7SUFWeUMsRUFVckJ2QyxXQVZxQixDQUFuRCxHQVU2QyxDQUMzQyxDQUFDaC9DLEtBQUssQ0FBQzJwRSxhQUFQLEVBQXNCbHRCLElBQUksQ0FBQzN1QixRQUFMLENBQWNxbUIsS0FBSyxDQUFDN3JDLElBQXBCLENBQXRCLENBRDJDLENBVjdDLENBRE4sR0FjTSxDQUFDLEdBQUd0SSxLQUFLLENBQUNzOUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FwRVAsRUFxRUVuSixLQUFLLENBQUN4dEMsSUFBTixLQUFlLFFBQWhCLElBQ08sQ0FBQyxHQUFHM0csS0FBSyxDQUFDaTlDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHajlDLEtBQUssQ0FBQzA5QyxXQUFWLEVBQXVCcU4sc0JBQXZCLEVBQStDO01BQ3RFcmdELEdBQUcsRUFBRSxDQURpRTtNQUV0RWczQyxVQUFVLEVBQUVqRixJQUFJLENBQUMzdUIsUUFBTCxDQUFjcW1CLEtBQUssQ0FBQzdyQyxJQUFwQixDQUYwRDtNQUd0RSx1QkFBdUIsNEJBQVVrMUMsTUFBVixFQUFrQjtRQUFFLE9BQVNmLElBQUksQ0FBQzN1QixRQUFMLENBQWNxbUIsS0FBSyxDQUFDN3JDLElBQXBCLENBQUQsR0FBOEJrMUMsTUFBdEM7TUFBZ0QsQ0FIckI7TUFJdEUsU0FBTyxDQUFDLEdBQUd4OUMsS0FBSyxDQUFDMi9DLGNBQVYsRUFBMEI7UUFDN0IsMkJBQTJCbEQsSUFBSSxDQUFDN2xDLFNBQUwsQ0FBZXU5QixLQUFLLENBQUM3ckMsSUFBckIsQ0FERTtRQUU3QnVpRSxXQUFXLEVBQUUsQ0FBQ3B1QixJQUFJLENBQUM3bEMsU0FBTCxDQUFldTlCLEtBQUssQ0FBQzdyQyxJQUFyQjtNQUZlLENBQTFCLENBSitEO01BUXRFNDJCLE9BQU8sRUFBRWlWLEtBQUssQ0FBQ2pWLE9BUnVEO01BU3RFeVosV0FBVyxFQUFFeEUsS0FBSyxDQUFDd0UsV0FUbUQ7TUFVdEVzTyxVQUFVLEVBQUU7SUFWMEQsQ0FBL0MsRUFXeEIsSUFYd0IsRUFXbEI7SUFBRTtJQVhnQixFQVdILENBQUMsWUFBRCxFQUFlLHFCQUFmLEVBQXNDLE9BQXRDLEVBQStDLFNBQS9DLEVBQTBELGFBQTFELENBWEcsQ0FEL0IsSUFhTSxDQUFDLEdBQUdqbkQsS0FBSyxDQUFDczlDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBbEZQLEVBbUZFbkosS0FBSyxDQUFDeUUsU0FBTixJQUFtQjZELElBQUksQ0FBQzdsQyxTQUFMLENBQWV1OUIsS0FBSyxDQUFDN3JDLElBQXJCLE1BQStCLEVBQW5ELElBQ08sQ0FBQyxHQUFHdEksS0FBSyxDQUFDaTlDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHajlDLEtBQUssQ0FBQ2s5QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQytCLFdBQXRDLEVBQW1ELENBQUMsR0FBR2ovQyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQnRKLEtBQUssQ0FBQ3lFLFNBQWpDLENBQW5ELEVBQWdHO0lBQUU7SUFBbEcsQ0FEL0IsSUFFTSxDQUFDLEdBQUc1NEMsS0FBSyxDQUFDczlDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBckZQLEVBc0ZFYixJQUFJLENBQUM3bEMsU0FBTCxDQUFldTlCLEtBQUssQ0FBQzdyQyxJQUFyQixNQUErQixFQUFoQyxJQUNPLENBQUMsR0FBR3RJLEtBQUssQ0FBQ2k5QyxTQUFWLEtBQXdCLENBQUMsR0FBR2o5QyxLQUFLLENBQUNrOUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NnQyxXQUF0QyxFQUFtRCxDQUFDLEdBQUdsL0MsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJoQixJQUFJLENBQUM3bEMsU0FBTCxDQUFldTlCLEtBQUssQ0FBQzdyQyxJQUFyQixDQUEzQixDQUFuRCxFQUEyRztJQUFFO0lBQTdHLENBRC9CLElBRU0sQ0FBQyxHQUFHdEksS0FBSyxDQUFDczlDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBeEZQLENBSDZCLEVBNEY3QjtJQUFFO0lBNUYyQixDQUFoQztFQTZGSCxDQTlGZ0YsQ0FBcEQsRUE4RnpCO0VBQUk7RUE5RnFCLENBRGlCLEVBQWxELENBbEM4QyxDQUFsRCxDQWxDRCxFQXNLQyxDQUFDLEdBQUd0OUMsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDaUQsV0FBckMsRUFBa0QsQ0FDN0MsQ0FBQzFDLElBQUksQ0FBQ3RFLFNBQUwsQ0FBZSxDQUFmLENBQUYsSUFDTyxDQUFDLEdBQUduNEMsS0FBSyxDQUFDaTlDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHajlDLEtBQUssQ0FBQ2s5QyxrQkFBVixFQUE4QixRQUE5QixFQUF3QztJQUMvRHh5QyxHQUFHLEVBQUUsQ0FEMEQ7SUFFL0QsU0FBTyxVQUZ3RDtJQUcvRDB5QyxPQUFPLEVBQUVWLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZLFVBQVVjLE1BQVYsRUFBa0I7TUFBRSxPQUFRZixJQUFJLENBQUM5QixnQkFBTCxFQUFSO0lBQW1DLENBQWpGO0VBSHNELENBQXhDLEVBSXhCLENBQ0MsQ0FBQyxHQUFHMzZDLEtBQUssQ0FBQ3E5QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkMsU0FBTyxxQkFEZ0M7SUFFdkM5c0MsSUFBSSxFQUFFO0VBRmlDLENBQTNDLENBREQsRUFLQyxDQUFDLEdBQUdqUSxLQUFLLENBQUMrL0MsZUFBVixFQUEyQixNQUFNLENBQUMsR0FBRy8vQyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3gwQyxRQUFMLENBQWM4YSxXQUFkLENBQTBCcWlDLE9BQXJELENBQWpDLEVBQWdHO0VBQUU7RUFBbEcsQ0FMRCxDQUp3QixDQUQvQixJQVlNLENBQUMsR0FBR3BsRCxLQUFLLENBQUNzOUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0Fid0MsRUFjN0NiLElBQUksQ0FBQ3RFLFNBQUwsQ0FBZSxDQUFmLENBQUQsSUFDTyxDQUFDLEdBQUduNEMsS0FBSyxDQUFDaTlDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHajlDLEtBQUssQ0FBQ2s5QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2tDLFdBQXRDLEVBQW1ELENBQzFFLENBQUMsR0FBR3AvQyxLQUFLLENBQUMrL0MsZUFBVixFQUEyQixDQUFDLEdBQUcvL0MsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJoQixJQUFJLENBQUN4MEMsUUFBTCxDQUFjVyxXQUFkLENBQTBCa2lFLG9CQUFyRCxJQUE2RSxHQUF4RyxFQUE2RztFQUFFO0VBQS9HLENBRDBFLEVBRTFFLENBQUMsR0FBRzlxRSxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUNtRCxXQUFuQyxFQUFnRCxDQUFDLEdBQUdyL0MsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJoQixJQUFJLENBQUN4MEMsUUFBTCxDQUFjOGEsV0FBZCxDQUEwQmdvRCxPQUFyRCxJQUFnRSxHQUFoSCxFQUFxSDtFQUFFO0VBQXZILENBRjBFLENBQW5ELENBRC9CLElBS00sQ0FBQyxHQUFHL3FFLEtBQUssQ0FBQ3M5QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQW5Cd0MsRUFvQjdDLENBQUNiLElBQUksQ0FBQ3RFLFNBQUwsQ0FBZSxDQUFmLENBQUYsSUFDTyxDQUFDLEdBQUduNEMsS0FBSyxDQUFDaTlDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHajlDLEtBQUssQ0FBQ2s5QyxrQkFBVixFQUE4QixRQUE5QixFQUF3QztJQUMvRHh5QyxHQUFHLEVBQUUsQ0FEMEQ7SUFFL0QsU0FBTyxjQUZ3RDtJQUcvRDB5QyxPQUFPLEVBQUVWLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZLFVBQVVjLE1BQVYsRUFBa0I7TUFBRSxPQUFRZixJQUFJLENBQUMvQixZQUFMLEVBQVI7SUFBK0IsQ0FBN0U7RUFIc0QsQ0FBeEMsRUFJeEIsQ0FDQyxDQUFDLEdBQUcxNkMsS0FBSyxDQUFDKy9DLGVBQVYsRUFBMkIsQ0FBQyxHQUFHLy9DLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDeDBDLFFBQUwsQ0FBYzhhLFdBQWQsQ0FBMEJpb0QsU0FBckQsSUFBa0UsR0FBN0YsRUFBa0c7RUFBRTtFQUFwRyxDQURELEVBRUMsQ0FBQyxHQUFHaHJFLEtBQUssQ0FBQ3E5QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkMsU0FBTyxVQURnQztJQUV2QzlzQyxJQUFJLEVBQUU7RUFGaUMsQ0FBM0MsQ0FGRCxDQUp3QixDQUQvQixJQVlNLENBQUMsR0FBR2pRLEtBQUssQ0FBQ3M5QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQWhDd0MsQ0FBbEQsQ0F0S0QsRUF3TUViLElBQUksQ0FBQ3RFLFNBQUwsQ0FBZSxDQUFmLENBQUQsSUFDTyxDQUFDLEdBQUduNEMsS0FBSyxDQUFDaTlDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHajlDLEtBQUssQ0FBQ2s5QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ29DLFdBQXJDLEVBQWtELENBQ3pFLENBQUMsR0FBR3QvQyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NxRCxXQUF0QyxFQUFtRCxDQUMvQyxDQUFDLEdBQUd2L0MsS0FBSyxDQUFDKy9DLGVBQVYsRUFBMkIsQ0FBQyxHQUFHLy9DLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDeDBDLFFBQUwsQ0FBY1csV0FBZCxDQUEwQmtpRSxvQkFBckQsSUFBNkUsR0FBeEcsRUFBNkc7RUFBRTtFQUEvRyxDQUQrQyxFQUUvQyxDQUFDLEdBQUc5cUUsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1Dc0QsV0FBbkMsRUFBZ0QsQ0FBQyxHQUFHeC9DLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDeDBDLFFBQUwsQ0FBYzhhLFdBQWQsQ0FBMEJnb0QsT0FBckQsSUFBZ0UsR0FBaEgsRUFBcUg7RUFBRTtFQUF2SCxDQUYrQyxDQUFuRCxDQUR5RSxDQUFsRCxDQUQvQixJQU9NLENBQUMsR0FBRy9xRSxLQUFLLENBQUNzOUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0EvTVAsQ0Fad0IsRUE0TnhCO0VBQUc7RUE1TnFCLENBTC9CLENBRDZDLEVBbU83QyxDQUFDLEdBQUd0OUMsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDdUQsV0FBdkMsRUFBb0QsQ0FDaEQsQ0FBQyxHQUFHei9DLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ3dELFdBQXRDLEVBQW1ELFVBQVUsQ0FBQyxHQUFHMS9DLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDakMsY0FBTCxFQUEzQixDQUFWLEdBQThELFdBQWpILEVBQThIO0VBQUU7RUFBaEksQ0FEZ0QsRUFFaEQsQ0FBQyxHQUFHeDZDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ3lLLFdBQXBDLEVBQWlELEVBQzVDLENBQUMsR0FBRzNtRCxLQUFLLENBQUNpOUMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdqOUMsS0FBSyxDQUFDazlDLGtCQUFWLEVBQThCbDlDLEtBQUssQ0FBQ205QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUduOUMsS0FBSyxDQUFDNC9DLFVBQVYsRUFBc0JuRCxJQUFJLENBQUNwRSxZQUEzQixFQUF5QyxVQUFVL00sSUFBVixFQUFnQjVnQyxHQUFoQixFQUFxQndFLENBQXJCLEVBQXdCO0lBQzlJLE9BQVEsQ0FBQyxHQUFHbFAsS0FBSyxDQUFDaTlDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHajlDLEtBQUssQ0FBQ2s5QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQztNQUNoRXh5QyxHQUFHLEVBQUV3RSxDQUQyRDtNQUVoRSxTQUFPLENBQUMsR0FBR2xQLEtBQUssQ0FBQzIvQyxjQUFWLEVBQTBCO1FBQzdCLGdDQUFnQ2xELElBQUksQ0FBQ3RFLFNBQUwsQ0FBZXp0QyxHQUFmLENBREg7UUFFN0IsMEJBQTBCLENBQUMreEMsSUFBSSxDQUFDdEUsU0FBTCxDQUFlenRDLEdBQWY7TUFGRSxDQUExQjtJQUZ5RCxDQUFwQyxFQU03QixDQUNFK3hDLElBQUksQ0FBQ3RFLFNBQUwsQ0FBZXp0QyxHQUFmLENBQUQsSUFDTyxDQUFDLEdBQUcxSyxLQUFLLENBQUNpOUMsU0FBVixLQUF3QixDQUFDLEdBQUdqOUMsS0FBSyxDQUFDazlDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDa0ssV0FBdEMsQ0FEL0IsSUFFTSxDQUFDLEdBQUdwbkQsS0FBSyxDQUFDczlDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBSFAsRUFJQyxDQUFDLEdBQUd0OUMsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDbUwsV0FBckMsRUFBa0QsQ0FDN0MsQ0FBQy9iLElBQUksQ0FBQyxhQUFELENBQU4sSUFDTyxDQUFDLEdBQUd0ckMsS0FBSyxDQUFDaTlDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHajlDLEtBQUssQ0FBQ2s5QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ29LLFdBQXRDLEVBQW1ELENBQUMsR0FBR3RuRCxLQUFLLENBQUN5OUMsZUFBVixFQUEyQnZ1QyxDQUFDLEdBQUcsQ0FBL0IsQ0FBbkQsRUFBc0Y7SUFBRTtJQUF4RixDQUQvQixJQUVNLENBQUMsR0FBR2xQLEtBQUssQ0FBQ3M5QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQUh3QyxFQUk3Q2hTLElBQUksQ0FBQyxhQUFELENBQUwsSUFDTyxDQUFDLEdBQUd0ckMsS0FBSyxDQUFDaTlDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHajlDLEtBQUssQ0FBQ2s5QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ3FLLFdBQXRDLEVBQW1ELENBQzFFLENBQUMsR0FBR3ZuRCxLQUFLLENBQUNxOUMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO01BQ3ZDLFNBQU8sU0FEZ0M7TUFFdkM5c0MsSUFBSSxFQUFFO0lBRmlDLENBQTNDLENBRDBFLENBQW5ELENBRC9CLElBT00sQ0FBQyxHQUFHalEsS0FBSyxDQUFDczlDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBWHdDLEVBWTlDLENBQUMsR0FBR3Q5QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0M7TUFDbEMsU0FBTyxDQUFDLEdBQUdsOEMsS0FBSyxDQUFDMi9DLGNBQVYsRUFBMEI7UUFDN0Isd0JBQXdCbEQsSUFBSSxDQUFDdEUsU0FBTCxDQUFlenRDLEdBQWYsQ0FESztRQUU3QixrQkFBa0IsQ0FBQyt4QyxJQUFJLENBQUN0RSxTQUFMLENBQWV6dEMsR0FBZixDQUFELElBQXdCNGdDLElBQUksQ0FBQ2tOLFdBRmxCO1FBRzdCLGFBQWEsQ0FBQ2lFLElBQUksQ0FBQ3RFLFNBQUwsQ0FBZXp0QyxHQUFmLENBQUQsSUFBd0IsQ0FBQzRnQyxJQUFJLENBQUNrTjtNQUhkLENBQTFCO0lBRDJCLENBQXRDLEVBTUcsQ0FBQyxHQUFHeDRDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCblMsSUFBSSxDQUFDLE9BQUQsQ0FBL0IsQ0FOSCxFQU04QztJQUFFO0lBTmhELENBWjhDLENBQWxELENBSkQsRUF3QkVtUixJQUFJLENBQUN0RSxTQUFMLENBQWV6dEMsR0FBZixDQUFELElBQ08sQ0FBQyxHQUFHMUssS0FBSyxDQUFDaTlDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHajlDLEtBQUssQ0FBQ2s5QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQ3NLLFdBQW5DLEVBQWdELENBQUMsR0FBR3huRCxLQUFLLENBQUN5OUMsZUFBVixFQUEyQm5TLElBQUksQ0FBQyxhQUFELENBQS9CLENBQWhELEVBQWlHO0lBQUU7SUFBbkcsQ0FEL0IsSUFFTSxDQUFDLEdBQUd0ckMsS0FBSyxDQUFDczlDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBMUJQLENBTjZCLEVBaUM3QjtJQUFFO0lBakMyQixDQUFoQztFQWtDSCxDQW5DZ0YsQ0FBcEQsRUFtQ3pCO0VBQUk7RUFuQ3FCLENBRGdCLEVBQWpELENBRmdELENBQXBELENBbk82QyxDQUFqRCxDQUw2QyxDQUFqRCxDQUppRixDQUFyRCxDQUFoQztBQXdSSDs7QUFDRHg5QyxjQUFBLEdBQWlCKzdDLE1BQWpCOzs7Ozs7Ozs7OztBQzdYYTs7QUFDYmo4Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJNjdDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlFLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUl1QixXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFDZDloQyxNQUFNLEVBQUUsUUFETTtFQUVkc3VELEdBQUcsRUFBRSxxQkFGUztFQUdkdm9FLElBQUksRUFBRTtBQUhRLENBQWxCO0FBS0EsSUFBSWc4QyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUcsQ0FBQyxXQUFELENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHLENBQUMsV0FBRCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRyxDQUFDLFdBQUQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUcsQ0FBQyxXQUFELENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHLENBQUMsV0FBRCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRyxDQUFDLFdBQUQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJaUgsV0FBVyxHQUFHLENBQUMsV0FBRCxDQUFsQjtBQUNBLElBQUlTLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUNkOXFDLE1BQU0sRUFBRSxRQURNO0VBRWRzdUQsR0FBRyxFQUFFLHFCQUZTO0VBR2R2b0UsSUFBSSxFQUFFO0FBSFEsQ0FBbEI7QUFLQSxJQUFJZ2xELFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjs7QUFDQSxJQUFJQyxXQUFXLEdBQUcsYUFBYyxDQUFDLEdBQUc3bkQsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLElBQTFDLEVBQWdELENBQUM7QUFBRTtBQUFuRCxDQUFoQzs7QUFDQSxJQUFJNEwsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQ2R0ckMsTUFBTSxFQUFFLFFBRE07RUFFZHN1RCxHQUFHLEVBQUUscUJBRlM7RUFHZHZvRSxJQUFJLEVBQUUsa0VBSFE7RUFJZCxTQUFPO0FBSk8sQ0FBbEI7O0FBTUEsSUFBSXdsRCxXQUFXLEdBQUcsYUFBYyxDQUFDLEdBQUdsb0QsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLElBQTFDLEVBQWdELENBQUM7QUFBRTtBQUFuRCxDQUFoQzs7QUFDQSxJQUFJaU0sV0FBVyxHQUFHO0VBQ2R4ckMsTUFBTSxFQUFFLFFBRE07RUFFZHN1RCxHQUFHLEVBQUUscUJBRlM7RUFHZHZvRSxJQUFJLEVBQUUsc0VBSFE7RUFJZCxTQUFPO0FBSk8sQ0FBbEI7O0FBTUEsU0FBU201QyxNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELE9BQVEsQ0FBQyxHQUFHOThDLEtBQUssQ0FBQ2k5QyxTQUFWLEtBQXdCLENBQUMsR0FBR2o5QyxLQUFLLENBQUNrOUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNwQixVQUFyQyxFQUFpRCxDQUM3RSxDQUFDLEdBQUc5N0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSCxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUcvN0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLFNBQTlCLEVBQXlDRixVQUF6QyxFQUFxRCxDQUNqRCxDQUFDLEdBQUdoOEMsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLFNBQTlCLEVBQXlDRCxVQUF6QyxFQUFxRCxDQUNqRCxDQUFDLEdBQUdqOEMsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DQyxVQUFuQyxFQUErQyxDQUFDLEdBQUduOEMsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzMwQyxRQUFQLENBQWdCaWpFLGFBQWhCLENBQThCQyx5QkFBOUIsQ0FBd0Q1TyxHQUFuRixDQUEvQyxFQUF3STtFQUFFO0VBQTFJLENBRGlELENBQXJELENBRGlELEVBSWpELENBQUMsR0FBR3Y4RCxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsU0FBOUIsRUFBeUNFLFVBQXpDLEVBQXFELENBQ2pELENBQUMsR0FBR3A4QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NHLFVBQXBDLEVBQWdELFNBQVMsQ0FBQyxHQUFHcjhDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQmlqRSxhQUFoQixDQUE4QkUsd0JBQXpELENBQXpELEVBQTZJO0VBQUU7RUFBL0ksQ0FEaUQsRUFFakQsQ0FBQyxHQUFHcHJFLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQ0ksVUFBbkMsRUFBK0MsQ0FBQyxHQUFHdDhDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQmlqRSxhQUFoQixDQUE4QkcsNkJBQTlCLENBQTREOU8sR0FBNUQsQ0FDckUrTyxVQURxRSxDQUMxRDlpRSxNQUQrQixDQUEvQyxFQUN5QjtFQUFFO0VBRDNCLENBRmlELEVBSWpELENBQUMsR0FBR3hJLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ0ssVUFBcEMsRUFBZ0QsQ0FDNUMsQ0FBQyxHQUFHdjhDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ00sV0FBcEMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHeDhDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQzZCLFdBQXRDLEVBQW1ELENBQUMsR0FBRy85QyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmIsTUFBTSxDQUFDMzBDLFFBQVAsQ0FBZ0JpakUsYUFBaEIsQ0FBOEJHLDZCQUE5QixDQUE0RDlPLEdBQTVELENBQ3pFK08sVUFEeUUsQ0FDOUQvTyxHQURtQyxDQUFuRCxFQUNzQjtFQUFFO0VBRHhCLENBRDZDLENBQWpELENBRDRDLEVBSzVDLENBQUMsR0FBR3Y4RCxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0M4QixXQUFwQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdoK0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDK0IsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHaitDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQmlqRSxhQUFoQixDQUE4QkcsNkJBQTlCLENBQTREOU8sR0FBNUQsQ0FDekUrTyxVQUR5RSxDQUM5RDlPLEdBRG1DLENBQW5ELEVBQ3NCO0VBQUU7RUFEeEIsQ0FENkMsQ0FBakQsQ0FMNEMsRUFTNUMsQ0FBQyxHQUFHeDhELEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ2dDLFdBQXBDLEVBQWlELENBQzdDLENBQUMsR0FBR2wrQyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NpQyxXQUF0QyxFQUFtRCxDQUFDLEdBQUduK0MsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzMwQyxRQUFQLENBQWdCaWpFLGFBQWhCLENBQThCRyw2QkFBOUIsQ0FBNEQ5TyxHQUE1RCxDQUN6RStPLFVBRHlFLENBQzlEN08sS0FEbUMsQ0FBbkQsRUFDd0I7RUFBRTtFQUQxQixDQUQ2QyxDQUFqRCxDQVQ0QyxFQWE1QyxDQUFDLEdBQUd6OEQsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9Da0MsV0FBcEMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHcCtDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ21DLFdBQXRDLEVBQW1ELENBQUMsR0FBR3IrQyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmIsTUFBTSxDQUFDMzBDLFFBQVAsQ0FBZ0JpakUsYUFBaEIsQ0FBOEJHLDZCQUE5QixDQUE0RDlPLEdBQTVELENBQ3pFK08sVUFEeUUsQ0FDOURDLElBRG1DLENBQW5ELEVBQ3VCO0VBQUU7RUFEekIsQ0FENkMsQ0FBakQsQ0FiNEMsRUFpQjVDLENBQUMsR0FBR3ZyRSxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NvQyxXQUFwQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUd0K0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDcUMsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHditDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQmlqRSxhQUFoQixDQUE4QkcsNkJBQTlCLENBQTREOU8sR0FBNUQsQ0FDekUrTyxVQUR5RSxDQUM5REUsSUFEbUMsQ0FBbkQsRUFDdUI7RUFBRTtFQUR6QixDQUQ2QyxDQUFqRCxDQWpCNEMsQ0FBaEQsQ0FKaUQsRUEwQmpELENBQUMsR0FBR3hyRSxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUNzQyxXQUFuQyxFQUFnRCxDQUM1QyxDQUFDLEdBQUd4K0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DdUMsV0FBbkMsRUFBZ0QsQ0FBQyxHQUFHeitDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQmlqRSxhQUFoQixDQUE4QkcsNkJBQTlCLENBQTREN08sR0FBdkYsQ0FBaEQsRUFBNkk7RUFBRTtFQUEvSSxDQUQ0QyxDQUFoRCxDQTFCaUQsQ0FBckQsQ0FKaUQsRUFrQ2pELENBQUMsR0FBR3g4RCxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsU0FBOUIsRUFBeUN3QyxXQUF6QyxFQUFzRCxDQUNsRCxDQUFDLEdBQUcxK0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DeUMsV0FBcEMsRUFBaUQsU0FBUyxDQUFDLEdBQUczK0MsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzMwQyxRQUFQLENBQWdCaWpFLGFBQWhCLENBQThCTyxvQkFBekQsQ0FBMUQsRUFBMEk7RUFBRTtFQUE1SSxDQURrRCxFQUVsRCxDQUFDLEdBQUd6ckUsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DMEMsV0FBbkMsRUFBZ0QsQ0FBQyxHQUFHNStDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQmlqRSxhQUFoQixDQUE4QlEseUJBQTlCLENBQXdEblAsR0FBeEQsQ0FDdEUrTyxVQURzRSxDQUMzRDlpRSxNQURnQyxDQUFoRCxFQUN5QjtFQUFFO0VBRDNCLENBRmtELEVBSWxELENBQUMsR0FBR3hJLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQzJDLFdBQXBDLEVBQWlELENBQzdDLENBQUMsR0FBRzcrQyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0M0QyxXQUFwQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUc5K0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDO0lBQ2xDLFNBQU8sWUFEMkI7SUFFbEN1SCxTQUFTLEVBQUU3RyxNQUFNLENBQUMzMEMsUUFBUCxDQUFnQmlqRSxhQUFoQixDQUE4QlEseUJBQTlCLENBQXdEblAsR0FBeEQsQ0FDTitPLFVBRE0sQ0FDSy9PO0VBSGtCLENBQXRDLEVBSUcsSUFKSCxFQUlTO0VBQUU7RUFKWCxFQUl3QnhkLFdBSnhCLENBRDZDLENBQWpELENBRDZDLEVBUTdDLENBQUMsR0FBRy8rQyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0M4QyxXQUFwQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdoL0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDO0lBQ2xDLFNBQU8sWUFEMkI7SUFFbEN1SCxTQUFTLEVBQUU3RyxNQUFNLENBQUMzMEMsUUFBUCxDQUFnQmlqRSxhQUFoQixDQUE4QlEseUJBQTlCLENBQXdEblAsR0FBeEQsQ0FDTitPLFVBRE0sQ0FDSzlPO0VBSGtCLENBQXRDLEVBSUcsSUFKSCxFQUlTO0VBQUU7RUFKWCxFQUl3QnZkLFdBSnhCLENBRDZDLENBQWpELENBUjZDLEVBZTdDLENBQUMsR0FBR2ovQyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NnRCxXQUFwQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdsL0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDO0lBQ2xDLFNBQU8sWUFEMkI7SUFFbEN1SCxTQUFTLEVBQUU3RyxNQUFNLENBQUMzMEMsUUFBUCxDQUFnQmlqRSxhQUFoQixDQUE4QlEseUJBQTlCLENBQXdEblAsR0FBeEQsQ0FDTitPLFVBRE0sQ0FDSzdPO0VBSGtCLENBQXRDLEVBSUcsSUFKSCxFQUlTO0VBQUU7RUFKWCxFQUl3QnRkLFdBSnhCLENBRDZDLENBQWpELENBZjZDLEVBc0I3QyxDQUFDLEdBQUduL0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9Da0QsV0FBcEMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHcC9DLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQztJQUNsQyxTQUFPLFlBRDJCO0lBRWxDdUgsU0FBUyxFQUFFN0csTUFBTSxDQUFDMzBDLFFBQVAsQ0FBZ0JpakUsYUFBaEIsQ0FBOEJRLHlCQUE5QixDQUF3RG5QLEdBQXhELENBQ04rTyxVQURNLENBQ0tDO0VBSGtCLENBQXRDLEVBSUcsSUFKSCxFQUlTO0VBQUU7RUFKWCxFQUl3QmxzQixXQUp4QixDQUQ2QyxDQUFqRCxDQXRCNkMsRUE2QjdDLENBQUMsR0FBR3IvQyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NvRCxXQUFwQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUd0L0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDO0lBQ2xDLFNBQU8sWUFEMkI7SUFFbEN1SCxTQUFTLEVBQUU3RyxNQUFNLENBQUMzMEMsUUFBUCxDQUFnQmlqRSxhQUFoQixDQUE4QlEseUJBQTlCLENBQXdEblAsR0FBeEQsQ0FDTitPLFVBRE0sQ0FDS0U7RUFIa0IsQ0FBdEMsRUFJRyxJQUpILEVBSVM7RUFBRTtFQUpYLEVBSXdCanNCLFdBSnhCLENBRDZDLENBQWpELENBN0I2QyxFQW9DN0MsQ0FBQyxHQUFHdi9DLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ3NELFdBQXBDLEVBQWlELENBQzdDLENBQUMsR0FBR3gvQyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0M7SUFDbEMsU0FBTyxZQUQyQjtJQUVsQ3VILFNBQVMsRUFBRTdHLE1BQU0sQ0FBQzMwQyxRQUFQLENBQWdCaWpFLGFBQWhCLENBQThCUSx5QkFBOUIsQ0FBd0RuUCxHQUF4RCxDQUNOK08sVUFETSxDQUNLSztFQUhrQixDQUF0QyxFQUlHLElBSkgsRUFJUztFQUFFO0VBSlgsRUFJd0Jsc0IsV0FKeEIsQ0FENkMsQ0FBakQsQ0FwQzZDLEVBMkM3QyxDQUFDLEdBQUd6L0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9Dd0QsV0FBcEMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHMS9DLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQztJQUNsQyxTQUFPLFlBRDJCO0lBRWxDdUgsU0FBUyxFQUFFN0csTUFBTSxDQUFDMzBDLFFBQVAsQ0FBZ0JpakUsYUFBaEIsQ0FBOEJRLHlCQUE5QixDQUF3RG5QLEdBQXhELENBQ04rTyxVQURNLENBQ0tNO0VBSGtCLENBQXRDLEVBSUcsSUFKSCxFQUlTO0VBQUU7RUFKWCxFQUl3QmpsQixXQUp4QixDQUQ2QyxDQUFqRCxDQTNDNkMsQ0FBakQsQ0FKa0QsRUF1RGxELENBQUMsR0FBRzNtRCxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NrTCxXQUFwQyxFQUFpRCxDQUFDLEdBQUdwbkQsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzMwQyxRQUFQLENBQWdCaWpFLGFBQWhCLENBQThCVyw2QkFBekQsQ0FBakQsRUFBMEk7RUFBRTtFQUE1SSxDQXZEa0QsRUF3RGxELENBQUMsR0FBRzdyRSxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUNtTCxXQUFuQyxFQUFnRCxDQUFDLEdBQUdybkQsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzMwQyxRQUFQLENBQWdCaWpFLGFBQWhCLENBQThCWSxrQ0FBOUIsQ0FBaUV2UCxHQUE1RixDQUFoRCxFQUFrSjtFQUFFO0VBQXBKLENBeERrRCxFQXlEbEQsQ0FBQyxHQUFHdjhELEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQ29MLFdBQW5DLEVBQWdELENBQUMsR0FBR3RuRCxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmIsTUFBTSxDQUFDMzBDLFFBQVAsQ0FBZ0JpakUsYUFBaEIsQ0FBOEJZLGtDQUE5QixDQUFpRXRQLEdBQTVGLENBQWhELEVBQWtKO0VBQUU7RUFBcEosQ0F6RGtELEVBMERsRCxDQUFDLEdBQUd4OEQsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DcUwsV0FBbkMsRUFBZ0QsQ0FBQyxHQUFHdm5ELEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQmlqRSxhQUFoQixDQUE4Qlksa0NBQTlCLENBQWlFclAsS0FBNUYsQ0FBaEQsRUFBb0o7RUFBRTtFQUF0SixDQTFEa0QsRUEyRGxELENBQUMsR0FBR3o4RCxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUNzTCxXQUFuQyxFQUFnRCxDQUM1QyxDQUFDLEdBQUd4bkQsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DdUwsV0FBbkMsRUFBZ0QsQ0FBQyxHQUFHem5ELEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQmlqRSxhQUFoQixDQUE4Qlksa0NBQTlCLENBQWlFUCxJQUE1RixDQUFoRCxFQUFtSjtFQUFFO0VBQXJKLENBRDRDLENBQWhELENBM0RrRCxDQUF0RCxDQWxDaUQsRUFpR2pELENBQUMsR0FBR3ZyRSxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsU0FBOUIsRUFBeUN3TCxXQUF6QyxFQUFzRCxDQUNsRCxDQUFDLEdBQUcxbkQsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DeUwsV0FBcEMsRUFBaUQsQ0FBQyxHQUFHM25ELEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQmlqRSxhQUFoQixDQUE4QmEsbUJBQXpELENBQWpELEVBQWdJO0VBQUU7RUFBbEksQ0FEa0QsRUFFbEQsQ0FBQyxHQUFHL3JFLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQzBMLFdBQW5DLEVBQWdELENBQUMsR0FBRzVuRCxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmIsTUFBTSxDQUFDMzBDLFFBQVAsQ0FBZ0JpakUsYUFBaEIsQ0FBOEJjLHdCQUE5QixDQUF1RHpQLEdBQWxGLENBQWhELEVBQXdJO0VBQUU7RUFBMUksQ0FGa0QsRUFHbEQsQ0FBQyxHQUFHdjhELEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztJQUMvQnYvQixNQUFNLEVBQUUsUUFEdUI7SUFFL0JzdUQsR0FBRyxFQUFFLHFCQUYwQjtJQUcvQixTQUFPLHFCQUh3QjtJQUkvQjd0QixPQUFPLEVBQUVWLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZLFVBQVVjLE1BQVYsRUFBa0I7TUFBRSxPQUFRWixNQUFNLENBQUNoQyxjQUFQLENBQXNCLGNBQXRCLENBQVI7SUFBaUQsQ0FBL0Y7RUFKc0IsQ0FBbkMsRUFLRyxPQUFPLENBQUMsR0FBRzU2QyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmIsTUFBTSxDQUFDMzBDLFFBQVAsQ0FBZ0JpakUsYUFBaEIsQ0FBOEJjLHdCQUE5QixDQUF1RHhQLEdBQWxGLENBQVAsR0FBZ0csSUFMbkcsRUFLeUc7RUFBRTtFQUwzRyxDQUhrRCxFQVNsRDNVLFdBVGtELEVBVWxELENBQUMsR0FBRzduRCxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7SUFDL0J2L0IsTUFBTSxFQUFFLFFBRHVCO0lBRS9Cc3VELEdBQUcsRUFBRSxxQkFGMEI7SUFHL0IsU0FBTyxxQkFId0I7SUFJL0I3dEIsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO01BQUUsT0FBUVosTUFBTSxDQUFDaEMsY0FBUCxDQUFzQixVQUF0QixDQUFSO0lBQTZDLENBQTNGO0VBSnNCLENBQW5DLEVBS0csT0FBTyxDQUFDLEdBQUc1NkMsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzMwQyxRQUFQLENBQWdCaWpFLGFBQWhCLENBQThCYyx3QkFBOUIsQ0FBdUR2UCxLQUFsRixDQUFQLEdBQWtHLElBTHJHLEVBSzJHO0VBQUU7RUFMN0csQ0FWa0QsQ0FBdEQsQ0FqR2lELEVBa0hqRCxDQUFDLEdBQUd6OEQsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLFNBQTlCLEVBQXlDNEwsV0FBekMsRUFBc0QsQ0FDbEQsQ0FBQyxHQUFHOW5ELEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQzZMLFdBQXBDLEVBQWlELENBQUMsR0FBRy9uRCxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmIsTUFBTSxDQUFDMzBDLFFBQVAsQ0FBZ0JpakUsYUFBaEIsQ0FBOEJlLDhCQUF6RCxDQUFqRCxFQUEySTtFQUFFO0VBQTdJLENBRGtELEVBRWxELENBQUMsR0FBR2pzRSxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM4TCxXQUFuQyxFQUFnRCxDQUFDLEdBQUdob0QsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzMwQyxRQUFQLENBQWdCaWpFLGFBQWhCLENBQThCZ0IsbUNBQTlCLENBQWtFM1AsR0FBN0YsQ0FBaEQsRUFBbUo7RUFBRTtFQUFySixDQUZrRCxFQUdsRCxDQUFDLEdBQUd2OEQsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DK0wsV0FBbkMsRUFBZ0QsQ0FDNUMsQ0FBQyxHQUFHam9ELEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQyxJQUFuQyxFQUF5QyxDQUFDLEdBQUdsOEMsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzMwQyxRQUFQLENBQWdCaWpFLGFBQWhCLENBQThCZ0IsbUNBQTlCLENBQWtFMVAsR0FBN0YsQ0FBekMsRUFBNEk7RUFBRTtFQUE5SSxDQUQ0QyxDQUFoRCxDQUhrRCxFQU1sRHRVLFdBTmtELEVBT2xELENBQUMsR0FBR2xvRCxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUNpTSxXQUFuQyxFQUFnRCxDQUM1QyxDQUFDLEdBQUdub0QsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DLElBQW5DLEVBQXlDLENBQUMsR0FBR2w4QyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmIsTUFBTSxDQUFDMzBDLFFBQVAsQ0FBZ0JpakUsYUFBaEIsQ0FBOEJnQixtQ0FBOUIsQ0FBa0V6UCxLQUE3RixDQUF6QyxFQUE4STtFQUFFO0VBQWhKLENBRDRDLENBQWhELENBUGtELENBQXRELENBbEhpRCxDQUFyRCxDQUQ2QyxDQUFqRCxDQUQ2RSxDQUFqRCxDQUFoQztBQWtJSDs7QUFDRDM4RCxjQUFBLEdBQWlCKzdDLE1BQWpCOzs7Ozs7Ozs7OztBQ2pOYTs7QUFDYmo4Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJNjdDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlFLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUNiMy9CLE1BQU0sRUFBRSxRQURLO0VBRWJqYSxJQUFJLEVBQUU7QUFGTyxDQUFqQjtBQUlBLElBQUk2NUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQ2Q3L0IsTUFBTSxFQUFFLFFBRE07RUFFZGphLElBQUksRUFBRTtBQUZRLENBQWxCO0FBSUEsSUFBSXE3QyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFDZHhoQyxNQUFNLEVBQUUsUUFETTtFQUVkamEsSUFBSSxFQUFFO0FBRlEsQ0FBbEI7O0FBSUEsSUFBSTA3QyxXQUFXLEdBQUcsYUFBYyxDQUFDLEdBQUdwK0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLElBQTFDLEVBQWdELENBQUM7QUFBRTtBQUFuRCxDQUFoQzs7QUFDQSxJQUFJbUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQ2Q1aUMsTUFBTSxFQUFFLFFBRE07RUFFZGphLElBQUksRUFBRTtBQUZRLENBQWxCOztBQUlBLElBQUk4OEMsV0FBVyxHQUFHLGFBQWMsQ0FBQyxHQUFHeC9DLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxJQUExQyxFQUFnRCxDQUFDO0FBQUU7QUFBbkQsQ0FBaEM7O0FBQ0EsSUFBSXVELFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlpSCxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJUyxXQUFXLEdBQUcsQ0FBQyxXQUFELENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHLENBQUMsV0FBRCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjs7QUFDQSxJQUFJQyxXQUFXLEdBQUcsYUFBYyxDQUFDLEdBQUc5bkQsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLElBQTFDLEVBQWdELENBQUM7QUFBRTtBQUFuRCxDQUFoQzs7QUFDQSxJQUFJNkwsV0FBVyxHQUFHLGFBQWMsQ0FBQyxHQUFHL25ELEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztFQUMvRHYvQixNQUFNLEVBQUUsUUFEdUQ7RUFFL0RqYSxJQUFJLEVBQUU7QUFGeUQsQ0FBbkMsRUFHN0IsdUNBSDZCLEVBR1ksQ0FBQztBQUFFO0FBSGYsQ0FBaEM7O0FBSUEsSUFBSXNsRCxXQUFXLEdBQUcsYUFBYyxDQUFDLEdBQUdob0QsS0FBSyxDQUFDKy9DLGVBQVYsRUFBMkIsS0FBM0IsQ0FBaEM7O0FBQ0EsSUFBSWtJLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRyxDQUFDLFdBQUQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUcsQ0FBQyxXQUFELENBQWxCO0FBQ0EsSUFBSStPLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRyxDQUFDLFdBQUQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7O0FBQ0EsSUFBSUMsV0FBVyxHQUFHLGFBQWMsQ0FBQyxHQUFHejNELEtBQUssQ0FBQysvQyxlQUFWLEVBQTJCLE1BQTNCLENBQWhDOztBQUNBLElBQUkyWCxXQUFXLEdBQUcsQ0FBQyxXQUFELENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHLENBQUMsV0FBRCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRyxDQUFDLFdBQUQsQ0FBbEI7O0FBQ0EsU0FBU2pjLE1BQVQsQ0FBZ0JZLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QkMsTUFBOUIsRUFBc0NDLE1BQXRDLEVBQThDQyxLQUE5QyxFQUFxREMsUUFBckQsRUFBK0Q7RUFDM0QsT0FBUSxDQUFDLEdBQUc5OEMsS0FBSyxDQUFDaTlDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHajlDLEtBQUssQ0FBQ2s5QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3BCLFVBQXJDLEVBQWlELENBQzdFLENBQUMsR0FBRzk3QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNILFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBRy83QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsU0FBOUIsRUFBeUNGLFVBQXpDLEVBQXFELENBQ2pELENBQUMsR0FBR2g4QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NELFVBQXBDLEVBQWdELENBQUMsR0FBR2o4QyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmIsTUFBTSxDQUFDMzBDLFFBQVAsQ0FBZ0Jra0Usb0JBQWhCLENBQXFDQyw4QkFBaEUsQ0FBaEQsRUFBaUo7RUFBRTtFQUFuSixDQURpRCxFQUVqRCxDQUFDLEdBQUdwc0UsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLFNBQTlCLEVBQXlDQyxVQUF6QyxFQUFxRCxDQUNqRCxDQUFDLEdBQUduOEMsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DRSxVQUFwQyxFQUFnRCxTQUFTLENBQUMsR0FBR3A4QyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmIsTUFBTSxDQUFDMzBDLFFBQVAsQ0FBZ0Jra0Usb0JBQWhCLENBQXFDRSwyQkFBaEUsQ0FBekQsRUFBdUo7RUFBRTtFQUF6SixDQURpRCxFQUVqRCxDQUFDLEdBQUdyc0UsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DRyxVQUFuQyxFQUErQyxDQUFDLEdBQUdyOEMsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzMwQyxRQUFQLENBQWdCa2tFLG9CQUFoQixDQUFxQ0csZ0NBQXJDLENBQXNFL1AsR0FBakcsQ0FBL0MsRUFBc0o7RUFBRTtFQUF4SixDQUZpRCxFQUdqRCxDQUFDLEdBQUd2OEQsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DSSxVQUFuQyxFQUErQyxDQUFDLEdBQUd0OEMsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzMwQyxRQUFQLENBQWdCa2tFLG9CQUFoQixDQUFxQ0csZ0NBQXJDLENBQXNFOVAsR0FBakcsQ0FBL0MsRUFBc0o7RUFBRTtFQUF4SixDQUhpRCxFQUlqRCxDQUFDLEdBQUd4OEQsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DSyxVQUFuQyxFQUErQyxDQUFDLEdBQUd2OEMsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzMwQyxRQUFQLENBQWdCa2tFLG9CQUFoQixDQUFxQ0csZ0NBQXJDLENBQ3JFN1AsS0FEMEMsQ0FBL0MsRUFDYTtFQUFFO0VBRGYsQ0FKaUQsRUFNakQsQ0FBQyxHQUFHejhELEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQ00sV0FBbkMsRUFBZ0QsQ0FBQyxHQUFHeDhDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQmtrRSxvQkFBaEIsQ0FBcUNHLGdDQUFyQyxDQUN0RWYsSUFEMkMsQ0FBaEQsRUFDWTtFQUFFO0VBRGQsQ0FOaUQsQ0FBckQsQ0FGaUQsRUFXakQsQ0FBQyxHQUFHdnJFLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixTQUE5QixFQUF5QzZCLFdBQXpDLEVBQXNELENBQ2xELENBQUMsR0FBRy85QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0M4QixXQUFwQyxFQUFpRCxTQUFTLENBQUMsR0FBR2grQyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmIsTUFBTSxDQUFDMzBDLFFBQVAsQ0FBZ0Jra0Usb0JBQWhCLENBQXFDSSxnQ0FBaEUsQ0FBMUQsRUFBNko7RUFBRTtFQUEvSixDQURrRCxFQUVsRCxDQUFDLEdBQUd2c0UsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DK0IsV0FBbkMsRUFBZ0QsQ0FBQyxHQUFHaitDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQmtrRSxvQkFBaEIsQ0FDdEVLLHFDQURzRSxDQUNoQ2pRLEdBREssQ0FBaEQsRUFDaUQ7RUFBRTtFQURuRCxDQUZrRCxFQUlsRCxDQUFDLEdBQUd2OEQsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DZ0MsV0FBbkMsRUFBZ0QsQ0FBQyxHQUFHbCtDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQmtrRSxvQkFBaEIsQ0FDdEVLLHFDQURzRSxDQUNoQ2hRLEdBREssQ0FBaEQsRUFDaUQ7RUFBRTtFQURuRCxDQUprRCxFQU1sRCxDQUFDLEdBQUd4OEQsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DaUMsV0FBbkMsRUFBZ0QsQ0FBQyxHQUFHbitDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQmtrRSxvQkFBaEIsQ0FDdEVLLHFDQURzRSxDQUNoQy9QLEtBREssQ0FBaEQsRUFDbUQ7RUFBRTtFQURyRCxDQU5rRCxFQVFsRHJlLFdBUmtELEVBU2xELENBQUMsR0FBR3ArQyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7SUFDL0J2L0IsTUFBTSxFQUFFLFFBRHVCO0lBRS9CamEsSUFBSSxFQUFFLGFBRnlCO0lBRy9CMDZDLE9BQU8sRUFBRVIsTUFBTSxDQUFDOUI7RUFIZSxDQUFuQyxFQUlHLENBQUMsR0FBRzk2QyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmIsTUFBTSxDQUFDMzBDLFFBQVAsQ0FBZ0Jra0Usb0JBQWhCLENBQ3pCSyxxQ0FEeUIsQ0FDYWpCLElBRHhDLENBSkgsRUFLa0Q7RUFBRTtFQUxwRCxDQVRrRCxDQUF0RCxDQVhpRCxFQTJCakQsQ0FBQyxHQUFHdnJFLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixTQUE5QixFQUF5Q21DLFdBQXpDLEVBQXNELENBQ2xELENBQUMsR0FBR3IrQyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NvQyxXQUFwQyxFQUFpRCxTQUFTLENBQUMsR0FBR3QrQyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmIsTUFBTSxDQUFDMzBDLFFBQVAsQ0FBZ0Jra0Usb0JBQWhCLENBQXFDTSw0QkFBaEUsQ0FBMUQsRUFBeUo7RUFBRTtFQUEzSixDQURrRCxFQUVsRCxDQUFDLEdBQUd6c0UsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DcUMsV0FBbkMsRUFBZ0QsQ0FBQyxHQUFHditDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQmtrRSxvQkFBaEIsQ0FBcUNPLGlDQUFyQyxDQUN0RW5RLEdBRDJDLENBQWhELEVBQ1c7RUFBRTtFQURiLENBRmtELEVBSWxELENBQUMsR0FBR3Y4RCxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUNzQyxXQUFuQyxFQUFnRCxDQUFDLEdBQUd4K0MsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzMwQyxRQUFQLENBQWdCa2tFLG9CQUFoQixDQUFxQ08saUNBQXJDLENBQ3RFbFEsR0FEc0UsQ0FDbEU4TyxVQURrRSxDQUN2RDlpRSxNQUQ0QixDQUFoRCxFQUM2QjtFQUFFO0VBRC9CLENBSmtELEVBTWxELENBQUMsR0FBR3hJLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ3VDLFdBQXBDLEVBQWlELENBQzdDLENBQUMsR0FBR3orQyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0N3QyxXQUFwQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUcxK0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDeUMsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHMytDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQmtrRSxvQkFBaEIsQ0FDekVPLGlDQUR5RSxDQUN2Q2xRLEdBRHVDLENBQ25DOE8sVUFEbUMsQ0FDeEIvTyxHQURILENBQW5ELEVBQzREO0VBQUU7RUFEOUQsQ0FENkMsQ0FBakQsQ0FENkMsRUFLN0MsQ0FBQyxHQUFHdjhELEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQzBDLFdBQXBDLEVBQWlELENBQzdDLENBQUMsR0FBRzUrQyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MyQyxXQUF0QyxFQUFtRCxDQUFDLEdBQUc3K0MsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzMwQyxRQUFQLENBQWdCa2tFLG9CQUFoQixDQUN6RU8saUNBRHlFLENBQ3ZDbFEsR0FEdUMsQ0FDbkM4TyxVQURtQyxDQUN4QjlPLEdBREgsQ0FBbkQsRUFDNEQ7RUFBRTtFQUQ5RCxDQUQ2QyxDQUFqRCxDQUw2QyxFQVM3QyxDQUFDLEdBQUd4OEQsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DNEMsV0FBcEMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHOStDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQzZDLFdBQXRDLEVBQW1ELENBQUMsR0FBRy8rQyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmIsTUFBTSxDQUFDMzBDLFFBQVAsQ0FBZ0Jra0Usb0JBQWhCLENBQ3pFTyxpQ0FEeUUsQ0FDdkNsUSxHQUR1QyxDQUNuQzhPLFVBRG1DLENBQ3hCN08sS0FESCxDQUFuRCxFQUM4RDtFQUFFO0VBRGhFLENBRDZDLENBQWpELENBVDZDLENBQWpELENBTmtELEVBb0JsRCxDQUFDLEdBQUd6OEQsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DOEMsV0FBbkMsRUFBZ0QsQ0FBQyxHQUFHaC9DLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQmtrRSxvQkFBaEIsQ0FBcUNPLGlDQUFyQyxDQUN0RWpRLEtBRHNFLENBQ2hFNk8sVUFEZ0UsQ0FDckQ5aUUsTUFEMEIsQ0FBaEQsRUFDK0I7RUFBRTtFQURqQyxDQXBCa0QsRUFzQmxELENBQUMsR0FBR3hJLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQytDLFdBQXBDLEVBQWlELENBQzdDLENBQUMsR0FBR2ovQyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NnRCxXQUFwQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdsL0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDaUQsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHbi9DLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQmtrRSxvQkFBaEIsQ0FDekVPLGlDQUR5RSxDQUN2Q2pRLEtBRHVDLENBQ2pDNk8sVUFEaUMsQ0FDdEIvTyxHQURMLENBQW5ELEVBQzhEO0VBQUU7RUFEaEUsQ0FENkMsQ0FBakQsQ0FENkMsRUFLN0MsQ0FBQyxHQUFHdjhELEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ2tELFdBQXBDLEVBQWlELENBQzdDLENBQUMsR0FBR3AvQyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NtRCxXQUF0QyxFQUFtRCxDQUFDLEdBQUdyL0MsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzMwQyxRQUFQLENBQWdCa2tFLG9CQUFoQixDQUN6RU8saUNBRHlFLENBQ3ZDalEsS0FEdUMsQ0FDakM2TyxVQURpQyxDQUN0QjlPLEdBREwsQ0FBbkQsRUFDOEQ7RUFBRTtFQURoRSxDQUQ2QyxDQUFqRCxDQUw2QyxDQUFqRCxDQXRCa0QsRUFnQ2xELENBQUMsR0FBR3g4RCxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUNvRCxXQUFuQyxFQUFnRCxDQUFDLEdBQUd0L0MsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzMwQyxRQUFQLENBQWdCa2tFLG9CQUFoQixDQUFxQ08saUNBQXJDLENBQ3RFbkIsSUFEMkMsQ0FBaEQsRUFDWTtFQUFFO0VBRGQsQ0FoQ2tELEVBa0NsRCxDQUFDLEdBQUd2ckUsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DcUQsV0FBbkMsRUFBZ0QsQ0FBQyxHQUFHdi9DLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQmtrRSxvQkFBaEIsQ0FBcUNPLGlDQUFyQyxDQUN0RWxCLElBRDJDLENBQWhELEVBQ1k7RUFBRTtFQURkLENBbENrRCxFQW9DbERoc0IsV0FwQ2tELEVBcUNsRCxDQUFDLEdBQUd4L0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO0lBQy9Cdi9CLE1BQU0sRUFBRSxRQUR1QjtJQUUvQmphLElBQUksRUFBRSxhQUZ5QjtJQUcvQjA2QyxPQUFPLEVBQUVSLE1BQU0sQ0FBQzlCO0VBSGUsQ0FBbkMsRUFJRyxDQUFDLEdBQUc5NkMsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzMwQyxRQUFQLENBQWdCa2tFLG9CQUFoQixDQUFxQ08saUNBQXJDLENBQ3pCZixHQURGLENBSkgsRUFLVztFQUFFO0VBTGIsQ0FyQ2tELENBQXRELENBM0JpRCxFQXVFakQsQ0FBQyxHQUFHM3JFLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixTQUE5QixFQUF5Q3VELFdBQXpDLEVBQXNELENBQ2xELENBQUMsR0FBR3ovQyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0N3RCxXQUFwQyxFQUFpRCxTQUFTLENBQUMsR0FBRzEvQyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmIsTUFBTSxDQUFDMzBDLFFBQVAsQ0FBZ0Jra0Usb0JBQWhCLENBQXFDUSw4QkFBaEUsQ0FBMUQsRUFBMko7RUFBRTtFQUE3SixDQURrRCxFQUVsRCxDQUFDLEdBQUczc0UsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DeUssV0FBbkMsRUFBZ0QsQ0FDNUMsQ0FBQyxHQUFHM21ELEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQztJQUNsQ3VILFNBQVMsRUFBRTdHLE1BQU0sQ0FBQzMwQyxRQUFQLENBQWdCa2tFLG9CQUFoQixDQUNOUyxtQ0FETSxDQUM4QnJRO0VBRlAsQ0FBdEMsRUFHRyxJQUhILEVBR1M7RUFBRTtFQUhYLEVBR3dCblYsV0FIeEIsQ0FENEMsQ0FBaEQsQ0FGa0QsRUFRbEQsQ0FBQyxHQUFHcG5ELEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQ21MLFdBQW5DLEVBQWdELENBQzVDLENBQUMsR0FBR3JuRCxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0M7SUFDbEN1SCxTQUFTLEVBQUU3RyxNQUFNLENBQUMzMEMsUUFBUCxDQUFnQmtrRSxvQkFBaEIsQ0FDTlMsbUNBRE0sQ0FDOEJwUTtFQUZQLENBQXRDLEVBR0csSUFISCxFQUdTO0VBQUU7RUFIWCxFQUd3QmxWLFdBSHhCLENBRDRDLENBQWhELENBUmtELENBQXRELENBdkVpRCxFQXNGakQsQ0FBQyxHQUFHdG5ELEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixTQUE5QixFQUF5Q3FMLFdBQXpDLEVBQXNELENBQ2xELENBQUMsR0FBR3ZuRCxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NzTCxXQUFwQyxFQUFpRCxTQUFTLENBQUMsR0FBR3huRCxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmIsTUFBTSxDQUFDMzBDLFFBQVAsQ0FBZ0Jra0Usb0JBQWhCLENBQXFDVSwyQkFBaEUsQ0FBMUQsRUFBd0o7RUFBRTtFQUExSixDQURrRCxFQUVsRCxDQUFDLEdBQUc3c0UsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DdUwsV0FBbkMsRUFBZ0QsQ0FBQyxHQUFHem5ELEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQmtrRSxvQkFBaEIsQ0FBcUNXLGdDQUFyQyxDQUFzRXZRLEdBQWpHLENBQWhELEVBQXVKO0VBQUU7RUFBekosQ0FGa0QsQ0FBdEQsQ0F0RmlELEVBMEZqRCxDQUFDLEdBQUd2OEQsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLFNBQTlCLEVBQXlDd0wsV0FBekMsRUFBc0QsQ0FDbEQsQ0FBQyxHQUFHMW5ELEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ3lMLFdBQXBDLEVBQWlELFNBQVMsQ0FBQyxHQUFHM25ELEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQmtrRSxvQkFBaEIsQ0FBcUNZLHdCQUFoRSxDQUExRCxFQUFxSjtFQUFFO0VBQXZKLENBRGtELEVBRWxELENBQUMsR0FBRy9zRSxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUMwTCxXQUFuQyxFQUFnRCxDQUFDLEdBQUc1bkQsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzMwQyxRQUFQLENBQWdCa2tFLG9CQUFoQixDQUFxQ2EsNkJBQXJDLENBQW1FelEsR0FBOUYsQ0FBaEQsRUFBb0o7RUFBRTtFQUF0SixDQUZrRCxFQUdsRCxDQUFDLEdBQUd2OEQsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DMkwsV0FBbkMsRUFBZ0QsQ0FDNUMsQ0FBQyxHQUFHN25ELEtBQUssQ0FBQysvQyxlQUFWLEVBQTJCLENBQUMsR0FBRy8vQyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmIsTUFBTSxDQUFDMzBDLFFBQVAsQ0FBZ0Jra0Usb0JBQWhCLENBQXFDYSw2QkFBckMsQ0FBbUV4USxHQUE5RixJQUFxRyxHQUFoSSxFQUFxSTtFQUFFO0VBQXZJLENBRDRDLEVBRTVDMVUsV0FGNEMsRUFHNUNDLFdBSDRDLEVBSTVDQyxXQUo0QyxDQUFoRCxDQUhrRCxDQUF0RCxDQTFGaUQsRUFvR2pELENBQUMsR0FBR2hvRCxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsU0FBOUIsRUFBeUMrTCxXQUF6QyxFQUFzRCxDQUNsRCxDQUFDLEdBQUdqb0QsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DZ00sV0FBcEMsRUFBaUQsU0FBUyxDQUFDLEdBQUdsb0QsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzMwQyxRQUFQLENBQWdCa2tFLG9CQUFoQixDQUFxQ2MsdUJBQWhFLENBQTFELEVBQW9KO0VBQUU7RUFBdEosQ0FEa0QsRUFFbEQsQ0FBQyxHQUFHanRFLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQ2lNLFdBQW5DLEVBQWdELENBQzVDLENBQUMsR0FBR25vRCxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0M7SUFDbEN1SCxTQUFTLEVBQUU3RyxNQUFNLENBQUMzMEMsUUFBUCxDQUFnQmtrRSxvQkFBaEIsQ0FBcUNlLDRCQUFyQyxDQUFrRTNRO0VBRDNDLENBQXRDLEVBRUcsSUFGSCxFQUVTO0VBQUU7RUFGWCxFQUV3Qm5VLFdBRnhCLENBRDRDLENBQWhELENBRmtELEVBT2xELENBQUMsR0FBR3BvRCxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUNtTSxXQUFuQyxFQUFnRCxDQUM1QyxDQUFDLEdBQUdyb0QsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDO0lBQ2xDdUgsU0FBUyxFQUFFN0csTUFBTSxDQUFDMzBDLFFBQVAsQ0FBZ0Jra0Usb0JBQWhCLENBQXFDZSw0QkFBckMsQ0FBa0UxUTtFQUQzQyxDQUF0QyxFQUVHLElBRkgsRUFFUztFQUFFO0VBRlgsRUFFd0JsVSxXQUZ4QixDQUQ0QyxDQUFoRCxDQVBrRCxFQVlsRCxDQUFDLEdBQUd0b0QsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DbWIsV0FBbkMsRUFBZ0QsQ0FDNUMsQ0FBQyxHQUFHcjNELEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQztJQUNsQ3VILFNBQVMsRUFBRTdHLE1BQU0sQ0FBQzMwQyxRQUFQLENBQWdCa2tFLG9CQUFoQixDQUFxQ2UsNEJBQXJDLENBQWtFelE7RUFEM0MsQ0FBdEMsRUFFRyxJQUZILEVBRVM7RUFBRTtFQUZYLEVBRXdCbkYsV0FGeEIsQ0FENEMsQ0FBaEQsQ0Faa0QsQ0FBdEQsQ0FwR2lELEVBc0hqRCxDQUFDLEdBQUd0M0QsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLFNBQTlCLEVBQXlDcWIsV0FBekMsRUFBc0QsQ0FDbEQsQ0FBQyxHQUFHdjNELEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ3NiLFdBQXBDLEVBQWlELENBQzdDQyxXQUQ2QyxFQUU3QyxDQUFDLEdBQUd6M0QsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDO0lBQ2xDdUgsU0FBUyxFQUFFN0csTUFBTSxDQUFDMzBDLFFBQVAsQ0FBZ0Jra0Usb0JBQWhCLENBQXFDZ0I7RUFEZCxDQUF0QyxFQUVHLElBRkgsRUFFUztFQUFFO0VBRlgsRUFFd0J6VixXQUZ4QixDQUY2QyxDQUFqRCxDQURrRCxFQU9sRCxDQUFDLEdBQUcxM0QsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DeWIsV0FBbkMsRUFBZ0QsQ0FDNUMsQ0FBQyxHQUFHMzNELEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQztJQUNsQ3VILFNBQVMsRUFBRTdHLE1BQU0sQ0FBQzMwQyxRQUFQLENBQWdCa2tFLG9CQUFoQixDQUFxQ2lCLDhCQUFyQyxDQUFvRTdRO0VBRDdDLENBQXRDLEVBRUcsSUFGSCxFQUVTO0VBQUU7RUFGWCxFQUV3QjNFLFdBRnhCLENBRDRDLENBQWhELENBUGtELENBQXRELENBdEhpRCxFQW1JakQsQ0FBQyxHQUFHNTNELEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixTQUE5QixFQUF5QzJiLFdBQXpDLEVBQXNELENBQ2xELENBQUMsR0FBRzczRCxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0M7SUFDbEN1SCxTQUFTLEVBQUU3RyxNQUFNLENBQUMzMEMsUUFBUCxDQUFnQmtrRSxvQkFBaEIsQ0FBcUNpQiw4QkFBckMsQ0FBb0U1UTtFQUQ3QyxDQUF0QyxFQUVHLElBRkgsRUFFUztFQUFFO0VBRlgsRUFFd0IxRSxXQUZ4QixDQURrRCxDQUF0RCxDQW5JaUQsQ0FBckQsQ0FENkMsQ0FBakQsQ0FENkUsQ0FBakQsQ0FBaEM7QUE2SUg7O0FBQ0RoNEQsY0FBQSxHQUFpQis3QyxNQUFqQjs7Ozs7Ozs7Ozs7QUN0T2E7O0FBQ2JqOEMsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGNBQUEsR0FBaUIsS0FBSyxDQUF0Qjs7QUFDQSxJQUFJRSxLQUFLLEdBQUdDLG1CQUFPLENBQUMsdURBQUQsQ0FBbkI7O0FBQ0EsSUFBSTY3QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJRSxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFDYjV4QyxHQUFHLEVBQUUsQ0FEUTtFQUViLFNBQU87QUFGTSxDQUFqQjtBQUlBLElBQUk2eEMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQ2Q5eEMsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJcXpDLFdBQVcsR0FBRztFQUNkcnpDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSXN6QyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFDZHp6QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUkwekMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUU1N0MsSUFBSSxFQUFFO0FBQVIsQ0FBbEI7QUFDQSxJQUFJNjdDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjs7QUFDQSxJQUFJQyxXQUFXLEdBQUcsYUFBYyxDQUFDLEdBQUd4K0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLENBQ3hFLGFBQWMsQ0FBQyxHQUFHbDhDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztFQUM3QyxTQUFPLGdCQURzQztFQUU3Q3g1QyxJQUFJLEVBQUU7QUFGdUMsQ0FBbkMsRUFHWCwwQkFIVyxDQUQwRCxDQUE1QyxFQUs3QixDQUFDO0FBQUU7QUFMMEIsQ0FBaEM7O0FBTUEsSUFBSSs3QyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUcsQ0FBQyxLQUFELENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQ2RsMEMsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJbTBDLFdBQVcsR0FBRyxDQUFDLElBQUQsRUFBTyxxQkFBUCxFQUE4QixhQUE5QixFQUE2QyxNQUE3QyxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRyxDQUFDLHFCQUFELEVBQXdCLGFBQXhCLEVBQXVDLE1BQXZDLENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQ2RyMEMsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJczBDLFdBQVcsR0FBRztFQUNkdDBDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTyxPQUZPO0VBR2R1cEMsSUFBSSxFQUFFO0FBSFEsQ0FBbEI7QUFLQSxJQUFJZ0wsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQ2R4MEMsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJeTBDLFdBQVcsR0FBRztFQUNkLFNBQU8seUhBRE87RUFFZHo4QyxJQUFJLEVBQUU7QUFGUSxDQUFsQjtBQUlBLElBQUkwOEMsV0FBVyxHQUFHO0VBQ2QxMEMsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJMjBDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUNkLFNBQU8seUhBRE87RUFFZDU4QyxJQUFJLEVBQUU7QUFGUSxDQUFsQjtBQUlBLElBQUk2OEMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQ2RoMUMsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7QUFJQSxJQUFJaThDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlTLFdBQVcsR0FBRztFQUNkMThDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSTI4QyxXQUFXLEdBQUc7RUFDZDM4QyxHQUFHLEVBQUUsQ0FEUztFQUVkLFNBQU87QUFGTyxDQUFsQjtBQUlBLElBQUk0OEMsV0FBVyxHQUFHO0VBQ2Q1OEMsR0FBRyxFQUFFLENBRFM7RUFFZCxTQUFPO0FBRk8sQ0FBbEI7O0FBSUEsU0FBU214QyxNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELElBQUl3TixpQkFBaUIsR0FBRyxDQUFDLEdBQUd0cUQsS0FBSyxDQUFDZzlDLGdCQUFWLEVBQTRCLFFBQTVCLENBQXhCOztFQUNBLElBQUlxdEIsNEJBQTRCLEdBQUcsQ0FBQyxHQUFHcnFFLEtBQUssQ0FBQ2c5QyxnQkFBVixFQUE0QixtQkFBNUIsQ0FBbkM7O0VBQ0EsSUFBSTRKLG9CQUFvQixHQUFHLENBQUMsR0FBRzVtRCxLQUFLLENBQUNnOUMsZ0JBQVYsRUFBNEIsV0FBNUIsQ0FBM0I7O0VBQ0EsSUFBSUQsa0JBQWtCLEdBQUcsQ0FBQyxHQUFHLzhDLEtBQUssQ0FBQ2c5QyxnQkFBVixFQUE0QixTQUE1QixDQUF6Qjs7RUFDQSxJQUFJK04sc0JBQXNCLEdBQUcsQ0FBQyxHQUFHL3FELEtBQUssQ0FBQ2c5QyxnQkFBVixFQUE0QixhQUE1QixDQUE3Qjs7RUFDQSxPQUFRLENBQUMsR0FBR2g5QyxLQUFLLENBQUNpOUMsU0FBVixLQUF3QixDQUFDLEdBQUdqOUMsS0FBSyxDQUFDazlDLGtCQUFWLEVBQThCLFNBQTlCLEVBQXlDcEIsVUFBekMsRUFBcUQsQ0FDaEZXLElBQUksQ0FBQ3ZsQyxlQUFOLElBQ08sQ0FBQyxHQUFHbFgsS0FBSyxDQUFDaTlDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHajlDLEtBQUssQ0FBQzA5QyxXQUFWLEVBQXVCNE0saUJBQXZCLEVBQTBDO0lBQUU1L0MsR0FBRyxFQUFFO0VBQVAsQ0FBMUMsQ0FEL0IsSUFFTSxDQUFDLEdBQUcxSyxLQUFLLENBQUNzOUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FIMkUsRUFJakYsQ0FBQyxHQUFHdDlDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0gsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHLzdDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0YsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHaDhDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUFDLEdBQUdsOEMsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJoQixJQUFJLENBQUN4MEMsUUFBTCxDQUFjcXdDLGFBQWQsQ0FBNEJneUIsNEJBQXZELENBQTFDLEVBQWdJO0VBQUU7RUFBbEksQ0FENkMsRUFFN0MsQ0FBQyxHQUFHdHFFLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQyxJQUFuQyxFQUF5QyxDQUFDLEdBQUdsOEMsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJoQixJQUFJLENBQUN4MEMsUUFBTCxDQUFjcXdDLGFBQWQsQ0FBNEJpeUIsK0JBQXZELENBQXpDLEVBQWtJO0VBQUU7RUFBcEksQ0FGNkMsQ0FBakQsQ0FENkMsRUFLN0MsQ0FBQyxHQUFHdnFFLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0QsVUFBckMsRUFBaUQsQ0FDNUNRLElBQUksQ0FBQ3RFLFNBQUwsQ0FBZSxHQUFmLENBQUQsSUFDTyxDQUFDLEdBQUduNEMsS0FBSyxDQUFDaTlDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHajlDLEtBQUssQ0FBQzA5QyxXQUFWLEVBQXVCMnNCLDRCQUF2QixFQUFxRDtJQUM1RTMvRCxHQUFHLEVBQUUsQ0FEdUU7SUFFNUVvZ0MsS0FBSyxFQUFFMlIsSUFBSSxDQUFDM3VCLFFBQUwsQ0FBYyxPQUFkO0VBRnFFLENBQXJELEVBR3hCLElBSHdCLEVBR2xCO0VBQUU7RUFIZ0IsRUFHSCxDQUFDLE9BQUQsQ0FIRyxDQUQvQixLQUtPLENBQUMsR0FBRzl0QixLQUFLLENBQUNpOUMsU0FBVixLQUF3QixDQUFDLEdBQUdqOUMsS0FBSyxDQUFDazlDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO0lBQzVEeHlDLEdBQUcsRUFBRSxDQUR1RDtJQUU1RCxTQUFPLG1CQUZxRDtJQUc1RDYxQyxPQUFPLEVBQUU3RCxNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxDQUFDLEdBQUcxOEMsS0FBSyxDQUFDd2dELFFBQVYsR0FDbkM7SUFDQSxZQUFZO01BQ1IsSUFBSStELElBQUksR0FBRyxFQUFYOztNQUNBLEtBQUssSUFBSW4vQixFQUFFLEdBQUcsQ0FBZCxFQUFpQkEsRUFBRSxHQUFHWSxTQUFTLENBQUM3ZixNQUFoQyxFQUF3Q2lmLEVBQUUsRUFBMUMsRUFBOEM7UUFDMUNtL0IsSUFBSSxDQUFDbi9CLEVBQUQsQ0FBSixHQUFXWSxTQUFTLENBQUNaLEVBQUQsQ0FBcEI7TUFDSDs7TUFDRCxPQUFRcTNCLElBQUksQ0FBQy9CLFlBQUwsSUFBcUIrQixJQUFJLENBQUMvQixZQUFMLENBQWtCMzFDLEtBQWxCLENBQXdCMDNDLElBQXhCLEVBQThCOEgsSUFBOUIsQ0FBN0I7SUFDSCxDQVJrQyxFQVFoQyxDQUFDLE9BQUQsQ0FSZ0MsQ0FBMUI7RUFIbUQsQ0FBckMsRUFZeEIsQ0FDQyxDQUFDLEdBQUd2a0QsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDQyxVQUF2QyxFQUFtRCxDQUMvQyxDQUFDLEdBQUduOEMsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDRSxVQUF0QyxFQUFrRCxDQUFDLEdBQUdwOEMsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJoQixJQUFJLENBQUN4MEMsUUFBTCxDQUFjOGEsV0FBZCxDQUEwQnRlLElBQXJELElBQTZELEdBQTdELEdBQW1FLENBQUMsR0FBR3pFLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDakMsY0FBTCxFQUEzQixDQUFuRSxHQUF1SCxHQUF2SCxHQUE2SCxDQUFDLEdBQUd4NkMsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJoQixJQUFJLENBQUN4MEMsUUFBTCxDQUFjOGEsV0FBZCxDQUEwQnluRCxNQUFyRCxDQUE3SCxHQUE0TCxJQUE5TyxFQUFvUDtFQUFFO0VBQXRQLENBRCtDLEVBRS9DLENBQUMsR0FBR3hxRSxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NHLFVBQXBDLEVBQWdELEVBQzNDLENBQUMsR0FBR3I4QyxLQUFLLENBQUNpOUMsU0FBVixFQUFxQixJQUFyQixHQUE0QixDQUFDLEdBQUdqOUMsS0FBSyxDQUFDazlDLGtCQUFWLEVBQThCbDlDLEtBQUssQ0FBQ205QyxRQUFwQyxFQUE4QyxJQUE5QyxFQUFvRCxDQUFDLEdBQUduOUMsS0FBSyxDQUFDNC9DLFVBQVYsRUFBc0JuRCxJQUFJLENBQUNwRSxZQUEzQixFQUF5QyxVQUFVL00sSUFBVixFQUFnQjVnQyxHQUFoQixFQUFxQndFLENBQXJCLEVBQXdCO0lBQzlJLE9BQVEsQ0FBQyxHQUFHbFAsS0FBSyxDQUFDaTlDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHajlDLEtBQUssQ0FBQ2s5QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQztNQUNoRXh5QyxHQUFHLEVBQUV3RSxDQUQyRDtNQUVoRSxTQUFPLENBQUMsR0FBR2xQLEtBQUssQ0FBQzIvQyxjQUFWLEVBQTBCO1FBQzdCLGdDQUFnQ2xELElBQUksQ0FBQ3RFLFNBQUwsQ0FBZXp0QyxHQUFmLENBREg7UUFFN0IsZUFBZSxDQUFDK3hDLElBQUksQ0FBQ3RFLFNBQUwsQ0FBZXp0QyxHQUFmO01BRmEsQ0FBMUI7SUFGeUQsQ0FBcEMsRUFNN0IsQ0FDRSt4QyxJQUFJLENBQUN0RSxTQUFMLENBQWV6dEMsR0FBZixDQUFELElBQ08sQ0FBQyxHQUFHMUssS0FBSyxDQUFDaTlDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHajlDLEtBQUssQ0FBQ2s5QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ1osVUFBdEMsQ0FEL0IsSUFFTSxDQUFDLEdBQUd0OEMsS0FBSyxDQUFDczlDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBSFAsRUFJQyxDQUFDLEdBQUd0OUMsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSyxVQUFyQyxFQUFpRCxDQUM1QyxDQUFDalIsSUFBSSxDQUFDLGFBQUQsQ0FBTixJQUNPLENBQUMsR0FBR3RyQyxLQUFLLENBQUNpOUMsU0FBVixLQUF3QixDQUFDLEdBQUdqOUMsS0FBSyxDQUFDazlDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDVixXQUF0QyxFQUFtRCxDQUFDLEdBQUd4OEMsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJ2dUMsQ0FBQyxHQUFHLENBQS9CLENBQW5ELEVBQXNGO0lBQUU7SUFBeEYsQ0FEL0IsSUFFTSxDQUFDLEdBQUdsUCxLQUFLLENBQUNzOUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FIdUMsRUFJN0MsQ0FBQyxHQUFHdDlDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQztNQUNsQyxTQUFPLENBQUMsR0FBR2w4QyxLQUFLLENBQUMyL0MsY0FBVixFQUEwQixDQUFDLFdBQUQsRUFBYztRQUN2QyxhQUFhbEQsSUFBSSxDQUFDdEUsU0FBTCxDQUFlenRDLEdBQWYsQ0FEMEI7UUFFdkMsa0JBQWtCLENBQUMreEMsSUFBSSxDQUFDdEUsU0FBTCxDQUFlenRDLEdBQWYsQ0FBRCxJQUF3QjRnQyxJQUFJLENBQUNrTixXQUZSO1FBR3ZDLGFBQWEsQ0FBQ2lFLElBQUksQ0FBQ3RFLFNBQUwsQ0FBZXp0QyxHQUFmLENBQUQsSUFBd0IsQ0FBQzRnQyxJQUFJLENBQUNrTjtNQUhKLENBQWQsQ0FBMUI7SUFEMkIsQ0FBdEMsRUFNRyxDQUFDLEdBQUd4NEMsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJuUyxJQUFJLENBQUMsT0FBRCxDQUEvQixDQU5ILEVBTThDO0lBQUU7SUFOaEQsQ0FKNkMsQ0FBakQsQ0FKRCxFQWdCRW1SLElBQUksQ0FBQ3RFLFNBQUwsQ0FBZXp0QyxHQUFmLENBQUQsSUFDTyxDQUFDLEdBQUcxSyxLQUFLLENBQUNpOUMsU0FBVixLQUF3QixDQUFDLEdBQUdqOUMsS0FBSyxDQUFDazlDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DYSxXQUFuQyxFQUFnRCxDQUFDLEdBQUcvOUMsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJuUyxJQUFJLENBQUMsYUFBRCxDQUEvQixDQUFoRCxFQUFpRztJQUFFO0lBQW5HLENBRC9CLElBRU0sQ0FBQyxHQUFHdHJDLEtBQUssQ0FBQ3M5QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQWxCUCxDQU42QixFQXlCN0I7SUFBRTtJQXpCMkIsQ0FBaEM7RUEwQkgsQ0EzQmdGLENBQXBELEVBMkJ6QjtFQUFJO0VBM0JxQixDQURlLEVBQWhELENBRitDLENBQW5ELENBREQsRUFrQ0MsQ0FBQyxHQUFHdDlDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQzhCLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR2grQyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMrQixXQUFyQyxFQUFrRCxDQUM3Q3hCLElBQUksQ0FBQ3BFLFlBQUwsQ0FBa0JvRSxJQUFJLENBQUNqQyxjQUFMLEVBQWxCLEVBQXlDLFlBQXpDLENBQUQsSUFDTyxDQUFDLEdBQUd4NkMsS0FBSyxDQUFDaTlDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHajlDLEtBQUssQ0FBQzA5QyxXQUFWLEVBQXVCa0osb0JBQXZCLEVBQTZDO0lBQ3BFbDhDLEdBQUcsRUFBRSxDQUQrRDtJQUVwRSxjQUFjK3hDLElBQUksQ0FBQ3BFLFlBQUwsQ0FBa0JvRSxJQUFJLENBQUNqQyxjQUFMLEVBQWxCLEVBQXlDLFlBQXpDLENBRnNEO0lBR3BFbHlDLElBQUksRUFBRW0wQyxJQUFJLENBQUNwRSxZQUFMLENBQWtCb0UsSUFBSSxDQUFDakMsY0FBTCxFQUFsQixFQUF5Q3ZpQyxLQUhxQjtJQUlwRUksUUFBUSxFQUFFO0VBSjBELENBQTdDLEVBS3hCLElBTHdCLEVBS2xCO0VBQUU7RUFMZ0IsRUFLSCxDQUFDLFlBQUQsRUFBZSxNQUFmLENBTEcsQ0FEL0IsSUFPTSxDQUFDLEdBQUdyWSxLQUFLLENBQUNzOUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FSd0MsRUFTOUMsQ0FBQyxHQUFHdDlDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2dDLFdBQXRDLEVBQW1ELENBQUMsR0FBR2wrQyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3BFLFlBQUwsQ0FBa0JvRSxJQUFJLENBQUNqQyxjQUFMLEVBQWxCLEVBQXlDdmlDLEtBQXBFLENBQW5ELEVBQStIO0VBQUU7RUFBakksQ0FUOEMsQ0FBbEQsQ0FEOEMsRUFZN0MsQ0FBQ3drQyxJQUFJLENBQUMvRixlQUFQLElBQ08sQ0FBQyxHQUFHMTJDLEtBQUssQ0FBQ2k5QyxTQUFWLEtBQXdCLENBQUMsR0FBR2o5QyxLQUFLLENBQUNrOUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNpQixXQUFyQyxFQUFrRCxDQUN6RSxDQUFDLEdBQUduK0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1Da0MsV0FBbkMsRUFBZ0QsQ0FDNUMsQ0FBQyxHQUFHcCtDLEtBQUssQ0FBQ3E5QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkMsU0FBTyxjQURnQztJQUV2QzlzQyxJQUFJLEVBQUU7RUFGaUMsQ0FBM0MsQ0FENEMsRUFLNUMsQ0FBQyxHQUFHalEsS0FBSyxDQUFDKy9DLGVBQVYsRUFBMkIsTUFBTSxDQUFDLEdBQUcvL0MsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJoQixJQUFJLENBQUN4MEMsUUFBTCxDQUFjcXdDLGFBQWQsQ0FBNEIrMEIsaUNBQXZELENBQWpDLEVBQTRIO0VBQUU7RUFBOUgsQ0FMNEMsQ0FBaEQsQ0FEeUUsRUFRekUsQ0FBQyxHQUFHcnRFLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQ21DLFdBQW5DLEVBQWdELENBQzVDLENBQUMsR0FBR3IrQyxLQUFLLENBQUMrL0MsZUFBVixFQUEyQixDQUFDLEdBQUcvL0MsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJoQixJQUFJLENBQUN4MEMsUUFBTCxDQUFjcXdDLGFBQWQsQ0FBNEJnMUIseUJBQXZELElBQW9GLEdBQS9HLEVBQW9IO0VBQUU7RUFBdEgsQ0FENEMsRUFFNUMsQ0FBQyxHQUFHdHRFLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxFQUE0QyxDQUN4QyxDQUFDLEdBQUdsOEMsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1Db0MsV0FBbkMsRUFBZ0QsQ0FBQyxHQUFHdCtDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDeDBDLFFBQUwsQ0FBY1csV0FBZCxDQUEwQjA0QyxhQUFyRCxDQUFoRCxFQUFxSDtFQUFFO0VBQXZILENBRHdDLENBQTVDLENBRjRDLEVBSzVDLENBQUMsR0FBR3RoRCxLQUFLLENBQUMrL0MsZUFBVixFQUEyQixPQUFPLENBQUMsR0FBRy8vQyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3gwQyxRQUFMLENBQWNxd0MsYUFBZCxDQUE0QmkxQixjQUF2RCxDQUFQLEdBQWdGLEdBQTNHLEVBQWdIO0VBQUU7RUFBbEgsQ0FMNEMsRUFNNUMsQ0FBQyxHQUFHdnRFLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ3FDLFdBQXRDLEVBQW1ELENBQUMsR0FBR3YrQyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3gwQyxRQUFMLENBQWNxd0MsYUFBZCxDQUE0QjFCLGNBQTVCLENBQTJDMXhDLEtBQXRFLElBQStFLElBQS9FLEdBQXNGLENBQUMsR0FBR2xGLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDeDBDLFFBQUwsQ0FBY3F3QyxhQUFkLENBQTRCekIsWUFBNUIsQ0FBeUMzeEMsS0FBcEUsQ0FBdEYsR0FBbUssR0FBbkssR0FBeUssQ0FBQyxHQUFHbEYsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJoQixJQUFJLENBQUN4MEMsUUFBTCxDQUFjVyxXQUFkLENBQTBCaVosR0FBckQsQ0FBekssR0FBcU8sUUFBck8sR0FBZ1AsQ0FBQyxHQUFHN2hCLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDeDBDLFFBQUwsQ0FBY1csV0FBZCxDQUEwQjRrRSxlQUFyRCxDQUFuUyxFQUEwVztFQUFFO0VBQTVXLENBTjRDLEVBTzVDLENBQUMsR0FBR3h0RSxLQUFLLENBQUMrL0MsZUFBVixFQUEyQixNQUFNLENBQUMsR0FBRy8vQyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3gwQyxRQUFMLENBQWNxd0MsYUFBZCxDQUE0Qm0xQiw2QkFBdkQsQ0FBTixHQUE4RixJQUE5RixHQUFxRyxDQUFDLEdBQUd6dEUsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJoQixJQUFJLENBQUN4MEMsUUFBTCxDQUFjVyxXQUFkLENBQTBCeXdDLE9BQXJELENBQXJHLEdBQXFLLEdBQWhNLEVBQXFNO0VBQUU7RUFBdk0sQ0FQNEMsRUFRNUNtRixXQVI0QyxFQVM1QyxDQUFDLEdBQUd4K0MsS0FBSyxDQUFDKy9DLGVBQVYsRUFBMkIsTUFBTSxDQUFDLEdBQUcvL0MsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJoQixJQUFJLENBQUN4MEMsUUFBTCxDQUFjVyxXQUFkLENBQTBCOGtFLGdCQUFyRCxDQUFOLEdBQStFLElBQTFHLEVBQWdIO0VBQUU7RUFBbEgsQ0FUNEMsQ0FBaEQsQ0FSeUUsQ0FBbEQsQ0FEL0IsSUFxQk0sQ0FBQyxHQUFHMXRFLEtBQUssQ0FBQ3M5QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQWpDd0MsRUFrQzlDLENBQUMsR0FBR3Q5QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUN1QyxXQUFyQyxFQUFrRCxFQUM3QyxDQUFDLEdBQUd6K0MsS0FBSyxDQUFDaTlDLFNBQVYsRUFBcUIsSUFBckIsR0FBNEIsQ0FBQyxHQUFHajlDLEtBQUssQ0FBQ2s5QyxrQkFBVixFQUE4Qmw5QyxLQUFLLENBQUNtOUMsUUFBcEMsRUFBOEMsSUFBOUMsRUFBb0QsQ0FBQyxHQUFHbjlDLEtBQUssQ0FBQzQvQyxVQUFWLEVBQXNCbkQsSUFBSSxDQUFDcEUsWUFBTCxDQUFrQm9FLElBQUksQ0FBQ2pDLGNBQUwsRUFBbEIsRUFBeUMsUUFBekMsQ0FBdEIsRUFBMEUsVUFBVXJHLEtBQVYsRUFBaUJoaUMsS0FBakIsRUFBd0J6SCxHQUF4QixFQUE2QjtJQUNwTCxPQUFRLENBQUMsR0FBRzFLLEtBQUssQ0FBQ2k5QyxTQUFWLEtBQXdCLENBQUMsR0FBR2o5QyxLQUFLLENBQUNrOUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM7TUFDakV4eUMsR0FBRyxFQUFFQSxHQUQ0RDtNQUVqRSxTQUFPLENBQUMsR0FBRzFLLEtBQUssQ0FBQzIvQyxjQUFWLEVBQTBCeEwsS0FBSyxTQUEvQjtJQUYwRCxDQUFyQyxFQUc3QixDQUNDLENBQUMsR0FBR24wQyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUN3QyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUcxK0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDO01BQ25DLE9BQUsvSCxLQUFLLENBQUM5ekIsRUFEd0I7TUFFbkMsU0FBTztJQUY0QixDQUF2QyxFQUdHLENBQ0MsQ0FBQyxHQUFHcmdCLEtBQUssQ0FBQysvQyxlQUFWLEVBQTJCLENBQUMsR0FBRy8vQyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQnRKLEtBQUssQ0FBQyxPQUFELENBQWhDLElBQTZDLEdBQXhFLEVBQTZFO0lBQUU7SUFBL0UsQ0FERCxFQUVFQSxLQUFLLENBQUN2dEMsUUFBUCxJQUNPLENBQUMsR0FBRzVHLEtBQUssQ0FBQ2k5QyxTQUFWLEtBQXdCLENBQUMsR0FBR2o5QyxLQUFLLENBQUNrOUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MwQixXQUF0QyxFQUFtRCxJQUFuRCxDQUQvQixJQUVNLENBQUMsR0FBRzUrQyxLQUFLLENBQUNzOUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FKUCxDQUhILEVBUUc7SUFBRTtJQVJMLEVBUWtCcUIsV0FSbEIsQ0FEOEMsRUFVN0N4SyxLQUFLLENBQUNzRSxVQUFOLEtBQXFCLEVBQXRCLElBQ08sQ0FBQyxHQUFHejRDLEtBQUssQ0FBQ2k5QyxTQUFWLEtBQXdCLENBQUMsR0FBR2o5QyxLQUFLLENBQUMwOUMsV0FBVixFQUF1QmtKLG9CQUF2QixFQUE2QztNQUNwRWw4QyxHQUFHLEVBQUUsQ0FEK0Q7TUFFcEUsY0FBY3lwQyxLQUFLLENBQUNzRSxVQUZnRDtNQUdwRW53QyxJQUFJLEVBQUU2ckMsS0FBSyxDQUFDanZDO0lBSHdELENBQTdDLEVBSXhCLElBSndCLEVBSWxCO0lBQUU7SUFKZ0IsRUFJSCxDQUFDLFlBQUQsRUFBZSxNQUFmLENBSkcsQ0FEL0IsSUFNTSxDQUFDLEdBQUdsRixLQUFLLENBQUNzOUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FoQndDLENBQWxELENBREQsRUFtQkViLElBQUksQ0FBQ3pFLFdBQUwsQ0FBaUI3RCxLQUFLLENBQUN4dEMsSUFBdkIsRUFBNkJ3dEMsS0FBSyxDQUFDN3JDLElBQW5DLENBQUQsR0FDTSxDQUFDLEdBQUd0SSxLQUFLLENBQUNxZ0QsY0FBVixHQUEyQixDQUFDLEdBQUdyZ0QsS0FBSyxDQUFDaTlDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHajlDLEtBQUssQ0FBQ2s5QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QztNQUN4Rnh5QyxHQUFHLEVBQUUsQ0FEbUY7TUFFeEYyVixFQUFFLEVBQUU4ekIsS0FBSyxDQUFDOXpCLEVBRjhFO01BR3hGLHVCQUF1Qiw0QkFBVW05QixNQUFWLEVBQWtCO1FBQUUsT0FBU2YsSUFBSSxDQUFDM3VCLFFBQUwsQ0FBY3FtQixLQUFLLENBQUM3ckMsSUFBcEIsQ0FBRCxHQUE4QmsxQyxNQUF0QztNQUFnRCxDQUhIO01BSXhGLFNBQU8sQ0FBQyxHQUFHeDlDLEtBQUssQ0FBQzIvQyxjQUFWLEVBQTBCO1FBQzdCLDJCQUEyQmxELElBQUksQ0FBQzdsQyxTQUFMLENBQWV1OUIsS0FBSyxDQUFDN3JDLElBQXJCLENBREU7UUFFN0JvaUUsV0FBVyxFQUFFLENBQUNqdUIsSUFBSSxDQUFDN2xDLFNBQUwsQ0FBZXU5QixLQUFLLENBQUM3ckMsSUFBckI7TUFGZSxDQUExQixDQUppRjtNQVF4RnF3QyxXQUFXLEVBQUV4RSxLQUFLLENBQUN3RSxXQVJxRTtNQVN4Rmh5QyxJQUFJLEVBQUV3dEMsS0FBSyxDQUFDeHRDO0lBVDRFLENBQXZDLEVBVWxELElBVmtELEVBVTVDO0lBQUc7SUFWeUMsRUFVckJrNEMsV0FWcUIsQ0FBbkQsR0FVNkMsQ0FDM0MsQ0FBQzcrQyxLQUFLLENBQUMycEUsYUFBUCxFQUFzQmx0QixJQUFJLENBQUMzdUIsUUFBTCxDQUFjcW1CLEtBQUssQ0FBQzdyQyxJQUFwQixDQUF0QixDQUQyQyxDQVY3QyxDQUROLEdBY00sQ0FBQyxHQUFHdEksS0FBSyxDQUFDczlDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBakNQLEVBa0NFbkosS0FBSyxDQUFDN3JDLElBQU4sS0FBZSxZQUFoQixHQUNNLENBQUMsR0FBR3RJLEtBQUssQ0FBQ3FnRCxjQUFWLEdBQTJCLENBQUMsR0FBR3JnRCxLQUFLLENBQUNpOUMsU0FBVixLQUF3QixDQUFDLEdBQUdqOUMsS0FBSyxDQUFDazlDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDO01BQ3hGeHlDLEdBQUcsRUFBRSxDQURtRjtNQUV4Rix1QkFBdUIsNEJBQVU4eUMsTUFBVixFQUFrQjtRQUFFLE9BQVNmLElBQUksQ0FBQzN1QixRQUFMLENBQWNxbUIsS0FBSyxDQUFDN3JDLElBQXBCLENBQUQsR0FBOEJrMUMsTUFBdEM7TUFBZ0QsQ0FGSDtNQUd4RixTQUFPLENBQUMsR0FBR3g5QyxLQUFLLENBQUMyL0MsY0FBVixFQUEwQjtRQUM3QiwyQkFBMkJsRCxJQUFJLENBQUM3bEMsU0FBTCxDQUFldTlCLEtBQUssQ0FBQzdyQyxJQUFyQixDQURFO1FBRTdCb2lFLFdBQVcsRUFBRSxDQUFDanVCLElBQUksQ0FBQzdsQyxTQUFMLENBQWV1OUIsS0FBSyxDQUFDN3JDLElBQXJCO01BRmUsQ0FBMUIsQ0FIaUY7TUFPeEZxd0MsV0FBVyxFQUFFeEUsS0FBSyxDQUFDd0UsV0FQcUU7TUFReEZoeUMsSUFBSSxFQUFFd3RDLEtBQUssQ0FBQ3h0QyxJQVI0RTtNQVN4RjQ2QyxRQUFRLEVBQUU7SUFUOEUsQ0FBdkMsRUFVbEQsSUFWa0QsRUFVNUM7SUFBRztJQVZ5QyxFQVVyQnpDLFdBVnFCLENBQW5ELEdBVTZDLENBQzNDLENBQUM5K0MsS0FBSyxDQUFDMnBFLGFBQVAsRUFBc0JsdEIsSUFBSSxDQUFDM3VCLFFBQUwsQ0FBY3FtQixLQUFLLENBQUM3ckMsSUFBcEIsQ0FBdEIsQ0FEMkMsQ0FWN0MsQ0FETixHQWNNLENBQUMsR0FBR3RJLEtBQUssQ0FBQ3M5QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQWhEUCxFQWlERW5KLEtBQUssQ0FBQ3h0QyxJQUFOLEtBQWUsUUFBaEIsSUFDTyxDQUFDLEdBQUczRyxLQUFLLENBQUNpOUMsU0FBVixLQUF3QixDQUFDLEdBQUdqOUMsS0FBSyxDQUFDMDlDLFdBQVYsRUFBdUJxTixzQkFBdkIsRUFBK0M7TUFDdEVyZ0QsR0FBRyxFQUFFLENBRGlFO01BRXRFZzNDLFVBQVUsRUFBRWpGLElBQUksQ0FBQzN1QixRQUFMLENBQWNxbUIsS0FBSyxDQUFDN3JDLElBQXBCLENBRjBEO01BR3RFLHVCQUF1Qiw0QkFBVWsxQyxNQUFWLEVBQWtCO1FBQUUsT0FBU2YsSUFBSSxDQUFDM3VCLFFBQUwsQ0FBY3FtQixLQUFLLENBQUM3ckMsSUFBcEIsQ0FBRCxHQUE4QmsxQyxNQUF0QztNQUFnRCxDQUhyQjtNQUl0RSxTQUFPLENBQUMsR0FBR3g5QyxLQUFLLENBQUMyL0MsY0FBVixFQUEwQjtRQUM3QiwyQkFBMkJsRCxJQUFJLENBQUM3bEMsU0FBTCxDQUFldTlCLEtBQUssQ0FBQzdyQyxJQUFyQixDQURFO1FBRTdCdWlFLFdBQVcsRUFBRSxDQUFDcHVCLElBQUksQ0FBQzdsQyxTQUFMLENBQWV1OUIsS0FBSyxDQUFDN3JDLElBQXJCO01BRmUsQ0FBMUIsQ0FKK0Q7TUFRdEU0MkIsT0FBTyxFQUFFaVYsS0FBSyxDQUFDalYsT0FSdUQ7TUFTdEV5WixXQUFXLEVBQUV4RSxLQUFLLENBQUN3RSxXQVRtRDtNQVV0RXNPLFVBQVUsRUFBRTtJQVYwRCxDQUEvQyxFQVd4QixJQVh3QixFQVdsQjtJQUFFO0lBWGdCLEVBV0gsQ0FBQyxZQUFELEVBQWUscUJBQWYsRUFBc0MsT0FBdEMsRUFBK0MsU0FBL0MsRUFBMEQsYUFBMUQsQ0FYRyxDQUQvQixJQWFNLENBQUMsR0FBR2puRCxLQUFLLENBQUNzOUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0E5RFAsRUErREVuSixLQUFLLENBQUN5RSxTQUFOLElBQW1CNkQsSUFBSSxDQUFDN2xDLFNBQUwsQ0FBZXU5QixLQUFLLENBQUM3ckMsSUFBckIsTUFBK0IsRUFBbkQsSUFDTyxDQUFDLEdBQUd0SSxLQUFLLENBQUNpOUMsU0FBVixLQUF3QixDQUFDLEdBQUdqOUMsS0FBSyxDQUFDazlDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDNkIsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHLytDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCdEosS0FBSyxDQUFDeUUsU0FBakMsQ0FBbkQsRUFBZ0c7SUFBRTtJQUFsRyxDQUQvQixJQUVNLENBQUMsR0FBRzU0QyxLQUFLLENBQUNzOUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FqRVAsRUFrRUViLElBQUksQ0FBQzdsQyxTQUFMLENBQWV1OUIsS0FBSyxDQUFDN3JDLElBQXJCLE1BQStCLEVBQWhDLElBQ08sQ0FBQyxHQUFHdEksS0FBSyxDQUFDaTlDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHajlDLEtBQUssQ0FBQ2s5QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQzhCLFdBQXRDLEVBQW1ELENBQUMsR0FBR2gvQyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmhCLElBQUksQ0FBQzdsQyxTQUFMLENBQWV1OUIsS0FBSyxDQUFDN3JDLElBQXJCLENBQTNCLENBQW5ELEVBQTJHO0lBQUU7SUFBN0csQ0FEL0IsSUFFTSxDQUFDLEdBQUd0SSxLQUFLLENBQUNzOUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FwRVAsQ0FINkIsRUF3RTdCO0lBQUU7SUF4RTJCLENBQWhDO0VBeUVILENBMUVnRixDQUFwRCxFQTBFekI7RUFBSTtFQTFFcUIsQ0FEaUIsRUFBbEQsQ0FsQzhDLENBQWxELENBbENELEVBa0pDLENBQUMsR0FBR3Q5QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMrQyxXQUFyQyxFQUFrRCxDQUM3QyxDQUFDeEMsSUFBSSxDQUFDdEUsU0FBTCxDQUFlLENBQWYsQ0FBRixJQUNPLENBQUMsR0FBR240QyxLQUFLLENBQUNpOUMsU0FBVixLQUF3QixDQUFDLEdBQUdqOUMsS0FBSyxDQUFDazlDLGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDO0lBQy9EeHlDLEdBQUcsRUFBRSxDQUQwRDtJQUUvRCxTQUFPLFVBRndEO0lBRy9EMHlDLE9BQU8sRUFBRVYsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVksVUFBVWMsTUFBVixFQUFrQjtNQUFFLE9BQVFmLElBQUksQ0FBQzlCLGdCQUFMLEVBQVI7SUFBbUMsQ0FBakY7RUFIc0QsQ0FBeEMsRUFJeEIsQ0FDQyxDQUFDLEdBQUczNkMsS0FBSyxDQUFDcTlDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUN2QyxTQUFPLHFCQURnQztJQUV2QzlzQyxJQUFJLEVBQUU7RUFGaUMsQ0FBM0MsQ0FERCxFQUtDLENBQUMsR0FBR2pRLEtBQUssQ0FBQysvQyxlQUFWLEVBQTJCLE1BQU0sQ0FBQyxHQUFHLy9DLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDeDBDLFFBQUwsQ0FBYzhhLFdBQWQsQ0FBMEJxaUMsT0FBckQsQ0FBakMsRUFBZ0c7RUFBRTtFQUFsRyxDQUxELENBSndCLENBRC9CLElBWU0sQ0FBQyxHQUFHcGxELEtBQUssQ0FBQ3M5QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQWJ3QyxFQWM3Q2IsSUFBSSxDQUFDdEUsU0FBTCxDQUFlLENBQWYsQ0FBRCxJQUNPLENBQUMsR0FBR240QyxLQUFLLENBQUNpOUMsU0FBVixLQUF3QixDQUFDLEdBQUdqOUMsS0FBSyxDQUFDazlDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDZ0MsV0FBdEMsRUFBbUQsQ0FDMUUsQ0FBQyxHQUFHbC9DLEtBQUssQ0FBQysvQyxlQUFWLEVBQTJCLENBQUMsR0FBRy8vQyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3gwQyxRQUFMLENBQWNXLFdBQWQsQ0FBMEJraUUsb0JBQXJELElBQTZFLEdBQXhHLEVBQTZHO0VBQUU7RUFBL0csQ0FEMEUsRUFFMUUsQ0FBQyxHQUFHOXFFLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQ2lELFdBQW5DLEVBQWdELENBQUMsR0FBR24vQyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3gwQyxRQUFMLENBQWM4YSxXQUFkLENBQTBCZ29ELE9BQXJELElBQWdFLEdBQWhILEVBQXFIO0VBQUU7RUFBdkgsQ0FGMEUsQ0FBbkQsQ0FEL0IsSUFLTSxDQUFDLEdBQUcvcUUsS0FBSyxDQUFDczlDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBbkJ3QyxFQW9CN0MsQ0FBQ2IsSUFBSSxDQUFDdEUsU0FBTCxDQUFlLENBQWYsQ0FBRixJQUNPLENBQUMsR0FBR240QyxLQUFLLENBQUNpOUMsU0FBVixLQUF3QixDQUFDLEdBQUdqOUMsS0FBSyxDQUFDazlDLGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDO0lBQy9EeHlDLEdBQUcsRUFBRSxDQUQwRDtJQUUvRCxTQUFPLGNBRndEO0lBRy9EMHlDLE9BQU8sRUFBRVYsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVksVUFBVWMsTUFBVixFQUFrQjtNQUFFLE9BQVFmLElBQUksQ0FBQy9CLFlBQUwsRUFBUjtJQUErQixDQUE3RTtFQUhzRCxDQUF4QyxFQUl4QixDQUNDLENBQUMsR0FBRzE2QyxLQUFLLENBQUMrL0MsZUFBVixFQUEyQixDQUFDLEdBQUcvL0MsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJoQixJQUFJLENBQUN4MEMsUUFBTCxDQUFjOGEsV0FBZCxDQUEwQmlvRCxTQUFyRCxJQUFrRSxHQUE3RixFQUFrRztFQUFFO0VBQXBHLENBREQsRUFFQyxDQUFDLEdBQUdockUsS0FBSyxDQUFDcTlDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUN2QyxTQUFPLFVBRGdDO0lBRXZDOXNDLElBQUksRUFBRTtFQUZpQyxDQUEzQyxDQUZELENBSndCLENBRC9CLElBWU0sQ0FBQyxHQUFHalEsS0FBSyxDQUFDczlDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBaEN3QyxDQUFsRCxDQWxKRCxFQW9MRWIsSUFBSSxDQUFDdEUsU0FBTCxDQUFlLENBQWYsQ0FBRCxJQUNPLENBQUMsR0FBR240QyxLQUFLLENBQUNpOUMsU0FBVixLQUF3QixDQUFDLEdBQUdqOUMsS0FBSyxDQUFDazlDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDa0MsV0FBckMsRUFBa0QsQ0FDekUsQ0FBQyxHQUFHcC9DLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ21ELFdBQXRDLEVBQW1ELENBQy9DLENBQUMsR0FBR3IvQyxLQUFLLENBQUMrL0MsZUFBVixFQUEyQixDQUFDLEdBQUcvL0MsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJoQixJQUFJLENBQUN4MEMsUUFBTCxDQUFjVyxXQUFkLENBQTBCa2lFLG9CQUFyRCxJQUE2RSxHQUF4RyxFQUE2RztFQUFFO0VBQS9HLENBRCtDLEVBRS9DLENBQUMsR0FBRzlxRSxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUNvRCxXQUFuQyxFQUFnRCxDQUFDLEdBQUd0L0MsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJoQixJQUFJLENBQUN4MEMsUUFBTCxDQUFjOGEsV0FBZCxDQUEwQmdvRCxPQUFyRCxJQUFnRSxHQUFoSCxFQUFxSDtFQUFFO0VBQXZILENBRitDLENBQW5ELENBRHlFLENBQWxELENBRC9CLElBT00sQ0FBQyxHQUFHL3FFLEtBQUssQ0FBQ3M5QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQTNMUCxDQVp3QixFQXdNeEI7RUFBRztFQXhNcUIsQ0FML0IsQ0FENkMsRUErTTdDLENBQUMsR0FBR3Q5QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUNxRCxXQUF2QyxFQUFvRCxDQUNoRCxDQUFDLEdBQUd2L0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDc0QsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHeC9DLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDeDBDLFFBQUwsQ0FBYzhhLFdBQWQsQ0FBMEJ0ZSxJQUFyRCxJQUE2RCxHQUE3RCxHQUFtRSxDQUFDLEdBQUd6RSxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ2pDLGNBQUwsRUFBM0IsQ0FBbkUsR0FBdUgsR0FBdkgsR0FBNkgsQ0FBQyxHQUFHeDZDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDeDBDLFFBQUwsQ0FBYzhhLFdBQWQsQ0FBMEJ5bkQsTUFBckQsQ0FBN0gsR0FBNEwsSUFBL08sRUFBcVA7RUFBRTtFQUF2UCxDQURnRCxFQUVoRCxDQUFDLEdBQUd4cUUsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DdUQsV0FBcEMsRUFBaUQsRUFDNUMsQ0FBQyxHQUFHei9DLEtBQUssQ0FBQ2k5QyxTQUFWLEVBQXFCLElBQXJCLEdBQTRCLENBQUMsR0FBR2o5QyxLQUFLLENBQUNrOUMsa0JBQVYsRUFBOEJsOUMsS0FBSyxDQUFDbTlDLFFBQXBDLEVBQThDLElBQTlDLEVBQW9ELENBQUMsR0FBR245QyxLQUFLLENBQUM0L0MsVUFBVixFQUFzQm5ELElBQUksQ0FBQ3BFLFlBQTNCLEVBQXlDLFVBQVUvTSxJQUFWLEVBQWdCNWdDLEdBQWhCLEVBQXFCd0UsQ0FBckIsRUFBd0I7SUFDOUksT0FBUSxDQUFDLEdBQUdsUCxLQUFLLENBQUNpOUMsU0FBVixLQUF3QixDQUFDLEdBQUdqOUMsS0FBSyxDQUFDazlDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DO01BQ2hFeHlDLEdBQUcsRUFBRXdFLENBRDJEO01BRWhFLFNBQU8sQ0FBQyxHQUFHbFAsS0FBSyxDQUFDMi9DLGNBQVYsRUFBMEI7UUFDN0IsZ0NBQWdDbEQsSUFBSSxDQUFDdEUsU0FBTCxDQUFlenRDLEdBQWYsQ0FESDtRQUU3QiwwQkFBMEIsQ0FBQyt4QyxJQUFJLENBQUN0RSxTQUFMLENBQWV6dEMsR0FBZjtNQUZFLENBQTFCO0lBRnlELENBQXBDLEVBTTdCLENBQ0UreEMsSUFBSSxDQUFDdEUsU0FBTCxDQUFlenRDLEdBQWYsQ0FBRCxJQUNPLENBQUMsR0FBRzFLLEtBQUssQ0FBQ2k5QyxTQUFWLEtBQXdCLENBQUMsR0FBR2o5QyxLQUFLLENBQUNrOUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0N3QyxXQUF0QyxDQUQvQixJQUVNLENBQUMsR0FBRzEvQyxLQUFLLENBQUNzOUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FIUCxFQUlDLENBQUMsR0FBR3Q5QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUN5SyxXQUFyQyxFQUFrRCxDQUM3QyxDQUFDcmIsSUFBSSxDQUFDLGFBQUQsQ0FBTixJQUNPLENBQUMsR0FBR3RyQyxLQUFLLENBQUNpOUMsU0FBVixLQUF3QixDQUFDLEdBQUdqOUMsS0FBSyxDQUFDazlDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDa0ssV0FBdEMsRUFBbUQsQ0FBQyxHQUFHcG5ELEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCdnVDLENBQUMsR0FBRyxDQUEvQixDQUFuRCxFQUFzRjtJQUFFO0lBQXhGLENBRC9CLElBRU0sQ0FBQyxHQUFHbFAsS0FBSyxDQUFDczlDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLENBSHdDLEVBSTdDaFMsSUFBSSxDQUFDLGFBQUQsQ0FBTCxJQUNPLENBQUMsR0FBR3RyQyxLQUFLLENBQUNpOUMsU0FBVixLQUF3QixDQUFDLEdBQUdqOUMsS0FBSyxDQUFDazlDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDbUssV0FBdEMsRUFBbUQsQ0FDMUUsQ0FBQyxHQUFHcm5ELEtBQUssQ0FBQ3E5QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7TUFDdkMsU0FBTyxTQURnQztNQUV2QzlzQyxJQUFJLEVBQUU7SUFGaUMsQ0FBM0MsQ0FEMEUsQ0FBbkQsQ0FEL0IsSUFPTSxDQUFDLEdBQUdqUSxLQUFLLENBQUNzOUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FYd0MsRUFZOUMsQ0FBQyxHQUFHdDlDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQztNQUNsQyxTQUFPLENBQUMsR0FBR2w4QyxLQUFLLENBQUMyL0MsY0FBVixFQUEwQixDQUFDLFdBQUQsRUFBYztRQUN2QyxhQUFhbEQsSUFBSSxDQUFDdEUsU0FBTCxDQUFlenRDLEdBQWYsQ0FEMEI7UUFFdkMsa0JBQWtCLENBQUMreEMsSUFBSSxDQUFDdEUsU0FBTCxDQUFlenRDLEdBQWYsQ0FBRCxJQUF3QjRnQyxJQUFJLENBQUNrTixXQUZSO1FBR3ZDLGFBQWEsQ0FBQ2lFLElBQUksQ0FBQ3RFLFNBQUwsQ0FBZXp0QyxHQUFmLENBQUQsSUFBd0IsQ0FBQzRnQyxJQUFJLENBQUNrTjtNQUhKLENBQWQsQ0FBMUI7SUFEMkIsQ0FBdEMsRUFNRyxDQUFDLEdBQUd4NEMsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJuUyxJQUFJLENBQUMsT0FBRCxDQUEvQixDQU5ILEVBTThDO0lBQUU7SUFOaEQsQ0FaOEMsQ0FBbEQsQ0FKRCxFQXdCRW1SLElBQUksQ0FBQ3RFLFNBQUwsQ0FBZXp0QyxHQUFmLENBQUQsSUFDTyxDQUFDLEdBQUcxSyxLQUFLLENBQUNpOUMsU0FBVixLQUF3QixDQUFDLEdBQUdqOUMsS0FBSyxDQUFDazlDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1Db0ssV0FBbkMsRUFBZ0QsQ0FBQyxHQUFHdG5ELEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCblMsSUFBSSxDQUFDLGFBQUQsQ0FBL0IsQ0FBaEQsRUFBaUc7SUFBRTtJQUFuRyxDQUQvQixJQUVNLENBQUMsR0FBR3RyQyxLQUFLLENBQUNzOUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0ExQlAsQ0FONkIsRUFpQzdCO0lBQUU7SUFqQzJCLENBQWhDO0VBa0NILENBbkNnRixDQUFwRCxFQW1DekI7RUFBSTtFQW5DcUIsQ0FEZ0IsRUFBakQsQ0FGZ0QsQ0FBcEQsQ0EvTTZDLENBQWpELENBTDZDLENBQWpELENBSmlGLENBQXJELENBQWhDO0FBb1FIOztBQUNEeDlDLGNBQUEsR0FBaUIrN0MsTUFBakI7Ozs7Ozs7Ozs7O0FDNVdhOztBQUNiajhDLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCLEtBQUssQ0FBdEI7O0FBQ0EsSUFBSUUsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUk2N0MsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUUsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHLENBQUMsV0FBRCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRyxDQUFDLFdBQUQsQ0FBakI7O0FBQ0EsU0FBU1YsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxPQUFRLENBQUMsR0FBRzk4QyxLQUFLLENBQUNpOUMsU0FBVixLQUF3QixDQUFDLEdBQUdqOUMsS0FBSyxDQUFDazlDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDcEIsVUFBckMsRUFBaUQsQ0FDN0UsQ0FBQyxHQUFHOTdDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0gsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHLzdDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixTQUE5QixFQUF5Q0YsVUFBekMsRUFBcUQsQ0FDakQsQ0FBQyxHQUFHaDhDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixTQUE5QixFQUF5Q0QsVUFBekMsRUFBcUQsQ0FDakQsQ0FBQyxHQUFHajhDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ0MsVUFBcEMsRUFBZ0QsQ0FBQyxHQUFHbjhDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQkcsUUFBaEIsQ0FBeUJ1bEUsT0FBcEQsQ0FBaEQsRUFBOEc7RUFBRTtFQUFoSCxDQURpRCxFQUVqRCxDQUFDLEdBQUczdEUsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DRSxVQUFuQyxFQUErQyxDQUMzQyxDQUFDLEdBQUdwOEMsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDO0lBQ2xDdUgsU0FBUyxFQUFFN0csTUFBTSxDQUFDMzBDLFFBQVAsQ0FBZ0IwbEUsT0FBaEIsQ0FBd0JDLG1CQUF4QixDQUE0Q3JSO0VBRHJCLENBQXRDLEVBRUcsSUFGSCxFQUVTO0VBQUU7RUFGWCxFQUV3QmxnQixVQUZ4QixDQUQyQyxDQUEvQyxDQUZpRCxFQU9qRCxDQUFDLEdBQUdyOEMsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DSSxVQUFuQyxFQUErQyxDQUMzQyxDQUFDLEdBQUd0OEMsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDO0lBQ2xDdUgsU0FBUyxFQUFFN0csTUFBTSxDQUFDMzBDLFFBQVAsQ0FBZ0IwbEUsT0FBaEIsQ0FBd0JDLG1CQUF4QixDQUE0Q3BSO0VBRHJCLENBQXRDLEVBRUcsSUFGSCxFQUVTO0VBQUU7RUFGWCxFQUV3QmpnQixVQUZ4QixDQUQyQyxDQUEvQyxDQVBpRCxDQUFyRCxDQURpRCxDQUFyRCxDQUQ2QyxDQUFqRCxDQUQ2RSxDQUFqRCxDQUFoQztBQW1CSDs7QUFDRHo4QyxjQUFBLEdBQWlCKzdDLE1BQWpCOzs7Ozs7Ozs7OztBQ2xDYTs7QUFDYmo4Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJNjdDLFVBQVUsR0FBRztFQUNiejdCLEVBQUUsRUFBRSxRQURTO0VBRWIsU0FBTztBQUZNLENBQWpCO0FBSUEsSUFBSTA3QixVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJRSxVQUFVLEdBQUc7RUFBRXo1QyxJQUFJLEVBQUU7QUFBUixDQUFqQjtBQUNBLElBQUkwNUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHLENBQUMsTUFBRCxDQUFqQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFOTVDLElBQUksRUFBRTtBQUFSLENBQWxCO0FBQ0EsSUFBSXE3QyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRXg3QyxJQUFJLEVBQUU7QUFBUixDQUFsQjtBQUNBLElBQUl5N0MsV0FBVyxHQUFHO0VBQUV6N0MsSUFBSSxFQUFFO0FBQVIsQ0FBbEI7QUFDQSxJQUFJMDdDLFdBQVcsR0FBRztFQUFFMTdDLElBQUksRUFBRTtBQUFSLENBQWxCO0FBQ0EsSUFBSTI3QyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7O0FBQ0EsSUFBSUMsV0FBVyxHQUFHLGFBQWMsQ0FBQyxHQUFHeitDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0RSxhQUFjLENBQUMsR0FBR2w4QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDcEQsYUFBYyxDQUFDLEdBQUdsOEMsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO0VBQzdDLFNBQU8sbUJBRHNDO0VBRTdDeDVDLElBQUksRUFBRTtBQUZ1QyxDQUFuQyxFQUdYLDBCQUhXLENBRHNDLENBQTFDLENBRHdELENBQTFDLEVBTzdCLENBQUM7QUFBRTtBQVAwQixDQUFoQzs7QUFRQSxJQUFJZzhDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUNkcDhDLElBQUksRUFBRSwwREFEUTtFQUVkaWEsTUFBTSxFQUFFO0FBRk0sQ0FBbEI7QUFJQSxJQUFJb2lDLFdBQVcsR0FBRztFQUNkLFNBQU8sTUFETztFQUVkcjhDLElBQUksRUFBRSw4QkFGUTtFQUdkaWEsTUFBTSxFQUFFO0FBSE0sQ0FBbEI7O0FBS0EsU0FBU2svQixNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELElBQUlDLGtCQUFrQixHQUFHLENBQUMsR0FBRy84QyxLQUFLLENBQUNnOUMsZ0JBQVYsRUFBNEIsU0FBNUIsQ0FBekI7O0VBQ0EsT0FBUSxDQUFDLEdBQUdoOUMsS0FBSyxDQUFDaTlDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHajlDLEtBQUssQ0FBQ2s5QyxrQkFBVixFQUE4QixRQUE5QixFQUF3Q3BCLFVBQXhDLEVBQW9ELENBQ2hGLENBQUMsR0FBRzk3QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNILFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBRy83QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNGLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2g4QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNELFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR2o4QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMsSUFBckMsRUFBMkMsQ0FDdkMsQ0FBQyxHQUFHbDhDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQ0MsVUFBbkMsRUFBK0MsQ0FDM0MsQ0FBQyxHQUFHbjhDLEtBQUssQ0FBQ3E5QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkMsU0FBTyw4QkFEZ0M7SUFFdkM5c0MsSUFBSSxFQUFFO0VBRmlDLENBQTNDLENBRDJDLENBQS9DLENBRHVDLENBQTNDLENBRDZDLEVBUzdDLENBQUMsR0FBR2pRLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ0UsVUFBckMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHcDhDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ0csVUFBdEMsRUFBa0QsQ0FBQyxHQUFHcjhDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQkcsUUFBaEIsQ0FBeUJ5bEUsY0FBcEQsQ0FBbEQsRUFBdUg7RUFBRTtFQUF6SCxDQUQ2QyxFQUU3QyxDQUFDLEdBQUc3dEUsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DSSxVQUFwQyxFQUFnRCxDQUM1QyxDQUFDLEdBQUd0OEMsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR2w4QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7SUFDL0J4NUMsSUFBSSxFQUFFaTZDLE1BQU0sQ0FBQzUxQyxVQUFQLEdBQW9CLHFCQUFwQixHQUE0QztFQURuQixDQUFuQyxFQUVHLENBQUMsR0FBRy9HLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCZCxNQUFNLENBQUM1MUMsVUFBUCxHQUN4QjYxQyxNQUFNLENBQUMzMEMsUUFBUCxDQUFnQlcsV0FBaEIsQ0FBNEJJLFFBREosR0FFeEI0ekMsTUFBTSxDQUFDMzBDLFFBQVAsQ0FBZ0IwaUIsYUFBaEIsQ0FBOEIwK0IscUJBRmpDLENBRkgsRUFJNEQ7RUFBRTtFQUo5RCxFQUlpRjlNLFVBSmpGLENBRHNDLENBQTFDLENBRDRDLEVBUTVDLENBQUMsR0FBR3Y4QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbDhDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQ00sV0FBbkMsRUFBZ0QsQ0FBQyxHQUFHeDhDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQkcsUUFBaEIsQ0FBeUIwbEUsS0FBcEQsQ0FBaEQsRUFBNEc7RUFBRTtFQUE5RyxDQURzQyxDQUExQyxDQVI0QyxFQVc1QyxDQUFDLEdBQUc5dEUsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR2w4QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7SUFDL0J2L0IsTUFBTSxFQUFFLFFBRHVCO0lBRS9Cc3VELEdBQUcsRUFBRSxxQkFGMEI7SUFHL0IsU0FBTyxnQkFId0I7SUFJL0I3dEIsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO01BQUUsT0FBUVosTUFBTSxDQUFDaEMsY0FBUCxDQUFzQixNQUF0QixDQUFSO0lBQXlDLENBQXZGO0VBSnNCLENBQW5DLEVBS0csQ0FBQyxHQUFHNTZDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQjZnRSxTQUFoQixDQUEwQmlGLFdBQXJELElBQW9FLE9BTHZFLEVBS2dGO0VBQUU7RUFMbEYsQ0FEc0MsQ0FBMUMsQ0FYNEMsQ0FBaEQsQ0FGNkMsQ0FBakQsQ0FUNkMsRUFnQzdDLENBQUMsR0FBRy90RSxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUM2QixXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUcvOUMsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDOEIsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHaCtDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQkcsUUFBaEIsQ0FBeUI4aUUsYUFBcEQsQ0FBbkQsRUFBdUg7RUFBRTtFQUF6SCxDQUQ4QyxFQUU5QyxDQUFDLEdBQUdsckUsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DK0IsV0FBcEMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHaitDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUdsOEMsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DZ0MsV0FBbkMsRUFBZ0QsQ0FBQyxHQUFHbCtDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQkcsUUFBaEIsQ0FBeUI4aUUsYUFBcEQsQ0FBaEQsRUFBb0g7RUFBRTtFQUF0SCxDQURzQyxDQUExQyxDQUQ2QyxFQUk3QyxDQUFDLEdBQUdsckUsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR2w4QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUNpQyxXQUFuQyxFQUFnRCxDQUFDLEdBQUduK0MsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzMwQyxRQUFQLENBQWdCRyxRQUFoQixDQUF5QitqRSxvQkFBcEQsQ0FBaEQsRUFBMkg7RUFBRTtFQUE3SCxDQURzQyxDQUExQyxDQUo2QyxFQU83QyxDQUFDLEdBQUduc0UsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR2w4QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUNrQyxXQUFuQyxFQUFnRCxDQUFDLEdBQUdwK0MsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzMwQyxRQUFQLENBQWdCRyxRQUFoQixDQUF5QnVsRSxPQUFwRCxDQUFoRCxFQUE4RztFQUFFO0VBQWhILENBRHNDLENBQTFDLENBUDZDLENBQWpELENBRjhDLENBQWxELENBaEM2QyxFQThDN0MsQ0FBQyxHQUFHM3RFLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ21DLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR3IrQyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNvQyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUd0K0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DLElBQW5DLEVBQXlDLENBQUMsR0FBR2w4QyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmIsTUFBTSxDQUFDMzBDLFFBQVAsQ0FBZ0JHLFFBQWhCLENBQXlCNGxFLE1BQXpCLENBQWdDQywwQkFBM0QsQ0FBekMsRUFBaUk7RUFBRTtFQUFuSSxDQUQ4QyxFQUU5QyxDQUFDLEdBQUdqdUUsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DLElBQW5DLEVBQXlDLENBQUMsR0FBR2w4QyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmIsTUFBTSxDQUFDMzBDLFFBQVAsQ0FBZ0JHLFFBQWhCLENBQXlCNGxFLE1BQXpCLENBQWdDRSx5QkFBM0QsQ0FBekMsRUFBZ0k7RUFBRTtFQUFsSSxDQUY4QyxFQUc5QyxDQUFDLEdBQUdsdUUsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DLElBQW5DLEVBQXlDLENBQUMsR0FBR2w4QyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmIsTUFBTSxDQUFDMzBDLFFBQVAsQ0FBZ0JHLFFBQWhCLENBQXlCNGxFLE1BQXpCLENBQWdDRyxrQ0FBM0QsQ0FBekMsRUFBeUk7RUFBRTtFQUEzSSxDQUg4QyxDQUFsRCxDQUQ4QyxFQU05QyxDQUFDLEdBQUdudUUsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDcUMsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHditDLEtBQUssQ0FBQ3E5QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkMsU0FBTyxVQURnQztJQUV2QzlzQyxJQUFJLEVBQUU7RUFGaUMsQ0FBM0MsQ0FEOEMsRUFLOUMsQ0FBQyxHQUFHalEsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDc0MsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHeCtDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQkcsUUFBaEIsQ0FBeUI0bEUsTUFBekIsQ0FBZ0NJLDJCQUEzRCxDQUFuRCxFQUE0STtFQUFFO0VBQTlJLENBTDhDLENBQWxELENBTjhDLEVBYTlDM3ZCLFdBYjhDLENBQWxELENBOUM2QyxDQUFqRCxDQUQ2QyxDQUFqRCxDQUQ2QyxDQUFqRCxDQURnRixFQW1FaEYsQ0FBQyxHQUFHeitDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3dDLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBRzErQyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUN5QyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUczK0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDMEMsV0FBdEMsRUFBbUQsQ0FDL0MsQ0FBQyxHQUFHNStDLEtBQUssQ0FBQ3E5QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkMsU0FBTyxnQkFEZ0M7SUFFdkM5c0MsSUFBSSxFQUFFO0VBRmlDLENBQTNDLENBRCtDLEVBSy9DLENBQUMsR0FBR2pRLEtBQUssQ0FBQysvQyxlQUFWLEVBQTJCLE1BQU0sQ0FBQyxHQUFHLy9DLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQkcsUUFBaEIsQ0FBeUI0bEUsTUFBekIsQ0FBZ0NLLGVBQTNELENBQWpDLEVBQThHO0VBQUU7RUFBaEgsQ0FMK0MsQ0FBbkQsQ0FEOEMsRUFROUMsQ0FBQyxHQUFHcnVFLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQzJDLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBRzcrQyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM0QyxXQUFuQyxFQUFnRCxDQUM1QyxDQUFDLEdBQUc5K0MsS0FBSyxDQUFDcTlDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUN2QyxTQUFPLG9CQURnQztJQUV2QzlzQyxJQUFJLEVBQUU7RUFGaUMsQ0FBM0MsQ0FENEMsQ0FBaEQsQ0FEOEMsRUFPOUMsQ0FBQyxHQUFHalEsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DNkMsV0FBbkMsRUFBZ0QsQ0FDNUMsQ0FBQyxHQUFHLytDLEtBQUssQ0FBQ3E5QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkMsU0FBTyxvQkFEZ0M7SUFFdkM5c0MsSUFBSSxFQUFFO0VBRmlDLENBQTNDLENBRDRDLENBQWhELENBUDhDLENBQWxELENBUjhDLENBQWxELENBRDhDLENBQWxELENBbkVnRixDQUFwRCxDQUFoQztBQTZGSDs7QUFDRG5RLGNBQUEsR0FBaUIrN0MsTUFBakI7Ozs7Ozs7Ozs7O0FDaEphOztBQUNiajhDLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCLEtBQUssQ0FBdEI7O0FBQ0EsSUFBSUUsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUk2N0MsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUUsVUFBVSxHQUFHO0VBQ2J6NUMsSUFBSSxFQUFFLGdCQURPO0VBRWIsU0FBTztBQUZNLENBQWpCO0FBSUEsSUFBSTA1QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxXQUFXLEdBQUcsQ0FBQyxXQUFELENBQWxCO0FBQ0EsSUFBSXVCLFdBQVcsR0FBRztFQUNkcjdDLElBQUksRUFBRSxXQURRO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSXM3QyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUcsQ0FBQyxXQUFELENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQ2QsU0FBTyx5SEFETztFQUVkNTdDLElBQUksRUFBRSxpQ0FGUTtFQUdkaWEsTUFBTSxFQUFFO0FBSE0sQ0FBbEI7O0FBS0EsU0FBU2svQixNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELElBQUlDLGtCQUFrQixHQUFHLENBQUMsR0FBRy84QyxLQUFLLENBQUNnOUMsZ0JBQVYsRUFBNEIsU0FBNUIsQ0FBekI7O0VBQ0EsT0FBUSxDQUFDLEdBQUdoOUMsS0FBSyxDQUFDaTlDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHajlDLEtBQUssQ0FBQ2s5QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3BCLFVBQXJDLEVBQWlELENBQzdFLENBQUMsR0FBRzk3QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNILFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBRy83QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NGLFVBQXBDLEVBQWdELENBQUMsR0FBR2g4QyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3gwQyxRQUFMLENBQWNHLFFBQWQsQ0FBdUJrbUUsUUFBbEQsSUFBOEQsR0FBOUcsRUFBbUg7RUFBRTtFQUFySCxDQUQ2QyxFQUU3QyxDQUFDLEdBQUd0dUUsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDRCxVQUF0QyxFQUFrRCxDQUFDLEdBQUdqOEMsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJoQixJQUFJLENBQUN4MEMsUUFBTCxDQUFjc21FLElBQWQsQ0FBbUJDLGdCQUFuQixDQUFvQ0MsYUFBL0QsQ0FBbEQsRUFBaUk7RUFBRTtFQUFuSSxDQUY2QyxFQUc3QyxDQUFDLEdBQUd6dUUsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DQyxVQUFuQyxFQUErQyxDQUMzQyxDQUFDLEdBQUduOEMsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRSxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdwOEMsS0FBSyxDQUFDcTlDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUN2QyxTQUFPLFVBRGdDO0lBRXZDOXNDLElBQUksRUFBRTtFQUZpQyxDQUEzQyxDQUQ2QyxDQUFqRCxDQUQyQyxFQU8zQyxDQUFDLEdBQUdqUSxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNHLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR3I4QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NJLFVBQXRDLEVBQWtELENBQUMsR0FBR3Q4QyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3gwQyxRQUFMLENBQWNzbUUsSUFBZCxDQUFtQkMsZ0JBQW5CLENBQW9DRSxpQkFBL0QsQ0FBbEQsRUFBcUk7RUFBRTtFQUF2SSxDQUQ2QyxFQUU3QyxDQUFDLEdBQUcxdUUsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DSyxVQUFuQyxFQUErQyxDQUMzQyxDQUFDLEdBQUd2OEMsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDO0lBQ2xDdUgsU0FBUyxFQUFFaEgsSUFBSSxDQUFDeDBDLFFBQUwsQ0FBY3NtRSxJQUFkLENBQW1CQyxnQkFBbkIsQ0FBb0NHO0VBRGIsQ0FBdEMsRUFFRyxJQUZILEVBRVM7RUFBRTtFQUZYLEVBRXdCbnlCLFdBRnhCLENBRDJDLENBQS9DLENBRjZDLENBQWpELENBUDJDLEVBZTNDLENBQUMsR0FBR3g4QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMsSUFBckMsRUFBMkMsQ0FDdkMsQ0FBQyxHQUFHbDhDLEtBQUssQ0FBQ3E5QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkMsU0FBTyx1QkFEZ0M7SUFFdkM5c0MsSUFBSSxFQUFFO0VBRmlDLENBQTNDLENBRHVDLENBQTNDLENBZjJDLENBQS9DLENBSDZDLEVBeUI3QyxDQUFDLEdBQUdqUSxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM2QixXQUFuQyxFQUFnRCxDQUM1QyxDQUFDLEdBQUcvOUMsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDOEIsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHaCtDLEtBQUssQ0FBQ3E5QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkMsU0FBTyxVQURnQztJQUV2QzlzQyxJQUFJLEVBQUU7RUFGaUMsQ0FBM0MsQ0FEOEMsQ0FBbEQsQ0FENEMsRUFPNUMsQ0FBQyxHQUFHalEsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDK0IsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHaitDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ2dDLFdBQXRDLEVBQW1ELENBQUMsR0FBR2wrQyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3gwQyxRQUFMLENBQWNzbUUsSUFBZCxDQUFtQkMsZ0JBQW5CLENBQ3pFSSxvQ0FEOEMsQ0FBbkQsRUFDNEM7RUFBRTtFQUQ5QyxDQUQ4QyxFQUc5QyxDQUFDLEdBQUc1dUUsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DaUMsV0FBbkMsRUFBZ0QsQ0FDNUMsQ0FBQyxHQUFHbitDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQztJQUNsQ3VILFNBQVMsRUFBRWhILElBQUksQ0FBQ3gwQyxRQUFMLENBQWNzbUUsSUFBZCxDQUFtQkMsZ0JBQW5CLENBQ05LO0VBRjZCLENBQXRDLEVBR0csSUFISCxFQUdTO0VBQUU7RUFIWCxFQUd3Qnp3QixXQUh4QixDQUQ0QyxDQUFoRCxDQUg4QyxDQUFsRCxDQVA0QyxFQWlCNUMsQ0FBQyxHQUFHcCtDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQyxJQUFyQyxFQUEyQyxDQUN2QyxDQUFDLEdBQUdsOEMsS0FBSyxDQUFDcTlDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUN2QyxTQUFPLHVCQURnQztJQUV2QzlzQyxJQUFJLEVBQUU7RUFGaUMsQ0FBM0MsQ0FEdUMsQ0FBM0MsQ0FqQjRDLENBQWhELENBekI2QyxFQWlEN0MsQ0FBQyxHQUFHalEsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDbUMsV0FBdEMsRUFBbUQsQ0FDL0MsQ0FBQyxHQUFHcitDLEtBQUssQ0FBQysvQyxlQUFWLEVBQTJCLENBQUMsR0FBRy8vQyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3gwQyxRQUFMLENBQWNzbUUsSUFBZCxDQUFtQkMsZ0JBQW5CLENBQW9DTSx3QkFBL0QsSUFBMkYsR0FBdEgsRUFBMkg7RUFBRTtFQUE3SCxDQUQrQyxFQUUvQyxDQUFDLEdBQUc5dUUsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1Db0MsV0FBbkMsRUFBZ0QsQ0FBQyxHQUFHdCtDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDeDBDLFFBQUwsQ0FBY3NtRSxJQUFkLENBQW1CQyxnQkFBbkIsQ0FBb0NPLHFCQUEvRCxDQUFoRCxFQUF1STtFQUFFO0VBQXpJLENBRitDLENBQW5ELENBakQ2QyxDQUFqRCxDQUQ2RSxDQUFqRCxDQUFoQztBQXdESDs7QUFDRGp2RSxjQUFBLEdBQWlCKzdDLE1BQWpCOzs7Ozs7Ozs7OztBQzNGYTs7QUFDYmo4Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJMjlDLFlBQVksR0FBRyxTQUFmQSxZQUFlLENBQVUvM0MsQ0FBVixFQUFhO0VBQUUsT0FBUSxDQUFDLEdBQUc3RixLQUFLLENBQUM2OUMsV0FBVixFQUF1QixpQkFBdkIsR0FBMkNoNEMsQ0FBQyxHQUFHQSxDQUFDLEVBQWhELEVBQW9ELENBQUMsR0FBRzdGLEtBQUssQ0FBQzg5QyxVQUFWLEdBQXBELEVBQTZFajRDLENBQXJGO0FBQTBGLENBQTVIOztBQUNBLElBQUlpMkMsVUFBVSxHQUFHO0VBQ2J6N0IsRUFBRSxFQUFFLE9BRFM7RUFFYixTQUFPO0FBRk0sQ0FBakI7QUFJQSxJQUFJMDdCLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUNidnhDLEdBQUcsRUFBRSxDQURRO0VBRWIsU0FBTyxvQkFGTTtFQUdidXBDLElBQUksRUFBRTtBQUhPLENBQWpCO0FBS0EsSUFBSWtJLFVBQVUsR0FBRztFQUNienhDLEdBQUcsRUFBRSxDQURRO0VBRWIsU0FBTztBQUZNLENBQWpCO0FBSUEsSUFBSTB4QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJdUIsV0FBVyxHQUFHO0VBQUUsT0FBSztBQUFQLENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHLENBQUMsYUFBRCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUNkdnpDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTyxlQUZPO0VBR2R1cEMsSUFBSSxFQUFFO0FBSFEsQ0FBbEI7QUFLQSxJQUFJaUssV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsT0FBSztBQUFQLENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHLENBQUMsYUFBRCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUNkM3pDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTyxPQUZPO0VBR2R1cEMsSUFBSSxFQUFFO0FBSFEsQ0FBbEI7QUFLQSxJQUFJcUssV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQ2QsU0FBTyx5SEFETztFQUVkNzdDLElBQUksRUFBRTtBQUZRLENBQWxCOztBQUlBLFNBQVNtNUMsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxJQUFJd04saUJBQWlCLEdBQUcsQ0FBQyxHQUFHdHFELEtBQUssQ0FBQ2c5QyxnQkFBVixFQUE0QixRQUE1QixDQUF4Qjs7RUFDQSxJQUFJRCxrQkFBa0IsR0FBRyxDQUFDLEdBQUcvOEMsS0FBSyxDQUFDZzlDLGdCQUFWLEVBQTRCLFNBQTVCLENBQXpCOztFQUNBLE9BQVEsQ0FBQyxHQUFHaDlDLEtBQUssQ0FBQ2k5QyxTQUFWLEtBQXdCLENBQUMsR0FBR2o5QyxLQUFLLENBQUNrOUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNwQixVQUFyQyxFQUFpRCxDQUM1RVcsSUFBSSxDQUFDdmxDLGVBQU4sSUFDTyxDQUFDLEdBQUdsWCxLQUFLLENBQUNpOUMsU0FBVixLQUF3QixDQUFDLEdBQUdqOUMsS0FBSyxDQUFDMDlDLFdBQVYsRUFBdUI0TSxpQkFBdkIsRUFBMEM7SUFBRTUvQyxHQUFHLEVBQUU7RUFBUCxDQUExQyxDQUQvQixJQUVNLENBQUMsR0FBRzFLLEtBQUssQ0FBQ3M5QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQUh1RSxFQUk3RSxDQUFDLEdBQUd0OUMsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDO0lBQ2pDLFNBQU8sdUNBRDBCO0lBRWpDcUUsT0FBTyxFQUFFN0QsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVksQ0FBQyxHQUFHMThDLEtBQUssQ0FBQ3dnRCxRQUFWLEdBQ25DO0lBQ0EsWUFBWTtNQUNSLElBQUkrRCxJQUFJLEdBQUcsRUFBWDs7TUFDQSxLQUFLLElBQUluL0IsRUFBRSxHQUFHLENBQWQsRUFBaUJBLEVBQUUsR0FBR1ksU0FBUyxDQUFDN2YsTUFBaEMsRUFBd0NpZixFQUFFLEVBQTFDLEVBQThDO1FBQzFDbS9CLElBQUksQ0FBQ24vQixFQUFELENBQUosR0FBV1ksU0FBUyxDQUFDWixFQUFELENBQXBCO01BQ0g7O01BQ0QsT0FBUXEzQixJQUFJLENBQUNoQixLQUFMLElBQWNnQixJQUFJLENBQUNoQixLQUFMLENBQVcxMkMsS0FBWCxDQUFpQjAzQyxJQUFqQixFQUF1QjhILElBQXZCLENBQXRCO0lBQ0gsQ0FSa0MsRUFRaEMsQ0FBQyxPQUFELENBUmdDLENBQTFCO0VBRndCLENBQXJDLEVBV0csQ0FDQyxDQUFDLEdBQUd2a0QsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DSCxVQUFwQyxFQUFnRCxDQUFDLEdBQUcvN0MsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJoQixJQUFJLENBQUN4MEMsUUFBTCxDQUFjRyxRQUFkLENBQXVCMmlFLE9BQWxELElBQTZELEdBQTdHLEVBQWtIO0VBQUU7RUFBcEgsQ0FERCxFQUVDLENBQUMsR0FBRy9xRSxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NGLFVBQXRDLEVBQWtELENBQUMsR0FBR2g4QyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3gwQyxRQUFMLENBQWNzbUUsSUFBZCxDQUFtQlMsZUFBbkIsQ0FBbUNDLGtCQUE5RCxDQUFsRCxFQUFxSTtFQUFFO0VBQXZJLENBRkQsRUFHRXh5QixJQUFJLENBQUNoekMsT0FBTCxLQUFpQixFQUFqQixJQUNHLEVBQUVnekMsSUFBSSxDQUFDN2xDLFNBQUwsQ0FBZWc5QixRQUFmLElBQTJCNkksSUFBSSxDQUFDN2xDLFNBQUwsQ0FBZXcwQixRQUE1QyxDQURILElBRUdxUixJQUFJLENBQUNqQixNQUFMLEtBQWdCLFFBRnBCLElBR08sQ0FBQyxHQUFHeDdDLEtBQUssQ0FBQ2k5QyxTQUFWLEtBQXdCLENBQUMsR0FBR2o5QyxLQUFLLENBQUNrOUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNqQixVQUFyQyxFQUFpRCxDQUFDLEdBQUdqOEMsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJoQixJQUFJLENBQUNoekMsT0FBaEMsQ0FBakQsRUFBMkY7RUFBRTtFQUE3RixDQUgvQixJQUlNLENBQUMsR0FBR3pKLEtBQUssQ0FBQ3M5QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQVBQLEVBUUViLElBQUksQ0FBQ2pCLE1BQUwsS0FBZ0Isa0JBQWpCLElBQ08sQ0FBQyxHQUFHeDdDLEtBQUssQ0FBQ2k5QyxTQUFWLEtBQXdCLENBQUMsR0FBR2o5QyxLQUFLLENBQUNrOUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNmLFVBQXJDLEVBQWlELENBQ3hFLENBQUMsR0FBR244QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNFLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR3A4QyxLQUFLLENBQUNxOUMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDLFNBQU8sZ0JBRGdDO0lBRXZDOXNDLElBQUksRUFBRTtFQUZpQyxDQUEzQyxDQUQ2QyxFQUs3QyxDQUFDLEdBQUdqUSxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NHLFVBQXRDLEVBQWtELENBQzlDLENBQUMsR0FBR3I4QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NJLFVBQXRDLEVBQWtELENBQUMsR0FBR3Q4QyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3gwQyxRQUFMLENBQWNxd0MsYUFBZCxDQUE0QmxOLFFBQTVCLENBQXFDOGpDLE9BQWhFLENBQWxELEVBQTRIO0VBQUU7RUFBOUgsQ0FEOEMsRUFFOUMsQ0FBQyxHQUFHbHZFLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQ0ssVUFBdEMsRUFBa0QsQ0FBQyxHQUFHdjhDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDeDBDLFFBQUwsQ0FBY3F3QyxhQUFkLENBQTRCbE4sUUFBNUIsQ0FBcUMrakMsT0FBaEUsSUFBMkUsR0FBN0gsRUFBa0k7RUFBRTtFQUFwSSxDQUY4QyxDQUFsRCxDQUw2QyxDQUFqRCxDQUR3RSxDQUFqRCxDQUQvQixJQWFNLENBQUMsR0FBR252RSxLQUFLLENBQUNzOUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FyQlAsRUFzQkMsQ0FBQyxHQUFHdDlDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ00sV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHeDhDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QzZCLFdBQXZDLEVBQW9ELENBQUMsR0FBRy85QyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3gwQyxRQUFMLENBQWNzbUUsSUFBZCxDQUFtQlMsZUFBbkIsQ0FBbUNJLGNBQTlELENBQXBELEVBQW1JO0VBQUU7RUFBckksQ0FEOEMsRUFFOUMsQ0FBQyxHQUFHcHZFLEtBQUssQ0FBQ3FnRCxjQUFWLEVBQTBCLENBQUMsR0FBR3JnRCxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsT0FBOUIsRUFBdUM7SUFDN0Q3N0IsRUFBRSxFQUFFLFVBRHlEO0lBRTdELHVCQUF1QnE4QixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO01BQUUsT0FBU2YsSUFBSSxDQUFDM3VCLFFBQUwsQ0FBYzhsQixRQUFmLEdBQTJCNEosTUFBbkM7SUFBNkMsQ0FBM0YsQ0FGc0M7SUFHN0QsU0FBTyxDQUFDLEdBQUd4OUMsS0FBSyxDQUFDMi9DLGNBQVYsRUFBMEIsQ0FBQyx3QkFBRCxFQUEyQjtNQUNwRDB2QixXQUFXLEVBQUU1eUIsSUFBSSxDQUFDN2xDLFNBQUwsQ0FBZWc5QjtJQUR3QixDQUEzQixDQUExQixDQUhzRDtJQU03RGp0QyxJQUFJLEVBQUUsTUFOdUQ7SUFPN0RneUMsV0FBVyxFQUFFOEQsSUFBSSxDQUFDeDBDLFFBQUwsQ0FBY3NtRSxJQUFkLENBQW1CUyxlQUFuQixDQUFtQ007RUFQYSxDQUF2QyxFQVF2QixJQVJ1QixFQVFqQjtFQUFHO0VBUmMsRUFRTXR4QixXQVJOLENBQTFCLEVBUThDLENBQzFDLENBQUNoK0MsS0FBSyxDQUFDeWdELFVBQVAsRUFBbUJoRSxJQUFJLENBQUMzdUIsUUFBTCxDQUFjOGxCLFFBQWpDLENBRDBDLENBUjlDLENBRjhDLEVBYTlDLENBQUMsR0FBRzV6QyxLQUFLLENBQUNxOUMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDLFNBQU8sMENBRGdDO0lBRXZDOXNDLElBQUksRUFBRTtFQUZpQyxDQUEzQyxDQWI4QyxFQWlCN0N3c0MsSUFBSSxDQUFDN2xDLFNBQUwsQ0FBZWc5QixRQUFmLEtBQTRCLEVBQTdCLElBQ08sQ0FBQyxHQUFHNXpDLEtBQUssQ0FBQ2k5QyxTQUFWLEtBQXdCLENBQUMsR0FBR2o5QyxLQUFLLENBQUNrOUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NlLFdBQXRDLEVBQW1ELENBQUMsR0FBR2orQyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmhCLElBQUksQ0FBQzdsQyxTQUFMLENBQWVnOUIsUUFBMUMsQ0FBbkQsRUFBd0c7RUFBRTtFQUExRyxDQUQvQixJQUVNLENBQUMsR0FBRzV6QyxLQUFLLENBQUNzOUMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0MsSUFBdEMsQ0FuQndDLENBQWxELENBdEJELEVBMkNDLENBQUMsR0FBR3Q5QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNnQyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUdsK0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLE9BQTlCLEVBQXVDaUMsV0FBdkMsRUFBb0QsQ0FBQyxHQUFHbitDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDeDBDLFFBQUwsQ0FBY3NtRSxJQUFkLENBQW1CUyxlQUFuQixDQUFtQ08sY0FBOUQsQ0FBcEQsRUFBbUk7RUFBRTtFQUFySSxDQUQ4QyxFQUU5QyxDQUFDLEdBQUd2dkUsS0FBSyxDQUFDcWdELGNBQVYsRUFBMEIsQ0FBQyxHQUFHcmdELEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixPQUE5QixFQUF1QztJQUM3RDc3QixFQUFFLEVBQUUsVUFEeUQ7SUFFN0QsdUJBQXVCcThCLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBY0EsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZLFVBQVVjLE1BQVYsRUFBa0I7TUFBRSxPQUFTZixJQUFJLENBQUMzdUIsUUFBTCxDQUFjc2QsUUFBZixHQUEyQm9TLE1BQW5DO0lBQTZDLENBQTNGLENBRnNDO0lBRzdELFNBQU8sQ0FBQyxHQUFHeDlDLEtBQUssQ0FBQzIvQyxjQUFWLEVBQTBCLENBQUMsd0JBQUQsRUFBMkI7TUFDcER5TCxZQUFZLEVBQUUzTyxJQUFJLENBQUM3bEMsU0FBTCxDQUFldzBCLFFBQWYsSUFBMkJxUixJQUFJLENBQUM3bEMsU0FBTCxDQUFlZzlCO0lBREosQ0FBM0IsQ0FBMUIsQ0FIc0Q7SUFNN0RqdEMsSUFBSSxFQUFFLFVBTnVEO0lBTzdEZ3lDLFdBQVcsRUFBRThELElBQUksQ0FBQ3gwQyxRQUFMLENBQWNzbUUsSUFBZCxDQUFtQlMsZUFBbkIsQ0FBbUNRO0VBUGEsQ0FBdkMsRUFRdkIsSUFSdUIsRUFRakI7RUFBRztFQVJjLEVBUU1weEIsV0FSTixDQUExQixFQVE4QyxDQUMxQyxDQUFDcCtDLEtBQUssQ0FBQ3lnRCxVQUFQLEVBQW1CaEUsSUFBSSxDQUFDM3VCLFFBQUwsQ0FBY3NkLFFBQWpDLENBRDBDLENBUjlDLENBRjhDLEVBYTlDLENBQUMsR0FBR3ByQyxLQUFLLENBQUNxOUMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDLFNBQU8sMENBRGdDO0lBRXZDOXNDLElBQUksRUFBRTtFQUZpQyxDQUEzQyxDQWI4QyxFQWlCN0N3c0MsSUFBSSxDQUFDN2xDLFNBQUwsQ0FBZXcwQixRQUFoQixJQUNPLENBQUMsR0FBR3ByQyxLQUFLLENBQUNpOUMsU0FBVixLQUF3QixDQUFDLEdBQUdqOUMsS0FBSyxDQUFDazlDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDbUIsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHcitDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDN2xDLFNBQUwsQ0FBZXcwQixRQUExQyxDQUFuRCxFQUF3RztFQUFFO0VBQTFHLENBRC9CLElBRU0sQ0FBQyxHQUFHcHJDLEtBQUssQ0FBQ3M5QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQW5Cd0MsQ0FBbEQsQ0EzQ0QsRUFnRUMsQ0FBQyxHQUFHdDlDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQ29DLFdBQW5DLEVBQWdELENBQzVDLENBQUMsR0FBR3QrQyxLQUFLLENBQUMrL0MsZUFBVixFQUEyQixDQUFDLEdBQUcvL0MsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJoQixJQUFJLENBQUN4MEMsUUFBTCxDQUFjc21FLElBQWQsQ0FBbUJTLGVBQW5CLENBQW1DUyxxQkFBOUQsSUFBdUYsR0FBbEgsRUFBdUg7RUFBRTtFQUF6SCxDQUQ0QyxFQUU1QyxDQUFDLEdBQUd6dkUsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDLElBQXRDLEVBQTRDLENBQ3hDLENBQUMsR0FBR2w4QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUNxQyxXQUFuQyxFQUFnRCxDQUFDLEdBQUd2K0MsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJoQixJQUFJLENBQUN4MEMsUUFBTCxDQUFjOGEsV0FBZCxDQUEwQnZJLEtBQXJELElBQThELEdBQTlHLEVBQW1IO0VBQUU7RUFBckgsQ0FEd0MsQ0FBNUMsQ0FGNEMsQ0FBaEQsQ0FoRUQsRUFzRUMsQ0FBQyxHQUFHeGEsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDO0lBQ3BDNzdCLEVBQUUsRUFBRSxLQURnQztJQUVwQzFaLElBQUksRUFBRSxRQUY4QjtJQUdwQyxTQUFPLEtBSDZCO0lBSXBDeTJDLE9BQU8sRUFBRVYsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjQSxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQ25CO0lBQ0EsWUFBWTtNQUNSLElBQUk2SCxJQUFJLEdBQUcsRUFBWDs7TUFDQSxLQUFLLElBQUluL0IsRUFBRSxHQUFHLENBQWQsRUFBaUJBLEVBQUUsR0FBR1ksU0FBUyxDQUFDN2YsTUFBaEMsRUFBd0NpZixFQUFFLEVBQTFDLEVBQThDO1FBQzFDbS9CLElBQUksQ0FBQ24vQixFQUFELENBQUosR0FBV1ksU0FBUyxDQUFDWixFQUFELENBQXBCO01BQ0g7O01BQ0QsT0FBUXEzQixJQUFJLENBQUNoQixLQUFMLElBQWNnQixJQUFJLENBQUNoQixLQUFMLENBQVcxMkMsS0FBWCxDQUFpQjAzQyxJQUFqQixFQUF1QjhILElBQXZCLENBQXRCO0lBQ0gsQ0FSSTtFQUoyQixDQUF4QyxFQWFHLENBQ0MsQ0FBQyxHQUFHdmtELEtBQUssQ0FBQysvQyxlQUFWLEVBQTJCLENBQUMsR0FBRy8vQyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3gwQyxRQUFMLENBQWM4YSxXQUFkLENBQTBCZ29ELE9BQXJELElBQWdFLEdBQTNGLEVBQWdHO0VBQUU7RUFBbEcsQ0FERCxFQUVDLENBQUMsR0FBRy9xRSxLQUFLLENBQUNxOUMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDLFNBQU8sRUFEZ0M7SUFFdkM5c0MsSUFBSSxFQUFFO0VBRmlDLENBQTNDLENBRkQsQ0FiSCxDQXRFRCxDQVhILEVBcUdHO0VBQUc7RUFyR04sQ0FKNkUsQ0FBakQsQ0FBaEM7QUEyR0g7O0FBQ0RuUSxjQUFBLEdBQWlCKzdDLE1BQWpCOzs7Ozs7Ozs7OztBQzVKYTs7QUFDYmo4Qyw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsY0FBQSxHQUFpQixLQUFLLENBQXRCOztBQUNBLElBQUlFLEtBQUssR0FBR0MsbUJBQU8sQ0FBQyx1REFBRCxDQUFuQjs7QUFDQSxJQUFJNjdDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlDLFVBQVUsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFqQjtBQUNBLElBQUlFLFVBQVUsR0FBRztFQUFFejVDLElBQUksRUFBRTtBQUFSLENBQWpCO0FBQ0EsSUFBSTA1QyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRTc1QyxJQUFJLEVBQUU7QUFBUixDQUFqQjtBQUNBLElBQUk4NUMsV0FBVyxHQUFHO0VBQUU5NUMsSUFBSSxFQUFFO0FBQVIsQ0FBbEI7QUFDQSxJQUFJcTdDLFdBQVcsR0FBRztFQUFFcjdDLElBQUksRUFBRTtBQUFSLENBQWxCO0FBQ0EsSUFBSXM3QyxXQUFXLEdBQUc7RUFBRXQ3QyxJQUFJLEVBQUU7QUFBUixDQUFsQjtBQUNBLElBQUl1N0MsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUxN0MsSUFBSSxFQUFFO0FBQVIsQ0FBbEI7QUFDQSxJQUFJMjdDLFdBQVcsR0FBRztFQUFFMzdDLElBQUksRUFBRTtBQUFSLENBQWxCO0FBQ0EsSUFBSTQ3QyxXQUFXLEdBQUc7RUFBRTU3QyxJQUFJLEVBQUU7QUFBUixDQUFsQjtBQUNBLElBQUk2N0MsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCOztBQUNBLElBQUlDLFdBQVcsR0FBRyxhQUFjLENBQUMsR0FBRzMrQyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEUsYUFBYyxDQUFDLEdBQUdsOEMsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3BELGFBQWMsQ0FBQyxHQUFHbDhDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztFQUM3QyxTQUFPLG1CQURzQztFQUU3Q3g1QyxJQUFJLEVBQUU7QUFGdUMsQ0FBbkMsRUFHWCwwQkFIVyxDQURzQyxDQUExQyxDQUR3RCxDQUExQyxFQU83QixDQUFDO0FBQUU7QUFQMEIsQ0FBaEM7O0FBUUEsSUFBSWs4QyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFDZHQ4QyxJQUFJLEVBQUUsMERBRFE7RUFFZGlhLE1BQU0sRUFBRTtBQUZNLENBQWxCO0FBSUEsSUFBSXNpQyxXQUFXLEdBQUc7RUFDZCxTQUFPLE1BRE87RUFFZHY4QyxJQUFJLEVBQUUsOEJBRlE7RUFHZGlhLE1BQU0sRUFBRTtBQUhNLENBQWxCOztBQUtBLFNBQVNrL0IsTUFBVCxDQUFnQlksSUFBaEIsRUFBc0JDLE1BQXRCLEVBQThCQyxNQUE5QixFQUFzQ0MsTUFBdEMsRUFBOENDLEtBQTlDLEVBQXFEQyxRQUFyRCxFQUErRDtFQUMzRCxJQUFJQyxrQkFBa0IsR0FBRyxDQUFDLEdBQUcvOEMsS0FBSyxDQUFDZzlDLGdCQUFWLEVBQTRCLFNBQTVCLENBQXpCOztFQUNBLE9BQVEsQ0FBQyxHQUFHaDlDLEtBQUssQ0FBQ2k5QyxTQUFWLEtBQXdCLENBQUMsR0FBR2o5QyxLQUFLLENBQUNrOUMsa0JBQVYsRUFBOEIsUUFBOUIsRUFBd0NwQixVQUF4QyxFQUFvRCxDQUNoRixDQUFDLEdBQUc5N0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSCxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUcvN0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRixVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdoOEMsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRCxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdqOEMsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQ3ZDLENBQUMsR0FBR2w4QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUNDLFVBQW5DLEVBQStDLENBQzNDLENBQUMsR0FBR244QyxLQUFLLENBQUNxOUMsV0FBVixFQUF1Qk4sa0JBQXZCLEVBQTJDO0lBQ3ZDLFNBQU8sOEJBRGdDO0lBRXZDOXNDLElBQUksRUFBRTtFQUZpQyxDQUEzQyxDQUQyQyxDQUEvQyxDQUR1QyxDQUEzQyxDQUQ2QyxFQVM3QyxDQUFDLEdBQUdqUSxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNFLFVBQXJDLEVBQWlELENBQzdDLENBQUMsR0FBR3A4QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0NHLFVBQXRDLEVBQWtELENBQUMsR0FBR3I4QyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmIsTUFBTSxDQUFDMzBDLFFBQVAsQ0FBZ0JHLFFBQWhCLENBQXlCeWxFLGNBQXBELENBQWxELEVBQXVIO0VBQUU7RUFBekgsQ0FENkMsRUFFN0MsQ0FBQyxHQUFHN3RFLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ0ksVUFBcEMsRUFBZ0QsQ0FDNUMsQ0FBQyxHQUFHdDhDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUdsOEMsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DSyxVQUFuQyxFQUErQyxDQUFDLEdBQUd2OEMsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzMwQyxRQUFQLENBQWdCRyxRQUFoQixDQUF5Qm1tRSxJQUFwRCxDQUEvQyxFQUEwRztFQUFFO0VBQTVHLENBRHNDLENBQTFDLENBRDRDLEVBSTVDLENBQUMsR0FBR3Z1RSxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbDhDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQ00sV0FBbkMsRUFBZ0QsQ0FBQyxHQUFHeDhDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQkcsUUFBaEIsQ0FBeUIwbEUsS0FBcEQsQ0FBaEQsRUFBNEc7RUFBRTtFQUE5RyxDQURzQyxDQUExQyxDQUo0QyxFQU81QyxDQUFDLEdBQUc5dEUsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR2w4QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM2QixXQUFuQyxFQUFnRCxDQUFDLEdBQUcvOUMsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzMwQyxRQUFQLENBQWdCRyxRQUFoQixDQUF5QjJpRSxPQUFwRCxDQUFoRCxFQUE4RztFQUFFO0VBQWhILENBRHNDLENBQTFDLENBUDRDLEVBVTVDLENBQUMsR0FBRy9xRSxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsQ0FDdEMsQ0FBQyxHQUFHbDhDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQzhCLFdBQW5DLEVBQWdELENBQUMsR0FBR2grQyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmIsTUFBTSxDQUFDMzBDLFFBQVAsQ0FBZ0JHLFFBQWhCLENBQXlCa21FLFFBQXBELENBQWhELEVBQStHO0VBQUU7RUFBakgsQ0FEc0MsQ0FBMUMsQ0FWNEMsRUFhNUMsQ0FBQyxHQUFHdHVFLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUdsOEMsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO0lBQy9CK3VCLEdBQUcsRUFBRSxxQkFEMEI7SUFFL0IsU0FBTyxnQkFGd0I7SUFHL0I3dEIsT0FBTyxFQUFFVixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWNBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxVQUFVYyxNQUFWLEVBQWtCO01BQUUsT0FBUVosTUFBTSxDQUFDaEMsY0FBUCxDQUFzQixNQUF0QixDQUFSO0lBQXlDLENBQXZGO0VBSHNCLENBQW5DLEVBSUcsQ0FBQyxHQUFHNTZDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQjZnRSxTQUFoQixDQUEwQmlGLFdBQXJELElBQW9FLE9BSnZFLEVBSWdGO0VBQUU7RUFKbEYsQ0FEc0MsQ0FBMUMsQ0FiNEMsQ0FBaEQsQ0FGNkMsQ0FBakQsQ0FUNkMsRUFpQzdDLENBQUMsR0FBRy90RSxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMrQixXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUdqK0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDZ0MsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHbCtDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQkcsUUFBaEIsQ0FBeUI4aUUsYUFBcEQsQ0FBbkQsRUFBdUg7RUFBRTtFQUF6SCxDQUQ4QyxFQUU5QyxDQUFDLEdBQUdsckUsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DaUMsV0FBcEMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHbitDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQyxJQUFwQyxFQUEwQyxDQUN0QyxDQUFDLEdBQUdsOEMsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1Da0MsV0FBbkMsRUFBZ0QsQ0FBQyxHQUFHcCtDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQkcsUUFBaEIsQ0FBeUI4aUUsYUFBcEQsQ0FBaEQsRUFBb0g7RUFBRTtFQUF0SCxDQURzQyxDQUExQyxDQUQ2QyxFQUk3QyxDQUFDLEdBQUdsckUsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR2w4QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUNtQyxXQUFuQyxFQUFnRCxDQUFDLEdBQUdyK0MsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzMwQyxRQUFQLENBQWdCRyxRQUFoQixDQUF5QitqRSxvQkFBcEQsQ0FBaEQsRUFBMkg7RUFBRTtFQUE3SCxDQURzQyxDQUExQyxDQUo2QyxFQU83QyxDQUFDLEdBQUduc0UsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLENBQ3RDLENBQUMsR0FBR2w4QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUNvQyxXQUFuQyxFQUFnRCxDQUFDLEdBQUd0K0MsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJiLE1BQU0sQ0FBQzMwQyxRQUFQLENBQWdCRyxRQUFoQixDQUF5QnVsRSxPQUFwRCxDQUFoRCxFQUE4RztFQUFFO0VBQWhILENBRHNDLENBQTFDLENBUDZDLENBQWpELENBRjhDLENBQWxELENBakM2QyxFQStDN0MsQ0FBQyxHQUFHM3RFLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3FDLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBR3YrQyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNzQyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUd4K0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DLElBQW5DLEVBQXlDLENBQUMsR0FBR2w4QyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmIsTUFBTSxDQUFDMzBDLFFBQVAsQ0FBZ0JHLFFBQWhCLENBQXlCNGxFLE1BQXpCLENBQWdDQywwQkFBM0QsQ0FBekMsRUFBaUk7RUFBRTtFQUFuSSxDQUQ4QyxFQUU5QyxDQUFDLEdBQUdqdUUsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DLElBQW5DLEVBQXlDLENBQUMsR0FBR2w4QyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmIsTUFBTSxDQUFDMzBDLFFBQVAsQ0FBZ0JHLFFBQWhCLENBQXlCNGxFLE1BQXpCLENBQWdDRSx5QkFBM0QsQ0FBekMsRUFBZ0k7RUFBRTtFQUFsSSxDQUY4QyxFQUc5QyxDQUFDLEdBQUdsdUUsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DLElBQW5DLEVBQXlDLENBQUMsR0FBR2w4QyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmIsTUFBTSxDQUFDMzBDLFFBQVAsQ0FBZ0JHLFFBQWhCLENBQXlCNGxFLE1BQXpCLENBQWdDRyxrQ0FBM0QsQ0FBekMsRUFBeUk7RUFBRTtFQUEzSSxDQUg4QyxDQUFsRCxDQUQ4QyxFQU05QyxDQUFDLEdBQUdudUUsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDdUMsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHeitDLEtBQUssQ0FBQ3E5QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkMsU0FBTyxVQURnQztJQUV2QzlzQyxJQUFJLEVBQUU7RUFGaUMsQ0FBM0MsQ0FEOEMsRUFLOUMsQ0FBQyxHQUFHalEsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDd0MsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHMStDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQkcsUUFBaEIsQ0FBeUI0bEUsTUFBekIsQ0FBZ0NJLDJCQUEzRCxDQUFuRCxFQUE0STtFQUFFO0VBQTlJLENBTDhDLENBQWxELENBTjhDLEVBYTlDenZCLFdBYjhDLENBQWxELENBL0M2QyxDQUFqRCxDQUQ2QyxDQUFqRCxDQUQ2QyxDQUFqRCxDQURnRixFQW9FaEYsQ0FBQyxHQUFHMytDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQzBDLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBRzUrQyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUMyQyxXQUFyQyxFQUFrRCxDQUM5QyxDQUFDLEdBQUc3K0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDNEMsV0FBdEMsRUFBbUQsQ0FDL0MsQ0FBQyxHQUFHOStDLEtBQUssQ0FBQ3E5QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkMsU0FBTyxnQkFEZ0M7SUFFdkM5c0MsSUFBSSxFQUFFO0VBRmlDLENBQTNDLENBRCtDLEVBSy9DLENBQUMsR0FBR2pRLEtBQUssQ0FBQysvQyxlQUFWLEVBQTJCLE1BQU0sQ0FBQyxHQUFHLy9DLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCYixNQUFNLENBQUMzMEMsUUFBUCxDQUFnQkcsUUFBaEIsQ0FBeUI0bEUsTUFBekIsQ0FBZ0NLLGVBQTNELENBQWpDLEVBQThHO0VBQUU7RUFBaEgsQ0FMK0MsQ0FBbkQsQ0FEOEMsRUFROUMsQ0FBQyxHQUFHcnVFLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQzZDLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBRy8rQyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM4QyxXQUFuQyxFQUFnRCxDQUM1QyxDQUFDLEdBQUdoL0MsS0FBSyxDQUFDcTlDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUN2QyxTQUFPLG9CQURnQztJQUV2QzlzQyxJQUFJLEVBQUU7RUFGaUMsQ0FBM0MsQ0FENEMsQ0FBaEQsQ0FEOEMsRUFPOUMsQ0FBQyxHQUFHalEsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DK0MsV0FBbkMsRUFBZ0QsQ0FDNUMsQ0FBQyxHQUFHai9DLEtBQUssQ0FBQ3E5QyxXQUFWLEVBQXVCTixrQkFBdkIsRUFBMkM7SUFDdkMsU0FBTyxvQkFEZ0M7SUFFdkM5c0MsSUFBSSxFQUFFO0VBRmlDLENBQTNDLENBRDRDLENBQWhELENBUDhDLENBQWxELENBUjhDLENBQWxELENBRDhDLENBQWxELENBcEVnRixDQUFwRCxDQUFoQztBQThGSDs7QUFDRG5RLGNBQUEsR0FBaUIrN0MsTUFBakI7Ozs7Ozs7Ozs7O0FDaEphOztBQUNiajhDLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCLEtBQUssQ0FBdEI7O0FBQ0EsSUFBSUUsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUk2N0MsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUUsVUFBVSxHQUFHO0VBQ2IsU0FBTyxNQURNO0VBRWJ6NUMsSUFBSSxFQUFFO0FBRk8sQ0FBakI7QUFJQSxJQUFJMDVDLFVBQVUsR0FBRztFQUNiLzdCLEVBQUUsRUFBRSxVQURTO0VBRWIsU0FBTztBQUZNLENBQWpCO0FBSUEsSUFBSWc4QixVQUFVLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBakI7QUFDQSxJQUFJQyxVQUFVLEdBQUc7RUFBRTU1QyxJQUFJLEVBQUU7QUFBUixDQUFqQjtBQUNBLElBQUk2NUMsVUFBVSxHQUFHO0VBQUUsU0FBTztBQUFULENBQWpCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUU5NUMsSUFBSSxFQUFFO0FBQVIsQ0FBbEI7QUFDQSxJQUFJcTdDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFdDdDLElBQUksRUFBRTtBQUFSLENBQWxCO0FBQ0EsSUFBSXU3QyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRXg3QyxJQUFJLEVBQUU7QUFBUixDQUFsQjtBQUNBLElBQUl5N0MsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCOztBQUNBLElBQUlDLFdBQVcsR0FBRyxhQUFjLENBQUMsR0FBR2gvQyxLQUFLLENBQUNxaUQsaUJBQVYsRUFBNkIsc09BQTdCLEVBQXFRLENBQXJRLENBQWhDOztBQUNBLElBQUluRCxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUcsQ0FBQyxNQUFELENBQWxCOztBQUNBLFNBQVN2RCxNQUFULENBQWdCWSxJQUFoQixFQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxNQUF0QyxFQUE4Q0MsS0FBOUMsRUFBcURDLFFBQXJELEVBQStEO0VBQzNELElBQUlDLGtCQUFrQixHQUFHLENBQUMsR0FBRy84QyxLQUFLLENBQUNnOUMsZ0JBQVYsRUFBNEIsU0FBNUIsQ0FBekI7O0VBQ0EsSUFBSTB5QixzQkFBc0IsR0FBRyxDQUFDLEdBQUcxdkUsS0FBSyxDQUFDZzlDLGdCQUFWLEVBQTRCLGFBQTVCLENBQTdCOztFQUNBLE9BQVEsQ0FBQyxHQUFHaDlDLEtBQUssQ0FBQ2k5QyxTQUFWLEtBQXdCLENBQUMsR0FBR2o5QyxLQUFLLENBQUNrOUMsa0JBQVYsRUFBOEIsS0FBOUIsRUFBcUNwQixVQUFyQyxFQUFpRCxDQUM3RSxDQUFDLEdBQUc5N0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDSCxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUcvN0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDRixVQUF4QyxFQUFvRCxDQUNoRCxDQUFDLEdBQUdoOEMsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDRCxVQUFyQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdqOEMsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DQyxVQUFuQyxFQUErQyxDQUMzQyxDQUFDLEdBQUduOEMsS0FBSyxDQUFDcTlDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUN2QyxTQUFPLHVCQURnQztJQUV2QzlzQyxJQUFJLEVBQUU7RUFGaUMsQ0FBM0MsQ0FEMkMsQ0FBL0MsQ0FENkMsRUFPN0MsQ0FBQyxHQUFHalEsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDLElBQXJDLEVBQTJDLENBQ3ZDLENBQUMsR0FBR2w4QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NFLFVBQXBDLEVBQWdELENBQzVDLENBQUMsR0FBR3A4QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NHLFVBQXBDLEVBQWdELENBQzVDLENBQUMsR0FBR3I4QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUNJLFVBQW5DLEVBQStDLENBQUMsR0FBR3Q4QyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3gwQyxRQUFMLENBQWNHLFFBQWQsQ0FBdUIwbEUsS0FBbEQsQ0FBL0MsRUFBeUc7RUFBRTtFQUEzRyxDQUQ0QyxFQUU1QyxDQUFDLEdBQUc5dEUsS0FBSyxDQUFDcTlDLFdBQVYsRUFBdUJxeUIsc0JBQXZCLEVBQStDO0lBQzNDcG5FLElBQUksRUFBRW0wQyxJQUFJLENBQUN4MEMsUUFBTCxDQUFjRyxRQUFkLENBQXVCMGxFLEtBRGM7SUFFM0MvOUQsSUFBSSxFQUFFMHNDLElBQUksQ0FBQ3gwQyxRQUFMLENBQWNHLFFBQWQsQ0FBdUJJLE1BQXZCLENBQThCbW5FLGdCQUZPO0lBRzNDLFlBQVlsekIsSUFBSSxDQUFDeDBDLFFBQUwsQ0FBYzhhLFdBQWQsQ0FBMEJtaEMsVUFISztJQUkzQyxZQUFZO0VBSitCLENBQS9DLEVBS0csSUFMSCxFQUtTO0VBQUU7RUFMWCxFQUt3QixDQUFDLE1BQUQsRUFBUyxNQUFULEVBQWlCLFVBQWpCLENBTHhCLENBRjRDLENBQWhELENBRDRDLEVBVTVDLENBQUMsR0FBR2xrRCxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NLLFVBQXBDLEVBQWdELENBQzVDLENBQUMsR0FBR3Y4QyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUNNLFdBQW5DLEVBQWdELENBQUMsR0FBR3g4QyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3gwQyxRQUFMLENBQWNHLFFBQWQsQ0FBdUIrakUsb0JBQWxELENBQWhELEVBQXlIO0VBQUU7RUFBM0gsQ0FENEMsRUFFNUMsQ0FBQyxHQUFHbnNFLEtBQUssQ0FBQ3E5QyxXQUFWLEVBQXVCcXlCLHNCQUF2QixFQUErQztJQUMzQ3BuRSxJQUFJLEVBQUVtMEMsSUFBSSxDQUFDeDBDLFFBQUwsQ0FBY0csUUFBZCxDQUF1QitqRSxvQkFEYztJQUUzQ3A4RCxJQUFJLEVBQUUwc0MsSUFBSSxDQUFDeDBDLFFBQUwsQ0FBY0csUUFBZCxDQUF1QkksTUFBdkIsQ0FBOEJvbkUsK0JBRk87SUFHM0MsWUFBWW56QixJQUFJLENBQUN4MEMsUUFBTCxDQUFjOGEsV0FBZCxDQUEwQjhzRCxTQUhLO0lBSTNDLFlBQVk7RUFKK0IsQ0FBL0MsRUFLRyxJQUxILEVBS1M7RUFBRTtFQUxYLEVBS3dCLENBQUMsTUFBRCxFQUFTLE1BQVQsRUFBaUIsVUFBakIsQ0FMeEIsQ0FGNEMsQ0FBaEQsQ0FWNEMsRUFtQjVDLENBQUMsR0FBRzd2RSxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0M2QixXQUFwQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUcvOUMsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DOEIsV0FBbkMsRUFBZ0QsQ0FBQyxHQUFHaCtDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDeDBDLFFBQUwsQ0FBY0csUUFBZCxDQUF1QjhpRSxhQUFsRCxDQUFoRCxFQUFrSDtFQUFFO0VBQXBILENBRDZDLEVBRTdDLENBQUMsR0FBR2xyRSxLQUFLLENBQUNxOUMsV0FBVixFQUF1QnF5QixzQkFBdkIsRUFBK0M7SUFDM0NwbkUsSUFBSSxFQUFFbTBDLElBQUksQ0FBQ3gwQyxRQUFMLENBQWNHLFFBQWQsQ0FBdUI4aUUsYUFEYztJQUUzQ243RCxJQUFJLEVBQUUwc0MsSUFBSSxDQUFDeDBDLFFBQUwsQ0FBY0csUUFBZCxDQUF1QkksTUFBdkIsQ0FBOEJzbkUsd0JBRk87SUFHM0MsWUFBWXJ6QixJQUFJLENBQUN4MEMsUUFBTCxDQUFjOGEsV0FBZCxDQUEwQmd0RCxtQkFISztJQUkzQyxZQUFZO0VBSitCLENBQS9DLEVBS0csSUFMSCxFQUtTO0VBQUU7RUFMWCxFQUt3QixDQUFDLE1BQUQsRUFBUyxNQUFULEVBQWlCLFVBQWpCLENBTHhCLENBRjZDLENBQWpELENBbkI0QyxFQTRCNUMsQ0FBQyxHQUFHL3ZFLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQytCLFdBQXBDLEVBQWlELENBQzdDLENBQUMsR0FBR2orQyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUNnQyxXQUFuQyxFQUFnRCxDQUFDLEdBQUdsK0MsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJoQixJQUFJLENBQUN4MEMsUUFBTCxDQUFjRyxRQUFkLENBQXVCdWxFLE9BQWxELENBQWhELEVBQTRHO0VBQUU7RUFBOUcsQ0FENkMsRUFFN0MsQ0FBQyxHQUFHM3RFLEtBQUssQ0FBQ3E5QyxXQUFWLEVBQXVCcXlCLHNCQUF2QixFQUErQztJQUMzQ3BuRSxJQUFJLEVBQUVtMEMsSUFBSSxDQUFDeDBDLFFBQUwsQ0FBY0csUUFBZCxDQUF1QnVsRSxPQURjO0lBRTNDNTlELElBQUksRUFBRTBzQyxJQUFJLENBQUN4MEMsUUFBTCxDQUFjRyxRQUFkLENBQXVCSSxNQUF2QixDQUE4QnduRSxrQkFGTztJQUczQyxZQUFZdnpCLElBQUksQ0FBQ3gwQyxRQUFMLENBQWM4YSxXQUFkLENBQTBCOHNELFNBSEs7SUFJM0MsWUFBWTtFQUorQixDQUEvQyxFQUtHLElBTEgsRUFLUztFQUFFO0VBTFgsRUFLd0IsQ0FBQyxNQUFELEVBQVMsTUFBVCxFQUFpQixVQUFqQixDQUx4QixDQUY2QyxDQUFqRCxDQTVCNEMsRUFxQzVDLENBQUMsR0FBRzd2RSxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NpQyxXQUFwQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUduK0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLE1BQTlCLEVBQXNDa0MsV0FBdEMsRUFBbUQsQ0FBQyxHQUFHcCtDLEtBQUssQ0FBQ3k5QyxlQUFWLEVBQTJCaEIsSUFBSSxDQUFDeDBDLFFBQUwsQ0FBY0csUUFBZCxDQUF1QkgsUUFBbEQsSUFBOEQsR0FBakgsRUFBc0g7RUFBRTtFQUF4SCxDQUQ2QyxFQUU3QyxDQUFDLEdBQUdqSSxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NtQyxXQUFwQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUdyK0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLElBQTlCLEVBQW9Db0MsV0FBcEMsRUFBaUQsQ0FDN0MsQ0FBQyxHQUFHdCtDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztJQUMvQixTQUFPLENBQUMsR0FBR2w4QyxLQUFLLENBQUMyL0MsY0FBVixFQUEwQmxELElBQUksQ0FBQ3gwQyxRQUFMLENBQWNHLFFBQWQsQ0FBdUJELE1BQXZCLEtBQWtDLElBQWxDLEdBQzNCLDJCQUQyQixHQUUzQixFQUZDLENBRHdCO0lBSS9CekYsSUFBSSxFQUFFO0VBSnlCLENBQW5DLEVBS0csSUFMSCxFQUtTO0VBQUU7RUFMWCxDQUQ2QyxDQUFqRCxDQUQ2QyxFQVM3QyxDQUFDLEdBQUcxQyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NxQyxXQUFwQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUd2K0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO0lBQy9CLFNBQU8sQ0FBQyxHQUFHbDhDLEtBQUssQ0FBQzIvQyxjQUFWLEVBQTBCbEQsSUFBSSxDQUFDeDBDLFFBQUwsQ0FBY0csUUFBZCxDQUF1QkQsTUFBdkIsS0FBa0MsSUFBbEMsR0FDM0IsMkJBRDJCLEdBRTNCLEVBRkMsQ0FEd0I7SUFJL0J6RixJQUFJLEVBQUU7RUFKeUIsQ0FBbkMsRUFLRyxJQUxILEVBS1M7RUFBRTtFQUxYLENBRDZDLENBQWpELENBVDZDLEVBaUI3QyxDQUFDLEdBQUcxQyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0NzQyxXQUFwQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUd4K0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO0lBQy9CLFNBQU8sQ0FBQyxHQUFHbDhDLEtBQUssQ0FBQzIvQyxjQUFWLEVBQTBCbEQsSUFBSSxDQUFDeDBDLFFBQUwsQ0FBY0csUUFBZCxDQUF1QkQsTUFBdkIsS0FBa0MsSUFBbEMsR0FDM0IsMkJBRDJCLEdBRTNCLEVBRkMsQ0FEd0I7SUFJL0J6RixJQUFJLEVBQUU7RUFKeUIsQ0FBbkMsRUFLRyxJQUxILEVBS1M7RUFBRTtFQUxYLENBRDZDLENBQWpELENBakI2QyxDQUFqRCxDQUY2QyxDQUFqRCxDQXJDNEMsQ0FBaEQsQ0FEdUMsQ0FBM0MsQ0FQNkMsRUE0RTdDLENBQUMsR0FBRzFDLEtBQUssQ0FBQ3M5QyxrQkFBVixFQUE4QixzQkFBOUIsQ0E1RTZDLEVBNkU3QyxDQUFDLEdBQUd0OUMsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDdUMsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHeitDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixLQUE5QixFQUFxQ3dDLFdBQXJDLEVBQWtELENBQzlDLENBQUMsR0FBRzErQyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsTUFBOUIsRUFBc0N5QyxXQUF0QyxFQUFtRCxDQUFDLEdBQUczK0MsS0FBSyxDQUFDeTlDLGVBQVYsRUFBMkJoQixJQUFJLENBQUN4MEMsUUFBTCxDQUFjRyxRQUFkLENBQXVCSCxRQUFsRCxJQUE4RCxHQUFqSCxFQUFzSDtFQUFFO0VBQXhILENBRDhDLEVBRTlDLENBQUMsR0FBR2pJLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQzBDLFdBQXBDLEVBQWlELENBQzdDLENBQUMsR0FBRzUrQyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsSUFBOUIsRUFBb0MyQyxXQUFwQyxFQUFpRCxDQUM3QyxDQUFDLEdBQUc3K0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEdBQTlCLEVBQW1DO0lBQy9CLFNBQU8sQ0FBQyxHQUFHbDhDLEtBQUssQ0FBQzIvQyxjQUFWLEVBQTBCbEQsSUFBSSxDQUFDeDBDLFFBQUwsQ0FBY0csUUFBZCxDQUF1QkQsTUFBdkIsS0FBa0MsSUFBbEMsR0FDM0IsMkJBRDJCLEdBRTNCLEVBRkMsQ0FEd0I7SUFJL0J6RixJQUFJLEVBQUU7RUFKeUIsQ0FBbkMsRUFLRyxJQUxILEVBS1M7RUFBRTtFQUxYLENBRDZDLENBQWpELENBRDZDLEVBUzdDLENBQUMsR0FBRzFDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQzRDLFdBQXBDLEVBQWlELENBQzdDLENBQUMsR0FBRzkrQyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7SUFDL0IsU0FBTyxDQUFDLEdBQUdsOEMsS0FBSyxDQUFDMi9DLGNBQVYsRUFBMEJsRCxJQUFJLENBQUN4MEMsUUFBTCxDQUFjRyxRQUFkLENBQXVCRCxNQUF2QixLQUFrQyxJQUFsQyxHQUMzQiwyQkFEMkIsR0FFM0IsRUFGQyxDQUR3QjtJQUkvQnpGLElBQUksRUFBRTtFQUp5QixDQUFuQyxFQUtHLElBTEgsRUFLUztFQUFFO0VBTFgsQ0FENkMsQ0FBakQsQ0FUNkMsRUFpQjdDLENBQUMsR0FBRzFDLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQzZDLFdBQXBDLEVBQWlELENBQzdDLENBQUMsR0FBRy8rQyxLQUFLLENBQUNrOEMsa0JBQVYsRUFBOEIsR0FBOUIsRUFBbUM7SUFDL0IsU0FBTyxDQUFDLEdBQUdsOEMsS0FBSyxDQUFDMi9DLGNBQVYsRUFBMEJsRCxJQUFJLENBQUN4MEMsUUFBTCxDQUFjRyxRQUFkLENBQXVCRCxNQUF2QixLQUFrQyxJQUFsQyxHQUMzQiwyQkFEMkIsR0FFM0IsRUFGQyxDQUR3QjtJQUkvQnpGLElBQUksRUFBRTtFQUp5QixDQUFuQyxFQUtHLElBTEgsRUFLUztFQUFFO0VBTFgsQ0FENkMsQ0FBakQsQ0FqQjZDLENBQWpELENBRjhDLENBQWxELENBRDhDLENBQWxELENBN0U2QyxFQTRHN0NzOEMsV0E1RzZDLENBQWpELENBRGdELEVBK0doRCxDQUFDLEdBQUdoL0MsS0FBSyxDQUFDazhDLGtCQUFWLEVBQThCLEtBQTlCLEVBQXFDZ0QsV0FBckMsRUFBa0QsQ0FDOUMsQ0FBQyxHQUFHbC9DLEtBQUssQ0FBQ2s4QyxrQkFBVixFQUE4QixJQUE5QixFQUFvQ2lELFdBQXBDLEVBQWlELENBQUMsR0FBR24vQyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmhCLElBQUksQ0FBQ3hrQyxLQUFoQyxDQUFqRCxFQUF5RjtFQUFFO0VBQTNGLENBRDhDLEVBRTdDd2tDLElBQUksQ0FBQ2IsSUFBTCxLQUFjLEdBQWYsSUFDTyxDQUFDLEdBQUc1N0MsS0FBSyxDQUFDaTlDLFNBQVYsS0FBd0IsQ0FBQyxHQUFHajlDLEtBQUssQ0FBQ2s5QyxrQkFBVixFQUE4QixHQUE5QixFQUFtQztJQUMxRHh5QyxHQUFHLEVBQUUsQ0FEcUQ7SUFFMURoSSxJQUFJLEVBQUUrNUMsSUFBSSxDQUFDMTFDLFVBQUwsR0FBa0IscUJBQWxCLEdBQTBDLGFBRlU7SUFHMUQsU0FBTztFQUhtRCxDQUFuQyxFQUl4QixDQUNDLENBQUMsR0FBRy9HLEtBQUssQ0FBQysvQyxlQUFWLEVBQTJCLENBQUMsR0FBRy8vQyxLQUFLLENBQUN5OUMsZUFBVixFQUEyQmhCLElBQUksQ0FBQzExQyxVQUFMLEdBQ2hELEdBQUdwRixNQUFILENBQVU4NkMsSUFBSSxDQUFDeDBDLFFBQUwsQ0FBY1csV0FBZCxDQUEwQnFuRSxLQUFwQyxFQUEyQyxHQUEzQyxFQUFnRHR1RSxNQUFoRCxDQUF1RDg2QyxJQUFJLENBQUN4MEMsUUFBTCxDQUFjVyxXQUFkLENBQTBCSSxRQUFqRixDQURnRCxHQUVoRCxHQUFHckgsTUFBSCxDQUFVODZDLElBQUksQ0FBQ3gwQyxRQUFMLENBQWNXLFdBQWQsQ0FBMEJxbkUsS0FBcEMsRUFBMkMsR0FBM0MsRUFBZ0R0dUUsTUFBaEQsQ0FBdUQ4NkMsSUFBSSxDQUFDeDBDLFFBQUwsQ0FBYzBpQixhQUFkLENBQTRCMCtCLHFCQUFuRixDQUZxQixJQUV3RixHQUZuSCxFQUV3SDtFQUFFO0VBRjFILENBREQsRUFJQyxDQUFDLEdBQUdycEQsS0FBSyxDQUFDcTlDLFdBQVYsRUFBdUJOLGtCQUF2QixFQUEyQztJQUN2QyxTQUFPLFVBRGdDO0lBRXZDOXNDLElBQUksRUFBRTtFQUZpQyxDQUEzQyxDQUpELENBSndCLEVBWXhCO0VBQUU7RUFac0IsRUFZVG12QyxXQVpTLENBRC9CLElBY00sQ0FBQyxHQUFHcC9DLEtBQUssQ0FBQ3M5QyxrQkFBVixFQUE4QixNQUE5QixFQUFzQyxJQUF0QyxDQWhCd0MsQ0FBbEQsQ0EvR2dELENBQXBELENBRDZDLENBQWpELENBRDZFLENBQWpELENBQWhDO0FBc0lIOztBQUNEeDlDLGNBQUEsR0FBaUIrN0MsTUFBakI7Ozs7Ozs7Ozs7O0FDbkxhOztBQUNiLElBQUlwOEMsZUFBZSxHQUFJLFFBQVEsS0FBS0EsZUFBZCxJQUFrQyxVQUFVQyxHQUFWLEVBQWU7RUFDbkUsT0FBUUEsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVosR0FBMEJELEdBQTFCLEdBQWdDO0lBQUUsV0FBV0E7RUFBYixDQUF2QztBQUNILENBRkQ7O0FBR0FFLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHQyxtQkFBTyxDQUFDLHVEQUFELENBQW5COztBQUNBLElBQUlpd0Usb0JBQW9CLEdBQUd6d0UsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDJGQUFELENBQVIsQ0FBMUM7O0FBQ0EsSUFBSWt3RSxVQUFVLEdBQUcxd0UsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDZEQUFELENBQVIsQ0FBaEM7O0FBQ0EsSUFBSW13RSxlQUFlLEdBQUczd0UsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLGtHQUFELENBQVIsQ0FBckM7O0FBQ0EsSUFBSW93RSxlQUFlLEdBQUc1d0UsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLGtHQUFELENBQVIsQ0FBckM7O0FBQ0EsSUFBSXF3RSxpQkFBaUIsR0FBRzd3RSxlQUFlLENBQUNRLG1CQUFPLENBQUMsc0dBQUQsQ0FBUixDQUF2Qzs7QUFDQSxJQUFJc3dFLGlCQUFpQixHQUFHOXdFLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxvRkFBRCxDQUFSLENBQXZDOztBQUNBLElBQUl1d0Usa0JBQWtCLEdBQUcvd0UsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLHNGQUFELENBQVIsQ0FBeEM7O0FBQ0EsSUFBSXd3RSxlQUFlLEdBQUdoeEUsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLGdGQUFELENBQVIsQ0FBckM7O0FBQ0EsSUFBSXl3RSxpQkFBaUIsR0FBR2p4RSxlQUFlLENBQUNRLG1CQUFPLENBQUMsb0ZBQUQsQ0FBUixDQUF2Qzs7QUFDQSxJQUFJMHdFLGtCQUFrQixHQUFHbHhFLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxzRkFBRCxDQUFSLENBQXhDOztBQUNBLElBQUkyd0UseUJBQXlCLEdBQUdueEUsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLG9HQUFELENBQVIsQ0FBL0M7O0FBQ0EsSUFBSTR3RSxzQkFBc0IsR0FBR3B4RSxlQUFlLENBQUNRLG1CQUFPLENBQUMsOEZBQUQsQ0FBUixDQUE1QztBQUNBO0FBQ0E7QUFDQTs7O0FBQ0EsSUFBSTZ3RSxrQkFBa0IsR0FBR3J4RSxlQUFlLENBQUNRLG1CQUFPLENBQUMsZ0hBQUQsQ0FBUixDQUF4Qzs7QUFDQSxJQUFJOHdFLGdCQUFnQixHQUFHdHhFLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw0R0FBRCxDQUFSLENBQXRDOztBQUNBLElBQUkrd0UscUJBQXFCLEdBQUd2eEUsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDRIQUFELENBQVIsQ0FBM0M7O0FBQ0EsSUFBSWd4RSxtQkFBbUIsR0FBR3h4RSxlQUFlLENBQUNRLG1CQUFPLENBQUMsd0hBQUQsQ0FBUixDQUF6Qzs7QUFDQSxJQUFJaXhFLG1CQUFtQixHQUFHenhFLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxrSEFBRCxDQUFSLENBQXpDOztBQUNBLElBQUlreEUsaUJBQWlCLEdBQUcxeEUsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDhHQUFELENBQVIsQ0FBdkM7O0FBQ0EsSUFBSW14RSxxQkFBcUIsR0FBRzN4RSxlQUFlLENBQUNRLG1CQUFPLENBQUMsZ0lBQUQsQ0FBUixDQUEzQzs7QUFDQSxJQUFJb3hFLHVCQUF1QixHQUFHNXhFLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxvSUFBRCxDQUFSLENBQTdDOztBQUNBLElBQUlxeEUscUJBQXFCLEdBQUc3eEUsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDhGQUFELENBQVIsQ0FBM0M7O0FBQ0EsSUFBSXN4RSxrQkFBa0IsR0FBRzl4RSxlQUFlLENBQUNRLG1CQUFPLENBQUMsa0hBQUQsQ0FBUixDQUF4Qzs7QUFDQSxJQUFJdXhFLG1CQUFtQixHQUFHL3hFLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxrR0FBRCxDQUFSLENBQXpDOztBQUNBLElBQUl3eEUsaUJBQWlCLEdBQUdoeUUsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLHNGQUFELENBQVIsQ0FBdkM7O0FBQ0EsSUFBSXl4RSxvQkFBb0IsR0FBR2p5RSxlQUFlLENBQUNRLG1CQUFPLENBQUMsb0dBQUQsQ0FBUixDQUExQzs7QUFDQSxJQUFJMHhFLHNCQUFzQixHQUFHbHlFLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQywwSEFBRCxDQUFSLENBQTVDOztBQUNBLElBQUkyeEUsb0JBQW9CLEdBQUdueUUsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLGdHQUFELENBQVIsQ0FBMUM7O0FBQ0EsSUFBSTR4RSx1QkFBdUIsR0FBR3B5RSxlQUFlLENBQUNRLG1CQUFPLENBQUMsc0dBQUQsQ0FBUixDQUE3Qzs7QUFDQSxJQUFJNnhFLG1CQUFtQixHQUFHcnlFLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxvR0FBRCxDQUFSLENBQXpDOztBQUNBLElBQUk4eEUsZ0JBQWdCLEdBQUd0eUUsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLHdGQUFELENBQVIsQ0FBdEM7O0FBQ0EsSUFBSSt4RSxhQUFhLEdBQUd2eUUsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLGtGQUFELENBQVIsQ0FBbkM7QUFDQTtBQUNBO0FBQ0E7OztBQUNBLElBQUlneUUsaUJBQWlCLEdBQUd4eUUsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDRGQUFELENBQVIsQ0FBdkMsRUFDQTs7O0FBQ0EsSUFBSWl5RSwwQkFBMEIsR0FBR3p5RSxlQUFlLENBQUNRLG1CQUFPLENBQUMsZ0hBQUQsQ0FBUixDQUFoRDtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0EsSUFBSWt5RSxlQUFlLEdBQUcxeUUsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLG9GQUFELENBQVIsQ0FBckM7O0FBQ0EsSUFBSW15RSxzQkFBc0IsR0FBRzN5RSxlQUFlLENBQUNRLG1CQUFPLENBQUMsa0dBQUQsQ0FBUixDQUE1Qzs7QUFDQSxJQUFJb3lFLG1CQUFtQixHQUFHNXlFLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw0RkFBRCxDQUFSLENBQXpDO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQSxJQUFJcXlFLHNCQUFzQixHQUFHN3lFLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxnSEFBRCxDQUFSLENBQTVDO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQSxJQUFJc3lFLHNCQUFzQixHQUFHOXlFLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyw0R0FBRCxDQUFSLENBQTVDOztBQUNBLElBQUl1eUUsY0FBYyxHQUFHL3lFLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxrSEFBRCxDQUFSLENBQXBDO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQSxJQUFJd3lFLGlCQUFpQixHQUFHaHpFLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxzRkFBRCxDQUFSLENBQXZDOztBQUNBLElBQUl5eUUsaUJBQWlCLEdBQUdqekUsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLHNGQUFELENBQVIsQ0FBdkM7QUFDQTtBQUNBO0FBQ0E7OztBQUNBLElBQUkweUUsa0JBQWtCLEdBQUdsekUsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLDBGQUFELENBQVIsQ0FBeEM7QUFDQTtBQUNBO0FBQ0E7OztBQUNBLElBQUlvbkIsZUFBZSxHQUFHNW5CLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxrRkFBRCxDQUFSLENBQXJDOztBQUNBLElBQUkyckIsZUFBZSxHQUFHbnNCLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxvR0FBRCxDQUFSLENBQXJDOztBQUNBLElBQUlxVyxZQUFZLEdBQUc3VyxlQUFlLENBQUNRLG1CQUFPLENBQUMsNEVBQUQsQ0FBUixDQUFsQzs7QUFDQSxJQUFJMnlFLG1CQUFtQixHQUFHbnpFLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQyxzR0FBRCxDQUFSLENBQXpDOztBQUNBLElBQUk0eUUsaUJBQWlCLEdBQUdwekUsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLHNGQUFELENBQVIsQ0FBdkM7O0FBQ0EsSUFBSTZ5RSxHQUFHLEdBQUcsQ0FBQyxHQUFHOXlFLEtBQUssQ0FBQyt5RSxTQUFWLEVBQXFCLEVBQXJCLENBQVY7QUFDQUQsR0FBRyxDQUFDRSxHQUFKLENBQVFILGlCQUFpQixXQUF6QjtBQUNBO0FBQ0E7QUFDQTs7QUFDQUMsR0FBRyxDQUNFRyxTQURMLENBQ2UsV0FEZixFQUM0QjdDLGVBQWUsV0FEM0MsRUFFSzZDLFNBRkwsQ0FFZSxXQUZmLEVBRTRCNUMsZUFBZSxXQUYzQyxFQUdLNEMsU0FITCxDQUdlLGFBSGYsRUFHOEIzQyxpQkFBaUIsV0FIL0MsRUFJSzJDLFNBSkwsQ0FJZSxlQUpmLEVBSWdDMUMsaUJBQWlCLFdBSmpELEVBS0swQyxTQUxMLENBS2UsY0FMZixFQUsrQnpDLGtCQUFrQixXQUxqRCxFQU1LeUMsU0FOTCxDQU1lLGtCQU5mLEVBTW1DcEMsc0JBQXNCLFdBTnpEO0FBT0E7QUFDQTtBQUNBOztBQUNBaUMsR0FBRyxDQUNFRyxTQURMLENBQ2UsV0FEZixFQUM0QnhDLGVBQWUsV0FEM0MsRUFFS3dDLFNBRkwsQ0FFZSxhQUZmLEVBRThCdkMsaUJBQWlCLFdBRi9DLEVBR0t1QyxTQUhMLENBR2UsY0FIZixFQUcrQnRDLGtCQUFrQixXQUhqRCxFQUlLc0MsU0FKTCxDQUllLHFCQUpmLEVBSXNDckMseUJBQXlCLFdBSi9EO0FBS0E7QUFDQTtBQUNBOztBQUNBa0MsR0FBRyxDQUNFRyxTQURMLENBQ2Usa0JBRGYsRUFDbUN6QixtQkFBbUIsV0FEdEQsRUFFS3lCLFNBRkwsQ0FFZSxnQkFGZixFQUVpQ3hCLGlCQUFpQixXQUZsRCxFQUdLd0IsU0FITCxDQUdlLGtCQUhmLEVBR21DdkIsb0JBQW9CLFdBSHZELEVBSUt1QixTQUpMLENBSWUsaUJBSmYsRUFJa0MzQixxQkFBcUIsV0FKdkQsRUFLSzJCLFNBTEwsQ0FLZSxjQUxmLEVBSytCMUIsa0JBQWtCLFdBTGpELEVBTUswQixTQU5MLENBTWUsY0FOZixFQU0rQm5DLGtCQUFrQixXQU5qRCxFQU9LbUMsU0FQTCxDQU9lLFlBUGYsRUFPNkJsQyxnQkFBZ0IsV0FQN0MsRUFRS2tDLFNBUkwsQ0FRZSxpQkFSZixFQVFrQ2pDLHFCQUFxQixXQVJ2RCxFQVNLaUMsU0FUTCxDQVNlLGVBVGYsRUFTZ0NoQyxtQkFBbUIsV0FUbkQsRUFVS2dDLFNBVkwsQ0FVZSxlQVZmLEVBVWdDL0IsbUJBQW1CLFdBVm5ELEVBV0srQixTQVhMLENBV2UsYUFYZixFQVc4QjlCLGlCQUFpQixXQVgvQyxFQVlLOEIsU0FaTCxDQVllLGlCQVpmLEVBWWtDN0IscUJBQXFCLFdBWnZELEVBYUs2QixTQWJMLENBYWUsbUJBYmYsRUFhb0M1Qix1QkFBdUIsV0FiM0QsRUFjSzRCLFNBZEwsQ0FjZSxrQkFkZixFQWNtQ3RCLHNCQUFzQixXQWR6RDtBQWVBO0FBQ0E7QUFDQTs7QUFDQW1CLEdBQUcsQ0FDRUcsU0FETCxDQUNlLGdCQURmLEVBQ2lDckIsb0JBQW9CLFdBRHJELEVBRUtxQixTQUZMLENBRWUsbUJBRmYsRUFFb0NwQix1QkFBdUIsV0FGM0QsRUFHS29CLFNBSEwsQ0FHZSxZQUhmLEVBRzZCbEIsZ0JBQWdCLFdBSDdDLEVBSUtrQixTQUpMLENBSWUsU0FKZixFQUkwQmpCLGFBQWEsV0FKdkMsR0FLQTs7QUFDQWMsR0FBRyxDQUFDRyxTQUFKLENBQWMsZUFBZCxFQUErQm5CLG1CQUFtQixXQUFsRDtBQUNBO0FBQ0E7QUFDQTs7QUFDQWdCLEdBQUcsQ0FBQ0csU0FBSixDQUFjLGFBQWQsRUFBNkJoQixpQkFBaUIsV0FBOUM7QUFDQWEsR0FBRyxDQUFDRyxTQUFKLENBQWMsZUFBZCxFQUErQkwsbUJBQW1CLFdBQWxEO0FBQ0FFLEdBQUcsQ0FBQ0csU0FBSixDQUFjLHVCQUFkLEVBQXVDZiwwQkFBMEIsV0FBakU7QUFDQTtBQUNBO0FBQ0E7O0FBQ0FZLEdBQUcsQ0FDRUcsU0FETCxDQUNlLFdBRGYsRUFDNEJkLGVBQWUsV0FEM0MsRUFFS2MsU0FGTCxDQUVlLGtCQUZmLEVBRW1DYixzQkFBc0IsV0FGekQsRUFHS2EsU0FITCxDQUdlLGVBSGYsRUFHZ0NaLG1CQUFtQixXQUhuRDtBQUlBO0FBQ0E7QUFDQTs7QUFDQVMsR0FBRyxDQUFDRyxTQUFKLENBQWMsYUFBZCxFQUE2QlIsaUJBQWlCLFdBQTlDLEVBQXdEUSxTQUF4RCxDQUFrRSxhQUFsRSxFQUFpRlAsaUJBQWlCLFdBQWxHO0FBQ0E7QUFDQTtBQUNBOztBQUNBSSxHQUFHLENBQUNHLFNBQUosQ0FBYyxXQUFkLEVBQTJCNXJELGVBQWUsV0FBMUM7QUFDQXlyRCxHQUFHLENBQUNHLFNBQUosQ0FBYyxXQUFkLEVBQTJCcm5ELGVBQWUsV0FBMUM7QUFDQWtuRCxHQUFHLENBQUNHLFNBQUosQ0FBYyxjQUFkLEVBQThCMzhELFlBQVksV0FBMUM7QUFDQTtBQUNBO0FBQ0E7O0FBQ0F3OEQsR0FBRyxDQUFDRyxTQUFKLENBQWMsa0JBQWQsRUFBa0NYLHNCQUFzQixXQUF4RDtBQUNBO0FBQ0E7QUFDQTs7QUFDQVEsR0FBRyxDQUFDRyxTQUFKLENBQWMsa0JBQWQsRUFBa0NWLHNCQUFzQixXQUF4RDtBQUNBTyxHQUFHLENBQUNHLFNBQUosQ0FBYyxVQUFkLEVBQTBCVCxjQUFjLFdBQXhDO0FBQ0E7QUFDQTtBQUNBOztBQUNBTSxHQUFHLENBQUNHLFNBQUosQ0FBYyxjQUFkLEVBQThCTixrQkFBa0IsV0FBaEQ7QUFDQTtBQUNBO0FBQ0E7O0FBQ0FHLEdBQUcsQ0FBQ0UsR0FBSixDQUFRN0MsVUFBVSxXQUFsQjtBQUNBMkMsR0FBRyxDQUFDRSxHQUFKLENBQVE5QyxvQkFBb0IsV0FBNUIsR0FDQTs7QUFDQSxJQUFJZ0QsYUFBYSxHQUFHLENBQXBCO0FBQUEsSUFBdUJDLFNBQVMsR0FBRyxhQUFuQzs7QUFDQSxJQUFJQyxhQUFhLEdBQUcsU0FBaEJBLGFBQWdCLENBQVVqK0IsRUFBVixFQUFjaytCLGFBQWQsRUFBNkI7RUFDN0M7RUFDQSxJQUFJQyxhQUFhLEdBQUduK0IsRUFBRSxDQUFDbytCLFVBQXZCO0VBQUEsSUFBbUMxMkQsUUFBUSxHQUFHeTJELGFBQWEsQ0FBQ0UsWUFBNUQ7RUFBQSxJQUEwRUMsZ0JBQWdCLEdBQUdILGFBQWEsQ0FBQ3g5RCxxQkFBZCxHQUFzQ0UsR0FBbkk7RUFBQSxJQUF3STA5RCxtQkFBbUIsR0FBR0osYUFBYSxDQUFDeDlELHFCQUFkLEdBQXNDRyxNQUFwTSxDQUY2QyxDQUc3Qzs7RUFDQSxJQUFJMDlELE9BQU8sR0FBR3grQixFQUFFLENBQUN5K0IsV0FBakI7RUFBQSxJQUE4QkMsWUFBWSxHQUFHMStCLEVBQUUsQ0FBQ3IvQixxQkFBSCxHQUEyQkksSUFBeEU7RUFBQSxJQUE4RTQ5RCxXQUFXLEdBQUczK0IsRUFBRSxDQUFDci9CLHFCQUFILEdBQTJCRSxHQUF2SDtFQUFBLElBQTRIKzlELGNBQWMsR0FBRzUrQixFQUFFLENBQUNyL0IscUJBQUgsR0FBMkJHLE1BQXhLO0VBQUEsSUFBZ0wrOUQsY0FBYyxHQUFHcnhFLE1BQU0sQ0FBQ3N4RSxXQUF4TSxDQUo2QyxDQUs3Qzs7RUFDQSxJQUFJQyw0QkFBNEIsR0FBR3Z4RSxNQUFNLENBQUN3eEUsV0FBMUM7RUFBQSxJQUF1REMsb0JBQW9CLEdBQUdMLGNBQWMsR0FBR0csNEJBQWpCLEdBQWdERixjQUE5SCxDQU42QyxDQU83Qzs7RUFDQSxJQUFJSyxRQUFRLEdBQUdmLGFBQWEsQ0FBQ3BsRCxPQUFkLENBQXNCbWxELGFBQXRCLENBQWY7RUFBQSxJQUFxRGlCLGNBQWMsR0FBR0QsUUFBUSxLQUFLLElBQWIsSUFBcUJBLFFBQVEsS0FBSyxLQUFLLENBQXZDLEdBQTJDLEtBQUssQ0FBaEQsR0FBb0RBLFFBQVEsQ0FBQ3YrRCxxQkFBVCxHQUFpQ0csTUFBM0osQ0FSNkMsQ0FTN0M7O0VBQ0EsSUFBSXMrRCxZQUFZLEdBQUdMLDRCQUE0QixHQUFHaEIsYUFBL0IsR0FBK0MsSUFBL0MsR0FBc0QsS0FBekU7RUFDQSxJQUFJc0IsVUFBVSxHQUFHLENBQUNELFlBQWxCO0VBQ0FyQixhQUFhLEdBQ1RnQiw0QkFBNEIsSUFBSSxDQUFoQyxHQUFvQyxDQUFwQyxHQUF3Q0EsNEJBRDVDOztFQUVBLFNBQVNPLHNCQUFULEdBQWtDO0lBQzlCbkIsYUFBYSxDQUFDaHlFLEtBQWQsQ0FBb0J5YixPQUFwQixHQUE4QixpREFBOUI7SUFDQW8yRCxTQUFTLEdBQUcsY0FBWjtFQUNIOztFQUNELFNBQVN1QixtQkFBVCxHQUErQjtJQUMzQnBCLGFBQWEsQ0FBQ2h5RSxLQUFkLENBQW9CeWIsT0FBcEIsR0FBOEIsaURBQWlEcGIsTUFBakQsQ0FBd0Q4eEUsZ0JBQWdCLEdBQUdLLFdBQTNFLEVBQXdGLFNBQXhGLENBQTlCO0lBQ0FYLFNBQVMsR0FBRyxrQkFBWjtFQUNIOztFQUNELFNBQVN3Qix5QkFBVCxHQUFxQztJQUNqQztNQUNJLENBQUNoeUUsTUFBTSxDQUFDK21CLE9BQVAsRUFDRy9tQixNQUFNLENBQUMrbUIsT0FBUCxHQUNJdG9CLFFBQVEsQ0FBQzhJLGVBQVQsQ0FBeUI0UyxZQUQ3QixHQUVJLEdBRkosR0FHSTFiLFFBQVEsQ0FBQzhJLGVBQVQsQ0FBeUJ3dEMsWUFIN0IsR0FJSSxDQUxSLElBTU0vMEMsTUFBTSxDQUFDK21CLE9BQVAsR0FDRXRvQixRQUFRLENBQUM4SSxlQUFULENBQXlCNFMsWUFEM0IsR0FFRSxHQUZGLEdBR0UxYixRQUFRLENBQUM4SSxlQUFULENBQXlCd3RDLFlBVGpDLEdBVU0sRUFWTjtJQVdIO0lBQ0Q0N0IsYUFBYSxDQUFDaHlFLEtBQWQsQ0FBb0J5YixPQUFwQixHQUE4QixxQ0FBcUNwYixNQUFyQyxDQUE0Q2t5RSxZQUE1QyxFQUEwRCxXQUExRCxFQUF1RWx5RSxNQUF2RSxDQUE4RSxDQUFDZ0IsTUFBTSxDQUFDK21CLE9BQVAsRUFDekcvbUIsTUFBTSxDQUFDK21CLE9BQVAsR0FDSXRvQixRQUFRLENBQUM4SSxlQUFULENBQXlCNFMsWUFEN0IsR0FFSSxHQUZKLEdBR0kxYixRQUFRLENBQUM4SSxlQUFULENBQXlCd3RDLFlBSDdCLEdBSUksRUFMb0csSUFNdEcvMEMsTUFBTSxDQUFDK21CLE9BQVAsR0FDRXRvQixRQUFRLENBQUM4SSxlQUFULENBQXlCNFMsWUFEM0IsR0FFRSxHQUZGLEdBR0UxYixRQUFRLENBQUM4SSxlQUFULENBQXlCd3RDLFlBVDJFLEdBVXRHLEVBVndCLEVBVXBCLGFBVm9CLEVBVUwvMUMsTUFWSyxDQVVFZ3lFLE9BVkYsRUFVVyxJQVZYLENBQTlCO0lBV0FSLFNBQVMsR0FBRyxlQUFaO0VBQ0g7O0VBQ0QsU0FBU3lCLGtCQUFULEdBQThCO0lBQzFCei9CLEVBQUUsQ0FBQzd6QyxLQUFILENBQVN5YixPQUFULEdBQW1CLDBCQUFuQjtJQUNBbzJELFNBQVMsR0FBRyxrQkFBWjtFQUNIOztFQUNELFNBQVMwQixvQkFBVCxHQUFnQztJQUM1QixJQUFJVCxvQkFBb0IsSUFBSUYsNEJBQTVCLEVBQTBEO01BQ3RELElBQUlGLGNBQWMsR0FBR3J4RSxNQUFNLENBQUMrbUIsT0FBeEIsR0FBa0MsR0FBbEMsSUFBeUN0b0IsUUFBUSxDQUFDMkIsSUFBVCxDQUFjeXdFLFlBQTNELEVBQXlFO1FBQ3JFcitCLEVBQUUsQ0FBQzd6QyxLQUFILENBQVN5YixPQUFULEdBQW1CLDJCQUFuQjtNQUNILENBRkQsTUFHSztRQUNEdTJELGFBQWEsQ0FBQ2h5RSxLQUFkLENBQW9CeWIsT0FBcEIsR0FBOEIscUNBQXFDcGIsTUFBckMsQ0FBNENreUUsWUFBNUMsRUFBMEQsc0JBQTFELEVBQWtGbHlFLE1BQWxGLENBQXlGZ3lFLE9BQXpGLEVBQWtHLElBQWxHLENBQTlCO01BQ0g7O01BQ0RSLFNBQVMsR0FBRyxlQUFaO0lBQ0g7RUFDSjs7RUFDRCxTQUFTMkIscUJBQVQsR0FBaUM7SUFDN0IsSUFBSVIsY0FBYyxJQUFJQSxjQUFjLEdBQUdaLG1CQUF2QyxFQUE0RDtNQUN4REosYUFBYSxDQUFDaHlFLEtBQWQsQ0FBb0J5YixPQUFwQixHQUE4QixpREFBOUI7TUFDQW8yRCxTQUFTLEdBQUcsY0FBWjtJQUNIO0VBQ0o7O0VBQ0QsU0FBUzRCLGdCQUFULEdBQTRCO0lBQ3hCLFFBQVE1QixTQUFSO01BQ0ksS0FBSyxZQUFMO1FBQ0l1QixtQkFBbUI7UUFDbkI7O01BQ0osS0FBSyxlQUFMO1FBQ0ksSUFBSUosY0FBYyxJQUFJQSxjQUFjLEdBQUdaLG1CQUF2QyxFQUE0RDtVQUN4RGUsc0JBQXNCO1FBQ3pCOztRQUNEOztNQUNKLEtBQUssa0JBQUw7UUFDSSxJQUFJZixtQkFBbUIsSUFBSU0sY0FBM0IsRUFBMkM7VUFDdkNXLHlCQUF5QjtRQUM1Qjs7UUFDRDs7TUFDSixLQUFLLFdBQUw7UUFDSUMsa0JBQWtCO1FBQ2xCOztNQUNKLEtBQUssYUFBTDtRQUNJQyxvQkFBb0I7UUFDcEI7O01BQ0osS0FBSyxjQUFMO1FBQ0lDLHFCQUFxQjtRQUNyQjtJQXRCUjtFQXdCSDs7RUFDRCxTQUFTRSxpQkFBVCxHQUE2QjtJQUN6QixJQUFJbEIsV0FBVyxJQUFJLENBQW5CLEVBQXNCO01BQ2xCUixhQUFhLENBQUNoeUUsS0FBZCxDQUFvQnliLE9BQXBCLEdBQThCLHVCQUE5QjtNQUNBbzJELFNBQVMsR0FBRyxhQUFaO0lBQ0gsQ0FIRCxNQUlLO01BQ0RHLGFBQWEsQ0FBQ2h5RSxLQUFkLENBQW9CeWIsT0FBcEIsR0FBOEIsc0NBQXNDcGIsTUFBdEMsQ0FBNkMsQ0FBQ2dCLE1BQU0sQ0FBQyttQixPQUFQLEVBQ3hFL21CLE1BQU0sQ0FBQyttQixPQUFQLEdBQ0l0b0IsUUFBUSxDQUFDOEksZUFBVCxDQUF5QjRTLFlBRDdCLEdBRUksR0FGSixHQUdJMWIsUUFBUSxDQUFDOEksZUFBVCxDQUF5Qnd0QyxZQUg3QixHQUlJLEVBTG1FLElBTXJFLzBDLE1BQU0sQ0FBQyttQixPQUFQLEdBQ0V0b0IsUUFBUSxDQUFDOEksZUFBVCxDQUF5QjRTLFlBRDNCLEdBRUUsR0FGRixHQUdFMWIsUUFBUSxDQUFDOEksZUFBVCxDQUF5Qnd0QyxZQVQwQyxHQVVyRSxFQVZ3QixFQVVwQixZQVZvQixFQVVOLzFDLE1BVk0sQ0FVQ2t5RSxZQVZELEVBVWUsV0FWZixFQVU0Qmx5RSxNQVY1QixDQVVtQ2d5RSxPQVZuQyxFQVU0QyxLQVY1QyxDQUE5QjtJQVdIO0VBQ0o7O0VBQ0QsU0FBU3NCLG9CQUFULEdBQWdDO0lBQzVCM0IsYUFBYSxDQUFDaHlFLEtBQWQsQ0FBb0J5YixPQUFwQixHQUE4QixvQ0FBb0NwYixNQUFwQyxDQUEyQ2t5RSxZQUEzQyxFQUF5RCxXQUF6RCxFQUFzRWx5RSxNQUF0RSxDQUE2RWd5RSxPQUE3RSxFQUFzRixLQUF0RixDQUE5QjtJQUNBUixTQUFTLEdBQUcsY0FBWjtFQUNIOztFQUNELFNBQVMrQixnQkFBVCxHQUE0QjtJQUN4Qi8vQixFQUFFLENBQUM3ekMsS0FBSCxDQUFTeWIsT0FBVCxHQUFtQiwwQkFBbkI7SUFDQW8yRCxTQUFTLEdBQUcsa0JBQVo7RUFDSDs7RUFDRCxTQUFTZ0MsdUJBQVQsR0FBbUM7SUFDL0IsSUFBSTFCLGdCQUFnQixJQUFJLENBQXhCLEVBQTJCO01BQ3ZCSCxhQUFhLENBQUNoeUUsS0FBZCxDQUFvQnliLE9BQXBCLEdBQThCLG9DQUFvQ3BiLE1BQXBDLENBQTJDa3lFLFlBQTNDLEVBQXlELFdBQXpELEVBQXNFbHlFLE1BQXRFLENBQTZFZ3lFLE9BQTdFLEVBQXNGLElBQXRGLENBQTlCO01BQ0FSLFNBQVMsR0FBRyxZQUFaO0lBQ0g7RUFDSjs7RUFDRCxTQUFTaUMsbUJBQVQsR0FBK0I7SUFDM0IsSUFBSTNCLGdCQUFnQixJQUFJLENBQXBCLElBQXlCUyw0QkFBNEIsSUFBSSxDQUE3RCxFQUFnRTtNQUM1RFosYUFBYSxDQUFDaHlFLEtBQWQsQ0FBb0J5YixPQUFwQixHQUE4QixpQ0FBaUNwYixNQUFqQyxDQUF3Q2t5RSxZQUF4QyxFQUFzRCxXQUF0RCxFQUFtRWx5RSxNQUFuRSxDQUEwRWd5RSxPQUExRSxFQUFtRixJQUFuRixDQUE5QjtNQUNBUixTQUFTLEdBQUcsWUFBWjtJQUNIOztJQUNELElBQUlNLGdCQUFnQixJQUFJLENBQXBCLElBQXlCUyw0QkFBNEIsSUFBSSxDQUE3RCxFQUFnRTtNQUM1RFosYUFBYSxDQUFDaHlFLEtBQWQsQ0FBb0J5YixPQUFwQixHQUE4QixrQkFBa0JwYixNQUFsQixDQUF5Qmt5RSxZQUF6QixFQUF1QyxXQUF2QyxFQUFvRGx5RSxNQUFwRCxDQUEyRGd5RSxPQUEzRCxFQUFvRSxJQUFwRSxDQUE5QjtNQUNBUixTQUFTLEdBQUcsWUFBWjtJQUNIO0VBQ0o7O0VBQ0QsU0FBU2tDLGNBQVQsR0FBMEI7SUFDdEIsUUFBUWxDLFNBQVI7TUFDSSxLQUFLLFlBQUw7UUFDSTZCLGlCQUFpQjtRQUNqQjs7TUFDSixLQUFLLGVBQUw7UUFDSUMsb0JBQW9CO1FBQ3BCOztNQUNKLEtBQUssV0FBTDtRQUNJQyxnQkFBZ0I7UUFDaEI7O01BQ0osS0FBSyxrQkFBTDtRQUNJQyx1QkFBdUI7UUFDdkI7O01BQ0osS0FBSyxhQUFMO1FBQ0k7UUFDQTs7TUFDSixLQUFLLGNBQUw7UUFDSUMsbUJBQW1CO1FBQ25CO0lBbEJSO0VBb0JIOztFQUNELElBQUl2NEQsUUFBUSxHQUFHbTNELGNBQWYsRUFBK0I7SUFDM0I3K0IsRUFBRSxDQUFDN3pDLEtBQUgsQ0FBU3liLE9BQVQsR0FBbUIsMkJBQW5CO0lBQ0F1MkQsYUFBYSxDQUFDaHlFLEtBQWQsQ0FBb0J5YixPQUFwQixHQUE4QixFQUE5QjtFQUNILENBSEQsTUFJSztJQUNEbzRCLEVBQUUsQ0FBQzd6QyxLQUFILENBQVN5YixPQUFULEdBQW1CLFdBQVdwYixNQUFYLENBQWtCa2IsUUFBbEIsRUFBNEIsS0FBNUIsQ0FBbkI7O0lBQ0EsSUFBSTAzRCxZQUFZLElBQUlMLDRCQUE0QixJQUFJLENBQXBELEVBQXVEO01BQ25EYSxnQkFBZ0I7SUFDbkIsQ0FGRCxNQUdLLElBQUlQLFVBQVUsSUFBSU4sNEJBQTRCLElBQUksQ0FBbEQsRUFBcUQ7TUFDdERtQixjQUFjO0lBQ2pCLENBRkksTUFHQTtNQUNEbGdDLEVBQUUsQ0FBQzd6QyxLQUFILENBQVN5YixPQUFULEdBQW1CLDJCQUFuQjtNQUNBdTJELGFBQWEsQ0FBQ2h5RSxLQUFkLENBQW9CeWIsT0FBcEIsR0FBOEIsRUFBOUI7SUFDSDtFQUNKO0FBQ0osQ0FsTEQ7O0FBbUxBcGEsTUFBTSxDQUFDa25CLE1BQVAsR0FBZ0IsWUFBWTtFQUN4QjtFQUNBLElBQUlsTSxrQkFBa0IsR0FBR2xRLFdBQVcsQ0FBQyxZQUFZO0lBQzdDLElBQUl0TSxhQUFhLEdBQUdDLFFBQVEsQ0FBQ0MsYUFBVCxDQUF1QixXQUF2QixDQUFwQjs7SUFDQSxJQUFJRixhQUFhLEtBQUssSUFBdEIsRUFBNEI7TUFDeEJBLGFBQWEsQ0FBQ0csS0FBZCxDQUFvQm9qQixPQUFwQixHQUE4QixPQUE5QjtNQUNBdmpCLGFBQWEsQ0FBQ0csS0FBZCxDQUFvQmcwRSxNQUFwQixHQUE2Qiw0QkFBN0I7TUFDQTNuRSxhQUFhLENBQUNnUSxrQkFBRCxDQUFiO0lBQ0g7RUFDSixDQVBtQyxFQU9qQyxFQVBpQyxDQUFwQztBQVFILENBVkQsRUFXQTs7O0FBQ0FtMUQsR0FBRyxDQUFDeUMsU0FBSixDQUFjLGtCQUFkLEVBQWtDO0VBQzlCQyxPQUFPLEVBQUUsaUJBQVVyZ0MsRUFBVixFQUFjc2dDLE9BQWQsRUFBdUI7SUFDNUIsSUFBSXZyQixRQUFRLEdBQUcsQ0FBQ3VyQixPQUFPLENBQUMxMUUsS0FBUixJQUFpQixFQUFsQixFQUFzQm1xRCxRQUFyQztJQUNBQSxRQUFRLEdBQUdBLFFBQVEsSUFBSSxNQUF2QjtJQUNBdm5ELE1BQU0sQ0FBQ21RLGdCQUFQLENBQXdCLFFBQXhCLEVBQWtDLFlBQVk7TUFBRSxPQUFPc2dFLGFBQWEsQ0FBQ2orQixFQUFELEVBQUsrVSxRQUFMLENBQXBCO0lBQXFDLENBQXJGO0VBQ0gsQ0FMNkI7RUFNOUJ3ckIsU0FBUyxFQUFFLG1CQUFVdmdDLEVBQVYsRUFBY3NnQyxPQUFkLEVBQXVCO0lBQzlCLElBQUlFLE1BQU0sR0FBR0YsT0FBTyxDQUFDMTFFLEtBQVIsQ0FBY21xRCxRQUEzQjtJQUNBdm5ELE1BQU0sQ0FBQ3VRLG1CQUFQLENBQTJCLFFBQTNCLEVBQXFDLFlBQVk7TUFBRSxPQUFPa2dFLGFBQWEsQ0FBQ2orQixFQUFELEVBQUt3Z0MsTUFBTCxDQUFwQjtJQUFtQyxDQUF0RjtFQUNIO0FBVDZCLENBQWxDO0FBV0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQTdDLEdBQUcsQ0FBQzhDLEtBQUosQ0FBVSxNQUFWOzs7Ozs7Ozs7OztBQzdYYTs7QUFDYmgyRSw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsNEJBQUEsR0FBK0JBLDRCQUFBLEdBQStCLEtBQUssQ0FBbkU7O0FBQ0EsU0FBU2kyQixvQkFBVCxHQUFnQztFQUM1QixJQUFJck4sUUFBUSxHQUFHLENBQ1gsZUFEVyxFQUVYLGlCQUZXLEVBR1gsT0FIVyxFQUlYLGFBSlcsRUFLWCxtQkFMVyxFQU1YLGlCQU5XLEVBT1gsZUFQVyxFQVFYLG1CQVJXLEVBU1gsa0JBVFcsRUFVWCxRQVZXLEVBV1gsb0JBWFcsRUFZWCxtQkFaVyxFQWFYLHNCQWJXLEVBY1gsa0JBZFcsRUFlWCxRQWZXLEVBZ0JYLGNBaEJXLENBQWY7RUFrQkEsT0FBT0EsUUFBUDtBQUNIOztBQUNENW9CLDRCQUFBLEdBQStCaTJCLG9CQUEvQjs7QUFDQSxTQUFTcVUsb0JBQVQsR0FBZ0M7RUFDNUIsSUFBSTFoQixRQUFRLEdBQUcsQ0FBQyxlQUFELEVBQWtCLE1BQWxCLENBQWY7RUFDQSxPQUFPQSxRQUFQO0FBQ0g7O0FBQ0Q1b0IsNEJBQUEsR0FBK0JzcUMsb0JBQS9COzs7Ozs7Ozs7OztBQzdCYTs7QUFDYixJQUFJM3FDLGVBQWUsR0FBSSxRQUFRLEtBQUtBLGVBQWQsSUFBa0MsVUFBVUMsR0FBVixFQUFlO0VBQ25FLE9BQVFBLEdBQUcsSUFBSUEsR0FBRyxDQUFDQyxVQUFaLEdBQTBCRCxHQUExQixHQUFnQztJQUFFLFdBQVdBO0VBQWIsQ0FBdkM7QUFDSCxDQUZEOztBQUdBRSw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSXVRLFFBQVEsR0FBRzdRLGVBQWUsQ0FBQ1EsbUJBQU8sQ0FBQywrQ0FBRCxDQUFSLENBQTlCOztBQUNBLFNBQVMrd0IsVUFBVCxDQUFvQmpkLElBQXBCLEVBQTBCbkMsTUFBMUIsRUFBa0M7RUFDOUIsSUFBSUEsTUFBTSxLQUFLLEtBQUssQ0FBcEIsRUFBdUI7SUFBRUEsTUFBTSxHQUFHLGVBQVQ7RUFBMkI7O0VBQ3BELElBQUlpa0UsV0FBSjs7RUFDQSxRQUFRamtFLE1BQVI7SUFDSSxLQUFLLFNBQUw7TUFDSWlrRSxXQUFXLEdBQUc5aEUsSUFBSSxHQUFHLENBQUMsR0FBR3pELFFBQVEsV0FBWixFQUFzQnlELElBQXRCLEVBQTRCZ21CLE9BQTVCLEVBQUgsR0FBMkMsRUFBN0Q7TUFDQTs7SUFDSjtNQUNJODdDLFdBQVcsR0FBRzloRSxJQUFJLEdBQUcsQ0FBQyxHQUFHekQsUUFBUSxXQUFaLEVBQXNCeUQsSUFBdEIsRUFBNEJuQyxNQUE1QixDQUFtQ0EsTUFBbkMsQ0FBSCxHQUFnRCxFQUFsRTtFQUxSOztFQU9BLE9BQU9pa0UsV0FBUDtBQUNIOztBQUNELzFFLGtCQUFBLEdBQWtCa3hCLFVBQWxCOzs7Ozs7Ozs7OztBQ2xCYTs7QUFDYixJQUFJdnhCLGVBQWUsR0FBSSxRQUFRLEtBQUtBLGVBQWQsSUFBa0MsVUFBVUMsR0FBVixFQUFlO0VBQ25FLE9BQVFBLEdBQUcsSUFBSUEsR0FBRyxDQUFDQyxVQUFaLEdBQTBCRCxHQUExQixHQUFnQztJQUFFLFdBQVdBO0VBQWIsQ0FBdkM7QUFDSCxDQUZEOztBQUdBRSw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7O0FBQ0EsSUFBSSsxRSxXQUFXLEdBQUdyMkUsZUFBZSxDQUFDUSxtQkFBTyxDQUFDLG9EQUFELENBQVIsQ0FBakM7O0FBQ0EsU0FBUzgxRSxPQUFULENBQWlCenJDLE1BQWpCLEVBQXlCNS9CLEdBQXpCLEVBQThCO0VBQzFCLElBQUlzckUsRUFBRSxHQUFHRixXQUFXLFdBQVgsQ0FBb0JHLEdBQXBCLENBQXdCQyxTQUF4QixDQUFrQ0MsTUFBbEMsQ0FBeUMsRUFBekMsQ0FBVDtFQUNBLElBQUlDLElBQUksR0FBR04sV0FBVyxXQUFYLENBQW9CRyxHQUFwQixDQUF3QkMsU0FBeEIsQ0FBa0NDLE1BQWxDLENBQXlDLEdBQXpDLENBQVg7RUFDQSxJQUFJRSxVQUFVLEdBQUcsR0FBakI7RUFDQSxJQUFJQyxtQkFBbUIsR0FBRyxNQUFNLENBQWhDO0VBQ0EsSUFBSUMsT0FBTyxHQUFHVCxXQUFXLFdBQVgsQ0FBb0JVLE1BQXBCLENBQTJCOXJFLEdBQTNCLEVBQWdDMHJFLElBQWhDLEVBQXNDO0lBQ2hESyxNQUFNLEVBQUVYLFdBQVcsV0FBWCxDQUFvQlksSUFBcEIsQ0FBeUJDLE1BRGU7SUFFaERDLE9BQU8sRUFBRU4sbUJBQW1CLEdBQUcsQ0FGaUI7SUFHaERELFVBQVUsRUFBRUE7RUFIb0MsQ0FBdEMsQ0FBZDtFQUtBLElBQUlRLFNBQVMsR0FBR2YsV0FBVyxXQUFYLENBQW9CZ0IsR0FBcEIsQ0FBd0JmLE9BQXhCLENBQWdDenJDLE1BQWhDLEVBQXdDaXNDLE9BQXhDLEVBQWlEO0lBQzdEL04sSUFBSSxFQUFFc04sV0FBVyxXQUFYLENBQW9CdE4sSUFBcEIsQ0FBeUJ1TyxHQUQ4QjtJQUU3RGYsRUFBRSxFQUFFQTtFQUZ5RCxDQUFqRCxDQUFoQjtFQUlBLElBQUlnQixlQUFlLEdBQUdsQixXQUFXLFdBQVgsQ0FBb0JtQixHQUFwQixDQUF3QkMsTUFBeEIsQ0FBK0J4bkUsU0FBL0IsQ0FBeUNtbkUsU0FBUyxDQUFDTSxVQUFuRCxDQUF0QjtFQUNBLElBQUlDLE1BQU0sR0FBRztJQUNURCxVQUFVLEVBQUVILGVBREg7SUFFVGhCLEVBQUUsRUFBRUYsV0FBVyxXQUFYLENBQW9CbUIsR0FBcEIsQ0FBd0JJLEdBQXhCLENBQTRCM25FLFNBQTVCLENBQXNDc21FLEVBQXRDLENBRks7SUFHVEksSUFBSSxFQUFFTixXQUFXLFdBQVgsQ0FBb0JtQixHQUFwQixDQUF3QkksR0FBeEIsQ0FBNEIzbkUsU0FBNUIsQ0FBc0MwbUUsSUFBdEMsQ0FIRztJQUlUQyxVQUFVLEVBQUVBO0VBSkgsQ0FBYjtFQU1BLE9BQU9QLFdBQVcsV0FBWCxDQUFvQm1CLEdBQXBCLENBQXdCQyxNQUF4QixDQUErQnhuRSxTQUEvQixDQUF5Q29tRSxXQUFXLFdBQVgsQ0FBb0JtQixHQUFwQixDQUF3QkssSUFBeEIsQ0FBNkI5bkUsS0FBN0IsQ0FBbUNELElBQUksQ0FBQ0csU0FBTCxDQUFlMG5FLE1BQWYsQ0FBbkMsQ0FBekMsQ0FBUDtBQUNIOztBQUNEdDNFLGtCQUFBLEdBQWtCaTJFLE9BQWxCOzs7Ozs7Ozs7OztBQzdCYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0FuMkUsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDOztBQUNBLFNBQVMwTSxnQkFBVCxDQUEwQmxLLElBQTFCLEVBQWdDMEYsUUFBaEMsRUFBMEM7RUFDdEMsSUFBSWdRLEtBQUssR0FBRyxVQUFaLENBRHNDLENBRXRDOztFQUNBLElBQUkxVixJQUFKLEVBQVU7SUFDTixLQUFLLElBQUk2aUIsRUFBRSxHQUFHLENBQVQsRUFBWW15RCxNQUFNLEdBQUdoMUUsSUFBMUIsRUFBZ0M2aUIsRUFBRSxHQUFHbXlELE1BQU0sQ0FBQ3B4RSxNQUE1QyxFQUFvRGlmLEVBQUUsRUFBdEQsRUFBMEQ7TUFDdEQsSUFBSWhnQixDQUFDLEdBQUdteUUsTUFBTSxDQUFDbnlELEVBQUQsQ0FBZDs7TUFDQSxJQUFJaGdCLENBQUMsQ0FBQzZDLFFBQUYsSUFBYzdDLENBQUMsQ0FBQzZDLFFBQUYsS0FBZUEsUUFBakMsRUFBMkM7UUFDdkNnUSxLQUFLLEdBQUc3UyxDQUFDLENBQUNnWCxTQUFGLElBQWVoWCxDQUFDLENBQUNnWCxTQUFGLEtBQWdCLEVBQS9CLEdBQW9DaFgsQ0FBQyxDQUFDZ1gsU0FBdEMsR0FBa0QsVUFBMUQ7UUFDQSxPQUFPbkUsS0FBUDtNQUNIO0lBQ0osQ0FQSyxDQVFOOzs7SUFDQUEsS0FBSyxHQUNEMVYsSUFBSSxDQUFDLEdBQUQsQ0FBSixDQUFVNlosU0FBVixJQUF1QjdaLElBQUksQ0FBQyxHQUFELENBQUosQ0FBVTZaLFNBQVYsS0FBd0IsRUFBL0MsR0FDTTdaLElBQUksQ0FBQyxHQUFELENBQUosQ0FBVTZaLFNBRGhCLEdBRU0sVUFIVjtFQUlIOztFQUNELE9BQU9uRSxLQUFQO0FBQ0g7O0FBQ0RuWSxrQkFBQSxHQUFrQjJNLGdCQUFsQjs7Ozs7Ozs7Ozs7QUMxQmE7Ozs7QUFDYjdNLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxpQ0FBQSxHQUFvQ0Esb0JBQUEsR0FBdUJBLDRCQUFBLEdBQStCQSwrQkFBQSxHQUFrQ0EsK0JBQUEsR0FBa0NBLGNBQUEsR0FBaUJBLDBCQUFBLEdBQTZCQSx5QkFBQSxHQUE0QkEsbUJBQUEsR0FBc0IsS0FBSyxDQUFuUTs7QUFDQSxTQUFTaTdCLFdBQVQsQ0FBcUJ4NEIsSUFBckIsRUFBMkI7RUFDdkIsSUFBSTh4QixTQUFTLEdBQUcsRUFBaEI7RUFDQUEsU0FBUyxHQUFHOXhCLElBQUksQ0FBQzZXLEdBQUwsQ0FBUyxVQUFVQyxJQUFWLEVBQWdCO0lBQ2pDLE9BQU9BLElBQUksQ0FBQ2liLFNBQVo7RUFDSCxDQUZXLENBQVo7RUFHQSxJQUFJQyxZQUFZLEdBQUdGLFNBQVMsQ0FBQ3RvQixLQUFWLENBQWdCLENBQUMsQ0FBakIsRUFBb0IsQ0FBcEIsQ0FBbkI7RUFDQXNvQixTQUFTLEdBQUdBLFNBQVMsQ0FBQ3RvQixLQUFWLENBQWdCLENBQWhCLEVBQW1CLENBQUMsQ0FBcEIsQ0FBWjs7RUFDQSxJQUFJc29CLFNBQVMsQ0FBQ2x1QixNQUFWLEdBQW1CLENBQXZCLEVBQTBCO0lBQ3RCLE9BQU9rdUIsU0FBUyxDQUFDcm9CLElBQVYsQ0FBZSxJQUFmLElBQXVCLEdBQXZCLEdBQTZCLEtBQTdCLEdBQXFDLEdBQXJDLEdBQTJDdW9CLFlBQWxEO0VBQ0gsQ0FGRCxNQUdLO0lBQ0QsT0FBT0EsWUFBUDtFQUNIO0FBQ0o7O0FBQ0R6MEIsbUJBQUEsR0FBc0JpN0IsV0FBdEI7O0FBQ0EsU0FBU3pILGlCQUFULENBQTJCcWlDLGFBQTNCLEVBQTBDO0VBQ3RDLElBQUkraEIsYUFBYSxHQUFHLENBQXBCOztFQUNBLEtBQUssSUFBSUMsVUFBVCxJQUF1QmhpQixhQUF2QixFQUFzQztJQUNsQyxJQUFJOXdELE1BQU0sR0FBRzR5RSxrQkFBa0IsQ0FBQzloQixhQUFhLENBQUNnaUIsVUFBRCxDQUFkLEVBQTRCLEVBQTVCLENBQS9COztJQUNBLElBQUksQ0FBQzl5RSxNQUFNLENBQUNxMUMsS0FBUCxDQUFhLFVBQVU3Z0MsSUFBVixFQUFnQjtNQUFFLE9BQU9BLElBQUksS0FBSyxJQUFoQjtJQUF1QixDQUF0RCxDQUFMLEVBQThEO01BQzFEcStELGFBQWE7SUFDaEI7RUFDSjs7RUFDRCxPQUFPQSxhQUFQO0FBQ0g7O0FBQ0Q1M0UseUJBQUEsR0FBNEJ3ekIsaUJBQTVCOztBQUNBLFNBQVNta0Qsa0JBQVQsQ0FBNEI5aEIsYUFBNUIsRUFBMkNobkQsTUFBM0MsRUFBbUQ7RUFDL0MsSUFBSSxRQUFPZ25ELGFBQVAsTUFBeUIsUUFBekIsSUFBcUNBLGFBQXpDLEVBQXdEO0lBQ3BELEtBQUssSUFBSWpyRCxHQUFULElBQWdCaXJELGFBQWhCLEVBQStCO01BQzNCaG5ELE1BQU0sQ0FBQ2hOLE1BQVAsQ0FBYzgxRSxrQkFBa0IsQ0FBQzloQixhQUFhLENBQUNqckQsR0FBRCxDQUFkLEVBQXFCaUUsTUFBckIsQ0FBaEM7SUFDSDtFQUNKLENBSkQsTUFLSztJQUNEQSxNQUFNLENBQUN2SSxJQUFQLENBQVl1dkQsYUFBWjtFQUNIOztFQUNELE9BQU9obkQsTUFBUDtBQUNIOztBQUNEN08sMEJBQUEsR0FBNkIyM0Usa0JBQTdCOztBQUNBLFNBQVNub0UsTUFBVCxDQUFnQnNvRSxHQUFoQixFQUFxQjtFQUNqQixJQUFJO0lBQ0Fyb0UsSUFBSSxDQUFDQyxLQUFMLENBQVdvb0UsR0FBWDtFQUNILENBRkQsQ0FHQSxPQUFPanpFLENBQVAsRUFBVTtJQUNOLE9BQU8sS0FBUDtFQUNIOztFQUNELE9BQU8sSUFBUDtBQUNIOztBQUNEN0UsY0FBQSxHQUFpQndQLE1BQWpCOztBQUNBLFNBQVNrb0UsdUJBQVQsQ0FBaUNJLEdBQWpDLEVBQXNDO0VBQ2xDLE9BQU9BLEdBQUcsQ0FBQy8xRSxLQUFKLENBQVUsR0FBVixFQUFlbUssSUFBZixDQUFvQixHQUFwQixDQUFQO0FBQ0g7O0FBQ0RsTSwrQkFBQSxHQUFrQzAzRSx1QkFBbEM7O0FBQ0EsU0FBUy9qRCx1QkFBVCxDQUFpQ21rRCxHQUFqQyxFQUFzQztFQUNsQyxJQUFJdHNELEtBQUssR0FBR3NzRCxHQUFHLENBQUMvMUUsS0FBSixDQUFVLEdBQVYsQ0FBWjtFQUNBLElBQUl3cEIsUUFBUSxHQUFHQyxLQUFLLENBQUMsQ0FBRCxDQUFMLENBQVNoTSxNQUFULENBQWdCLENBQWhCLEVBQW1CQyxXQUFuQixLQUFtQytMLEtBQUssQ0FBQyxDQUFELENBQUwsQ0FBU3ZmLEtBQVQsQ0FBZSxDQUFmLEVBQWtCeU4sV0FBbEIsRUFBbEQ7O0VBQ0EsS0FBSyxJQUFJdEssQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR29jLEtBQUssQ0FBQ25sQixNQUExQixFQUFrQytJLENBQUMsRUFBbkMsRUFBdUM7SUFDbkNtYyxRQUFRLElBQUksTUFBTUMsS0FBSyxDQUFDcGMsQ0FBRCxDQUFMLENBQVNzSyxXQUFULEVBQWxCO0VBQ0g7O0VBQ0QsT0FBTzZSLFFBQVA7QUFDSDs7QUFDRHZyQiwrQkFBQSxHQUFrQzJ6Qix1QkFBbEM7O0FBQ0EsU0FBU29RLG9CQUFULENBQThCK3pDLEdBQTlCLEVBQW1DO0VBQy9CLE9BQU9BLEdBQUcsQ0FBQ2hzRSxPQUFKLENBQVksSUFBWixFQUFrQixHQUFsQixDQUFQO0FBQ0g7O0FBQ0Q5TCw0QkFBQSxHQUErQitqQyxvQkFBL0I7O0FBQ0EsU0FBU3JCLFlBQVQsQ0FBc0J6eUIsSUFBdEIsRUFBNEI4bkUsU0FBNUIsRUFBdUM7RUFDbkMsSUFBSTluRSxJQUFJLENBQUM1SixNQUFMLEdBQWMweEUsU0FBbEIsRUFBNkI7SUFDekIsT0FBTzluRSxJQUFJLENBQUMrbkUsU0FBTCxDQUFlLENBQWYsRUFBa0JELFNBQWxCLElBQStCLEtBQXRDO0VBQ0g7O0VBQ0QsT0FBTzluRSxJQUFQO0FBQ0g7O0FBQ0RqUSxvQkFBQSxHQUF1QjBpQyxZQUF2Qjs7QUFDQSxTQUFTOU8seUJBQVQsR0FBcUM7RUFDakMsSUFBSXBJLEtBQUssR0FBRyxFQUFaOztFQUNBLEtBQUssSUFBSWxHLEVBQUUsR0FBRyxDQUFkLEVBQWlCQSxFQUFFLEdBQUdZLFNBQVMsQ0FBQzdmLE1BQWhDLEVBQXdDaWYsRUFBRSxFQUExQyxFQUE4QztJQUMxQ2tHLEtBQUssQ0FBQ2xHLEVBQUQsQ0FBTCxHQUFZWSxTQUFTLENBQUNaLEVBQUQsQ0FBckI7RUFDSDs7RUFDRCxJQUFJMnlELG9CQUFvQixHQUFHenNELEtBQUssQ0FBQyxDQUFELENBQUwsQ0FBU2hNLE1BQVQsQ0FBZ0IsQ0FBaEIsRUFBbUJDLFdBQW5CLEtBQW1DK0wsS0FBSyxDQUFDLENBQUQsQ0FBTCxDQUFTdmYsS0FBVCxDQUFlLENBQWYsQ0FBOUQ7RUFDQSxJQUFJaXNFLGlCQUFpQixHQUFHMXNELEtBQUssQ0FBQ3ZmLEtBQU4sQ0FBWSxDQUFaLEVBQWVDLElBQWYsQ0FBb0IsR0FBcEIsQ0FBeEI7RUFDQSxPQUFPLEdBQUdySyxNQUFILENBQVVvMkUsb0JBQVYsRUFBZ0MsR0FBaEMsRUFBcUNwMkUsTUFBckMsQ0FBNENxMkUsaUJBQTVDLENBQVA7QUFDSDs7QUFDRGw0RSxpQ0FBQSxHQUFvQzR6Qix5QkFBcEM7Ozs7Ozs7Ozs7O0FDcEZhOztBQUNiOXpCLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxnQkFBQSxHQUFtQixLQUFLLENBQXhCOztBQUNBLElBQUltNEUsTUFBTSxHQUFHaDRFLG1CQUFPLENBQUMsMERBQUQsQ0FBcEI7O0FBQ0EsSUFBSWlKLEtBQUssR0FBRztFQUNSdVcsa0JBQWtCLEVBQUUsRUFEWjtFQUVSNVMsaUJBQWlCLEVBQUUsQ0FGWDtFQUdSMjVCLFlBQVksRUFBRSxLQUhOO0VBSVJqb0IsZ0JBQWdCLEVBQUUsS0FKVjtFQUtSMjVELFdBQVcsRUFBRSxJQUxMO0VBTVI5cUQsZ0JBQWdCLEVBQUUsS0FOVjtFQU9SMU8sbUJBQW1CLEVBQUUsS0FQYjtFQVFScmIsY0FBYyxFQUFFLEtBUlI7RUFTUmlxQixhQUFhLEVBQUUsS0FUUDtFQVVSdGdCLHFCQUFxQixFQUFFO0lBQ25CbEMsb0JBQW9CLEVBQUU7TUFDbEJxQyxVQUFVLEVBQUU7UUFBRTBCLFdBQVcsRUFBRSxDQUFmO1FBQWtCNnRELGNBQWMsRUFBRSxFQUFsQztRQUFzQ3h4RCxNQUFNLEVBQUU7TUFBOUMsQ0FETTtNQUVsQnNrQixlQUFlLEVBQUUsQ0FGQztNQUdsQkMsY0FBYyxFQUFFLEVBSEU7TUFJbEJ2a0IsTUFBTSxFQUFFLEVBSlU7TUFLbEJ6QixPQUFPLEVBQUU7SUFMUztFQURIO0FBVmYsQ0FBWjtBQW9CQSxJQUFJMHVFLFNBQVMsR0FBRztFQUNaQyx3QkFBd0IsRUFBRSxrQ0FBVWx2RSxLQUFWLEVBQWlCbXZFLE9BQWpCLEVBQTBCO0lBQ2hEbnZFLEtBQUssQ0FBQ3VXLGtCQUFOLEdBQTJCNDRELE9BQTNCO0VBQ0gsQ0FIVztFQUlaQyxtQkFBbUIsRUFBRSw2QkFBVXB2RSxLQUFWLEVBQWlCbXZFLE9BQWpCLEVBQTBCO0lBQzNDbnZFLEtBQUssQ0FBQ29rQixhQUFOLEdBQXNCK3FELE9BQXRCO0VBQ0gsQ0FOVztFQU9aRSx1QkFBdUIsRUFBRSxpQ0FBVXJ2RSxLQUFWLEVBQWlCbXZFLE9BQWpCLEVBQTBCO0lBQy9DbnZFLEtBQUssQ0FBQzJELGlCQUFOLEdBQTBCd3JFLE9BQTFCO0VBQ0gsQ0FUVztFQVVaRyxrQkFBa0IsRUFBRSw0QkFBVXR2RSxLQUFWLEVBQWlCbXZFLE9BQWpCLEVBQTBCO0lBQzFDbnZFLEtBQUssQ0FBQ3M5QixZQUFOLEdBQXFCNnhDLE9BQXJCO0VBQ0gsQ0FaVztFQWFaSSxpQkFBaUIsRUFBRSwyQkFBVXZ2RSxLQUFWLEVBQWlCbXZFLE9BQWpCLEVBQTBCO0lBQ3pDbnZFLEtBQUssQ0FBQ2d2RSxXQUFOLEdBQW9CRyxPQUFwQjtFQUNILENBZlc7RUFnQlpLLHNCQUFzQixFQUFFLGdDQUFVeHZFLEtBQVYsRUFBaUJtdkUsT0FBakIsRUFBMEI7SUFDOUNudkUsS0FBSyxDQUFDa2tCLGdCQUFOLEdBQXlCaXJELE9BQXpCO0VBQ0gsQ0FsQlc7RUFtQlpNLHlCQUF5QixFQUFFLG1DQUFVenZFLEtBQVYsRUFBaUJtdkUsT0FBakIsRUFBMEI7SUFDakRudkUsS0FBSyxDQUFDd1YsbUJBQU4sR0FBNEIyNUQsT0FBNUI7RUFDSCxDQXJCVztFQXNCWk8sb0JBQW9CLEVBQUUsOEJBQVUxdkUsS0FBVixFQUFpQm12RSxPQUFqQixFQUEwQjtJQUM1Q252RSxLQUFLLENBQUM3RixjQUFOLEdBQXVCZzFFLE9BQXZCO0VBQ0gsQ0F4Qlc7RUF5QlpRLDJCQUEyQixFQUFFLHFDQUFVM3ZFLEtBQVYsRUFBaUJtdkUsT0FBakIsRUFBMEI7SUFDbkRudkUsS0FBSyxDQUFDOEQscUJBQU4sR0FBOEJxckUsT0FBOUI7RUFDSCxDQTNCVztFQTRCWlMsc0JBQXNCLEVBQUUsZ0NBQVU1dkUsS0FBVixFQUFpQm12RSxPQUFqQixFQUEwQjtJQUM5Q252RSxLQUFLLENBQUNxVixnQkFBTixHQUF5Qjg1RCxPQUF6QjtFQUNIO0FBOUJXLENBQWhCO0FBZ0NBLElBQUlVLE9BQU8sR0FBRztFQUNWdHhDLHdCQUF3QixFQUFFLGtDQUFVOW1DLEVBQVYsRUFBYzAzRSxPQUFkLEVBQXVCO0lBQzdDLElBQUlXLE1BQU0sR0FBR3I0RSxFQUFFLENBQUNxNEUsTUFBaEI7SUFDQUEsTUFBTSxDQUFDLDBCQUFELEVBQTZCWCxPQUE3QixDQUFOO0VBQ0gsQ0FKUztFQUtWWSxtQkFBbUIsRUFBRSw2QkFBVXQ0RSxFQUFWLEVBQWMwM0UsT0FBZCxFQUF1QjtJQUN4QyxJQUFJVyxNQUFNLEdBQUdyNEUsRUFBRSxDQUFDcTRFLE1BQWhCO0lBQ0FBLE1BQU0sQ0FBQyxxQkFBRCxFQUF3QlgsT0FBeEIsQ0FBTjtFQUNILENBUlM7RUFTVmEsdUJBQXVCLEVBQUUsaUNBQVV2NEUsRUFBVixFQUFjMDNFLE9BQWQsRUFBdUI7SUFDNUMsSUFBSVcsTUFBTSxHQUFHcjRFLEVBQUUsQ0FBQ3E0RSxNQUFoQjtJQUNBQSxNQUFNLENBQUMseUJBQUQsRUFBNEJYLE9BQTVCLENBQU47RUFDSCxDQVpTO0VBYVZjLGtCQUFrQixFQUFFLDRCQUFVeDRFLEVBQVYsRUFBYzAzRSxPQUFkLEVBQXVCO0lBQ3ZDLElBQUlXLE1BQU0sR0FBR3I0RSxFQUFFLENBQUNxNEUsTUFBaEI7SUFDQUEsTUFBTSxDQUFDLG9CQUFELEVBQXVCWCxPQUF2QixDQUFOO0VBQ0gsQ0FoQlM7RUFpQlZlLGlCQUFpQixFQUFFLDJCQUFVejRFLEVBQVYsRUFBYzAzRSxPQUFkLEVBQXVCO0lBQ3RDLElBQUlXLE1BQU0sR0FBR3I0RSxFQUFFLENBQUNxNEUsTUFBaEI7SUFDQUEsTUFBTSxDQUFDLG1CQUFELEVBQXNCWCxPQUF0QixDQUFOO0VBQ0gsQ0FwQlM7RUFxQlZnQixzQkFBc0IsRUFBRSxnQ0FBVTE0RSxFQUFWLEVBQWMwM0UsT0FBZCxFQUF1QjtJQUMzQyxJQUFJVyxNQUFNLEdBQUdyNEUsRUFBRSxDQUFDcTRFLE1BQWhCO0lBQ0FBLE1BQU0sQ0FBQyx3QkFBRCxFQUEyQlgsT0FBM0IsQ0FBTjtFQUNILENBeEJTO0VBeUJWaUIseUJBQXlCLEVBQUUsbUNBQVUzNEUsRUFBVixFQUFjMDNFLE9BQWQsRUFBdUI7SUFDOUMsSUFBSVcsTUFBTSxHQUFHcjRFLEVBQUUsQ0FBQ3E0RSxNQUFoQjtJQUNBQSxNQUFNLENBQUMsMkJBQUQsRUFBOEJYLE9BQTlCLENBQU47RUFDSCxDQTVCUztFQTZCVmtCLG9CQUFvQixFQUFFLDhCQUFVNTRFLEVBQVYsRUFBYzAzRSxPQUFkLEVBQXVCO0lBQ3pDLElBQUlXLE1BQU0sR0FBR3I0RSxFQUFFLENBQUNxNEUsTUFBaEI7SUFDQUEsTUFBTSxDQUFDLHNCQUFELEVBQXlCWCxPQUF6QixDQUFOO0VBQ0gsQ0FoQ1M7RUFpQ1ZtQiwyQkFBMkIsRUFBRSxxQ0FBVTc0RSxFQUFWLEVBQWMwM0UsT0FBZCxFQUF1QjtJQUNoRCxJQUFJVyxNQUFNLEdBQUdyNEUsRUFBRSxDQUFDcTRFLE1BQWhCO0lBQ0FBLE1BQU0sQ0FBQyw2QkFBRCxFQUFnQ1gsT0FBaEMsQ0FBTjtFQUNILENBcENTO0VBcUNWb0Isc0JBQXNCLEVBQUUsZ0NBQVU5NEUsRUFBVixFQUFjMDNFLE9BQWQsRUFBdUI7SUFDM0MsSUFBSVcsTUFBTSxHQUFHcjRFLEVBQUUsQ0FBQ3E0RSxNQUFoQjtJQUNBQSxNQUFNLENBQUMsd0JBQUQsRUFBMkJYLE9BQTNCLENBQU47RUFDSDtBQXhDUyxDQUFkO0FBMENBLElBQUlxQixpQkFBaUIsR0FBRyxDQUFDLEdBQUd6QixNQUFNLENBQUMwQixXQUFYLEVBQXdCO0VBQzVDendFLEtBQUssRUFBRUEsS0FEcUM7RUFFNUNpdkUsU0FBUyxFQUFFQSxTQUZpQztFQUc1Q1ksT0FBTyxFQUFFQTtBQUhtQyxDQUF4QixDQUF4Qjs7QUFLQSxTQUFTajRFLFFBQVQsR0FBb0I7RUFDaEIsT0FBTzQ0RSxpQkFBUDtBQUNIOztBQUNENTVFLGdCQUFBLEdBQW1CZ0IsUUFBbkI7Ozs7Ozs7Ozs7O0FDMUdhOztBQUNibEIsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELG1CQUFBLEdBQXNCLEtBQUssQ0FBM0I7O0FBQ0EsSUFBSW00RSxNQUFNLEdBQUdoNEUsbUJBQU8sQ0FBQywwREFBRCxDQUFwQjs7QUFDQSxJQUFJaUosS0FBSyxHQUFHO0VBQ1J1Z0QsV0FBVyxFQUFFLEtBREw7RUFFUkMsYUFBYSxFQUFFLEtBRlA7RUFHUkMsYUFBYSxFQUFFLEVBSFA7RUFJUjFvRCxTQUFTLEVBQUUsS0FKSDtFQUtSMjRFLGlCQUFpQixFQUFFO0FBTFgsQ0FBWjtBQU9BLElBQUl6QixTQUFTLEdBQUc7RUFDWjBCLGlCQUFpQixFQUFFLDJCQUFVM3dFLEtBQVYsRUFBaUJtdkUsT0FBakIsRUFBMEI7SUFDekNudkUsS0FBSyxDQUFDdWdELFdBQU4sR0FBb0I0dUIsT0FBcEI7RUFDSCxDQUhXO0VBSVp5QixtQkFBbUIsRUFBRSw2QkFBVTV3RSxLQUFWLEVBQWlCbXZFLE9BQWpCLEVBQTBCO0lBQzNDbnZFLEtBQUssQ0FBQ3dnRCxhQUFOLEdBQXNCMnVCLE9BQXRCO0VBQ0gsQ0FOVztFQU9aMEIsbUJBQW1CLEVBQUUsNkJBQVU3d0UsS0FBVixFQUFpQm12RSxPQUFqQixFQUEwQjtJQUMzQ252RSxLQUFLLENBQUN5Z0QsYUFBTixHQUFzQjB1QixPQUF0QjtFQUNILENBVFc7RUFVWjJCLGVBQWUsRUFBRSx5QkFBVTl3RSxLQUFWLEVBQWlCbXZFLE9BQWpCLEVBQTBCO0lBQ3ZDbnZFLEtBQUssQ0FBQ2pJLFNBQU4sR0FBa0JvM0UsT0FBbEI7RUFDSCxDQVpXO0VBYVo0Qix1QkFBdUIsRUFBRSxpQ0FBVS93RSxLQUFWLEVBQWlCbXZFLE9BQWpCLEVBQTBCO0lBQy9DbnZFLEtBQUssQ0FBQzB3RSxpQkFBTixHQUEwQnZCLE9BQTFCO0VBQ0g7QUFmVyxDQUFoQjtBQWlCQSxJQUFJVSxPQUFPLEdBQUc7RUFDVm1CLGlCQUFpQixFQUFFLDJCQUFVdjVFLEVBQVYsRUFBYzAzRSxPQUFkLEVBQXVCO0lBQ3RDLElBQUlXLE1BQU0sR0FBR3I0RSxFQUFFLENBQUNxNEUsTUFBaEI7SUFDQUEsTUFBTSxDQUFDLG1CQUFELEVBQXNCWCxPQUF0QixDQUFOO0VBQ0gsQ0FKUztFQUtWOEIsbUJBQW1CLEVBQUUsNkJBQVV4NUUsRUFBVixFQUFjMDNFLE9BQWQsRUFBdUI7SUFDeEMsSUFBSVcsTUFBTSxHQUFHcjRFLEVBQUUsQ0FBQ3E0RSxNQUFoQjtJQUNBQSxNQUFNLENBQUMscUJBQUQsRUFBd0JYLE9BQXhCLENBQU47RUFDSCxDQVJTO0VBU1YrQixtQkFBbUIsRUFBRSw2QkFBVXo1RSxFQUFWLEVBQWMwM0UsT0FBZCxFQUF1QjtJQUN4QyxJQUFJVyxNQUFNLEdBQUdyNEUsRUFBRSxDQUFDcTRFLE1BQWhCO0lBQ0FBLE1BQU0sQ0FBQyxxQkFBRCxFQUF3QlgsT0FBeEIsQ0FBTjtFQUNILENBWlM7RUFhVmdDLGVBQWUsRUFBRSx5QkFBVTE1RSxFQUFWLEVBQWMwM0UsT0FBZCxFQUF1QjtJQUNwQyxJQUFJVyxNQUFNLEdBQUdyNEUsRUFBRSxDQUFDcTRFLE1BQWhCO0lBQ0FBLE1BQU0sQ0FBQyxpQkFBRCxFQUFvQlgsT0FBcEIsQ0FBTjtFQUNILENBaEJTO0VBaUJWaUMsdUJBQXVCLEVBQUUsaUNBQVUzNUUsRUFBVixFQUFjMDNFLE9BQWQsRUFBdUI7SUFDNUMsSUFBSVcsTUFBTSxHQUFHcjRFLEVBQUUsQ0FBQ3E0RSxNQUFoQjtJQUNBQSxNQUFNLENBQUMseUJBQUQsRUFBNEJYLE9BQTVCLENBQU47RUFDSDtBQXBCUyxDQUFkO0FBc0JBLElBQUlrQyxtQkFBbUIsR0FBRyxDQUFDLEdBQUd0QyxNQUFNLENBQUMwQixXQUFYLEVBQXdCO0VBQzlDendFLEtBQUssRUFBRUEsS0FEdUM7RUFFOUNpdkUsU0FBUyxFQUFFQSxTQUZtQztFQUc5Q1ksT0FBTyxFQUFFQTtBQUhxQyxDQUF4QixDQUExQjs7QUFLQSxTQUFTM3hFLFdBQVQsR0FBdUI7RUFDbkIsT0FBT216RSxtQkFBUDtBQUNIOztBQUNEejZFLG1CQUFBLEdBQXNCc0gsV0FBdEI7Ozs7Ozs7Ozs7O0FDMURhOztBQUNieEgsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGdCQUFBLEdBQW1CQSxhQUFBLEdBQWdCLEtBQUssQ0FBeEM7O0FBQ0EsSUFBSW00RSxNQUFNLEdBQUdoNEUsbUJBQU8sQ0FBQywwREFBRCxDQUFwQjs7QUFDQSxJQUFJdTZFLE9BQU8sR0FBR3Y2RSxtQkFBTyxDQUFDLHFFQUFELENBQXJCOztBQUNBLElBQUl3NkUsVUFBVSxHQUFHeDZFLG1CQUFPLENBQUMsMkVBQUQsQ0FBeEI7O0FBQ0EsSUFBSTByQyxTQUFTLEdBQUcxckMsbUJBQU8sQ0FBQyx5RUFBRCxDQUF2Qjs7QUFDQUgsYUFBQSxHQUFnQixDQUFDLEdBQUdtNEUsTUFBTSxDQUFDMEIsV0FBWCxFQUF3QjtFQUNwQ3p3RSxLQUFLLEVBQUVzeEUsT0FBTyxDQUFDdHhFLEtBRHFCO0VBRXBDaXZFLFNBQVMsRUFBRXNDLFVBQVUsQ0FBQ3RDLFNBRmM7RUFHcENZLE9BQU8sRUFBRXB0QyxTQUFTLENBQUNvdEM7QUFIaUIsQ0FBeEIsQ0FBaEI7O0FBS0EsU0FBU2o0RSxRQUFULEdBQW9CO0VBQ2hCLE9BQU9oQixPQUFPLENBQUNlLEtBQWY7QUFDSDs7QUFDRGYsZ0JBQUEsR0FBbUJnQixRQUFuQjs7Ozs7Ozs7Ozs7QUNmYTs7QUFDYixJQUFJSCxFQUFKOztBQUNBZiw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsZUFBQSxHQUFrQkEsbUJBQUEsR0FBc0IsS0FBSyxDQUE3Qzs7QUFDQSxJQUFJMjZFLFVBQVUsR0FBR3g2RSxtQkFBTyxDQUFDLG1FQUFELENBQXhCOztBQUNBLElBQUltc0MsV0FBSjs7QUFDQSxDQUFDLFVBQVVBLFdBQVYsRUFBdUI7RUFDcEJBLFdBQVcsQ0FBQyx3QkFBRCxDQUFYLEdBQXdDLHdCQUF4QztFQUNBQSxXQUFXLENBQUMsdUJBQUQsQ0FBWCxHQUF1Qyx1QkFBdkM7RUFDQUEsV0FBVyxDQUFDLHlCQUFELENBQVgsR0FBeUMseUJBQXpDO0VBQ0FBLFdBQVcsQ0FBQyx1QkFBRCxDQUFYLEdBQXVDLHVCQUF2QztFQUNBQSxXQUFXLENBQUMsc0JBQUQsQ0FBWCxHQUFzQyxzQkFBdEM7RUFDQUEsV0FBVyxDQUFDLG1CQUFELENBQVgsR0FBbUMsbUJBQW5DO0VBQ0FBLFdBQVcsQ0FBQywyQkFBRCxDQUFYLEdBQTJDLDJCQUEzQztBQUNILENBUkQsRUFRR0EsV0FBVyxHQUFHdHNDLE9BQU8sQ0FBQ3NzQyxXQUFSLEtBQXdCdHNDLG1CQUFBLEdBQXNCLEVBQTlDLENBUmpCOztBQVNBQSxlQUFBLElBQW1CYSxFQUFFLEdBQUcsRUFBTCxFQUNmQSxFQUFFLENBQUN5ckMsV0FBVyxDQUFDd0Isc0JBQWIsQ0FBRixHQUF5QyxVQUFVanRDLEVBQVYsRUFBYzAzRSxPQUFkLEVBQXVCO0VBQzVELElBQUlXLE1BQU0sR0FBR3I0RSxFQUFFLENBQUNxNEUsTUFBaEI7RUFDQUEsTUFBTSxDQUFDeUIsVUFBVSxDQUFDQyxhQUFYLENBQXlCOXNDLHNCQUExQixFQUFrRHlxQyxPQUFsRCxDQUFOO0FBQ0gsQ0FKYyxFQUtmMTNFLEVBQUUsQ0FBQ3lyQyxXQUFXLENBQUN1dUMscUJBQWIsQ0FBRixHQUF3QyxVQUFVaDZFLEVBQVYsRUFBYzAzRSxPQUFkLEVBQXVCO0VBQzNELElBQUlXLE1BQU0sR0FBR3I0RSxFQUFFLENBQUNxNEUsTUFBaEI7RUFDQUEsTUFBTSxDQUFDeUIsVUFBVSxDQUFDQyxhQUFYLENBQXlCQyxxQkFBMUIsRUFBaUR0QyxPQUFqRCxDQUFOO0FBQ0gsQ0FSYyxFQVNmMTNFLEVBQUUsQ0FBQ3lyQyxXQUFXLENBQUN3dUMsdUJBQWIsQ0FBRixHQUEwQyxVQUFVajZFLEVBQVYsRUFBYzAzRSxPQUFkLEVBQXVCO0VBQzdELElBQUlXLE1BQU0sR0FBR3I0RSxFQUFFLENBQUNxNEUsTUFBaEI7RUFDQUEsTUFBTSxDQUFDeUIsVUFBVSxDQUFDQyxhQUFYLENBQXlCRSx1QkFBMUIsRUFBbUR2QyxPQUFuRCxDQUFOO0FBQ0gsQ0FaYyxFQWFmMTNFLEVBQUUsQ0FBQ3lyQyxXQUFXLENBQUNDLHFCQUFiLENBQUYsR0FBd0MsVUFBVTFyQyxFQUFWLEVBQWMwM0UsT0FBZCxFQUF1QjtFQUMzRCxJQUFJVyxNQUFNLEdBQUdyNEUsRUFBRSxDQUFDcTRFLE1BQWhCO0VBQ0FBLE1BQU0sQ0FBQ3lCLFVBQVUsQ0FBQ0MsYUFBWCxDQUF5QnJ1QyxxQkFBMUIsRUFBaURnc0MsT0FBakQsQ0FBTjtBQUNILENBaEJjLEVBaUJmMTNFLEVBQUUsQ0FBQ3lyQyxXQUFXLENBQUN5dUMsb0JBQWIsQ0FBRixHQUF1QyxVQUFVbDZFLEVBQVYsRUFBYzAzRSxPQUFkLEVBQXVCO0VBQzFELElBQUlXLE1BQU0sR0FBR3I0RSxFQUFFLENBQUNxNEUsTUFBaEI7RUFDQUEsTUFBTSxDQUFDeUIsVUFBVSxDQUFDQyxhQUFYLENBQXlCRyxvQkFBMUIsRUFBZ0R4QyxPQUFoRCxDQUFOO0FBQ0gsQ0FwQmMsRUFxQmYxM0UsRUFBRSxDQUFDeXJDLFdBQVcsQ0FBQzB1QyxpQkFBYixDQUFGLEdBQW9DLFVBQVVuNkUsRUFBVixFQUFjMDNFLE9BQWQsRUFBdUI7RUFDdkQsSUFBSVcsTUFBTSxHQUFHcjRFLEVBQUUsQ0FBQ3E0RSxNQUFoQjtFQUNBQSxNQUFNLENBQUN5QixVQUFVLENBQUNDLGFBQVgsQ0FBeUJLLFVBQTFCLEVBQXNDMUMsT0FBdEMsQ0FBTjtBQUNILENBeEJjLEVBeUJmMTNFLEVBQUUsQ0FBQ3lyQyxXQUFXLENBQUM0dUMseUJBQWIsQ0FBRixHQUE0QyxVQUFVcjZFLEVBQVYsRUFBYzAzRSxPQUFkLEVBQXVCO0VBQy9ELElBQUlXLE1BQU0sR0FBR3I0RSxFQUFFLENBQUNxNEUsTUFBaEI7RUFDQUEsTUFBTSxDQUFDeUIsVUFBVSxDQUFDQyxhQUFYLENBQXlCTyxrQkFBMUIsRUFBOEM1QyxPQUE5QyxDQUFOO0FBQ0gsQ0E1QmMsRUE2QmYxM0UsRUE3Qko7Ozs7Ozs7Ozs7O0FDZmE7O0FBQ2IsSUFBSUEsRUFBSjs7QUFDQWYsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGlCQUFBLEdBQW9CQSxxQkFBQSxHQUF3QixLQUFLLENBQWpEO0FBQ0EsSUFBSTQ2RSxhQUFKOztBQUNBLENBQUMsVUFBVUEsYUFBVixFQUF5QjtFQUN0QkEsYUFBYSxDQUFDLHdCQUFELENBQWIsR0FBMEMsd0JBQTFDO0VBQ0FBLGFBQWEsQ0FBQyx1QkFBRCxDQUFiLEdBQXlDLHVCQUF6QztFQUNBQSxhQUFhLENBQUMseUJBQUQsQ0FBYixHQUEyQyx5QkFBM0M7RUFDQUEsYUFBYSxDQUFDLHVCQUFELENBQWIsR0FBeUMsdUJBQXpDO0VBQ0FBLGFBQWEsQ0FBQyxzQkFBRCxDQUFiLEdBQXdDLHNCQUF4QztFQUNBQSxhQUFhLENBQUMsWUFBRCxDQUFiLEdBQThCLFlBQTlCO0VBQ0FBLGFBQWEsQ0FBQyxvQkFBRCxDQUFiLEdBQXNDLG9CQUF0QztBQUNILENBUkQsRUFRR0EsYUFBYSxHQUFHNTZFLE9BQU8sQ0FBQzQ2RSxhQUFSLEtBQTBCNTZFLHFCQUFBLEdBQXdCLEVBQWxELENBUm5COztBQVNBQSxpQkFBQSxJQUFxQmEsRUFBRSxHQUFHLEVBQUwsRUFDakJBLEVBQUUsQ0FBQys1RSxhQUFhLENBQUM5c0Msc0JBQWYsQ0FBRixHQUEyQyxVQUFVMWtDLEtBQVYsRUFBaUJtdkUsT0FBakIsRUFBMEI7RUFDakVudkUsS0FBSyxDQUFDeWpDLGNBQU4sQ0FBcUIwckMsT0FBTyxDQUFDM3RFLEdBQTdCLElBQW9DMnRFLE9BQU8sQ0FBQ3Q0RSxLQUE1QztBQUNILENBSGdCLEVBSWpCWSxFQUFFLENBQUMrNUUsYUFBYSxDQUFDQyxxQkFBZixDQUFGLEdBQTBDLFVBQVV6eEUsS0FBVixFQUFpQm12RSxPQUFqQixFQUEwQjtFQUNoRW52RSxLQUFLLENBQUMwakMsY0FBTixDQUFxQnlyQyxPQUFPLENBQUMzdEUsR0FBN0IsSUFBb0MydEUsT0FBTyxDQUFDdDRFLEtBQTVDO0FBQ0gsQ0FOZ0IsRUFPakJZLEVBQUUsQ0FBQys1RSxhQUFhLENBQUNydUMscUJBQWYsQ0FBRixHQUEwQyxVQUFVbmpDLEtBQVYsRUFBaUJtdkUsT0FBakIsRUFBMEI7RUFDaEVudkUsS0FBSyxDQUFDK2lDLFdBQU4sQ0FBa0Jvc0MsT0FBTyxDQUFDM3RFLEdBQTFCLElBQWlDMnRFLE9BQU8sQ0FBQ3Q0RSxLQUF6QztBQUNILENBVGdCLEVBVWpCWSxFQUFFLENBQUMrNUUsYUFBYSxDQUFDRSx1QkFBZixDQUFGLEdBQTRDLFVBQVUxeEUsS0FBVixFQUFpQm12RSxPQUFqQixFQUEwQjtFQUNsRW52RSxLQUFLLENBQUMyakMsZUFBTixDQUFzQndyQyxPQUFPLENBQUMzdEUsR0FBOUIsSUFBcUMydEUsT0FBTyxDQUFDdDRFLEtBQTdDO0FBQ0gsQ0FaZ0IsRUFhakJZLEVBQUUsQ0FBQys1RSxhQUFhLENBQUNHLG9CQUFmLENBQUYsR0FBeUMsVUFBVTN4RSxLQUFWLEVBQWlCbXZFLE9BQWpCLEVBQTBCO0VBQy9EbnZFLEtBQUssQ0FBQ2dqQyxZQUFOLENBQW1CbXNDLE9BQU8sQ0FBQzN0RSxHQUEzQixJQUFrQzJ0RSxPQUFPLENBQUN0NEUsS0FBMUM7QUFDSCxDQWZnQixFQWdCakJZLEVBQUUsQ0FBQys1RSxhQUFhLENBQUNLLFVBQWYsQ0FBRixHQUErQixVQUFVN3hFLEtBQVYsRUFBaUJtdkUsT0FBakIsRUFBMEI7RUFDckRudkUsS0FBSyxDQUFDZ2pDLFlBQU4sQ0FBbUJtc0MsT0FBTyxDQUFDM3RFLEdBQTNCLElBQWtDMnRFLE9BQU8sQ0FBQ3Q0RSxLQUExQztBQUNILENBbEJnQixFQW1CakJZLEVBQUUsQ0FBQys1RSxhQUFhLENBQUNPLGtCQUFmLENBQUYsR0FBdUMsVUFBVS94RSxLQUFWLEVBQWlCbXZFLE9BQWpCLEVBQTBCO0VBQzdEbnZFLEtBQUssQ0FBQ2dqQyxZQUFOLENBQW1CbXNDLE9BQU8sQ0FBQzN0RSxHQUEzQixJQUFrQzJ0RSxPQUFPLENBQUN0NEUsS0FBMUM7QUFDSCxDQXJCZ0IsRUFzQmpCWSxFQXRCSjs7Ozs7Ozs7Ozs7QUNkYTs7QUFDYmYsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELGFBQUEsR0FBZ0IsS0FBSyxDQUFyQjtBQUNBQSxhQUFBLEdBQWdCO0VBQ1o2c0MsY0FBYyxFQUFFO0lBQ1prSyxZQUFZLEVBQUUsRUFERjtJQUVaekosU0FBUyxFQUFFO0VBRkMsQ0FESjtFQUtaUixjQUFjLEVBQUU7SUFDWmEsc0JBQXNCLEVBQUUsS0FEWjtJQUVaQyxrQkFBa0IsRUFBRSxLQUZSO0lBR1ppNkIsdUJBQXVCLEVBQUU7RUFIYixDQUxKO0VBVVoxN0IsV0FBVyxFQUFFO0lBQ1R2bEIsZ0JBQWdCLEVBQUUsRUFEVDtJQUVUQyxnQkFBZ0IsRUFBRSxFQUZUO0lBR1RDLFNBQVMsRUFBRSxFQUhGO0lBSVRnZ0QsZUFBZSxFQUFFLEVBSlI7SUFLVHJnRCxZQUFZLEVBQUUsRUFMTDtJQU1URSxtQkFBbUIsRUFBRSxFQU5aO0lBT1RvZ0QsMEJBQTBCLEVBQUUsRUFQbkI7SUFRVEMsaUJBQWlCLEVBQUUsRUFSVjtJQVNUQyxvQkFBb0IsRUFBRSxFQVRiO0lBVVQzTSxnQkFBZ0IsRUFBRSxFQVZUO0lBV1Q0TSxtQkFBbUIsRUFBRTtFQVhaLENBVkQ7RUF1QlpuNkIsZUFBZSxFQUFFO0lBQ2JPLFNBQVMsRUFBRTtFQURFLENBdkJMO0VBMEJabEIsWUFBWSxFQUFFO0lBQ1Z4bEIsZ0JBQWdCLEVBQUUsRUFEUjtJQUVWQyxnQkFBZ0IsRUFBRSxFQUZSO0lBR1ZDLFNBQVMsRUFBRSxFQUhEO0lBSVZnZ0QsZUFBZSxFQUFFLEVBSlA7SUFLVnJnRCxZQUFZLEVBQUUsRUFMSjtJQU1WRSxtQkFBbUIsRUFBRSxFQU5YO0lBT1ZvZ0QsMEJBQTBCLEVBQUUsRUFQbEI7SUFRVkMsaUJBQWlCLEVBQUUsRUFSVDtJQVNWQyxvQkFBb0IsRUFBRSxFQVRaO0lBVVYzTSxnQkFBZ0IsRUFBRSxFQVZSO0lBV1Y0TSxtQkFBbUIsRUFBRTtFQVhYLENBMUJGO0VBdUNaL2xFLFNBQVMsRUFBRTtBQXZDQyxDQUFoQjs7Ozs7Ozs7Ozs7QUNIYTs7QUFDYixJQUFJeEIsZUFBZSxHQUFJLFFBQVEsS0FBS0EsZUFBZCxJQUFrQyxVQUFVQyxHQUFWLEVBQWU7RUFDbkUsT0FBUUEsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVosR0FBMEJELEdBQTFCLEdBQWdDO0lBQUUsV0FBV0E7RUFBYixDQUF2QztBQUNILENBRkQ7O0FBR0FFLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCw2QkFBQSxHQUFnQ0EsMkJBQUEsR0FBOEJBLHlCQUFBLEdBQTRCQSxXQUFBLEdBQWNBLG9CQUFBLEdBQXVCQSx1QkFBQSxHQUEwQkEsa0JBQUEsR0FBcUJBLGtCQUFBLEdBQXFCQSxjQUFBLEdBQWlCQSxnQkFBQSxHQUFtQkEsb0JBQUEsR0FBdUJBLHVCQUFBLEdBQTBCQSx3QkFBQSxHQUEyQkEsd0JBQUEsR0FBMkJBLG1CQUFBLEdBQXNCQSxvQkFBQSxHQUF1QkEsbUJBQUEsR0FBc0JBLG9CQUFBLEdBQXVCQSx1QkFBQSxHQUEwQkEsc0JBQUEsR0FBeUJBLGNBQUEsR0FBaUIsS0FBSyxDQUFqZixFQUNBOztBQUNBLElBQUlvN0UsWUFBWSxHQUFHajdFLG1CQUFPLENBQUMsOEVBQUQsQ0FBMUI7O0FBQ0FMLDBDQUF5QztFQUFFa0UsVUFBVSxFQUFFLElBQWQ7RUFBb0JWLEdBQUcsRUFBRSxlQUFZO0lBQUUsT0FBTzNELGVBQWUsQ0FBQ3k3RSxZQUFELENBQWYsV0FBUDtFQUErQztBQUF0RixDQUF6Qzs7QUFDQSxJQUFJQyxvQkFBb0IsR0FBR2w3RSxtQkFBTyxDQUFDLDhGQUFELENBQWxDOztBQUNBTCxrREFBaUQ7RUFBRWtFLFVBQVUsRUFBRSxJQUFkO0VBQW9CVixHQUFHLEVBQUUsZUFBWTtJQUFFLE9BQU8zRCxlQUFlLENBQUMwN0Usb0JBQUQsQ0FBZixXQUFQO0VBQXVEO0FBQTlGLENBQWpEOztBQUNBLElBQUlDLHFCQUFxQixHQUFHbjdFLG1CQUFPLENBQUMsZ0dBQUQsQ0FBbkM7O0FBQ0FMLG1EQUFrRDtFQUFFa0UsVUFBVSxFQUFFLElBQWQ7RUFBb0JWLEdBQUcsRUFBRSxlQUFZO0lBQUUsT0FBTzNELGVBQWUsQ0FBQzI3RSxxQkFBRCxDQUFmLFdBQVA7RUFBd0Q7QUFBL0YsQ0FBbEQ7O0FBQ0EsSUFBSUMsV0FBVyxHQUFHcDdFLG1CQUFPLENBQUMsNEVBQUQsQ0FBekI7O0FBQ0FMLGdEQUErQztFQUFFa0UsVUFBVSxFQUFFLElBQWQ7RUFBb0JWLEdBQUcsRUFBRSxlQUFZO0lBQUUsT0FBTzNELGVBQWUsQ0FBQzQ3RSxXQUFELENBQWYsV0FBUDtFQUE4QztBQUFyRixDQUEvQzs7QUFDQSxJQUFJQyxpQkFBaUIsR0FBR3I3RSxtQkFBTyxDQUFDLHdGQUFELENBQS9COztBQUNBTCwrQ0FBOEM7RUFBRWtFLFVBQVUsRUFBRSxJQUFkO0VBQW9CVixHQUFHLEVBQUUsZUFBWTtJQUFFLE9BQU8zRCxlQUFlLENBQUM2N0UsaUJBQUQsQ0FBZixXQUFQO0VBQW9EO0FBQTNGLENBQTlDOztBQUNBLElBQUlDLGtCQUFrQixHQUFHdDdFLG1CQUFPLENBQUMsMEZBQUQsQ0FBaEM7O0FBQ0FMLGdEQUErQztFQUFFa0UsVUFBVSxFQUFFLElBQWQ7RUFBb0JWLEdBQUcsRUFBRSxlQUFZO0lBQUUsT0FBTzNELGVBQWUsQ0FBQzg3RSxrQkFBRCxDQUFmLFdBQVA7RUFBcUQ7QUFBNUYsQ0FBL0M7O0FBQ0EsSUFBSUMsaUJBQWlCLEdBQUd2N0UsbUJBQU8sQ0FBQyx3RkFBRCxDQUEvQjs7QUFDQUwsK0NBQThDO0VBQUVrRSxVQUFVLEVBQUUsSUFBZDtFQUFvQlYsR0FBRyxFQUFFLGVBQVk7SUFBRSxPQUFPM0QsZUFBZSxDQUFDKzdFLGlCQUFELENBQWYsV0FBUDtFQUFvRDtBQUEzRixDQUE5Qzs7QUFDQSxJQUFJQyxzQkFBc0IsR0FBR3g3RSxtQkFBTyxDQUFDLGtHQUFELENBQXBDOztBQUNBTCxvREFBbUQ7RUFBRWtFLFVBQVUsRUFBRSxJQUFkO0VBQW9CVixHQUFHLEVBQUUsZUFBWTtJQUFFLE9BQU8zRCxlQUFlLENBQUNnOEUsc0JBQUQsQ0FBZixXQUFQO0VBQXlEO0FBQWhHLENBQW5EOztBQUNBLElBQUlDLHNCQUFzQixHQUFHejdFLG1CQUFPLENBQUMsa0dBQUQsQ0FBcEM7O0FBQ0FMLG9EQUFtRDtFQUFFa0UsVUFBVSxFQUFFLElBQWQ7RUFBb0JWLEdBQUcsRUFBRSxlQUFZO0lBQUUsT0FBTzNELGVBQWUsQ0FBQ2k4RSxzQkFBRCxDQUFmLFdBQVA7RUFBeUQ7QUFBaEcsQ0FBbkQ7O0FBQ0EsSUFBSUMscUJBQXFCLEdBQUcxN0UsbUJBQU8sQ0FBQyxnR0FBRCxDQUFuQzs7QUFDQUwsbURBQWtEO0VBQUVrRSxVQUFVLEVBQUUsSUFBZDtFQUFvQlYsR0FBRyxFQUFFLGVBQVk7SUFBRSxPQUFPM0QsZUFBZSxDQUFDazhFLHFCQUFELENBQWYsV0FBUDtFQUF3RDtBQUEvRixDQUFsRDs7QUFDQSxJQUFJQyxrQkFBa0IsR0FBRzM3RSxtQkFBTyxDQUFDLDBGQUFELENBQWhDOztBQUNBTCxnREFBK0M7RUFBRWtFLFVBQVUsRUFBRSxJQUFkO0VBQW9CVixHQUFHLEVBQUUsZUFBWTtJQUFFLE9BQU8zRCxlQUFlLENBQUNtOEUsa0JBQUQsQ0FBZixXQUFQO0VBQXFEO0FBQTVGLENBQS9DOztBQUNBLElBQUlDLGNBQWMsR0FBRzU3RSxtQkFBTyxDQUFDLGtGQUFELENBQTVCOztBQUNBTCw0Q0FBMkM7RUFBRWtFLFVBQVUsRUFBRSxJQUFkO0VBQW9CVixHQUFHLEVBQUUsZUFBWTtJQUFFLE9BQU8zRCxlQUFlLENBQUNvOEUsY0FBRCxDQUFmLFdBQVA7RUFBaUQ7QUFBeEYsQ0FBM0M7O0FBQ0EsSUFBSUMsWUFBWSxHQUFHNzdFLG1CQUFPLENBQUMsOEVBQUQsQ0FBMUI7O0FBQ0FMLDBDQUF5QztFQUFFa0UsVUFBVSxFQUFFLElBQWQ7RUFBb0JWLEdBQUcsRUFBRSxlQUFZO0lBQUUsT0FBTzNELGVBQWUsQ0FBQ3E4RSxZQUFELENBQWYsV0FBUDtFQUErQztBQUF0RixDQUF6Qzs7QUFDQSxJQUFJQyxnQkFBZ0IsR0FBRzk3RSxtQkFBTyxDQUFDLHNGQUFELENBQTlCOztBQUNBTCw4Q0FBNkM7RUFBRWtFLFVBQVUsRUFBRSxJQUFkO0VBQW9CVixHQUFHLEVBQUUsZUFBWTtJQUFFLE9BQU8zRCxlQUFlLENBQUNzOEUsZ0JBQUQsQ0FBZixXQUFQO0VBQW1EO0FBQTFGLENBQTdDOztBQUNBLElBQUlDLGdCQUFnQixHQUFHLzdFLG1CQUFPLENBQUMsc0ZBQUQsQ0FBOUI7O0FBQ0FMLDhDQUE2QztFQUFFa0UsVUFBVSxFQUFFLElBQWQ7RUFBb0JWLEdBQUcsRUFBRSxlQUFZO0lBQUUsT0FBTzNELGVBQWUsQ0FBQ3U4RSxnQkFBRCxDQUFmLFdBQVA7RUFBbUQ7QUFBMUYsQ0FBN0M7O0FBQ0EsSUFBSUMscUJBQXFCLEdBQUdoOEUsbUJBQU8sQ0FBQyxnR0FBRCxDQUFuQzs7QUFDQUwsbURBQWtEO0VBQUVrRSxVQUFVLEVBQUUsSUFBZDtFQUFvQlYsR0FBRyxFQUFFLGVBQVk7SUFBRSxPQUFPM0QsZUFBZSxDQUFDdzhFLHFCQUFELENBQWYsV0FBUDtFQUF3RDtBQUEvRixDQUFsRDs7QUFDQSxJQUFJQyxrQkFBa0IsR0FBR2o4RSxtQkFBTyxDQUFDLDBGQUFELENBQWhDOztBQUNBTCxnREFBK0M7RUFBRWtFLFVBQVUsRUFBRSxJQUFkO0VBQW9CVixHQUFHLEVBQUUsZUFBWTtJQUFFLE9BQU8zRCxlQUFlLENBQUN5OEUsa0JBQUQsQ0FBZixXQUFQO0VBQXFEO0FBQTVGLENBQS9DOztBQUNBLElBQUlDLFNBQVMsR0FBR2w4RSxtQkFBTyxDQUFDLHdFQUFELENBQXZCOztBQUNBTCx1Q0FBc0M7RUFBRWtFLFVBQVUsRUFBRSxJQUFkO0VBQW9CVixHQUFHLEVBQUUsZUFBWTtJQUFFLE9BQU8zRCxlQUFlLENBQUMwOEUsU0FBRCxDQUFmLFdBQVA7RUFBNEM7QUFBbkYsQ0FBdEM7O0FBQ0EsSUFBSUMsdUJBQXVCLEdBQUduOEUsbUJBQU8sQ0FBQyxvR0FBRCxDQUFyQzs7QUFDQUwscURBQW9EO0VBQUVrRSxVQUFVLEVBQUUsSUFBZDtFQUFvQlYsR0FBRyxFQUFFLGVBQVk7SUFBRSxPQUFPM0QsZUFBZSxDQUFDMjhFLHVCQUFELENBQWYsV0FBUDtFQUEwRDtBQUFqRyxDQUFwRDs7QUFDQSxJQUFJQyx5QkFBeUIsR0FBR3A4RSxtQkFBTyxDQUFDLHdHQUFELENBQXZDOztBQUNBTCx1REFBc0Q7RUFBRWtFLFVBQVUsRUFBRSxJQUFkO0VBQW9CVixHQUFHLEVBQUUsZUFBWTtJQUFFLE9BQU8zRCxlQUFlLENBQUM0OEUseUJBQUQsQ0FBZixXQUFQO0VBQTREO0FBQW5HLENBQXREOztBQUNBLElBQUlDLDJCQUEyQixHQUFHcjhFLG1CQUFPLENBQUMsNEdBQUQsQ0FBekM7O0FBQ0FMLHlEQUF3RDtFQUFFa0UsVUFBVSxFQUFFLElBQWQ7RUFBb0JWLEdBQUcsRUFBRSxlQUFZO0lBQUUsT0FBTzNELGVBQWUsQ0FBQzY4RSwyQkFBRCxDQUFmLFdBQVA7RUFBOEQ7QUFBckcsQ0FBeEQ7Ozs7Ozs7Ozs7O0FDaERhOztBQUNiLElBQUk3OEUsZUFBZSxHQUFJLFFBQVEsS0FBS0EsZUFBZCxJQUFrQyxVQUFVQyxHQUFWLEVBQWU7RUFDbkUsT0FBUUEsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVosR0FBMEJELEdBQTFCLEdBQWdDO0lBQUUsV0FBV0E7RUFBYixDQUF2QztBQUNILENBRkQ7O0FBR0FFLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxjQUFBLEdBQWlCQSxnQkFBQSxHQUFtQkEsb0JBQUEsR0FBdUJBLGlCQUFBLEdBQW9CQSxtQkFBQSxHQUFzQkEseUJBQUEsR0FBNEJBLGlCQUFBLEdBQW9CQSxlQUFBLEdBQWtCQSxvQkFBQSxHQUF1QixLQUFLLENBQW5NLEVBQ0E7O0FBQ0EsSUFBSXU3RSxXQUFXLEdBQUdwN0UsbUJBQU8sQ0FBQyx1RkFBRCxDQUF6Qjs7QUFDQUwsZ0RBQStDO0VBQUVrRSxVQUFVLEVBQUUsSUFBZDtFQUFvQlYsR0FBRyxFQUFFLGVBQVk7SUFBRSxPQUFPM0QsZUFBZSxDQUFDNDdFLFdBQUQsQ0FBZixXQUFQO0VBQThDO0FBQXJGLENBQS9DOztBQUNBLElBQUlrQixhQUFhLEdBQUd0OEUsbUJBQU8sQ0FBQywyRkFBRCxDQUEzQjs7QUFDQUwsMkNBQTBDO0VBQUVrRSxVQUFVLEVBQUUsSUFBZDtFQUFvQlYsR0FBRyxFQUFFLGVBQVk7SUFBRSxPQUFPM0QsZUFBZSxDQUFDODhFLGFBQUQsQ0FBZixXQUFQO0VBQWdEO0FBQXZGLENBQTFDOztBQUNBLElBQUlDLHdCQUF3QixHQUFHdjhFLG1CQUFPLENBQUMsaUhBQUQsQ0FBdEM7O0FBQ0FMLDZDQUE0QztFQUFFa0UsVUFBVSxFQUFFLElBQWQ7RUFBb0JWLEdBQUcsRUFBRSxlQUFZO0lBQUUsT0FBTzNELGVBQWUsQ0FBQys4RSx3QkFBRCxDQUFmLFdBQVA7RUFBMkQ7QUFBbEcsQ0FBNUM7O0FBQ0EsSUFBSUMsdUJBQXVCLEdBQUd4OEUsbUJBQU8sQ0FBQywrR0FBRCxDQUFyQzs7QUFDQUwscURBQW9EO0VBQUVrRSxVQUFVLEVBQUUsSUFBZDtFQUFvQlYsR0FBRyxFQUFFLGVBQVk7SUFBRSxPQUFPM0QsZUFBZSxDQUFDZzlFLHVCQUFELENBQWYsV0FBUDtFQUEwRDtBQUFqRyxDQUFwRDs7QUFDQSxJQUFJbkIsaUJBQWlCLEdBQUdyN0UsbUJBQU8sQ0FBQyxtR0FBRCxDQUEvQjs7QUFDQUwsK0NBQThDO0VBQUVrRSxVQUFVLEVBQUUsSUFBZDtFQUFvQlYsR0FBRyxFQUFFLGVBQVk7SUFBRSxPQUFPM0QsZUFBZSxDQUFDNjdFLGlCQUFELENBQWYsV0FBUDtFQUFvRDtBQUEzRixDQUE5Qzs7QUFDQSxJQUFJb0IsZUFBZSxHQUFHejhFLG1CQUFPLENBQUMsK0ZBQUQsQ0FBN0I7O0FBQ0FMLDZDQUE0QztFQUFFa0UsVUFBVSxFQUFFLElBQWQ7RUFBb0JWLEdBQUcsRUFBRSxlQUFZO0lBQUUsT0FBTzNELGVBQWUsQ0FBQ2k5RSxlQUFELENBQWYsV0FBUDtFQUFrRDtBQUF6RixDQUE1Qzs7QUFDQSxJQUFJQyxrQkFBa0IsR0FBRzE4RSxtQkFBTyxDQUFDLHFHQUFELENBQWhDOztBQUNBTCxnREFBK0M7RUFBRWtFLFVBQVUsRUFBRSxJQUFkO0VBQW9CVixHQUFHLEVBQUUsZUFBWTtJQUFFLE9BQU8zRCxlQUFlLENBQUNrOUUsa0JBQUQsQ0FBZixXQUFQO0VBQXFEO0FBQTVGLENBQS9DOztBQUNBLElBQUlDLGNBQWMsR0FBRzM4RSxtQkFBTyxDQUFDLDZGQUFELENBQTVCOztBQUNBTCw0Q0FBMkM7RUFBRWtFLFVBQVUsRUFBRSxJQUFkO0VBQW9CVixHQUFHLEVBQUUsZUFBWTtJQUFFLE9BQU8zRCxlQUFlLENBQUNtOUUsY0FBRCxDQUFmLFdBQVA7RUFBaUQ7QUFBeEYsQ0FBM0M7O0FBQ0EsSUFBSUMsWUFBWSxHQUFHNThFLG1CQUFPLENBQUMseUZBQUQsQ0FBMUI7O0FBQ0FMLDBDQUF5QztFQUFFa0UsVUFBVSxFQUFFLElBQWQ7RUFBb0JWLEdBQUcsRUFBRSxlQUFZO0lBQUUsT0FBTzNELGVBQWUsQ0FBQ285RSxZQUFELENBQWYsV0FBUDtFQUErQztBQUF0RixDQUF6Qzs7Ozs7Ozs7Ozs7QUN4QmE7O0FBQ2IsSUFBSXA5RSxlQUFlLEdBQUksUUFBUSxLQUFLQSxlQUFkLElBQWtDLFVBQVVDLEdBQVYsRUFBZTtFQUNuRSxPQUFRQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBWixHQUEwQkQsR0FBMUIsR0FBZ0M7SUFBRSxXQUFXQTtFQUFiLENBQXZDO0FBQ0gsQ0FGRDs7QUFHQUUsOENBQTZDO0VBQUVHLEtBQUssRUFBRTtBQUFULENBQTdDO0FBQ0FELG1CQUFBLEdBQXNCQSxtQkFBQSxHQUFzQixLQUFLLENBQWpEOztBQUNBLElBQUlnOUUsaUJBQWlCLEdBQUc3OEUsbUJBQU8sQ0FBQyxnR0FBRCxDQUEvQjs7QUFDQUwsK0NBQThDO0VBQUVrRSxVQUFVLEVBQUUsSUFBZDtFQUFvQlYsR0FBRyxFQUFFLGVBQVk7SUFBRSxPQUFPM0QsZUFBZSxDQUFDcTlFLGlCQUFELENBQWYsV0FBUDtFQUFvRDtBQUEzRixDQUE5Qzs7QUFDQSxJQUFJQyxpQkFBaUIsR0FBRzk4RSxtQkFBTyxDQUFDLGdHQUFELENBQS9COztBQUNBTCwrQ0FBOEM7RUFBRWtFLFVBQVUsRUFBRSxJQUFkO0VBQW9CVixHQUFHLEVBQUUsZUFBWTtJQUFFLE9BQU8zRCxlQUFlLENBQUNzOUUsaUJBQUQsQ0FBZixXQUFQO0VBQW9EO0FBQTNGLENBQTlDOzs7Ozs7Ozs7OztBQ1RhOztBQUNiLElBQUl0OUUsZUFBZSxHQUFJLFFBQVEsS0FBS0EsZUFBZCxJQUFrQyxVQUFVQyxHQUFWLEVBQWU7RUFDbkUsT0FBUUEsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVosR0FBMEJELEdBQTFCLEdBQWdDO0lBQUUsV0FBV0E7RUFBYixDQUF2QztBQUNILENBRkQ7O0FBR0FFLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxpQkFBQSxHQUFvQkEsa0JBQUEsR0FBcUJBLGlCQUFBLEdBQW9CQSxvQkFBQSxHQUF1QkEsd0JBQUEsR0FBMkIsS0FBSyxDQUFwSCxFQUNBOztBQUNBLElBQUlrOUUsc0JBQXNCLEdBQUcvOEUsbUJBQU8sQ0FBQywwR0FBRCxDQUFwQzs7QUFDQUwsb0RBQW1EO0VBQUVrRSxVQUFVLEVBQUUsSUFBZDtFQUFvQlYsR0FBRyxFQUFFLGVBQVk7SUFBRSxPQUFPM0QsZUFBZSxDQUFDdTlFLHNCQUFELENBQWYsV0FBUDtFQUF5RDtBQUFoRyxDQUFuRDs7QUFDQSxJQUFJTCxrQkFBa0IsR0FBRzE4RSxtQkFBTyxDQUFDLGtHQUFELENBQWhDOztBQUNBTCxnREFBK0M7RUFBRWtFLFVBQVUsRUFBRSxJQUFkO0VBQW9CVixHQUFHLEVBQUUsZUFBWTtJQUFFLE9BQU8zRCxlQUFlLENBQUNrOUUsa0JBQUQsQ0FBZixXQUFQO0VBQXFEO0FBQTVGLENBQS9DOztBQUNBLElBQUlELGVBQWUsR0FBR3o4RSxtQkFBTyxDQUFDLDRGQUFELENBQTdCOztBQUNBTCw2Q0FBNEM7RUFBRWtFLFVBQVUsRUFBRSxJQUFkO0VBQW9CVixHQUFHLEVBQUUsZUFBWTtJQUFFLE9BQU8zRCxlQUFlLENBQUNpOUUsZUFBRCxDQUFmLFdBQVA7RUFBa0Q7QUFBekYsQ0FBNUM7O0FBQ0EsSUFBSU8sZ0JBQWdCLEdBQUdoOUUsbUJBQU8sQ0FBQyw4RkFBRCxDQUE5Qjs7QUFDQUwsOENBQTZDO0VBQUVrRSxVQUFVLEVBQUUsSUFBZDtFQUFvQlYsR0FBRyxFQUFFLGVBQVk7SUFBRSxPQUFPM0QsZUFBZSxDQUFDdzlFLGdCQUFELENBQWYsV0FBUDtFQUFtRDtBQUExRixDQUE3Qzs7QUFDQSxJQUFJL2hELGVBQWUsR0FBR2o3QixtQkFBTyxDQUFDLDRGQUFELENBQTdCOztBQUNBTCw2Q0FBNEM7RUFBRWtFLFVBQVUsRUFBRSxJQUFkO0VBQW9CVixHQUFHLEVBQUUsZUFBWTtJQUFFLE9BQU8zRCxlQUFlLENBQUN5N0IsZUFBRCxDQUFmLFdBQVA7RUFBa0Q7QUFBekYsQ0FBNUM7Ozs7Ozs7Ozs7O0FDaEJhOztBQUNiLElBQUl6N0IsZUFBZSxHQUFJLFFBQVEsS0FBS0EsZUFBZCxJQUFrQyxVQUFVQyxHQUFWLEVBQWU7RUFDbkUsT0FBUUEsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVosR0FBMEJELEdBQTFCLEdBQWdDO0lBQUUsV0FBV0E7RUFBYixDQUF2QztBQUNILENBRkQ7O0FBR0FFLDhDQUE2QztFQUFFRyxLQUFLLEVBQUU7QUFBVCxDQUE3QztBQUNBRCxrQkFBQSxHQUFxQkEsbUJBQUEsR0FBc0JBLGdCQUFBLEdBQW1CQSx1QkFBQSxHQUEwQkEsd0JBQUEsR0FBMkJBLGNBQUEsR0FBaUJBLDJCQUFBLEdBQThCQSw0QkFBQSxHQUErQkEsNEJBQUEsR0FBK0JBLGFBQUEsR0FBZ0JBLHVCQUFBLEdBQTBCQSx1QkFBQSxHQUEwQkEsZUFBQSxHQUFrQkEsbUJBQUEsR0FBc0IsS0FBSyxDQUFqVixFQUNBOztBQUNBLElBQUl3N0UsaUJBQWlCLEdBQUdyN0UsbUJBQU8sQ0FBQyxxR0FBRCxDQUEvQjs7QUFDQUwsK0NBQThDO0VBQUVrRSxVQUFVLEVBQUUsSUFBZDtFQUFvQlYsR0FBRyxFQUFFLGVBQVk7SUFBRSxPQUFPM0QsZUFBZSxDQUFDNjdFLGlCQUFELENBQWYsV0FBUDtFQUFvRDtBQUEzRixDQUE5Qzs7QUFDQSxJQUFJNEIsYUFBYSxHQUFHajlFLG1CQUFPLENBQUMsNkZBQUQsQ0FBM0I7O0FBQ0FMLDJDQUEwQztFQUFFa0UsVUFBVSxFQUFFLElBQWQ7RUFBb0JWLEdBQUcsRUFBRSxlQUFZO0lBQUUsT0FBTzNELGVBQWUsQ0FBQ3k5RSxhQUFELENBQWYsV0FBUDtFQUFnRDtBQUF2RixDQUExQzs7QUFDQSxJQUFJQyxxQkFBcUIsR0FBR2w5RSxtQkFBTyxDQUFDLDZHQUFELENBQW5DOztBQUNBTCxtREFBa0Q7RUFBRWtFLFVBQVUsRUFBRSxJQUFkO0VBQW9CVixHQUFHLEVBQUUsZUFBWTtJQUFFLE9BQU8zRCxlQUFlLENBQUMwOUUscUJBQUQsQ0FBZixXQUFQO0VBQXdEO0FBQS9GLENBQWxEOztBQUNBLElBQUlDLHFCQUFxQixHQUFHbjlFLG1CQUFPLENBQUMsNkdBQUQsQ0FBbkM7O0FBQ0FMLG1EQUFrRDtFQUFFa0UsVUFBVSxFQUFFLElBQWQ7RUFBb0JWLEdBQUcsRUFBRSxlQUFZO0lBQUUsT0FBTzNELGVBQWUsQ0FBQzI5RSxxQkFBRCxDQUFmLFdBQVA7RUFBd0Q7QUFBL0YsQ0FBbEQ7O0FBQ0EsSUFBSUMsV0FBVyxHQUFHcDlFLG1CQUFPLENBQUMseUZBQUQsQ0FBekI7O0FBQ0FMLHlDQUF3QztFQUFFa0UsVUFBVSxFQUFFLElBQWQ7RUFBb0JWLEdBQUcsRUFBRSxlQUFZO0lBQUUsT0FBTzNELGVBQWUsQ0FBQzQ5RSxXQUFELENBQWYsV0FBUDtFQUE4QztBQUFyRixDQUF4Qzs7QUFDQSxJQUFJQywwQkFBMEIsR0FBR3I5RSxtQkFBTyxDQUFDLHVIQUFELENBQXhDOztBQUNBTCx3REFBdUQ7RUFBRWtFLFVBQVUsRUFBRSxJQUFkO0VBQW9CVixHQUFHLEVBQUUsZUFBWTtJQUFFLE9BQU8zRCxlQUFlLENBQUM2OUUsMEJBQUQsQ0FBZixXQUFQO0VBQTZEO0FBQXBHLENBQXZEOztBQUNBLElBQUlDLDBCQUEwQixHQUFHdDlFLG1CQUFPLENBQUMsdUhBQUQsQ0FBeEM7O0FBQ0FMLHdEQUF1RDtFQUFFa0UsVUFBVSxFQUFFLElBQWQ7RUFBb0JWLEdBQUcsRUFBRSxlQUFZO0lBQUUsT0FBTzNELGVBQWUsQ0FBQzg5RSwwQkFBRCxDQUFmLFdBQVA7RUFBNkQ7QUFBcEcsQ0FBdkQ7O0FBQ0EsSUFBSUMseUJBQXlCLEdBQUd2OUUsbUJBQU8sQ0FBQyxxSEFBRCxDQUF2Qzs7QUFDQUwsdURBQXNEO0VBQUVrRSxVQUFVLEVBQUUsSUFBZDtFQUFvQlYsR0FBRyxFQUFFLGVBQVk7SUFBRSxPQUFPM0QsZUFBZSxDQUFDKzlFLHlCQUFELENBQWYsV0FBUDtFQUE0RDtBQUFuRyxDQUF0RDs7QUFDQSxJQUFJMUIsWUFBWSxHQUFHNzdFLG1CQUFPLENBQUMsMkZBQUQsQ0FBMUI7O0FBQ0FMLDBDQUF5QztFQUFFa0UsVUFBVSxFQUFFLElBQWQ7RUFBb0JWLEdBQUcsRUFBRSxlQUFZO0lBQUUsT0FBTzNELGVBQWUsQ0FBQ3E4RSxZQUFELENBQWYsV0FBUDtFQUErQztBQUF0RixDQUF6Qzs7QUFDQSxJQUFJSixzQkFBc0IsR0FBR3o3RSxtQkFBTyxDQUFDLCtHQUFELENBQXBDOztBQUNBTCxvREFBbUQ7RUFBRWtFLFVBQVUsRUFBRSxJQUFkO0VBQW9CVixHQUFHLEVBQUUsZUFBWTtJQUFFLE9BQU8zRCxlQUFlLENBQUNpOEUsc0JBQUQsQ0FBZixXQUFQO0VBQXlEO0FBQWhHLENBQW5EOztBQUNBLElBQUlDLHFCQUFxQixHQUFHMTdFLG1CQUFPLENBQUMsNkdBQUQsQ0FBbkM7O0FBQ0FMLG1EQUFrRDtFQUFFa0UsVUFBVSxFQUFFLElBQWQ7RUFBb0JWLEdBQUcsRUFBRSxlQUFZO0lBQUUsT0FBTzNELGVBQWUsQ0FBQ2s4RSxxQkFBRCxDQUFmLFdBQVA7RUFBd0Q7QUFBL0YsQ0FBbEQ7O0FBQ0EsSUFBSThCLGNBQWMsR0FBR3g5RSxtQkFBTyxDQUFDLCtGQUFELENBQTVCOztBQUNBTCw0Q0FBMkM7RUFBRWtFLFVBQVUsRUFBRSxJQUFkO0VBQW9CVixHQUFHLEVBQUUsZUFBWTtJQUFFLE9BQU8zRCxlQUFlLENBQUNnK0UsY0FBRCxDQUFmLFdBQVA7RUFBaUQ7QUFBeEYsQ0FBM0M7O0FBQ0EsSUFBSUMsaUJBQWlCLEdBQUd6OUUsbUJBQU8sQ0FBQyxxR0FBRCxDQUEvQjs7QUFDQUwsK0NBQThDO0VBQUVrRSxVQUFVLEVBQUUsSUFBZDtFQUFvQlYsR0FBRyxFQUFFLGVBQVk7SUFBRSxPQUFPM0QsZUFBZSxDQUFDaStFLGlCQUFELENBQWYsV0FBUDtFQUFvRDtBQUEzRixDQUE5Qzs7QUFDQSxJQUFJQyxnQkFBZ0IsR0FBRzE5RSxtQkFBTyxDQUFDLG1HQUFELENBQTlCOztBQUNBTCw4Q0FBNkM7RUFBRWtFLFVBQVUsRUFBRSxJQUFkO0VBQW9CVixHQUFHLEVBQUUsZUFBWTtJQUFFLE9BQU8zRCxlQUFlLENBQUNrK0UsZ0JBQUQsQ0FBZixXQUFQO0VBQW1EO0FBQTFGLENBQTdDOzs7Ozs7Ozs7OztBQ2xDYTs7QUFDYixJQUFJbCtFLGVBQWUsR0FBSSxRQUFRLEtBQUtBLGVBQWQsSUFBa0MsVUFBVUMsR0FBVixFQUFlO0VBQ25FLE9BQVFBLEdBQUcsSUFBSUEsR0FBRyxDQUFDQyxVQUFaLEdBQTBCRCxHQUExQixHQUFnQztJQUFFLFdBQVdBO0VBQWIsQ0FBdkM7QUFDSCxDQUZEOztBQUdBRSw4Q0FBNkM7RUFBRUcsS0FBSyxFQUFFO0FBQVQsQ0FBN0M7QUFDQUQsb0JBQUEsR0FBdUJBLHdCQUFBLEdBQTJCQSw4QkFBQSxHQUFpQ0EsNkJBQUEsR0FBZ0NBLDBCQUFBLEdBQTZCQSxtQkFBQSxHQUFzQkEsNkJBQUEsR0FBZ0MsS0FBSyxDQUEzTSxFQUNBOztBQUNBLElBQUk4OUUsMkJBQTJCLEdBQUczOUUsbUJBQU8sQ0FBQyxnSEFBRCxDQUF6Qzs7QUFDQUwseURBQXdEO0VBQUVrRSxVQUFVLEVBQUUsSUFBZDtFQUFvQlYsR0FBRyxFQUFFLGVBQVk7SUFBRSxPQUFPM0QsZUFBZSxDQUFDbStFLDJCQUFELENBQWYsV0FBUDtFQUE4RDtBQUFyRyxDQUF4RDs7QUFDQSxJQUFJQyxpQkFBaUIsR0FBRzU5RSxtQkFBTyxDQUFDLDRGQUFELENBQS9COztBQUNBTCwrQ0FBOEM7RUFBRWtFLFVBQVUsRUFBRSxJQUFkO0VBQW9CVixHQUFHLEVBQUUsZUFBWTtJQUFFLE9BQU8zRCxlQUFlLENBQUNvK0UsaUJBQUQsQ0FBZixXQUFQO0VBQW9EO0FBQTNGLENBQTlDOztBQUNBLElBQUlDLHdCQUF3QixHQUFHNzlFLG1CQUFPLENBQUMsMEdBQUQsQ0FBdEM7O0FBQ0FMLHNEQUFxRDtFQUFFa0UsVUFBVSxFQUFFLElBQWQ7RUFBb0JWLEdBQUcsRUFBRSxlQUFZO0lBQUUsT0FBTzNELGVBQWUsQ0FBQ3ErRSx3QkFBRCxDQUFmLFdBQVA7RUFBMkQ7QUFBbEcsQ0FBckQ7O0FBQ0EsSUFBSUMsMkJBQTJCLEdBQUc5OUUsbUJBQU8sQ0FBQyxnSEFBRCxDQUF6Qzs7QUFDQUwseURBQXdEO0VBQUVrRSxVQUFVLEVBQUUsSUFBZDtFQUFvQlYsR0FBRyxFQUFFLGVBQVk7SUFBRSxPQUFPM0QsZUFBZSxDQUFDcytFLDJCQUFELENBQWYsV0FBUDtFQUE4RDtBQUFyRyxDQUF4RDs7QUFDQSxJQUFJQyw0QkFBNEIsR0FBRy85RSxtQkFBTyxDQUFDLGtIQUFELENBQTFDOztBQUNBTCwwREFBeUQ7RUFBRWtFLFVBQVUsRUFBRSxJQUFkO0VBQW9CVixHQUFHLEVBQUUsZUFBWTtJQUFFLE9BQU8zRCxlQUFlLENBQUN1K0UsNEJBQUQsQ0FBZixXQUFQO0VBQStEO0FBQXRHLENBQXpEOztBQUNBLElBQUlDLHNCQUFzQixHQUFHaCtFLG1CQUFPLENBQUMsc0dBQUQsQ0FBcEM7O0FBQ0FMLG9EQUFtRDtFQUFFa0UsVUFBVSxFQUFFLElBQWQ7RUFBb0JWLEdBQUcsRUFBRSxlQUFZO0lBQUUsT0FBTzNELGVBQWUsQ0FBQ3crRSxzQkFBRCxDQUFmLFdBQVA7RUFBeUQ7QUFBaEcsQ0FBbkQ7O0FBQ0EsSUFBSXRCLGtCQUFrQixHQUFHMThFLG1CQUFPLENBQUMsOEZBQUQsQ0FBaEM7O0FBQ0FMLGdEQUErQztFQUFFa0UsVUFBVSxFQUFFLElBQWQ7RUFBb0JWLEdBQUcsRUFBRSxlQUFZO0lBQUUsT0FBTzNELGVBQWUsQ0FBQ2s5RSxrQkFBRCxDQUFmLFdBQVA7RUFBcUQ7QUFBNUYsQ0FBL0M7Ozs7Ozs7Ozs7Ozs7Ozs7QUNzREE7QUFFQSxpRUFBZXA4RSxvREFBZSxDQUFDO0VBQzdCRSxLQUQ2QixtQkFDckI7SUFDTixJQUFNd0gsUUFBTyxHQUFJdEYsTUFBTSxDQUFDLFlBQUQsQ0FBdkI7SUFDQSxPQUFPO01BQUVzRixRQUFPLEVBQVBBO0lBQUYsQ0FBUDtFQUNEO0FBSjRCLENBQUQsQ0FBOUI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzlCQTtBQUNBO0FBQ0E7QUFFQSxpRUFBZTFILG9EQUFlLENBQUM7RUFDN0IrTCxVQUFVLEVBQUU7SUFDVjZ4RSxPQUFPLEVBQVBBLDZEQURVO0lBRVZELE1BQU0sRUFBTkEsNERBQU1BO0VBRkksQ0FEaUI7RUFLN0J6M0UsS0FBSyxFQUFFO0lBQ0xzVSxJQUFJLEVBQUU7TUFDSnBVLElBQUksRUFBRXFKLE1BREY7TUFFSnBKLFFBQVEsRUFBRSxLQUZOO01BR0osV0FBUztJQUhMLENBREQ7SUFNTDZDLE9BQU8sRUFBRTtNQUNQOUMsSUFBSSxFQUFFcUosTUFEQztNQUVQcEosUUFBUSxFQUFFO0lBRkgsQ0FOSjtJQVVMNDBDLE1BQU0sRUFBRTtNQUNONzBDLElBQUksRUFBRXFKLE1BREE7TUFFTnBKLFFBQVEsRUFBRTtJQUZKO0VBVkgsQ0FMc0I7RUFvQjdCbkcsS0FwQjZCLGlCQW9CdkJnRyxLQXBCdUIsRUFvQmhCO0lBQ1gsSUFBTXdCLFFBQU8sR0FBSXRGLE1BQU0sQ0FBQyxZQUFELENBQXZCO0lBQ0EsSUFBTXk3RSxXQUFVLEdBQUlwOUUsd0NBQUcsQ0FDckJ5RixLQUFLLENBQUNzVSxJQUFOLEtBQWUsUUFBZixHQUNJOVMsUUFBUSxDQUFDRyxRQUFULENBQWtCa21FLFFBRHRCLEdBRUlybUUsUUFBUSxDQUFDRyxRQUFULENBQWtCMmlFLE9BSEQsQ0FBdkI7O0lBS0EsU0FBU3NULFVBQVQsR0FBc0I7TUFDcEJELFdBQVcsQ0FBQ3IrRSxLQUFaLEdBQ0VxK0UsV0FBVyxDQUFDcitFLEtBQVosS0FBc0JrSSxRQUFRLENBQUNHLFFBQVQsQ0FBa0JrbUUsUUFBeEMsR0FDSXJtRSxRQUFRLENBQUNHLFFBQVQsQ0FBa0IyaUUsT0FEdEIsR0FFSTlpRSxRQUFRLENBQUNHLFFBQVQsQ0FBa0JrbUUsUUFIeEI7SUFJRjs7SUFFQSxPQUFPO01BQ0w4UCxXQUFXLEVBQVhBLFdBREs7TUFFTEMsVUFBVSxFQUFWQSxVQUZLO01BR0xwMkUsUUFBUSxFQUFSQTtJQUhLLENBQVA7RUFLRDtBQXZDNEIsQ0FBRCxDQUE5Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUNqRE8sU0FBTTtFQUFpQjNHLEtBQXdCLEVBQXhCO0lBQUE7RUFBQTs7OzJEQUE1Qmc5RSx1REFBQUEsQ0FBMkQsS0FBM0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUNBTSxTQUFNOzs7MkRBQVpBLHVEQUFBQSxDQUE0QixNQUE1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFSENLLFNBQU07OztFQUNKLFNBQU07OztFQUNBLFNBQU07OztFQUNKLFNBQU07OztFQUNULFNBQU07OztFQUdQLFNBQU07OztFQUlGLFNBQU07OztFQUNULFNBQU07OztFQUdOLFNBQU07OztFQUNKLFNBQU07OztFQUNGLFNBQU07OztFQUtWLFNBQU07OztFQUNGLFNBQU07OztFQUtWLFNBQU07OztFQUNGLFNBQU07OztFQUtWLFNBQU07OztFQUNGLFNBQU07OztFQUtWLFNBQU07OztFQUNGLFNBQU07OztFQU1iLFNBQU07OztFQUdOLFNBQU07Ozs7RUFNRixTQUFNOzs7RUFDVCxTQUFNOzs7RUFHUCxTQUFNOzs7OzJEQTVEakJBLHVEQUFBQSxDQW9FTSxLQXBFTixjQW9FTSxDQW5FSkMsdURBQUFBLENBa0VNLEtBbEVOLGNBa0VNLENBakVKQSx1REFBQUEsQ0FnRVUsU0FoRVYsY0FnRVUsQ0EvRFJBLHVEQUFBQSxDQU9VLFNBUFYsY0FPVSxDQU5SQSx1REFBQUEsQ0FFSyxJQUZMLGNBRUtDLG9EQUFBQSxDQURBL2hDLGNBQVNxeEIsS0FBVCxDQUFlMlEsNkJBQ2YsQ0FGTCxFQUNpRDtFQUFBO0VBRGpELENBTVEsRUFIUkYsdURBQUFBLENBRUksR0FGSixjQUVJQyxvREFBQUEsQ0FEQy9oQyxjQUFTcXhCLEtBQVQsQ0FBZTRRLGtDQUFmLENBQWtEbmlCLEdBQ25ELENBRkosRUFDMEQ7RUFBQTtFQUQxRCxDQUdRLENBUFYsQ0ErRFEsRUF2RFJnaUIsdURBQUFBLENBNENVLFNBNUNWLGNBNENVLENBM0NSQSx1REFBQUEsQ0FFSyxJQUZMLGNBRUtDLG9EQUFBQSxDQURBL2hDLGNBQVNxeEIsS0FBVCxDQUFlNlEsNEJBQ2YsQ0FGTCxFQUNnRDtFQUFBO0VBRGhELENBMkNRLEVBeENSSix1REFBQUEsQ0ErQkssSUEvQkwsY0ErQkssQ0E5QkhBLHVEQUFBQSxDQUtLLElBTEwsZUFLSyxDQUpIQSx1REFBQUEsQ0FHUyxNQUhULGVBR1NDLG9EQUFBQSxDQUZQL2hDLGNBQVNxeEIsS0FBVCxDQUFlOFEsaUNBQWYsQ0FBaURyaUIsR0FBakQsQ0FBcUQrTyxVQUFyRCxDQUFtRi9PLEdBRTVFLENBSFQsRUFDd0Y7RUFBQTtFQUR4RixDQUlHLENBTEwsQ0E4QkcsRUF4QkhnaUIsdURBQUFBLENBS0ssSUFMTCxlQUtLLENBSkhBLHVEQUFBQSxDQUdTLE1BSFQsZUFHU0Msb0RBQUFBLENBRlAvaEMsY0FBU3F4QixLQUFULENBQWU4USxpQ0FBZixDQUFpRHJpQixHQUFqRCxDQUFxRCtPLFVBQXJELENBQW1GOU8sR0FFNUUsQ0FIVCxFQUN3RjtFQUFBO0VBRHhGLENBSUcsQ0FMTCxDQXdCRyxFQWxCSCtoQix1REFBQUEsQ0FLSyxJQUxMLGVBS0ssQ0FKSEEsdURBQUFBLENBR1MsTUFIVCxlQUdTQyxvREFBQUEsQ0FGUC9oQyxjQUFTcXhCLEtBQVQsQ0FBZThRLGlDQUFmLENBQWlEcmlCLEdBQWpELENBQXFEK08sVUFBckQsQ0FBbUY3TyxLQUU1RSxDQUhULEVBQzBGO0VBQUE7RUFEMUYsQ0FJRyxDQUxMLENBa0JHLEVBWkg4aEIsdURBQUFBLENBS0ssSUFMTCxlQUtLLENBSkhBLHVEQUFBQSxDQUdTLE1BSFQsZUFHU0Msb0RBQUFBLENBRlAvaEMsY0FBU3F4QixLQUFULENBQWU4USxpQ0FBZixDQUFpRHJpQixHQUFqRCxDQUFxRCtPLFVBQXJELENBQW1GQyxJQUU1RSxDQUhULEVBQ3lGO0VBQUE7RUFEekYsQ0FJRyxDQUxMLENBWUcsRUFOSGdULHVEQUFBQSxDQUtLLElBTEwsZUFLSyxDQUpIQSx1REFBQUEsQ0FHUyxNQUhULGVBR1NDLG9EQUFBQSxDQUZQL2hDLGNBQVNxeEIsS0FBVCxDQUFlOFEsaUNBQWYsQ0FBaURyaUIsR0FBakQsQ0FBcUQrTyxVQUFyRCxDQUFtRkUsSUFFNUUsQ0FIVCxFQUN5RjtFQUFBO0VBRHpGLENBSUcsQ0FMTCxDQU1HLENBL0JMLENBd0NRLEVBUlIrUyx1REFBQUEsQ0FFSSxHQUZKLGVBRUlDLG9EQUFBQSxDQURDL2hDLGNBQVNxeEIsS0FBVCxDQUFlOFEsaUNBQWYsQ0FBaURwaUIsR0FDbEQsQ0FGSixFQUN5RDtFQUFBO0VBRHpELENBUVEsRUFMUitoQix1REFBQUEsQ0FJSSxHQUpKLGVBSUksQ0FIRkEsdURBQUFBLENBRVEsTUFGUixFQUVRO0lBRE45NkIsU0FBK0QsRUFBdkRoSCxjQUFTcXhCLEtBQVQsQ0FBZThRLGlDQUFmLENBQWlEbmlCO0VBQ25ELENBRlI7O0VBQUEsY0FHRSxDQUpKLENBS1EsQ0E1Q1YsQ0F1RFEsRUFWUjhoQix1REFBQUEsQ0FTVSxTQVRWLGVBU1UsQ0FSUkEsdURBQUFBLENBRUssSUFGTCxlQUVLQyxvREFBQUEsQ0FEQS9oQyxjQUFTcXhCLEtBQVQsQ0FBZStRLDBCQUNmLENBRkwsRUFDOEM7RUFBQTtFQUQ5QyxDQVFRLEVBTFJOLHVEQUFBQSxDQUlJLEdBSkosZUFJSSxDQUhGQSx1REFBQUEsQ0FFUSxNQUZSLEVBRVE7SUFETjk2QixTQUEyRCxFQUFuRGhILGNBQVNxeEIsS0FBVCxDQUFlZ1IsK0JBQWYsQ0FBK0N2aUI7RUFDakQsQ0FGUjs7RUFBQSxjQUdFLENBSkosQ0FLUSxDQVRWLENBVVEsQ0FoRVYsQ0FpRUksQ0FsRU4sQ0FtRUksQ0FwRU47Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUNEUyxTQUFNOzs7RUFFWCxTQUFNOzs7RUFHSixTQUFNOzs7RUFFRCxTQUFNOzs7RUFDSCxTQUFNOzs7RUFHVCxTQUFNOzs7RUFHSixTQUFNOzs7RUFDSCxTQUFNOzs7Ozs7OzJEQWZ0QitoQix1REFBQUEsQ0F5Q1UsU0F6Q1YsY0F5Q1UsQ0F4Q1JDLHVEQUFBQSxDQXVDTSxLQXZDTixjQXVDTSxDQXBDSkEsdURBQUFBLENBNEJNLEtBNUJOLGNBNEJNLENBekJKQSx1REFBQUEsQ0F3Qk0sS0F4Qk4sY0F3Qk0sQ0F2QkpBLHVEQUFBQSxDQUVTLE1BRlQsY0FFU0Msb0RBQUFBLENBRFAvaEMsY0FBUzh4QixJQUFULENBQWN3USwyQkFDUCxDQUZULEVBQzJDO0VBQUE7RUFEM0MsQ0F1QkksRUFwQkpSLHVEQUFBQSxDQUVJLEdBRkosY0FFSUMsb0RBQUFBLENBREMvaEMsY0FBUzh4QixJQUFULENBQWN5USw0QkFBZCxDQUEyQ0MsWUFDNUMsQ0FGSixFQUM0RDtFQUFBO0VBRDVELENBb0JJLEVBakJKVix1REFBQUEsQ0FnQk0sS0FoQk4sY0FnQk0sQ0FmSkEsdURBQUFBLENBY08sTUFkUCxjQWNPLDJHQVpIOWhDLHFCQUFnQkEsY0FBU3IwQyxRQUFULENBQWtCa21FLFFBQWxDLEdBQStEN3hCLGNBQVM4eEIsSUFBVCxDQUFjeVEsNEJBQWQsQ0FBa0VFLHVCQUFqSSxHQUE2S3ppQyxjQUFTOHhCLElBQVQsQ0FBY3lRLDRCQUFkLENBQWtFRyw4QkFLL08sS0FDRjtFQUFBO0dBTUssRUFOTFosdURBQUFBLENBS1MsUUFMVCxFQUtTO0lBSlAsU0FBTSx5R0FJQztJQUhObmhDLE9BQUs7TUFBQSxPQUFFWCx5REFBRjtJQUFBO0VBR0MsQ0FMVCx1REFJS0EsaUJBSkwsRUFJZ0I7RUFBQTtFQUpoQixDQU1LLENBZFAsQ0FlSSxDQWhCTixDQWlCSSxDQXhCTixDQXlCSSxDQTVCTixDQW9DSSxFQUxJQSxxQkFBZ0JBLGNBQVNyMEMsUUFBVCxDQUFrQmttRSxZQUFBQSw4Q0FBQUEsSUFEMUM4USxnREFBQUEsQ0FJRUMsaUJBSkYsRUFJRTtVQUFBO0lBRkM1MUUsT0FBTyxFQUFFZ3pDLFlBRVY7SUFEQ2pCLE1BQU0sRUFBRWlCO0VBQ1QsQ0FKRjs7RUFBQSwrRUFLQTJpQyxnREFBQUEsQ0FBa0JFLGtCQUFsQixFQUFrQjtJQUFBNTBFO0VBQUEsQ0FBbEIsRUFDSSxDQXZDTixDQXdDUSxDQXpDVjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUdERjtBQUMrSDtBQUM3QjtBQUNsRyw4QkFBOEIsbUZBQTJCLENBQUMsd0dBQXFDO0FBQy9GO0FBQ0EsMERBQTBELDBCQUEwQixHQUFHLGNBQWMsaUJBQWlCLEdBQUcsa0JBQWtCLGtCQUFrQiw4QkFBOEIsc0JBQXNCLHdCQUF3QixHQUFHLFNBQVMsdUhBQXVILE1BQU0sWUFBWSxNQUFNLEtBQUssVUFBVSxLQUFLLEtBQUssVUFBVSxZQUFZLGFBQWEsYUFBYSw4TEFBOEwsZUFBZSw4T0FBOE8sYUFBYSx1Q0FBdUMsa3hCQUFreEIsOENBQThDLHlWQUF5ViwyRkFBMkYsV0FBVyw0REFBNEQsK0JBQStCLGdCQUFnQiw2Q0FBNkMsY0FBYyw2Q0FBNkMsSUFBSSxFQUFFLHNCQUFzQixnQkFBZ0Isa0JBQWtCLGtCQUFrQixHQUFHLDRDQUE0Qyx5Q0FBeUMsbUVBQW1FLDBDQUEwQyw0QkFBNEIsNkJBQTZCLDhEQUE4RCwyREFBMkQsSUFBSSwwQkFBMEIsb0NBQW9DLDRDQUE0QyxvQkFBb0IsaUJBQWlCLE1BQU0sZ0NBQWdDLHVGQUF1RixFQUFFLEtBQUssR0FBRyxtQkFBbUIsb0dBQW9HLEdBQUcsRUFBRSwyQkFBMkIsdUdBQXVHLEdBQUcsRUFBRSxnREFBZ0Qsa0JBQWtCLHVDQUF1QyxzQkFBc0IsZ0JBQWdCLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixHQUFHLEVBQUUsdUNBQXVDLHVEQUF1RCxzQkFBc0IsaUJBQWlCLE1BQU0sd0NBQXdDLG9HQUFvRyxLQUFLLElBQUksNkNBQTZDLDRCQUE0QixJQUFJLDZCQUE2QixrQkFBa0Isa0RBQWtELElBQUksb0NBQW9DLDBCQUEwQixHQUFHLGNBQWMsaUJBQWlCLEdBQUcsb0JBQW9CLGtCQUFrQiw4QkFBOEIsc0JBQXNCLHdCQUF3QixHQUFHLCtCQUErQjtBQUMvdUk7QUFDQSxpRUFBZSx1QkFBdUIsRUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNQdkM7QUFDK0g7QUFDN0I7QUFDbEcsOEJBQThCLG1GQUEyQixDQUFDLHdHQUFxQztBQUMvRjtBQUNBLGtGQUFrRix1QkFBdUIsOEJBQThCLGVBQWUsR0FBRywrQ0FBK0MsdUJBQXVCLGlCQUFpQixnQkFBZ0IsOEJBQThCLGlCQUFpQixlQUFlLFlBQVksV0FBVyxHQUFHLCtJQUErSSxnQkFBZ0IscUJBQXFCLDZCQUE2Qiw2REFBNkQsK0JBQStCLEdBQUcsdUNBQXVDLHVCQUF1QixlQUFlLEdBQUcsNENBQTRDLHVCQUF1QixpQkFBaUIsZ0JBQWdCLHVCQUF1QixvRUFBb0UsaUJBQWlCLGVBQWUsWUFBWSxXQUFXLEdBQUcscUNBQXFDLHVCQUF1QixlQUFlLHVCQUF1Qiw4REFBOEQsR0FBRyw4Q0FBOEMsdUJBQXVCLGlCQUFpQixnQkFBZ0IsdUJBQXVCLGtFQUFrRSxpQkFBaUIsZUFBZSxZQUFZLFdBQVcsR0FBRyxnQ0FBZ0Msb0JBQW9CLHVCQUF1Qix1QkFBdUIscUJBQXFCLHdCQUF3QiwyQkFBMkIsR0FBRyxnREFBZ0QsaUJBQWlCLEdBQUcsU0FBUyw4R0FBOEcsTUFBTSxZQUFZLGFBQWEsV0FBVyxLQUFLLEtBQUssWUFBWSxXQUFXLFVBQVUsWUFBWSxXQUFXLFVBQVUsVUFBVSxVQUFVLEtBQUssT0FBTyxXQUFXLGFBQWEsYUFBYSxhQUFhLFlBQVksTUFBTSxNQUFNLFlBQVksV0FBVyxLQUFLLEtBQUssWUFBWSxXQUFXLFVBQVUsWUFBWSxhQUFhLFdBQVcsVUFBVSxVQUFVLFVBQVUsS0FBSyxLQUFLLFlBQVksV0FBVyxXQUFXLFdBQVcsTUFBTSxLQUFLLFlBQVksV0FBVyxVQUFVLFlBQVksYUFBYSxXQUFXLFVBQVUsVUFBVSxVQUFVLEtBQUssS0FBSyxVQUFVLFlBQVksYUFBYSxhQUFhLGFBQWEsYUFBYSxNQUFNLEtBQUssVUFBVSxpSkFBaUosaUNBQWlDLG1LQUFtSyxRQUFRLHNQQUFzUCxRQUFRLGtJQUFrSSxzQkFBc0IsaUNBQWlDLHNCQUFzQixxTUFBcU0sdUNBQXVDLGFBQWEsNkNBQTZDLHNCQUFzQix1UkFBdVIsV0FBVyxHQUFHLGtYQUFrWCwyQkFBMkIsZ01BQWdNLCtDQUErQywrZ0JBQStnQixJQUFJLGdQQUFnUCw0REFBNEQsNkNBQTZDLGdCQUFnQixrUUFBa1EsV0FBVyxHQUFHLG1YQUFtWCx3QkFBd0IscUxBQXFMLHlDQUF5QywyckJBQTJyQixJQUFJLGdQQUFnUCw0REFBNEQsNkNBQTZDLGdCQUFnQixvUUFBb1EsV0FBVyxHQUFHLDJXQUEyVywwQkFBMEIscU1BQXFNLDZDQUE2QyxvcEJBQW9wQixJQUFJLGdQQUFnUCw0REFBNEQsNkNBQTZDLGdCQUFnQixrS0FBa0ssNkJBQTZCLFdBQVcsZ0NBQWdDLGtDQUFrQyxvQ0FBb0MsK0JBQStCLGlDQUFpQyxtQ0FBbUMsaUNBQWlDLCtCQUErQixtREFBbUQsNkNBQTZDLGNBQWMsMkNBQTJDLGdCQUFnQiw2Q0FBNkMsYUFBYSw2Q0FBNkMsY0FBYyw2Q0FBNkMsSUFBSSxFQUFFLDJDQUEyQyxrQkFBa0IseUhBQXlILG9EQUFvRCxPQUFPLEVBQUUsbUJBQW1CLElBQUksZ0NBQWdDLHVDQUF1QyxxSkFBcUoscUtBQXFLLG1RQUFtUSxzS0FBc0ssd0NBQXdDLEtBQUssR0FBRyxFQUFFLDRDQUE0QyxrQkFBa0IsbUVBQW1FLDRFQUE0RSw2SkFBNkosT0FBTyxLQUFLLG1CQUFtQixJQUFJLGlEQUFpRCw2Q0FBNkMseURBQXlELHFJQUFxSSwrRUFBK0UsbURBQW1ELHdDQUF3QyxTQUFTLEdBQUcsRUFBRSw4QkFBOEIsa0NBQWtDLE9BQU8sT0FBTyxtQ0FBbUMsTUFBTSwwQkFBMEIsd0NBQXdDLFNBQVMsR0FBRyxFQUFFLGdDQUFnQyw2Q0FBNkMsRUFBRSxPQUFPLE9BQU8sb0NBQW9DLEtBQUssSUFBSSxnREFBZ0QsMkNBQTJDLHlEQUF5RCxvSUFBb0ksOEVBQThFLGdEQUFnRCx3Q0FBd0MsU0FBUyxHQUFHLEVBQUUsOEJBQThCLGtDQUFrQyxPQUFPLE9BQU8sa0NBQWtDLE1BQU0sMEJBQTBCLHdDQUF3QyxTQUFTLEdBQUcsRUFBRSw4QkFBOEIsNkNBQTZDLEVBQUUsT0FBTyxPQUFPLG1DQUFtQyxLQUFLLElBQUksOENBQThDLHVDQUF1Qyx5REFBeUQsa0lBQWtJLDRFQUE0RSw4Q0FBOEMsd0NBQXdDLFNBQVMsR0FBRyxFQUFFLDhCQUE4QixrQ0FBa0MsT0FBTyxPQUFPLGdDQUFnQyxNQUFNLDBCQUEwQix3Q0FBd0MsU0FBUyxHQUFHLEVBQUUsZ0NBQWdDLDZDQUE2QyxFQUFFLE9BQU8sT0FBTyxpQ0FBaUMsS0FBSyxJQUFJLGtEQUFrRCx1QkFBdUIsOEJBQThCLGVBQWUsR0FBRyxnQ0FBZ0MsdUJBQXVCLGlCQUFpQixnQkFBZ0IsOEJBQThCLGlCQUFpQixlQUFlLFlBQVksV0FBVyxHQUFHLDRGQUE0RiwyREFBMkQsR0FBRyx3QkFBd0IsdUJBQXVCLGVBQWUsR0FBRyw2QkFBNkIsdUJBQXVCLGlCQUFpQixnQkFBZ0IseUJBQXlCLGlCQUFpQixlQUFlLFlBQVksV0FBVyxHQUFHLHNCQUFzQix1QkFBdUIsZUFBZSxxQkFBcUIsR0FBRywrQkFBK0IsdUJBQXVCLGlCQUFpQixnQkFBZ0IsdUJBQXVCLGlCQUFpQixlQUFlLFlBQVksV0FBVyxHQUFHLGlCQUFpQixvQkFBb0IsdUJBQXVCLHVCQUF1QixxQkFBcUIsd0JBQXdCLDJCQUEyQixHQUFHLGlDQUFpQyxpQkFBaUIsR0FBRywrQkFBK0I7QUFDL3VkO0FBQ0EsaUVBQWUsdUJBQXVCLEVBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDUHZDO0FBQytIO0FBQzdCO0FBQ2xHLDhCQUE4QixtRkFBMkIsQ0FBQyx3R0FBcUM7QUFDL0Y7QUFDQSxxREFBcUQsZ0JBQWdCLGlCQUFpQiw4QkFBOEIscUNBQXFDLHVCQUF1QiwwQkFBMEIsMkJBQTJCLG1EQUFtRCxtREFBbUQsR0FBRywrQkFBK0IsTUFBTSw4QkFBOEIsR0FBRyxRQUFRLGdDQUFnQyxHQUFHLEdBQUcsdUJBQXVCLE1BQU0sOEJBQThCLEdBQUcsUUFBUSxnQ0FBZ0MsR0FBRyxHQUFHLFNBQVMsK0dBQStHLEtBQUssVUFBVSxVQUFVLFlBQVksYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsTUFBTSxLQUFLLEtBQUssWUFBWSxNQUFNLEtBQUssWUFBWSxNQUFNLEtBQUssS0FBSyxLQUFLLFlBQVksTUFBTSxLQUFLLFlBQVksTUFBTSwySUFBMkksZ0JBQWdCLGlCQUFpQiw4QkFBOEIscUNBQXFDLHVCQUF1QiwwQkFBMEIsMkJBQTJCLDJDQUEyQyxHQUFHLHlCQUF5QixRQUFRLDhCQUE4QixLQUFLLFVBQVUsZ0NBQWdDLEtBQUssR0FBRywrQkFBK0I7QUFDeDRDO0FBQ0EsaUVBQWUsdUJBQXVCLEVBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDUHZDO0FBQ3FJO0FBQzdCO0FBQ3hHLDhCQUE4QixtRkFBMkIsQ0FBQyx3R0FBcUM7QUFDL0Y7QUFDQSxpRkFBaUYsTUFBTSx5REFBeUQsR0FBRyxRQUFRLDJEQUEyRCxHQUFHLEdBQUcsK0JBQStCLE1BQU0seURBQXlELEdBQUcsUUFBUSwyREFBMkQsR0FBRyxHQUFHLGtDQUFrQyw2REFBNkQsNkRBQTZELDBDQUEwQywwQ0FBMEMsOEJBQThCLDhCQUE4Qix1QkFBdUIsZ0JBQWdCLGlCQUFpQix1QkFBdUIsYUFBYSxjQUFjLDBDQUEwQyxnQkFBZ0IsMkJBQTJCLEdBQUcsMEJBQTBCLGlCQUFpQix1QkFBdUIsZ0JBQWdCLGlCQUFpQixHQUFHLFNBQVMsMEZBQTBGLE1BQU0sS0FBSyxZQUFZLE1BQU0sS0FBSyxZQUFZLE1BQU0sS0FBSyxLQUFLLEtBQUssWUFBWSxNQUFNLEtBQUssWUFBWSxNQUFNLEtBQUssS0FBSyxZQUFZLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLFdBQVcsVUFBVSxZQUFZLFdBQVcsVUFBVSxZQUFZLFdBQVcsWUFBWSxNQUFNLEtBQUssVUFBVSxZQUFZLFdBQVcsVUFBVSwwTUFBME0sc0NBQXNDLHlaQUF5WixtQkFBbUIsc0VBQXNFLDRFQUE0RSxrV0FBa1csbUJBQW1CLDREQUE0RCxrQ0FBa0MsOEhBQThILDhCQUE4Qiw2R0FBNkcsK0JBQStCLG1kQUFtZCxzSEFBc0gsMmtCQUEya0IsNlBBQTZQLHlIQUF5SCw2UEFBNlAsaWFBQWlhLDJDQUEyQyw0TkFBNE4sK0JBQStCLDRJQUE0SSwrQkFBK0IsaUxBQWlMLGdKQUFnSiw4VEFBOFQsMkZBQTJGLDYxQkFBNjFCLCtCQUErQixJQUFJLG9FQUFvRSxpa0JBQWlrQiw0Q0FBNEMsNkdBQTZHLGNBQWMsV0FBVyw4QkFBOEIsV0FBVyxZQUFZLG9CQUFvQiw0QkFBNEIsV0FBVyw4QkFBOEIsZ0ZBQWdGLDZEQUE2RCxpRUFBaUUsMkRBQTJELHdDQUF3Qyx3REFBd0QsaUJBQWlCLFlBQVksOEJBQThCLGVBQWUsZ0NBQWdDLElBQUksRUFBRSw2QkFBNkIscUNBQXFDLGtDQUFrQyxHQUFHLCtDQUErQyxlQUFlLGNBQWMsaUNBQWlDLDBCQUEwQiwrQkFBK0IsdUNBQXVDLHVDQUF1QyxPQUFPLHNEQUFzRCxNQUFNLE1BQU0scURBQXFELEtBQUssc0JBQXNCLEdBQUcsb0VBQW9FLHVDQUF1QyxvQ0FBb0MsNERBQTRELElBQUksNENBQTRDLG1DQUFtQyxzR0FBc0csdUNBQXVDLHlFQUF5RSxLQUFLLG1CQUFtQixNQUFNLHlDQUF5QyxVQUFVLEVBQUUsSUFBSSxpQ0FBaUMsbUNBQW1DLHNHQUFzRyx1Q0FBdUMseUVBQXlFLEtBQUssbUJBQW1CLE1BQU0sZ0NBQWdDLFVBQVUsRUFBRSxJQUFJLGlEQUFpRCxRQUFRLHlEQUF5RCxLQUFLLFVBQVUsMkRBQTJELEtBQUssR0FBRyxtQkFBbUIsNENBQTRDLGtDQUFrQyw4QkFBOEIsOEJBQThCLHVCQUF1QixnQkFBZ0IsaUJBQWlCLHVCQUF1QixhQUFhLGNBQWMsMENBQTBDLGdCQUFnQiwyQkFBMkIsR0FBRyxTQUFTLGlCQUFpQix1QkFBdUIsZ0JBQWdCLGlCQUFpQixHQUFHLCtCQUErQjtBQUN2blY7QUFDQSxpRUFBZSx1QkFBdUIsRUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNQdkM7QUFDa0k7QUFDN0I7QUFDckcsOEJBQThCLG1GQUEyQixDQUFDLHdHQUFxQztBQUMvRjtBQUNBLGtGQUFrRix1QkFBdUIsOEJBQThCLGVBQWUsR0FBRywrQ0FBK0MsdUJBQXVCLGlCQUFpQixnQkFBZ0IsOEJBQThCLGlCQUFpQixlQUFlLFlBQVksV0FBVyxHQUFHLCtJQUErSSxnQkFBZ0IscUJBQXFCLDZCQUE2Qiw2REFBNkQsK0JBQStCLEdBQUcsdUNBQXVDLHVCQUF1QixlQUFlLEdBQUcsNENBQTRDLHVCQUF1QixpQkFBaUIsZ0JBQWdCLHVCQUF1QixvRUFBb0UsaUJBQWlCLGVBQWUsWUFBWSxXQUFXLEdBQUcscUNBQXFDLHVCQUF1QixlQUFlLHVCQUF1Qiw4REFBOEQsR0FBRyw4Q0FBOEMsdUJBQXVCLGlCQUFpQixnQkFBZ0IsdUJBQXVCLGtFQUFrRSxpQkFBaUIsZUFBZSxZQUFZLFdBQVcsR0FBRyxnQ0FBZ0Msb0JBQW9CLHVCQUF1Qix1QkFBdUIscUJBQXFCLHdCQUF3QiwyQkFBMkIsR0FBRyxnREFBZ0QsaUJBQWlCLEdBQUcsU0FBUywwRkFBMEYsTUFBTSxZQUFZLGFBQWEsV0FBVyxLQUFLLEtBQUssWUFBWSxXQUFXLFVBQVUsWUFBWSxXQUFXLFVBQVUsVUFBVSxVQUFVLEtBQUssT0FBTyxXQUFXLGFBQWEsYUFBYSxhQUFhLFlBQVksTUFBTSxNQUFNLFlBQVksV0FBVyxLQUFLLEtBQUssWUFBWSxXQUFXLFVBQVUsWUFBWSxhQUFhLFdBQVcsVUFBVSxVQUFVLFVBQVUsS0FBSyxLQUFLLFlBQVksV0FBVyxXQUFXLFdBQVcsTUFBTSxLQUFLLFlBQVksV0FBVyxVQUFVLFlBQVksYUFBYSxXQUFXLFVBQVUsVUFBVSxVQUFVLEtBQUssS0FBSyxVQUFVLFlBQVksYUFBYSxhQUFhLGFBQWEsYUFBYSxNQUFNLEtBQUssVUFBVSxrT0FBa08sOEtBQThLLHNZQUFzWSxnQ0FBZ0MsZ0JBQWdCLGlCQUFpQiw4QkFBOEIsb0tBQW9LLG1DQUFtQywwRUFBMEUsV0FBVyxHQUFHLGdHQUFnRyxpQkFBaUIsNk5BQTZOLFdBQVcsR0FBRyx5VkFBeVYsMEJBQTBCLHFCQUFxQiw4Q0FBOEMscUJBQXFCLDRDQUE0QywyTUFBMk0sK0NBQStDLDRGQUE0Rix5REFBeUQsdVhBQXVYLElBQUksOFBBQThQLDREQUE0RCxpREFBaUQsZ0JBQWdCLHNSQUFzUixXQUFXLEdBQUcsOFZBQThWLHVCQUF1QixxQkFBcUIsNENBQTRDLHlNQUF5TSx5Q0FBeUMsNEZBQTRGLDhEQUE4RCx5WUFBeVksSUFBSSw4UEFBOFAsNERBQTRELGlEQUFpRCxnQkFBZ0IsZ1RBQWdULFdBQVcsR0FBRyxzU0FBc1MseUJBQXlCLHFCQUFxQiw4Q0FBOEMseU1BQXlNLDZDQUE2Qyx3R0FBd0csMkRBQTJELGdZQUFnWSxJQUFJLDhQQUE4UCw0REFBNEQsaURBQWlELGdCQUFnQixrVkFBa1YsMkRBQTJELDBNQUEwTSxPQUFPLG1KQUFtSixtSEFBbUgsa0pBQWtKLCtCQUErQixnZUFBZ2UsaURBQWlELFdBQVcsMENBQTBDLDZCQUE2QixlQUFlLDZDQUE2QyxhQUFhLDZDQUE2QyxjQUFjLDJDQUEyQywwQkFBMEIsNkNBQTZDLElBQUksRUFBRSxnREFBZ0QsOEJBQThCLGtDQUFrQywrQkFBK0IsaUNBQWlDLGdDQUFnQyxvQ0FBb0MsaUNBQWlDLG1DQUFtQyw0QkFBNEIsaUNBQWlDLEdBQUcsc0NBQXNDLGlDQUFpQyxJQUFJLCtCQUErQixrQkFBa0Isb0RBQW9ELDJEQUEyRCwyRUFBMkUsT0FBTyxLQUFLLG1CQUFtQixJQUFJLG1EQUFtRCw2Q0FBNkMseURBQXlELHFJQUFxSSwrRUFBK0UsaUNBQWlDLDJCQUEyQiwwQ0FBMEMsU0FBUyxHQUFHLEVBQUUsZ0NBQWdDLG9DQUFvQyxTQUFTLE9BQU8scUNBQXFDLE9BQU8sTUFBTSxNQUFNLDJCQUEyQiwwQ0FBMEMsU0FBUyxHQUFHLEVBQUUsa0NBQWtDLCtDQUErQyxFQUFFLFNBQVMsT0FBTyxzQ0FBc0MsT0FBTyxLQUFLLElBQUksOENBQThDLHVDQUF1Qyx5REFBeUQsa0lBQWtJLDRFQUE0RSw0QkFBNEIsMkJBQTJCLDBDQUEwQyxTQUFTLEdBQUcsRUFBRSxnQ0FBZ0Msb0NBQW9DLFNBQVMsT0FBTyxrQ0FBa0MsT0FBTyxNQUFNLE1BQU0sMkJBQTJCLDBDQUEwQyxTQUFTLEdBQUcsRUFBRSxrQ0FBa0MsK0NBQStDLEVBQUUsU0FBUyxPQUFPLG1DQUFtQyxPQUFPLEtBQUssSUFBSSx5Q0FBeUMsa0JBQWtCLG9FQUFvRSx5RUFBeUUsa0RBQWtELEtBQUssRUFBRSxRQUFRLG1CQUFtQixJQUFJLGdEQUFnRCwyQ0FBMkMseURBQXlELG9JQUFvSSw4RUFBOEUsOEJBQThCLDJCQUEyQiwwQ0FBMEMsU0FBUyxHQUFHLEVBQUUsZ0NBQWdDLG9DQUFvQyxTQUFTLE9BQU8sb0NBQW9DLE9BQU8sTUFBTSxNQUFNLDJCQUEyQiwwQ0FBMEMsU0FBUyxHQUFHLEVBQUUsZ0NBQWdDLCtDQUErQyxFQUFFLFNBQVMsT0FBTyxxQ0FBcUMsT0FBTyxLQUFLLElBQUksc0RBQXNELDhEQUE4RCxnQ0FBZ0MsZ0RBQWdELFFBQVEsTUFBTSw4QkFBOEIsT0FBTyxLQUFLLElBQUksa0RBQWtELHVCQUF1Qiw4QkFBOEIsZUFBZSxHQUFHLGdDQUFnQyx1QkFBdUIsaUJBQWlCLGdCQUFnQiw4QkFBOEIsaUJBQWlCLGVBQWUsWUFBWSxXQUFXLEdBQUcsNEZBQTRGLDJEQUEyRCxHQUFHLHdCQUF3Qix1QkFBdUIsZUFBZSxHQUFHLDZCQUE2Qix1QkFBdUIsaUJBQWlCLGdCQUFnQix5QkFBeUIsaUJBQWlCLGVBQWUsWUFBWSxXQUFXLEdBQUcsc0JBQXNCLHVCQUF1QixlQUFlLHFCQUFxQixHQUFHLCtCQUErQix1QkFBdUIsaUJBQWlCLGdCQUFnQix1QkFBdUIsaUJBQWlCLGVBQWUsWUFBWSxXQUFXLEdBQUcsaUJBQWlCLG9CQUFvQix1QkFBdUIsdUJBQXVCLHFCQUFxQix3QkFBd0IsMkJBQTJCLEdBQUcsK0JBQStCLGlCQUFpQixHQUFHLCtCQUErQjtBQUNuMGY7QUFDQSxpRUFBZSx1QkFBdUIsRUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNQdkM7QUFDa0k7QUFDN0I7QUFDckcsOEJBQThCLG1GQUEyQixDQUFDLHdHQUFxQztBQUMvRjtBQUNBLHlFQUF5RSxnRUFBZ0UsR0FBRyxTQUFTLDJHQUEyRyxNQUFNLFlBQVksZ09BQWdPLGtCQUFrQixvNEJBQW80Qiw2QkFBNkIsZ0JBQWdCLHdCQUF3QiwwTUFBME0sbUJBQW1CLHFJQUFxSSxrQkFBa0IsMEZBQTBGLGtCQUFrQiwrakJBQStqQixzQkFBc0Isd2lCQUF3aUIsc0JBQXNCLDByQkFBMHJCLHNCQUFzQiw2bUJBQTZtQixRQUFRLHVuQkFBdW5CLG1CQUFtQix3dEJBQXd0QiwrS0FBK0ssOGRBQThkLDBFQUEwRSw4ZUFBOGUsZ0NBQWdDLDZKQUE2SiwwQkFBMEIsb2dDQUFvZ0MsUUFBUSw2TUFBNk0sdUJBQXVCLDBCQUEwQixvQkFBb0IsY0FBYyxzQkFBc0Isd21DQUF3bUMsbUJBQW1CLCtsQkFBK2xCLGdEQUFnRCw0QkFBNEIsa0RBQWtELFdBQVcscURBQXFELFdBQVcsOERBQThELDREQUE0RCxpQ0FBaUMsb0NBQW9DLDJCQUEyQixFQUFFLDRDQUE0Qyw4Q0FBOEMsd0VBQXdFLDhDQUE4QyxvQ0FBb0MsK0JBQStCLGtDQUFrQywrQ0FBK0MsMkJBQTJCLEVBQUUsK0JBQStCLCtCQUErQixxQ0FBcUMsK0JBQStCLGFBQWEsNkNBQTZDLG9EQUFvRCw2Q0FBNkMsbUJBQW1CLDZDQUE2QyxrQkFBa0IsNkNBQTZDLElBQUksRUFBRSxxQ0FBcUMscUJBQXFCLHlEQUF5RCxJQUFJLHdCQUF3QixtSEFBbUgsd0NBQXdDLHVDQUF1QyxtUUFBbVEsY0FBYyw4U0FBOFMsZ0JBQWdCLDRTQUE0UyxnQkFBZ0IsK1NBQStTLGdCQUFnQiw0QkFBNEIsS0FBSyxJQUFJLHVCQUF1Qix3REFBd0QsR0FBRyxFQUFFLHFCQUFxQixvQkFBb0IscURBQXFELHlCQUF5Qiw4QkFBOEIsNENBQTRDLEtBQUsscURBQXFELGlDQUFpQyxzQkFBc0IsRUFBRSxHQUFHLEVBQUUsZ0NBQWdDLHlDQUF5QyxrQ0FBa0MsK0NBQStDLGdDQUFnQyxtQ0FBbUMsK0RBQStELDRDQUE0Qyx5Q0FBeUMsd0JBQXdCLDZDQUE2QyxPQUFPLFFBQVEsS0FBSyxFQUFFLElBQUkseUNBQXlDLGFBQWEsZ0RBQWdELDBEQUEwRCxLQUFLLHNFQUFzRSw0Q0FBNEMsRUFBRSwrQ0FBK0MsZ0RBQWdELHlCQUF5QixtQ0FBbUMsc0JBQXNCLG9DQUFvQyxJQUFJLHNDQUFzQyw4RkFBOEYsOENBQThDLE9BQU8sRUFBRSxvQ0FBb0Msb0JBQW9CLHlCQUF5QixNQUFNLGlEQUFpRCxLQUFLLHNDQUFzQyw0Q0FBNEMsS0FBSyx1RUFBdUUsMENBQTBDLEtBQUssSUFBSSwwQ0FBMEMsa0JBQWtCLG1FQUFtRSw0RUFBNEUsOEdBQThHLE9BQU8sS0FBSyxtQkFBbUIsSUFBSSwrQkFBK0IsOENBQThDLDBCQUEwQixxREFBcUQsc0NBQXNDLHNCQUFzQiwrQ0FBK0MsU0FBUyxFQUFFLEtBQUssSUFBSSxxREFBcUQsa0JBQWtCLGlGQUFpRiw2R0FBNkcsS0FBSyxtQkFBbUIsSUFBSSxvQ0FBb0MsdUNBQXVDLDRCQUE0Qix3Q0FBd0MsNERBQTRELGdFQUFnRSw0SEFBNEgsOEJBQThCLHFEQUFxRCx3REFBd0QsVUFBVSxNQUFNLG9EQUFvRCxTQUFTLE9BQU8sS0FBSyxFQUFFLDJCQUEyQiw4QkFBOEIsS0FBSyxHQUFHLHlDQUF5QyxnRUFBZ0UsR0FBRywrQkFBK0I7QUFDaCtnQjtBQUNBLGlFQUFlLHVCQUF1QixFQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1B2QztBQUNxSTtBQUM3QjtBQUN4Ryw4QkFBOEIsbUZBQTJCLENBQUMsd0dBQXFDO0FBQy9GO0FBQ0Esa0VBQWtFLHVCQUF1QixlQUFlLGlCQUFpQixnQ0FBZ0MsNkJBQTZCLHdCQUF3QixzQkFBc0IscUJBQXFCLEdBQUcsMEJBQTBCLHVCQUF1Qix3QkFBd0Isc0NBQXNDLDhCQUE4Qix1QkFBdUIsNEJBQTRCLGlCQUFpQixrQkFBa0Isb0JBQW9CLEdBQUcsU0FBUyx3RkFBd0YsT0FBTyxZQUFZLFdBQVcsVUFBVSxZQUFZLGFBQWEsYUFBYSxhQUFhLGFBQWEsTUFBTSxLQUFLLFlBQVksYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLFdBQVcsVUFBVSxVQUFVLDY3RUFBNjdFLDRDQUE0QyxxREFBcUQsbUJBQW1CLDJWQUEyVixpQkFBaUIsbWpHQUFtakcsT0FBTyw2a0JBQTZrQiwrQ0FBK0MsMGtCQUEwa0Isb0RBQW9ELHNyQkFBc3JCLHVCQUF1Qix5ckJBQXlyQixPQUFPLDRoQkFBNGhCLDhCQUE4Qiw2SkFBNkosa0NBQWtDLGVBQWUsOFJBQThSLG9CQUFvQiwwbkJBQTBuQiwwS0FBMEssNHFCQUE0cUIsNktBQTZLLHlyQkFBeXJCLG1MQUFtTCw4ckJBQThyQixvTEFBb0wsdXNCQUF1c0IsMExBQTBMLG1GQUFtRixrQ0FBa0MscW1CQUFxbUIsb0xBQW9MLDZyQkFBNnJCLGtMQUFrTCxzWkFBc1oscUNBQXFDLDJsQkFBMmxCLGdFQUFnRSxxRkFBcUYsbUNBQW1DLCtNQUErTSxvQkFBb0IsbU5BQW1OLG9CQUFvQixrbURBQWttRCx1Q0FBdUMsaUtBQWlLLG1EQUFtRCxxSEFBcUgscUdBQXFHLCtMQUErTCxxTUFBcU0saUtBQWlLLDRCQUE0Qix1QkFBdUIseUNBQXlDLHVGQUF1RixnWEFBZ1gsaUpBQWlKLHlEQUF5RCx5SEFBeUgscURBQXFELHF2QkFBcXZCLDZGQUE2RixXQUFXLDRCQUE0QiwyRUFBMkUsbURBQW1ELFVBQVUseURBQXlELHdCQUF3Qiw4REFBOEQsMERBQTBELGlEQUFpRCxXQUFXLGlCQUFpQixvQkFBb0IsK0RBQStELG9DQUFvQyx1Q0FBdUMseUlBQXlJLGFBQWEsbUJBQW1CLDhCQUE4Qiw0QkFBNEIsOEJBQThCLDRCQUE0Qiw4QkFBOEIseUJBQXlCLDhCQUE4Qix1QkFBdUIsOEJBQThCLHFCQUFxQixtREFBbUQsTUFBTSxxQkFBcUIsK0NBQStDLDRCQUE0Qix3QkFBd0Isc0JBQXNCLE9BQU8saUVBQWlFLG1DQUFtQyx3QkFBd0IscUJBQXFCLE9BQU8sOENBQThDLHlEQUF5RCxpQ0FBaUMsbUNBQW1DLHVDQUF1Qyx5REFBeUQsNkJBQTZCLHVCQUF1QixPQUFPLGtDQUFrQyxlQUFlLHdCQUF3Qix1QkFBdUIsaUJBQWlCLDhCQUE4QixXQUFXLEdBQUcsbUNBQW1DLGlCQUFpQiwwQkFBMEIsdUJBQXVCLFlBQVksMkJBQTJCLDBCQUEwQiwyQkFBMkIsK0JBQStCLHVDQUF1QywwQ0FBMEMsK0JBQStCLFNBQVMsR0FBRywwQkFBMEIsNkJBQTZCLE9BQU8sOENBQThDLDJDQUEyQywwREFBMEQsd0JBQXdCLHlCQUF5QixNQUFNLHdEQUF3RCxpQkFBaUIsSUFBSSx1REFBdUQsRUFBRSxTQUFTLHVDQUF1QyxRQUFRLDZEQUE2RCxtRkFBbUYsaUJBQWlCLG9EQUFvRCxFQUFFLHFDQUFxQyxFQUFFLCtCQUErQixtUEFBbVAsRUFBRSx5Q0FBeUMsdUNBQXVDLHlEQUF5RCx1REFBdUQsbURBQW1ELDJCQUEyQixvR0FBb0csK0JBQStCLDRCQUE0QixFQUFFLGdCQUFnQixnQkFBZ0IsMENBQTBDLDhFQUE4RSxzQkFBc0IsNkNBQTZDLFlBQVksTUFBTSwyQ0FBMkMsV0FBVyxzQkFBc0Isb0VBQW9FLFlBQVksTUFBTSx1RUFBdUUsV0FBVyxTQUFTLFFBQVEsdUNBQXVDLCtCQUErQiw2QkFBNkIseUNBQXlDLCtCQUErQixRQUFRLDJDQUEyQyxnREFBZ0QsUUFBUSx3Q0FBd0MsaUJBQWlCLGVBQWUsTUFBTSxLQUFLLFFBQVEsMENBQTBDLDZEQUE2RCw2QkFBNkIsMEJBQTBCLHlCQUF5QixNQUFNLCtEQUErRCwyQ0FBMkMsZ0ZBQWdGLHNDQUFzQyxjQUFjLCtCQUErQiwwREFBMEQsY0FBYyxNQUFNLGtDQUFrQyxhQUFhLFdBQVcsU0FBUywrQkFBK0IsT0FBTyxFQUFFLHVEQUF1RCwyREFBMkQsNEJBQTRCLGtEQUFrRCxtREFBbUQsc0RBQXNELDhCQUE4Qiw0QkFBNEIsd0JBQXdCLE1BQU0sMkRBQTJELHdCQUF3Qiw2REFBNkQsZUFBZSxhQUFhLFdBQVcsdUNBQXVDLFNBQVMsdUJBQXVCLFFBQVEsNkdBQTZHLHNEQUFzRCw2Q0FBNkMsNkJBQTZCLHVDQUF1QywrQ0FBK0MsU0FBUyx5Q0FBeUMsbURBQW1ELFlBQVksRUFBRSxZQUFZLEVBQUUseUNBQXlDLGdFQUFnRSxvRUFBb0UsU0FBUyxvSUFBb0ksNkNBQTZDLHdEQUF3RCxTQUFTLEVBQUUsMkNBQTJDLG9FQUFvRSw2REFBNkQsYUFBYSxXQUFXLFNBQVMseUNBQXlDLGlNQUFpTSwyQkFBMkIsc0NBQXNDLDJEQUEyRCxxQ0FBcUMsb0RBQW9ELGtEQUFrRCxnQkFBZ0IsTUFBTSxvREFBb0Qsc0RBQXNELDZEQUE2RCxlQUFlLGNBQWMsTUFBTSxrRUFBa0UsYUFBYSxXQUFXLEVBQUUscURBQXFELFFBQVEsa0dBQWtHLHlCQUF5QixtREFBbUQsNENBQTRDLEdBQUcsRUFBRSw2Q0FBNkMsb0NBQW9DLG1DQUFtQyw4QkFBOEIscURBQXFELGFBQWEsUUFBUSxZQUFZLE1BQU0sa0NBQWtDLG9EQUFvRCxpREFBaUQsV0FBVyxTQUFTLEVBQUUsUUFBUSx5UkFBeVIsbURBQW1ELHlEQUF5RCw4QkFBOEIsdURBQXVELHdGQUF3Rix3Q0FBd0MsaUZBQWlGLFFBQVEseUNBQXlDLHFDQUFxQyx5Q0FBeUMscUdBQXFHLHlDQUF5QywyQ0FBMkMsaUZBQWlGLGlFQUFpRSwyREFBMkQsdUNBQXVDLG1DQUFtQyxVQUFVLFlBQVksUUFBUSxFQUFFLFdBQVcsU0FBUyxxQ0FBcUMsc0NBQXNDLFFBQVEsK1JBQStSLDhCQUE4QixTQUFTLFdBQVcsWUFBWSxRQUFRLHVDQUF1Qyw2QkFBNkIsOEJBQThCLHFDQUFxQyxtQ0FBbUMsbUNBQW1DLHdDQUF3QyxpQ0FBaUMsK0JBQStCLDBDQUEwQywyQ0FBMkMsaUNBQWlDLFNBQVMsRUFBRSxRQUFRLGdEQUFnRCwrU0FBK1MsT0FBTyxFQUFFLGtEQUFrRCw0Q0FBNEMsMEhBQTBILHFJQUFxSSxTQUFTLFFBQVEsNERBQTRELHVCQUF1QixzREFBc0QsdUVBQXVFLGdjQUFnYyxTQUFTLHVCQUF1QixRQUFRLG1GQUFtRixzQ0FBc0Msa0NBQWtDLHlEQUF5RCxRQUFRLDJDQUEyQyxvQ0FBb0MsUUFBUSxvQ0FBb0Msa0RBQWtELGdDQUFnQywwREFBMEQsa0NBQWtDLHFJQUFxSSwyRUFBMkUsUUFBUSwwREFBMEQsK0NBQStDLFFBQVEsa0lBQWtJLG1CQUFtQixzQ0FBc0Msb0NBQW9DLHNDQUFzQyx1RkFBdUYsV0FBVywyRkFBMkYsU0FBUywwREFBMEQsUUFBUSxnQkFBZ0IsczNCQUFzM0IsS0FBSyxJQUFJLEVBQUUsOENBQThDLHVCQUF1QixlQUFlLGlCQUFpQix3QkFBd0Isc0JBQXNCLHFCQUFxQixHQUFHLDBCQUEwQix1QkFBdUIsd0JBQXdCLHNDQUFzQyw4QkFBOEIsdUJBQXVCLDRCQUE0QixpQkFBaUIsa0JBQWtCLG9CQUFvQixHQUFHLCtCQUErQjtBQUN6enBDO0FBQ0EsaUVBQWUsdUJBQXVCLEVBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDUHZDO0FBQ2tJO0FBQzdCO0FBQ3JHLDhCQUE4QixtRkFBMkIsQ0FBQyx3R0FBcUM7QUFDL0Y7QUFDQSxpRkFBaUYsTUFBTSx5REFBeUQsR0FBRyxRQUFRLDJEQUEyRCxHQUFHLEdBQUcsK0JBQStCLE1BQU0seURBQXlELEdBQUcsUUFBUSwyREFBMkQsR0FBRyxHQUFHLGtDQUFrQyw2REFBNkQsNkRBQTZELDBDQUEwQywwQ0FBMEMsOEJBQThCLDhCQUE4Qix1QkFBdUIsZ0JBQWdCLGlCQUFpQix1QkFBdUIsYUFBYSxjQUFjLDBDQUEwQyxnQkFBZ0IsMkJBQTJCLEdBQUcsMEJBQTBCLGlCQUFpQix1QkFBdUIsZ0JBQWdCLGlCQUFpQixHQUFHLFNBQVMsMEZBQTBGLE9BQU8sS0FBSyxZQUFZLE1BQU0sS0FBSyxZQUFZLE1BQU0sS0FBSyxLQUFLLEtBQUssWUFBWSxNQUFNLEtBQUssWUFBWSxNQUFNLEtBQUssS0FBSyxZQUFZLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLFdBQVcsVUFBVSxZQUFZLFdBQVcsVUFBVSxZQUFZLFdBQVcsWUFBWSxNQUFNLEtBQUssVUFBVSxZQUFZLFdBQVcsVUFBVSxvT0FBb08sMkJBQTJCLDRsQkFBNGxCLGtFQUFrRSxpTEFBaUwsZ0NBQWdDLCtCQUErQixtQ0FBbUMsZUFBZSw2RkFBNkYsMERBQTBELGNBQWMsb0pBQW9KLDBLQUEwSyxrQ0FBa0MsbUNBQW1DLGFBQWEsdU9BQXVPLDBJQUEwSSxnQkFBZ0IsNEpBQTRKLG9OQUFvTix3Q0FBd0MseWVBQXllLDZEQUE2RCxrS0FBa0sseURBQXlELGtkQUFrZCw0REFBNEQsZ0tBQWdLLDRDQUE0Qyx3Y0FBd2MseURBQXlELHlTQUF5Uyw2Q0FBNkMsMlhBQTJYLDBEQUEwRCxpVEFBaVQsMkNBQTJDLDZYQUE2WCwyREFBMkQsa0tBQWtLLHVEQUF1RCw4aEJBQThoQiw0REFBNEQsZ0tBQWdLLDBDQUEwQyw0bUJBQTRtQix5RUFBeUUsa09BQWtPLHdDQUF3Qyx5Q0FBeUMsbUJBQW1CLG9EQUFvRCw4QkFBOEIsOExBQThMLDRCQUE0Qiw4S0FBOEssa0NBQWtDLGFBQWEsd0xBQXdMLHlKQUF5SixpRkFBaUYsNkVBQTZFLE9BQU8saUJBQWlCLHlNQUF5TSxzQ0FBc0MsaUJBQWlCLDhDQUE4Qyw4QkFBOEIsdUhBQXVILDhCQUE4Qiw0SkFBNEosa0NBQWtDLGFBQWEsOEhBQThILCtLQUErSyxnQkFBZ0IsdUlBQXVJLDZGQUE2RixrRUFBa0UsbUJBQW1CLGlCQUFpQixrQkFBa0IsK0hBQStILG9NQUFvTSxzQ0FBc0MsaUJBQWlCLDhDQUE4Qyw4QkFBOEIsbUtBQW1LLDJCQUEyQixtekdBQW16RyxpQ0FBaUMsb1pBQW9aLDJCQUEyQix3SUFBd0ksOEJBQThCLHdrQkFBd2tCLDJCQUEyQiwrQkFBK0IsZ0NBQWdDLHFqQkFBcWpCLDRCQUE0QiwrQkFBK0IsaUNBQWlDLHVLQUF1Syx1Q0FBdUMsbUJBQW1CLHVaQUF1WiwySkFBMkosdUtBQXVLLHNDQUFzQyxtQkFBbUIseUxBQXlMLDhCQUE4QixlQUFlLHdDQUF3QyxrQ0FBa0MscUZBQXFGLFlBQVkscytCQUFzK0IsMkJBQTJCLHdKQUF3SiwyQkFBMkIsdzRCQUF3NEIsd0NBQXdDLGlJQUFpSSwrQkFBK0IsMkVBQTJFLDRCQUE0QixndkNBQWd2Qyw0QkFBNEIsa3pCQUFrekIsb0JBQW9CLGlRQUFpUSxtQkFBbUIsbWlCQUFtaUIsZ0JBQWdCLG1WQUFtVixlQUFlLHdCQUF3Qix1R0FBdUcseUpBQXlKLDJHQUEyRyxrS0FBa0sseUJBQXlCLHdIQUF3SCwwSkFBMEosNkRBQTZELDBMQUEwTCxxK0RBQXErRCxvQ0FBb0MseVdBQXlXLHlEQUF5RCxXQUFXLG1EQUFtRCxrREFBa0QsNEJBQTRCLHFEQUFxRCw4Q0FBOEMsaURBQWlELDhCQUE4QiwwREFBMEQsV0FBVyxpQkFBaUIsb0JBQW9CLCtEQUErRCwwQ0FBMEMsNkJBQTZCLHFCQUFxQiw4QkFBOEIsZUFBZSw4QkFBOEIsY0FBYyw4QkFBOEIsaUJBQWlCLDhCQUE4QixvQkFBb0IsOEJBQThCLElBQUksRUFBRSxnQ0FBZ0MseURBQXlELEVBQUUsNkJBQTZCLDhMQUE4TCxFQUFFLHVDQUF1QyxpQ0FBaUMsa0NBQWtDLCtCQUErQixVQUFVLEVBQUUsNEJBQTRCLHlDQUF5QyxpQ0FBaUMseUJBQXlCLDJCQUEyQix5QkFBeUIsaUNBQWlDLDRCQUE0QiwrQkFBK0IsK0JBQStCLDJCQUEyQix1Q0FBdUMsNEJBQTRCLEVBQUUsNEJBQTRCLGtDQUFrQywrQkFBK0IsNkJBQTZCLG1DQUFtQywyQkFBMkIsOEVBQThFLCtCQUErQixtSUFBbUksRUFBRSxnQ0FBZ0Msa0lBQWtJLEVBQUUsV0FBVyx1QkFBdUIsd0JBQXdCLDRDQUE0Qyx3SkFBd0osR0FBRyxFQUFFLFlBQVksZ0JBQWdCLDhDQUE4QyxxQkFBcUIsRUFBRSxvREFBb0Qsd0JBQXdCLHFDQUFxQyw0QkFBNEIsT0FBTyxRQUFRLEtBQUssSUFBSSxxQ0FBcUMseUJBQXlCLDZCQUE2QixLQUFLLEVBQUUsSUFBSSxtQ0FBbUMscUNBQXFDLDJCQUEyQixJQUFJLHFCQUFxQix5REFBeUQsdUJBQXVCLHNCQUFzQix5QkFBeUIsTUFBTSwyREFBMkQsdUNBQXVDLHNEQUFzRCxrQ0FBa0MsVUFBVSwrQkFBK0Isc0RBQXNELFVBQVUsTUFBTSw4QkFBOEIsU0FBUyxPQUFPLEtBQUssR0FBRyxFQUFFLGlEQUFpRCx1REFBdUQsd0JBQXdCLDhDQUE4QywrQ0FBK0Msa0RBQWtELDBCQUEwQix3QkFBd0Isd0JBQXdCLE1BQU0sdURBQXVELG9CQUFvQix5REFBeUQsV0FBVyxTQUFTLE9BQU8sbUNBQW1DLEtBQUssbUJBQW1CLElBQUksMkJBQTJCLDhDQUE4QyxnQ0FBZ0Msc0JBQXNCLCtCQUErQixNQUFNLHlHQUF5RyxPQUFPLDhDQUE4QywrREFBK0QsMkJBQTJCLEtBQUssRUFBRSx3QkFBd0IsbUNBQW1DLEtBQUssUUFBUSxHQUFHLEVBQUUsMkNBQTJDLG9CQUFvQix5REFBeUQsbURBQW1ELHFEQUFxRCxtQ0FBbUMsS0FBSyxJQUFJLCtCQUErQiw2QkFBNkIsc0JBQXNCLHVCQUF1QiwwQkFBMEIsd0JBQXdCLGtCQUFrQixxQ0FBcUMsMkJBQTJCLElBQUksd0NBQXdDLDJCQUEyQixJQUFJLG9FQUFvRSxrQ0FBa0MsOEJBQThCLCtDQUErQyxJQUFJLHFDQUFxQyxnQ0FBZ0MsSUFBSSw4QkFBOEIsaUNBQWlDLHdCQUF3Qix1TkFBdU4sa0NBQWtDLDhCQUE4Qix1QkFBdUIsb0NBQW9DLDZDQUE2QywwQ0FBMEMsdUJBQXVCLHNDQUFzQyxpQ0FBaUMsd0JBQXdCLDBEQUEwRCxvQ0FBb0MsMEJBQTBCLHlCQUF5QixTQUFTLE9BQU8sMEJBQTBCLG9DQUFvQywrQ0FBK0MsK0JBQStCLGtDQUFrQyxPQUFPLHVCQUF1QixzQ0FBc0MsT0FBTyxFQUFFLElBQUksZ0NBQWdDLHNDQUFzQyx3Q0FBd0MsZ0NBQWdDLG9DQUFvQywrQkFBK0IsOEJBQThCLElBQUksaUNBQWlDLGlDQUFpQyxnREFBZ0QsS0FBSyxJQUFJLG1DQUFtQyxNQUFNLHFDQUFxQyxpQ0FBaUMscUNBQXFDLE9BQU8sTUFBTSxNQUFNLG9DQUFvQyw0QkFBNEIsT0FBTyxLQUFLLElBQUksdUNBQXVDLDZCQUE2QixvQ0FBb0MsNkJBQTZCLHlDQUF5QyxJQUFJLDhCQUE4QixpQ0FBaUMsd0JBQXdCLHVOQUF1TixpQ0FBaUMsaUJBQWlCLEtBQUssOEJBQThCLHVCQUF1QixvQ0FBb0MsNkNBQTZDLDBDQUEwQyxzQ0FBc0MsdUJBQXVCLHNDQUFzQyxpQ0FBaUMscUNBQXFDLG9EQUFvRCxnQ0FBZ0MsMEJBQTBCLHlCQUF5QixnQ0FBZ0MsU0FBUyxPQUFPLDBCQUEwQiw4QkFBOEIsb0NBQW9DLCtDQUErQywrQkFBK0Isc0NBQXNDLE9BQU8sdUJBQXVCLHNDQUFzQyxPQUFPLEVBQUUsSUFBSSwyTEFBMkwsc0RBQXNELEtBQUssT0FBTyxZQUFZLElBQUksb0VBQW9FLCtCQUErQiw2QkFBNkIsRUFBRSxtQ0FBbUMsdUNBQXVDLHdDQUF3QywrQkFBK0IsNENBQTRDLHdEQUF3RCxTQUFTLE9BQU8sS0FBSywrQkFBK0IsZ0JBQWdCLHVCQUF1QixrQ0FBa0MsZ0RBQWdELHFEQUFxRCw4Q0FBOEMsT0FBTyx1QkFBdUIsd0NBQXdDLE9BQU8sRUFBRSxHQUFHLHVDQUF1Qyw2QkFBNkIsNkJBQTZCLHlDQUF5QyxJQUFJLHFDQUFxQyw4QkFBOEIsMEJBQTBCLDRCQUE0QixHQUFHLGtCQUFrQiw2QkFBNkIsb0NBQW9DLDZDQUE2QywwQ0FBMEMsT0FBTywrQkFBK0Isa0RBQWtELE9BQU8sS0FBSyxFQUFFLEdBQUcsNkJBQTZCLG9HQUFvRywyQkFBMkIsd0JBQXdCLElBQUksMkNBQTJDLDBCQUEwQixpQ0FBaUMsOEJBQThCLHdDQUF3QyxHQUFHLHdCQUF3Qix5QkFBeUIsc0NBQXNDLCtDQUErQyw0Q0FBNEMsc0RBQXNELFNBQVMsT0FBTyx1QkFBdUIsc0NBQXNDLE9BQU8sRUFBRSxHQUFHLHFDQUFxQyxxQ0FBcUMsR0FBRyxtQ0FBbUMsMkRBQTJELHlCQUF5QixLQUFLLEVBQUUsb0JBQW9CLDJCQUEyQixNQUFNLDJJQUEySSxLQUFLLG1FQUFtRSx1REFBdUQsdUhBQXVILEtBQUssNERBQTRELHdCQUF3QixLQUFLLEVBQUUsc0dBQXNHLElBQUksNkNBQTZDLHdEQUF3RCwrREFBK0QsMkJBQTJCLE9BQU8sRUFBRSxzQkFBc0IsNEJBQTRCLE1BQU0saUVBQWlFLCtFQUErRSxTQUFTLE9BQU8sc0lBQXNJLDBCQUEwQixPQUFPLEVBQUUsS0FBSyxJQUFJLHNDQUFzQyxhQUFhLGVBQWUsTUFBTSxLQUFLLElBQUksK0JBQStCLG1DQUFtQyx1Q0FBdUMsd0JBQXdCLDhEQUE4RCx3Q0FBd0Msd0NBQXdDLDRDQUE0Qyx3REFBd0QsU0FBUyxPQUFPLE1BQU0sTUFBTSw4Q0FBOEMsS0FBSyx5QkFBeUIsZ0JBQWdCLGlCQUFpQixnQ0FBZ0MsdUNBQXVDLHVDQUF1QyxFQUFFLDZDQUE2QyxtREFBbUQsdUVBQXVFLG1CQUFtQixLQUFLLEVBQUUsSUFBSSxpREFBaUQsUUFBUSx5REFBeUQsS0FBSyxVQUFVLDJEQUEyRCxLQUFLLEdBQUcsbUJBQW1CLDRDQUE0QyxrQ0FBa0MsOEJBQThCLDhCQUE4Qix1QkFBdUIsZ0JBQWdCLGlCQUFpQix1QkFBdUIsYUFBYSxjQUFjLDBDQUEwQyxnQkFBZ0IsMkJBQTJCLEdBQUcsU0FBUyxpQkFBaUIsdUJBQXVCLGdCQUFnQixpQkFBaUIsR0FBRywrQkFBK0I7QUFDOTF5QztBQUNBLGlFQUFlLHVCQUF1QixFQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1B2QztBQUMrSDtBQUM3QjtBQUNsRyw4QkFBOEIsbUZBQTJCLENBQUMsd0dBQXFDO0FBQy9GO0FBQ0EsOEVBQThFLGFBQWEsaUJBQWlCLEdBQUcsMENBQTBDLGtCQUFrQixnQkFBZ0IsbUNBQW1DLEdBQUcseUNBQXlDLDBDQUEwQyw2QkFBNkIsOEJBQThCLEdBQUcsR0FBRyxrREFBa0QseUJBQXlCLHNEQUFzRCxHQUFHLDZDQUE2QyxrQkFBa0IsR0FBRyx3Q0FBd0MsK0NBQStDLG9CQUFvQixHQUFHLEdBQUcsZ0RBQWdELGtCQUFrQix3QkFBd0IsR0FBRywyQkFBMkIsdUJBQXVCLGNBQWMsZ0JBQWdCLHFDQUFxQyxHQUFHLHVDQUF1Qyx1QkFBdUIsdUJBQXVCLG1CQUFtQixnQkFBZ0IsdUJBQXVCLCtEQUErRCxxQkFBcUIsd0JBQXdCLHlCQUF5Qix5QkFBeUIsMERBQTBELGVBQWUsaURBQWlELDZEQUE2RCw0R0FBNEcsK0JBQStCLEdBQUcsNkJBQTZCLHVDQUF1QyxvQkFBb0IsR0FBRyxHQUFHLHVDQUF1QyxjQUFjLGlCQUFpQixrREFBa0QsR0FBRyx3Q0FBd0MsdUNBQXVDLG1CQUFtQixHQUFHLEdBQUcsMENBQTBDLGtCQUFrQix3QkFBd0IsR0FBRyw0RUFBNEUsNEJBQTRCLDREQUE0RCxxRUFBcUUsR0FBRywwQ0FBMEMscUJBQXFCLEdBQUcsNkJBQTZCLDBDQUEwQyxvQkFBb0IsR0FBRyxHQUFHLGtEQUFrRCx5QkFBeUIsMERBQTBELEdBQUcsd0RBQXdELG9CQUFvQixHQUFHLHVEQUF1RCx1QkFBdUIsOERBQThELEdBQUcsNkRBQTZELHVCQUF1Qiw4REFBOEQseUJBQXlCLDBEQUEwRCxHQUFHLHlEQUF5RCwrQkFBK0IsR0FBRyw4Q0FBOEMsdUJBQXVCLGtCQUFrQixnQkFBZ0IsdUJBQXVCLCtEQUErRCxxQkFBcUIsd0JBQXdCLHlCQUF5Qix5QkFBeUIsMERBQTBELGlEQUFpRCw2REFBNkQsNEdBQTRHLCtCQUErQixjQUFjLGlCQUFpQixrREFBa0QsR0FBRyx3Q0FBd0MsOENBQThDLG1CQUFtQixHQUFHLEdBQUcsaURBQWlELGtCQUFrQix3QkFBd0IsR0FBRyxtRkFBbUYsNEJBQTRCLDREQUE0RCxxRUFBcUUsR0FBRyxpREFBaUQscUJBQXFCLEdBQUcsNkJBQTZCLGlEQUFpRCxvQkFBb0IsR0FBRyxHQUFHLHlEQUF5RCx5QkFBeUIsMERBQTBELEdBQUcsK0RBQStELG9CQUFvQixHQUFHLDhEQUE4RCx1QkFBdUIsOERBQThELEdBQUcsb0VBQW9FLHVCQUF1Qiw4REFBOEQseUJBQXlCLDBEQUEwRCxHQUFHLGdFQUFnRSwrQkFBK0IsR0FBRyx1SEFBdUgsd0JBQXdCLGVBQWUsZ0NBQWdDLEdBQUcsa0hBQWtILDhCQUE4QixHQUFHLGdDQUFnQyxvQkFBb0IsR0FBRyx5Q0FBeUMsdUJBQXVCLGVBQWUsR0FBRywyREFBMkQsbUNBQW1DLDBCQUEwQiw2QkFBNkIsR0FBRyw2QkFBNkIsdUJBQXVCLGlCQUFpQixtQkFBbUIsMEJBQTBCLEdBQUcsb0NBQW9DLE1BQU0sZ0NBQWdDLEdBQUcsR0FBRyw0QkFBNEIsTUFBTSxnQ0FBZ0MsR0FBRyxHQUFHLDZCQUE2Qix3REFBd0Qsd0RBQXdELDBCQUEwQixzQkFBc0IsOERBQThELDhCQUE4QixnQkFBZ0IsaUJBQWlCLDRCQUE0QixHQUFHLE9BQU8saUhBQWlILFVBQVUsVUFBVSxLQUFLLEtBQUssVUFBVSxVQUFVLFdBQVcsS0FBSyxLQUFLLEtBQUssV0FBVyxXQUFXLEtBQUssS0FBSyxLQUFLLFdBQVcsV0FBVyxLQUFLLEtBQUssVUFBVSxLQUFLLEtBQUssS0FBSyxVQUFVLEtBQUssS0FBSyxLQUFLLFVBQVUsV0FBVyxLQUFLLEtBQUssV0FBVyxVQUFVLFVBQVUsV0FBVyxLQUFLLEtBQUssV0FBVyxXQUFXLFVBQVUsVUFBVSxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFVBQVUsV0FBVyxXQUFXLFdBQVcsV0FBVyxLQUFLLEtBQUssS0FBSyxVQUFVLEtBQUssS0FBSyxLQUFLLFVBQVUsVUFBVSxXQUFXLEtBQUssS0FBSyxLQUFLLFVBQVUsS0FBSyxLQUFLLEtBQUssVUFBVSxXQUFXLEtBQUssS0FBSyxXQUFXLFdBQVcsV0FBVyxLQUFLLEtBQUssV0FBVyxLQUFLLEtBQUssS0FBSyxVQUFVLEtBQUssS0FBSyxLQUFLLFdBQVcsV0FBVyxLQUFLLEtBQUssVUFBVSxLQUFLLEtBQUssV0FBVyxXQUFXLEtBQUssS0FBSyxXQUFXLFdBQVcsV0FBVyxXQUFXLEtBQUssS0FBSyxXQUFXLEtBQUssS0FBSyxXQUFXLFVBQVUsVUFBVSxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsVUFBVSxVQUFVLFdBQVcsS0FBSyxLQUFLLEtBQUssVUFBVSxLQUFLLEtBQUssS0FBSyxVQUFVLFdBQVcsS0FBSyxLQUFLLFdBQVcsV0FBVyxXQUFXLEtBQUssS0FBSyxXQUFXLEtBQUssS0FBSyxLQUFLLFVBQVUsS0FBSyxLQUFLLEtBQUssV0FBVyxXQUFXLEtBQUssS0FBSyxVQUFVLEtBQUssS0FBSyxXQUFXLFdBQVcsS0FBSyxLQUFLLFdBQVcsV0FBVyxXQUFXLFdBQVcsS0FBSyxLQUFLLFdBQVcsS0FBSyxNQUFNLFdBQVcsVUFBVSxXQUFXLEtBQUssTUFBTSxXQUFXLEtBQUssS0FBSyxV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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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Ozs7Ozs7OztBQ0FoQjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBUTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBbkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQW9COzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FIOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FOOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0E4Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBcEM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQWdCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FGOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FFOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FEOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FqQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBa0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQU07Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQWY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUY7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQWlCOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FkOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FKOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FGOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FPOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FsQjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBWDs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBaUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQTFCOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FIOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FGOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FhOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FUOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FNOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FEOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FHOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FKOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FUOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FWOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FPOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FUOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FGOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FTOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FSOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FIOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FIOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FSOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FIOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FJOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FROzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FSOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FIOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FZOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FKOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FEOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FUOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FLOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FWOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FQOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FROzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FQOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FQOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FPOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FOOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FGOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FMOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FKOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FWOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FLOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FUOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FsQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBUDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSDs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBVjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBbEI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQWY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQWM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQXpFOzs7Ozs7Ozs7Ozs7Ozs7O0FDQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0E1TjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7O0FDMUtBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0FjdGl2aXR5RG93bmxvYWQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9BZG1pbkhlYWRlci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0JyZWFkQ3J1bWIudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9CdWxrUHVibGlzaGluZ0Vycm9yUG9wdXAudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9CdWxrcHVibGlzaFdpdGhYbHMudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9EYXRlUmFuZ2VXaWRnZXQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9EZXNjcmlwdGlvbkZvcm0udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9FcnJvck1lc3NhZ2UudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9FcnJvclBvcFVwLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvTG9hZGVyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvTXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvTmF2RHJvcGRvd24udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvUmFkaWFsUHJvZ3Jlc3NCYXIudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9UYWJsZUxvYWRlckNvbXBvbmVudC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1RhYmxlUGFnaW5hdGlvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1hsc0xpc3RFcnJvci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1hsc0xvYWRlci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1hsc1VwbG9hZEluZGljYXRvci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL2J1dHRvbnMvRGVsZXRlQnV0dG9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvYnV0dG9ucy9MaW5rLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvYnV0dG9ucy9QdWJsaXNoQnV0dG9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvYnV0dG9ucy9VblB1Ymxpc2hCdXR0b24udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9EZWxldGVBY3Rpb24udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9FcnJvckxpc3RzLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvSGF2ZU5vdEFkZGVkWWV0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvT3JnYW5pemF0aW9uUHVibGlzaFVucHVibGlzaEJ1dHRvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1BhZ2VUaXRsZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1Byb2dyZXNzTG9hZGVyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvU3RpY2t5RXJyb3JzLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvVXBsb2FkZWRFcnJvcnMudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zdGF0dXMvRWxlbWVudFN0YXR1cy52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3N0YXR1cy9QcmV2aW91c2x5UHVibGlzaGVkLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5RGVmYXVsdFZhbHVlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5RGV0YWlsLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5SW5kZXgudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvQ3JlYXRlTW9kYWwudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL0Vycm9ySXRlbS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvUHVibGlzaFNlbGVjdGVkLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9SZWZyZXNoVG9hc3QudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL1ZhbGlkYXRpb25FcnJvcnMudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvQWN0aXZpdHlEYXRlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0NvbmRpdGlvbnMudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvQ29udGFjdEluZm8udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvRGVzY3JpcHRpb24udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvSHVtYW5pdGFyaWFuU2NvcGUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvSWF0aUlkZW50aWZpZXIudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvTGVnYWN5RGF0YS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9Mb2NhdGlvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9PdGhlcklkZW50aWZpZXIudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUGFydGljaXBhdGluZ09yZy52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9QbGFubmVkRGlzYnVyc2VtZW50LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1BvbGljeU1hcmtlci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9SZWNpcGllbnRDb3VudHJ5LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1JlY2lwaWVudFJlZ2lvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9SZWxhdGVkQWN0aXZpdHkudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVwb3J0aW5nT3JnYW5pemF0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1Jlc3VsdC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9TZWN0b3IudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvVGFnLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1RpdGxlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1RyYW5zYWN0aW9ucy52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL0luZGljYXRvckRldGFpbC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL0luZGljYXRvckxpc3QudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9BZ2dyZWdhdGlvblN0YXR1cy52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0Jhc2VsaW5lLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvRGVzY3JpcHRpb24udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9Eb2N1bWVudExpbmsudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9JbmRpY2F0b3JBc2NlbmRpbmcudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9NZWFzdXJlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvUGVyaW9kLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvUmVmZXJlbmNlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvVGl0bGUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvQWN0aXZpdGllc0VsZW1lbnRzLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0FjdGl2aXR5RWxlbWVudC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9BZGRBY3Rpdml0eUJ1dHRvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9Eb3dubG9hZEFjdGl2aXR5QnV0dG9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0VsZW1lbnRzTm90ZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9FbXB0eUFjdGl2aXR5LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL1BhZ2VUaXRsZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9TaWRlYmFySGVscEJsb2NrLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL1RhYmxlTGF5b3V0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BlcmlvZHMvUGVyaW9kc0RldGFpbC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wZXJpb2RzL1BlcmlvZHNMaXN0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BlcmlvZHMvZWxlbWVudHMvQWN0dWFsVmFsdWUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGVyaW9kcy9lbGVtZW50cy9UYXJnZXRWYWx1ZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL1Jlc3VsdERldGFpbC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL1Jlc3VsdEVsZW1lbnQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9SZXN1bHRMaXN0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvZWxlbWVudHMvRG9jdW1lbnRMaW5rLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvZWxlbWVudHMvSW5kaWNhdG9yLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvZWxlbWVudHMvUmVmZXJlbmNlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvZWxlbWVudHMvUmVzdWx0VHlwZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL1RpdGxlRGVzY3JpcHRpb24udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL1RyYW5zYWN0aW9uRGV0YWlsLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9UcmFuc2FjdGlvbkVsZW1lbnQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL1RyYW5zYWN0aW9uTGlzdC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvQWlkVHlwZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvRGVzY3JpcHRpb24udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL0Rpc2J1cnNlbWVudENoYW5uZWwudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL0ZpbmFuY2VUeXBlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9GbG93VHlwZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvUHJvdmlkZXJPcmdhbml6YXRpb24udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1JlY2VpdmVyT3JnYW5pemF0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9SZWNpcGllbnRDb3VudHJ5LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9SZWNpcGllbnRSZWdpb24udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1NlY3Rvci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvVGllZFN0YXR1cy52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvVHJhbnNhY3Rpb25EYXRlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9UcmFuc2FjdGlvblR5cGUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1ZhbHVlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2F1ZGl0L0F1ZGl0TGlzdGluZy52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9kYXNoYm9hcmQvRGFzaGJvYXJkR3JhcGgudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvZGFzaGJvYXJkL0Rhc2hib2FyZExpc3RTZWN0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2Rhc2hib2FyZC9EYXNoYm9hcmRQYWdlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2Rhc2hib2FyZC9EYXNoYm9hcmRTdGF0c1NlY3Rpb24udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0FjdGl2aXR5VXBsb2FkLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9BY3Rpdml0eVhsc1VwbG9hZC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvSW1wb3J0TGlzdC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvSW1wb3J0UGxhY2Vob2xkZXIudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0xpc3RFbGVtZW50LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9YbHNMaXN0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9PcmdhbmlzYXRpb25EYXRhLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9PcmdhbmlzYXRpb25FbGVtZW50cy52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vT3JnYW5pc2F0aW9uRWxlbWVudHNEZXRhaWwudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL0RvY3VtZW50TGluay52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvUmVjaXBpZW50Q291bnRyeUJ1ZGdldC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvUmVwb3J0aW5nT3JnQnVkZ2V0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9SZXBvcnRpbmdPcmdhbmlzYXRpb24udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1JlcG9ydGluZ1JlZ2lvbkJ1ZGdldC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvVG90YWxCdWRnZXQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1RvdGFsRXhwZW5kaXR1cmUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvcmVzZXQvUGFzc3dvcmRSZWNvdmVyeS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9yZXNldC9SZXNldFBhZ2UudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvcmVzZXQvUmVzZXRQYXNzd29yZC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zZXR0aW5nL1NldHRpbmdEZWZhdWx0Rm9ybS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zZXR0aW5nL1NldHRpbmdQYWdlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3NldHRpbmcvU2V0dGluZ1B1Ymxpc2hpbmdGb3JtLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3N1cGVyYWRtaW4vT3JnYW5pc2F0aW9uTGlzdC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zdXBlcmFkbWluL1N5c3RlbVZlcnNpb24udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9jb21wb25lbnRzL0FkbWluQmFyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3N1cGVyYWRtaW4vY29tcG9uZW50cy9UYWJsZUxpc3QudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvdXNlci9Vc2VyTGlzdGluZy52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy91c2VyL1VzZXJQcm9maWxlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9FbWFpbFZlcmlmaWNhdGlvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvSWF0aVJlZ2lzdGVyUGFnZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvSWF0aVN0YW5kYXJkLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9QdWJsaXNoaW5nQ2hlY2tsaXN0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9SZWdpc3RlclBhZ2UudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1N1cHBvcnRQYWdlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9BZG1pbkZvb3Rlci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvSm9pbk5vdy52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvU2lnbkluLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9XZWJGb290ZXIudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL1dlYkhlYWRlci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9hcHAudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb3NhYmxlL2NvcmVFbGVtZW50cy50cyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvc2FibGUvZGF0ZUZvcm1hdC50cyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvc2FibGUvZW5jcnlwdGlvbi50cyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvc2FibGUvdGl0bGUudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb3NhYmxlL3V0aWxzLnRzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvc3RvcmUvYWN0aXZpdGllcy9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3N0b3JlL2FjdGl2aXRpZXMvc2hvdy50cyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3N0b3JlL2luZGV4LnRzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvc3RvcmUvc2V0dGluZy9hY3Rpb25zLnRzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvc3RvcmUvc2V0dGluZy9tdXRhdGlvbi50cyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3N0b3JlL3NldHRpbmcvc3RhdGUudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9JbmRleC50cyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvSW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wZXJpb2RzL2VsZW1lbnRzL0luZGV4LnRzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9lbGVtZW50cy9JbmRleC50cyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9JbmRleC50cyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9JbmRleC50cyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9BYm91dFBhZ2UudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1dlbGNvbWVQYWdlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvU2hpbW1lckxvYWRpbmcudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zcGlubmVyTG9hZGVyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvTXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZ1ZT8yMmNkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9YbHNMaXN0RXJyb3IudnVlPzhmM2IiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NwaW5uZXJMb2FkZXIudnVlP2M4MDgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9UYWJsZUxheW91dC52dWU/MjRlOSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9MaXN0RWxlbWVudC52dWU/OTc4YSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9YbHNMaXN0LnZ1ZT82ZTAzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9jb21wb25lbnRzL1RhYmxlTGlzdC52dWU/OGE3YyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3VzZXIvVXNlckxpc3RpbmcudnVlPzQ4OGQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0FkbWluSGVhZGVyLnZ1ZT9iOWNlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9CdWxrcHVibGlzaFdpdGhYbHMudnVlP2Q1OTgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0Vycm9yTWVzc2FnZS52dWU/N2NlOCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZT83ODNhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Mb2FkZXIudnVlPzU5MzgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1BvcHVwTW9kYWwudnVlPzFmMDgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1NoaW1tZXJMb2FkaW5nLnZ1ZT9iN2RhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9FcnJvckxpc3RzLnZ1ZT82MzExIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWU/OWRlOCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvU3RpY2t5RXJyb3JzLnZ1ZT9mMzVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9VcGxvYWRlZEVycm9ycy52dWU/MTYxMyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5SW5kZXgudnVlPzVkYjYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9DcmVhdGVNb2RhbC52dWU/OGRmNyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9FcnJvckl0ZW0udnVlPzU3YWQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9BY3Rpdml0aWVzRWxlbWVudHMudnVlPzQ1MTEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9Eb3dubG9hZEFjdGl2aXR5QnV0dG9uLnZ1ZT83ZDdlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvZGFzaGJvYXJkL0Rhc2hib2FyZExpc3RTZWN0aW9uLnZ1ZT9iNGNhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0ltcG9ydExpc3QudnVlPzE5MDciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vT3JnYW5pc2F0aW9uRGF0YS52dWU/NWZhNSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3Jlc2V0L1Jlc2V0UGFnZS52dWU/MmRlYiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9JYXRpUmVnaXN0ZXJQYWdlLnZ1ZT84YjBhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1JlZ2lzdGVyUGFnZS52dWU/MTE0NyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9TaWduSW4udnVlPzI3MGUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zYXNzL2FwcC5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy93ZWJwb3J0YWwtYXBwLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvIHN5bmMgXlxcLlxcLy4qJCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvYWN0aXZpdHlfZGF0ZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2FjdGl2aXR5X3Njb3BlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvYWN0aXZpdHlfc3RhdHVzLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvYnVkZ2V0LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvYnVpbGRpbmcuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9jYXBpdGFsX3NwZW5kLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvY29sbGFib3JhdGlvbl90eXBlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvY29uZGl0aW9ucy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2NvbnRhY3RfaW5mby5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2NvdW50cnlfYnVkZ2V0X2l0ZW1zLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvY3JzLWFkZC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2RlZmF1bHRfYWlkX3R5cGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9kZWZhdWx0X2ZpbmFuY2VfdHlwZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2RlZmF1bHRfZmxvd190eXBlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvZGVzY3JpcHRpb24uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9kb2N1bWVudF9saW5rLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvaHVtYW5pdGFyaWFuX3Njb3BlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvaWF0aV9pZGVudGlmaWVyLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvaW5kaWNhdG9yLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvbGVnYWN5X2RhdGEuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9sb2NhdGlvbi5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL290aGVyX2lkZW50aWZpZXIuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9wYXJ0aWNpcGF0aW5nX29yZy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3BlcmlvZC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3BsYW5uZWRfZGlzYnVyc2VtZW50LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvcG9saWN5X21hcmtlci5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3JlY2lwaWVudF9jb3VudHJ5LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvcmVjaXBpZW50X3JlZ2lvbi5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3JlbGF0ZWRfYWN0aXZpdHkuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9yZXBvcnRpbmdfb3JnLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvcmVzdWx0LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvcmVzdWx0cy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3NlY3Rvci5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3RhZy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3RpdGxlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvdHJhbnNhY3Rpb25zLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWRkLW1vcmUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hZGQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hbGVydC1vdXRsaW5lLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWxlcnQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hbGlnbi1jZW50ZXIuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hbGlnbi1yaWdodC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FwcHJvdmVkLWNsb3VkLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYXJyb3ctZG93bi5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Fycm93LWxlZnQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hcnJvdy1yaWdodC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Fycm93LXNob3J0LWxlZnQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hc2NlbmRpbmctYXJyb3cuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9iaWxsLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYm94LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYnVkZ2V0LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYnVpbGRpbmcuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jYW5jZWwtY2xvdWQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jYW5jZWwtY3Jvc3Muc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jaGVjay1jaXJjbGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jaGVja2JveC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2NoZWNrZWQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jaGV2cm9uLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY2lyY2xlLXJlZC1jcm9zcy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Nsb3NlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY29weXJpZ2h0LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY29yZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Nyb3NzLWljb24uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jcm9zcy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2RlZmF1bHQtMS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2RlZmF1bHQtMi5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2RlbGV0ZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Rlc2NlbmRpbmctYXJyb3cuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kb2N1bWVudC13cml0ZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2RvdWJsZS10aWNrLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZG93bmxvYWQtY29kZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Rvd25sb2FkLWZpbGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kb3dubG9hZC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Ryb3Bkb3duLWFycm93LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZWRpdC1hY3Rpb24uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9lZGl0LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZXhjbGFtYXRpb24td2FybmluZy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2V4cG9ydC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2V4dGVybmFsLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZXllLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZm9sZGVyLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZm9vdGVyLWxvZ28uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9mdW5uZWwuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9ncm91cC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2hlYWRlci1sb2dvLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvaGVhZHBob25lLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvaGVscC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2hpZGUtcGFzc3dvcmQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9oaXN0b3J5LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvaWMtdmVyaWZpY2F0aW9uLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvaW5kaWNhdG9yLWljb24uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9rZXkuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9sZWZ0LWFycm93LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvbG9nby13aGl0ZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2xvZ28uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9sb2dvdXQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9tYWduaWZ5aW5nLWdsYXNzLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvbWFpbC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL21pbmltaXplLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvbW9vbi5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL25vdGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvYnVpbGRpbmcuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvZGVzY3JpcHRpb24uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvZG9jdW1lbnRfbGluay5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9uYW1lLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL29yZ19pZGVudGlmaWVyLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL29yZ2FuaXNhdGlvbl9pZGVudGlmaWVyLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL29yZ2FuaXphdGlvbl9pZGVudGlmaWVyLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3JlY2lwaWVudF9jb3VudHJ5X2J1ZGdldC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9yZWNpcGllbnRfb3JnX2J1ZGdldC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9yZWNpcGllbnRfcmVnaW9uX2J1ZGdldC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9yZXBvcnRpbmdfb3JnLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3JlcG9ydGluZ19vcmdhbmlzYXRpb24uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvdGl0bGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvdG90YWxfYnVkZ2V0LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3RvdGFsX2V4cGVuZGl0dXJlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcGFuZWwtc2VhcmNoLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcGVyaW9kLWljb24uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9wbHVzLW91dGxpbmVkLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcGx1cy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3B1Ymxpc2guc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9wdy1sb2NrLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcXVlc3Rpb24tbWFyay5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3JlZC1jcm9zcy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3JlZC1kb3Quc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9yZWRvLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcmVzdWx0LWljb24uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9yaWdodC1hcnJvdy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3NlYXJjaC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3NldHRpbmcuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9zaGllbGQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9zbWlsZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3NvcnQtYXNjZW5kaW5nLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvc29ydC1kZXNjZW5kaW5nLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvc29ydC1pY29uLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvc3Rhci5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3RpY2stb3V0bGluZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3RpY2suc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy90aWNrZWQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy90aW1lcy1jaXJjbGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy90d2l0dGVyLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvdXAtYXJyb3ctb3V0bGluZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3VwbG9hZC1maWxlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvdXNlci1wcm9maWxlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvdXNlci5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3dhcm5pbmctYWN0aXZpdHkuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy93YXJuaW5nLWZpbGwuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy93YXJuaW5nLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcveW91dHViZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL011bHRpU2VsZWN0V2l0aFNlYXJjaC52dWU/OTcwOCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvWGxzTGlzdEVycm9yLnZ1ZT81Yjk3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zcGlubmVyTG9hZGVyLnZ1ZT8zYzNkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvVGFibGVMYXlvdXQudnVlPzAyY2UiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvTGlzdEVsZW1lbnQudnVlP2FiY2UiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvWGxzTGlzdC52dWU/NWI0OSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3N1cGVyYWRtaW4vY29tcG9uZW50cy9UYWJsZUxpc3QudnVlP2YyNWQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy91c2VyL1VzZXJMaXN0aW5nLnZ1ZT9mNTc2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9BZG1pbkhlYWRlci52dWU/ZjZlOSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnVsa3B1Ymxpc2hXaXRoWGxzLnZ1ZT83OTI2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9FcnJvck1lc3NhZ2UudnVlPzg4OTgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0hvdmVyVGV4dC52dWU/Yjc3ZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvTG9hZGVyLnZ1ZT82ODc0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZT9mZDg2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9TaGltbWVyTG9hZGluZy52dWU/YjRiYyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvRXJyb3JMaXN0cy52dWU/Y2U5OCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvUHJvZ3Jlc3NMb2FkZXIudnVlPzZhMTciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1N0aWNreUVycm9ycy52dWU/NWQyMSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvVXBsb2FkZWRFcnJvcnMudnVlP2I2MWYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9BY3Rpdml0eUluZGV4LnZ1ZT9lM2U3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvQ3JlYXRlTW9kYWwudnVlPzJlOGYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvRXJyb3JJdGVtLnZ1ZT9kNjdkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvQWN0aXZpdGllc0VsZW1lbnRzLnZ1ZT83NzM3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvRG93bmxvYWRBY3Rpdml0eUJ1dHRvbi52dWU/ZmVhZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2Rhc2hib2FyZC9EYXNoYm9hcmRMaXN0U2VjdGlvbi52dWU/YzRmYSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9JbXBvcnRMaXN0LnZ1ZT82Y2Q0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL09yZ2FuaXNhdGlvbkRhdGEudnVlPzgxZDUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9yZXNldC9SZXNldFBhZ2UudnVlPzBlYWIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvSWF0aVJlZ2lzdGVyUGFnZS52dWU/ZDYwYiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9SZWdpc3RlclBhZ2UudnVlPzY5YjEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvU2lnbkluLnZ1ZT9kMzgwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9BY3Rpdml0eURvd25sb2FkLnZ1ZT80ZjY5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9BZG1pbkhlYWRlci52dWU/M2MyZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnJlYWRDcnVtYi52dWU/YWExZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnVsa1B1Ymxpc2hpbmdFcnJvclBvcHVwLnZ1ZT9hZGIzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9CdWxrcHVibGlzaFdpdGhYbHMudnVlPzdhOTkiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWU/NmYxMSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRGF0ZVJhbmdlV2lkZ2V0LnZ1ZT9jNjk5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9EZXNjcmlwdGlvbkZvcm0udnVlPzE0MTAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0Vycm9yTWVzc2FnZS52dWU/ZTFkMCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRXJyb3JQb3BVcC52dWU/MzJmYSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZT9hMmU2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Mb2FkZXIudnVlPzQyYjciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL011bHRpU2VsZWN0V2l0aFNlYXJjaC52dWU/ZjU1OSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvTmF2RHJvcGRvd24udnVlP2FlMGMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1BvcHVwTW9kYWwudnVlP2VkMzAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1JhZGlhbFByb2dyZXNzQmFyLnZ1ZT83NGE3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9TaGltbWVyTG9hZGluZy52dWU/MjY3YiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvVGFibGVMb2FkZXJDb21wb25lbnQudnVlPzViMWYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1RhYmxlUGFnaW5hdGlvbi52dWU/MjdiMiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZT8zOTFkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9YbHNMaXN0RXJyb3IudnVlPzAxMjEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1hsc0xvYWRlci52dWU/NmE1YyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvWGxzVXBsb2FkSW5kaWNhdG9yLnZ1ZT84MmJiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9idXR0b25zL0RlbGV0ZUJ1dHRvbi52dWU/NmU0MSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvYnV0dG9ucy9MaW5rLnZ1ZT8yNDdjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9idXR0b25zL1B1Ymxpc2hCdXR0b24udnVlP2E4ZDciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL2J1dHRvbnMvVW5QdWJsaXNoQnV0dG9uLnZ1ZT80MWEyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9EZWxldGVBY3Rpb24udnVlPzhjOTAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL0Vycm9yTGlzdHMudnVlPzg4OGUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL0hhdmVOb3RBZGRlZFlldC52dWU/OTM2MSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvT3JnYW5pemF0aW9uUHVibGlzaFVucHVibGlzaEJ1dHRvbi52dWU/OTE3YiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvUGFnZVRpdGxlLnZ1ZT9lMmYwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWU/ZmRjNyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvU3RpY2t5RXJyb3JzLnZ1ZT9hZmNjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9VcGxvYWRlZEVycm9ycy52dWU/ZjI0NSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc3Bpbm5lckxvYWRlci52dWU/NTA2YSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc3RhdHVzL0VsZW1lbnRTdGF0dXMudnVlP2RhNTQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3N0YXR1cy9QcmV2aW91c2x5UHVibGlzaGVkLnZ1ZT9mODczIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvQWN0aXZpdHlEZWZhdWx0VmFsdWUudnVlP2Q0YTkiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9BY3Rpdml0eURldGFpbC52dWU/OTQ2NCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5SW5kZXgudnVlPzA0NmQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9DcmVhdGVNb2RhbC52dWU/OGU2ZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9FcnJvckl0ZW0udnVlPzAxM2QiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvUHVibGlzaFNlbGVjdGVkLnZ1ZT8zOWRhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL1JlZnJlc2hUb2FzdC52dWU/OTFiYSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9WYWxpZGF0aW9uRXJyb3JzLnZ1ZT8yYmYwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvQWN0aXZpdHlEYXRlLnZ1ZT8yZjBiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvQ29uZGl0aW9ucy52dWU/YzE4ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0NvbnRhY3RJbmZvLnZ1ZT82MDcyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvRGVzY3JpcHRpb24udnVlPzZiNWEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9IdW1hbml0YXJpYW5TY29wZS52dWU/NTliYiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0lhdGlJZGVudGlmaWVyLnZ1ZT8yZDc2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvTGVnYWN5RGF0YS52dWU/YjhkYiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0xvY2F0aW9uLnZ1ZT8yYmJjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvT3RoZXJJZGVudGlmaWVyLnZ1ZT83MjNlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUGFydGljaXBhdGluZ09yZy52dWU/ODk4YiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1BsYW5uZWREaXNidXJzZW1lbnQudnVlPzBkYzYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9Qb2xpY3lNYXJrZXIudnVlPzhlYjgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9SZWNpcGllbnRDb3VudHJ5LnZ1ZT84MTBmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVjaXBpZW50UmVnaW9uLnZ1ZT9iYjg4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVsYXRlZEFjdGl2aXR5LnZ1ZT81ZTk4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVwb3J0aW5nT3JnYW5pemF0aW9uLnZ1ZT8zYmU5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVzdWx0LnZ1ZT8xOGRlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvU2VjdG9yLnZ1ZT8yMjc5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvVGFnLnZ1ZT84ZDE3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvVGl0bGUudnVlP2MzZTAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9UcmFuc2FjdGlvbnMudnVlPzUwMjYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL0luZGljYXRvckRldGFpbC52dWU/NDkwNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvSW5kaWNhdG9yTGlzdC52dWU/MDk1OCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvQWdncmVnYXRpb25TdGF0dXMudnVlPzQxYjYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0Jhc2VsaW5lLnZ1ZT84MDYwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9EZXNjcmlwdGlvbi52dWU/OTc5ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvRG9jdW1lbnRMaW5rLnZ1ZT80ZDg3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9JbmRpY2F0b3JBc2NlbmRpbmcudnVlPzQ2ZDciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL01lYXN1cmUudnVlPzFjNmIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL1BlcmlvZC52dWU/MmU3OSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvUmVmZXJlbmNlLnZ1ZT9hYjcxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9UaXRsZS52dWU/MDEzMSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0FjdGl2aXRpZXNFbGVtZW50cy52dWU/NzVlMCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0FjdGl2aXR5RWxlbWVudC52dWU/MjE2YSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0FkZEFjdGl2aXR5QnV0dG9uLnZ1ZT80NzQzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvRG93bmxvYWRBY3Rpdml0eUJ1dHRvbi52dWU/MTEyYiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0VsZW1lbnRzTm90ZS52dWU/NDZhNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0VtcHR5QWN0aXZpdHkudnVlPzU0MWYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9QYWdlVGl0bGUudnVlPzIxMWEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9TaWRlYmFySGVscEJsb2NrLnZ1ZT8zODg2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvVGFibGVMYXlvdXQudnVlPzcwNDYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wZXJpb2RzL1BlcmlvZHNEZXRhaWwudnVlP2U2NGMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wZXJpb2RzL1BlcmlvZHNMaXN0LnZ1ZT9jMzJjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGVyaW9kcy9lbGVtZW50cy9BY3R1YWxWYWx1ZS52dWU/NGVhNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BlcmlvZHMvZWxlbWVudHMvVGFyZ2V0VmFsdWUudnVlPzJjOTgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL1Jlc3VsdERldGFpbC52dWU/NDdlZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvUmVzdWx0RWxlbWVudC52dWU/M2VmMSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvUmVzdWx0TGlzdC52dWU/OGIzYyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvZWxlbWVudHMvRG9jdW1lbnRMaW5rLnZ1ZT83ZDE1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9lbGVtZW50cy9JbmRpY2F0b3IudnVlPzg1ZTYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL1JlZmVyZW5jZS52dWU/MjkzMCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvZWxlbWVudHMvUmVzdWx0VHlwZS52dWU/ZjNmNCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvZWxlbWVudHMvVGl0bGVEZXNjcmlwdGlvbi52dWU/ZTA5YSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9UcmFuc2FjdGlvbkRldGFpbC52dWU/NThmMiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9UcmFuc2FjdGlvbkVsZW1lbnQudnVlP2RiNWYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvVHJhbnNhY3Rpb25MaXN0LnZ1ZT8xNTA4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL0FpZFR5cGUudnVlPzMyZjgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvRGVzY3JpcHRpb24udnVlPzE5NWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvRGlzYnVyc2VtZW50Q2hhbm5lbC52dWU/ODFkMSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9GaW5hbmNlVHlwZS52dWU/NGE4NCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9GbG93VHlwZS52dWU/NzEzNCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9Qcm92aWRlck9yZ2FuaXphdGlvbi52dWU/MzE1MSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9SZWNlaXZlck9yZ2FuaXphdGlvbi52dWU/NjJlYyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9SZWNpcGllbnRDb3VudHJ5LnZ1ZT8wMTUwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1JlY2lwaWVudFJlZ2lvbi52dWU/ZGY2MyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9TZWN0b3IudnVlP2FiM2YiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvVGllZFN0YXR1cy52dWU/NzhkMiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9UcmFuc2FjdGlvbkRhdGUudnVlP2U4OWQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvVHJhbnNhY3Rpb25UeXBlLnZ1ZT84M2NhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1ZhbHVlLnZ1ZT8xMTg3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYXVkaXQvQXVkaXRMaXN0aW5nLnZ1ZT85NmYyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvZGFzaGJvYXJkL0Rhc2hib2FyZEdyYXBoLnZ1ZT82ZmQ0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvZGFzaGJvYXJkL0Rhc2hib2FyZExpc3RTZWN0aW9uLnZ1ZT80MDliIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvZGFzaGJvYXJkL0Rhc2hib2FyZFBhZ2UudnVlP2JjNmUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9kYXNoYm9hcmQvRGFzaGJvYXJkU3RhdHNTZWN0aW9uLnZ1ZT82NTM0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0FjdGl2aXR5VXBsb2FkLnZ1ZT9mODc3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0FjdGl2aXR5WGxzVXBsb2FkLnZ1ZT8xNTM2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0ltcG9ydExpc3QudnVlP2ZmOGUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvSW1wb3J0UGxhY2Vob2xkZXIudnVlPzFhNTAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvTGlzdEVsZW1lbnQudnVlP2U2MTYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvWGxzTGlzdC52dWU/YWFlYiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9PcmdhbmlzYXRpb25EYXRhLnZ1ZT9kMmU1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL09yZ2FuaXNhdGlvbkVsZW1lbnRzLnZ1ZT9hYTRhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL09yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsLnZ1ZT9iODc1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL0RvY3VtZW50TGluay52dWU/MDA0NCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9SZWNpcGllbnRDb3VudHJ5QnVkZ2V0LnZ1ZT8zN2VkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1JlcG9ydGluZ09yZ0J1ZGdldC52dWU/OWVhYiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9SZXBvcnRpbmdPcmdhbmlzYXRpb24udnVlPzllYTQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvUmVwb3J0aW5nUmVnaW9uQnVkZ2V0LnZ1ZT9iMTA4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1RvdGFsQnVkZ2V0LnZ1ZT9kZDJiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1RvdGFsRXhwZW5kaXR1cmUudnVlPzdiMzciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9yZXNldC9QYXNzd29yZFJlY292ZXJ5LnZ1ZT85Y2JkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvcmVzZXQvUmVzZXRQYWdlLnZ1ZT9mMWFjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvcmVzZXQvUmVzZXRQYXNzd29yZC52dWU/NDM2MyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3NldHRpbmcvU2V0dGluZ0RlZmF1bHRGb3JtLnZ1ZT85MTViIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc2V0dGluZy9TZXR0aW5nUGFnZS52dWU/MDEwMyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3NldHRpbmcvU2V0dGluZ1B1Ymxpc2hpbmdGb3JtLnZ1ZT9lMjQ0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9PcmdhbmlzYXRpb25MaXN0LnZ1ZT9lNTA3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9TeXN0ZW1WZXJzaW9uLnZ1ZT84MTkyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9jb21wb25lbnRzL0FkbWluQmFyLnZ1ZT82NjYwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9jb21wb25lbnRzL1RhYmxlTGlzdC52dWU/MzExNyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3VzZXIvVXNlckxpc3RpbmcudnVlPzA4YjAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy91c2VyL1VzZXJQcm9maWxlLnZ1ZT83YmJjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL0Fib3V0UGFnZS52dWU/NzhkYyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9FbWFpbFZlcmlmaWNhdGlvbi52dWU/YzBhNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9JYXRpUmVnaXN0ZXJQYWdlLnZ1ZT8yM2U2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL0lhdGlTdGFuZGFyZC52dWU/NjUyYyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9QdWJsaXNoaW5nQ2hlY2tsaXN0LnZ1ZT84NjlmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1JlZ2lzdGVyUGFnZS52dWU/MTVlNSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9TdXBwb3J0UGFnZS52dWU/MDU4YyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9XZWxjb21lUGFnZS52dWU/MGRlYiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9BZG1pbkZvb3Rlci52dWU/NDIyYiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9Kb2luTm93LnZ1ZT81YTU2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL1NpZ25Jbi52dWU/MDM1ZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9XZWJGb290ZXIudnVlP2E3ZDIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvV2ViSGVhZGVyLnZ1ZT9hZWIzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9BY3Rpdml0eURvd25sb2FkLnZ1ZT8zMmZiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9BZG1pbkhlYWRlci52dWU/ZDQ4MCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnJlYWRDcnVtYi52dWU/MWIyNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnVsa1B1Ymxpc2hpbmdFcnJvclBvcHVwLnZ1ZT80ZmRkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9CdWxrcHVibGlzaFdpdGhYbHMudnVlP2UyMmYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWU/NTEyMSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRGF0ZVJhbmdlV2lkZ2V0LnZ1ZT9mZTJiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9EZXNjcmlwdGlvbkZvcm0udnVlP2RkMWQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0Vycm9yTWVzc2FnZS52dWU/ZDdiNyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRXJyb3JQb3BVcC52dWU/NDI4MSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZT8xMjBlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Mb2FkZXIudnVlP2VlOGMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL011bHRpU2VsZWN0V2l0aFNlYXJjaC52dWU/NTZiZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvTmF2RHJvcGRvd24udnVlP2JjZGUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1BvcHVwTW9kYWwudnVlPzM5NDciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1JhZGlhbFByb2dyZXNzQmFyLnZ1ZT8wMWI5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9UYWJsZUxvYWRlckNvbXBvbmVudC52dWU/YjEyZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvVGFibGVQYWdpbmF0aW9uLnZ1ZT82ZDNjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlPzM1ZDYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1hsc0xpc3RFcnJvci52dWU/YmNhYSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvWGxzTG9hZGVyLnZ1ZT8xNzQyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9YbHNVcGxvYWRJbmRpY2F0b3IudnVlP2ZlNTUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL2J1dHRvbnMvRGVsZXRlQnV0dG9uLnZ1ZT84YjJiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9idXR0b25zL0xpbmsudnVlP2ZhNWYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL2J1dHRvbnMvUHVibGlzaEJ1dHRvbi52dWU/YWJlMCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvYnV0dG9ucy9VblB1Ymxpc2hCdXR0b24udnVlPzBlOGIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL0RlbGV0ZUFjdGlvbi52dWU/MTMzNSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvRXJyb3JMaXN0cy52dWU/MGNiNyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvSGF2ZU5vdEFkZGVkWWV0LnZ1ZT84OTRmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9Pcmdhbml6YXRpb25QdWJsaXNoVW5wdWJsaXNoQnV0dG9uLnZ1ZT9jYjJkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9QYWdlVGl0bGUudnVlP2IyNmMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1Byb2dyZXNzTG9hZGVyLnZ1ZT9mNzgzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9TdGlja3lFcnJvcnMudnVlPzZlOTYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1VwbG9hZGVkRXJyb3JzLnZ1ZT8wYTBlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zdGF0dXMvRWxlbWVudFN0YXR1cy52dWU/ZjQzZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc3RhdHVzL1ByZXZpb3VzbHlQdWJsaXNoZWQudnVlPzJhZWMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9BY3Rpdml0eURlZmF1bHRWYWx1ZS52dWU/NjVjMSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5RGV0YWlsLnZ1ZT9iMWUzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvQWN0aXZpdHlJbmRleC52dWU/YzI2ZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0NyZWF0ZU1vZGFsLnZ1ZT9mNTg4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL0Vycm9ySXRlbS52dWU/NTA2MiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9QdWJsaXNoU2VsZWN0ZWQudnVlPzc3NDIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvUmVmcmVzaFRvYXN0LnZ1ZT9mOTY0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL1ZhbGlkYXRpb25FcnJvcnMudnVlPzNhOTIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9BY3Rpdml0eURhdGUudnVlPzMzYjYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9Db25kaXRpb25zLnZ1ZT81OWE1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvQ29udGFjdEluZm8udnVlPzlkYTYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9EZXNjcmlwdGlvbi52dWU/NGJlMiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0h1bWFuaXRhcmlhblNjb3BlLnZ1ZT9jMjczIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvSWF0aUlkZW50aWZpZXIudnVlPzI2ZTAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9MZWdhY3lEYXRhLnZ1ZT83MWE1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvTG9jYXRpb24udnVlPzM0MGEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9PdGhlcklkZW50aWZpZXIudnVlP2EyYzYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9QYXJ0aWNpcGF0aW5nT3JnLnZ1ZT83MGMxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUGxhbm5lZERpc2J1cnNlbWVudC52dWU/ZmY0ZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1BvbGljeU1hcmtlci52dWU/ZGViMCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1JlY2lwaWVudENvdW50cnkudnVlP2Q4NTciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9SZWNpcGllbnRSZWdpb24udnVlP2QzOGMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9SZWxhdGVkQWN0aXZpdHkudnVlPzNkZTciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9SZXBvcnRpbmdPcmdhbml6YXRpb24udnVlP2Q1Y2YiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9SZXN1bHQudnVlPzc0ZjYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9TZWN0b3IudnVlPzQ5NmMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9UYWcudnVlPzAzMTQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9UaXRsZS52dWU/ODEwOCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1RyYW5zYWN0aW9ucy52dWU/MDFlMCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvSW5kaWNhdG9yRGV0YWlsLnZ1ZT85NzE2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9JbmRpY2F0b3JMaXN0LnZ1ZT8yY2M3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9BZ2dyZWdhdGlvblN0YXR1cy52dWU/MDE4ZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvQmFzZWxpbmUudnVlPzBjMmIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0Rlc2NyaXB0aW9uLnZ1ZT9mZjhmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9Eb2N1bWVudExpbmsudnVlPzQ0MjQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0luZGljYXRvckFzY2VuZGluZy52dWU/MTNhYSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvTWVhc3VyZS52dWU/ZWFlNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvUGVyaW9kLnZ1ZT8zOGY2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9SZWZlcmVuY2UudnVlPzkyNDIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL1RpdGxlLnZ1ZT85ZmYwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvQWN0aXZpdGllc0VsZW1lbnRzLnZ1ZT84Yzk0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvQWN0aXZpdHlFbGVtZW50LnZ1ZT81YzUyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvQWRkQWN0aXZpdHlCdXR0b24udnVlP2MyMGQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9Eb3dubG9hZEFjdGl2aXR5QnV0dG9uLnZ1ZT85NDI1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvRWxlbWVudHNOb3RlLnZ1ZT8wNjE1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvRW1wdHlBY3Rpdml0eS52dWU/MjgxZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL1BhZ2VUaXRsZS52dWU/OWQxZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL1NpZGViYXJIZWxwQmxvY2sudnVlPzBkZjQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9UYWJsZUxheW91dC52dWU/NjM0MCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BlcmlvZHMvUGVyaW9kc0RldGFpbC52dWU/N2E4MyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BlcmlvZHMvUGVyaW9kc0xpc3QudnVlPzY3NDMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wZXJpb2RzL2VsZW1lbnRzL0FjdHVhbFZhbHVlLnZ1ZT8zMzBlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGVyaW9kcy9lbGVtZW50cy9UYXJnZXRWYWx1ZS52dWU/MTZiMCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvUmVzdWx0RGV0YWlsLnZ1ZT8wYTljIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9SZXN1bHRFbGVtZW50LnZ1ZT84NTFhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9SZXN1bHRMaXN0LnZ1ZT82YTcyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9lbGVtZW50cy9Eb2N1bWVudExpbmsudnVlP2FjY2QiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL0luZGljYXRvci52dWU/MGI3MSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvZWxlbWVudHMvUmVmZXJlbmNlLnZ1ZT82M2E2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9lbGVtZW50cy9SZXN1bHRUeXBlLnZ1ZT8xNjMxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9lbGVtZW50cy9UaXRsZURlc2NyaXB0aW9uLnZ1ZT81ZTMzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL1RyYW5zYWN0aW9uRGV0YWlsLnZ1ZT8yZTUwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL1RyYW5zYWN0aW9uRWxlbWVudC52dWU/NTNiMSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9UcmFuc2FjdGlvbkxpc3QudnVlPzkyMDciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvQWlkVHlwZS52dWU/MzQ3OSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9EZXNjcmlwdGlvbi52dWU/ODNmMyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9EaXNidXJzZW1lbnRDaGFubmVsLnZ1ZT8xZTUyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL0ZpbmFuY2VUeXBlLnZ1ZT81ZGMzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL0Zsb3dUeXBlLnZ1ZT9iNWQ1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1Byb3ZpZGVyT3JnYW5pemF0aW9uLnZ1ZT84ODBjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1JlY2VpdmVyT3JnYW5pemF0aW9uLnZ1ZT85YzQ3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1JlY2lwaWVudENvdW50cnkudnVlP2M1YWEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvUmVjaXBpZW50UmVnaW9uLnZ1ZT80YmI1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1NlY3Rvci52dWU/NmY4MCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9UaWVkU3RhdHVzLnZ1ZT84Mjc4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1RyYW5zYWN0aW9uRGF0ZS52dWU/MGI5OSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9UcmFuc2FjdGlvblR5cGUudnVlPzQ1NGIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvVmFsdWUudnVlPzhiZjQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hdWRpdC9BdWRpdExpc3RpbmcudnVlPzI5ZDAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9kYXNoYm9hcmQvRGFzaGJvYXJkR3JhcGgudnVlPzJkZWIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9kYXNoYm9hcmQvRGFzaGJvYXJkTGlzdFNlY3Rpb24udnVlPzYyZGUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9kYXNoYm9hcmQvRGFzaGJvYXJkUGFnZS52dWU/ZDk3MSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2Rhc2hib2FyZC9EYXNoYm9hcmRTdGF0c1NlY3Rpb24udnVlP2U5NzciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvQWN0aXZpdHlVcGxvYWQudnVlP2NmNjUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvQWN0aXZpdHlYbHNVcGxvYWQudnVlPzc1MWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvSW1wb3J0TGlzdC52dWU/ODU0MCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9JbXBvcnRQbGFjZWhvbGRlci52dWU/MmFiMiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9MaXN0RWxlbWVudC52dWU/Yzk2MSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9YbHNMaXN0LnZ1ZT9kNWM5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL09yZ2FuaXNhdGlvbkRhdGEudnVlP2IzMjkiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vT3JnYW5pc2F0aW9uRWxlbWVudHMudnVlPzg3OGIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vT3JnYW5pc2F0aW9uRWxlbWVudHNEZXRhaWwudnVlP2FjNGYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvRG9jdW1lbnRMaW5rLnZ1ZT81MzkxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1JlY2lwaWVudENvdW50cnlCdWRnZXQudnVlPzdhMDIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvUmVwb3J0aW5nT3JnQnVkZ2V0LnZ1ZT82YWYzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1JlcG9ydGluZ09yZ2FuaXNhdGlvbi52dWU/MDk4MyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9SZXBvcnRpbmdSZWdpb25CdWRnZXQudnVlP2EwNzkiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvVG90YWxCdWRnZXQudnVlPzRiYWQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvVG90YWxFeHBlbmRpdHVyZS52dWU/NTFkMiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3Jlc2V0L1Bhc3N3b3JkUmVjb3ZlcnkudnVlPzI2ZTAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9yZXNldC9SZXNldFBhZ2UudnVlP2U4YjMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9yZXNldC9SZXNldFBhc3N3b3JkLnZ1ZT9lZTQ5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc2V0dGluZy9TZXR0aW5nRGVmYXVsdEZvcm0udnVlPzg1ZTkiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zZXR0aW5nL1NldHRpbmdQYWdlLnZ1ZT9mMGUzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc2V0dGluZy9TZXR0aW5nUHVibGlzaGluZ0Zvcm0udnVlPzNmMzQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zdXBlcmFkbWluL09yZ2FuaXNhdGlvbkxpc3QudnVlPzQ0MGEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zdXBlcmFkbWluL1N5c3RlbVZlcnNpb24udnVlPzE4NmYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zdXBlcmFkbWluL2NvbXBvbmVudHMvQWRtaW5CYXIudnVlPzQyNGMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zdXBlcmFkbWluL2NvbXBvbmVudHMvVGFibGVMaXN0LnZ1ZT9lNWU5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvdXNlci9Vc2VyTGlzdGluZy52dWU/MGI2MyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3VzZXIvVXNlclByb2ZpbGUudnVlPzkwZDYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvRW1haWxWZXJpZmljYXRpb24udnVlPzVhMTYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvSWF0aVJlZ2lzdGVyUGFnZS52dWU/N2NiMCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9JYXRpU3RhbmRhcmQudnVlPzA2YTQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvUHVibGlzaGluZ0NoZWNrbGlzdC52dWU/ZjYzZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9SZWdpc3RlclBhZ2UudnVlPzk4NjMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvU3VwcG9ydFBhZ2UudnVlP2NmZGMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvQWRtaW5Gb290ZXIudnVlP2I4N2IiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvSm9pbk5vdy52dWU/NjYwMSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9TaWduSW4udnVlPzYzZDMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvV2ViRm9vdGVyLnZ1ZT82ZGViIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL1dlYkhlYWRlci52dWU/MDJmNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9BYm91dFBhZ2UudnVlP2Q2M2MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvV2VsY29tZVBhZ2UudnVlP2M2NjIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnLyBzeW5jIF5cXC5cXC8uKiQiLCJ3ZWJwYWNrOi8vL2lnbm9yZWR8L2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvY3J5cHRvLWpzfGNyeXB0byJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHNwaW5uZXJMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vc3Bpbm5lckxvYWRlci52dWVcIikpO1xudmFyIFBvcHVwTW9kYWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvUG9wdXBNb2RhbC52dWVcIikpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciBpbmRleF8xID0gcmVxdWlyZShcIlN0b3JlL2FjdGl2aXRpZXMvaW5kZXhcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnQWN0aXZpdHlEb3dubG9hZCcsXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHN0b3JlID0gKDAsIGluZGV4XzEudXNlU3RvcmUpKCk7XG4gICAgICAgIHZhciBzaG93UmV0cnlEb3dubG9hZE1vZGVsID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIGlzTG9hZGluZyA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBzdXBwb3J0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2xhdW5jaGVyJyk7XG4gICAgICAgICAgICBpZiAoc3VwcG9ydEJ1dHRvbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHN1cHBvcnRCdXR0b24uc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZXkoLTUwcHgpJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBkb3dubG9hZEZpbGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlQ29tcGxldGVYbHNEb3dubG9hZCcsIHRydWUpO1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZUNhbmNlbERvd25sb2FkJywgdHJ1ZSk7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU3RhcnRYbHNEb3dubG9hZCcsIGZhbHNlKTtcbiAgICAgICAgICAgIHZhciBhcGlVcmwgPSBcIlwiLmNvbmNhdChkb3dubG9hZEFwaVVybC52YWx1ZS5zcGxpdCgpWzBdLnNwbGl0KCcvJylbM10sIFwiL1wiKS5jb25jYXQoZG93bmxvYWRBcGlVcmwudmFsdWUuc3BsaXQoKVswXS5zcGxpdCgnLycpWzRdKTtcbiAgICAgICAgICAgICgwLCBheGlvc18xLmRlZmF1bHQpKHtcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdnZXQnLFxuICAgICAgICAgICAgICAgIHVybDogYXBpVXJsLFxuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InLFxuICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIGZpbGVOYW1lID0gcmVzLmhlYWRlcnNbJ2NvbnRlbnQtZGlzcG9zaXRpb24nXS5zcGxpdCgnZmlsZW5hbWU9JylbMV07XG4gICAgICAgICAgICAgICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbcmVzLmRhdGFdLCB7fSk7XG4gICAgICAgICAgICAgICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgICAgICAgICAgbGluay5ocmVmID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICAgICAgICAgICAgbGluay5zZXRBdHRyaWJ1dGUoJ2Rvd25sb2FkJywgZmlsZU5hbWUpO1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XG4gICAgICAgICAgICAgICAgbGluay5jbGljaygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciByZXRyeURvd25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgeGxzRG93bmxvYWRTdGF0dXMudmFsdWUgPSAnJztcbiAgICAgICAgICAgIGlzTG9hZGluZy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU3RhcnRYbHNEb3dubG9hZCcsIHRydWUpO1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZUNhbmNlbERvd25sb2FkJywgZmFsc2UpO1xuICAgICAgICAgICAgc2hvd1JldHJ5RG93bmxvYWRNb2RlbC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgdmFyIGFwaVVybCA9ICdhY3Rpdml0aWVzL3JldHJ5LXhscy1kb3dubG9hZCc7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KGFwaVVybCkuZmluYWxseShmdW5jdGlvbiAoKSB7IHJldHVybiAoaXNMb2FkaW5nLnZhbHVlID0gZmFsc2UpOyB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNhbmNlbERvd25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgeGxzRG93bmxvYWRTdGF0dXMudmFsdWUgPSAnY2FuY2VsbGVkJztcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoJy9hY3Rpdml0aWVzL2NhbmNlbC14bHMtZG93bmxvYWQnKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlQ2FuY2VsRG93bmxvYWQnLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJ0WGxzRG93bmxvYWQnLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBwZXJjZW50YWdlV2lkdGggPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiAoZmlsZUNvdW50LnZhbHVlIC8gNCkgKiAxMDA7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZmlsZUNvdW50ID0gKDAsIHZ1ZV8yLmluamVjdCkoJ2ZpbGVDb3VudCcpO1xuICAgICAgICB2YXIgeGxzRG93bmxvYWRTdGF0dXMgPSAoMCwgdnVlXzIuaW5qZWN0KSgneGxzRG93bmxvYWRTdGF0dXMnKTtcbiAgICAgICAgdmFyIGRvd25sb2FkQXBpVXJsID0gKDAsIHZ1ZV8yLmluamVjdCkoJ2Rvd25sb2FkQXBpVXJsJyk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHN0b3JlOiBzdG9yZSwgc2hvd1JldHJ5RG93bmxvYWRNb2RlbDogc2hvd1JldHJ5RG93bmxvYWRNb2RlbCwgaXNMb2FkaW5nOiBpc0xvYWRpbmcsIGRvd25sb2FkRmlsZTogZG93bmxvYWRGaWxlLCByZXRyeURvd25sb2FkOiByZXRyeURvd25sb2FkLCBjYW5jZWxEb3dubG9hZDogY2FuY2VsRG93bmxvYWQsIHBlcmNlbnRhZ2VXaWR0aDogcGVyY2VudGFnZVdpZHRoLCBmaWxlQ291bnQ6IGZpbGVDb3VudCwgeGxzRG93bmxvYWRTdGF0dXM6IHhsc0Rvd25sb2FkU3RhdHVzLCBkb3dubG9hZEFwaVVybDogZG93bmxvYWRBcGlVcmwsIHNwaW5uZXJMb2FkZXI6IHNwaW5uZXJMb2FkZXJfdnVlXzEuZGVmYXVsdCwgTW9kYWw6IFBvcHVwTW9kYWxfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBzaG93XzEgPSByZXF1aXJlKFwiU3RvcmUvYWN0aXZpdGllcy9zaG93XCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIENyZWF0ZU1vZGFsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi92aWV3cy9hY3Rpdml0eS9DcmVhdGVNb2RhbC52dWVcIikpO1xudmFyIFRvYXN0TWVzc2FnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9Ub2FzdE1lc3NhZ2UudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdBZG1pbkhlYWRlcicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgdXNlcjogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIG9yZ2FuaXphdGlvbjoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiAodikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2YgdiA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIHYgPT09ICdzdHJpbmcnIHx8IHYgPT09IG51bGw7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHN1cGVyQWRtaW46IHsgdHlwZTogQm9vbGVhbiwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgaGFzQWRtaW5CYXI6IHsgdHlwZTogTnVtYmVyIHx8IEJvb2xlYW4sIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBfYjtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBzdG9yZSA9ICgwLCBzaG93XzEuZGV0YWlsU3RvcmUpKCk7XG4gICAgICAgIHZhciB0cmFuc2xhdGlvbiA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgc2hvd1VzZXJEcm9wZG93biA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHRvYXN0VmlzaWJpbGl0eSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGlzTG9hZGluZyA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNob3dTaWRlYmFyID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgdG9hc3RNZXNzYWdlID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICB2YXIgdG9hc3RUeXBlID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgbGFuZ3VhZ2VOYXZMaUNsYXNzZXM6ICdmbGV4JyxcbiAgICAgICAgICAgIGxhbmd1YWdlTmF2QW5jaG9yQ2xhc3NlczogJ2ZsZXggdGV4dC13aGl0ZSBpdGVtcy1jZW50ZXIgdXBwZXJjYXNlIG5hdl9fcG9pbnRlci1ob3ZlciBweC0xJyxcbiAgICAgICAgICAgIG1lbnVOYXZMaUNsYXNzZXM6ICdmbGV4IHJlbGF0aXZlJyxcbiAgICAgICAgICAgIG1lbnVOYXZBbmNob3JDbGFzc2VzOiAnZmxleCB0ZXh0LXdoaXRlIGl0ZW1zLWNlbnRlciB1cHBlcmNhc2UgbmF2X19wb2ludGVyLWhvdmVyJyxcbiAgICAgICAgICAgIGxhbmd1YWdlczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2U6ICdFTicsXG4gICAgICAgICAgICAgICAgICAgIHBlcm1hbGluazogJy9sYW5nL2VuJyxcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiB0cmFuc2xhdGlvbi53ZWJfbGFuZy5hY3RpdmUgPT09ICdlbicsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlOiAnRlInLFxuICAgICAgICAgICAgICAgICAgICBwZXJtYWxpbms6ICcvbGFuZy9mcicsXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogdHJhbnNsYXRpb24ud2ViX2xhbmcuYWN0aXZlID09PSAnZnInLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZTogJ0VTJyxcbiAgICAgICAgICAgICAgICAgICAgcGVybWFsaW5rOiAnL2xhbmcvZXMnLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IHRyYW5zbGF0aW9uLndlYl9sYW5nLmFjdGl2ZSA9PT0gJ2VzJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIG9yZ19tZW51czogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogdHJhbnNsYXRpb24uYWRtaW4uaGVhZGVyLmFjdGl2aXR5X2RhdGEsXG4gICAgICAgICAgICAgICAgICAgIHBlcm1hbGluazogJy9hY3Rpdml0aWVzJyxcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiB0cmFuc2xhdGlvbi5hZG1pbi5oZWFkZXIub3JnYW5pc2F0aW9uX2RhdGEsXG4gICAgICAgICAgICAgICAgICAgIHBlcm1hbGluazogJy9vcmdhbmlzYXRpb24nLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiB0cmFuc2xhdGlvbi5hZG1pbi5oZWFkZXIuc2V0dGluZ3MsXG4gICAgICAgICAgICAgICAgICAgIHBlcm1hbGluazogJy9zZXR0aW5nJyxcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogdHJhbnNsYXRpb24uY29tbW9uX2xhbmcuYWRkX2ltcG9ydF9hY3Rpdml0eSxcbiAgICAgICAgICAgICAgICAgICAgcGVybWFsaW5rOiAnIycsXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IHRyYW5zbGF0aW9uLmNvbW1vbl9sYW5nLnVzZXJzLFxuICAgICAgICAgICAgICAgICAgICBwZXJtYWxpbms6ICcvdXNlcnMnLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgc3VwZXJhZG1pbl9tZW51czogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ0Rhc2hib2FyZCcsXG4gICAgICAgICAgICAgICAgICAgIHBlcm1hbGluazogJy9kYXNoYm9hcmQnLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiB0cmFuc2xhdGlvbi5jb21tb25fbGFuZy5vcmdfbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgcGVybWFsaW5rOiAnL2xpc3Qtb3JnYW5pc2F0aW9ucycsXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IHRyYW5zbGF0aW9uLmNvbW1vbl9sYW5nLnVzZXJzLFxuICAgICAgICAgICAgICAgICAgICBwZXJtYWxpbms6ICcvdXNlcnMnLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgLy8ge1xuICAgICAgICAgICAgICAgIC8vICAgbmFtZTogdHJhbnNhbHRpb24uY29tbW9uX2xhbmcubG9ncy5kZWZhdWx0LFxuICAgICAgICAgICAgICAgIC8vICAgcGVybWFsaW5rOiAnL3N5c3RlbS12ZXJzaW9uJyxcbiAgICAgICAgICAgICAgICAvLyAgIGFjdGl2ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgLy8gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLmlzTG9hZGluZzsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpc0xvYWRpbmcudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBsaUNsYXNzID0gJ2Jsb2NrIHAtMi41IHRleHQtbi00MCB0ZXh0LXRpbnkgdXBwZXJjYXNlIGxlYWRpbmctWzEuNV0gZm9udC1ib2xkIGhvdmVyOiF0ZXh0LW4tNTAgaG92ZXI6Ymctbi0xMCc7XG4gICAgICAgIHZhciBfYyA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBtb2RhbFZhbHVlID0gX2NbMF0sIG1vZGFsVG9nZ2xlID0gX2NbMV07XG4gICAgICAgIGZ1bmN0aW9uIHRvYXN0KG1lc3NhZ2UsIHR5cGUpIHtcbiAgICAgICAgICAgIHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuICh0b2FzdFZpc2liaWxpdHkudmFsdWUgPSBmYWxzZSk7IH0sIDE1MDAwKTtcbiAgICAgICAgICAgIHRvYXN0TWVzc2FnZS52YWx1ZSA9IG1lc3NhZ2U7XG4gICAgICAgICAgICB0b2FzdFR5cGUudmFsdWUgPSB0eXBlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBpc1RvdWNoRGV2aWNlID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gJ29udG91Y2hzdGFydCcgaW4gd2luZG93IHx8IG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyA+IDA7XG4gICAgICAgIH0pO1xuICAgICAgICBmdW5jdGlvbiBUb2dnbGVNb2RlbCgpIHtcbiAgICAgICAgICAgIG1vZGFsVG9nZ2xlKCk7XG4gICAgICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ29wZW5BZGRNb2RlbCcpO1xuICAgICAgICB9XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc2hvd1NpZGViYXIudmFsdWU7IH0sIGZ1bmN0aW9uIChzaWRlYmFyKSB7XG4gICAgICAgICAgICBpZiAoc2lkZWJhcikge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgfSk7XG4gICAgICAgIGZ1bmN0aW9uIGNoYW5nZUFjdGl2ZU1lbnUoKSB7XG4gICAgICAgICAgICB2YXIgcGF0aCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTtcbiAgICAgICAgICAgIGRhdGEub3JnX21lbnVzLmZvckVhY2goZnVuY3Rpb24gKG1lbnUsIGtleSkge1xuICAgICAgICAgICAgICAgIGRhdGEub3JnX21lbnVzW2tleV1bJ2FjdGl2ZSddID0gbWVudS5wZXJtYWxpbmsgPT09IHBhdGggPyB0cnVlIDogZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChwYXRoLmluY2x1ZGVzKCdhY3Rpdml0eScpIHx8XG4gICAgICAgICAgICAgICAgcGF0aC5pbmNsdWRlcygncmVzdWx0JykgfHxcbiAgICAgICAgICAgICAgICBwYXRoLmluY2x1ZGVzKCdpbmRpY2F0b3InKSkge1xuICAgICAgICAgICAgICAgIGRhdGEub3JnX21lbnVzWzBdWydhY3RpdmUnXSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGF0aC5pbmNsdWRlcygnb3JnYW5pc2F0aW9uJykpIHtcbiAgICAgICAgICAgICAgICBkYXRhLm9yZ19tZW51c1sxXVsnYWN0aXZlJ10gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhdGguaW5jbHVkZXMoJ2ltcG9ydCcpKSB7XG4gICAgICAgICAgICAgICAgZGF0YS5vcmdfbWVudXNbM11bJ2FjdGl2ZSddID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwYXRoLmluY2x1ZGVzKCdkYXNoYm9hcmQnKSkge1xuICAgICAgICAgICAgICAgIGRhdGEuc3VwZXJhZG1pbl9tZW51c1swXVsnYWN0aXZlJ10gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhdGguaW5jbHVkZXMoJ3VzZXJzJykpIHtcbiAgICAgICAgICAgICAgICBkYXRhLm9yZ19tZW51c1s0XVsnYWN0aXZlJ10gPSB0cnVlO1xuICAgICAgICAgICAgICAgIGRhdGEuc3VwZXJhZG1pbl9tZW51c1syXVsnYWN0aXZlJ10gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhdGguaW5jbHVkZXMoJ2xpc3Qtb3JnYW5pc2F0aW9ucycpKSB7XG4gICAgICAgICAgICAgICAgZGF0YS5zdXBlcmFkbWluX21lbnVzWzFdWydhY3RpdmUnXSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGF0aC5pbmNsdWRlcygnc3lzdGVtLXZlcnNpb24nKSB8fFxuICAgICAgICAgICAgICAgIHBhdGguaW5jbHVkZXMoJ2xvZy12aWV3ZXInKSB8fFxuICAgICAgICAgICAgICAgIHBhdGguaW5jbHVkZXMoJ2xpbmszJykgfHxcbiAgICAgICAgICAgICAgICBwYXRoLmluY2x1ZGVzKCdsaW5rNCcpKSB7XG4gICAgICAgICAgICAgICAgZGF0YS5zdXBlcmFkbWluX21lbnVzWzJdWydhY3RpdmUnXSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gbG9jYWwgc3RvcmFnZSBmb3IgcHVibGlzaGluZ1xuICAgICAgICB2YXIgcGEgPSAoMCwgY29yZV8xLnVzZVN0b3JhZ2UpKCd2dWUtdXNlLWxvY2FsLXN0b3JhZ2UnLCB7XG4gICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllczogKF9iID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3B1Ymxpc2hpbmdBY3Rpdml0aWVzJykpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IHt9LFxuICAgICAgICB9KTtcbiAgICAgICAgZnVuY3Rpb24gbG9nb3V0KCkge1xuICAgICAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzID0ge307XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgYXhpb3NfMS5kZWZhdWx0LnBvc3QoJy9sb2dvdXQnKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMuc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnLyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogU2VhcmNoIGZ1bmN0aW9uYWxpdHlcbiAgICAgICAgICpcbiAgICAgICAgICovXG4gICAgICAgIHZhciBzZWFyY2hWYWx1ZSA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIGN1cnJlbnRVUkwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgICAgICAgaWYgKGN1cnJlbnRVUkwuaW5jbHVkZXMoJz8nKSkge1xuICAgICAgICAgICAgdmFyIHF1ZXJ5U3RyaW5nID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaCwgdXJsUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhxdWVyeVN0cmluZyksIHNlYXJjaCA9IHVybFBhcmFtcy5nZXQoJ3EnKTtcbiAgICAgICAgICAgIHNlYXJjaFZhbHVlLnZhbHVlID0gc2VhcmNoO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzcGlubmVyID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2VhcmNoRnVuY3Rpb24gPSBmdW5jdGlvbiAodXJsKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBzcGlubmVyLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIHZhciBwYXJhbSA9IChfYSA9IHNlYXJjaFZhbHVlLnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucmVwbGFjZSgnIycsICcnKTtcbiAgICAgICAgICAgIHZhciBzb3J0aW5nUGFyYW0gPSAnJztcbiAgICAgICAgICAgIGlmIChjdXJyZW50VVJMLmluY2x1ZGVzKCc/JykgJiYgY3VycmVudFVSTC5pbmNsdWRlcygnJicpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHF1ZXJ5U3RyaW5nID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaDtcbiAgICAgICAgICAgICAgICB2YXIgcXVlcnlTdHJpbmdBcnIgPSBxdWVyeVN0cmluZy5zcGxpdCgnJicpO1xuICAgICAgICAgICAgICAgIHNvcnRpbmdQYXJhbSA9ICcmJyArIHF1ZXJ5U3RyaW5nQXJyLnNsaWNlKDEpLmpvaW4oJyYnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBocmVmID0gcGFyYW1cbiAgICAgICAgICAgICAgICA/IFwiXCIuY29uY2F0KHVybCwgXCI/cT1cIikuY29uY2F0KHBhcmFtKS5jb25jYXQoc29ydGluZ1BhcmFtKVxuICAgICAgICAgICAgICAgIDogcHJvcHMuc3VwZXJBZG1pblxuICAgICAgICAgICAgICAgICAgICA/ICcvbGlzdC1vcmdhbmlzYXRpb25zJ1xuICAgICAgICAgICAgICAgICAgICA6ICcvYWN0aXZpdGllcy8nO1xuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBocmVmO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBjaGFuZ2VBY3RpdmVNZW51KCk7XG4gICAgICAgICAgICBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ29wZW5BZGRNb2RlbCcpID09PSAndHJ1ZScgJiZcbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgPT09ICcvYWN0aXZpdGllcycpIHtcbiAgICAgICAgICAgICAgICBtb2RhbFZhbHVlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciByZWRpcmVjdFByb2ZpbGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvcHJvZmlsZSc7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi5vblVubW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ29wZW5BZGRNb2RlbCcpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgc3RvcmU6IHN0b3JlLCBwcm9wczogcHJvcHMsIHRyYW5zbGF0aW9uOiB0cmFuc2xhdGlvbiwgc2hvd1VzZXJEcm9wZG93bjogc2hvd1VzZXJEcm9wZG93biwgdG9hc3RWaXNpYmlsaXR5OiB0b2FzdFZpc2liaWxpdHksIGlzTG9hZGluZzogaXNMb2FkaW5nLCBzaG93U2lkZWJhcjogc2hvd1NpZGViYXIsIHRvYXN0TWVzc2FnZTogdG9hc3RNZXNzYWdlLCB0b2FzdFR5cGU6IHRvYXN0VHlwZSwgZGF0YTogZGF0YSwgbGlDbGFzczogbGlDbGFzcywgbW9kYWxWYWx1ZTogbW9kYWxWYWx1ZSwgbW9kYWxUb2dnbGU6IG1vZGFsVG9nZ2xlLCB0b2FzdDogdG9hc3QsIGlzVG91Y2hEZXZpY2U6IGlzVG91Y2hEZXZpY2UsIFRvZ2dsZU1vZGVsOiBUb2dnbGVNb2RlbCwgY2hhbmdlQWN0aXZlTWVudTogY2hhbmdlQWN0aXZlTWVudSwgcGE6IHBhLCBsb2dvdXQ6IGxvZ291dCwgc2VhcmNoVmFsdWU6IHNlYXJjaFZhbHVlLCBjdXJyZW50VVJMOiBjdXJyZW50VVJMLCBzcGlubmVyOiBzcGlubmVyLCBzZWFyY2hGdW5jdGlvbjogc2VhcmNoRnVuY3Rpb24sIHJlZGlyZWN0UHJvZmlsZTogcmVkaXJlY3RQcm9maWxlLCBDcmVhdGVNb2RhbDogQ3JlYXRlTW9kYWxfdnVlXzEuZGVmYXVsdCwgVG9hc3Q6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB0aXRsZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL3RpdGxlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQnJlYWRDcnVtYicsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciBicmVhZGNydW1iRGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHJldHVybiB7IGdldEFjdGl2aXR5VGl0bGU6IHRpdGxlXzEuZGVmYXVsdCwgYnJlYWRjcnVtYkRhdGE6IGJyZWFkY3J1bWJEYXRhIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdCdWxrUHVibGlzaGluZ0Vycm9yUG9wdXAnLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBidWxrUHVibGlzaFN0YXR1cyA9ICgwLCB2dWVfMi5pbmplY3QpKCdidWxrUHVibGlzaFN0YXR1cycpO1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIub25Vbm1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGJ1bGtQdWJsaXNoU3RhdHVzOiBidWxrUHVibGlzaFN0YXR1cywgbGFuZ3VhZ2U6IGxhbmd1YWdlIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBpbmRleF8xID0gcmVxdWlyZShcIlN0b3JlL2FjdGl2aXRpZXMvaW5kZXhcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS91dGlsc1wiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdCdWxrcHVibGlzaFdpdGhYbHMnLFxuICAgIGVtaXRzOiBbJ2Nsb3NlJ10sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgX2I7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgc3RvcmUgPSAoMCwgaW5kZXhfMS51c2VTdG9yZSkoKTtcbiAgICAgICAgdmFyIHBhID0gKDAsIGNvcmVfMS51c2VTdG9yYWdlKSgndnVlLXVzZS1sb2NhbC1zdG9yYWdlJywge1xuICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXM6IChfYiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdwdWJsaXNoaW5nQWN0aXZpdGllcycpKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiB7fSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgYnVsa1B1Ymxpc2hMZW5ndGggPSAoMCwgdnVlXzIucmVmKSgwKTtcbiAgICAgICAgdmFyIG9wZW5Nb2RlbCA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHBhU3RvcmFnZSA9ICgwLCB2dWVfMi5yZWYpKHN0b3JlLnN0YXRlLmJ1bGtwdWJsaXNoQWN0aXZpdGllcyk7XG4gICAgICAgIHZhciBwdWJsaXNoaW5nQWN0aXZpdGllcyA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkocGFTdG9yYWdlLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzWydhY3Rpdml0aWVzJ10pO1xuICAgICAgICB2YXIgY29tcGxldGVkID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIHJlZnJlc2hUb2FzdE1zZyA9ICgwLCB2dWVfMi5pbmplY3QpKCdyZWZyZXNoVG9hc3RNc2cnKTtcbiAgICAgICAgdmFyIGFjdGl2aXRpZXMgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgaGFzRmFpbGVkQWN0aXZpdGllcyA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgZGF0YToge30sXG4gICAgICAgICAgICBpZHM6IFtdLFxuICAgICAgICAgICAgc3RhdHVzOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIGNvbXBsZXRlZC52YWx1ZSA9IChfYSA9IHBhU3RvcmFnZS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcy5zdGF0dXMpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICdwcm9jZXNzaW5nJztcbiAgICAgICAgICAgIGJ1bGtQdWJsaXNoU3RhdHVzKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgYnVsa1B1Ymxpc2hTdGF0dXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KFwiL2FjdGl2aXRpZXMvYnVsay1wdWJsaXNoLXN0YXR1c1wiKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBpZiAoJ2RhdGEnIGluIHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGFjdGl2aXRpZXMudmFsdWUgPSByZXNwb25zZS5kYXRhLmFjdGl2aXRpZXM7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlZC52YWx1ZSA9IHJlc3BvbnNlLmRhdGEuc3RhdHVzO1xuICAgICAgICAgICAgICAgICAgICAvLyBzYXZpbmcgaW4gbG9jYWwgc3RvcmFnZVxuICAgICAgICAgICAgICAgICAgICBwYVN0b3JhZ2UudmFsdWUucHVibGlzaGluZ0FjdGl2aXRpZXMuYWN0aXZpdGllcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5kYXRhLmFjdGl2aXRpZXM7XG4gICAgICAgICAgICAgICAgICAgIHBhU3RvcmFnZS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcy5zdGF0dXMgPSByZXNwb25zZS5kYXRhLnN0YXR1cztcbiAgICAgICAgICAgICAgICAgICAgcGFTdG9yYWdlLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzLm1lc3NhZ2UgPSByZXNwb25zZS5kYXRhLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhLnN0YXR1cyAhPT0gJ2NvbXBsZXRlZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvbGxpbmdGb3JCdWxrcHVibGlzaERhdGEoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29tcGxldGVkLnZhbHVlID0gJ2NvbXBsZXRlZCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB2YXIgcG9sbGluZ0ZvckJ1bGtwdWJsaXNoRGF0YSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgaW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldChcIi9hY3Rpdml0aWVzL2J1bGstcHVibGlzaC1zdGF0dXNcIikudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVzcG9uc2UucHVibGlzaGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJRCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJ2RhdGEnIGluIHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZpdGllcy52YWx1ZSA9IHJlc3BvbnNlLmRhdGEuYWN0aXZpdGllcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZWQudmFsdWUgPSByZXNwb25zZS5kYXRhLnN0YXR1cztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzYXZpbmcgaW4gbG9jYWwgc3RvcmFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhU3RvcmFnZS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcy5hY3Rpdml0aWVzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZGF0YS5hY3Rpdml0aWVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhU3RvcmFnZS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcy5zdGF0dXMgPSByZXNwb25zZS5kYXRhLnN0YXR1cztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYVN0b3JhZ2UudmFsdWUucHVibGlzaGluZ0FjdGl2aXRpZXMubWVzc2FnZSA9IHJlc3BvbnNlLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29tcGxldGVkLnZhbHVlID09PSAnY29tcGxldGVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsSUQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsZWRBY3Rpdml0aWVzKHBhU3RvcmFnZS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcy5hY3Rpdml0aWVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgoX2EgPSBoYXNGYWlsZWRBY3Rpdml0aWVzID09PSBudWxsIHx8IGhhc0ZhaWxlZEFjdGl2aXRpZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGhhc0ZhaWxlZEFjdGl2aXRpZXMuaWRzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hUb2FzdE1zZy52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hUb2FzdE1zZy5yZWZyZXNoTWVzc2FnZVR5cGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hUb2FzdE1zZy5yZWZyZXNoTWVzc2FnZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2UuY29tbW9uX2xhbmcuZXJyb3Iuc29tZV9hY3Rpdml0aWVzX2hhdmVfZmFpbGVkX3RvX3B1Ymxpc2g7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoVG9hc3RNc2cudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoVG9hc3RNc2cucmVmcmVzaE1lc3NhZ2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlLmNvbW1vbl9sYW5nLmVycm9yLmFjdGl2aXR5X2hhc19iZWVuX3B1Ymxpc2hlZF9zdWNjZXNzZnVsbHk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoVG9hc3RNc2cudmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTAwMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGVkLnZhbHVlID0gJ2NvbXBsZXRlZCc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0sIDMwMDApO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHJldHJ5UHVibGlzaGluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIC8vcmVzZXQgcmVxdWlyZWQgc3RhdGVzXG4gICAgICAgICAgICBjb21wbGV0ZWQudmFsdWUgPSAncHJvY2Vzc2luZyc7XG4gICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gaGFzRmFpbGVkQWN0aXZpdGllcy5kYXRhKSB7XG4gICAgICAgICAgICAgICAgaGFzRmFpbGVkQWN0aXZpdGllcy5kYXRhW2tleV0uc3RhdHVzID0gJ3Byb2Nlc3NpbmcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWN0aXZpdGllcy52YWx1ZSA9IGhhc0ZhaWxlZEFjdGl2aXRpZXMuZGF0YTtcbiAgICAgICAgICAgIC8vIGFwaSBlbmRwb2ludCBjYWxsXG4gICAgICAgICAgICB2YXIgZW5kcG9pbnQgPSBcIi9hY3Rpdml0aWVzL3N0YXJ0LWJ1bGstcHVibGlzaD9hY3Rpdml0aWVzPVtcIi5jb25jYXQoaGFzRmFpbGVkQWN0aXZpdGllcy5pZHMsIFwiXVwiKTtcbiAgICAgICAgICAgIGhhc0ZhaWxlZEFjdGl2aXRpZXMuc3RhdHVzID0gZmFsc2U7XG4gICAgICAgICAgICBoYXNGYWlsZWRBY3Rpdml0aWVzLmlkcyA9IFtdO1xuICAgICAgICAgICAgaGFzRmFpbGVkQWN0aXZpdGllcy5kYXRhID0ge307XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KGVuZHBvaW50KS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBwYVN0b3JhZ2UudmFsdWUucHVibGlzaGluZ0FjdGl2aXRpZXMgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICBidWxrUHVibGlzaFN0YXR1cygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZmFpbGVkQWN0aXZpdGllcyA9IGZ1bmN0aW9uIChuZXN0ZWRPYmplY3QpIHtcbiAgICAgICAgICAgIHZhciBmYWlsZWRBY3Rpdml0aWVzSUQgPSBbXTtcbiAgICAgICAgICAgIHZhciBhc0FycmF5RGF0YSA9IG5lc3RlZE9iamVjdCAmJiBPYmplY3QuZW50cmllcyhuZXN0ZWRPYmplY3QpO1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICAgICAgdmFyIGZpbHRlcmVkID0gYXNBcnJheURhdGEgPT09IG51bGwgfHwgYXNBcnJheURhdGEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFzQXJyYXlEYXRhLmZpbHRlcihmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICB2YXIga2V5ID0gX2FbMF0sIHZhbHVlID0gX2FbMV07XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlICYmIE9iamVjdC52YWx1ZXModmFsdWUpLmluZGV4T2YoJ2ZhaWxlZCcpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgZmFpbGVkQWN0aXZpdGllc0lELnB1c2godmFsdWUuYWN0aXZpdHlfaWQpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdmFyIGZhaWxlZEFjdGl2aXRpZXNEYXRhID0gZmlsdGVyZWQgJiYgT2JqZWN0LmZyb21FbnRyaWVzKGZpbHRlcmVkKTtcbiAgICAgICAgICAgIGlmICgoZmFpbGVkQWN0aXZpdGllc0lEID09PSBudWxsIHx8IGZhaWxlZEFjdGl2aXRpZXNJRCA9PT0gdm9pZCAwID8gdm9pZCAwIDogZmFpbGVkQWN0aXZpdGllc0lELmxlbmd0aCkgPiAwKSB7XG4gICAgICAgICAgICAgICAgaGFzRmFpbGVkQWN0aXZpdGllcy5zdGF0dXMgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGhhc0ZhaWxlZEFjdGl2aXRpZXMuaWRzID0gZmFpbGVkQWN0aXZpdGllc0lEO1xuICAgICAgICAgICAgICAgIGhhc0ZhaWxlZEFjdGl2aXRpZXMuZGF0YSA9IGZhaWxlZEFjdGl2aXRpZXNEYXRhO1xuICAgICAgICAgICAgICAgIHJlZnJlc2hUb2FzdE1zZy5yZWZyZXNoTWVzc2FnZVR5cGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZWZyZXNoVG9hc3RNc2cucmVmcmVzaE1lc3NhZ2UgPVxuICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZS5jb21tb25fbGFuZy5lcnJvci5zb21lX2FjdGl2aXRpZXNfaGF2ZV9mYWlsZWRfdG9fcHVibGlzaDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGhhc0ZhaWxlZEFjdGl2aXRpZXMuc3RhdHVzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaGFzRmFpbGVkQWN0aXZpdGllcy5pZHMgPSBbXTtcbiAgICAgICAgICAgICAgICBoYXNGYWlsZWRBY3Rpdml0aWVzLmRhdGEgPSB7fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNvbXBsZXRlZEFjdGl2aXRpZXMgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICB2YXIgY291bnQgPSAwO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPFxuICAgICAgICAgICAgICAgICgoKF9hID0gcGFTdG9yYWdlLnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucHVibGlzaGluZ0FjdGl2aXRpZXNbJ2FjdGl2aXRpZXMnXSkgJiZcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LnZhbHVlcygoX2IgPSBwYVN0b3JhZ2UudmFsdWUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5wdWJsaXNoaW5nQWN0aXZpdGllc1snYWN0aXZpdGllcyddKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmxlbmd0aCk7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChPYmplY3QudmFsdWVzKHBhU3RvcmFnZS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllc1snYWN0aXZpdGllcyddKVtpXVsnc3RhdHVzJ10gPT09ICdjb21wbGV0ZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50Kys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvdW50O1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHBlcmNlbnRhZ2VXaWR0aCA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIHJldHVybiAoKGNvbXBsZXRlZEFjdGl2aXRpZXMudmFsdWUgL1xuICAgICAgICAgICAgICAgICgoKF9hID0gcGEudmFsdWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5wdWJsaXNoaW5nQWN0aXZpdGllc1snYWN0aXZpdGllcyddKSAmJlxuICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cygoX2IgPSBwYS52YWx1ZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnB1Ymxpc2hpbmdBY3Rpdml0aWVzWydhY3Rpdml0aWVzJ10pLmxlbmd0aCkpICpcbiAgICAgICAgICAgICAgICAxMDApO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5idWxrcHVibGlzaEFjdGl2aXRpZXM7IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNldERhdGFUb0xvY2Fsc3RvcmFnZSgpO1xuICAgICAgICAgICAgZ2V0RGF0YUZyb21Mb2NhbHN0b3JhZ2UoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBnZXREYXRhRnJvbUxvY2Fsc3RvcmFnZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGFjdGl2aXRpZXMudmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYnVsa1B1Ymxpc2hBY3Rpdml0aWVzJyk7XG4gICAgICAgICAgICBhY3Rpdml0aWVzLnZhbHVlID0gKDAsIHV0aWxzXzEuaXNKc29uKShhY3Rpdml0aWVzLnZhbHVlKSAmJiBKU09OLnBhcnNlKGFjdGl2aXRpZXMudmFsdWUpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgc2V0RGF0YVRvTG9jYWxzdG9yYWdlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2J1bGtQdWJsaXNoQWN0aXZpdGllcycsIEpTT04uc3RyaW5naWZ5KHBhU3RvcmFnZS52YWx1ZSkpO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIub25Vbm1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTdGFydEJ1bGtQdWJsaXNoJywgZmFsc2UpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGVtcHR5YnVsa1B1Ymxpc2hTdGF0dXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBzdGF0dXNfMSBpbiBwdWJsaXNoaW5nQWN0aXZpdGllcykge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBwdWJsaXNoaW5nQWN0aXZpdGllc1tzdGF0dXNfMV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuYnVsa1B1Ymxpc2hMZW5ndGg7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIGJ1bGtQdWJsaXNoTGVuZ3RoLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICBwYSA9ICgwLCBjb3JlXzEudXNlU3RvcmFnZSkoJ3Z1ZS11c2UtbG9jYWwtc3RvcmFnZScsIHtcbiAgICAgICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllczogKF9hID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3B1Ymxpc2hpbmdBY3Rpdml0aWVzJykpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHt9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBlbXB0eWJ1bGtQdWJsaXNoU3RhdHVzKCk7XG4gICAgICAgICAgICBidWxrUHVibGlzaFN0YXR1cygpO1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihwdWJsaXNoaW5nQWN0aXZpdGllcywgKF9iID0gcGEudmFsdWUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5wdWJsaXNoaW5nQWN0aXZpdGllc1snYWN0aXZpdGllcyddKTtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBzdG9yZTogc3RvcmUsIHBhOiBwYSwgbGFuZ3VhZ2U6IGxhbmd1YWdlLCBidWxrUHVibGlzaExlbmd0aDogYnVsa1B1Ymxpc2hMZW5ndGgsIG9wZW5Nb2RlbDogb3Blbk1vZGVsLCBwYVN0b3JhZ2U6IHBhU3RvcmFnZSwgcHVibGlzaGluZ0FjdGl2aXRpZXM6IHB1Ymxpc2hpbmdBY3Rpdml0aWVzLCBjb21wbGV0ZWQ6IGNvbXBsZXRlZCwgcmVmcmVzaFRvYXN0TXNnOiByZWZyZXNoVG9hc3RNc2csIGFjdGl2aXRpZXM6IGFjdGl2aXRpZXMsIGhhc0ZhaWxlZEFjdGl2aXRpZXM6IGhhc0ZhaWxlZEFjdGl2aXRpZXMsIGJ1bGtQdWJsaXNoU3RhdHVzOiBidWxrUHVibGlzaFN0YXR1cywgcmV0cnlQdWJsaXNoaW5nOiByZXRyeVB1Ymxpc2hpbmcsIGZhaWxlZEFjdGl2aXRpZXM6IGZhaWxlZEFjdGl2aXRpZXMsIGNvbXBsZXRlZEFjdGl2aXRpZXM6IGNvbXBsZXRlZEFjdGl2aXRpZXMsIHBlcmNlbnRhZ2VXaWR0aDogcGVyY2VudGFnZVdpZHRoLCBnZXREYXRhRnJvbUxvY2Fsc3RvcmFnZTogZ2V0RGF0YUZyb21Mb2NhbHN0b3JhZ2UsIHNldERhdGFUb0xvY2Fsc3RvcmFnZTogc2V0RGF0YVRvTG9jYWxzdG9yYWdlLCBlbXB0eWJ1bGtQdWJsaXNoU3RhdHVzOiBlbXB0eWJ1bGtQdWJsaXNoU3RhdHVzIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQnV0dG9uQ29tcG9uZW50JyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICB0ZXh0OiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgaWNvbjoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICBsaW5rOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgfSxcbiAgICAgICAgYWN0aXZpdHlMZW5ndGg6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGJ0blR5cGUgPSAnJztcbiAgICAgICAgaWYgKHByb3BzLnR5cGUgPT09ICdzZWNvbmRhcnknKSB7XG4gICAgICAgICAgICBidG5UeXBlID0gJ3NlY29uZGFyeS1idG4gZm9udC1ib2xkJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChwcm9wcy50eXBlID09PSAnb3V0bGluZScpIHtcbiAgICAgICAgICAgIGJ0blR5cGUgPSAncHJpbWFyeS1vdXRsaW5lLWJ0bic7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocHJvcHMudHlwZSA9PT0gJ3ByaW1hcnknKSB7XG4gICAgICAgICAgICBidG5UeXBlID0gJ3ByaW1hcnktYnRuIGZvbnQtYm9sZCc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBidG5UeXBlID0gJ2ZvbnQtYm9sZCc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgYnRuVHlwZTogYnRuVHlwZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGRhdGVfZm5zXzEgPSByZXF1aXJlKFwiZGF0ZS1mbnNcIik7XG52YXIgdnVlX2RhdGVwaWNrZXJfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQHZ1ZXBpYy92dWUtZGF0ZXBpY2tlclwiKSk7XG5yZXF1aXJlKFwiQHZ1ZXBpYy92dWUtZGF0ZXBpY2tlci9kaXN0L21haW4uY3NzXCIpO1xudmFyIG1vbWVudF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJtb21lbnRcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0RhdGVSYW5nZVdpZGdldCcsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZHJvcGRvd25SYW5nZToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogZnVuY3Rpb24gKCkgeyByZXR1cm4gKHt9KTsgfSxcbiAgICAgICAgfSxcbiAgICAgICAgZmlyc3REYXRlOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF0ZUxhYmVsOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgfSxcbiAgICAgICAgY3VycmVudFZpZXc6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICBjbGVhckRhdGU6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RhcnRpbmdEYXRlOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgfSxcbiAgICAgICAgZW5kaW5nRGF0ZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIGRhdGVOYW1lOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIGVtaXRzOiBbXG4gICAgICAgICd0cmlnZ2VyU2V0RGF0ZVJhbmdlJyxcbiAgICAgICAgJ3RyaWdnZXJTZXREYXRlVHlwZScsXG4gICAgICAgICdkYXRlQ2xlYXJlZCcsXG4gICAgXSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2UsIGVtaXQgPSBfYS5lbWl0O1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIHNlbGVjdGVkUHJlc2VudEluZGV4ID0gKDAsIHZ1ZV8yLnJlZikoOTkpO1xuICAgICAgICB2YXIgZGF0ZVJhbmdlTWFpbiA9ICgwLCB2dWVfMi5yZWYpKG51bGwpO1xuICAgICAgICB2YXIgZGF0ZVR5cGUgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciBkYXRlRHJvcGRvd24gPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgZGF0ZVR5cGVOYW1lID0gKDAsIHZ1ZV8yLnJlZikocHJvcHMuZGF0ZU5hbWUpO1xuICAgICAgICBkYXRlVHlwZS52YWx1ZSA9IHByb3BzLmRyb3Bkb3duUmFuZ2UgJiYgT2JqZWN0LnZhbHVlcyhwcm9wcy5kcm9wZG93blJhbmdlKVswXTtcbiAgICAgICAgdmFyIGRhdGVUeXBlS2V5ID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICBkYXRlVHlwZUtleS52YWx1ZSA9IHByb3BzLmRyb3Bkb3duUmFuZ2UgJiYgT2JqZWN0LmtleXMocHJvcHMuZHJvcGRvd25SYW5nZSlbMF07XG4gICAgICAgIHZhciBzaG93UmFuZ2VEcm9wZG93biA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGluaXRpYWxEYXRlID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiBwcm9wcy5maXJzdERhdGU7IH0pO1xuICAgICAgICB2YXIgZml4ZWQgPSAoMCwgdnVlXzIucmVmKShwcm9wcy5kYXRlTmFtZSk7XG4gICAgICAgIHZhciB0b2RheURhdGUgPSAoMCwgbW9tZW50XzEuZGVmYXVsdCkobmV3IERhdGUoKSkuZm9ybWF0KCdZWVlZLU1NLUREJyk7XG4gICAgICAgIHZhciBzZWxlY3RlZERhdGUgPSAoMCwgdnVlXzIucmVmKShbXG4gICAgICAgICAgICBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgbmV3IERhdGUobmV3IERhdGUoKS5zZXREYXRlKG5ldyBEYXRlKCkuZ2V0RGF0ZSgpICsgNykpLFxuICAgICAgICBdKTtcbiAgICAgICAgdmFyIGRhdGVwaWNrZXIgPSAoMCwgdnVlXzIucmVmKShudWxsKTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2VsZWN0ZWREYXRlLnZhbHVlWzBdID0gJyc7XG4gICAgICAgICAgICBzZWxlY3RlZERhdGUudmFsdWVbMV0gPSB0b2RheURhdGU7XG4gICAgICAgICAgICB0cmlnZ2VyU2V0RGF0ZVJhbmdlKCcnLCB0b2RheURhdGUsIGZpeGVkLnZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gW3Byb3BzLmVuZGluZ0RhdGUsIHByb3BzLnN0YXJ0aW5nRGF0ZV07IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChwcm9wcy5lbmRpbmdEYXRlICYmIHByb3BzLnN0YXJ0aW5nRGF0ZSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0ZS52YWx1ZVswXSA9IHByb3BzLnN0YXJ0aW5nRGF0ZTtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGUudmFsdWVbMV0gPSBwcm9wcy5lbmRpbmdEYXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgIHZhciBoYW5kbGVQcmVzZW50UmFuZ2VJdGVtQ2xpY2sgPSBmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICAgICAgICAgIHZhciBwcmVzZW50UmFuZ2VJdGVtcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2RwX19wcmVzZXRfcmFuZ2UnKTtcbiAgICAgICAgICAgIHNlbGVjdGVkUHJlc2VudEluZGV4LnZhbHVlID0gaW5kZXg7XG4gICAgICAgICAgICBwcmVzZW50UmFuZ2VJdGVtc1tpbmRleF0uY2xhc3NMaXN0LmFkZCgncHJlc2V0LXJhbmdlLWl0ZW0tYWN0aXZlJyk7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHByZXNlbnRSYW5nZUl0ZW1zLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGogIT09IGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIHByZXNlbnRSYW5nZUl0ZW1zW2pdLmNsYXNzTGlzdC5yZW1vdmUoJ3ByZXNldC1yYW5nZS1pdGVtLWFjdGl2ZScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBwcm9wcy5jbGVhckRhdGU7IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJlc2V0RGF0ZSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGVtaXQoJ2RhdGVDbGVhcmVkJyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICB2YXIgaGFuZGxlQ2FsZW5kYXJJdGVtQ2xpY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzZWxlY3RlZFByZXNlbnRJbmRleC52YWx1ZSA9IDk5O1xuICAgICAgICB9O1xuICAgICAgICB2YXIgYWRkRXZlbnRzRm9yQ2FsZW5kYXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzaG93UmFuZ2VEcm9wZG93bi52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgdmFyIHByZXNlbnRSYW5nZUl0ZW1zID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZHBfX3ByZXNldF9yYW5nZScpO1xuICAgICAgICAgICAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiAoaSkge1xuICAgICAgICAgICAgICAgIHByZXNlbnRSYW5nZUl0ZW1zW2ldLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVQcmVzZW50UmFuZ2VJdGVtQ2xpY2soaSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcmVzZW50UmFuZ2VJdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIF9sb29wXzEoaSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgY2FsZW5kYXJJdGVtcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2RwX19jYWxlbmRhcl9pdGVtJyk7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNhbGVuZGFySXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjYWxlbmRhckl0ZW1zW2ldLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2FsZW5kYXJJdGVtQ2xpY2spO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgcmVtb3ZlRXZlbnRzT2ZDYWxlbmRhciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBwcmVzZW50UmFuZ2VJdGVtcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2RwX19wcmVzZXRfcmFuZ2UnKTtcbiAgICAgICAgICAgIHZhciBfbG9vcF8yID0gZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgICAgICAgICBwcmVzZW50UmFuZ2VJdGVtc1tpXS5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlUHJlc2VudFJhbmdlSXRlbUNsaWNrKGkpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJlc2VudFJhbmdlSXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBfbG9vcF8yKGkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGNhbGVuZGFySXRlbXMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdkcF9fY2FsZW5kYXJfaXRlbScpO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYWxlbmRhckl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY2FsZW5kYXJJdGVtc1tpXS5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNhbGVuZGFySXRlbUNsaWNrKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHRvZ2dsZVNob3dSYW5nZURyb3Bkb3duID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hvd1JhbmdlRHJvcGRvd24udmFsdWUgPSAhc2hvd1JhbmdlRHJvcGRvd24udmFsdWU7XG4gICAgICAgIH07XG4gICAgICAgIHZhciByZXNldERhdGUgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgdHJpZ2dlclNldERhdGVSYW5nZSgnJywgJycpO1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0ZS52YWx1ZVswXSA9ICcnO1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0ZS52YWx1ZVsxXSA9ICcnO1xuICAgICAgICAgICAgICAgIGZpeGVkLnZhbHVlID0gJ0FsbCB0aW1lJztcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qLywgeyBzdWNjZXNzOiB0cnVlIH1dO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9O1xuICAgICAgICB2YXIgcHJlc2V0UmFuZ2VzID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdUb2RheScsXG4gICAgICAgICAgICAgICAgcmFuZ2U6IFsoMCwgZGF0ZV9mbnNfMS5zdGFydE9mRGF5KShuZXcgRGF0ZSgpKSwgKDAsIGRhdGVfZm5zXzEuZW5kT2ZEYXkpKG5ldyBEYXRlKCkpXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdUaGlzIHdlZWsnLFxuICAgICAgICAgICAgICAgIHJhbmdlOiBbKDAsIGRhdGVfZm5zXzEuc3RhcnRPZldlZWspKG5ldyBEYXRlKCkpLCAoMCwgZGF0ZV9mbnNfMS5lbmRPZkRheSkobmV3IERhdGUoKSldLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0xhc3QgNyBkYXlzJyxcbiAgICAgICAgICAgICAgICByYW5nZTogWygwLCBkYXRlX2Zuc18xLnN1YkRheXMpKG5ldyBEYXRlKCksIDYpLCAoMCwgZGF0ZV9mbnNfMS5lbmRPZkRheSkobmV3IERhdGUoKSldLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ1RoaXMgbW9udGgnLFxuICAgICAgICAgICAgICAgIHJhbmdlOiBbKDAsIGRhdGVfZm5zXzEuc3RhcnRPZk1vbnRoKShuZXcgRGF0ZSgpKSwgKDAsIGRhdGVfZm5zXzEuZW5kT2ZNb250aCkobmV3IERhdGUoKSldLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0xhc3QgNiBtb250aCcsXG4gICAgICAgICAgICAgICAgcmFuZ2U6IFsoMCwgZGF0ZV9mbnNfMS5zdGFydE9mTW9udGgpKCgwLCBkYXRlX2Zuc18xLnN1Yk1vbnRocykobmV3IERhdGUoKSwgNikpLCAoMCwgZGF0ZV9mbnNfMS5lbmRPZk1vbnRoKShuZXcgRGF0ZSgpKV0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnVGhpcyB5ZWFyJyxcbiAgICAgICAgICAgICAgICByYW5nZTogWygwLCBkYXRlX2Zuc18xLnN0YXJ0T2ZZZWFyKShuZXcgRGF0ZSgpKSwgKDAsIGRhdGVfZm5zXzEuZW5kT2ZEYXkpKG5ldyBEYXRlKCkpXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdMYXN0IDEyIG1vbnRocycsXG4gICAgICAgICAgICAgICAgcmFuZ2U6IFsoMCwgZGF0ZV9mbnNfMS5zdGFydE9mTW9udGgpKCgwLCBkYXRlX2Zuc18xLnN1Yk1vbnRocykobmV3IERhdGUoKSwgMTIpKSwgKDAsIGRhdGVfZm5zXzEuZW5kT2ZEYXkpKG5ldyBEYXRlKCkpXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdBbGwgdGltZScsXG4gICAgICAgICAgICAgICAgcmFuZ2U6IFtuZXcgRGF0ZShpbml0aWFsRGF0ZS52YWx1ZSksICgwLCBkYXRlX2Zuc18xLmVuZE9mRGF5KShuZXcgRGF0ZSgpKV0sXG4gICAgICAgICAgICB9LFxuICAgICAgICBdOyB9KTtcbiAgICAgICAgdmFyIGNvbnZlcnREYXRlID0gZnVuY3Rpb24gKGRhdGUpIHtcbiAgICAgICAgICAgIHZhciBkYXRlT2JqID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgICAgICAgICB2YXIgeWVhciA9IGRhdGVPYmouZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgICAgIHZhciBtb250aCA9IFN0cmluZyhkYXRlT2JqLmdldE1vbnRoKCkgKyAxKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgICAgICAgICAgdmFyIGRheSA9IFN0cmluZyhkYXRlT2JqLmdldERhdGUoKSkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICAgICAgICAgIHJldHVybiBcIlwiLmNvbmNhdCh5ZWFyLCBcIi1cIikuY29uY2F0KG1vbnRoLCBcIi1cIikuY29uY2F0KGRheSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBvcGVuQ2FsZW5kYXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoZGF0ZXBpY2tlci52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGRhdGVwaWNrZXIudmFsdWUub3Blbk1lbnUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNsb3NlQ2FsZW5kYXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoZGF0ZXBpY2tlci52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJlbW92ZUV2ZW50c09mQ2FsZW5kYXIoKTtcbiAgICAgICAgICAgICAgICBkYXRlcGlja2VyLnZhbHVlLmNsb3NlTWVudSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgc2VsZWN0RGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChkYXRlcGlja2VyLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgZGF0ZXBpY2tlci52YWx1ZS5zZWxlY3REYXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBmb3JtYXQgPSBmdW5jdGlvbiAoZGF0ZXMpIHtcbiAgICAgICAgICAgIHZhciB0ZW1wQXJyYXkgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICB0ZW1wQXJyYXlbaV0gPSBkYXRlc1tpXS50b0xvY2FsZURhdGVTdHJpbmcoJ2VuLVVTJywge1xuICAgICAgICAgICAgICAgICAgICBtb250aDogJ3Nob3J0JyxcbiAgICAgICAgICAgICAgICAgICAgZGF5OiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgICAgIHllYXI6ICdudW1lcmljJyxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0ZW1wQXJyYXkuam9pbignIC0gJyk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjbG9zZURhdGVEcm9wZG93biA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNob3dSYW5nZURyb3Bkb3duLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc2hvd1JhbmdlRHJvcGRvd24udmFsdWU7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY2xvc2VEYXRlRHJvcGRvd24pO1xuICAgICAgICAgICAgICAgIChfYSA9IGRhdGVSYW5nZU1haW4udmFsdWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGtlZXBNb2RlbE9wZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjbG9zZURhdGVEcm9wZG93bik7XG4gICAgICAgICAgICAgICAgKF9iID0gZGF0ZVJhbmdlTWFpbi52YWx1ZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywga2VlcE1vZGVsT3Blbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIga2VlcE1vZGVsT3BlbiA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gW3NlbGVjdGVkRGF0ZV07IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBzdGFydERhdGUgPSBzZWxlY3RlZERhdGUudmFsdWUgJiYgc2VsZWN0ZWREYXRlLnZhbHVlWzBdXG4gICAgICAgICAgICAgICAgPyBjb252ZXJ0RGF0ZShzZWxlY3RlZERhdGUudmFsdWVbMF0pXG4gICAgICAgICAgICAgICAgOiBmYWxzZTtcbiAgICAgICAgICAgIHZhciBlbmREYXRlID0gc2VsZWN0ZWREYXRlLnZhbHVlICYmIHNlbGVjdGVkRGF0ZS52YWx1ZVsxXVxuICAgICAgICAgICAgICAgID8gY29udmVydERhdGUoc2VsZWN0ZWREYXRlLnZhbHVlWzFdKVxuICAgICAgICAgICAgICAgIDogZmFsc2U7XG4gICAgICAgICAgICBpZiAoc3RhcnREYXRlICYmIGVuZERhdGUpIHtcbiAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZFByZXNlbnREYXlUZXh0KCk7XG4gICAgICAgICAgICAgICAgdHJpZ2dlclNldERhdGVSYW5nZShzdGFydERhdGUsIGVuZERhdGUsIGZpeGVkLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIFtkYXRlVHlwZV07IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHRyaWdnZXJTZXREYXRlVHlwZShkYXRlVHlwZUtleS52YWx1ZSk7XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBbcHJvcHMuY3VycmVudFZpZXddOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzZWxlY3RlZERhdGUudmFsdWVbMF0gPSAnJztcbiAgICAgICAgICAgIHNlbGVjdGVkRGF0ZS52YWx1ZVsxXSA9ICcnO1xuICAgICAgICAgICAgZml4ZWQudmFsdWUgPSAnQWxsIHRpbWUnO1xuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgIHZhciB0cmlnZ2VyU2V0RGF0ZVJhbmdlID0gZnVuY3Rpb24gKHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgZmlsdGVyZWREYXRlVHlwZSkge1xuICAgICAgICAgICAgaWYgKGZpbHRlcmVkRGF0ZVR5cGUgPT09IHZvaWQgMCkgeyBmaWx0ZXJlZERhdGVUeXBlID0gJyc7IH1cbiAgICAgICAgICAgIGVtaXQoJ3RyaWdnZXJTZXREYXRlUmFuZ2UnLCBzdGFydERhdGUsIGVuZERhdGUsIGZpbHRlcmVkRGF0ZVR5cGUpO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHByb3BzLmRhdGVOYW1lOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGRhdGVUeXBlTmFtZS52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBmaXhlZC52YWx1ZTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHN0YXJ0RGF0ZSA9IHNlbGVjdGVkRGF0ZS52YWx1ZSAmJiBzZWxlY3RlZERhdGUudmFsdWVbMF1cbiAgICAgICAgICAgICAgICA/IGNvbnZlcnREYXRlKHNlbGVjdGVkRGF0ZS52YWx1ZVswXSlcbiAgICAgICAgICAgICAgICA6IGZhbHNlO1xuICAgICAgICAgICAgdmFyIGVuZERhdGUgPSBzZWxlY3RlZERhdGUudmFsdWUgJiYgc2VsZWN0ZWREYXRlLnZhbHVlWzFdXG4gICAgICAgICAgICAgICAgPyBjb252ZXJ0RGF0ZShzZWxlY3RlZERhdGUudmFsdWVbMV0pXG4gICAgICAgICAgICAgICAgOiBmYWxzZTtcbiAgICAgICAgICAgIGlmIChzdGFydERhdGUgJiYgZW5kRGF0ZSkge1xuICAgICAgICAgICAgICAgIHRyaWdnZXJTZXREYXRlUmFuZ2Uoc3RhcnREYXRlLCBlbmREYXRlLCBmaXhlZC52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgdHJpZ2dlclNldERhdGVUeXBlID0gZnVuY3Rpb24gKGV2ZW50VHlwZSkge1xuICAgICAgICAgICAgZW1pdCgndHJpZ2dlclNldERhdGVUeXBlJywgZXZlbnRUeXBlKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHNldFNlbGVjdGVkUHJlc2VudERheVRleHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgZml4ZWQudmFsdWUgPVxuICAgICAgICAgICAgICAgIChfYiA9IChfYSA9IHByZXNldFJhbmdlcy52YWx1ZVtzZWxlY3RlZFByZXNlbnRJbmRleC52YWx1ZV0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sYWJlbCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogJ0N1c3RvbSc7XG4gICAgICAgICAgICAvLyBzZWxlY3RlZFByZXNlbnRJbmRleC52YWx1ZSA9IDk5O1xuICAgICAgICAgICAgaWYgKGRhdGVUeXBlTmFtZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGZpeGVkLnZhbHVlID0gZGF0ZVR5cGVOYW1lLnZhbHVlO1xuICAgICAgICAgICAgICAgIGRhdGVUeXBlTmFtZS52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgY3VzdG9tUG9zaXRpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lO1xuICAgICAgICAgICAgdmFyIGxlZnRQb3NpdGlvbiA9IDA7XG4gICAgICAgICAgICBpZiAoZGF0ZVJhbmdlTWFpbi52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGxlZnRQb3NpdGlvbiA9XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5pbm5lcldpZHRoIC0gKChfYiA9IChfYSA9IGRhdGVSYW5nZU1haW4udmFsdWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnJpZ2h0KSA+XG4gICAgICAgICAgICAgICAgICAgICAgICAxNTBcbiAgICAgICAgICAgICAgICAgICAgICAgID8gTnVtYmVyKChfYyA9IGRhdGVSYW5nZU1haW4udmFsdWUpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5yaWdodCkgLSAzMDBcbiAgICAgICAgICAgICAgICAgICAgICAgIDogTnVtYmVyKChfZCA9IGRhdGVSYW5nZU1haW4udmFsdWUpID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5yaWdodCkgLSA0MjA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHRvcDogTnVtYmVyKChfZSA9IGRhdGVSYW5nZU1haW4udmFsdWUpID09PSBudWxsIHx8IF9lID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b20pICsgMjAsXG4gICAgICAgICAgICAgICAgbGVmdDogbGVmdFBvc2l0aW9uLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHNldERhdGVSYW5nZVR5cGVJbkRyb3Bkb3duID0gZnVuY3Rpb24gKHZhbHVlLCBrZXkpIHtcbiAgICAgICAgICAgIHNob3dSYW5nZURyb3Bkb3duLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICBkYXRlVHlwZS52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgZGF0ZVR5cGVLZXkudmFsdWUgPSBrZXk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHByb3BzOiBwcm9wcywgc2VsZWN0ZWRQcmVzZW50SW5kZXg6IHNlbGVjdGVkUHJlc2VudEluZGV4LCBkYXRlUmFuZ2VNYWluOiBkYXRlUmFuZ2VNYWluLCBkYXRlVHlwZTogZGF0ZVR5cGUsIGRhdGVEcm9wZG93bjogZGF0ZURyb3Bkb3duLCBkYXRlVHlwZU5hbWU6IGRhdGVUeXBlTmFtZSwgZGF0ZVR5cGVLZXk6IGRhdGVUeXBlS2V5LCBzaG93UmFuZ2VEcm9wZG93bjogc2hvd1JhbmdlRHJvcGRvd24sIGVtaXQ6IGVtaXQsIGluaXRpYWxEYXRlOiBpbml0aWFsRGF0ZSwgZml4ZWQ6IGZpeGVkLCB0b2RheURhdGU6IHRvZGF5RGF0ZSwgc2VsZWN0ZWREYXRlOiBzZWxlY3RlZERhdGUsIGRhdGVwaWNrZXI6IGRhdGVwaWNrZXIsIGhhbmRsZVByZXNlbnRSYW5nZUl0ZW1DbGljazogaGFuZGxlUHJlc2VudFJhbmdlSXRlbUNsaWNrLCBoYW5kbGVDYWxlbmRhckl0ZW1DbGljazogaGFuZGxlQ2FsZW5kYXJJdGVtQ2xpY2ssIGFkZEV2ZW50c0ZvckNhbGVuZGFyOiBhZGRFdmVudHNGb3JDYWxlbmRhciwgcmVtb3ZlRXZlbnRzT2ZDYWxlbmRhcjogcmVtb3ZlRXZlbnRzT2ZDYWxlbmRhciwgdG9nZ2xlU2hvd1JhbmdlRHJvcGRvd246IHRvZ2dsZVNob3dSYW5nZURyb3Bkb3duLCByZXNldERhdGU6IHJlc2V0RGF0ZSwgcHJlc2V0UmFuZ2VzOiBwcmVzZXRSYW5nZXMsIGNvbnZlcnREYXRlOiBjb252ZXJ0RGF0ZSwgb3BlbkNhbGVuZGFyOiBvcGVuQ2FsZW5kYXIsIGNsb3NlQ2FsZW5kYXI6IGNsb3NlQ2FsZW5kYXIsIHNlbGVjdERhdGU6IHNlbGVjdERhdGUsIGZvcm1hdDogZm9ybWF0LCBjbG9zZURhdGVEcm9wZG93bjogY2xvc2VEYXRlRHJvcGRvd24sIGtlZXBNb2RlbE9wZW46IGtlZXBNb2RlbE9wZW4sIHRyaWdnZXJTZXREYXRlUmFuZ2U6IHRyaWdnZXJTZXREYXRlUmFuZ2UsIHRyaWdnZXJTZXREYXRlVHlwZTogdHJpZ2dlclNldERhdGVUeXBlLCBzZXRTZWxlY3RlZFByZXNlbnREYXlUZXh0OiBzZXRTZWxlY3RlZFByZXNlbnREYXlUZXh0LCBjdXN0b21Qb3NpdGlvbjogY3VzdG9tUG9zaXRpb24sIHNldERhdGVSYW5nZVR5cGVJbkRyb3Bkb3duOiBzZXREYXRlUmFuZ2VUeXBlSW5Ecm9wZG93biwgVnVlRGF0ZVBpY2tlcjogdnVlX2RhdGVwaWNrZXJfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnRGVzY3JpcHRpb25Gb3JtJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge30sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHJldHVybiB7IGxhbmd1YWdlOiBsYW5ndWFnZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8zID0gcmVxdWlyZShcIkBoZWFkbGVzc3VpL3Z1ZVwiKTtcbnZhciBMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uL2NvbXBvbmVudHMvTG9hZGVyLnZ1ZVwiKSk7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0Vycm9yTWVzc2FnZScsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgaXNFbXB0eToge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIHNob3cgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBoYXNFcnJvcnMgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBlcnJvckNvdW50ID0gKDAsIHZ1ZV8yLnJlZikoMCk7XG4gICAgICAgIHZhciB0b2FzdERhdGEgPSAoMCwgdnVlXzIuaW5qZWN0KSgndG9hc3REYXRhJyk7XG4gICAgICAgIHZhciBlcnJvckRhdGEgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIGFjY291bnRfdmVyaWZpZWQ6IGZhbHNlLFxuICAgICAgICAgICAgcHVibGlzaGVyX2FjdGl2ZTogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0X3NldHRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgcHVibGlzaGVyX3NldHRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgdG9rZW5fc3RhdHVzOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBpc0xvYWRlclZpc2libGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgIGZ1bmN0aW9uIHJlc2VuZFZlcmlmaWNhdGlvbkVtYWlsKCkge1xuICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wb3N0KCcvdXNlci92ZXJpZmljYXRpb24vZW1haWwnKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSByZXMuZGF0YS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gcmVzLmRhdGEuc3VjY2VzcztcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IGVycm9yLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAuYWxsKFtcbiAgICAgICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldCgnL3NldHRpbmcvc3RhdHVzJyksXG4gICAgICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoJy91c2VyL3ZlcmlmaWNhdGlvbi9zdGF0dXMnKSxcbiAgICAgICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldCgnL29yZ2FuaXNhdGlvbi9zdGF0dXMnKSxcbiAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAudGhlbihheGlvc18xLmRlZmF1bHQuc3ByZWFkKGZ1bmN0aW9uIChzZXR0aW5nX3JlcywgdXNlcl9yZXMsIG9yZ19yZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHNldHRpbmdfcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIHZhciB1c2VyX3Jlc3BvbnNlID0gdXNlcl9yZXMuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG9yZ19yZXNwb25zZSA9IG9yZ19yZXMuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JEYXRhLmRlZmF1bHRfc2V0dGluZyA9IChfYSA9IHJlc3BvbnNlID09PSBudWxsIHx8IHJlc3BvbnNlID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXNwb25zZS5kYXRhKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGVmYXVsdF9zdGF0dXM7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yRGF0YS5wdWJsaXNoZXJfc2V0dGluZyA9IChfYiA9IHJlc3BvbnNlID09PSBudWxsIHx8IHJlc3BvbnNlID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXNwb25zZS5kYXRhKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IucHVibGlzaGVyX3N0YXR1cztcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JEYXRhLnRva2VuX3N0YXR1cyA9IChfYyA9IHJlc3BvbnNlID09PSBudWxsIHx8IHJlc3BvbnNlID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXNwb25zZS5kYXRhKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MudG9rZW5fc3RhdHVzO1xuICAgICAgICAgICAgICAgICAgICBlcnJvckRhdGEuYWNjb3VudF92ZXJpZmllZCA9IHVzZXJfcmVzcG9uc2UuZGF0YS5hY2NvdW50X3ZlcmlmaWVkO1xuICAgICAgICAgICAgICAgICAgICBlcnJvckRhdGEucHVibGlzaGVyX2FjdGl2ZSA9IG9yZ19yZXNwb25zZS5kYXRhLnB1Ymxpc2hlcl9hY3RpdmU7XG4gICAgICAgICAgICAgICAgICAgIHZhciBncm91cGVkRXJyb3IgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnZGVmYXVsdF9zZXR0aW5nJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdwdWJsaXNoZXJfc2V0dGluZycsXG4gICAgICAgICAgICAgICAgICAgICAgICAndG9rZW5fc3RhdHVzJyxcbiAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZXJyb3IgaW4gZXJyb3JEYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVycm9yRGF0YVtlcnJvcl0gJiYgZ3JvdXBlZEVycm9yLmluZGV4T2YoZXJyb3IpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yQ291bnQudmFsdWUgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoIShlcnJvckRhdGEucHVibGlzaGVyX3NldHRpbmcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yRGF0YS50b2tlbl9zdGF0dXMgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yRGF0YS5kZWZhdWx0X3NldHRpbmcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvckNvdW50LnZhbHVlICs9IDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKE9iamVjdC52YWx1ZXMoZXJyb3JEYXRhKS5pbmRleE9mKGZhbHNlKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNFcnJvcnMudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfSk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGxhbmd1YWdlOiBsYW5ndWFnZSwgc2hvdzogc2hvdywgaGFzRXJyb3JzOiBoYXNFcnJvcnMsIGVycm9yQ291bnQ6IGVycm9yQ291bnQsIHRvYXN0RGF0YTogdG9hc3REYXRhLCBlcnJvckRhdGE6IGVycm9yRGF0YSwgaXNMb2FkZXJWaXNpYmxlOiBpc0xvYWRlclZpc2libGUsIHJlc2VuZFZlcmlmaWNhdGlvbkVtYWlsOiByZXNlbmRWZXJpZmljYXRpb25FbWFpbCwgVHJhbnNpdGlvblJvb3Q6IHZ1ZV8zLlRyYW5zaXRpb25Sb290LCBMb2FkZXI6IExvYWRlcl92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnRXJyb3JQb3BVcCcsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgbWVzc2FnZToge1xuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICB0eXBlOiBBcnJheSB8fCBTdHJpbmcsXG4gICAgICAgIH0sXG4gICAgICAgIHRpdGxlOiB7IHR5cGU6IFN0cmluZywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIGVtaXRzOiBbJ2Nsb3NlLXBvcHVwJ10sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlLCBlbWl0ID0gX2EuZW1pdDtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgY2xvc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBlbWl0KCdjbG9zZS1wb3B1cCcsICdjbG9zZWQnKTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIub25Vbm1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGxhbmd1YWdlOiBsYW5ndWFnZSwgZW1pdDogZW1pdCwgcHJvcHM6IHByb3BzLCBjbG9zZTogY2xvc2UgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIHByb3BzOiB7XG4gICAgICAgIG5hbWU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICBob3ZlclRleHQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB3aWR0aDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJ3ctNjAnLFxuICAgICAgICB9LFxuICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIGxpbms6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICBpY29uU2l6ZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIHNob3dJYXRpUmVmZXJlbmNlOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgcmV0dXJuIHsgbGFuZ3VhZ2U6IGxhbmd1YWdlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdMb2FkZXJDbXAnLFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdNdWx0aVNlbGVjdFdpdGhTZWFyY2gnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGxpc3RJdGVtczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGhlYWRlcjoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBlbWl0czogWydjaGFuZ2VTZWxlY3RlZFB1Ymxpc2hlcicsICdjbG9zZSddLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZSwgZW1pdCA9IF9hLmVtaXQ7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgdGVtcExpc3RJdGVtcyA9ICgwLCB2dWVfMi5yZWYpKFtdKTtcbiAgICAgICAgdmFyIHB1Ymxpc2hlclR5cGVNdWx0aXNlbGVjdCA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMocHJvcHMubGlzdEl0ZW1zKTtcbiAgICAgICAgdmFyIHNlYXJjaElucHV0ID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICB2YXIgY2hlY2tlZEJveGVzID0gKDAsIHZ1ZV8yLnJlZikoW10pO1xuICAgICAgICB2YXIgY2hhbmdlU2VsZWN0ZWRQdWJsaXNoZXIgPSBmdW5jdGlvbiAoc2VsZWN0ZWRQdWJsaXNoZXJUeXBlKSB7XG4gICAgICAgICAgICBlbWl0KCdjaGFuZ2VTZWxlY3RlZFB1Ymxpc2hlcicsIHNlbGVjdGVkUHVibGlzaGVyVHlwZSk7XG4gICAgICAgIH07XG4gICAgICAgIGZvcm1hdFB1Ymxpc2hlclR5cGUoKTtcbiAgICAgICAgZnVuY3Rpb24gZm9ybWF0UHVibGlzaGVyVHlwZSgpIHtcbiAgICAgICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMocHJvcHMubGlzdEl0ZW1zKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHRlbXBMaXN0SXRlbXMudmFsdWUucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGtleToga2V5c1tpXSxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHByb3BzLmxpc3RJdGVtc1trZXlzW2ldXSxcbiAgICAgICAgICAgICAgICAgICAgc2hvdzogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBwdWJsaXNoZXJUeXBlTXVsdGlzZWxlY3QudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBrZWVwUHVibGlzaGVyTW9kZWxPcGVuKTtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi5vbkJlZm9yZVVubW91bnQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHB1Ymxpc2hlclR5cGVNdWx0aXNlbGVjdC52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGtlZXBQdWJsaXNoZXJNb2RlbE9wZW4pO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHNob3dOb0RhdGFDb21wb25lbnQgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBjb3VudCA9IDA7XG4gICAgICAgICAgICB0ZW1wTGlzdEl0ZW1zLnZhbHVlLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLnNob3cpIHtcbiAgICAgICAgICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiAhY291bnQ7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgdXBkYXRlQXJyYXlCeVNlYXJjaCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBzZWFyY2hTdHJpbmcgPSBzZWFyY2hJbnB1dC52YWx1ZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSB0ZW1wTGlzdEl0ZW1zLnZhbHVlW2ldO1xuICAgICAgICAgICAgICAgIHRlbXBMaXN0SXRlbXMudmFsdWVbaV0uc2hvdyA9IGl0ZW0ubGFiZWxcbiAgICAgICAgICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgLmluY2x1ZGVzKHNlYXJjaFN0cmluZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBrZWVwUHVibGlzaGVyTW9kZWxPcGVuID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGFwcGx5RmlsdGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZW1pdCgnY2xvc2UnKTtcbiAgICAgICAgICAgIGNoYW5nZVNlbGVjdGVkUHVibGlzaGVyKGNoZWNrZWRCb3hlcy52YWx1ZSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHByb3BzOiBwcm9wcywgdGVtcExpc3RJdGVtczogdGVtcExpc3RJdGVtcywgcHVibGlzaGVyVHlwZU11bHRpc2VsZWN0OiBwdWJsaXNoZXJUeXBlTXVsdGlzZWxlY3QsIGVtaXQ6IGVtaXQsIGtleXM6IGtleXMsIHNlYXJjaElucHV0OiBzZWFyY2hJbnB1dCwgY2hlY2tlZEJveGVzOiBjaGVja2VkQm94ZXMsIGNoYW5nZVNlbGVjdGVkUHVibGlzaGVyOiBjaGFuZ2VTZWxlY3RlZFB1Ymxpc2hlciwgZm9ybWF0UHVibGlzaGVyVHlwZTogZm9ybWF0UHVibGlzaGVyVHlwZSwgc2hvd05vRGF0YUNvbXBvbmVudDogc2hvd05vRGF0YUNvbXBvbmVudCwgdXBkYXRlQXJyYXlCeVNlYXJjaDogdXBkYXRlQXJyYXlCeVNlYXJjaCwga2VlcFB1Ymxpc2hlck1vZGVsT3Blbjoga2VlcFB1Ymxpc2hlck1vZGVsT3BlbiwgYXBwbHlGaWx0ZXI6IGFwcGx5RmlsdGVyLCBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBwcm9wczoge1xuICAgICAgICBuYW1lOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdGV4dDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGJ0blRleHQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBidG5MaW5rOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByb3BzOiBwcm9wcyxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1BvcHVwTW9kYWwnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIG1vZGFsQWN0aXZlOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIG5vUGFkZGluZzoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICB3aWR0aDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJzgwOScsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBlbWl0czogWydjbG9zZScsICdyZXNldCddLFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBlbWl0ID0gX2EuZW1pdDtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBwcm9wcy5tb2RhbEFjdGl2ZTsgfSwgZnVuY3Rpb24gKG1vZGFsQWN0aXZlKSB7XG4gICAgICAgICAgICBpZiAobW9kYWxBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBjbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgICAgIGVtaXQoJ2Nsb3NlJyk7XG4gICAgICAgICAgICBlbWl0KCdyZXNldCcpO1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4geyBjbG9zZTogY2xvc2UgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlM19yYWRpYWxfcHJvZ3Jlc3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwidnVlMy1yYWRpYWwtcHJvZ3Jlc3NcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgUmFkaWFsUHJvZ3Jlc3NCYXI6IHZ1ZTNfcmFkaWFsX3Byb2dyZXNzXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIHBlcmNlbnQ6IHtcbiAgICAgICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IDAsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBjb21wbGV0ZWRQZXJjZW50ID0gKDAsIHZ1ZV8xLnJlZikocHJvcHMucGVyY2VudCk7XG4gICAgICAgIHZhciB0b3RhbFBlcmNlbnQgPSAoMCwgdnVlXzEucmVmKSgxMDApO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29tcGxldGVkUGVyY2VudDogY29tcGxldGVkUGVyY2VudCxcbiAgICAgICAgICAgIHRvdGFsUGVyY2VudDogdG90YWxQZXJjZW50LFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBTaGltbWVyTG9hZGluZ192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9TaGltbWVyTG9hZGluZy52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1RhYmxlTG9hZGVyQ29tcG9uZW50JyxcbiAgICBwcm9wczoge1xuICAgICAgICByb3dDb3VudDogeyB0eXBlOiBOdW1iZXIsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIGNvbENvdW50OiB7IHR5cGU6IE51bWJlciwgcmVxdWlyZWQ6IGZhbHNlLCBkZWZhdWx0OiAxIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBTaGltbWVyTG9hZGluZzogU2hpbW1lckxvYWRpbmdfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1BhZ2luYXRpb25Db21wb25lbnQnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBlbWl0czogWydmZXRjaEFjdGl2aXRpZXMnXSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzLCBfYSkge1xuICAgICAgICB2YXIgZW1pdCA9IF9hLmVtaXQ7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgYWN0aXZlX3BhZ2UgPSAoMCwgdnVlXzEucmVmKSgxKTtcbiAgICAgICAgdmFyIGxhc3RfcGFnZWxpc3QgPSAoMCwgdnVlXzEucmVmKSgpO1xuICAgICAgICB2YXIgbWlkX3BhZ2VsaXN0ID0gKDAsIHZ1ZV8xLnJlZikoKTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBwcm9wcy5yZXNldDsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBhY3RpdmVfcGFnZS52YWx1ZSA9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGFjdGl2ZV9wYWdlLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBlbWl0KCdmZXRjaEFjdGl2aXRpZXMnLCBhY3RpdmVfcGFnZS52YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgbGFzdHBhZ2VzID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gbGFzdF9wYWdlbGlzdC52YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBtaWRwYWdlcyA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIG1pZF9wYWdlbGlzdC52YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZUFjdGl2ZVBhZ2UocGFnZSkge1xuICAgICAgICAgICAgYWN0aXZlX3BhZ2UudmFsdWUgPSBwYWdlO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGNoYW5nZVBhZ2UocGFnZU51bSkge1xuICAgICAgICAgICAgYWN0aXZlX3BhZ2UudmFsdWUgPSBwYWdlTnVtO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIG5leHRQYWdlKCkge1xuICAgICAgICAgICAgYWN0aXZlX3BhZ2UudmFsdWUgPVxuICAgICAgICAgICAgICAgIGFjdGl2ZV9wYWdlLnZhbHVlID09PSBwcm9wcy5kYXRhLmxhc3RfcGFnZSA/IDEgOiBhY3RpdmVfcGFnZS52YWx1ZSArIDE7XG4gICAgICAgIH1cbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBhY3RpdmVfcGFnZS52YWx1ZTsgfSwgZnVuY3Rpb24gKGN1cnJlbnRQYWdlKSB7XG4gICAgICAgICAgICBsYXN0X3BhZ2VsaXN0LnZhbHVlID0gQXJyYXkuZnJvbShBcnJheShwcm9wcy5kYXRhLmxhc3RfcGFnZSksIGZ1bmN0aW9uIChfLCBpbmRleCkgeyByZXR1cm4gaW5kZXggKyAxOyB9KTtcbiAgICAgICAgICAgIGxhc3RfcGFnZWxpc3QudmFsdWUgPSBsYXN0X3BhZ2VsaXN0LnZhbHVlLmZpbHRlcihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKHZhbHVlID4gcHJvcHMuZGF0YS5sYXN0X3BhZ2UgLSA1ICYmIHByb3BzLmRhdGEubGFzdF9wYWdlICE9IHZhbHVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgbWlkX3BhZ2VsaXN0LnZhbHVlID0gQXJyYXkuZnJvbShBcnJheShjdXJyZW50UGFnZSArIDIpLCBmdW5jdGlvbiAoXywgaW5kZXgpIHsgcmV0dXJuIGluZGV4ICsgMTsgfSk7XG4gICAgICAgICAgICBtaWRfcGFnZWxpc3QudmFsdWUgPSBtaWRfcGFnZWxpc3QudmFsdWUuZmlsdGVyKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSA+IGN1cnJlbnRQYWdlIC0gMztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgZnVuY3Rpb24gcHJldmlvdXNQYWdlKCkge1xuICAgICAgICAgICAgYWN0aXZlX3BhZ2UudmFsdWUgPVxuICAgICAgICAgICAgICAgIGFjdGl2ZV9wYWdlLnZhbHVlID09PSAxID8gcHJvcHMuZGF0YS5sYXN0X3BhZ2UgOiBhY3RpdmVfcGFnZS52YWx1ZSAtIDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByb3BzOiBwcm9wcyxcbiAgICAgICAgICAgIGFjdGl2ZV9wYWdlOiBhY3RpdmVfcGFnZSxcbiAgICAgICAgICAgIHVwZGF0ZUFjdGl2ZVBhZ2U6IHVwZGF0ZUFjdGl2ZVBhZ2UsXG4gICAgICAgICAgICBuZXh0UGFnZTogbmV4dFBhZ2UsXG4gICAgICAgICAgICBwcmV2aW91c1BhZ2U6IHByZXZpb3VzUGFnZSxcbiAgICAgICAgICAgIGNoYW5nZVBhZ2U6IGNoYW5nZVBhZ2UsXG4gICAgICAgICAgICBsYXN0cGFnZXM6IGxhc3RwYWdlcyxcbiAgICAgICAgICAgIG1pZHBhZ2VzOiBtaWRwYWdlcyxcbiAgICAgICAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1RvYXN0TWVzc2FnZScsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgbWVzc2FnZTogeyB0eXBlOiBTdHJpbmcsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHR5cGU6IHsgdHlwZTogQm9vbGVhbiwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBjbGFzc05hbWUgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIGNsYXNzTmFtZS52YWx1ZSA9XG4gICAgICAgICAgICBwcm9wcy50eXBlID09PSB0cnVlXG4gICAgICAgICAgICAgICAgPyAncm91bmRlZC1sZyBiZy1taW50IGJvcmRlciBib3JkZXItc3ByaW5nLTUwIHB5LTMgcHgtNSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0xIHRleHQtc20gbGVhZGluZy1ub3JtYWwgdGV4dC1uLTUwJ1xuICAgICAgICAgICAgICAgIDogJ3JvdW5kZWQtbGcgYmctY3JpbXNvbi0xMCBib3JkZXIgYm9yZGVyLWNyaW1zb24tMjAgcHktMyBweC01IGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTEgdGV4dC1zbSBsZWFkaW5nLW5vcm1hbCB0ZXh0LW4tNTAnO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBwcm9wczogcHJvcHMsIGNsYXNzTmFtZTogY2xhc3NOYW1lIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnWGxzTGlzdEVycm9yJyxcbiAgICBwcm9wczoge1xuICAgICAgICAvLyBOdW1iZXIgd2l0aCBhIGRlZmF1bHQgdmFsdWVcbiAgICAgICAgaW1wb3J0RGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHdpZHRoOiB7IHR5cGU6IE51bWJlciwgcmVxdWlyZWQ6IGZhbHNlLCBkZWZhdWx0OiAwIH0sXG4gICAgICAgIGFjdGl2aXR5OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgaW5kZXg6IHtcbiAgICAgICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBzdGF0dXM6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIHNob3dFcnJvcnMgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93Q3JpdGljYWwgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBjcml0aWNhbFRvZ2dsZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNob3dFcnJvciA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGVycm9yVG9nZ2xlID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgd2FybmluZ1RvZ2dsZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNob3dXYXJuaW5nID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgZXJyb3JMZW5ndGggPSBmdW5jdGlvbiAoY3VycmVudEVycm9yKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgdmFyIGNvdW50ID0gMDtcbiAgICAgICAgICAgICgoX2EgPSBwcm9wcy5hY3Rpdml0eSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmVycm9yc1tjdXJyZW50RXJyb3JdKSAmJlxuICAgICAgICAgICAgICAgICgoX2IgPSBPYmplY3QudmFsdWVzKHByb3BzLmFjdGl2aXR5WydlcnJvcnMnXVtjdXJyZW50RXJyb3JdKSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICBjb3VudCArPSBPYmplY3Qua2V5cyhpdGVtKS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgcmV0dXJuIGNvdW50O1xuICAgICAgICB9O1xuICAgICAgICB2YXIgdGl0bGUgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICAgICAgc3dpdGNoIChwcm9wcy5zdGF0dXNbJ3RlbXBsYXRlJ10pIHtcbiAgICAgICAgICAgICAgICBjYXNlICdhY3Rpdml0eSc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5hY3Rpdml0eS5kYXRhLnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IChfYSA9IHByb3BzLmFjdGl2aXR5LmRhdGEudGl0bGVbMF0ubmFycmF0aXZlKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnVW50aXRsZWQnXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICdVbnRpdGxlZCc7XG4gICAgICAgICAgICAgICAgY2FzZSAncmVzdWx0JzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzLmFjdGl2aXR5LmRhdGEudGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gKF9iID0gcHJvcHMuYWN0aXZpdHkuZGF0YS50aXRsZVswXS5uYXJyYXRpdmVbMF1bJ25hcnJhdGl2ZSddKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAnVW50aXRsZWQnXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICdVbnRpdGxlZCc7XG4gICAgICAgICAgICAgICAgY2FzZSAncGVyaW9kJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgocHJvcHMuYWN0aXZpdHkuZGF0YS5wZXJpb2Rfc3RhcnQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmFjdGl2aXR5LmRhdGEucGVyaW9kX3N0YXJ0WzBdLmRhdGUpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICcgLSAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcy5hY3Rpdml0eS5kYXRhLnBlcmlvZF9lbmQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5hY3Rpdml0eS5kYXRhLnBlcmlvZF9lbmRbMF0uZGF0ZSkpO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2luZGljYXRvcic6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5hY3Rpdml0eS5kYXRhLnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IChfYyA9IHByb3BzLmFjdGl2aXR5LmRhdGEudGl0bGVbMF0ubmFycmF0aXZlWzBdWyduYXJyYXRpdmUnXSkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogJ1VudGl0bGVkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAnVW50aXRsZWQnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnVW50aXRsZWQnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGNvdW50RXJyb3JzID0gZnVuY3Rpb24gKGFjdGl2aXR5SW5kZXgpIHtcbiAgICAgICAgICAgIHZhciBjb3VudCA9IDA7XG4gICAgICAgICAgICBmb3IgKHZhciB0eXBlIGluIHByb3BzLmltcG9ydERhdGFbYWN0aXZpdHlJbmRleF1bJ2Vycm9ycyddKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaW5kZXggaW4gcHJvcHMuaW1wb3J0RGF0YVthY3Rpdml0eUluZGV4XVsnZXJyb3JzJ11bdHlwZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgY291bnQgKz1cbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmltcG9ydERhdGFbYWN0aXZpdHlJbmRleF0gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhwcm9wcy5pbXBvcnREYXRhW2FjdGl2aXR5SW5kZXhdWydlcnJvcnMnXVt0eXBlXVtpbmRleF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvdW50O1xuICAgICAgICB9O1xuICAgICAgICB2YXIgY3JpdGljYWxBY2NvcmRpb25Ub2dnbGUgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgc2hvd0NyaXRpY2FsLnZhbHVlID0gIXNob3dDcml0aWNhbC52YWx1ZTtcbiAgICAgICAgICAgIHZhciBjdXJyZW50VGFyZ2V0ID0gZS5jdXJyZW50VGFyZ2V0O1xuICAgICAgICAgICAgdmFyIHRhcmdldCA9IGN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuY3JpdGljYWwtZHJvcGRvd24tY29udGFpbmVyJyk7XG4gICAgICAgICAgICB2YXIgZWxIZWlnaHQgPSAoX2EgPSB0YXJnZXQgPT09IG51bGwgfHwgdGFyZ2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0YXJnZXQucXVlcnlTZWxlY3RvcignLmNyaXRpY2FsLWRyb3Bkb3duJykpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jbGllbnRIZWlnaHQ7XG4gICAgICAgICAgICBpZiAoY3JpdGljYWxUb2dnbGUudmFsdWUgJiYgdGFyZ2V0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBcIi5jb25jYXQoZWxIZWlnaHQsIFwicHg7XCIpO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiXCI7XG4gICAgICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgICAgICAgICBjcml0aWNhbFRvZ2dsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGFyZ2V0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBcIi5jb25jYXQoZWxIZWlnaHQsIFwicHg7XCIpO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBhdXRvO1wiO1xuICAgICAgICAgICAgICAgIH0sIDYwMCk7XG4gICAgICAgICAgICAgICAgY3JpdGljYWxUb2dnbGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgd2FybmluZ0FjY29yZGlvblRvZ2dsZSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBzaG93V2FybmluZy52YWx1ZSA9ICFzaG93V2FybmluZy52YWx1ZTtcbiAgICAgICAgICAgIHZhciBjdXJyZW50VGFyZ2V0ID0gZS5jdXJyZW50VGFyZ2V0O1xuICAgICAgICAgICAgdmFyIHRhcmdldCA9IGN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudC5xdWVyeVNlbGVjdG9yKCcud2FybmluZy1kcm9wZG93bi1jb250YWluZXInKTtcbiAgICAgICAgICAgIHZhciBlbEhlaWdodCA9IChfYSA9IHRhcmdldCA9PT0gbnVsbCB8fCB0YXJnZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRhcmdldC5xdWVyeVNlbGVjdG9yKCcud2FybmluZy1kcm9wZG93bicpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2xpZW50SGVpZ2h0O1xuICAgICAgICAgICAgaWYgKHdhcm5pbmdUb2dnbGUudmFsdWUgJiYgdGFyZ2V0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBcIi5jb25jYXQoZWxIZWlnaHQsIFwicHg7XCIpO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiXCI7XG4gICAgICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgICAgICAgICB3YXJuaW5nVG9nZ2xlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0YXJnZXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IFwiLmNvbmNhdChlbEhlaWdodCwgXCJweDtcIik7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IGF1dG87XCI7XG4gICAgICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgICAgICAgICB3YXJuaW5nVG9nZ2xlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGVycm9yQWNjb3JkaW9uVG9nZ2xlID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHNob3dFcnJvci52YWx1ZSA9ICFzaG93RXJyb3IudmFsdWU7XG4gICAgICAgICAgICB2YXIgY3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldDtcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSBjdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignLmVycm9yLWRyb3Bkb3duLWNvbnRhaW5lcicpO1xuICAgICAgICAgICAgdmFyIGVsSGVpZ2h0ID0gKF9hID0gdGFyZ2V0ID09PSBudWxsIHx8IHRhcmdldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGFyZ2V0LnF1ZXJ5U2VsZWN0b3IoJy5lcnJvci1kcm9wZG93bicpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2xpZW50SGVpZ2h0O1xuICAgICAgICAgICAgaWYgKGVycm9yVG9nZ2xlLnZhbHVlICYmIHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcIlwiO1xuICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgICAgICAgICAgZXJyb3JUb2dnbGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogYXV0bztcIjtcbiAgICAgICAgICAgICAgICB9LCA2MDApO1xuICAgICAgICAgICAgICAgIGVycm9yVG9nZ2xlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgc2hvd0Vycm9yczogc2hvd0Vycm9ycywgc2hvd0NyaXRpY2FsOiBzaG93Q3JpdGljYWwsIGNyaXRpY2FsVG9nZ2xlOiBjcml0aWNhbFRvZ2dsZSwgc2hvd0Vycm9yOiBzaG93RXJyb3IsIGVycm9yVG9nZ2xlOiBlcnJvclRvZ2dsZSwgd2FybmluZ1RvZ2dsZTogd2FybmluZ1RvZ2dsZSwgc2hvd1dhcm5pbmc6IHNob3dXYXJuaW5nLCBwcm9wczogcHJvcHMsIGVycm9yTGVuZ3RoOiBlcnJvckxlbmd0aCwgdGl0bGU6IHRpdGxlLCBjb3VudEVycm9yczogY291bnRFcnJvcnMsIGNyaXRpY2FsQWNjb3JkaW9uVG9nZ2xlOiBjcml0aWNhbEFjY29yZGlvblRvZ2dsZSwgd2FybmluZ0FjY29yZGlvblRvZ2dsZTogd2FybmluZ0FjY29yZGlvblRvZ2dsZSwgZXJyb3JBY2NvcmRpb25Ub2dnbGU6IGVycm9yQWNjb3JkaW9uVG9nZ2xlIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgc3Bpbm5lckxvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9zcGlubmVyTG9hZGVyLnZ1ZVwiKSk7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1hsc0xvYWRlcicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgYWN0aXZpdHlOYW1lOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGVkOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIHRvdGFsQ291bnQ6IHtcbiAgICAgICAgICAgIHR5cGU6IE51bWJlciB8fCBudWxsLFxuICAgICAgICAgICAgZGVmYXVsdDogMCxcbiAgICAgICAgfSxcbiAgICAgICAgcHJvY2Vzc2VkQ291bnQ6IHtcbiAgICAgICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgICAgIGRlZmF1bHQ6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHhsc0ZhaWxlZDoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgZW1pdHM6IFsnY2xvc2UnXSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgY3VycmVudEFjdGl2aXR5ID0gKDAsIHZ1ZV8yLnJlZikobnVsbCk7XG4gICAgICAgIHZhciBtYXhpbWl6ZSA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBzaG93TWluaW1pemVkTW9kZWwgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBtYXBBY3Rpdml0eU5hbWUgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICAgICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnYWN0aXZpdHknOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ0Jhc2ljIEFjdGl2aXR5IEVsZW1lbnRzJztcbiAgICAgICAgICAgICAgICBjYXNlICdwZXJpb2QnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1BlcmlvZCc7XG4gICAgICAgICAgICAgICAgY2FzZSAnaW5kaWNhdG9yJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdJbmRpY2F0b3JzIGV4Y2VwdCBQZXJpb2QnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3Jlc3VsdCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnUmVzdWx0IGV4Y2VwdCBJbmRpY2F0b3JzIGFuZCBQZXJpb2QnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuYW1lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgcmV0cnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZGVsZXRlKFwiL2ltcG9ydC94bHNcIik7XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvaW1wb3J0L3hscyc7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdtYXhpbWl6ZScpID09PSAnZmFsc2UnXG4gICAgICAgICAgICAgICAgPyAobWF4aW1pemUudmFsdWUgPSBmYWxzZSlcbiAgICAgICAgICAgICAgICA6IChtYXhpbWl6ZS52YWx1ZSA9IHRydWUpO1xuICAgICAgICAgICAgY3VycmVudEFjdGl2aXR5LnZhbHVlID0gbWFwQWN0aXZpdHlOYW1lKHByb3BzLmFjdGl2aXR5TmFtZSk7XG4gICAgICAgICAgICB2YXIgY2hlY2tTdXBwb3J0QnV0dG9uID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBzdXBwb3J0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2xhdW5jaGVyJyk7XG4gICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRCdXR0b24gIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgc3VwcG9ydEJ1dHRvbi5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRleSgtNTBweCknO1xuICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrU3VwcG9ydEJ1dHRvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgMTApO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBtYXhpbWl6ZS52YWx1ZTsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHJldHVybiAoc2hvd01pbmltaXplZE1vZGVsLnZhbHVlID0gdHJ1ZSk7IH0sIDI2MCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzaG93TWluaW1pemVkTW9kZWwudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdtYXhpbWl6ZScsIHZhbHVlLnRvU3RyaW5nKCkpO1xuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgICgwLCB2dWVfMi5vblVubW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ21heGltaXplJywgJycpO1xuICAgICAgICAgICAgdmFyIHN1cHBvcnRCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbGF1bmNoZXInKTtcbiAgICAgICAgICAgIGlmIChzdXBwb3J0QnV0dG9uICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgc3VwcG9ydEJ1dHRvbi5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRleSgwcHgpJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBwZXJjZW50YWdlV2lkdGggPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChwcm9wcy50b3RhbENvdW50ICE9PSAwICYmIHByb3BzLnRvdGFsQ291bnQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKHByb3BzLnByb2Nlc3NlZENvdW50IC8gcHJvcHMudG90YWxDb3VudCkgKiAxMDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChwcm9wcy5jb21wbGV0ZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMTAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgeGxzRmFpbGVkTWVzc2FnZSA9ICgwLCB2dWVfMi5pbmplY3QpKCd4bHNGYWlsZWRNZXNzYWdlJyk7XG4gICAgICAgIHZhciBwcm9jZXNzaW5nID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3Byb2Nlc3NpbmcnKTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgY3VycmVudEFjdGl2aXR5OiBjdXJyZW50QWN0aXZpdHksIG1heGltaXplOiBtYXhpbWl6ZSwgc2hvd01pbmltaXplZE1vZGVsOiBzaG93TWluaW1pemVkTW9kZWwsIHByb3BzOiBwcm9wcywgbWFwQWN0aXZpdHlOYW1lOiBtYXBBY3Rpdml0eU5hbWUsIHJldHJ5OiByZXRyeSwgcGVyY2VudGFnZVdpZHRoOiBwZXJjZW50YWdlV2lkdGgsIHhsc0ZhaWxlZE1lc3NhZ2U6IHhsc0ZhaWxlZE1lc3NhZ2UsIHByb2Nlc3Npbmc6IHByb2Nlc3NpbmcsIHNwaW5uZXJMb2FkZXI6IHNwaW5uZXJMb2FkZXJfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgQWN0aXZpdHlEb3dubG9hZF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9BY3Rpdml0eURvd25sb2FkLnZ1ZVwiKSk7XG52YXIgWGxzTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL1hsc0xvYWRlci52dWVcIikpO1xudmFyIEJ1bGtwdWJsaXNoV2l0aFhsc192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9CdWxrcHVibGlzaFdpdGhYbHMudnVlXCIpKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIGluZGV4XzEgPSByZXF1aXJlKFwiU3RvcmUvYWN0aXZpdGllcy9pbmRleFwiKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1hsc1VwbG9hZEluZGljYXRvcicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgYWN0aXZpdHlOYW1lOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGVkOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIHRvdGFsQ291bnQ6IHtcbiAgICAgICAgICAgIHR5cGU6IE51bWJlciB8fCBudWxsLFxuICAgICAgICAgICAgZGVmYXVsdDogMCxcbiAgICAgICAgfSxcbiAgICAgICAgcHJvY2Vzc2VkQ291bnQ6IHtcbiAgICAgICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgICAgIGRlZmF1bHQ6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHhsc0ZhaWxlZDoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICB4bHNEYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgX2I7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgc3RvcmUgPSAoMCwgaW5kZXhfMS51c2VTdG9yZSkoKTtcbiAgICAgICAgdmFyIHNob3dYbHNTdGF0dXMgPSAoMCwgdnVlXzIucmVmKSh0cnVlKTtcbiAgICAgICAgdmFyIGRvd25sb2FkQ29tcGxldGVkID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgY2FuY2VsRG93bmxvYWQgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93QnVsa3B1Ymxpc2ggPSAoMCwgdnVlXzIucmVmKSh0cnVlKTtcbiAgICAgICAgdmFyIHB1Ymxpc2hpbmdBY3Rpdml0aWVzID0gKDAsIHZ1ZV8yLnJlZikoW10pO1xuICAgICAgICB2YXIgYnVsa1B1Ymxpc2hMZW5ndGggPSAoMCwgdnVlXzIucmVmKSgwKTtcbiAgICAgICAgdmFyIHBhID0gKDAsIGNvcmVfMS51c2VTdG9yYWdlKSgndnVlLXVzZS1sb2NhbC1zdG9yYWdlJywge1xuICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXM6IChfYiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdwdWJsaXNoaW5nQWN0aXZpdGllcycpKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiB7fSxcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHB1Ymxpc2hpbmdBY3Rpdml0aWVzLnZhbHVlID1cbiAgICAgICAgICAgICAgICBwYS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcyAmJiBPYmplY3Qua2V5cyhwYS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcyk7XG4gICAgICAgICAgICB2YXIgY2hlY2tTdXBwb3J0QnV0dG9uID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBzdXBwb3J0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2xhdW5jaGVyJyk7XG4gICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRCdXR0b24gIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgc3VwcG9ydEJ1dHRvbi5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRleSgtNTBweCknO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIShwcm9wcy54bHNEYXRhICYmIHNob3dYbHNTdGF0dXMpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhKGRvd25sb2FkaW5nICYmICFkb3dubG9hZENvbXBsZXRlZC52YWx1ZSAmJiAhY2FuY2VsRG93bmxvYWQudmFsdWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93QnVsa3B1Ymxpc2ggJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hpbmdBY3Rpdml0aWVzLnZhbHVlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllcy52YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0QnV0dG9uLnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGUoLTM1MHB4ICwwcHgpJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrU3VwcG9ydEJ1dHRvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgMTApO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBbc3RvcmUuc3RhdGUuc3RhcnRCdWxrUHVibGlzaCwgc3RvcmUuc3RhdGUuYnVsa3B1Ymxpc2hBY3Rpdml0aWVzXTsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllcy52YWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtwdWJsaXNoQWN0aXZpdGllcy5wdWJsaXNoaW5nQWN0aXZpdGllcyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoc3RvcmUuc3RhdGUuYnVsa3B1Ymxpc2hBY3Rpdml0aWVzLnB1Ymxpc2hpbmdBY3Rpdml0aWVzKTtcbiAgICAgICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllcy52YWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgIHBhLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhwYS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuc3RhcnRCdWxrUHVibGlzaDsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hvd0J1bGtwdWJsaXNoLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIFtcbiAgICAgICAgICAgIHByb3BzLnhsc0RhdGEsXG4gICAgICAgICAgICBzaG93WGxzU3RhdHVzLnZhbHVlLFxuICAgICAgICAgICAgZG93bmxvYWRpbmcsXG4gICAgICAgICAgICBkb3dubG9hZENvbXBsZXRlZC52YWx1ZSxcbiAgICAgICAgICAgIGNhbmNlbERvd25sb2FkLnZhbHVlLFxuICAgICAgICBdOyB9LCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgIHZhciB4bHNEYXRhID0gX2FbMF0sIHNob3dYbHNTdGF0dXMgPSBfYVsxXSwgZG93bmxvYWRpbmcgPSBfYVsyXSwgZG93bmxvYWRDb21wbGV0ZWQgPSBfYVszXSwgY2FuY2VsRG93bmxvYWQgPSBfYVs0XTtcbiAgICAgICAgICAgIHZhciBzdXBwb3J0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2xhdW5jaGVyJyk7XG4gICAgICAgICAgICBpZiAoISh4bHNEYXRhICYmIHNob3dYbHNTdGF0dXMpICYmXG4gICAgICAgICAgICAgICAgIShkb3dubG9hZGluZyAmJiAhZG93bmxvYWRDb21wbGV0ZWQgJiYgIWNhbmNlbERvd25sb2FkKSAmJlxuICAgICAgICAgICAgICAgIHNob3dCdWxrcHVibGlzaCAmJlxuICAgICAgICAgICAgICAgIHB1Ymxpc2hpbmdBY3Rpdml0aWVzLnZhbHVlICYmXG4gICAgICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXMudmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3VwcG9ydEJ1dHRvbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydEJ1dHRvbi5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRlKC0zNTBweCAsMHB4KSc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoc3VwcG9ydEJ1dHRvbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHN1cHBvcnRCdXR0b24uc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZXkoLTUwcHgpJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi5vblVubW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHN1cHBvcnRCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbGF1bmNoZXInKTtcbiAgICAgICAgICAgIGlmIChzdXBwb3J0QnV0dG9uICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKGJ1bGtQdWJsaXNoTGVuZ3RoLnZhbHVlID4gMCB8fFxuICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhwYS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBzdXBwb3J0QnV0dG9uLnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGUoLTM1MHB4ICwtMjBweCknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3VwcG9ydEJ1dHRvbi5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRlWSgtNjVweCknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBjbG9zZUJ1bGtwdWJsaXNoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hvd0J1bGtwdWJsaXNoLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndnVlLXVzZS1sb2NhbC1zdG9yYWdlJywgJ3B1Ymxpc2hpbmdBY3Rpdml0aWVzOnt9Jyk7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlQnVsa3B1Ymxpc2hBY3Rpdml0aWVzJywge30pO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmRlbGV0ZShcIi9hY3Rpdml0aWVzL2RlbGV0ZS1idWxrLXB1Ymxpc2gtc3RhdHVzXCIpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgY2xvc2VYbHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzaG93WGxzU3RhdHVzLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZGVsZXRlKFwiL2ltcG9ydC94bHNcIikudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZUNhbmNlbFVwbG9hZCcsIHRydWUpO1xuICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVDbG9zZVhsc01vZGVsJywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5kaXNwYXRjaCgndXBkYXRlQ2xvc2VYbHNNb2RlbCcsIGZhbHNlKTsgfSwgMjAwMCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5jb21wbGV0ZVhsc0Rvd25sb2FkOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGRvd25sb2FkQ29tcGxldGVkLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRvd25sb2FkQ29tcGxldGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5idWxrUHVibGlzaExlbmd0aDsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBidWxrUHVibGlzaExlbmd0aC52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuY2FuY2VsRG93bmxvYWQ7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgY2FuY2VsRG93bmxvYWQudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICB2YXIgZG93bmxvYWRpbmcgPSAoMCwgdnVlXzIuaW5qZWN0KSgnZG93bmxvYWRpbmcnKTtcbiAgICAgICAgdmFyIGFjdGl2aXRpZXMgPSAoMCwgdnVlXzIuaW5qZWN0KSgnYWN0aXZpdGllcycpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBzdG9yZTogc3RvcmUsIHNob3dYbHNTdGF0dXM6IHNob3dYbHNTdGF0dXMsIGRvd25sb2FkQ29tcGxldGVkOiBkb3dubG9hZENvbXBsZXRlZCwgY2FuY2VsRG93bmxvYWQ6IGNhbmNlbERvd25sb2FkLCBzaG93QnVsa3B1Ymxpc2g6IHNob3dCdWxrcHVibGlzaCwgcHVibGlzaGluZ0FjdGl2aXRpZXM6IHB1Ymxpc2hpbmdBY3Rpdml0aWVzLCBidWxrUHVibGlzaExlbmd0aDogYnVsa1B1Ymxpc2hMZW5ndGgsIHBhOiBwYSwgcHJvcHM6IHByb3BzLCBjbG9zZUJ1bGtwdWJsaXNoOiBjbG9zZUJ1bGtwdWJsaXNoLCBjbG9zZVhsczogY2xvc2VYbHMsIGRvd25sb2FkaW5nOiBkb3dubG9hZGluZywgYWN0aXZpdGllczogYWN0aXZpdGllcywgQWN0aXZpdHlEb3dubG9hZDogQWN0aXZpdHlEb3dubG9hZF92dWVfMS5kZWZhdWx0LCBYbHNMb2FkZXI6IFhsc0xvYWRlcl92dWVfMS5kZWZhdWx0LCBCdWxrcHVibGlzaFdpdGhYbHM6IEJ1bGtwdWJsaXNoV2l0aFhsc192dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG4vL2NvbXBvbmVudFxudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbnZhciBQb3B1cE1vZGFsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1BvcHVwTW9kYWwudnVlXCIpKTtcbnZhciBQcm9ncmVzc0xvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWVcIikpO1xuLy8gVnVleCBTdG9yZVxudmFyIGluZGV4XzEgPSByZXF1aXJlKFwiU3RvcmUvYWN0aXZpdGllcy9pbmRleFwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdEZWxldGVCdXR0b24nLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgc3RvcmUgPSAoMCwgaW5kZXhfMS51c2VTdG9yZSkoKTtcbiAgICAgICAgLy8gdG9nZ2xlIHN0YXRlIGZvciBtb2RhbCBwb3B1cFxuICAgICAgICB2YXIgX2IgPSAoMCwgY29yZV8xLnVzZVRvZ2dsZSkoKSwgZGVsZXRlVmFsdWUgPSBfYlswXSwgZGVsZXRlVG9nZ2xlID0gX2JbMV07XG4gICAgICAgIC8vIGRpc3BsYXkvaGlkZSB2YWxpZGF0b3IgbG9hZGVyXG4gICAgICAgIHZhciBsb2FkZXIgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZhbHVlOiBmYWxzZSxcbiAgICAgICAgICAgIHRleHQ6IGxhbmd1YWdlLmNvbW1vbl9sYW5nLnBsZWFzZV93YWl0LFxuICAgICAgICB9KTtcbiAgICAgICAgLy8gY2FsbCBhcGkgZm9yIHVucHVibGlzaGluZ1xuICAgICAgICB2YXIgdG9hc3RNZXNzYWdlID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3RvYXN0TWVzc2FnZScpO1xuICAgICAgICB2YXIgZGVsZXRlRnVuY3Rpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBsb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgbG9hZGVyLnRleHQgPVxuICAgICAgICAgICAgICAgIGxhbmd1YWdlLmV2ZW50c19sYW5nLmRlbGV0aW5nLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICtcbiAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2UuZXZlbnRzX2xhbmcuZGVsZXRpbmcuc2xpY2UoMSk7XG4gICAgICAgICAgICBkZWxldGVWYWx1ZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgdmFyIGRlbGV0ZUVuZFBvaW50ID0gXCIvYWN0aXZpdHkvXCIuY29uY2F0KHN0b3JlLnN0YXRlLnNlbGVjdGVkQWN0aXZpdGllcyk7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZGVsZXRlKGRlbGV0ZUVuZFBvaW50KS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2UubWVzc2FnZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgdG9hc3RNZXNzYWdlLnR5cGUgPSByZXNwb25zZS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKCcvYWN0aXZpdGllcycpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgbGFuZ3VhZ2U6IGxhbmd1YWdlLCBzdG9yZTogc3RvcmUsIGRlbGV0ZVZhbHVlOiBkZWxldGVWYWx1ZSwgZGVsZXRlVG9nZ2xlOiBkZWxldGVUb2dnbGUsIGxvYWRlcjogbG9hZGVyLCB0b2FzdE1lc3NhZ2U6IHRvYXN0TWVzc2FnZSwgZGVsZXRlRnVuY3Rpb246IGRlbGV0ZUZ1bmN0aW9uLCBjYXBpdGFsaXplOiB2dWVfMi5jYXBpdGFsaXplLCBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LCBNb2RhbDogUG9wdXBNb2RhbF92dWVfMS5kZWZhdWx0LCBMb2FkZXI6IFByb2dyZXNzTG9hZGVyX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdMaW5rQnV0dG9uJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICB0ZXh0OiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgbGluazoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIGljb246IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICdlZGl0JyxcbiAgICAgICAgfSxcbiAgICAgICAgZGVzaWduOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnaWNvblRleHQnLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgZGVzaWduID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRlc2lnbjtcbiAgICAgICAgdmFyIHN0eWxlVHlwZSA9IGRlc2lnbi52YWx1ZTtcbiAgICAgICAgdmFyIGNsYXNzZXMgPSAnJztcbiAgICAgICAgc3dpdGNoIChzdHlsZVR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2JnVGV4dCc6XG4gICAgICAgICAgICAgICAgY2xhc3NlcyA9ICdmbGV4IGl0ZW1zLWNlbnRlciBiZy1uLTEwIHAtMSB0ZXh0LXRpbnkgZm9udC1ib2xkIHVwcGVyY2FzZSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGNsYXNzZXMgPVxuICAgICAgICAgICAgICAgICAgICAnZmxleCBpdGVtcy1jZW50ZXIgZm9udC1ib2xkIGxlYWRpbmctbm9ybWFsIHVwcGVyY2FzZSB0ZXh0LXRpbnknO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGNsYXNzZXM6IGNsYXNzZXMgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xuLy9jb21wb25lbnRcbnZhciBCdXR0b25Db21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZVwiKSk7XG52YXIgUG9wdXBNb2RhbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZVwiKSk7XG52YXIgUHJvZ3Jlc3NMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvUHJvZ3Jlc3NMb2FkZXIudnVlXCIpKTtcbi8vIFZ1ZXggU3RvcmVcbnZhciBzaG93XzEgPSByZXF1aXJlKFwiU3RvcmUvYWN0aXZpdGllcy9zaG93XCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1B1Ymxpc2hCdXR0b24nLFxuICAgIHByb3BzOiB7XG4gICAgICAgIHR5cGU6IHsgdHlwZTogU3RyaW5nLCBkZWZhdWx0OiAncHJpbWFyeScgfSxcbiAgICAgICAgbGlua2VkVG9JYXRpOiB7IHR5cGU6IEJvb2xlYW4sIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHN0YXR1czogeyB0eXBlOiBTdHJpbmcsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIGNvcmVDb21wbGV0ZWQ6IHsgdHlwZTogQm9vbGVhbiwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgYWN0aXZpdHlJZDogeyB0eXBlOiBOdW1iZXIsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIF9iID0gKDAsIHZ1ZV8yLnRvUmVmcykocHJvcHMpLCBsaW5rZWRUb0lhdGkgPSBfYi5saW5rZWRUb0lhdGksIHN0YXR1cyA9IF9iLnN0YXR1cywgY29yZUNvbXBsZXRlZCA9IF9iLmNvcmVDb21wbGV0ZWQsIGFjdGl2aXR5SWQgPSBfYi5hY3Rpdml0eUlkO1xuICAgICAgICAoMCwgdnVlXzIub25VcGRhdGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAobG9hZGVyLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZUlzTG9hZGluZycsIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZUlzTG9hZGluZycsIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChsb2FkZXIudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBwdWJsaXNoVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwdWJsaXNoVmFsdWUudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwdWJsaXNoU3RlcC52YWx1ZSA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHB1Ymxpc2hWYWx1ZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0sIDUwMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHVibGlzaFN0ZXAudmFsdWUgPT09IDMgfHxcbiAgICAgICAgICAgICAgICBwdWJsaXNoU3RlcC52YWx1ZSA9PT0gMiB8fFxuICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGVwLnZhbHVlID09PSA0KSB7XG4gICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcHVibGlzaFZhbHVlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiAgR2xvYmFsIFN0YXRlXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgc3RvcmUgPSAoMCwgc2hvd18xLmRldGFpbFN0b3JlKSgpO1xuICAgICAgICAvL2FjdGl2aXR5IGlkXG4gICAgICAgIHZhciBpZCA9IGFjdGl2aXR5SWQudmFsdWU7XG4gICAgICAgIC8vIHRvZ2dsZSBzdGF0ZSBmb3IgbW9kYWwgcG9wdXBcbiAgICAgICAgdmFyIF9jID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIHB1Ymxpc2hWYWx1ZSA9IF9jWzBdLCBwdWJsaXNoVG9nZ2xlID0gX2NbMV07XG4gICAgICAgIC8vIHN0YXRlIGZvciBzdGVwIG9mIHRoZSBmbG93XG4gICAgICAgIHZhciBwdWJsaXNoU3RlcCA9ICgwLCB2dWVfMi5yZWYpKDApO1xuICAgICAgICAvLyBkaXNwbGF5L2hpZGUgdmFsaWRhdG9yIGxvYWRlclxuICAgICAgICB2YXIgbG9hZGVyID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICAvLyBzdGF0ZSBmb3IgZmlyc3Qgc3RlcFxuICAgICAgICAvLyBkZXRlcm1pbmUgaWYgY29yZSBlbGVtZW50IGNvbXBsZXRlZCBvciBub3RcbiAgICAgICAgLy8gdHJ1ZSBmb3IgY29tcGxldGVkIGFuZCBmYWxzZSBmb3Igbm90IGNvbXBsZXRlZFxuICAgICAgICB2YXIgY29yZUVsZW1lbnRTdGF0dXMgPSBjb3JlQ29tcGxldGVkLnZhbHVlO1xuICAgICAgICAvLyBEeW5hbWljIHRleHQgZm9yIGxvYWRlclxuICAgICAgICB2YXIgbG9hZGVyVGV4dCA9ICgwLCB2dWVfMi5yZWYpKGxhbmd1YWdlLmNvbW1vbl9sYW5nLnBsZWFzZV93YWl0KTtcbiAgICAgICAgLy8gcmVzZXQgc3RlcCB0byB6ZXJvIGFmdGVyIGNsb3NpbmcgbW9kYWxcbiAgICAgICAgdmFyIHJlc2V0UHVibGlzaFN0ZXAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBwdWJsaXNoU3RlcC52YWx1ZSA9IDA7XG4gICAgICAgICAgICBwdWJsaXNoVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gY29tcHV0ZWQgZnVuY3Rpb24gdG8gY2hhbmdlIGNvbnRlbnQgb2YgbW9kYWxcbiAgICAgICAgdmFyIHB1Ymxpc2hTdGF0ZUNoYW5nZSA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHB1Ymxpc2hTdGF0ZSA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnJyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgICAgICAgICAgICAgaWNvbjogJycsXG4gICAgICAgICAgICAgICAgYWxlcnRTdGF0ZTogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdmFyIHRpdGxlID0gJycsIGRlc2NyaXB0aW9uID0gJycsIGljb24gPSAndGljayc7XG4gICAgICAgICAgICAvLyBkaWZmZXJlbnQgY29udGVudCBmb3Igc3RlcCAxIGJhc2VkIG9uIGNvcmVFbGVtZW50IHN0YXR1c1xuICAgICAgICAgICAgaWYgKGNvcmVFbGVtZW50U3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgdGl0bGUgPSBsYW5ndWFnZS5jb21tb25fbGFuZy5jb3JlX2NvbXBsZXRlZF90aXRsZTtcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiA9IGxhbmd1YWdlLmNvbW1vbl9sYW5nLmNvcmVfY29tcGxldGVkX2Rlc2NyaXB0aW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGl0bGUgPSBsYW5ndWFnZS5jb21tb25fbGFuZy5jb3JlX25vdF9jb21wbGV0ZWRfdGl0bGU7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPSBsYW5ndWFnZS5jb21tb25fbGFuZy5jb3JlX25vdF9jb21wbGV0ZWRfZGVzY3JpcHRpb247XG4gICAgICAgICAgICAgICAgaWNvbiA9ICd3YXJuaW5nLWZpbGwnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy9jcmVhdGluZyBhIHNob3J0ZXIgdmFyaWFibGUgc28gdGhhdCBidWlsZGluZyBlcnJvciBkZXNjcmlwdGlvbiBmb3IgY2FzZSAzIGFuZCA0IGJlY29tZXMgZWFzaXJlXG4gICAgICAgICAgICB2YXIgcyA9IGxhbmd1YWdlLmNvbW1vbl9sYW5nLnN0aWNreS5jb21tb247XG4gICAgICAgICAgICBzd2l0Y2ggKHB1Ymxpc2hTdGVwLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgLy8gZmlyc3Qgc3RlcFxuICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLnRpdGxlID0gdGl0bGU7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uO1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuaWNvbiA9IGljb247XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS5hbGVydFN0YXRlID0gY29yZUVsZW1lbnRTdGF0dXM7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIC8vc2Vjb25kIHN0ZXBcbiAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS50aXRsZSA9IGxhbmd1YWdlLmNvbW1vbl9sYW5nLnN0aWNreS50aXRsZV8xO1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuZGVzY3JpcHRpb24gPSBsYW5ndWFnZS5jb21tb25fbGFuZy5zdGlja3kuZGVzY3JpcHRpb25fMTtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLmljb24gPSBcInNoaWVsZFwiO1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuYWxlcnRTdGF0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAvLyBjYXNlIDIgaXMgZm9yIHN1Y2Nlc3MgdmFsaWRhdGlvblxuICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLnRpdGxlID0gbGFuZ3VhZ2UuY29tbW9uX2xhbmcuc3RpY2t5LnRpdGxlXzI7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS5kZXNjcmlwdGlvbiA9IGxhbmd1YWdlLmNvbW1vbl9sYW5nLnN0aWNreS5kZXNjcmlwdGlvbl8yO1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuaWNvbiA9IFwidGlja1wiO1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuYWxlcnRTdGF0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIC8vY2FzZSAzIGlzIGZvciB2YWxpZGF0aW9uIHdpdGggY3JpdGljYWwgZXJyb3JzXG4gICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUudGl0bGUgPSBsYW5ndWFnZS5jb21tb25fbGFuZy5zdGlja3kudGl0bGVfMztcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLmRlc2NyaXB0aW9uID0gXCI8cD48Yj5cIi5jb25jYXQoZXJyLmNyaXRpY2FsTnVtYmVyLCBcIiBcIikuY29uY2F0KHMuY3JpdGljYWwsIFwiIFwiKS5jb25jYXQocy5lcnJvcnMsIFwiPC9iPiwgPGI+XCIpLmNvbmNhdChlcnIuZXJyb3JOdW1iZXIsIFwiIFwiKS5jb25jYXQocy5lcnJvcnMsIFwiPC9iPiBcIikuY29uY2F0KHMuYW5kLCBcIiA8Yj5cIikuY29uY2F0KGVyci53YXJuaW5nTnVtYmVyLCBcIiBcIikuY29uY2F0KHMud2FybmluZ3MsIFwiPC9iPiBcIikuY29uY2F0KHMud2FybmluZ3MsIFwiLiBcIikuY29uY2F0KHMuY3JpdGljYWwsIFwiPC9wPjxwPlwiKS5jb25jYXQocy5oYXNfYXRsZWFzdF9vbmVfY3JpdGljYWxfZXJyb3IsIFwiPC9wPjxwPlwiKS5jb25jYXQocy53ZV9oaWdobHlfcmVjb21tZW5kLCBcIjwvcD5cIik7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS5pY29uID0gXCJ3YXJuaW5nLWZpbGxcIjtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLmFsZXJ0U3RhdGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgLy8gY2FzZSA0IGlzIGZvciB2YWxpZGF0aW9uIHdpdGhvdXQgY3JpdGljYWwgZXJyb3JzXG4gICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUudGl0bGUgPSBsYW5ndWFnZS5jb21tb25fbGFuZy5zdGlja3kudGl0bGVfMztcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLmRlc2NyaXB0aW9uID0gXCI8cD48Yj5cIi5jb25jYXQoZXJyLmVycm9yTnVtYmVyLCBcIiAgXCIpLmNvbmNhdChzLmVycm9ycywgXCI8L2I+ICBcIikuY29uY2F0KHMuYW5kLCBcIiA8Yj5cIikuY29uY2F0KGVyci53YXJuaW5nTnVtYmVyLCBcIiAgXCIpLmNvbmNhdChzLndhcm5pbmdzLCBcIjwvYj4gIFwiKS5jb25jYXQocy53ZXJlX2ZvdW5kLCBcIi4gIFwiKS5jb25jYXQocy52aWV3X2luZm9ybWF0aW9uLCBcIjwvcD48cD5cIikuY29uY2F0KHMud2VfaGlnaGx5X3JlY29tbWVuZCwgXCI8L3A+XCIpO1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuaWNvbiA9IFwid2FybmluZy1maWxsXCI7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS5hbGVydFN0YXRlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHB1Ymxpc2hTdGF0ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IGZ1bmN0aW9uXG4gICAgICAgIHZhciBzdGVwUGx1c09uZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChwdWJsaXNoU3RlcC52YWx1ZSA+PSAwICYmIHB1Ymxpc2hTdGVwLnZhbHVlIDwgNCkge1xuICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGVwLnZhbHVlKys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzdGVwTWludXNPbmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAocHVibGlzaFN0ZXAudmFsdWUgPiAwICYmIHB1Ymxpc2hTdGVwLnZhbHVlIDw9IDQpIHtcbiAgICAgICAgICAgICAgICBwdWJsaXNoU3RlcC52YWx1ZS0tO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICAvLyByZWFjdGl2ZSB2YXJpYWJsZSBmb3IgZXJyb3JzIG51bWJlclxuICAgICAgICB2YXIgZXJyID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBjcml0aWNhbE51bWJlcjogMCxcbiAgICAgICAgICAgIGVycm9yTnVtYmVyOiAwLFxuICAgICAgICAgICAgd2FybmluZ051bWJlcjogMCxcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGNhbGwgYXBpIGZvciB2YWxpZGF0aW9uXG4gICAgICAgIHZhciB2YWxpZGF0b3JGdW5jdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHB1Ymxpc2hWYWx1ZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKCFwdWJsaXNoVmFsdWUudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9LCA1MDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbG9hZGVyVGV4dC52YWx1ZSA9IFwiXCIuY29uY2F0KGxhbmd1YWdlLmNvbW1vbl9sYW5nLnZhbGlkYXRpbmcsIFwiIFwiKS5jb25jYXQobGFuZ3VhZ2UuY29tbW9uX2xhbmcuYWN0aXZpdHkpO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LnBvc3QoXCIvYWN0aXZpdHkvXCIuY29uY2F0KGlkLCBcIi92YWxpZGF0ZUFjdGl2aXR5XCIpKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB2YXIgZXJyb3JzID0gcmVzcG9uc2UuZXJyb3JzO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVQdWJsaXNoRXJyb3JzJywgZXJyb3JzKTtcbiAgICAgICAgICAgICAgICAgICAgLy9pZGVudGlmeSBlcnJvciB0eXBlc1xuICAgICAgICAgICAgICAgICAgICB2YXIgY3JpdCA9IHJlc3BvbnNlLnN1bW1hcnkuY3JpdGljYWw7XG4gICAgICAgICAgICAgICAgICAgIChlcnIuY3JpdGljYWxOdW1iZXIgPSBjcml0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIChlcnIuZXJyb3JOdW1iZXIgPSByZXNwb25zZS5zdW1tYXJ5LmVycm9yKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIChlcnIud2FybmluZ051bWJlciA9IHJlc3BvbnNlLnN1bW1hcnkud2FybmluZyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjcml0ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0ZXAudmFsdWUgPSAzO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0ZXAudmFsdWUgPSA0O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RlcC52YWx1ZSA9IDI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9LCAyMDAwKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICAvLyBjYWxsIGFwaSBmb3IgcHVibGlzaGluZ1xuICAgICAgICB2YXIgZXJyb3JEYXRhID0gKDAsIHZ1ZV8yLmluamVjdCkoJ2Vycm9yRGF0YScpO1xuICAgICAgICAvKipcbiAgICAgICAgICogY2hlY2sgcHVibGlzaCBzdGF0dXNcbiAgICAgICAgICovXG4gICAgICAgIHZhciBjaGVja1B1Ymxpc2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KFwiL2FjdGl2aXRpZXMvY2hlY2tzLWZvci1hY3Rpdml0eS1wdWJsaXNoXCIpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hWYWx1ZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBlcnJvckRhdGEubWVzc2FnZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yRGF0YS50eXBlID0gcmVzcG9uc2Uuc3VjY2VzcztcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JEYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgcHVibGlzaEZ1bmN0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcHVibGlzaFZhbHVlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgICAgIGxvYWRlclRleHQudmFsdWUgPSBcIlwiLmNvbmNhdChsYW5ndWFnZS5jb21tb25fbGFuZy5wdWJsaXNoaW5nLCBcIiBcIikuY29uY2F0KGxhbmd1YWdlLmNvbW1vbl9sYW5nLmFjdGl2aXR5KTtcbiAgICAgICAgICAgIHJlc2V0UHVibGlzaFN0ZXAoKTtcbiAgICAgICAgICAgIHB1Ymxpc2hTdGVwLnZhbHVlID0gMDtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5wb3N0KFwiL2FjdGl2aXR5L1wiLmNvbmNhdChpZCwgXCIvcHVibGlzaFwiKSkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVVuUHVibGlzaGVkJywgcmVzcG9uc2Uuc3VjY2Vzcyk7XG4gICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVNob3dQdWJsaXNoZWQnLCAhcmVzcG9uc2Uuc3VjY2Vzcyk7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIC8vIHB1Ymxpc2gtcmVwdWJsaXNoXG4gICAgICAgIHZhciBwdWJsaXNoU3RhdHVzID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBsaW5rZWRfdG9faWF0aTogbGlua2VkVG9JYXRpLnZhbHVlLFxuICAgICAgICAgICAgc3RhdHVzOiBzdGF0dXMudmFsdWUsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgYnRuVGV4dCA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHB1Ymxpc2hTdGF0dXMubGlua2VkX3RvX2lhdGkgJiYgcHVibGlzaFN0YXR1cy5zdGF0dXMgPT09ICdkcmFmdCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGFuZ3VhZ2UuYnV0dG9uX2xhbmcucmVwdWJsaXNoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoIXB1Ymxpc2hTdGF0dXMubGlua2VkX3RvX2lhdGkgJiZcbiAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdHVzLnN0YXR1cyA9PT0gJ2RyYWZ0Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBsYW5ndWFnZS5idXR0b25fbGFuZy5wdWJsaXNoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgbGFuZ3VhZ2U6IGxhbmd1YWdlLCBwcm9wczogcHJvcHMsIGxpbmtlZFRvSWF0aTogbGlua2VkVG9JYXRpLCBzdGF0dXM6IHN0YXR1cywgY29yZUNvbXBsZXRlZDogY29yZUNvbXBsZXRlZCwgYWN0aXZpdHlJZDogYWN0aXZpdHlJZCwgc3RvcmU6IHN0b3JlLCBpZDogaWQsIHB1Ymxpc2hWYWx1ZTogcHVibGlzaFZhbHVlLCBwdWJsaXNoVG9nZ2xlOiBwdWJsaXNoVG9nZ2xlLCBwdWJsaXNoU3RlcDogcHVibGlzaFN0ZXAsIGxvYWRlcjogbG9hZGVyLCBjb3JlRWxlbWVudFN0YXR1czogY29yZUVsZW1lbnRTdGF0dXMsIGxvYWRlclRleHQ6IGxvYWRlclRleHQsIHJlc2V0UHVibGlzaFN0ZXA6IHJlc2V0UHVibGlzaFN0ZXAsIHB1Ymxpc2hTdGF0ZUNoYW5nZTogcHVibGlzaFN0YXRlQ2hhbmdlLCBzdGVwUGx1c09uZTogc3RlcFBsdXNPbmUsIHN0ZXBNaW51c09uZTogc3RlcE1pbnVzT25lLCBlcnI6IGVyciwgdmFsaWRhdG9yRnVuY3Rpb246IHZhbGlkYXRvckZ1bmN0aW9uLCBlcnJvckRhdGE6IGVycm9yRGF0YSwgY2hlY2tQdWJsaXNoOiBjaGVja1B1Ymxpc2gsIHB1Ymxpc2hGdW5jdGlvbjogcHVibGlzaEZ1bmN0aW9uLCBwdWJsaXNoU3RhdHVzOiBwdWJsaXNoU3RhdHVzLCBidG5UZXh0OiBidG5UZXh0LCBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LCBNb2RhbDogUG9wdXBNb2RhbF92dWVfMS5kZWZhdWx0LCBMb2FkZXI6IFByb2dyZXNzTG9hZGVyX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbi8vY29tcG9uZW50XG52YXIgQnV0dG9uQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWVcIikpO1xudmFyIFBvcHVwTW9kYWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvUG9wdXBNb2RhbC52dWVcIikpO1xudmFyIFByb2dyZXNzTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1Byb2dyZXNzTG9hZGVyLnZ1ZVwiKSk7XG4vLyBWdWV4IFN0b3JlXG52YXIgc2hvd18xID0gcmVxdWlyZShcIlN0b3JlL2FjdGl2aXRpZXMvc2hvd1wiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdVblB1Ymxpc2hCdXR0b24nLFxuICAgIHByb3BzOiB7XG4gICAgICAgIHR5cGU6IHsgdHlwZTogU3RyaW5nLCBkZWZhdWx0OiAncHJpbWFyeScgfSxcbiAgICAgICAgYWN0aXZpdHlJZDogeyB0eXBlOiBOdW1iZXIsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIGFjdGl2aXR5SWQgPSAoMCwgdnVlXzIudG9SZWZzKShwcm9wcykuYWN0aXZpdHlJZDtcbiAgICAgICAgLy8gdG9nZ2xlIHN0YXRlIGZvciBtb2RhbCBwb3B1cFxuICAgICAgICB2YXIgX2IgPSAoMCwgY29yZV8xLnVzZVRvZ2dsZSkoKSwgdW5wdWJsaXNoVmFsdWUgPSBfYlswXSwgdW5wdWJsaXNoVG9nZ2xlID0gX2JbMV07XG4gICAgICAgIC8vR2xvYmFsIFN0YXRlXG4gICAgICAgIHZhciBzdG9yZSA9ICgwLCBzaG93XzEuZGV0YWlsU3RvcmUpKCk7XG4gICAgICAgIC8vYWN0aXZpdHkgaWRcbiAgICAgICAgdmFyIGlkID0gYWN0aXZpdHlJZC52YWx1ZTtcbiAgICAgICAgLy8gZGlzcGxheS9oaWRlIHZhbGlkYXRvciBsb2FkZXJcbiAgICAgICAgdmFyIGxvYWRlciA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdmFsdWU6IGZhbHNlLFxuICAgICAgICAgICAgdGV4dDogbGFuZ3VhZ2UuY29tbW9uX2xhbmcucGxlYXNlX3dhaXQsXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBjYWxsIGFwaSBmb3IgdW5wdWJsaXNoaW5nXG4gICAgICAgICgwLCB2dWVfMi5vblVwZGF0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChsb2FkZXIudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlSXNMb2FkaW5nJywgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlSXNMb2FkaW5nJywgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHVucHVibGlzaFZhbHVlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobG9hZGVyLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdW5wdWJsaXNoVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB0b2FzdE1lc3NhZ2UgPSAoMCwgdnVlXzIuaW5qZWN0KSgndG9hc3RNZXNzYWdlJyk7XG4gICAgICAgIHZhciB1blB1Ymxpc2hGdW5jdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHVucHVibGlzaFZhbHVlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgICAgIGxvYWRlci50ZXh0ID0gbGFuZ3VhZ2UuY29tbW9uX2xhbmcudW5wdWJsaXNoaW5nO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LnBvc3QoXCIvYWN0aXZpdHkvXCIuY29uY2F0KGlkLCBcIi91bnB1Ymxpc2hcIikpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIHRvYXN0TWVzc2FnZS5tZXNzYWdlID0gcmVzcG9uc2UubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2UudHlwZSA9IHJlc3BvbnNlLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgdW5wdWJsaXNoVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVVblB1Ymxpc2hlZCcsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTaG93UHVibGlzaGVkJywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlUHVibGlzaEVycm9ycycsIFtdKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBsYW5ndWFnZTogbGFuZ3VhZ2UsIHByb3BzOiBwcm9wcywgYWN0aXZpdHlJZDogYWN0aXZpdHlJZCwgdW5wdWJsaXNoVmFsdWU6IHVucHVibGlzaFZhbHVlLCB1bnB1Ymxpc2hUb2dnbGU6IHVucHVibGlzaFRvZ2dsZSwgc3RvcmU6IHN0b3JlLCBpZDogaWQsIGxvYWRlcjogbG9hZGVyLCB0b2FzdE1lc3NhZ2U6IHRvYXN0TWVzc2FnZSwgdW5QdWJsaXNoRnVuY3Rpb246IHVuUHVibGlzaEZ1bmN0aW9uLCBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LCBNb2RhbDogUG9wdXBNb2RhbF92dWVfMS5kZWZhdWx0LCBMb2FkZXI6IFByb2dyZXNzTG9hZGVyX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbi8vY29tcG9uZW50XG52YXIgQnV0dG9uQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWVcIikpO1xudmFyIFBvcHVwTW9kYWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvUG9wdXBNb2RhbC52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0RlbGV0ZUFjdGlvbicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgaXRlbUlkOiB7IHR5cGU6IFtOdW1iZXIsIFN0cmluZ10sIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIGl0ZW1UeXBlOiB7IHR5cGU6IFN0cmluZywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICAvLyBwcm9wc1xuICAgICAgICAvLyB0b2dnbGUgc3RhdGUgZm9yIG1vZGFsIHBvcHVwXG4gICAgICAgIHZhciBfYiA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBkZWxldGVWYWx1ZSA9IF9iWzBdLCBkZWxldGVUb2dnbGUgPSBfYlsxXTtcbiAgICAgICAgdmFyIGRlbGV0ZUZ1bmN0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHByb3BzLml0ZW1UeXBlID09PSAncmVzdWx0JyB8fCBwcm9wcy5pdGVtVHlwZSA9PT0gJ3RyYW5zYWN0aW9uJykge1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5kZWxldGUoXCJcIi5jb25jYXQocHJvcHMuaXRlbVR5cGUsIFwiL1wiKS5jb25jYXQocHJvcHMuaXRlbUlkKSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZVZhbHVlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHByb3BzLml0ZW1UeXBlID09PSAnaW5kaWNhdG9yJykge1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5kZWxldGUoXCJcIi5jb25jYXQocHJvcHMuaXRlbVR5cGUsIFwiL1wiKS5jb25jYXQocHJvcHMuaXRlbUlkKSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZVZhbHVlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHByb3BzLml0ZW1UeXBlID09PSAncGVyaW9kJykge1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5kZWxldGUoXCJcIi5jb25jYXQocHJvcHMuaXRlbVR5cGUsIFwiL1wiKS5jb25jYXQocHJvcHMuaXRlbUlkKSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZVZhbHVlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBsYW5ndWFnZTogbGFuZ3VhZ2UsIHByb3BzOiBwcm9wcywgZGVsZXRlVmFsdWU6IGRlbGV0ZVZhbHVlLCBkZWxldGVUb2dnbGU6IGRlbGV0ZVRvZ2dsZSwgZGVsZXRlRnVuY3Rpb246IGRlbGV0ZUZ1bmN0aW9uLCBjYXBpdGFsaXplOiB2dWVfMi5jYXBpdGFsaXplLCBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LCBNb2RhbDogUG9wdXBNb2RhbF92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnRXJyb3JMaXN0cycsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZXJyb3JzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgdHlwZTogeyB0eXBlOiBTdHJpbmcsIGRlZmF1bHQ6ICdlcnJvcicgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICAvL3Byb3BzXG4gICAgICAgIC8vcHJvcHMgZGVzdHJ1Y3R1cmluZ1xuICAgICAgICB2YXIgX2IgPSAoMCwgdnVlXzIudG9SZWZzKShwcm9wcyksIHR5cGUgPSBfYi50eXBlLCBlcnJvcnMgPSBfYi5lcnJvcnM7XG4gICAgICAgIHZhciBlcnJvclR5cGUgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIC8vIGNvbG9ycyBiYXNlZCBvbiB0eXBlIHByb3BzIHZhbHVlXG4gICAgICAgIHZhciBiZ0NvbG9yID0gJycsIGljb25Db2xvciA9ICcnO1xuICAgICAgICBzd2l0Y2ggKHR5cGUudmFsdWUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2NyaXRpY2FsJzpcbiAgICAgICAgICAgICAgICBiZ0NvbG9yID0gJ2JnLWxhdmVuZGVyLTYwIGJvcmRlci1sYXZlbmRlci01MCc7XG4gICAgICAgICAgICAgICAgaWNvbkNvbG9yID0gJ3RleHQtbGF2ZW5kZXItNTAnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnd2FybmluZ3MnOlxuICAgICAgICAgICAgICAgIGJnQ29sb3IgPSAnYmctZWdnc2hlbGwgYm9yZGVyLWNhbWVsLTUwJztcbiAgICAgICAgICAgICAgICBpY29uQ29sb3IgPSAndGV4dC1jYW1lbC01MCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJnQ29sb3IgPSAnYmctcm9zZSBib3JkZXItY3JpbXNvbi00MCc7XG4gICAgICAgICAgICAgICAgaWNvbkNvbG9yID0gJ3RleHQtY3JpbXNvbi00MCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRvZ2dsZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGFjY29yZGlvblRvZ2dsZSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICB2YXIgY3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldDtcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSBjdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignLmVycm9yc19fbGlzdCcpO1xuICAgICAgICAgICAgdmFyIGVsSGVpZ2h0ID0gKF9hID0gdGFyZ2V0ID09PSBudWxsIHx8IHRhcmdldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGFyZ2V0LnF1ZXJ5U2VsZWN0b3IoJ3VsJykpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jbGllbnRIZWlnaHQ7XG4gICAgICAgICAgICBpZiAodG9nZ2xlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IFwiLmNvbmNhdChlbEhlaWdodCwgXCJweDtcIik7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgICAgICAgICB0b2dnbGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBhdXRvO1wiO1xuICAgICAgICAgICAgICAgICAgICB9LCA2MDApO1xuICAgICAgICAgICAgICAgICAgICB0b2dnbGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHVwZGF0ZUVycm9yQ291bnRNZXNzYWdlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHRyYW5zbGF0ZWRUeXBlID0gbGFuZ3VhZ2UuY29tbW9uX2xhbmcuc3RpY2t5LmNvbW1vblt0eXBlLnZhbHVlXTtcbiAgICAgICAgICAgIGVycm9yVHlwZS52YWx1ZSA9XG4gICAgICAgICAgICAgICAgZXJyb3JzLnZhbHVlLmxlbmd0aCArXG4gICAgICAgICAgICAgICAgICAgICcgJyArXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWRUeXBlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlZFR5cGUuc2xpY2UoMSk7XG4gICAgICAgIH07XG4gICAgICAgIHVwZGF0ZUVycm9yQ291bnRNZXNzYWdlKCk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gZXJyb3JzLnZhbHVlOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB1cGRhdGVFcnJvckNvdW50TWVzc2FnZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgbGFuZ3VhZ2U6IGxhbmd1YWdlLCBwcm9wczogcHJvcHMsIHR5cGU6IHR5cGUsIGVycm9yczogZXJyb3JzLCBlcnJvclR5cGU6IGVycm9yVHlwZSwgYmdDb2xvcjogYmdDb2xvciwgaWNvbkNvbG9yOiBpY29uQ29sb3IsIHRvZ2dsZTogdG9nZ2xlLCBhY2NvcmRpb25Ub2dnbGU6IGFjY29yZGlvblRvZ2dsZSwgdXBkYXRlRXJyb3JDb3VudE1lc3NhZ2U6IHVwZGF0ZUVycm9yQ291bnRNZXNzYWdlIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbi8vIGNvbXBvbmVudHNcbnZhciBMaW5rX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL2J1dHRvbnMvTGluay52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdIYXZlTm90QWRkZWRZZXQnLFxuICAgIGNvbXBvbmVudHM6IHsgQnRuOiBMaW5rX3Z1ZV8xLmRlZmF1bHQgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBsaW5rOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVzY3JpcHRpb246IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBidG5UZXh0OiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xuLy9jb21wb25lbnRcbnZhciBCdXR0b25Db21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZVwiKSk7XG52YXIgUG9wdXBNb2RhbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZVwiKSk7XG52YXIgUHJvZ3Jlc3NMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvUHJvZ3Jlc3NMb2FkZXIudnVlXCIpKTtcbi8vIHB1Ymxpc2gtcmVwdWJsaXNoXG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnT3JnYW5pemF0aW9uUHVibGlzaFVucHVibGlzaEJ1dHRvbicsXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIC8vIHRvZ2dsZSBzdGF0ZSBmb3IgbW9kYWwgcG9wdXBcbiAgICAgICAgdmFyIF9iID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIHB1Ymxpc2hWYWx1ZSA9IF9iWzBdLCBwdWJsaXNoVG9nZ2xlID0gX2JbMV07XG4gICAgICAgIHZhciBfYyA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCB1bnB1Ymxpc2hWYWx1ZSA9IF9jWzBdLCB1bnB1Ymxpc2hUb2dnbGUgPSBfY1sxXTtcbiAgICAgICAgLy8gZGlzcGxheS9oaWRlIHZhbGlkYXRvciBsb2FkZXJcbiAgICAgICAgdmFyIGxvYWRlciA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgLy8gc3RhdGUgZm9yIGZpcnN0IHN0ZXBcbiAgICAgICAgLy8gZGV0ZXJtaW5lIGlmIGNvcmUgZWxlbWVudCBjb21wbGV0ZWQgb3Igbm90XG4gICAgICAgIC8vIHRydWUgZm9yIGNvbXBsZXRlZCBhbmQgZmFsc2UgZm9yIG5vdCBjb21wbGV0ZWRcbiAgICAgICAgdmFyIG1hbmRhdG9yeUVsZW1lbnRTdGF0dXMgPSAoMCwgdnVlXzIuaW5qZWN0KSgnbWFuZGF0b3J5Q29tcGxldGVkJyk7XG4gICAgICAgIC8vIER5bmFtaWMgdGV4dCBmb3IgbG9hZGVyXG4gICAgICAgIHZhciBsb2FkZXJUZXh0ID0gKDAsIHZ1ZV8yLnJlZikobGFuZ3VhZ2UuY29tbW9uX2xhbmcucGxlYXNlX3dhaXQpO1xuICAgICAgICAvLyBjb21wdXRlZCBmdW5jdGlvbiB0byBjaGFuZ2UgY29udGVudCBvZiBtb2RhbFxuICAgICAgICB2YXIgcHVibGlzaFN0YXRlQ2hhbmdlID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgcHVibGlzaFN0YXRlID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICcnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnJyxcbiAgICAgICAgICAgICAgICBpY29uOiAnJyxcbiAgICAgICAgICAgICAgICBhbGVydFN0YXRlOiBtYW5kYXRvcnlFbGVtZW50U3RhdHVzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBkaWZmZXJlbnQgY29udGVudCBmb3Igc3RlcCAxIGJhc2VkIG9uIGNvcmVFbGVtZW50IHN0YXR1c1xuICAgICAgICAgICAgaWYgKG1hbmRhdG9yeUVsZW1lbnRTdGF0dXMpIHtcbiAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUudGl0bGUgPSBsYW5ndWFnZS5jb21tb25fbGFuZy5jb3JlX2NvbXBsZXRlZF90aXRsZTtcbiAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuZGVzY3JpcHRpb24gPSBsYW5ndWFnZS5jb21tb25fbGFuZy5jb3JlX2NvbXBsZXRlZF9kZXNjcmlwdGlvbjtcbiAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuaWNvbiA9ICd0aWNrJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS50aXRsZSA9IGxhbmd1YWdlLmNvbW1vbl9sYW5nLmNvcmVfY29tcGxldGVkX3RpdGxlO1xuICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS5kZXNjcmlwdGlvbiA9XG4gICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlLmNvbW1vbl9sYW5nLmNvcmVfbm90X2NvbXBsZXRlZF9kZXNjcmlwdGlvbjtcbiAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuaWNvbiA9ICd3YXJuaW5nLWZpbGwnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHB1Ymxpc2hTdGF0ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGNhbGwgYXBpIGZvciBwdWJsaXNoaW5nXG4gICAgICAgIHZhciB0b2FzdERhdGEgPSAoMCwgdnVlXzIuaW5qZWN0KSgndG9hc3REYXRhJyk7XG4gICAgICAgIHZhciBlcnJvckRhdGEgPSAoMCwgdnVlXzIuaW5qZWN0KSgnZXJyb3JEYXRhJyk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBjaGVjayBwdWJsaXNoIHN0YXR1c1xuICAgICAgICAgKi9cbiAgICAgICAgdmFyIGNoZWNrUHVibGlzaCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoXCIvb3JnYW5pc2F0aW9uL2NoZWNrcy1mb3Itb3JnYW5pc2F0aW9uLXB1Ymxpc2hcIikudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFZhbHVlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yRGF0YS5tZXNzYWdlID0gcmVzcG9uc2UubWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JEYXRhLnR5cGUgPSByZXNwb25zZS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgICAgICBlcnJvckRhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBwdWJsaXNoRnVuY3Rpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBsb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgbG9hZGVyVGV4dC52YWx1ZSA9IGxhbmd1YWdlLmNvbW1vbl9sYW5nLnB1Ymxpc2hpbmc7XG4gICAgICAgICAgICBwdWJsaXNoVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5wb3N0KFwiL29yZ2FuaXNhdGlvbi9wdWJsaXNoXCIpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcmVzcG9uc2UubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHJlc3BvbnNlLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9LCAyMDAwKTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdHVzLmlzX3B1Ymxpc2hlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0dXMuc3RhdHVzID0gbGFuZ3VhZ2UuZXZlbnRzX2xhbmcucHVibGlzaGVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgdW5QdWJsaXNoRnVuY3Rpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB1bnB1Ymxpc2hWYWx1ZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGxvYWRlclRleHQudmFsdWUgPVxuICAgICAgICAgICAgICAgIGxhbmd1YWdlLmNvbW1vbl9sYW5nLnVucHVibGlzaGluZy5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArXG4gICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlLmNvbW1vbl9sYW5nLnVucHVibGlzaGluZy5zbGljZSgxKTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5wb3N0KFwiL29yZ2FuaXNhdGlvbi91bnB1Ymxpc2hcIikudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSByZXNwb25zZS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gcmVzcG9uc2Uuc3VjY2VzcztcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0sIDIwMDApO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0dXMuaXNfcHVibGlzaGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBwdWJsaXNoU3RhdHVzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3B1Ymxpc2hTdGF0dXMnKTtcbiAgICAgICAgdmFyIGJ0blRleHQgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChwdWJsaXNoU3RhdHVzLmlzX3B1Ymxpc2hlZCAmJiBwdWJsaXNoU3RhdHVzLnN0YXR1cyA9PT0gJ2RyYWZ0Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBsYW5ndWFnZS5idXR0b25fbGFuZy5yZXB1Ymxpc2g7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGFuZ3VhZ2UuYnV0dG9uX2xhbmcucHVibGlzaDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGxhbmd1YWdlOiBsYW5ndWFnZSwgcHVibGlzaFZhbHVlOiBwdWJsaXNoVmFsdWUsIHB1Ymxpc2hUb2dnbGU6IHB1Ymxpc2hUb2dnbGUsIHVucHVibGlzaFZhbHVlOiB1bnB1Ymxpc2hWYWx1ZSwgdW5wdWJsaXNoVG9nZ2xlOiB1bnB1Ymxpc2hUb2dnbGUsIGxvYWRlcjogbG9hZGVyLCBtYW5kYXRvcnlFbGVtZW50U3RhdHVzOiBtYW5kYXRvcnlFbGVtZW50U3RhdHVzLCBsb2FkZXJUZXh0OiBsb2FkZXJUZXh0LCBwdWJsaXNoU3RhdGVDaGFuZ2U6IHB1Ymxpc2hTdGF0ZUNoYW5nZSwgdG9hc3REYXRhOiB0b2FzdERhdGEsIGVycm9yRGF0YTogZXJyb3JEYXRhLCBjaGVja1B1Ymxpc2g6IGNoZWNrUHVibGlzaCwgcHVibGlzaEZ1bmN0aW9uOiBwdWJsaXNoRnVuY3Rpb24sIHVuUHVibGlzaEZ1bmN0aW9uOiB1blB1Ymxpc2hGdW5jdGlvbiwgcHVibGlzaFN0YXR1czogcHVibGlzaFN0YXR1cywgYnRuVGV4dDogYnRuVGV4dCwgQnRuQ29tcG9uZW50OiBCdXR0b25Db21wb25lbnRfdnVlXzEuZGVmYXVsdCwgTW9kYWw6IFBvcHVwTW9kYWxfdnVlXzEuZGVmYXVsdCwgTG9hZGVyOiBQcm9ncmVzc0xvYWRlcl92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbi8vIGNvbXBvbmVudHNcbnZhciBCcmVhZENydW1iX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0JyZWFkQ3J1bWIudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnUGFnZVRpdGxlJyxcbiAgICBjb21wb25lbnRzOiB7IEJyZWFkY3J1bWI6IEJyZWFkQ3J1bWJfdnVlXzEuZGVmYXVsdCB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGJyZWFkY3J1bWJEYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdGl0bGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBiYWNrTGluazoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKHByb3BzLnRpdGxlLCAndGl0bGUnKTtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnUHJvZ3Jlc3NMb2FkZXInLFxuICAgIHByb3BzOiB7XG4gICAgICAgIHRleHQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjaGFuZ2VUZXh0OiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ292ZXJmbG93LXktaGlkZGVuJyk7XG4gICAgICAgICAgICB2YXIgc3VwcG9ydEJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNsYXVuY2hlcicpO1xuICAgICAgICAgICAgaWYgKHN1cHBvcnRCdXR0b24gIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBzdXBwb3J0QnV0dG9uLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIub25Vbm1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnb3ZlcmZsb3cteS1oaWRkZW4nKTtcbiAgICAgICAgICAgIHZhciBzdXBwb3J0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2xhdW5jaGVyJyk7XG4gICAgICAgICAgICBpZiAoc3VwcG9ydEJ1dHRvbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHN1cHBvcnRCdXR0b24uc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBsYW5ndWFnZTogbGFuZ3VhZ2UgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xuLy8gY29tcG9uZW50c1xudmFyIEVycm9yTGlzdHNfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvRXJyb3JMaXN0cy52dWVcIikpO1xudmFyIFVwbG9hZGVkRXJyb3JzX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1VwbG9hZGVkRXJyb3JzLnZ1ZVwiKSk7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1N0aWNreUVycm9ycycsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZXJyb3JEYXRhOiB7IHR5cGU6IEFycmF5LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIC8vIHRvZ2dsZSBpc3N1ZXNcbiAgICAgICAgdmFyIF9iID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIGVycm9yVmFsdWUgPSBfYlswXSwgZXJyb3JUb2dnbGUgPSBfYlsxXTtcbiAgICAgICAgdmFyIGltcG9ydEVycm9ycyA9ICgwLCB2dWVfMi5pbmplY3QpKCdpbXBvcnRBY3Rpdml0eUVycm9yJyk7XG4gICAgICAgIHZhciBhY3Rpdml0eUlkID0gKDAsIHZ1ZV8yLmluamVjdCkoJ2FjdGl2aXR5SWQnKTtcbiAgICAgICAgdmFyIGlzc3VlVHlwZSA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBsaXN0IG9mIGVycm9yc1xuICAgICAgICAgKiovXG4gICAgICAgIHZhciBlcnJvckRhdGEgPSAoMCwgdnVlXzIudG9SZWZzKShwcm9wcykuZXJyb3JEYXRhO1xuICAgICAgICB2YXIgaW1wb3J0RXJyb3JUeXBlcyA9IFsnZXJyb3InLCAnd2FybmluZyddO1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoZXJyb3JEYXRhLnZhbHVlLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGlzc3VlVHlwZS52YWx1ZSA9ICd2YWxpZGF0b3InO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlzc3VlVHlwZS52YWx1ZSA9ICd1cGxvYWQnO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHRlbXBEYXRhID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBlcnJvcnM6IFtdLFxuICAgICAgICAgICAgY3JpdGljYWw6IFtdLFxuICAgICAgICAgICAgd2FybmluZ3M6IFtdLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHVwZGF0ZVRlbXBNZXNzYWdlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGVycm9yRGF0YVByb3BzID0gZXJyb3JEYXRhLnZhbHVlO1xuICAgICAgICAgICAgZm9yICh2YXIgZGF0YSBpbiB0ZW1wRGF0YSkge1xuICAgICAgICAgICAgICAgIHRlbXBEYXRhW2RhdGFdID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKHZhciBfaSA9IDAsIGVycm9yRGF0YVByb3BzXzEgPSBlcnJvckRhdGFQcm9wczsgX2kgPCBlcnJvckRhdGFQcm9wc18xLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgICAgIHZhciBkYXRhID0gZXJyb3JEYXRhUHJvcHNfMVtfaV07XG4gICAgICAgICAgICAgICAgdmFyIHNldmVyaXR5ID0gZGF0YS5zZXZlcml0eTtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHNldmVyaXR5KSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NyaXRpY2FsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBEYXRhLmNyaXRpY2FsLnB1c2goZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGVtcERhdGEuZXJyb3JzLnB1c2goZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnd2FybmluZyc6XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZW1wRGF0YS53YXJuaW5ncy5wdXNoKGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB1cGRhdGVUZW1wTWVzc2FnZSgpO1xuICAgICAgICB2YXIgaW1wb3J0RXJyb3JsZW5ndGggPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBjb3VudCA9IDA7XG4gICAgICAgICAgICBmb3IgKHZhciB0eXBlIGluIGltcG9ydEVycm9ycykge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGluZGV4IGluIGltcG9ydEVycm9yc1t0eXBlXSkge1xuICAgICAgICAgICAgICAgICAgICBjb3VudCArPSBPYmplY3Qua2V5cyhpbXBvcnRFcnJvcnNbdHlwZV1baW5kZXhdKS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvdW50O1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBlcnJvckRhdGEudmFsdWU7IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHVwZGF0ZVRlbXBNZXNzYWdlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZGVsZXRlRXJyb3JzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmRlbGV0ZShcIi9pbXBvcnQvZXJyb3JzL1wiLmNvbmNhdChhY3Rpdml0eUlkKSkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgncmVtb3ZlZCcsICd0cnVlJyk7XG4gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBsYW5ndWFnZTogbGFuZ3VhZ2UsIHByb3BzOiBwcm9wcywgZXJyb3JWYWx1ZTogZXJyb3JWYWx1ZSwgZXJyb3JUb2dnbGU6IGVycm9yVG9nZ2xlLCBpbXBvcnRFcnJvcnM6IGltcG9ydEVycm9ycywgYWN0aXZpdHlJZDogYWN0aXZpdHlJZCwgaXNzdWVUeXBlOiBpc3N1ZVR5cGUsIGVycm9yRGF0YTogZXJyb3JEYXRhLCBpbXBvcnRFcnJvclR5cGVzOiBpbXBvcnRFcnJvclR5cGVzLCB0ZW1wRGF0YTogdGVtcERhdGEsIHVwZGF0ZVRlbXBNZXNzYWdlOiB1cGRhdGVUZW1wTWVzc2FnZSwgaW1wb3J0RXJyb3JsZW5ndGg6IGltcG9ydEVycm9ybGVuZ3RoLCBkZWxldGVFcnJvcnM6IGRlbGV0ZUVycm9ycywgRXJyb3JMaXN0czogRXJyb3JMaXN0c192dWVfMS5kZWZhdWx0LCBVcGxvYWRlZEVycm9yczogVXBsb2FkZWRFcnJvcnNfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1VwbG9hZGVkRXJyb3JzJyxcbiAgICBwcm9wczoge1xuICAgICAgICBpdGVtOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgaW5kZXg6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIGFjdGl2ZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHRvZ2dsZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGVycm9yTGVuZ3RoID0gZnVuY3Rpb24gKGN1cnJlbnRFcnJvcikge1xuICAgICAgICAgICAgdmFyIGNvdW50ID0gMDtcbiAgICAgICAgICAgIGlmIChwcm9wcy5pbmRleCA9PT0gY3VycmVudEVycm9yKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgdHlwZSBpbiBwcm9wcy5pdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ICs9IE9iamVjdC5rZXlzKHByb3BzLml0ZW1bdHlwZV0pLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY291bnQ7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBhY2NvcmRpb25Ub2dnbGUgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgYWN0aXZlLnZhbHVlID0gIWFjdGl2ZS52YWx1ZTtcbiAgICAgICAgICAgIHZhciBjdXJyZW50VGFyZ2V0ID0gZS5jdXJyZW50VGFyZ2V0O1xuICAgICAgICAgICAgdmFyIHRhcmdldCA9IGN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuY29udGFpbmVyJyk7XG4gICAgICAgICAgICB2YXIgZWxIZWlnaHQgPSAoX2EgPSB0YXJnZXQgPT09IG51bGwgfHwgdGFyZ2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0YXJnZXQucXVlcnlTZWxlY3RvcignLmVycm9yLWNvbnRhaW5lcicpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2xpZW50SGVpZ2h0O1xuICAgICAgICAgICAgaWYgKHRvZ2dsZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBcIi5jb25jYXQoZWxIZWlnaHQsIFwicHg7XCIpO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IFwiLmNvbmNhdChlbEhlaWdodCwgXCJweDtcIik7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogYXV0bztcIjtcbiAgICAgICAgICAgICAgICAgICAgfSwgNjAwKTtcbiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGFjdGl2ZTogYWN0aXZlLCBwcm9wczogcHJvcHMsIHRvZ2dsZTogdG9nZ2xlLCBlcnJvckxlbmd0aDogZXJyb3JMZW5ndGgsIGFjY29yZGlvblRvZ2dsZTogYWNjb3JkaW9uVG9nZ2xlIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnRWxlbWVudFN0YXR1cycsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YTogeyB0eXBlOiBCb29sZWFuLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8yLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciBjb2xvciA9IGRhdGEudmFsdWUgPyAndGV4dC1zcHJpbmctNTAnIDogJ3RleHQtY3JpbXNvbi01MCcsIHRleHQgPSBkYXRhLnZhbHVlXG4gICAgICAgICAgICA/IGxhbmd1YWdlLmNvbW1vbl9sYW5nLmNvbXBsZXRlZFxuICAgICAgICAgICAgOiBsYW5ndWFnZS5jb21tb25fbGFuZy5ub3RfY29tcGxldGVkO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBsYW5ndWFnZTogbGFuZ3VhZ2UsIHByb3BzOiBwcm9wcywgZGF0YTogZGF0YSwgY29sb3I6IGNvbG9yLCB0ZXh0OiB0ZXh0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdQcmV2aW91c2x5UHVibGlzaGVkJyxcbiAgICBwcm9wczoge1xuICAgICAgICB0ZXh0OiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICBkZWZhdWx0OiB3aW5kb3dbJ2dsb2JhbExhbmcnXS5jb21tb25fbGFuZy5wcmV2aW91c2x5X3B1Ymxpc2hlZF9vbl9pYXRpLFxuICAgICAgICB9LFxuICAgICAgICBpY29uOiB7IHR5cGU6IFN0cmluZywgZGVmYXVsdDogJ2FwcHJvdmVkLWNsb3VkJyB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHt9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgbXVsdGlzZWxlY3RfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQHZ1ZWZvcm0vbXVsdGlzZWxlY3RcIikpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciBMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvTG9hZGVyLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0FjdGl2aXR5RGVmYXVsdFZhbHVlJyxcbiAgICBwcm9wczoge1xuICAgICAgICBjdXJyZW5jaWVzOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGxhbmd1YWdlczoge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBhY3Rpdml0eUlkOiB7IHR5cGU6IE51bWJlciwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgYnVkZ2V0Tm90UHJvdmlkZWQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgaHVtYW5pdGFyaWFuOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFByb3BzXG4gICAgICAgICAqL1xuICAgICAgICAvKipcbiAgICAgICAgICogUmVhY3RpdmUgdmFyaWFibGVzXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgZGVmYXVsdFZhbHVlcyA9ICgwLCB2dWVfMi5yZWYpKHtcbiAgICAgICAgICAgIGJ1ZGdldF9ub3RfcHJvdmlkZWQ6ICcnLFxuICAgICAgICAgICAgZGVmYXVsdF9jdXJyZW5jeTogJycsXG4gICAgICAgICAgICBkZWZhdWx0X2xhbmd1YWdlOiAnJyxcbiAgICAgICAgICAgIGhpZXJhcmNoeTogJycsXG4gICAgICAgICAgICBodW1hbml0YXJpYW46ICcnLFxuICAgICAgICB9KSwgZGVmYXVsdEVycm9ycyA9ICgwLCB2dWVfMi5yZWYpKHtcbiAgICAgICAgICAgIGJ1ZGdldF9ub3RfcHJvdmlkZWQ6IFtdLFxuICAgICAgICAgICAgZGVmYXVsdF9jdXJyZW5jeTogW10sXG4gICAgICAgICAgICBkZWZhdWx0X2xhbmd1YWdlOiBbXSxcbiAgICAgICAgICAgIGhpZXJhcmNoeTogW10sXG4gICAgICAgICAgICBodW1hbml0YXJpYW46IFtdLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGVycm9yUmVzZXQgPSBkZWZhdWx0RXJyb3JzLnZhbHVlO1xuICAgICAgICAvKipcbiAgICAgICAgICogT24gTW91bnRlZFxuICAgICAgICAgKi9cbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGRhdGEsIGRlZmF1bHREYXRhO1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gWzQgLyp5aWVsZCovLCBheGlvc18xLmRlZmF1bHQuZ2V0KFwiL2FjdGl2aXR5L1wiLmNvbmNhdChwcm9wcy5hY3Rpdml0eUlkLCBcIi9kZWZhdWx0X3ZhbHVlcy9kYXRhXCIpKV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSAoX2Euc2VudCgpKS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdERhdGEgPSBkYXRhLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVmYXVsdERhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWVzLnZhbHVlID0gZGVmYXVsdERhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9KTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFJlZlxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIGxvYWRlclZpc2liaWxpdHkgPSAoMCwgdnVlXzIucmVmKShmYWxzZSksIHRvYXN0VmlzaWJpbGl0eSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKSwgdG9hc3RNZXNzYWdlID0gKDAsIHZ1ZV8yLnJlZikoJycpLCB0b2FzdFR5cGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTdWJtaXQgZm9ybVxuICAgICAgICAgKlxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gc3VibWl0Rm9ybSgpIHtcbiAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHkudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgZGVmYXVsdEVycm9ycy52YWx1ZSA9IGVycm9yUmVzZXQ7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucHV0KFwiL2FjdGl2aXR5L1wiLmNvbmNhdChwcm9wcy5hY3Rpdml0eUlkLCBcIi9kZWZhdWx0X3ZhbHVlc1wiKSwgZGVmYXVsdFZhbHVlcy52YWx1ZSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHJldHVybiAodG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2UpOyB9LCA1MDAwKTtcbiAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2UudmFsdWUgPSByZXNwb25zZSA9PT0gbnVsbCB8fCByZXNwb25zZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVzcG9uc2UubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdFR5cGUudmFsdWUgPSByZXNwb25zZSA9PT0gbnVsbCB8fCByZXNwb25zZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVzcG9uc2Uuc3VjY2VzcztcbiAgICAgICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgICAgIGRlZmF1bHRFcnJvcnMudmFsdWUgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZGVmYXVsdEVycm9ycy52YWx1ZSksIChfYSA9IGVycm9yLnJlc3BvbnNlLmRhdGEpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5lcnJvcnMpO1xuICAgICAgICAgICAgICAgIHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdG9hc3RNZXNzYWdlLnZhbHVlID0gKF9iID0gZXJyb3IucmVzcG9uc2UuZGF0YSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgdG9hc3RUeXBlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgbGFuZ3VhZ2U6IGxhbmd1YWdlLCBwcm9wczogcHJvcHMsIGRlZmF1bHRWYWx1ZXM6IGRlZmF1bHRWYWx1ZXMsIGRlZmF1bHRFcnJvcnM6IGRlZmF1bHRFcnJvcnMsIGVycm9yUmVzZXQ6IGVycm9yUmVzZXQsIGxvYWRlclZpc2liaWxpdHk6IGxvYWRlclZpc2liaWxpdHksIHRvYXN0VmlzaWJpbGl0eTogdG9hc3RWaXNpYmlsaXR5LCB0b2FzdE1lc3NhZ2U6IHRvYXN0TWVzc2FnZSwgdG9hc3RUeXBlOiB0b2FzdFR5cGUsIHN1Ym1pdEZvcm06IHN1Ym1pdEZvcm0sIE11bHRpc2VsZWN0OiBtdWx0aXNlbGVjdF8xLmRlZmF1bHQsIExvYWRlcjogTG9hZGVyX3Z1ZV8xLmRlZmF1bHQsIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbi8vIGNvbXBvbmVudHNcbnZhciBJbmRleF8xID0gcmVxdWlyZShcIi4vZWxlbWVudHMvSW5kZXhcIik7XG52YXIgSG92ZXJUZXh0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0hvdmVyVGV4dC52dWVcIikpO1xudmFyIFJhZGlhbFByb2dyZXNzQmFyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1JhZGlhbFByb2dyZXNzQmFyLnZ1ZVwiKSk7XG52YXIgUHVibGlzaEJ1dHRvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9idXR0b25zL1B1Ymxpc2hCdXR0b24udnVlXCIpKTtcbnZhciBVblB1Ymxpc2hCdXR0b25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvYnV0dG9ucy9VblB1Ymxpc2hCdXR0b24udnVlXCIpKTtcbnZhciBEZWxldGVCdXR0b25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvYnV0dG9ucy9EZWxldGVCdXR0b24udnVlXCIpKTtcbnZhciBTdGlja3lFcnJvcnNfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvU3RpY2t5RXJyb3JzLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xudmFyIEVycm9yUG9wVXBfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvRXJyb3JQb3BVcC52dWVcIikpO1xudmFyIHRpdGxlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvdGl0bGVcIikpO1xuLy8gQWN0aXZpdHkgQ29tcG9uZW50c1xudmFyIEFjdGl2aXRpZXNFbGVtZW50c192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQWN0aXZpdHkvcGFydGlhbHMvQWN0aXZpdGllc0VsZW1lbnRzLnZ1ZVwiKSk7XG52YXIgQWN0aXZpdHlFbGVtZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJBY3Rpdml0eS9wYXJ0aWFscy9BY3Rpdml0eUVsZW1lbnQudnVlXCIpKTtcbnZhciBQcmV2aW91c2x5UHVibGlzaGVkX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3N0YXR1cy9QcmV2aW91c2x5UHVibGlzaGVkLnZ1ZVwiKSk7XG4vLyBWdWV4IFN0b3JlXG52YXIgc2hvd18xID0gcmVxdWlyZShcIlN0b3JlL2FjdGl2aXRpZXMvc2hvd1wiKTtcbnZhciBpbmRleF8xID0gcmVxdWlyZShcIlN0b3JlL2FjdGl2aXRpZXMvaW5kZXhcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBIb3ZlclRleHQ6IEhvdmVyVGV4dF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBQcm9ncmVzc0JhcjogUmFkaWFsUHJvZ3Jlc3NCYXJfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgRWxlbWVudHM6IEFjdGl2aXRpZXNFbGVtZW50c192dWVfMS5kZWZhdWx0LFxuICAgICAgICBBY3Rpdml0eUVsZW1lbnQ6IEFjdGl2aXR5RWxlbWVudF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBSZXN1bHQ6IEluZGV4XzEuUmVzdWx0LFxuICAgICAgICBQdWJsaXNoOiBQdWJsaXNoQnV0dG9uX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIEVycm9yczogU3RpY2t5RXJyb3JzX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFVuUHVibGlzaDogVW5QdWJsaXNoQnV0dG9uX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIERlbGV0ZUJ1dHRvbjogRGVsZXRlQnV0dG9uX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFByZXZpb3VzbHlQdWJsaXNoZWQ6IFByZXZpb3VzbHlQdWJsaXNoZWRfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgRXJyb3JQb3BVcDogRXJyb3JQb3BVcF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBUb2FzdDogVG9hc3RNZXNzYWdlX3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBlbGVtZW50czoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGdyb3Vwczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGFjdGl2aXR5OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgcHJvZ3Jlc3M6IHtcbiAgICAgICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0b2FzdDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RhdHVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVzdWx0czoge1xuICAgICAgICAgICAgdHlwZTogQXJyYXksXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHJhbnNhY3Rpb25zOiB7XG4gICAgICAgICAgICB0eXBlOiBBcnJheSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjb3JlQ29tcGxldGVkOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGlhdGlWYWxpZGF0b3JSZXNwb25zZToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGltcG9ydEFjdGl2aXR5RXJyb3I6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgX2IgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcyksIHR5cGVzID0gX2IudHlwZXMsIGNvcmVDb21wbGV0ZWQgPSBfYi5jb3JlQ29tcGxldGVkO1xuICAgICAgICB2YXIgcmVtb3ZlZCA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3JlbW92ZWQnKTtcbiAgICAgICAgdmFyIHN0b3JlID0gKDAsIHNob3dfMS5kZXRhaWxTdG9yZSkoKTtcbiAgICAgICAgdmFyIGluZGV4U3RvcmUgPSAoMCwgaW5kZXhfMS51c2VTdG9yZSkoKTtcbiAgICAgICAgdmFyIHNob3dTaWRlYmFyID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgcG9zaXRpb25ZID0gKDAsIHZ1ZV8xLnJlZikoMCk7XG4gICAgICAgIHZhciBzY3JlZW5XaWR0aCA9ICgwLCB2dWVfMS5yZWYpKDApO1xuICAgICAgICB2YXIgdG9hc3REYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBlcnJvckRhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgc2hvd1NpZGViYXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb3IgbW9kYWwgcG9wdXAgY29tcGxldGVkXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgX2MgPSAoMCwgY29yZV8xLnVzZVRvZ2dsZSkoKSwgZGVsZXRlVmFsdWUgPSBfY1swXSwgZGVsZXRlVG9nZ2xlID0gX2NbMV07XG4gICAgICAgIHZhciBfZCA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBkb3dubG9hZFZhbHVlID0gX2RbMF0sIGRvd25sb2FkVG9nZ2xlID0gX2RbMV07XG4gICAgICAgIHZhciB0b2dnbGVTaWRlYmFyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hvd1NpZGViYXIudmFsdWUgPSAhc2hvd1NpZGViYXIudmFsdWU7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBoYW5kbGVTY3JvbGwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBwb3NpdGlvblkudmFsdWUgPSB3aW5kb3cuc2Nyb2xsWTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGlzdG9wVmlzaWJsZSA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uWS52YWx1ZSA9PT0gMDtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB3aWR0aCA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLm9uVW5tb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKTtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxjV2lkdGgpO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVtb3ZlZCkge1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSAnUmVtb3ZlZCBzdWNjZXNmdWxseSc7XG4gICAgICAgICAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHNjcmVlbldpZHRoLnZhbHVlID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKTtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxjV2lkdGgpO1xuICAgICAgICAgICAgaWYgKHByb3BzLnRvYXN0Lm1lc3NhZ2UgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSBwcm9wcy50b2FzdC50eXBlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHByb3BzLnRvYXN0Lm1lc3NhZ2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgY2FsY1dpZHRoID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBzY3JlZW5XaWR0aC52YWx1ZSA9IGV2ZW50LnRhcmdldC5pbm5lcldpZHRoO1xuICAgICAgICAgICAgaWYgKHNjcmVlbldpZHRoLnZhbHVlID4gMTAyNCkge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHNob3dTaWRlYmFyLnZhbHVlICYmXG4gICAgICAgICAgICAgICAgICAgIChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc2hvd1NpZGViYXIudmFsdWU7IH0sIGZ1bmN0aW9uIChzaWRlYmFyKSB7XG4gICAgICAgICAgICBpZiAoc2lkZWJhcikge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gdG9hc3REYXRhLnZpc2liaWxpdHk7IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWdub3JlVG9hc3RVcGRhdGUoKTtcbiAgICAgICAgICAgIH0sIDEwMDAwKTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHcm91cGluZyBhbGwgdGhlIGRhdGEncyBmb3Igc2Nyb2xsIGZ1bmN0aW9uXG4gICAgICAgICAqXG4gICAgICAgICAqIHRoaXMgZGF0YSBpcyBjcmVhdGVkIHVzaW5nIHByb3BzLmVsZW1lbnRfZ3JvdXAgYW5kIHByb3BzLmFjdGl2aXR5XG4gICAgICAgICAqL1xuICAgICAgICB2YXIgX2UgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcyksIGdyb3VwcyA9IF9lLmdyb3VwcywgYWN0aXZpdHkgPSBfZS5hY3Rpdml0eSwgZWxlbWVudHMgPSBfZS5lbGVtZW50cywgc3RhdHVzID0gX2Uuc3RhdHVzLCB0cmFuc2FjdGlvbnMgPSBfZS50cmFuc2FjdGlvbnMsIGdyb3VwZWREYXRhID0gZ3JvdXBzLnZhbHVlLCBhY3Rpdml0eVByb3BzID0gYWN0aXZpdHkudmFsdWUsIGFjdGl2aXRpZXMgPSBncm91cHMudmFsdWUsIGVsZW1lbnRQcm9wcyA9IGVsZW1lbnRzLnZhbHVlLCBzdGF0dXNQcm9wcyA9IHN0YXR1cy52YWx1ZSwgdHJhbnNhY3Rpb25Qcm9wcyA9IHRyYW5zYWN0aW9ucy52YWx1ZTtcbiAgICAgICAgdmFyIHJlc3VsdHMgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykucmVzdWx0cztcbiAgICAgICAgYWN0aXZpdHlQcm9wcy5yZXN1bHQgPSByZXN1bHRzLnZhbHVlO1xuICAgICAgICBhY3Rpdml0eVByb3BzLnRyYW5zYWN0aW9ucyA9IHRyYW5zYWN0aW9uUHJvcHM7XG4gICAgICAgIC8vIGdlbmVyYXRpbmcgYXZhaWxhYmxlIGVsZW1lbnRzXG4gICAgICAgIE9iamVjdC5rZXlzKGFjdGl2aXRpZXMpLm1hcChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICB2YXIgZmxhZyA9IGZhbHNlO1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoYWN0aXZpdGllc1trZXldWydlbGVtZW50cyddKS5tYXAoZnVuY3Rpb24gKGspIHtcbiAgICAgICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgYWN0aXZpdHlQcm9wc1trXSA9PT0gJ251bWJlcicgfHxcbiAgICAgICAgICAgICAgICAgICAgKHR5cGVvZiBhY3Rpdml0eVByb3BzW2tdID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZpdHlQcm9wc1trXSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoYWN0aXZpdHlQcm9wc1trXSkubGVuZ3RoKSkge1xuICAgICAgICAgICAgICAgICAgICBhY3Rpdml0aWVzW2tleV1bJ2VsZW1lbnRzJ11ba11bJ2NvbnRlbnQnXSA9IGFjdGl2aXR5UHJvcHNba107XG4gICAgICAgICAgICAgICAgICAgIGFjdGl2aXRpZXNba2V5XVsnZWxlbWVudHMnXVtrXVsnaG92ZXJfdGV4dCddID1cbiAgICAgICAgICAgICAgICAgICAgICAgIChfYSA9IGVsZW1lbnRQcm9wc1trXVsnaG92ZXJfdGV4dCddKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJztcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZpdGllc1trZXldWydlbGVtZW50cyddW2tdWyd3YXJuaW5nX2luZm9fdGV4dCddID1cbiAgICAgICAgICAgICAgICAgICAgICAgIChfYiA9IGVsZW1lbnRQcm9wc1trXVsnd2FybmluZ19pbmZvX3RleHQnXSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogJyc7XG4gICAgICAgICAgICAgICAgICAgIGZsYWcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGFjdGl2aXRpZXNba2V5XVtrXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChmbGFnID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBhY3Rpdml0aWVzW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBnZW5lcmF0aW5nIGF2YWlsYWJsZSBjYXRlZ29yaWVzIG9mIGVsZW1lbnRzXG4gICAgICAgIE9iamVjdC5rZXlzKGdyb3VwZWREYXRhKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhY3Rpdml0aWVzLCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgZ3JvdXBlZERhdGFba2V5XVsnc3RhdHVzJ10gPSAnZW5hYmxlZCc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBncm91cGVkRGF0YVtrZXldWydzdGF0dXMnXSA9ICdkaXNhYmxlZCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvKipcbiAgICAgICAgICogR3JvdXBpbmcgYWxsIGVsZW1lbnRzIGFuZCB0aGVpcnMgY29tcGxldGVkIHN0YXR1c1xuICAgICAgICAgKlxuICAgICAgICAgKiBjb21iaW5pbmcgcHJvcHMuZWxlbWVudHMgYW5kIHByb3BzLnN0YXR1c1xuICAgICAgICAgKlxuICAgICAgICAgKiBAcmV0dXJucyBvYmplY3RcbiAgICAgICAgICovXG4gICAgICAgIE9iamVjdC5rZXlzKGVsZW1lbnRQcm9wcykubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICBlbGVtZW50UHJvcHNba2V5XVsnY29tcGxldGVkJ10gPSAoX2EgPSBzdGF0dXNQcm9wc1trZXldKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBmYWxzZTtcbiAgICAgICAgICAgIGVsZW1lbnRQcm9wc1trZXldWydub3RfY29tcGxldGVkJ10gPSAhKChfYiA9IHN0YXR1c1Byb3BzW2tleV0pICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IGZhbHNlKTtcbiAgICAgICAgICAgIGVsZW1lbnRQcm9wc1trZXldWydoYXNfZGF0YSddID0gMDtcbiAgICAgICAgICAgIGlmIChrZXkgaW4gYWN0aXZpdHlQcm9wcykge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgYWN0aXZpdHlQcm9wc1trZXldID09PSAnbnVtYmVyJyB8fFxuICAgICAgICAgICAgICAgICAgICAodHlwZW9mIGFjdGl2aXR5UHJvcHNba2V5XSA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2aXR5UHJvcHNba2V5XSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoYWN0aXZpdHlQcm9wc1trZXldKS5sZW5ndGgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhhY3Rpdml0eVByb3BzW2tleV0pLmxlbmd0aCA+IDAgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2aXR5UHJvcHNba2V5XS50b1N0cmluZy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50UHJvcHNba2V5XVsnaGFzX2RhdGEnXSA9IDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvKipcbiAgICAgICAgICogRmluZGluZyBjdXJyZW50IGxhbmd1YWdlIC0gYWN0aXZpdHkgdGl0bGVcbiAgICAgICAgICovXG4gICAgICAgIHZhciBwYWdlVGl0bGUgPSAoMCwgdGl0bGVfMS5kZWZhdWx0KShhY3Rpdml0eVByb3BzLnRpdGxlLCAoX2EgPSBhY3Rpdml0eVByb3BzLmRlZmF1bHRfZmllbGRfdmFsdWVzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGVmYXVsdF9sYW5ndWFnZSk7XG4gICAgICAgIGZ1bmN0aW9uIGZvcm1hdFRpdGxlKHRpdGxlKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICB2YXIgdHJhbnNsYXRlZFRpdGxlID0gKF9hID0gbGFuZ3VhZ2UuYWN0aXZpdHlfbGFuZ1t0aXRsZV0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sYWJlbDtcbiAgICAgICAgICAgIHJldHVybiAoMCwgdnVlXzEuY2FwaXRhbGl6ZSkodHJhbnNsYXRlZFRpdGxlICE9PSBudWxsICYmIHRyYW5zbGF0ZWRUaXRsZSAhPT0gdm9pZCAwID8gdHJhbnNsYXRlZFRpdGxlIDogdGl0bGUucmVwbGFjZSgvXy9naSwgJyAnKSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRvYXN0TWVzc2FnZSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBpZ25vcmVVcGRhdGVzID0gKDAsIGNvcmVfMS53YXRjaElnbm9yYWJsZSkodG9hc3REYXRhLCBmdW5jdGlvbiAoKSB7IHJldHVybiB1bmRlZmluZWQ7IH0sIHtcbiAgICAgICAgICAgIGZsdXNoOiAnc3luYycsXG4gICAgICAgIH0pLmlnbm9yZVVwZGF0ZXM7XG4gICAgICAgIHZhciBpZ25vcmVUb2FzdFVwZGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlnbm9yZVVwZGF0ZXMoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gJyc7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHB1Ymxpc2hTdGF0dXMgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIGxpbmtlZF90b19pYXRpOiBhY3Rpdml0eVByb3BzLmxpbmtlZF90b19pYXRpLFxuICAgICAgICAgICAgc3RhdHVzOiBhY3Rpdml0eVByb3BzLnN0YXR1cyxcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIHZ1ZSBwcm92aWRlc1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3R5cGVzJywgdHlwZXMudmFsdWUpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ2NvcmVDb21wbGV0ZWQnLCBjb3JlQ29tcGxldGVkLnZhbHVlKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCd0b2FzdE1lc3NhZ2UnLCB0b2FzdE1lc3NhZ2UpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3RvYXN0RGF0YScsIHRvYXN0RGF0YSk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgnZXJyb3JEYXRhJywgZXJyb3JEYXRhKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdpbXBvcnRBY3Rpdml0eUVycm9yJywgcHJvcHMuaW1wb3J0QWN0aXZpdHlFcnJvcik7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgnYWN0aXZpdHlJZCcsIHByb3BzLmFjdGl2aXR5LmlkKTtcbiAgICAgICAgaW5kZXhTdG9yZS5kaXNwYXRjaCgndXBkYXRlU2VsZWN0ZWRBY3Rpdml0aWVzJywgW2FjdGl2aXR5LnZhbHVlLmlkXSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBCcmVhZGNydW1iIGRhdGFcbiAgICAgICAgICovXG4gICAgICAgIHZhciBicmVhZGNydW1iRGF0YSA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogbGFuZ3VhZ2UuYWN0aXZpdGllc19sYW5nLnlvdXJfYWN0aXZpdGllcyxcbiAgICAgICAgICAgICAgICBsaW5rOiAnL2FjdGl2aXRpZXMnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcGFnZVRpdGxlLFxuICAgICAgICAgICAgICAgIGxpbms6ICcnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqICBHbG9iYWwgU3RhdGVcbiAgICAgICAgICovXG4gICAgICAgIHZhciBpYXRpVmFsaWRhdG9yUmVzcG9uc2UgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuaWF0aVZhbGlkYXRvclJlc3BvbnNlO1xuICAgICAgICB2YXIgdmFsaWRhdGlvblJlc3VsdCA9IGlhdGlWYWxpZGF0b3JSZXNwb25zZS52YWx1ZTtcbiAgICAgICAgaWYgKHZhbGlkYXRpb25SZXN1bHQgJiYgdmFsaWRhdGlvblJlc3VsdC5lcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVB1Ymxpc2hFcnJvcnMnLCB2YWxpZGF0aW9uUmVzdWx0LmVycm9ycyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHB1Ymxpc2hTdGF0dXMubGlua2VkX3RvX2lhdGkpIHtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVVblB1Ymxpc2hlZCcsIHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVVuUHVibGlzaGVkJywgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghKHB1Ymxpc2hTdGF0dXMubGlua2VkX3RvX2lhdGkgJiYgcHVibGlzaFN0YXR1cy5zdGF0dXMgPT09ICdwdWJsaXNoZWQnKSkge1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVNob3dQdWJsaXNoZWQnLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTaG93UHVibGlzaGVkJywgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0b1NuYWtlQ2FzZSA9IGZ1bmN0aW9uIChzZW50ZW5jZSkge1xuICAgICAgICAgICAgdmFyIHdvcmRzID0gc2VudGVuY2Uuc3BsaXQoJyAnKTtcbiAgICAgICAgICAgIHJldHVybiB3b3Jkcy5tYXAoZnVuY3Rpb24gKHdvcmQpIHsgcmV0dXJuIHdvcmQudG9Mb3dlckNhc2UoKTsgfSkuam9pbignXycpO1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ3JvdXBlZERhdGE6IGdyb3VwZWREYXRhLFxuICAgICAgICAgICAgYWN0aXZpdGllczogYWN0aXZpdGllcyxcbiAgICAgICAgICAgIGRlbGV0ZVZhbHVlOiBkZWxldGVWYWx1ZSxcbiAgICAgICAgICAgIGRlbGV0ZVRvZ2dsZTogZGVsZXRlVG9nZ2xlLFxuICAgICAgICAgICAgZG93bmxvYWRWYWx1ZTogZG93bmxvYWRWYWx1ZSxcbiAgICAgICAgICAgIGRvd25sb2FkVG9nZ2xlOiBkb3dubG9hZFRvZ2dsZSxcbiAgICAgICAgICAgIHRvYXN0RGF0YTogdG9hc3REYXRhLFxuICAgICAgICAgICAgZWxlbWVudFByb3BzOiBlbGVtZW50UHJvcHMsXG4gICAgICAgICAgICBwcm9wczogcHJvcHMsXG4gICAgICAgICAgICBmb3JtYXRUaXRsZTogZm9ybWF0VGl0bGUsXG4gICAgICAgICAgICBwYWdlVGl0bGU6IHBhZ2VUaXRsZSxcbiAgICAgICAgICAgIHRvYXN0TWVzc2FnZTogdG9hc3RNZXNzYWdlLFxuICAgICAgICAgICAgcHVibGlzaFN0YXR1czogcHVibGlzaFN0YXR1cyxcbiAgICAgICAgICAgIGJyZWFkY3J1bWJEYXRhOiBicmVhZGNydW1iRGF0YSxcbiAgICAgICAgICAgIHN0b3JlOiBzdG9yZSxcbiAgICAgICAgICAgIGFjdGl2aXR5UHJvcHM6IGFjdGl2aXR5UHJvcHMsXG4gICAgICAgICAgICBlcnJvckRhdGE6IGVycm9yRGF0YSxcbiAgICAgICAgICAgIHNob3dTaWRlYmFyOiBzaG93U2lkZWJhcixcbiAgICAgICAgICAgIHRvZ2dsZVNpZGViYXI6IHRvZ2dsZVNpZGViYXIsXG4gICAgICAgICAgICBpc3RvcFZpc2libGU6IGlzdG9wVmlzaWJsZSxcbiAgICAgICAgICAgIHNjcmVlbldpZHRoOiBzY3JlZW5XaWR0aCxcbiAgICAgICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICAgICAgICAgIHRvU25ha2VDYXNlOiB0b1NuYWtlQ2FzZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIFhsc1VwbG9hZEluZGljYXRvcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9YbHNVcGxvYWRJbmRpY2F0b3IudnVlXCIpKTtcbnZhciBFbXB0eUFjdGl2aXR5X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3BhcnRpYWxzL0VtcHR5QWN0aXZpdHkudnVlXCIpKTtcbnZhciBUYWJsZUxheW91dF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9wYXJ0aWFscy9UYWJsZUxheW91dC52dWVcIikpO1xudmFyIFRhYmxlUGFnaW5hdGlvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9UYWJsZVBhZ2luYXRpb24udnVlXCIpKTtcbnZhciBQYWdlVGl0bGVfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vcGFydGlhbHMvUGFnZVRpdGxlLnZ1ZVwiKSk7XG52YXIgTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0xvYWRlci52dWVcIikpO1xudmFyIEVycm9yTWVzc2FnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9FcnJvck1lc3NhZ2UudnVlXCIpKTtcbnZhciBpbmRleF8xID0gcmVxdWlyZShcIlN0b3JlL2FjdGl2aXRpZXMvaW5kZXhcIik7XG52YXIgc2hvd18xID0gcmVxdWlyZShcIlN0b3JlL2FjdGl2aXRpZXMvc2hvd1wiKTtcbnZhciBjb3JlXzIgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIHN0b3JlID0gKDAsIGluZGV4XzEudXNlU3RvcmUpKCk7XG52YXIgYWN0aXZpdHlTdG9yZSA9ICgwLCBzaG93XzEuZGV0YWlsU3RvcmUpKCk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0FjdGl2aXR5Q29tcG9uZW50JyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEVtcHR5QWN0aXZpdHk6IEVtcHR5QWN0aXZpdHlfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgUGFnZVRpdGxlOiBQYWdlVGl0bGVfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgUGFnaW5hdGlvbjogVGFibGVQYWdpbmF0aW9uX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFRhYmxlTGF5b3V0OiBUYWJsZUxheW91dF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBMb2FkZXI6IExvYWRlcl92dWVfMS5kZWZhdWx0LFxuICAgICAgICBFcnJvck1lc3NhZ2U6IEVycm9yTWVzc2FnZV92dWVfMS5kZWZhdWx0LFxuICAgICAgICBYbHNVcGxvYWRJbmRpY2F0b3I6IFhsc1VwbG9hZEluZGljYXRvcl92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgdG9hc3Q6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHZhciBhY3Rpdml0aWVzID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7fSk7XG4gICAgICAgIHZhciBpc0xvYWRpbmcgPSAoMCwgdnVlXzEucmVmKSh0cnVlKTtcbiAgICAgICAgdmFyIGFjdGl2aXR5TmFtZSA9ICgwLCB2dWVfMS5yZWYpKCcnKTtcbiAgICAgICAgdmFyIGZpbGVDb3VudCA9ICgwLCB2dWVfMS5yZWYpKDApO1xuICAgICAgICB2YXIgZG93bmxvYWRDb21wbGV0ZWQgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBjbG9zZU1vZGVsID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgeGxzRG93bmxvYWRTdGF0dXMgPSAoMCwgdnVlXzEucmVmKSgnJyk7XG4gICAgICAgIHZhciB4bHNEYXRhID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgZG93bmxvYWRpbmcgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzdGFydEJ1bGtQdWJsaXNoID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgeGxzRmFpbGVkID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgeGxzRmFpbGVkTWVzc2FnZSA9ICgwLCB2dWVfMS5yZWYpKCcnKTtcbiAgICAgICAgdmFyIHByb2Nlc3NpbmcgPSAoMCwgdnVlXzEucmVmKSgpO1xuICAgICAgICB2YXIgcHVibGlzaGluZ0FjdGl2aXRpZXMgPSAoMCwgdnVlXzEucmVmKSgpO1xuICAgICAgICB2YXIgdXBsb2FkQ29tcGxldGUgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBpbXBvcnRDb21wbGV0ZWQgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB0b3RhbENvdW50ID0gKDAsIHZ1ZV8xLnJlZikoKTtcbiAgICAgICAgdmFyIHByb2Nlc3NlZENvdW50ID0gKDAsIHZ1ZV8xLnJlZikoKTtcbiAgICAgICAgdmFyIHNob3dYbHNTdGF0dXMgPSAoMCwgdnVlXzEucmVmKSh0cnVlKTtcbiAgICAgICAgdmFyIHRhYmxlTG9hZGVyID0gKDAsIHZ1ZV8xLnJlZikodHJ1ZSk7XG4gICAgICAgIHZhciBkb3dubG9hZEFwaVVybCA9ICgwLCB2dWVfMS5yZWYpKCcnKTtcbiAgICAgICAgdmFyIGN1cnJlbnRVUkwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgICAgICAgdmFyIGVuZHBvaW50ID0gJyc7XG4gICAgICAgIHZhciBzaG93RW1wdHlUZW1wbGF0ZSA9IGZhbHNlO1xuICAgICAgICB2YXIgcGEgPSAoMCwgY29yZV8yLnVzZVN0b3JhZ2UpKCd2dWUtdXNlLWxvY2FsLXN0b3JhZ2UnLCB7XG4gICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllczogKF9hID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3B1Ymxpc2hpbmdBY3Rpdml0aWVzJykpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHt9LFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGN1cnJlbnRVUkwuaW5jbHVkZXMoJz8nKSkge1xuICAgICAgICAgICAgdmFyIHF1ZXJ5U3RyaW5nID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaDtcbiAgICAgICAgICAgIGVuZHBvaW50ID0gXCIvYWN0aXZpdGllcy9wYWdlXCIuY29uY2F0KHF1ZXJ5U3RyaW5nKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGVuZHBvaW50ID0gXCIvYWN0aXZpdGllcy9wYWdlXCI7XG4gICAgICAgICAgICBzaG93RW1wdHlUZW1wbGF0ZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIC8vZm9yIHNlc3Npb24gbWVzc2FnZVxuICAgICAgICB2YXIgdG9hc3REYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBlcnJvckRhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgLy8gZm9yIHB1Ymxpc2ggYnV0dG9uXG4gICAgICAgIHZhciB0b2FzdE1lc3NhZ2UgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBwb2xsaW5nRm9yWGxzU3RhdHVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGNoZWNrU3RhdHVzID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoJy9pbXBvcnQveGxzL3N0YXR1cycpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lLCBfZiwgX2csIF9oLCBfaiwgX2s7XG4gICAgICAgICAgICAgICAgICAgIGlmICgoKF9hID0gcmVzLmRhdGEuZGF0YSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm1lc3NhZ2UpID09PSAnU3RhcnRlZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vcmVzZXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsQ291bnQudmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkQ291bnQudmFsdWUgPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgeGxzRmFpbGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB4bHNGYWlsZWRNZXNzYWdlLnZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3RhbENvdW50LnZhbHVlID0gKF9iID0gcmVzLmRhdGEuZGF0YSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnRvdGFsX2NvdW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkQ291bnQudmFsdWUgPSAoX2MgPSByZXMuZGF0YS5kYXRhKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MucHJvY2Vzc2VkX2NvdW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgeGxzRmFpbGVkLnZhbHVlID0gISgoX2QgPSByZXMuZGF0YS5kYXRhKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Quc3VjY2Vzcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB4bHNGYWlsZWRNZXNzYWdlLnZhbHVlID0gKF9lID0gcmVzLmRhdGEuZGF0YSkgPT09IG51bGwgfHwgX2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9lLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCgoX2YgPSByZXMuZGF0YS5kYXRhKSA9PT0gbnVsbCB8fCBfZiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2YubWVzc2FnZSkgPT09ICdQcm9jZXNzaW5nJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2luZy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCEoKF9oID0gKF9nID0gcmVzLmRhdGEpID09PSBudWxsIHx8IF9nID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZy5kYXRhKSA9PT0gbnVsbCB8fCBfaCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2guc3VjY2VzcykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICgoX2sgPSAoX2ogPSByZXMuZGF0YSkgPT09IG51bGwgfHwgX2ogPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9qLmRhdGEpID09PSBudWxsIHx8IF9rID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfay5tZXNzYWdlKSA9PT0gJ0NvbXBsZXRlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXBsb2FkQ29tcGxldGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja1N0YXR1cyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sIDI1MDApO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLnN0YXJ0WGxzRG93bmxvYWQ7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY2hlY2tEb3dubG9hZFN0YXR1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gW3N0b3JlLnN0YXRlLnN0YXJ0QnVsa1B1Ymxpc2gsIHN0b3JlLnN0YXRlLmJ1bGtwdWJsaXNoQWN0aXZpdGllc107IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgc3RhcnRCdWxrUHVibGlzaC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXMudmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS5idWxrcHVibGlzaEFjdGl2aXRpZXMucHVibGlzaGluZ0FjdGl2aXRpZXM7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RhcnRCdWxrUHVibGlzaC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuY29tcGxldGVYbHNEb3dubG9hZDsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBkb3dubG9hZENvbXBsZXRlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJ0WGxzRG93bmxvYWQnLCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5jbG9zZVhsc01vZGVsOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGNoZWNrWGxzc3RhdHVzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgY2hlY2tYbHNzdGF0dXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KCcvaW1wb3J0L3hscy9wcm9ncmVzc19zdGF0dXMnKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lLCBfZiwgX2csIF9oO1xuICAgICAgICAgICAgICAgIGFjdGl2aXR5TmFtZS52YWx1ZSA9IChfYiA9IChfYSA9IHJlcyA9PT0gbnVsbCB8fCByZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlcy5kYXRhKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc3RhdHVzKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IudGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgeGxzRGF0YS52YWx1ZSA9IE9iamVjdC5rZXlzKHJlcy5kYXRhLnN0YXR1cykubGVuZ3RoID4gMDtcbiAgICAgICAgICAgICAgICBpZiAoKChfZCA9IChfYyA9IHJlcyA9PT0gbnVsbCB8fCByZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlcy5kYXRhKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Muc3RhdHVzKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Quc3RhdHVzKSA9PT0gJ2NvbXBsZXRlZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdXBsb2FkQ29tcGxldGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICgoKF9mID0gKF9lID0gcmVzID09PSBudWxsIHx8IHJlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVzLmRhdGEpID09PSBudWxsIHx8IF9lID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZS5zdGF0dXMpID09PSBudWxsIHx8IF9mID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZi5zdGF0dXMpID09PSAnZmFpbGVkJykge1xuICAgICAgICAgICAgICAgICAgICB4bHNGYWlsZWQudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB4bHNGYWlsZWRNZXNzYWdlLnZhbHVlID0gKF9oID0gKF9nID0gcmVzID09PSBudWxsIHx8IHJlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVzLmRhdGEpID09PSBudWxsIHx8IF9nID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZy5zdGF0dXMpID09PSBudWxsIHx8IF9oID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfaC5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChPYmplY3Qua2V5cyhyZXMuZGF0YS5zdGF0dXMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy9yZXNldFxuICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxDb3VudC52YWx1ZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWRDb3VudC52YWx1ZSA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICB4bHNGYWlsZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHhsc0ZhaWxlZE1lc3NhZ2UudmFsdWUgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvbGxpbmdGb3JYbHNTdGF0dXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgY2hlY2tEb3dubG9hZFN0YXR1cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGRvd25sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB2YXIgY2hlY2tEb3dubG9hZCA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KCcvYWN0aXZpdGllcy9kb3dubG9hZC14bHMtcHJvZ3Jlc3Mtc3RhdHVzJykudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbGVDb3VudC52YWx1ZSA9IHJlcy5kYXRhLmZpbGVfY291bnQ7XG4gICAgICAgICAgICAgICAgICAgIHhsc0Rvd25sb2FkU3RhdHVzLnZhbHVlID0gcmVzLmRhdGEuc3RhdHVzO1xuICAgICAgICAgICAgICAgICAgICBkb3dubG9hZEFwaVVybC52YWx1ZSA9IHJlcy5kYXRhLnVybDtcbiAgICAgICAgICAgICAgICAgICAgZG93bmxvYWRpbmcudmFsdWUgPSAhIXJlcy5kYXRhLnN0YXR1cztcbiAgICAgICAgICAgICAgICAgICAgaWYgKHhsc0Rvd25sb2FkU3RhdHVzLnZhbHVlID09PSAnY29tcGxldGVkJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgeGxzRG93bmxvYWRTdGF0dXMudmFsdWUgPT09ICdmYWlsZWQnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAhcmVzLmRhdGEuc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrRG93bmxvYWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LCAzMDAwKTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5jbG9zZVhsc01vZGVsOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBjaGVja0Rvd25sb2FkU3RhdHVzKCk7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllcy52YWx1ZSA9IChfYSA9IHBhLnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucHVibGlzaGluZ0FjdGl2aXRpZXM7XG4gICAgICAgICAgICBjaGVja1hsc3N0YXR1cygpO1xuICAgICAgICAgICAgY2hlY2tEb3dubG9hZFN0YXR1cygpO1xuICAgICAgICAgICAgaWYgKHByb3BzLnRvYXN0Lm1lc3NhZ2UgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSBwcm9wcy50b2FzdC50eXBlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHByb3BzLnRvYXN0Lm1lc3NhZ2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgdGFibGVMb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoZW5kcG9pbnQpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihhY3Rpdml0aWVzLCByZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRhYmxlTG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzaG93RW1wdHlUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNFbXB0eS52YWx1ZSA9ICFyZXNwb25zZS5kYXRhLmRhdGEubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiB0b2FzdERhdGEudmlzaWJpbGl0eTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZ25vcmVUb2FzdFVwZGF0ZSgpO1xuICAgICAgICAgICAgfSwgMTAwMDApO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHN0YXRlID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBzaG93QnV0dG9uczogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaXNFbXB0eSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNob3dPckhpZGUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICAgICAgaWYgKGRhdGEgPT09IHZvaWQgMCkgeyBkYXRhID0gQXJyYXk7IH1cbiAgICAgICAgICAgIGlmIChkYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBzdGF0ZS5zaG93QnV0dG9ucyA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzdGF0ZS5zaG93QnV0dG9ucyA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBmdW5jdGlvbiBmZXRjaEFjdGl2aXRpZXMoYWN0aXZlX3BhZ2UpIHtcbiAgICAgICAgICAgIHRhYmxlTG9hZGVyLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIHZhciBxdWVyeVN0cmluZyA9ICcnO1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRVUkwuaW5jbHVkZXMoJz8nKSkge1xuICAgICAgICAgICAgICAgIHF1ZXJ5U3RyaW5nID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoJy9hY3Rpdml0aWVzL3BhZ2UvJyArIGFjdGl2ZV9wYWdlICsgcXVlcnlTdHJpbmcpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oYWN0aXZpdGllcywgcmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgaXNFbXB0eS52YWx1ZSA9ICFyZXNwb25zZS5kYXRhO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0YWJsZUxvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBpZ25vcmVVcGRhdGVzID0gKDAsIGNvcmVfMS53YXRjaElnbm9yYWJsZSkodG9hc3REYXRhLCBmdW5jdGlvbiAoKSB7IHJldHVybiB1bmRlZmluZWQ7IH0sIHtcbiAgICAgICAgICAgIGZsdXNoOiAnc3luYycsXG4gICAgICAgIH0pLmlnbm9yZVVwZGF0ZXM7XG4gICAgICAgIHZhciBpZ25vcmVUb2FzdFVwZGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlnbm9yZVVwZGF0ZXMoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gJyc7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gZm9yIHJlZnJlc2ggdG9hc3QgbWVzc2FnZVxuICAgICAgICAvLyBsZXQgcmVmcmVzaFRvYXN0TXNnID0gcmVmKGZhbHNlKTtcbiAgICAgICAgdmFyIHJlZnJlc2hUb2FzdE1zZyA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICAgICAgICByZWZyZXNoTWVzc2FnZVR5cGU6IHRydWUsXG4gICAgICAgICAgICByZWZyZXNoTWVzc2FnZTogbGFuZ3VhZ2UuY29tbW9uX2xhbmcuYWN0aXZpdHlfaGFzX2JlZW5fcHVibGlzaGVkX3N1Y2Nlc3NmdWxseSxcbiAgICAgICAgfSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQcm92aWRlXG4gICAgICAgICAqL1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3RvYXN0TWVzc2FnZScsIHRvYXN0TWVzc2FnZSk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgndG9hc3REYXRhJywgdG9hc3REYXRhKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdlcnJvckRhdGEnLCBlcnJvckRhdGEpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3JlZnJlc2hUb2FzdE1zZycsIHJlZnJlc2hUb2FzdE1zZyk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgneGxzRmFpbGVkTWVzc2FnZScsIHhsc0ZhaWxlZE1lc3NhZ2UpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3Byb2Nlc3NpbmcnLCBwcm9jZXNzaW5nKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdkb3dubG9hZGluZycsIGRvd25sb2FkaW5nKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdmaWxlQ291bnQnLCBmaWxlQ291bnQpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3hsc0Rvd25sb2FkU3RhdHVzJywgeGxzRG93bmxvYWRTdGF0dXMpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ2Rvd25sb2FkQXBpVXJsJywgZG93bmxvYWRBcGlVcmwpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ2Nsb3NlTW9kZWwnLCBjbG9zZU1vZGVsKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdhY3Rpdml0aWVzJywgcHVibGlzaGluZ0FjdGl2aXRpZXMpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ2NvbXBsZXRlZCcsIHVwbG9hZENvbXBsZXRlKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFjdGl2aXRpZXM6IGFjdGl2aXRpZXMsXG4gICAgICAgICAgICBzdGF0ZTogc3RhdGUsXG4gICAgICAgICAgICBpc0VtcHR5OiBpc0VtcHR5LFxuICAgICAgICAgICAgaXNMb2FkaW5nOiBpc0xvYWRpbmcsXG4gICAgICAgICAgICBzaG93T3JIaWRlOiBzaG93T3JIaWRlLFxuICAgICAgICAgICAgZmV0Y2hBY3Rpdml0aWVzOiBmZXRjaEFjdGl2aXRpZXMsXG4gICAgICAgICAgICB0b2FzdERhdGE6IHRvYXN0RGF0YSxcbiAgICAgICAgICAgIHRvYXN0TWVzc2FnZTogdG9hc3RNZXNzYWdlLFxuICAgICAgICAgICAgcmVmcmVzaFRvYXN0TXNnOiByZWZyZXNoVG9hc3RNc2csXG4gICAgICAgICAgICBlcnJvckRhdGE6IGVycm9yRGF0YSxcbiAgICAgICAgICAgIHRhYmxlTG9hZGVyOiB0YWJsZUxvYWRlcixcbiAgICAgICAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICAgICAgICAgIHhsc0RhdGE6IHhsc0RhdGEsXG4gICAgICAgICAgICBhY3Rpdml0eU5hbWU6IGFjdGl2aXR5TmFtZSxcbiAgICAgICAgICAgIHByb2Nlc3NlZENvdW50OiBwcm9jZXNzZWRDb3VudCxcbiAgICAgICAgICAgIHRvdGFsQ291bnQ6IHRvdGFsQ291bnQsXG4gICAgICAgICAgICBzaG93WGxzU3RhdHVzOiBzaG93WGxzU3RhdHVzLFxuICAgICAgICAgICAgeGxzRmFpbGVkOiB4bHNGYWlsZWQsXG4gICAgICAgICAgICB4bHNGYWlsZWRNZXNzYWdlOiB4bHNGYWlsZWRNZXNzYWdlLFxuICAgICAgICAgICAgaW1wb3J0Q29tcGxldGVkOiBpbXBvcnRDb21wbGV0ZWQsXG4gICAgICAgICAgICBkb3dubG9hZENvbXBsZXRlZDogZG93bmxvYWRDb21wbGV0ZWQsXG4gICAgICAgICAgICB1cGxvYWRDb21wbGV0ZTogdXBsb2FkQ29tcGxldGUsXG4gICAgICAgICAgICBkb3dubG9hZGluZzogZG93bmxvYWRpbmcsXG4gICAgICAgICAgICBzdGFydEJ1bGtQdWJsaXNoOiBzdGFydEJ1bGtQdWJsaXNoLFxuICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXM6IHB1Ymxpc2hpbmdBY3Rpdml0aWVzLFxuICAgICAgICAgICAgYWN0aXZpdHlTdG9yZTogYWN0aXZpdHlTdG9yZSxcbiAgICAgICAgICAgIHBhOiBwYSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIFBvcHVwTW9kYWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uLy4uL2NvbXBvbmVudHMvUG9wdXBNb2RhbC52dWVcIikpO1xudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi4vLi4vY29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbnZhciBtdWx0aXNlbGVjdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJAdnVlZm9ybS9tdWx0aXNlbGVjdFwiKSk7XG52YXIgSG92ZXJUZXh0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi9jb21wb25lbnRzL0hvdmVyVGV4dC52dWVcIikpO1xudmFyIExvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi4vLi4vY29tcG9uZW50cy9Mb2FkZXIudnVlXCIpKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBNb2RhbDogUG9wdXBNb2RhbF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBIb3ZlclRleHQ6IEhvdmVyVGV4dF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBNdWx0aXNlbGVjdDogbXVsdGlzZWxlY3RfMS5kZWZhdWx0LFxuICAgICAgICBMb2FkZXI6IExvYWRlcl92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgbW9kYWxWYWx1ZToge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIGVtaXRzOiBbJ2Nsb3NlTW9kYWwnLCAndG9hc3QnXSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzLCBfYSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgZW1pdCA9IF9hLmVtaXQ7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgZm9ybURhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIG5hcnJhdGl2ZTogJycsXG4gICAgICAgICAgICBsYW5ndWFnZTogJycsXG4gICAgICAgICAgICBhY3Rpdml0eV9pZGVudGlmaWVyOiAnJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBlcnJvckRhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIG5hcnJhdGl2ZTogJycsXG4gICAgICAgICAgICBsYW5ndWFnZTogJycsXG4gICAgICAgICAgICBhY3Rpdml0eV9pZGVudGlmaWVyOiAnJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBsb2FkZXJWaXNpYmlsaXR5ID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgbGFuZ3VhZ2VzID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7fSk7XG4gICAgICAgIHZhciBvcmdhbml6YXRpb24gPSAoMCwgdnVlXzEucmVhY3RpdmUpKHt9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoJy9hY3Rpdml0aWVzL2NvZGVsaXN0cycpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihsYW5ndWFnZXMsIHJlc3BvbnNlLmRhdGEubGFuZ3VhZ2VzKTtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihvcmdhbml6YXRpb24sIHJlc3BvbnNlLmRhdGEub3JnYW5pemF0aW9uKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH0pO1xuICAgICAgICBmdW5jdGlvbiBjbG9zZU1vZGFsKCkge1xuICAgICAgICAgICAgZW1pdCgnY2xvc2VNb2RhbCcpO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHN0b3JlQWN0aXZpdHkoKSB7XG4gICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wb3N0KCcvYWN0aXZpdHknLCBmb3JtRGF0YSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIGVtaXQoJ2Nsb3NlTW9kYWwnKTtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBcIi9hY3Rpdml0eS9cIi5jb25jYXQocmVzcG9uc2UuZGF0YS5pZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdmFyIGVycm9ycyA9IGVycm9yLnJlc3BvbnNlLmRhdGEuZXJyb3JzO1xuICAgICAgICAgICAgICAgIGVycm9yRGF0YS5uYXJyYXRpdmUgPSBlcnJvcnMubmFycmF0aXZlID8gZXJyb3JzLm5hcnJhdGl2ZVswXSA6ICcnO1xuICAgICAgICAgICAgICAgIGVycm9yRGF0YS5sYW5ndWFnZSA9IGVycm9ycy5sYW5ndWFnZSA/IGVycm9ycy5sYW5ndWFnZVswXSA6ICcnO1xuICAgICAgICAgICAgICAgIGVycm9yRGF0YS5hY3Rpdml0eV9pZGVudGlmaWVyID0gZXJyb3JzLmFjdGl2aXR5X2lkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgPyBlcnJvcnMuYWN0aXZpdHlfaWRlbnRpZmllclswXVxuICAgICAgICAgICAgICAgICAgICA6ICcnO1xuICAgICAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHkudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcm9wczogcHJvcHMsXG4gICAgICAgICAgICBmb3JtRGF0YTogZm9ybURhdGEsXG4gICAgICAgICAgICBlcnJvckRhdGE6IGVycm9yRGF0YSxcbiAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHk6IGxvYWRlclZpc2liaWxpdHksXG4gICAgICAgICAgICBsYW5ndWFnZXM6IGxhbmd1YWdlcyxcbiAgICAgICAgICAgIG9yZ2FuaXphdGlvbjogb3JnYW5pemF0aW9uLFxuICAgICAgICAgICAgY2xvc2VNb2RhbDogY2xvc2VNb2RhbCxcbiAgICAgICAgICAgIHN0b3JlQWN0aXZpdHk6IHN0b3JlQWN0aXZpdHksXG4gICAgICAgICAgICBsYW5ndWFnZTogbGFuZ3VhZ2UsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdFcnJvckl0ZW0nLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBtZXNzYWdlOiB7IHR5cGU6IFN0cmluZywgZGVmYXVsdDogJycgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgc2VsZWN0ZWRBY3Rpdml0aWVzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3NlbGVjdGVkQWN0aXZpdGllcycpO1xuICAgICAgICB2YXIgdG9nZ2xlID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgYWNjb3JkaW9uVG9nZ2xlID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHZhciBjdXJyZW50VGFyZ2V0ID0gZS5jdXJyZW50VGFyZ2V0O1xuICAgICAgICAgICAgdmFyIHRhcmdldCA9IGN1cnJlbnRUYXJnZXQuY2xvc2VzdCgnLmFjY29yZGlvbicpLnF1ZXJ5U2VsZWN0b3IoJy5hY2NvcmRpb24tY29udGVudCcpO1xuICAgICAgICAgICAgdmFyIGVsSGVpZ2h0ID0gKF9hID0gdGFyZ2V0ID09PSBudWxsIHx8IHRhcmdldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGFyZ2V0LnF1ZXJ5U2VsZWN0b3IoJ2RpdicpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2xpZW50SGVpZ2h0O1xuICAgICAgICAgICAgaWYgKHRvZ2dsZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBcIi5jb25jYXQoZWxIZWlnaHQsIFwicHg7XCIpO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IFwiLmNvbmNhdChlbEhlaWdodCwgXCJweDtcIik7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogYXV0bztcIjtcbiAgICAgICAgICAgICAgICAgICAgfSwgNjAwKTtcbiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBlcnJvckNvdW50ID0gZnVuY3Rpb24gKGVycm9ycykge1xuICAgICAgICAgICAgdmFyIGVycm9yQ291bnQgPSAnJztcbiAgICAgICAgICAgIHZhciBzYyA9IGxhbmd1YWdlLmNvbW1vbl9sYW5nLnN0aWNreS5jb21tb247XG4gICAgICAgICAgICBpZiAoZXJyb3JzID09PSBudWxsIHx8IGVycm9ycyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXJyb3JzLndhcm5pbmcpIHtcbiAgICAgICAgICAgICAgICBlcnJvckNvdW50ID0gXCJcIi5jb25jYXQoZXJyb3JzID09PSBudWxsIHx8IGVycm9ycyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXJyb3JzLmVycm9yLCBcIiBcIikuY29uY2F0KHNjLmVycm9ycywgXCIgXCIpLmNvbmNhdChzYy5hbmQsIFwiIFwiKS5jb25jYXQoZXJyb3JzID09PSBudWxsIHx8IGVycm9ycyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXJyb3JzLndhcm5pbmcsIFwiIFwiKS5jb25jYXQoc2Mud2FybmluZ3MsIFwiXFxuICAgICBcIikuY29uY2F0KHNjLndlcmVfZm91bmQsIFwiLlwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGVycm9yQ291bnQgPSBcIlwiLmNvbmNhdChlcnJvcnMgPT09IG51bGwgfHwgZXJyb3JzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlcnJvcnMuY3JpdGljYWwsIFwiIFwiKS5jb25jYXQoc2MuY3JpdGljYWwsIFwiIFwiKS5jb25jYXQoc2MuZXJyb3JzLCBcIiBcIikuY29uY2F0KHNjLndlcmVfZm91bmQsIFwiLlwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBlcnJvckNvdW50O1xuICAgICAgICB9O1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBsYW5ndWFnZTogbGFuZ3VhZ2UsIHNlbGVjdGVkQWN0aXZpdGllczogc2VsZWN0ZWRBY3Rpdml0aWVzLCB0b2dnbGU6IHRvZ2dsZSwgYWNjb3JkaW9uVG9nZ2xlOiBhY2NvcmRpb25Ub2dnbGUsIGVycm9yQ291bnQ6IGVycm9yQ291bnQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbi8vY29tcG9uZW50XG52YXIgQnV0dG9uQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWVcIikpO1xudmFyIFBvcHVwTW9kYWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvUG9wdXBNb2RhbC52dWVcIikpO1xudmFyIFByb2dyZXNzTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1Byb2dyZXNzTG9hZGVyLnZ1ZVwiKSk7XG52YXIgVmFsaWRhdGlvbkVycm9yc192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9WYWxpZGF0aW9uRXJyb3JzLnZ1ZVwiKSk7XG52YXIgTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0xvYWRlci52dWVcIikpO1xuLy8gVnVleCBTdG9yZVxudmFyIGluZGV4XzEgPSByZXF1aXJlKFwiU3RvcmUvYWN0aXZpdGllcy9pbmRleFwiKTtcbnZhciBCdWxrUHVibGlzaGluZ0Vycm9yUG9wdXBfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvQnVsa1B1Ymxpc2hpbmdFcnJvclBvcHVwLnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnUHVibGlzaFNlbGVjdGVkJyxcbiAgICBwcm9wczoge1xuICAgICAgICB0eXBlOiB7IHR5cGU6IFN0cmluZywgZGVmYXVsdDogJ3ByaW1hcnknIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBfYjtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICAvKipcbiAgICAgICAgICogIEdsb2JhbCBTdGF0ZVxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIHN0b3JlID0gKDAsIGluZGV4XzEudXNlU3RvcmUpKCk7XG4gICAgICAgIC8vIHRvZ2dsZSBzdGF0ZSBmb3IgbW9kYWwgcG9wdXBcbiAgICAgICAgdmFyIF9jID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIHB1Ymxpc2hBbGVydFZhbHVlID0gX2NbMF0sIHB1Ymxpc2hBbGVydFRvZ2dsZSA9IF9jWzFdO1xuICAgICAgICAvLyBzdGF0ZSBmb3Igc3RlcCBvZiB0aGUgZmxvd1xuICAgICAgICB2YXIgYnVsa1B1Ymxpc2hTdGVwID0gKDAsIHZ1ZV8yLnJlZikoMSk7XG4gICAgICAgIHZhciBidWxrUHVibGlzaFN0YXR1cyA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe30pO1xuICAgICAgICB2YXIgaXNMb2FkaW5nID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc3RhcnRQdWJsaXNoID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgcHVibGlzaGVkID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICAvLyBkaXNwbGF5L2hpZGUgdmFsaWRhdG9yIGxvYWRlclxuICAgICAgICB2YXIgbG9hZGVyID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICAvLyBEeW5hbWljIHRleHQgZm9yIGxvYWRlclxuICAgICAgICB2YXIgbG9hZGVyVGV4dCA9ICgwLCB2dWVfMi5yZWYpKGxhbmd1YWdlLmNvbW1vbl9sYW5nLnBsZWFzZV93YWl0KTtcbiAgICAgICAgLypTdGF0ZXMgZm9yIEJ1bGsgcHVibGlzaCBjYW5jZWxsYXRpb24gZmxvdyovXG4gICAgICAgIHZhciBzaG93Q2FuY2VsQ29uZmlybWF0aW9uUG9wdXAgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93Q2FuY2VsbGVkUG9wdXAgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBtZXNzYWdlT25DYW5jZWxsYXRpb24gPSAoMCwgdnVlXzIucmVmKSgnTm8gYnVsayBwdWJsaXNoIHdlcmUgY2FuY2VsbGVkJyk7XG4gICAgICAgIC8vIHJlc2V0IHN0ZXAgdG8gemVybyBhZnRlciBjbG9zaW5nIG1vZGFsXG4gICAgICAgIHZhciByZXNldFB1Ymxpc2hTdGVwID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgYnVsa1B1Ymxpc2hTdGVwLnZhbHVlID0gMTtcbiAgICAgICAgICAgIHB1Ymxpc2hBbGVydFZhbHVlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICBzZWxlY3RlZEFjdGl2aXRpZXMudmFsdWUgPSBbXTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHBvcFVwV2lkdGhDaGFuZ2UgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB3aWR0aCA9ICgwLCB2dWVfMi5yZWYpKCc4MjUnKTtcbiAgICAgICAgICAgIHN3aXRjaCAoYnVsa1B1Ymxpc2hTdGVwLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICB3aWR0aC52YWx1ZSA9ICc1ODMnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoLnZhbHVlID0gJzgwOSc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gd2lkdGgudmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyB0b2FzdCB2aXNpYmlsaXR5XG4gICAgICAgIHZhciBlcnJvckRhdGEgPSAoMCwgdnVlXzIuaW5qZWN0KSgnZXJyb3JEYXRhJyk7XG4gICAgICAgIHZhciBkaXNwbGF5VG9hc3QgPSBmdW5jdGlvbiAobWVzc2FnZSwgdHlwZSkge1xuICAgICAgICAgICAgZXJyb3JEYXRhLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgICAgICAgICAgZXJyb3JEYXRhLnR5cGUgPSB0eXBlO1xuICAgICAgICAgICAgZXJyb3JEYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZW1wdHlidWxrUHVibGlzaFN0YXR1cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZvciAodmFyIHN0YXR1c18xIGluIGJ1bGtQdWJsaXNoU3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGJ1bGtQdWJsaXNoU3RhdHVzW3N0YXR1c18xXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGNoZWNrIHB1Ymxpc2ggc3RhdHVzXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgY2hlY2tQdWJsaXNoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaXNMb2FkaW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5nZXQoXCIvYWN0aXZpdGllcy9jaGVja3MtZm9yLWFjdGl2aXR5LWJ1bGstcHVibGlzaFwiKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoQWxlcnRWYWx1ZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UgPT09IG51bGwgfHwgcmVzcG9uc2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlc3BvbnNlLmluX3Byb2dyZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbXB0eWJ1bGtQdWJsaXNoU3RhdHVzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGJ1bGtQdWJsaXNoU3RhdHVzLCByZXNwb25zZS5kYXRhLmFjdGl2aXRpZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NhbmNlbENvbmZpcm1hdGlvbk1vZGFsKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5VG9hc3QocmVzcG9uc2UubWVzc2FnZSwgcmVzcG9uc2Uuc3VjY2Vzcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5maW5hbGx5KGZ1bmN0aW9uICgpIHsgcmV0dXJuIChpc0xvYWRpbmcudmFsdWUgPSBmYWxzZSk7IH0pO1xuICAgICAgICB9O1xuICAgICAgICAvKipcbiAgICAgICAgICogVmVyaWZ5IGNvcmUgZWxlbWVudHNcbiAgICAgICAgICovXG4gICAgICAgIHZhciBjb3JlQ29tcGxldGVkQWN0aXZpdGllcyA9ICgwLCB2dWVfMi5yZWYpKFtdKSwgY29yZUluQ29tcGxldGVkQWN0aXZpdGllcyA9ICgwLCB2dWVfMi5yZWYpKFtdKSwgcGVybWFsaW5rID0gXCIvYWN0aXZpdHkvXCI7XG4gICAgICAgIHZhciB2ZXJpZnlDb3JlRWxlbWVudHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBsb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgbG9hZGVyVGV4dC52YWx1ZSA9IGxhbmd1YWdlLmNvbW1vbl9sYW5nLnZlcmlmeWluZ19jb3JlX2VsZW1lbnRzO1xuICAgICAgICAgICAgdmFyIGFjdGl2aXRpZXMgPSBzdG9yZS5zdGF0ZS5zZWxlY3RlZEFjdGl2aXRpZXMuam9pbignLCAnKTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5nZXQoXCIvYWN0aXZpdGllcy9jb3JlLWVsZW1lbnRzLWNvbXBsZXRlZD9hY3Rpdml0aWVzPVtcIi5jb25jYXQoYWN0aXZpdGllcywgXCJdXCIpKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBjb3JlQ29tcGxldGVkQWN0aXZpdGllcy52YWx1ZSA9IHJlc3BvbnNlLmRhdGEuY29tcGxldGU7XG4gICAgICAgICAgICAgICAgICAgIGNvcmVJbkNvbXBsZXRlZEFjdGl2aXRpZXMudmFsdWUgPSByZXNwb25zZS5kYXRhLmluY29tcGxldGU7XG4gICAgICAgICAgICAgICAgICAgIGJ1bGtQdWJsaXNoU3RlcC52YWx1ZSA9IDI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcmVzZXRQdWJsaXNoU3RlcCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UgPT09IG51bGwgfHwgcmVzcG9uc2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlc3BvbnNlLmluX3Byb2dyZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbXB0eWJ1bGtQdWJsaXNoU3RhdHVzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGJ1bGtQdWJsaXNoU3RhdHVzLCByZXNwb25zZS5kYXRhLmFjdGl2aXRpZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NhbmNlbENvbmZpcm1hdGlvbk1vZGFsKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5VG9hc3QocmVzcG9uc2UubWVzc2FnZSwgcmVzcG9uc2Uuc3VjY2Vzcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0sIDIwMDApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBWYWxpZGF0aW5nIEFjdGl2aXRpZXNcbiAgICAgICAgICovXG4gICAgICAgIHZhciB2YWxpZGF0aW9uRXJyb3JzID0gKDAsIHZ1ZV8yLnJlZikoe30pO1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLmdldChcImFjdGl2aXRpZXMvYnVsay1wdWJsaXNoLXN0YXR1cz9vcmdhbml6YXRpb25faWQ9XCIuY29uY2F0KChfYSA9IHBhLnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucHVibGlzaGluZ0FjdGl2aXRpZXMub3JnYW5pemF0aW9uX2lkLCBcIiYmdXVpZD1cIikuY29uY2F0KChfYiA9IHBhLnZhbHVlKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IucHVibGlzaGluZ0FjdGl2aXRpZXMuam9iX2JhdGNoX3V1aWQpKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oKF9hID0gcGEudmFsdWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5wdWJsaXNoaW5nQWN0aXZpdGllcywgKF9iID0gcmVzLmRhdGEpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5kYXRhKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHZhbGlkYXRlQWN0aXZpdGllcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBsb2FkZXJUZXh0LnZhbHVlID0gbGFuZ3VhZ2UuY29tbW9uX2xhbmcudmFsaWRhdGluZ19hY3Rpdml0aWVzO1xuICAgICAgICAgICAgdmFyIGFjdGl2aXRpZXMgPSBzdG9yZS5zdGF0ZS5zZWxlY3RlZEFjdGl2aXRpZXMuam9pbignLCAnKTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wb3N0KFwiL2FjdGl2aXRpZXMvdmFsaWRhdGUtYWN0aXZpdGllcz9hY3Rpdml0aWVzPVtcIi5jb25jYXQoYWN0aXZpdGllcywgXCJdXCIpKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBidWxrUHVibGlzaFN0ZXAudmFsdWUgPSAzO1xuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uRXJyb3JzLnZhbHVlID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc2V0UHVibGlzaFN0ZXAoKTtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheVRvYXN0KHJlc3BvbnNlLm1lc3NhZ2UsIHJlc3BvbnNlLnN1Y2Nlc3MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSwgMjAwMCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEJ1bGsgcHVibGlzaGluZyBhY3Rpdml0aWVzXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgc2VsZWN0ZWRBY3Rpdml0aWVzID0gKDAsIHZ1ZV8yLnJlZikoW10pO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ3NlbGVjdGVkQWN0aXZpdGllcycsIHNlbGVjdGVkQWN0aXZpdGllcyk7XG4gICAgICAgIC8vIGxvY2FsIHN0b3JhZ2UgZm9yIHB1Ymxpc2hpbmdcbiAgICAgICAgdmFyIHBhID0gKDAsIGNvcmVfMS51c2VTdG9yYWdlKSgndnVlLXVzZS1sb2NhbC1zdG9yYWdlJywge1xuICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXM6IChfYiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdwdWJsaXNoaW5nQWN0aXZpdGllcycpKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiB7fSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBzdGFydEJ1bGtQdWJsaXNoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJ0QnVsa1B1Ymxpc2gnLCB0cnVlKTtcbiAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBsb2FkZXJUZXh0LnZhbHVlID0gbGFuZ3VhZ2UuY29tbW9uX2xhbmcuc3RhcnRpbmdfdG9fcHVibGlzaDtcbiAgICAgICAgICAgIHBhLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzID0ge307XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAuZ2V0KFwiYWN0aXZpdGllcy9zdGFydC1idWxrLXB1Ymxpc2g/YWN0aXZpdGllcz1bXCIuY29uY2F0KHNlbGVjdGVkQWN0aXZpdGllcy52YWx1ZSwgXCJdXCIpKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU3RhcnRCdWxrUHVibGlzaCcsIHRydWUpO1xuICAgICAgICAgICAgICAgIHN0YXJ0UHVibGlzaC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVsa1B1Ymxpc2hTdGVwLnZhbHVlID0gMTtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaEFsZXJ0VmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcGEudmFsdWUucHVibGlzaGluZ0FjdGl2aXRpZXMgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJlc2V0UHVibGlzaFN0ZXAoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlID09PSBudWxsIHx8IHJlc3BvbnNlID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXNwb25zZS5pbl9wcm9ncmVzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW1wdHlidWxrUHVibGlzaFN0YXR1cygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihidWxrUHVibGlzaFN0YXR1cywgcmVzcG9uc2UuZGF0YS5hY3Rpdml0aWVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ocGEudmFsdWUucHVibGlzaGluZ0FjdGl2aXRpZXMsIHJlc3BvbnNlLmRhdGEuYWN0aXZpdGllcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlQnVsa3B1Ymxpc2hBY3Rpdml0aWVzJywgcmVzcG9uc2UuZGF0YS5hY3Rpdml0aWVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDYW5jZWxDb25maXJtYXRpb25Nb2RhbCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheVRvYXN0KHJlc3BvbnNlLm1lc3NhZ2UsIHJlc3BvbnNlLnN1Y2Nlc3MpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaGVkLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHBhLnZhbHVlOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2Q7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlQnVsa1B1Ymxpc2hMZW5ndGgnLCAoKF9iID0gKF9hID0gcGEgPT09IG51bGwgfHwgcGEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhLnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucHVibGlzaGluZ0FjdGl2aXRpZXMpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5hY3Rpdml0aWVzKSAmJlxuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKChfZCA9IChfYyA9IHBhID09PSBudWxsIHx8IHBhID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYS52YWx1ZSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLnB1Ymxpc2hpbmdBY3Rpdml0aWVzKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2QuYWN0aXZpdGllcylcbiAgICAgICAgICAgICAgICAgICAgLmxlbmd0aCk7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlQnVsa3B1Ymxpc2hBY3Rpdml0aWVzJywgcGEgPT09IG51bGwgfHwgcGEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhLnZhbHVlKTtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICAvKkNhbmNlbHMgb24tZ29pbmcgYnVsayBwdWJsaXNoKi9cbiAgICAgICAgdmFyIGNhbmNlbE90aGVyQnVsa1B1Ymxpc2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBsb2FkZXJUZXh0LnZhbHVlID0gJ0NhbmNlbGxpbmcgQnVsayBQdWJsaXNoJztcbiAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBjbG9zZUNhbmNlbENvbmZpcm1hdGlvbk1vZGFsKCk7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KCdhY3Rpdml0aWVzL2NhbmNlbC1idWxrLXB1Ymxpc2gnKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBzZXRDYW5jZWxsYXRpb25NZXNzYWdlKHJlcy5kYXRhLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICBzaG93Q2FuY2VsbGVkRGV0YWlsUG9wdXAoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0sIDUwMCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgLypTaG93IG1vZGFsIHRoYXQgc2hvd3MgbnVtYmVyIG9mIGJ1bGsgcHVibGlzaCBjYW5jZWxsZWQgKi9cbiAgICAgICAgdmFyIHNob3dDYW5jZWxsZWREZXRhaWxQb3B1cCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGVycm9yRGF0YS52aXNpYmlsaXR5ID0gZmFsc2U7XG4gICAgICAgICAgICBzaG93Q2FuY2VsbGVkUG9wdXAudmFsdWUgPSB0cnVlO1xuICAgICAgICB9O1xuICAgICAgICAvKlNldHMgbWVzc2FnZSBpbiBtb2RhbCB0cmlnZ2VyZWQgYnkgc2hvd0NhbmNlbGxlZERldGFpbFBvcHVwKCkgKi9cbiAgICAgICAgdmFyIHNldENhbmNlbGxhdGlvbk1lc3NhZ2UgPSBmdW5jdGlvbiAobXNnKSB7XG4gICAgICAgICAgICBlcnJvckRhdGEudmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgICAgICAgICAgbWVzc2FnZU9uQ2FuY2VsbGF0aW9uLnZhbHVlID0gbXNnO1xuICAgICAgICB9O1xuICAgICAgICAvKkNsb3NlcyBDYW5jZWwgQ29uZmlybWF0aW9uIFBvcHVwKi9cbiAgICAgICAgdmFyIGNsb3NlQ2FuY2VsbGVkRGV0YWlsc1BvcHVwID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZXJyb3JEYXRhLnZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICAgICAgICAgIHNob3dDYW5jZWxsZWRQb3B1cC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB9O1xuICAgICAgICAvKk9wZW5zIG1vZGFsIHRoYXQgYWxsb3dzIHRvIGNhbmNlbCBleGlzdGluZyBidWxrIHB1Ymxpc2gqL1xuICAgICAgICB2YXIgc2hvd0NhbmNlbENvbmZpcm1hdGlvbk1vZGFsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hvd0NhbmNlbENvbmZpcm1hdGlvblBvcHVwLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgfTtcbiAgICAgICAgLypDbG9zZXMgbW9kYWwgdGhhdCBhbGxvd3MgdG8gY2FuY2VsIGV4aXN0aW5nIGJ1bGsgcHVibGlzaCovXG4gICAgICAgIHZhciBjbG9zZUNhbmNlbENvbmZpcm1hdGlvbk1vZGFsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hvd0NhbmNlbENvbmZpcm1hdGlvblBvcHVwLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIH07XG4gICAgICAgIC8qIFRyaWdnZXIgdGhlIG5vcm1hbCBmbG93IG9mIGJ1bGsgcHVibGlzaGluZyBhY3Rpdml0aWVzKi9cbiAgICAgICAgdmFyIHB1Ymxpc2hBZnRlckNhbmNlbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNob3dDYW5jZWxsZWRQb3B1cC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgY2hlY2tQdWJsaXNoKCk7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgncGFTdG9yYWdlJywgcGEpO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ2J1bGtQdWJsaXNoU3RhdHVzJywgYnVsa1B1Ymxpc2hTdGF0dXMpO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ3N0YXJ0UHVibGlzaCcsIHN0YXJ0UHVibGlzaCk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGxhbmd1YWdlOiBsYW5ndWFnZSwgc3RvcmU6IHN0b3JlLCBwdWJsaXNoQWxlcnRWYWx1ZTogcHVibGlzaEFsZXJ0VmFsdWUsIHB1Ymxpc2hBbGVydFRvZ2dsZTogcHVibGlzaEFsZXJ0VG9nZ2xlLCBidWxrUHVibGlzaFN0ZXA6IGJ1bGtQdWJsaXNoU3RlcCwgYnVsa1B1Ymxpc2hTdGF0dXM6IGJ1bGtQdWJsaXNoU3RhdHVzLCBpc0xvYWRpbmc6IGlzTG9hZGluZywgc3RhcnRQdWJsaXNoOiBzdGFydFB1Ymxpc2gsIHB1Ymxpc2hlZDogcHVibGlzaGVkLCBsb2FkZXI6IGxvYWRlciwgbG9hZGVyVGV4dDogbG9hZGVyVGV4dCwgc2hvd0NhbmNlbENvbmZpcm1hdGlvblBvcHVwOiBzaG93Q2FuY2VsQ29uZmlybWF0aW9uUG9wdXAsIHNob3dDYW5jZWxsZWRQb3B1cDogc2hvd0NhbmNlbGxlZFBvcHVwLCBtZXNzYWdlT25DYW5jZWxsYXRpb246IG1lc3NhZ2VPbkNhbmNlbGxhdGlvbiwgcmVzZXRQdWJsaXNoU3RlcDogcmVzZXRQdWJsaXNoU3RlcCwgcG9wVXBXaWR0aENoYW5nZTogcG9wVXBXaWR0aENoYW5nZSwgZXJyb3JEYXRhOiBlcnJvckRhdGEsIGRpc3BsYXlUb2FzdDogZGlzcGxheVRvYXN0LCBlbXB0eWJ1bGtQdWJsaXNoU3RhdHVzOiBlbXB0eWJ1bGtQdWJsaXNoU3RhdHVzLCBjaGVja1B1Ymxpc2g6IGNoZWNrUHVibGlzaCwgY29yZUNvbXBsZXRlZEFjdGl2aXRpZXM6IGNvcmVDb21wbGV0ZWRBY3Rpdml0aWVzLCBjb3JlSW5Db21wbGV0ZWRBY3Rpdml0aWVzOiBjb3JlSW5Db21wbGV0ZWRBY3Rpdml0aWVzLCBwZXJtYWxpbms6IHBlcm1hbGluaywgdmVyaWZ5Q29yZUVsZW1lbnRzOiB2ZXJpZnlDb3JlRWxlbWVudHMsIHZhbGlkYXRpb25FcnJvcnM6IHZhbGlkYXRpb25FcnJvcnMsIHZhbGlkYXRlQWN0aXZpdGllczogdmFsaWRhdGVBY3Rpdml0aWVzLCBzZWxlY3RlZEFjdGl2aXRpZXM6IHNlbGVjdGVkQWN0aXZpdGllcywgcGE6IHBhLCBzdGFydEJ1bGtQdWJsaXNoOiBzdGFydEJ1bGtQdWJsaXNoLCBjYW5jZWxPdGhlckJ1bGtQdWJsaXNoOiBjYW5jZWxPdGhlckJ1bGtQdWJsaXNoLCBzaG93Q2FuY2VsbGVkRGV0YWlsUG9wdXA6IHNob3dDYW5jZWxsZWREZXRhaWxQb3B1cCwgc2V0Q2FuY2VsbGF0aW9uTWVzc2FnZTogc2V0Q2FuY2VsbGF0aW9uTWVzc2FnZSwgY2xvc2VDYW5jZWxsZWREZXRhaWxzUG9wdXA6IGNsb3NlQ2FuY2VsbGVkRGV0YWlsc1BvcHVwLCBzaG93Q2FuY2VsQ29uZmlybWF0aW9uTW9kYWw6IHNob3dDYW5jZWxDb25maXJtYXRpb25Nb2RhbCwgY2xvc2VDYW5jZWxDb25maXJtYXRpb25Nb2RhbDogY2xvc2VDYW5jZWxDb25maXJtYXRpb25Nb2RhbCwgcHVibGlzaEFmdGVyQ2FuY2VsOiBwdWJsaXNoQWZ0ZXJDYW5jZWwsIEJ0bkNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQsIE1vZGFsOiBQb3B1cE1vZGFsX3Z1ZV8xLmRlZmF1bHQsIExvYWRlcjogUHJvZ3Jlc3NMb2FkZXJfdnVlXzEuZGVmYXVsdCwgVmFsaWRhdGlvbkVycm9yczogVmFsaWRhdGlvbkVycm9yc192dWVfMS5kZWZhdWx0LCBQYWdlTG9hZGVyOiBMb2FkZXJfdnVlXzEuZGVmYXVsdCwgQnVsa1B1Ymxpc2hpbmdFcnJvclBvcHVwOiBCdWxrUHVibGlzaGluZ0Vycm9yUG9wdXBfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1JlZnJlc2hUb2FzdCcsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgbWVzc2FnZTogeyB0eXBlOiBTdHJpbmcsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHR5cGU6IHsgdHlwZTogQm9vbGVhbiwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgY2xhc3NOYW1lID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICBjbGFzc05hbWUudmFsdWUgPSBwcm9wcy50eXBlXG4gICAgICAgICAgICA/ICdiZy1taW50IGJvcmRlci1zcHJpbmctMTAnXG4gICAgICAgICAgICA6ICdiZy1jcmltc29uLTEwIGJvcmRlci1jcmltc29uLTIwJztcbiAgICAgICAgdmFyIGNsYXNzTmFtZTIgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIGNsYXNzTmFtZTIudmFsdWUgPSBwcm9wcy50eXBlXG4gICAgICAgICAgICA/ICd0ZXh0LXNwcmluZy01MCBob3Zlcjp0ZXh0LXNwcmluZy01MCdcbiAgICAgICAgICAgIDogJ3RleHQtY3JpbXNvbi01MCBob3Zlcjp0ZXh0LWNyaW1zb24tNTAnO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBsYW5ndWFnZTogbGFuZ3VhZ2UsIHByb3BzOiBwcm9wcywgY2xhc3NOYW1lOiBjbGFzc05hbWUsIGNsYXNzTmFtZTI6IGNsYXNzTmFtZTIgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIEVycm9ySXRlbV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9FcnJvckl0ZW0udnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdWYWxpZGF0aW9uRXJyb3JzJyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgY3JpdGljYWxNZXNzYWdlID0gbGFuZ3VhZ2UuY29tbW9uX2xhbmcubWVzc2FnZS5jcml0aWNhbDtcbiAgICAgICAgdmFyIHdhcm5pbmdNZXNzYWdlID0gbGFuZ3VhZ2UuY29tbW9uX2xhbmcubWVzc2FnZS53YXJuaW5nO1xuICAgICAgICB2YXIgbm9FcnJvck1lc3NhZ2UgPSBsYW5ndWFnZS5jb21tb25fbGFuZy5tZXNzYWdlLm5vX2Vycm9yO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBsYW5ndWFnZTogbGFuZ3VhZ2UsIGNyaXRpY2FsTWVzc2FnZTogY3JpdGljYWxNZXNzYWdlLCB3YXJuaW5nTWVzc2FnZTogd2FybmluZ01lc3NhZ2UsIG5vRXJyb3JNZXNzYWdlOiBub0Vycm9yTWVzc2FnZSwgRXJyb3JJdGVtOiBFcnJvckl0ZW1fdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgbW9tZW50XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1vbWVudFwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0FjdGl2aXR5RGF0ZScsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIGZ1bmN0aW9uIGZvcm1hdERhdGUoZGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuICgwLCBtb21lbnRfMS5kZWZhdWx0KShkYXRlKS5mb3JtYXQoJ0xMJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgdHlwZXM6IHR5cGVzLCBmb3JtYXREYXRlOiBmb3JtYXREYXRlLCBsYW5ndWFnZTogbGFuZ3VhZ2UgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdBY3Rpdml0eUNvbmRpdGlvbnMnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyB0eXBlczogdHlwZXMsIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0LCBsYW5ndWFnZTogbGFuZ3VhZ2UgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0FjdGl2aXR5Q29udGFjdEluZm8nLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyB0eXBlczogdHlwZXMsIGxhbmd1YWdlOiBsYW5ndWFnZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlEZXNjcmlwdGlvbicsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHJldHVybiB7IHR5cGVzOiB0eXBlcywgbGFuZ3VhZ2U6IGxhbmd1YWdlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdIdW1hbml0YXJpYW5TY29wZScsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGxhbmd1YWdlOiBsYW5ndWFnZSwgdHlwZXM6IHR5cGVzIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnSWF0aUlkZW50aWZpZXInLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlTZWN0b3InLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHJldHVybiB7IGxhbmd1YWdlOiBsYW5ndWFnZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlMb2NhdGlvbicsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHJldHVybiB7IHR5cGVzOiB0eXBlcywgbGFuZ3VhZ2U6IGxhbmd1YWdlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdPdGhlcklkZW50aWZpZXInLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICByZXR1cm4geyB0eXBlczogdHlwZXMsIGxhbmd1YWdlOiBsYW5ndWFnZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlQYXJ0aWNpcGF0aW5nT3JnJyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgcmV0dXJuIHsgdHlwZXM6IHR5cGVzLCBsYW5ndWFnZTogbGFuZ3VhZ2UgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIG1vbWVudF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJtb21lbnRcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1BsYW5uZWREaXNidXJzZW1lbnQnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgZnVuY3Rpb24gZm9ybWF0RGF0ZShkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gKDAsIG1vbWVudF8xLmRlZmF1bHQpKGRhdGUpLmZvcm1hdCgnTEwnKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGZvcm1hdERhdGU6IGZvcm1hdERhdGUsIGxhbmd1YWdlOiBsYW5ndWFnZSwgdHlwZXM6IHR5cGVzIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBkYXRlRm9ybWF0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZGF0ZUZvcm1hdFwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1BvbGljeU1hcmtlcicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHJldHVybiB7IHR5cGVzOiB0eXBlcywgZGF0ZUZvcm1hdDogZGF0ZUZvcm1hdF8xLmRlZmF1bHQsIGxhbmd1YWdlOiBsYW5ndWFnZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlSZWNpcGllbnRDb3VudHJ5JyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgZnVuY3Rpb24gcm91bmRGbG9hdChudW0pIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KG51bSkudG9GaXhlZCgyKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyB0eXBlczogdHlwZXMsIHJvdW5kRmxvYXQ6IHJvdW5kRmxvYXQsIGxhbmd1YWdlOiBsYW5ndWFnZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnUmVjaXBpZW50UmVnaW9uJyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzIuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgZnVuY3Rpb24gcm91bmRGbG9hdChudW0pIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KG51bSkudG9GaXhlZCgyKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBsYW5ndWFnZTogbGFuZ3VhZ2UsIHR5cGVzOiB0eXBlcywgcm91bmRGbG9hdDogcm91bmRGbG9hdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdSZWxhdGVkQWN0aXZpdHknLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICByZXR1cm4geyB0eXBlczogdHlwZXMsIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0LCBsYW5ndWFnZTogbGFuZ3VhZ2UgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1JlcG9ydGluZ09yZ2FuaXphdGlvbicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YTogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgdHJhbnNsYXRpb24gPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHRyYW5zbGF0aW9uOiB0cmFuc2xhdGlvbiwgdHlwZXM6IHR5cGVzIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBtb21lbnRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwibW9tZW50XCIpKTtcbi8vY29tcG9uZW50c1xudmFyIExpbmtfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvYnV0dG9ucy9MaW5rLnZ1ZVwiKSk7XG52YXIgSGF2ZU5vdEFkZGVkWWV0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL0hhdmVOb3RBZGRlZFlldC52dWVcIikpO1xuLy8gY29tcG9zYWJsZVxudmFyIHRpdGxlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvdGl0bGVcIikpO1xudmFyIGRhdGVGb3JtYXRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS9kYXRlRm9ybWF0XCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlSZXN1bHQnLFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgQnRuOiBMaW5rX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIE5vdFlldDogSGF2ZU5vdEFkZGVkWWV0X3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgYWN0aXZpdHlJZDoge1xuICAgICAgICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRpdGxlOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdG9vbHRpcDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRMYW5ndWFnZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGVkOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgZm9ybWF0ID0gJ01NTU0gREQsIFlZWVknO1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgcmVzdWx0RGF0YSA9IGRhdGEudmFsdWUuY29udGVudDtcbiAgICAgICAgdmFyIGN1cnJlbnRMYW5ndWFnZSA9ICdlbic7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBtb21lbnQ6IG1vbWVudF8xLmRlZmF1bHQsXG4gICAgICAgICAgICBmb3JtYXQ6IGZvcm1hdCxcbiAgICAgICAgICAgIHJlc3VsdERhdGE6IHJlc3VsdERhdGEsXG4gICAgICAgICAgICBnZXRBY3Rpdml0eVRpdGxlOiB0aXRsZV8xLmRlZmF1bHQsXG4gICAgICAgICAgICBjdXJyZW50TGFuZ3VhZ2U6IGN1cnJlbnRMYW5ndWFnZSxcbiAgICAgICAgICAgIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0LFxuICAgICAgICAgICAgbGFuZ3VhZ2U6IGxhbmd1YWdlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlTZWN0b3InLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICBmdW5jdGlvbiByb3VuZEZsb2F0KG51bSkge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQobnVtKS50b0ZpeGVkKDIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IHR5cGVzOiB0eXBlcywgcm91bmRGbG9hdDogcm91bmRGbG9hdCwgbGFuZ3VhZ2U6IGxhbmd1YWdlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGRhdGVGb3JtYXRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS9kYXRlRm9ybWF0XCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlUYWcnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyB0eXBlczogdHlwZXMsIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0LCBsYW5ndWFnZTogbGFuZ3VhZ2UgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0FjdGl2aXR5VGl0bGUnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyB0eXBlczogdHlwZXMsIGxhbmd1YWdlOiBsYW5ndWFnZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBkYXRlRm9ybWF0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZGF0ZUZvcm1hdFwiKSk7XG52YXIgTGlua192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9idXR0b25zL0xpbmsudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlUcmFuc2FjdGlvbnMnLFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgQnRuOiBMaW5rX3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgcmV0dXJuIHsgdHlwZXM6IHR5cGVzLCBkYXRlRm9ybWF0OiBkYXRlRm9ybWF0XzEuZGVmYXVsdCwgbGFuZ3VhZ2U6IGxhbmd1YWdlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuLy9jb21wb25lbnRcbnZhciBMaW5rX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL2J1dHRvbnMvTGluay52dWVcIikpO1xudmFyIFBhZ2VUaXRsZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9QYWdlVGl0bGUudnVlXCIpKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG4vL2hlbHBlclxudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS91dGlsc1wiKTtcbnZhciBJbmRleF8xID0gcmVxdWlyZShcIi4vZWxlbWVudHMvSW5kZXhcIik7XG4vL2NvbXBvc2FibGVcbnZhciB0aXRsZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL3RpdGxlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnSW5kaWNhdG9yRGV0YWlsJyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIFRpdGxlRWxlbWVudDogSW5kZXhfMS5UaXRsZUVsZW1lbnQsXG4gICAgICAgIE1lYXN1cmU6IEluZGV4XzEuTWVhc3VyZSxcbiAgICAgICAgQXNjZW5kaW5nOiBJbmRleF8xLkFzY2VuZGluZyxcbiAgICAgICAgQWdncmVnYXRpb25TdGF0dXM6IEluZGV4XzEuQWdncmVnYXRpb25TdGF0dXMsXG4gICAgICAgIERlc2NyaXB0aW9uOiBJbmRleF8xLkRlc2NyaXB0aW9uLFxuICAgICAgICBSZWZlcmVuY2U6IEluZGV4XzEuUmVmZXJlbmNlLFxuICAgICAgICBCYXNlbGluZTogSW5kZXhfMS5CYXNlbGluZSxcbiAgICAgICAgRG9jdW1lbnRMaW5rOiBJbmRleF8xLkRvY3VtZW50TGluayxcbiAgICAgICAgUGVyaW9kOiBJbmRleF8xLlBlcmlvZCxcbiAgICAgICAgQnRuOiBMaW5rX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFBhZ2VUaXRsZTogUGFnZVRpdGxlX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGFjdGl2aXR5OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVzdWx0VGl0bGU6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBpbmRpY2F0b3I6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBwZXJpb2Q6IHtcbiAgICAgICAgICAgIHR5cGU6IEFycmF5LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdG9hc3Q6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBlbGVtZW50OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIGxpbmtDbGFzc2VzID0gJ2ZsZXggaXRlbXMtY2VudGVyIHctZnVsbCBiZy13aGl0ZSByb3VuZGVkIHAtMiB0ZXh0LXNtIHRleHQtbi01MCBmb250LWJvbGQgbGVhZGluZy1ub3JtYWwgbWItMiBzaGFkb3ctZGVmYXVsdCc7XG4gICAgICAgIHZhciB0b2FzdERhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9iID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLCBpbmRpY2F0b3IgPSBfYi5pbmRpY2F0b3IsIGFjdGl2aXR5ID0gX2IuYWN0aXZpdHksIHBlcmlvZCA9IF9iLnBlcmlvZCwgcmVzdWx0VGl0bGUgPSBfYi5yZXN1bHRUaXRsZTtcbiAgICAgICAgdmFyIHNob3dTaWRlYmFyID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgcG9zaXRpb25ZID0gKDAsIHZ1ZV8xLnJlZikoMCk7XG4gICAgICAgIHZhciBzY3JlZW5XaWR0aCA9ICgwLCB2dWVfMS5yZWYpKDApO1xuICAgICAgICAvL2luZGljYXRvclxuICAgICAgICB2YXIgaW5kaWNhdG9yRGF0YSA9IGluZGljYXRvci52YWx1ZS5pbmRpY2F0b3I7XG4gICAgICAgIHZhciBwZXJpb2REYXRhID0gcGVyaW9kLnZhbHVlO1xuICAgICAgICAvLyB2dWUgcHJvdmlkZXNcbiAgICAgICAgdmFyIHBhcmVudERhdGEgPSB7XG4gICAgICAgICAgICBhY3Rpdml0eTogYWN0aXZpdHkudmFsdWUuaWQsXG4gICAgICAgICAgICByZXN1bHQ6IGluZGljYXRvci52YWx1ZS5yZXN1bHRfaWQsXG4gICAgICAgICAgICBpbmRpY2F0b3I6IGluZGljYXRvci52YWx1ZS5pZCxcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdwYXJlbnREYXRhJywgcGFyZW50RGF0YSk7XG4gICAgICAgIHZhciBhY3Rpdml0eUlkID0gYWN0aXZpdHkudmFsdWUuaWQsIGFjdGl2aXR5TGluayA9IFwiL2FjdGl2aXR5L1wiLmNvbmNhdChhY3Rpdml0eUlkKSwgcmVzdWx0SWQgPSBpbmRpY2F0b3IudmFsdWUucmVzdWx0X2lkLCBkZWZhdWx0TGFuZ3VhZ2UgPSAoX2EgPSBhY3Rpdml0eS52YWx1ZS5kZWZhdWx0X2ZpZWxkX3ZhbHVlcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxhbmd1YWdlLCBhY3Rpdml0eVRpdGxlID0gKDAsIHRpdGxlXzEuZGVmYXVsdCkoYWN0aXZpdHkudmFsdWUudGl0bGUsIGRlZmF1bHRMYW5ndWFnZSksIHJlc3VsdFRpdGxlZCA9ICgwLCB0aXRsZV8xLmRlZmF1bHQpKHJlc3VsdFRpdGxlLnZhbHVlWzBdLm5hcnJhdGl2ZSwgZGVmYXVsdExhbmd1YWdlKSwgcmVzdWx0TGluayA9IFwiXCIuY29uY2F0KGFjdGl2aXR5TGluaywgXCIvcmVzdWx0L1wiKS5jb25jYXQocmVzdWx0SWQpLCBpbmRpY2F0b3JMaW5rID0gXCIvcmVzdWx0L1wiLmNvbmNhdChyZXN1bHRJZCwgXCIvaW5kaWNhdG9yXCIpLCBpbmRpY2F0b3JUaXRsZSA9ICgwLCB0aXRsZV8xLmRlZmF1bHQpKGluZGljYXRvckRhdGEudGl0bGVbMF0ubmFycmF0aXZlLCBkZWZhdWx0TGFuZ3VhZ2UpO1xuICAgICAgICB2YXIgY2FsY1dpZHRoID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBzY3JlZW5XaWR0aC52YWx1ZSA9IGV2ZW50LnRhcmdldC5pbm5lcldpZHRoO1xuICAgICAgICAgICAgaWYgKHNjcmVlbldpZHRoLnZhbHVlID4gMTAyNCkge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHNob3dTaWRlYmFyLnZhbHVlICYmXG4gICAgICAgICAgICAgICAgICAgIChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBCcmVhZGNydW1iIGRhdGFcbiAgICAgICAgICovXG4gICAgICAgIHZhciBicmVhZGNydW1iRGF0YSA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogbGFuZ3VhZ2UuYWN0aXZpdGllc19sYW5nLnlvdXJfYWN0aXZpdGllcyxcbiAgICAgICAgICAgICAgICBsaW5rOiAnL2FjdGl2aXRpZXMnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogYWN0aXZpdHlUaXRsZSxcbiAgICAgICAgICAgICAgICBsaW5rOiBhY3Rpdml0eUxpbmssXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiByZXN1bHRUaXRsZWQsXG4gICAgICAgICAgICAgICAgbGluazogcmVzdWx0TGluayxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGluZGljYXRvclRpdGxlLFxuICAgICAgICAgICAgICAgIGxpbms6ICcnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgICAgdmFyIGhhbmRsZVNjcm9sbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHBvc2l0aW9uWS52YWx1ZSA9IHdpbmRvdy5zY3JvbGxZO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgY2FsY1dpZHRoKTtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpO1xuICAgICAgICAgICAgaWYgKHByb3BzLnRvYXN0Lm1lc3NhZ2UgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSBwcm9wcy50b2FzdC50eXBlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHByb3BzLnRvYXN0Lm1lc3NhZ2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgICAgICAgICAgfSwgNTAwMCk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaXN0b3BWaXNpYmxlID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gcG9zaXRpb25ZLnZhbHVlID09PSAwO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLm9uVW5tb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKTtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxjV2lkdGgpO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzaG93U2lkZWJhci52YWx1ZTsgfSwgZnVuY3Rpb24gKHNpZGViYXIpIHtcbiAgICAgICAgICAgIGlmIChzaWRlYmFyKSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxpbmtDbGFzc2VzOiBsaW5rQ2xhc3NlcyxcbiAgICAgICAgICAgIGluZGljYXRvclRpdGxlOiBpbmRpY2F0b3JUaXRsZSxcbiAgICAgICAgICAgIGluZGljYXRvckRhdGE6IGluZGljYXRvckRhdGEsXG4gICAgICAgICAgICBhY3Rpdml0eUxpbms6IGFjdGl2aXR5TGluayxcbiAgICAgICAgICAgIHJlc3VsdExpbms6IHJlc3VsdExpbmssXG4gICAgICAgICAgICBpbmRpY2F0b3JMaW5rOiBpbmRpY2F0b3JMaW5rLFxuICAgICAgICAgICAgYnJlYWRjcnVtYkRhdGE6IGJyZWFkY3J1bWJEYXRhLFxuICAgICAgICAgICAgdG9hc3REYXRhOiB0b2FzdERhdGEsXG4gICAgICAgICAgICBwZXJpb2REYXRhOiBwZXJpb2REYXRhLFxuICAgICAgICAgICAgc2hvd1NpZGViYXI6IHNob3dTaWRlYmFyLFxuICAgICAgICAgICAgaXN0b3BWaXNpYmxlOiBpc3RvcFZpc2libGUsXG4gICAgICAgICAgICBjb3VudERvY3VtZW50TGluazogdXRpbHNfMS5jb3VudERvY3VtZW50TGluayxcbiAgICAgICAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbi8vIGNvbXBvbmVudHNcbnZhciBCdXR0b25Db21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZVwiKSk7XG52YXIgVGFibGVQYWdpbmF0aW9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RhYmxlUGFnaW5hdGlvbi52dWVcIikpO1xudmFyIFBhZ2VUaXRsZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9QYWdlVGl0bGUudnVlXCIpKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG52YXIgRGVsZXRlQWN0aW9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL0RlbGV0ZUFjdGlvbi52dWVcIikpO1xuLy8gY29tcG9zYWJsZVxudmFyIGRhdGVGb3JtYXRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS9kYXRlRm9ybWF0XCIpKTtcbnZhciB0aXRsZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL3RpdGxlXCIpKTtcbnZhciB1dGlsc18xID0gcmVxdWlyZShcIi4uLy4uLy4uL2NvbXBvc2FibGUvdXRpbHNcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0luZGljYXRvckxpc3QnLFxuICAgIG1ldGhvZHM6IHsgc25ha2VDYXNlVG9TZW50ZW5jZUNhc2U6IHV0aWxzXzEuc25ha2VDYXNlVG9TZW50ZW5jZUNhc2UsIGNyZWF0ZUNhcGl0YWxpemVkU2VudGVuY2U6IHV0aWxzXzEuY3JlYXRlQ2FwaXRhbGl6ZWRTZW50ZW5jZSB9LFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgQnRuOiBCdXR0b25Db21wb25lbnRfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgUGFnaW5hdGlvbjogVGFibGVQYWdpbmF0aW9uX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFBhZ2VUaXRsZTogUGFnZVRpdGxlX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgRGVsZXRlQWN0aW9uOiBEZWxldGVBY3Rpb25fdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGFjdGl2aXR5OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgcGFyZW50RGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGluZGljYXRvcnM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRvYXN0OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciBfYSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKSwgYWN0aXZpdHkgPSBfYS5hY3Rpdml0eSwgcGFyZW50RGF0YSA9IF9hLnBhcmVudERhdGE7XG4gICAgICAgIHZhciBhY3Rpdml0eUlkID0gYWN0aXZpdHkudmFsdWUuaWQsIGFjdGl2aXR5VGl0bGUgPSBhY3Rpdml0eS52YWx1ZS50aXRsZSwgYWN0aXZpdHlMaW5rID0gXCIvYWN0aXZpdHkvXCIuY29uY2F0KGFjdGl2aXR5SWQpLCByZXN1bHRJZCA9IHBhcmVudERhdGEudmFsdWUucmVzdWx0LmlkLCByZXN1bHRUaXRsZSA9ICgwLCB0aXRsZV8xLmRlZmF1bHQpKHBhcmVudERhdGEudmFsdWUucmVzdWx0LnRpdGxlLCAnZW4nKSwgcmVzdWx0TGluayA9IFwiXCIuY29uY2F0KGFjdGl2aXR5TGluaywgXCIvcmVzdWx0L1wiKS5jb25jYXQocmVzdWx0SWQpLCBpbmRpY2F0b3JMaW5rID0gXCIvcmVzdWx0L1wiLmNvbmNhdChyZXN1bHRJZCwgXCIvaW5kaWNhdG9yXCIpO1xuICAgICAgICB2YXIgaW5kaWNhdG9yc0RhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHt9KTtcbiAgICAgICAgdmFyIGlzRW1wdHkgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB0b2FzdERhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEJyZWFkY3J1bWIgZGF0YVxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIGJyZWFkY3J1bWJEYXRhID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBsYW5ndWFnZS5hY3Rpdml0aWVzX2xhbmcueW91cl9hY3Rpdml0aWVzLFxuICAgICAgICAgICAgICAgIGxpbms6ICcvYWN0aXZpdGllcycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiAoMCwgdGl0bGVfMS5kZWZhdWx0KShhY3Rpdml0eVRpdGxlLCAnZW4nKSxcbiAgICAgICAgICAgICAgICBsaW5rOiBcIi9hY3Rpdml0eS9cIi5jb25jYXQoYWN0aXZpdHlJZCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiByZXN1bHRUaXRsZSxcbiAgICAgICAgICAgICAgICBsaW5rOiBcIi9hY3Rpdml0eS9cIi5jb25jYXQoYWN0aXZpdHlJZCwgXCIvcmVzdWx0L1wiKS5jb25jYXQocmVzdWx0SWQpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogbGFuZ3VhZ2UuY29tbW9uX2xhbmcuaW5kaWNhdG9yX2xpc3QsXG4gICAgICAgICAgICAgICAgbGluazogJycsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldChcIi9yZXN1bHQvXCIuY29uY2F0KHJlc3VsdElkLCBcIi9pbmRpY2F0b3JzL3BhZ2UvMVwiKSkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGluZGljYXRvcnNEYXRhLCByZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgaXNFbXB0eS52YWx1ZSA9IHJlc3BvbnNlLmRhdGEuZGF0YS5sZW5ndGggPyBmYWxzZSA6IHRydWU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzLnRvYXN0Lm1lc3NhZ2UgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gcHJvcHMudG9hc3QudHlwZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHByb3BzLnRvYXN0Lm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0sIDUwMDApO1xuICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfSk7XG4gICAgICAgIGZ1bmN0aW9uIGhhbmRsZU5hdmlnYXRlKHBhdGgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gcGF0aDtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBmZXRjaExpc3RpbmdzKGFjdGl2ZV9wYWdlKSB7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAuZ2V0KFwiL3Jlc3VsdC9cIi5jb25jYXQocmVzdWx0SWQsIFwiL2luZGljYXRvcnMvcGFnZS9cIikgKyBhY3RpdmVfcGFnZSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihpbmRpY2F0b3JzRGF0YSwgcmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgaXNFbXB0eS52YWx1ZSA9IHJlc3BvbnNlLmRhdGEgPyBmYWxzZSA6IHRydWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBwcm92aWRlXG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgncGFyZW50SXRlbUlkJywgcmVzdWx0SWQpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYWN0aXZpdHlJZDogYWN0aXZpdHlJZCxcbiAgICAgICAgICAgIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0LFxuICAgICAgICAgICAgaW5kaWNhdG9yc0RhdGE6IGluZGljYXRvcnNEYXRhLFxuICAgICAgICAgICAgZ2V0QWN0aXZpdHlUaXRsZTogdGl0bGVfMS5kZWZhdWx0LFxuICAgICAgICAgICAgZmV0Y2hMaXN0aW5nczogZmV0Y2hMaXN0aW5ncyxcbiAgICAgICAgICAgIHJlc3VsdExpbms6IHJlc3VsdExpbmssXG4gICAgICAgICAgICBpbmRpY2F0b3JMaW5rOiBpbmRpY2F0b3JMaW5rLFxuICAgICAgICAgICAgYnJlYWRjcnVtYkRhdGE6IGJyZWFkY3J1bWJEYXRhLFxuICAgICAgICAgICAgdG9hc3REYXRhOiB0b2FzdERhdGEsXG4gICAgICAgICAgICByZXN1bHRJZDogcmVzdWx0SWQsXG4gICAgICAgICAgICBoYW5kbGVOYXZpZ2F0ZTogaGFuZGxlTmF2aWdhdGUsXG4gICAgICAgICAgICBsYW5ndWFnZTogbGFuZ3VhZ2UsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdJbmRpY2F0b3JBZ2dyZWdhdGlvblN0YXR1cycsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgc3RhdHVzRGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHJldHVybiB7IHN0YXR1c0RhdGE6IHN0YXR1c0RhdGEsIGxhbmd1YWdlOiBsYW5ndWFnZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBJbmRleF8xID0gcmVxdWlyZShcIi4vSW5kZXhcIik7XG52YXIgdXRpbHNfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3V0aWxzXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdJbmRpY2F0b3JCYXNlbGluZScsXG4gICAgY29tcG9uZW50czogeyBEb2N1bWVudExpbms6IEluZGV4XzEuRG9jdW1lbnRMaW5rIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogQXJyYXksXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgYmFzZVR5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgZWxlbWVudFNwYWNpbmcgPSAnbWItMSc7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgYmFzZWxpbmUgPSBkYXRhLnZhbHVlO1xuICAgICAgICB2YXIgbG9jYXRpb24gPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICAgICAgdmFyIGxvY2F0aW9ucyA9IFtdO1xuICAgICAgICAgICAgbG9jYXRpb25zID0gZGF0YS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5yZWZlcmVuY2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHZhciBsYXN0TG9jYXRpb24gPSBsb2NhdGlvbnMuc2xpY2UoLTEpWzBdO1xuICAgICAgICAgICAgbG9jYXRpb25zID0gbG9jYXRpb25zLnNsaWNlKDAsIC0xKTtcbiAgICAgICAgICAgIGlmIChsb2NhdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAobG9jYXRpb25zLmpvaW4oJywgJykgK1xuICAgICAgICAgICAgICAgICAgICAnICcgK1xuICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZS5jb21tb25fbGFuZy5zdGlja3kuY29tbW9uLmFuZCArXG4gICAgICAgICAgICAgICAgICAgICcgJyArXG4gICAgICAgICAgICAgICAgICAgIGxhc3RMb2NhdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGFzdExvY2F0aW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICAvKipcbiAgICAgICAgICogRnVuY3Rpb24gdG8gcmV0dXJuIGRpbWVuc2lvbnMgb2YgYmFzZWxpbmVcbiAgICAgICAgICogQHBhcmFtIGRhdGFcbiAgICAgICAgICovXG4gICAgICAgIHZhciBkaW1lbnNpb25zID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgICAgIHZhciBkaW1lbnNpb25zID0gW107XG4gICAgICAgICAgICBkaW1lbnNpb25zID0gZGF0YS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgICAgIHZhciBuYW1lID0gKF9hID0gaXRlbS5uYW1lKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBsYW5ndWFnZS5jb21tb25fbGFuZy5taXNzaW5nLmRlZmF1bHQsIHZhbHVlID0gKF9iID0gaXRlbS52YWx1ZSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogbGFuZ3VhZ2UuY29tbW9uX2xhbmcubWlzc2luZy5kZWZhdWx0O1xuICAgICAgICAgICAgICAgIHJldHVybiBcIlwiLmNvbmNhdChsYW5ndWFnZS5jb21tb25fbGFuZy5jb2RlLCBcIiAtIFwiKS5jb25jYXQobmFtZSwgXCIsIFwiKS5jb25jYXQobGFuZ3VhZ2UuY29tbW9uX2xhbmcudmFsdWUsIFwiIC0gKFwiKS5jb25jYXQodmFsdWUsIFwiKVwiKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGRpbWVuc2lvbnMuam9pbignOyAnKTtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJhc2VsaW5lOiBiYXNlbGluZSxcbiAgICAgICAgICAgIGxvY2F0aW9uOiBsb2NhdGlvbixcbiAgICAgICAgICAgIGRpbWVuc2lvbnM6IGRpbWVuc2lvbnMsXG4gICAgICAgICAgICBlbGVtZW50U3BhY2luZzogZWxlbWVudFNwYWNpbmcsXG4gICAgICAgICAgICBjb3VudERvY3VtZW50TGluazogdXRpbHNfMS5jb3VudERvY3VtZW50TGluayxcbiAgICAgICAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0luZGljYXRvckRlc2NyaXB0aW9uJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVzY1R5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIGRlc2NyaXB0aW9uRGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHJldHVybiB7IGRlc2NyaXB0aW9uRGF0YTogZGVzY3JpcHRpb25EYXRhLCBsYW5ndWFnZTogbGFuZ3VhZ2UgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG4vL2NvbXBvc2FibGVcbnZhciB0aXRsZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL3RpdGxlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnSW5kaWNhdG9yRG9jdW1lbnRMaW5rJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBBcnJheSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgYWxpZ25tZW50OiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnY2VudGVyJyxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciBkbERhdGEgPSBkYXRhLnZhbHVlO1xuICAgICAgICByZXR1cm4geyBkbERhdGE6IGRsRGF0YSwgZ2V0QWN0aXZpdHlUaXRsZTogdGl0bGVfMS5kZWZhdWx0LCBsYW5ndWFnZTogbGFuZ3VhZ2UgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0luZGljYXRvckFzY2VuZGluZycsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgcmV0dXJuIHsgbGFuZ3VhZ2U6IGxhbmd1YWdlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdJbmRpY2F0b3JNZWFzdXJlJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgbWVhc3VyZVR5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIG1lYXN1cmVEYXRhID0gZGF0YS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHsgbWVhc3VyZURhdGE6IG1lYXN1cmVEYXRhLCBsYW5ndWFnZTogbGFuZ3VhZ2UgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xudmFyIExpbmtfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvYnV0dG9ucy9MaW5rLnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0luZGljYXRvclBlcmlvZCcsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBCdG46IExpbmtfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciBpZCA9ICgwLCB2dWVfMS5pbmplY3QpKCdwYXJlbnREYXRhJyk7XG4gICAgICAgIHJldHVybiB7IGlkOiBpZCwgZGF0ZUZvcm1hdDogZGF0ZUZvcm1hdF8xLmRlZmF1bHQsIGxhbmd1YWdlOiBsYW5ndWFnZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnSW5kaWNhdG9yUmVmZXJlbmNlJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVmVHlwZToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgcmVmRGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHJldHVybiB7IHJlZkRhdGE6IHJlZkRhdGEsIGxhbmd1YWdlOiBsYW5ndWFnZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnSW5kaWNhdG9yVGl0bGUnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0aXRsZVR5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIHRpdGxlRGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHJldHVybiB7IHRpdGxlRGF0YTogdGl0bGVEYXRhLCBsYW5ndWFnZTogbGFuZ3VhZ2UgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgY29yZUVsZW1lbnRzXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS9jb3JlRWxlbWVudHNcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnQWN0aXZpdGllc0VsZW1lbnRzJyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgYWN0aXZpdHlJZDoge1xuICAgICAgICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzIudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIGRyb3Bkb3duID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIGRyb3Bkb3duQnRuID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIF9iID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIHNlYXJjaEJ0blZhbHVlID0gX2JbMF0sIHNlYXJjaEJ0blRvZ2dsZSA9IF9iWzFdO1xuICAgICAgICAvKipcbiAgICAgICAgICogU2VhcmNoIGZ1bmN0aW9uYWxpdHlcbiAgICAgICAgICovXG4gICAgICAgIHZhciBlbGVtZW50cyA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgc2VhcmNoOiAnJyxcbiAgICAgICAgICAgIHN0YXR1czogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZWxlbWVudEljb25zID0ge1xuICAgICAgICAgICAgY29tcGxldGVkOiAnZG91YmxlLXRpY2snLFxuICAgICAgICAgICAgbm90X2NvbXBsZXRlZDogJ3JlZC1jcm9zcycsXG4gICAgICAgICAgICBjb3JlOiAnY29yZScsXG4gICAgICAgIH07XG4gICAgICAgIHZhciBhc0FycmF5RGF0YSA9IE9iamVjdC5lbnRyaWVzKGRhdGEudmFsdWUpO1xuICAgICAgICB2YXIgZmlsdGVyZWRFbGVtZW50cyA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGZpbHRlcmVkID0gYXNBcnJheURhdGEuZmlsdGVyKGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHZhciBrZXkgPSBfYVswXSwgdmFsdWUgPSBfYVsxXTtcbiAgICAgICAgICAgICAgICBpZiAoIWVsZW1lbnRzLnN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGFuZ3VhZ2UuZWxlbWVudHNfY29tbW9uX2xhbmdba2V5XVxuICAgICAgICAgICAgICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5pbmNsdWRlcyhlbGVtZW50cy5zZWFyY2gudG9Mb3dlckNhc2UoKS5yZXBsYWNlKCdfJywgJycpLnJlcGxhY2UoJy0nLCAnXycpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZVtlbGVtZW50cy5zdGF0dXNdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ga2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaW5jbHVkZXMoZWxlbWVudHMuc2VhcmNoLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgnXycsICcnKS5yZXBsYWNlKCctJywgJ18nKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHZhciBqdXN0U3RyaW5ncyA9IE9iamVjdC5mcm9tRW50cmllcyhmaWx0ZXJlZCk7XG4gICAgICAgICAgICByZXR1cm4ganVzdFN0cmluZ3M7XG4gICAgICAgIH0pO1xuICAgICAgICAvKipcbiAgICAgICAgICogQWRkaW5nIGNvcmUgZGF0YVxuICAgICAgICAgKi9cbiAgICAgICAgT2JqZWN0LmtleXMoZGF0YS52YWx1ZSkubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgIGlmICgoMCwgY29yZUVsZW1lbnRzXzEuYWN0aXZpdHlDb3JlRWxlbWVudHMpKCkuaW5jbHVkZXMoa2V5LnRvU3RyaW5nKCkpKSB7XG4gICAgICAgICAgICAgICAgZGF0YS52YWx1ZVtrZXldWydjb3JlJ10gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGRyb3Bkb3duRmlsdGVyID0gZnVuY3Rpb24gKHMpIHtcbiAgICAgICAgICAgIGVsZW1lbnRzLnN0YXR1cyA9IHM7XG4gICAgICAgICAgICBzZWFyY2hCdG5Ub2dnbGUoKTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWRyb3Bkb3duQnRuLnZhbHVlLmNvbnRhaW5zKGUudGFyZ2V0KSAmJlxuICAgICAgICAgICAgICAgICAgICAhZHJvcGRvd24udmFsdWUuY29udGFpbnMoZS50YXJnZXQpICYmXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaEJ0blZhbHVlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaEJ0blRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgZnVuY3Rpb24gZ2V0TGluayhoYXNfZGF0YSwgaW5kZXgpIHtcbiAgICAgICAgICAgIGlmIChoYXNfZGF0YSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBcIiNcIi5jb25jYXQoaW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaW5kZXggPT0gJ3Jlc3VsdCcgfHwgaW5kZXggPT0gJ3RyYW5zYWN0aW9ucycpIHtcbiAgICAgICAgICAgICAgICB2YXIgZWxlbWVudCA9IGluZGV4ID09ICdyZXN1bHQnID8gJ3Jlc3VsdCcgOiAndHJhbnNhY3Rpb24nO1xuICAgICAgICAgICAgICAgIHJldHVybiBcIi9hY3Rpdml0eS9cIi5jb25jYXQocHJvcHMuYWN0aXZpdHlJZCwgXCIvXCIpLmNvbmNhdChlbGVtZW50LCBcIi9jcmVhdGVcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gXCIvYWN0aXZpdHkvXCIuY29uY2F0KHByb3BzLmFjdGl2aXR5SWQsIFwiL1wiKS5jb25jYXQoaW5kZXgpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGxhbmd1YWdlOiBsYW5ndWFnZSwgcHJvcHM6IHByb3BzLCBkYXRhOiBkYXRhLCBkcm9wZG93bjogZHJvcGRvd24sIGRyb3Bkb3duQnRuOiBkcm9wZG93bkJ0biwgc2VhcmNoQnRuVmFsdWU6IHNlYXJjaEJ0blZhbHVlLCBzZWFyY2hCdG5Ub2dnbGU6IHNlYXJjaEJ0blRvZ2dsZSwgZWxlbWVudHM6IGVsZW1lbnRzLCBlbGVtZW50SWNvbnM6IGVsZW1lbnRJY29ucywgYXNBcnJheURhdGE6IGFzQXJyYXlEYXRhLCBmaWx0ZXJlZEVsZW1lbnRzOiBmaWx0ZXJlZEVsZW1lbnRzLCBkcm9wZG93bkZpbHRlcjogZHJvcGRvd25GaWx0ZXIsIGdldExpbms6IGdldExpbmssIGFjdGl2aXR5Q29yZUVsZW1lbnRzOiBjb3JlRWxlbWVudHNfMS5hY3Rpdml0eUNvcmVFbGVtZW50cyB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgbW9tZW50XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1vbWVudFwiKSk7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIHZ1ZV8zID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBjb3JlRWxlbWVudHNfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL2NvcmVFbGVtZW50c1wiKTtcbi8vY29tcG9uZW50c1xudmFyIEluZGV4XzEgPSByZXF1aXJlKFwiQWN0aXZpdHkvZWxlbWVudHMvSW5kZXhcIik7XG52YXIgTGlua192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9idXR0b25zL0xpbmsudnVlXCIpKTtcbnZhciBFbGVtZW50U3RhdHVzX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3N0YXR1cy9FbGVtZW50U3RhdHVzLnZ1ZVwiKSk7XG52YXIgSG92ZXJUZXh0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0hvdmVyVGV4dC52dWVcIikpO1xudmFyIFBvcHVwTW9kYWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvUG9wdXBNb2RhbC52dWVcIikpO1xudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdBY3Rpdml0eUVsZW1lbnQnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBhY3Rpdml0eUlkOiB7XG4gICAgICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdGl0bGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0b29sdGlwOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgfSxcbiAgICAgICAgd2lkdGg6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBsZXRlZDoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB3YXJuaW5nSW5mb1RleHQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIF9iID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIGRlbGV0ZVZhbHVlID0gX2JbMF0sIGRlbGV0ZVRvZ2dsZSA9IF9iWzFdO1xuICAgICAgICB2YXIgdHJhbnNsYXRpb24gPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgLy8gY2FsbCBhcGkgZm9yIHB1Ymxpc2hpbmdcbiAgICAgICAgdmFyIHRvYXN0RGF0YSA9ICgwLCB2dWVfMi5pbmplY3QpKCd0b2FzdERhdGEnKTtcbiAgICAgICAgdmFyIGxheW91dCA9ICdiYXNpcy1mdWxsICBsZzpiYXNpcy02LzEyJztcbiAgICAgICAgaWYgKHByb3BzLndpZHRoID09PSAnZnVsbCcpIHtcbiAgICAgICAgICAgIGxheW91dCA9ICdiYXNpcy1mdWxsJztcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBmb3JtYXREYXRlKGRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiAoMCwgbW9tZW50XzEuZGVmYXVsdCkoZGF0ZSkuZm9ybWF0KCdMTCcpO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHJvdW5kRmxvYXQobnVtKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VGbG9hdChudW0pLnRvRml4ZWQoMik7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGRlbGV0ZUFjdGl2aXR5RWxlbWVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGRlbGV0ZVZhbHVlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgfTtcbiAgICAgICAgZnVuY3Rpb24gZGVsZXRlRWxlbWVudChpZCwgZWxlbWVudCkge1xuICAgICAgICAgICAgZGVsZXRlVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5kZWxldGUoXCIvYXBpL2FjdGl2aXR5L1wiLmNvbmNhdChpZCwgXCIvXCIpLmNvbmNhdChlbGVtZW50KSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgICAgICB9LCAzMDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gcmVzcG9uc2Uuc3RhdHVzO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gdHJhbnNsYXRpb24uY29tbW9uX2xhbmcuY291bGRudF9kZWxldGVfdGhlX2FjdGl2aXR5O1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgZGVsZXRlVmFsdWU6IGRlbGV0ZVZhbHVlLCBkZWxldGVUb2dnbGU6IGRlbGV0ZVRvZ2dsZSwgdHJhbnNsYXRpb246IHRyYW5zbGF0aW9uLCBwcm9wczogcHJvcHMsIHRvYXN0RGF0YTogdG9hc3REYXRhLCBsYXlvdXQ6IGxheW91dCwgZm9ybWF0RGF0ZTogZm9ybWF0RGF0ZSwgcm91bmRGbG9hdDogcm91bmRGbG9hdCwgZGVsZXRlQWN0aXZpdHlFbGVtZW50OiBkZWxldGVBY3Rpdml0eUVsZW1lbnQsIGRlbGV0ZUVsZW1lbnQ6IGRlbGV0ZUVsZW1lbnQsIGNhcGl0YWxpemU6IHZ1ZV8zLmNhcGl0YWxpemUsIGFjdGl2aXR5Q29yZUVsZW1lbnRzOiBjb3JlRWxlbWVudHNfMS5hY3Rpdml0eUNvcmVFbGVtZW50cywgQWN0aXZpdHlEYXRlOiBJbmRleF8xLkFjdGl2aXR5RGF0ZSwgQ29uZGl0aW9uczogSW5kZXhfMS5Db25kaXRpb25zLCBDb250YWN0SW5mbzogSW5kZXhfMS5Db250YWN0SW5mbywgRGVzY3JpcHRpb246IEluZGV4XzEuRGVzY3JpcHRpb24sIEh1bWFuaXRhcmlhblNjb3BlOiBJbmRleF8xLkh1bWFuaXRhcmlhblNjb3BlLCBJYXRpSWRlbnRpZmllcjogSW5kZXhfMS5JYXRpSWRlbnRpZmllciwgTGVnYWN5RGF0YTogSW5kZXhfMS5MZWdhY3lEYXRhLCBMb2NhdGlvbjogSW5kZXhfMS5Mb2NhdGlvbiwgT3RoZXJJZGVudGlmaWVyOiBJbmRleF8xLk90aGVySWRlbnRpZmllciwgUGFydGljaXBhdGluZ09yZzogSW5kZXhfMS5QYXJ0aWNpcGF0aW5nT3JnLCBQbGFubmVkRGlzYnVyc2VtZW50OiBJbmRleF8xLlBsYW5uZWREaXNidXJzZW1lbnQsIFBvbGljeU1hcmtlcjogSW5kZXhfMS5Qb2xpY3lNYXJrZXIsIFJlY2lwaWVudENvdW50cnk6IEluZGV4XzEuUmVjaXBpZW50Q291bnRyeSwgUmVjaXBpZW50UmVnaW9uOiBJbmRleF8xLlJlY2lwaWVudFJlZ2lvbiwgUmVsYXRlZEFjdGl2aXR5OiBJbmRleF8xLlJlbGF0ZWRBY3Rpdml0eSwgUmVwb3J0aW5nT3JnYW5pemF0aW9uOiBJbmRleF8xLlJlcG9ydGluZ09yZ2FuaXphdGlvbiwgU2VjdG9yOiBJbmRleF8xLlNlY3RvciwgVGFnOiBJbmRleF8xLlRhZywgVGl0bGVFbGVtZW50OiBJbmRleF8xLlRpdGxlRWxlbWVudCwgVHJhbnNhY3Rpb25zOiBJbmRleF8xLlRyYW5zYWN0aW9ucywgQnRuOiBMaW5rX3Z1ZV8xLmRlZmF1bHQsIFN0YXR1czogRWxlbWVudFN0YXR1c192dWVfMS5kZWZhdWx0LCBIb3ZlclRleHQ6IEhvdmVyVGV4dF92dWVfMS5kZWZhdWx0LCBNb2RhbDogUG9wdXBNb2RhbF92dWVfMS5kZWZhdWx0LCBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBDcmVhdGVNb2RhbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi4vQ3JlYXRlTW9kYWwudnVlXCIpKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdBZGRBY3Rpdml0eUJ1dHRvbicsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBDcmVhdGVNb2RhbDogQ3JlYXRlTW9kYWxfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgc3RhdGUgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIGlzVmlzaWJsZTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgX2EgPSAoMCwgY29yZV8xLnVzZVRvZ2dsZSkoKSwgbW9kYWxWYWx1ZSA9IF9hWzBdLCBtb2RhbFRvZ2dsZSA9IF9hWzFdO1xuICAgICAgICB2YXIgbW9kZWxWaXNpYmxlID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgdG9nZ2xlTW9kZWwgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIG1vZGVsVmlzaWJsZS52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgbGlDbGFzcyA9ICdibG9jayBwLTIuNSB0ZXh0LW4tNDAgdGV4dC10aW55IGxlYWRpbmctWzEuNV0gZm9udC1ib2xkIGhvdmVyOnRleHQtbi01MCBob3ZlcjpiZy1uLTEwJztcbiAgICAgICAgdmFyIGRyb3Bkb3duQnRuID0gKDAsIHZ1ZV8xLnJlZikoKTtcbiAgICAgICAgKDAsIHZ1ZV8xLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWRyb3Bkb3duQnRuLnZhbHVlLmNvbnRhaW5zKGUudGFyZ2V0KSkge1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5pc1Zpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB0b2dnbGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzdGF0ZS5pc1Zpc2libGUgPSAhc3RhdGUuaXNWaXNpYmxlO1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICAgICAgbGlDbGFzczogbGlDbGFzcyxcbiAgICAgICAgICAgIG1vZGVsVmlzaWJsZTogbW9kZWxWaXNpYmxlLFxuICAgICAgICAgICAgbW9kYWxWYWx1ZTogbW9kYWxWYWx1ZSxcbiAgICAgICAgICAgIHRvZ2dsZTogdG9nZ2xlLFxuICAgICAgICAgICAgbW9kYWxUb2dnbGU6IG1vZGFsVG9nZ2xlLFxuICAgICAgICAgICAgdG9nZ2xlTW9kZWw6IHRvZ2dsZU1vZGVsLFxuICAgICAgICAgICAgZHJvcGRvd25CdG46IGRyb3Bkb3duQnRuLFxuICAgICAgICAgICAgbGFuZ3VhZ2U6IGxhbmd1YWdlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIGluZGV4XzEgPSByZXF1aXJlKFwiU3RvcmUvYWN0aXZpdGllcy9pbmRleFwiKTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgQ3JlYXRlTW9kYWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uL0NyZWF0ZU1vZGFsLnZ1ZVwiKSk7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uLy4uLy4uL2NvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG52YXIgUG9wdXBNb2RhbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZVwiKSk7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xuLyoqXG4gKiAgR2xvYmFsIFN0YXRlXG4gKi9cbnZhciBzdG9yZSA9ICgwLCBpbmRleF8xLnVzZVN0b3JlKSgpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdBZGRBY3Rpdml0eUJ1dHRvbicsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBDcmVhdGVNb2RhbDogQ3JlYXRlTW9kYWxfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgVG9hc3Q6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0LFxuICAgICAgICBNb2RhbDogUG9wdXBNb2RhbF92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciBzdGF0ZSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgaXNWaXNpYmxlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBfYSA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBtb2RhbFZhbHVlID0gX2FbMF0sIG1vZGFsVG9nZ2xlID0gX2FbMV07XG4gICAgICAgIHZhciBtb2RlbFZpc2libGUgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB0b2FzdFZpc2liaWxpdHkgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB0b2FzdE1lc3NhZ2UgPSAoMCwgdnVlXzEucmVmKSgnJyk7XG4gICAgICAgIHZhciB0b2FzdG1lc3NhZ2VUeXBlID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd0Vycm9ycG9wdXAgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBtZXNzYWdlID0gKDAsIHZ1ZV8xLnJlZikoJycpO1xuICAgICAgICB2YXIgZG93bmxvYWRpbmdCYWNrZ3JvdW5kTWVzc2FnZSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGRvd25sb2FkaW5nSW5Qcm9jZXNzID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgaXNMb2FkaW5nID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgdG9nZ2xlTW9kZWwgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIG1vZGVsVmlzaWJsZS52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgbGlDbGFzcyA9ICdibG9jayBwLTIuNSB0ZXh0LW4tNDAgdGV4dC10aW55IGxlYWRpbmctWzEuNV0gZm9udC1ib2xkIGhvdmVyOnRleHQtbi01MCBob3ZlcjpiZy1uLTEwJztcbiAgICAgICAgdmFyIGRyb3Bkb3duQnRuID0gKDAsIHZ1ZV8xLnJlZikoKTtcbiAgICAgICAgKDAsIHZ1ZV8xLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWRyb3Bkb3duQnRuLnZhbHVlLmNvbnRhaW5zKGUudGFyZ2V0KSkge1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5pc1Zpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGZ1bmN0aW9uIGRvd25sb2FkRXJyb3IoZmlsZW5hbWUsIHRleHQpIHtcbiAgICAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCAnZGF0YTp0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgsJyArIGVuY29kZVVSSUNvbXBvbmVudCh0ZXh0KSk7XG4gICAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBmaWxlbmFtZSk7XG4gICAgICAgICAgICBlbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuICAgICAgICAgICAgZWxlbWVudC5jbGljaygpO1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChlbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdG9nZ2xlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc3RhdGUuaXNWaXNpYmxlID0gIXN0YXRlLmlzVmlzaWJsZTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNoZWNrRG93bmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpc0xvYWRpbmcudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldCgnL2FjdGl2aXRpZXMvZG93bmxvYWQteGxzLXByb2dyZXNzLXN0YXR1cycpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGRvd25sb2FkaW5nSW5Qcm9jZXNzLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBkb3dubG9hZGluZ0JhY2tncm91bmRNZXNzYWdlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGRvd25sb2FkQW55d2F5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZUNhbmNlbERvd25sb2FkJywgdHJ1ZSk7XG4gICAgICAgICAgICBpc0xvYWRpbmcudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgZG93bmxvYWRpbmdJblByb2Nlc3MudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVDYW5jZWxEb3dubG9hZCcsIHRydWUpO1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJ0WGxzRG93bmxvYWQnLCBmYWxzZSk7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KCcvYWN0aXZpdGllcy9jYW5jZWwteGxzLWRvd25sb2FkJykudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgY2hlY2tEb3dubG9hZCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBkb3dubG9hZEVycm9yeG1sID0gZnVuY3Rpb24gKGNvdW50QWN0aXZpdGllcykge1xuICAgICAgICAgICAgc2hvd0Vycm9ycG9wdXAudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIHZhciBxdWVyeVBhcmFtZXRlcnMgPSB3aW5kb3cubG9jYXRpb24uaHJlZi5zcGxpdCgnPycpO1xuICAgICAgICAgICAgdmFyIGFkZFF1ZXJ5UGFyYW1zID0gJyc7XG4gICAgICAgICAgICBpZiAocXVlcnlQYXJhbWV0ZXJzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgICAgIGFkZFF1ZXJ5UGFyYW1zID0gJyYnICsgcXVlcnlQYXJhbWV0ZXJzWzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGFwaVVybCA9ICcvYWN0aXZpdGllcy9kb3dubG9hZC14bWwvdHJ1ZT9hY3Rpdml0aWVzPWFsbCcgKyBhZGRRdWVyeVBhcmFtcztcbiAgICAgICAgICAgIGlmIChjb3VudEFjdGl2aXRpZXMgPiAwKSB7XG4gICAgICAgICAgICAgICAgdmFyIGFjdGl2aXRpZXMgPSBzdG9yZS5zdGF0ZS5zZWxlY3RlZEFjdGl2aXRpZXMuam9pbignLCcpO1xuICAgICAgICAgICAgICAgIGFwaVVybCA9IFwiL2FjdGl2aXRpZXMvZG93bmxvYWQteG1sL3RydWU/YWN0aXZpdGllcz1bXCIuY29uY2F0KGFjdGl2aXRpZXMsIFwiXVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoYXBpVXJsKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnN1Y2Nlc3MgPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3RNZXNzYWdlLnZhbHVlID0gcmVzLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3RtZXNzYWdlVHlwZS52YWx1ZSA9IHJlcy5kYXRhLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gKHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlKTsgfSwgMTUwMDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIHZhciBibG9iID0gbmV3IEJsb2IoW3Jlc3BvbnNlXSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL3htbCcsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgICAgICAgICAgbGluay5ocmVmID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICAgICAgICAgICAgICAgIGxpbmsuZG93bmxvYWQgPSAoX2EgPSByZXMuaGVhZGVyc1snY29udGVudC1kaXNwb3NpdGlvbiddKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc3BsaXQoJz0nKVsxXTtcbiAgICAgICAgICAgICAgICAgICAgbGluay5jbGljaygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZG93bmxvYWRYbWwgPSBmdW5jdGlvbiAoY291bnRBY3Rpdml0aWVzKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICB2YXIgcXVlcnlQYXJhbWV0ZXJzID0gKF9hID0gd2luZG93LmxvY2F0aW9uLmhyZWYpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zcGxpdCgnPycpO1xuICAgICAgICAgICAgdmFyIGFkZFF1ZXJ5UGFyYW1zID0gJyc7XG4gICAgICAgICAgICBpZiAocXVlcnlQYXJhbWV0ZXJzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgICAgIGFkZFF1ZXJ5UGFyYW1zID0gJyYnICsgcXVlcnlQYXJhbWV0ZXJzWzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGFwaVVybCA9ICcvYWN0aXZpdGllcy9kb3dubG9hZC14bWw/YWN0aXZpdGllcz1hbGwnICsgYWRkUXVlcnlQYXJhbXM7XG4gICAgICAgICAgICBpZiAoY291bnRBY3Rpdml0aWVzID4gMCkge1xuICAgICAgICAgICAgICAgIHZhciBhY3Rpdml0aWVzID0gc3RvcmUuc3RhdGUuc2VsZWN0ZWRBY3Rpdml0aWVzLmpvaW4oJywnKTtcbiAgICAgICAgICAgICAgICBhcGlVcmwgPSBcIi9hY3Rpdml0aWVzL2Rvd25sb2FkLXhtbD9hY3Rpdml0aWVzPVtcIi5jb25jYXQoYWN0aXZpdGllcywgXCJdXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldChhcGlVcmwpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEuc3VjY2VzcyA9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEueG1sX2Vycm9yID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93RXJyb3Jwb3B1cC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLnZhbHVlID0gcmVzLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2UudmFsdWUgPSByZXMuZGF0YS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9hc3RtZXNzYWdlVHlwZS52YWx1ZSA9IHJlcy5kYXRhLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuICh0b2FzdFZpc2liaWxpdHkudmFsdWUgPSBmYWxzZSk7IH0sIDE1MDAwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIHZhciBibG9iID0gbmV3IEJsb2IoW3Jlc3BvbnNlXSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL3htbCcsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgICAgICAgICAgbGluay5ocmVmID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICAgICAgICAgICAgICAgIGxpbmsuZG93bmxvYWQgPSAoX2EgPSByZXMuaGVhZGVyc1snY29udGVudC1kaXNwb3NpdGlvbiddKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc3BsaXQoJz0nKVsxXTtcbiAgICAgICAgICAgICAgICAgICAgbGluay5jbGljaygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZG93bmxvYWRYbHMgPSBmdW5jdGlvbiAoY291bnRBY3Rpdml0aWVzKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBpc0xvYWRpbmcudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJ0WGxzRG93bmxvYWQnLCB0cnVlKTtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVDYW5jZWxEb3dubG9hZCcsIGZhbHNlKTtcbiAgICAgICAgICAgIGRvd25sb2FkaW5nQmFja2dyb3VuZE1lc3NhZ2UudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIHZhciBxdWVyeVBhcmFtZXRlcnMgPSAoX2EgPSB3aW5kb3cubG9jYXRpb24uaHJlZikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnNwbGl0KCc/Jyk7XG4gICAgICAgICAgICB2YXIgYWRkUXVlcnlQYXJhbXMgPSAnJztcbiAgICAgICAgICAgIGlmIChxdWVyeVBhcmFtZXRlcnMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICAgICAgYWRkUXVlcnlQYXJhbXMgPSAnJicgKyBxdWVyeVBhcmFtZXRlcnNbMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgYXBpVXJsID0gJy9hY3Rpdml0aWVzL3ByZXBhcmUteGxzP2FjdGl2aXRpZXM9YWxsJyArIGFkZFF1ZXJ5UGFyYW1zO1xuICAgICAgICAgICAgaWYgKGNvdW50QWN0aXZpdGllcyA+IDApIHtcbiAgICAgICAgICAgICAgICB2YXIgYWN0aXZpdGllcyA9IHN0b3JlLnN0YXRlLnNlbGVjdGVkQWN0aXZpdGllcy5qb2luKCcsJyk7XG4gICAgICAgICAgICAgICAgYXBpVXJsID0gXCIvYWN0aXZpdGllcy9wcmVwYXJlLXhscz9hY3Rpdml0aWVzPVtcIi5jb25jYXQoYWN0aXZpdGllcywgXCJdXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldChhcGlVcmwpLmZpbmFsbHkoZnVuY3Rpb24gKCkgeyByZXR1cm4gKGlzTG9hZGluZy52YWx1ZSA9IGZhbHNlKTsgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBkb3dubG9hZENzdiA9IGZ1bmN0aW9uIChjb3VudEFjdGl2aXRpZXMpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHZhciBxdWVyeVBhcmFtZXRlcnMgPSAoX2EgPSB3aW5kb3cubG9jYXRpb24uaHJlZikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnNwbGl0KCc/Jyk7XG4gICAgICAgICAgICB2YXIgYWRkUXVlcnlQYXJhbXMgPSAnJztcbiAgICAgICAgICAgIGlmIChxdWVyeVBhcmFtZXRlcnMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICAgICAgYWRkUXVlcnlQYXJhbXMgPSAnJicgKyBxdWVyeVBhcmFtZXRlcnNbMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgYXBpVXJsID0gJy9hY3Rpdml0aWVzL2Rvd25sb2FkLWNzdj9hY3Rpdml0aWVzPWFsbCcgKyBhZGRRdWVyeVBhcmFtcztcbiAgICAgICAgICAgIGlmIChjb3VudEFjdGl2aXRpZXMgPiAwKSB7XG4gICAgICAgICAgICAgICAgdmFyIGFjdGl2aXRpZXMgPSBzdG9yZS5zdGF0ZS5zZWxlY3RlZEFjdGl2aXRpZXMuam9pbignLCcpO1xuICAgICAgICAgICAgICAgIGFwaVVybCA9IFwiL2FjdGl2aXRpZXMvZG93bmxvYWQtY3N2P2FjdGl2aXRpZXM9W1wiLmNvbmNhdChhY3Rpdml0aWVzLCBcIl1cIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KGFwaVVybCkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5zdWNjZXNzID09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0TWVzc2FnZS52YWx1ZSA9IHJlcy5kYXRhLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0bWVzc2FnZVR5cGUudmFsdWUgPSByZXMuZGF0YS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuICh0b2FzdFZpc2liaWxpdHkudmFsdWUgPSBmYWxzZSk7IH0sIDE1MDAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFtyZXNwb25zZV0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi9jc3YnLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgICAgICAgICAgICAgIGxpbmsuaHJlZiA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgICAgICAgICAgICAgICBsaW5rLmRvd25sb2FkID0gKF9hID0gcmVzLmhlYWRlcnNbJ2NvbnRlbnQtZGlzcG9zaXRpb24nXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnNwbGl0KCc9JylbMV07XG4gICAgICAgICAgICAgICAgICAgIGxpbmsuY2xpY2soKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN0b3JlOiBzdG9yZSxcbiAgICAgICAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgICAgICAgIGxpQ2xhc3M6IGxpQ2xhc3MsXG4gICAgICAgICAgICBtb2RlbFZpc2libGU6IG1vZGVsVmlzaWJsZSxcbiAgICAgICAgICAgIG1vZGFsVmFsdWU6IG1vZGFsVmFsdWUsXG4gICAgICAgICAgICB0b2dnbGU6IHRvZ2dsZSxcbiAgICAgICAgICAgIG1vZGFsVG9nZ2xlOiBtb2RhbFRvZ2dsZSxcbiAgICAgICAgICAgIHRvZ2dsZU1vZGVsOiB0b2dnbGVNb2RlbCxcbiAgICAgICAgICAgIGRyb3Bkb3duQnRuOiBkcm9wZG93bkJ0bixcbiAgICAgICAgICAgIGRvd25sb2FkQ3N2OiBkb3dubG9hZENzdixcbiAgICAgICAgICAgIHRvYXN0VmlzaWJpbGl0eTogdG9hc3RWaXNpYmlsaXR5LFxuICAgICAgICAgICAgZG93bmxvYWRpbmdCYWNrZ3JvdW5kTWVzc2FnZTogZG93bmxvYWRpbmdCYWNrZ3JvdW5kTWVzc2FnZSxcbiAgICAgICAgICAgIHRvYXN0TWVzc2FnZTogdG9hc3RNZXNzYWdlLFxuICAgICAgICAgICAgdG9hc3RtZXNzYWdlVHlwZTogdG9hc3RtZXNzYWdlVHlwZSxcbiAgICAgICAgICAgIGRvd25sb2FkWG1sOiBkb3dubG9hZFhtbCxcbiAgICAgICAgICAgIE1vZGFsOiBQb3B1cE1vZGFsX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgICAgICBzaG93RXJyb3Jwb3B1cDogc2hvd0Vycm9ycG9wdXAsXG4gICAgICAgICAgICBjaGVja0Rvd25sb2FkOiBjaGVja0Rvd25sb2FkLFxuICAgICAgICAgICAgZG93bmxvYWRFcnJvcnhtbDogZG93bmxvYWRFcnJvcnhtbCxcbiAgICAgICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICAgICAgICBkb3dubG9hZEVycm9yOiBkb3dubG9hZEVycm9yLFxuICAgICAgICAgICAgZG93bmxvYWRYbHM6IGRvd25sb2FkWGxzLFxuICAgICAgICAgICAgZG93bmxvYWRpbmdJblByb2Nlc3M6IGRvd25sb2FkaW5nSW5Qcm9jZXNzLFxuICAgICAgICAgICAgaXNMb2FkaW5nOiBpc0xvYWRpbmcsXG4gICAgICAgICAgICBkb3dubG9hZEFueXdheTogZG93bmxvYWRBbnl3YXksXG4gICAgICAgICAgICBsYW5ndWFnZTogbGFuZ3VhZ2UsXG4gICAgICAgIH07XG4gICAgfSxcbiAgICBtZXRob2RzOiB7IGNhcGl0YWxpemU6IHZ1ZV8xLmNhcGl0YWxpemUgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIEhvdmVyVGV4dF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi4vLi4vLi4vY29tcG9uZW50cy9Ib3ZlclRleHQudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnRWxlbWVudE5vdGUnLFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgSG92ZXJUZXh0OiBIb3ZlclRleHRfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICByZXR1cm4geyBsYW5ndWFnZTogbGFuZ3VhZ2UgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgQWRkQWN0aXZpdHlCdXR0b25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vQWRkQWN0aXZpdHlCdXR0b24udnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnRW1wdHlBY3Rpdml0eScsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBBY3Rpdml0eUJ1dHRvbjogQWRkQWN0aXZpdHlCdXR0b25fdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgc3RhdGUgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIGRpc21pc3M6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4geyBzdGF0ZTogc3RhdGUsIGxhbmd1YWdlOiBsYW5ndWFnZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgRG93bmxvYWRBY3Rpdml0eUJ1dHRvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9Eb3dubG9hZEFjdGl2aXR5QnV0dG9uLnZ1ZVwiKSk7XG52YXIgQWRkQWN0aXZpdHlCdXR0b25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vQWRkQWN0aXZpdHlCdXR0b24udnVlXCIpKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG52YXIgUmVmcmVzaFRvYXN0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJBY3Rpdml0eS9idWxrLXB1Ymxpc2gvUmVmcmVzaFRvYXN0LnZ1ZVwiKSk7XG52YXIgUHVibGlzaFNlbGVjdGVkX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJBY3Rpdml0eS9idWxrLXB1Ymxpc2gvUHVibGlzaFNlbGVjdGVkLnZ1ZVwiKSk7XG52YXIgRGVsZXRlQnV0dG9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL2J1dHRvbnMvRGVsZXRlQnV0dG9uLnZ1ZVwiKSk7XG4vLyBWdWV4IFN0b3JlXG52YXIgaW5kZXhfMSA9IHJlcXVpcmUoXCJTdG9yZS9hY3Rpdml0aWVzL2luZGV4XCIpO1xudmFyIEVycm9yUG9wVXBfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvRXJyb3JQb3BVcC52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1BhZ2VUaXRsZScsXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciByZWZyZXNoVG9hc3RNc2cgPSAoMCwgdnVlXzIuaW5qZWN0KSgncmVmcmVzaFRvYXN0TXNnJyk7XG4gICAgICAgIHZhciB0b2FzdE1lc3NhZ2UgPSAoMCwgdnVlXzIuaW5qZWN0KSgndG9hc3REYXRhJyk7XG4gICAgICAgIHZhciBlcnJvckRhdGEgPSAoMCwgdnVlXzIuaW5qZWN0KSgnZXJyb3JEYXRhJyk7XG4gICAgICAgIHZhciBzdG9yZSA9ICgwLCBpbmRleF8xLnVzZVN0b3JlKSgpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBsYW5ndWFnZTogbGFuZ3VhZ2UsIHJlZnJlc2hUb2FzdE1zZzogcmVmcmVzaFRvYXN0TXNnLCB0b2FzdE1lc3NhZ2U6IHRvYXN0TWVzc2FnZSwgZXJyb3JEYXRhOiBlcnJvckRhdGEsIHN0b3JlOiBzdG9yZSwgRG93bmxvYWRBY3Rpdml0eUJ1dHRvbjogRG93bmxvYWRBY3Rpdml0eUJ1dHRvbl92dWVfMS5kZWZhdWx0LCBBZGRBY3Rpdml0eUJ1dHRvbjogQWRkQWN0aXZpdHlCdXR0b25fdnVlXzEuZGVmYXVsdCwgVG9hc3Q6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0LCBSZWZyZXNoVG9hc3RNZXNzYWdlOiBSZWZyZXNoVG9hc3RfdnVlXzEuZGVmYXVsdCwgUHVibGlzaFNlbGVjdGVkOiBQdWJsaXNoU2VsZWN0ZWRfdnVlXzEuZGVmYXVsdCwgRGVsZXRlQnV0dG9uOiBEZWxldGVCdXR0b25fdnVlXzEuZGVmYXVsdCwgRXJyb3JQb3BVcDogRXJyb3JQb3BVcF92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnU2lkZWJhckhlbHBCbG9jaycsXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBtb21lbnRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwibW9tZW50XCIpKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xuLy8gVnVleCBTdG9yZVxudmFyIGluZGV4XzEgPSByZXF1aXJlKFwiU3RvcmUvYWN0aXZpdGllcy9pbmRleFwiKTtcbnZhciBQcmV2aW91c2x5UHVibGlzaGVkX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3N0YXR1cy9QcmV2aW91c2x5UHVibGlzaGVkLnZ1ZVwiKSk7XG52YXIgUHVibGlzaEJ1dHRvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9idXR0b25zL1B1Ymxpc2hCdXR0b24udnVlXCIpKTtcbnZhciBVblB1Ymxpc2hCdXR0b25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvYnV0dG9ucy9VblB1Ymxpc2hCdXR0b24udnVlXCIpKTtcbi8vIGltcG9ydCBTaGltbWVyIGZyb20gXCJDb21wb25lbnRzL1NoaW1tZXJMb2FkaW5nLnZ1ZVwiO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1RhYmxlTGF5b3V0JyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgbG9hZGVyOiB7IHR5cGU6IEJvb2xlYW4sIHJlcXVpcmVkOiBmYWxzZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciBfYiA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBzZWxlY3RBbGxWYWx1ZSA9IF9iWzBdLCBzZWxlY3RBbGxUb2dnbGUgPSBfYlsxXTtcbiAgICAgICAgdmFyIHN0b3JlID0gKDAsIGluZGV4XzEudXNlU3RvcmUpKCk7XG4gICAgICAgIGZ1bmN0aW9uIGZvcm1hdERhdGUoZGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuICgwLCBtb21lbnRfMS5kZWZhdWx0KShkYXRlKS5mcm9tTm93KCk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gdG9nZ2xlU2VsZWN0QWxsKGFjdGl2aXRpZXMsIHNlbGVjdEFsbFZhbHVlKSB7XG4gICAgICAgICAgICBpZiAoIXNlbGVjdEFsbFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGlkcyA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGRhdHVtIGluIGFjdGl2aXRpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWRzLnB1c2goYWN0aXZpdGllc1tkYXR1bV0uaWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU2VsZWN0ZWRBY3Rpdml0aWVzJywgaWRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTZWxlY3RlZEFjdGl2aXRpZXMnLCBbXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxlY3RBbGxUb2dnbGUoKTtcbiAgICAgICAgfVxuICAgICAgICAvL1NvcnRpbmcgYnkgdXBkYXRlX2F0XG4gICAgICAgIHZhciBjdXJyZW50VVJMID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XG4gICAgICAgIHZhciBxdWVyeSA9ICcnLCBkaXJlY3Rpb24gPSAnYXNjJztcbiAgICAgICAgdmFyIHNvcnRpbmdEaXJlY3Rpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gZGlyZWN0aW9uID09PSAnYXNjJyA/ICdkZXNjZW5kaW5nJyA6ICdhc2NlbmRpbmcnO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgc29ydEJ5UHVibGlzaGluZ1Byb2dyZXNzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRVUkwuaW5jbHVkZXMoJz8nKSkge1xuICAgICAgICAgICAgICAgIHZhciBxdWVyeVN0cmluZyA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gsIHVybFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMocXVlcnlTdHJpbmcpO1xuICAgICAgICAgICAgICAgIHF1ZXJ5ID0gKF9hID0gdXJsUGFyYW1zLmdldCgncScpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJztcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb24gPSB1cmxQYXJhbXMuZ2V0KCdkaXJlY3Rpb24nKSA9PT0gJ2Rlc2MnID8gJ2FzYycgOiAnZGVzYyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gXCI/cT1cIi5jb25jYXQocXVlcnksIFwiJm9yZGVyQnk9Y29tcGxldGVfcGVyY2VudGFnZSZkaXJlY3Rpb249XCIpLmNvbmNhdChkaXJlY3Rpb24pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgc29ydEJ5RGF0ZVVybCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50VVJMLmluY2x1ZGVzKCc/JykpIHtcbiAgICAgICAgICAgICAgICB2YXIgcXVlcnlTdHJpbmcgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoLCB1cmxQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHF1ZXJ5U3RyaW5nKTtcbiAgICAgICAgICAgICAgICBxdWVyeSA9IChfYSA9IHVybFBhcmFtcy5nZXQoJ3EnKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJyc7XG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uID0gdXJsUGFyYW1zLmdldCgnZGlyZWN0aW9uJykgPT09ICdkZXNjJyA/ICdhc2MnIDogJ2Rlc2MnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFwiP3E9XCIuY29uY2F0KHF1ZXJ5LCBcIiZvcmRlckJ5PXVwZGF0ZWRfYXQmZGlyZWN0aW9uPVwiKS5jb25jYXQoZGlyZWN0aW9uKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgbGFuZ3VhZ2U6IGxhbmd1YWdlLCBzZWxlY3RBbGxWYWx1ZTogc2VsZWN0QWxsVmFsdWUsIHNlbGVjdEFsbFRvZ2dsZTogc2VsZWN0QWxsVG9nZ2xlLCBzdG9yZTogc3RvcmUsIGZvcm1hdERhdGU6IGZvcm1hdERhdGUsIHRvZ2dsZVNlbGVjdEFsbDogdG9nZ2xlU2VsZWN0QWxsLCBjdXJyZW50VVJMOiBjdXJyZW50VVJMLCBxdWVyeTogcXVlcnksIGRpcmVjdGlvbjogZGlyZWN0aW9uLCBzb3J0aW5nRGlyZWN0aW9uOiBzb3J0aW5nRGlyZWN0aW9uLCBzb3J0QnlQdWJsaXNoaW5nUHJvZ3Jlc3M6IHNvcnRCeVB1Ymxpc2hpbmdQcm9ncmVzcywgc29ydEJ5RGF0ZVVybDogc29ydEJ5RGF0ZVVybCwgUHJldmlvdXNseVB1Ymxpc2hlZDogUHJldmlvdXNseVB1Ymxpc2hlZF92dWVfMS5kZWZhdWx0LCBQdWJsaXNoOiBQdWJsaXNoQnV0dG9uX3Z1ZV8xLmRlZmF1bHQsIFVuUHVibGlzaDogVW5QdWJsaXNoQnV0dG9uX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuLy9jb21wb25lbnRcbnZhciBMaW5rX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL2J1dHRvbnMvTGluay52dWVcIikpO1xudmFyIFBhZ2VUaXRsZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9QYWdlVGl0bGUudnVlXCIpKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG52YXIgSW5kZXhfMSA9IHJlcXVpcmUoXCIuL2VsZW1lbnRzL0luZGV4XCIpO1xuLy9jb21wb3NhYmxlXG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xudmFyIHRpdGxlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvdGl0bGVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdQZXJpb2REZXRhaWwnLFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgVGFyZ2V0VmFsdWU6IEluZGV4XzEuVGFyZ2V0VmFsdWUsXG4gICAgICAgIEFjdHVhbFZhbHVlOiBJbmRleF8xLkFjdHVhbFZhbHVlLFxuICAgICAgICBCdG46IExpbmtfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgUGFnZVRpdGxlOiBQYWdlVGl0bGVfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgVG9hc3Q6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgYWN0aXZpdHk6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBwYXJlbnREYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgcGVyaW9kOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0b2FzdDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGVsZW1lbnQ6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHZhciBwb3NpdGlvblkgPSAoMCwgdnVlXzEucmVmKSgwKTtcbiAgICAgICAgdmFyIHNjcmVlbldpZHRoID0gKDAsIHZ1ZV8xLnJlZikoMCk7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgbGlua0NsYXNzZXMgPSAnZmxleCBpdGVtcy1jZW50ZXIgdy1mdWxsIGJnLXdoaXRlIHJvdW5kZWQgcC0yIHRleHQtc20gdGV4dC1uLTUwIGZvbnQtYm9sZCBsZWFkaW5nLW5vcm1hbCBtYi0yIHNoYWRvdy1kZWZhdWx0JztcbiAgICAgICAgdmFyIF9iID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLCBwZXJpb2QgPSBfYi5wZXJpb2QsIGFjdGl2aXR5ID0gX2IuYWN0aXZpdHksIHBhcmVudERhdGEgPSBfYi5wYXJlbnREYXRhLCB0eXBlcyA9IF9iLnR5cGVzO1xuICAgICAgICB2YXIgaGFuZGxlU2Nyb2xsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcG9zaXRpb25ZLnZhbHVlID0gd2luZG93LnNjcm9sbFk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBpc3RvcFZpc2libGUgPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBwb3NpdGlvblkudmFsdWUgPT09IDA7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgdG9hc3REYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBzaG93U2lkZWJhciA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgLy8gdnVlIHByb3ZpZGVcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCd0eXBlcycsIHR5cGVzLnZhbHVlKTtcbiAgICAgICAgLy9pbmRpY2F0b3JcbiAgICAgICAgdmFyIHBlcmlvZERhdGEgPSBwZXJpb2QudmFsdWUucGVyaW9kO1xuICAgICAgICAvL3RpdGxlc1xuICAgICAgICB2YXIgYWN0aXZpdHlJZCA9IGFjdGl2aXR5LnZhbHVlLmlkLCBkZWZhdWx0TGFuZ3VhZ2UgPSAoX2EgPSBhY3Rpdml0eS52YWx1ZS5kZWZhdWx0X2ZpZWxkX3ZhbHVlcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmRlZmF1bHRfbGFuZ3VhZ2UsIGFjdGl2aXR5VGl0bGUgPSAoMCwgdGl0bGVfMS5kZWZhdWx0KShhY3Rpdml0eS52YWx1ZS50aXRsZSwgZGVmYXVsdExhbmd1YWdlKSwgYWN0aXZpdHlMaW5rID0gXCIvYWN0aXZpdHkvXCIuY29uY2F0KGFjdGl2aXR5SWQpLCByZXN1bHRJZCA9IHBhcmVudERhdGEudmFsdWUucmVzdWx0LmlkLCByZXN1bHRUaXRsZSA9ICgwLCB0aXRsZV8xLmRlZmF1bHQpKHBhcmVudERhdGEudmFsdWUucmVzdWx0LnRpdGxlLCBkZWZhdWx0TGFuZ3VhZ2UpLCByZXN1bHRMaW5rID0gXCJcIi5jb25jYXQoYWN0aXZpdHlMaW5rLCBcIi9yZXN1bHQvXCIpLmNvbmNhdChyZXN1bHRJZCksIGluZGljYXRvcklkID0gcGFyZW50RGF0YS52YWx1ZS5pbmRpY2F0b3IuaWQsIGluZGljYXRvclRpdGxlID0gKDAsIHRpdGxlXzEuZGVmYXVsdCkocGFyZW50RGF0YS52YWx1ZS5pbmRpY2F0b3IudGl0bGUsIGRlZmF1bHRMYW5ndWFnZSksIGluZGljYXRvckxpbmsgPSBcIi9yZXN1bHQvXCIuY29uY2F0KHJlc3VsdElkLCBcIi9pbmRpY2F0b3IvXCIpLmNvbmNhdChpbmRpY2F0b3JJZCksIHBlcmlvZExpbmsgPSBcIi9pbmRpY2F0b3IvXCIuY29uY2F0KGluZGljYXRvcklkLCBcIi9wZXJpb2RcIik7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBCcmVhZGNydW1iIGRhdGFcbiAgICAgICAgICovXG4gICAgICAgIHZhciBicmVhZGNydW1iRGF0YSA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogbGFuZ3VhZ2UuYWN0aXZpdGllc19sYW5nLnlvdXJfYWN0aXZpdGllcyxcbiAgICAgICAgICAgICAgICBsaW5rOiAnL2FjdGl2aXRpZXMnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogYWN0aXZpdHlUaXRsZSxcbiAgICAgICAgICAgICAgICBsaW5rOiBhY3Rpdml0eUxpbmssXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiByZXN1bHRUaXRsZSxcbiAgICAgICAgICAgICAgICBsaW5rOiByZXN1bHRMaW5rLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaW5kaWNhdG9yVGl0bGUsXG4gICAgICAgICAgICAgICAgbGluazogaW5kaWNhdG9yTGluayxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGxhbmd1YWdlLmNvbW1vbl9sYW5nLnBlcmlvZCxcbiAgICAgICAgICAgICAgICBsaW5rOiAnJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICAgIHZhciBjYWxjV2lkdGggPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIHNjcmVlbldpZHRoLnZhbHVlID0gZXZlbnQudGFyZ2V0LmlubmVyV2lkdGg7XG4gICAgICAgICAgICBpZiAoc2NyZWVuV2lkdGgudmFsdWUgPiAxMDI0KSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc2hvd1NpZGViYXIudmFsdWUgJiZcbiAgICAgICAgICAgICAgICAgICAgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzaG93U2lkZWJhci52YWx1ZTsgfSwgZnVuY3Rpb24gKHNpZGViYXIpIHtcbiAgICAgICAgICAgIGlmIChzaWRlYmFyKSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNhbGNXaWR0aCk7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKTtcbiAgICAgICAgICAgIGlmIChwcm9wcy50b2FzdC5tZXNzYWdlICE9PSAnJykge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gcHJvcHMudG9hc3QudHlwZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSBwcm9wcy50b2FzdC5tZXNzYWdlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICAgICAgICAgIH0sIDUwMDApO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLm9uVW5tb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKTtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxjV2lkdGgpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxpbmtDbGFzc2VzOiBsaW5rQ2xhc3NlcyxcbiAgICAgICAgICAgIHBlcmlvZERhdGE6IHBlcmlvZERhdGEsXG4gICAgICAgICAgICBkYXRlRm9ybWF0OiBkYXRlRm9ybWF0XzEuZGVmYXVsdCxcbiAgICAgICAgICAgIGJyZWFkY3J1bWJEYXRhOiBicmVhZGNydW1iRGF0YSxcbiAgICAgICAgICAgIGFjdGl2aXR5TGluazogYWN0aXZpdHlMaW5rLFxuICAgICAgICAgICAgcmVzdWx0TGluazogcmVzdWx0TGluayxcbiAgICAgICAgICAgIGluZGljYXRvckxpbms6IGluZGljYXRvckxpbmssXG4gICAgICAgICAgICBwZXJpb2RMaW5rOiBwZXJpb2RMaW5rLFxuICAgICAgICAgICAgdG9hc3REYXRhOiB0b2FzdERhdGEsXG4gICAgICAgICAgICBzaG93U2lkZWJhcjogc2hvd1NpZGViYXIsXG4gICAgICAgICAgICBsYW5ndWFnZTogbGFuZ3VhZ2UsXG4gICAgICAgICAgICBpc3RvcFZpc2libGU6IGlzdG9wVmlzaWJsZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbi8vIGNvbXBvbmVudHNcbnZhciBCdXR0b25Db21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZVwiKSk7XG52YXIgVGFibGVQYWdpbmF0aW9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RhYmxlUGFnaW5hdGlvbi52dWVcIikpO1xudmFyIFBhZ2VUaXRsZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9QYWdlVGl0bGUudnVlXCIpKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG52YXIgRGVsZXRlQWN0aW9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL0RlbGV0ZUFjdGlvbi52dWVcIikpO1xuLy8gY29tcG9zYWJsZVxudmFyIGRhdGVGb3JtYXRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS9kYXRlRm9ybWF0XCIpKTtcbnZhciB0aXRsZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL3RpdGxlXCIpKTtcbnZhciB1dGlsc18xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdXRpbHNcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1BlcmlvZExpc3QnLFxuICAgIG1ldGhvZHM6IHsgY3JlYXRlQ2FwaXRhbGl6ZWRTZW50ZW5jZTogdXRpbHNfMS5jcmVhdGVDYXBpdGFsaXplZFNlbnRlbmNlIH0sXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBCdG46IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBQYWdpbmF0aW9uOiBUYWJsZVBhZ2luYXRpb25fdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgUGFnZVRpdGxlOiBQYWdlVGl0bGVfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgVG9hc3Q6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0LFxuICAgICAgICBEZWxldGVBY3Rpb246IERlbGV0ZUFjdGlvbl92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgYWN0aXZpdHk6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBwYXJlbnREYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgcGVyaW9kOiB7XG4gICAgICAgICAgICB0eXBlOiBBcnJheSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0b2FzdDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgX2EgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcyksIGFjdGl2aXR5ID0gX2EuYWN0aXZpdHksIHBhcmVudERhdGEgPSBfYS5wYXJlbnREYXRhO1xuICAgICAgICB2YXIgYWN0aXZpdHlJZCA9IGFjdGl2aXR5LnZhbHVlLmlkLCBhY3Rpdml0eVRpdGxlID0gYWN0aXZpdHkudmFsdWUudGl0bGUsIGFjdGl2aXR5TGluayA9IFwiL2FjdGl2aXR5L1wiLmNvbmNhdChhY3Rpdml0eUlkKSwgcmVzdWx0VGl0bGUgPSBwYXJlbnREYXRhLnZhbHVlLnJlc3VsdC50aXRsZSwgcmVzdWx0SWQgPSBwYXJlbnREYXRhLnZhbHVlLnJlc3VsdC5pZCwgcmVzdWx0TGluayA9IFwiXCIuY29uY2F0KGFjdGl2aXR5TGluaywgXCIvcmVzdWx0L1wiKS5jb25jYXQocmVzdWx0SWQpLCBpbmRpY2F0b3JUaXRsZSA9IHBhcmVudERhdGEudmFsdWUuaW5kaWNhdG9yLnRpdGxlLCBpbmRpY2F0b3JJZCA9IHBhcmVudERhdGEudmFsdWUuaW5kaWNhdG9yLmlkLCBpbmRpY2F0b3JMaW5rID0gXCIvcmVzdWx0L1wiLmNvbmNhdChyZXN1bHRJZCwgXCIvaW5kaWNhdG9yL1wiKS5jb25jYXQoaW5kaWNhdG9ySWQpLCBwZXJpb2RMaW5rID0gXCIvaW5kaWNhdG9yL1wiLmNvbmNhdChpbmRpY2F0b3JJZCwgXCIvcGVyaW9kXCIpO1xuICAgICAgICB2YXIgcGVyaW9kc0RhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHt9KTtcbiAgICAgICAgdmFyIGlzRW1wdHkgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB0b2FzdERhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEJyZWFkY3J1bWIgZGF0YVxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIGJyZWFkY3J1bWJEYXRhID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBsYW5ndWFnZS5hY3Rpdml0aWVzX2xhbmcueW91cl9hY3Rpdml0aWVzLFxuICAgICAgICAgICAgICAgIGxpbms6ICcvYWN0aXZpdHknLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogKDAsIHRpdGxlXzEuZGVmYXVsdCkoYWN0aXZpdHlUaXRsZSwgJ2VuJyksXG4gICAgICAgICAgICAgICAgbGluazogYWN0aXZpdHlMaW5rLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogKDAsIHRpdGxlXzEuZGVmYXVsdCkocmVzdWx0VGl0bGUsICdlbicpLFxuICAgICAgICAgICAgICAgIGxpbms6IHJlc3VsdExpbmssXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiAoMCwgdGl0bGVfMS5kZWZhdWx0KShpbmRpY2F0b3JUaXRsZSwgJ2VuJyksXG4gICAgICAgICAgICAgICAgbGluazogaW5kaWNhdG9yTGluayxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGxhbmd1YWdlLmNvbW1vbl9sYW5nLnBlcmlvZHNfbGlzdCxcbiAgICAgICAgICAgICAgICBsaW5rOiAnJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICAgICgwLCB2dWVfMS5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KFwiL2luZGljYXRvci9cIi5jb25jYXQoaW5kaWNhdG9ySWQsIFwiL3BlcmlvZHMvcGFnZS8xXCIpKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ocGVyaW9kc0RhdGEsIHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICBpc0VtcHR5LnZhbHVlID0gcmVzcG9uc2UuZGF0YS5kYXRhLmxlbmd0aCA/IGZhbHNlIDogdHJ1ZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAocHJvcHMudG9hc3QubWVzc2FnZSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSBwcm9wcy50b2FzdC50eXBlO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcHJvcHMudG9hc3QubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSwgNTAwMCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9KTtcbiAgICAgICAgZnVuY3Rpb24gZmV0Y2hMaXN0aW5ncyhhY3RpdmVfcGFnZSkge1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLmdldChcIi9pbmRpY2F0b3IvXCIuY29uY2F0KGluZGljYXRvcklkLCBcIi9wZXJpb2RzL3BhZ2UvXCIpICsgYWN0aXZlX3BhZ2UpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ocGVyaW9kc0RhdGEsIHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgIGlzRW1wdHkudmFsdWUgPSByZXNwb25zZS5kYXRhID8gZmFsc2UgOiB0cnVlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gaGFuZGxlTmF2aWdhdGUocGF0aCkge1xuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBwYXRoO1xuICAgICAgICB9XG4gICAgICAgIC8vIHByb3ZpZGVcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdwYXJlbnRJdGVtSWQnLCBpbmRpY2F0b3JJZCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBicmVhZGNydW1iRGF0YTogYnJlYWRjcnVtYkRhdGEsXG4gICAgICAgICAgICBpbmRpY2F0b3JMaW5rOiBpbmRpY2F0b3JMaW5rLFxuICAgICAgICAgICAgcGVyaW9kTGluazogcGVyaW9kTGluayxcbiAgICAgICAgICAgIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0LFxuICAgICAgICAgICAgcGVyaW9kc0RhdGE6IHBlcmlvZHNEYXRhLFxuICAgICAgICAgICAgZ2V0QWN0aXZpdHlUaXRsZTogdGl0bGVfMS5kZWZhdWx0LFxuICAgICAgICAgICAgZmV0Y2hMaXN0aW5nczogZmV0Y2hMaXN0aW5ncyxcbiAgICAgICAgICAgIGluZGljYXRvcklkOiBpbmRpY2F0b3JJZCxcbiAgICAgICAgICAgIHRvYXN0RGF0YTogdG9hc3REYXRhLFxuICAgICAgICAgICAgaGFuZGxlTmF2aWdhdGU6IGhhbmRsZU5hdmlnYXRlLFxuICAgICAgICAgICAgbGFuZ3VhZ2U6IGxhbmd1YWdlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbi8vIGNvbXBvbmVudFxudmFyIEluZGV4XzEgPSByZXF1aXJlKFwiQWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9JbmRleFwiKTtcbi8vY29tcG9zYWJsZVxudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS91dGlsc1wiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0dWFsVmFsdWUnLFxuICAgIGNvbXBvbmVudHM6IHsgRG9jdW1lbnRMaW5rOiBJbmRleF8xLkRvY3VtZW50TGluayB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgLy8gdnVlIGluamVjdFxuICAgICAgICB2YXIgZGxUeXBlID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHZhciBlbGVtZW50U3BhY2luZyA9ICdtYi0xJztcbiAgICAgICAgdmFyIGFjdHVhbFZhbHVlID0gZGF0YS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFjdHVhbFZhbHVlOiBhY3R1YWxWYWx1ZSxcbiAgICAgICAgICAgIGVsZW1lbnRTcGFjaW5nOiBlbGVtZW50U3BhY2luZyxcbiAgICAgICAgICAgIGxvY2F0aW9uOiBsb2NhdGlvbixcbiAgICAgICAgICAgIGdldExvY2F0aW9uOiB1dGlsc18xLmdldExvY2F0aW9uLFxuICAgICAgICAgICAgZGxUeXBlOiBkbFR5cGUsXG4gICAgICAgICAgICBsYW5ndWFnZTogbGFuZ3VhZ2UsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuLy8gY29tcG9uZW50XG52YXIgSW5kZXhfMSA9IHJlcXVpcmUoXCJBY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0luZGV4XCIpO1xuLy9jb21wb3NhYmxlXG52YXIgdXRpbHNfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3V0aWxzXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdUYXJnZXRWYWx1ZScsXG4gICAgY29tcG9uZW50czogeyBEb2N1bWVudExpbms6IEluZGV4XzEuRG9jdW1lbnRMaW5rIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICAvLyB2dWUgaW5qZWN0XG4gICAgICAgIC8vIGNvbnN0IGxhbmd1YWdlVHlwZSA9IGluamVjdCgndHlwZXMnKS5sYW5ndWFnZTtcbiAgICAgICAgdmFyIGRsVHlwZSA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICB2YXIgZWxlbWVudFNwYWNpbmcgPSAnbWItMSc7XG4gICAgICAgIHZhciB0YXJnZXRWYWx1ZSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0YXJnZXRWYWx1ZTogdGFyZ2V0VmFsdWUsXG4gICAgICAgICAgICBlbGVtZW50U3BhY2luZzogZWxlbWVudFNwYWNpbmcsXG4gICAgICAgICAgICBsb2NhdGlvbjogbG9jYXRpb24sXG4gICAgICAgICAgICBnZXRMb2NhdGlvbjogdXRpbHNfMS5nZXRMb2NhdGlvbixcbiAgICAgICAgICAgIC8vIGxhbmd1YWdlVHlwZSxcbiAgICAgICAgICAgIGRsVHlwZTogZGxUeXBlLFxuICAgICAgICAgICAgbGFuZ3VhZ2U6IGxhbmd1YWdlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbi8vY29tcG9uZW50XG52YXIgUmVzdWx0RWxlbWVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9SZXN1bHRFbGVtZW50LnZ1ZVwiKSk7XG52YXIgSW5kaWNhdG9yX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJBY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL0luZGljYXRvci52dWVcIikpO1xudmFyIExpbmtfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvYnV0dG9ucy9MaW5rLnZ1ZVwiKSk7XG52YXIgUGFnZVRpdGxlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1BhZ2VUaXRsZS52dWVcIikpO1xudmFyIFRvYXN0TWVzc2FnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlXCIpKTtcbi8vY29tcG9zYWJsZVxudmFyIGRhdGVGb3JtYXRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS9kYXRlRm9ybWF0XCIpKTtcbnZhciB0aXRsZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL3RpdGxlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnUmVzdWx0RGV0YWlsJyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIFJlc3VsdEVsZW1lbnQ6IFJlc3VsdEVsZW1lbnRfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgSW5kaWNhdG9yOiBJbmRpY2F0b3JfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgQnRuOiBMaW5rX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFBhZ2VUaXRsZTogUGFnZVRpdGxlX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGFjdGl2aXR5OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVzdWx0OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0b2FzdDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGVsZW1lbnQ6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgbGlua0NsYXNzZXMgPSAnZmxleCBpdGVtcy1jZW50ZXIgdy1mdWxsIGJnLXdoaXRlIHJvdW5kZWQgcC0yIHRleHQtc20gdGV4dC1uLTUwIGZvbnQtYm9sZCBsZWFkaW5nLW5vcm1hbCBtYi0yIHNoYWRvdy1kZWZhdWx0JztcbiAgICAgICAgdmFyIHBvc2l0aW9uWSA9ICgwLCB2dWVfMS5yZWYpKDApO1xuICAgICAgICB2YXIgc2hvd1NpZGViYXIgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzY3JlZW5XaWR0aCA9ICgwLCB2dWVfMS5yZWYpKDApO1xuICAgICAgICB2YXIgX2IgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcyksIHJlc3VsdCA9IF9iLnJlc3VsdCwgYWN0aXZpdHkgPSBfYi5hY3Rpdml0eTtcbiAgICAgICAgdmFyIGhhc0luZGljYXRvcnMgPSByZXN1bHQudmFsdWUuaW5kaWNhdG9ycy5sZW5ndGggPiAwID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICB2YXIgcmVzdWx0c0RhdGEgPSByZXN1bHQudmFsdWUucmVzdWx0O1xuICAgICAgICB2YXIgYWN0aXZpdHlJZCA9IGFjdGl2aXR5LnZhbHVlLmlkLCBhY3Rpdml0eVRpdGxlID0gYWN0aXZpdHkudmFsdWUudGl0bGUsIGFjdGl2aXR5TGluayA9IFwiL2FjdGl2aXR5L1wiLmNvbmNhdChhY3Rpdml0eUlkKSwgcmVzdWx0VGl0bGUgPSAoMCwgdGl0bGVfMS5kZWZhdWx0KShyZXN1bHRzRGF0YS50aXRsZVswXS5uYXJyYXRpdmUsICdlbicpLCByZXN1bHRMaW5rID0gXCJcIi5jb25jYXQoYWN0aXZpdHlMaW5rLCBcIi9yZXN1bHQvXCIpLmNvbmNhdChyZXN1bHQudmFsdWUuaWQpLCBkZWZhdWx0TGFuZ3VhZ2UgPSAoX2EgPSBhY3Rpdml0eS52YWx1ZS5kZWZhdWx0X2ZpZWxkX3ZhbHVlcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxhbmd1YWdlO1xuICAgICAgICB2YXIgaGFuZGxlU2Nyb2xsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcG9zaXRpb25ZLnZhbHVlID0gd2luZG93LnNjcm9sbFk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciB0b2FzdERhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEJyZWFkY3J1bWIgZGF0YVxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIGJyZWFkY3J1bWJEYXRhID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBsYW5ndWFnZS5hY3Rpdml0aWVzX2xhbmcueW91cl9hY3Rpdml0aWVzLFxuICAgICAgICAgICAgICAgIGxpbms6ICcvYWN0aXZpdGllcycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiAoMCwgdGl0bGVfMS5kZWZhdWx0KShhY3Rpdml0eVRpdGxlLCBkZWZhdWx0TGFuZ3VhZ2UpLFxuICAgICAgICAgICAgICAgIGxpbms6IGFjdGl2aXR5TGluayxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHJlc3VsdFRpdGxlLFxuICAgICAgICAgICAgICAgIGxpbms6ICcnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgICAgdmFyIGlzdG9wVmlzaWJsZSA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uWS52YWx1ZSA9PT0gMDtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMS5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpO1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNhbGNXaWR0aCk7XG4gICAgICAgICAgICBpZiAocHJvcHMudG9hc3QubWVzc2FnZSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHByb3BzLnRvYXN0LnR5cGU7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcHJvcHMudG9hc3QubWVzc2FnZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gZmFsc2U7XG4gICAgICAgICAgICB9LCA1MDAwKTtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMS5vblVubW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbCk7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgY2FsY1dpZHRoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBjYWxjV2lkdGggPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIHNjcmVlbldpZHRoLnZhbHVlID0gZXZlbnQudGFyZ2V0LmlubmVyV2lkdGg7XG4gICAgICAgICAgICBpZiAoc2NyZWVuV2lkdGgudmFsdWUgPiAxMDI0KSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc2hvd1NpZGViYXIudmFsdWUgJiZcbiAgICAgICAgICAgICAgICAgICAgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzaG93U2lkZWJhci52YWx1ZTsgfSwgZnVuY3Rpb24gKHNpZGViYXIpIHtcbiAgICAgICAgICAgIGlmIChzaWRlYmFyKSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFjdGl2aXR5TGluazogYWN0aXZpdHlMaW5rLFxuICAgICAgICAgICAgcmVzdWx0VGl0bGU6IHJlc3VsdFRpdGxlLFxuICAgICAgICAgICAgcmVzdWx0TGluazogcmVzdWx0TGluayxcbiAgICAgICAgICAgIGxpbmtDbGFzc2VzOiBsaW5rQ2xhc3NlcyxcbiAgICAgICAgICAgIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0LFxuICAgICAgICAgICAgaGFzSW5kaWNhdG9yczogaGFzSW5kaWNhdG9ycyxcbiAgICAgICAgICAgIHJlc3VsdHNEYXRhOiByZXN1bHRzRGF0YSxcbiAgICAgICAgICAgIGJyZWFkY3J1bWJEYXRhOiBicmVhZGNydW1iRGF0YSxcbiAgICAgICAgICAgIHRvYXN0RGF0YTogdG9hc3REYXRhLFxuICAgICAgICAgICAgc2hvd1NpZGViYXI6IHNob3dTaWRlYmFyLFxuICAgICAgICAgICAgaXN0b3BWaXNpYmxlOiBpc3RvcFZpc2libGUsXG4gICAgICAgICAgICBsYW5ndWFnZTogbGFuZ3VhZ2UsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIEhvdmVyVGV4dF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ib3ZlclRleHQudnVlXCIpKTtcbnZhciBJbmRleF8xID0gcmVxdWlyZShcIi4vZWxlbWVudHMvSW5kZXhcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0FjdGl2aXR5RWxlbWVudCcsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBIb3ZlclRleHQ6IEhvdmVyVGV4dF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBUaXRsZURlc2NyaXB0aW9uOiBJbmRleF8xLlRpdGxlRGVzY3JpcHRpb24sXG4gICAgICAgIERvY3VtZW50TGluazogSW5kZXhfMS5Eb2N1bWVudExpbmssXG4gICAgICAgIFJlZmVyZW5jZTogSW5kZXhfMS5SZWZlcmVuY2UsXG4gICAgICAgIFJlc3VsdFR5cGU6IEluZGV4XzEuUmVzdWx0VHlwZSxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3QsIFN0cmluZ10sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZWxlbWVudE5hbWU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBlZGl0VXJsOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgd2lkdGg6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGhvdmVyVGV4dDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBfYSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKSwgZGF0YSA9IF9hLmRhdGEsIHR5cGVzID0gX2EudHlwZXMsIGVsZW1lbnREYXRhID0gZGF0YS52YWx1ZSwgcmVzdWx0VHlwZSA9IHR5cGVzLnZhbHVlLnJlc3VsdFR5cGUsIHJlc3VsdFZvY2FidWxhcnkgPSB0eXBlcy52YWx1ZS5yZXN1bHRWb2NhYnVsYXJ5LCBsYW5ndWFnZSA9IHR5cGVzLnZhbHVlLmxhbmd1YWdlO1xuICAgICAgICB2YXIgdHJhbnNsYXRpb24gPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGVsZW1lbnREYXRhOiBlbGVtZW50RGF0YSxcbiAgICAgICAgICAgIHJlc3VsdFR5cGU6IHJlc3VsdFR5cGUsXG4gICAgICAgICAgICByZXN1bHRWb2NhYnVsYXJ5OiByZXN1bHRWb2NhYnVsYXJ5LFxuICAgICAgICAgICAgbGFuZ3VhZ2U6IGxhbmd1YWdlLFxuICAgICAgICAgICAgdHJhbnNsYXRpb246IHRyYW5zbGF0aW9uLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xuLy8gY29tcG9uZW50c1xudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbnZhciBUYWJsZVBhZ2luYXRpb25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVGFibGVQYWdpbmF0aW9uLnZ1ZVwiKSk7XG52YXIgUGFnZVRpdGxlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1BhZ2VUaXRsZS52dWVcIikpO1xudmFyIFRvYXN0TWVzc2FnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlXCIpKTtcbnZhciBEZWxldGVBY3Rpb25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvRGVsZXRlQWN0aW9uLnZ1ZVwiKSk7XG4vLyBjb21wb3NhYmxlXG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xudmFyIHRpdGxlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvdGl0bGVcIikpO1xudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiLi4vLi4vLi4vY29tcG9zYWJsZS91dGlsc1wiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnUmVzdWx0c0xpc3QnLFxuICAgIG1ldGhvZHM6IHsgY3JlYXRlQ2FwaXRhbGl6ZWRTZW50ZW5jZTogdXRpbHNfMS5jcmVhdGVDYXBpdGFsaXplZFNlbnRlbmNlIH0sXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBCdG46IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBQYWdpbmF0aW9uOiBUYWJsZVBhZ2luYXRpb25fdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgUGFnZVRpdGxlOiBQYWdlVGl0bGVfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgVG9hc3Q6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0LFxuICAgICAgICBEZWxldGVBY3Rpb246IERlbGV0ZUFjdGlvbl92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgYWN0aXZpdHk6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICByZXN1bHRzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0b2FzdDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgYWN0aXZpdHkgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuYWN0aXZpdHk7XG4gICAgICAgIHZhciBhY3Rpdml0eUlkID0gYWN0aXZpdHkudmFsdWUuaWQsIGFjdGl2aXR5VGl0bGUgPSBhY3Rpdml0eS52YWx1ZS50aXRsZSwgYWN0aXZpdHlMaW5rID0gXCIvYWN0aXZpdHkvXCIuY29uY2F0KGFjdGl2aXR5SWQpO1xuICAgICAgICB2YXIgdG9hc3REYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciByZXN1bHRzRGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe30pO1xuICAgICAgICB2YXIgaXNFbXB0eSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEJyZWFkY3J1bWIgZGF0YVxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIGJyZWFkY3J1bWJEYXRhID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBsYW5ndWFnZS5hY3Rpdml0aWVzX2xhbmcueW91cl9hY3Rpdml0aWVzLFxuICAgICAgICAgICAgICAgIGxpbms6ICcvYWN0aXZpdGllcycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiAoMCwgdGl0bGVfMS5kZWZhdWx0KShhY3Rpdml0eVRpdGxlLCAnZW4nKSxcbiAgICAgICAgICAgICAgICBsaW5rOiBhY3Rpdml0eUxpbmssXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBsYW5ndWFnZS5jb21tb25fbGFuZy5yZXN1bHRfbGlzdCxcbiAgICAgICAgICAgICAgICBsaW5rOiAnJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICAgIGZ1bmN0aW9uIGhhbmRsZU5hdmlnYXRlKHBhdGgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gcGF0aDtcbiAgICAgICAgfVxuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldChcIi9hY3Rpdml0eS9cIi5jb25jYXQoYWN0aXZpdHlJZCwgXCIvcmVzdWx0cy9wYWdlLzFcIikpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihyZXN1bHRzRGF0YSwgcmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIGlzRW1wdHkudmFsdWUgPSByZXNwb25zZS5kYXRhLmRhdGEubGVuZ3RoID8gZmFsc2UgOiB0cnVlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChwcm9wcy50b2FzdC5tZXNzYWdlICE9PSAnJykge1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHByb3BzLnRvYXN0LnR5cGU7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSBwcm9wcy50b2FzdC5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9LCA1MDAwKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH0pO1xuICAgICAgICBmdW5jdGlvbiBmZXRjaExpc3RpbmdzKGFjdGl2ZV9wYWdlKSB7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAuZ2V0KFwiL2FjdGl2aXR5L1wiLmNvbmNhdChhY3Rpdml0eUlkLCBcIi9yZXN1bHRzL3BhZ2UvXCIpICsgYWN0aXZlX3BhZ2UpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ocmVzdWx0c0RhdGEsIHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgIGlzRW1wdHkudmFsdWUgPSByZXNwb25zZS5kYXRhID8gZmFsc2UgOiB0cnVlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUHJvdmlkZVxuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3BhcmVudEl0ZW1JZCcsIGFjdGl2aXR5SWQpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnJlYWRjcnVtYkRhdGE6IGJyZWFkY3J1bWJEYXRhLFxuICAgICAgICAgICAgYWN0aXZpdHlMaW5rOiBhY3Rpdml0eUxpbmssXG4gICAgICAgICAgICB0b2FzdERhdGE6IHRvYXN0RGF0YSxcbiAgICAgICAgICAgIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0LFxuICAgICAgICAgICAgcmVzdWx0c0RhdGE6IHJlc3VsdHNEYXRhLFxuICAgICAgICAgICAgZ2V0QWN0aXZpdHlUaXRsZTogdGl0bGVfMS5kZWZhdWx0LFxuICAgICAgICAgICAgZmV0Y2hMaXN0aW5nczogZmV0Y2hMaXN0aW5ncyxcbiAgICAgICAgICAgIGhhbmRsZU5hdmlnYXRlOiBoYW5kbGVOYXZpZ2F0ZSxcbiAgICAgICAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1Jlc3VsdERvY3VtZW50TGluaycsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogW09iamVjdCwgU3RyaW5nXSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIGRsRGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICByZXR1cm4geyBkbERhdGE6IGRsRGF0YSwgbGFuZ3VhZ2U6IGxhbmd1YWdlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuLy9jb21wb3NhYmxlXG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xudmFyIHRpdGxlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvdGl0bGVcIikpO1xuLy9jb21wb25lbnRzXG52YXIgSGF2ZU5vdEFkZGVkWWV0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL0hhdmVOb3RBZGRlZFlldC52dWVcIikpO1xudmFyIExpbmtfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvYnV0dG9ucy9MaW5rLnZ1ZVwiKSk7XG4vLyBoZWxwZXIgZnVuY3Rpb25cbnZhciB1dGlsc18xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdXRpbHNcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1Jlc3VsdEluZGljYXRvcicsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBOb3RZZXQ6IEhhdmVOb3RBZGRlZFlldF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBCdG46IExpbmtfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIHJlc3VsdDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0b29sVGlwOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciByZXN1bHQgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykucmVzdWx0O1xuICAgICAgICB2YXIgaW5kaWNhdG9yRGF0YSA9IHJlc3VsdC52YWx1ZS5pbmRpY2F0b3JzLnJldmVyc2UoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGluZGljYXRvckRhdGE6IGluZGljYXRvckRhdGEsXG4gICAgICAgICAgICBkYXRlRm9ybWF0OiBkYXRlRm9ybWF0XzEuZGVmYXVsdCxcbiAgICAgICAgICAgIGdldEFjdGl2aXR5VGl0bGU6IHRpdGxlXzEuZGVmYXVsdCxcbiAgICAgICAgICAgIGNvdW50RG9jdW1lbnRMaW5rOiB1dGlsc18xLmNvdW50RG9jdW1lbnRMaW5rLFxuICAgICAgICAgICAgbGFuZ3VhZ2U6IGxhbmd1YWdlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnUmVzdWx0UmVmZXJlbmNlJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIHJlZmVyZW5jZURhdGEgPSBkYXRhLnZhbHVlO1xuICAgICAgICByZXR1cm4geyByZWZlcmVuY2VEYXRhOiByZWZlcmVuY2VEYXRhLCBsYW5ndWFnZTogbGFuZ3VhZ2UgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1Jlc3VsdFR5cGUnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciB0eXBlRGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHJldHVybiB7IHR5cGVEYXRhOiB0eXBlRGF0YSwgbGFuZ3VhZ2U6IGxhbmd1YWdlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdSZXN1bHRURCcsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogW09iamVjdCwgU3RyaW5nXSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIHRkRGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHZhciB0cmFuc2xhdGlvbiA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICByZXR1cm4geyB0ZERhdGE6IHRkRGF0YSwgdHJhbnNsYXRpb246IHRyYW5zbGF0aW9uIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuLy9jb21wb25lbnRzXG52YXIgTGlua192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9idXR0b25zL0xpbmsudnVlXCIpKTtcbnZhciBQYWdlVGl0bGVfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvUGFnZVRpdGxlLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xuLy9jb21wb3NhYmxlXG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xudmFyIHRpdGxlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvdGl0bGVcIikpO1xudmFyIFRyYW5zYWN0aW9uRWxlbWVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9UcmFuc2FjdGlvbkVsZW1lbnQudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnVHJhbnNhY3Rpb25EZXRhaWwnLFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgVHJhbnNhY3Rpb25FbGVtZW50OiBUcmFuc2FjdGlvbkVsZW1lbnRfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgQnRuOiBMaW5rX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFBhZ2VUaXRsZTogUGFnZVRpdGxlX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGFjdGl2aXR5OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHJhbnNhY3Rpb246IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRvYXN0OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZWxlbWVudDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgX2EgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcyksIGFjdGl2aXR5ID0gX2EuYWN0aXZpdHksIHRyYW5zYWN0aW9uID0gX2EudHJhbnNhY3Rpb247XG4gICAgICAgIHZhciBsaW5rQ2xhc3NlcyA9ICdmbGV4IGl0ZW1zLWNlbnRlciB3LWZ1bGwgYmctd2hpdGUgcm91bmRlZCBwLTIgdGV4dC1zbSB0ZXh0LW4tNTAgZm9udC1ib2xkIGxlYWRpbmctcmVsYXhlZCBtYi0yIHNoYWRvdy1kZWZhdWx0JztcbiAgICAgICAgdmFyIHNob3dTaWRlYmFyID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgcG9zaXRpb25ZID0gKDAsIHZ1ZV8xLnJlZikoMCk7XG4gICAgICAgIHZhciBzY3JlZW5XaWR0aCA9ICgwLCB2dWVfMS5yZWYpKDApO1xuICAgICAgICB2YXIgdG9hc3REYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBoYW5kbGVTY3JvbGwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBwb3NpdGlvblkudmFsdWUgPSB3aW5kb3cuc2Nyb2xsWTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGlzdG9wVmlzaWJsZSA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uWS52YWx1ZSA9PT0gMDtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIHRpdGxlc1xuICAgICAgICB2YXIgdHJhbnNhY3Rpb25EYXRhID0gdHJhbnNhY3Rpb24udmFsdWUudHJhbnNhY3Rpb247XG4gICAgICAgIHZhciBjYWxjV2lkdGggPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIHNjcmVlbldpZHRoLnZhbHVlID0gZXZlbnQudGFyZ2V0LmlubmVyV2lkdGg7XG4gICAgICAgICAgICBpZiAoc2NyZWVuV2lkdGgudmFsdWUgPiAxMDI0KSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc2hvd1NpZGViYXIudmFsdWUgJiZcbiAgICAgICAgICAgICAgICAgICAgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGFjdGl2aXR5SWQgPSBhY3Rpdml0eS52YWx1ZS5pZCwgYWN0aXZpdHlUaXRsZSA9ICgwLCB0aXRsZV8xLmRlZmF1bHQpKGFjdGl2aXR5LnZhbHVlLnRpdGxlLCAnZW4nKSwgYWN0aXZpdHlMaW5rID0gXCIvYWN0aXZpdHkvXCIuY29uY2F0KGFjdGl2aXR5SWQpLCB0cmFuc2FjdGlvbkxpbmsgPSBcIlwiLmNvbmNhdChhY3Rpdml0eUxpbmssIFwiL3RyYW5zYWN0aW9uL1wiKS5jb25jYXQodHJhbnNhY3Rpb24udmFsdWUuaWQpO1xuICAgICAgICAoMCwgdnVlXzEub25Vbm1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpO1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNhbGNXaWR0aCk7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNob3dTaWRlYmFyLnZhbHVlOyB9LCBmdW5jdGlvbiAoc2lkZWJhcikge1xuICAgICAgICAgICAgaWYgKHNpZGViYXIpIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBCcmVhZGNydW1iIGRhdGFcbiAgICAgICAgICovXG4gICAgICAgIHZhciBicmVhZGNydW1iRGF0YSA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogbGFuZ3VhZ2UuYWN0aXZpdGllc19sYW5nLnlvdXJfYWN0aXZpdGllcyxcbiAgICAgICAgICAgICAgICBsaW5rOiAnL2FjdGl2aXR5JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGFjdGl2aXR5VGl0bGUsXG4gICAgICAgICAgICAgICAgbGluazogYWN0aXZpdHlMaW5rLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogbGFuZ3VhZ2UuY29tbW9uX2xhbmcudHJhbnNhY3Rpb24sXG4gICAgICAgICAgICAgICAgbGluazogJycsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKTtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxjV2lkdGgpO1xuICAgICAgICAgICAgaWYgKHByb3BzLnRvYXN0Lm1lc3NhZ2UgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSBwcm9wcy50b2FzdC50eXBlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHByb3BzLnRvYXN0Lm1lc3NhZ2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgICAgICAgICAgfSwgNTAwMCk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaXNNYW5kYXRvcnlJY29uID0gZnVuY3Rpb24gKHIpIHtcbiAgICAgICAgICAgIHJldHVybiAoci50b1N0cmluZygpID09PSAndmFsdWUnIHx8XG4gICAgICAgICAgICAgICAgci50b1N0cmluZygpID09PSAndHJhbnNhY3Rpb25fdHlwZScgfHxcbiAgICAgICAgICAgICAgICByLnRvU3RyaW5nKCkgPT09ICd0cmFuc2FjdGlvbl9kYXRlJyk7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhY3Rpdml0eVRpdGxlOiBhY3Rpdml0eVRpdGxlLFxuICAgICAgICAgICAgZGF0ZUZvcm1hdDogZGF0ZUZvcm1hdF8xLmRlZmF1bHQsXG4gICAgICAgICAgICB0cmFuc2FjdGlvbkRhdGE6IHRyYW5zYWN0aW9uRGF0YSxcbiAgICAgICAgICAgIGxpbmtDbGFzc2VzOiBsaW5rQ2xhc3NlcyxcbiAgICAgICAgICAgIGJyZWFkY3J1bWJEYXRhOiBicmVhZGNydW1iRGF0YSxcbiAgICAgICAgICAgIGFjdGl2aXR5TGluazogYWN0aXZpdHlMaW5rLFxuICAgICAgICAgICAgdHJhbnNhY3Rpb25MaW5rOiB0cmFuc2FjdGlvbkxpbmssXG4gICAgICAgICAgICB0b2FzdERhdGE6IHRvYXN0RGF0YSxcbiAgICAgICAgICAgIGlzTWFuZGF0b3J5SWNvbjogaXNNYW5kYXRvcnlJY29uLFxuICAgICAgICAgICAgc2hvd1NpZGViYXI6IHNob3dTaWRlYmFyLFxuICAgICAgICAgICAgaXN0b3BWaXNpYmxlOiBpc3RvcFZpc2libGUsXG4gICAgICAgICAgICBsYW5ndWFnZTogbGFuZ3VhZ2UsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIEhvdmVyVGV4dF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi8uLi8uLi8uLi9jb21wb25lbnRzL0hvdmVyVGV4dC52dWVcIikpO1xudmFyIGRhdGVGb3JtYXRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi8uLi8uLi8uLi9jb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xudmFyIEluZGV4XzEgPSByZXF1aXJlKFwiLi9lbGVtZW50cy9JbmRleFwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlFbGVtZW50JyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEhvdmVyVGV4dDogSG92ZXJUZXh0X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIERlc2NyaXB0aW9uOiBJbmRleF8xLkRlc2NyaXB0aW9uLFxuICAgICAgICBBaWRUeXBlOiBJbmRleF8xLkFpZFR5cGUsXG4gICAgICAgIFRyYW5zYWN0aW9uVHlwZTogSW5kZXhfMS5UcmFuc2FjdGlvblR5cGUsXG4gICAgICAgIFRyYW5zYWN0aW9uRGF0ZTogSW5kZXhfMS5UcmFuc2FjdGlvbkRhdGUsXG4gICAgICAgIFZhbHVlOiBJbmRleF8xLlZhbHVlLFxuICAgICAgICBQcm92aWRlck9yZ2FuaXphdGlvbjogSW5kZXhfMS5Qcm92aWRlck9yZ2FuaXphdGlvbixcbiAgICAgICAgUmVjZWl2ZXJPcmdhbml6YXRpb246IEluZGV4XzEuUmVjZWl2ZXJPcmdhbml6YXRpb24sXG4gICAgICAgIERpc2J1cnNlbWVudENoYW5uZWw6IEluZGV4XzEuRGlzYnVyc2VtZW50Q2hhbm5lbCxcbiAgICAgICAgU2VjdG9yOiBJbmRleF8xLlNlY3RvcixcbiAgICAgICAgUmVjaXBpZW50Q291bnRyeTogSW5kZXhfMS5SZWNpcGllbnRDb3VudHJ5LFxuICAgICAgICBSZWNpcGllbnRSZWdpb246IEluZGV4XzEuUmVjaXBpZW50UmVnaW9uLFxuICAgICAgICBGbG93VHlwZTogSW5kZXhfMS5GbG93VHlwZSxcbiAgICAgICAgRmluYW5jZVR5cGU6IEluZGV4XzEuRmluYW5jZVR5cGUsXG4gICAgICAgIFRpZWRTdGF0dXM6IEluZGV4XzEuVGllZFN0YXR1cyxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3QsIFN0cmluZ10sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZWxlbWVudE5hbWU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBlZGl0VXJsOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgd2lkdGg6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGhvdmVyVGV4dDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgX2EgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcyksIGRhdGEgPSBfYS5kYXRhLCB0eXBlcyA9IF9hLnR5cGVzLCBlbGVtZW50RGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgndHlwZXMnLCB0eXBlcyk7XG4gICAgICAgIGZ1bmN0aW9uIGdldExhbmd1YWdlcyhsYW5ndWFnZSkge1xuICAgICAgICAgICAgcmV0dXJuIGxhbmd1YWdlLm1hcChmdW5jdGlvbiAoZW50cnkpIHsgcmV0dXJuIGVudHJ5Lmxhbmd1YWdlOyB9KS5qb2luKCcsICcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBlbGVtZW50RGF0YTogZWxlbWVudERhdGEsXG4gICAgICAgICAgICBnZXRMYW5ndWFnZXM6IGdldExhbmd1YWdlcyxcbiAgICAgICAgICAgIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0LFxuICAgICAgICAgICAgbGFuZ3VhZ2U6IGxhbmd1YWdlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xuLy9jb21wb25lbnRzXG52YXIgQnV0dG9uQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWVcIikpO1xudmFyIFRhYmxlUGFnaW5hdGlvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9UYWJsZVBhZ2luYXRpb24udnVlXCIpKTtcbnZhciBQYWdlVGl0bGVfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvUGFnZVRpdGxlLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xudmFyIERlbGV0ZUFjdGlvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9EZWxldGVBY3Rpb24udnVlXCIpKTtcbi8vY29tcG9zYWJsZVxudmFyIGRhdGVGb3JtYXRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS9kYXRlRm9ybWF0XCIpKTtcbnZhciB0aXRsZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL3RpdGxlXCIpKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiLi4vLi4vLi4vY29tcG9zYWJsZS91dGlsc1wiKTtcbi8vIHRvZ2dsZSBzdGF0ZSBmb3IgbW9kYWwgcG9wdXBcbnZhciBfYSA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBkZWxldGVWYWx1ZSA9IF9hWzBdLCBkZWxldGVUb2dnbGUgPSBfYVsxXTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnVHJhbnNhY3Rpb25MaXN0JyxcbiAgICBtZXRob2RzOiB7IGNyZWF0ZUNhcGl0YWxpemVkU2VudGVuY2U6IHV0aWxzXzEuY3JlYXRlQ2FwaXRhbGl6ZWRTZW50ZW5jZSB9LFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgQnRuOiBCdXR0b25Db21wb25lbnRfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgUGFnaW5hdGlvbjogVGFibGVQYWdpbmF0aW9uX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFBhZ2VUaXRsZTogUGFnZVRpdGxlX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgRGVsZXRlQWN0aW9uOiBEZWxldGVBY3Rpb25fdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGFjdGl2aXR5OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHJhbnNhY3Rpb25zOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0b2FzdDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgYWN0aXZpdHkgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuYWN0aXZpdHk7XG4gICAgICAgIHZhciBhY3Rpdml0eUlkID0gYWN0aXZpdHkudmFsdWUuaWQsIGFjdGl2aXR5VGl0bGUgPSAoMCwgdGl0bGVfMS5kZWZhdWx0KShhY3Rpdml0eS52YWx1ZS50aXRsZSwgJ2VuJyksIGFjdGl2aXR5TGluayA9IFwiL2FjdGl2aXR5L1wiLmNvbmNhdChhY3Rpdml0eUlkKTtcbiAgICAgICAgdmFyIHRvYXN0RGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICAgIHR5cGU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgdHJhbnNhY3Rpb25zRGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe30pO1xuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldChcIi9hY3Rpdml0eS9cIi5jb25jYXQoYWN0aXZpdHlJZCwgXCIvdHJhbnNhY3Rpb25zL3BhZ2UvMVwiKSkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHRyYW5zYWN0aW9uc0RhdGEsIHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChwcm9wcy50b2FzdC5tZXNzYWdlICE9PSAnJykge1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHByb3BzLnRvYXN0LnR5cGU7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSBwcm9wcy50b2FzdC5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9LCA1MDAwKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH0pO1xuICAgICAgICBmdW5jdGlvbiBoYW5kbGVOYXZpZ2F0ZShwYXRoKSB7XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHBhdGg7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gZmV0Y2hMaXN0aW5ncyhhY3RpdmVfcGFnZSkge1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLmdldChcIi9hY3Rpdml0eS9cIi5jb25jYXQoYWN0aXZpdHlJZCwgXCIvdHJhbnNhY3Rpb25zL3BhZ2UvXCIpICsgYWN0aXZlX3BhZ2UpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odHJhbnNhY3Rpb25zRGF0YSwgcmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBQcm92aWRlXG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgncGFyZW50SXRlbUlkJywgYWN0aXZpdHlJZCk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBCcmVhZGNydW1iIGRhdGFcbiAgICAgICAgICovXG4gICAgICAgIHZhciBicmVhZGNydW1iRGF0YSA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogbGFuZ3VhZ2UuYWN0aXZpdGllc19sYW5nLnlvdXJfYWN0aXZpdGllcyxcbiAgICAgICAgICAgICAgICBsaW5rOiAnL2FjdGl2aXRpZXMnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogYWN0aXZpdHlUaXRsZSxcbiAgICAgICAgICAgICAgICBsaW5rOiBhY3Rpdml0eUxpbmssXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBsYW5ndWFnZS5jb21tb25fbGFuZy50cmFuc2FjdGlvbl9saXN0LFxuICAgICAgICAgICAgICAgIGxpbms6ICcnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJyZWFkY3J1bWJEYXRhOiBicmVhZGNydW1iRGF0YSxcbiAgICAgICAgICAgIGFjdGl2aXR5TGluazogYWN0aXZpdHlMaW5rLFxuICAgICAgICAgICAgZGF0ZUZvcm1hdDogZGF0ZUZvcm1hdF8xLmRlZmF1bHQsXG4gICAgICAgICAgICB0cmFuc2FjdGlvbnNEYXRhOiB0cmFuc2FjdGlvbnNEYXRhLFxuICAgICAgICAgICAgZ2V0QWN0aXZpdHlUaXRsZTogdGl0bGVfMS5kZWZhdWx0LFxuICAgICAgICAgICAgZmV0Y2hMaXN0aW5nczogZmV0Y2hMaXN0aW5ncyxcbiAgICAgICAgICAgIHRvYXN0RGF0YTogdG9hc3REYXRhLFxuICAgICAgICAgICAgZGVsZXRlVmFsdWU6IGRlbGV0ZVZhbHVlLFxuICAgICAgICAgICAgZGVsZXRlVG9nZ2xlOiBkZWxldGVUb2dnbGUsXG4gICAgICAgICAgICBoYW5kbGVOYXZpZ2F0ZTogaGFuZGxlTmF2aWdhdGUsXG4gICAgICAgICAgICBsYW5ndWFnZTogbGFuZ3VhZ2UsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdUcmFuc2FjdGlvbkFpZFR5cGUnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3QsIFN0cmluZ10sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciBhdERhdGEgPSBkYXRhLnZhbHVlO1xuICAgICAgICB2YXIgdHlwZSA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYXREYXRhOiBhdERhdGEsXG4gICAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgICAgbGFuZ3VhZ2U6IGxhbmd1YWdlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnVHJhbnNhY3Rpb25EZXNjcmlwdGlvbicsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogW09iamVjdCwgU3RyaW5nXSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIHRkRGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHZhciB0eXBlID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHJldHVybiB7IHRkRGF0YTogdGREYXRhLCB0eXBlOiB0eXBlLCBsYW5ndWFnZTogbGFuZ3VhZ2UgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1RyYW5zYWN0aW9uRGlzYnVyc2VtZW50Q2hhbm5lbCcsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogW09iamVjdCwgU3RyaW5nXSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIGNvZGUgPSBkYXRhLnZhbHVlO1xuICAgICAgICB2YXIgdHlwZSA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyBjb2RlOiBjb2RlLCB0eXBlOiB0eXBlLCBsYW5ndWFnZTogbGFuZ3VhZ2UgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1RyYW5zYWN0aW9uRmluYW5jZVR5cGUnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3QsIFN0cmluZ10sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciBmaW5hbmNlRGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHZhciB0eXBlID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHJldHVybiB7IGZpbmFuY2VEYXRhOiBmaW5hbmNlRGF0YSwgdHlwZTogdHlwZSwgbGFuZ3VhZ2U6IGxhbmd1YWdlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdUcmFuc2FjdGlvbkZsb3dUeXBlJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgZmxvd0RhdGEgPSBkYXRhLnZhbHVlO1xuICAgICAgICB2YXIgdHlwZSA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyBmbG93RGF0YTogZmxvd0RhdGEsIHR5cGU6IHR5cGUsIGxhbmd1YWdlOiBsYW5ndWFnZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnVHJhbnNhY3Rpb25Qcm92aWRlck9yZ2FuaXNhdGlvbicsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogW09iamVjdCwgU3RyaW5nXSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIFBvRGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHZhciB0eXBlID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHJldHVybiB7IFBvRGF0YTogUG9EYXRhLCB0eXBlOiB0eXBlLCBsYW5ndWFnZTogbGFuZ3VhZ2UgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1RyYW5zYWN0aW9uUmVjZWl2ZXJPcmdhbmlzYXRpb24nLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3QsIFN0cmluZ10sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciBQb0RhdGEgPSBkYXRhLnZhbHVlO1xuICAgICAgICB2YXIgdHlwZSA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyBQb0RhdGE6IFBvRGF0YSwgdHlwZTogdHlwZSwgbGFuZ3VhZ2U6IGxhbmd1YWdlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdUcmFuc2FjdGlvblJlY2lwaWVudENvdW50cnknLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3QsIFN0cmluZ10sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciBjb3VudHJ5ID0gZGF0YS52YWx1ZTtcbiAgICAgICAgdmFyIHR5cGUgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgcmV0dXJuIHsgY291bnRyeTogY291bnRyeSwgdHlwZTogdHlwZSwgbGFuZ3VhZ2U6IGxhbmd1YWdlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdUcmFuc2FjdGlvblJlY2lwaWVudFJlZ2lvbicsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogW09iamVjdCwgU3RyaW5nXSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIGNvdW50cnkgPSBkYXRhLnZhbHVlO1xuICAgICAgICB2YXIgdHlwZSA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyBjb3VudHJ5OiBjb3VudHJ5LCB0eXBlOiB0eXBlLCBsYW5ndWFnZTogbGFuZ3VhZ2UgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1RyYW5zYWN0aW9uU2VjdG9yJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgdHlwZSA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICB2YXIgc2VjdG9yID0gZGF0YS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNlY3Rvcjogc2VjdG9yLFxuICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1RyYW5zYWN0aW9uVGllZFN0YXR1cycsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogW09iamVjdCwgU3RyaW5nXSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIHRzRGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHZhciB0eXBlID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHJldHVybiB7IHRzRGF0YTogdHNEYXRhLCB0eXBlOiB0eXBlLCBsYW5ndWFnZTogbGFuZ3VhZ2UgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLy4uLy4uLy4uLy4uL2NvbXBvc2FibGUvZGF0ZUZvcm1hdFwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1RyYW5zYWN0aW9uRGF0ZScsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogW09iamVjdCwgU3RyaW5nXSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIGRhdGUgPSBkYXRhLnZhbHVlO1xuICAgICAgICByZXR1cm4geyBkYXRlOiBkYXRlLCBkYXRlRm9ybWF0OiBkYXRlRm9ybWF0XzEuZGVmYXVsdCwgbGFuZ3VhZ2U6IGxhbmd1YWdlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdUcmFuc2FjdGlvblR5cGUnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3QsIFN0cmluZ10sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciBjb2RlID0gZGF0YS52YWx1ZTtcbiAgICAgICAgdmFyIHR5cGUgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgcmV0dXJuIHsgY29kZTogY29kZSwgdHlwZTogdHlwZSwgbGFuZ3VhZ2U6IGxhbmd1YWdlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGRhdGVGb3JtYXRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi8uLi8uLi8uLi8uLi9jb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdUcmFuc2FjdGlvblZhbHVlJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgdmFsdWUgPSBkYXRhLnZhbHVlO1xuICAgICAgICByZXR1cm4geyB2YWx1ZTogdmFsdWUsIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0LCBsYW5ndWFnZTogbGFuZ3VhZ2UgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi9jb21wb25lbnRzL0xvYWRlci52dWVcIikpO1xudmFyIFBhZ2VUaXRsZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9QYWdlVGl0bGUudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdBdWRpdExpc3RpbmcnLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgYXVkaXREYXRhID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7fSk7XG4gICAgICAgIHZhciBpc0VtcHR5ID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgaXNMb2FkZXJWaXNpYmxlID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgZmV0Y2hBdWRpdExpc3QoMSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9KTtcbiAgICAgICAgZnVuY3Rpb24gZmV0Y2hBdWRpdExpc3QoYWN0aXZlX3BhZ2UsIGZpbHRlcmVkKSB7XG4gICAgICAgICAgICBpZiAoZmlsdGVyZWQgPT09IHZvaWQgMCkgeyBmaWx0ZXJlZCA9IGZhbHNlOyB9XG4gICAgICAgICAgICB2YXIgcm91dGUgPSBcIi9hdWRpdC9wYWdlL1wiLmNvbmNhdChmaWx0ZXJlZCA/ICcxJyA6IGFjdGl2ZV9wYWdlKTtcbiAgICAgICAgICAgIHZhciBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KHJvdXRlLCB7IHBhcmFtczogcGFyYW1zIH0pLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oYXVkaXREYXRhLCByZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICAgICAgICBpc0VtcHR5LnZhbHVlID0gcmVzcG9uc2UuZGF0YSA/IGZhbHNlIDogdHJ1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGxhbmd1YWdlOiBsYW5ndWFnZSwgYXVkaXREYXRhOiBhdWRpdERhdGEsIGlzRW1wdHk6IGlzRW1wdHksIGlzTG9hZGVyVmlzaWJsZTogaXNMb2FkZXJWaXNpYmxlLCBmZXRjaEF1ZGl0TGlzdDogZmV0Y2hBdWRpdExpc3QsIExvYWRlcjogTG9hZGVyX3Z1ZV8xLmRlZmF1bHQsIFBhZ2VUaXRsZTogUGFnZVRpdGxlX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIG1vbWVudF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJtb21lbnRcIikpO1xudmFyIHNwaW5uZXJMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc3Bpbm5lckxvYWRlci52dWVcIikpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdEYXNoYm9hcmRHcmFwaCcsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgY3VycmVudFZpZXc6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIGxhYmVscyA9ICgwLCB2dWVfMi5yZWYpKFtdKTtcbiAgICAgICAgdmFyIHJvdW5kZWRMYWJlbHMgPSAoMCwgdnVlXzIucmVmKShbXSk7XG4gICAgICAgIHZhciBzaG93R3JhcGhMb2FkZXIgPSAoMCwgdnVlXzIuaW5qZWN0KSgnc2hvd0dyYXBoTG9hZGVyJyk7XG4gICAgICAgIHZhciBncmFwaEFtb3VudCA9ICgwLCB2dWVfMi5pbmplY3QpKCdncmFwaEFtb3VudCcpO1xuICAgICAgICB2YXIgeWF4aXNUaWNrcyA9ICgwLCB2dWVfMi5yZWYpKFtdKTtcbiAgICAgICAgdmFyIG1heFZhbHVlID0gKDAsIHZ1ZV8yLnJlZikoMCk7XG4gICAgICAgIHZhciBjaGFydCA9ICgwLCB2dWVfMi5yZWYpKHt9KTtcbiAgICAgICAgdmFyIGdyYXBoQ29sb3IgPSAnIzE3OTk3Qic7XG4gICAgICAgIHZhciB0b29sdGlwVGV4dCA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc3dpdGNoIChwcm9wcy5jdXJyZW50Vmlldykge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3B1Ymxpc2hlcic6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnVG90YWwgbm8uIG9mIHB1Ymxpc2hlciByZWdpc3RyYXRpb24nO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2FjdGl2aXR5JzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdUb3RhbCBuby4gb2YgYWN0aXZpdGllcyBhZGRlZCc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdUb3RhbCBudW1iZXIgb2YgdXNlcic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgY2hhcnRPcHRpb25zID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiAoe1xuICAgICAgICAgICAgY2hhcnQ6IHtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnbGluZScsXG4gICAgICAgICAgICAgICAgb2Zmc2V0WTogNSxcbiAgICAgICAgICAgICAgICB6b29tOiB7XG4gICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgICB4YXhpczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiA1MCwgLy8gQWRqdXN0IHRoZSBsZWZ0IHBhZGRpbmcgdmFsdWUgYXMgbmVlZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0b29sYmFyOiB7XG4gICAgICAgICAgICAgICAgICAgIHNob3c6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWFya2Vyczoge1xuICAgICAgICAgICAgICAgIHNpemU6IGdyYXBoQW1vdW50LnZhbHVlLmxlbmd0aCA+IDEgPyAwIDogMixcbiAgICAgICAgICAgICAgICBzdHJva2VXaWR0aDogMCxcbiAgICAgICAgICAgICAgICBjb2xvcnM6IFsnIzE3OTk3QiddLFxuICAgICAgICAgICAgICAgIGhvdmVyOiB7XG4gICAgICAgICAgICAgICAgICAgIHNpemU6IDYsIC8vIEN1c3RvbWl6ZSB0aGUgbWFya2VyIHNpemUgb24gaG92ZXJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHN0cm9rZToge1xuICAgICAgICAgICAgICAgIGN1cnZlOiAnc3RyYWlnaHQnLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAxLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbG9yczogW2dyYXBoQ29sb3JdLFxuICAgICAgICAgICAgdG9vbHRpcDoge1xuICAgICAgICAgICAgICAgIGN1c3RvbTogZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzZXJpZXMgPSBfYS5zZXJpZXMsIHNlcmllc0luZGV4ID0gX2Euc2VyaWVzSW5kZXgsIGRhdGFQb2ludEluZGV4ID0gX2EuZGF0YVBvaW50SW5kZXgsIHcgPSBfYS53O1xuICAgICAgICAgICAgICAgICAgICB2YXIgZ2V0RGF5ID0gZnVuY3Rpb24gKGZvcm1hdHRlZERhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoMCwgbW9tZW50XzEuZGVmYXVsdCkoZm9ybWF0dGVkRGF0ZSkuZm9ybWF0KCdkZGQgTU1NIEREIFlZWVknKTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiPGRpdiBjbGFzcz1cXFwicC00XFxcIj5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwidGV4dC1uLTQwXFxcIj4gXCIuY29uY2F0KGdldERheSh3Lmdsb2JhbHMuY2F0ZWdvcnlMYWJlbHNbZGF0YVBvaW50SW5kZXhdKSwgXCI8L2Rpdj5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZmxleCB0ZXh0LW4tNTAgc3BhY2UteC00IGp1c3RpZnktYmV0d2VlblxcXCI+PGRpdj5cIikuY29uY2F0KHRvb2x0aXBUZXh0LnZhbHVlLCBcIjwvZGl2PlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmb250LWJvbGRcXFwiPlwiKS5jb25jYXQoc2VyaWVzW3Nlcmllc0luZGV4XVtkYXRhUG9pbnRJbmRleF0sIFwiPC9kaXY+PC9kaXY+XFxuICAgICAgICAgICAgICA8L2Rpdj5cIik7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB4YXhpczoge1xuICAgICAgICAgICAgICAgIHRpY2tBbW91bnQ6IDMsXG4gICAgICAgICAgICAgICAgcGFkZGluZzoge1xuICAgICAgICAgICAgICAgICAgICBsZWZ0OiAxMDAsXG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAyMCwgLy8gSW5jcmVhc2UgdGhlIHNwYWNlIGJldHdlZW4gdGhlIGxhc3QgdGljayBhbmQgdGhlIHJpZ2h0IGVkZ2Ugb2YgdGhlIGNoYXJ0XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBsYWJlbHM6IHtcbiAgICAgICAgICAgICAgICAgICAgcm90YXRlOiAwLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeWF4aXM6IHtcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiBtYXhWYWx1ZS52YWx1ZSArIDMsXG4gICAgICAgICAgICAgICAgdGlja0Ftb3VudDogbWF4VmFsdWUudmFsdWUgPiA0ID8gNSA6IG1heFZhbHVlLnZhbHVlICsgMyxcbiAgICAgICAgICAgICAgICAvLyBBZGRpdGlvbmFsIHNwYWNpbmcgb3B0aW9uc1xuICAgICAgICAgICAgICAgIG9mZnNldFk6IDEwLFxuICAgICAgICAgICAgICAgIGxhYmVsczoge1xuICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiAxMCxcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyOiBmdW5jdGlvbiAodmFsdWUsIGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzLnZhbHVlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFydC52YWx1ZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9iID0gKF9hID0gY2hhcnQudmFsdWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jaGFydCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLncuZ2xvYmFscy55QXhpc1NjYWxlWzBdLnJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByb3VuZGVkTGFiZWxzLnZhbHVlID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBjb3VudCA9IDA7IGNvdW50IDwgbGFiZWxzLnZhbHVlLmxlbmd0aDsgY291bnQrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcm91bmRlZExhYmVscy52YWx1ZS5pbmNsdWRlcyhNYXRoLnJvdW5kKGxhYmVscy52YWx1ZVtjb3VudF0pKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3VuZGVkTGFiZWxzLnZhbHVlLnB1c2goTWF0aC5yb3VuZChsYWJlbHMudmFsdWVbY291bnRdKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJvdW5kZWRMYWJlbHMudmFsdWVbaW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTsgfSk7XG4gICAgICAgIHZhciBzZXJpZXMgPSAoMCwgdnVlXzIucmVhY3RpdmUpKFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnRGVza3RvcHMnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdsaW5lJyxcbiAgICAgICAgICAgICAgICBkYXRhOiBncmFwaEFtb3VudC52YWx1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGdyYXBoQW1vdW50LnZhbHVlOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBtYXhWYWx1ZS52YWx1ZSA9IDA7XG4gICAgICAgICAgICB5YXhpc1RpY2tzLnZhbHVlLmxlbmd0aCA9IDA7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGdyYXBoQW1vdW50LnZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1heFZhbHVlLnZhbHVlIDwgZ3JhcGhBbW91bnQudmFsdWVbaV1bJ3knXSkge1xuICAgICAgICAgICAgICAgICAgICBtYXhWYWx1ZS52YWx1ZSA9IGdyYXBoQW1vdW50LnZhbHVlW2ldWyd5J107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VyaWVzWydkYXRhJ10gPSBncmFwaEFtb3VudC52YWx1ZTtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBsYWJlbHM6IGxhYmVscywgcm91bmRlZExhYmVsczogcm91bmRlZExhYmVscywgc2hvd0dyYXBoTG9hZGVyOiBzaG93R3JhcGhMb2FkZXIsIGdyYXBoQW1vdW50OiBncmFwaEFtb3VudCwgeWF4aXNUaWNrczogeWF4aXNUaWNrcywgbWF4VmFsdWU6IG1heFZhbHVlLCBjaGFydDogY2hhcnQsIGdyYXBoQ29sb3I6IGdyYXBoQ29sb3IsIHByb3BzOiBwcm9wcywgdG9vbHRpcFRleHQ6IHRvb2x0aXBUZXh0LCBjaGFydE9wdGlvbnM6IGNoYXJ0T3B0aW9ucywgc2VyaWVzOiBzZXJpZXMsIHNwaW5uZXJMb2FkZXI6IHNwaW5uZXJMb2FkZXJfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIFRhYmxlUGFnaW5hdGlvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9UYWJsZVBhZ2luYXRpb24udnVlXCIpKTtcbnZhciB1dGlsc18xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdXRpbHNcIik7XG52YXIgVGFibGVMb2FkZXJDb21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVGFibGVMb2FkZXJDb21wb25lbnQudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdEYXNoYm9hcmRMaXN0U2VjdGlvbicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgY3VycmVudFZpZXc6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0YWJsZURhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRhYmxlSGVhZGVyOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RhcnREYXRlOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZW5kRGF0ZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRhdGVUeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIGVtaXRzOiBbJ3RhYmxlTmF2J10sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgX2IsIF9jO1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlLCBlbWl0ID0gX2EuZW1pdDtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBhY3Rpdml0eU5hdkxpc3QgPSBbXG4gICAgICAgICAgICB7IGxhYmVsOiAnQWN0aXZpdHkgU3RhdHVzJywgYXBpUGFyYW1zOiAnc3RhdHVzJyB9LFxuICAgICAgICAgICAgeyBsYWJlbDogJ0FjdGl2aXR5IEFkZGVkJywgYXBpUGFyYW1zOiAnbWV0aG9kJyB9LFxuICAgICAgICAgICAgeyBsYWJlbDogJ0FjdGl2aXR5IENvbXBsZXRpb24nLCBhcGlQYXJhbXM6ICdjb21wbGV0ZW5lc3MnIH0sXG4gICAgICAgIF07XG4gICAgICAgIHZhciBwdWJsaXNoZXJOYXZMaXN0ID0gW1xuICAgICAgICAgICAgeyBsYWJlbDogJ1B1Ymxpc2hlciBUeXBlJywgYXBpUGFyYW1zOiAncHVibGlzaGVyLXR5cGUnIH0sXG4gICAgICAgICAgICB7IGxhYmVsOiAnRGF0YSBMaWNlbmNlJywgYXBpUGFyYW1zOiAnZGF0YS1saWNlbnNlJyB9LFxuICAgICAgICAgICAgeyBsYWJlbDogJ0NvdW50cnknLCBhcGlQYXJhbXM6ICdjb3VudHJ5JyB9LFxuICAgICAgICAgICAgeyBsYWJlbDogJ1JlZ2lzdHJhdGlvbiBUeXBlJywgYXBpUGFyYW1zOiAncmVnaXN0cmF0aW9uLXR5cGUnIH0sXG4gICAgICAgICAgICB7IGxhYmVsOiAnU2V0dXAgQ29tcGxldGVuZXNzJywgYXBpUGFyYW1zOiAnc2V0dXAnIH0sXG4gICAgICAgIF07XG4gICAgICAgIHZhciBjdXJyZW50cGFnZSA9ICgwLCB2dWVfMi5yZWYpKDEpO1xuICAgICAgICB2YXIgcmVzZXRwYWdpbmF0aW9uID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgZmlsdGVyID0gKDAsIHZ1ZV8yLnJlZikoeyBvcmRlckJ5OiAnJywgc29ydDogJycgfSk7XG4gICAgICAgIHZhciBzb3J0RWxlbWVudCA9ICgwLCB2dWVfMi5yZWYpKHsgbGFiZWw6ICcnLCBhcGlQYXJhbXM6ICcnIH0pO1xuICAgICAgICB2YXIgdXNlck5hdmxpc3QgPSBbeyBsYWJlbDogJ3VzZXInLCBhcGlQYXJhbXM6ICcnIH1dO1xuICAgICAgICB2YXIgY3VycmVudEl0ZW0gPSAoMCwgdnVlXzIucmVmKSh7XG4gICAgICAgICAgICBsYWJlbDogJ1B1Ymxpc2hlciBUeXBlJyxcbiAgICAgICAgICAgIGFwaVBhcmFtczogJ3B1Ymxpc2hlci10eXBlJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBjdXJyZW50TmF2TGlzdCA9ICgwLCB2dWVfMi5yZWYpKHB1Ymxpc2hlck5hdkxpc3QpO1xuICAgICAgICB2YXIgdGl0bGUgPSAoMCwgdnVlXzIucmVmKSgoX2IgPSBjdXJyZW50TmF2TGlzdC52YWx1ZVswXSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmxhYmVsKTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZmV0Y2hUYWJsZURhdGEoY3VycmVudE5hdkxpc3QudmFsdWVbMF0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHNvcnRUYWJsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZldGNoVGFibGVEYXRhKGN1cnJlbnRJdGVtLnZhbHVlLCBmYWxzZSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciB0cmlnZ2VycGFnaW5hdGlvbiA9IGZ1bmN0aW9uIChwYWdlKSB7XG4gICAgICAgICAgICBjdXJyZW50cGFnZS52YWx1ZSA9IHBhZ2U7XG4gICAgICAgICAgICByZXNldHBhZ2luYXRpb24udmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIGZldGNoVGFibGVEYXRhKGN1cnJlbnRJdGVtLnZhbHVlLCBmYWxzZSk7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gZmlsdGVyLnZhbHVlOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXNldHBhZ2luYXRpb24udmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgY3VycmVudHBhZ2UudmFsdWUgPSAxO1xuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gcHJvcHMuY3VycmVudFZpZXc7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIGN1cnJlbnRwYWdlLnZhbHVlID0gMTtcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gJ2FjdGl2aXR5Jykge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRJdGVtLnZhbHVlID0geyBsYWJlbDogJ0FjdGl2aXR5IFN0YXR1cycsIGFwaVBhcmFtczogJ3N0YXR1cycgfTtcbiAgICAgICAgICAgICAgICBjdXJyZW50TmF2TGlzdC52YWx1ZSA9IGFjdGl2aXR5TmF2TGlzdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09PSAncHVibGlzaGVyJykge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRJdGVtLnZhbHVlID0ge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ1B1Ymxpc2hlciBUeXBlJyxcbiAgICAgICAgICAgICAgICAgICAgYXBpUGFyYW1zOiAncHVibGlzaGVyLXR5cGUnLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY3VycmVudE5hdkxpc3QudmFsdWUgPSBwdWJsaXNoZXJOYXZMaXN0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY3VycmVudE5hdkxpc3QudmFsdWUgPSB1c2VyTmF2bGlzdDtcbiAgICAgICAgICAgICAgICBjdXJyZW50SXRlbS52YWx1ZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICd1c2VyJyxcbiAgICAgICAgICAgICAgICAgICAgYXBpUGFyYW1zOiAnJyxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmV0Y2hUYWJsZURhdGEoY3VycmVudE5hdkxpc3QudmFsdWVbMF0pO1xuICAgICAgICAgICAgYWN0aXZlQ2xhc3MudmFsdWUgPSAoX2EgPSBjdXJyZW50TmF2TGlzdC52YWx1ZVswXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxhYmVsO1xuICAgICAgICAgICAgdGl0bGUudmFsdWUgPSAoX2IgPSBjdXJyZW50TmF2TGlzdC52YWx1ZVswXSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmxhYmVsO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHNob3dOb0RhdGFDb21wb25lbnQgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICByZXR1cm4gKHByb3BzLnRhYmxlRGF0YS5sZW5ndGggPT09IDAgfHxcbiAgICAgICAgICAgICAgICAoISh0aXRsZS52YWx1ZSA9PT0gJ1JlZ2lzdHJhdGlvbiBUeXBlJyB8fFxuICAgICAgICAgICAgICAgICAgICB0aXRsZS52YWx1ZSA9PT0gJ1NldHVwIENvbXBsZXRlbmVzcycpICYmXG4gICAgICAgICAgICAgICAgICAgICgoX2IgPSAoX2EgPSBwcm9wcy50YWJsZURhdGEpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5kYXRhKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubGVuZ3RoKSA9PT0gMCkpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGFjdGl2ZUNsYXNzID0gKDAsIHZ1ZV8yLnJlZikoKF9jID0gY3VycmVudE5hdkxpc3QudmFsdWVbMF0pID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5sYWJlbCk7XG4gICAgICAgIHZhciBOYXZpZ2F0ZVdpdGhGaWx0ZXIgPSBmdW5jdGlvbiAocGFnZSwga2V5LCB2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKCEhcHJvcHMuc3RhcnREYXRlICYmICEhcHJvcHMuZW5kRGF0ZSkge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gXCIvXCIuY29uY2F0KHBhZ2UsIFwiP1wiKS5jb25jYXQoa2V5LCBcIj1cIikuY29uY2F0KHZhbHVlKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IFwiL1wiLmNvbmNhdChwYWdlLCBcIj9cIikuY29uY2F0KGtleSwgXCI9XCIpLmNvbmNhdCh2YWx1ZSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBmZXRjaFRhYmxlRGF0YSA9IGZ1bmN0aW9uIChpdGVtLCB0YWJDaGFuZ2UpIHtcbiAgICAgICAgICAgIGlmICh0YWJDaGFuZ2UgPT09IHZvaWQgMCkgeyB0YWJDaGFuZ2UgPSB0cnVlOyB9XG4gICAgICAgICAgICBhY3RpdmVDbGFzcy52YWx1ZSA9IGl0ZW0gPT09IG51bGwgfHwgaXRlbSA9PT0gdm9pZCAwID8gdm9pZCAwIDogaXRlbS5sYWJlbDtcbiAgICAgICAgICAgIHRpdGxlLnZhbHVlID0gaXRlbSA9PT0gbnVsbCB8fCBpdGVtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBpdGVtLmxhYmVsO1xuICAgICAgICAgICAgc29ydEVsZW1lbnQudmFsdWUgPSBpdGVtO1xuICAgICAgICAgICAgZW1pdCgndGFibGVOYXYnLCBpdGVtLCBmaWx0ZXIsIGN1cnJlbnRwYWdlLnZhbHVlLCB0YWJDaGFuZ2UpO1xuICAgICAgICAgICAgcmVzZXRwYWdpbmF0aW9uLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIH07XG4gICAgICAgIHZhciB0b2dnbGVTb3J0ID0gZnVuY3Rpb24gKG9yZGVyKSB7XG4gICAgICAgICAgICBmaWx0ZXIudmFsdWUuc29ydCA9PT0gJ2FzYydcbiAgICAgICAgICAgICAgICA/IChmaWx0ZXIudmFsdWUuc29ydCA9ICdkZXNjJylcbiAgICAgICAgICAgICAgICA6IChmaWx0ZXIudmFsdWUuc29ydCA9ICdhc2MnKTtcbiAgICAgICAgICAgIGZpbHRlci52YWx1ZS5vcmRlckJ5ID0gb3JkZXI7XG4gICAgICAgICAgICBzb3J0VGFibGUoKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNvbXBsZXRlTmVzcyA9ICgwLCB2dWVfMi5pbmplY3QpKCdjb21wbGV0ZU5lc3MnKTtcbiAgICAgICAgdmFyIHJlZ2lzdHJhdGlvblR5cGUgPSAoMCwgdnVlXzIuaW5qZWN0KSgncmVnaXN0cmF0aW9uVHlwZScpO1xuICAgICAgICB2YXIgc2hvd1RhYmxlTG9hZGVyID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3Nob3dUYWJsZUxvYWRlcicpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBwcm9wczogcHJvcHMsIGVtaXQ6IGVtaXQsIGFjdGl2aXR5TmF2TGlzdDogYWN0aXZpdHlOYXZMaXN0LCBwdWJsaXNoZXJOYXZMaXN0OiBwdWJsaXNoZXJOYXZMaXN0LCBjdXJyZW50cGFnZTogY3VycmVudHBhZ2UsIHJlc2V0cGFnaW5hdGlvbjogcmVzZXRwYWdpbmF0aW9uLCBmaWx0ZXI6IGZpbHRlciwgc29ydEVsZW1lbnQ6IHNvcnRFbGVtZW50LCB1c2VyTmF2bGlzdDogdXNlck5hdmxpc3QsIGN1cnJlbnRJdGVtOiBjdXJyZW50SXRlbSwgY3VycmVudE5hdkxpc3Q6IGN1cnJlbnROYXZMaXN0LCB0aXRsZTogdGl0bGUsIHNvcnRUYWJsZTogc29ydFRhYmxlLCB0cmlnZ2VycGFnaW5hdGlvbjogdHJpZ2dlcnBhZ2luYXRpb24sIHNob3dOb0RhdGFDb21wb25lbnQ6IHNob3dOb0RhdGFDb21wb25lbnQsIGFjdGl2ZUNsYXNzOiBhY3RpdmVDbGFzcywgTmF2aWdhdGVXaXRoRmlsdGVyOiBOYXZpZ2F0ZVdpdGhGaWx0ZXIsIGZldGNoVGFibGVEYXRhOiBmZXRjaFRhYmxlRGF0YSwgdG9nZ2xlU29ydDogdG9nZ2xlU29ydCwgY29tcGxldGVOZXNzOiBjb21wbGV0ZU5lc3MsIHJlZ2lzdHJhdGlvblR5cGU6IHJlZ2lzdHJhdGlvblR5cGUsIHNob3dUYWJsZUxvYWRlcjogc2hvd1RhYmxlTG9hZGVyLCBQYWdpbmF0aW9uOiBUYWJsZVBhZ2luYXRpb25fdnVlXzEuZGVmYXVsdCwgdHJ1bmNhdGVUZXh0OiB1dGlsc18xLnRydW5jYXRlVGV4dCwgVGFibGVMb2FkZXJDb21wb25lbnQ6IFRhYmxlTG9hZGVyQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIERhc2hib2FyZFN0YXRzU2VjdGlvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9EYXNoYm9hcmRTdGF0c1NlY3Rpb24udnVlXCIpKTtcbnZhciBEYXNoYm9hcmRMaXN0U2VjdGlvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9EYXNoYm9hcmRMaXN0U2VjdGlvbi52dWVcIikpO1xudmFyIERhdGVSYW5nZVdpZGdldF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9EYXRlUmFuZ2VXaWRnZXQudnVlXCIpKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgQnV0dG9uQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWVcIikpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciBtb21lbnRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwibW9tZW50XCIpKTtcbnZhciB1dGlsc18xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdXRpbHNcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnRGFzaGJvYXJkUGFnZScsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgb2xkZXN0RGF0ZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIGN1cnJlbnROYXYgPSAoMCwgdnVlXzIucmVmKSh7XG4gICAgICAgICAgICBsYWJlbDogJ1B1Ymxpc2hlciBUeXBlJyxcbiAgICAgICAgICAgIGFwaVBhcmFtczogJ3B1Ymxpc2hlci10eXBlJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB0YWJsZURhdGEgPSAoMCwgdnVlXzIucmVmKSh7fSk7XG4gICAgICAgIHZhciBEYXRlTGFiZWwgPSAoMCwgdnVlXzIucmVmKSgnUmVnaXN0ZXJlZCBkYXRlOicpO1xuICAgICAgICB2YXIgc3RhcnREYXRlID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICB2YXIgZW5kRGF0ZSA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIGdyYXBoQW1vdW50ID0gKDAsIHZ1ZV8yLnJlZikoW10pO1xuICAgICAgICB2YXIgZ3JhcGhUb3RhbCA9ICgwLCB2dWVfMi5yZWYpKDApO1xuICAgICAgICB2YXIgc2hvd1RhYmxlTG9hZGVyID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd0dyYXBoTG9hZGVyID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgZGF0ZVR5cGUgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciBkYXRlTGFiZWwgPSB7XG4gICAgICAgICAgICBwdWJsaXNoZXI6ICdSZWdpc3RlcmVkIGRhdGU6JyxcbiAgICAgICAgICAgIGFjdGl2aXR5OiAnQWN0aXZpdHkgQWRkZWQgb246JyxcbiAgICAgICAgICAgIHVzZXI6ICdVc2VyIENyZWF0ZWQgRGF0ZTonLFxuICAgICAgICB9O1xuICAgICAgICB2YXIgY3VycmVudFZpZXcgPSAoMCwgdnVlXzIucmVmKSgncHVibGlzaGVyJyk7XG4gICAgICAgIHZhciBjb21wbGV0ZU5lc3MgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgcmVnaXN0cmF0aW9uVHlwZSA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBoYW5kbGVDaGFuZ2VUYWJsZU5hdiA9IGZ1bmN0aW9uIChpdGVtLCBmaWx0ZXIsIHBhZ2UsIHRhYkNoYW5nZSkge1xuICAgICAgICAgICAgaWYgKHRhYkNoYW5nZSA9PT0gdm9pZCAwKSB7IHRhYkNoYW5nZSA9IHRydWU7IH1cbiAgICAgICAgICAgIGlmICh0YWJDaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICBmaWx0ZXIudmFsdWUub3JkZXJCeSA9ICcnO1xuICAgICAgICAgICAgICAgIGZpbHRlci52YWx1ZS5zb3J0ID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjdXJyZW50TmF2LnZhbHVlID0gaXRlbTtcbiAgICAgICAgICAgIGZldGNoVGFibGVEYXRhKGZpbHRlci52YWx1ZSwgcGFnZSk7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNldERhdGVSYW5nZURhdGUoJycsICcnKTtcbiAgICAgICAgICAgIGZldGNoVGFibGVEYXRhKCk7XG4gICAgICAgICAgICBmZXRjaEdyYXBoRGF0YSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICB2YXIgZG93bmxvYWRSZXBvcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgICAgICAgICAgaWYgKHN0YXJ0RGF0ZS52YWx1ZSAmJiBlbmREYXRlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnc3RhcnRfZGF0ZScsIHN0YXJ0RGF0ZS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnZW5kX2RhdGUnLCBlbmREYXRlLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5nZXQoXCIvZGFzaGJvYXJkL1wiLmNvbmNhdChjdXJyZW50Vmlldy52YWx1ZSwgXCIvZG93bmxvYWRcIiksIHsgcGFyYW1zOiBwYXJhbXMgfSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbcmVzcG9uc2VdLCB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi9jc3YnLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgICAgIGxpbmsuaHJlZiA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgICAgICAgICAgIGxpbmsuZG93bmxvYWQgPSBcIlwiLmNvbmNhdChjdXJyZW50Vmlldy52YWx1ZSwgXCItcmVwb3J0LmNzdlwiKTtcbiAgICAgICAgICAgICAgICBsaW5rLmNsaWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGdyYXBoRGF0YUZvcm1hdHRlciA9IGZ1bmN0aW9uIChncmFwaERhdGEpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGRhdGUgaW4gZ3JhcGhEYXRhKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRhdGEgPSB7XG4gICAgICAgICAgICAgICAgICAgIHg6ICgwLCBtb21lbnRfMS5kZWZhdWx0KShkYXRlKS5mb3JtYXQoJ01NTSBERCBZWVlZJyksXG4gICAgICAgICAgICAgICAgICAgIHk6IGdyYXBoRGF0YVtkYXRlXSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGdyYXBoQW1vdW50LnZhbHVlLnB1c2goZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBmZXRjaEdyYXBoRGF0YSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNob3dHcmFwaExvYWRlci52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB2YXIgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnc3RhcnRfZGF0ZScsIHN0YXJ0RGF0ZS52YWx1ZSk7XG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdlbmRfZGF0ZScsIGVuZERhdGUudmFsdWUpO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLmdldChcIi9kYXNoYm9hcmQvXCIuY29uY2F0KGN1cnJlbnRWaWV3LnZhbHVlLCBcIi9jb3VudC9cIiksIHsgcGFyYW1zOiBwYXJhbXMgfSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgZ3JhcGhBbW91bnQudmFsdWUubGVuZ3RoID0gMDtcbiAgICAgICAgICAgICAgICBncmFwaFRvdGFsLnZhbHVlID0gcmVzLmRhdGEuZGF0YVsnY291bnQnXTtcbiAgICAgICAgICAgICAgICBncmFwaERhdGFGb3JtYXR0ZXIocmVzLmRhdGEuZGF0YVsnZ3JhcGgnXSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5maW5hbGx5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzaG93R3JhcGhMb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgc2V0RGF0ZVJhbmdlRGF0ZSA9IGZ1bmN0aW9uIChzdGFydCwgZW5kLCB0eXBlKSB7XG4gICAgICAgICAgICBpZiAodHlwZSA9PT0gdm9pZCAwKSB7IHR5cGUgPSAnJzsgfVxuICAgICAgICAgICAgc3RhcnREYXRlLnZhbHVlID0gJyc7XG4gICAgICAgICAgICBkYXRlVHlwZS52YWx1ZSA9IHR5cGU7XG4gICAgICAgICAgICBpZiAoc3RhcnQgIT0gJzE5OTAtMTItMzEnKSB7XG4gICAgICAgICAgICAgICAgc3RhcnREYXRlLnZhbHVlID0gc3RhcnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbmREYXRlLnZhbHVlID0gZW5kO1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRWaWV3LnZhbHVlICE9PSAndXNlcicpIHtcbiAgICAgICAgICAgICAgICBmZXRjaFRhYmxlRGF0YSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmV0Y2hHcmFwaERhdGEoKTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBjdXJyZW50Vmlldy52YWx1ZTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgRGF0ZUxhYmVsLnZhbHVlID0gKF9hID0gZGF0ZUxhYmVsW2N1cnJlbnRWaWV3LnZhbHVlXSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogY3VycmVudFZpZXcudmFsdWU7XG4gICAgICAgICAgICBzdGFydERhdGUudmFsdWUgPSAnJztcbiAgICAgICAgICAgIGVuZERhdGUudmFsdWUgPSAnJztcbiAgICAgICAgICAgIGZldGNoR3JhcGhEYXRhKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZmV0Y2hUYWJsZURhdGEgPSBmdW5jdGlvbiAoZmlsdGVyLCBwYWdlKSB7XG4gICAgICAgICAgICBpZiAoZmlsdGVyID09PSB2b2lkIDApIHsgZmlsdGVyID0geyBvcmRlckJ5OiAnJywgc29ydDogJycgfTsgfVxuICAgICAgICAgICAgaWYgKHBhZ2UgPT09IHZvaWQgMCkgeyBwYWdlID0gJzEnOyB9XG4gICAgICAgICAgICBzaG93VGFibGVMb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgdmFyIHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICAgICAgICAgIHZhciBhY3RpdmVUYWIgPSBjdXJyZW50TmF2LnZhbHVlWydhcGlQYXJhbXMnXTtcbiAgICAgICAgICAgIGlmIChmaWx0ZXIub3JkZXJCeSkge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ29yZGVyQnknLCAoMCwgdXRpbHNfMS5rZWJhYkNhc2VUb1NuYWtlY2FzZSkoZmlsdGVyLm9yZGVyQnkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ3BhZ2UnLCBwYWdlKTtcbiAgICAgICAgICAgIGlmIChmaWx0ZXIuc29ydCkge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ2RpcmVjdGlvbicsIGZpbHRlci5zb3J0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzdGFydERhdGUudmFsdWUgJiYgZW5kRGF0ZS52YWx1ZSAmJiBjdXJyZW50TmF2LnZhbHVlLmxhYmVsICE9PSAndXNlcicpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdzdGFydF9kYXRlJywgc3RhcnREYXRlLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdlbmRfZGF0ZScsIGVuZERhdGUudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGFwaVVybCA9IFwiL2Rhc2hib2FyZC9cIi5jb25jYXQoY3VycmVudFZpZXcudmFsdWUsIFwiL1wiKS5jb25jYXQoYWN0aXZlVGFiKTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5nZXQoYXBpVXJsLCB7IHBhcmFtczogcGFyYW1zIH0pXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudFZpZXcudmFsdWUgPT09ICdwdWJsaXNoZXInKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhY3RpdmVUYWIgIT09ICdzZXR1cCcgJiYgYWN0aXZlVGFiICE9PSAncmVnaXN0cmF0aW9uLXR5cGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWJsZURhdGEudmFsdWUgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ZW1wRGF0YSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvZGVMaXN0ID0gKF9hID0gcmVzcG9uc2UuZGF0YSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNvZGVMaXN0O1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG9iamVjdExlbmd0aCA9IChfYyA9IChfYiA9IHJlc3BvbnNlLmRhdGEpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5wYWdpbmF0ZWREYXRhLmRhdGEubGVuZ3RoKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvYmplY3RMZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpdGVtSW5QYWdpbmF0ZWREYXRhID0gKF9kID0gcmVzcG9uc2UuZGF0YSkgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kLnBhZ2luYXRlZERhdGEuZGF0YVtpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcHVibGlzaGVyVHlwZUtleSA9IGl0ZW1JblBhZ2luYXRlZERhdGFbKDAsIHV0aWxzXzEua2ViYWJDYXNlVG9TbmFrZWNhc2UpKGFjdGl2ZVRhYildO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBEYXRhLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogY29kZUxpc3RbcHVibGlzaGVyVHlwZUtleV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBwdWJsaXNoZXJUeXBlS2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbDogaXRlbUluUGFnaW5hdGVkRGF0YS5jb3VudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlRGF0YS52YWx1ZSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWJsZURhdGEudmFsdWUuZGF0YSA9IHRlbXBEYXRhO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGFjdGl2ZVRhYiA9PT0gJ3JlZ2lzdHJhdGlvbi10eXBlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0cmF0aW9uVHlwZS52YWx1ZSA9IHJlc3BvbnNlLmRhdGEuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlTmVzcy52YWx1ZSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRWaWV3LnZhbHVlID09PSAndXNlcicgfHwgY3VycmVudFZpZXcudmFsdWUgPT09ICdhY3Rpdml0eScpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFibGVEYXRhLnZhbHVlID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5maW5hbGx5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzaG93VGFibGVMb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ2NvbXBsZXRlTmVzcycsIGNvbXBsZXRlTmVzcyk7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgncmVnaXN0cmF0aW9uVHlwZScsIHJlZ2lzdHJhdGlvblR5cGUpO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ2dyYXBoQW1vdW50JywgZ3JhcGhBbW91bnQpO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ2dyYXBoVG90YWwnLCBncmFwaFRvdGFsKTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCdzaG93VGFibGVMb2FkZXInLCBzaG93VGFibGVMb2FkZXIpO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ3Nob3dHcmFwaExvYWRlcicsIHNob3dHcmFwaExvYWRlcik7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgnY3VycmVudFZpZXcnLCBjdXJyZW50Vmlldyk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGN1cnJlbnROYXY6IGN1cnJlbnROYXYsIHRhYmxlRGF0YTogdGFibGVEYXRhLCBEYXRlTGFiZWw6IERhdGVMYWJlbCwgc3RhcnREYXRlOiBzdGFydERhdGUsIGVuZERhdGU6IGVuZERhdGUsIGdyYXBoQW1vdW50OiBncmFwaEFtb3VudCwgZ3JhcGhUb3RhbDogZ3JhcGhUb3RhbCwgc2hvd1RhYmxlTG9hZGVyOiBzaG93VGFibGVMb2FkZXIsIHNob3dHcmFwaExvYWRlcjogc2hvd0dyYXBoTG9hZGVyLCBkYXRlVHlwZTogZGF0ZVR5cGUsIGRhdGVMYWJlbDogZGF0ZUxhYmVsLCBjdXJyZW50VmlldzogY3VycmVudFZpZXcsIGNvbXBsZXRlTmVzczogY29tcGxldGVOZXNzLCByZWdpc3RyYXRpb25UeXBlOiByZWdpc3RyYXRpb25UeXBlLCBoYW5kbGVDaGFuZ2VUYWJsZU5hdjogaGFuZGxlQ2hhbmdlVGFibGVOYXYsIHByb3BzOiBwcm9wcywgZG93bmxvYWRSZXBvcnQ6IGRvd25sb2FkUmVwb3J0LCBncmFwaERhdGFGb3JtYXR0ZXI6IGdyYXBoRGF0YUZvcm1hdHRlciwgZmV0Y2hHcmFwaERhdGE6IGZldGNoR3JhcGhEYXRhLCBzZXREYXRlUmFuZ2VEYXRlOiBzZXREYXRlUmFuZ2VEYXRlLCBmZXRjaFRhYmxlRGF0YTogZmV0Y2hUYWJsZURhdGEsIERhc2hib2FyZFN0YXRzU2VjdGlvbjogRGFzaGJvYXJkU3RhdHNTZWN0aW9uX3Z1ZV8xLmRlZmF1bHQsIERhc2hib2FyZExpc3RTZWN0aW9uOiBEYXNoYm9hcmRMaXN0U2VjdGlvbl92dWVfMS5kZWZhdWx0LCBEYXRlUmFuZ2VXaWRnZXQ6IERhdGVSYW5nZVdpZGdldF92dWVfMS5kZWZhdWx0LCBCdXR0b25Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgRGFzaGJvYXJkR3JhcGhfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vRGFzaGJvYXJkR3JhcGgudnVlXCIpKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgbW9tZW50XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1vbWVudFwiKSk7XG52YXIgUHJvZ3Jlc3NMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvUHJvZ3Jlc3NMb2FkZXIudnVlXCIpKTtcbnZhciB1dGlsc18xID0gcmVxdWlyZShcIi4uLy4uL2NvbXBvc2FibGUvdXRpbHNcIik7XG52YXIgU2hpbW1lckxvYWRpbmdfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvU2hpbW1lckxvYWRpbmcudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdEYXNoYm9hcmRTdGF0c1NlY3Rpb24nLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGN1cnJlbnRWaWV3OiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciB0b3RhbCA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBpbmFjdGl2ZVB1Ymxpc2hlciA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBwdWJsaXNoZXJXaXRob3V0QWN0aXZpdHkgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgbGFzdFJlZ2lzdGVyZWQgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgbGFzdFVwZGF0ZWRQdWJsaXNoZXIgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgbGFzdFVwZGF0ZWRBY3Rpdml0eSA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBsb2FkZXIgPSAoMCwgdnVlXzIucmVmKSh7IHN0YXR1czogZmFsc2UsIHRleHQ6ICcnIH0pO1xuICAgICAgICB2YXIgc2hvd1N0YXRzTG9hZGVyID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgZ3JhcGhUb3RhbCA9ICgwLCB2dWVfMi5pbmplY3QpKCdncmFwaFRvdGFsJyk7XG4gICAgICAgIHZhciBwdWJsaXNoZXJTdGF0cyA9ICgwLCB2dWVfMi5yZWYpKFtdKTtcbiAgICAgICAgdmFyIHNob3dQdWJsaXNoZXJTdGF0cyA9ICgwLCB2dWVfMi5yZWYpKHRydWUpO1xuICAgICAgICB2YXIgc2hvd0dyYXBoTG9hZGVyID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3Nob3dHcmFwaExvYWRlcicpO1xuICAgICAgICB2YXIgdXNlcklkID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZmV0Y2hTdGF0c0RhdGEoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBmb3JtYXREYXRlID0gZnVuY3Rpb24gKGRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiAoMCwgbW9tZW50XzEuZGVmYXVsdCkoZGF0ZSkuZm9ybWF0KCdNTU1NIERELCBZWVlZJyk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBwcm94eVVzZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBsb2FkZXIudmFsdWUuc3RhdHVzID0gdHJ1ZTtcbiAgICAgICAgICAgIGxvYWRlci52YWx1ZS50ZXh0ID0gJ1Byb3h5IExvZ2luJztcbiAgICAgICAgICAgIHZhciBlbmRwb2ludCA9IFwiL3Byb3h5LW9yZ2FuaXNhdGlvbi9cIi5jb25jYXQodXNlcklkLnZhbHVlKTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoZW5kcG9pbnQpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlcGxhY2UoJy9hY3Rpdml0aWVzJyk7XG4gICAgICAgICAgICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlLnN0YXR1cyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHByb3BzLmN1cnJlbnRWaWV3OyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBmZXRjaFN0YXRzRGF0YSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGZldGNoU3RhdHNEYXRhID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hvd1N0YXRzTG9hZGVyLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5nZXQoXCIvZGFzaGJvYXJkL1wiLmNvbmNhdChwcm9wcy5jdXJyZW50VmlldywgXCIvc3RhdHNcIikpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIHRvdGFsLnZhbHVlID0gcmVzcG9uc2UuZGF0YS50b3RhbENvdW50O1xuICAgICAgICAgICAgICAgIGxhc3RSZWdpc3RlcmVkLnZhbHVlID0gcmVzcG9uc2UuZGF0YS5sYXN0UmVnaXN0ZXJlZFB1Ymxpc2hlcjtcbiAgICAgICAgICAgICAgICBsYXN0VXBkYXRlZFB1Ymxpc2hlci52YWx1ZSA9IHJlc3BvbnNlLmRhdGEubGFzdFVwZGF0ZWRQdWJsaXNoZXI7XG4gICAgICAgICAgICAgICAgbGFzdFVwZGF0ZWRBY3Rpdml0eS52YWx1ZSA9IHJlc3BvbnNlLmRhdGEubGFzdFVwZGF0ZWRBY3Rpdml0eTtcbiAgICAgICAgICAgICAgICBpZiAocHJvcHMuY3VycmVudFZpZXcgPT09ICdwdWJsaXNoZXInKSB7XG4gICAgICAgICAgICAgICAgICAgIHVzZXJJZC52YWx1ZSA9IGxhc3RSZWdpc3RlcmVkLnZhbHVlLnVzZXJfaWQ7XG4gICAgICAgICAgICAgICAgICAgIGluYWN0aXZlUHVibGlzaGVyLnZhbHVlID0gcmVzcG9uc2UuZGF0YS5pbkFjdGl2ZVB1Ymxpc2hlcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzLmN1cnJlbnRWaWV3ID09PSAnYWN0aXZpdHknKSB7XG4gICAgICAgICAgICAgICAgICAgIHVzZXJJZC52YWx1ZSA9IHJlc3BvbnNlLmRhdGEudXNlcklkO1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoZXJXaXRob3V0QWN0aXZpdHkudmFsdWUgPSByZXNwb25zZS5kYXRhLnB1Ymxpc2hlcldpdGhvdXRBY3Rpdml0eTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzLmN1cnJlbnRWaWV3ID09PSAndXNlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgc2hvd1B1Ymxpc2hlclN0YXRzLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaGVyU3RhdHMudmFsdWUgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmZpbmFsbHkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHNob3dTdGF0c0xvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHByb3BzOiBwcm9wcywgdG90YWw6IHRvdGFsLCBpbmFjdGl2ZVB1Ymxpc2hlcjogaW5hY3RpdmVQdWJsaXNoZXIsIHB1Ymxpc2hlcldpdGhvdXRBY3Rpdml0eTogcHVibGlzaGVyV2l0aG91dEFjdGl2aXR5LCBsYXN0UmVnaXN0ZXJlZDogbGFzdFJlZ2lzdGVyZWQsIGxhc3RVcGRhdGVkUHVibGlzaGVyOiBsYXN0VXBkYXRlZFB1Ymxpc2hlciwgbGFzdFVwZGF0ZWRBY3Rpdml0eTogbGFzdFVwZGF0ZWRBY3Rpdml0eSwgbG9hZGVyOiBsb2FkZXIsIHNob3dTdGF0c0xvYWRlcjogc2hvd1N0YXRzTG9hZGVyLCBncmFwaFRvdGFsOiBncmFwaFRvdGFsLCBwdWJsaXNoZXJTdGF0czogcHVibGlzaGVyU3RhdHMsIHNob3dQdWJsaXNoZXJTdGF0czogc2hvd1B1Ymxpc2hlclN0YXRzLCBzaG93R3JhcGhMb2FkZXI6IHNob3dHcmFwaExvYWRlciwgdXNlcklkOiB1c2VySWQsIGZvcm1hdERhdGU6IGZvcm1hdERhdGUsIHByb3h5VXNlcjogcHJveHlVc2VyLCBmZXRjaFN0YXRzRGF0YTogZmV0Y2hTdGF0c0RhdGEsIERhc2hib2FyZEdyYXBoOiBEYXNoYm9hcmRHcmFwaF92dWVfMS5kZWZhdWx0LCBMb2FkZXI6IFByb2dyZXNzTG9hZGVyX3Z1ZV8xLmRlZmF1bHQsIHRydW5jYXRlVGV4dDogdXRpbHNfMS50cnVuY2F0ZVRleHQsIFNoaW1tZXJMb2FkaW5nOiBTaGltbWVyTG9hZGluZ192dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgQnV0dG9uQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWVcIikpO1xudmFyIEhvdmVyVGV4dF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ib3ZlclRleHQudnVlXCIpKTtcbnZhciBQcm9ncmVzc0xvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWVcIikpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdBY3Rpdml0eVVwbG9hZCcsXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciBmaWxlID0gKDAsIHZ1ZV8yLnJlZikoKSwgZXJyb3IgPSAoMCwgdnVlXzIucmVmKSgnJyksIGxvYWRlciA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKSwgbG9hZGVyVGV4dCA9ICgwLCB2dWVfMi5yZWYpKGxhbmd1YWdlLmNvbW1vbl9sYW5nLnBsZWFzZV93YWl0KTtcbiAgICAgICAgZnVuY3Rpb24gdXBsb2FkRmlsZSgpIHtcbiAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBsb2FkZXJUZXh0LnZhbHVlID0gbGFuZ3VhZ2UuY29tbW9uX2xhbmcudXBsb2FkaW5nX2Nzdl94bWxfZmlsZTtcbiAgICAgICAgICAgIHZhciBhY3Rpdml0eSA9IGZpbGUudmFsdWUuZmlsZXMubGVuZ3RoID8gZmlsZS52YWx1ZS5maWxlc1swXSA6ICcnO1xuICAgICAgICAgICAgdmFyIGNvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICdjb250ZW50LXR5cGUnOiAnbXVsdGlwYXJ0L2Zvcm0tZGF0YScsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB2YXIgZGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICAgICAgZGF0YS5hcHBlbmQoJ2FjdGl2aXR5JywgYWN0aXZpdHkpO1xuICAgICAgICAgICAgZXJyb3IudmFsdWUgPSAnJztcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wb3N0KCcvaW1wb3J0JywgZGF0YSwgY29uZmlnKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgaWYgKGZpbGUudmFsdWUuZmlsZXMubGVuZ3RoICYmICgoX2EgPSByZXMgPT09IG51bGwgfHwgcmVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXMuZGF0YSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnN1Y2Nlc3MpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2ltcG9ydC9saXN0JztcbiAgICAgICAgICAgICAgICAgICAgfSwgNTAwMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBlcnJvci52YWx1ZSA9IE9iamVjdC52YWx1ZXMocmVzLmRhdGEuZXJyb3JzKS5qb2luKCcgJyk7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBlcnJvci52YWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlLmNvbW1vbl9sYW5nLmVycm9yX2hhc19vY2N1cnJlZF93aGlsZV91cGxvYWRpbmdfZmlsZTtcbiAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGRvd25sb2FkRXhjZWwoKSB7XG4gICAgICAgICAgICAoMCwgYXhpb3NfMS5kZWZhdWx0KSh7XG4gICAgICAgICAgICAgICAgdXJsOiAnaW1wb3J0L2Rvd25sb2FkL2NzdicsXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcicsXG4gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHZhciBibG9iID0gbmV3IEJsb2IoW3Jlc3BvbnNlLmRhdGFdLCB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi9jc3YnLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgICAgIGxpbmsuaHJlZiA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgICAgICAgICAgIGxpbmsuZG93bmxvYWQgPSAnSW1wb3J0X0FjdGl2aXR5X0NTVl9UZW1wbGF0ZS5jc3YnO1xuICAgICAgICAgICAgICAgIGxpbmsuY2xpY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGxhbmd1YWdlOiBsYW5ndWFnZSwgZmlsZTogZmlsZSwgZXJyb3I6IGVycm9yLCBsb2FkZXI6IGxvYWRlciwgbG9hZGVyVGV4dDogbG9hZGVyVGV4dCwgdXBsb2FkRmlsZTogdXBsb2FkRmlsZSwgZG93bmxvYWRFeGNlbDogZG93bmxvYWRFeGNlbCwgQnRuQ29tcG9uZW50OiBCdXR0b25Db21wb25lbnRfdnVlXzEuZGVmYXVsdCwgSG92ZXJUZXh0OiBIb3ZlclRleHRfdnVlXzEuZGVmYXVsdCwgTG9hZGVyOiBQcm9ncmVzc0xvYWRlcl92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbnZhciBIb3ZlclRleHRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZVwiKSk7XG52YXIgUHJvZ3Jlc3NMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvUHJvZ3Jlc3NMb2FkZXIudnVlXCIpKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgWGxzVXBsb2FkSW5kaWNhdG9yX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1hsc1VwbG9hZEluZGljYXRvci52dWVcIikpO1xudmFyIFBvcHVwTW9kYWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvUG9wdXBNb2RhbC52dWVcIikpO1xudmFyIFRvYXN0TWVzc2FnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlXCIpKTtcbnZhciBkYXRlRm9ybWF0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZGF0ZUZvcm1hdFwiKSk7XG52YXIgVGFibGVQYWdpbmF0aW9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RhYmxlUGFnaW5hdGlvbi52dWVcIikpO1xudmFyIGluZGV4XzEgPSByZXF1aXJlKFwiU3RvcmUvYWN0aXZpdGllcy9pbmRleFwiKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0FjdGl2aXR5WGxzVXBsb2FkJyxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBfYjtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciB4bHNJbmRpY2F0b3JNb3VudGVkID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgeGxzRmFpbGVkTWVzc2FnZSA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIHVwbG9hZFR5cGUgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgc2hvd0Rvd25sb2FkRHJvcGRvd24gPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBhY3Rpdml0eU5hbWUgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciBmaWxlQ291bnQgPSAoMCwgdnVlXzIucmVmKSgwKTtcbiAgICAgICAgdmFyIHhsc0Rvd25sb2FkU3RhdHVzID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICB2YXIgZG93bmxvYWRDb21wbGV0ZWQgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBwdWJsaXNoaW5nQWN0aXZpdGllcyA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciB0b2FzdE1lc3NhZ2UgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciB0b2FzdFR5cGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93RG93bmxvYWRDb2RlID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgaXNFbXB0eSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHhsc0ZhaWxlZCA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGN1cnJlbnRBY3Rpdml0eSA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIHRvYXN0VmlzaWJpbGl0eSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHhsc0RhdGEgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93Q2FuY2VsTW9kZWwgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBhY3Rpdml0aWVzID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7fSk7XG4gICAgICAgIHZhciBzZWxlY3RBbGxWYWx1ZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHVwbG9hZENvbXBsZXRlID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgdG90YWxDb3VudCA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBwcm9jZXNzZWRDb3VudCA9ICgwLCB2dWVfMi5yZWYpKDApO1xuICAgICAgICB2YXIgZmlsZSA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBlcnJvciA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIGxvYWRlciA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGxvYWRlclRleHQgPSAoMCwgdnVlXzIucmVmKSgnUGxlYXNlIFdhaXQnKTtcbiAgICAgICAgdmFyIHN0b3JlID0gKDAsIGluZGV4XzEudXNlU3RvcmUpKCk7XG4gICAgICAgIHZhciBzZWFyY2hWYWx1ZSA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIGRpcmVjdGlvbiA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIHByb2Nlc3NpbmcgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgc29ydGluZ0RpcmVjdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGRpcmVjdGlvbi52YWx1ZSA9PT0gJ2FzYydcbiAgICAgICAgICAgICAgICA/IChkaXJlY3Rpb24udmFsdWUgPSAnZGVzYycpXG4gICAgICAgICAgICAgICAgOiAoZGlyZWN0aW9uLnZhbHVlID0gJ2FzYycpO1xuICAgICAgICAgICAgZmV0Y2hBY3Rpdml0aWVzKDEsIGRpcmVjdGlvbi52YWx1ZSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBkb3dubG9hZEFwaVVybCA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIGRvd25sb2FkaW5nID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgcGEgPSAoMCwgY29yZV8xLnVzZVN0b3JhZ2UpKCd2dWUtdXNlLWxvY2FsLXN0b3JhZ2UnLCB7XG4gICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllczogKF9iID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3B1Ymxpc2hpbmdBY3Rpdml0aWVzJykpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IHt9LFxuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZmV0Y2hBY3Rpdml0aWVzKDEpO1xuICAgICAgICAgICAgY2hlY2tYbHNzdGF0dXMoKTtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuc2VsZWN0ZWRBY3Rpdml0aWVzOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZS5sZW5ndGggPCA2KSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0QWxsVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBtYXBBY3Rpdml0eU5hbWUgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICAgICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnYWN0aXZpdHknOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ0Jhc2ljIEFjdGl2aXR5IEVsZW1lbnRzJztcbiAgICAgICAgICAgICAgICBjYXNlICdwZXJpb2QnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1BlcmlvZCc7XG4gICAgICAgICAgICAgICAgY2FzZSAnaW5kaWNhdG9yJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdJbmRpY2F0b3JzIGV4Y2VwdCBQZXJpb2QnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3Jlc3VsdCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnUmVzdWx0IGV4Y2VwdCBJbmRpY2F0b3JzIGFuZCBQZXJpb2QnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuYW1lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLnN0YXJ0QnVsa1B1Ymxpc2g7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXMudmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICBwYS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMocGEudmFsdWUucHVibGlzaGluZ0FjdGl2aXRpZXMpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICB2YXIgYWN0aXZpdHlMZW5ndGggPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHJldHVybiAhKChfYSA9IHVwbG9hZFR5cGUgPT09IG51bGwgfHwgdXBsb2FkVHlwZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogdXBsb2FkVHlwZS52YWx1ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxlbmd0aCk7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLnN0YXJ0WGxzRG93bmxvYWQ7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY2hlY2tEb3dubG9hZFN0YXR1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuY2xvc2VYbHNNb2RlbDsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY2hlY2tEb3dubG9hZFN0YXR1cygpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGNoZWNrRG93bmxvYWRTdGF0dXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBkb3dubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgdmFyIGNoZWNrRG93bmxvYWQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldCgnL2FjdGl2aXRpZXMvZG93bmxvYWQteGxzLXByb2dyZXNzLXN0YXR1cycpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgICAgICBmaWxlQ291bnQudmFsdWUgPSByZXMuZGF0YS5maWxlX2NvdW50O1xuICAgICAgICAgICAgICAgICAgICB4bHNEb3dubG9hZFN0YXR1cy52YWx1ZSA9IHJlcy5kYXRhLnN0YXR1cztcbiAgICAgICAgICAgICAgICAgICAgZG93bmxvYWRBcGlVcmwudmFsdWUgPSByZXMuZGF0YS51cmw7XG4gICAgICAgICAgICAgICAgICAgIGRvd25sb2FkaW5nLnZhbHVlID0gISFyZXMuZGF0YS5zdGF0dXM7XG4gICAgICAgICAgICAgICAgICAgIGlmICh4bHNEb3dubG9hZFN0YXR1cy52YWx1ZSA9PT0gJ2NvbXBsZXRlZCcgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHhsc0Rvd25sb2FkU3RhdHVzLnZhbHVlID09PSAnZmFpbGVkJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgIXJlcy5kYXRhLnN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0Rvd25sb2FkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSwgMzAwMCk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBkb3dubG9hZENvZGUgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgYXBpVXJsLCBhY3Rpdml0aWVzXzEsIHJlcSwgYmxvYiwgbGluaztcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwaVVybCA9ICcvYWN0aXZpdGllcy9kb3dubG9hZC1jb2Rlcy8/YWN0aXZpdGllcz1hbGwnO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0b3JlLnN0YXRlLnNlbGVjdGVkQWN0aXZpdGllcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZpdGllc18xID0gc3RvcmUuc3RhdGUuc2VsZWN0ZWRBY3Rpdml0aWVzLmpvaW4oJywnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcGlVcmwgPSBcIi9hY3Rpdml0aWVzL2Rvd25sb2FkLWNvZGVzLz9hY3Rpdml0aWVzPVtcIi5jb25jYXQoYWN0aXZpdGllc18xLCBcIl1cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCAoMCwgYXhpb3NfMS5kZWZhdWx0KSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ2dldCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogYXBpVXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdibG9iJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcSA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsb2IgPSBuZXcgQmxvYihbcmVxLmRhdGFdLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsuaHJlZiA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGluay5kb3dubG9hZCA9ICdpZGVudGlmaWVycy54bHN4JztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsuY2xpY2soKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH07XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc3RvcmUuc3RhdGUuY2FuY2VsVXBsb2FkO1xuICAgICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBjYW5jZWxJbXBvcnQoKTtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICB2YXIgaW1wb3J0QW55d2F5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmRlbGV0ZShcIi9pbXBvcnQveGxzXCIpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIHhsc0RhdGEudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB1cGxvYWRGaWxlKCk7XG4gICAgICAgICAgICAgICAgdXBsb2FkVHlwZS52YWx1ZSA9IFtdO1xuICAgICAgICAgICAgICAgIHNob3dDYW5jZWxNb2RlbC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHJldHVybiAodG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2UpOyB9LCAxNTAwMCk7XG4gICAgICAgICAgICAgICAgdG9hc3RNZXNzYWdlLnZhbHVlID0gcmVzcG9uc2UubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdFR5cGUudmFsdWUgPSByZXNwb25zZS5zdWNjZXNzO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzZWxlY3RBbGwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoIXNlbGVjdEFsbFZhbHVlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGlkcyA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgT2JqZWN0LnZhbHVlcyhhY3Rpdml0aWVzLmRhdGEpLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlkcy5wdXNoKGFjdGl2aXRpZXMuZGF0YVtpXVsnaWQnXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTZWxlY3RlZEFjdGl2aXRpZXMnLCBpZHMpO1xuICAgICAgICAgICAgICAgIHNlbGVjdEFsbFZhbHVlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTZWxlY3RlZEFjdGl2aXRpZXMnLCBbXSk7XG4gICAgICAgICAgICAgICAgc2VsZWN0QWxsVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgZnVuY3Rpb24gdXBsb2FkRmlsZSgpIHtcbiAgICAgICAgICAgIGlmICgheGxzRGF0YS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgbG9hZGVyVGV4dC52YWx1ZSA9ICdGZXRjaGluZyAueGxzIGZpbGUnO1xuICAgICAgICAgICAgICAgIHZhciBhY3Rpdml0eSA9IGZpbGUudmFsdWUuZmlsZXMubGVuZ3RoID8gZmlsZS52YWx1ZS5maWxlc1swXSA6ICcnO1xuICAgICAgICAgICAgICAgIHZhciB4bHNUeXBlID0gdXBsb2FkVHlwZTtcbiAgICAgICAgICAgICAgICB2YXIgY29uZmlnID0ge1xuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnY29udGVudC10eXBlJzogJ211bHRpcGFydC9mb3JtLWRhdGEnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdmFyIGRhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZCgnYWN0aXZpdHknLCBhY3Rpdml0eSk7XG4gICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoJ3hsc1R5cGUnLCB4bHNUeXBlLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBlcnJvci52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAucG9zdCgnL2ltcG9ydC94bHMnLCBkYXRhLCBjb25maWcpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmlsZS52YWx1ZS5maWxlcy5sZW5ndGggJiYgKChfYSA9IHJlcyA9PT0gbnVsbCB8fCByZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlcy5kYXRhKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc3VjY2VzcykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrWGxzc3RhdHVzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvci52YWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzLmRhdGEuZXJyb3JzICYmIE9iamVjdC52YWx1ZXMocmVzLmRhdGEuZXJyb3JzKS5qb2luKCcgJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBlcnJvci52YWx1ZSA9ICdFcnJvciBoYXMgb2NjdXJlZCB3aGlsZSB1cGxvYWRpbmcgZmlsZS4nO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5maW5hbGx5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHVwbG9hZFR5cGUudmFsdWUgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgZmlsZS52YWx1ZS52YWx1ZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzaG93Q2FuY2VsTW9kZWwudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGZldGNoQWN0aXZpdGllcyhhY3RpdmVfcGFnZSwgZGlyZWN0aW9uKSB7XG4gICAgICAgICAgICBpZiAoZGlyZWN0aW9uID09PSB2b2lkIDApIHsgZGlyZWN0aW9uID0gJyc7IH1cbiAgICAgICAgICAgIHZhciBhcGlVcmwgPSBcIi9hY3Rpdml0aWVzL3BhZ2UvXCIuY29uY2F0KGFjdGl2ZV9wYWdlKTtcbiAgICAgICAgICAgIHZhciBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdsaW1pdCcsICc2Jyk7XG4gICAgICAgICAgICBpZiAoZGlyZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnb3JkZXJCeScsICd1cGRhdGVkX2F0Jyk7XG4gICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnZGlyZWN0aW9uJywgZGlyZWN0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzZWFyY2hWYWx1ZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ3EnLCBzZWFyY2hWYWx1ZS52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KGFwaVVybCwgeyBwYXJhbXM6IHBhcmFtcyB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGFjdGl2aXRpZXMsIHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgIGlzRW1wdHkudmFsdWUgPSAhcmVzcG9uc2UuZGF0YS5kYXRhLmxlbmd0aDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHZhciBjYW5jZWxJbXBvcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZGVsZXRlKFwiL2ltcG9ydC94bHNcIikudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgeGxzRGF0YS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHVwbG9hZFR5cGUudmFsdWUgPSBbXTtcbiAgICAgICAgICAgICAgICBmaWxlLnZhbHVlLnZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICBzaG93Q2FuY2VsTW9kZWwudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB0b2FzdFZpc2liaWxpdHkudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gKHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlKTsgfSwgMTUwMDApO1xuICAgICAgICAgICAgICAgIHRvYXN0TWVzc2FnZS52YWx1ZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgdG9hc3RUeXBlLnZhbHVlID0gcmVzcG9uc2Uuc3VjY2VzcztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgcG9sbGluZ0Zvclhsc1N0YXR1cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBjaGVja1N0YXR1cyA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KCcvaW1wb3J0L3hscy9zdGF0dXMnKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZSwgX2YsIF9nLCBfaCwgX2osIF9rLCBfbCwgX207XG4gICAgICAgICAgICAgICAgICAgIGlmICgoKF9hID0gcmVzLmRhdGEuZGF0YSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm1lc3NhZ2UpID09PSAnU3RhcnRlZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vcmVzZXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsQ291bnQudmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkQ291bnQudmFsdWUgPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgeGxzRmFpbGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB4bHNGYWlsZWRNZXNzYWdlLnZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3RhbENvdW50LnZhbHVlID0gKF9iID0gcmVzLmRhdGEuZGF0YSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnRvdGFsX2NvdW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkQ291bnQudmFsdWUgPSAoX2MgPSByZXMuZGF0YS5kYXRhKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MucHJvY2Vzc2VkX2NvdW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgeGxzRmFpbGVkLnZhbHVlID0gISgoX2QgPSByZXMuZGF0YS5kYXRhKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Quc3VjY2Vzcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB4bHNGYWlsZWRNZXNzYWdlLnZhbHVlID0gKF9lID0gcmVzLmRhdGEuZGF0YSkgPT09IG51bGwgfHwgX2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9lLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCgoX2YgPSByZXMuZGF0YS5kYXRhKSA9PT0gbnVsbCB8fCBfZiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2YubWVzc2FnZSkgPT09ICdQcm9jZXNzaW5nJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2luZy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCEoKF9oID0gKF9nID0gcmVzLmRhdGEpID09PSBudWxsIHx8IF9nID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZy5kYXRhKSA9PT0gbnVsbCB8fCBfaCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2guc3VjY2VzcykgfHwgKChfayA9IChfaiA9IHJlcy5kYXRhKSA9PT0gbnVsbCB8fCBfaiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2ouZGF0YSkgPT09IG51bGwgfHwgX2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9rLm1lc3NhZ2UpID09PSAnQ29tcGxldGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrU3RhdHVzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoKChfbSA9IChfbCA9IHJlcy5kYXRhKSA9PT0gbnVsbCB8fCBfbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2wuZGF0YSkgPT09IG51bGwgfHwgX20gPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9tLm1lc3NhZ2UpID09PSAnQ29tcGxldGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cGxvYWRDb21wbGV0ZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sIDI1MDApO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgY2hlY2tYbHNzdGF0dXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KCcvaW1wb3J0L3hscy9wcm9ncmVzc19zdGF0dXMnKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lLCBfZiwgX2csIF9oO1xuICAgICAgICAgICAgICAgIHVwbG9hZENvbXBsZXRlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgYWN0aXZpdHlOYW1lLnZhbHVlID0gKF9iID0gKF9hID0gcmVzID09PSBudWxsIHx8IHJlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVzLmRhdGEpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zdGF0dXMpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBjdXJyZW50QWN0aXZpdHkudmFsdWUgPSBtYXBBY3Rpdml0eU5hbWUoYWN0aXZpdHlOYW1lLnZhbHVlKTtcbiAgICAgICAgICAgICAgICB4bHNEYXRhLnZhbHVlID0gT2JqZWN0LmtleXMocmVzLmRhdGEuc3RhdHVzKS5sZW5ndGggPiAwO1xuICAgICAgICAgICAgICAgIGlmICgoKF9kID0gKF9jID0gcmVzID09PSBudWxsIHx8IHJlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVzLmRhdGEpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5zdGF0dXMpID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC5zdGF0dXMpID09PSAnY29tcGxldGVkJykge1xuICAgICAgICAgICAgICAgICAgICB1cGxvYWRDb21wbGV0ZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKCgoX2YgPSAoX2UgPSByZXMgPT09IG51bGwgfHwgcmVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXMuZGF0YSkgPT09IG51bGwgfHwgX2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9lLnN0YXR1cykgPT09IG51bGwgfHwgX2YgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9mLnN0YXR1cykgPT09ICdmYWlsZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHhsc0ZhaWxlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHhsc0ZhaWxlZE1lc3NhZ2UudmFsdWUgPSAoX2ggPSAoX2cgPSByZXMgPT09IG51bGwgfHwgcmVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXMuZGF0YSkgPT09IG51bGwgfHwgX2cgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9nLnN0YXR1cykgPT09IG51bGwgfHwgX2ggPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9oLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKE9iamVjdC5rZXlzKHJlcy5kYXRhLnN0YXR1cykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL3Jlc2V0XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3RhbENvdW50LnZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NlZENvdW50LnZhbHVlID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHhsc0ZhaWxlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgeGxzRmFpbGVkTWVzc2FnZS52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9sbGluZ0Zvclhsc1N0YXR1cygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgneGxzRmFpbGVkTWVzc2FnZScsIHhsc0ZhaWxlZE1lc3NhZ2UpO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ2FjdGl2aXR5TGVuZ3RoJywgYWN0aXZpdHlMZW5ndGgpO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ2NvbXBsZXRlZCcsIHVwbG9hZENvbXBsZXRlKTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCdwcm9jZXNzaW5nJywgcHJvY2Vzc2luZyk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuY29tcGxldGVYbHNEb3dubG9hZDsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBkb3dubG9hZENvbXBsZXRlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJ0WGxzRG93bmxvYWQnLCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uVW5tb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB4bHNJbmRpY2F0b3JNb3VudGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBmZXRjaEFjdGl2aXRpZXMoMSk7XG4gICAgICAgICAgICBjaGVja1hsc3N0YXR1cygpO1xuICAgICAgICAgICAgY2hlY2tEb3dubG9hZFN0YXR1cygpO1xuICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXMudmFsdWUgPVxuICAgICAgICAgICAgICAgIHBhLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzICYmIE9iamVjdC5rZXlzKHBhLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzKTtcbiAgICAgICAgICAgIHhsc0luZGljYXRvck1vdW50ZWQudmFsdWUgPSB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCd4bHNGYWlsZWRNZXNzYWdlJywgeGxzRmFpbGVkTWVzc2FnZSk7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgnYWN0aXZpdHlMZW5ndGgnLCBhY3Rpdml0eUxlbmd0aCk7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgneGxzSW5kaWNhdG9yTW91bnRlZCcsIHhsc0luZGljYXRvck1vdW50ZWQpO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ2Rvd25sb2FkaW5nJywgZG93bmxvYWRpbmcpO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ3hsc0Rvd25sb2FkU3RhdHVzJywgeGxzRG93bmxvYWRTdGF0dXMpO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ2Rvd25sb2FkQXBpVXJsJywgZG93bmxvYWRBcGlVcmwpO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ2FjdGl2aXRpZXMnLCBwdWJsaXNoaW5nQWN0aXZpdGllcyk7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgnZmlsZUNvdW50JywgZmlsZUNvdW50KTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgeGxzSW5kaWNhdG9yTW91bnRlZDogeGxzSW5kaWNhdG9yTW91bnRlZCwgeGxzRmFpbGVkTWVzc2FnZTogeGxzRmFpbGVkTWVzc2FnZSwgdXBsb2FkVHlwZTogdXBsb2FkVHlwZSwgc2hvd0Rvd25sb2FkRHJvcGRvd246IHNob3dEb3dubG9hZERyb3Bkb3duLCBhY3Rpdml0eU5hbWU6IGFjdGl2aXR5TmFtZSwgZmlsZUNvdW50OiBmaWxlQ291bnQsIHhsc0Rvd25sb2FkU3RhdHVzOiB4bHNEb3dubG9hZFN0YXR1cywgZG93bmxvYWRDb21wbGV0ZWQ6IGRvd25sb2FkQ29tcGxldGVkLCBwdWJsaXNoaW5nQWN0aXZpdGllczogcHVibGlzaGluZ0FjdGl2aXRpZXMsIHRvYXN0TWVzc2FnZTogdG9hc3RNZXNzYWdlLCB0b2FzdFR5cGU6IHRvYXN0VHlwZSwgc2hvd0Rvd25sb2FkQ29kZTogc2hvd0Rvd25sb2FkQ29kZSwgaXNFbXB0eTogaXNFbXB0eSwgeGxzRmFpbGVkOiB4bHNGYWlsZWQsIGN1cnJlbnRBY3Rpdml0eTogY3VycmVudEFjdGl2aXR5LCB0b2FzdFZpc2liaWxpdHk6IHRvYXN0VmlzaWJpbGl0eSwgeGxzRGF0YTogeGxzRGF0YSwgc2hvd0NhbmNlbE1vZGVsOiBzaG93Q2FuY2VsTW9kZWwsIGFjdGl2aXRpZXM6IGFjdGl2aXRpZXMsIHNlbGVjdEFsbFZhbHVlOiBzZWxlY3RBbGxWYWx1ZSwgdXBsb2FkQ29tcGxldGU6IHVwbG9hZENvbXBsZXRlLCB0b3RhbENvdW50OiB0b3RhbENvdW50LCBwcm9jZXNzZWRDb3VudDogcHJvY2Vzc2VkQ291bnQsIGZpbGU6IGZpbGUsIGVycm9yOiBlcnJvciwgbG9hZGVyOiBsb2FkZXIsIGxvYWRlclRleHQ6IGxvYWRlclRleHQsIHN0b3JlOiBzdG9yZSwgc2VhcmNoVmFsdWU6IHNlYXJjaFZhbHVlLCBkaXJlY3Rpb246IGRpcmVjdGlvbiwgcHJvY2Vzc2luZzogcHJvY2Vzc2luZywgc29ydGluZ0RpcmVjdGlvbjogc29ydGluZ0RpcmVjdGlvbiwgZG93bmxvYWRBcGlVcmw6IGRvd25sb2FkQXBpVXJsLCBkb3dubG9hZGluZzogZG93bmxvYWRpbmcsIHBhOiBwYSwgbWFwQWN0aXZpdHlOYW1lOiBtYXBBY3Rpdml0eU5hbWUsIGFjdGl2aXR5TGVuZ3RoOiBhY3Rpdml0eUxlbmd0aCwgY2hlY2tEb3dubG9hZFN0YXR1czogY2hlY2tEb3dubG9hZFN0YXR1cywgZG93bmxvYWRDb2RlOiBkb3dubG9hZENvZGUsIGltcG9ydEFueXdheTogaW1wb3J0QW55d2F5LCBzZWxlY3RBbGw6IHNlbGVjdEFsbCwgdXBsb2FkRmlsZTogdXBsb2FkRmlsZSwgZmV0Y2hBY3Rpdml0aWVzOiBmZXRjaEFjdGl2aXRpZXMsIGNhbmNlbEltcG9ydDogY2FuY2VsSW1wb3J0LCBwb2xsaW5nRm9yWGxzU3RhdHVzOiBwb2xsaW5nRm9yWGxzU3RhdHVzLCBjaGVja1hsc3N0YXR1czogY2hlY2tYbHNzdGF0dXMsIEJ0bkNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQsIEhvdmVyVGV4dDogSG92ZXJUZXh0X3Z1ZV8xLmRlZmF1bHQsIExvYWRlcjogUHJvZ3Jlc3NMb2FkZXJfdnVlXzEuZGVmYXVsdCwgWGxzVXBsb2FkSW5kaWNhdG9yOiBYbHNVcGxvYWRJbmRpY2F0b3JfdnVlXzEuZGVmYXVsdCwgTW9kYWw6IFBvcHVwTW9kYWxfdnVlXzEuZGVmYXVsdCwgVG9hc3Q6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0LCBkYXRlRm9ybWF0OiBkYXRlRm9ybWF0XzEuZGVmYXVsdCwgUGFnaW5hdGlvbjogVGFibGVQYWdpbmF0aW9uX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgQnV0dG9uQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWVcIikpO1xudmFyIFByb2dyZXNzTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1Byb2dyZXNzTG9hZGVyLnZ1ZVwiKSk7XG52YXIgSW1wb3J0UGxhY2Vob2xkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vSW1wb3J0UGxhY2Vob2xkZXIudnVlXCIpKTtcbnZhciBMaXN0RWxlbWVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9MaXN0RWxlbWVudC52dWVcIikpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdJbXBvcnRMaXN0JyxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIGFjdGl2aXRpZXMgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHt9KTtcbiAgICAgICAgdmFyIHNlbGVjdGVkQWN0aXZpdGllcyA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoW10pO1xuICAgICAgICB2YXIgc2VsZWN0ZWRDb3VudCA9ICgwLCB2dWVfMi5yZWYpKDApO1xuICAgICAgICB2YXIgYWN0aXZpdGllc0xlbmd0aCA9ICgwLCB2dWVfMi5yZWYpKDApO1xuICAgICAgICB2YXIgbG9hZGVyID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2VsZWN0QWxsID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgbG9hZGVyVGV4dCA9ICgwLCB2dWVfMi5yZWYpKGxhbmd1YWdlLmNvbW1vbl9sYW5nLnBsZWFzZV93YWl0KTtcbiAgICAgICAgdmFyIHRhYmxlUm93ID0gKDAsIHZ1ZV8yLnJlZikoe30pO1xuICAgICAgICB2YXIgdGFibGVXaWR0aCA9ICgwLCB2dWVfMi5yZWYpKHt9KTtcbiAgICAgICAgdmFyIHRpbWVyO1xuICAgICAgICB2YXIgZ2V0RGltZW5zaW9ucyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIFs0IC8qeWllbGQqLywgKDAsIHZ1ZV8yLm5leHRUaWNrKSgpXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVXaWR0aC52YWx1ZSA9IHRhYmxlUm93ID09PSBudWxsIHx8IHRhYmxlUm93ID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0YWJsZVJvdy52YWx1ZVsnMCddLmNsaWVudFdpZHRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uVW5tb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgZ2V0RGltZW5zaW9ucyk7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgZ2V0RGltZW5zaW9ucyk7XG4gICAgICAgICAgICBsb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgbG9hZGVyVGV4dC52YWx1ZSA9IGxhbmd1YWdlLmNvbW1vbl9sYW5nLnBsZWFzZV93YWl0O1xuICAgICAgICAgICAgdmFyIGNvdW50ID0gMDtcbiAgICAgICAgICAgIHRpbWVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAuZ2V0KCcvaW1wb3J0L2NoZWNrX3N0YXR1cycpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihhY3Rpdml0aWVzLCByZXMuZGF0YS5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZpdGllc0xlbmd0aC52YWx1ZSA9IHJlcy5kYXRhLmRhdGEubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEuc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5zdGF0dXMgPT09ICdlcnJvcicgfHwgKCFyZXMuZGF0YS5kYXRhICYmIGNvdW50ID49IDQwKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvYWN0aXZpdGllcyc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChnZXREaW1lbnNpb25zLCAyMDApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvYWN0aXZpdGllcyc7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LCAzMDAwKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZVNlbGVjdGVkQWN0aXZpdGllcyhhY3Rpdml0eV9pZCkge1xuICAgICAgICAgICAgdmFyIGluZGV4ID0gc2VsZWN0ZWRBY3Rpdml0aWVzLmluZGV4T2YoYWN0aXZpdHlfaWQpO1xuICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGFjdGl2aXRpZXNbYWN0aXZpdHlfaWRdWydlcnJvcnMnXSkuaW5kZXhPZignY3JpdGljYWwnKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEFjdGl2aXRpZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudC52YWx1ZSA9IHNlbGVjdGVkQ291bnQudmFsdWUgLSAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRBY3Rpdml0aWVzLnB1c2goYWN0aXZpdHlfaWQpO1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZENvdW50LnZhbHVlID0gc2VsZWN0ZWRDb3VudC52YWx1ZSArIDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHNlbGVjdEFsbEFjdGl2aXRpZXMoKSB7XG4gICAgICAgICAgICBzZWxlY3RBbGwudmFsdWUgPSAhc2VsZWN0QWxsLnZhbHVlO1xuICAgICAgICAgICAgc2VsZWN0ZWRDb3VudC52YWx1ZSA9IDA7XG4gICAgICAgICAgICBzZWxlY3RlZEFjdGl2aXRpZXMubGVuZ3RoID0gMDtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGFjdGl2aXRpZXMpLmZvckVhY2goZnVuY3Rpb24gKGFjdGl2aXR5X2lkKSB7XG4gICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gc2VsZWN0ZWRBY3Rpdml0aWVzLmluZGV4T2YoYWN0aXZpdHlfaWQpO1xuICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhhY3Rpdml0aWVzW2FjdGl2aXR5X2lkXVsnZXJyb3JzJ10pLmluZGV4T2YoJ2NyaXRpY2FsJykgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RBbGwudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQWN0aXZpdGllcy5wdXNoKGFjdGl2aXR5X2lkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQ291bnQudmFsdWUgPSBzZWxlY3RlZENvdW50LnZhbHVlICsgMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQWN0aXZpdGllcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoIXNlbGVjdEFsbC52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ291bnQudmFsdWUgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGltcG9ydEFjdGl2aXRpZXMoKSB7XG4gICAgICAgICAgICBsb2FkZXJUZXh0LnZhbHVlID0gbGFuZ3VhZ2UuY29tbW9uX2xhbmcuaW1wb3J0aW5nX2Nzdl94bWxfZmlsZTtcbiAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucG9zdCgnL2ltcG9ydC9hY3Rpdml0eScsIHtcbiAgICAgICAgICAgICAgICBhY3Rpdml0aWVzOiBzZWxlY3RlZEFjdGl2aXRpZXMsXG4gICAgICAgICAgICAgICAgZmlsZXR5cGU6ICdjc3YnLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2FjdGl2aXRpZXMnO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9hY3Rpdml0aWVzJztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGxhbmd1YWdlOiBsYW5ndWFnZSwgYWN0aXZpdGllczogYWN0aXZpdGllcywgc2VsZWN0ZWRBY3Rpdml0aWVzOiBzZWxlY3RlZEFjdGl2aXRpZXMsIHNlbGVjdGVkQ291bnQ6IHNlbGVjdGVkQ291bnQsIGFjdGl2aXRpZXNMZW5ndGg6IGFjdGl2aXRpZXNMZW5ndGgsIGxvYWRlcjogbG9hZGVyLCBzZWxlY3RBbGw6IHNlbGVjdEFsbCwgbG9hZGVyVGV4dDogbG9hZGVyVGV4dCwgdGFibGVSb3c6IHRhYmxlUm93LCB0YWJsZVdpZHRoOiB0YWJsZVdpZHRoLCB0aW1lcjogdGltZXIsIGdldERpbWVuc2lvbnM6IGdldERpbWVuc2lvbnMsIHVwZGF0ZVNlbGVjdGVkQWN0aXZpdGllczogdXBkYXRlU2VsZWN0ZWRBY3Rpdml0aWVzLCBzZWxlY3RBbGxBY3Rpdml0aWVzOiBzZWxlY3RBbGxBY3Rpdml0aWVzLCBpbXBvcnRBY3Rpdml0aWVzOiBpbXBvcnRBY3Rpdml0aWVzLCBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LCBMb2FkZXI6IFByb2dyZXNzTG9hZGVyX3Z1ZV8xLmRlZmF1bHQsIFBsYWNlaG9sZGVyOiBJbXBvcnRQbGFjZWhvbGRlcl92dWVfMS5kZWZhdWx0LCBMaXN0RWxlbWVudDogTGlzdEVsZW1lbnRfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgU2hpbW1lckxvYWRpbmdfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvU2hpbW1lckxvYWRpbmcudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdJbXBvcnRQbGFjZWhvbGRlcicsXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgU2hpbW1lcjogU2hpbW1lckxvYWRpbmdfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0xpc3RFbGVtZW50JyxcbiAgICBwcm9wczoge1xuICAgICAgICBhY3Rpdml0eToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGluZGV4OiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgd2lkdGg6IHsgdHlwZTogTnVtYmVyLCByZXF1aXJlZDogZmFsc2UsIGRlZmF1bHQ6IDAgfSxcbiAgICAgICAgc2VsZWN0ZWRBY3Rpdml0aWVzOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIGVtaXRzOiBbJ3NlbGVjdEVsZW1lbnQnXSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2UsIGVtaXQgPSBfYS5lbWl0O1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciBhY3RpdmUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93Q3JpdGljYWwgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93RXJyb3IgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93V2FybmluZyA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGFjdGl2aXRpZXMgPSAoMCwgdnVlXzIucmVhY3RpdmUpKFtdKTtcbiAgICAgICAgdmFyIGNyaXRpY2FsVG9nZ2xlID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgZXJyb3JUb2dnbGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB3YXJuaW5nVG9nZ2xlID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICBmdW5jdGlvbiB0b2dnbGVFcnJvcigpIHtcbiAgICAgICAgICAgIGFjdGl2ZS52YWx1ZSA9ICFhY3RpdmUudmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHNlbGVjdEVsZW1lbnQgPSBmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICAgICAgICAgIGVtaXQoJ3NlbGVjdEVsZW1lbnQnLCBpbmRleCk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjb3VudEVycm9ycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBjb3VudCA9IDA7XG4gICAgICAgICAgICBmb3IgKHZhciB0eXBlIGluIHByb3BzLmFjdGl2aXR5WydlcnJvcnMnXSkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGluZGV4IGluIHByb3BzLmFjdGl2aXR5WydlcnJvcnMnXVt0eXBlXSkge1xuICAgICAgICAgICAgICAgICAgICBjb3VudCArPSBPYmplY3Qua2V5cyhwcm9wcy5hY3Rpdml0eVsnZXJyb3JzJ11bdHlwZV1baW5kZXhdKS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvdW50O1xuICAgICAgICB9O1xuICAgICAgICB2YXIgY3JpdGljYWxBY2NvcmRpb25Ub2dnbGUgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgc2hvd0NyaXRpY2FsLnZhbHVlID0gIXNob3dDcml0aWNhbC52YWx1ZTtcbiAgICAgICAgICAgIHZhciBjdXJyZW50VGFyZ2V0ID0gZS5jdXJyZW50VGFyZ2V0O1xuICAgICAgICAgICAgdmFyIHRhcmdldCA9IGN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuY3JpdGljYWwtZHJvcGRvd24tY29udGFpbmVyJyk7XG4gICAgICAgICAgICB2YXIgZWxIZWlnaHQgPSAoX2EgPSB0YXJnZXQgPT09IG51bGwgfHwgdGFyZ2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0YXJnZXQucXVlcnlTZWxlY3RvcignLmNyaXRpY2FsLWRyb3Bkb3duJykpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jbGllbnRIZWlnaHQ7XG4gICAgICAgICAgICBpZiAoY3JpdGljYWxUb2dnbGUudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgICAgICAgICAgICAgIGNyaXRpY2FsVG9nZ2xlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IFwiLmNvbmNhdChlbEhlaWdodCwgXCJweDtcIik7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogYXV0bztcIjtcbiAgICAgICAgICAgICAgICAgICAgfSwgNjAwKTtcbiAgICAgICAgICAgICAgICAgICAgY3JpdGljYWxUb2dnbGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGVycm9yQWNjb3JkaW9uVG9nZ2xlID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHNob3dFcnJvci52YWx1ZSA9ICFzaG93RXJyb3IudmFsdWU7XG4gICAgICAgICAgICB2YXIgY3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldDtcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSBjdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignLmVycm9yLWRyb3Bkb3duLWNvbnRhaW5lcicpO1xuICAgICAgICAgICAgdmFyIGVsSGVpZ2h0ID0gKF9hID0gdGFyZ2V0ID09PSBudWxsIHx8IHRhcmdldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGFyZ2V0LnF1ZXJ5U2VsZWN0b3IoJy5lcnJvci1kcm9wZG93bicpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2xpZW50SGVpZ2h0O1xuICAgICAgICAgICAgaWYgKGVycm9yVG9nZ2xlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IFwiLmNvbmNhdChlbEhlaWdodCwgXCJweDtcIik7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgICAgICAgICBlcnJvclRvZ2dsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBcIi5jb25jYXQoZWxIZWlnaHQsIFwicHg7XCIpO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IGF1dG87XCI7XG4gICAgICAgICAgICAgICAgICAgIH0sIDYwMCk7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yVG9nZ2xlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBlcnJvckxlbmd0aCA9IGZ1bmN0aW9uIChjdXJyZW50RXJyb3IpIHtcbiAgICAgICAgICAgIHZhciBjb3VudCA9IDA7XG4gICAgICAgICAgICAvLyBpZiAoT2JqZWN0LmtleXMocHJvcHMuYWN0aXZpdHkpLmluZGV4T2YoJ2Vycm9ycycpICE9PSAtMSkge1xuICAgICAgICAgICAgT2JqZWN0LnZhbHVlcyhwcm9wcy5hY3Rpdml0eVsnZXJyb3JzJ11bY3VycmVudEVycm9yXSkubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgICAgICAgY291bnQgKz0gT2JqZWN0LmtleXMoaXRlbSkubGVuZ3RoO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICByZXR1cm4gY291bnQ7XG4gICAgICAgIH07XG4gICAgICAgIHZhciB3YXJuaW5nQWNjb3JkaW9uVG9nZ2xlID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHNob3dXYXJuaW5nLnZhbHVlID0gIXNob3dXYXJuaW5nLnZhbHVlO1xuICAgICAgICAgICAgdmFyIGN1cnJlbnRUYXJnZXQgPSBlLmN1cnJlbnRUYXJnZXQ7XG4gICAgICAgICAgICB2YXIgdGFyZ2V0ID0gY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy53YXJuaW5nLWRyb3Bkb3duLWNvbnRhaW5lcicpO1xuICAgICAgICAgICAgdmFyIGVsSGVpZ2h0ID0gKF9hID0gdGFyZ2V0ID09PSBudWxsIHx8IHRhcmdldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGFyZ2V0LnF1ZXJ5U2VsZWN0b3IoJy53YXJuaW5nLWRyb3Bkb3duJykpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jbGllbnRIZWlnaHQ7XG4gICAgICAgICAgICBpZiAod2FybmluZ1RvZ2dsZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBcIi5jb25jYXQoZWxIZWlnaHQsIFwicHg7XCIpO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgICAgICAgICAgICAgd2FybmluZ1RvZ2dsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBcIi5jb25jYXQoZWxIZWlnaHQsIFwicHg7XCIpO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IGF1dG87XCI7XG4gICAgICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgICAgICAgICAgICAgIHdhcm5pbmdUb2dnbGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBwcm9wcy5zZWxlY3RlZEFjdGl2aXRpZXM7IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBzZWxlY3RlZERhdGEgPSBKU09OLnBhcnNlKHByb3BzLnNlbGVjdGVkQWN0aXZpdGllcyk7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWREYXRhLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oYWN0aXZpdGllcywgc2VsZWN0ZWREYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGFjdGl2aXRpZXMubGVuZ3RoID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGxhbmd1YWdlOiBsYW5ndWFnZSwgcHJvcHM6IHByb3BzLCBlbWl0OiBlbWl0LCBhY3RpdmU6IGFjdGl2ZSwgc2hvd0NyaXRpY2FsOiBzaG93Q3JpdGljYWwsIHNob3dFcnJvcjogc2hvd0Vycm9yLCBzaG93V2FybmluZzogc2hvd1dhcm5pbmcsIGFjdGl2aXRpZXM6IGFjdGl2aXRpZXMsIGNyaXRpY2FsVG9nZ2xlOiBjcml0aWNhbFRvZ2dsZSwgZXJyb3JUb2dnbGU6IGVycm9yVG9nZ2xlLCB3YXJuaW5nVG9nZ2xlOiB3YXJuaW5nVG9nZ2xlLCB0b2dnbGVFcnJvcjogdG9nZ2xlRXJyb3IsIHNlbGVjdEVsZW1lbnQ6IHNlbGVjdEVsZW1lbnQsIGNvdW50RXJyb3JzOiBjb3VudEVycm9ycywgY3JpdGljYWxBY2NvcmRpb25Ub2dnbGU6IGNyaXRpY2FsQWNjb3JkaW9uVG9nZ2xlLCBlcnJvckFjY29yZGlvblRvZ2dsZTogZXJyb3JBY2NvcmRpb25Ub2dnbGUsIGVycm9yTGVuZ3RoOiBlcnJvckxlbmd0aCwgd2FybmluZ0FjY29yZGlvblRvZ2dsZTogd2FybmluZ0FjY29yZGlvblRvZ2dsZSB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIFhsc0xpc3RFcnJvcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9YbHNMaXN0RXJyb3IudnVlXCIpKTtcbnZhciBQb3B1cE1vZGFsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1BvcHVwTW9kYWwudnVlXCIpKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBQcm9ncmVzc0xvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWVcIikpO1xudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdYbHNMaXN0JyxcbiAgICBwcm9wczoge1xuICAgICAgICBzdGF0dXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICAvLyBOdW1iZXIgd2l0aCBhIGRlZmF1bHQgdmFsdWVcbiAgICAgICAgaW1wb3J0RGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGdsb2JhbEVycm9yOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3JDb3VudDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgc2VsZWN0QWxsID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc29ydE9yZGVyID0gKDAsIHZ1ZV8yLnJlZikoJ2FzY2VkaW5nJyk7XG4gICAgICAgIHZhciB0YWJsZVJvdyA9ICgwLCB2dWVfMi5yZWYpKHt9KTtcbiAgICAgICAgdmFyIHNob3dDcml0aWNhbEVycm9yTW9kZWwgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93SWRlbnRpZmllckVycm9yTW9kZWwgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBsb2FkZXIgPSAoMCwgdnVlXzIucmVmKShmYWxzZSksIGxvYWRlclRleHQgPSAoMCwgdnVlXzIucmVmKSgnQWRkaW5nIGFjdGl2aXRpZXMnKTtcbiAgICAgICAgdmFyIHNob3dDcml0aWNhbEVycm9yTWVzc2FnZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNob3dHTG9iYWxFcnJvciA9ICgwLCB2dWVfMi5yZWYpKHRydWUpO1xuICAgICAgICB2YXIgc2VsZWN0ZWRDb3VudCA9ICgwLCB2dWVfMi5yZWYpKDApO1xuICAgICAgICB2YXIgYWN0aXZpdGllc0xlbmd0aCA9ICgwLCB2dWVfMi5yZWYpKDApO1xuICAgICAgICB2YXIgc2VsZWN0ZWRBY3Rpdml0aWVzID0gKDAsIHZ1ZV8yLnJlZikoW10pO1xuICAgICAgICB2YXIgdGFibGVXaWR0aCA9ICgwLCB2dWVfMi5yZWYpKHt9KTtcbiAgICAgICAgdmFyIHRvYXN0TWVzc2FnZSA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIHRvYXN0VHlwZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHRvYXN0VmlzaWJpbGl0eSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGdldERpbWVuc2lvbnMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9iKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfYi5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6IHJldHVybiBbNCAvKnlpZWxkKi8sICgwLCB2dWVfMi5uZXh0VGljaykoKV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIF9iLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlV2lkdGgudmFsdWUgPSAoX2EgPSB0YWJsZVJvdyA9PT0gbnVsbCB8fCB0YWJsZVJvdyA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGFibGVSb3cudmFsdWVbJzAnXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNsaWVudFdpZHRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfTtcbiAgICAgICAgdmFyIHNvcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzb3J0T3JkZXIudmFsdWUgPT09ICdhc2NlbmRpbmcnXG4gICAgICAgICAgICAgICAgPyAoc29ydE9yZGVyLnZhbHVlID0gJ2Rlc2NlbmRpbmcnKVxuICAgICAgICAgICAgICAgIDogKHNvcnRPcmRlci52YWx1ZSA9ICdhc2NlbmRpbmcnKTtcbiAgICAgICAgICAgIHZhciBzb3J0ZWREYXRhID0gcHJvcHMuaW1wb3J0RGF0YTtcbiAgICAgICAgICAgIHN3aXRjaCAocHJvcHMuc3RhdHVzWyd0ZW1wbGF0ZSddKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnYWN0aXZpdHknOlxuICAgICAgICAgICAgICAgICAgICBzb3J0ZWREYXRhLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhLmRhdGEudGl0bGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLmRhdGEudGl0bGVbMF0ubmFycmF0aXZlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA8IGIuZGF0YS50aXRsZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIuZGF0YS50aXRsZVswXS5uYXJyYXRpdmUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAtMTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3Jlc3VsdCc6XG4gICAgICAgICAgICAgICAgICAgIHNvcnRlZERhdGEuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEuZGF0YS50aXRsZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuZGF0YS50aXRsZVswXS5uYXJyYXRpdmVbMF1bJ25hcnJhdGl2ZSddLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIuZGF0YS50aXRsZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIuZGF0YS50aXRsZVswXS5uYXJyYXRpdmVbMF1bJ25hcnJhdGl2ZSddLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogLTE7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdwZXJpb2QnOlxuICAgICAgICAgICAgICAgICAgICBzb3J0ZWREYXRhLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhLmRhdGEudGl0bGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLmRhdGEudGl0bGVbMF0ubmFycmF0aXZlWzBdWyduYXJyYXRpdmUnXS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiLmRhdGEudGl0bGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiLmRhdGEudGl0bGVbMF0ubmFycmF0aXZlWzBdWyduYXJyYXRpdmUnXS50b1N0cmluZygpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IC0xO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnaW5kaWNhdG9yJzpcbiAgICAgICAgICAgICAgICAgICAgc29ydGVkRGF0YS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5kYXRhLnRpdGxlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZVswXVsnbmFycmF0aXZlJ10udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpIDxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYi5kYXRhLnRpdGxlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYi5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZVswXVsnbmFycmF0aXZlJ10udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAtMTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIub25Vbm1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBnZXREaW1lbnNpb25zKTtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGdldERpbWVuc2lvbnMoKTtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBnZXREaW1lbnNpb25zKTtcbiAgICAgICAgICAgIGNoZWNrQ3JpdGljYWxFcnJvcigpO1xuICAgICAgICAgICAgaWYgKHByb3BzLmdsb2JhbEVycm9yKSB7XG4gICAgICAgICAgICAgICAgc2hvd0lkZW50aWZpZXJFcnJvck1vZGVsLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFjdGl2aXRpZXNMZW5ndGgudmFsdWUgPSBwcm9wcy5pbXBvcnREYXRhLmxlbmd0aDtcbiAgICAgICAgICAgIGxvYWRlclRleHQudmFsdWUgPSBcIkFkZGluZyBcIi5jb25jYXQocHJvcHMuc3RhdHVzLnRlbXBsYXRlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBjYW5jZWxJbXBvcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzaG93Q3JpdGljYWxFcnJvck1vZGVsLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICBzaG93R0xvYmFsRXJyb3IudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5kZWxldGUoXCIvaW1wb3J0L3hsc1wiKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB0b2FzdFZpc2liaWxpdHkudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gKHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlKTsgfSwgMTUwMDApO1xuICAgICAgICAgICAgICAgIHRvYXN0TWVzc2FnZS52YWx1ZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgdG9hc3RUeXBlLnZhbHVlID0gcmVzcG9uc2Uuc3VjY2VzcztcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2ltcG9ydC94bHMnO1xuICAgICAgICAgICAgICAgIH0sIDIwMDApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBkb3dubG9hZElkZW50aWZpZXJFcnJvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB0ZXh0O1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wcy5nbG9iYWxFcnJvciA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICB0ZXh0ID0gT2JqZWN0LnZhbHVlcyhwcm9wcy5nbG9iYWxFcnJvcikuam9pbignXFxuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgZmlsZSA9IG5ldyBGaWxlKFsnXFx1ZmVmZicgKyB0ZXh0XSwgJ2lkZW50aWZpZXItZXJyb3JzLnR4dCcsIHtcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dC9wbGFpbjpjaGFyc2V0PVVURi04JyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdmFyIHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpO1xuICAgICAgICAgICAgdmFyIGFuY2hvclRhZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgIGFuY2hvclRhZy5ocmVmID0gdXJsO1xuICAgICAgICAgICAgYW5jaG9yVGFnLmRvd25sb2FkID0gZmlsZS5uYW1lO1xuICAgICAgICAgICAgYW5jaG9yVGFnLmNsaWNrKCk7XG4gICAgICAgICAgICB3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgY2hlY2tDcml0aWNhbEVycm9yID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgdmFyIGNyaXRpY2FsQXJyeSA9IHByb3BzLmltcG9ydERhdGEgJiZcbiAgICAgICAgICAgICAgICBwcm9wcy5pbXBvcnREYXRhLm1hcChmdW5jdGlvbiAoZGF0YSwgaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yTGVuZ3RoKCdjcml0aWNhbCcsIGluZGV4KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHZhciB0b3RhbENyaXJpY2FsRXJyb3JDb3VudCA9IDA7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNyaXRpY2FsQXJyeS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHRvdGFsQ3JpcmljYWxFcnJvckNvdW50ICs9IGNyaXRpY2FsQXJyeVtpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0b3RhbENyaXJpY2FsRXJyb3JDb3VudCA+IDApIHtcbiAgICAgICAgICAgICAgICBzaG93Q3JpdGljYWxFcnJvck1lc3NhZ2UudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRvdGFsQ3JpcmljYWxFcnJvckNvdW50ID4gMCB8fCAoKF9hID0gcHJvcHMuZ2xvYmFsRXJyb3IpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGgpID4gMCkge1xuICAgICAgICAgICAgICAgIHNob3dDcml0aWNhbEVycm9yTW9kZWwudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgY291bnRFcnJvcnMgPSBmdW5jdGlvbiAoYWN0aXZpdHlJbmRleCkge1xuICAgICAgICAgICAgdmFyIGNvdW50ID0gMDtcbiAgICAgICAgICAgIGZvciAodmFyIHR5cGUgaW4gcHJvcHMuaW1wb3J0RGF0YVthY3Rpdml0eUluZGV4XVsnZXJyb3JzJ10pIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpbmRleCBpbiBwcm9wcy5pbXBvcnREYXRhW2FjdGl2aXR5SW5kZXhdWydlcnJvcnMnXVt0eXBlXSkge1xuICAgICAgICAgICAgICAgICAgICBjb3VudCArPSBPYmplY3Qua2V5cyhwcm9wcy5pbXBvcnREYXRhW2FjdGl2aXR5SW5kZXhdWydlcnJvcnMnXVt0eXBlXVtpbmRleF0pLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY291bnQ7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBhZGRBY3Rpdml0aWVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHNlbGVjdGVkQWN0aXZpdGllcy52YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgLnBvc3QoXCIvaW1wb3J0L3hscy9hY3Rpdml0eVwiLCB7IGFjdGl2aXRpZXM6IHNlbGVjdGVkQWN0aXZpdGllcy52YWx1ZSB9KVxuICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9hY3Rpdml0aWVzJztcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGVycm9yTGVuZ3RoID0gZnVuY3Rpb24gKGVycm9yVHlwZSwgYWN0aXZpdHlJbmRleCkge1xuICAgICAgICAgICAgdmFyIGNvdW50ID0gMDtcbiAgICAgICAgICAgIGZvciAodmFyIGluZGV4IGluIHByb3BzLmltcG9ydERhdGFbYWN0aXZpdHlJbmRleF1bJ2Vycm9ycyddW2Vycm9yVHlwZV0pIHtcbiAgICAgICAgICAgICAgICBjb3VudCArPSBPYmplY3Qua2V5cyhwcm9wcy5pbXBvcnREYXRhW2FjdGl2aXR5SW5kZXhdWydlcnJvcnMnXVtlcnJvclR5cGVdW2luZGV4XSkubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvdW50O1xuICAgICAgICB9O1xuICAgICAgICBmdW5jdGlvbiBzZWxlY3RBbGxBY3Rpdml0aWVzKCkge1xuICAgICAgICAgICAgc2VsZWN0QWxsLnZhbHVlID0gIXNlbGVjdEFsbC52YWx1ZTtcbiAgICAgICAgICAgIHNlbGVjdGVkQ291bnQudmFsdWUgPSAwO1xuICAgICAgICAgICAgc2VsZWN0ZWRBY3Rpdml0aWVzLnZhbHVlLmxlbmd0aCA9IDA7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhwcm9wcy5pbXBvcnREYXRhKS5mb3JFYWNoKGZ1bmN0aW9uIChhY3Rpdml0eV9pZCkge1xuICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHNlbGVjdGVkQWN0aXZpdGllcy52YWx1ZS5pbmRleE9mKGFjdGl2aXR5X2lkKTtcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMocHJvcHMuaW1wb3J0RGF0YVthY3Rpdml0eV9pZF1bJ2Vycm9ycyddKS5pbmRleE9mKCdjcml0aWNhbCcpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0QWxsLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEFjdGl2aXRpZXMudmFsdWUucHVzaChhY3Rpdml0eV9pZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZENvdW50LnZhbHVlID0gc2VsZWN0ZWRDb3VudC52YWx1ZSArIDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEFjdGl2aXRpZXMudmFsdWUuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKCFzZWxlY3RBbGwudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZENvdW50LnZhbHVlID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBzZWxlY3RBbGw6IHNlbGVjdEFsbCwgc29ydE9yZGVyOiBzb3J0T3JkZXIsIHRhYmxlUm93OiB0YWJsZVJvdywgc2hvd0NyaXRpY2FsRXJyb3JNb2RlbDogc2hvd0NyaXRpY2FsRXJyb3JNb2RlbCwgc2hvd0lkZW50aWZpZXJFcnJvck1vZGVsOiBzaG93SWRlbnRpZmllckVycm9yTW9kZWwsIGxvYWRlcjogbG9hZGVyLCBsb2FkZXJUZXh0OiBsb2FkZXJUZXh0LCBzaG93Q3JpdGljYWxFcnJvck1lc3NhZ2U6IHNob3dDcml0aWNhbEVycm9yTWVzc2FnZSwgc2hvd0dMb2JhbEVycm9yOiBzaG93R0xvYmFsRXJyb3IsIHNlbGVjdGVkQ291bnQ6IHNlbGVjdGVkQ291bnQsIGFjdGl2aXRpZXNMZW5ndGg6IGFjdGl2aXRpZXNMZW5ndGgsIHNlbGVjdGVkQWN0aXZpdGllczogc2VsZWN0ZWRBY3Rpdml0aWVzLCB0YWJsZVdpZHRoOiB0YWJsZVdpZHRoLCB0b2FzdE1lc3NhZ2U6IHRvYXN0TWVzc2FnZSwgdG9hc3RUeXBlOiB0b2FzdFR5cGUsIHRvYXN0VmlzaWJpbGl0eTogdG9hc3RWaXNpYmlsaXR5LCBwcm9wczogcHJvcHMsIGdldERpbWVuc2lvbnM6IGdldERpbWVuc2lvbnMsIHNvcnQ6IHNvcnQsIGNhbmNlbEltcG9ydDogY2FuY2VsSW1wb3J0LCBkb3dubG9hZElkZW50aWZpZXJFcnJvcjogZG93bmxvYWRJZGVudGlmaWVyRXJyb3IsIGNoZWNrQ3JpdGljYWxFcnJvcjogY2hlY2tDcml0aWNhbEVycm9yLCBjb3VudEVycm9yczogY291bnRFcnJvcnMsIGFkZEFjdGl2aXRpZXM6IGFkZEFjdGl2aXRpZXMsIGVycm9yTGVuZ3RoOiBlcnJvckxlbmd0aCwgc2VsZWN0QWxsQWN0aXZpdGllczogc2VsZWN0QWxsQWN0aXZpdGllcywgWGxzTGlzdEVycm9yOiBYbHNMaXN0RXJyb3JfdnVlXzEuZGVmYXVsdCwgTW9kYWw6IFBvcHVwTW9kYWxfdnVlXzEuZGVmYXVsdCwgVG9hc3Q6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0LCBMb2FkZXI6IFByb2dyZXNzTG9hZGVyX3Z1ZV8xLmRlZmF1bHQsIEJ0bkNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIEhvdmVyVGV4dF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi4vLi4vY29tcG9uZW50cy9Ib3ZlclRleHQudnVlXCIpKTtcbnZhciBSYWRpYWxQcm9ncmVzc0Jhcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi4vLi4vY29tcG9uZW50cy9SYWRpYWxQcm9ncmVzc0Jhci52dWVcIikpO1xudmFyIE9yZ2FuaXNhdGlvbkVsZW1lbnRzX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL09yZ2FuaXNhdGlvbkVsZW1lbnRzLnZ1ZVwiKSk7XG52YXIgT3JnYW5pc2F0aW9uRWxlbWVudHNEZXRhaWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vT3JnYW5pc2F0aW9uRWxlbWVudHNEZXRhaWwudnVlXCIpKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG52YXIgT3JnYW5pemF0aW9uUHVibGlzaFVucHVibGlzaEJ1dHRvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9Pcmdhbml6YXRpb25QdWJsaXNoVW5wdWJsaXNoQnV0dG9uLnZ1ZVwiKSk7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBjb3JlXzIgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIEVycm9yUG9wVXBfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvRXJyb3JQb3BVcC52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdPcmdhbmlzYXRpb25EYXRhJyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEhvdmVyVGV4dDogSG92ZXJUZXh0X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFJhZGlhbFByb2dyZXNzQmFyOiBSYWRpYWxQcm9ncmVzc0Jhcl92dWVfMS5kZWZhdWx0LFxuICAgICAgICBPcmdhbmlzYXRpb25FbGVtZW50czogT3JnYW5pc2F0aW9uRWxlbWVudHNfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgT3JnYW5pc2F0aW9uRWxlbWVudHNEZXRhaWw6IE9yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgUHVibGlzaFVucHVibGlzaDogT3JnYW5pemF0aW9uUHVibGlzaFVucHVibGlzaEJ1dHRvbl92dWVfMS5kZWZhdWx0LFxuICAgICAgICBFcnJvclBvcFVwOiBFcnJvclBvcFVwX3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBlbGVtZW50czoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGdyb3Vwczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIG9yZ2FuaXphdGlvbjoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHByb2dyZXNzOiB7XG4gICAgICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdG9hc3Q6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIG1hbmRhdG9yeUNvbXBsZXRlZDoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBzdGF0dXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB1c2VyUm9sZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgdG9hc3REYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBlcnJvckRhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHNob3dTaWRlYmFyID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2NyZWVuV2lkdGggPSAoMCwgdnVlXzEucmVmKSgwKTtcbiAgICAgICAgdmFyIF9hID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIHB1Ymxpc2hWYWx1ZSA9IF9hWzBdLCBwdWJsaXNoVG9nZ2xlID0gX2FbMV07XG4gICAgICAgIHZhciBfYiA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCB1bnB1Ymxpc2hWYWx1ZSA9IF9iWzBdLCB1bnB1Ymxpc2hUb2dnbGUgPSBfYlsxXTtcbiAgICAgICAgdmFyIF9jID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIGRlbGV0ZVZhbHVlID0gX2NbMF0sIGRlbGV0ZVRvZ2dsZSA9IF9jWzFdO1xuICAgICAgICB2YXIgX2QgPSAoMCwgY29yZV8xLnVzZVRvZ2dsZSkoKSwgZG93bmxvYWRWYWx1ZSA9IF9kWzBdLCBkb3dubG9hZFRvZ2dsZSA9IF9kWzFdO1xuICAgICAgICB2YXIgcG9zaXRpb25ZID0gKDAsIHZ1ZV8xLnJlZikoMCk7XG4gICAgICAgIHZhciB0b2dnbGVTaWRlYmFyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hvd1NpZGViYXIudmFsdWUgPSAhc2hvd1NpZGViYXIudmFsdWU7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMS5vblVubW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbCk7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgY2FsY1dpZHRoKTtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMS5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxjV2lkdGgpO1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbCk7XG4gICAgICAgICAgICBpZiAocHJvcHMudG9hc3QubWVzc2FnZSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHByb3BzLnRvYXN0LnR5cGUgPT09ICdzdWNjZXNzJyA/IHRydWUgOiBmYWxzZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSBwcm9wcy50b2FzdC5tZXNzYWdlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGNhbGNXaWR0aCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgc2NyZWVuV2lkdGgudmFsdWUgPSBldmVudC50YXJnZXQuaW5uZXJXaWR0aDtcbiAgICAgICAgICAgIGlmIChzY3JlZW5XaWR0aC52YWx1ZSA+IDEwMjQpIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnYXV0byc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzaG93U2lkZWJhci52YWx1ZSAmJlxuICAgICAgICAgICAgICAgICAgICAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgaGFuZGxlU2Nyb2xsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcG9zaXRpb25ZLnZhbHVlID0gd2luZG93LnNjcm9sbFk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBpc3RvcFZpc2libGUgPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBwb3NpdGlvblkudmFsdWUgPT09IDA7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaWdub3JlVXBkYXRlcyA9ICgwLCBjb3JlXzIud2F0Y2hJZ25vcmFibGUpKHRvYXN0RGF0YSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9LCB7XG4gICAgICAgICAgICBmbHVzaDogJ3N5bmMnLFxuICAgICAgICB9KS5pZ25vcmVVcGRhdGVzO1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNob3dTaWRlYmFyLnZhbHVlOyB9LCBmdW5jdGlvbiAoc2lkZWJhcikge1xuICAgICAgICAgICAgaWYgKHNpZGViYXIpIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnYXV0byc7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRvYXN0RGF0YS52aXNpYmlsaXR5OyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlnbm9yZVRvYXN0VXBkYXRlKCk7XG4gICAgICAgICAgICB9LCAxMDAwMCk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaWdub3JlVG9hc3RVcGRhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZ25vcmVVcGRhdGVzKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9ICcnO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHcm91cGluZyBhbGwgdGhlIGRhdGEncyBmb3Igc2Nyb2xsIGZ1bmN0aW9uXG4gICAgICAgICAqXG4gICAgICAgICAqIHRoaXMgZGF0YSBpcyBjcmVhdGVkIHVzaW5nIHByb3BzLmdyb3VwcyBhbmQgcHJvcHMuYWN0aXZpdHlcbiAgICAgICAgICovXG4gICAgICAgIHZhciBfZSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKSwgZ3JvdXBzID0gX2UuZ3JvdXBzLCBvcmdhbml6YXRpb24gPSBfZS5vcmdhbml6YXRpb24sIGVsZW1lbnRzID0gX2UuZWxlbWVudHMsIGdyb3VwZWREYXRhID0gZ3JvdXBzLnZhbHVlLCBvcmdhbml6YXRpb25Qcm9wcyA9IG9yZ2FuaXphdGlvbi52YWx1ZSwgb3JnYW5pemF0aW9uRGF0YSA9IGdyb3Vwcy52YWx1ZSwgZWxlbWVudFByb3BzID0gZWxlbWVudHMudmFsdWU7XG4gICAgICAgIC8vIGdlbmVyYXRpbmcgYXZhaWxhYmxlIGVsZW1lbnRzXG4gICAgICAgIE9iamVjdC5rZXlzKG9yZ2FuaXphdGlvbkRhdGEpLm1hcChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICB2YXIgZmxhZyA9IGZhbHNlO1xuICAgICAgICAgICAgT2JqZWN0LmtleXMob3JnYW5pemF0aW9uRGF0YVtrZXldWydlbGVtZW50cyddKS5tYXAoZnVuY3Rpb24gKGspIHtcbiAgICAgICAgICAgICAgICBpZiAob3JnYW5pemF0aW9uUHJvcHNba10gfHwgdHlwZW9mIG9yZ2FuaXphdGlvblByb3BzW2tdID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgICAgICBvcmdhbml6YXRpb25EYXRhW2tleV1bJ2VsZW1lbnRzJ11ba11bJ2NvbnRlbnQnXSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBvcmdhbml6YXRpb25Qcm9wc1trXTtcbiAgICAgICAgICAgICAgICAgICAgZmxhZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRQcm9wc1trXVsnaGFzX2RhdGEnXSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgb3JnYW5pemF0aW9uRGF0YVtrZXldW2tdO1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50UHJvcHNba11bJ2hhc19kYXRhJ10gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxlbWVudFByb3BzW2tdWydjb3JlJ10gPVxuICAgICAgICAgICAgICAgICAgICBvcmdhbml6YXRpb25EYXRhW2tleV1bJ2VsZW1lbnRzJ11ba11bJ21hbmRhdG9yeSddO1xuICAgICAgICAgICAgICAgIGVsZW1lbnRQcm9wc1trXVsnY29tcGxldGVkJ10gPVxuICAgICAgICAgICAgICAgICAgICBrID09PSAnb3JnYW5pc2F0aW9uX2lkZW50aWZpZXInXG4gICAgICAgICAgICAgICAgICAgICAgICA/IG9yZ2FuaXphdGlvblByb3BzWydlbGVtZW50X3N0YXR1cyddWydpZGVudGlmaWVyJ11cbiAgICAgICAgICAgICAgICAgICAgICAgIDogb3JnYW5pemF0aW9uUHJvcHNbJ2VsZW1lbnRfc3RhdHVzJ11ba107XG4gICAgICAgICAgICAgICAgZWxlbWVudFByb3BzW2tdWydub3RfY29tcGxldGVkJ10gPSAhZWxlbWVudFByb3BzW2tdWydjb21wbGV0ZWQnXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKGZsYWcgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIG9yZ2FuaXphdGlvbkRhdGFba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGdlbmVyYXRpbmcgYXZhaWxhYmxlIGNhdGVnb3JpZXMgb2YgZWxlbWVudHNcbiAgICAgICAgT2JqZWN0LmtleXMoZ3JvdXBlZERhdGEpLm1hcChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9yZ2FuaXphdGlvbkRhdGEsIGtleSkpIHtcbiAgICAgICAgICAgICAgICBncm91cGVkRGF0YVtrZXldWydzdGF0dXMnXSA9ICdlbmFibGVkJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGdyb3VwZWREYXRhW2tleV1bJ3N0YXR1cyddID0gJ2Rpc2FibGVkJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBwdWJsaXNoTWVzc2FnZSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBwdWJsaXNoU3RhdHVzID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBpc19wdWJsaXNoZWQ6IG9yZ2FuaXphdGlvblByb3BzLmlzX3B1Ymxpc2hlZCxcbiAgICAgICAgICAgIHN0YXR1czogb3JnYW5pemF0aW9uUHJvcHMuc3RhdHVzLFxuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdwdWJsaXNoTWVzc2FnZScsIHB1Ymxpc2hNZXNzYWdlKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdtYW5kYXRvcnlDb21wbGV0ZWQnLCBwcm9wcy5tYW5kYXRvcnlDb21wbGV0ZWQpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3RvYXN0RGF0YScsIHRvYXN0RGF0YSk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgncHVibGlzaFN0YXR1cycsIHB1Ymxpc2hTdGF0dXMpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ2Vycm9yRGF0YScsIGVycm9yRGF0YSk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgndXNlclJvbGUnLCBwcm9wcy51c2VyUm9sZSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBncm91cGVkRGF0YTogZ3JvdXBlZERhdGEsXG4gICAgICAgICAgICBvcmdhbml6YXRpb25EYXRhOiBvcmdhbml6YXRpb25EYXRhLFxuICAgICAgICAgICAgcHVibGlzaFZhbHVlOiBwdWJsaXNoVmFsdWUsXG4gICAgICAgICAgICBwdWJsaXNoVG9nZ2xlOiBwdWJsaXNoVG9nZ2xlLFxuICAgICAgICAgICAgdW5wdWJsaXNoVmFsdWU6IHVucHVibGlzaFZhbHVlLFxuICAgICAgICAgICAgdW5wdWJsaXNoVG9nZ2xlOiB1bnB1Ymxpc2hUb2dnbGUsXG4gICAgICAgICAgICBkZWxldGVWYWx1ZTogZGVsZXRlVmFsdWUsXG4gICAgICAgICAgICBkZWxldGVUb2dnbGU6IGRlbGV0ZVRvZ2dsZSxcbiAgICAgICAgICAgIGRvd25sb2FkVmFsdWU6IGRvd25sb2FkVmFsdWUsXG4gICAgICAgICAgICBkb3dubG9hZFRvZ2dsZTogZG93bmxvYWRUb2dnbGUsXG4gICAgICAgICAgICBlbGVtZW50UHJvcHM6IGVsZW1lbnRQcm9wcyxcbiAgICAgICAgICAgIHRvYXN0RGF0YTogdG9hc3REYXRhLFxuICAgICAgICAgICAgcHVibGlzaFN0YXR1czogcHVibGlzaFN0YXR1cyxcbiAgICAgICAgICAgIGVycm9yRGF0YTogZXJyb3JEYXRhLFxuICAgICAgICAgICAgdG9nZ2xlU2lkZWJhcjogdG9nZ2xlU2lkZWJhcixcbiAgICAgICAgICAgIHNob3dTaWRlYmFyOiBzaG93U2lkZWJhcixcbiAgICAgICAgICAgIGlzdG9wVmlzaWJsZTogaXN0b3BWaXNpYmxlLFxuICAgICAgICAgICAgbGFuZ3VhZ2U6IGxhbmd1YWdlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBjb3JlRWxlbWVudHNfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL2NvcmVFbGVtZW50c1wiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdPcmdhbmlzYXRpb25FbGVtZW50cycsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHN0YXR1czoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBsZXRlZDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIG1hbmRhdG9yeToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIF9iID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIHNlYXJjaEJ0blZhbHVlID0gX2JbMF0sIHNlYXJjaEJ0blRvZ2dsZSA9IF9iWzFdO1xuICAgICAgICB2YXIgZHJvcGRvd24gPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgZHJvcGRvd25CdG4gPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgdXNlclJvbGUgPSAoMCwgdnVlXzIuaW5qZWN0KSgndXNlclJvbGUnKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNlYXJjaCBmdW5jdGlvbmFsaXR5XG4gICAgICAgICAqL1xuICAgICAgICB2YXIgZWxlbWVudHMgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHNlYXJjaDogJycsXG4gICAgICAgICAgICBzdGF0dXM6ICcnLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGVsZW1lbnRJY29ucyA9IHtcbiAgICAgICAgICAgIGNvbXBsZXRlZDogJ2RvdWJsZS10aWNrJyxcbiAgICAgICAgICAgIG5vdF9jb21wbGV0ZWQ6ICdyZWQtY3Jvc3MnLFxuICAgICAgICAgICAgY29yZTogJ2NvcmUnLFxuICAgICAgICB9O1xuICAgICAgICB2YXIgYXNBcnJheURhdGEgPSBPYmplY3QuZW50cmllcyhwcm9wcy5kYXRhKTtcbiAgICAgICAgdmFyIGZpbHRlcmVkRWxlbWVudHMgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBmaWx0ZXJlZCA9IGFzQXJyYXlEYXRhLmZpbHRlcihmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICB2YXIga2V5ID0gX2FbMF0sIHZhbHVlID0gX2FbMV07XG4gICAgICAgICAgICAgICAgaWYgKCFlbGVtZW50cy5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxhbmd1YWdlLmVsZW1lbnRzX2NvbW1vbl9sYW5nW2tleV1cbiAgICAgICAgICAgICAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAuaW5jbHVkZXMoZWxlbWVudHMuc2VhcmNoLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXy9nLCAnICcpLnJlcGxhY2UoLy0vZywgJ18nKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVbZWxlbWVudHMuc3RhdHVzXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGtleVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmluY2x1ZGVzKGVsZW1lbnRzLnNlYXJjaC50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL18vZywgJyAnKS5yZXBsYWNlKC8tL2csICdfJykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB2YXIganVzdFN0cmluZ3MgPSBPYmplY3QuZnJvbUVudHJpZXMoZmlsdGVyZWQpO1xuICAgICAgICAgICAgcmV0dXJuIGp1c3RTdHJpbmdzO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWRyb3Bkb3duQnRuLnZhbHVlLmNvbnRhaW5zKGUudGFyZ2V0KSAmJlxuICAgICAgICAgICAgICAgICAgICAhZHJvcGRvd24udmFsdWUuY29udGFpbnMoZS50YXJnZXQpICYmXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaEJ0blZhbHVlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaEJ0blRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGRyb3Bkb3duRmlsdGVyID0gZnVuY3Rpb24gKHMpIHtcbiAgICAgICAgICAgIGVsZW1lbnRzLnN0YXR1cyA9IHM7XG4gICAgICAgICAgICBzZWFyY2hCdG5Ub2dnbGUoKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgbGFuZ3VhZ2U6IGxhbmd1YWdlLCBwcm9wczogcHJvcHMsIHNlYXJjaEJ0blZhbHVlOiBzZWFyY2hCdG5WYWx1ZSwgc2VhcmNoQnRuVG9nZ2xlOiBzZWFyY2hCdG5Ub2dnbGUsIGRyb3Bkb3duOiBkcm9wZG93biwgZHJvcGRvd25CdG46IGRyb3Bkb3duQnRuLCB1c2VyUm9sZTogdXNlclJvbGUsIGVsZW1lbnRzOiBlbGVtZW50cywgZWxlbWVudEljb25zOiBlbGVtZW50SWNvbnMsIGFzQXJyYXlEYXRhOiBhc0FycmF5RGF0YSwgZmlsdGVyZWRFbGVtZW50czogZmlsdGVyZWRFbGVtZW50cywgZHJvcGRvd25GaWx0ZXI6IGRyb3Bkb3duRmlsdGVyLCBvcmdNYW5kYXRvcnlFbGVtZW50czogY29yZUVsZW1lbnRzXzEub3JnTWFuZGF0b3J5RWxlbWVudHMgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBIb3ZlclRleHRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZVwiKSk7XG52YXIgY29yZUVsZW1lbnRzXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS9jb3JlRWxlbWVudHNcIik7XG52YXIgSW5kZXhfMSA9IHJlcXVpcmUoXCJPcmdhbmlzYXRpb24vZWxlbWVudHMvSW5kZXhcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnT3JnYW5pc2F0aW9uRWxlbWVudHNEZXRhaWwnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0aXRsZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QgfHwgQXJyYXksXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgbGFuZ3VhZ2U6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICdlbicsXG4gICAgICAgIH0sXG4gICAgICAgIHdpZHRoOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBzdGF0dXM6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciB0cmFuc2xhdGlvbiA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgdXNlclJvbGUgPSAoMCwgdnVlXzIuaW5qZWN0KSgndXNlclJvbGUnKTtcbiAgICAgICAgdmFyIGxheW91dCA9ICdiYXNpcy02LzEyJztcbiAgICAgICAgaWYgKHByb3BzLndpZHRoID09PSAnZnVsbCcpIHtcbiAgICAgICAgICAgIGxheW91dCA9ICdiYXNpcy1mdWxsJztcbiAgICAgICAgfVxuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ29yZ1R5cGVzJywgcHJvcHMudHlwZXMpO1xuICAgICAgICB2YXIgcmVwbGFjZVVuZGVyc2NvcmUgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICB2YXIgcmVnZXggPSAvXy9nO1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHN0cmluZy5yZXBsYWNlKHJlZ2V4LCAnLScpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHJhbnNsYXRpb246IHRyYW5zbGF0aW9uLCBwcm9wczogcHJvcHMsIHVzZXJSb2xlOiB1c2VyUm9sZSwgbGF5b3V0OiBsYXlvdXQsIHJlcGxhY2VVbmRlcnNjb3JlOiByZXBsYWNlVW5kZXJzY29yZSwgSG92ZXJUZXh0OiBIb3ZlclRleHRfdnVlXzEuZGVmYXVsdCwgb3JnTWFuZGF0b3J5RWxlbWVudHM6IGNvcmVFbGVtZW50c18xLm9yZ01hbmRhdG9yeUVsZW1lbnRzLCBSZXBvcnRpbmdPcmdhbmlzYXRpb246IEluZGV4XzEuUmVwb3J0aW5nT3JnYW5pc2F0aW9uLCBUb3RhbEJ1ZGdldDogSW5kZXhfMS5Ub3RhbEJ1ZGdldCwgUmVwb3J0aW5nT3JnQnVkZ2V0OiBJbmRleF8xLlJlcG9ydGluZ09yZ0J1ZGdldCwgUmVwb3J0aW5nUmVnaW9uQnVkZ2V0OiBJbmRleF8xLlJlcG9ydGluZ1JlZ2lvbkJ1ZGdldCwgUmVjaXBpZW50Q291bnRyeUJ1ZGdldDogSW5kZXhfMS5SZWNpcGllbnRDb3VudHJ5QnVkZ2V0LCBUb3RhbEV4cGVuZGl0dXJlOiBJbmRleF8xLlRvdGFsRXhwZW5kaXR1cmUsIERvY3VtZW50TGluazogSW5kZXhfMS5Eb2N1bWVudExpbmsgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBtb21lbnRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwibW9tZW50XCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdEb2N1bWVudExpbmsnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGNvbnRlbnQ6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMi5pbmplY3QpKCdvcmdUeXBlcycpO1xuICAgICAgICBmdW5jdGlvbiBmb3JtYXREYXRlKGRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRlID8gKDAsIG1vbWVudF8xLmRlZmF1bHQpKGRhdGUpLmZvcm1hdCgnTEwnKSA6ICdEYXRlIE1pc3NpbmcnO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGxhbmd1YWdlOiBsYW5ndWFnZSwgdHlwZXM6IHR5cGVzLCBmb3JtYXREYXRlOiBmb3JtYXREYXRlIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgbW9tZW50XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1vbWVudFwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnUmVjaXBpZW50Q291bnRyeUJ1ZGdldCcsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgY29udGVudDogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ29yZ1R5cGVzJyk7XG4gICAgICAgIGZ1bmN0aW9uIGZvcm1hdERhdGUoZGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGUgPyAoMCwgbW9tZW50XzEuZGVmYXVsdCkoZGF0ZSkuZm9ybWF0KCdMTCcpIDogbGFuZ3VhZ2UuY29tbW9uX2xhbmcubWlzc2luZy5kYXRlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGxhbmd1YWdlOiBsYW5ndWFnZSwgdHlwZXM6IHR5cGVzLCBmb3JtYXREYXRlOiBmb3JtYXREYXRlIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgbW9tZW50XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1vbWVudFwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnUmVwb3J0aW5nT3JnQnVkZ2V0JyxcbiAgICBwcm9wczoge1xuICAgICAgICBjb250ZW50OiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzIuaW5qZWN0KSgnb3JnVHlwZXMnKTtcbiAgICAgICAgZnVuY3Rpb24gZm9ybWF0RGF0ZShkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0ZSA/ICgwLCBtb21lbnRfMS5kZWZhdWx0KShkYXRlKS5mb3JtYXQoJ0xMJykgOiBsYW5ndWFnZS5jb21tb25fbGFuZy5taXNzaW5nLmRhdGU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgbGFuZ3VhZ2U6IGxhbmd1YWdlLCB0eXBlczogdHlwZXMsIGZvcm1hdERhdGU6IGZvcm1hdERhdGUgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdSZXBvcnRpbmdPcmdhbmlzYXRpb24nLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGNvbnRlbnQ6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHRyYW5zbGF0aW9uID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMi5pbmplY3QpKCdvcmdUeXBlcycpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyB0cmFuc2xhdGlvbjogdHJhbnNsYXRpb24sIHR5cGVzOiB0eXBlcyB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIG1vbWVudF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJtb21lbnRcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1JlcG9ydGluZ1JlZ2lvbkJ1ZGdldCcsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgY29udGVudDogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ29yZ1R5cGVzJyk7XG4gICAgICAgIGZ1bmN0aW9uIGZvcm1hdERhdGUoZGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGUgPyAoMCwgbW9tZW50XzEuZGVmYXVsdCkoZGF0ZSkuZm9ybWF0KCdMTCcpIDogbGFuZ3VhZ2UuY29tbW9uX2xhbmcubWlzc2luZy5kYXRlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGxhbmd1YWdlOiBsYW5ndWFnZSwgdHlwZXM6IHR5cGVzLCBmb3JtYXREYXRlOiBmb3JtYXREYXRlIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgbW9tZW50XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1vbWVudFwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnVG90YWxCdWRnZXQnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGNvbnRlbnQ6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMi5pbmplY3QpKCdvcmdUeXBlcycpO1xuICAgICAgICBmdW5jdGlvbiBmb3JtYXREYXRlKGRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRlID8gKDAsIG1vbWVudF8xLmRlZmF1bHQpKGRhdGUpLmZvcm1hdCgnTEwnKSA6IGxhbmd1YWdlLmNvbW1vbl9sYW5nLm1pc3NpbmcuZGF0ZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBsYW5ndWFnZTogbGFuZ3VhZ2UsIHR5cGVzOiB0eXBlcywgZm9ybWF0RGF0ZTogZm9ybWF0RGF0ZSB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIG1vbWVudF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJtb21lbnRcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1RvdGFsRXhwZW5kaXR1cmUnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGNvbnRlbnQ6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMi5pbmplY3QpKCdvcmdUeXBlcycpO1xuICAgICAgICBmdW5jdGlvbiBmb3JtYXREYXRlKGRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRlID8gKDAsIG1vbWVudF8xLmRlZmF1bHQpKGRhdGUpLmZvcm1hdCgnTEwnKSA6IGxhbmd1YWdlLmNvbW1vbl9sYW5nLm1pc3NpbmcuZGF0ZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBsYW5ndWFnZTogbGFuZ3VhZ2UsIHR5cGVzOiB0eXBlcywgZm9ybWF0RGF0ZTogZm9ybWF0RGF0ZSB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnUGFzc3dvcmRSZWNvdmVyeScsXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGxhbmd1YWdlOiBsYW5ndWFnZSB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi9jb21wb25lbnRzL0xvYWRlci52dWVcIikpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIExvYWRlcjogTG9hZGVyX3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIGZvcm1EYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBlbWFpbDogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZW1haWxFcnJvciA9ICgwLCB2dWVfMS5yZWYpKCcnKTtcbiAgICAgICAgdmFyIGxvYWRlclZpc2liaWxpdHkgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIGZ1bmN0aW9uIHJlc2V0KCkge1xuICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucG9zdCgnL3Bhc3N3b3JkL2VtYWlsJywgZm9ybURhdGEpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIGlmIChyZXMucmVxdWVzdC5yZXNwb25zZVVSTC5pbmNsdWRlcygnYWN0aXZpdGllcycpKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9hY3Rpdml0aWVzJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgdmFyIGVycm9ycyA9ICFyZXNwb25zZS5zdWNjZXNzIHx8ICdlcnJvcnMnIGluIHJlc3BvbnNlID8gcmVzcG9uc2UuZXJyb3JzIDogW107XG4gICAgICAgICAgICAgICAgZW1haWxFcnJvci52YWx1ZSA9IGVycm9ycy5lbWFpbCA/IGVycm9ycy5lbWFpbFswXSA6ICcnO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9wYXNzd29yZC9jb25maXJtJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdmFyIGVycm9ycyA9IGVycm9yLnJlc3BvbnNlLmRhdGEuZXJyb3JzO1xuICAgICAgICAgICAgICAgIGVtYWlsRXJyb3IudmFsdWUgPSBlcnJvcnMuZW1haWwgPyBlcnJvcnMuZW1haWxbMF0gOiAnJztcbiAgICAgICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZm9ybURhdGE6IGZvcm1EYXRhLFxuICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eTogbG9hZGVyVmlzaWJpbGl0eSxcbiAgICAgICAgICAgIGVtYWlsRXJyb3I6IGVtYWlsRXJyb3IsXG4gICAgICAgICAgICByZXNldDogcmVzZXQsXG4gICAgICAgICAgICBsYW5ndWFnZTogbGFuZ3VhZ2UsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciBMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvTG9hZGVyLnZ1ZVwiKSk7XG52YXIgZW5jcnlwdGlvbl8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2VuY3J5cHRpb25cIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgTG9hZGVyOiBMb2FkZXJfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGVtYWlsOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdG9rZW46IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIGxvYWRlclZpc2liaWxpdHkgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBmb3JtRGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgZW1haWw6IHByb3BzLmVtYWlsLFxuICAgICAgICAgICAgdG9rZW46IHByb3BzLnRva2VuLFxuICAgICAgICAgICAgcGFzc3dvcmQ6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAnJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBlcnJvckRhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIGVtYWlsOiAnJyxcbiAgICAgICAgICAgIHBhc3N3b3JkOiAnJyxcbiAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogJycsXG4gICAgICAgIH0pO1xuICAgICAgICBmdW5jdGlvbiByZXNldCgpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIHZhciBmb3JtID0ge1xuICAgICAgICAgICAgICAgIGVtYWlsOiBmb3JtRGF0YS5lbWFpbCxcbiAgICAgICAgICAgICAgICB0b2tlbjogcHJvcHMudG9rZW4sXG4gICAgICAgICAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAoMCwgZW5jcnlwdGlvbl8xLmRlZmF1bHQpKGZvcm1EYXRhLnBhc3N3b3JkX2NvbmZpcm1hdGlvbiwgKF9hID0gcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJyksXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQ6ICgwLCBlbmNyeXB0aW9uXzEuZGVmYXVsdCkoZm9ybURhdGEucGFzc3dvcmQsIChfYiA9IHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogJycpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wb3N0KCcvcmVzZXQnLCBmb3JtKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzLnJlcXVlc3QucmVzcG9uc2VVUkwuaW5jbHVkZXMoJ2FjdGl2aXRpZXMnKSkge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvYWN0aXZpdGllcyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIHZhciBlcnJvcnMgPSAnZXJyb3JzJyBpbiByZXNwb25zZSA/IHJlc3BvbnNlLmVycm9ycyA6IFtdO1xuICAgICAgICAgICAgICAgIGVycm9yRGF0YS5wYXNzd29yZCA9IGVycm9ycy5wYXNzd29yZCA/IGVycm9ycy5wYXNzd29yZFswXSA6ICcnO1xuICAgICAgICAgICAgICAgIGVycm9yRGF0YS5lbWFpbCA9IGVycm9ycy5lbWFpbCA/IGVycm9ycy5lbWFpbFswXSA6ICcnO1xuICAgICAgICAgICAgICAgIGVycm9yRGF0YS5wYXNzd29yZF9jb25maXJtYXRpb24gPSBlcnJvcnMucGFzc3dvcmRfY29uZmlybWF0aW9uXG4gICAgICAgICAgICAgICAgICAgID8gZXJyb3JzLnBhc3N3b3JkX2NvbmZpcm1hdGlvblswXVxuICAgICAgICAgICAgICAgICAgICA6ICcnO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9hY3Rpdml0aWVzJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdmFyIGVycm9ycyA9IGVycm9yLnJlc3BvbnNlLmRhdGEuZXJyb3JzO1xuICAgICAgICAgICAgICAgIGVycm9yRGF0YS5wYXNzd29yZCA9IGVycm9ycy5wYXNzd29yZCA/IGVycm9ycy5wYXNzd29yZFswXSA6ICcnO1xuICAgICAgICAgICAgICAgIGVycm9yRGF0YS5lbWFpbCA9IGVycm9ycy5lbWFpbCA/IGVycm9ycy5lbWFpbFswXSA6ICcnO1xuICAgICAgICAgICAgICAgIGVycm9yRGF0YS5wYXNzd29yZF9jb25maXJtYXRpb24gPSBlcnJvcnMucGFzc3dvcmRfY29uZmlybWF0aW9uXG4gICAgICAgICAgICAgICAgICAgID8gZXJyb3JzLnBhc3N3b3JkX2NvbmZpcm1hdGlvblswXVxuICAgICAgICAgICAgICAgICAgICA6ICcnO1xuICAgICAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHkudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcm9wczogcHJvcHMsXG4gICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5OiBsb2FkZXJWaXNpYmlsaXR5LFxuICAgICAgICAgICAgZm9ybURhdGE6IGZvcm1EYXRhLFxuICAgICAgICAgICAgZXJyb3JEYXRhOiBlcnJvckRhdGEsXG4gICAgICAgICAgICByZXNldDogcmVzZXQsXG4gICAgICAgICAgICBsYW5ndWFnZTogbGFuZ3VhZ2UsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIG11bHRpc2VsZWN0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkB2dWVmb3JtL211bHRpc2VsZWN0XCIpKTtcbnZhciBzdG9yZV8xID0gcmVxdWlyZShcIi4uLy4uL3N0b3JlXCIpO1xudmFyIGFjdGlvbnNfMSA9IHJlcXVpcmUoXCIuLi8uLi9zdG9yZS9zZXR0aW5nL2FjdGlvbnNcIik7XG52YXIgSG92ZXJUZXh0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLy4uLy4uL2NvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBNdWx0aXNlbGVjdDogbXVsdGlzZWxlY3RfMS5kZWZhdWx0LFxuICAgICAgICBIb3ZlclRleHQ6IEhvdmVyVGV4dF92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgY3VycmVuY2llczoge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBsYW5ndWFnZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgaHVtYW5pdGFyaWFuOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGJ1ZGdldE5vdFByb3ZpZGVkOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRDb2xsYWJvcmF0aW9uVHlwZToge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0Rmxvd1R5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdEZpbmFuY2VUeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRBaWRUeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRUaWVkU3RhdHVzOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgdXNlclJvbGUgPSAoMCwgdnVlXzEuaW5qZWN0KSgndXNlclJvbGUnKTtcbiAgICAgICAgdmFyIHN0b3JlID0gKDAsIHN0b3JlXzEudXNlU3RvcmUpKCk7XG4gICAgICAgIHZhciBkZWZhdWx0Rm9ybSA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHN0b3JlLnN0YXRlLmRlZmF1bHRGb3JtO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGRlZmF1bHRFcnJvciA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHN0b3JlLnN0YXRlLmRlZmF1bHRFcnJvcjtcbiAgICAgICAgfSk7XG4gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZVN0b3JlKGtleSkge1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goYWN0aW9uc18xLkFjdGlvblR5cGVzLlVQREFURV9ERUZBVUxUX1ZBTFVFUywge1xuICAgICAgICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgICAgICAgIHZhbHVlOiBkZWZhdWx0Rm9ybS52YWx1ZVtrZXldLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByb3BzOiBwcm9wcyxcbiAgICAgICAgICAgIHVzZXJSb2xlOiB1c2VyUm9sZSxcbiAgICAgICAgICAgIGRlZmF1bHRGb3JtOiBkZWZhdWx0Rm9ybSxcbiAgICAgICAgICAgIGRlZmF1bHRFcnJvcjogZGVmYXVsdEVycm9yLFxuICAgICAgICAgICAgdXBkYXRlU3RvcmU6IHVwZGF0ZVN0b3JlLFxuICAgICAgICAgICAgbGFuZ3VhZ2U6IGxhbmd1YWdlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHN0b3JlXzEgPSByZXF1aXJlKFwiLi4vLi4vc3RvcmVcIik7XG52YXIgYWN0aW9uc18xID0gcmVxdWlyZShcIi4uLy4uL3N0b3JlL3NldHRpbmcvYWN0aW9uc1wiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgU2V0dGluZ0RlZmF1bHRGb3JtX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL1NldHRpbmdEZWZhdWx0Rm9ybS52dWVcIikpO1xudmFyIFNldHRpbmdQdWJsaXNoaW5nRm9ybV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9TZXR0aW5nUHVibGlzaGluZ0Zvcm0udnVlXCIpKTtcbnZhciBMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uLy4uL2NvbXBvbmVudHMvTG9hZGVyLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgU2V0dGluZ0RlZmF1bHRGb3JtOiBTZXR0aW5nRGVmYXVsdEZvcm1fdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgU2V0dGluZ1B1Ymxpc2hpbmdGb3JtOiBTZXR0aW5nUHVibGlzaGluZ0Zvcm1fdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgTG9hZGVyOiBMb2FkZXJfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgVG9hc3Q6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgY3VycmVuY2llczoge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBsYW5ndWFnZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgaHVtYW5pdGFyaWFuOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIG9yZ2FuaXphdGlvbjoge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBidWRnZXROb3RQcm92aWRlZDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHVzZXJSb2xlOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdENvbGxhYm9yYXRpb25UeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRGbG93VHlwZToge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0RmluYW5jZVR5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdEFpZFR5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdFRpZWRTdGF0dXM6IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciB0YWIgPSAoMCwgdnVlXzEucmVmKSgncHVibGlzaCcpO1xuICAgICAgICB2YXIgc3RvcmUgPSAoMCwgc3RvcmVfMS51c2VTdG9yZSkoKTtcbiAgICAgICAgdmFyIGxvYWRlclZpc2liaWxpdHkgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB0b2FzdFZpc2liaWxpdHkgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB0b2FzdE1lc3NhZ2UgPSAoMCwgdnVlXzEucmVmKSgnJyk7XG4gICAgICAgIHZhciB0b2FzdFR5cGUgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBwdWJsaXNoaW5nRm9ybSA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUucHVibGlzaGluZ0Zvcm07IH0pO1xuICAgICAgICB2YXIgcHVibGlzaGluZ0luZm8gPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLnB1Ymxpc2hpbmdJbmZvOyB9KTtcbiAgICAgICAgdmFyIHB1Ymxpc2hpbmdFcnJvciA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUucHVibGlzaGluZ0Vycm9yOyB9KTtcbiAgICAgICAgdmFyIGRlZmF1bHRGb3JtID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5kZWZhdWx0Rm9ybTsgfSk7XG4gICAgICAgIHZhciBkZWZhdWx0RXJyb3IgPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLmRlZmF1bHRFcnJvcjsgfSk7XG4gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZVN0b3JlKG5hbWUsIGtleSwgdmFsdWUpIHtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKGFjdGlvbnNfMS5BY3Rpb25UeXBlc1tuYW1lXSwge1xuICAgICAgICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgICgwLCB2dWVfMS5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBkYXRhLCBzZXR0aW5nRGF0YSwgZGVmYXVsdFZhbHVlcywgcHVibGlzaGVySW5mbywgYWN0aXZpdHlWYWx1ZXMsIGtleSwga2V5LCBrZXk7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6IHJldHVybiBbNCAvKnlpZWxkKi8sIGF4aW9zXzEuZGVmYXVsdC5nZXQoJy9zZXR0aW5nL2RhdGEnKV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSAoX2Euc2VudCgpKS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ0RhdGEgPSBkYXRhLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ0RhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWVzID0gc2V0dGluZ0RhdGEuZGVmYXVsdF92YWx1ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzZXR0aW5nRGF0YS5kZWZhdWx0X3ZhbHVlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hlckluZm8gPSBzZXR0aW5nRGF0YS5wdWJsaXNoaW5nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzZXR0aW5nRGF0YS5wdWJsaXNoaW5nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpdml0eVZhbHVlcyA9IHNldHRpbmdEYXRhLmFjdGl2aXR5X2RlZmF1bHRfdmFsdWVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gc2V0dGluZ0RhdGEuYWN0aXZpdHlfZGVmYXVsdF92YWx1ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHVibGlzaGVySW5mbykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGtleSBpbiBwdWJsaXNoZXJJbmZvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdG9yZSh0eXBlb2YgcHVibGlzaGVySW5mb1trZXldID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ1VQREFURV9QVUJMSVNISU5HX0ZPUk0nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnVVBEQVRFX1BVQkxJU0hFUl9JTkZPJywga2V5LCBwdWJsaXNoZXJJbmZvW2tleV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwdWJsaXNoZXJJbmZvLmFwaV90b2tlbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RvcmUoJ1VQREFURV9QVUJMSVNIRVJfSU5GTycsICdpc1ZlcmlmaWNhdGlvblJlcXVlc3RlZCcsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWZhdWx0VmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoa2V5IGluIGRlZmF1bHRWYWx1ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0b3JlKCdVUERBVEVfREVGQVVMVF9WQUxVRVMnLCBrZXksIGRlZmF1bHRWYWx1ZXNba2V5XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGl2aXR5VmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoa2V5IGluIGFjdGl2aXR5VmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdG9yZSgnVVBEQVRFX0RFRkFVTFRfVkFMVUVTJywga2V5LCBhY3Rpdml0eVZhbHVlc1trZXldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH0pO1xuICAgICAgICBmdW5jdGlvbiB0b2dnbGVUYWIocGFnZSkge1xuICAgICAgICAgICAgdG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB0YWIudmFsdWUgPSBwYWdlO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHN1Ym1pdERlZmF1bHQoKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBkYXRhIGluIGRlZmF1bHRFcnJvci52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHVwZGF0ZVN0b3JlKCdVUERBVEVfREVGQVVMVF9FUlJPUicsIGRhdGEsICcnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHkudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBvc3QoJy9zZXR0aW5nL3N0b3JlL2RlZmF1bHQnLCBkZWZhdWx0Rm9ybS52YWx1ZSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHJldHVybiAodG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2UpOyB9LCA1MDAwKTtcbiAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2UudmFsdWUgPSByZXNwb25zZS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRvYXN0VHlwZS52YWx1ZSA9IHJlc3BvbnNlLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RvcmUoJ1VQREFURV9QVUJMSVNIRVJfSU5GTycsIHJlc3BvbnNlLmRhdGEuaGllcmFyY2hpYWwsICcnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdmFyIGVycm9ycyA9IGVycm9yLnJlc3BvbnNlLmRhdGEuZXJyb3JzO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGUgaW4gZXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0b3JlKCdVUERBVEVfREVGQVVMVF9FUlJPUicsIGUsIGVycm9yc1tlXVswXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHkudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHN1Ym1pdFB1Ymxpc2hpbmcodXJsKSB7XG4gICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGZvciAodmFyIGRhdGEgaW4gcHVibGlzaGluZ0Vycm9yLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdXBkYXRlU3RvcmUoJ1VQREFURV9QVUJMSVNISU5HX0VSUk9SJywgZGF0YSwgJycpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBvc3QodXJsLCBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgcHVibGlzaGluZ0luZm8udmFsdWUpLCBwdWJsaXNoaW5nRm9ybS52YWx1ZSkpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0b3JlKCdVUERBVEVfUFVCTElTSEVSX0lORk8nLCAncHVibGlzaGVyX3ZlcmlmaWNhdGlvbicsIHJlc3BvbnNlLmRhdGEucHVibGlzaGVyX3ZlcmlmaWNhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0b3JlKCdVUERBVEVfUFVCTElTSEVSX0lORk8nLCAndG9rZW5fdmVyaWZpY2F0aW9uJywgcmVzcG9uc2UuZGF0YS50b2tlbl92ZXJpZmljYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdG9yZSgnVVBEQVRFX1BVQkxJU0hFUl9JTkZPJywgJ2lzVmVyaWZpY2F0aW9uUmVxdWVzdGVkJywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHkudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0b2FzdFZpc2liaWxpdHkudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gKHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlKTsgfSwgNTAwMCk7XG4gICAgICAgICAgICAgICAgdG9hc3RNZXNzYWdlLnZhbHVlID0gcmVzcG9uc2UubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdFR5cGUudmFsdWUgPSByZXNwb25zZS5zdWNjZXNzO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdmFyIGVycm9ycyA9IGVycm9yLnJlc3BvbnNlLmRhdGEuZXJyb3JzO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGUgaW4gZXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0b3JlKCdVUERBVEVfUFVCTElTSElOR19FUlJPUicsIGUsIGVycm9yc1tlXVswXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHkudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHN1Ym1pdEZvcm0odXJsKSB7XG4gICAgICAgICAgICBpZiAodXJsID09PSB2b2lkIDApIHsgdXJsID0gJ3NldHRpbmcvdmVyaWZ5JzsgfVxuICAgICAgICAgICAgaWYgKHByb3BzLnVzZXJSb2xlID09PSAnYWRtaW4nKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhYi52YWx1ZSA9PT0gJ3B1Ymxpc2gnKVxuICAgICAgICAgICAgICAgICAgICBzdWJtaXRQdWJsaXNoaW5nKHVybCk7XG4gICAgICAgICAgICAgICAgaWYgKHRhYi52YWx1ZSA9PT0gJ2RlZmF1bHQnKVxuICAgICAgICAgICAgICAgICAgICBzdWJtaXREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCd1c2VyUm9sZScsIHByb3BzLnVzZXJSb2xlKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByb3BzOiBwcm9wcyxcbiAgICAgICAgICAgIHRhYjogdGFiLFxuICAgICAgICAgICAgZGVmYXVsdEVycm9yOiBkZWZhdWx0RXJyb3IsXG4gICAgICAgICAgICBwdWJsaXNoaW5nRXJyb3I6IHB1Ymxpc2hpbmdFcnJvcixcbiAgICAgICAgICAgIHN0b3JlOiBzdG9yZSxcbiAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHk6IGxvYWRlclZpc2liaWxpdHksXG4gICAgICAgICAgICB0b2FzdFZpc2liaWxpdHk6IHRvYXN0VmlzaWJpbGl0eSxcbiAgICAgICAgICAgIHRvYXN0TWVzc2FnZTogdG9hc3RNZXNzYWdlLFxuICAgICAgICAgICAgdG9hc3RUeXBlOiB0b2FzdFR5cGUsXG4gICAgICAgICAgICB0b2dnbGVUYWI6IHRvZ2dsZVRhYixcbiAgICAgICAgICAgIHN1Ym1pdEZvcm06IHN1Ym1pdEZvcm0sXG4gICAgICAgICAgICBsYW5ndWFnZTogbGFuZ3VhZ2UsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHN0b3JlXzEgPSByZXF1aXJlKFwiLi4vLi4vc3RvcmVcIik7XG52YXIgYWN0aW9uc18xID0gcmVxdWlyZShcIi4uLy4uL3N0b3JlL3NldHRpbmcvYWN0aW9uc1wiKTtcbnZhciBIb3ZlclRleHRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vLi4vLi4vY29tcG9uZW50cy9Ib3ZlclRleHQudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEhvdmVyVGV4dDogSG92ZXJUZXh0X3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBvcmdhbml6YXRpb246IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgZW1pdHM6IFsnc3VibWl0UHVibGlzaGluZyddLFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBlbWl0ID0gX2EuZW1pdDtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciB0YWIgPSAoMCwgdnVlXzEucmVmKSgncHVibGlzaCcpO1xuICAgICAgICB2YXIgc3RvcmUgPSAoMCwgc3RvcmVfMS51c2VTdG9yZSkoKTtcbiAgICAgICAgdmFyIHVzZXJSb2xlID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3VzZXJSb2xlJyk7XG4gICAgICAgIHZhciBwdWJsaXNoaW5nRm9ybSA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUucHVibGlzaGluZ0Zvcm07IH0pO1xuICAgICAgICB2YXIgcHVibGlzaGluZ0luZm8gPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLnB1Ymxpc2hpbmdJbmZvOyB9KTtcbiAgICAgICAgdmFyIHB1Ymxpc2hpbmdFcnJvciA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUucHVibGlzaGluZ0Vycm9yOyB9KTtcbiAgICAgICAgZnVuY3Rpb24gc3VibWl0UHVibGlzaGluZygpIHtcbiAgICAgICAgICAgIGlmICh1c2VyUm9sZSA9PT0gJ2FkbWluJykge1xuICAgICAgICAgICAgICAgIGVtaXQoJ3N1Ym1pdFB1Ymxpc2hpbmcnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBhdXRvVmVyaWZ5KCkge1xuICAgICAgICAgICAgZW1pdCgnc3VibWl0UHVibGlzaGluZycpO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZVN0b3JlKGtleSkge1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goYWN0aW9uc18xLkFjdGlvblR5cGVzLlVQREFURV9QVUJMSVNISU5HX0ZPUk0sIHtcbiAgICAgICAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogcHVibGlzaGluZ0Zvcm0udmFsdWVba2V5XSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHRvZ2dsZVRhYigpIHtcbiAgICAgICAgICAgIHRhYi52YWx1ZSA9IHRhYi52YWx1ZSA9PT0gJ3B1Ymxpc2gnID8gJ2RlZmF1bHQnIDogJ3B1Ymxpc2gnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0YWI6IHRhYixcbiAgICAgICAgICAgIHB1Ymxpc2hpbmdGb3JtOiBwdWJsaXNoaW5nRm9ybSxcbiAgICAgICAgICAgIHB1Ymxpc2hpbmdJbmZvOiBwdWJsaXNoaW5nSW5mbyxcbiAgICAgICAgICAgIHB1Ymxpc2hpbmdFcnJvcjogcHVibGlzaGluZ0Vycm9yLFxuICAgICAgICAgICAgc3RvcmU6IHN0b3JlLFxuICAgICAgICAgICAgcHJvcHM6IHByb3BzLFxuICAgICAgICAgICAgdXNlclJvbGU6IHVzZXJSb2xlLFxuICAgICAgICAgICAgc3VibWl0UHVibGlzaGluZzogc3VibWl0UHVibGlzaGluZyxcbiAgICAgICAgICAgIHRvZ2dsZVRhYjogdG9nZ2xlVGFiLFxuICAgICAgICAgICAgdXBkYXRlU3RvcmU6IHVwZGF0ZVN0b3JlLFxuICAgICAgICAgICAgYXV0b1ZlcmlmeTogYXV0b1ZlcmlmeSxcbiAgICAgICAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xuLy8gQ29tcG9uZW50c1xudmFyIFByb2dyZXNzTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1Byb2dyZXNzTG9hZGVyLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xudmFyIFRhYmxlTGlzdF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9jb21wb25lbnRzL1RhYmxlTGlzdC52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ09yZ2FuaXNhdGlvbkxpc3QnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGNvdW50cmllczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHNldHVwQ29tcGxldGVuZXNzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgcmVnaXN0cmF0aW9uVHlwZXM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBwdWJsaXNoZXJUeXBlczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIGRhdGFMaWNlbnNlczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIG9sZGVzdERhdGVzOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICAvLyByZWZcbiAgICAgICAgdmFyIGxvYWRlciA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgc3RhdHVzOiBmYWxzZSxcbiAgICAgICAgICAgIHRleHQ6IGxhbmd1YWdlLmNvbW1vbl9sYW5nLnBsZWFzZV93YWl0LFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHRvYXN0TWVzc2FnZSA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICAgIHR5cGU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBwcm92aWRlXG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgnbG9hZGVyJywgbG9hZGVyKTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCd0b2FzdERhdGEnLCB0b2FzdE1lc3NhZ2UpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBsYW5ndWFnZTogbGFuZ3VhZ2UsIHByb3BzOiBwcm9wcywgbG9hZGVyOiBsb2FkZXIsIHRvYXN0TWVzc2FnZTogdG9hc3RNZXNzYWdlLCBMb2FkZXI6IFByb2dyZXNzTG9hZGVyX3Z1ZV8xLmRlZmF1bHQsIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCwgVGFibGVMaXN0OiBUYWJsZUxpc3RfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgbGFuZ18xID0gcmVxdWlyZShcImxvZGFzaC9sYW5nXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1N5c3RlbVZlcnNpb24nLFxuICAgIHByb3BzOiB7XG4gICAgICAgIHBocERlcGVuZGVuY2llczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIG5vZGVEZXBlbmRlbmNpZXM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBwYWNrYWdlTWFuYWdlclZlcnNpb246IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBsYXRlc3RNYW5hZ2VyVmVyc2lvbjogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICAvKiBTZXRzIFVwZGF0ZSBzdGF0dXMgY2xhc3MgKi9cbiAgICAgICAgdmFyIGdldFN0YXR1c0NsYXNzID0gZnVuY3Rpb24gKHVwZGF0ZVN0YXR1cykge1xuICAgICAgICAgICAgaWYgKHVwZGF0ZVN0YXR1cyA9PSAnc2VtdmVyLXNhZmUtdXBkYXRlJykge1xuICAgICAgICAgICAgICAgIHJldHVybiAncm91bmRlZC1mdWxsIGJnLXNwcmluZy01MCBib3JkZXIgYm9yZGVyLXNwcmluZy01MCBweC01IHB5LTEgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMSB0ZXh0LXNtIGxlYWRpbmctbm9ybWFsIHRleHQtd2hpdGUnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICdyb3VuZGVkLWZ1bGwgYmctc2FsbW9uLTUwIGJvcmRlciBib3JkZXItc2FsbW9uLTUwIHB4LTUgcHktMSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0xIHRleHQtc20gbGVhZGluZy1ub3JtYWwgdGV4dC13aGl0ZSc7XG4gICAgICAgIH07XG4gICAgICAgIC8qIFJldHVybnMgVXBkYXRlIHN0YXR1cyAqL1xuICAgICAgICB2YXIgZ2V0U3RhdHVzTWVzc2FnZSA9IGZ1bmN0aW9uICh1cGRhdGVTdGF0dXMpIHtcbiAgICAgICAgICAgIGlmICh1cGRhdGVTdGF0dXMgPT0gJ3NlbXZlci1zYWZlLXVwZGF0ZScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1NhZmUgdXBkYXRlJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAnTWF5IGJyZWFrIHN5c3RlbSc7XG4gICAgICAgIH07XG4gICAgICAgIC8qIFJldHVybnMgTGF0ZXN0IHZlcnNpb24gb2YgcGFja2FnZSBtYW5hZ2VyICovXG4gICAgICAgIHZhciByZXNvbHZlTGF0ZXN0VmVyc2lvbiA9IGZ1bmN0aW9uIChsYXRlc3RNYW5hZ2VyVmVyc2lvbiwga2V5KSB7XG4gICAgICAgICAgICBpZiAoa2V5IGluIGxhdGVzdE1hbmFnZXJWZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxhdGVzdE1hbmFnZXJWZXJzaW9uW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChrZXkgPT0gJ2NvbXBvc2VyJykge1xuICAgICAgICAgICAgICAgIHJldHVybiAnMi41LjQnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICdOQSc7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBnZXRJbmRleCA9IGZ1bmN0aW9uIChpbmRleCkge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGluZGV4LnRvU3RyaW5nKCkpICsgMTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgZ2V0U3RhdHVzQ2xhc3M6IGdldFN0YXR1c0NsYXNzLCBnZXRTdGF0dXNNZXNzYWdlOiBnZXRTdGF0dXNNZXNzYWdlLCByZXNvbHZlTGF0ZXN0VmVyc2lvbjogcmVzb2x2ZUxhdGVzdFZlcnNpb24sIGdldEluZGV4OiBnZXRJbmRleCwgaXNFbXB0eTogbGFuZ18xLmlzRW1wdHkgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0FkbWluQmFyJyxcbiAgICBwcm9wczoge1xuICAgICAgICBuYW1lOiB7IHR5cGU6IFN0cmluZywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgb3JnYW5pemF0aW9uTmFtZTogeyB0eXBlOiBTdHJpbmcsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFN3aXRjaCBCYWNrXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgc3dpdGNoQmFjayA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKCcvbGlzdC1vcmdhbmlzYXRpb25zJyk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGxhbmd1YWdlOiBsYW5ndWFnZSwgc3dpdGNoQmFjazogc3dpdGNoQmFjayB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciBNdWx0aVNlbGVjdFdpdGhTZWFyY2hfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvTXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZ1ZVwiKSk7XG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS91dGlsc1wiKTtcbnZhciBCdXR0b25Db21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZVwiKSk7XG52YXIgVGFibGVQYWdpbmF0aW9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RhYmxlUGFnaW5hdGlvbi52dWVcIikpO1xudmFyIG11bHRpc2VsZWN0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkB2dWVmb3JtL211bHRpc2VsZWN0XCIpKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIERhdGVSYW5nZVdpZGdldF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9EYXRlUmFuZ2VXaWRnZXQudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnVGFibGVMaXN0JyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEJ0bkNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFBhZ2luYXRpb246IFRhYmxlUGFnaW5hdGlvbl92dWVfMS5kZWZhdWx0LFxuICAgICAgICBNdWx0aXNlbGVjdDogbXVsdGlzZWxlY3RfMS5kZWZhdWx0LFxuICAgICAgICBEYXRlUmFuZ2VXaWRnZXQ6IERhdGVSYW5nZVdpZGdldF92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgY291bnRyaWVzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc2V0dXBDb21wbGV0ZW5lc3M6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICByZWdpc3RyYXRpb25UeXBlczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHB1Ymxpc2hlclR5cGVzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgZGF0YUxpY2Vuc2VzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgb2xkZXN0RGF0ZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHZhciB0b2FzdE1lc3NhZ2UgPSAoMCwgdnVlXzEuaW5qZWN0KSgndG9hc3REYXRhJyk7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgbG9hZGVyID0gKDAsIHZ1ZV8xLmluamVjdCkoJ2xvYWRlcicpO1xuICAgICAgICB2YXIgZGF0ZURyb3Bkb3duID0gKDAsIHZ1ZV8xLnJlZikoKTtcbiAgICAgICAgdmFyIGNsZWFyRGF0ZSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGRhdGVUeXBlID0gKDAsIHZ1ZV8xLnJlZikoJ0FsbCBUaW1lJyk7XG4gICAgICAgIHZhciBnZXRDb3VudHJpZXNXaXRoUHJlZml4ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHJldHVyblZhbHVlRm9yQ291bnRyaWVzID0ge307XG4gICAgICAgICAgICB2YXIgY291bnRyeUNvZGVzID0gT2JqZWN0LmtleXMocHJvcHMuY291bnRyaWVzKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnRyeUNvZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuVmFsdWVGb3JDb3VudHJpZXNbY291bnRyeUNvZGVzW2ldXSA9IFwiXCIuY29uY2F0KGNvdW50cnlDb2Rlc1tpXSwgXCIgLSBcIikuY29uY2F0KHByb3BzLmNvdW50cmllc1tjb3VudHJ5Q29kZXNbaV1dKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZUZvckNvdW50cmllcztcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNvdW50cmllc1dpdGhQcmVmaXggPSBnZXRDb3VudHJpZXNXaXRoUHJlZml4KCk7XG4gICAgICAgIC8vIHJlYWN0aXZpdHlcbiAgICAgICAgdmFyIG9yZ2FuaXNhdGlvbkRhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIGRhdGE6IHt9LFxuICAgICAgICAgICAgc3RhdHVzOiAnZmV0Y2hpbmcnLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIG11bHRpc2VsZWN0U3R5bGUgPSAoMCwgdnVlXzEucmVmKSh7fSk7XG4gICAgICAgIHZhciBmaWx0ZXIgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHB1Ymxpc2hlcl90eXBlOiBbXSxcbiAgICAgICAgICAgIGRhdGFfbGljZW5zZTogW10sXG4gICAgICAgICAgICBjb3VudHJ5OiBbXSxcbiAgICAgICAgICAgIGNvbXBsZXRlbmVzczogJycsXG4gICAgICAgICAgICByZWdpc3RyYXRpb25fdHlwZTogJycsXG4gICAgICAgICAgICBzdGFydF9kYXRlOiAnJyxcbiAgICAgICAgICAgIGVuZF9kYXRlOiAnJyxcbiAgICAgICAgICAgIGRhdGVfdHlwZTogJ2NyZWF0ZWRfYXQnLFxuICAgICAgICAgICAgc2VsZWN0ZWRfZGF0ZV9maWx0ZXI6ICcnLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHJlc2V0UGFnaW5hdGlvbiA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHRvdGFsT3JnYW5pc2F0aW9uID0gKDAsIHZ1ZV8xLnJlZikoMCk7XG4gICAgICAgIHZhciByZWdpc3RyeUFwaUtleVN0YXR1cyA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoW10pO1xuICAgICAgICB2YXIgZGVmYXVsdFZhbHVlU3RhdHVzID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKShbXSk7XG4gICAgICAgIHZhciBzaG93TXVsdGlTZWxlY3RXaXRoU2VhcmNoID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgZHJvcGRvd25SYW5nZSA9IHtcbiAgICAgICAgICAgIGNyZWF0ZWRfYXQ6ICdSZWdpc3RlcmVkIGRhdGUgcmFuZ2UnLFxuICAgICAgICAgICAgbGFzdF9sb2dnZWRfaW46ICdMYXN0IGxvZ2luIGRhdGUgcmFuZ2UnLFxuICAgICAgICB9O1xuICAgICAgICB2YXIgc29ydFBhcmFtcyA9ICgwLCB2dWVfMS5yZWYpKHsgb3JkZXJCeTogJycsIGRpcmVjdGlvbjogJycgfSk7XG4gICAgICAgIHZhciBpZ25vcmVVcGRhdGVzID0gKDAsIGNvcmVfMS53YXRjaElnbm9yYWJsZSkoZmlsdGVyLCBmdW5jdGlvbiAoKSB7IHJldHVybiB1bmRlZmluZWQ7IH0pLmlnbm9yZVVwZGF0ZXM7XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc2hvd011bHRpU2VsZWN0V2l0aFNlYXJjaC52YWx1ZTsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICByb3RhdGVDbGFzcy52YWx1ZSA9ICdyb3RhdGUtMTgwJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJvdGF0ZUNsYXNzLnZhbHVlID0gJ3JvdGF0ZS0wJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY2xvc2VQdWJsaXNoZXJNb2RlbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGNsb3NlUHVibGlzaGVyTW9kZWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGNsZWFyRGF0ZUZpbHRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZpbHRlci5zdGFydF9kYXRlID0gJyc7XG4gICAgICAgICAgICBmaWx0ZXIuZW5kX2RhdGUgPSAnJztcbiAgICAgICAgICAgIGZpbHRlci5zZWxlY3RlZF9kYXRlX2ZpbHRlciA9ICcnO1xuICAgICAgICAgICAgY2xlYXJEYXRlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNsb3NlUHVibGlzaGVyTW9kZWwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzaG93TXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBnZW5lcmF0ZUxhYmVsID0gZnVuY3Rpb24gKGxhYmVsKSB7XG4gICAgICAgICAgICByZXR1cm4geyAnLS1sYWJlbCc6IFwiJ1wiLmNvbmNhdChsYWJlbCwgXCInXCIpIH07XG4gICAgICAgIH07XG4gICAgICAgIC8vbGlmZWN5Y2xlXG4gICAgICAgICgwLCB2dWVfMS5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBmaWx0ZXJQYXJhbXMgPSBnZXRGaWx0ZXJQYXJhbXNGcm9tUHJldmlvdXNQYWdlKCk7XG4gICAgICAgICAgICBpZiAoZmlsdGVyUGFyYW1zKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWx0ZXJQYXJhbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGtleSA9ICgwLCB1dGlsc18xLmtlYmFiQ2FzZVRvU25ha2VjYXNlKShmaWx0ZXJQYXJhbXNbaV1bMF0pO1xuICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBmaWx0ZXJQYXJhbXNbaV1bMV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChbJ3B1Ymxpc2hlcl90eXBlJywgJ2RhdGFfbGljZW5zZScsICdjb3VudHJ5J10uaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyW2tleV0ucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoa2V5ID09PSAnZGF0ZV90eXBlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZVR5cGUudmFsdWUgPSB2YWx1ZS5zcGxpdCgnLScpLmpvaW4oJyAnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcltrZXldID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmZXRjaE9yZ2FuaXNhdGlvbigxKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBnZXRGaWx0ZXJQYXJhbXNGcm9tUHJldmlvdXNQYWdlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgdmFyIHF1ZXJ5U3RyaW5nID0gKF9hID0gd2luZG93LmxvY2F0aW9uLmhyZWYpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50b1N0cmluZygpO1xuICAgICAgICAgICAgaWYgKHF1ZXJ5U3RyaW5nKSB7XG4gICAgICAgICAgICAgICAgcXVlcnlTdHJpbmcgPSBxdWVyeVN0cmluZy5zcGxpdCgnPycpWzFdO1xuICAgICAgICAgICAgICAgIHZhciBxdWVyeVBhcmFtc0luS2V5VmFsID0gW107XG4gICAgICAgICAgICAgICAgdmFyIHF1ZXJ5UGFyYW1zID0gcXVlcnlTdHJpbmcgPT09IG51bGwgfHwgcXVlcnlTdHJpbmcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHF1ZXJ5U3RyaW5nLnNwbGl0KCcmJyk7XG4gICAgICAgICAgICAgICAgaWYgKHF1ZXJ5UGFyYW1zKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcXVlcnlQYXJhbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfYiA9IHF1ZXJ5UGFyYW1zW2ldLnNwbGl0KCc9JyksIGtleSA9IF9iWzBdLCB2YWx1ZSA9IF9iWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zSW5LZXlWYWwucHVzaChba2V5LCB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdm9pZCAwID8gdmFsdWUgOiAnJ10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBxdWVyeVBhcmFtc0luS2V5VmFsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9O1xuICAgICAgICAvKipcbiAgICAgICAgICogRmV0Y2hpbmcgb3JnYW5pemF0aW9uIGxpc3RcbiAgICAgICAgICpcbiAgICAgICAgICovXG4gICAgICAgIHZhciBjdXJyZW50VVJMID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XG4gICAgICAgIHZhciBmZXRjaE9yZ2FuaXNhdGlvbiA9IGZ1bmN0aW9uIChhY3RpdmVfcGFnZSkge1xuICAgICAgICAgICAgaWYgKGFjdGl2ZV9wYWdlID09PSB2b2lkIDApIHsgYWN0aXZlX3BhZ2UgPSAxOyB9XG4gICAgICAgICAgICBvcmdhbmlzYXRpb25EYXRhLnN0YXR1cyA9ICdmZXRjaGluZyc7XG4gICAgICAgICAgICB2YXIgcXVlcnlTdHJpbmcgPSAnJztcbiAgICAgICAgICAgIGlmIChjdXJyZW50VVJMLmluY2x1ZGVzKCc/JykpIHtcbiAgICAgICAgICAgICAgICBxdWVyeVN0cmluZyA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2g7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhY3RpdmVfcGFnZSA9IGFjdGl2ZV9wYWdlICE9PSBudWxsICYmIGFjdGl2ZV9wYWdlICE9PSB2b2lkIDAgPyBhY3RpdmVfcGFnZSA6IDE7XG4gICAgICAgICAgICB2YXIgZW5kcG9pbnQgPSBcIi9saXN0LW9yZ2FuaXNhdGlvbnMvcGFnZS9cIi5jb25jYXQoYWN0aXZlX3BhZ2UpLmNvbmNhdChxdWVyeVN0cmluZyk7XG4gICAgICAgICAgICBpZiAoc29ydFBhcmFtcy52YWx1ZS5vcmRlckJ5KSB7XG4gICAgICAgICAgICAgICAgdXJsUGFyYW1zLmFwcGVuZCgnb3JkZXJCeScsIHNvcnRQYXJhbXMudmFsdWUub3JkZXJCeSk7XG4gICAgICAgICAgICAgICAgdXJsUGFyYW1zLmFwcGVuZCgnZGlyZWN0aW9uJywgc29ydFBhcmFtcy52YWx1ZS5kaXJlY3Rpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzRmlsdGVyQXBwbGllZC52YWx1ZSB8fFxuICAgICAgICAgICAgICAgIEJvb2xlYW4oc29ydFBhcmFtcy52YWx1ZS5vcmRlckJ5ICYmIHNvcnRQYXJhbXMudmFsdWUuZGlyZWN0aW9uKSkge1xuICAgICAgICAgICAgICAgIHF1ZXJ5U3RyaW5nID0gcXVlcnlTdHJpbmcgIT09IG51bGwgJiYgcXVlcnlTdHJpbmcgIT09IHZvaWQgMCA/IHF1ZXJ5U3RyaW5nIDogJyZxPSc7XG4gICAgICAgICAgICAgICAgZW5kcG9pbnQgPSBxdWVyeVN0cmluZyAhPT0gJycgPyBlbmRwb2ludCA6IFwiXCIuY29uY2F0KGVuZHBvaW50KTtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBmaWx0ZXJLZXkgaW4gZmlsdGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJbZmlsdGVyS2V5XSAmJiBmaWx0ZXJbZmlsdGVyS2V5XS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cmxQYXJhbXMuYXBwZW5kKGZpbHRlcktleSwgZmlsdGVyW2ZpbHRlcktleV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLmdldChlbmRwb2ludCwge1xuICAgICAgICAgICAgICAgIHBhcmFtczogaXNGaWx0ZXJBcHBsaWVkLnZhbHVlIHx8XG4gICAgICAgICAgICAgICAgICAgIEJvb2xlYW4oc29ydFBhcmFtcy52YWx1ZS5vcmRlckJ5ICYmIHNvcnRQYXJhbXMudmFsdWUuZGlyZWN0aW9uKVxuICAgICAgICAgICAgICAgICAgICA/IHVybFBhcmFtc1xuICAgICAgICAgICAgICAgICAgICA6ICcnLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIHRvdGFsT3JnYW5pc2F0aW9uLnZhbHVlID0gKF9hID0gcmVzcG9uc2UuZGF0YSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRvdGFsO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhLmRhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcmdhbmlzYXRpb25EYXRhLnN0YXR1cyA9ICdlbXB0eSc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcmdhbmlzYXRpb25EYXRhLnN0YXR1cyA9ICdzdWNjZXNzJztcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yZ2FuaXNhdGlvbkRhdGEuZGF0YSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoU3RhdHVzQXJyYXlzKG9yZ2FuaXNhdGlvbkRhdGEuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG9yZ2FuaXNhdGlvbkRhdGEuc3RhdHVzID0gJ2ZhaWxlZCB0byByZXRyaWV2ZSBkYXRhJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHVybFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMocXVlcnlTdHJpbmcpO1xuICAgICAgICB9O1xuICAgICAgICAvKipcbiAgICAgICAgICogUHJveHkgVXNlclxuICAgICAgICAgKi9cbiAgICAgICAgLy8gZGlzcGxheS9oaWRlIHZhbGlkYXRvciBsb2FkZXJcbiAgICAgICAgdmFyIHByb3h5VXNlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgICAgICAgbG9hZGVyLnN0YXR1cyA9IHRydWU7XG4gICAgICAgICAgICBsb2FkZXIudGV4dCA9IGxhbmd1YWdlLmJ1dHRvbl9sYW5nLnByb3h5X2xvZ2luO1xuICAgICAgICAgICAgdmFyIGVuZHBvaW50ID0gXCIvcHJveHktb3JnYW5pc2F0aW9uL1wiLmNvbmNhdChpZCk7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KGVuZHBvaW50KS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKCcvYWN0aXZpdGllcycpO1xuICAgICAgICAgICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRlci5zdGF0dXMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3RNZXNzYWdlLm1lc3NhZ2UgPSByZXNwb25zZS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2UudHlwZSA9IHJlc3BvbnNlLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTb3J0aW5nIEJ5IHVwZGF0ZSBvblxuICAgICAgICAgKi9cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICB2YXIgcXVlcnkgPSAnJywgZGVmYXVsdFNvcnREaXJlY3Rpb24gPSAnZGVzY2VuZGluZycsIFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgIHNvcnREaXJlY3Rpb24gPSAnZGVzYyc7XG4gICAgICAgIHZhciBxdWVyeVN0cmluZyA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2g7XG4gICAgICAgIHZhciB1cmxQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHF1ZXJ5U3RyaW5nKTtcbiAgICAgICAgdmFyIG9yZGVyVHlwZSA9ICgwLCB2dWVfMS5yZWYpKCcnKTtcbiAgICAgICAgb3JkZXJUeXBlLnZhbHVlID0gKF9hID0gdXJsUGFyYW1zLmdldCgnb3JkZXJCeScpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJztcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICB2YXIgcmFuZ2UgPSAnJztcbiAgICAgICAgdmFyIHNvcnRpbmdEaXJlY3Rpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gc29ydFBhcmFtcy52YWx1ZS5kaXJlY3Rpb24gPT09ICdhc2MnID8gJ2Rlc2NlbmRpbmcnIDogJ2FzY2VuZGluZyc7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzb3J0QnkgPSBmdW5jdGlvbiAob3JkZXIpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBzdGFydERhdGUsIGVuZERhdGU7XG4gICAgICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2QpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9kLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0UGFnaW5hdGlvbi52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBzb3J0UGFyYW1zLnZhbHVlLm9yZGVyQnkgPSBvcmRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRQYXJhbXMudmFsdWUuZGlyZWN0aW9uID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0UGFyYW1zLnZhbHVlLmRpcmVjdGlvbiA9PT0gJ2Rlc2MnID8gJ2FzYycgOiAnZGVzYyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFVSTC5pbmNsdWRlcygnPycpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnkgPSAoX2EgPSB1cmxQYXJhbXMuZ2V0KCdxJykpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnREaXJlY3Rpb24gPSB1cmxQYXJhbXMuZ2V0KCdkaXJlY3Rpb24nKSA9PT0gJ2Rlc2MnID8gJ2FzYycgOiAnZGVzYyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnREYXRlID0gKF9iID0gdXJsUGFyYW1zLmdldCgnc3RhcnRfZGF0ZScpKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmREYXRlID0gKF9jID0gdXJsUGFyYW1zLmdldCgnZW5kX2RhdGUnKSkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0RGF0ZSAmJiBlbmREYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlID0gXCImc3RhcnRfZGF0ZT1cIi5jb25jYXQoc3RhcnREYXRlLCBcIiZlbmRfZGF0ZT1cIikuY29uY2F0KGVuZERhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIGZldGNoT3JnYW5pc2F0aW9uKDEpXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgX2Quc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRQYWdpbmF0aW9uLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9O1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIFtcbiAgICAgICAgICAgIGZpbHRlci5jb3VudHJ5LFxuICAgICAgICAgICAgZmlsdGVyLmNvbXBsZXRlbmVzcyxcbiAgICAgICAgICAgIGZpbHRlci5yZWdpc3RyYXRpb25fdHlwZSxcbiAgICAgICAgICAgIGZpbHRlci5wdWJsaXNoZXJfdHlwZSxcbiAgICAgICAgICAgIGZpbHRlci5kYXRhX2xpY2Vuc2UsXG4gICAgICAgICAgICBmaWx0ZXIuc3RhcnRfZGF0ZSxcbiAgICAgICAgICAgIGZpbHRlci5lbmRfZGF0ZSxcbiAgICAgICAgICAgIGZpbHRlci5kYXRlX3R5cGUsXG4gICAgICAgIF07IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZldGNoT3JnYW5pc2F0aW9uKCk7XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgdmFyIHJlc2V0QWxsRmlsdGVycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlnbm9yZVVwZGF0ZXMoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGZpbHRlci5jb3VudHJ5ID0gW107XG4gICAgICAgICAgICAgICAgZmlsdGVyLnB1Ymxpc2hlcl90eXBlID0gW107XG4gICAgICAgICAgICAgICAgZmlsdGVyLmRhdGFfbGljZW5zZSA9IFtdO1xuICAgICAgICAgICAgICAgIGZpbHRlci5jb21wbGV0ZW5lc3MgPSAnJztcbiAgICAgICAgICAgICAgICBmaWx0ZXIucmVnaXN0cmF0aW9uX3R5cGUgPSAnJztcbiAgICAgICAgICAgICAgICBmaWx0ZXIuc3RhcnRfZGF0ZSA9ICcnO1xuICAgICAgICAgICAgICAgIGZpbHRlci5lbmRfZGF0ZSA9ICcnO1xuICAgICAgICAgICAgICAgIGZpbHRlci5kYXRlX3R5cGUgPSAnY3JlYXRlZF9hdCc7XG4gICAgICAgICAgICAgICAgZmlsdGVyLnNlbGVjdGVkX2RhdGVfZmlsdGVyID0gJyc7XG4gICAgICAgICAgICAgICAgY2xlYXJEYXRlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgaXNGaWx0ZXJBcHBsaWVkID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gKGZpbHRlci5jb3VudHJ5Lmxlbmd0aCArXG4gICAgICAgICAgICAgICAgZmlsdGVyLnB1Ymxpc2hlcl90eXBlLmxlbmd0aCArXG4gICAgICAgICAgICAgICAgZmlsdGVyLmRhdGFfbGljZW5zZS5sZW5ndGggIT1cbiAgICAgICAgICAgICAgICAwIHx8XG4gICAgICAgICAgICAgICAgZmlsdGVyLmNvbXBsZXRlbmVzcyAhPT0gJycgfHxcbiAgICAgICAgICAgICAgICBmaWx0ZXIucmVnaXN0cmF0aW9uX3R5cGUgIT09ICcnIHx8XG4gICAgICAgICAgICAgICAgKGZpbHRlci5zdGFydF9kYXRlICE9PSAnJyAmJiBmaWx0ZXIuZW5kX2RhdGUgIT09ICcnKSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgcmVmcmVzaFN0YXR1c0FycmF5cyA9IGZ1bmN0aW9uIChvcmdEYXRhKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMCwgX2QgPSBvcmdEYXRhLmRhdGE7IF9pIDwgX2QubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIG9yZ0RhdHVtID0gX2RbX2ldO1xuICAgICAgICAgICAgICAgIHJlZ2lzdHJ5QXBpS2V5U3RhdHVzW29yZ0RhdHVtLmlkXSA9XG4gICAgICAgICAgICAgICAgICAgIChfYyA9IChfYiA9IChfYSA9IG9yZ0RhdHVtID09PSBudWxsIHx8IG9yZ0RhdHVtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcmdEYXR1bS5zZXR0aW5ncykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnB1Ymxpc2hpbmdfaW5mbykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnRva2VuX3ZlcmlmaWNhdGlvbikgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogZmFsc2U7XG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlU3RhdHVzW29yZ0RhdHVtLmlkXSA9IGNoZWNrSWZEZWZhdWx0VmFsdWVzQXJlVmFsaWQob3JnRGF0dW0gPyBvcmdEYXR1bS5zZXR0aW5ncyA6IGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNoZWNrSWZEZWZhdWx0VmFsdWVzQXJlVmFsaWQgPSBmdW5jdGlvbiAoc2V0dGluZ3MpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICAgICAgICAgIGlmIChzZXR0aW5ncykge1xuICAgICAgICAgICAgICAgIHZhciBkZWZhdWx0VmFsdWVzID0gc2V0dGluZ3MuZGVmYXVsdF92YWx1ZXM7XG4gICAgICAgICAgICAgICAgdmFyIGFjdGl2aXR5RGVmYXVsdFZhbHVlcyA9IHNldHRpbmdzLmFjdGl2aXR5X2RlZmF1bHRfdmFsdWVzO1xuICAgICAgICAgICAgICAgIHJldHVybiAhISgoKF9hID0gZGVmYXVsdFZhbHVlcyA9PT0gbnVsbCB8fCBkZWZhdWx0VmFsdWVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkZWZhdWx0VmFsdWVzLmRlZmF1bHRfY3VycmVuY3kpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGZhbHNlKSAmJlxuICAgICAgICAgICAgICAgICAgICAoKF9iID0gZGVmYXVsdFZhbHVlcyA9PT0gbnVsbCB8fCBkZWZhdWx0VmFsdWVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkZWZhdWx0VmFsdWVzLmRlZmF1bHRfbGFuZ3VhZ2UpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IGZhbHNlKSAmJlxuICAgICAgICAgICAgICAgICAgICAoKF9jID0gYWN0aXZpdHlEZWZhdWx0VmFsdWVzID09PSBudWxsIHx8IGFjdGl2aXR5RGVmYXVsdFZhbHVlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogYWN0aXZpdHlEZWZhdWx0VmFsdWVzLmhpZXJhcmNoeSkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogZmFsc2UpICYmXG4gICAgICAgICAgICAgICAgICAgICgoX2QgPSBhY3Rpdml0eURlZmF1bHRWYWx1ZXMgPT09IG51bGwgfHwgYWN0aXZpdHlEZWZhdWx0VmFsdWVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhY3Rpdml0eURlZmF1bHRWYWx1ZXMuYnVkZ2V0X25vdF9wcm92aWRlZCkgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogZmFsc2UpICYmXG4gICAgICAgICAgICAgICAgICAgICgoYWN0aXZpdHlEZWZhdWx0VmFsdWVzID09PSBudWxsIHx8IGFjdGl2aXR5RGVmYXVsdFZhbHVlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogYWN0aXZpdHlEZWZhdWx0VmFsdWVzLmh1bWFuaXRhcmlhbikgIT0gbnVsbCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKGFjdGl2aXR5RGVmYXVsdFZhbHVlcyA9PT0gbnVsbCB8fCBhY3Rpdml0eURlZmF1bHRWYWx1ZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFjdGl2aXR5RGVmYXVsdFZhbHVlcy5odW1hbml0YXJpYW4pICE9ICcnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAoYWN0aXZpdHlEZWZhdWx0VmFsdWVzID09PSBudWxsIHx8IGFjdGl2aXR5RGVmYXVsdFZhbHVlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogYWN0aXZpdHlEZWZhdWx0VmFsdWVzLmh1bWFuaXRhcmlhbikgIT0gZmFsc2UpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHNldERhdGVSYW5nZURhdGUgPSBmdW5jdGlvbiAoc3RhcnREYXRlLCBlbmREYXRlLCBzZWxlY3RlZERhdGVGaWx0ZXIpIHtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZERhdGVGaWx0ZXIgPT09IHZvaWQgMCkgeyBzZWxlY3RlZERhdGVGaWx0ZXIgPSAnJzsgfVxuICAgICAgICAgICAgZmlsdGVyLnN0YXJ0X2RhdGUgPSBzdGFydERhdGU7XG4gICAgICAgICAgICBmaWx0ZXIuZW5kX2RhdGUgPSBlbmREYXRlO1xuICAgICAgICAgICAgZmlsdGVyLnNlbGVjdGVkX2RhdGVfZmlsdGVyID0gc2VsZWN0ZWREYXRlRmlsdGVyO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgc2V0RGF0ZVR5cGUgPSBmdW5jdGlvbiAoZGF0ZVR5cGUpIHtcbiAgICAgICAgICAgIGZpbHRlci5kYXRlX3R5cGUgPSBkYXRlVHlwZTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHJvdGF0ZUNsYXNzID0gKDAsIHZ1ZV8xLnJlZikoJycpO1xuICAgICAgICB2YXIgdG9nZ2xlU2hvd011bHRpU2VsZWN0ID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIHZhciByZWN0ID0gZXZlbnQudGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgbXVsdGlzZWxlY3RTdHlsZS52YWx1ZSA9IHtcbiAgICAgICAgICAgICAgICB0b3A6IE51bWJlcihyZWN0LnRvcCkgPCAxMDAgPyAyMTAgKyAncHgnIDogTnVtYmVyKHJlY3QudG9wKSArIDUwICsgJ3B4JyxcbiAgICAgICAgICAgICAgICBsZWZ0OiBOdW1iZXIocmVjdC5sZWZ0KSArICdweCcsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgc2hvd011bHRpU2VsZWN0V2l0aFNlYXJjaC52YWx1ZSA9ICFzaG93TXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZhbHVlO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgc2V0U2VsZWN0ZWRQdWJsaXNoZXIgPSBmdW5jdGlvbiAocHVibGlzaGVyVHlwZXMpIHtcbiAgICAgICAgICAgIGZpbHRlci5wdWJsaXNoZXJfdHlwZSA9IHB1Ymxpc2hlclR5cGVzO1xuICAgICAgICB9O1xuICAgICAgICAvKlxuICAgICAgICAgKiBGb3IgbWFwcGluZyBjb3VudHJ5LCBwdWJsaXNoZXJfdHlwZSBhbmQgZGF0YSBsaWNlbnNlXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgc2hvd01hcHBlZERhdGEgPSBmdW5jdGlvbiAoa2V5LCBkYXRhLCBtYXApIHtcbiAgICAgICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICAgICAgaWYgKGtleSA9PSAnZGF0YV9saWNlbnNlJykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgbGljZW5zZSA9IGRhdGFba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgbGljZW5zZSA9IGxpY2Vuc2UgPT09IG51bGwgfHwgbGljZW5zZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogbGljZW5zZS50cmltKCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBsaWNlbnNlID8gbWFwW2xpY2Vuc2VdIDogbGFuZ3VhZ2UuY29tbW9uX2xhbmcubWlzc2luZy5ub3RfYXZhaWxhYmxlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YVtrZXldID8gbWFwW2RhdGFba2V5XV0gOiBsYW5ndWFnZS5jb21tb25fbGFuZy5taXNzaW5nLm5vdF9hdmFpbGFibGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbGFuZ3VhZ2UuY29tbW9uX2xhbmcubWlzc2luZy5ub3RfYXZhaWxhYmxlO1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgQnRuQ29tcG9uZW50OiBCdXR0b25Db21wb25lbnRfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgICAgIE11bHRpc2VsZWN0OiBtdWx0aXNlbGVjdF8xLmRlZmF1bHQsXG4gICAgICAgICAgICBEYXRlUmFuZ2VXaWRnZXQ6IERhdGVSYW5nZVdpZGdldF92dWVfMS5kZWZhdWx0LFxuICAgICAgICAgICAgTXVsdGlTZWxlY3RXaXRoU2VhcmNoOiBNdWx0aVNlbGVjdFdpdGhTZWFyY2hfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgICAgIG9yZ2FuaXNhdGlvbkRhdGE6IG9yZ2FuaXNhdGlvbkRhdGEsXG4gICAgICAgICAgICBkcm9wZG93blJhbmdlOiBkcm9wZG93blJhbmdlLFxuICAgICAgICAgICAgc2V0U2VsZWN0ZWRQdWJsaXNoZXI6IHNldFNlbGVjdGVkUHVibGlzaGVyLFxuICAgICAgICAgICAgdG9nZ2xlU2hvd011bHRpU2VsZWN0OiB0b2dnbGVTaG93TXVsdGlTZWxlY3QsXG4gICAgICAgICAgICBzZXREYXRlVHlwZTogc2V0RGF0ZVR5cGUsXG4gICAgICAgICAgICBzZXREYXRlUmFuZ2VEYXRlOiBzZXREYXRlUmFuZ2VEYXRlLFxuICAgICAgICAgICAgc29ydEJ5OiBzb3J0QnksXG4gICAgICAgICAgICByZXNldEFsbEZpbHRlcnM6IHJlc2V0QWxsRmlsdGVycyxcbiAgICAgICAgICAgIHNvcnRpbmdEaXJlY3Rpb246IHNvcnRpbmdEaXJlY3Rpb24sXG4gICAgICAgICAgICBkZWZhdWx0U29ydERpcmVjdGlvbjogZGVmYXVsdFNvcnREaXJlY3Rpb24sXG4gICAgICAgICAgICBwcm94eVVzZXI6IHByb3h5VXNlcixcbiAgICAgICAgICAgIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0LFxuICAgICAgICAgICAgZmV0Y2hPcmdhbmlzYXRpb246IGZldGNoT3JnYW5pc2F0aW9uLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlU3RhdHVzOiBkZWZhdWx0VmFsdWVTdGF0dXMsXG4gICAgICAgICAgICByZWdpc3RyeUFwaUtleVN0YXR1czogcmVnaXN0cnlBcGlLZXlTdGF0dXMsXG4gICAgICAgICAgICBvcmRlclR5cGU6IG9yZGVyVHlwZSxcbiAgICAgICAgICAgIGNsZWFyRGF0ZTogY2xlYXJEYXRlLFxuICAgICAgICAgICAgZmlsdGVyOiBmaWx0ZXIsXG4gICAgICAgICAgICBzbmFrZUNhc2VUb1NlbnRlbmNlQ2FzZTogdXRpbHNfMS5zbmFrZUNhc2VUb1NlbnRlbmNlQ2FzZSxcbiAgICAgICAgICAgIGlzRmlsdGVyQXBwbGllZDogaXNGaWx0ZXJBcHBsaWVkLFxuICAgICAgICAgICAgcHJvcHM6IHByb3BzLFxuICAgICAgICAgICAgc2hvd011bHRpU2VsZWN0V2l0aFNlYXJjaDogc2hvd011bHRpU2VsZWN0V2l0aFNlYXJjaCxcbiAgICAgICAgICAgIGRhdGVUeXBlOiBkYXRlVHlwZSxcbiAgICAgICAgICAgIHJvdGF0ZUNsYXNzOiByb3RhdGVDbGFzcyxcbiAgICAgICAgICAgIG11bHRpc2VsZWN0U3R5bGU6IG11bHRpc2VsZWN0U3R5bGUsXG4gICAgICAgICAgICBjbGVhckRhdGVGaWx0ZXI6IGNsZWFyRGF0ZUZpbHRlcixcbiAgICAgICAgICAgIGRhdGVEcm9wZG93bjogZGF0ZURyb3Bkb3duLFxuICAgICAgICAgICAgc29ydFBhcmFtczogc29ydFBhcmFtcyxcbiAgICAgICAgICAgIHJlc2V0UGFnaW5hdGlvbjogcmVzZXRQYWdpbmF0aW9uLFxuICAgICAgICAgICAgc2hvd01hcHBlZERhdGE6IHNob3dNYXBwZWREYXRhLFxuICAgICAgICAgICAgdG90YWxPcmdhbmlzYXRpb246IHRvdGFsT3JnYW5pc2F0aW9uLFxuICAgICAgICAgICAgY291bnRyaWVzV2l0aFByZWZpeDogY291bnRyaWVzV2l0aFByZWZpeCxcbiAgICAgICAgICAgIGdlbmVyYXRlTGFiZWw6IGdlbmVyYXRlTGFiZWwsXG4gICAgICAgICAgICBsYW5ndWFnZTogbGFuZ3VhZ2VcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi9jb21wb25lbnRzL0xvYWRlci52dWVcIikpO1xudmFyIFRvYXN0TWVzc2FnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlXCIpKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgUG9wdXBNb2RhbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZVwiKSk7XG52YXIgZW5jcnlwdGlvbl8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2VuY3J5cHRpb25cIikpO1xudmFyIG11bHRpc2VsZWN0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkB2dWVmb3JtL211bHRpc2VsZWN0XCIpKTtcbnZhciBtb21lbnRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwibW9tZW50XCIpKTtcbnZhciBUYWJsZVBhZ2luYXRpb25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVGFibGVQYWdpbmF0aW9uLnZ1ZVwiKSk7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBEYXRlUmFuZ2VXaWRnZXRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvRGF0ZVJhbmdlV2lkZ2V0LnZ1ZVwiKSk7XG52YXIgdXRpbHNfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3V0aWxzXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1VzZXJMaXN0aW5nJyxcbiAgICBwcm9wczoge1xuICAgICAgICBvcmdhbml6YXRpb25zOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc3RhdHVzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgcm9sZXM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICB1c2VyUm9sZTogeyB0eXBlOiBTdHJpbmcsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIG9sZGVzdERhdGVzOiB7IHR5cGU6IFN0cmluZywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgdG9hc3REYXRhID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZmlsdGVyID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBvcmdhbml6YXRpb246IFtdLFxuICAgICAgICAgICAgcm9sZXM6IFtdLFxuICAgICAgICAgICAgc3RhdHVzOiAnJyxcbiAgICAgICAgICAgIG9yZGVyQnk6ICcnLFxuICAgICAgICAgICAgZGlyZWN0aW9uOiAnJyxcbiAgICAgICAgICAgIHE6ICcnLFxuICAgICAgICAgICAgc3RhcnRfZGF0ZTogJycsXG4gICAgICAgICAgICBlbmRfZGF0ZTogJycsXG4gICAgICAgICAgICBkYXRlX3R5cGU6ICdjcmVhdGVkX2F0JyxcbiAgICAgICAgICAgIHNlbGVjdGVkX2RhdGVfZmlsdGVyOiAnJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBpc0xvYWRlclZpc2libGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBhZGRVc2VyRm9ybSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGVkaXRVc2VyRm9ybSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHVzZXJzRGF0YSA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoeyBkYXRhOiBbXSB9KTtcbiAgICAgICAgdmFyIGlzRW1wdHkgPSAoMCwgdnVlXzIucmVmKSh0cnVlKTtcbiAgICAgICAgdmFyIGFsbFNlbGVjdGVkID0gKDAsIHZ1ZV8yLnJlZikoW10pO1xuICAgICAgICB2YXIgZGVsZXRlTW9kYWwgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBkZWxldGVJZCA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciB0b3RhbFVzZXIgPSAoMCwgdnVlXzIucmVmKSgwKTtcbiAgICAgICAgdmFyIHN0YXR1c0lkID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIHN0YXR1c01vZGFsID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc3RhdHVzVmFsdWUgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgc3RhdHVzVXNlcm5hbWUgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgZGVsZXRlVXNlcm5hbWUgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgbG9hZGVyID0gKDAsIHZ1ZV8yLnJlZikodHJ1ZSk7XG4gICAgICAgIHZhciBmZXRjaGluZ1RhYmxlRGF0YSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNlbGVjdGVkSWRzID0gKDAsIHZ1ZV8yLnJlZikoe30pO1xuICAgICAgICB2YXIgY2hlY2tsaXN0ID0gKDAsIHZ1ZV8yLnJlZikoW10pO1xuICAgICAgICB2YXIgY3VycmVudHBhZ2VEYXRhID0gKDAsIHZ1ZV8yLnJlZikoW10pO1xuICAgICAgICB2YXIgY2xlYXJEYXRlID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgZWRpdFVzZXJJZCA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIGRhdGVUeXBlID0gKDAsIHZ1ZV8yLnJlZikoJ0FsbCBUaW1lJyk7XG4gICAgICAgIHZhciBkcm9wZG93blJhbmdlID0ge1xuICAgICAgICAgICAgY3JlYXRlZF9hdDogJ1VzZXIgY3JlYXRlZCBkYXRlJyxcbiAgICAgICAgICAgIGxhc3RfbG9nZ2VkX2luOiAnTGFzdCBsb2dpbiBkYXRlJyxcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGZvcm1EYXRhID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB1c2VybmFtZTogJycsXG4gICAgICAgICAgICBmdWxsX25hbWU6ICcnLFxuICAgICAgICAgICAgZW1haWw6ICcnLFxuICAgICAgICAgICAgc3RhdHVzOiAnMScsXG4gICAgICAgICAgICByb2xlX2lkOiAnJyxcbiAgICAgICAgICAgIHBhc3N3b3JkOiAnJyxcbiAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZm9ybUVycm9yID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB1c2VybmFtZTogJycsXG4gICAgICAgICAgICBmdWxsX25hbWU6ICcnLFxuICAgICAgICAgICAgZW1haWw6ICcnLFxuICAgICAgICAgICAgc3RhdHVzOiAnJyxcbiAgICAgICAgICAgIHJvbGVfaWQ6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmQ6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAnJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBpc0ZpbHRlckFwcGxpZWQgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiAoZmlsdGVyLm9yZ2FuaXphdGlvbi5sZW5ndGggKyBmaWx0ZXIucm9sZXMubGVuZ3RoICE9IDAgfHxcbiAgICAgICAgICAgICAgICBmaWx0ZXIuc3RhdHVzICE9ICcnIHx8XG4gICAgICAgICAgICAgICAgKGZpbHRlci5zdGFydF9kYXRlICYmIGZpbHRlci5lbmRfZGF0ZSkpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGlnbm9yZVVwZGF0ZXMgPSAoMCwgY29yZV8xLndhdGNoSWdub3JhYmxlKSh0b2FzdERhdGEsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSwge1xuICAgICAgICAgICAgZmx1c2g6ICdzeW5jJyxcbiAgICAgICAgfSkuaWdub3JlVXBkYXRlcztcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiB0b2FzdERhdGEudmlzaWJpbGl0eTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZ25vcmVUb2FzdFVwZGF0ZSgpO1xuICAgICAgICAgICAgfSwgMjAwMCk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaWdub3JlVG9hc3RVcGRhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZ25vcmVVcGRhdGVzKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9ICcnO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjbGVhckRhdGVGaWx0ZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBmaWx0ZXIuc2VsZWN0ZWRfZGF0ZV9maWx0ZXIgPSAnJztcbiAgICAgICAgICAgIGNsZWFyRGF0ZVJhbmdlRmlsdGVyKCk7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBmaWx0ZXJQYXJhbXMgPSBnZXRGaWx0ZXJQYXJhbXNGcm9tUHJldmlvdXNQYWdlKCk7XG4gICAgICAgICAgICBpZiAoZmlsdGVyUGFyYW1zKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWx0ZXJQYXJhbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGtleSA9ICgwLCB1dGlsc18xLmtlYmFiQ2FzZVRvU25ha2VjYXNlKShmaWx0ZXJQYXJhbXNbaV1bMF0pO1xuICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBmaWx0ZXJQYXJhbXNbaV1bMV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChbJ3JvbGVzJywgJ29yZ2FuaXphdGlvbiddLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcltrZXldLnB1c2godmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGtleSA9PT0gJ2RhdGVfdHlwZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVUeXBlLnZhbHVlID0gdmFsdWUuc3BsaXQoJy0nKS5qb2luKCcgJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGdldEZpbHRlclBhcmFtc0Zyb21QcmV2aW91c1BhZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICB2YXIgcXVlcnlTdHJpbmcgPSAoX2EgPSB3aW5kb3cubG9jYXRpb24uaHJlZikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICBpZiAocXVlcnlTdHJpbmcpIHtcbiAgICAgICAgICAgICAgICBxdWVyeVN0cmluZyA9IHF1ZXJ5U3RyaW5nLnNwbGl0KCc/JylbMV07XG4gICAgICAgICAgICAgICAgdmFyIHF1ZXJ5UGFyYW1zSW5LZXlWYWwgPSBbXTtcbiAgICAgICAgICAgICAgICB2YXIgcXVlcnlQYXJhbXMgPSBxdWVyeVN0cmluZyA9PT0gbnVsbCB8fCBxdWVyeVN0cmluZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcXVlcnlTdHJpbmcuc3BsaXQoJyYnKTtcbiAgICAgICAgICAgICAgICBpZiAocXVlcnlQYXJhbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWVyeVBhcmFtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9iID0gcXVlcnlQYXJhbXNbaV0uc3BsaXQoJz0nKSwga2V5ID0gX2JbMF0sIHZhbHVlID0gX2JbMV07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlQYXJhbXNJbktleVZhbC5wdXNoKFtrZXksIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB2b2lkIDAgPyB2YWx1ZSA6ICcnXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5UGFyYW1zSW5LZXlWYWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KFwiL3VzZXJzL3BhZ2UvMVwiKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzcG9uc2UuZGF0YS5kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5kYXRhLmRhdGFbaV0ucm9sZSA9IHJlc3BvbnNlLmRhdGEuZGF0YVtpXS5yb2xlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNwbGl0KCdfJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuam9pbignICcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odXNlcnNEYXRhLCByZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgaXNFbXB0eS52YWx1ZSA9IHJlc3BvbnNlLmRhdGEuZGF0YS5sZW5ndGggPyBmYWxzZSA6IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0sIDUwMDApO1xuICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfSk7XG4gICAgICAgIHZhciB0ZXh0QnViYmxlZGF0YSA9IGZ1bmN0aW9uIChpZCwgZmllbGQpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoZmllbGQpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdvcmcnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMub3JnYW5pemF0aW9uc1sraWRdO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3JvbGVzJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzLnJvbGVzWytpZF07XG4gICAgICAgICAgICAgICAgY2FzZSAnc3RhdHVzJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzLnN0YXR1c1sraWRdO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNsZWFyRmlsdGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZmlsdGVyLm9yZ2FuaXphdGlvbiA9IFtdO1xuICAgICAgICAgICAgZmlsdGVyLnJvbGVzID0gW107XG4gICAgICAgICAgICBmaWx0ZXIuc3RhdHVzID0gJyc7XG4gICAgICAgICAgICBmaWx0ZXIuZGlyZWN0aW9uID0gJyc7XG4gICAgICAgICAgICBmaWx0ZXIub3JkZXJCeSA9ICcnO1xuICAgICAgICAgICAgZmlsdGVyLnEgPSAnJztcbiAgICAgICAgICAgIGZpbHRlci5zZWxlY3RlZF9kYXRlX2ZpbHRlciA9ICcnO1xuICAgICAgICAgICAgY2xlYXJEYXRlUmFuZ2VGaWx0ZXIoKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNsZWFyRGF0ZVJhbmdlRmlsdGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY2xlYXJEYXRlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHNldERhdGVSYW5nZURhdGUgPSBmdW5jdGlvbiAoc3RhcnREYXRlLCBlbmREYXRlLCBzZWxlY3RlZERhdGUpIHtcbiAgICAgICAgICAgIGZpbHRlci5zdGFydF9kYXRlID0gc3RhcnREYXRlO1xuICAgICAgICAgICAgZmlsdGVyLmVuZF9kYXRlID0gZW5kRGF0ZTtcbiAgICAgICAgICAgIGZpbHRlci5zZWxlY3RlZF9kYXRlX2ZpbHRlciA9IHNlbGVjdGVkRGF0ZTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHNldERhdGVUeXBlID0gZnVuY3Rpb24gKGRhdGVUeXBlKSB7XG4gICAgICAgICAgICBmaWx0ZXIuZGF0ZV90eXBlID0gZGF0ZVR5cGU7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjcmVhdGVVc2VyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB2YXIgcGFzc3dvcmREYXRhID0ge1xuICAgICAgICAgICAgICAgIHBhc3N3b3JkOiAoMCwgZW5jcnlwdGlvbl8xLmRlZmF1bHQpKGZvcm1EYXRhLnBhc3N3b3JkLCAoX2EgPSBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnKSxcbiAgICAgICAgICAgICAgICBwYXNzd29yZF9jb25maXJtYXRpb246ICgwLCBlbmNyeXB0aW9uXzEuZGVmYXVsdCkoZm9ybURhdGEucGFzc3dvcmRfY29uZmlybWF0aW9uLCAoX2IgPSBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6ICcnKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucG9zdCgnL3VzZXInLCBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZm9ybURhdGEpLCBwYXNzd29yZERhdGEpKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSByZXMuZGF0YS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gcmVzLmRhdGEuc3VjY2VzcztcbiAgICAgICAgICAgICAgICBzZXRGb3JtRXJyb3IoKTtcbiAgICAgICAgICAgICAgICBzZXRGb3JtRXJyb3IocmVzLmRhdGEuZXJyb3JzKTtcbiAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBjbGVhckZpbHRlcigpO1xuICAgICAgICAgICAgICAgICAgICBmZXRjaFVzZXJzTGlzdCh1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgYWRkVXNlckZvcm0udmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgZW1wdHlGb3JtRGF0YSgpO1xuICAgICAgICAgICAgICAgICAgICBzZXRGb3JtRXJyb3IoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSBlcnJvci5kYXRhLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBhZGRVc2VyRm9ybS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZmluYWxseShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGVkaXRVc2VyID0gZnVuY3Rpb24gKHVzZXIpIHtcbiAgICAgICAgICAgIGZvcm1EYXRhLnVzZXJuYW1lID0gdXNlci51c2VybmFtZTtcbiAgICAgICAgICAgIGZvcm1EYXRhLmZ1bGxfbmFtZSA9IHVzZXIuZnVsbF9uYW1lO1xuICAgICAgICAgICAgZm9ybURhdGEuZW1haWwgPSB1c2VyLmVtYWlsO1xuICAgICAgICAgICAgZm9ybURhdGEucm9sZV9pZCA9IHVzZXIucm9sZV9pZDtcbiAgICAgICAgICAgIGVkaXRVc2VySWQudmFsdWUgPSB1c2VyLmlkO1xuICAgICAgICAgICAgZWRpdFVzZXJGb3JtLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGVtcHR5Rm9ybURhdGEgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gZm9ybURhdGEpIHtcbiAgICAgICAgICAgICAgICBmb3JtRGF0YVtrZXldID0ga2V5ID09PSAnc3RhdHVzJyA/IDEgOiAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHNldEZvcm1FcnJvciA9IGZ1bmN0aW9uIChlcnJvcnMpIHtcbiAgICAgICAgICAgIGlmIChlcnJvcnMgPT09IHZvaWQgMCkgeyBlcnJvcnMgPSB7fTsgfVxuICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGVycm9ycykubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGVycm9ycykge1xuICAgICAgICAgICAgICAgICAgICBmb3JtRXJyb3Jba2V5XSA9IGVycm9yc1trZXldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBmb3JtRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybUVycm9yW2tleV0gPSAnJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBvcGVuU3RhdHVzTW9kZWwgPSBmdW5jdGlvbiAodXNlcikge1xuICAgICAgICAgICAgc3RhdHVzSWQudmFsdWUgPSB1c2VyLmlkO1xuICAgICAgICAgICAgc3RhdHVzVmFsdWUudmFsdWUgPSB1c2VyLnN0YXR1cztcbiAgICAgICAgICAgIHN0YXR1c01vZGFsLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIHN0YXR1c1VzZXJuYW1lLnZhbHVlID0gdXNlci51c2VybmFtZTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHVwZGF0ZVVzZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIHZhciBwYXNzd29yZERhdGEgPSB7XG4gICAgICAgICAgICAgICAgcGFzc3dvcmQ6ICgwLCBlbmNyeXB0aW9uXzEuZGVmYXVsdCkoZm9ybURhdGEucGFzc3dvcmQsIChfYSA9IHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJycpLFxuICAgICAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogKDAsIGVuY3J5cHRpb25fMS5kZWZhdWx0KShmb3JtRGF0YS5wYXNzd29yZF9jb25maXJtYXRpb24sIChfYiA9IHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogJycpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wYXRjaChcIi91c2VyL1wiLmNvbmNhdChlZGl0VXNlcklkLnZhbHVlKSwgX19hc3NpZ24oX19hc3NpZ24oe30sIGZvcm1EYXRhKSwgcGFzc3dvcmREYXRhKSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcmVzLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHJlcy5kYXRhLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgc2V0Rm9ybUVycm9yKCk7XG4gICAgICAgICAgICAgICAgc2V0Rm9ybUVycm9yKHJlcy5kYXRhLmVycm9ycyk7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgZWRpdFVzZXJGb3JtLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGZldGNoVXNlcnNMaXN0KHVzZXJzRGF0YVsnY3VycmVudF9wYWdlJ10pO1xuICAgICAgICAgICAgICAgICAgICBlZGl0VXNlcklkLnZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgICAgIGVtcHR5Rm9ybURhdGEoKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0Rm9ybUVycm9yKCk7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBlZGl0VXNlcklkLnZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gZXJyb3IuZGF0YS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5maW5hbGx5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIFtcbiAgICAgICAgICAgIGZpbHRlci5vcmdhbml6YXRpb24sXG4gICAgICAgICAgICBmaWx0ZXIucm9sZXMsXG4gICAgICAgICAgICBmaWx0ZXIucSxcbiAgICAgICAgICAgIGZpbHRlci5zdGF0dXMsXG4gICAgICAgICAgICBmaWx0ZXIuc3RhcnRfZGF0ZSxcbiAgICAgICAgICAgIGZpbHRlci5lbmRfZGF0ZSxcbiAgICAgICAgICAgIGZpbHRlci5kYXRlX3R5cGUsXG4gICAgICAgIF07IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZldGNoVXNlcnNMaXN0KHVzZXJzRGF0YVsnY3VycmVudF9wYWdlJ10sIHRydWUpO1xuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgIGZ1bmN0aW9uIGZldGNoVXNlcnNMaXN0KGFjdGl2ZV9wYWdlLCBmaWx0ZXJlZCkge1xuICAgICAgICAgICAgaWYgKGZpbHRlcmVkID09PSB2b2lkIDApIHsgZmlsdGVyZWQgPSBmYWxzZTsgfVxuICAgICAgICAgICAgdmFyIHJvdXRlID0gXCIvdXNlcnMvcGFnZS9cIi5jb25jYXQoZmlsdGVyZWQgPyAnMScgOiBhY3RpdmVfcGFnZSk7XG4gICAgICAgICAgICBmZXRjaGluZ1RhYmxlRGF0YS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB2YXIgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgICAgICAgICAgZm9yICh2YXIgZmlsdGVyX2tleSBpbiBmaWx0ZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAoZmlsdGVyW2ZpbHRlcl9rZXldKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJbZmlsdGVyX2tleV0ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZChmaWx0ZXJfa2V5LCBmaWx0ZXJbZmlsdGVyX2tleV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLmdldChyb3V0ZSwgeyBwYXJhbXM6IHBhcmFtcyB9KVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHVzZXJzRGF0YSwgcmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgaXNFbXB0eS52YWx1ZSA9IHJlc3BvbnNlLmRhdGEgPyBmYWxzZSA6IHRydWU7XG4gICAgICAgICAgICAgICAgdG90YWxVc2VyLnZhbHVlID0gcmVzcG9uc2UuZGF0YS50b3RhbDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmZpbmFsbHkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGZldGNoaW5nVGFibGVEYXRhLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgb3BlbkRlbGV0ZW1vZGVsID0gZnVuY3Rpb24gKHVzZXIpIHtcbiAgICAgICAgICAgIGRlbGV0ZU1vZGFsLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGRlbGV0ZUlkLnZhbHVlID0gdXNlci5pZDtcbiAgICAgICAgICAgIGRlbGV0ZVVzZXJuYW1lLnZhbHVlID0gdXNlci51c2VybmFtZTtcbiAgICAgICAgfTtcbiAgICAgICAgZnVuY3Rpb24gZGVsZXRlVXNlcihpZCkge1xuICAgICAgICAgICAgZGVsZXRlTW9kYWwudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5kZWxldGUoXCIvdXNlci9cIi5jb25jYXQoaWQpKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEubWVzc2FnZSkge1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcmVzLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSByZXMuZGF0YS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBmZXRjaFVzZXJzTGlzdCh1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc29ydCA9IGZ1bmN0aW9uIChwYXJhbSkge1xuICAgICAgICAgICAgZmlsdGVyLmRpcmVjdGlvbiA9XG4gICAgICAgICAgICAgICAgZmlsdGVyLmRpcmVjdGlvbiA9PT0gJ2FzYycgJiYgZmlsdGVyLm9yZGVyQnkgPT09IHBhcmFtID8gJ2Rlc2MnIDogJ2FzYyc7XG4gICAgICAgICAgICBmaWx0ZXIub3JkZXJCeSA9IHBhcmFtO1xuICAgICAgICAgICAgZmV0Y2hVc2Vyc0xpc3QoMSk7XG4gICAgICAgIH07XG4gICAgICAgIGZ1bmN0aW9uIHRvZ2dsZVVzZXJTdGF0dXMoaWQpIHtcbiAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcbiAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBzdGF0dXNNb2RhbC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBhdGNoKFwiL3VzZXIvc3RhdHVzL1wiLmNvbmNhdChpZCkpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIGlmIChyZXMuc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSByZXMuZGF0YS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHJlcy5kYXRhLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgICAgIGZldGNoVXNlcnNMaXN0KHVzZXJzRGF0YVsnY3VycmVudF9wYWdlJ10pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmZpbmFsbHkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gZm9ybWF0RGF0ZShkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gKDAsIG1vbWVudF8xLmRlZmF1bHQpKGRhdGUpLmZvcm1hdCgnTEwnKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdG9nZ2xlU2VsZWN0YWxsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY3VycmVudHBhZ2VEYXRhLnZhbHVlID0gdXNlcnNEYXRhLmRhdGEubWFwKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZVsnaWQnXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB1c2Vyc0RhdGEuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmICghY2hlY2tsaXN0LnZhbHVlLmluY2x1ZGVzKHVzZXJzRGF0YS5kYXRhW2ldWydpZCddKSlcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tsaXN0LnZhbHVlW2NoZWNrbGlzdC52YWx1ZS5sZW5ndGggKyBpXSA9IHVzZXJzRGF0YS5kYXRhW2ldWydpZCddO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VsZWN0ZWRJZHMudmFsdWVbdXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXV0gPSBjaGVja2xpc3QudmFsdWU7XG4gICAgICAgICAgICBpZiAoYWxsU2VsZWN0ZWQudmFsdWVbdXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXV0pIHtcbiAgICAgICAgICAgICAgICBjaGVja2xpc3QudmFsdWUgPSBjaGVja2xpc3QudmFsdWUuZmlsdGVyKGZ1bmN0aW9uIChuKSB7IHJldHVybiAhT2JqZWN0LnZhbHVlcyhjdXJyZW50cGFnZURhdGEudmFsdWUpLmluY2x1ZGVzKG4pOyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNoZWNrbGlzdC52YWx1ZSA9IGNoZWNrbGlzdC52YWx1ZS5maWx0ZXIoZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsICE9IG51bGw7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGFsbFNlbGVjdGVkLnZhbHVlW3VzZXJzRGF0YVsnY3VycmVudF9wYWdlJ11dID1cbiAgICAgICAgICAgICAgICAhYWxsU2VsZWN0ZWQudmFsdWVbdXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXV07XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gY2hlY2tsaXN0LnZhbHVlOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzZWxlY3RlZElkcy52YWx1ZVt1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddXSA9IFtdO1xuICAgICAgICAgICAgY3VycmVudHBhZ2VEYXRhLnZhbHVlID0gdXNlcnNEYXRhLmRhdGEubWFwKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZVsnaWQnXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGVja2xpc3QudmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudHBhZ2VEYXRhLnZhbHVlLmluY2x1ZGVzKGNoZWNrbGlzdC52YWx1ZVtpXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJZHMudmFsdWVbdXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXV1baV0gPSBjaGVja2xpc3QudmFsdWVbaV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VsZWN0ZWRJZHMudmFsdWVbdXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXV0gPSBzZWxlY3RlZElkcy52YWx1ZVt1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddXS5maWx0ZXIoZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsICE9IG51bGw7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBnZW5lcmF0ZUxhYmVsID0gZnVuY3Rpb24gKGxhYmVsKSB7XG4gICAgICAgICAgICByZXR1cm4geyAnLS1sYWJlbCc6IFwiJ1wiLmNvbmNhdChsYWJlbCwgXCInXCIpIH07XG4gICAgICAgIH07XG4gICAgICAgIHZhciBkb3dubG9hZEFsbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciByb3V0ZSA9IFwiL3VzZXJzL2Rvd25sb2FkL1wiO1xuICAgICAgICAgICAgdmFyIHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICAgICAgICAgIHZhciBhbGxQYWdlU2VsZWN0ZWQ7XG4gICAgICAgICAgICBhbGxQYWdlU2VsZWN0ZWQgPSBPYmplY3QudmFsdWVzKHNlbGVjdGVkSWRzLnZhbHVlKS5mbGF0KCk7XG4gICAgICAgICAgICBpZiAoY2hlY2tsaXN0LnZhbHVlLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgZmlsdGVyX2tleSBpbiBmaWx0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlcltmaWx0ZXJfa2V5XS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuYXBwZW5kKGZpbHRlcl9rZXksIGZpbHRlcltmaWx0ZXJfa2V5XSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCd1c2VycycsIGFsbFBhZ2VTZWxlY3RlZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KHJvdXRlLCB7IHBhcmFtczogcGFyYW1zIH0pLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIHZhciBibG9iID0gbmV3IEJsb2IoW3Jlc3BvbnNlXSwge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYXBwbGljYXRpb24vY3N2JyxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgICAgICBsaW5rLmhyZWYgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgICAgICAgICBsaW5rLmRvd25sb2FkID0gcmVzLmhlYWRlcnNbJ2NvbnRlbnQtZGlzcG9zaXRpb24nXS5zcGxpdCgnPScpWzFdO1xuICAgICAgICAgICAgICAgIGxpbmsuY2xpY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBsYW5ndWFnZTogbGFuZ3VhZ2UsIHByb3BzOiBwcm9wcywgdG9hc3REYXRhOiB0b2FzdERhdGEsIGZpbHRlcjogZmlsdGVyLCBpc0xvYWRlclZpc2libGU6IGlzTG9hZGVyVmlzaWJsZSwgYWRkVXNlckZvcm06IGFkZFVzZXJGb3JtLCBlZGl0VXNlckZvcm06IGVkaXRVc2VyRm9ybSwgdXNlcnNEYXRhOiB1c2Vyc0RhdGEsIGlzRW1wdHk6IGlzRW1wdHksIGFsbFNlbGVjdGVkOiBhbGxTZWxlY3RlZCwgZGVsZXRlTW9kYWw6IGRlbGV0ZU1vZGFsLCBkZWxldGVJZDogZGVsZXRlSWQsIHRvdGFsVXNlcjogdG90YWxVc2VyLCBzdGF0dXNJZDogc3RhdHVzSWQsIHN0YXR1c01vZGFsOiBzdGF0dXNNb2RhbCwgc3RhdHVzVmFsdWU6IHN0YXR1c1ZhbHVlLCBzdGF0dXNVc2VybmFtZTogc3RhdHVzVXNlcm5hbWUsIGRlbGV0ZVVzZXJuYW1lOiBkZWxldGVVc2VybmFtZSwgbG9hZGVyOiBsb2FkZXIsIGZldGNoaW5nVGFibGVEYXRhOiBmZXRjaGluZ1RhYmxlRGF0YSwgc2VsZWN0ZWRJZHM6IHNlbGVjdGVkSWRzLCBjaGVja2xpc3Q6IGNoZWNrbGlzdCwgY3VycmVudHBhZ2VEYXRhOiBjdXJyZW50cGFnZURhdGEsIGNsZWFyRGF0ZTogY2xlYXJEYXRlLCBlZGl0VXNlcklkOiBlZGl0VXNlcklkLCBkYXRlVHlwZTogZGF0ZVR5cGUsIGRyb3Bkb3duUmFuZ2U6IGRyb3Bkb3duUmFuZ2UsIGZvcm1EYXRhOiBmb3JtRGF0YSwgZm9ybUVycm9yOiBmb3JtRXJyb3IsIGlzRmlsdGVyQXBwbGllZDogaXNGaWx0ZXJBcHBsaWVkLCBpZ25vcmVVcGRhdGVzOiBpZ25vcmVVcGRhdGVzLCBpZ25vcmVUb2FzdFVwZGF0ZTogaWdub3JlVG9hc3RVcGRhdGUsIGNsZWFyRGF0ZUZpbHRlcjogY2xlYXJEYXRlRmlsdGVyLCBnZXRGaWx0ZXJQYXJhbXNGcm9tUHJldmlvdXNQYWdlOiBnZXRGaWx0ZXJQYXJhbXNGcm9tUHJldmlvdXNQYWdlLCB0ZXh0QnViYmxlZGF0YTogdGV4dEJ1YmJsZWRhdGEsIGNsZWFyRmlsdGVyOiBjbGVhckZpbHRlciwgY2xlYXJEYXRlUmFuZ2VGaWx0ZXI6IGNsZWFyRGF0ZVJhbmdlRmlsdGVyLCBzZXREYXRlUmFuZ2VEYXRlOiBzZXREYXRlUmFuZ2VEYXRlLCBzZXREYXRlVHlwZTogc2V0RGF0ZVR5cGUsIGNyZWF0ZVVzZXI6IGNyZWF0ZVVzZXIsIGVkaXRVc2VyOiBlZGl0VXNlciwgZW1wdHlGb3JtRGF0YTogZW1wdHlGb3JtRGF0YSwgc2V0Rm9ybUVycm9yOiBzZXRGb3JtRXJyb3IsIG9wZW5TdGF0dXNNb2RlbDogb3BlblN0YXR1c01vZGVsLCB1cGRhdGVVc2VyOiB1cGRhdGVVc2VyLCBmZXRjaFVzZXJzTGlzdDogZmV0Y2hVc2Vyc0xpc3QsIG9wZW5EZWxldGVtb2RlbDogb3BlbkRlbGV0ZW1vZGVsLCBkZWxldGVVc2VyOiBkZWxldGVVc2VyLCBzb3J0OiBzb3J0LCB0b2dnbGVVc2VyU3RhdHVzOiB0b2dnbGVVc2VyU3RhdHVzLCBmb3JtYXREYXRlOiBmb3JtYXREYXRlLCB0b2dnbGVTZWxlY3RhbGw6IHRvZ2dsZVNlbGVjdGFsbCwgZ2VuZXJhdGVMYWJlbDogZ2VuZXJhdGVMYWJlbCwgZG93bmxvYWRBbGw6IGRvd25sb2FkQWxsLCBMb2FkZXI6IExvYWRlcl92dWVfMS5kZWZhdWx0LCBUb2FzdDogVG9hc3RNZXNzYWdlX3Z1ZV8xLmRlZmF1bHQsIFBvcHVwTW9kYWw6IFBvcHVwTW9kYWxfdnVlXzEuZGVmYXVsdCwgTXVsdGlzZWxlY3Q6IG11bHRpc2VsZWN0XzEuZGVmYXVsdCwgUGFnaW5hdGlvbjogVGFibGVQYWdpbmF0aW9uX3Z1ZV8xLmRlZmF1bHQsIERhdGVSYW5nZVdpZGdldDogRGF0ZVJhbmdlV2lkZ2V0X3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uLy4uL2NvbXBvbmVudHMvTG9hZGVyLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciBQb3B1cE1vZGFsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1BvcHVwTW9kYWwudnVlXCIpKTtcbnZhciBlbmNyeXB0aW9uXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZW5jcnlwdGlvblwiKSk7XG52YXIgbXVsdGlzZWxlY3RfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQHZ1ZWZvcm0vbXVsdGlzZWxlY3RcIikpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnVXNlclByb2ZpbGUnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIHVzZXI6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBsYW5ndWFnZVByZWZlcmVuY2U6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciB0b2FzdERhdGEgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGlzTG9hZGVyVmlzaWJsZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGVkaXRQcm9maWxlRm9ybSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGVkaXRQYXNzd29yZEZvcm0gPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93Q3VycmVudFBhc3N3b3JkID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd05ld1Bhc3N3b3JkID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd0NvbmZpcm1QYXNzd29yZCA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHVzZXJEYXRhID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7IHVzZXJfcm9sZTogJycgfSk7XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odXNlckRhdGEsIHByb3BzLnVzZXIpO1xuICAgICAgICAgICAgdXNlckRhdGEudXNlcl9yb2xlID0gdXNlckRhdGEudXNlcl9yb2xlLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZm9ybURhdGEgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHVzZXJuYW1lOiBwcm9wcy51c2VyLnVzZXJuYW1lLFxuICAgICAgICAgICAgZnVsbF9uYW1lOiBwcm9wcy51c2VyLmZ1bGxfbmFtZSxcbiAgICAgICAgICAgIGVtYWlsOiBwcm9wcy51c2VyLmVtYWlsLFxuICAgICAgICAgICAgbGFuZ3VhZ2VfcHJlZmVyZW5jZTogcHJvcHMudXNlci5sYW5ndWFnZV9wcmVmZXJlbmNlLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGVycm9yRm9ybURhdGEgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHVzZXJuYW1lOiAnJyxcbiAgICAgICAgICAgIGZ1bGxfbmFtZTogJycsXG4gICAgICAgICAgICBlbWFpbDogJycsXG4gICAgICAgICAgICBsYW5ndWFnZV9wcmVmZXJlbmNlOiAnJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBwYXNzd29yZERhdGEgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIGN1cnJlbnRfcGFzc3dvcmQ6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmQ6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAnJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBlcnJvclBhc3N3b3JkRGF0YSA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgY3VycmVudF9wYXNzd29yZDogJycsXG4gICAgICAgICAgICBwYXNzd29yZDogJycsXG4gICAgICAgICAgICBwYXNzd29yZF9jb25maXJtYXRpb246ICcnLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGlnbm9yZVVwZGF0ZXMgPSAoMCwgY29yZV8xLndhdGNoSWdub3JhYmxlKSh0b2FzdERhdGEsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSwge1xuICAgICAgICAgICAgZmx1c2g6ICdzeW5jJyxcbiAgICAgICAgfSkuaWdub3JlVXBkYXRlcztcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiB0b2FzdERhdGEudmlzaWJpbGl0eTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZ25vcmVUb2FzdFVwZGF0ZSgpO1xuICAgICAgICAgICAgfSwgMTAwMDApO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGlnbm9yZVRvYXN0VXBkYXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWdub3JlVXBkYXRlcyhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSAnJztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgcmVzZW5kVmVyaWZpY2F0aW9uRW1haWwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBvc3QoJy91c2VyL3ZlcmlmaWNhdGlvbi9lbWFpbCcpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSAoX2EgPSByZXMuZGF0YS5tZXNzYWdlKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJztcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHJlcy5kYXRhLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gKF9hID0gZXJyb3IuZGF0YS5tZXNzYWdlKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJztcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciB1cGRhdGVQYXNzd29yZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIHZhciBwYXNzd29yZEZvcm1EYXRhID0ge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRfcGFzc3dvcmQ6ICgwLCBlbmNyeXB0aW9uXzEuZGVmYXVsdCkocGFzc3dvcmREYXRhLmN1cnJlbnRfcGFzc3dvcmQsIChfYSA9IHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJycpLFxuICAgICAgICAgICAgICAgIHBhc3N3b3JkOiAoMCwgZW5jcnlwdGlvbl8xLmRlZmF1bHQpKHBhc3N3b3JkRGF0YS5wYXNzd29yZCwgKF9iID0gcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAnJyksXG4gICAgICAgICAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAoMCwgZW5jcnlwdGlvbl8xLmRlZmF1bHQpKHBhc3N3b3JkRGF0YS5wYXNzd29yZF9jb25maXJtYXRpb24sIChfYyA9IHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogJycpLFxuICAgICAgICAgICAgICAgIGZvcm1fdHlwZTogJ3Bhc3N3b3JkJyxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucG9zdCgnL3VwZGF0ZS9wYXNzd29yZCcsIHBhc3N3b3JkRm9ybURhdGEpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHJlcy5kYXRhLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSByZXMuZGF0YS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIGVkaXRQYXNzd29yZEZvcm0udmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGVycm9yUGFzc3dvcmREYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvclBhc3N3b3JkRGF0YVtrZXldID0gJyc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiByZXMuZGF0YS5lcnJvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yUGFzc3dvcmREYXRhW2tleV0gPSByZXMuZGF0YS5lcnJvcnNba2V5XVswXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IGVycm9yLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZmluYWxseShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHVwZGF0ZVByb2ZpbGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBvc3QoJy91cGRhdGUvcHJvZmlsZScsIGZvcm1EYXRhKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSByZXMuZGF0YS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gcmVzLmRhdGEuc3VjY2VzcztcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBlZGl0UHJvZmlsZUZvcm0udmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGVycm9yRm9ybURhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yRm9ybURhdGFba2V5XSA9ICcnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBmb3JtRGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXNlckRhdGFba2V5XSA9IGZvcm1EYXRhW2tleV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiByZXMuZGF0YS5lcnJvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yRm9ybURhdGFba2V5XSA9IHJlcy5kYXRhLmVycm9yc1trZXldWzBdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gZXJyb3IuZGF0YS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5maW5hbGx5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBsYW5ndWFnZTogbGFuZ3VhZ2UsIHByb3BzOiBwcm9wcywgdG9hc3REYXRhOiB0b2FzdERhdGEsIGlzTG9hZGVyVmlzaWJsZTogaXNMb2FkZXJWaXNpYmxlLCBlZGl0UHJvZmlsZUZvcm06IGVkaXRQcm9maWxlRm9ybSwgZWRpdFBhc3N3b3JkRm9ybTogZWRpdFBhc3N3b3JkRm9ybSwgc2hvd0N1cnJlbnRQYXNzd29yZDogc2hvd0N1cnJlbnRQYXNzd29yZCwgc2hvd05ld1Bhc3N3b3JkOiBzaG93TmV3UGFzc3dvcmQsIHNob3dDb25maXJtUGFzc3dvcmQ6IHNob3dDb25maXJtUGFzc3dvcmQsIHVzZXJEYXRhOiB1c2VyRGF0YSwgZm9ybURhdGE6IGZvcm1EYXRhLCBlcnJvckZvcm1EYXRhOiBlcnJvckZvcm1EYXRhLCBwYXNzd29yZERhdGE6IHBhc3N3b3JkRGF0YSwgZXJyb3JQYXNzd29yZERhdGE6IGVycm9yUGFzc3dvcmREYXRhLCBpZ25vcmVVcGRhdGVzOiBpZ25vcmVVcGRhdGVzLCBpZ25vcmVUb2FzdFVwZGF0ZTogaWdub3JlVG9hc3RVcGRhdGUsIHJlc2VuZFZlcmlmaWNhdGlvbkVtYWlsOiByZXNlbmRWZXJpZmljYXRpb25FbWFpbCwgdXBkYXRlUGFzc3dvcmQ6IHVwZGF0ZVBhc3N3b3JkLCB1cGRhdGVQcm9maWxlOiB1cGRhdGVQcm9maWxlLCBjYXBpdGFsaXplOiB2dWVfMi5jYXBpdGFsaXplLCBMb2FkZXI6IExvYWRlcl92dWVfMS5kZWZhdWx0LCBUb2FzdDogVG9hc3RNZXNzYWdlX3Z1ZV8xLmRlZmF1bHQsIFBvcHVwTW9kYWw6IFBvcHVwTW9kYWxfdnVlXzEuZGVmYXVsdCwgTXVsdGlzZWxlY3Q6IG11bHRpc2VsZWN0XzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgcHJvcHM6IHtcbiAgICAgICAgZW1haWw6IHsgdHlwZTogU3RyaW5nLCBkZWZhdWx0OiAnJyB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByb3BzOiBwcm9wcyxcbiAgICAgICAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciBFbWFpbFZlcmlmaWNhdGlvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9FbWFpbFZlcmlmaWNhdGlvbi52dWVcIikpO1xudmFyIEhvdmVyVGV4dF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi8uLi8uLi9jb21wb25lbnRzL0hvdmVyVGV4dC52dWVcIikpO1xudmFyIG11bHRpc2VsZWN0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkB2dWVmb3JtL211bHRpc2VsZWN0XCIpKTtcbnZhciBMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uLy4uL2NvbXBvbmVudHMvTG9hZGVyLnZ1ZVwiKSk7XG52YXIgZW5jcnlwdGlvbl8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2VuY3J5cHRpb25cIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgRW1haWxWZXJpZmljYXRpb246IEVtYWlsVmVyaWZpY2F0aW9uX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIEhvdmVyVGV4dDogSG92ZXJUZXh0X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIE11bHRpc2VsZWN0OiBtdWx0aXNlbGVjdF8xLmRlZmF1bHQsXG4gICAgICAgIExvYWRlcjogTG9hZGVyX3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICB0eXBlczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgc3RlcCA9ICgwLCB2dWVfMS5yZWYpKDEpO1xuICAgICAgICB2YXIgcHVibGlzaGVyRXhpc3RzID0gKDAsIHZ1ZV8xLnJlZikodHJ1ZSk7XG4gICAgICAgIHZhciBpc0xvYWRlclZpc2libGUgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB0ZXh0YXJlYSA9ICgwLCB2dWVfMS5yZWYpKG51bGwpO1xuICAgICAgICB2YXIgZXJyb3JEYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBwdWJsaXNoZXJfbmFtZTogJycsXG4gICAgICAgICAgICBwdWJsaXNoZXJfaWQ6ICcnLFxuICAgICAgICAgICAgY291bnRyeTogJycsXG4gICAgICAgICAgICByZWdpc3RyYXRpb25fYWdlbmN5OiAnJyxcbiAgICAgICAgICAgIHJlZ2lzdHJhdGlvbl9udW1iZXI6ICcnLFxuICAgICAgICAgICAgaWRlbnRpZmllcjogJycsXG4gICAgICAgICAgICBwdWJsaXNoZXJfdHlwZTogJycsXG4gICAgICAgICAgICBsaWNlbnNlX2lkOiAnJyxcbiAgICAgICAgICAgIGltYWdlX3VybDogJycsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgICAgICAgICBjb250YWN0X2VtYWlsOiAnJyxcbiAgICAgICAgICAgIHdlYnNpdGU6ICcnLFxuICAgICAgICAgICAgYWRkcmVzczogJycsXG4gICAgICAgICAgICBzb3VyY2U6ICcnLFxuICAgICAgICAgICAgcmVjb3JkX2V4Y2x1c2lvbnM6ICcnLFxuICAgICAgICAgICAgdXNlcm5hbWU6ICcnLFxuICAgICAgICAgICAgZnVsbF9uYW1lOiAnJyxcbiAgICAgICAgICAgIGVtYWlsOiAnJyxcbiAgICAgICAgICAgIHBhc3N3b3JkOiAnJyxcbiAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaWF0aUVycm9yID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7fSk7XG4gICAgICAgIHZhciBmb3JtRGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgcHVibGlzaGVyX25hbWU6ICcnLFxuICAgICAgICAgICAgcHVibGlzaGVyX2lkOiAnJyxcbiAgICAgICAgICAgIGNvdW50cnk6ICcnLFxuICAgICAgICAgICAgcmVnaXN0cmF0aW9uX2FnZW5jeTogJycsXG4gICAgICAgICAgICByZWdpc3RyYXRpb25fbnVtYmVyOiAnJyxcbiAgICAgICAgICAgIGlkZW50aWZpZXI6ICcnLFxuICAgICAgICAgICAgcHVibGlzaGVyX3R5cGU6ICcnLFxuICAgICAgICAgICAgbGljZW5zZV9pZDogJycsXG4gICAgICAgICAgICBpbWFnZV91cmw6ICcnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICcnLFxuICAgICAgICAgICAgY29udGFjdF9lbWFpbDogJycsXG4gICAgICAgICAgICB3ZWJzaXRlOiAnJyxcbiAgICAgICAgICAgIGFkZHJlc3M6ICcnLFxuICAgICAgICAgICAgc291cmNlOiAnJyxcbiAgICAgICAgICAgIHJlY29yZF9leGNsdXNpb25zOiAnJyxcbiAgICAgICAgICAgIHVzZXJuYW1lOiAnJyxcbiAgICAgICAgICAgIGZ1bGxfbmFtZTogJycsXG4gICAgICAgICAgICBlbWFpbDogJycsXG4gICAgICAgICAgICBwYXNzd29yZDogJycsXG4gICAgICAgICAgICBwYXNzd29yZF9jb25maXJtYXRpb246ICcnLFxuICAgICAgICAgICAgc3RlcDogJzEnLFxuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBmb3JtRGF0YS5jb3VudHJ5OyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBmb3JtRGF0YS5yZWdpc3RyYXRpb25fYWdlbmN5ID0gJyc7XG4gICAgICAgIH0pO1xuICAgICAgICBmdW5jdGlvbiByZXNpemUoZXZlbnQpIHtcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldC5zdHlsZS5oZWlnaHQgPSAnYXV0byc7XG4gICAgICAgICAgICBldmVudC50YXJnZXQuc3R5bGUuaGVpZ2h0ID0gXCJcIi5jb25jYXQoZXZlbnQudGFyZ2V0LnNjcm9sbEhlaWdodCwgXCJweFwiKTtcbiAgICAgICAgfVxuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIFtmb3JtRGF0YS5yZWdpc3RyYXRpb25fYWdlbmN5LCBmb3JtRGF0YS5yZWdpc3RyYXRpb25fbnVtYmVyXTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZm9ybURhdGEuaWRlbnRpZmllciA9IGZvcm1EYXRhLnJlZ2lzdHJhdGlvbl9hZ2VuY3lcbiAgICAgICAgICAgICAgICA/IGZvcm1EYXRhLnJlZ2lzdHJhdGlvbl9hZ2VuY3kgKyAnLScgKyBmb3JtRGF0YS5yZWdpc3RyYXRpb25fbnVtYmVyXG4gICAgICAgICAgICAgICAgOiBmb3JtRGF0YS5yZWdpc3RyYXRpb25fbnVtYmVyO1xuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgIHZhciByZWdpc3RyYXRpb25fYWdlbmN5ID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgYWdlbmNpZXMgPSBwcm9wcy50eXBlcy5yZWdpc3RyYXRpb25BZ2VuY3k7XG4gICAgICAgICAgICBpZiAoZm9ybURhdGEuY291bnRyeSkge1xuICAgICAgICAgICAgICAgIHZhciB1bmNhdGVnb3JpemVkXzEgPSBbJ1hJJywgJ1hSJ107XG4gICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhhZ2VuY2llcykuZmlsdGVyKGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIga2V5ID0gX2FbMF07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBrZXkuc3RhcnRzV2l0aChmb3JtRGF0YS5jb3VudHJ5KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5jYXRlZ29yaXplZF8xLnNvbWUoZnVuY3Rpb24gKGspIHsgcmV0dXJuIGtleS5zdGFydHNXaXRoKGspOyB9KTtcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWdlbmNpZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaXNUZXh0RmllbGQgPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoZmllbGRUeXBlLCBmaWVsZE5hbWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKChmaWVsZFR5cGUgPT09ICd0ZXh0JyB8fFxuICAgICAgICAgICAgICAgICAgICBmaWVsZFR5cGUgPT09ICdwYXNzd29yZCcgfHxcbiAgICAgICAgICAgICAgICAgICAgZmllbGRUeXBlID09PSAnZW1haWwnKSAmJlxuICAgICAgICAgICAgICAgICAgICBmaWVsZE5hbWUgIT0gJ2lkZW50aWZpZXInKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgY2hlY2tTdGVwID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGZvcm1TdGVwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGZvcm1TdGVwLnRvU3RyaW5nKCkpID09PSBzdGVwLnZhbHVlO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBvYmplY3Qgd2l0aCBtdWx0aS1zdGVwIGZvcm0gaW5mb3JtYXRpb25cbiAgICAgICAgICovXG4gICAgICAgIHZhciByZWdpc3RlckZvcm0gPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIDE6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5wdWJsaXNoZXJfaW5mb3JtYXRpb24ubGFiZWwsXG4gICAgICAgICAgICAgICAgaXNfY29tcGxldGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLnB1Ymxpc2hlcl9pbmZvcm1hdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLnB1Ymxpc2hlcl9pbmZvcm1hdGlvbi5ob3Zlcl90ZXh0LFxuICAgICAgICAgICAgICAgIGZpZWxkczoge1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoZXJfbmFtZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcucHVibGlzaGVyX25hbWUubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncHVibGlzaGVyX25hbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcucHVibGlzaGVyX25hbWUucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3B1Ymxpc2hlci1uYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5wdWJsaXNoZXJfbmFtZS5ob3Zlcl90ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdjb2wtc3Bhbi0yIG1iLTQgbGc6bWItMicsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoZXJfaWQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLnB1Ymxpc2hlcl9pZC5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdwdWJsaXNoZXJfaWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcucHVibGlzaGVyX2lkLnBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdwdWJsaXNoZXItaWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLnB1Ymxpc2hlcl9pZC5ob3Zlcl90ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTInLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgY291bnRyeToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcuY291bnRyeS5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdjb3VudHJ5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLmNvdW50cnkucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2NvdW50cnlfc2VsZWN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5jb3VudHJ5LmhvdmVyX3RleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcy50eXBlcy5jb3VudHJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTIgcmVsYXRpdmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcmVnaXN0cmF0aW9uX2FnZW5jeToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcub3JnX3JlZ2lzdHJhdGlvbl9hZ2VuY3kubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncmVnaXN0cmF0aW9uX2FnZW5jeScsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5vcmdfcmVnaXN0cmF0aW9uX2FnZW5jeS5wbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAncmVnaXN0cmF0aW9uLWFnZW5jeScsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcub3JnX3JlZ2lzdHJhdGlvbl9hZ2VuY3kuaG92ZXJfdGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogcmVnaXN0cmF0aW9uX2FnZW5jeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi0yIHJlbGF0aXZlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHJlZ2lzdHJhdGlvbl9udW1iZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLnJlZ2lzdHJhdGlvbl9udW1iZXIubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncmVnaXN0cmF0aW9uX251bWJlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5yZWdpc3RyYXRpb25fbnVtYmVyLnBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdyZWdpc3RyYXRpb24tbnVtYmVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5yZWdpc3RyYXRpb25fbnVtYmVyLmhvdmVyX3RleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItMicsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ6IFwiXCIuY29uY2F0KGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcuZm9yX2VnLCBcIiAxMjM0NTZcIiksXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLmlhdGlfb3JnX2lkZW50aWZpZXIubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnaWRlbnRpZmllcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2lkZW50aWZpZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLmlhdGlfb3JnX2lkZW50aWZpZXIuaG92ZXJfdGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi02JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dDogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5pYXRpX29yZ19pZGVudGlmaWVyLmhlbHBfdGV4dCxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaGVyX3R5cGU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLnB1Ymxpc2hlcl90eXBlLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3B1Ymxpc2hlcl90eXBlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLnB1Ymxpc2hlcl90eXBlLnBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdwdWJsaXNoZXItdHlwZScsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcucHVibGlzaGVyX3R5cGUuaG92ZXJfdGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHMudHlwZXMucHVibGlzaGVyVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi0yIHJlbGF0aXZlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGxpY2Vuc2VfaWQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLmRhdGFfbGljZW5zZS5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdsaWNlbnNlX2lkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLmRhdGFfbGljZW5zZS5wbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnZGF0YS1saWNlbnNlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5kYXRhX2xpY2Vuc2UuaG92ZXJfdGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHMudHlwZXMuZGF0YUxpY2Vuc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItMiByZWxhdGl2ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBpbWFnZV91cmw6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLnB1Ymxpc2hlcl9sb2dvX3VybC5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdpbWFnZV91cmwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IFwiXCIuY29uY2F0KGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcuZm9yX2VnLCBcIiBodHRwOi8vbXlsb2dvLmNvbSBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3B1Ymxpc2hlci1sb2dvLXVybCcsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLnB1Ymxpc2hlcl9sb2dvX3VybC5ob3Zlcl90ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTIgcmVsYXRpdmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLm9yZ2FuaXNhdGlvbl9kZXNjLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2Rlc2NyaXB0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLm9yZ2FuaXNhdGlvbl9kZXNjLnBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdvcmdhbml6YXRpb24tZGVzY3JpcHRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5vcmdhbmlzYXRpb25fZGVzYy5ob3Zlcl90ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBjb2wtc3Bhbi0yIGxnOm1iLTIgcmVsYXRpdmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIDI6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5jb250YWN0X2luZm8udGl0bGUsXG4gICAgICAgICAgICAgICAgaXNfY29tcGxldGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLnB1Ymxpc2hlcl9pbmZvcm1hdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBmaWVsZHM6IHtcbiAgICAgICAgICAgICAgICAgICAgY29udGFjdF9lbWFpbDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcuY29udGFjdC5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdjb250YWN0X2VtYWlsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnY29udGFjdC1lbWFpbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcuY29udGFjdC5ob3Zlcl90ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00ICBsZzptYi02JyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgd2Vic2l0ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcud2Vic2l0ZS5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd3ZWJzaXRlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBcIlwiLmNvbmNhdChsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLmZvcl9lZywgXCIgaHR0cDovL215d2Vic2l0ZS5jb21cIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3dlYnNpdGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy53ZWJzaXRlLmhvdmVyX3RleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItNicsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLmFkZHJlc3MubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnYWRkcmVzcycsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5hZGRyZXNzLnBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdhZGRyZXNzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcuYWRkcmVzcy5ob3Zlcl90ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBjb2wtc3Bhbi0yIGxnOm1iLTYnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgMzoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLnB1Ymxpc2hpbmdfYWRkaXRpb25hbF9pbmZvLnRpdGxlLFxuICAgICAgICAgICAgICAgIGlzX2NvbXBsZXRlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5wdWJsaXNoaW5nX2FkZGl0aW9uYWxfaW5mby5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBmaWVsZHM6IHtcbiAgICAgICAgICAgICAgICAgICAgc291cmNlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5zb3VyY2UubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnc291cmNlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLnNvdXJjZS5wbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnY29udGFjdC1lbWFpbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcuc291cmNlLmhvdmVyX3RleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzLnR5cGVzLnNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi02JyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkX2V4Y2x1c2lvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLnJlY29yZF9leGNsdXNpb25zLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3JlY29yZF9leGNsdXNpb25zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLnJlY29yZF9leGNsdXNpb25zLnBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdyZWNvcmQtZXhjbHVzaW9ucycsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLnJlY29yZF9leGNsdXNpb25zLmhvdmVyX3RleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dGFyZWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00ICBjb2wtc3Bhbi0yIGxnOm1iLTYnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgNDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLmFkbWluaXN0cmF0b3JfaW5mb3JtYXRpb24ubGFiZWwsXG4gICAgICAgICAgICAgICAgaXNfY29tcGxldGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLmFkbWluaXN0cmF0b3JfaW5mb3JtYXRpb25cbiAgICAgICAgICAgICAgICAgICAgLmlhdGlfcmVnaXN0ZXJfZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgZmllbGRzOiB7XG4gICAgICAgICAgICAgICAgICAgIHVzZXJuYW1lOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy51c2VybmFtZS5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd1c2VybmFtZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy51c2VybmFtZS5wbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAndXNlcm5hbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLnVzZXJuYW1lLmhvdmVyX3RleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItMicsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBmdWxsX25hbWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLmZ1bGxuYW1lLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2Z1bGxfbmFtZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5mdWxsbmFtZS5wbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnZnVsbC1uYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ2NvbC1zdGFydC0xIG1iLTQgbGc6bWItMicsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGVtYWlsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5lbWFpbF9hZGRyZXNzLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLmVtYWlsX2FkZHJlc3MucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTInLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBwYXNzd29yZDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcucGFzc3dvcmQubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncGFzc3dvcmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcucGFzc3dvcmQucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3Bhc3N3b3JkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLnBhc3N3b3JkLmhlbHBfdGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdwYXNzd29yZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItMicsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcucGFzc3dvcmQuY29uZmlybSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdwYXNzd29yZF9jb25maXJtYXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcucGFzc3dvcmQucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3Bhc3N3b3JkLWNvbmZpcm1hdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dDogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5wYXNzd29yZC5jb25maXJtX2hlbHAsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAncGFzc3dvcmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTYnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgNToge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLmVtYWlsX3ZlcmlmaWNhdGlvbi50aXRsZSxcbiAgICAgICAgICAgICAgICBpc19jb21wbGV0ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcuZW1haWxfdmVyaWZpY2F0aW9uLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBVcGRhdGUgVmFsaWRhdGlvbiBlcnJvcnMgZnJvbSBhcGkgaW50byBlcnJvckRhdGEgYXJyYXlcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZVZhbGlkYXRpb25FcnJvcnMoZXJyb3JSZXNwb25zZSkge1xuICAgICAgICAgICAgY2xlYW5WYWxpZGF0aW9uRXJyb3JzKCk7XG4gICAgICAgICAgICBmb3IgKHZhciBmaWVsZCBpbiBlcnJvckRhdGEpIHtcbiAgICAgICAgICAgICAgICBlcnJvckRhdGFbZmllbGRdID0gZXJyb3JSZXNwb25zZVtmaWVsZF0gPyBlcnJvclJlc3BvbnNlW2ZpZWxkXVswXSA6ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBVcGRhdGUgVmFsaWRhdGlvbiBlcnJvcnMgZnJvbSBhcGkgaW50byBlcnJvckRhdGEgYXJyYXlcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIGNsZWFuVmFsaWRhdGlvbkVycm9ycygpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGZpZWxkIGluIGVycm9yRGF0YSkge1xuICAgICAgICAgICAgICAgIGVycm9yRGF0YVtmaWVsZF0gPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogVXBkYXRlIElBVEkgYW5kIHN5c3RlbSBFcnJvclxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gdXBkYXRlRXJyb3JzKGVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgICAgIGlmIChPYmplY3QudmFsdWVzKGVycm9yRGF0YSkuZXZlcnkoZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiB2YWx1ZSA9PT0gJyc7IH0pIHx8XG4gICAgICAgICAgICAgICAgc3RlcC52YWx1ZSA9PT0gNCkge1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oaWF0aUVycm9yLCB0eXBlb2YgZXJyb3JSZXNwb25zZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB7IGVycm9yOiBlcnJvclJlc3BvbnNlIH1cbiAgICAgICAgICAgICAgICAgICAgOiBlcnJvclJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYW5JYXRpRXJyb3JzKCk7XG4gICAgICAgICAgICAgICAgfSwgMzUwMDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGNsZWFuSWF0aUVycm9ycygpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGVyciBpbiBpYXRpRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgaWF0aUVycm9yW2Vycl07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFZlcmlmaWVzIHB1Ymxpc2hlclxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gdmVyaWZ5UHVibGlzaGVyKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBmb3JtRGF0YS5pZGVudGlmaWVyID0gXCJcIi5jb25jYXQoZm9ybURhdGEucmVnaXN0cmF0aW9uX2FnZW5jeSwgXCItXCIpLmNvbmNhdChmb3JtRGF0YS5yZWdpc3RyYXRpb25fbnVtYmVyKTtcbiAgICAgICAgICAgIGZvcm1EYXRhLnN0ZXAgPSAnMSc7XG4gICAgICAgICAgICB2YXIgZm9ybSA9IHtcbiAgICAgICAgICAgICAgICBwYXNzd29yZDogKDAsIGVuY3J5cHRpb25fMS5kZWZhdWx0KShmb3JtRGF0YS5wYXNzd29yZCwgKF9hID0gcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJyksXG4gICAgICAgICAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAoMCwgZW5jcnlwdGlvbl8xLmRlZmF1bHQpKGZvcm1EYXRhLnBhc3N3b3JkX2NvbmZpcm1hdGlvbiwgKF9iID0gcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAnJyksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBvc3QoJy9pYXRpL3JlZ2lzdGVyL3B1Ymxpc2hlcicsIF9fYXNzaWduKF9fYXNzaWduKHt9LCBmb3JtRGF0YSksIGZvcm0pKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzLnJlcXVlc3QucmVzcG9uc2VVUkwuaW5jbHVkZXMoJ2FjdGl2aXRpZXMnKSkge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvYWN0aXZpdGllcyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIHB1Ymxpc2hlckV4aXN0cy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdmFyIGVycm9ycyA9ICFyZXNwb25zZS5zdWNjZXNzIHx8ICdlcnJvcnMnIGluIHJlc3BvbnNlID8gcmVzcG9uc2UuZXJyb3JzIDogW107XG4gICAgICAgICAgICAgICAgcmVnaXN0ZXJGb3JtWycxJ10uaXNfY29tcGxldGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAoJ3B1Ymxpc2hlcl9lcnJvcicgaW4gcmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaGVyRXhpc3RzLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNsZWFuVmFsaWRhdGlvbkVycm9ycygpO1xuICAgICAgICAgICAgICAgICAgICByZWdpc3RlckZvcm1bJzEnXS5pc19jb21wbGV0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0ZXAoMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVWYWxpZGF0aW9uRXJyb3JzKGVycm9ycyk7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUVycm9ycyhlcnJvcnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgICAgICAgICB1cGRhdGVFcnJvcnMoZXJyKTtcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTdWJtaXRzIHJlZ2lzdHJhdGlvbiBGb3JtXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiB2ZXJpZnlDb250YWN0SW5mb3JtYXRpb24oKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGZvcm1EYXRhLnN0ZXAgPSAnMic7XG4gICAgICAgICAgICB2YXIgZm9ybSA9IHtcbiAgICAgICAgICAgICAgICBwYXNzd29yZDogKDAsIGVuY3J5cHRpb25fMS5kZWZhdWx0KShmb3JtRGF0YS5wYXNzd29yZCwgKF9hID0gcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJyksXG4gICAgICAgICAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAoMCwgZW5jcnlwdGlvbl8xLmRlZmF1bHQpKGZvcm1EYXRhLnBhc3N3b3JkX2NvbmZpcm1hdGlvbiwgKF9iID0gcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAnJyksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBvc3QoJy9pYXRpL3JlZ2lzdGVyL2NvbnRhY3QnLCBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZm9ybURhdGEpLCBmb3JtKSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5yZXF1ZXN0LnJlc3BvbnNlVVJMLmluY2x1ZGVzKCdhY3Rpdml0aWVzJykpIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2FjdGl2aXRpZXMnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB2YXIgZXJyb3JzID0gIXJlc3BvbnNlLnN1Y2Nlc3MgfHwgJ2Vycm9ycycgaW4gcmVzcG9uc2UgPyByZXNwb25zZS5lcnJvcnMgOiBbXTtcbiAgICAgICAgICAgICAgICB1cGRhdGVWYWxpZGF0aW9uRXJyb3JzKGVycm9ycyk7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmVnaXN0ZXJGb3JtWycyJ10uaXNfY29tcGxldGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBjbGVhblZhbGlkYXRpb25FcnJvcnMoKTtcbiAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJGb3JtWycyJ10uaXNfY29tcGxldGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGVwKDIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlRXJyb3JzKGVycm9ycyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdXBkYXRlRXJyb3JzKGVycm9yKTtcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTdWJtaXRzIHJlZ2lzdHJhdGlvbiBGb3JtXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiB2ZXJpZnlBZGRpdGlvbmFsSW5mb3JtYXRpb24oKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGZvcm1EYXRhLnN0ZXAgPSAnMyc7XG4gICAgICAgICAgICB2YXIgZm9ybSA9IHtcbiAgICAgICAgICAgICAgICBwYXNzd29yZDogKDAsIGVuY3J5cHRpb25fMS5kZWZhdWx0KShmb3JtRGF0YS5wYXNzd29yZCwgKF9hID0gcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJyksXG4gICAgICAgICAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAoMCwgZW5jcnlwdGlvbl8xLmRlZmF1bHQpKGZvcm1EYXRhLnBhc3N3b3JkX2NvbmZpcm1hdGlvbiwgKF9iID0gcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAnJyksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBvc3QoJy9pYXRpL3JlZ2lzdGVyL2FkZGl0aW9uYWwnLCBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZm9ybURhdGEpLCBmb3JtKSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5yZXF1ZXN0LnJlc3BvbnNlVVJMLmluY2x1ZGVzKCdhY3Rpdml0aWVzJykpIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2FjdGl2aXRpZXMnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB2YXIgZXJyb3JzID0gIXJlc3BvbnNlLnN1Y2Nlc3MgfHwgJ2Vycm9ycycgaW4gcmVzcG9uc2UgPyByZXNwb25zZS5lcnJvcnMgOiBbXTtcbiAgICAgICAgICAgICAgICB1cGRhdGVWYWxpZGF0aW9uRXJyb3JzKGVycm9ycyk7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmVnaXN0ZXJGb3JtWyczJ10uaXNfY29tcGxldGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBjbGVhblZhbGlkYXRpb25FcnJvcnMoKTtcbiAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJGb3JtWyczJ10uaXNfY29tcGxldGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGVwKDMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlRXJyb3JzKGVycm9ycyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdXBkYXRlRXJyb3JzKGVycm9yKTtcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTdWJtaXRzIHJlZ2lzdHJhdGlvbiBGb3JtXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBzdWJtaXRGb3JtKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBmb3JtRGF0YS5zdGVwID0gJzQnO1xuICAgICAgICAgICAgdmFyIGZvcm0gPSB7XG4gICAgICAgICAgICAgICAgcGFzc3dvcmQ6ICgwLCBlbmNyeXB0aW9uXzEuZGVmYXVsdCkoZm9ybURhdGEucGFzc3dvcmQsIChfYSA9IHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJycpLFxuICAgICAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogKDAsIGVuY3J5cHRpb25fMS5kZWZhdWx0KShmb3JtRGF0YS5wYXNzd29yZF9jb25maXJtYXRpb24sIChfYiA9IHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogJycpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wb3N0KCcvaWF0aS9yZWdpc3RlcicsIF9fYXNzaWduKF9fYXNzaWduKHt9LCBmb3JtRGF0YSksIGZvcm0pKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzLnJlcXVlc3QucmVzcG9uc2VVUkwuaW5jbHVkZXMoJ2FjdGl2aXRpZXMnKSkge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvYWN0aXZpdGllcyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIHZhciBlcnJvcnMgPSAhcmVzcG9uc2Uuc3VjY2VzcyB8fCAnZXJyb3JzJyBpbiByZXNwb25zZSA/IHJlc3BvbnNlLmVycm9ycyA6IFtdO1xuICAgICAgICAgICAgICAgIHVwZGF0ZVZhbGlkYXRpb25FcnJvcnMoZXJyb3JzKTtcbiAgICAgICAgICAgICAgICBjbGVhbklhdGlFcnJvcnMoKTtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGlhdGlFcnJvciwgZXJyb3JzKTtcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZWdpc3RlckZvcm1bJzQnXS5pc19jb21wbGV0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNsZWFuVmFsaWRhdGlvbkVycm9ycygpO1xuICAgICAgICAgICAgICAgICAgICByZWdpc3RlckZvcm1bJzQnXS5pc19jb21wbGV0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0ZXAoNCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdXBkYXRlRXJyb3JzKGVycm9yKTtcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGdldEN1cnJlbnRTdGVwKCkge1xuICAgICAgICAgICAgcmV0dXJuIHN0ZXAudmFsdWUudG9TdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiB1cGRhdGVTdGVwKGN1cnJlbnRfc3RlcCkge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRfc3RlcCA9PT0gc3RlcC52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHN0ZXAudmFsdWUgKz0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogY2FsbHMgc3VibWl0IGZ1bmN0aW9uIGJhc2VkIG9uIGN1cnJlbnQgc3RlcCB2YWx1ZVxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gZ29Ub05leHRGb3JtKCkge1xuICAgICAgICAgICAgc3dpdGNoIChzdGVwLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICB2ZXJpZnlQdWJsaXNoZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICB2ZXJpZnlDb250YWN0SW5mb3JtYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICB2ZXJpZnlBZGRpdGlvbmFsSW5mb3JtYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBzdWJtaXRGb3JtKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGdvVG9QcmV2aW91c0Zvcm0oKSB7XG4gICAgICAgICAgICBjbGVhbklhdGlFcnJvcnMoKTtcbiAgICAgICAgICAgIHN0ZXAudmFsdWUgLT0gMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVnaXN0ZXJGb3JtOiByZWdpc3RlckZvcm0sXG4gICAgICAgICAgICBmb3JtRGF0YTogZm9ybURhdGEsXG4gICAgICAgICAgICBlcnJvckRhdGE6IGVycm9yRGF0YSxcbiAgICAgICAgICAgIHB1Ymxpc2hlckV4aXN0czogcHVibGlzaGVyRXhpc3RzLFxuICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlOiBpc0xvYWRlclZpc2libGUsXG4gICAgICAgICAgICBnb1RvTmV4dEZvcm06IGdvVG9OZXh0Rm9ybSxcbiAgICAgICAgICAgIGdvVG9QcmV2aW91c0Zvcm06IGdvVG9QcmV2aW91c0Zvcm0sXG4gICAgICAgICAgICBnZXRDdXJyZW50U3RlcDogZ2V0Q3VycmVudFN0ZXAsXG4gICAgICAgICAgICBjaGVja1N0ZXA6IGNoZWNrU3RlcCxcbiAgICAgICAgICAgIGlhdGlFcnJvcjogaWF0aUVycm9yLFxuICAgICAgICAgICAgaXNUZXh0RmllbGQ6IGlzVGV4dEZpZWxkLFxuICAgICAgICAgICAgcHJvcHM6IHByb3BzLFxuICAgICAgICAgICAgc3RlcDogc3RlcCxcbiAgICAgICAgICAgIHJlc2l6ZTogcmVzaXplLFxuICAgICAgICAgICAgdGV4dGFyZWE6IHRleHRhcmVhLFxuICAgICAgICAgICAgbGFuZ3VhZ2U6IGxhbmd1YWdlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnSWF0aVN0YW5kYXJkJyxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgZnVuY3Rpb24gZG93bmxvYWRNYW51YWwodHlwZSkge1xuICAgICAgICAgICAgdmFyIGZpbGVOYW1lID0ge1xuICAgICAgICAgICAgICAgIGFjdGl2aXR5OiAnSUFUSV9QdWJsaXNoZXJfQWN0aXZpdHlfU3RhbmRhcmQucGRmJyxcbiAgICAgICAgICAgICAgICBvcmdhbml6YXRpb246ICdJQVRJX1B1Ymxpc2hlcl9PcmdhbmlzYXRpb25fU3RhbmRhcmQucGRmJyxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB2YXIgdXJsID0gd2luZG93LmxvY2F0aW9uLm9yaWdpbiArIFwiL0RhdGEvTWFudWFscy9cIi5jb25jYXQoZmlsZU5hbWVbdHlwZV0pO1xuICAgICAgICAgICAgKDAsIGF4aW9zXzEuZGVmYXVsdCkoe1xuICAgICAgICAgICAgICAgIHVybDogdXJsLFxuICAgICAgICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInLFxuICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFtyZXNwb25zZS5kYXRhXSwge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYXBwbGljYXRpb24vcGRmJyxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgICAgICBsaW5rLmhyZWYgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgICAgICAgICBsaW5rLmRvd25sb2FkID0gZmlsZU5hbWVbdHlwZV07XG4gICAgICAgICAgICAgICAgbGluay5jbGljaygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgbGFuZ3VhZ2U6IGxhbmd1YWdlLCBkb3dubG9hZE1hbnVhbDogZG93bmxvYWRNYW51YWwgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1B1Ymxpc2hpbmdDaGVja2xpc3QnLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIGZ1bmN0aW9uIHRyaWdnZXJNb2RlbCgpIHtcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdvcGVuQWRkTW9kZWwnLCAndHJ1ZScpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyB0cmlnZ2VyTW9kZWw6IHRyaWdnZXJNb2RlbCwgbGFuZ3VhZ2U6IGxhbmd1YWdlIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIEVtYWlsVmVyaWZpY2F0aW9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL0VtYWlsVmVyaWZpY2F0aW9uLnZ1ZVwiKSk7XG52YXIgSG92ZXJUZXh0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLy4uLy4uL2NvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZVwiKSk7XG52YXIgbXVsdGlzZWxlY3RfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQHZ1ZWZvcm0vbXVsdGlzZWxlY3RcIikpO1xudmFyIExvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi4vLi4vY29tcG9uZW50cy9Mb2FkZXIudnVlXCIpKTtcbnZhciBlbmNyeXB0aW9uXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZW5jcnlwdGlvblwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBFbWFpbFZlcmlmaWNhdGlvbjogRW1haWxWZXJpZmljYXRpb25fdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgSG92ZXJUZXh0OiBIb3ZlclRleHRfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgTXVsdGlzZWxlY3Q6IG11bHRpc2VsZWN0XzEuZGVmYXVsdCxcbiAgICAgICAgTG9hZGVyOiBMb2FkZXJfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGNvdW50cnk6IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgYWdlbmN5OiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgc3RlcCA9ICgwLCB2dWVfMS5yZWYpKDEpO1xuICAgICAgICB2YXIgcHVibGlzaGVyRXhpc3RzID0gKDAsIHZ1ZV8xLnJlZikodHJ1ZSk7XG4gICAgICAgIHZhciBpc0xvYWRlclZpc2libGUgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBhZ2VuY3kgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuYWdlbmN5O1xuICAgICAgICB2YXIgZXJyb3JEYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBwdWJsaXNoZXJfbmFtZTogJycsXG4gICAgICAgICAgICBwdWJsaXNoZXJfaWQ6ICcnLFxuICAgICAgICAgICAgY291bnRyeTogJycsXG4gICAgICAgICAgICByZWdpc3RyYXRpb25fYWdlbmN5OiAnJyxcbiAgICAgICAgICAgIHJlZ2lzdHJhdGlvbl9udW1iZXI6ICcnLFxuICAgICAgICAgICAgaWRlbnRpZmllcjogJycsXG4gICAgICAgICAgICB1c2VybmFtZTogJycsXG4gICAgICAgICAgICBmdWxsX25hbWU6ICcnLFxuICAgICAgICAgICAgZW1haWw6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmQ6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAnJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBmb3JtRGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgcHVibGlzaGVyX25hbWU6ICcnLFxuICAgICAgICAgICAgcHVibGlzaGVyX2lkOiAnJyxcbiAgICAgICAgICAgIGNvdW50cnk6ICcnLFxuICAgICAgICAgICAgcmVnaXN0cmF0aW9uX2FnZW5jeTogJycsXG4gICAgICAgICAgICByZWdpc3RyYXRpb25fbnVtYmVyOiAnJyxcbiAgICAgICAgICAgIGlkZW50aWZpZXI6ICcnLFxuICAgICAgICAgICAgdXNlcm5hbWU6ICcnLFxuICAgICAgICAgICAgZnVsbF9uYW1lOiAnJyxcbiAgICAgICAgICAgIGVtYWlsOiAnJyxcbiAgICAgICAgICAgIHBhc3N3b3JkOiAnJyxcbiAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogJycsXG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZvcm1EYXRhLmNvdW50cnk7IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZvcm1EYXRhLnJlZ2lzdHJhdGlvbl9hZ2VuY3kgPSAnJztcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gW2Zvcm1EYXRhLnJlZ2lzdHJhdGlvbl9hZ2VuY3ksIGZvcm1EYXRhLnJlZ2lzdHJhdGlvbl9udW1iZXJdOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBmb3JtRGF0YS5pZGVudGlmaWVyID0gZm9ybURhdGEucmVnaXN0cmF0aW9uX2FnZW5jeVxuICAgICAgICAgICAgICAgID8gZm9ybURhdGEucmVnaXN0cmF0aW9uX2FnZW5jeSArICctJyArIGZvcm1EYXRhLnJlZ2lzdHJhdGlvbl9udW1iZXJcbiAgICAgICAgICAgICAgICA6IGZvcm1EYXRhLnJlZ2lzdHJhdGlvbl9udW1iZXI7XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgdmFyIHJlZ2lzdHJhdGlvbl9hZ2VuY3kgPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBhZ2VuY2llcyA9IGFnZW5jeS52YWx1ZTtcbiAgICAgICAgICAgIGlmIChmb3JtRGF0YS5jb3VudHJ5KSB7XG4gICAgICAgICAgICAgICAgdmFyIHVuY2F0ZWdvcml6ZWRfMSA9IFsnWEknLCAnWFInXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGFnZW5jaWVzKS5maWx0ZXIoZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBrZXkgPSBfYVswXTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGtleS5zdGFydHNXaXRoKGZvcm1EYXRhLmNvdW50cnkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICB1bmNhdGVnb3JpemVkXzEuc29tZShmdW5jdGlvbiAoaykgeyByZXR1cm4ga2V5LnN0YXJ0c1dpdGgoayk7IH0pO1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBhZ2VuY2llcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBpc1RleHRGaWVsZCA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChmaWVsZFR5cGUsIGZpZWxkTmFtZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoKGZpZWxkVHlwZSA9PT0gJ3RleHQnIHx8XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkVHlwZSA9PT0gJ3Bhc3N3b3JkJyB8fFxuICAgICAgICAgICAgICAgICAgICBmaWVsZFR5cGUgPT09ICdlbWFpbCcpICYmXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkTmFtZSAhPSAnaWRlbnRpZmllcicpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBjaGVja1N0ZXAgPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoZm9ybVN0ZXApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQoZm9ybVN0ZXAudG9TdHJpbmcoKSkgPT09IHN0ZXAudmFsdWU7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHJlZ2lzdGVyRm9ybSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgMToge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLnB1Ymxpc2hlcl9pbmZvcm1hdGlvbi5sYWJlbCxcbiAgICAgICAgICAgICAgICBpc19jb21wbGV0ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcucHVibGlzaGVyX2luZm9ybWF0aW9uLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcucHVibGlzaGVyX2luZm9ybWF0aW9uLmhvdmVyX3RleHQsXG4gICAgICAgICAgICAgICAgZmllbGRzOiB7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hlcl9uYW1lOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5wdWJsaXNoZXJfbmFtZS5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdwdWJsaXNoZXJfbmFtZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5wdWJsaXNoZXJfbmFtZS5wbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAncHVibGlzaGVyLW5hbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLnB1Ymxpc2hlcl9uYW1lLmhvdmVyX3RleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ2NvbC1zcGFuLTIgbWItNCBsZzptYi0yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hlcl9pZDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcucHVibGlzaGVyX2lkLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3B1Ymxpc2hlcl9pZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5wdWJsaXNoZXJfaWQucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3B1Ymxpc2hlci1pZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcucHVibGlzaGVyX2lkLmhvdmVyX3RleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItMicsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBjb3VudHJ5OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5jb3VudHJ5LmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2NvdW50cnknLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcuY291bnRyeS5wbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnY291bnRyeV9zZWxlY3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLmNvdW50cnkuaG92ZXJfdGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzLmNvdW50cnksXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItMiByZWxhdGl2ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBvcmdhbml6YXRpb25fcmVnaXN0cmF0aW9uX2FnZW5jeToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcub3JnX3JlZ2lzdHJhdGlvbl9hZ2VuY3kubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncmVnaXN0cmF0aW9uX2FnZW5jeScsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5vcmdfcmVnaXN0cmF0aW9uX2FnZW5jeS5wbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAncmVnaXN0cmF0aW9uLWFnZW5jeScsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcub3JnX3JlZ2lzdHJhdGlvbl9hZ2VuY3kuaG92ZXJfdGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogcmVnaXN0cmF0aW9uX2FnZW5jeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi0yIHJlbGF0aXZlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIG9yZ2FuaXphdGlvbl9yZWdpc3RyYXRpb25fbm86IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLm9yZ19yZWdpc3RyYXRpb25fbm8ubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncmVnaXN0cmF0aW9uX251bWJlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5vcmdfcmVnaXN0cmF0aW9uX25vLnBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdyZWdpc3RyYXRpb24tbnVtYmVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5vcmdfcmVnaXN0cmF0aW9uX25vLmhvdmVyX3RleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItMicsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ6IFwiXCIuY29uY2F0KGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcuZm9yX2VnLCBcIiAxMjM0NTZcIiksXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGlhdGlfb3JnYW5pemF0aW9uYWxfaWRlbnRpZmllcjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcuaWF0aV9vcmdfaWRlbnRpZmllci5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdpZGVudGlmaWVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnaWRlbnRpZmllcicsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcuaWF0aV9vcmdfaWRlbnRpZmllci5ob3Zlcl90ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTYnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLmlhdGlfb3JnX2lkZW50aWZpZXIuaGVscF90ZXh0LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgMjoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLmFkbWluaXN0cmF0b3JfaW5mb3JtYXRpb24ubGFiZWwsXG4gICAgICAgICAgICAgICAgaXNfY29tcGxldGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLmFkbWluaXN0cmF0b3JfaW5mb3JtYXRpb24ucmVnaXN0ZXJfZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5hZG1pbmlzdHJhdG9yX2luZm9ybWF0aW9uLmhvdmVyX3RleHQsXG4gICAgICAgICAgICAgICAgZmllbGRzOiB7XG4gICAgICAgICAgICAgICAgICAgIHVzZXJuYW1lOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy51c2VybmFtZS5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd1c2VybmFtZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy51c2VybmFtZS5wbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAndXNlcm5hbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLnVzZXJuYW1lLmhvdmVyX3RleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItMicsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBmdWxsX25hbWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLmZ1bGxuYW1lLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2Z1bGxfbmFtZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5mdWxsbmFtZS5wbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnZnVsbC1uYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ2NvbC1zdGFydC0xIG1iLTQgbGc6bWItMicsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGVtYWlsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5lbWFpbF9hZGRyZXNzLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLmVtYWlsX2FkZHJlc3MucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTInLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBwYXNzd29yZDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcucGFzc3dvcmQubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncGFzc3dvcmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcucGFzc3dvcmQucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3Bhc3N3b3JkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAncGFzc3dvcmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTInLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBjb25maXJtX3Bhc3N3b3JkOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5wYXNzd29yZC5jb25maXJtLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3Bhc3N3b3JkX2NvbmZpcm1hdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5wYXNzd29yZC5wbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAncGFzc3dvcmQtY29uZmlybWF0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAncGFzc3dvcmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTYnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgMzoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLmVtYWlsX3ZlcmlmaWNhdGlvbi50aXRsZSxcbiAgICAgICAgICAgICAgICBpc19jb21wbGV0ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcuZW1haWxfdmVyaWZpY2F0aW9uLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB1cGRhdGVGb3JtRXJyb3JzID0gZnVuY3Rpb24gKGVycm9ycykge1xuICAgICAgICAgICAgaWYgKGVycm9ycyA9PT0gdm9pZCAwKSB7IGVycm9ycyA9IFtdOyB9XG4gICAgICAgICAgICB2YXIgZXJyb3JMZW5ndGggPSBPYmplY3Qua2V5cyhlcnJvcnMpLmxlbmd0aDtcbiAgICAgICAgICAgIGlmIChlcnJvckxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGVycktleSBpbiBlcnJvckRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JEYXRhW2VycktleV0gPSAnJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXJyb3JMZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgZXJyS2V5IGluIGVycm9yRGF0YSkge1xuICAgICAgICAgICAgICAgICAgICBlcnJvckRhdGFbZXJyS2V5XSA9IGVycktleSBpbiBlcnJvcnMgPyBlcnJvcnNbZXJyS2V5XVswXSA6ICcnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgZnVuY3Rpb24gdmVyaWZ5UHVibGlzaGVyKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBmb3JtRGF0YS5pZGVudGlmaWVyID0gXCJcIi5jb25jYXQoZm9ybURhdGEucmVnaXN0cmF0aW9uX2FnZW5jeSwgXCItXCIpLmNvbmNhdChmb3JtRGF0YS5yZWdpc3RyYXRpb25fbnVtYmVyKTtcbiAgICAgICAgICAgIHZhciBmb3JtID0ge1xuICAgICAgICAgICAgICAgIHBhc3N3b3JkOiAoMCwgZW5jcnlwdGlvbl8xLmRlZmF1bHQpKGZvcm1EYXRhLnBhc3N3b3JkLCAoX2EgPSBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnKSxcbiAgICAgICAgICAgICAgICBwYXNzd29yZF9jb25maXJtYXRpb246ICgwLCBlbmNyeXB0aW9uXzEuZGVmYXVsdCkoZm9ybURhdGEucGFzc3dvcmRfY29uZmlybWF0aW9uLCAoX2IgPSBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6ICcnKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucG9zdCgnL3ZlcmlmeVB1Ymxpc2hlcicsIF9fYXNzaWduKF9fYXNzaWduKHt9LCBmb3JtRGF0YSksIGZvcm0pKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzLnJlcXVlc3QucmVzcG9uc2VVUkwuaW5jbHVkZXMoJ2FjdGl2aXRpZXMnKSkge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvYWN0aXZpdGllcyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIHB1Ymxpc2hlckV4aXN0cy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdmFyIGVycm9ycyA9ICFyZXNwb25zZS5zdWNjZXNzIHx8ICdlcnJvcnMnIGluIHJlc3BvbnNlID8gcmVzcG9uc2UuZXJyb3JzIDogW107XG4gICAgICAgICAgICAgICAgdXBkYXRlRm9ybUVycm9ycyhlcnJvcnMpO1xuICAgICAgICAgICAgICAgIGlmICgncHVibGlzaGVyX2Vycm9yJyBpbiByZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoZXJFeGlzdHMudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJGb3JtWycxJ10uaXNfY29tcGxldGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBzdGVwLnZhbHVlICs9IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gc3VibWl0Rm9ybSgpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgdmFyIGZvcm0gPSB7XG4gICAgICAgICAgICAgICAgcGFzc3dvcmQ6ICgwLCBlbmNyeXB0aW9uXzEuZGVmYXVsdCkoZm9ybURhdGEucGFzc3dvcmQsIChfYSA9IHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJycpLFxuICAgICAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogKDAsIGVuY3J5cHRpb25fMS5kZWZhdWx0KShmb3JtRGF0YS5wYXNzd29yZF9jb25maXJtYXRpb24sIChfYiA9IHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogJycpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wb3N0KCcvcmVnaXN0ZXInLCBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZm9ybURhdGEpLCBmb3JtKSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5yZXF1ZXN0LnJlc3BvbnNlVVJMLmluY2x1ZGVzKCdhY3Rpdml0aWVzJykpIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2FjdGl2aXRpZXMnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB2YXIgZXJyb3JzID0gIXJlc3BvbnNlLnN1Y2Nlc3MgfHwgJ2Vycm9ycycgaW4gcmVzcG9uc2UgPyByZXNwb25zZS5lcnJvcnMgOiBbXTtcbiAgICAgICAgICAgICAgICB1cGRhdGVGb3JtRXJyb3JzKGVycm9ycyk7XG4gICAgICAgICAgICAgICAgZXJyb3JEYXRhLnBhc3N3b3JkX2NvbmZpcm1hdGlvbiA9IGVycm9ycy5wYXNzd29yZF9jb25maXJtYXRpb25cbiAgICAgICAgICAgICAgICAgICAgPyBlcnJvcnMucGFzc3dvcmRfY29uZmlybWF0aW9uWzBdXG4gICAgICAgICAgICAgICAgICAgIDogZXJyb3JzLnBhc3N3b3JkXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGVycm9ycy5wYXNzd29yZFswXVxuICAgICAgICAgICAgICAgICAgICAgICAgOiAnJztcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICByZWdpc3RlckZvcm1bJzInXS5pc19jb21wbGV0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAudmFsdWUgKz0gMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB2YXIgZXJyb3JzID0gZXJyb3IucmVzcG9uc2UuZGF0YS5lcnJvcnM7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdXBkYXRlRm9ybUVycm9ycyhlcnJvcnMpO1xuICAgICAgICAgICAgICAgIGVycm9yRGF0YS5wYXNzd29yZF9jb25maXJtYXRpb24gPSBlcnJvcnMucGFzc3dvcmRfY29uZmlybWF0aW9uXG4gICAgICAgICAgICAgICAgICAgID8gZXJyb3JzLnBhc3N3b3JkX2NvbmZpcm1hdGlvblswXVxuICAgICAgICAgICAgICAgICAgICA6IGVycm9ycy5wYXNzd29yZFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBlcnJvcnMucGFzc3dvcmRbMF1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogJyc7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBnZXRDdXJyZW50U3RlcCgpIHtcbiAgICAgICAgICAgIHJldHVybiBzdGVwLnZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gZ29Ub05leHRGb3JtKCkge1xuICAgICAgICAgICAgaWYgKHN0ZXAudmFsdWUgPT09IDEpXG4gICAgICAgICAgICAgICAgdmVyaWZ5UHVibGlzaGVyKCk7XG4gICAgICAgICAgICBpZiAoc3RlcC52YWx1ZSA9PT0gMilcbiAgICAgICAgICAgICAgICBzdWJtaXRGb3JtKCk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gZ29Ub1ByZXZpb3VzRm9ybSgpIHtcbiAgICAgICAgICAgIHN0ZXAudmFsdWUgLT0gMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVnaXN0ZXJGb3JtOiByZWdpc3RlckZvcm0sXG4gICAgICAgICAgICBmb3JtRGF0YTogZm9ybURhdGEsXG4gICAgICAgICAgICBlcnJvckRhdGE6IGVycm9yRGF0YSxcbiAgICAgICAgICAgIHB1Ymxpc2hlckV4aXN0czogcHVibGlzaGVyRXhpc3RzLFxuICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlOiBpc0xvYWRlclZpc2libGUsXG4gICAgICAgICAgICBnb1RvTmV4dEZvcm06IGdvVG9OZXh0Rm9ybSxcbiAgICAgICAgICAgIGdvVG9QcmV2aW91c0Zvcm06IGdvVG9QcmV2aW91c0Zvcm0sXG4gICAgICAgICAgICBnZXRDdXJyZW50U3RlcDogZ2V0Q3VycmVudFN0ZXAsXG4gICAgICAgICAgICBjaGVja1N0ZXA6IGNoZWNrU3RlcCxcbiAgICAgICAgICAgIGlzVGV4dEZpZWxkOiBpc1RleHRGaWVsZCxcbiAgICAgICAgICAgIHByb3BzOiBwcm9wcyxcbiAgICAgICAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnU3VwcG9ydFBhZ2UnLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBsYW5ndWFnZTogbGFuZ3VhZ2UgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdBZG1pbkZvb3RlcicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgc3VwZXJBZG1pbjogeyB0eXBlOiBCb29sZWFuLCByZXF1aXJlZDogZmFsc2UsIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgZnVuY3Rpb24gZG93bmxvYWRNYW51YWwodHlwZSkge1xuICAgICAgICAgICAgdmFyIGZpbGVOYW1lID0ge1xuICAgICAgICAgICAgICAgIHVzZXI6ICdJQVRJX1B1Ymxpc2hlci1Vc2VyX01hbnVhbF92MS4wLnBkZicsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdmFyIHVybCA9IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyBcIi9EYXRhL01hbnVhbHMvXCIuY29uY2F0KGZpbGVOYW1lW3R5cGVdKTtcbiAgICAgICAgICAgICgwLCBheGlvc18xLmRlZmF1bHQpKHtcbiAgICAgICAgICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJyxcbiAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbcmVzcG9uc2UuZGF0YV0sIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL3BkZicsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgICAgICAgICAgbGluay5ocmVmID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICAgICAgICAgICAgbGluay5kb3dubG9hZCA9IGZpbGVOYW1lW3R5cGVdO1xuICAgICAgICAgICAgICAgIGxpbmsuY2xpY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGxhbmd1YWdlOiBsYW5ndWFnZSwgZG93bmxvYWRNYW51YWw6IGRvd25sb2FkTWFudWFsIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBwcm9wczoge1xuICAgICAgICBtZXNzYWdlOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbGFuZ3VhZ2U6IGxhbmd1YWdlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIExvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Mb2FkZXIudnVlXCIpKTtcbnZhciBlbmNyeXB0aW9uXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZW5jcnlwdGlvblwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBMb2FkZXI6IExvYWRlcl92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgbWVzc2FnZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIGludGVudDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIGZvcm1EYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB1c2VybmFtZTogJycsXG4gICAgICAgICAgICBwYXNzd29yZDogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZXJyb3JEYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB1c2VybmFtZTogJycsXG4gICAgICAgICAgICBwYXNzd29yZDogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaXNMb2FkZXJWaXNpYmxlID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICBmdW5jdGlvbiBsb2dpbigpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgZm9ybTtcbiAgICAgICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9iKSB7XG4gICAgICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGZvcm0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VybmFtZTogZm9ybURhdGEudXNlcm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXNzd29yZDogKDAsIGVuY3J5cHRpb25fMS5kZWZhdWx0KShmb3JtRGF0YS5wYXNzd29yZCwgKF9hID0gcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJyksXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgLnBvc3QoJy9sb2dpbicsIGZvcm0pXG4gICAgICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yRGF0YS51c2VybmFtZSA9ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JEYXRhLnBhc3N3b3JkID0gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoISgnZXJyb3JzJyBpbiByZXNwb25zZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZXJyb3JzID0gZXJyb3IucmVzcG9uc2UuZGF0YS5lcnJvcnM7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvckRhdGEudXNlcm5hbWUgPSBlcnJvcnMudXNlcm5hbWUgPyBlcnJvcnMudXNlcm5hbWVbMF0gOiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yRGF0YS5wYXNzd29yZCA9IGVycm9ycy5wYXNzd29yZCA/IGVycm9ycy5wYXNzd29yZFswXSA6ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZm9ybURhdGE6IGZvcm1EYXRhLFxuICAgICAgICAgICAgZXJyb3JEYXRhOiBlcnJvckRhdGEsXG4gICAgICAgICAgICBpc0xvYWRlclZpc2libGU6IGlzTG9hZGVyVmlzaWJsZSxcbiAgICAgICAgICAgIGxvZ2luOiBsb2dpbixcbiAgICAgICAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1dlYkZvb3RlcicsXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIGZ1bmN0aW9uIGRvd25sb2FkTWFudWFsKHR5cGUpIHtcbiAgICAgICAgICAgIHZhciBmaWxlTmFtZSA9IHtcbiAgICAgICAgICAgICAgICB1c2VyOiAnSUFUSV9QdWJsaXNoZXItVXNlcl9NYW51YWxfdjEuMC5wZGYnLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHZhciB1cmwgPSB3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgXCIvRGF0YS9NYW51YWxzL1wiLmNvbmNhdChmaWxlTmFtZVt0eXBlXSk7XG4gICAgICAgICAgICAoMCwgYXhpb3NfMS5kZWZhdWx0KSh7XG4gICAgICAgICAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcicsXG4gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHZhciBibG9iID0gbmV3IEJsb2IoW3Jlc3BvbnNlLmRhdGFdLCB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi9wZGYnLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgICAgIGxpbmsuaHJlZiA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgICAgICAgICAgIGxpbmsuZG93bmxvYWQgPSBmaWxlTmFtZVt0eXBlXTtcbiAgICAgICAgICAgICAgICBsaW5rLmNsaWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBsYW5ndWFnZTogbGFuZ3VhZ2UsIGRvd25sb2FkTWFudWFsOiBkb3dubG9hZE1hbnVhbCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgTmF2RHJvcGRvd25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uLy4uLy4uL2NvbXBvbmVudHMvTmF2RHJvcGRvd24udnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIE5hdkRyb3Bkb3duOiBOYXZEcm9wZG93bl92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgdGl0bGU6IHsgdHlwZTogU3RyaW5nLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBhdXRoOiB7IHR5cGU6IFN0cmluZywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc3VwZXJBZG1pbjogeyB0eXBlOiBCb29sZWFuLCByZXF1aXJlZDogZmFsc2UsIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ25vLW5hdicpO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLm9uVW5tb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ25vLW5hdicpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHJldHVybiB7IGxhbmd1YWdlOiBsYW5ndWFnZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLyoqXG4gKiBGaXJzdCB3ZSB3aWxsIGxvYWQgYWxsIG9mIHRoaXMgcHJvamVjdCdzIEphdmFTY3JpcHQgZGVwZW5kZW5jaWVzIHdoaWNoXG4gKiBpbmNsdWRlcyBWdWUgYW5kIG90aGVyIGxpYnJhcmllcy4gSXQgaXMgYSBncmVhdCBzdGFydGluZyBwb2ludCB3aGVuXG4gKiBidWlsZGluZyByb2J1c3QsIHBvd2VyZnVsIHdlYiBhcHBsaWNhdGlvbnMgdXNpbmcgVnVlIGFuZCBMYXJhdmVsLlxuICovXG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZTNfc21vb3RoX3Njcm9sbF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJ2dWUzLXNtb290aC1zY3JvbGxcIikpO1xudmFyIHN2Z192dWUzXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcInN2Zy12dWUzXCIpKTtcbnZhciBXZWJIZWFkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3Mvd2ViL3BhcnRpYWxzL1dlYkhlYWRlci52dWVcIikpO1xudmFyIFdlYkZvb3Rlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy93ZWIvcGFydGlhbHMvV2ViRm9vdGVyLnZ1ZVwiKSk7XG52YXIgQWRtaW5Gb290ZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3Mvd2ViL3BhcnRpYWxzL0FkbWluRm9vdGVyLnZ1ZVwiKSk7XG52YXIgV2VsY29tZVBhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3Mvd2ViL1dlbGNvbWVQYWdlLnZ1ZVwiKSk7XG52YXIgUmVnaXN0ZXJQYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL3dlYi9SZWdpc3RlclBhZ2UudnVlXCIpKTtcbnZhciBBYm91dFBhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3Mvd2ViL0Fib3V0UGFnZS52dWVcIikpO1xudmFyIFN1cHBvcnRQYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL3dlYi9TdXBwb3J0UGFnZS52dWVcIikpO1xudmFyIElhdGlTdGFuZGFyZF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy93ZWIvSWF0aVN0YW5kYXJkLnZ1ZVwiKSk7XG52YXIgUHVibGlzaGluZ0NoZWNrbGlzdF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy93ZWIvUHVibGlzaGluZ0NoZWNrbGlzdC52dWVcIikpO1xudmFyIElhdGlSZWdpc3RlclBhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3Mvd2ViL0lhdGlSZWdpc3RlclBhZ2UudnVlXCIpKTtcbi8qKlxuICogVnVlIGNvbXBvbmVudHMgZm9yIEFjdGl2aXRpZXMgTGlzdGluZ1xuICovXG52YXIgUmVzdWx0RGV0YWlsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvUmVzdWx0RGV0YWlsLnZ1ZVwiKSk7XG52YXIgUmVzdWx0TGlzdF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL1Jlc3VsdExpc3QudnVlXCIpKTtcbnZhciBJbmRpY2F0b3JEZXRhaWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9JbmRpY2F0b3JEZXRhaWwudnVlXCIpKTtcbnZhciBJbmRpY2F0b3JMaXN0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvSW5kaWNhdG9yTGlzdC52dWVcIikpO1xudmFyIFBlcmlvZHNEZXRhaWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvYWN0aXZpdHkvcGVyaW9kcy9QZXJpb2RzRGV0YWlsLnZ1ZVwiKSk7XG52YXIgUGVyaW9kc0xpc3RfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvYWN0aXZpdHkvcGVyaW9kcy9QZXJpb2RzTGlzdC52dWVcIikpO1xudmFyIFRyYW5zYWN0aW9uTGlzdF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvVHJhbnNhY3Rpb25MaXN0LnZ1ZVwiKSk7XG52YXIgVHJhbnNhY3Rpb25EZXRhaWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL1RyYW5zYWN0aW9uRGV0YWlsLnZ1ZVwiKSk7XG52YXIgRGVzY3JpcHRpb25Gb3JtX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL2NvbXBvbmVudHMvRGVzY3JpcHRpb25Gb3JtLnZ1ZVwiKSk7XG52YXIgRWxlbWVudHNOb3RlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0VsZW1lbnRzTm90ZS52dWVcIikpO1xudmFyIEFjdGl2aXR5SW5kZXhfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvYWN0aXZpdHkvQWN0aXZpdHlJbmRleC52dWVcIikpO1xudmFyIEFkbWluSGVhZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL2NvbXBvbmVudHMvQWRtaW5IZWFkZXIudnVlXCIpKTtcbnZhciBBY3Rpdml0eURldGFpbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9hY3Rpdml0eS9BY3Rpdml0eURldGFpbC52dWVcIikpO1xudmFyIFNpZGViYXJIZWxwQmxvY2tfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvU2lkZWJhckhlbHBCbG9jay52dWVcIikpO1xudmFyIEFjdGl2aXR5VXBsb2FkX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL2ltcG9ydC9BY3Rpdml0eVVwbG9hZC52dWVcIikpO1xudmFyIEFjdGl2aXR5WGxzVXBsb2FkX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL2ltcG9ydC9BY3Rpdml0eVhsc1VwbG9hZC52dWVcIikpO1xudmFyIERhc2hib2FyZFBhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvZGFzaGJvYXJkL0Rhc2hib2FyZFBhZ2UudnVlXCIpKTtcbnZhciBJbXBvcnRMaXN0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL2ltcG9ydC9JbXBvcnRMaXN0LnZ1ZVwiKSk7XG52YXIgWGxzTGlzdF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9pbXBvcnQvWGxzTGlzdC52dWVcIikpO1xuLyoqXG4gKiBTZXR0aW5nIHBhZ2VcbiAqL1xudmFyIFNldHRpbmdQYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL3NldHRpbmcvU2V0dGluZ1BhZ2UudnVlXCIpKTtcbi8vQWN0aXZpdHkgRGVmYXVsdCBWYWx1ZXNcbnZhciBBY3Rpdml0eURlZmF1bHRWYWx1ZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9hY3Rpdml0eS9BY3Rpdml0eURlZmF1bHRWYWx1ZS52dWVcIikpO1xuLyoqXG4gKiB2dWUgY29tcG9uZW50IGZvciBwYXNzd29yZCByZXNldFxuICovXG52YXIgUmVzZXRQYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL3Jlc2V0L1Jlc2V0UGFnZS52dWVcIikpO1xudmFyIFBhc3N3b3JkUmVjb3ZlcnlfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvcmVzZXQvUGFzc3dvcmRSZWNvdmVyeS52dWVcIikpO1xudmFyIFJlc2V0UGFzc3dvcmRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvcmVzZXQvUmVzZXRQYXNzd29yZC52dWVcIikpO1xuLyoqXG4gKiBPcmdhbmlzYXRpb24gZGF0YVxuICovXG52YXIgT3JnYW5pc2F0aW9uRGF0YV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9vcmdhbmlzYXRpb24vT3JnYW5pc2F0aW9uRGF0YS52dWVcIikpO1xuLyoqXG4gKiBPcmdhbmlzYXRpb24gTGlzdCAvIFByb3h5XG4gKi9cbnZhciBPcmdhbmlzYXRpb25MaXN0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL3N1cGVyYWRtaW4vT3JnYW5pc2F0aW9uTGlzdC52dWVcIikpO1xudmFyIEFkbWluQmFyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL3N1cGVyYWRtaW4vY29tcG9uZW50cy9BZG1pbkJhci52dWVcIikpO1xuLyoqXG4gKiBVc2VyIE1vZHVsZSBjb21wb25lbnRzXG4gKi9cbnZhciBVc2VyUHJvZmlsZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy91c2VyL1VzZXJQcm9maWxlLnZ1ZVwiKSk7XG52YXIgVXNlckxpc3RpbmdfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvdXNlci9Vc2VyTGlzdGluZy52dWVcIikpO1xuLyoqXG4gKiBBdWRpdCBjb21wb25lbnRcbiAqL1xudmFyIEF1ZGl0TGlzdGluZ192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9hdWRpdC9BdWRpdExpc3RpbmcudnVlXCIpKTtcbi8qKlxuICogQWRkaXRpb25hbCBDb21wb25lbnRzXG4gKi9cbnZhciBIb3ZlclRleHRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vY29tcG9uZW50cy9Ib3ZlclRleHQudnVlXCIpKTtcbnZhciBQYWdlVGl0bGVfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vY29tcG9uZW50cy9zZWN0aW9ucy9QYWdlVGl0bGUudnVlXCIpKTtcbnZhciBMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vY29tcG9uZW50cy9Mb2FkZXIudnVlXCIpKTtcbnZhciBTeXN0ZW1WZXJzaW9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL3N1cGVyYWRtaW4vU3lzdGVtVmVyc2lvbi52dWVcIikpO1xudmFyIHZ1ZTNfYXBleGNoYXJ0c18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJ2dWUzLWFwZXhjaGFydHNcIikpO1xudmFyIGFwcCA9ICgwLCB2dWVfMS5jcmVhdGVBcHApKHt9KTtcbmFwcC51c2UodnVlM19hcGV4Y2hhcnRzXzEuZGVmYXVsdCk7XG4vKipcbiAqIEdsb2JhbCBDb21wb25lbnRzXG4gKi9cbmFwcFxuICAgIC5jb21wb25lbnQoJ1dlYkhlYWRlcicsIFdlYkhlYWRlcl92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ1dlYkZvb3RlcicsIFdlYkZvb3Rlcl92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ0FkbWluRm9vdGVyJywgQWRtaW5Gb290ZXJfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdXZWxjb21lU2lnbmluJywgV2VsY29tZVBhZ2VfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdSZWdpc3RlckZvcm0nLCBSZWdpc3RlclBhZ2VfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdJYXRpUmVnaXN0ZXJGb3JtJywgSWF0aVJlZ2lzdGVyUGFnZV92dWVfMS5kZWZhdWx0KTtcbi8qKlxuICogcmVnaXN0ZXJpbmcgd2ViIHBvcnRhbCBwYWdlc1xuICovXG5hcHBcbiAgICAuY29tcG9uZW50KCdBYm91dFBhZ2UnLCBBYm91dFBhZ2VfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdTdXBwb3J0UGFnZScsIFN1cHBvcnRQYWdlX3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnSWF0aVN0YW5kYXJkJywgSWF0aVN0YW5kYXJkX3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnUHVibGlzaGluZ0NoZWNrbGlzdCcsIFB1Ymxpc2hpbmdDaGVja2xpc3RfdnVlXzEuZGVmYXVsdCk7XG4vKipcbiAqIFJlZ2lzdGVyaW5nIHZ1ZSBjb21wb25lbnQgZm9yIGFjdGl2aXR5IGxpc3RpbmdcbiAqL1xuYXBwXG4gICAgLmNvbXBvbmVudCgnQWN0aXZpdHlUZW1wbGF0ZScsIEFjdGl2aXR5SW5kZXhfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdMb2dnZWRpbkhlYWRlcicsIEFkbWluSGVhZGVyX3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnQWN0aXZpdGllc0RldGFpbCcsIEFjdGl2aXR5RGV0YWlsX3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnRGVzY3JpcHRpb25Gb3JtJywgRGVzY3JpcHRpb25Gb3JtX3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnRWxlbWVudHNOb3RlJywgRWxlbWVudHNOb3RlX3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnUmVzdWx0RGV0YWlsJywgUmVzdWx0RGV0YWlsX3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnUmVzdWx0TGlzdCcsIFJlc3VsdExpc3RfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdJbmRpY2F0b3JEZXRhaWwnLCBJbmRpY2F0b3JEZXRhaWxfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdJbmRpY2F0b3JMaXN0JywgSW5kaWNhdG9yTGlzdF92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ1BlcmlvZHNEZXRhaWwnLCBQZXJpb2RzRGV0YWlsX3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnUGVyaW9kc0xpc3QnLCBQZXJpb2RzTGlzdF92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ1RyYW5zYWN0aW9uTGlzdCcsIFRyYW5zYWN0aW9uTGlzdF92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ1RyYW5zYWN0aW9uRGV0YWlsJywgVHJhbnNhY3Rpb25EZXRhaWxfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdTaWRlYmFySGVscEJsb2NrJywgU2lkZWJhckhlbHBCbG9ja192dWVfMS5kZWZhdWx0KTtcbi8qXG4gKiBJbXBvcnQgcGFnZVxuICovXG5hcHBcbiAgICAuY29tcG9uZW50KCdBY3Rpdml0eVVwbG9hZCcsIEFjdGl2aXR5VXBsb2FkX3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnQWN0aXZpdHlYbHNVcGxvYWQnLCBBY3Rpdml0eVhsc1VwbG9hZF92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ0ltcG9ydExpc3QnLCBJbXBvcnRMaXN0X3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnWGxzTGlzdCcsIFhsc0xpc3RfdnVlXzEuZGVmYXVsdCk7XG4vLyBkYXNoYm9hcmQgcGFnZVxuYXBwLmNvbXBvbmVudCgnRGFzaGJvYXJkUGFnZScsIERhc2hib2FyZFBhZ2VfdnVlXzEuZGVmYXVsdCk7XG4vKlxuICogU2V0dGluZyBwYWdlXG4gKi9cbmFwcC5jb21wb25lbnQoJ1NldHRpbmdQYWdlJywgU2V0dGluZ1BhZ2VfdnVlXzEuZGVmYXVsdCk7XG5hcHAuY29tcG9uZW50KCdTeXN0ZW1WZXJzaW9uJywgU3lzdGVtVmVyc2lvbl92dWVfMS5kZWZhdWx0KTtcbmFwcC5jb21wb25lbnQoJ0FjdGl2aXR5RGVmYXVsdFZhbHVlcycsIEFjdGl2aXR5RGVmYXVsdFZhbHVlX3Z1ZV8xLmRlZmF1bHQpO1xuLypcblJlZ2lzdGVyaW5nIHZ1ZSBjb21wb25lbnQgZm9yIHBhc3N3b3JkIHJlc2V0XG4qL1xuYXBwXG4gICAgLmNvbXBvbmVudCgnUmVzZXRQYWdlJywgUmVzZXRQYWdlX3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnUGFzc3dvcmRSZWNvdmVyeScsIFBhc3N3b3JkUmVjb3ZlcnlfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdSZXNldFBhc3N3b3JkJywgUmVzZXRQYXNzd29yZF92dWVfMS5kZWZhdWx0KTtcbi8qKlxuICogUmVnaXN0ZXJpbmcgdXNlciBtb2R1bGUgcmVsYXRlZCB2dWUgY29tcG9uZW50c1xuICovXG5hcHAuY29tcG9uZW50KCdVc2VyUHJvZmlsZScsIFVzZXJQcm9maWxlX3Z1ZV8xLmRlZmF1bHQpLmNvbXBvbmVudCgnVXNlckxpc3RpbmcnLCBVc2VyTGlzdGluZ192dWVfMS5kZWZhdWx0KTtcbi8qKlxuICogUmVnaXN0ZXJpbmcgQWRkaXRpb25hbCBDb21wb25lbnRzXG4gKi9cbmFwcC5jb21wb25lbnQoJ0hvdmVyVGV4dCcsIEhvdmVyVGV4dF92dWVfMS5kZWZhdWx0KTtcbmFwcC5jb21wb25lbnQoJ1BhZ2VUaXRsZScsIFBhZ2VUaXRsZV92dWVfMS5kZWZhdWx0KTtcbmFwcC5jb21wb25lbnQoJ0xvYWRpbmdTdGF0ZScsIExvYWRlcl92dWVfMS5kZWZhdWx0KTtcbi8qKlxuICogT3JnYW5pc2F0aW9uIGRhdGFcbiAqL1xuYXBwLmNvbXBvbmVudCgnT3JnYW5pc2F0aW9uRGF0YScsIE9yZ2FuaXNhdGlvbkRhdGFfdnVlXzEuZGVmYXVsdCk7XG4vKipcbiAqIFByb3h5XG4gKi9cbmFwcC5jb21wb25lbnQoJ09yZ2FuaXNhdGlvbkxpc3QnLCBPcmdhbmlzYXRpb25MaXN0X3Z1ZV8xLmRlZmF1bHQpO1xuYXBwLmNvbXBvbmVudCgnQWRtaW5CYXInLCBBZG1pbkJhcl92dWVfMS5kZWZhdWx0KTtcbi8qKlxuICogQXVkaXRcbiAqL1xuYXBwLmNvbXBvbmVudCgnQXVkaXRMaXN0aW5nJywgQXVkaXRMaXN0aW5nX3Z1ZV8xLmRlZmF1bHQpO1xuLyoqXG4gKiBFeHRlbnNpb24gdG8gaW5saW5lIFNWRyBmaWxlcyB3aXRoIFZ1ZS5qcyBhbmQgb3B0aW1pemUgdGhlbSBhdXRvbWF0aWNhbGx5IHdpdGggU1ZHT1xuICovXG5hcHAudXNlKHN2Z192dWUzXzEuZGVmYXVsdCk7XG5hcHAudXNlKHZ1ZTNfc21vb3RoX3Njcm9sbF8xLmRlZmF1bHQpO1xuLy8gZGV0ZWN0IHNjcm9sbCB1cCBvciBkb3duXG52YXIgbGFzdFNjcm9sbFRvcCA9IDAsIGFmZml4VHlwZSA9ICdzdGlja3ktbm9uZSc7XG52YXIgc3RpY2t5U2lkZWJhciA9IGZ1bmN0aW9uIChlbCwgcGFyZW50V3JhcHBlcikge1xuICAgIC8vc3RpY2t5IGVsZW1lbnQvY2hpbGQgZGF0YVxuICAgIHZhciBzdGlja3lFbGVtZW50ID0gZWwuZmlyc3RDaGlsZCwgZWxIZWlnaHQgPSBzdGlja3lFbGVtZW50Lm9mZnNldEhlaWdodCwgc3RpY2t5Q3VycmVudFRvcCA9IHN0aWNreUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wLCBzdGlja3lDdXJyZW50Qm90dG9tID0gc3RpY2t5RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b207XG4gICAgLy9zdGlja3kgZWxlbWVudCdzIHBhcmVudC93cmFwcGVyIGRhdGFcbiAgICB2YXIgZWxXaWR0aCA9IGVsLm9mZnNldFdpZHRoLCBlbFNjcm9sbExlZnQgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0LCBlbFNjcm9sbFRvcCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCwgZWxTY3JvbGxCb3R0b20gPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b20sIHZpZXdwb3J0SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xuICAgIC8vIHdpbmRvdy9kb2N1bWVudCBkYXRhXG4gICAgdmFyIGN1cnJlbnRXaW5kb3dzU2Nyb2xsUG9zaXRpb24gPSB3aW5kb3cucGFnZVlPZmZzZXQsIHRhcmdldFNjcm9sbFBvc2l0aW9uID0gZWxTY3JvbGxCb3R0b20gKyBjdXJyZW50V2luZG93c1Njcm9sbFBvc2l0aW9uIC0gdmlld3BvcnRIZWlnaHQ7XG4gICAgLy8gcGFyZW50IHdyYXBwZXIgLyBzdGlja3kgYm91bmRhcnlcbiAgICB2YXIgZWxQYXJlbnQgPSBzdGlja3lFbGVtZW50LmNsb3Nlc3QocGFyZW50V3JhcHBlciksIGVsUGFyZW50Qm90dG9tID0gZWxQYXJlbnQgPT09IG51bGwgfHwgZWxQYXJlbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGVsUGFyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbTtcbiAgICAvLyBzY3JvbGwgYmVoYXZpb3VyXG4gICAgdmFyIGlzU2Nyb2xsRG93biA9IGN1cnJlbnRXaW5kb3dzU2Nyb2xsUG9zaXRpb24gPiBsYXN0U2Nyb2xsVG9wID8gdHJ1ZSA6IGZhbHNlO1xuICAgIHZhciBpc1Njcm9sbFVwID0gIWlzU2Nyb2xsRG93bjtcbiAgICBsYXN0U2Nyb2xsVG9wID1cbiAgICAgICAgY3VycmVudFdpbmRvd3NTY3JvbGxQb3NpdGlvbiA8PSAwID8gMCA6IGN1cnJlbnRXaW5kb3dzU2Nyb2xsUG9zaXRpb247XG4gICAgZnVuY3Rpb24gc2Nyb2xsRG93blN0aWNreUJvdHRvbSgpIHtcbiAgICAgICAgc3RpY2t5RWxlbWVudC5zdHlsZS5jc3NUZXh0ID0gXCJwb3NpdGlvbiA6IGFic29sdXRlOyAgd2lkdGg6MjgwcHg7IGJvdHRvbTogMTZweFwiO1xuICAgICAgICBhZmZpeFR5cGUgPSAnc3RpY2t5LWJvdW5kJztcbiAgICB9XG4gICAgZnVuY3Rpb24gc2Nyb2xsRG93blN0aWNreVRvcCgpIHtcbiAgICAgICAgc3RpY2t5RWxlbWVudC5zdHlsZS5jc3NUZXh0ID0gXCJwb3NpdGlvbjogcmVsYXRpdmU7IHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgXCIuY29uY2F0KHN0aWNreUN1cnJlbnRUb3AgLSBlbFNjcm9sbFRvcCwgXCJweCwgMCk7XCIpO1xuICAgICAgICBhZmZpeFR5cGUgPSAnc3RpY2t5LXRyYW5zbGF0ZSc7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNjcm9sbERvd25TdGlja3lUcmFuc2xhdGUoKSB7XG4gICAgICAgIHtcbiAgICAgICAgICAgICh3aW5kb3cuc2Nyb2xsWSxcbiAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsWSArXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgK1xuICAgICAgICAgICAgICAgICAgICA0NzYgLVxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsSGVpZ2h0ID5cbiAgICAgICAgICAgICAgICAgICAgMClcbiAgICAgICAgICAgICAgICA/IHdpbmRvdy5zY3JvbGxZICtcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCArXG4gICAgICAgICAgICAgICAgICAgIDQ3NiAtXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHRcbiAgICAgICAgICAgICAgICA6IDE2O1xuICAgICAgICB9XG4gICAgICAgIHN0aWNreUVsZW1lbnQuc3R5bGUuY3NzVGV4dCA9IFwicG9zaXRpb246IGZpeGVkOyB0b3A6IGF1dG87IGxlZnQ6IFwiLmNvbmNhdChlbFNjcm9sbExlZnQsIFwiOyBib3R0b206XCIpLmNvbmNhdCgod2luZG93LnNjcm9sbFksXG4gICAgICAgICAgICB3aW5kb3cuc2Nyb2xsWSArXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCArXG4gICAgICAgICAgICAgICAgNDc2IC1cbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsSGVpZ2h0ID5cbiAgICAgICAgICAgICAgICAxNilcbiAgICAgICAgICAgID8gd2luZG93LnNjcm9sbFkgK1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgK1xuICAgICAgICAgICAgICAgIDQ3NiAtXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbEhlaWdodFxuICAgICAgICAgICAgOiAxNiwgXCJweDsgd2lkdGg6IFwiKS5jb25jYXQoZWxXaWR0aCwgXCJweFwiKTtcbiAgICAgICAgYWZmaXhUeXBlID0gJ3N0aWNreS1ib3R0b20nO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzY3JvbGxEb3duRml4ZWRUb3AoKSB7XG4gICAgICAgIGVsLnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOiBmaXhlZDsgdG9wOjBweFwiO1xuICAgICAgICBhZmZpeFR5cGUgPSAnc3RpY2t5LXRyYW5zbGF0ZSc7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNjcm9sbERvd25TdGlja3lOb25lKCkge1xuICAgICAgICBpZiAodGFyZ2V0U2Nyb2xsUG9zaXRpb24gPD0gY3VycmVudFdpbmRvd3NTY3JvbGxQb3NpdGlvbikge1xuICAgICAgICAgICAgaWYgKHZpZXdwb3J0SGVpZ2h0ICsgd2luZG93LnNjcm9sbFkgKyA0NTAgPj0gZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICBlbC5zdHlsZS5jc3NUZXh0ID0gXCJwb3NpdGlvbjogc3RpY2t5OyB0b3A6MHB4XCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzdGlja3lFbGVtZW50LnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOiBmaXhlZDsgdG9wOiBhdXRvOyBsZWZ0OiBcIi5jb25jYXQoZWxTY3JvbGxMZWZ0LCBcIjsgYm90dG9tOiAwOyB3aWR0aDogXCIpLmNvbmNhdChlbFdpZHRoLCBcInB4XCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWZmaXhUeXBlID0gJ3N0aWNreS1ib3R0b20nO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNjcm9sbERvd25TdGlja3lCb3VuZCgpIHtcbiAgICAgICAgaWYgKGVsUGFyZW50Qm90dG9tICYmIGVsUGFyZW50Qm90dG9tIDwgc3RpY2t5Q3VycmVudEJvdHRvbSkge1xuICAgICAgICAgICAgc3RpY2t5RWxlbWVudC5zdHlsZS5jc3NUZXh0ID0gXCJwb3NpdGlvbiA6IGFic29sdXRlOyAgd2lkdGg6MjgwcHg7IGJvdHRvbTogMTZweFwiO1xuICAgICAgICAgICAgYWZmaXhUeXBlID0gJ3N0aWNreS1ib3VuZCc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlU2Nyb2xsRG93bigpIHtcbiAgICAgICAgc3dpdGNoIChhZmZpeFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3N0aWNreS10b3AnOlxuICAgICAgICAgICAgICAgIHNjcm9sbERvd25TdGlja3lUb3AoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3N0aWNreS1ib3R0b20nOlxuICAgICAgICAgICAgICAgIGlmIChlbFBhcmVudEJvdHRvbSAmJiBlbFBhcmVudEJvdHRvbSA8IHN0aWNreUN1cnJlbnRCb3R0b20pIHtcbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsRG93blN0aWNreUJvdHRvbSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3N0aWNreS10cmFuc2xhdGUnOlxuICAgICAgICAgICAgICAgIGlmIChzdGlja3lDdXJyZW50Qm90dG9tIDw9IHZpZXdwb3J0SGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbERvd25TdGlja3lUcmFuc2xhdGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdmaXhlZC10b3AnOlxuICAgICAgICAgICAgICAgIHNjcm9sbERvd25GaXhlZFRvcCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc3RpY2t5LW5vbmUnOlxuICAgICAgICAgICAgICAgIHNjcm9sbERvd25TdGlja3lOb25lKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzdGlja3ktYm91bmQnOlxuICAgICAgICAgICAgICAgIHNjcm9sbERvd25TdGlja3lCb3VuZCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNjcm9sbFVwU3RpY2t5VG9wKCkge1xuICAgICAgICBpZiAoZWxTY3JvbGxUb3AgPj0gMCkge1xuICAgICAgICAgICAgc3RpY2t5RWxlbWVudC5zdHlsZS5jc3NUZXh0ID0gXCJwb3NpdGlvbjogcmVsYXRpdmU7ICBcIjtcbiAgICAgICAgICAgIGFmZml4VHlwZSA9ICdzdGlja3ktbm9uZSc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzdGlja3lFbGVtZW50LnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOiBmaXhlZDsgdG9wOiBhdXRvOyBib3R0b206XCIuY29uY2F0KCh3aW5kb3cuc2Nyb2xsWSxcbiAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsWSArXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgK1xuICAgICAgICAgICAgICAgICAgICA0NzYgLVxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsSGVpZ2h0ID5cbiAgICAgICAgICAgICAgICAgICAgMTYpXG4gICAgICAgICAgICAgICAgPyB3aW5kb3cuc2Nyb2xsWSArXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgK1xuICAgICAgICAgICAgICAgICAgICA0NzYgLVxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsSGVpZ2h0XG4gICAgICAgICAgICAgICAgOiAxNiwgXCJweDsgbGVmdDogXCIpLmNvbmNhdChlbFNjcm9sbExlZnQsIFwiOyB3aWR0aDogXCIpLmNvbmNhdChlbFdpZHRoLCBcInB4IFwiKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBzY3JvbGxVcFN0aWNreUJvdHRvbSgpIHtcbiAgICAgICAgc3RpY2t5RWxlbWVudC5zdHlsZS5jc3NUZXh0ID0gXCJwb3NpdGlvbjogZml4ZWQ7IHRvcDogMHB4OyBsZWZ0OiBcIi5jb25jYXQoZWxTY3JvbGxMZWZ0LCBcIjsgd2lkdGg6IFwiKS5jb25jYXQoZWxXaWR0aCwgXCJweCBcIik7XG4gICAgICAgIGFmZml4VHlwZSA9ICdzdGlja3ktYm91bmQnO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzY3JvbGxVcEZpeGVkVG9wKCkge1xuICAgICAgICBlbC5zdHlsZS5jc3NUZXh0ID0gXCJwb3NpdGlvbjogZml4ZWQ7IHRvcDowcHhcIjtcbiAgICAgICAgYWZmaXhUeXBlID0gJ3N0aWNreS10cmFuc2xhdGUnO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzY3JvbGxVcFN0aWNreVRyYW5zbGF0ZSgpIHtcbiAgICAgICAgaWYgKHN0aWNreUN1cnJlbnRUb3AgPj0gMCkge1xuICAgICAgICAgICAgc3RpY2t5RWxlbWVudC5zdHlsZS5jc3NUZXh0ID0gXCJwb3NpdGlvbjogZml4ZWQ7IHRvcDogMHB4OyBsZWZ0OiBcIi5jb25jYXQoZWxTY3JvbGxMZWZ0LCBcIjsgd2lkdGg6IFwiKS5jb25jYXQoZWxXaWR0aCwgXCJweFwiKTtcbiAgICAgICAgICAgIGFmZml4VHlwZSA9ICdzdGlja3ktdG9wJztcbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBzY3JvbGxVcFN0aWNreUJvdW5kKCkge1xuICAgICAgICBpZiAoc3RpY2t5Q3VycmVudFRvcCA+PSAwICYmIGN1cnJlbnRXaW5kb3dzU2Nyb2xsUG9zaXRpb24gIT0gMCkge1xuICAgICAgICAgICAgc3RpY2t5RWxlbWVudC5zdHlsZS5jc3NUZXh0ID0gXCJwb3NpdGlvbjpmaXhlZDsgdG9wOiAwOyBsZWZ0OiBcIi5jb25jYXQoZWxTY3JvbGxMZWZ0LCBcIjsgd2lkdGg6IFwiKS5jb25jYXQoZWxXaWR0aCwgXCJweFwiKTtcbiAgICAgICAgICAgIGFmZml4VHlwZSA9ICdzdGlja3ktdG9wJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RpY2t5Q3VycmVudFRvcCA+PSAwICYmIGN1cnJlbnRXaW5kb3dzU2Nyb2xsUG9zaXRpb24gPT0gMCkge1xuICAgICAgICAgICAgc3RpY2t5RWxlbWVudC5zdHlsZS5jc3NUZXh0ID0gXCIgdG9wOiAwOyBsZWZ0OiBcIi5jb25jYXQoZWxTY3JvbGxMZWZ0LCBcIjsgd2lkdGg6IFwiKS5jb25jYXQoZWxXaWR0aCwgXCJweFwiKTtcbiAgICAgICAgICAgIGFmZml4VHlwZSA9ICdzdGlja3ktdG9wJztcbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVTY3JvbGxVcCgpIHtcbiAgICAgICAgc3dpdGNoIChhZmZpeFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3N0aWNreS10b3AnOlxuICAgICAgICAgICAgICAgIHNjcm9sbFVwU3RpY2t5VG9wKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzdGlja3ktYm90dG9tJzpcbiAgICAgICAgICAgICAgICBzY3JvbGxVcFN0aWNreUJvdHRvbSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZml4ZWQtdG9wJzpcbiAgICAgICAgICAgICAgICBzY3JvbGxVcEZpeGVkVG9wKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzdGlja3ktdHJhbnNsYXRlJzpcbiAgICAgICAgICAgICAgICBzY3JvbGxVcFN0aWNreVRyYW5zbGF0ZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc3RpY2t5LW5vbmUnOlxuICAgICAgICAgICAgICAgIC8vbm90aGluZyB0byBkbyBoZXJlXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzdGlja3ktYm91bmQnOlxuICAgICAgICAgICAgICAgIHNjcm9sbFVwU3RpY2t5Qm91bmQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoZWxIZWlnaHQgPCB2aWV3cG9ydEhlaWdodCkge1xuICAgICAgICBlbC5zdHlsZS5jc3NUZXh0ID0gXCJwb3NpdGlvbjogc3RpY2t5OyB0b3A6MHB4XCI7XG4gICAgICAgIHN0aWNreUVsZW1lbnQuc3R5bGUuY3NzVGV4dCA9IFwiXCI7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBlbC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IFwiLmNvbmNhdChlbEhlaWdodCwgXCJweDtcIik7XG4gICAgICAgIGlmIChpc1Njcm9sbERvd24gJiYgY3VycmVudFdpbmRvd3NTY3JvbGxQb3NpdGlvbiAhPSAwKSB7XG4gICAgICAgICAgICBoYW5kbGVTY3JvbGxEb3duKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNTY3JvbGxVcCAmJiBjdXJyZW50V2luZG93c1Njcm9sbFBvc2l0aW9uICE9IDApIHtcbiAgICAgICAgICAgIGhhbmRsZVNjcm9sbFVwKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBlbC5zdHlsZS5jc3NUZXh0ID0gXCJwb3NpdGlvbjogc3RpY2t5OyB0b3A6MHB4XCI7XG4gICAgICAgICAgICBzdGlja3lFbGVtZW50LnN0eWxlLmNzc1RleHQgPSBcIlwiO1xuICAgICAgICB9XG4gICAgfVxufTtcbndpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgLy9jaGVjayBjb25zdGFudGx5IGluIGEgaW50ZXIgZm9yIHdoZW4gc3VwcG9ydCBidXR0b24gZW50ZXJzIHRoZSBkb21cbiAgICB2YXIgY2hlY2tTdXBwb3J0QnV0dG9uID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgc3VwcG9ydEJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNsYXVuY2hlcicpO1xuICAgICAgICBpZiAoc3VwcG9ydEJ1dHRvbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgc3VwcG9ydEJ1dHRvbi5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcbiAgICAgICAgICAgIHN1cHBvcnRCdXR0b24uc3R5bGUuYm9yZGVyID0gJzJweCBzb2xpZCByZ2IoMjEsIDgzLCAxMDIpJztcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tTdXBwb3J0QnV0dG9uKTtcbiAgICAgICAgfVxuICAgIH0sIDEwKTtcbn07XG4vLyBjdXN0b20gZGlyZWN0aXZlXG5hcHAuZGlyZWN0aXZlKCdzdGlja3ktY29tcG9uZW50Jywge1xuICAgIG1vdW50ZWQ6IGZ1bmN0aW9uIChlbCwgYmluZGluZykge1xuICAgICAgICB2YXIgYm91bmRhcnkgPSAoYmluZGluZy52YWx1ZSB8fCB7fSkuYm91bmRhcnk7XG4gICAgICAgIGJvdW5kYXJ5ID0gYm91bmRhcnkgfHwgJ2JvZHknO1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RpY2t5U2lkZWJhcihlbCwgYm91bmRhcnkpOyB9KTtcbiAgICB9LFxuICAgIHVubW91bnRlZDogZnVuY3Rpb24gKGVsLCBiaW5kaW5nKSB7XG4gICAgICAgIHZhciBwYXJlbnQgPSBiaW5kaW5nLnZhbHVlLmJvdW5kYXJ5O1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RpY2t5U2lkZWJhcihlbCwgcGFyZW50KTsgfSk7XG4gICAgfSxcbn0pO1xuLyoqXG4gKiBOZXh0LCB3ZSB3aWxsIGNyZWF0ZSBhIGZyZXNoIFZ1ZSBhcHBsaWNhdGlvbiBpbnN0YW5jZSBhbmQgYXR0YWNoIGl0IHRvXG4gKiB0aGUgcGFnZS4gVGhlbiwgeW91IG1heSBiZWdpbiBhZGRpbmcgY29tcG9uZW50cyB0byB0aGlzIGFwcGxpY2F0aW9uXG4gKiBvciBjdXN0b21pemUgdGhlIEphdmFTY3JpcHQgc2NhZmZvbGRpbmcgdG8gZml0IHlvdXIgdW5pcXVlIG5lZWRzLlxuICovXG5hcHAubW91bnQoJyNhcHAnKTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5vcmdNYW5kYXRvcnlFbGVtZW50cyA9IGV4cG9ydHMuYWN0aXZpdHlDb3JlRWxlbWVudHMgPSB2b2lkIDA7XG5mdW5jdGlvbiBhY3Rpdml0eUNvcmVFbGVtZW50cygpIHtcbiAgICB2YXIgZWxlbWVudHMgPSBbXG4gICAgICAgICdyZXBvcnRpbmdfb3JnJyxcbiAgICAgICAgJ2lhdGlfaWRlbnRpZmllcicsXG4gICAgICAgICd0aXRsZScsXG4gICAgICAgICdkZXNjcmlwdGlvbicsXG4gICAgICAgICdwYXJ0aWNpcGF0aW5nX29yZycsXG4gICAgICAgICdhY3Rpdml0eV9zdGF0dXMnLFxuICAgICAgICAnYWN0aXZpdHlfZGF0ZScsXG4gICAgICAgICdyZWNpcGllbnRfY291bnRyeScsXG4gICAgICAgICdyZWNpcGllbnRfcmVnaW9uJyxcbiAgICAgICAgJ3NlY3RvcicsXG4gICAgICAgICdjb2xsYWJvcmF0aW9uX3R5cGUnLFxuICAgICAgICAnZGVmYXVsdF9mbG93X3R5cGUnLFxuICAgICAgICAnZGVmYXVsdF9maW5hbmNlX3R5cGUnLFxuICAgICAgICAnZGVmYXVsdF9haWRfdHlwZScsXG4gICAgICAgICdidWRnZXQnLFxuICAgICAgICAndHJhbnNhY3Rpb25zJyxcbiAgICBdO1xuICAgIHJldHVybiBlbGVtZW50cztcbn1cbmV4cG9ydHMuYWN0aXZpdHlDb3JlRWxlbWVudHMgPSBhY3Rpdml0eUNvcmVFbGVtZW50cztcbmZ1bmN0aW9uIG9yZ01hbmRhdG9yeUVsZW1lbnRzKCkge1xuICAgIHZhciBlbGVtZW50cyA9IFsncmVwb3J0aW5nX29yZycsICduYW1lJ107XG4gICAgcmV0dXJuIGVsZW1lbnRzO1xufVxuZXhwb3J0cy5vcmdNYW5kYXRvcnlFbGVtZW50cyA9IG9yZ01hbmRhdG9yeUVsZW1lbnRzO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgbW9tZW50XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1vbWVudFwiKSk7XG5mdW5jdGlvbiBkYXRlRm9ybWF0KGRhdGUsIGZvcm1hdCkge1xuICAgIGlmIChmb3JtYXQgPT09IHZvaWQgMCkgeyBmb3JtYXQgPSAnTU1NTSBERCwgWVlZWSc7IH1cbiAgICB2YXIgZm9ybWF0X2RhdGU7XG4gICAgc3dpdGNoIChmb3JtYXQpIHtcbiAgICAgICAgY2FzZSAnZnJvbU5vdyc6XG4gICAgICAgICAgICBmb3JtYXRfZGF0ZSA9IGRhdGUgPyAoMCwgbW9tZW50XzEuZGVmYXVsdCkoZGF0ZSkuZnJvbU5vdygpIDogJyc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGZvcm1hdF9kYXRlID0gZGF0ZSA/ICgwLCBtb21lbnRfMS5kZWZhdWx0KShkYXRlKS5mb3JtYXQoZm9ybWF0KSA6ICcnO1xuICAgIH1cbiAgICByZXR1cm4gZm9ybWF0X2RhdGU7XG59XG5leHBvcnRzLmRlZmF1bHQgPSBkYXRlRm9ybWF0O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgY3J5cHRvX2pzXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImNyeXB0by1qc1wiKSk7XG5mdW5jdGlvbiBlbmNyeXB0KHN0cmluZywga2V5KSB7XG4gICAgdmFyIGl2ID0gY3J5cHRvX2pzXzEuZGVmYXVsdC5saWIuV29yZEFycmF5LnJhbmRvbSgxNik7XG4gICAgdmFyIHNhbHQgPSBjcnlwdG9fanNfMS5kZWZhdWx0LmxpYi5Xb3JkQXJyYXkucmFuZG9tKDI1Nik7XG4gICAgdmFyIGl0ZXJhdGlvbnMgPSA5OTk7XG4gICAgdmFyIGVuY3J5cHRNZXRob2RMZW5ndGggPSAyNTYgLyA0O1xuICAgIHZhciBoYXNoS2V5ID0gY3J5cHRvX2pzXzEuZGVmYXVsdC5QQktERjIoa2V5LCBzYWx0LCB7XG4gICAgICAgIGhhc2hlcjogY3J5cHRvX2pzXzEuZGVmYXVsdC5hbGdvLlNIQTUxMixcbiAgICAgICAga2V5U2l6ZTogZW5jcnlwdE1ldGhvZExlbmd0aCAvIDgsXG4gICAgICAgIGl0ZXJhdGlvbnM6IGl0ZXJhdGlvbnMsXG4gICAgfSk7XG4gICAgdmFyIGVuY3J5cHRlZCA9IGNyeXB0b19qc18xLmRlZmF1bHQuQUVTLmVuY3J5cHQoc3RyaW5nLCBoYXNoS2V5LCB7XG4gICAgICAgIG1vZGU6IGNyeXB0b19qc18xLmRlZmF1bHQubW9kZS5DQkMsXG4gICAgICAgIGl2OiBpdixcbiAgICB9KTtcbiAgICB2YXIgZW5jcnlwdGVkU3RyaW5nID0gY3J5cHRvX2pzXzEuZGVmYXVsdC5lbmMuQmFzZTY0LnN0cmluZ2lmeShlbmNyeXB0ZWQuY2lwaGVydGV4dCk7XG4gICAgdmFyIG91dHB1dCA9IHtcbiAgICAgICAgY2lwaGVydGV4dDogZW5jcnlwdGVkU3RyaW5nLFxuICAgICAgICBpdjogY3J5cHRvX2pzXzEuZGVmYXVsdC5lbmMuSGV4LnN0cmluZ2lmeShpdiksXG4gICAgICAgIHNhbHQ6IGNyeXB0b19qc18xLmRlZmF1bHQuZW5jLkhleC5zdHJpbmdpZnkoc2FsdCksXG4gICAgICAgIGl0ZXJhdGlvbnM6IGl0ZXJhdGlvbnMsXG4gICAgfTtcbiAgICByZXR1cm4gY3J5cHRvX2pzXzEuZGVmYXVsdC5lbmMuQmFzZTY0LnN0cmluZ2lmeShjcnlwdG9fanNfMS5kZWZhdWx0LmVuYy5VdGY4LnBhcnNlKEpTT04uc3RyaW5naWZ5KG91dHB1dCkpKTtcbn1cbmV4cG9ydHMuZGVmYXVsdCA9IGVuY3J5cHQ7XG4iLCJcInVzZSBzdHJpY3RcIjtcbi8qKlxuICogR2V0IGN1cnJlbnQgYWN0aXZpdHkgdGl0bGVcbiAqXG4gKiBAcmV0dXJuIHRpdGxlIHRleHRcbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZnVuY3Rpb24gZ2V0QWN0aXZpdHlUaXRsZShkYXRhLCBsYW5ndWFnZSkge1xuICAgIHZhciB0aXRsZSA9ICdVbnRpdGxlZCc7XG4gICAgLy8gdGl0bGUgcmV0dXJuIGlmIGxhbmd1YWdlIGV4aXN0IGluIGRhdGFcbiAgICBpZiAoZGF0YSkge1xuICAgICAgICBmb3IgKHZhciBfaSA9IDAsIGRhdGFfMSA9IGRhdGE7IF9pIDwgZGF0YV8xLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgdmFyIHQgPSBkYXRhXzFbX2ldO1xuICAgICAgICAgICAgaWYgKHQubGFuZ3VhZ2UgJiYgdC5sYW5ndWFnZSA9PT0gbGFuZ3VhZ2UpIHtcbiAgICAgICAgICAgICAgICB0aXRsZSA9IHQubmFycmF0aXZlICYmIHQubmFycmF0aXZlICE9PSAnJyA/IHQubmFycmF0aXZlIDogJ1VudGl0bGVkJztcbiAgICAgICAgICAgICAgICByZXR1cm4gdGl0bGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gZGVmYXVsdCB0aXRsZSByZXR1cm4gaWYgbGFuZ3VhZ2UgZG9lcyBub3QgZXhpc3RzIGluIGRhdGFcbiAgICAgICAgdGl0bGUgPVxuICAgICAgICAgICAgZGF0YVsnMCddLm5hcnJhdGl2ZSAmJiBkYXRhWycwJ10ubmFycmF0aXZlICE9PSAnJ1xuICAgICAgICAgICAgICAgID8gZGF0YVsnMCddLm5hcnJhdGl2ZVxuICAgICAgICAgICAgICAgIDogJ1VudGl0bGVkJztcbiAgICB9XG4gICAgcmV0dXJuIHRpdGxlO1xufVxuZXhwb3J0cy5kZWZhdWx0ID0gZ2V0QWN0aXZpdHlUaXRsZTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5jcmVhdGVDYXBpdGFsaXplZFNlbnRlbmNlID0gZXhwb3J0cy50cnVuY2F0ZVRleHQgPSBleHBvcnRzLmtlYmFiQ2FzZVRvU25ha2VjYXNlID0gZXhwb3J0cy5zbmFrZUNhc2VUb1NlbnRlbmNlQ2FzZSA9IGV4cG9ydHMuc2VudGVuY2VDYXNlVG9LZWJhYkNhc2UgPSBleHBvcnRzLmlzSnNvbiA9IGV4cG9ydHMucmVkdWNlRG9jdW1lbnRMaW5rID0gZXhwb3J0cy5jb3VudERvY3VtZW50TGluayA9IGV4cG9ydHMuZ2V0TG9jYXRpb24gPSB2b2lkIDA7XG5mdW5jdGlvbiBnZXRMb2NhdGlvbihkYXRhKSB7XG4gICAgdmFyIGxvY2F0aW9ucyA9IFtdO1xuICAgIGxvY2F0aW9ucyA9IGRhdGEubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIHJldHVybiBpdGVtLnJlZmVyZW5jZTtcbiAgICB9KTtcbiAgICB2YXIgbGFzdExvY2F0aW9uID0gbG9jYXRpb25zLnNsaWNlKC0xKVswXTtcbiAgICBsb2NhdGlvbnMgPSBsb2NhdGlvbnMuc2xpY2UoMCwgLTEpO1xuICAgIGlmIChsb2NhdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gbG9jYXRpb25zLmpvaW4oJywgJykgKyAnICcgKyAnYW5kJyArICcgJyArIGxhc3RMb2NhdGlvbjtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiBsYXN0TG9jYXRpb247XG4gICAgfVxufVxuZXhwb3J0cy5nZXRMb2NhdGlvbiA9IGdldExvY2F0aW9uO1xuZnVuY3Rpb24gY291bnREb2N1bWVudExpbmsoZG9jdW1lbnRfbGluaykge1xuICAgIHZhciBkb2N1bWVudENvdW50ID0gMDtcbiAgICBmb3IgKHZhciBkb2N1bWVudF8xIGluIGRvY3VtZW50X2xpbmspIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHJlZHVjZURvY3VtZW50TGluayhkb2N1bWVudF9saW5rW2RvY3VtZW50XzFdLCBbXSk7XG4gICAgICAgIGlmICghcmVzdWx0LmV2ZXJ5KGZ1bmN0aW9uIChpdGVtKSB7IHJldHVybiBpdGVtID09PSBudWxsOyB9KSkge1xuICAgICAgICAgICAgZG9jdW1lbnRDb3VudCsrO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkb2N1bWVudENvdW50O1xufVxuZXhwb3J0cy5jb3VudERvY3VtZW50TGluayA9IGNvdW50RG9jdW1lbnRMaW5rO1xuZnVuY3Rpb24gcmVkdWNlRG9jdW1lbnRMaW5rKGRvY3VtZW50X2xpbmssIHZhbHVlcykge1xuICAgIGlmICh0eXBlb2YgZG9jdW1lbnRfbGluayA9PT0gJ29iamVjdCcgJiYgZG9jdW1lbnRfbGluaykge1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gZG9jdW1lbnRfbGluaykge1xuICAgICAgICAgICAgdmFsdWVzLmNvbmNhdChyZWR1Y2VEb2N1bWVudExpbmsoZG9jdW1lbnRfbGlua1trZXldLCB2YWx1ZXMpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdmFsdWVzLnB1c2goZG9jdW1lbnRfbGluayk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZXM7XG59XG5leHBvcnRzLnJlZHVjZURvY3VtZW50TGluayA9IHJlZHVjZURvY3VtZW50TGluaztcbmZ1bmN0aW9uIGlzSnNvbihzdHIpIHtcbiAgICB0cnkge1xuICAgICAgICBKU09OLnBhcnNlKHN0cik7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5leHBvcnRzLmlzSnNvbiA9IGlzSnNvbjtcbmZ1bmN0aW9uIHNlbnRlbmNlQ2FzZVRvS2ViYWJDYXNlKHN0cikge1xuICAgIHJldHVybiBzdHIuc3BsaXQoJyAnKS5qb2luKCctJyk7XG59XG5leHBvcnRzLnNlbnRlbmNlQ2FzZVRvS2ViYWJDYXNlID0gc2VudGVuY2VDYXNlVG9LZWJhYkNhc2U7XG5mdW5jdGlvbiBzbmFrZUNhc2VUb1NlbnRlbmNlQ2FzZShzdHIpIHtcbiAgICB2YXIgd29yZHMgPSBzdHIuc3BsaXQoJ18nKTtcbiAgICB2YXIgc2VudGVuY2UgPSB3b3Jkc1swXS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHdvcmRzWzBdLnNsaWNlKDEpLnRvTG93ZXJDYXNlKCk7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCB3b3Jkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBzZW50ZW5jZSArPSAnICcgKyB3b3Jkc1tpXS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbiAgICByZXR1cm4gc2VudGVuY2U7XG59XG5leHBvcnRzLnNuYWtlQ2FzZVRvU2VudGVuY2VDYXNlID0gc25ha2VDYXNlVG9TZW50ZW5jZUNhc2U7XG5mdW5jdGlvbiBrZWJhYkNhc2VUb1NuYWtlY2FzZShzdHIpIHtcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoLy0vZywgJ18nKTtcbn1cbmV4cG9ydHMua2ViYWJDYXNlVG9TbmFrZWNhc2UgPSBrZWJhYkNhc2VUb1NuYWtlY2FzZTtcbmZ1bmN0aW9uIHRydW5jYXRlVGV4dCh0ZXh0LCBtYXhMZW5ndGgpIHtcbiAgICBpZiAodGV4dC5sZW5ndGggPiBtYXhMZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHRleHQuc3Vic3RyaW5nKDAsIG1heExlbmd0aCkgKyAnLi4uJztcbiAgICB9XG4gICAgcmV0dXJuIHRleHQ7XG59XG5leHBvcnRzLnRydW5jYXRlVGV4dCA9IHRydW5jYXRlVGV4dDtcbmZ1bmN0aW9uIGNyZWF0ZUNhcGl0YWxpemVkU2VudGVuY2UoKSB7XG4gICAgdmFyIHdvcmRzID0gW107XG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgd29yZHNbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICB9XG4gICAgdmFyIGNhcGl0YWxpemVkRmlyc3RXb3JkID0gd29yZHNbMF0uY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB3b3Jkc1swXS5zbGljZSgxKTtcbiAgICB2YXIgY29uY2F0ZW5hdGVkV29yZHMgPSB3b3Jkcy5zbGljZSgxKS5qb2luKCcgJyk7XG4gICAgcmV0dXJuIFwiXCIuY29uY2F0KGNhcGl0YWxpemVkRmlyc3RXb3JkLCBcIiBcIikuY29uY2F0KGNvbmNhdGVuYXRlZFdvcmRzKTtcbn1cbmV4cG9ydHMuY3JlYXRlQ2FwaXRhbGl6ZWRTZW50ZW5jZSA9IGNyZWF0ZUNhcGl0YWxpemVkU2VudGVuY2U7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMudXNlU3RvcmUgPSB2b2lkIDA7XG52YXIgdnVleF8xID0gcmVxdWlyZShcInZ1ZXhcIik7XG52YXIgc3RhdGUgPSB7XG4gICAgc2VsZWN0ZWRBY3Rpdml0aWVzOiBbXSxcbiAgICBidWxrUHVibGlzaExlbmd0aDogMCxcbiAgICBjYW5jZWxVcGxvYWQ6IGZhbHNlLFxuICAgIHN0YXJ0QnVsa1B1Ymxpc2g6IGZhbHNlLFxuICAgIG1heGltaXplWGxzOiB0cnVlLFxuICAgIHN0YXJ0WGxzRG93bmxvYWQ6IGZhbHNlLFxuICAgIGNvbXBsZXRlWGxzRG93bmxvYWQ6IGZhbHNlLFxuICAgIGNhbmNlbERvd25sb2FkOiBmYWxzZSxcbiAgICBjbG9zZVhsc01vZGVsOiBmYWxzZSxcbiAgICBidWxrcHVibGlzaEFjdGl2aXRpZXM6IHtcbiAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXM6IHtcbiAgICAgICAgICAgIGFjdGl2aXRpZXM6IHsgYWN0aXZpdHlfaWQ6IDAsIGFjdGl2aXR5X3RpdGxlOiAnJywgc3RhdHVzOiAnJyB9LFxuICAgICAgICAgICAgb3JnYW5pemF0aW9uX2lkOiAwLFxuICAgICAgICAgICAgam9iX2JhdGNoX3V1aWQ6ICcnLFxuICAgICAgICAgICAgc3RhdHVzOiAnJyxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICB9LFxuICAgIH0sXG59O1xudmFyIG11dGF0aW9ucyA9IHtcbiAgICBtdXRhdGVTZWxlY3RlZEFjdGl2aXRpZXM6IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5zZWxlY3RlZEFjdGl2aXRpZXMgPSBwYXlsb2FkO1xuICAgIH0sXG4gICAgbXV0YXRlQ2xvc2VYbHNNb2RlbDogZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLmNsb3NlWGxzTW9kZWwgPSBwYXlsb2FkO1xuICAgIH0sXG4gICAgbXV0YXRlQnVsa1B1Ymxpc2hMZW5ndGg6IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5idWxrUHVibGlzaExlbmd0aCA9IHBheWxvYWQ7XG4gICAgfSxcbiAgICBtdXRhdGVDYW5jZWxVcGxvYWQ6IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5jYW5jZWxVcGxvYWQgPSBwYXlsb2FkO1xuICAgIH0sXG4gICAgbXV0YXRlTWF4aW1pemVYbHM6IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5tYXhpbWl6ZVhscyA9IHBheWxvYWQ7XG4gICAgfSxcbiAgICBtdXRhdGVTdGFydFhsc0Rvd25sb2FkOiBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUuc3RhcnRYbHNEb3dubG9hZCA9IHBheWxvYWQ7XG4gICAgfSxcbiAgICBtdXRhdGVDb21wbGV0ZVhsc0Rvd25sb2FkOiBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUuY29tcGxldGVYbHNEb3dubG9hZCA9IHBheWxvYWQ7XG4gICAgfSxcbiAgICBtdXRhdGVDYW5jZWxEb3dubG9hZDogZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLmNhbmNlbERvd25sb2FkID0gcGF5bG9hZDtcbiAgICB9LFxuICAgIG11dGF0ZUJ1bGtwdWJsaXNoQWN0aXZpdGllczogZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLmJ1bGtwdWJsaXNoQWN0aXZpdGllcyA9IHBheWxvYWQ7XG4gICAgfSxcbiAgICBtdXRhdGVTdGFydEJ1bGtQdWJsaXNoOiBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUuc3RhcnRCdWxrUHVibGlzaCA9IHBheWxvYWQ7XG4gICAgfSxcbn07XG52YXIgYWN0aW9ucyA9IHtcbiAgICB1cGRhdGVTZWxlY3RlZEFjdGl2aXRpZXM6IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQoJ211dGF0ZVNlbGVjdGVkQWN0aXZpdGllcycsIHBheWxvYWQpO1xuICAgIH0sXG4gICAgdXBkYXRlQ2xvc2VYbHNNb2RlbDogZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdCgnbXV0YXRlQ2xvc2VYbHNNb2RlbCcsIHBheWxvYWQpO1xuICAgIH0sXG4gICAgdXBkYXRlQnVsa1B1Ymxpc2hMZW5ndGg6IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQoJ211dGF0ZUJ1bGtQdWJsaXNoTGVuZ3RoJywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICB1cGRhdGVDYW5jZWxVcGxvYWQ6IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQoJ211dGF0ZUNhbmNlbFVwbG9hZCcsIHBheWxvYWQpO1xuICAgIH0sXG4gICAgdXBkYXRlTWF4aW1pemVYbHM6IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQoJ211dGF0ZU1heGltaXplWGxzJywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICB1cGRhdGVTdGFydFhsc0Rvd25sb2FkOiBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KCdtdXRhdGVTdGFydFhsc0Rvd25sb2FkJywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICB1cGRhdGVDb21wbGV0ZVhsc0Rvd25sb2FkOiBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KCdtdXRhdGVDb21wbGV0ZVhsc0Rvd25sb2FkJywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICB1cGRhdGVDYW5jZWxEb3dubG9hZDogZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdCgnbXV0YXRlQ2FuY2VsRG93bmxvYWQnLCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIHVwZGF0ZUJ1bGtwdWJsaXNoQWN0aXZpdGllczogZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdCgnbXV0YXRlQnVsa3B1Ymxpc2hBY3Rpdml0aWVzJywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICB1cGRhdGVTdGFydEJ1bGtQdWJsaXNoOiBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KCdtdXRhdGVTdGFydEJ1bGtQdWJsaXNoJywgcGF5bG9hZCk7XG4gICAgfSxcbn07XG52YXIgYWN0aXZpdHlMaXN0U3RvcmUgPSAoMCwgdnVleF8xLmNyZWF0ZVN0b3JlKSh7XG4gICAgc3RhdGU6IHN0YXRlLFxuICAgIG11dGF0aW9uczogbXV0YXRpb25zLFxuICAgIGFjdGlvbnM6IGFjdGlvbnMsXG59KTtcbmZ1bmN0aW9uIHVzZVN0b3JlKCkge1xuICAgIHJldHVybiBhY3Rpdml0eUxpc3RTdG9yZTtcbn1cbmV4cG9ydHMudXNlU3RvcmUgPSB1c2VTdG9yZTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5kZXRhaWxTdG9yZSA9IHZvaWQgMDtcbnZhciB2dWV4XzEgPSByZXF1aXJlKFwidnVleFwiKTtcbnZhciBzdGF0ZSA9IHtcbiAgICB1blB1Ymxpc2hlZDogZmFsc2UsXG4gICAgc2hvd1B1Ymxpc2hlZDogZmFsc2UsXG4gICAgcHVibGlzaEVycm9yczogW10sXG4gICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICBidWxrcHVibGlzaExlbmd0aDogMCxcbn07XG52YXIgbXV0YXRpb25zID0ge1xuICAgIG11dGF0ZVVuUHVibGlzaGVkOiBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUudW5QdWJsaXNoZWQgPSBwYXlsb2FkO1xuICAgIH0sXG4gICAgbXV0YXRlU2hvd1B1Ymxpc2hlZDogZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLnNob3dQdWJsaXNoZWQgPSBwYXlsb2FkO1xuICAgIH0sXG4gICAgbXV0YXRlUHVibGlzaEVycm9yczogZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLnB1Ymxpc2hFcnJvcnMgPSBwYXlsb2FkO1xuICAgIH0sXG4gICAgbXV0YXRlSXNMb2FkaW5nOiBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUuaXNMb2FkaW5nID0gcGF5bG9hZDtcbiAgICB9LFxuICAgIG11dGF0ZUJ1bGtwdWJsaXNoTGVuZ3RoOiBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUuYnVsa3B1Ymxpc2hMZW5ndGggPSBwYXlsb2FkO1xuICAgIH0sXG59O1xudmFyIGFjdGlvbnMgPSB7XG4gICAgdXBkYXRlVW5QdWJsaXNoZWQ6IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQoJ211dGF0ZVVuUHVibGlzaGVkJywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICB1cGRhdGVTaG93UHVibGlzaGVkOiBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KCdtdXRhdGVTaG93UHVibGlzaGVkJywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICB1cGRhdGVQdWJsaXNoRXJyb3JzOiBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KCdtdXRhdGVQdWJsaXNoRXJyb3JzJywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICB1cGRhdGVJc0xvYWRpbmc6IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQoJ211dGF0ZUlzTG9hZGluZycsIHBheWxvYWQpO1xuICAgIH0sXG4gICAgdXBkYXRlQnVsa3B1Ymxpc2hMZW5ndGg6IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQoJ211dGF0ZUJ1bGtwdWJsaXNoTGVuZ3RoJywgcGF5bG9hZCk7XG4gICAgfSxcbn07XG52YXIgYWN0aXZpdHlEZXRhaWxTdG9yZSA9ICgwLCB2dWV4XzEuY3JlYXRlU3RvcmUpKHtcbiAgICBzdGF0ZTogc3RhdGUsXG4gICAgbXV0YXRpb25zOiBtdXRhdGlvbnMsXG4gICAgYWN0aW9uczogYWN0aW9ucyxcbn0pO1xuZnVuY3Rpb24gZGV0YWlsU3RvcmUoKSB7XG4gICAgcmV0dXJuIGFjdGl2aXR5RGV0YWlsU3RvcmU7XG59XG5leHBvcnRzLmRldGFpbFN0b3JlID0gZGV0YWlsU3RvcmU7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMudXNlU3RvcmUgPSBleHBvcnRzLnN0b3JlID0gdm9pZCAwO1xudmFyIHZ1ZXhfMSA9IHJlcXVpcmUoXCJ2dWV4XCIpO1xudmFyIHN0YXRlXzEgPSByZXF1aXJlKFwiLi9zZXR0aW5nL3N0YXRlXCIpO1xudmFyIG11dGF0aW9uXzEgPSByZXF1aXJlKFwiLi9zZXR0aW5nL211dGF0aW9uXCIpO1xudmFyIGFjdGlvbnNfMSA9IHJlcXVpcmUoXCIuL3NldHRpbmcvYWN0aW9uc1wiKTtcbmV4cG9ydHMuc3RvcmUgPSAoMCwgdnVleF8xLmNyZWF0ZVN0b3JlKSh7XG4gICAgc3RhdGU6IHN0YXRlXzEuc3RhdGUsXG4gICAgbXV0YXRpb25zOiBtdXRhdGlvbl8xLm11dGF0aW9ucyxcbiAgICBhY3Rpb25zOiBhY3Rpb25zXzEuYWN0aW9ucyxcbn0pO1xuZnVuY3Rpb24gdXNlU3RvcmUoKSB7XG4gICAgcmV0dXJuIGV4cG9ydHMuc3RvcmU7XG59XG5leHBvcnRzLnVzZVN0b3JlID0gdXNlU3RvcmU7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfYTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuYWN0aW9ucyA9IGV4cG9ydHMuQWN0aW9uVHlwZXMgPSB2b2lkIDA7XG52YXIgbXV0YXRpb25fMSA9IHJlcXVpcmUoXCIuL211dGF0aW9uXCIpO1xudmFyIEFjdGlvblR5cGVzO1xuKGZ1bmN0aW9uIChBY3Rpb25UeXBlcykge1xuICAgIEFjdGlvblR5cGVzW1wiVVBEQVRFX1BVQkxJU0hJTkdfRk9STVwiXSA9IFwiVVBEQVRFX1BVQkxJU0hJTkdfRk9STVwiO1xuICAgIEFjdGlvblR5cGVzW1wiVVBEQVRFX1BVQkxJU0hFUl9JTkZPXCJdID0gXCJVUERBVEVfUFVCTElTSEVSX0lORk9cIjtcbiAgICBBY3Rpb25UeXBlc1tcIlVQREFURV9QVUJMSVNISU5HX0VSUk9SXCJdID0gXCJVUERBVEVfUFVCTElTSElOR19FUlJPUlwiO1xuICAgIEFjdGlvblR5cGVzW1wiVVBEQVRFX0RFRkFVTFRfVkFMVUVTXCJdID0gXCJVUERBVEVfREVGQVVMVF9WQUxVRVNcIjtcbiAgICBBY3Rpb25UeXBlc1tcIlVQREFURV9ERUZBVUxUX0VSUk9SXCJdID0gXCJVUERBVEVfREVGQVVMVF9FUlJPUlwiO1xuICAgIEFjdGlvblR5cGVzW1wiVVBEQVRFX0lTX0xPQURJTkdcIl0gPSBcIlVQREFURV9JU19MT0FESU5HXCI7XG4gICAgQWN0aW9uVHlwZXNbXCJVUERBVEVfQlVMS1BVQkxJU0hfTEVOR1RIXCJdID0gXCJVUERBVEVfQlVMS1BVQkxJU0hfTEVOR1RIXCI7XG59KShBY3Rpb25UeXBlcyA9IGV4cG9ydHMuQWN0aW9uVHlwZXMgfHwgKGV4cG9ydHMuQWN0aW9uVHlwZXMgPSB7fSkpO1xuZXhwb3J0cy5hY3Rpb25zID0gKF9hID0ge30sXG4gICAgX2FbQWN0aW9uVHlwZXMuVVBEQVRFX1BVQkxJU0hJTkdfRk9STV0gPSBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KG11dGF0aW9uXzEuTXV0YXRpb25UeXBlcy5VUERBVEVfUFVCTElTSElOR19GT1JNLCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIF9hW0FjdGlvblR5cGVzLlVQREFURV9QVUJMSVNIRVJfSU5GT10gPSBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KG11dGF0aW9uXzEuTXV0YXRpb25UeXBlcy5VUERBVEVfUFVCTElTSEVSX0lORk8sIHBheWxvYWQpO1xuICAgIH0sXG4gICAgX2FbQWN0aW9uVHlwZXMuVVBEQVRFX1BVQkxJU0hJTkdfRVJST1JdID0gZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdChtdXRhdGlvbl8xLk11dGF0aW9uVHlwZXMuVVBEQVRFX1BVQkxJU0hJTkdfRVJST1IsIHBheWxvYWQpO1xuICAgIH0sXG4gICAgX2FbQWN0aW9uVHlwZXMuVVBEQVRFX0RFRkFVTFRfVkFMVUVTXSA9IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQobXV0YXRpb25fMS5NdXRhdGlvblR5cGVzLlVQREFURV9ERUZBVUxUX1ZBTFVFUywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICBfYVtBY3Rpb25UeXBlcy5VUERBVEVfREVGQVVMVF9FUlJPUl0gPSBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KG11dGF0aW9uXzEuTXV0YXRpb25UeXBlcy5VUERBVEVfREVGQVVMVF9FUlJPUiwgcGF5bG9hZCk7XG4gICAgfSxcbiAgICBfYVtBY3Rpb25UeXBlcy5VUERBVEVfSVNfTE9BRElOR10gPSBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KG11dGF0aW9uXzEuTXV0YXRpb25UeXBlcy5JU19MT0FESU5HLCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIF9hW0FjdGlvblR5cGVzLlVQREFURV9CVUxLUFVCTElTSF9MRU5HVEhdID0gZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdChtdXRhdGlvbl8xLk11dGF0aW9uVHlwZXMuQlVMS1BVQkxJU0hfTEVOR1RILCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIF9hKTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9hO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5tdXRhdGlvbnMgPSBleHBvcnRzLk11dGF0aW9uVHlwZXMgPSB2b2lkIDA7XG52YXIgTXV0YXRpb25UeXBlcztcbihmdW5jdGlvbiAoTXV0YXRpb25UeXBlcykge1xuICAgIE11dGF0aW9uVHlwZXNbXCJVUERBVEVfUFVCTElTSElOR19GT1JNXCJdID0gXCJVUERBVEVfUFVCTElTSElOR19GT1JNXCI7XG4gICAgTXV0YXRpb25UeXBlc1tcIlVQREFURV9QVUJMSVNIRVJfSU5GT1wiXSA9IFwiVVBEQVRFX1BVQkxJU0hFUl9JTkZPXCI7XG4gICAgTXV0YXRpb25UeXBlc1tcIlVQREFURV9QVUJMSVNISU5HX0VSUk9SXCJdID0gXCJVUERBVEVfUFVCTElTSElOR19FUlJPUlwiO1xuICAgIE11dGF0aW9uVHlwZXNbXCJVUERBVEVfREVGQVVMVF9WQUxVRVNcIl0gPSBcIlVQREFURV9ERUZBVUxUX1ZBTFVFU1wiO1xuICAgIE11dGF0aW9uVHlwZXNbXCJVUERBVEVfREVGQVVMVF9FUlJPUlwiXSA9IFwiVVBEQVRFX0RFRkFVTFRfRVJST1JcIjtcbiAgICBNdXRhdGlvblR5cGVzW1wiSVNfTE9BRElOR1wiXSA9IFwiSVNfTE9BRElOR1wiO1xuICAgIE11dGF0aW9uVHlwZXNbXCJCVUxLUFVCTElTSF9MRU5HVEhcIl0gPSBcIkJVTEtQVUJMSVNIX0xFTkdUSFwiO1xufSkoTXV0YXRpb25UeXBlcyA9IGV4cG9ydHMuTXV0YXRpb25UeXBlcyB8fCAoZXhwb3J0cy5NdXRhdGlvblR5cGVzID0ge30pKTtcbmV4cG9ydHMubXV0YXRpb25zID0gKF9hID0ge30sXG4gICAgX2FbTXV0YXRpb25UeXBlcy5VUERBVEVfUFVCTElTSElOR19GT1JNXSA9IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5wdWJsaXNoaW5nRm9ybVtwYXlsb2FkLmtleV0gPSBwYXlsb2FkLnZhbHVlO1xuICAgIH0sXG4gICAgX2FbTXV0YXRpb25UeXBlcy5VUERBVEVfUFVCTElTSEVSX0lORk9dID0gZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLnB1Ymxpc2hpbmdJbmZvW3BheWxvYWQua2V5XSA9IHBheWxvYWQudmFsdWU7XG4gICAgfSxcbiAgICBfYVtNdXRhdGlvblR5cGVzLlVQREFURV9ERUZBVUxUX1ZBTFVFU10gPSBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUuZGVmYXVsdEZvcm1bcGF5bG9hZC5rZXldID0gcGF5bG9hZC52YWx1ZTtcbiAgICB9LFxuICAgIF9hW011dGF0aW9uVHlwZXMuVVBEQVRFX1BVQkxJU0hJTkdfRVJST1JdID0gZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLnB1Ymxpc2hpbmdFcnJvcltwYXlsb2FkLmtleV0gPSBwYXlsb2FkLnZhbHVlO1xuICAgIH0sXG4gICAgX2FbTXV0YXRpb25UeXBlcy5VUERBVEVfREVGQVVMVF9FUlJPUl0gPSBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUuZGVmYXVsdEVycm9yW3BheWxvYWQua2V5XSA9IHBheWxvYWQudmFsdWU7XG4gICAgfSxcbiAgICBfYVtNdXRhdGlvblR5cGVzLklTX0xPQURJTkddID0gZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLmRlZmF1bHRFcnJvcltwYXlsb2FkLmtleV0gPSBwYXlsb2FkLnZhbHVlO1xuICAgIH0sXG4gICAgX2FbTXV0YXRpb25UeXBlcy5CVUxLUFVCTElTSF9MRU5HVEhdID0gZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLmRlZmF1bHRFcnJvcltwYXlsb2FkLmtleV0gPSBwYXlsb2FkLnZhbHVlO1xuICAgIH0sXG4gICAgX2EpO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnN0YXRlID0gdm9pZCAwO1xuZXhwb3J0cy5zdGF0ZSA9IHtcbiAgICBwdWJsaXNoaW5nRm9ybToge1xuICAgICAgICBwdWJsaXNoZXJfaWQ6ICcnLFxuICAgICAgICBhcGlfdG9rZW46ICcnLFxuICAgIH0sXG4gICAgcHVibGlzaGluZ0luZm86IHtcbiAgICAgICAgcHVibGlzaGVyX3ZlcmlmaWNhdGlvbjogZmFsc2UsXG4gICAgICAgIHRva2VuX3ZlcmlmaWNhdGlvbjogZmFsc2UsXG4gICAgICAgIGlzVmVyaWZpY2F0aW9uUmVxdWVzdGVkOiBmYWxzZSxcbiAgICB9LFxuICAgIGRlZmF1bHRGb3JtOiB7XG4gICAgICAgIGRlZmF1bHRfY3VycmVuY3k6ICcnLFxuICAgICAgICBkZWZhdWx0X2xhbmd1YWdlOiAnJyxcbiAgICAgICAgaGllcmFyY2h5OiAnJyxcbiAgICAgICAgbGlua2VkX2RhdGFfdXJpOiAnJyxcbiAgICAgICAgaHVtYW5pdGFyaWFuOiAnJyxcbiAgICAgICAgYnVkZ2V0X25vdF9wcm92aWRlZDogJycsXG4gICAgICAgIGRlZmF1bHRfY29sbGFib3JhdGlvbl90eXBlOiAnJyxcbiAgICAgICAgZGVmYXVsdF9mbG93X3R5cGU6ICcnLFxuICAgICAgICBkZWZhdWx0X2ZpbmFuY2VfdHlwZTogJycsXG4gICAgICAgIGRlZmF1bHRfYWlkX3R5cGU6ICcnLFxuICAgICAgICBkZWZhdWx0X3RpZWRfc3RhdHVzOiAnJyxcbiAgICB9LFxuICAgIHB1Ymxpc2hpbmdFcnJvcjoge1xuICAgICAgICBhcGlfdG9rZW46ICcnLFxuICAgIH0sXG4gICAgZGVmYXVsdEVycm9yOiB7XG4gICAgICAgIGRlZmF1bHRfY3VycmVuY3k6ICcnLFxuICAgICAgICBkZWZhdWx0X2xhbmd1YWdlOiAnJyxcbiAgICAgICAgaGllcmFyY2h5OiAnJyxcbiAgICAgICAgbGlua2VkX2RhdGFfdXJpOiAnJyxcbiAgICAgICAgaHVtYW5pdGFyaWFuOiAnJyxcbiAgICAgICAgYnVkZ2V0X25vdF9wcm92aWRlZDogJycsXG4gICAgICAgIGRlZmF1bHRfY29sbGFib3JhdGlvbl90eXBlOiAnJyxcbiAgICAgICAgZGVmYXVsdF9mbG93X3R5cGU6ICcnLFxuICAgICAgICBkZWZhdWx0X2ZpbmFuY2VfdHlwZTogJycsXG4gICAgICAgIGRlZmF1bHRfYWlkX3R5cGU6ICcnLFxuICAgICAgICBkZWZhdWx0X3RpZWRfc3RhdHVzOiAnJyxcbiAgICB9LFxuICAgIGlzTG9hZGluZzoge30sXG59O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlJlcG9ydGluZ09yZ2FuaXphdGlvbiA9IGV4cG9ydHMuUGxhbm5lZERpc2J1cnNlbWVudCA9IGV4cG9ydHMuSHVtYW5pdGFyaWFuU2NvcGUgPSBleHBvcnRzLlRhZyA9IGV4cG9ydHMuUG9saWN5TWFya2VyID0gZXhwb3J0cy5SZWxhdGVkQWN0aXZpdHkgPSBleHBvcnRzLkNvbmRpdGlvbnMgPSBleHBvcnRzLkxlZ2FjeURhdGEgPSBleHBvcnRzLlNlY3RvciA9IGV4cG9ydHMuTG9jYXRpb24gPSBleHBvcnRzLlRyYW5zYWN0aW9ucyA9IGV4cG9ydHMuUmVjaXBpZW50UmVnaW9uID0gZXhwb3J0cy5SZWNpcGllbnRDb3VudHJ5ID0gZXhwb3J0cy5QYXJ0aWNpcGF0aW5nT3JnID0gZXhwb3J0cy5Db250YWN0SW5mbyA9IGV4cG9ydHMuQWN0aXZpdHlEYXRlID0gZXhwb3J0cy5EZXNjcmlwdGlvbiA9IGV4cG9ydHMuVGl0bGVFbGVtZW50ID0gZXhwb3J0cy5PdGhlcklkZW50aWZpZXIgPSBleHBvcnRzLklhdGlJZGVudGlmaWVyID0gZXhwb3J0cy5SZXN1bHQgPSB2b2lkIDA7XG4vLyBQcm94eSBleHBvcnQgYWxsIHJlbGF0ZWQgY29tcG9uZW50cy5cbnZhciBSZXN1bHRfdnVlXzEgPSByZXF1aXJlKFwiLi9SZXN1bHQudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUmVzdWx0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoUmVzdWx0X3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIElhdGlJZGVudGlmaWVyX3Z1ZV8xID0gcmVxdWlyZShcIi4vSWF0aUlkZW50aWZpZXIudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiSWF0aUlkZW50aWZpZXJcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChJYXRpSWRlbnRpZmllcl92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBPdGhlcklkZW50aWZpZXJfdnVlXzEgPSByZXF1aXJlKFwiLi9PdGhlcklkZW50aWZpZXIudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiT3RoZXJJZGVudGlmaWVyXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoT3RoZXJJZGVudGlmaWVyX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFRpdGxlX3Z1ZV8xID0gcmVxdWlyZShcIi4vVGl0bGUudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiVGl0bGVFbGVtZW50XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoVGl0bGVfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgRGVzY3JpcHRpb25fdnVlXzEgPSByZXF1aXJlKFwiLi9EZXNjcmlwdGlvbi52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJEZXNjcmlwdGlvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KERlc2NyaXB0aW9uX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIEFjdGl2aXR5RGF0ZV92dWVfMSA9IHJlcXVpcmUoXCIuL0FjdGl2aXR5RGF0ZS52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJBY3Rpdml0eURhdGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChBY3Rpdml0eURhdGVfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgQ29udGFjdEluZm9fdnVlXzEgPSByZXF1aXJlKFwiLi9Db250YWN0SW5mby52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJDb250YWN0SW5mb1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KENvbnRhY3RJbmZvX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFBhcnRpY2lwYXRpbmdPcmdfdnVlXzEgPSByZXF1aXJlKFwiLi9QYXJ0aWNpcGF0aW5nT3JnLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlBhcnRpY2lwYXRpbmdPcmdcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChQYXJ0aWNpcGF0aW5nT3JnX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFJlY2lwaWVudENvdW50cnlfdnVlXzEgPSByZXF1aXJlKFwiLi9SZWNpcGllbnRDb3VudHJ5LnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlJlY2lwaWVudENvdW50cnlcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChSZWNpcGllbnRDb3VudHJ5X3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFJlY2lwaWVudFJlZ2lvbl92dWVfMSA9IHJlcXVpcmUoXCIuL1JlY2lwaWVudFJlZ2lvbi52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJSZWNpcGllbnRSZWdpb25cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChSZWNpcGllbnRSZWdpb25fdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgVHJhbnNhY3Rpb25zX3Z1ZV8xID0gcmVxdWlyZShcIi4vVHJhbnNhY3Rpb25zLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRyYW5zYWN0aW9uc1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFRyYW5zYWN0aW9uc192dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBMb2NhdGlvbl92dWVfMSA9IHJlcXVpcmUoXCIuL0xvY2F0aW9uLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkxvY2F0aW9uXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoTG9jYXRpb25fdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgU2VjdG9yX3Z1ZV8xID0gcmVxdWlyZShcIi4vU2VjdG9yLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlNlY3RvclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFNlY3Rvcl92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBMZWdhY3lEYXRhX3Z1ZV8xID0gcmVxdWlyZShcIi4vTGVnYWN5RGF0YS52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJMZWdhY3lEYXRhXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoTGVnYWN5RGF0YV92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBDb25kaXRpb25zX3Z1ZV8xID0gcmVxdWlyZShcIi4vQ29uZGl0aW9ucy52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJDb25kaXRpb25zXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoQ29uZGl0aW9uc192dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBSZWxhdGVkQWN0aXZpdHlfdnVlXzEgPSByZXF1aXJlKFwiLi9SZWxhdGVkQWN0aXZpdHkudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUmVsYXRlZEFjdGl2aXR5XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoUmVsYXRlZEFjdGl2aXR5X3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFBvbGljeU1hcmtlcl92dWVfMSA9IHJlcXVpcmUoXCIuL1BvbGljeU1hcmtlci52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJQb2xpY3lNYXJrZXJcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChQb2xpY3lNYXJrZXJfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgVGFnX3Z1ZV8xID0gcmVxdWlyZShcIi4vVGFnLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRhZ1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFRhZ192dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBIdW1hbml0YXJpYW5TY29wZV92dWVfMSA9IHJlcXVpcmUoXCIuL0h1bWFuaXRhcmlhblNjb3BlLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkh1bWFuaXRhcmlhblNjb3BlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoSHVtYW5pdGFyaWFuU2NvcGVfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgUGxhbm5lZERpc2J1cnNlbWVudF92dWVfMSA9IHJlcXVpcmUoXCIuL1BsYW5uZWREaXNidXJzZW1lbnQudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUGxhbm5lZERpc2J1cnNlbWVudFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFBsYW5uZWREaXNidXJzZW1lbnRfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgUmVwb3J0aW5nT3JnYW5pemF0aW9uX3Z1ZV8xID0gcmVxdWlyZShcIi4vUmVwb3J0aW5nT3JnYW5pemF0aW9uLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlJlcG9ydGluZ09yZ2FuaXphdGlvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFJlcG9ydGluZ09yZ2FuaXphdGlvbl92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5QZXJpb2QgPSBleHBvcnRzLkJhc2VsaW5lID0gZXhwb3J0cy5Eb2N1bWVudExpbmsgPSBleHBvcnRzLlJlZmVyZW5jZSA9IGV4cG9ydHMuRGVzY3JpcHRpb24gPSBleHBvcnRzLkFnZ3JlZ2F0aW9uU3RhdHVzID0gZXhwb3J0cy5Bc2NlbmRpbmcgPSBleHBvcnRzLk1lYXN1cmUgPSBleHBvcnRzLlRpdGxlRWxlbWVudCA9IHZvaWQgMDtcbi8vIFByb3h5IGV4cG9ydCBhbGwgcmVsYXRlZCBjb21wb25lbnRzLlxudmFyIFRpdGxlX3Z1ZV8xID0gcmVxdWlyZShcIi4vVGl0bGUudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiVGl0bGVFbGVtZW50XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoVGl0bGVfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgTWVhc3VyZV92dWVfMSA9IHJlcXVpcmUoXCIuL01lYXN1cmUudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiTWVhc3VyZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KE1lYXN1cmVfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgSW5kaWNhdG9yQXNjZW5kaW5nX3Z1ZV8xID0gcmVxdWlyZShcIi4vSW5kaWNhdG9yQXNjZW5kaW5nLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkFzY2VuZGluZ1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KEluZGljYXRvckFzY2VuZGluZ192dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBBZ2dyZWdhdGlvblN0YXR1c192dWVfMSA9IHJlcXVpcmUoXCIuL0FnZ3JlZ2F0aW9uU3RhdHVzLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkFnZ3JlZ2F0aW9uU3RhdHVzXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoQWdncmVnYXRpb25TdGF0dXNfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgRGVzY3JpcHRpb25fdnVlXzEgPSByZXF1aXJlKFwiLi9EZXNjcmlwdGlvbi52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJEZXNjcmlwdGlvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KERlc2NyaXB0aW9uX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFJlZmVyZW5jZV92dWVfMSA9IHJlcXVpcmUoXCIuL1JlZmVyZW5jZS52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJSZWZlcmVuY2VcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChSZWZlcmVuY2VfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgRG9jdW1lbnRMaW5rX3Z1ZV8xID0gcmVxdWlyZShcIi4vRG9jdW1lbnRMaW5rLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkRvY3VtZW50TGlua1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KERvY3VtZW50TGlua192dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBCYXNlbGluZV92dWVfMSA9IHJlcXVpcmUoXCIuL0Jhc2VsaW5lLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkJhc2VsaW5lXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoQmFzZWxpbmVfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgUGVyaW9kX3Z1ZV8xID0gcmVxdWlyZShcIi4vUGVyaW9kLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlBlcmlvZFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFBlcmlvZF92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5BY3R1YWxWYWx1ZSA9IGV4cG9ydHMuVGFyZ2V0VmFsdWUgPSB2b2lkIDA7XG52YXIgVGFyZ2V0VmFsdWVfdnVlXzEgPSByZXF1aXJlKFwiLi9UYXJnZXRWYWx1ZS52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUYXJnZXRWYWx1ZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFRhcmdldFZhbHVlX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIEFjdHVhbFZhbHVlX3Z1ZV8xID0gcmVxdWlyZShcIi4vQWN0dWFsVmFsdWUudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQWN0dWFsVmFsdWVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChBY3R1YWxWYWx1ZV92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5JbmRpY2F0b3IgPSBleHBvcnRzLlJlc3VsdFR5cGUgPSBleHBvcnRzLlJlZmVyZW5jZSA9IGV4cG9ydHMuRG9jdW1lbnRMaW5rID0gZXhwb3J0cy5UaXRsZURlc2NyaXB0aW9uID0gdm9pZCAwO1xuLy8gUHJveHkgZXhwb3J0IGFsbCByZWxhdGVkIGNvbXBvbmVudHMuXG52YXIgVGl0bGVEZXNjcmlwdGlvbl92dWVfMSA9IHJlcXVpcmUoXCIuL1RpdGxlRGVzY3JpcHRpb24udnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiVGl0bGVEZXNjcmlwdGlvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFRpdGxlRGVzY3JpcHRpb25fdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgRG9jdW1lbnRMaW5rX3Z1ZV8xID0gcmVxdWlyZShcIi4vRG9jdW1lbnRMaW5rLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkRvY3VtZW50TGlua1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KERvY3VtZW50TGlua192dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBSZWZlcmVuY2VfdnVlXzEgPSByZXF1aXJlKFwiLi9SZWZlcmVuY2UudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUmVmZXJlbmNlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoUmVmZXJlbmNlX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFJlc3VsdFR5cGVfdnVlXzEgPSByZXF1aXJlKFwiLi9SZXN1bHRUeXBlLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlJlc3VsdFR5cGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChSZXN1bHRUeXBlX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIEluZGljYXRvcl92dWVfMSA9IHJlcXVpcmUoXCIuL0luZGljYXRvci52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJJbmRpY2F0b3JcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChJbmRpY2F0b3JfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuVGllZFN0YXR1cyA9IGV4cG9ydHMuRmluYW5jZVR5cGUgPSBleHBvcnRzLkZsb3dUeXBlID0gZXhwb3J0cy5SZWNpcGllbnRSZWdpb24gPSBleHBvcnRzLlJlY2lwaWVudENvdW50cnkgPSBleHBvcnRzLlNlY3RvciA9IGV4cG9ydHMuRGlzYnVyc2VtZW50Q2hhbm5lbCA9IGV4cG9ydHMuUmVjZWl2ZXJPcmdhbml6YXRpb24gPSBleHBvcnRzLlByb3ZpZGVyT3JnYW5pemF0aW9uID0gZXhwb3J0cy5WYWx1ZSA9IGV4cG9ydHMuVHJhbnNhY3Rpb25EYXRlID0gZXhwb3J0cy5UcmFuc2FjdGlvblR5cGUgPSBleHBvcnRzLkFpZFR5cGUgPSBleHBvcnRzLkRlc2NyaXB0aW9uID0gdm9pZCAwO1xuLy8gUHJveHkgZXhwb3J0IGFsbCByZWxhdGVkIGNvbXBvbmVudHMuXG52YXIgRGVzY3JpcHRpb25fdnVlXzEgPSByZXF1aXJlKFwiLi9EZXNjcmlwdGlvbi52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJEZXNjcmlwdGlvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KERlc2NyaXB0aW9uX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIEFpZFR5cGVfdnVlXzEgPSByZXF1aXJlKFwiLi9BaWRUeXBlLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkFpZFR5cGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChBaWRUeXBlX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFRyYW5zYWN0aW9uVHlwZV92dWVfMSA9IHJlcXVpcmUoXCIuL1RyYW5zYWN0aW9uVHlwZS52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUcmFuc2FjdGlvblR5cGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChUcmFuc2FjdGlvblR5cGVfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgVHJhbnNhY3Rpb25EYXRlX3Z1ZV8xID0gcmVxdWlyZShcIi4vVHJhbnNhY3Rpb25EYXRlLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRyYW5zYWN0aW9uRGF0ZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFRyYW5zYWN0aW9uRGF0ZV92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBWYWx1ZV92dWVfMSA9IHJlcXVpcmUoXCIuL1ZhbHVlLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlZhbHVlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoVmFsdWVfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgUHJvdmlkZXJPcmdhbml6YXRpb25fdnVlXzEgPSByZXF1aXJlKFwiLi9Qcm92aWRlck9yZ2FuaXphdGlvbi52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJQcm92aWRlck9yZ2FuaXphdGlvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFByb3ZpZGVyT3JnYW5pemF0aW9uX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFJlY2VpdmVyT3JnYW5pemF0aW9uX3Z1ZV8xID0gcmVxdWlyZShcIi4vUmVjZWl2ZXJPcmdhbml6YXRpb24udnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUmVjZWl2ZXJPcmdhbml6YXRpb25cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChSZWNlaXZlck9yZ2FuaXphdGlvbl92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBEaXNidXJzZW1lbnRDaGFubmVsX3Z1ZV8xID0gcmVxdWlyZShcIi4vRGlzYnVyc2VtZW50Q2hhbm5lbC52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJEaXNidXJzZW1lbnRDaGFubmVsXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoRGlzYnVyc2VtZW50Q2hhbm5lbF92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBTZWN0b3JfdnVlXzEgPSByZXF1aXJlKFwiLi9TZWN0b3IudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiU2VjdG9yXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoU2VjdG9yX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFJlY2lwaWVudENvdW50cnlfdnVlXzEgPSByZXF1aXJlKFwiLi9SZWNpcGllbnRDb3VudHJ5LnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlJlY2lwaWVudENvdW50cnlcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChSZWNpcGllbnRDb3VudHJ5X3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFJlY2lwaWVudFJlZ2lvbl92dWVfMSA9IHJlcXVpcmUoXCIuL1JlY2lwaWVudFJlZ2lvbi52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJSZWNpcGllbnRSZWdpb25cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChSZWNpcGllbnRSZWdpb25fdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgRmxvd1R5cGVfdnVlXzEgPSByZXF1aXJlKFwiLi9GbG93VHlwZS52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJGbG93VHlwZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KEZsb3dUeXBlX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIEZpbmFuY2VUeXBlX3Z1ZV8xID0gcmVxdWlyZShcIi4vRmluYW5jZVR5cGUudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiRmluYW5jZVR5cGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChGaW5hbmNlVHlwZV92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBUaWVkU3RhdHVzX3Z1ZV8xID0gcmVxdWlyZShcIi4vVGllZFN0YXR1cy52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUaWVkU3RhdHVzXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoVGllZFN0YXR1c192dWVfMSkuZGVmYXVsdDsgfSB9KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Eb2N1bWVudExpbmsgPSBleHBvcnRzLlRvdGFsRXhwZW5kaXR1cmUgPSBleHBvcnRzLlJlY2lwaWVudENvdW50cnlCdWRnZXQgPSBleHBvcnRzLlJlcG9ydGluZ1JlZ2lvbkJ1ZGdldCA9IGV4cG9ydHMuUmVwb3J0aW5nT3JnQnVkZ2V0ID0gZXhwb3J0cy5Ub3RhbEJ1ZGdldCA9IGV4cG9ydHMuUmVwb3J0aW5nT3JnYW5pc2F0aW9uID0gdm9pZCAwO1xuLy8gUHJveHkgZXhwb3J0IGFsbCByZWxhdGVkIGNvbXBvbmVudHMuXG52YXIgUmVwb3J0aW5nT3JnYW5pc2F0aW9uX3Z1ZV8xID0gcmVxdWlyZShcIi4vUmVwb3J0aW5nT3JnYW5pc2F0aW9uLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlJlcG9ydGluZ09yZ2FuaXNhdGlvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFJlcG9ydGluZ09yZ2FuaXNhdGlvbl92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBUb3RhbEJ1ZGdldF92dWVfMSA9IHJlcXVpcmUoXCIuL1RvdGFsQnVkZ2V0LnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRvdGFsQnVkZ2V0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoVG90YWxCdWRnZXRfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgUmVwb3J0aW5nT3JnQnVkZ2V0X3Z1ZV8xID0gcmVxdWlyZShcIi4vUmVwb3J0aW5nT3JnQnVkZ2V0LnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlJlcG9ydGluZ09yZ0J1ZGdldFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFJlcG9ydGluZ09yZ0J1ZGdldF92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBSZXBvcnRpbmdSZWdpb25CdWRnZXRfdnVlXzEgPSByZXF1aXJlKFwiLi9SZXBvcnRpbmdSZWdpb25CdWRnZXQudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUmVwb3J0aW5nUmVnaW9uQnVkZ2V0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoUmVwb3J0aW5nUmVnaW9uQnVkZ2V0X3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFJlY2lwaWVudENvdW50cnlCdWRnZXRfdnVlXzEgPSByZXF1aXJlKFwiLi9SZWNpcGllbnRDb3VudHJ5QnVkZ2V0LnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlJlY2lwaWVudENvdW50cnlCdWRnZXRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChSZWNpcGllbnRDb3VudHJ5QnVkZ2V0X3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFRvdGFsRXhwZW5kaXR1cmVfdnVlXzEgPSByZXF1aXJlKFwiLi9Ub3RhbEV4cGVuZGl0dXJlLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRvdGFsRXhwZW5kaXR1cmVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChUb3RhbEV4cGVuZGl0dXJlX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIERvY3VtZW50TGlua192dWVfMSA9IHJlcXVpcmUoXCIuL0RvY3VtZW50TGluay52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJEb2N1bWVudExpbmtcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChEb2N1bWVudExpbmtfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG4iLCI8IS0tIGVzbGludC1kaXNhYmxlIC0tPlxuPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwic21vb3RoIC1tYi03IHB4LTUgcHktNyBzbTpweC0xMCBzbTpweS0xNCBtZDotbWItMjBcIj5cbiAgICA8ZGl2IGNsYXNzPVwibXgtYXV0byBtYXgtdy1bNzAwcHhdXCI+XG4gICAgICA8c2VjdGlvbiBjbGFzcz1cInJvdW5kZWQgYmctd2hpdGUgcHktNCBzaGFkb3ctdGV4dGJveCBzbTpweS04XCI+XG4gICAgICAgIDxhcnRpY2xlIGNsYXNzPVwicHktNCBweC02IHNtOnB5LTYgc206cHgtMTJcIj5cbiAgICAgICAgICA8aDMgY2xhc3M9XCJteS0yIHRleHQtMnhsIGZvbnQtYm9sZCB0ZXh0LWJsdWVjb3JhbFwiPlxuICAgICAgICAgICAge3sgbGFuZ3VhZ2UuYWJvdXQud2hhdF9pc19pYXRpX3B1Ymxpc2hlcl9oZWFkZXIgfX1cbiAgICAgICAgICA8L2gzPlxuICAgICAgICAgIDxwIGNsYXNzPVwibXQtNCB0ZXh0LWJhc2VcIj5cbiAgICAgICAgICAgIHt7IGxhbmd1YWdlLmFib3V0LndoYXRfaXNfaWF0aV9wdWJsaXNoZXJfZGVzY3JpcHRpb24ub25lIH19XG4gICAgICAgICAgPC9wPlxuICAgICAgICA8L2FydGljbGU+XG4gICAgICAgIDxhcnRpY2xlIGNsYXNzPVwicHktNCBweC02IHNtOnB5LTYgc206cHgtMTJcIj5cbiAgICAgICAgICA8aDMgY2xhc3M9XCJteS0yIHRleHQtMnhsIGZvbnQtYm9sZCB0ZXh0LWJsdWVjb3JhbFwiPlxuICAgICAgICAgICAge3sgbGFuZ3VhZ2UuYWJvdXQudXNlX2lhdGlfcHVibGlzaGVyX3RvX2hlYWRlciB9fVxuICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgPHVsIGNsYXNzPVwibXQtNCBtbC00IGxpc3QtZGlzYyB0ZXh0LWJhc2UgdGV4dC1ibHVlY29yYWxcIj5cbiAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtYmFzZVwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtYmxhY2tcIj57e1xuICAgICAgICAgICAgICAgIGxhbmd1YWdlLmFib3V0LnVzZV9pYXRpX3B1Ymxpc2hlcl90b19kZXNjcmlwdGlvbi5vbmUubGlzdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgLm9uZVxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LWJhc2VcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWJsYWNrXCI+e3tcbiAgICAgICAgICAgICAgICBsYW5ndWFnZS5hYm91dC51c2VfaWF0aV9wdWJsaXNoZXJfdG9fZGVzY3JpcHRpb24ub25lLmxpc3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgIC50d29cbiAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1iYXNlXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1ibGFja1wiPnt7XG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2UuYWJvdXQudXNlX2lhdGlfcHVibGlzaGVyX3RvX2Rlc2NyaXB0aW9uLm9uZS5saXN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAudGhyZWVcbiAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1iYXNlXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1ibGFja1wiPnt7XG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2UuYWJvdXQudXNlX2lhdGlfcHVibGlzaGVyX3RvX2Rlc2NyaXB0aW9uLm9uZS5saXN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAuZm91clxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LWJhc2VcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWJsYWNrXCI+e3tcbiAgICAgICAgICAgICAgICBsYW5ndWFnZS5hYm91dC51c2VfaWF0aV9wdWJsaXNoZXJfdG9fZGVzY3JpcHRpb24ub25lLmxpc3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgIC5maXZlXG4gICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDxwIGNsYXNzPVwibXQtNCB0ZXh0LWJhc2VcIj5cbiAgICAgICAgICAgIHt7IGxhbmd1YWdlLmFib3V0LnVzZV9pYXRpX3B1Ymxpc2hlcl90b19kZXNjcmlwdGlvbi50d28gfX1cbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgPHAgY2xhc3M9XCJtdC00IHRleHQtYmFzZVwiPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgdi1odG1sPVwibGFuZ3VhZ2UuYWJvdXQudXNlX2lhdGlfcHVibGlzaGVyX3RvX2Rlc2NyaXB0aW9uLnRocmVlXCJcbiAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgPC9wPlxuICAgICAgICA8L2FydGljbGU+XG4gICAgICAgIDxhcnRpY2xlIGNsYXNzPVwib3VuZGVkIHB5LTQgcHgtNiBzbTpweS02IHNtOnB4LTEyXCI+XG4gICAgICAgICAgPGgzIGNsYXNzPVwibXktMiB0ZXh0LTJ4bCBmb250LWJvbGQgdGV4dC1ibHVlY29yYWxcIj5cbiAgICAgICAgICAgIHt7IGxhbmd1YWdlLmFib3V0LmRldmVsb3BtZW50X29mX2lhdGlfaGVhZGVyIH19XG4gICAgICAgICAgPC9oMz5cbiAgICAgICAgICA8cCBjbGFzcz1cIm10LTQgdGV4dC1iYXNlXCI+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICB2LWh0bWw9XCJsYW5ndWFnZS5hYm91dC5kZXZlbG9wbWVudF9vZl9pYXRpX2Rlc2NyaXB0aW9uLm9uZVwiXG4gICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgPC9zZWN0aW9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG48c2NyaXB0IGxhbmc9XCJ0c1wiPjwvc2NyaXB0PlxuPHNjcmlwdD5cbmltcG9ydCB7IGRlZmluZUNvbXBvbmVudCB9IGZyb20gJ3Z1ZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIHNldHVwKCkge1xuICAgIGNvbnN0IGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgcmV0dXJuIHsgbGFuZ3VhZ2UgfTtcbiAgfSxcbn0pO1xuPC9zY3JpcHQ+XG4iLCI8dGVtcGxhdGU+XG4gIDxzZWN0aW9uIGNsYXNzPVwibWFpbiBtdC0xMCBzbTpteC0xMCB4bDpteC0yNCB4bDpweC0xXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJtYWluX19jb250YWluZXIgcm91bmRlZC1sZyBiZy1ibHVlY29yYWwgcGItOCBzbTptYi0xMCBtZDptYi0yMCBtZDpmbGV4IG1kOmJnLW5vbmUgbWQ6cGItMFwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImxlZnQgZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctYmx1ZWNvcmFsIHB4LTMgcHQtNSBwYi03MiB0ZXh0LXdoaXRlIHNtOnJvdW5kZWQtci1sZyBzbTpyb3VuZGVkLWwtbGcgc206cHgtNSBzbTpwdC0xMCBtZDpiYXNpcy0yLzQgbWQ6cm91bmRlZC1yLW5vbmUgbWQ6cGItMTYgbGc6cHQtNDQgbGc6cGItNDQgeGw6cHgtMjRcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdF9fY29udGFpbmVyIHJvdW5kZWQtbGcgcC01IHNtOnAtMTBcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImxlZnRfX3RpdGxlIGZvbnQtYm9sZFwiPnt7XG4gICAgICAgICAgICBsYW5ndWFnZS5ob21lLmlhdGlfcHVibGlzaGluZ190b29sX2hlYWRlclxuICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgIDxwIGNsYXNzPVwicHQtMiBzbTpwdC02IHNtOnBiLThcIj5cbiAgICAgICAgICAgIHt7IGxhbmd1YWdlLmhvbWUuaWF0aV9wdWJsaXNoaW5nX3Rvb2xfc2VjdGlvbi53ZWxjb21lX3RleHQgfX1cbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJsb2NrXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZsZXggZmxleC13cmFwXCI+XG4gICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgcGFnZUNvbnRlbnQgPT09IGxhbmd1YWdlLndlYl9sYW5nLmpvaW5fbm93XG4gICAgICAgICAgICAgICAgICA/IGxhbmd1YWdlLmhvbWUuaWF0aV9wdWJsaXNoaW5nX3Rvb2xfc2VjdGlvblxuICAgICAgICAgICAgICAgICAgICAgIC5oYXZlbnRfcmVnaXN0ZXJlZF9sYWJlbFxuICAgICAgICAgICAgICAgICAgOiBsYW5ndWFnZS5ob21lLmlhdGlfcHVibGlzaGluZ190b29sX3NlY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAuYWxyZWFkeV9oYXZlX2FjY291bnRfbGFiZWxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWwtMSBib3JkZXItYi0yIGJvcmRlci1iLXRyYW5zcGFyZW50IHRleHQtYmFzZSB0ZXh0LXR1cnF1b2lzZSBob3Zlcjpib3JkZXItYi0yIGhvdmVyOmJvcmRlci1iLXR1cnF1b2lzZVwiXG4gICAgICAgICAgICAgICAgQGNsaWNrPVwidG9nZ2xlUGFnZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBwYWdlQ29udGVudCB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPFNpZ25JblxuICAgICAgICB2LWlmPVwicGFnZUNvbnRlbnQgPT09IGxhbmd1YWdlLndlYl9sYW5nLmpvaW5fbm93XCJcbiAgICAgICAgOm1lc3NhZ2U9XCJtZXNzYWdlXCJcbiAgICAgICAgOmludGVudD1cImludGVudFwiXG4gICAgICAvPlxuICAgICAgPEpvaW5Ob3cgdi1lbHNlIC8+XG4gICAgPC9kaXY+XG4gIDwvc2VjdGlvbj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgeyBkZWZpbmVDb21wb25lbnQsIHJlZiB9IGZyb20gJ3Z1ZSc7XG5pbXBvcnQgU2lnbkluIGZyb20gJy4vcGFydGlhbHMvU2lnbkluLnZ1ZSc7XG5pbXBvcnQgSm9pbk5vdyBmcm9tICcuL3BhcnRpYWxzL0pvaW5Ob3cudnVlJztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcbiAgY29tcG9uZW50czoge1xuICAgIEpvaW5Ob3csXG4gICAgU2lnbkluLFxuICB9LFxuICBwcm9wczoge1xuICAgIHBhZ2U6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIGRlZmF1bHQ6ICdzaWduaW4nLFxuICAgIH0sXG4gICAgbWVzc2FnZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSxcbiAgICBpbnRlbnQ6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIH0sXG4gIH0sXG4gIHNldHVwKHByb3BzKSB7XG4gICAgY29uc3QgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICBjb25zdCBwYWdlQ29udGVudCA9IHJlZihcbiAgICAgIHByb3BzLnBhZ2UgPT09ICdzaWduaW4nXG4gICAgICAgID8gbGFuZ3VhZ2Uud2ViX2xhbmcuam9pbl9ub3dcbiAgICAgICAgOiBsYW5ndWFnZS53ZWJfbGFuZy5zaWduX2luXG4gICAgKTtcbiAgICBmdW5jdGlvbiB0b2dnbGVQYWdlKCkge1xuICAgICAgcGFnZUNvbnRlbnQudmFsdWUgPVxuICAgICAgICBwYWdlQ29udGVudC52YWx1ZSA9PT0gbGFuZ3VhZ2Uud2ViX2xhbmcuam9pbl9ub3dcbiAgICAgICAgICA/IGxhbmd1YWdlLndlYl9sYW5nLnNpZ25faW5cbiAgICAgICAgICA6IGxhbmd1YWdlLndlYl9sYW5nLmpvaW5fbm93O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBwYWdlQ29udGVudCxcbiAgICAgIHRvZ2dsZVBhZ2UsXG4gICAgICBsYW5ndWFnZSxcbiAgICB9O1xuICB9LFxufSk7XG48L3NjcmlwdD5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cInNoaW1tZXJfX2Jsb2NrXCIgc3R5bGU9XCJtYXgtd2lkdGg6IDUxNXB4XCI+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+XFxuPHN0eWxlPlxcbi5sb2FkZXIge1xcbiAgd2lkdGg6IDIwcHg7XFxuICBoZWlnaHQ6IDIwcHg7XFxuICBib3JkZXI6IDNweCBzb2xpZCAjZDVkY2RlO1xcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgYW5pbWF0aW9uOiByb3RhdGlvbiAxcyBsaW5lYXIgaW5maW5pdGU7XFxufVxcblxcbkBrZXlmcmFtZXMgcm90YXRpb24ge1xcbiAgMCUge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcXG4gIH1cXG4gIDEwMCUge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcbiAgfVxcbn1cXG48L3N0eWxlPlxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIlxcbkAtd2Via2l0LWtleWZyYW1lcyBzcGlubmVyLTVkODRhMWQ4IHtcXG4wJSB7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTUwJSwgLTUwJSwgMCkgcm90YXRlKDBkZWcpO1xcbn1cXG4xMDAlIHtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNTAlLCAtNTAlLCAwKSByb3RhdGUoMzYwZGVnKTtcXG59XFxufVxcbkBrZXlmcmFtZXMgc3Bpbm5lci01ZDg0YTFkOCB7XFxuMCUge1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01MCUsIC01MCUsIDApIHJvdGF0ZSgwZGVnKTtcXG59XFxuMTAwJSB7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTUwJSwgLTUwJSwgMCkgcm90YXRlKDM2MGRlZyk7XFxufVxcbn1cXG4uc3BpbltkYXRhLXYtNWQ4NGExZDhdOjpiZWZvcmUge1xcbiAgLXdlYmtpdC1hbmltYXRpb246IDEuNXMgbGluZWFyIGluZmluaXRlIHNwaW5uZXItNWQ4NGExZDg7XFxuICAgICAgICAgIGFuaW1hdGlvbjogMS41cyBsaW5lYXIgaW5maW5pdGUgc3Bpbm5lci01ZDg0YTFkODtcXG4gIC13ZWJraXQtYW5pbWF0aW9uLXBsYXktc3RhdGU6IGluaGVyaXQ7XFxuICAgICAgICAgIGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBpbmhlcml0O1xcbiAgYm9yZGVyOiBzb2xpZCAzcHggI2NmZDBkMTtcXG4gIGJvcmRlci1ib3R0b20tY29sb3I6IGdyZXk7XFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICBjb250ZW50OiAnJztcXG4gIGhlaWdodDogMjBweDtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogNTAlO1xcbiAgbGVmdDogNTAlO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNTAlLCAtNTAlLCAwKTtcXG4gIHdpZHRoOiAyMHB4O1xcbiAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcXG59XFxuLnNwaW5bZGF0YS12LTVkODRhMWQ4XSB7XFxuICBoZWlnaHQ6IDQwcHg7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB3aWR0aDogMTAwJTtcXG4gIG1hcmdpbjogYXV0bztcXG59XFxuXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vLi4vLi4vLi4vLi4vVGFibGVMYXlvdXQudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCI7QUFnUUE7QUFDRTtJQUNFLGtEQUFrRDtBQUNwRDtBQUNBO0lBQ0Usb0RBQW9EO0FBQ3REO0FBQ0Y7QUFQQTtBQUNFO0lBQ0Usa0RBQWtEO0FBQ3BEO0FBQ0E7SUFDRSxvREFBb0Q7QUFDdEQ7QUFDRjtBQUVBO0VBQ0Usd0RBQXVDO1VBQXZDLGdEQUF1QztFQUN2QyxxQ0FBNkI7VUFBN0IsNkJBQTZCO0VBQzdCLHlCQUF5QjtFQUN6Qix5QkFBeUI7RUFDekIsa0JBQWtCO0VBQ2xCLFdBQVc7RUFDWCxZQUFZO0VBQ1osa0JBQWtCO0VBQ2xCLFFBQVE7RUFDUixTQUFTO0VBQ1QscUNBQXFDO0VBQ3JDLFdBQVc7RUFDWCxzQkFBc0I7QUFDeEI7QUFDQTtFQUNFLFlBQVk7RUFDWixrQkFBa0I7RUFDbEIsV0FBVztFQUNYLFlBQVk7QUFDZFwiLFwic291cmNlc0NvbnRlbnRcIjpbXCI8dGVtcGxhdGU+XFxuICA8ZGl2IGNsYXNzPVxcXCJpYXRpLWxpc3QtdGFibGUgbWItMTBcXFwiPlxcbiAgICA8dGFibGU+XFxuICAgICAgPHRoZWFkPlxcbiAgICAgICAgPHRyIGNsYXNzPVxcXCJiZy1uLTEwXFxcIj5cXG4gICAgICAgICAgPHRoIGlkPVxcXCJ0aXRsZVxcXCIgc2NvcGU9XFxcImNvbFxcXCI+XFxuICAgICAgICAgICAgPHNwYW4+e3sgbGFuZ3VhZ2UuY29tbW9uX2xhbmcuYWN0aXZpdHlfdGl0bGUgfX08L3NwYW4+XFxuICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgIDx0aCBpZD1cXFwicHVibGlzaGluZy1wcm9ncmVzc1xcXCIgc2NvcGU9XFxcImNvbFxcXCIgY2xhc3M9XFxcInByb2dyZXNzLWJhci1oZWFkZXJcXFwiPlxcbiAgICAgICAgICAgIDxhXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwiZmxleCBqdXN0aWZ5LWVuZCB0ZXh0LW4tNTAgdHJhbnNpdGlvbiBkdXJhdGlvbi01MDAgaG92ZXI6dGV4dC1zcHJpbmctNTBcXFwiXFxuICAgICAgICAgICAgICA6aHJlZj1cXFwic29ydEJ5UHVibGlzaGluZ1Byb2dyZXNzKClcXFwiXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInNvcnRpbmctaW5kaWNhdG9yXFxcIiA6Y2xhc3M9XFxcInNvcnRpbmdEaXJlY3Rpb24oKVxcXCI+XFxuICAgICAgICAgICAgICAgIDxzdmctdnVlIDppY29uPVxcXCJgJHtzb3J0aW5nRGlyZWN0aW9uKCl9LWFycm93YFxcXCIgLz5cXG4gICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJcXFwiPnt7XFxuICAgICAgICAgICAgICAgIGxhbmd1YWdlLmNvbW1vbl9sYW5nLnB1Ymxpc2hpbmdfcHJvZ3Jlc3NcXG4gICAgICAgICAgICAgIH19PC9zcGFuPlxcbiAgICAgICAgICAgIDwvYT5cXG4gICAgICAgICAgPC90aD5cXG4gICAgICAgICAgPHRoIGlkPVxcXCJkYXRlXFxcIiBzY29wZT1cXFwiY29sXFxcIj5cXG4gICAgICAgICAgICA8YVxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcInRleHQtbi01MCB0cmFuc2l0aW9uIGR1cmF0aW9uLTUwMCBob3Zlcjp0ZXh0LXNwcmluZy01MFxcXCJcXG4gICAgICAgICAgICAgIDpocmVmPVxcXCJzb3J0QnlEYXRlVXJsKClcXFwiXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInNvcnRpbmctaW5kaWNhdG9yXFxcIiA6Y2xhc3M9XFxcInNvcnRpbmdEaXJlY3Rpb24oKVxcXCI+XFxuICAgICAgICAgICAgICAgIDxzdmctdnVlIDppY29uPVxcXCJgJHtzb3J0aW5nRGlyZWN0aW9uKCl9LWFycm93YFxcXCIgLz5cXG4gICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgIDxzcGFuPnt7IGxhbmd1YWdlLmNvbW1vbl9sYW5nLnVwZGF0ZWRfb24gfX08L3NwYW4+XFxuICAgICAgICAgICAgPC9hPlxcbiAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICA8dGggaWQ9XFxcInN0YXR1c1xcXCIgc2NvcGU9XFxcImNvbFxcXCI+XFxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcImhpZGRlblxcXCI+e3sgbGFuZ3VhZ2UuY29tbW9uX2xhbmcuc3RhdHVzIH19PC9zcGFuPlxcbiAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICA8dGggaWQ9XFxcInB1Ymxpc2hcXFwiIHNjb3BlPVxcXCJjb2xcXFwiPlxcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJoaWRkZW5cXFwiPnt7IGxhbmd1YWdlLmNvbW1vbl9sYW5nLnB1Ymxpc2ggfX08L3NwYW4+XFxuICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgIDx0aCBpZD1cXFwiY2JcXFwiIHNjb3BlPVxcXCJjb2xcXFwiPlxcbiAgICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwiY3Vyc29yLXBvaW50ZXJcXFwiXFxuICAgICAgICAgICAgICBAY2xpY2s9XFxcInRvZ2dsZVNlbGVjdEFsbChkYXRhLmRhdGEsIHNlbGVjdEFsbFZhbHVlKVxcXCJcXG4gICAgICAgICAgICA+XFxuICAgICAgICAgICAgICA8c3ZnLXZ1ZSBpY29uPVxcXCJjaGVja2JveFxcXCIgLz5cXG4gICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgIDwvdGg+XFxuICAgICAgICA8L3RyPlxcbiAgICAgIDwvdGhlYWQ+XFxuICAgICAgPHRib2R5IHYtaWY9XFxcImRhdGEudG90YWwgPiAwXFxcIj5cXG4gICAgICAgIDx0clxcbiAgICAgICAgICB2LWZvcj1cXFwiZGF0dW0gaW4gZGF0YS5kYXRhXFxcIlxcbiAgICAgICAgICA6a2V5PVxcXCJkYXR1bVsnaWQnXVxcXCJcXG4gICAgICAgICAgOmNsYXNzPVxcXCJ7XFxuICAgICAgICAgICAgJ2FscmVhZHktcHVibGlzaGVkJzpcXG4gICAgICAgICAgICAgIGRhdHVtWydsaW5rZWRfdG9faWF0aSddICYmIGRhdHVtWydzdGF0dXMnXSA9PT0gJ2RyYWZ0JyxcXG4gICAgICAgICAgfVxcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAgPHRkIGNsYXNzPVxcXCJ0aXRsZVxcXCI+XFxuICAgICAgICAgICAgPGRpdlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcImZsZXggaXRlbXMtc3RhcnQgdHJhbnNpdGlvbiBkdXJhdGlvbi01MDAgaG92ZXI6dGV4dC1zcHJpbmctNTBcXFwiXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPFByZXZpb3VzbHlQdWJsaXNoZWRcXG4gICAgICAgICAgICAgICAgdi1pZj1cXFwiZGF0dW1bJ2xpbmtlZF90b19pYXRpJ10gJiYgZGF0dW1bJ3N0YXR1cyddID09PSAnZHJhZnQnXFxcIlxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwiYWJzb2x1dGUgdG9wLTAgbGVmdC0wXFxcIlxcbiAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImVsbGlwc2lzIHJlbGF0aXZlIHctZnVsbFxcXCI+XFxuICAgICAgICAgICAgICAgIDxhXFxuICAgICAgICAgICAgICAgICAgOmhyZWY9XFxcIicvYWN0aXZpdHkvJyArIGRhdHVtWydpZCddXFxcIlxcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJlbGxpcHNpcyB3LWZ1bGwgIW1heC13LWZ1bGwgb3ZlcmZsb3ctaGlkZGVuIHRleHQtbi01MFxcXCJcXG4gICAgICAgICAgICAgICAgICA+e3tcXG4gICAgICAgICAgICAgICAgICAgIGRhdHVtWydkZWZhdWx0X3RpdGxlX25hcnJhdGl2ZSddICYmXFxuICAgICAgICAgICAgICAgICAgICBkYXR1bVsnZGVmYXVsdF90aXRsZV9uYXJyYXRpdmUnXSAhPT0gJydcXG4gICAgICAgICAgICAgICAgICAgICAgPyBkYXR1bVsnZGVmYXVsdF90aXRsZV9uYXJyYXRpdmUnXVxcbiAgICAgICAgICAgICAgICAgICAgICA6IGxhbmd1YWdlLmNvbW1vbl9sYW5nLnVudGl0bGVkXFxuICAgICAgICAgICAgICAgICAgfX08L2FcXG4gICAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ3LTUyXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiZWxsaXBzaXNfX3RpdGxlLS1ob3ZlclxcXCI+e3tcXG4gICAgICAgICAgICAgICAgICAgIGRhdHVtWydkZWZhdWx0X3RpdGxlX25hcnJhdGl2ZSddICYmXFxuICAgICAgICAgICAgICAgICAgICBkYXR1bVsnZGVmYXVsdF90aXRsZV9uYXJyYXRpdmUnXSAhPT0gJydcXG4gICAgICAgICAgICAgICAgICAgICAgPyBkYXR1bVsnZGVmYXVsdF90aXRsZV9uYXJyYXRpdmUnXVxcbiAgICAgICAgICAgICAgICAgICAgICA6IGxhbmd1YWdlLmNvbW1vbl9sYW5nLnVudGl0bGVkXFxuICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgIDwvdGQ+XFxuXFxuICAgICAgICAgIDx0ZCBjbGFzcz1cXFwidGV4dC1uLTQwXFxcIj5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJwcm9ncmVzcy1iYXItcGFyZW50XFxcIj5cXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInByb2dyZXNzLWJhci13cmFwcGVyXFxcIj5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwicHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciBiZy1zcHJpbmctMTBcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxkaXZcXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJwcm9ncmVzcy1iYXItZmlsbCBiZy1zcHJpbmctNTBcXFwiXFxuICAgICAgICAgICAgICAgICAgICA6c3R5bGU9XFxcInsgd2lkdGg6IGRhdHVtWydjb21wbGV0ZV9wZXJjZW50YWdlJ10gKyAnJScgfVxcXCJcXG4gICAgICAgICAgICAgICAgICA+PC9kaXY+XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJwcm9ncmVzcy1iYXItbnVtYmVyXFxcIj5cXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInRleHQteHMgZm9udC1zZW1pYm9sZCB0ZXh0LXNwcmluZy01MFxcXCJcXG4gICAgICAgICAgICAgICAgICA+e3sgZGF0dW1bJ2NvbXBsZXRlX3BlcmNlbnRhZ2UnXSB9fSU8L3NwYW5cXG4gICAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgIDwvdGQ+XFxuXFxuICAgICAgICAgIDx0ZCBjbGFzcz1cXFwidGV4dC1uLTQwXFxcIj5cXG4gICAgICAgICAgICB7eyBmb3JtYXREYXRlKGRhdHVtLnVwZGF0ZWRfYXQpIH19XFxuICAgICAgICAgIDwvdGQ+XFxuXFxuICAgICAgICAgIDx0ZD5cXG4gICAgICAgICAgICA8YnV0dG9uXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHRyYW5zaXRpb24gZHVyYXRpb24tNTAwIGhvdmVyOnRleHQtc3ByaW5nLTUwXFxcIlxcbiAgICAgICAgICAgICAgOmNsYXNzPVxcXCJ7XFxuICAgICAgICAgICAgICAgICd0ZXh0LW4tNDAnOiBkYXR1bVsnc3RhdHVzJ10gPT09ICdkcmFmdCcsXFxuICAgICAgICAgICAgICAgICd0ZXh0LXNwcmluZy01MCc6IGRhdHVtWydzdGF0dXMnXSA9PT0gJ3B1Ymxpc2hlZCcsXFxuICAgICAgICAgICAgICB9XFxcIlxcbiAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJtci0xIHRleHQtYmFzZVxcXCI+XFxuICAgICAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICAgICAgOmljb249XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgZGF0dW1bJ3N0YXR1cyddID09PSAnZHJhZnQnID8gJ2RvY3VtZW50LXdyaXRlJyA6ICd0aWNrJ1xcbiAgICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJ0ZXh0LXNtIGxlYWRpbmctcmVsYXhlZFxcXCI+e3tcXG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2UuYWN0aXZpdGllc19sYW5nLnN0YXR1c19sYWJlbHNbZGF0dW1bJ3N0YXR1cyddXVxcbiAgICAgICAgICAgICAgfX08L3NwYW4+XFxuICAgICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICAgIDwvdGQ+XFxuXFxuICAgICAgICAgIDx0ZD5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGZsZXgtd3JhcCBnYXAtMlxcXCI+XFxuICAgICAgICAgICAgICA8VW5QdWJsaXNoXFxuICAgICAgICAgICAgICAgIHYtaWY9XFxcImRhdHVtLmxpbmtlZF90b19pYXRpXFxcIlxcbiAgICAgICAgICAgICAgICB0eXBlPVxcXCJvdXRsaW5lXFxcIlxcbiAgICAgICAgICAgICAgICA6YWN0aXZpdHktaWQ9XFxcImRhdHVtWydpZCddXFxcIlxcbiAgICAgICAgICAgICAgLz5cXG5cXG4gICAgICAgICAgICAgIDxQdWJsaXNoXFxuICAgICAgICAgICAgICAgIHYtaWY9XFxcImRhdHVtWydzdGF0dXMnXSAhPT0gJ3B1Ymxpc2hlZCdcXFwiXFxuICAgICAgICAgICAgICAgIDpsaW5rZWQtdG8taWF0aT1cXFwiZGF0dW0ubGlua2VkX3RvX2lhdGlcXFwiXFxuICAgICAgICAgICAgICAgIDpzdGF0dXM9XFxcImRhdHVtLnN0YXR1c1xcXCJcXG4gICAgICAgICAgICAgICAgOmNvcmUtY29tcGxldGVkPVxcXCJkYXR1bS5jb3JlQ29tcGxldGVkXFxcIlxcbiAgICAgICAgICAgICAgICB0eXBlPVxcXCJvdXRsaW5lXFxcIlxcbiAgICAgICAgICAgICAgICA6YWN0aXZpdHktaWQ9XFxcImRhdHVtWydpZCddXFxcIlxcbiAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPC90ZD5cXG5cXG4gICAgICAgICAgPHRoXFxuICAgICAgICAgICAgY2xhc3M9XFxcImNoZWNrLWNvbHVtblxcXCJcXG4gICAgICAgICAgICBAY2xpY2s9XFxcIihldmVudDogRXZlbnQpID0+IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXFxcIlxcbiAgICAgICAgICA+XFxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVxcXCJzci1vbmx5XFxcIiBmb3I9XFxcIlxcXCI+XFxuICAgICAgICAgICAgICB7eyBsYW5ndWFnZS5jb21tb25fbGFuZy5zZWxlY3QgfX0gXFxcInt7XFxuICAgICAgICAgICAgICAgIGRhdHVtWydkZWZhdWx0X3RpdGxlX25hcnJhdGl2ZSddXFxuICAgICAgICAgICAgICB9fVxcXCJcXG4gICAgICAgICAgICA8L2xhYmVsPlxcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cXFwiY2hlY2tib3hcXFwiPlxcbiAgICAgICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgICAgIHYtbW9kZWw9XFxcInN0b3JlLnN0YXRlLnNlbGVjdGVkQWN0aXZpdGllc1xcXCJcXG4gICAgICAgICAgICAgICAgOnZhbHVlPVxcXCJkYXR1bS5pZFxcXCJcXG4gICAgICAgICAgICAgICAgdHlwZT1cXFwiY2hlY2tib3hcXFwiXFxuICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcImNoZWNrbWFya1xcXCIgLz5cXG4gICAgICAgICAgICA8L2xhYmVsPlxcbiAgICAgICAgICA8L3RoPlxcbiAgICAgICAgPC90cj5cXG4gICAgICA8L3Rib2R5PlxcbiAgICAgIDx0Ym9keSB2LWVsc2U+XFxuICAgICAgICA8dGQgdi1pZj1cXFwibG9hZGVyXFxcIiBjb2xzcGFuPVxcXCI1XFxcIiBjbGFzcz1cXFwidGV4dC1jZW50ZXJcXFwiPlxcbiAgICAgICAgICA8ZGl2IGNvbHNwYW49XFxcIjVcXFwiIGNsYXNzPVxcXCJzcGluXFxcIj48L2Rpdj5cXG4gICAgICAgIDwvdGQ+XFxuICAgICAgICA8dGQgdi1lbHNlIGNvbHNwYW49XFxcIjVcXFwiIGNsYXNzPVxcXCJ0ZXh0LWNlbnRlclxcXCI+XFxuICAgICAgICAgIHt7IGxhbmd1YWdlLmNvbW1vbl9sYW5nLmFjdGl2aXRpZXNfbm90X2ZvdW5kIH19XFxuICAgICAgICA8L3RkPlxcbiAgICAgIDwvdGJvZHk+XFxuICAgIDwvdGFibGU+XFxuICA8L2Rpdj5cXG48L3RlbXBsYXRlPlxcblxcbjxzY3JpcHQgc2V0dXAgbGFuZz1cXFwidHNcXFwiPlxcbmltcG9ydCB7IGRlZmluZVByb3BzIH0gZnJvbSAndnVlJztcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XFxuaW1wb3J0IHsgdXNlVG9nZ2xlIH0gZnJvbSAnQHZ1ZXVzZS9jb3JlJztcXG5cXG4vLyBWdWV4IFN0b3JlXFxuaW1wb3J0IHsgdXNlU3RvcmUgfSBmcm9tICdTdG9yZS9hY3Rpdml0aWVzL2luZGV4JztcXG5cXG5pbXBvcnQgUHJldmlvdXNseVB1Ymxpc2hlZCBmcm9tICdDb21wb25lbnRzL3N0YXR1cy9QcmV2aW91c2x5UHVibGlzaGVkLnZ1ZSc7XFxuaW1wb3J0IFB1Ymxpc2ggZnJvbSAnQ29tcG9uZW50cy9idXR0b25zL1B1Ymxpc2hCdXR0b24udnVlJztcXG5pbXBvcnQgVW5QdWJsaXNoIGZyb20gJ0NvbXBvbmVudHMvYnV0dG9ucy9VblB1Ymxpc2hCdXR0b24udnVlJztcXG4vLyBpbXBvcnQgU2hpbW1lciBmcm9tIFxcXCJDb21wb25lbnRzL1NoaW1tZXJMb2FkaW5nLnZ1ZVxcXCI7XFxuY29uc3QgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcXG5jb25zdCBbc2VsZWN0QWxsVmFsdWUsIHNlbGVjdEFsbFRvZ2dsZV0gPSB1c2VUb2dnbGUoKTtcXG5cXG5kZWZpbmVQcm9wcyh7XFxuICBkYXRhOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcXG4gIGxvYWRlcjogeyB0eXBlOiBCb29sZWFuLCByZXF1aXJlZDogZmFsc2UgfSxcXG59KTtcXG5cXG5jb25zdCBzdG9yZSA9IHVzZVN0b3JlKCk7XFxuXFxuZnVuY3Rpb24gZm9ybWF0RGF0ZShkYXRlOiBEYXRlKSB7XFxuICByZXR1cm4gbW9tZW50KGRhdGUpLmZyb21Ob3coKTtcXG59XFxuXFxuZnVuY3Rpb24gdG9nZ2xlU2VsZWN0QWxsKFxcbiAgYWN0aXZpdGllczogeyBbeDogc3RyaW5nXTogeyBpZDogbnVtYmVyIH0gfSxcXG4gIHNlbGVjdEFsbFZhbHVlOiBib29sZWFuXFxuKSB7XFxuICBpZiAoIXNlbGVjdEFsbFZhbHVlKSB7XFxuICAgIGxldCBpZHMgPSBbXSBhcyBudW1iZXJbXTtcXG4gICAgZm9yIChjb25zdCBkYXR1bSBpbiBhY3Rpdml0aWVzKSB7XFxuICAgICAgaWRzLnB1c2goYWN0aXZpdGllc1tkYXR1bV0uaWQpO1xcbiAgICB9XFxuICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTZWxlY3RlZEFjdGl2aXRpZXMnLCBpZHMpO1xcbiAgfSBlbHNlIHtcXG4gICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVNlbGVjdGVkQWN0aXZpdGllcycsIFtdKTtcXG4gIH1cXG4gIHNlbGVjdEFsbFRvZ2dsZSgpO1xcbn1cXG5cXG4vL1NvcnRpbmcgYnkgdXBkYXRlX2F0XFxuY29uc3QgY3VycmVudFVSTCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xcbmxldCBxdWVyeSA9ICcnLFxcbiAgZGlyZWN0aW9uID0gJ2FzYyc7XFxuXFxuY29uc3Qgc29ydGluZ0RpcmVjdGlvbiA9ICgpID0+IHtcXG4gIHJldHVybiBkaXJlY3Rpb24gPT09ICdhc2MnID8gJ2Rlc2NlbmRpbmcnIDogJ2FzY2VuZGluZyc7XFxufTtcXG5cXG5jb25zdCBzb3J0QnlQdWJsaXNoaW5nUHJvZ3Jlc3MgPSAoKSA9PiB7XFxuICBpZiAoY3VycmVudFVSTC5pbmNsdWRlcygnPycpKSB7XFxuICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaCxcXG4gICAgICB1cmxQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHF1ZXJ5U3RyaW5nKTtcXG4gICAgcXVlcnkgPSB1cmxQYXJhbXMuZ2V0KCdxJykgPz8gJyc7XFxuICAgIGRpcmVjdGlvbiA9IHVybFBhcmFtcy5nZXQoJ2RpcmVjdGlvbicpID09PSAnZGVzYycgPyAnYXNjJyA6ICdkZXNjJztcXG4gIH1cXG5cXG4gIHJldHVybiBgP3E9JHtxdWVyeX0mb3JkZXJCeT1jb21wbGV0ZV9wZXJjZW50YWdlJmRpcmVjdGlvbj0ke2RpcmVjdGlvbn1gO1xcbn07XFxuXFxuY29uc3Qgc29ydEJ5RGF0ZVVybCA9ICgpID0+IHtcXG4gIGlmIChjdXJyZW50VVJMLmluY2x1ZGVzKCc/JykpIHtcXG4gICAgY29uc3QgcXVlcnlTdHJpbmcgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoLFxcbiAgICAgIHVybFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMocXVlcnlTdHJpbmcpO1xcbiAgICBxdWVyeSA9IHVybFBhcmFtcy5nZXQoJ3EnKSA/PyAnJztcXG4gICAgZGlyZWN0aW9uID0gdXJsUGFyYW1zLmdldCgnZGlyZWN0aW9uJykgPT09ICdkZXNjJyA/ICdhc2MnIDogJ2Rlc2MnO1xcbiAgfVxcblxcbiAgcmV0dXJuIGA/cT0ke3F1ZXJ5fSZvcmRlckJ5PXVwZGF0ZWRfYXQmZGlyZWN0aW9uPSR7ZGlyZWN0aW9ufWA7XFxufTtcXG48L3NjcmlwdD5cXG48c3R5bGUgc2NvcGVkPlxcbkBrZXlmcmFtZXMgc3Bpbm5lciB7XFxuICAwJSB7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTUwJSwgLTUwJSwgMCkgcm90YXRlKDBkZWcpO1xcbiAgfVxcbiAgMTAwJSB7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTUwJSwgLTUwJSwgMCkgcm90YXRlKDM2MGRlZyk7XFxuICB9XFxufVxcblxcbi5zcGluOjpiZWZvcmUge1xcbiAgYW5pbWF0aW9uOiAxLjVzIGxpbmVhciBpbmZpbml0ZSBzcGlubmVyO1xcbiAgYW5pbWF0aW9uLXBsYXktc3RhdGU6IGluaGVyaXQ7XFxuICBib3JkZXI6IHNvbGlkIDNweCAjY2ZkMGQxO1xcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogZ3JleTtcXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gIGNvbnRlbnQ6ICcnO1xcbiAgaGVpZ2h0OiAyMHB4O1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiA1MCU7XFxuICBsZWZ0OiA1MCU7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01MCUsIC01MCUsIDApO1xcbiAgd2lkdGg6IDIwcHg7XFxuICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xcbn1cXG4uc3BpbiB7XFxuICBoZWlnaHQ6IDQwcHg7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB3aWR0aDogMTAwJTtcXG4gIG1hcmdpbjogYXV0bztcXG59XFxuPC9zdHlsZT5cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCJcXG4uY3JpdGljYWwtY29udGFpbmVyW2RhdGEtdi05YTYwODQzMl0ge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y2ZjBmZjtcXG4gIHotaW5kZXg6IDE7XFxufVxcbi5jcml0aWNhbC1jb250YWluZXJbZGF0YS12LTlhNjA4NDMyXTo6YWZ0ZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgY29udGVudDogJyAnO1xcbiAgei1pbmRleDogMTA7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYTY2ZWU5O1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDJweDtcXG4gIGxlZnQ6IDA7XFxuICB0b3A6IDA7XFxufVxcbi5lcnJvci1kcm9wZG93bi1jb250YWluZXJbZGF0YS12LTlhNjA4NDMyXSwgXFxuLndhcm5pbmctZHJvcGRvd24tY29udGFpbmVyW2RhdGEtdi05YTYwODQzMl0sIFxcbi5jcml0aWNhbC1kcm9wZG93bi1jb250YWluZXJbZGF0YS12LTlhNjA4NDMyXSB7XFxuICBoZWlnaHQ6IDBweDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB0cmFuc2l0aW9uLXByb3BlcnR5OiBhbGw7XFxuICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDUwMG1zO1xcbn1cXG4ud2FybmluZy1jb250YWluZXJbZGF0YS12LTlhNjA4NDMyXSB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB6LWluZGV4OiAxO1xcbn1cXG4uZXJyb3ItY29udGFpbmVyW2RhdGEtdi05YTYwODQzMl06OmFmdGVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGNvbnRlbnQ6ICcgJztcXG4gIHotaW5kZXg6IDEwO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1jcmltc29uLTQwKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDJweDtcXG4gIGxlZnQ6IDA7XFxuICB0b3A6IDA7XFxufVxcbi5lcnJvci1jb250YWluZXJbZGF0YS12LTlhNjA4NDMyXSB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB6LWluZGV4OiAxO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1yb3NlKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbn1cXG4ud2FybmluZy1jb250YWluZXJbZGF0YS12LTlhNjA4NDMyXTo6YWZ0ZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgY29udGVudDogJyAnO1xcbiAgei1pbmRleDogMTA7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWNhbWVsLTQwKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDJweDtcXG4gIGxlZnQ6IDA7XFxuICB0b3A6IDA7XFxufVxcbi5lcnJvci1oZWxwW2RhdGEtdi05YTYwODQzMl0ge1xcbiAgZm9udC1zaXplOiAxMnB4O1xcbiAgcGFkZGluZy1sZWZ0OiAzMHB4O1xcbiAgZm9udC1zdHlsZTogaXRhbGljO1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gIG1hcmdpbi1ib3R0b206IDE4cHg7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiBub25lO1xcbn1cXG4uZXJyb3ItZHJvcGRvd24tY29udGFpbmVyIHBbZGF0YS12LTlhNjA4NDMyXSB7XFxuICBjb2xvcjogYmxhY2s7XFxufVxcblwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uLy4uLy4uLy4uLy4uL0xpc3RFbGVtZW50LnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiO0FBcVlBO0VBQ0Usa0JBQWtCO0VBQ2xCLHlCQUF5QjtFQUN6QixVQUFVO0FBQ1o7QUFFQTtFQUNFLGtCQUFrQjtFQUNsQixZQUFZO0VBQ1osV0FBVztFQUNYLHlCQUF5QjtFQUN6QixZQUFZO0VBQ1osVUFBVTtFQUNWLE9BQU87RUFDUCxNQUFNO0FBQ1I7QUFLRTs7O0VBQUEsV0FBc0Q7RUFBdEQsZ0JBQXNEO0VBQXRELHdCQUFzRDtFQUF0RCx3REFBc0Q7RUFBdEQsMEJBQUE7QUFBc0Q7QUFHeEQ7RUFDRSxrQkFBa0I7RUFDbEIsVUFBVTtBQUNaO0FBRUE7RUFDRSxrQkFBa0I7RUFDbEIsWUFBWTtFQUNaLFdBQVc7RUFDWCxrQkFBb0I7RUFBcEIsK0RBQW9CO0VBQ3BCLFlBQVk7RUFDWixVQUFVO0VBQ1YsT0FBTztFQUNQLE1BQU07QUFDUjtBQUVBO0VBQ0Usa0JBQWtCO0VBQ2xCLFVBQVU7RUFFVixrQkFBYztFQUFkLHlEQUFjO0FBQ2hCO0FBRUE7RUFDRSxrQkFBa0I7RUFDbEIsWUFBWTtFQUNaLFdBQVc7RUFDWCxrQkFBa0I7RUFBbEIsNkRBQWtCO0VBQ2xCLFlBQVk7RUFDWixVQUFVO0VBQ1YsT0FBTztFQUNQLE1BQU07QUFDUjtBQUVBO0VBQ0UsZUFBZTtFQUNmLGtCQUFrQjtFQUNsQixrQkFBa0I7RUFDbEIsZ0JBQWdCO0VBQ2hCLG1CQUFtQjtFQUNuQixzQkFBc0I7QUFDeEI7QUFDQTtFQUNFLFlBQVk7QUFDZFwiLFwic291cmNlc0NvbnRlbnRcIjpbXCI8dGVtcGxhdGU+XFxuICA8dGQgY2xhc3M9XFxcInRpdGxlXFxcIj5cXG4gICAgPHNwYW4gY2xhc3M9XFxcImZsZXhcXFwiPlxcbiAgICAgIDxzcGFuXFxuICAgICAgICBjbGFzcz1cXFwiZWxsaXBzaXMgIWlubGluZS1ibG9jayB3LVs0MDBweF0gb3ZlcmZsb3cteC1oaWRkZW4gdGV4dC1lbGxpcHNpcyB3aGl0ZXNwYWNlLW5vd3JhcCBmb250LW5vcm1hbFxcXCJcXG4gICAgICAgID57e1xcbiAgICAgICAgICBhY3Rpdml0eVsnZGF0YSddWyd0aXRsZSddWzBdWyduYXJyYXRpdmUnXVxcbiAgICAgICAgICAgID8gYWN0aXZpdHlbJ2RhdGEnXVsndGl0bGUnXVswXVsnbmFycmF0aXZlJ11cXG4gICAgICAgICAgICA6IGxhbmd1YWdlLmNvbW1vbl9sYW5nLm1pc3NpbmcuZGVmYXVsdFxcbiAgICAgICAgfX08L3NwYW5cXG4gICAgICA+XFxuXFxuICAgICAgPHNwYW5cXG4gICAgICAgIHYtaWY9XFxcIk9iamVjdC5rZXlzKGFjdGl2aXR5WydlcnJvcnMnXSkubGVuZ3RoID4gMFxcXCJcXG4gICAgICAgIGNsYXNzPVxcXCJtYi00IG1sLTQgaW5saW5lLWZsZXggY3Vyc29yLXBvaW50ZXIgaXRlbXMtY2VudGVyIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1jcmltc29uLTUwXFxcIlxcbiAgICAgICAgQGNsaWNrPVxcXCJ0b2dnbGVFcnJvclxcXCJcXG4gICAgICA+XFxuICAgICAgICA8c3BhbiBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0yXFxcIj5cXG4gICAgICAgICAgPHN2Zy12dWUgY2xhc3M9XFxcInRleHQtY3JpbXNvbi00MFxcXCIgaWNvbj1cXFwiYWxlcnRcXFwiIC8+XFxuICAgICAgICAgIDxzcGFuPlxcbiAgICAgICAgICAgIHt7IGxhbmd1YWdlLmNvbW1vbl9sYW5nLnNob3cgfX0ge3sgY291bnRFcnJvcnMoKSB9fVxcbiAgICAgICAgICAgIHt7IGxhbmd1YWdlLmJ1dHRvbl9sYW5nLmlzc3VlcyB9fTwvc3BhblxcbiAgICAgICAgICA+XFxuICAgICAgICA8L3NwYW4+XFxuXFxuICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICBpY29uPVxcXCJkcm9wZG93bi1hcnJvd1xcXCJcXG4gICAgICAgICAgY2xhc3M9XFxcIm1sLTEgdGV4dC1bNHB4XSBkdXJhdGlvbi0yMDBcXFwiXFxuICAgICAgICAgIDpjbGFzcz1cXFwieyAncm90YXRlLTE4MCc6IGFjdGl2ZSwgJyc6ICFhY3RpdmUgfVxcXCJcXG4gICAgICAgIC8+IDwvc3BhblxcbiAgICA+PC9zcGFuPlxcblxcbiAgICA8ZGl2XFxuICAgICAgOnN0eWxlPVxcXCJgd2lkdGg6ICR7d2lkdGggLSA0MH1weDtgXFxcIlxcbiAgICAgIGNsYXNzPVxcXCJ1cGxvYWQtZXJyb3ItY29udGVudCBoLVthdXRvXSAhbWF4LWgtW2F1dG9dIGR1cmF0aW9uLTIwMFxcXCJcXG4gICAgICA6Y2xhc3M9XFxcInsgY2xvc2VkOiAhYWN0aXZlIH1cXFwiXFxuICAgID5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJweS00XFxcIj5cXG4gICAgICAgIDxkaXZcXG4gICAgICAgICAgdi1pZj1cXFwiT2JqZWN0LmtleXMoYWN0aXZpdHlbJ2Vycm9ycyddKS5pbmRleE9mKCdjcml0aWNhbCcpICE9PSAtMVxcXCJcXG4gICAgICAgICAgY2xhc3M9XFxcImNyaXRpY2FsLWNvbnRhaW5lciBtdC0yIGN1cnNvci1wb2ludGVyXFxcIlxcbiAgICAgICAgICA6c3R5bGU9XFxcImB3aWR0aDogJHt3aWR0aCAtIDQwfXB4O2BcXFwiXFxuICAgICAgICAgIEBjbGljaz1cXFwiY3JpdGljYWxBY2NvcmRpb25Ub2dnbGVcXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIDxkaXZcXG4gICAgICAgICAgICBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGJvcmRlciBib3JkZXItbm9uZSBwLTMgcGItMC41XFxcIlxcbiAgICAgICAgICA+XFxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMlxcXCI+XFxuICAgICAgICAgICAgICA8c3ZnLXZ1ZSBjbGFzcz1cXFwidGV4dC1jcmltc29uLTQwXFxcIiBpY29uPVxcXCJhbGVydFxcXCIgLz5cXG4gICAgICAgICAgICAgIDxzcGFuPlxcbiAgICAgICAgICAgICAgICB7eyBlcnJvckxlbmd0aCgnY3JpdGljYWwnKSB9fVxcbiAgICAgICAgICAgICAgICB7eyBsYW5ndWFnZS5jb21tb25fbGFuZy5zdGlja3kuY29tbW9uLmNyaXRpY2FsIH19XFxuICAgICAgICAgICAgICAgIHt7IGxhbmd1YWdlLmNvbW1vbl9sYW5nLnN0aWNreS5jb21tb24uZXJyb3JzIH19PC9zcGFuXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgPC9zcGFuPlxcblxcbiAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICBpY29uPVxcXCJkcm9wZG93bi1hcnJvd1xcXCJcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJtbC0xIGN1cnNvci1wb2ludGVyIHRleHQtWzRweF0gZHVyYXRpb24tMjAwXFxcIlxcbiAgICAgICAgICAgICAgOmNsYXNzPVxcXCJ7ICdyb3RhdGUtMTgwJzogc2hvd0NyaXRpY2FsLCAnJzogIXNob3dDcml0aWNhbCB9XFxcIlxcbiAgICAgICAgICAgIC8+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJlcnJvci1oZWxwXFxcIj5cXG4gICAgICAgICAgICAoe3sgbGFuZ3VhZ2UuY29tbW9uX2xhbmcuYWN0aXZpdHlfY29udGFpbnNfY3JpdGljYWxfZXJyb3JzIH19KVxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiY3JpdGljYWwtZHJvcGRvd24tY29udGFpbmVyXFxcIj5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjcml0aWNhbC1kcm9wZG93blxcXCI+XFxuICAgICAgICAgICAgICA8ZGl2XFxuICAgICAgICAgICAgICAgIHYtZm9yPVxcXCIoZWxlX2VyciwgaSkgaW4gYWN0aXZpdHlbJ2Vycm9ycyddWydjcml0aWNhbCddXFxcIlxcbiAgICAgICAgICAgICAgICA6a2V5PVxcXCJpXFxcIlxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwicC00XFxcIlxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cXFwibWItMiBmb250LXNlbWlib2xkIGNhcGl0YWxpemVcXFwiPlxcbiAgICAgICAgICAgICAgICAgIHt7IGkgfX1cXG4gICAgICAgICAgICAgICAgPC9wPlxcblxcbiAgICAgICAgICAgICAgICA8cFxcbiAgICAgICAgICAgICAgICAgIHYtZm9yPVxcXCJpdGVtIGluIE9iamVjdC5rZXlzKGVsZV9lcnIpXFxcIlxcbiAgICAgICAgICAgICAgICAgIDprZXk9XFxcIihpdGVtIGFzIHN0cmluZylcXFwiXFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcImVycm9yLWxpc3QgbWItMiB0ZXh0LXNtIGZvbnQtbWVkaXVtXFxcIlxcbiAgICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgICAge3sgaXRlbS50b1N0cmluZygpLnJlcGxhY2UoL18vZywgJyAnKS5yZXBsYWNlKC9cXFxcLi9nLCAnID4gJykgfX1cXG4gICAgICAgICAgICAgICAgICA8YnIgLz5cXG4gICAgICAgICAgICAgICAgICB7eyBlbGVfZXJyW2l0ZW1dIH19XFxuICAgICAgICAgICAgICAgIDwvcD5cXG4gICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDwvZGl2PlxcblxcbiAgICAgICAgPGRpdlxcbiAgICAgICAgICB2LWlmPVxcXCJPYmplY3Qua2V5cyhhY3Rpdml0eVsnZXJyb3JzJ10pLmluZGV4T2YoJ2Vycm9yJykgIT09IC0xXFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwiZXJyb3ItY29udGFpbmVyIG10LTIgY3Vyc29yLXBvaW50ZXJcXFwiXFxuICAgICAgICAgIDpzdHlsZT1cXFwiYHdpZHRoOiAke3dpZHRoIC0gNDB9cHg7YFxcXCJcXG4gICAgICAgICAgQGNsaWNrPVxcXCJlcnJvckFjY29yZGlvblRvZ2dsZVxcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAgPGRpdlxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gYm9yZGVyIGJvcmRlci1ub25lIGJnLXJvc2UgcC0zIHBiLTAuNVxcXCJcXG4gICAgICAgICAgPlxcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTJcXFwiPlxcbiAgICAgICAgICAgICAgPHN2Zy12dWUgY2xhc3M9XFxcInRleHQtY3JpbXNvbi00MFxcXCIgaWNvbj1cXFwiYWxlcnRcXFwiIC8+XFxuICAgICAgICAgICAgICA8c3BhblxcbiAgICAgICAgICAgICAgICA+e3sgZXJyb3JMZW5ndGgoJ2Vycm9yJykgfX1cXG4gICAgICAgICAgICAgICAge3sgbGFuZ3VhZ2UuY29tbW9uX2xhbmcuc3RpY2t5LmNvbW1vbi5lcnJvcnMgfX08L3NwYW5cXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgIGljb249XFxcImRyb3Bkb3duLWFycm93XFxcIlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcIm1sLTEgY3Vyc29yLXBvaW50ZXIgdGV4dC1bNHB4XSBkdXJhdGlvbi0yMDBcXFwiXFxuICAgICAgICAgICAgICA6Y2xhc3M9XFxcInsgJ3JvdGF0ZS0xODAnOiBzaG93RXJyb3IsICcnOiAhc2hvd0Vycm9yIH1cXFwiXFxuICAgICAgICAgICAgLz5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImVycm9yLWhlbHBcXFwiPlxcbiAgICAgICAgICAgICh7eyBsYW5ndWFnZS5jb21tb25fbGFuZy5hY3Rpdml0aWVzX3dpdGhfZXJyb3Jfd2lsbF9iZV91cGxvYWRlZCB9fSlcXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImVycm9yLWRyb3Bkb3duLWNvbnRhaW5lclxcXCI+XFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZXJyb3ItZHJvcGRvd25cXFwiPlxcbiAgICAgICAgICAgICAgPGRpdlxcbiAgICAgICAgICAgICAgICB2LWZvcj1cXFwiKGVsZV9lcnIsIGkpIGluIGFjdGl2aXR5WydlcnJvcnMnXVsnZXJyb3InXVxcXCJcXG4gICAgICAgICAgICAgICAgOmtleT1cXFwiaVxcXCJcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcInRleHQtcHJpbWFyeS1ibGFjayBiZy1yb3NlIHAtNFxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XFxcIm1iLTIgZm9udC1zZW1pYm9sZCBjYXBpdGFsaXplXFxcIj5cXG4gICAgICAgICAgICAgICAgICB7eyBpIH19XFxuICAgICAgICAgICAgICAgIDwvcD5cXG5cXG4gICAgICAgICAgICAgICAgPHBcXG4gICAgICAgICAgICAgICAgICB2LWZvcj1cXFwiaXRlbSBpbiBPYmplY3Qua2V5cyhlbGVfZXJyKVxcXCJcXG4gICAgICAgICAgICAgICAgICA6a2V5PVxcXCIoaXRlbSBhcyBzdHJpbmcpXFxcIlxcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJlcnJvci1saXN0IG1iLTIgdGV4dC1zbSBmb250LW1lZGl1bVxcXCJcXG4gICAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICAgIHt7IGl0ZW0udG9TdHJpbmcoKS5yZXBsYWNlKC9fL2csICcgJykucmVwbGFjZSgvXFxcXC4vZywgJyA+ICcpIH19XFxuICAgICAgICAgICAgICAgICAgPGJyIC8+XFxuICAgICAgICAgICAgICAgICAge3sgZWxlX2VycltpdGVtXSB9fVxcbiAgICAgICAgICAgICAgICA8L3A+XFxuICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDxkaXZcXG4gICAgICAgICAgdi1pZj1cXFwiT2JqZWN0LmtleXMoYWN0aXZpdHlbJ2Vycm9ycyddKS5pbmRleE9mKCd3YXJuaW5nJykgIT09IC0xXFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwid2FybmluZy1jb250YWluZXIgbXktMiBjdXJzb3ItcG9pbnRlciBib3JkZXItbm9uZSBiZy1lZ2dzaGVsbFxcXCJcXG4gICAgICAgICAgOnN0eWxlPVxcXCJgd2lkdGg6ICR7d2lkdGggLSA0MH1weDtgXFxcIlxcbiAgICAgICAgICBAY2xpY2s9XFxcIndhcm5pbmdBY2NvcmRpb25Ub2dnbGVcXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBiZy1lZ2dzaGVsbCBwLTMgcGItMC41XFxcIj5cXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0yXFxcIj5cXG4gICAgICAgICAgICAgIDxzdmctdnVlIGljb249XFxcImFsZXJ0XFxcIiBjbGFzcz1cXFwidGV4dC1jYW1lbC00MFxcXCIgLz48c3Bhbj5cXG4gICAgICAgICAgICAgICAge3sgZXJyb3JMZW5ndGgoJ3dhcm5pbmcnKSB9fVxcbiAgICAgICAgICAgICAgICB7eyBsYW5ndWFnZS5jb21tb25fbGFuZy5zdGlja3kuY29tbW9uLndhcm5pbmdzIH19PC9zcGFuXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICBpY29uPVxcXCJkcm9wZG93bi1hcnJvd1xcXCJcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJtbC0xIGN1cnNvci1wb2ludGVyIHRleHQtWzRweF0gZHVyYXRpb24tMjAwXFxcIlxcbiAgICAgICAgICAgICAgOmNsYXNzPVxcXCJ7ICdyb3RhdGUtMTgwJzogc2hvd1dhcm5pbmcsICcnOiAhc2hvd1dhcm5pbmcgfVxcXCJcXG4gICAgICAgICAgICAvPlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZXJyb3ItaGVscCBiZy1lZ2dzaGVsbFxcXCI+XFxuICAgICAgICAgICAgKHt7IGxhbmd1YWdlLmNvbW1vbl9sYW5nLmZpZWxkX3dpdGhfd2FybmluZ193aWxsX2JlX3VwbG9hZGVkIH19KVxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwid2FybmluZy1kcm9wZG93bi1jb250YWluZXJcXFwiPlxcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcIndhcm5pbmctZHJvcGRvd25cXFwiPlxcbiAgICAgICAgICAgICAgPGRpdlxcbiAgICAgICAgICAgICAgICB2LWZvcj1cXFwiKGVsZV9lcnIsIGkpIGluIGFjdGl2aXR5WydlcnJvcnMnXVsnd2FybmluZyddXFxcIlxcbiAgICAgICAgICAgICAgICA6a2V5PVxcXCJpXFxcIlxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwiYmctZWdnc2hlbGwgcC00XFxcIlxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cXFwibWItMiBmb250LXNlbWlib2xkIGNhcGl0YWxpemVcXFwiPlxcbiAgICAgICAgICAgICAgICAgIHt7IGkgfX1cXG4gICAgICAgICAgICAgICAgPC9wPlxcblxcbiAgICAgICAgICAgICAgICA8cFxcbiAgICAgICAgICAgICAgICAgIHYtZm9yPVxcXCJpdGVtIGluIE9iamVjdC5rZXlzKGVsZV9lcnIpXFxcIlxcbiAgICAgICAgICAgICAgICAgIDprZXk9XFxcIihpdGVtIGFzIHN0cmluZylcXFwiXFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcImVycm9yLWxpc3QgbWItMiB0ZXh0LXNtIGZvbnQtbWVkaXVtXFxcIlxcbiAgICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgICAge3sgaXRlbS50b1N0cmluZygpLnJlcGxhY2UoL18vZywgJyAnKS5yZXBsYWNlKC9cXFxcLi9nLCAnID4gJykgfX1cXG4gICAgICAgICAgICAgICAgICA8YnIgLz5cXG4gICAgICAgICAgICAgICAgICB7eyBlbGVfZXJyW2l0ZW1dIH19XFxuICAgICAgICAgICAgICAgIDwvcD5cXG4gICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgIDwvZGl2PlxcbiAgICAgIDwhLS0gPGRpdiB2LWZvcj1cXFwiKGVsZV9lcnIsIGkpIGluIGFjdGl2aXR5WydlcnJvcnMnXVxcXCIgOmtleT1cXFwiaVxcXCI+XFxuICAgICAgICA8dWw+XFxuICAgICAgICAgIDxsaSB2LWZvcj1cXFwiKGVyciwga2V5LCBqKSBpbiBlbGVfZXJyXFxcIiA6a2V5PVxcXCJqXFxcIj5cXG4gICAgICAgICAgICA8cCBjbGFzcz1cXFwibWItMiBmb250LXNlbWlib2xkIGNhcGl0YWxpemVcXFwiPlxcbiAgICAgICAgICAgICAge3sga2V5LnRvU3RyaW5nKCkucmVwbGFjZSgvXy9nLCAnICcpLnJlcGxhY2UoL1xcXFwuL2csICcgPiAnKSB9fVxcbiAgICAgICAgICAgIDwvcD5cXG4gICAgICAgICAgICA8cFxcbiAgICAgICAgICAgICAgdi1mb3I9XFxcIml0ZW0gaW4gT2JqZWN0LnZhbHVlcyhlcnIpXFxcIlxcbiAgICAgICAgICAgICAgOmtleT1cXFwiKGl0ZW0gYXMgc3RyaW5nKVxcXCJcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJlcnJvci1saXN0IG1iLTJcXFwiXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAge3sgaXRlbSB9fVxcbiAgICAgICAgICAgIDwvcD5cXG4gICAgICAgICAgPC9saT5cXG4gICAgICAgIDwvdWw+XFxuICAgICAgPC9kaXY+IC0tPlxcbiAgICA8L2Rpdj5cXG4gIDwvdGQ+XFxuXFxuICA8dGQ+XFxuICAgIDxzcGFuIGNsYXNzPVxcXCJ0ZXh0LXNtIGxlYWRpbmctcmVsYXhlZFxcXCI+e3tcXG4gICAgICAhYWN0aXZpdHlbJ2V4aXN0ZW5jZSddXFxuICAgICAgICA/IGxhbmd1YWdlLmNvbW1vbl9sYW5nLm5ld1xcbiAgICAgICAgOiBsYW5ndWFnZS5jb21tb25fbGFuZy5leGlzdGluZ1xcbiAgICB9fTwvc3Bhbj5cXG4gIDwvdGQ+XFxuXFxuICA8dGQgY2xhc3M9XFxcImNoZWNrLWNvbHVtblxcXCIgQGNsaWNrPVxcXCIoZXZlbnQ6IEV2ZW50KSA9PiBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxcXCI+XFxuICAgIDxsYWJlbCBjbGFzcz1cXFwic3Itb25seVxcXCIgZm9yPVxcXCJcXFwiPiB7eyBsYW5ndWFnZS5jb21tb25fbGFuZy5zZWxlY3QgfX0gPC9sYWJlbD5cXG4gICAgPGxhYmVsXFxuICAgICAgdi1pZj1cXFwiT2JqZWN0LmtleXMoYWN0aXZpdHlbJ2Vycm9ycyddKS5pbmRleE9mKCdjcml0aWNhbCcpID09PSAtMVxcXCJcXG4gICAgICBjbGFzcz1cXFwiY2hlY2tib3hcXFwiXFxuICAgID5cXG4gICAgICA8aW5wdXRcXG4gICAgICAgIHYtbW9kZWw9XFxcImFjdGl2aXRpZXNcXFwiXFxuICAgICAgICB0eXBlPVxcXCJjaGVja2JveFxcXCJcXG4gICAgICAgIDp2YWx1ZT1cXFwiaW5kZXhcXFwiXFxuICAgICAgICBAY2xpY2s9XFxcInNlbGVjdEVsZW1lbnQoaW5kZXgpXFxcIlxcbiAgICAgIC8+XFxuICAgICAgPHNwYW4gY2xhc3M9XFxcImNoZWNrbWFya1xcXCIgLz5cXG4gICAgPC9sYWJlbD5cXG4gICAgPGxhYmVsIHYtZWxzZSBjbGFzcz1cXFwiY2hlY2tib3hcXFwiPlxcbiAgICAgIDxzcGFuIGNsYXNzPVxcXCJjaGVja21hcmtcXFwiIC8+XFxuICAgIDwvbGFiZWw+XFxuICA8L3RkPlxcbjwvdGVtcGxhdGU+XFxuXFxuPHNjcmlwdCBzZXR1cCBsYW5nPVxcXCJ0c1xcXCI+XFxuaW1wb3J0IHsgZGVmaW5lUHJvcHMsIGRlZmluZUVtaXRzLCByZWYsIHdhdGNoLCByZWFjdGl2ZSB9IGZyb20gJ3Z1ZSc7XFxuXFxuY29uc3QgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcXG5jb25zdCBwcm9wcyA9IGRlZmluZVByb3BzKHtcXG4gIGFjdGl2aXR5OiB7XFxuICAgIHR5cGU6IE9iamVjdCxcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbiAgaW5kZXg6IHtcXG4gICAgdHlwZTogU3RyaW5nLFxcbiAgICByZXF1aXJlZDogdHJ1ZSxcXG4gIH0sXFxuICB3aWR0aDogeyB0eXBlOiBOdW1iZXIsIHJlcXVpcmVkOiBmYWxzZSwgZGVmYXVsdDogMCB9LFxcbiAgc2VsZWN0ZWRBY3Rpdml0aWVzOiB7XFxuICAgIHR5cGU6IFN0cmluZyxcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbn0pO1xcblxcbmNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbJ3NlbGVjdEVsZW1lbnQnXSk7XFxuXFxuY29uc3QgYWN0aXZlID0gcmVmKGZhbHNlKTtcXG5jb25zdCBzaG93Q3JpdGljYWwgPSByZWYoZmFsc2UpO1xcbmNvbnN0IHNob3dFcnJvciA9IHJlZihmYWxzZSk7XFxuY29uc3Qgc2hvd1dhcm5pbmcgPSByZWYoZmFsc2UpO1xcbmxldCBhY3Rpdml0aWVzID0gcmVhY3RpdmUoW10pO1xcbmNvbnN0IGNyaXRpY2FsVG9nZ2xlID0gcmVmKGZhbHNlKTtcXG5jb25zdCBlcnJvclRvZ2dsZSA9IHJlZihmYWxzZSk7XFxuY29uc3Qgd2FybmluZ1RvZ2dsZSA9IHJlZihmYWxzZSk7XFxuXFxuZnVuY3Rpb24gdG9nZ2xlRXJyb3IoKSB7XFxuICBhY3RpdmUudmFsdWUgPSAhYWN0aXZlLnZhbHVlO1xcbn1cXG5cXG5jb25zdCBzZWxlY3RFbGVtZW50ID0gKGluZGV4KSA9PiB7XFxuICBlbWl0KCdzZWxlY3RFbGVtZW50JywgaW5kZXgpO1xcbn07XFxuXFxuY29uc3QgY291bnRFcnJvcnMgPSAoKSA9PiB7XFxuICBsZXQgY291bnQgPSAwO1xcblxcbiAgZm9yIChjb25zdCB0eXBlIGluIHByb3BzLmFjdGl2aXR5WydlcnJvcnMnXSkge1xcbiAgICBmb3IgKGNvbnN0IGluZGV4IGluIHByb3BzLmFjdGl2aXR5WydlcnJvcnMnXVt0eXBlXSkge1xcbiAgICAgIGNvdW50ICs9IE9iamVjdC5rZXlzKHByb3BzLmFjdGl2aXR5WydlcnJvcnMnXVt0eXBlXVtpbmRleF0pLmxlbmd0aDtcXG4gICAgfVxcbiAgfVxcblxcbiAgcmV0dXJuIGNvdW50O1xcbn07XFxuXFxuY29uc3QgY3JpdGljYWxBY2NvcmRpb25Ub2dnbGUgPSAoZTogRXZlbnQpID0+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+XFxuLnhscy1lcnJvciB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoI2ZmZjFmMCA2MHB4LCAjZmZmZmZmIDAlKTtcXG59XFxuPC9zdHlsZT5cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCJcXG4ubXVsdGlzZWxlY3Qtd3JhcHBlciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB6LWluZGV4OiA1O1xcbiAgd2lkdGg6IDQyNHB4O1xcbiAgaGVpZ2h0OiAtd2Via2l0LWZpdC1jb250ZW50O1xcbiAgaGVpZ2h0OiAtbW96LWZpdC1jb250ZW50O1xcbiAgaGVpZ2h0OiBmaXQtY29udGVudDtcXG4gIGJhY2tncm91bmQ6IHdoaXRlO1xcbiAgb3ZlcmZsb3cteTogYXV0bztcXG59XFxuLm11bHRpc2VsZWN0LWxvb2thbGlrZSB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xcbiAgYm9yZGVyOiAxcHggc29saWQgI2QxZDVkYjtcXG4gIGJvcmRlci1yYWRpdXM6IDRweDtcXG4gIHdpZHRoOiAxNjBweCAhaW1wb3J0YW50O1xcbiAgaGVpZ2h0OiA0MHB4O1xcbiAgcGFkZGluZzogMTJweDtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG59XFxuXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vLi4vLi4vLi4vLi4vVGFibGVMaXN0LnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiO0FBNGxDQTtFQUNFLGtCQUFrQjtFQUNsQixVQUFVO0VBQ1YsWUFBWTtFQUNaLDJCQUFtQjtFQUFuQix3QkFBbUI7RUFBbkIsbUJBQW1CO0VBQ25CLGlCQUFpQjtFQUNqQixnQkFBZ0I7QUFDbEI7QUFDQTtFQUNFLGtCQUFrQjtFQUNsQixtQkFBbUI7RUFDbkIsaUNBQWlDO0VBQ2pDLHlCQUF5QjtFQUN6QixrQkFBa0I7RUFDbEIsdUJBQXVCO0VBQ3ZCLFlBQVk7RUFDWixhQUFhO0VBQ2IsZUFBZTtBQUNqQlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCI8dGVtcGxhdGU+XFxuICA8ZGl2IGNsYXNzPVxcXCJmaWx0ZXJzIG1iLTQgZmxleCBmbGV4LXdyYXAganVzdGlmeS1iZXR3ZWVuIGdhcC0yXFxcIj5cXG4gICAgPCEtLUZpbHRlciBvcHRpb25zIHN0YXJ0LS0+XFxuICAgIDxkaXYgY2xhc3M9XFxcInNlbGVjdCBmaWx0ZXJzIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTJcXFwiPlxcbiAgICAgIDxzdmctdnVlIGNsYXNzPVxcXCJ3LTEwIHRleHQtbGdcXFwiIGljb249XFxcImZ1bm5lbFxcXCIgLz5cXG4gICAgICA8c3BhbiBjbGFzcz1cXFwibXVsdGlzZWxlY3QtbGFiZWwtd3JhcHBlclxcXCIgOnN0eWxlPVxcXCJnZW5lcmF0ZUxhYmVsKCdjb3VudHJ5JylcXFwiPlxcbiAgICAgICAgPE11bHRpc2VsZWN0XFxuICAgICAgICAgIGlkPVxcXCJjb3VudHJ5LWZpbHRlclxcXCJcXG4gICAgICAgICAgdi1tb2RlbD1cXFwiZmlsdGVyLmNvdW50cnlcXFwiXFxuICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJDT1VOVFJZXFxcIlxcbiAgICAgICAgICBtb2RlPVxcXCJtdWx0aXBsZVxcXCJcXG4gICAgICAgICAgOnNlYXJjaGFibGU9XFxcInRydWVcXFwiXFxuICAgICAgICAgIDpvcHRpb25zPVxcXCJjb3VudHJpZXNXaXRoUHJlZml4XFxcIlxcbiAgICAgICAgICA6dGFnZ2FibGU9XFxcInRydWVcXFwiXFxuICAgICAgICAgIDpjbG9zZS1vbi1zZWxlY3Q9XFxcImZhbHNlXFxcIlxcbiAgICAgICAgICA6Y2xlYXItb24tc2VsZWN0PVxcXCJmYWxzZVxcXCJcXG4gICAgICAgICAgOmhpZGUtc2VsZWN0ZWQ9XFxcImZhbHNlXFxcIlxcbiAgICAgICAgICA6Y2FuLWNsZWFyPVxcXCJmYWxzZVxcXCJcXG4gICAgICAgICAgbGFiZWw9XFxcImNvdW50cnlcXFwiXFxuICAgICAgICAvPlxcbiAgICAgIDwvc3Bhbj5cXG4gICAgICA8c3BhblxcbiAgICAgICAgY2xhc3M9XFxcIm11bHRpc2VsZWN0LWxhYmVsLXdyYXBwZXJcXFwiXFxuICAgICAgICA6c3R5bGU9XFxcImdlbmVyYXRlTGFiZWwoJ3NldHVwIGNvbXBsZXRlbmVzcycpXFxcIlxcbiAgICAgID5cXG4gICAgICAgIDxNdWx0aXNlbGVjdFxcbiAgICAgICAgICBpZD1cXFwic2V0dXAtY29tcGxldGVuZXNzXFxcIlxcbiAgICAgICAgICB2LW1vZGVsPVxcXCJmaWx0ZXIuY29tcGxldGVuZXNzXFxcIlxcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cXFwiU0VUVVAgQ09NUExFVEVORVNTXFxcIlxcbiAgICAgICAgICA6b3B0aW9ucz1cXFwic2V0dXBDb21wbGV0ZW5lc3NcXFwiXFxuICAgICAgICAgIDp0YWdnYWJsZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgOmNsb3NlLW9uLXNlbGVjdD1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgOmNsZWFyLW9uLXNlbGVjdD1cXFwiZmFsc2VcXFwiXFxuICAgICAgICAgIDpoaWRlLXNlbGVjdGVkPVxcXCJmYWxzZVxcXCJcXG4gICAgICAgICAgOmNhbi1jbGVhcj1cXFwiZmFsc2VcXFwiXFxuICAgICAgICAgIGxhYmVsPVxcXCJzZXR1cENvbXBsZXRlbmVzc1xcXCJcXG4gICAgICAgIC8+XFxuICAgICAgPC9zcGFuPlxcbiAgICAgIDxzcGFuXFxuICAgICAgICBjbGFzcz1cXFwibXVsdGlzZWxlY3QtbGFiZWwtd3JhcHBlciB3aGl0ZXNwYWNlLW5vd3JhcFxcXCJcXG4gICAgICAgIDpzdHlsZT1cXFwiZ2VuZXJhdGVMYWJlbCgncmVnaXN0cmF0aW9uIHR5cGUnKVxcXCJcXG4gICAgICA+XFxuICAgICAgICA8TXVsdGlzZWxlY3RcXG4gICAgICAgICAgaWQ9XFxcInJlZ2lzdHJhdGlvbi10eXBlXFxcIlxcbiAgICAgICAgICB2LW1vZGVsPVxcXCJmaWx0ZXIucmVnaXN0cmF0aW9uX3R5cGVcXFwiXFxuICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJSRUdJU1RSQVRJT04gVFlQRVxcXCJcXG4gICAgICAgICAgOm9wdGlvbnM9XFxcInJlZ2lzdHJhdGlvblR5cGVzXFxcIlxcbiAgICAgICAgICA6dGFnZ2FibGU9XFxcInRydWVcXFwiXFxuICAgICAgICAgIDpjbG9zZS1vbi1zZWxlY3Q9XFxcInRydWVcXFwiXFxuICAgICAgICAgIDpjbGVhci1vbi1zZWxlY3Q9XFxcImZhbHNlXFxcIlxcbiAgICAgICAgICA6aGlkZS1zZWxlY3RlZD1cXFwiZmFsc2VcXFwiXFxuICAgICAgICAgIDpjYW4tY2xlYXI9XFxcImZhbHNlXFxcIlxcbiAgICAgICAgICBsYWJlbD1cXFwicmVnaXN0cmF0aW9uVHlwZVxcXCJcXG4gICAgICAgIC8+XFxuICAgICAgPC9zcGFuPlxcblxcbiAgICAgIDwhLS1NdWx0aXNlbGVjdCB3aXRoIHNlYXJjaCAtLT5cXG4gICAgICA8IS0tIHRvIGJlIGltcGxlbWVudGVkIC0tPlxcbiAgICAgIDwhLS0gPGRpdlxcbiAgICAgICAgY2xhc3M9XFxcIm9yZ2FuaXphdGlvbiBtdWx0aXNlbGVjdC1sb29rYWxpa2VcXFwiXFxuICAgICAgICBAY2xpY2s9XFxcInRvZ2dsZVNob3dNdWx0aVNlbGVjdCgkZXZlbnQpXFxcIlxcbiAgICAgID5cXG4gICAgICAgIDxkaXZcXG4gICAgICAgICAgY2xhc3M9XFxcImZsZXggaC1mdWxsIHctZnVsbCBqdXN0aWZ5LWJldHdlZW4gYWxpZ24tbWlkZGxlIHRleHQteHMgZm9udC1ib2xkIHVwcGVyY2FzZSB0ZXh0LWJsdWVjb3JhbFxcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAgPHNwYW4+UHVibGlzaGVyIFR5cGU8L3NwYW4+XFxuICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlclxcXCI+XFxuICAgICAgICAgICAgPHNwYW5cXG4gICAgICAgICAgICAgIHYtaWY9XFxcImZpbHRlci5wdWJsaXNoZXJfdHlwZS5sZW5ndGhcXFwiXFxuICAgICAgICAgICAgICBAY2xpY2s9XFxcIlxcbiAgICAgICAgICAgICAgICAoZXZlbnQpID0+IHtcXG4gICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcXG4gICAgICAgICAgICAgICAgICBmaWx0ZXIucHVibGlzaGVyX3R5cGUubGVuZ3RoID0gMDtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICAgIGljb249XFxcImNyb3NzXFxcIlxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwibXQtMi41IHRyYW5zbGF0ZS14LTEgdGV4dC1bMTZweF0gdGV4dC1uLTMwXFxcIlxcbiAgICAgICAgICAgICAgPjwvc3ZnLXZ1ZT5cXG4gICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgPHNwYW5cXG4gICAgICAgICAgICAgIDpjbGFzcz1cXFwicm90YXRlQ2xhc3NcXFwiXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwiZHVyYXRpb24tMjAwXFxcIlxcbiAgICAgICAgICAgICAgc3R5bGU9XFxcImhlaWdodDogZml0LWNvbnRlbnQ7IGZvbnQtc2l6ZTogMjBweDsgbWFyZ2luLXRvcDogLTJweFxcXCJcXG4gICAgICAgICAgICA+XFxuICAgICAgICAgICAgICA8c3ZnLXZ1ZSBpY29uPVxcXCJhcnJvdy1kb3duXFxcIj48L3N2Zy12dWU+IDwvc3BhblxcbiAgICAgICAgICA+PC9zcGFuPlxcbiAgICAgICAgPC9kaXY+XFxuXFxuICAgICAgICA8VGVsZXBvcnQgdG89XFxcImJvZHlcXFwiPlxcbiAgICAgICAgICA8ZGl2XFxuICAgICAgICAgICAgdi1pZj1cXFwic2hvd011bHRpU2VsZWN0V2l0aFNlYXJjaFxcXCJcXG4gICAgICAgICAgICBjbGFzcz1cXFwibXVsdGlzZWxlY3Qtd3JhcHBlclxcXCJcXG4gICAgICAgICAgICA6c3R5bGU9XFxcIm11bHRpc2VsZWN0U3R5bGVcXFwiXFxuICAgICAgICAgID5cXG4gICAgICAgICAgICA8TXVsdGlTZWxlY3RXaXRoU2VhcmNoXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwicmVsYXRpdmUgIXotWzEwMDBdXFxcIlxcbiAgICAgICAgICAgICAgaGVhZGVyPVxcXCJQdWJsaXNoZXIgVHlwZVxcXCJcXG4gICAgICAgICAgICAgIDpsaXN0LWl0ZW1zPVxcXCJwdWJsaXNoZXJUeXBlc1xcXCJcXG4gICAgICAgICAgICAgIEBjaGFuZ2Utc2VsZWN0ZWQtcHVibGlzaGVyPVxcXCJzZXRTZWxlY3RlZFB1Ymxpc2hlclxcXCJcXG4gICAgICAgICAgICAgIEBjbG9zZT1cXFwic2hvd011bHRpU2VsZWN0V2l0aFNlYXJjaCA9IGZhbHNlXFxcIlxcbiAgICAgICAgICAgID48L011bHRpU2VsZWN0V2l0aFNlYXJjaD5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICA8L1RlbGVwb3J0PlxcbiAgICAgIDwvZGl2PiAtLT5cXG4gICAgICA8c3BhblxcbiAgICAgICAgY2xhc3M9XFxcIm11bHRpc2VsZWN0LWxhYmVsLXdyYXBwZXJcXFwiXFxuICAgICAgICA6c3R5bGU9XFxcImdlbmVyYXRlTGFiZWwoJ3B1Ymxpc2hlciB0eXBlJylcXFwiXFxuICAgICAgPlxcbiAgICAgICAgPE11bHRpc2VsZWN0XFxuICAgICAgICAgIGlkPVxcXCJwdWJsaXNoZXItdHlwZVxcXCJcXG4gICAgICAgICAgdi1tb2RlbD1cXFwiZmlsdGVyLnB1Ymxpc2hlcl90eXBlXFxcIlxcbiAgICAgICAgICA6b3B0aW9ucz1cXFwicHVibGlzaGVyVHlwZXNcXFwiXFxuICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJQVUJMSVNIRVIgVFlQRVxcXCJcXG4gICAgICAgICAgbW9kZT1cXFwibXVsdGlwbGVcXFwiXFxuICAgICAgICAgIDp0YWdnYWJsZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgOmNsb3NlLW9uLXNlbGVjdD1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgOmNsZWFyLW9uLXNlbGVjdD1cXFwiZmFsc2VcXFwiXFxuICAgICAgICAgIDpoaWRlLXNlbGVjdGVkPVxcXCJmYWxzZVxcXCJcXG4gICAgICAgICAgOmNhbi1jbGVhcj1cXFwiZmFsc2VcXFwiXFxuICAgICAgICAgIGxhYmVsPVxcXCJwdWJsaXNoZXJUeXBlXFxcIlxcbiAgICAgICAgLz5cXG4gICAgICA8L3NwYW4+XFxuICAgICAgPHNwYW5cXG4gICAgICAgIGNsYXNzPVxcXCJtdWx0aXNlbGVjdC1sYWJlbC13cmFwcGVyXFxcIlxcbiAgICAgICAgOnN0eWxlPVxcXCJnZW5lcmF0ZUxhYmVsKCdkYXRhIGxpY2Vuc2UnKVxcXCJcXG4gICAgICA+XFxuICAgICAgICA8TXVsdGlzZWxlY3RcXG4gICAgICAgICAgaWQ9XFxcImRhdGEtbGljZW5zZVxcXCJcXG4gICAgICAgICAgdi1tb2RlbD1cXFwiZmlsdGVyLmRhdGFfbGljZW5zZVxcXCJcXG4gICAgICAgICAgOm9wdGlvbnM9XFxcImRhdGFMaWNlbnNlc1xcXCJcXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XFxcIkRBVEEgTElDRU5TRVxcXCJcXG4gICAgICAgICAgbW9kZT1cXFwibXVsdGlwbGVcXFwiXFxuICAgICAgICAgIDp0YWdnYWJsZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgOmNsb3NlLW9uLXNlbGVjdD1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgOmNsZWFyLW9uLXNlbGVjdD1cXFwiZmFsc2VcXFwiXFxuICAgICAgICAgIDpoaWRlLXNlbGVjdGVkPVxcXCJmYWxzZVxcXCJcXG4gICAgICAgICAgOmNhbi1jbGVhcj1cXFwiZmFsc2VcXFwiXFxuICAgICAgICAgIGxhYmVsPVxcXCJkYXRhTGljZW5zZVxcXCJcXG4gICAgICAgIC8+XFxuICAgICAgPC9zcGFuPlxcbiAgICA8L2Rpdj5cXG4gICAgPCEtLUZpbHRlciBvcHRpb25zIGVuZC0tPlxcblxcbiAgICA8IS0tRGF0ZSByYW5nZSBzdGFydC0tPlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGgtWzM4cHhdIHctZnVsbCBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQgcHgtNCAyeGw6dy1hdXRvXFxcIj5cXG4gICAgICA8RGF0ZVJhbmdlV2lkZ2V0XFxuICAgICAgICA6ZHJvcGRvd24tcmFuZ2U9XFxcImRyb3Bkb3duUmFuZ2VcXFwiXFxuICAgICAgICA6Zmlyc3QtZGF0ZT1cXFwib2xkZXN0RGF0ZXNcXFwiXFxuICAgICAgICA6Y2xlYXItZGF0ZT1cXFwiY2xlYXJEYXRlXFxcIlxcbiAgICAgICAgOnN0YXJ0aW5nLWRhdGU9XFxcImZpbHRlci5zdGFydF9kYXRlXFxcIlxcbiAgICAgICAgOmVuZGluZy1kYXRlPVxcXCJmaWx0ZXIuZW5kX2RhdGVcXFwiXFxuICAgICAgICA6ZGF0ZS1uYW1lPVxcXCJkYXRlVHlwZVxcXCJcXG4gICAgICAgIEB0cmlnZ2VyLXNldC1kYXRlLXJhbmdlPVxcXCJzZXREYXRlUmFuZ2VEYXRlXFxcIlxcbiAgICAgICAgQHRyaWdnZXItc2V0LWRhdGUtdHlwZT1cXFwic2V0RGF0ZVR5cGVcXFwiXFxuICAgICAgICBAZGF0ZS1jbGVhcmVkPVxcXCJjbGVhckRhdGUgPSBmYWxzZVxcXCJcXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gICAgPCEtLURhdGUgcmFuZ2Ugc3RhcnQtLT5cXG4gIDwvZGl2PlxcblxcbiAgPCEtLUZpbHRlciB0YWcgcGlsbHMgc3RhcnQtLT5cXG4gIDxkaXZcXG4gICAgdi1pZj1cXFwiaXNGaWx0ZXJBcHBsaWVkXFxcIlxcbiAgICBjbGFzcz1cXFwibWItNCBmbGV4IG1heC13LWZ1bGwgZmxleC13cmFwIGl0ZW1zLWNlbnRlciBzcGFjZS14LTJcXFwiXFxuICA+XFxuICAgIDxzcGFuIGNsYXNzPVxcXCJ0ZXh0LXNtIGZvbnQtYm9sZCB1cHBlcmNhc2UgdGV4dC1uLTQwXFxcIj5GaWx0ZXJlZCBieTogPC9zcGFuPlxcblxcbiAgICA8c3BhbiB2LXNob3c9XFxcImZpbHRlci5jb3VudHJ5XFxcIiBjbGFzcz1cXFwiaW5saW5lLWZsZXggZmxleC13cmFwIGdhcC0yXFxcIj5cXG4gICAgICA8c3BhblxcbiAgICAgICAgdi1mb3I9XFxcIihpdGVtLCBpbmRleCkgaW4gZmlsdGVyLmNvdW50cnlcXFwiXFxuICAgICAgICA6a2V5PVxcXCJpbmRleFxcXCJcXG4gICAgICAgIGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTEgcm91bmRlZC1mdWxsIGJvcmRlciBib3JkZXItbi0zMCBweS0xIHB4LTIgdGV4dC14c1xcXCJcXG4gICAgICA+XFxuICAgICAgICA8c3BhbiBjbGFzcz1cXFwidGV4dC1uLTQwXFxcIj5Db3VudHJ5Ojwvc3Bhbj5cXG4gICAgICAgIDxzcGFuXFxuICAgICAgICAgIGNsYXNzPVxcXCJtYXgtdy1bNTAwcHhdIG92ZXJmbG93LXgtaGlkZGVuIHRleHQtZWxsaXBzaXMgd2hpdGVzcGFjZS1ub3dyYXBcXFwiXFxuICAgICAgICAgID57eyBpdGVtIH19PC9zcGFuXFxuICAgICAgICA+XFxuICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICBjbGFzcz1cXFwibXgtMiBtdC0xIGN1cnNvci1wb2ludGVyIHRleHQteHNcXFwiXFxuICAgICAgICAgIGljb249XFxcImNyb3NzXFxcIlxcbiAgICAgICAgICBAY2xpY2s9XFxcImZpbHRlci5jb3VudHJ5LnNwbGljZShpbmRleCwgMSlcXFwiXFxuICAgICAgICAvPlxcbiAgICAgIDwvc3Bhbj5cXG4gICAgPC9zcGFuPlxcblxcbiAgICA8c3BhbiB2LXNob3c9XFxcImZpbHRlci5jb21wbGV0ZW5lc3NcXFwiIGNsYXNzPVxcXCJpbmxpbmUtZmxleCBmbGV4LXdyYXAgZ2FwLTJcXFwiPlxcbiAgICAgIDxzcGFuXFxuICAgICAgICBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0xIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLW4tMzAgcHktMSBweC0yIHRleHQteHNcXFwiXFxuICAgICAgPlxcbiAgICAgICAgPHNwYW4gY2xhc3M9XFxcInRleHQtbi00MFxcXCI+U2V0dXAgQ29tcGxldGVuZXNzOjwvc3Bhbj5cXG4gICAgICAgIDxzcGFuXFxuICAgICAgICAgIGNsYXNzPVxcXCJtYXgtdy1bNTAwcHhdIG92ZXJmbG93LXgtaGlkZGVuIHRleHQtZWxsaXBzaXMgd2hpdGVzcGFjZS1ub3dyYXBcXFwiXFxuICAgICAgICAgID57eyBzbmFrZUNhc2VUb1NlbnRlbmNlQ2FzZShmaWx0ZXIuY29tcGxldGVuZXNzKSB9fTwvc3BhblxcbiAgICAgICAgPlxcbiAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgY2xhc3M9XFxcIm14LTIgbXQtMSBjdXJzb3ItcG9pbnRlciB0ZXh0LXhzXFxcIlxcbiAgICAgICAgICBpY29uPVxcXCJjcm9zc1xcXCJcXG4gICAgICAgICAgQGNsaWNrPVxcXCJmaWx0ZXIuY29tcGxldGVuZXNzID0gJydcXFwiXFxuICAgICAgICAvPlxcbiAgICAgIDwvc3Bhbj5cXG4gICAgPC9zcGFuPlxcblxcbiAgICA8c3BhbiB2LXNob3c9XFxcImZpbHRlci5yZWdpc3RyYXRpb25fdHlwZVxcXCIgY2xhc3M9XFxcImlubGluZS1mbGV4IGZsZXgtd3JhcCBnYXAtMlxcXCI+XFxuICAgICAgPHNwYW5cXG4gICAgICAgIGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTEgcm91bmRlZC1mdWxsIGJvcmRlciBib3JkZXItbi0zMCBweS0xIHB4LTIgdGV4dC14c1xcXCJcXG4gICAgICA+XFxuICAgICAgICA8c3BhbiBjbGFzcz1cXFwidGV4dC1uLTQwXFxcIj5SZWdpc3RyYXRpb24gVHlwZTo8L3NwYW4+XFxuICAgICAgICA8c3BhblxcbiAgICAgICAgICBjbGFzcz1cXFwibWF4LXctWzUwMHB4XSBvdmVyZmxvdy14LWhpZGRlbiB0ZXh0LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwXFxcIlxcbiAgICAgICAgICA+e3sgc25ha2VDYXNlVG9TZW50ZW5jZUNhc2UoZmlsdGVyLnJlZ2lzdHJhdGlvbl90eXBlKSB9fTwvc3BhblxcbiAgICAgICAgPlxcbiAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgY2xhc3M9XFxcIm14LTIgbXQtMSBjdXJzb3ItcG9pbnRlciB0ZXh0LXhzXFxcIlxcbiAgICAgICAgICBpY29uPVxcXCJjcm9zc1xcXCJcXG4gICAgICAgICAgQGNsaWNrPVxcXCJmaWx0ZXIucmVnaXN0cmF0aW9uX3R5cGUgPSAnJ1xcXCJcXG4gICAgICAgIC8+XFxuICAgICAgPC9zcGFuPlxcbiAgICA8L3NwYW4+XFxuXFxuICAgIDxzcGFuXFxuICAgICAgdi1zaG93PVxcXCJmaWx0ZXIucHVibGlzaGVyX3R5cGUubGVuZ3RoXFxcIlxcbiAgICAgIGNsYXNzPVxcXCJpbmxpbmUtZmxleCBmbGV4LXdyYXAgZ2FwLTJcXFwiXFxuICAgID5cXG4gICAgICA8c3BhblxcbiAgICAgICAgdi1mb3I9XFxcIihpdGVtLCBpbmRleCkgaW4gZmlsdGVyLnB1Ymxpc2hlcl90eXBlXFxcIlxcbiAgICAgICAgOmtleT1cXFwiaW5kZXhcXFwiXFxuICAgICAgICBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0xIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLW4tMzAgcHktMSBweC0yIHRleHQteHNcXFwiXFxuICAgICAgPlxcbiAgICAgICAgPHNwYW4gY2xhc3M9XFxcInRleHQtbi00MFxcXCI+UHVibGlzaGVyIHR5cGU6PC9zcGFuPlxcbiAgICAgICAgPHNwYW5cXG4gICAgICAgICAgY2xhc3M9XFxcIm1heC13LVs1MDBweF0gb3ZlcmZsb3cteC1oaWRkZW4gdGV4dC1lbGxpcHNpcyB3aGl0ZXNwYWNlLW5vd3JhcFxcXCJcXG4gICAgICAgICAgPnt7IHB1Ymxpc2hlclR5cGVzW2l0ZW1dIH19XFxuICAgICAgICA8L3NwYW4+XFxuICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICBjbGFzcz1cXFwibXgtMiBtdC0xIGN1cnNvci1wb2ludGVyIHRleHQteHNcXFwiXFxuICAgICAgICAgIGljb249XFxcImNyb3NzXFxcIlxcbiAgICAgICAgICBAY2xpY2s9XFxcImZpbHRlci5wdWJsaXNoZXJfdHlwZS5zcGxpY2UoaW5kZXgsIDEpXFxcIlxcbiAgICAgICAgLz5cXG4gICAgICA8L3NwYW4+XFxuICAgIDwvc3Bhbj5cXG5cXG4gICAgPHNwYW5cXG4gICAgICB2LXNob3c9XFxcImZpbHRlci5kYXRhX2xpY2Vuc2UubGVuZ3RoXFxcIlxcbiAgICAgIGNsYXNzPVxcXCJpbmxpbmUtZmxleCBmbGV4LXdyYXAgZ2FwLTJcXFwiXFxuICAgID5cXG4gICAgICA8c3BhblxcbiAgICAgICAgdi1mb3I9XFxcIihpdGVtLCBpbmRleCkgaW4gZmlsdGVyLmRhdGFfbGljZW5zZVxcXCJcXG4gICAgICAgIDprZXk9XFxcImluZGV4XFxcIlxcbiAgICAgICAgY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMSByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci1uLTMwIHB5LTEgcHgtMiB0ZXh0LXhzXFxcIlxcbiAgICAgID5cXG4gICAgICAgIDxzcGFuIGNsYXNzPVxcXCJ0ZXh0LW4tNDBcXFwiPkRhdGEgTGljZW5zZTo8L3NwYW4+XFxuICAgICAgICA8c3BhblxcbiAgICAgICAgICBjbGFzcz1cXFwibWF4LXctWzUwMHB4XSBvdmVyZmxvdy14LWhpZGRlbiB0ZXh0LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwXFxcIlxcbiAgICAgICAgICA+e3sgaXRlbSB9fTwvc3BhblxcbiAgICAgICAgPlxcbiAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgY2xhc3M9XFxcIm14LTIgbXQtMSBjdXJzb3ItcG9pbnRlciB0ZXh0LXhzXFxcIlxcbiAgICAgICAgICBpY29uPVxcXCJjcm9zc1xcXCJcXG4gICAgICAgICAgQGNsaWNrPVxcXCJmaWx0ZXIuZGF0YV9saWNlbnNlLnNwbGljZShpbmRleCwgMSlcXFwiXFxuICAgICAgICAvPlxcbiAgICAgIDwvc3Bhbj5cXG4gICAgPC9zcGFuPlxcbiAgICA8c3BhblxcbiAgICAgIHYtc2hvdz1cXFwiZmlsdGVyLnN0YXJ0X2RhdGUgJiYgZmlsdGVyLmVuZF9kYXRlXFxcIlxcbiAgICAgIGNsYXNzPVxcXCJpbmxpbmUtZmxleCBmbGV4LXdyYXAgZ2FwLTJcXFwiXFxuICAgID5cXG4gICAgICA8c3BhblxcbiAgICAgICAgY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMSByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci1uLTMwIHB5LTEgcHgtMiB0ZXh0LXhzXFxcIlxcbiAgICAgID5cXG4gICAgICAgIDxzcGFuPlxcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwidGV4dC1uLTQwXFxcIj4gRGF0ZSByYW5nZTogPC9zcGFuPlxcbiAgICAgICAgICB7eyBmaWx0ZXIuc2VsZWN0ZWRfZGF0ZV9maWx0ZXIgfX1cXG4gICAgICAgIDwvc3Bhbj5cXG4gICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgIGNsYXNzPVxcXCJteC0yIG10LTEgY3Vyc29yLXBvaW50ZXIgdGV4dC14c1xcXCJcXG4gICAgICAgICAgaWNvbj1cXFwiY3Jvc3NcXFwiXFxuICAgICAgICAgIEBjbGljaz1cXFwiXFxuICAgICAgICAgICAgKCkgPT4ge1xcbiAgICAgICAgICAgICAgY2xlYXJEYXRlRmlsdGVyKCk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICBcXFwiXFxuICAgICAgICAvPlxcbiAgICAgIDwvc3Bhbj5cXG4gICAgPC9zcGFuPlxcblxcbiAgICA8YnV0dG9uIGNsYXNzPVxcXCJmb250LWJvbGQgdXBwZXJjYXNlIHRleHQtYmx1ZWNvcmFsXFxcIiBAY2xpY2s9XFxcInJlc2V0QWxsRmlsdGVyc1xcXCI+XFxuICAgICAgQ2xlYXIgRmlsdGVyXFxuICAgIDwvYnV0dG9uPlxcbiAgPC9kaXY+XFxuICA8IS0tRmlsdGVyIHRhZyBwaWxscyBlbmQtLT5cXG5cXG4gIDxkaXY+XFxuICAgIDxwIGNsYXNzPVxcXCJweS0xXFxcIj5Ub3RhbCBOdW1iZXIgb2YgT3JnYW5pc2F0aW9uOiB7eyB0b3RhbE9yZ2FuaXNhdGlvbiB9fTwvcD5cXG4gICAgPGRpdiBjbGFzcz1cXFwiaWF0aS1saXN0LXRhYmxlXFxcIj5cXG4gICAgICA8dGFibGU+XFxuICAgICAgICA8dGhlYWQ+XFxuICAgICAgICAgIDx0ciBjbGFzcz1cXFwiYmctbi0xMFxcXCI+XFxuICAgICAgICAgICAgPHRoIGlkPVxcXCJvcmdhbmlzYXRpb25fbmFtZVxcXCIgc2NvcGU9XFxcImNvbFxcXCI+XFxuICAgICAgICAgICAgICA8YVxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwiY3Vyc29yLXBvaW50ZXIgdGV4dC1uLTUwIHRyYW5zaXRpb24gZHVyYXRpb24tNTAwIGhvdmVyOnRleHQtc3ByaW5nLTUwXFxcIlxcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XFxcIlxcbiAgICAgICAgICAgICAgICAgIHNvcnRQYXJhbXMub3JkZXJCeSA9PT0gJ25hbWUnXFxuICAgICAgICAgICAgICAgICAgICA/IHNvcnRpbmdEaXJlY3Rpb24oKVxcbiAgICAgICAgICAgICAgICAgICAgOiBkZWZhdWx0U29ydERpcmVjdGlvblxcbiAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgIEBjbGljaz1cXFwic29ydEJ5KCduYW1lJylcXFwiXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJzb3J0aW5nLWluZGljYXRvclxcXCI+XFxuICAgICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICAgIDppY29uPVxcXCJgJHtcXG4gICAgICAgICAgICAgICAgICAgICAgc29ydFBhcmFtcy5vcmRlckJ5ID09PSAnbmFtZSdcXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNvcnRpbmdEaXJlY3Rpb24oKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIDogZGVmYXVsdFNvcnREaXJlY3Rpb25cXG4gICAgICAgICAgICAgICAgICAgIH0tYXJyb3dgXFxcIlxcbiAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgPHNwYW4+T3JnYW5pc2F0aW9uPC9zcGFuPlxcbiAgICAgICAgICAgICAgPC9hPlxcbiAgICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgICAgPHRoIGlkPVxcXCJjb3VudHJ5XFxcIiBzY29wZT1cXFwiY29sXFxcIiBzdHlsZT1cXFwid2lkdGg6IDE3M3B4XFxcIj5cXG4gICAgICAgICAgICAgIDxhXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJjdXJzb3ItcG9pbnRlciB0ZXh0LW4tNTAgdHJhbnNpdGlvbiBkdXJhdGlvbi01MDAgaG92ZXI6dGV4dC1zcHJpbmctNTBcXFwiXFxuICAgICAgICAgICAgICAgIDpjbGFzcz1cXFwiXFxuICAgICAgICAgICAgICAgICAgc29ydFBhcmFtcy5vcmRlckJ5ID09PSAnY291bnRyeSdcXG4gICAgICAgICAgICAgICAgICAgID8gc29ydGluZ0RpcmVjdGlvbigpXFxuICAgICAgICAgICAgICAgICAgICA6IGRlZmF1bHRTb3J0RGlyZWN0aW9uXFxuICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgQGNsaWNrPVxcXCJzb3J0QnkoJ2NvdW50cnknKVxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInNvcnRpbmctaW5kaWNhdG9yXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgICAgICAgOmljb249XFxcImAke1xcbiAgICAgICAgICAgICAgICAgICAgICBzb3J0UGFyYW1zLm9yZGVyQnkgPT09ICdjb3VudHJ5J1xcbiAgICAgICAgICAgICAgICAgICAgICAgID8gc29ydGluZ0RpcmVjdGlvbigpXFxuICAgICAgICAgICAgICAgICAgICAgICAgOiBkZWZhdWx0U29ydERpcmVjdGlvblxcbiAgICAgICAgICAgICAgICAgICAgfS1hcnJvd2BcXFwiXFxuICAgICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgICA8c3Bhbj5Db3VudHJ5PC9zcGFuPlxcbiAgICAgICAgICAgICAgPC9hPlxcbiAgICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgICAgPHRoIGlkPVxcXCJyZWdpc3RlcmVkX29uXFxcIiBzY29wZT1cXFwiY29sXFxcIiBzdHlsZT1cXFwid2lkdGg6IDE3M3B4XFxcIj5cXG4gICAgICAgICAgICAgIDxhXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJjdXJzb3ItcG9pbnRlciB0ZXh0LW4tNTAgdHJhbnNpdGlvbiBkdXJhdGlvbi01MDAgaG92ZXI6dGV4dC1zcHJpbmctNTBcXFwiXFxuICAgICAgICAgICAgICAgIDpjbGFzcz1cXFwiXFxuICAgICAgICAgICAgICAgICAgc29ydFBhcmFtcy5vcmRlckJ5ID09PSAncmVnaXN0ZXJlZF9vbidcXG4gICAgICAgICAgICAgICAgICAgID8gc29ydGluZ0RpcmVjdGlvbigpXFxuICAgICAgICAgICAgICAgICAgICA6IGRlZmF1bHRTb3J0RGlyZWN0aW9uXFxuICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgQGNsaWNrPVxcXCJzb3J0QnkoJ3JlZ2lzdGVyZWRfb24nKVxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInNvcnRpbmctaW5kaWNhdG9yXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgICAgICAgOmljb249XFxcImAke1xcbiAgICAgICAgICAgICAgICAgICAgICBzb3J0UGFyYW1zLm9yZGVyQnkgPT09ICdyZWdpc3RlcmVkX29uJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgID8gc29ydGluZ0RpcmVjdGlvbigpXFxuICAgICAgICAgICAgICAgICAgICAgICAgOiBkZWZhdWx0U29ydERpcmVjdGlvblxcbiAgICAgICAgICAgICAgICAgICAgfS1hcnJvd2BcXFwiXFxuICAgICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgICA8c3Bhbj5SZWdpc3RlcmVkIE9uPC9zcGFuPlxcbiAgICAgICAgICAgICAgPC9hPlxcbiAgICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgICAgPHRoIGlkPVxcXCJsYXN0X2xvZ2luXFxcIiBzY29wZT1cXFwiY29sXFxcIiBzdHlsZT1cXFwid2lkdGg6IDE3M3B4XFxcIj5cXG4gICAgICAgICAgICAgIDxhXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJjdXJzb3ItcG9pbnRlciB0ZXh0LW4tNTAgdHJhbnNpdGlvbiBkdXJhdGlvbi01MDAgaG92ZXI6dGV4dC1zcHJpbmctNTBcXFwiXFxuICAgICAgICAgICAgICAgIDpjbGFzcz1cXFwiXFxuICAgICAgICAgICAgICAgICAgc29ydFBhcmFtcy5vcmRlckJ5ID09PSAnbGFzdF9sb2dnZWRfaW4nXFxuICAgICAgICAgICAgICAgICAgICA/IHNvcnRpbmdEaXJlY3Rpb24oKVxcbiAgICAgICAgICAgICAgICAgICAgOiBkZWZhdWx0U29ydERpcmVjdGlvblxcbiAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgIEBjbGljaz1cXFwic29ydEJ5KCdsYXN0X2xvZ2dlZF9pbicpXFxcIlxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwic29ydGluZy1pbmRpY2F0b3JcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICAgICAgICA6aWNvbj1cXFwiYCR7XFxuICAgICAgICAgICAgICAgICAgICAgIHNvcnRQYXJhbXMub3JkZXJCeSA9PT0gJ2xhc3RfbG9nZ2VkX2luJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgID8gc29ydGluZ0RpcmVjdGlvbigpXFxuICAgICAgICAgICAgICAgICAgICAgICAgOiBkZWZhdWx0U29ydERpcmVjdGlvblxcbiAgICAgICAgICAgICAgICAgICAgfS1hcnJvd2BcXFwiXFxuICAgICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgICA8c3Bhbj5MYXN0IExvZ2luPC9zcGFuPlxcbiAgICAgICAgICAgICAgPC9hPlxcbiAgICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgICAgPHRoIGlkPVxcXCJhY3Rpdml0aWVzXFxcIiBzY29wZT1cXFwiY29sXFxcIiBzdHlsZT1cXFwid2lkdGg6IDE3M3B4XFxcIj5cXG4gICAgICAgICAgICAgIDxhXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJjdXJzb3ItcG9pbnRlciB0ZXh0LW4tNTAgdHJhbnNpdGlvbiBkdXJhdGlvbi01MDAgaG92ZXI6dGV4dC1zcHJpbmctNTBcXFwiXFxuICAgICAgICAgICAgICAgIDpjbGFzcz1cXFwiXFxuICAgICAgICAgICAgICAgICAgc29ydFBhcmFtcy5vcmRlckJ5ID09PSAnYWxsX2FjdGl2aXRpZXNfY291bnQnXFxuICAgICAgICAgICAgICAgICAgICA/IHNvcnRpbmdEaXJlY3Rpb24oKVxcbiAgICAgICAgICAgICAgICAgICAgOiBkZWZhdWx0U29ydERpcmVjdGlvblxcbiAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgIEBjbGljaz1cXFwic29ydEJ5KCdhbGxfYWN0aXZpdGllc19jb3VudCcpXFxcIlxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwic29ydGluZy1pbmRpY2F0b3JcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICAgICAgICA6aWNvbj1cXFwiYCR7XFxuICAgICAgICAgICAgICAgICAgICAgIHNvcnRQYXJhbXMub3JkZXJCeSA9PT0gJ2FsbF9hY3Rpdml0aWVzX2NvdW50J1xcbiAgICAgICAgICAgICAgICAgICAgICAgID8gc29ydGluZ0RpcmVjdGlvbigpXFxuICAgICAgICAgICAgICAgICAgICAgICAgOiBkZWZhdWx0U29ydERpcmVjdGlvblxcbiAgICAgICAgICAgICAgICAgICAgfS1hcnJvd2BcXFwiXFxuICAgICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBsYW5ndWFnZS5jb21tb25fbGFuZy5hY3Rpdml0aWVzIH19PC9zcGFuPlxcbiAgICAgICAgICAgICAgPC9hPlxcbiAgICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgICAgPHRoIGlkPVxcXCJwdWJsaXNoZXJfdHlwZVxcXCIgc2NvcGU9XFxcImNvbFxcXCIgc3R5bGU9XFxcIndpZHRoOiAxNzNweFxcXCI+XFxuICAgICAgICAgICAgICA8YVxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwiY3Vyc29yLXBvaW50ZXIgdGV4dC1uLTUwIHRyYW5zaXRpb24gZHVyYXRpb24tNTAwIGhvdmVyOnRleHQtc3ByaW5nLTUwXFxcIlxcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XFxcIlxcbiAgICAgICAgICAgICAgICAgIHNvcnRQYXJhbXMub3JkZXJCeSA9PT0gJ3B1Ymxpc2hlcl90eXBlJ1xcbiAgICAgICAgICAgICAgICAgICAgPyBzb3J0aW5nRGlyZWN0aW9uKClcXG4gICAgICAgICAgICAgICAgICAgIDogZGVmYXVsdFNvcnREaXJlY3Rpb25cXG4gICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICBAY2xpY2s9XFxcInNvcnRCeSgncHVibGlzaGVyX3R5cGUnKVxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInNvcnRpbmctaW5kaWNhdG9yXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgICAgICAgOmljb249XFxcImAke1xcbiAgICAgICAgICAgICAgICAgICAgICBzb3J0UGFyYW1zLm9yZGVyQnkgPT09ICdwdWJsaXNoZXJfdHlwZSdcXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNvcnRpbmdEaXJlY3Rpb24oKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIDogZGVmYXVsdFNvcnREaXJlY3Rpb25cXG4gICAgICAgICAgICAgICAgICAgIH0tYXJyb3dgXFxcIlxcbiAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgPHNwYW4+UHVibGlzaGVyIFR5cGU8L3NwYW4+XFxuICAgICAgICAgICAgICA8L2E+XFxuICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICA8dGggaWQ9XFxcImRhdGFfbGljZW5jZVxcXCIgc2NvcGU9XFxcImNvbFxcXCIgc3R5bGU9XFxcIndpZHRoOiAxNzNweFxcXCI+XFxuICAgICAgICAgICAgICA8YVxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwiY3Vyc29yLXBvaW50ZXIgdGV4dC1uLTUwIHRyYW5zaXRpb24gZHVyYXRpb24tNTAwIGhvdmVyOnRleHQtc3ByaW5nLTUwXFxcIlxcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XFxcIlxcbiAgICAgICAgICAgICAgICAgIHNvcnRQYXJhbXMub3JkZXJCeSA9PT0gJ2RhdGFfbGljZW5zZSdcXG4gICAgICAgICAgICAgICAgICAgID8gc29ydGluZ0RpcmVjdGlvbigpXFxuICAgICAgICAgICAgICAgICAgICA6IGRlZmF1bHRTb3J0RGlyZWN0aW9uXFxuICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgQGNsaWNrPVxcXCJzb3J0QnkoJ2RhdGFfbGljZW5zZScpXFxcIlxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwic29ydGluZy1pbmRpY2F0b3JcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICAgICAgICA6aWNvbj1cXFwiYCR7XFxuICAgICAgICAgICAgICAgICAgICAgIHNvcnRQYXJhbXMub3JkZXJCeSA9PT0gJ2RhdGFfbGljZW5zZSdcXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNvcnRpbmdEaXJlY3Rpb24oKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIDogZGVmYXVsdFNvcnREaXJlY3Rpb25cXG4gICAgICAgICAgICAgICAgICAgIH0tYXJyb3dgXFxcIlxcbiAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgPHNwYW4+RGF0YSBsaWNlbmNlIDwvc3Bhbj5cXG4gICAgICAgICAgICAgIDwvYT5cXG4gICAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICAgIDx0aCBpZD1cXFwicHJveHlcXFwiIHNjb3BlPVxcXCJjb2xcXFwiIHN0eWxlPVxcXCJ3aWR0aDogMTU4cHhcXFwiPlxcbiAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxcbiAgICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgIDwvdHI+XFxuICAgICAgICA8L3RoZWFkPlxcbiAgICAgICAgPHRib2R5PlxcbiAgICAgICAgICA8dHIgdi1pZj1cXFwib3JnYW5pc2F0aW9uRGF0YS5zdGF0dXMgPT09ICdmZXRjaGluZydcXFwiPlxcbiAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVxcXCI0XFxcIj57eyBsYW5ndWFnZS5jb21tb25fbGFuZy5mZXRjaGluZ19kYXRhIH19PC90ZD5cXG4gICAgICAgICAgPC90cj5cXG4gICAgICAgICAgPHRyIHYtZWxzZS1pZj1cXFwib3JnYW5pc2F0aW9uRGF0YS5zdGF0dXMgPT09ICdmYWlsZWQgdG8gcmV0cmlldmUgZGF0YSdcXFwiPlxcbiAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVxcXCI0XFxcIj5GYWlsZWQgdG8gcmV0cmlldmUgZGF0YS4uLjwvdGQ+XFxuICAgICAgICAgIDwvdHI+XFxuICAgICAgICAgIDx0ciB2LWVsc2UtaWY9XFxcIm9yZ2FuaXNhdGlvbkRhdGEuc3RhdHVzID09PSAnZW1wdHknXFxcIj5cXG4gICAgICAgICAgICA8dGQgY29sc3Bhbj1cXFwiNFxcXCI+Tm8gRGF0YSBBdmFpbGFibGU8L3RkPlxcbiAgICAgICAgICA8L3RyPlxcbiAgICAgICAgICA8dHIgdi1mb3I9XFxcImRhdGEgaW4gb3JnYW5pc2F0aW9uRGF0YS5kYXRhLmRhdGFcXFwiIHYtZWxzZSA6a2V5PVxcXCJkYXRhLmlkXFxcIj5cXG4gICAgICAgICAgICA8dGQ+XFxuICAgICAgICAgICAgICA8ZGl2PlxcbiAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XFxcImRhdGEubmFtZVxcXCIgY2xhc3M9XFxcImVsbGlwc2lzIHJlbGF0aXZlXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiZWxsaXBzaXMgb3ZlcmZsb3ctaGlkZGVuXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgIHt7IGRhdGE/Lm5hbWVbMF0/Lm5hcnJhdGl2ZSA/PyBsYW5ndWFnZS5jb21tb25fbGFuZy5taXNzaW5nLm5hbWUgfX1cXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcblxcbiAgICAgICAgICAgICAgICA8ZGl2IHYtZWxzZT57e2xhbmd1YWdlLmNvbW1vbl9sYW5nLm1pc3NpbmcubmFtZX19PC9kaXY+XFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImdyb3VwIHJlbGF0aXZlXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8ZGl2XFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwidy1mdWxsIG92ZXJmbG93LXgtaGlkZGVuIHRleHQtZWxsaXBzaXMgdGV4dC1ibHVlLTQwXFxcIlxcbiAgICAgICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgICAgIHt7IGRhdGE/LnVzZXI/LmVtYWlsIH19XFxuICAgICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgICAgPGRpdlxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcImFic29sdXRlIHRvcC1mdWxsIGxlZnQtMCBoaWRkZW4gcm91bmRlZCBiZy1lZ2dzaGVsbCBwLTIgc2hhZG93LXNtIGdyb3VwLWhvdmVyOmJsb2NrXFxcIlxcbiAgICAgICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgICAgIHt7IGRhdGE/LnVzZXI/LmVtYWlsIH19XFxuICAgICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4XFxcIj5cXG4gICAgICAgICAgICAgICAgICA8c3BhblxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcImZsZXggdy1maXRcXFwiXFxuICAgICAgICAgICAgICAgICAgICA6Y2xhc3M9XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICByZWdpc3RyeUFwaUtleVN0YXR1c1tkYXRhLmlkXVxcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3RleHQtc3ByaW5nLTUwJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJ3RleHQtY3JpbXNvbi01MCdcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwidGV4dC1tZCBtdC0xIGN1cnNvci1wb2ludGVyXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICA6aWNvbj1cXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0cnlBcGlLZXlTdGF0dXNbZGF0YS5pZF1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3RpY2snXFxuICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdjaXJjbGUtcmVkLWNyb3NzJ1xcbiAgICAgICAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgICAgICA+PC9zdmctdnVlPlxcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInB4LTFcXFwiPiBSZWdpc3RyeSBBUEkgS2V5IDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgICAgPHNwYW5cXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJteC0yIGZsZXggdy1maXRcXFwiXFxuICAgICAgICAgICAgICAgICAgICA6Y2xhc3M9XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWVTdGF0dXNbZGF0YS5pZF1cXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICd0ZXh0LXNwcmluZy01MCdcXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICd0ZXh0LWNyaW1zb24tNTAnXFxuICAgICAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcInRleHQtbWQgbXQtMSBjdXJzb3ItcG9pbnRlclxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgOmljb249XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZVN0YXR1c1tkYXRhLmlkXVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyAndGljaydcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogJ2NpcmNsZS1yZWQtY3Jvc3MnXFxuICAgICAgICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgICAgID48L3N2Zy12dWU+XFxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwicHgtMVxcXCI+IERlZmF1bHQgVmFsdWVzIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgICA8dGQgY2xhc3M9XFxcInRleHQtbi00MFxcXCI+XFxuICAgICAgICAgICAgICA8ZGl2PlxcbiAgICAgICAgICAgICAgICB7eyBjb3VudHJpZXNXaXRoUHJlZml4W2RhdGFbJ2NvdW50cnknXV0gfX1cXG4gICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgPHRkIGNsYXNzPVxcXCJ0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgICAgICAgPGRpdj5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwicGItMVxcXCI+XFxuICAgICAgICAgICAgICAgICAge3sgZGF0ZUZvcm1hdChkYXRhWydjcmVhdGVkX2F0J10sICdNTU1NLCBERCwgWVlZWScpIH19XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ0ZXh0LXhzXFxcIj5cXG4gICAgICAgICAgICAgICAgICBQcmV2aW91c2x5XFxuICAgICAgICAgICAgICAgICAge3tcXG4gICAgICAgICAgICAgICAgICAgIGRhdGFbJ3JlZ2lzdHJhdGlvbl90eXBlJ10gIT09ICdleGlzdGluZ19vcmcnID8gJ25vdCcgOiAnJ1xcbiAgICAgICAgICAgICAgICAgIH19XFxuICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJlZCBpbiBJQVRJIHBsYXRmb3JtXFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgICA8dGQgY2xhc3M9XFxcInRleHQtbi00MFxcXCI+XFxuICAgICAgICAgICAgICA8ZGl2PlxcbiAgICAgICAgICAgICAgICB7e1xcbiAgICAgICAgICAgICAgICAgIGRhdGEubGFzdF9sb2dnZWRfaW5cXG4gICAgICAgICAgICAgICAgICAgID8gZGF0ZUZvcm1hdChkYXRhLmxhc3RfbG9nZ2VkX2luLCAnTU1NTSwgREQsWVlZWScpXFxuICAgICAgICAgICAgICAgICAgICA6IGxhbmd1YWdlLmNvbW1vbl9sYW5nLm1pc3Npbmcubm90X2F2YWlsYWJsZVxcbiAgICAgICAgICAgICAgICB9fVxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgICA8dGQgY2xhc3M9XFxcInRleHQtbi00MFxcXCI+XFxuICAgICAgICAgICAgICA8ZGl2PlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJweC0xXFxcIj5cXG4gICAgICAgICAgICAgICAgICB7eyBkYXRhLmFsbF9hY3Rpdml0aWVzX2NvdW50IH19XFxuICAgICAgICAgICAgICAgICAge3sgbGFuZ3VhZ2UuY29tbW9uX2xhbmcuYWN0aXZpdGllc19ub2Nhc2UgfX1cXG4gICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInRleHQteHNcXFwiPlxcbiAgICAgICAgICAgICAgICAgIHt7XFxuICAgICAgICAgICAgICAgICAgICBkYXRhWydsYXRlc3RfdXBkYXRlZF9hY3Rpdml0eSddXFxuICAgICAgICAgICAgICAgICAgICAgID8gJ0xhc3QgdXBkYXRlZCBvbjonICtcXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRlRm9ybWF0KFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVsnbGF0ZXN0X3VwZGF0ZWRfYWN0aXZpdHknXS51cGRhdGVkX2F0LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ01NTU0sIERELCBZWVlZJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgIClcXG4gICAgICAgICAgICAgICAgICAgICAgOiBsYW5ndWFnZS5jb21tb25fbGFuZy5taXNzaW5nLm5vdF9hdmFpbGFibGVcXG4gICAgICAgICAgICAgICAgICB9fVxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgPHRkIGNsYXNzPVxcXCJ0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgICAgICAgPGRpdj5cXG4gICAgICAgICAgICAgICAge3sgc2hvd01hcHBlZERhdGEoJ3B1Ymxpc2hlcl90eXBlJywgZGF0YSwgcHVibGlzaGVyVHlwZXMpIH19XFxuICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cXFwidGV4dC1uLTQwXFxcIj5cXG4gICAgICAgICAgICAgIDxkaXY+XFxuICAgICAgICAgICAgICAgIHt7IHNob3dNYXBwZWREYXRhKCdkYXRhX2xpY2Vuc2UnLCBkYXRhLCBkYXRhTGljZW5zZXMpIH19XFxuICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgIDx0ZD5cXG4gICAgICAgICAgICAgIDxkaXY+XFxuICAgICAgICAgICAgICAgIDxCdG5Db21wb25lbnRcXG4gICAgICAgICAgICAgICAgICB0ZXh0PVxcXCJwcm94eVxcXCJcXG4gICAgICAgICAgICAgICAgICB0eXBlPVxcXCJvdXRsaW5lXFxcIlxcbiAgICAgICAgICAgICAgICAgIGljb249XFxcInNtaWxlXFxcIlxcbiAgICAgICAgICAgICAgICAgIEBjbGljaz1cXFwicHJveHlVc2VyKDxudW1iZXI+ZGF0YT8udXNlcj8uaWQpXFxcIlxcbiAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgPC90cj5cXG4gICAgICAgIDwvdGJvZHk+XFxuICAgICAgPC90YWJsZT5cXG4gICAgPC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcIm10LTZcXFwiPlxcbiAgICAgIDxQYWdpbmF0aW9uXFxuICAgICAgICB2LWlmPVxcXCJvcmdhbmlzYXRpb25EYXRhLmRhdGEgJiYgb3JnYW5pc2F0aW9uRGF0YS5kYXRhLmxhc3RfcGFnZSA+IDFcXFwiXFxuICAgICAgICA6ZGF0YT1cXFwib3JnYW5pc2F0aW9uRGF0YS5kYXRhXFxcIlxcbiAgICAgICAgOnJlc2V0PVxcXCJyZXNldFBhZ2luYXRpb25cXFwiXFxuICAgICAgICBAZmV0Y2gtYWN0aXZpdGllcz1cXFwiKG4pID0+IGZldGNoT3JnYW5pc2F0aW9uKG4pXFxcIlxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgICA8ZGl2PjwvZGl2PlxcbiAgPC9kaXY+XFxuPC90ZW1wbGF0ZT5cXG48c2NyaXB0IGxhbmc9XFxcInRzXFxcIj5cXG5pbXBvcnQge1xcbiAgcmVhY3RpdmUsXFxuICBvbk1vdW50ZWQsXFxuICBpbmplY3QsXFxuICByZWYsXFxuICB3YXRjaCxcXG4gIGNvbXB1dGVkLFxcbiAgZGVmaW5lQ29tcG9uZW50LFxcbn0gZnJvbSAndnVlJztcXG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xcbmltcG9ydCBNdWx0aVNlbGVjdFdpdGhTZWFyY2ggZnJvbSAnQ29tcG9uZW50cy9NdWx0aVNlbGVjdFdpdGhTZWFyY2gudnVlJztcXG5cXG5pbXBvcnQgZGF0ZUZvcm1hdCBmcm9tICdDb21wb3NhYmxlL2RhdGVGb3JtYXQnO1xcbmltcG9ydCB7XFxuICBrZWJhYkNhc2VUb1NuYWtlY2FzZSxcXG4gIHNuYWtlQ2FzZVRvU2VudGVuY2VDYXNlLFxcbn0gZnJvbSAnQ29tcG9zYWJsZS91dGlscyc7XFxuXFxuaW1wb3J0IEJ0bkNvbXBvbmVudCBmcm9tICdDb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWUnO1xcbmltcG9ydCBQYWdpbmF0aW9uIGZyb20gJ0NvbXBvbmVudHMvVGFibGVQYWdpbmF0aW9uLnZ1ZSc7XFxuaW1wb3J0IE11bHRpc2VsZWN0IGZyb20gJ0B2dWVmb3JtL211bHRpc2VsZWN0JztcXG5pbXBvcnQgeyB3YXRjaElnbm9yYWJsZSB9IGZyb20gJ0B2dWV1c2UvY29yZSc7XFxuaW1wb3J0IERhdGVSYW5nZVdpZGdldCBmcm9tICdDb21wb25lbnRzL0RhdGVSYW5nZVdpZGdldC52dWUnO1xcblxcbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XFxuICBuYW1lOiAnVGFibGVMaXN0JyxcXG4gIGNvbXBvbmVudHM6IHtcXG4gICAgQnRuQ29tcG9uZW50OiBCdG5Db21wb25lbnQsXFxuICAgIFBhZ2luYXRpb246IFBhZ2luYXRpb24sXFxuICAgIE11bHRpc2VsZWN0OiBNdWx0aXNlbGVjdCxcXG4gICAgRGF0ZVJhbmdlV2lkZ2V0OiBEYXRlUmFuZ2VXaWRnZXQsXFxuICB9LFxcbiAgcHJvcHM6IHtcXG4gICAgY291bnRyaWVzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcXG4gICAgc2V0dXBDb21wbGV0ZW5lc3M6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxcbiAgICByZWdpc3RyYXRpb25UeXBlczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXFxuICAgIHB1Ymxpc2hlclR5cGVzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcXG4gICAgZGF0YUxpY2Vuc2VzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcXG4gICAgb2xkZXN0RGF0ZXM6IHtcXG4gICAgICB0eXBlOiBTdHJpbmcsXFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXFxuICAgIH0sXFxuICB9LFxcblxcbiAgc2V0dXAocHJvcHMpIHtcXG4gICAgLy8gaW5qZWN0XFxuICAgIGludGVyZmFjZSBUb2FzdEludGVyZmFjZSB7XFxuICAgICAgdmlzaWJpbGl0eTogYm9vbGVhbjtcXG4gICAgICBtZXNzYWdlOiBzdHJpbmc7XFxuICAgICAgdHlwZTogYm9vbGVhbjtcXG4gICAgfVxcbiAgICBjb25zdCB0b2FzdE1lc3NhZ2UgPSBpbmplY3QoJ3RvYXN0RGF0YScpIGFzIFRvYXN0SW50ZXJmYWNlO1xcblxcbiAgICBpbnRlcmZhY2UgTG9hZGVySW50ZXJmYWNlIHtcXG4gICAgICBzdGF0dXM6IGJvb2xlYW47XFxuICAgICAgdGV4dDogc3RyaW5nO1xcbiAgICB9XFxuXFxuICAgIGNvbnN0IGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XFxuICAgIGNvbnN0IGxvYWRlciA9IGluamVjdCgnbG9hZGVyJykgYXMgTG9hZGVySW50ZXJmYWNlO1xcbiAgICBjb25zdCBkYXRlRHJvcGRvd24gPSByZWYoKTtcXG4gICAgY29uc3QgY2xlYXJEYXRlID0gcmVmKGZhbHNlKTtcXG4gICAgY29uc3QgZGF0ZVR5cGUgPSByZWYoJ0FsbCBUaW1lJyk7XFxuXFxuICAgIC8vdHlwZWZhY2VcXG4gICAgaW50ZXJmYWNlIG9yZ2FuaXphdGlvbkludGVyZmFjZSB7XFxuICAgICAgZGF0YTogb0RhdGFJbnRlcmZhY2U7XFxuICAgICAgc3RhdHVzOiBzdHJpbmc7XFxuICAgIH1cXG5cXG4gICAgaW50ZXJmYWNlIG9EYXRhSW50ZXJmYWNlIHtcXG4gICAgICBkYXRhOiB7XFxuICAgICAgICB0b3RhbDogbnVtYmVyO1xcblxcbiAgICAgICAgaWQ6IG51bWJlcjtcXG4gICAgICAgIG5hbWU6IHtcXG4gICAgICAgICAgbmFycmF0aXZlOiBzdHJpbmc7XFxuICAgICAgICB9W107XFxuICAgICAgICBvcmdhbml6YXRpb25fdXJsOiBzdHJpbmc7XFxuICAgICAgICB1c2VyOiB7XFxuICAgICAgICAgIGVtYWlsOiBzdHJpbmc7XFxuICAgICAgICAgIGlkOiBudW1iZXI7XFxuICAgICAgICB9O1xcbiAgICAgICAgdXBkYXRlZF9hdDogRGF0ZTtcXG4gICAgICAgIGNvdW50cnk6IHN0cmluZztcXG4gICAgICAgIGNyZWF0ZWRfYXQ6IERhdGU7XFxuICAgICAgICBsYXN0X2xvZ2dlZF9pbjogRGF0ZTtcXG4gICAgICAgIGFsbF9hY3Rpdml0aWVzX2NvdW50OiBudW1iZXI7XFxuICAgICAgICBwdWJsaXNoZXJfdHlwZTogc3RyaW5nIHwgbnVtYmVyO1xcbiAgICAgICAgZGF0YV9saWNlbnNlOiBzdHJpbmc7XFxuICAgICAgfVtdO1xcbiAgICAgIGxhc3RfcGFnZTogbnVtYmVyO1xcbiAgICAgIGN1cnJlbnRfcGFnZTogbnVtYmVyO1xcbiAgICB9XFxuXFxuICAgIGNvbnN0IGdldENvdW50cmllc1dpdGhQcmVmaXggPSAoKSA9PiB7XFxuICAgICAgY29uc3QgcmV0dXJuVmFsdWVGb3JDb3VudHJpZXMgPSB7fTtcXG4gICAgICBjb25zdCBjb3VudHJ5Q29kZXMgPSBPYmplY3Qua2V5cyhwcm9wcy5jb3VudHJpZXMpO1xcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnRyeUNvZGVzLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICByZXR1cm5WYWx1ZUZvckNvdW50cmllc1tjb3VudHJ5Q29kZXNbaV1dID0gYCR7Y291bnRyeUNvZGVzW2ldfSAtICR7XFxuICAgICAgICAgIHByb3BzLmNvdW50cmllc1tjb3VudHJ5Q29kZXNbaV1dXFxuICAgICAgICB9YDtcXG4gICAgICB9XFxuICAgICAgcmV0dXJuIHJldHVyblZhbHVlRm9yQ291bnRyaWVzO1xcbiAgICB9O1xcblxcbiAgICBjb25zdCBjb3VudHJpZXNXaXRoUHJlZml4ID0gZ2V0Q291bnRyaWVzV2l0aFByZWZpeCgpO1xcblxcbiAgICAvLyByZWFjdGl2aXR5XFxuICAgIGxldCBvcmdhbmlzYXRpb25EYXRhOiBvcmdhbml6YXRpb25JbnRlcmZhY2UgPSByZWFjdGl2ZSh7XFxuICAgICAgZGF0YToge30gYXMgb0RhdGFJbnRlcmZhY2UsXFxuICAgICAgc3RhdHVzOiAnZmV0Y2hpbmcnLFxcbiAgICB9KTtcXG5cXG4gICAgbGV0IG11bHRpc2VsZWN0U3R5bGUgPSByZWYoe30pO1xcblxcbiAgICBsZXQgZmlsdGVyID0gcmVhY3RpdmUoe1xcbiAgICAgIHB1Ymxpc2hlcl90eXBlOiBbXSxcXG4gICAgICBkYXRhX2xpY2Vuc2U6IFtdLFxcbiAgICAgIGNvdW50cnk6IFtdLFxcbiAgICAgIGNvbXBsZXRlbmVzczogJycsXFxuICAgICAgcmVnaXN0cmF0aW9uX3R5cGU6ICcnLFxcbiAgICAgIHN0YXJ0X2RhdGU6ICcnLFxcbiAgICAgIGVuZF9kYXRlOiAnJyxcXG4gICAgICBkYXRlX3R5cGU6ICdjcmVhdGVkX2F0JyxcXG4gICAgICBzZWxlY3RlZF9kYXRlX2ZpbHRlcjogJycsXFxuICAgIH0pO1xcbiAgICBjb25zdCByZXNldFBhZ2luYXRpb24gPSByZWYoZmFsc2UpO1xcbiAgICBjb25zdCB0b3RhbE9yZ2FuaXNhdGlvbiA9IHJlZigwKTtcXG4gICAgbGV0IHJlZ2lzdHJ5QXBpS2V5U3RhdHVzOiBib29sZWFuW10gPSByZWFjdGl2ZShbXSk7XFxuICAgIGxldCBkZWZhdWx0VmFsdWVTdGF0dXM6IGJvb2xlYW5bXSA9IHJlYWN0aXZlKFtdKTtcXG4gICAgY29uc3Qgc2hvd011bHRpU2VsZWN0V2l0aFNlYXJjaCA9IHJlZihmYWxzZSk7XFxuICAgIGxldCBkcm9wZG93blJhbmdlID0ge1xcbiAgICAgIGNyZWF0ZWRfYXQ6ICdSZWdpc3RlcmVkIGRhdGUgcmFuZ2UnLFxcbiAgICAgIGxhc3RfbG9nZ2VkX2luOiAnTGFzdCBsb2dpbiBkYXRlIHJhbmdlJyxcXG4gICAgfTtcXG4gICAgY29uc3Qgc29ydFBhcmFtcyA9IHJlZih7IG9yZGVyQnk6ICcnLCBkaXJlY3Rpb246ICcnIH0pO1xcblxcbiAgICBjb25zdCB7IGlnbm9yZVVwZGF0ZXMgfSA9IHdhdGNoSWdub3JhYmxlKGZpbHRlciwgKCkgPT4gdW5kZWZpbmVkKTtcXG4gICAgd2F0Y2goXFxuICAgICAgKCkgPT4gc2hvd011bHRpU2VsZWN0V2l0aFNlYXJjaC52YWx1ZSxcXG4gICAgICAodmFsdWUpID0+IHtcXG4gICAgICAgIGlmICh2YWx1ZSkge1xcbiAgICAgICAgICByb3RhdGVDbGFzcy52YWx1ZSA9ICdyb3RhdGUtMTgwJztcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgIHJvdGF0ZUNsYXNzLnZhbHVlID0gJ3JvdGF0ZS0wJztcXG4gICAgICAgIH1cXG4gICAgICAgIGlmICh2YWx1ZSkge1xcbiAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGNsb3NlUHVibGlzaGVyTW9kZWwpO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjbG9zZVB1Ymxpc2hlck1vZGVsKTtcXG4gICAgICAgIH1cXG4gICAgICB9XFxuICAgICk7XFxuXFxuICAgIGNvbnN0IGNsZWFyRGF0ZUZpbHRlciA9ICgpID0+IHtcXG4gICAgICBmaWx0ZXIuc3RhcnRfZGF0ZSA9ICcnO1xcbiAgICAgIGZpbHRlci5lbmRfZGF0ZSA9ICcnO1xcbiAgICAgIGZpbHRlci5zZWxlY3RlZF9kYXRlX2ZpbHRlciA9ICcnO1xcbiAgICAgIGNsZWFyRGF0ZS52YWx1ZSA9IHRydWU7XFxuICAgIH07XFxuXFxuICAgIGNvbnN0IGNsb3NlUHVibGlzaGVyTW9kZWwgPSAoKSA9PiB7XFxuICAgICAgc2hvd011bHRpU2VsZWN0V2l0aFNlYXJjaC52YWx1ZSA9IGZhbHNlO1xcbiAgICB9O1xcbiAgICBjb25zdCBnZW5lcmF0ZUxhYmVsID0gKGxhYmVsKSA9PiB7XFxuICAgICAgcmV0dXJuIHsgJy0tbGFiZWwnOiBgJyR7bGFiZWx9J2AgfTtcXG4gICAgfTtcXG5cXG4gICAgLy9saWZlY3ljbGVcXG4gICAgb25Nb3VudGVkKCgpID0+IHtcXG4gICAgICBsZXQgZmlsdGVyUGFyYW1zID0gZ2V0RmlsdGVyUGFyYW1zRnJvbVByZXZpb3VzUGFnZSgpO1xcblxcbiAgICAgIGlmIChmaWx0ZXJQYXJhbXMpIHtcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsdGVyUGFyYW1zLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgIGxldCBrZXkgPSBrZWJhYkNhc2VUb1NuYWtlY2FzZShmaWx0ZXJQYXJhbXNbaV1bMF0pO1xcbiAgICAgICAgICBsZXQgdmFsdWUgPSBmaWx0ZXJQYXJhbXNbaV1bMV07XFxuXFxuICAgICAgICAgIGlmIChbJ3B1Ymxpc2hlcl90eXBlJywgJ2RhdGFfbGljZW5zZScsICdjb3VudHJ5J10uaW5jbHVkZXMoa2V5KSkge1xcbiAgICAgICAgICAgIGZpbHRlcltrZXldLnB1c2godmFsdWUpO1xcbiAgICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2RhdGVfdHlwZScpIHtcXG4gICAgICAgICAgICBkYXRlVHlwZS52YWx1ZSA9IHZhbHVlLnNwbGl0KCctJykuam9pbignICcpO1xcbiAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIGZpbHRlcltrZXldID0gdmFsdWU7XFxuICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICB9XFxuXFxuICAgICAgZmV0Y2hPcmdhbmlzYXRpb24oMSk7XFxuICAgIH0pO1xcblxcbiAgICBjb25zdCBnZXRGaWx0ZXJQYXJhbXNGcm9tUHJldmlvdXNQYWdlID0gKCkgPT4ge1xcbiAgICAgIGxldCBxdWVyeVN0cmluZyA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmPy50b1N0cmluZygpO1xcblxcbiAgICAgIGlmIChxdWVyeVN0cmluZykge1xcbiAgICAgICAgcXVlcnlTdHJpbmcgPSBxdWVyeVN0cmluZy5zcGxpdCgnPycpWzFdO1xcblxcbiAgICAgICAgbGV0IHF1ZXJ5UGFyYW1zSW5LZXlWYWw6IG9iamVjdFtdID0gW107XFxuICAgICAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHF1ZXJ5U3RyaW5nPy5zcGxpdCgnJicpO1xcblxcbiAgICAgICAgaWYgKHF1ZXJ5UGFyYW1zKSB7XFxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcXVlcnlQYXJhbXMubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICBsZXQgW2tleSwgdmFsdWVdID0gcXVlcnlQYXJhbXNbaV0uc3BsaXQoJz0nKTtcXG4gICAgICAgICAgICBpZiAoa2V5KSB7XFxuICAgICAgICAgICAgICBxdWVyeVBhcmFtc0luS2V5VmFsLnB1c2goW2tleSwgdmFsdWUgPz8gJyddKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgIH1cXG4gICAgICAgIH1cXG5cXG4gICAgICAgIHJldHVybiBxdWVyeVBhcmFtc0luS2V5VmFsO1xcbiAgICAgIH1cXG5cXG4gICAgICByZXR1cm4gZmFsc2U7XFxuICAgIH07XFxuXFxuICAgIC8qKlxcbiAgICAgKiBGZXRjaGluZyBvcmdhbml6YXRpb24gbGlzdFxcbiAgICAgKlxcbiAgICAgKi9cXG4gICAgY29uc3QgY3VycmVudFVSTCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xcbiAgICBjb25zdCBmZXRjaE9yZ2FuaXNhdGlvbiA9IChhY3RpdmVfcGFnZSA9IDEpID0+IHtcXG4gICAgICBvcmdhbmlzYXRpb25EYXRhLnN0YXR1cyA9ICdmZXRjaGluZyc7XFxuICAgICAgbGV0IHF1ZXJ5U3RyaW5nID0gJyc7XFxuICAgICAgaWYgKGN1cnJlbnRVUkwuaW5jbHVkZXMoJz8nKSkge1xcbiAgICAgICAgcXVlcnlTdHJpbmcgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoO1xcbiAgICAgIH1cXG5cXG4gICAgICBhY3RpdmVfcGFnZSA9IGFjdGl2ZV9wYWdlID8/IDE7XFxuICAgICAgbGV0IGVuZHBvaW50ID0gYC9saXN0LW9yZ2FuaXNhdGlvbnMvcGFnZS8ke2FjdGl2ZV9wYWdlfSR7cXVlcnlTdHJpbmd9YDtcXG5cXG4gICAgICBpZiAoc29ydFBhcmFtcy52YWx1ZS5vcmRlckJ5KSB7XFxuICAgICAgICB1cmxQYXJhbXMuYXBwZW5kKCdvcmRlckJ5Jywgc29ydFBhcmFtcy52YWx1ZS5vcmRlckJ5KTtcXG4gICAgICAgIHVybFBhcmFtcy5hcHBlbmQoJ2RpcmVjdGlvbicsIHNvcnRQYXJhbXMudmFsdWUuZGlyZWN0aW9uKTtcXG4gICAgICB9XFxuXFxuICAgICAgaWYgKFxcbiAgICAgICAgaXNGaWx0ZXJBcHBsaWVkLnZhbHVlIHx8XFxuICAgICAgICBCb29sZWFuKHNvcnRQYXJhbXMudmFsdWUub3JkZXJCeSAmJiBzb3J0UGFyYW1zLnZhbHVlLmRpcmVjdGlvbilcXG4gICAgICApIHtcXG4gICAgICAgIHF1ZXJ5U3RyaW5nID0gcXVlcnlTdHJpbmcgPz8gJyZxPSc7XFxuICAgICAgICBlbmRwb2ludCA9IHF1ZXJ5U3RyaW5nICE9PSAnJyA/IGVuZHBvaW50IDogYCR7ZW5kcG9pbnR9YDtcXG4gICAgICAgIGZvciAoY29uc3QgZmlsdGVyS2V5IGluIGZpbHRlcikge1xcbiAgICAgICAgICBpZiAoZmlsdGVyW2ZpbHRlcktleV0gJiYgZmlsdGVyW2ZpbHRlcktleV0ubGVuZ3RoID4gMCkge1xcbiAgICAgICAgICAgIHVybFBhcmFtcy5hcHBlbmQoZmlsdGVyS2V5LCBmaWx0ZXJbZmlsdGVyS2V5XSk7XFxuICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICB9XFxuXFxuICAgICAgYXhpb3NcXG4gICAgICAgIC5nZXQoZW5kcG9pbnQsIHtcXG4gICAgICAgICAgcGFyYW1zOlxcbiAgICAgICAgICAgIGlzRmlsdGVyQXBwbGllZC52YWx1ZSB8fFxcbiAgICAgICAgICAgIEJvb2xlYW4oc29ydFBhcmFtcy52YWx1ZS5vcmRlckJ5ICYmIHNvcnRQYXJhbXMudmFsdWUuZGlyZWN0aW9uKVxcbiAgICAgICAgICAgICAgPyB1cmxQYXJhbXNcXG4gICAgICAgICAgICAgIDogJycsXFxuICAgICAgICB9KVxcbiAgICAgICAgLnRoZW4oKHJlcykgPT4ge1xcbiAgICAgICAgICBjb25zdCByZXNwb25zZSA9IHJlcy5kYXRhO1xcbiAgICAgICAgICB0b3RhbE9yZ2FuaXNhdGlvbi52YWx1ZSA9IHJlc3BvbnNlLmRhdGE/LnRvdGFsO1xcblxcbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhLmRhdGEubGVuZ3RoID09PSAwKSB7XFxuICAgICAgICAgICAgICBvcmdhbmlzYXRpb25EYXRhLnN0YXR1cyA9ICdlbXB0eSc7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgIG9yZ2FuaXNhdGlvbkRhdGEuc3RhdHVzID0gJ3N1Y2Nlc3MnO1xcbiAgICAgICAgICAgICAgb3JnYW5pc2F0aW9uRGF0YS5kYXRhID0gcmVzcG9uc2UuZGF0YTtcXG5cXG4gICAgICAgICAgICAgIHJlZnJlc2hTdGF0dXNBcnJheXMob3JnYW5pc2F0aW9uRGF0YS5kYXRhKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgb3JnYW5pc2F0aW9uRGF0YS5zdGF0dXMgPSAnZmFpbGVkIHRvIHJldHJpZXZlIGRhdGEnO1xcbiAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgICB1cmxQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHF1ZXJ5U3RyaW5nKTtcXG4gICAgfTtcXG5cXG4vKipcXG4gKiBQcm94eSBVc2VyXFxuICovXFxuLy8gZGlzcGxheS9oaWRlIHZhbGlkYXRvciBsb2FkZXJcXG5jb25zdCBwcm94eVVzZXIgPSAoaWQ6IG51bWJlcikgPT4ge1xcbiAgbG9hZGVyLnN0YXR1cyA9IHRydWU7XFxuICBsb2FkZXIudGV4dCA9IGxhbmd1YWdlLmJ1dHRvbl9sYW5nLnByb3h5X2xvZ2luO1xcbiAgY29uc3QgZW5kcG9pbnQgPSBgL3Byb3h5LW9yZ2FuaXNhdGlvbi8ke2lkfWA7XFxuXFxuICAgICAgYXhpb3MuZ2V0KGVuZHBvaW50KS50aGVuKChyZXMpID0+IHtcXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gcmVzLmRhdGE7XFxuXFxuICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcXG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVwbGFjZSgnL2FjdGl2aXRpZXMnKTtcXG4gICAgICAgICAgfSwgMTAwMCk7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICBsb2FkZXIuc3RhdHVzID0gZmFsc2U7XFxuICAgICAgICAgIHRvYXN0TWVzc2FnZS5tZXNzYWdlID0gcmVzcG9uc2UubWVzc2FnZTtcXG4gICAgICAgICAgdG9hc3RNZXNzYWdlLnR5cGUgPSByZXNwb25zZS5zdWNjZXNzO1xcbiAgICAgICAgfVxcbiAgICAgIH0pO1xcbiAgICB9O1xcblxcbiAgICAvKipcXG4gICAgICogU29ydGluZyBCeSB1cGRhdGUgb25cXG4gICAgICovXFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcXG4gICAgbGV0IHF1ZXJ5ID0gJycsXFxuICAgICAgZGVmYXVsdFNvcnREaXJlY3Rpb24gPSAnZGVzY2VuZGluZycsXFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xcbiAgICAgIHNvcnREaXJlY3Rpb24gPSAnZGVzYyc7XFxuXFxuICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaDtcXG5cXG4gICAgbGV0IHVybFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMocXVlcnlTdHJpbmcpO1xcbiAgICBsZXQgb3JkZXJUeXBlID0gcmVmKCcnKTtcXG4gICAgb3JkZXJUeXBlLnZhbHVlID0gdXJsUGFyYW1zLmdldCgnb3JkZXJCeScpID8/ICcnO1xcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXFxuICAgIGxldCByYW5nZSA9ICcnO1xcblxcbiAgICBjb25zdCBzb3J0aW5nRGlyZWN0aW9uID0gKCkgPT4ge1xcbiAgICAgIHJldHVybiBzb3J0UGFyYW1zLnZhbHVlLmRpcmVjdGlvbiA9PT0gJ2FzYycgPyAnZGVzY2VuZGluZycgOiAnYXNjZW5kaW5nJztcXG4gICAgfTtcXG5cXG4gICAgY29uc3Qgc29ydEJ5ID0gYXN5bmMgKG9yZGVyKSA9PiB7XFxuICAgICAgcmVzZXRQYWdpbmF0aW9uLnZhbHVlID0gdHJ1ZTtcXG4gICAgICBzb3J0UGFyYW1zLnZhbHVlLm9yZGVyQnkgPSBvcmRlcjtcXG4gICAgICBzb3J0UGFyYW1zLnZhbHVlLmRpcmVjdGlvbiA9XFxuICAgICAgICBzb3J0UGFyYW1zLnZhbHVlLmRpcmVjdGlvbiA9PT0gJ2Rlc2MnID8gJ2FzYycgOiAnZGVzYyc7XFxuXFxuICAgICAgaWYgKGN1cnJlbnRVUkwuaW5jbHVkZXMoJz8nKSkge1xcbiAgICAgICAgcXVlcnkgPSB1cmxQYXJhbXMuZ2V0KCdxJykgPz8gJyc7XFxuICAgICAgICBzb3J0RGlyZWN0aW9uID0gdXJsUGFyYW1zLmdldCgnZGlyZWN0aW9uJykgPT09ICdkZXNjJyA/ICdhc2MnIDogJ2Rlc2MnO1xcblxcbiAgICAgICAgbGV0IHN0YXJ0RGF0ZSA9IHVybFBhcmFtcy5nZXQoJ3N0YXJ0X2RhdGUnKSA/PyBmYWxzZTtcXG4gICAgICAgIGxldCBlbmREYXRlID0gdXJsUGFyYW1zLmdldCgnZW5kX2RhdGUnKSA/PyBmYWxzZTtcXG5cXG4gICAgICAgIGlmIChzdGFydERhdGUgJiYgZW5kRGF0ZSkge1xcbiAgICAgICAgICByYW5nZSA9IGAmc3RhcnRfZGF0ZT0ke3N0YXJ0RGF0ZX0mZW5kX2RhdGU9JHtlbmREYXRlfWA7XFxuICAgICAgICB9XFxuICAgICAgfVxcblxcbiAgICAgIGF3YWl0IGZldGNoT3JnYW5pc2F0aW9uKDEpO1xcbiAgICAgIHJlc2V0UGFnaW5hdGlvbi52YWx1ZSA9IGZhbHNlO1xcbiAgICB9O1xcblxcbiAgICB3YXRjaChcXG4gICAgICAoKSA9PiBbXFxuICAgICAgICBmaWx0ZXIuY291bnRyeSxcXG4gICAgICAgIGZpbHRlci5jb21wbGV0ZW5lc3MsXFxuICAgICAgICBmaWx0ZXIucmVnaXN0cmF0aW9uX3R5cGUsXFxuICAgICAgICBmaWx0ZXIucHVibGlzaGVyX3R5cGUsXFxuICAgICAgICBmaWx0ZXIuZGF0YV9saWNlbnNlLFxcbiAgICAgICAgZmlsdGVyLnN0YXJ0X2RhdGUsXFxuICAgICAgICBmaWx0ZXIuZW5kX2RhdGUsXFxuICAgICAgICBmaWx0ZXIuZGF0ZV90eXBlLFxcbiAgICAgIF0sXFxuICAgICAgKCkgPT4ge1xcbiAgICAgICAgZmV0Y2hPcmdhbmlzYXRpb24oKTtcXG4gICAgICB9LFxcbiAgICAgIHsgZGVlcDogdHJ1ZSB9XFxuICAgICk7XFxuXFxuICAgIGNvbnN0IHJlc2V0QWxsRmlsdGVycyA9ICgpID0+IHtcXG4gICAgICBpZ25vcmVVcGRhdGVzKCgpID0+IHtcXG4gICAgICAgIGZpbHRlci5jb3VudHJ5ID0gW107XFxuICAgICAgICBmaWx0ZXIucHVibGlzaGVyX3R5cGUgPSBbXTtcXG4gICAgICAgIGZpbHRlci5kYXRhX2xpY2Vuc2UgPSBbXTtcXG4gICAgICAgIGZpbHRlci5jb21wbGV0ZW5lc3MgPSAnJztcXG4gICAgICAgIGZpbHRlci5yZWdpc3RyYXRpb25fdHlwZSA9ICcnO1xcbiAgICAgICAgZmlsdGVyLnN0YXJ0X2RhdGUgPSAnJztcXG4gICAgICAgIGZpbHRlci5lbmRfZGF0ZSA9ICcnO1xcbiAgICAgICAgZmlsdGVyLmRhdGVfdHlwZSA9ICdjcmVhdGVkX2F0JztcXG4gICAgICAgIGZpbHRlci5zZWxlY3RlZF9kYXRlX2ZpbHRlciA9ICcnO1xcbiAgICAgICAgY2xlYXJEYXRlLnZhbHVlID0gdHJ1ZTtcXG4gICAgICB9KTtcXG4gICAgfTtcXG5cXG4gICAgY29uc3QgaXNGaWx0ZXJBcHBsaWVkID0gY29tcHV0ZWQoKCkgPT4ge1xcbiAgICAgIHJldHVybiAoXFxuICAgICAgICBmaWx0ZXIuY291bnRyeS5sZW5ndGggK1xcbiAgICAgICAgICBmaWx0ZXIucHVibGlzaGVyX3R5cGUubGVuZ3RoICtcXG4gICAgICAgICAgZmlsdGVyLmRhdGFfbGljZW5zZS5sZW5ndGggIT1cXG4gICAgICAgICAgMCB8fFxcbiAgICAgICAgZmlsdGVyLmNvbXBsZXRlbmVzcyAhPT0gJycgfHxcXG4gICAgICAgIGZpbHRlci5yZWdpc3RyYXRpb25fdHlwZSAhPT0gJycgfHxcXG4gICAgICAgIChmaWx0ZXIuc3RhcnRfZGF0ZSAhPT0gJycgJiYgZmlsdGVyLmVuZF9kYXRlICE9PSAnJylcXG4gICAgICApO1xcbiAgICB9KTtcXG5cXG4gICAgY29uc3QgcmVmcmVzaFN0YXR1c0FycmF5cyA9IChvcmdEYXRhKSA9PiB7XFxuICAgICAgZm9yIChsZXQgb3JnRGF0dW0gb2Ygb3JnRGF0YS5kYXRhKSB7XFxuICAgICAgICByZWdpc3RyeUFwaUtleVN0YXR1c1tvcmdEYXR1bS5pZF0gPVxcbiAgICAgICAgICBvcmdEYXR1bT8uc2V0dGluZ3M/LnB1Ymxpc2hpbmdfaW5mbz8udG9rZW5fdmVyaWZpY2F0aW9uID8/IGZhbHNlO1xcbiAgICAgICAgZGVmYXVsdFZhbHVlU3RhdHVzW29yZ0RhdHVtLmlkXSA9IGNoZWNrSWZEZWZhdWx0VmFsdWVzQXJlVmFsaWQoXFxuICAgICAgICAgIG9yZ0RhdHVtID8gb3JnRGF0dW0uc2V0dGluZ3MgOiBmYWxzZVxcbiAgICAgICAgKTtcXG4gICAgICB9XFxuICAgIH07XFxuXFxuICAgIGNvbnN0IGNoZWNrSWZEZWZhdWx0VmFsdWVzQXJlVmFsaWQgPSAoc2V0dGluZ3MpID0+IHtcXG4gICAgICBpZiAoc2V0dGluZ3MpIHtcXG4gICAgICAgIGxldCBkZWZhdWx0VmFsdWVzID0gc2V0dGluZ3MuZGVmYXVsdF92YWx1ZXM7XFxuICAgICAgICBsZXQgYWN0aXZpdHlEZWZhdWx0VmFsdWVzID0gc2V0dGluZ3MuYWN0aXZpdHlfZGVmYXVsdF92YWx1ZXM7XFxuICAgICAgICByZXR1cm4gISEoXFxuICAgICAgICAgIChkZWZhdWx0VmFsdWVzPy5kZWZhdWx0X2N1cnJlbmN5ID8/IGZhbHNlKSAmJlxcbiAgICAgICAgICAoZGVmYXVsdFZhbHVlcz8uZGVmYXVsdF9sYW5ndWFnZSA/PyBmYWxzZSkgJiZcXG4gICAgICAgICAgKGFjdGl2aXR5RGVmYXVsdFZhbHVlcz8uaGllcmFyY2h5ID8/IGZhbHNlKSAmJlxcbiAgICAgICAgICAoYWN0aXZpdHlEZWZhdWx0VmFsdWVzPy5idWRnZXRfbm90X3Byb3ZpZGVkID8/IGZhbHNlKSAmJlxcbiAgICAgICAgICAoYWN0aXZpdHlEZWZhdWx0VmFsdWVzPy5odW1hbml0YXJpYW4gIT0gbnVsbCB8fFxcbiAgICAgICAgICAgIGFjdGl2aXR5RGVmYXVsdFZhbHVlcz8uaHVtYW5pdGFyaWFuICE9ICcnIHx8XFxuICAgICAgICAgICAgYWN0aXZpdHlEZWZhdWx0VmFsdWVzPy5odW1hbml0YXJpYW4gIT0gZmFsc2UpXFxuICAgICAgICApO1xcbiAgICAgIH1cXG5cXG4gICAgICByZXR1cm4gZmFsc2U7XFxuICAgIH07XFxuXFxuICAgIGNvbnN0IHNldERhdGVSYW5nZURhdGUgPSAoc3RhcnREYXRlLCBlbmREYXRlLCBzZWxlY3RlZERhdGVGaWx0ZXIgPSAnJykgPT4ge1xcbiAgICAgIGZpbHRlci5zdGFydF9kYXRlID0gc3RhcnREYXRlO1xcbiAgICAgIGZpbHRlci5lbmRfZGF0ZSA9IGVuZERhdGU7XFxuICAgICAgZmlsdGVyLnNlbGVjdGVkX2RhdGVfZmlsdGVyID0gc2VsZWN0ZWREYXRlRmlsdGVyO1xcbiAgICB9O1xcblxcbiAgICBjb25zdCBzZXREYXRlVHlwZSA9IChkYXRlVHlwZSkgPT4ge1xcbiAgICAgIGZpbHRlci5kYXRlX3R5cGUgPSBkYXRlVHlwZTtcXG4gICAgfTtcXG5cXG4gICAgY29uc3Qgcm90YXRlQ2xhc3MgPSByZWYoJycpO1xcblxcbiAgICBjb25zdCB0b2dnbGVTaG93TXVsdGlTZWxlY3QgPSAoZXZlbnQpID0+IHtcXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcXG4gICAgICBjb25zdCByZWN0ID0gZXZlbnQudGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xcbiAgICAgIG11bHRpc2VsZWN0U3R5bGUudmFsdWUgPSB7XFxuICAgICAgICB0b3A6IE51bWJlcihyZWN0LnRvcCkgPCAxMDAgPyAyMTAgKyAncHgnIDogTnVtYmVyKHJlY3QudG9wKSArIDUwICsgJ3B4JyxcXG4gICAgICAgIGxlZnQ6IE51bWJlcihyZWN0LmxlZnQpICsgJ3B4JyxcXG4gICAgICB9O1xcbiAgICAgIHNob3dNdWx0aVNlbGVjdFdpdGhTZWFyY2gudmFsdWUgPSAhc2hvd011bHRpU2VsZWN0V2l0aFNlYXJjaC52YWx1ZTtcXG4gICAgfTtcXG5cXG4gICAgY29uc3Qgc2V0U2VsZWN0ZWRQdWJsaXNoZXIgPSAocHVibGlzaGVyVHlwZXMpID0+IHtcXG4gICAgICBmaWx0ZXIucHVibGlzaGVyX3R5cGUgPSBwdWJsaXNoZXJUeXBlcztcXG4gICAgfTtcXG5cXG4gICAgLypcXG4gICAgICogRm9yIG1hcHBpbmcgY291bnRyeSwgcHVibGlzaGVyX3R5cGUgYW5kIGRhdGEgbGljZW5zZVxcbiAgICAgKi9cXG4gICAgY29uc3Qgc2hvd01hcHBlZERhdGEgPSAoa2V5LCBkYXRhLCBtYXApID0+IHtcXG4gICAgICBpZiAoZGF0YSkge1xcbiAgICAgICAgaWYgKGtleSA9PSAnZGF0YV9saWNlbnNlJykge1xcbiAgICAgICAgICBsZXQgbGljZW5zZSA9IGRhdGFba2V5XTtcXG4gICAgICAgICAgbGljZW5zZSA9IGxpY2Vuc2U/LnRyaW0oKTtcXG4gICAgICAgICAgcmV0dXJuIGxpY2Vuc2UgPyBtYXBbbGljZW5zZV0gOiBsYW5ndWFnZS5jb21tb25fbGFuZy5taXNzaW5nLm5vdF9hdmFpbGFibGU7XFxuICAgICAgICB9XFxuXFxuICAgICAgICByZXR1cm4gZGF0YVtrZXldID8gbWFwW2RhdGFba2V5XV0gOiBsYW5ndWFnZS5jb21tb25fbGFuZy5taXNzaW5nLm5vdF9hdmFpbGFibGU7XFxuICAgICAgfVxcbiAgICAgIHJldHVybiBsYW5ndWFnZS5jb21tb25fbGFuZy5taXNzaW5nLm5vdF9hdmFpbGFibGU7XFxuICAgIH07XFxuXFxuICAgIHJldHVybiB7XFxuICAgICAgQnRuQ29tcG9uZW50LFxcbiAgICAgIE11bHRpc2VsZWN0LFxcbiAgICAgIERhdGVSYW5nZVdpZGdldCxcXG4gICAgICBNdWx0aVNlbGVjdFdpdGhTZWFyY2gsXFxuICAgICAgb3JnYW5pc2F0aW9uRGF0YSxcXG4gICAgICBkcm9wZG93blJhbmdlLFxcbiAgICAgIHNldFNlbGVjdGVkUHVibGlzaGVyLFxcbiAgICAgIHRvZ2dsZVNob3dNdWx0aVNlbGVjdCxcXG4gICAgICBzZXREYXRlVHlwZSxcXG4gICAgICBzZXREYXRlUmFuZ2VEYXRlLFxcbiAgICAgIHNvcnRCeSxcXG4gICAgICByZXNldEFsbEZpbHRlcnMsXFxuICAgICAgc29ydGluZ0RpcmVjdGlvbixcXG4gICAgICBkZWZhdWx0U29ydERpcmVjdGlvbixcXG4gICAgICBwcm94eVVzZXIsXFxuICAgICAgZGF0ZUZvcm1hdCxcXG4gICAgICBmZXRjaE9yZ2FuaXNhdGlvbixcXG4gICAgICBkZWZhdWx0VmFsdWVTdGF0dXMsXFxuICAgICAgcmVnaXN0cnlBcGlLZXlTdGF0dXMsXFxuICAgICAgb3JkZXJUeXBlLFxcbiAgICAgIGNsZWFyRGF0ZSxcXG4gICAgICBmaWx0ZXIsXFxuICAgICAgc25ha2VDYXNlVG9TZW50ZW5jZUNhc2UsXFxuICAgICAgaXNGaWx0ZXJBcHBsaWVkLFxcbiAgICAgIHByb3BzLFxcbiAgICAgIHNob3dNdWx0aVNlbGVjdFdpdGhTZWFyY2gsXFxuICAgICAgZGF0ZVR5cGUsXFxuICAgICAgcm90YXRlQ2xhc3MsXFxuICAgICAgbXVsdGlzZWxlY3RTdHlsZSxcXG4gICAgICBjbGVhckRhdGVGaWx0ZXIsXFxuICAgICAgZGF0ZURyb3Bkb3duLFxcbiAgICAgIHNvcnRQYXJhbXMsXFxuICAgICAgcmVzZXRQYWdpbmF0aW9uLFxcbiAgICAgIHNob3dNYXBwZWREYXRhLFxcbiAgICAgIHRvdGFsT3JnYW5pc2F0aW9uLFxcbiAgICAgIGNvdW50cmllc1dpdGhQcmVmaXgsXFxuICAgICAgZ2VuZXJhdGVMYWJlbCxcXG4gICAgICBsYW5ndWFnZVxcbiAgICB9O1xcbiAgfSxcXG59KTtcXG48L3NjcmlwdD5cXG5cXG48c3R5bGU+XFxuLm11bHRpc2VsZWN0LXdyYXBwZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgei1pbmRleDogNTtcXG4gIHdpZHRoOiA0MjRweDtcXG4gIGhlaWdodDogZml0LWNvbnRlbnQ7XFxuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcXG4gIG92ZXJmbG93LXk6IGF1dG87XFxufVxcbi5tdWx0aXNlbGVjdC1sb29rYWxpa2Uge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmYgIWltcG9ydGFudDtcXG4gIGJvcmRlcjogMXB4IHNvbGlkICNkMWQ1ZGI7XFxuICBib3JkZXItcmFkaXVzOiA0cHg7XFxuICB3aWR0aDogMTYwcHggIWltcG9ydGFudDtcXG4gIGhlaWdodDogNDBweDtcXG4gIHBhZGRpbmc6IDEycHg7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxufVxcbjwvc3R5bGU+XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiXFxuQC13ZWJraXQta2V5ZnJhbWVzIHNwaW5uZXItMDYxMWQ5ZjAge1xcbjAlIHtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNTAlLCAtNTAlLCAwKSByb3RhdGUoMGRlZyk7XFxufVxcbjEwMCUge1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01MCUsIC01MCUsIDApIHJvdGF0ZSgzNjBkZWcpO1xcbn1cXG59XFxuQGtleWZyYW1lcyBzcGlubmVyLTA2MTFkOWYwIHtcXG4wJSB7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTUwJSwgLTUwJSwgMCkgcm90YXRlKDBkZWcpO1xcbn1cXG4xMDAlIHtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNTAlLCAtNTAlLCAwKSByb3RhdGUoMzYwZGVnKTtcXG59XFxufVxcbi5zcGluW2RhdGEtdi0wNjExZDlmMF06OmJlZm9yZSB7XFxuICAtd2Via2l0LWFuaW1hdGlvbjogMS41cyBsaW5lYXIgaW5maW5pdGUgc3Bpbm5lci0wNjExZDlmMDtcXG4gICAgICAgICAgYW5pbWF0aW9uOiAxLjVzIGxpbmVhciBpbmZpbml0ZSBzcGlubmVyLTA2MTFkOWYwO1xcbiAgLXdlYmtpdC1hbmltYXRpb24tcGxheS1zdGF0ZTogaW5oZXJpdDtcXG4gICAgICAgICAgYW5pbWF0aW9uLXBsYXktc3RhdGU6IGluaGVyaXQ7XFxuICBib3JkZXI6IHNvbGlkIDNweCAjY2ZkMGQxO1xcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogZ3JleTtcXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gIGNvbnRlbnQ6ICcnO1xcbiAgaGVpZ2h0OiAyMHB4O1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiA1MCU7XFxuICBsZWZ0OiA1MCU7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01MCUsIC01MCUsIDApO1xcbiAgd2lkdGg6IDIwcHg7XFxuICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xcbn1cXG4uc3BpbltkYXRhLXYtMDYxMWQ5ZjBdIHtcXG4gIGhlaWdodDogNDBweDtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgbWFyZ2luOiBhdXRvO1xcbn1cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi8uLi8uLi8uLi8uLi9Vc2VyTGlzdGluZy52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIjtBQTJ1Q0E7QUFDRTtJQUNFLGtEQUFrRDtBQUNwRDtBQUNBO0lBQ0Usb0RBQW9EO0FBQ3REO0FBQ0Y7QUFQQTtBQUNFO0lBQ0Usa0RBQWtEO0FBQ3BEO0FBQ0E7SUFDRSxvREFBb0Q7QUFDdEQ7QUFDRjtBQUVBO0VBQ0Usd0RBQXVDO1VBQXZDLGdEQUF1QztFQUN2QyxxQ0FBNkI7VUFBN0IsNkJBQTZCO0VBQzdCLHlCQUF5QjtFQUN6Qix5QkFBeUI7RUFDekIsa0JBQWtCO0VBQ2xCLFdBQVc7RUFDWCxZQUFZO0VBQ1osa0JBQWtCO0VBQ2xCLFFBQVE7RUFDUixTQUFTO0VBQ1QscUNBQXFDO0VBQ3JDLFdBQVc7RUFDWCxzQkFBc0I7QUFDeEI7QUFDQTtFQUNFLFlBQVk7RUFDWixrQkFBa0I7RUFDbEIsV0FBVztFQUNYLFlBQVk7QUFDZFwiLFwic291cmNlc0NvbnRlbnRcIjpbXCI8dGVtcGxhdGU+XFxuICA8ZGl2IGNsYXNzPVxcXCJweC02IHB5LTQgbWQ6cHgtMTBcXFwiPlxcbiAgICA8TG9hZGVyIHYtaWY9XFxcImlzTG9hZGVyVmlzaWJsZVxcXCIgLz5cXG4gICAgPGRpdiBjbGFzcz1cXFwibXktNCBmbGV4IGp1c3RpZnktYmV0d2VlblxcXCI+XFxuICAgICAgPGg0IGNsYXNzPVxcXCJtci00IHRleHQtM3hsIGZvbnQtYm9sZCB4bDp0ZXh0LWhlYWRpbmctNFxcXCI+e3sgbGFuZ3VhZ2UudXNlcl9sYW5nLnVzZXJzIH19PC9oND5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJpbmxpbmUtZmxleCBmbGV4LWNvbCBpdGVtcy1lbmQganVzdGlmeS1lbmQgZ2FwLTIgbWQ6ZmxleC1yb3dcXFwiPlxcbiAgICAgICAgPFRvYXN0XFxuICAgICAgICAgIHYtaWY9XFxcIlxcbiAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ICYmXFxuICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgJiZcXG4gICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSAhPT0gJydcXG4gICAgICAgICAgXFxcIlxcbiAgICAgICAgICA6bWVzc2FnZT1cXFwidG9hc3REYXRhLm1lc3NhZ2VcXFwiXFxuICAgICAgICAgIDp0eXBlPVxcXCJ0b2FzdERhdGEudHlwZVxcXCJcXG4gICAgICAgIC8+XFxuICAgICAgICA8YnV0dG9uXFxuICAgICAgICAgIHYtaWY9XFxcInVzZXJzRGF0YVsndG90YWwnXSA+IDBcXFwiXFxuICAgICAgICAgIHJlZj1cXFwiZHJvcGRvd25CdG5cXFwiXFxuICAgICAgICAgIGNsYXNzPVxcXCJidXR0b24gc2Vjb25kYXJ5LWJ0biB3aGl0ZXNwYWNlLW5vd3JhcCBmb250LWJvbGRcXFwiXFxuICAgICAgICAgIEBjbGljaz1cXFwiZG93bmxvYWRBbGxcXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIDxzdmctdnVlIGljb249XFxcImRvd25sb2FkLWZpbGVcXFwiIC8+XFxuICAgICAgICAgIHt7IGNoZWNrbGlzdC5sZW5ndGggPT09IDAgPyBsYW5ndWFnZS5idXR0b25fbGFuZy5kb3dubG9hZF9hbGwgOiAnJyB9fVxcbiAgICAgICAgPC9idXR0b24+XFxuICAgICAgICA8YnV0dG9uXFxuICAgICAgICAgIHYtaWY9XFxcInVzZXJSb2xlICE9PSAnZ2VuZXJhbF91c2VyJ1xcXCJcXG4gICAgICAgICAgY2xhc3M9XFxcInByaW1hcnktYnRuIHdoaXRlc3BhY2Utbm93cmFwXFxcIlxcbiAgICAgICAgICBAY2xpY2s9XFxcIlxcbiAgICAgICAgICAgICgpID0+IHtcXG4gICAgICAgICAgICAgIGVtcHR5Rm9ybURhdGEoKTtcXG4gICAgICAgICAgICAgIHNldEZvcm1FcnJvcigpO1xcbiAgICAgICAgICAgICAgYWRkVXNlckZvcm0gPSB0cnVlO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgXFxcIlxcbiAgICAgICAgPlxcbiAgICAgICAgICA8c3ZnLXZ1ZSBjbGFzcz1cXFwidGV4dC1iYXNlXFxcIiBpY29uPVxcXCJwbHVzLW91dGxpbmVkXFxcIiAvPnt7XFxuICAgICAgICAgICAgbGFuZ3VhZ2UuYnV0dG9uX2xhbmcuYWRkX2FfbmV3XFxuICAgICAgICAgIH19XFxuICAgICAgICAgIHt7XFxuICAgICAgICAgICAgdXNlclJvbGUgPT09ICdhZG1pbidcXG4gICAgICAgICAgICAgID8gbGFuZ3VhZ2UudXNlcl9sYW5nLnVzZXJzXFxuICAgICAgICAgICAgICA6IGxhbmd1YWdlLnVzZXJfbGFuZy51c2VyX3JvbGVzLmlhdGlfYWRtaW5cXG4gICAgICAgICAgfX1cXG4gICAgICAgIDwvYnV0dG9uPlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG5cXG4gICAgPGRpdj5cXG4gICAgICA8UG9wdXBNb2RhbFxcbiAgICAgICAgOm1vZGFsLWFjdGl2ZT1cXFwiYWRkVXNlckZvcm0gfHwgZWRpdFVzZXJGb3JtXFxcIlxcbiAgICAgICAgQGNsb3NlPVxcXCJcXG4gICAgICAgICAgKCkgPT4ge1xcbiAgICAgICAgICAgIGFkZFVzZXJGb3JtID0gZmFsc2U7XFxuICAgICAgICAgICAgZWRpdFVzZXJGb3JtID0gZmFsc2U7XFxuICAgICAgICAgIH1cXG4gICAgICAgIFxcXCJcXG4gICAgICA+XFxuICAgICAgICA8ZGl2XFxuICAgICAgICAgIGNsYXNzPVxcXCJwb3B1cC1tb2RlbFxcXCJcXG4gICAgICAgICAgQGtleXVwLmVudGVyPVxcXCJhZGRVc2VyRm9ybSA/IGNyZWF0ZVVzZXIoKSA6IHVwZGF0ZVVzZXIoKVxcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwibWItNSB0ZXh0LTJ4bCBmb250LWJvbGQgdGV4dC1ibHVlY29yYWxcXFwiPlxcbiAgICAgICAgICAgIHt7XFxuICAgICAgICAgICAgICBhZGRVc2VyRm9ybVxcbiAgICAgICAgICAgICAgICA/IGxhbmd1YWdlLmJ1dHRvbl9sYW5nLmFkZF9hX25ld1xcbiAgICAgICAgICAgICAgICA6IGxhbmd1YWdlLmJ1dHRvbl9sYW5nLmVkaXRcXG4gICAgICAgICAgICB9fVxcbiAgICAgICAgICAgIHt7XFxuICAgICAgICAgICAgICB1c2VyUm9sZSA9PT0gJ2FkbWluJ1xcbiAgICAgICAgICAgICAgICA/IGxhbmd1YWdlLnVzZXJfbGFuZy51c2Vyc1xcbiAgICAgICAgICAgICAgICA6IGxhbmd1YWdlLnVzZXJfbGFuZy51c2VyX3JvbGVzLmlhdGlfYWRtaW5cXG4gICAgICAgICAgICB9fVxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZ3JpZCBncmlkLWNvbHMtMiBnYXAtNlxcXCI+XFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLXNwYW4tMiBmbGV4IGZsZXgtY29sIGl0ZW1zLXN0YXJ0IGdhcC0yXFxcIj5cXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cXFwidGV4dC1zbSB0ZXh0LW4tNTBcXFwiPlxcbiAgICAgICAgICAgICAgICB7eyBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLmZ1bGxuYW1lLmxhYmVsIH19XFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJ0ZXh0LWNyaW1zb24tNTBcXFwiPiAqIDwvc3Bhbj48L2xhYmVsXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICAgICAgaWQ9XFxcImZ1bGxfbmFtZVxcXCJcXG4gICAgICAgICAgICAgICAgdi1tb2RlbD1cXFwiZm9ybURhdGEuZnVsbF9uYW1lXFxcIlxcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XFxcIlxcbiAgICAgICAgICAgICAgICAgIGZvcm1FcnJvclsnZnVsbF9uYW1lJ10gPyAnYm9yZGVyLWNyaW1zb24tNTAnIDogJ2JvcmRlci1uLTMwJ1xcbiAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJ3LWZ1bGwgcm91bmRlZCBib3JkZXIgcC0zXFxcIlxcbiAgICAgICAgICAgICAgICB0eXBlPVxcXCJ0ZXh0XFxcIlxcbiAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgIDxzcGFuIHYtaWY9XFxcImZvcm1FcnJvclsnZnVsbF9uYW1lJ11cXFwiIGNsYXNzPVxcXCJlcnJvclxcXCI+e3tcXG4gICAgICAgICAgICAgICAgZm9ybUVycm9yWydmdWxsX25hbWUnXVswXVxcbiAgICAgICAgICAgICAgfX08L3NwYW4+XFxuICAgICAgICAgICAgPC9kaXY+XFxuXFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZmxleCBmbGV4LWNvbCBpdGVtcy1zdGFydCBnYXAtMlxcXCI+XFxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XFxcInRleHQtc20gdGV4dC1uLTUwXFxcIlxcbiAgICAgICAgICAgICAgICA+e3sgbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy51c2VybmFtZS5sYWJlbFxcbiAgICAgICAgICAgICAgICB9fTxzcGFuIGNsYXNzPVxcXCJ0ZXh0LWNyaW1zb24tNTBcXFwiPiAqPC9zcGFuPjwvbGFiZWxcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgIDxpbnB1dFxcbiAgICAgICAgICAgICAgICBpZD1cXFwidXNlcm5hbWVcXFwiXFxuICAgICAgICAgICAgICAgIHYtbW9kZWw9XFxcImZvcm1EYXRhLnVzZXJuYW1lXFxcIlxcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XFxcIlxcbiAgICAgICAgICAgICAgICAgIGZvcm1FcnJvclsndXNlcm5hbWUnXSA/ICdib3JkZXItY3JpbXNvbi01MCcgOiAnYm9yZGVyLW4tMzAnXFxuICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcInctZnVsbCByb3VuZGVkIGJvcmRlciBwLTNcXFwiXFxuICAgICAgICAgICAgICAgIHR5cGU9XFxcInRleHRcXFwiXFxuICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgPHNwYW4gdi1pZj1cXFwiZm9ybUVycm9yWyd1c2VybmFtZSddXFxcIiBjbGFzcz1cXFwiZXJyb3JcXFwiPnt7XFxuICAgICAgICAgICAgICAgIGZvcm1FcnJvclsndXNlcm5hbWUnXVswXVxcbiAgICAgICAgICAgICAgfX08L3NwYW4+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZmxleCBmbGV4LWNvbCBpdGVtcy1zdGFydCBnYXAtMlxcXCI+XFxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XFxcInRleHQtc20gdGV4dC1uLTUwXFxcIlxcbiAgICAgICAgICAgICAgICA+e3sgbGFuZ3VhZ2UudXNlcl9sYW5nLmVtYWlsXFxuICAgICAgICAgICAgICAgIH19PHNwYW4gY2xhc3M9XFxcInRleHQtY3JpbXNvbi01MFxcXCI+ICogPC9zcGFuPjwvbGFiZWxcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgIDxpbnB1dFxcbiAgICAgICAgICAgICAgICBpZD1cXFwiZW1haWxcXFwiXFxuICAgICAgICAgICAgICAgIHYtbW9kZWw9XFxcImZvcm1EYXRhLmVtYWlsXFxcIlxcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XFxcIlxcbiAgICAgICAgICAgICAgICAgIGZvcm1FcnJvclsnZW1haWwnXSA/ICdib3JkZXItY3JpbXNvbi01MCcgOiAnYm9yZGVyLW4tMzAnXFxuICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcInctZnVsbCByb3VuZGVkIGJvcmRlciBwLTNcXFwiXFxuICAgICAgICAgICAgICAgIHR5cGU9XFxcImVtYWlsXFxcIlxcbiAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgIDxzcGFuIHYtaWY9XFxcImZvcm1FcnJvclsnZW1haWwnXVxcXCIgY2xhc3M9XFxcImVycm9yXFxcIj57e1xcbiAgICAgICAgICAgICAgICBmb3JtRXJyb3JbJ2VtYWlsJ11bMF1cXG4gICAgICAgICAgICAgIH19PC9zcGFuPlxcbiAgICAgICAgICAgIDwvZGl2PlxcblxcbiAgICAgICAgICAgIDxkaXZcXG4gICAgICAgICAgICAgIHYtaWY9XFxcImFkZFVzZXJGb3JtXFxcIlxcbiAgICAgICAgICAgICAgOmNsYXNzPVxcXCJmb3JtRXJyb3JbJ3N0YXR1cyddICYmICdlcnJvcl9fbXVsdGlzZWxlY3QnXFxcIlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcImZsZXggZmxleC1jb2wgaXRlbXMtc3RhcnQgZ2FwLTJcXFwiXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVxcXCJ0ZXh0LXNtIHRleHQtbi01MFxcXCJcXG4gICAgICAgICAgICAgICAgPnt7IGxhbmd1YWdlLnVzZXJfbGFuZy5zdGF0dXNcXG4gICAgICAgICAgICAgICAgfX08c3BhbiBjbGFzcz1cXFwidGV4dC1jcmltc29uLTUwXFxcIj4gKiA8L3NwYW4+PC9sYWJlbFxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPE11bHRpc2VsZWN0XFxuICAgICAgICAgICAgICAgIGlkPVxcXCJzdGF0dXNcXFwiXFxuICAgICAgICAgICAgICAgIHYtbW9kZWw9XFxcImZvcm1EYXRhLnN0YXR1c1xcXCJcXG4gICAgICAgICAgICAgICAgOm9wdGlvbnM9XFxcInN0YXR1c1xcXCJcXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XFxcIlNlbGVjdCBzdGF0dXNcXFwiXFxuICAgICAgICAgICAgICAgIDpzZWFyY2hhYmxlPVxcXCJ0cnVlXFxcIlxcbiAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgIDxzcGFuIHYtaWY9XFxcImZvcm1FcnJvclsnc3RhdHVzJ11cXFwiIGNsYXNzPVxcXCJlcnJvclxcXCI+e3tcXG4gICAgICAgICAgICAgICAgZm9ybUVycm9yWydzdGF0dXMnXVswXVxcbiAgICAgICAgICAgICAgfX08L3NwYW4+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPGRpdlxcbiAgICAgICAgICAgICAgdi1pZj1cXFwidXNlclJvbGUgPT09ICdhZG1pbidcXFwiXFxuICAgICAgICAgICAgICA6Y2xhc3M9XFxcImZvcm1FcnJvclsncm9sZV9pZCddICYmICdlcnJvcl9fbXVsdGlzZWxlY3QnXFxcIlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcImZsZXggZmxleC1jb2wgaXRlbXMtc3RhcnQgZ2FwLTJcXFwiXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVxcXCJ0ZXh0LXNtIHRleHQtbi01MFxcXCJcXG4gICAgICAgICAgICAgICAgPnt7IGxhbmd1YWdlLnVzZXJfbGFuZy5yb2xlXFxuICAgICAgICAgICAgICAgIH19PHNwYW4gY2xhc3M9XFxcInRleHQtY3JpbXNvbi01MFxcXCI+ICogPC9zcGFuPjwvbGFiZWxcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgIDxNdWx0aXNlbGVjdFxcbiAgICAgICAgICAgICAgICBpZD1cXFwicm9sZVxcXCJcXG4gICAgICAgICAgICAgICAgdi1tb2RlbD1cXFwiZm9ybURhdGEucm9sZV9pZFxcXCJcXG4gICAgICAgICAgICAgICAgOm9wdGlvbnM9XFxcInJvbGVzXFxcIlxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cXFwiU2VsZWN0IHVzZXIgcm9sZVxcXCJcXG4gICAgICAgICAgICAgICAgOnNlYXJjaGFibGU9XFxcInRydWVcXFwiXFxuICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgPHNwYW4gdi1pZj1cXFwiZm9ybUVycm9yWydyb2xlX2lkJ11cXFwiIGNsYXNzPVxcXCJlcnJvclxcXCI+e3tcXG4gICAgICAgICAgICAgICAgZm9ybUVycm9yWydyb2xlX2lkJ11bMF1cXG4gICAgICAgICAgICAgIH19PC9zcGFuPlxcbiAgICAgICAgICAgIDwvZGl2PlxcblxcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImZsZXggZmxleC1jb2wgaXRlbXMtc3RhcnQgZ2FwLTJcXFwiPlxcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVxcXCJ0ZXh0LXNtIHRleHQtbi01MFxcXCJcXG4gICAgICAgICAgICAgICAgPnt7IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcucGFzc3dvcmQubmV3XFxuICAgICAgICAgICAgICAgIH19PHNwYW4gdi1pZj1cXFwiIWVkaXRVc2VyRm9ybVxcXCIgY2xhc3M9XFxcInRleHQtY3JpbXNvbi01MFxcXCI+XFxuICAgICAgICAgICAgICAgICAgKlxcbiAgICAgICAgICAgICAgICA8L3NwYW4+PC9sYWJlbFxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgICAgIGlkPVxcXCJwYXNzd29yZFxcXCJcXG4gICAgICAgICAgICAgICAgdi1tb2RlbD1cXFwiZm9ybURhdGEucGFzc3dvcmRcXFwiXFxuICAgICAgICAgICAgICAgIDpjbGFzcz1cXFwiXFxuICAgICAgICAgICAgICAgICAgZm9ybUVycm9yWydwYXNzd29yZCddID8gJ2JvcmRlci1jcmltc29uLTUwJyA6ICdib3JkZXItbi0zMCdcXG4gICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwidy1mdWxsIHJvdW5kZWQgYm9yZGVyIGJvcmRlci1uLTMwIHAtM1xcXCJcXG4gICAgICAgICAgICAgICAgdHlwZT1cXFwicGFzc3dvcmRcXFwiXFxuICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgPHNwYW4gdi1pZj1cXFwiZm9ybUVycm9yWydwYXNzd29yZCddXFxcIiBjbGFzcz1cXFwiZXJyb3JcXFwiPnt7XFxuICAgICAgICAgICAgICAgIGZvcm1FcnJvclsncGFzc3dvcmQnXVswXVxcbiAgICAgICAgICAgICAgfX08L3NwYW4+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZmxleCBmbGV4LWNvbCBpdGVtcy1zdGFydCBnYXAtMlxcXCI+XFxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XFxcInRleHQtc20gdGV4dC1uLTUwXFxcIj5cXG4gICAgICAgICAgICAgICAge3sgbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5wYXNzd29yZC5jb25maXJtIH19XFxuICAgICAgICAgICAgICAgIDxzcGFuIHYtaWY9XFxcIiFlZGl0VXNlckZvcm1cXFwiIGNsYXNzPVxcXCJ0ZXh0LWNyaW1zb24tNTBcXFwiPiAqIDwvc3Bhbj5cXG4gICAgICAgICAgICAgIDwvbGFiZWw+XFxuXFxuICAgICAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICAgICAgaWQ9XFxcInBhc3N3b3JkLWNvbmZpcm1hdGlvblxcXCJcXG4gICAgICAgICAgICAgICAgdi1tb2RlbD1cXFwiZm9ybURhdGEucGFzc3dvcmRfY29uZmlybWF0aW9uXFxcIlxcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XFxcIlxcbiAgICAgICAgICAgICAgICAgIGZvcm1FcnJvclsncGFzc3dvcmRfY29uZmlybWF0aW9uJ11cXG4gICAgICAgICAgICAgICAgICAgID8gJ2JvcmRlci1jcmltc29uLTUwJ1xcbiAgICAgICAgICAgICAgICAgICAgOiAnYm9yZGVyLW4tMzAnXFxuICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcInctZnVsbCByb3VuZGVkIGJvcmRlciBib3JkZXItbi0zMCBwLTNcXFwiXFxuICAgICAgICAgICAgICAgIHR5cGU9XFxcInBhc3N3b3JkXFxcIlxcbiAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgIDxzcGFuIHYtaWY9XFxcImZvcm1FcnJvclsncGFzc3dvcmRfY29uZmlybWF0aW9uJ11cXFwiIGNsYXNzPVxcXCJlcnJvclxcXCI+e3tcXG4gICAgICAgICAgICAgICAgZm9ybUVycm9yWydwYXNzd29yZF9jb25maXJtYXRpb24nXVswXVxcbiAgICAgICAgICAgICAgfX08L3NwYW4+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgIDwvZGl2PlxcblxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJtdC02IGZsZXgganVzdGlmeS1lbmQgc3BhY2UteC0yXFxcIj5cXG4gICAgICAgICAgICA8YnV0dG9uXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwic2Vjb25kYXJ5LWJ0biBmb250LWJvbGRcXFwiXFxuICAgICAgICAgICAgICBAY2xpY2s9XFxcIlxcbiAgICAgICAgICAgICAgICAoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgYWRkVXNlckZvcm0gPSBmYWxzZTtcXG4gICAgICAgICAgICAgICAgICBlZGl0VXNlckZvcm0gPSBmYWxzZTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgIHt7IGxhbmd1YWdlLmJ1dHRvbl9sYW5nLmNhbmNlbCB9fVxcbiAgICAgICAgICAgIDwvYnV0dG9uPlxcbiAgICAgICAgICAgIDxidXR0b25cXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJwcmltYXJ5LWJ0biAhcHgtMTBcXFwiXFxuICAgICAgICAgICAgICBAY2xpY2s9XFxcImFkZFVzZXJGb3JtID8gY3JlYXRlVXNlcigpIDogdXBkYXRlVXNlcigpXFxcIlxcbiAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgIHt7IGxhbmd1YWdlLmJ1dHRvbl9sYW5nLnNhdmUgfX1cXG4gICAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L1BvcHVwTW9kYWw+XFxuICAgICAgPFBvcHVwTW9kYWxcXG4gICAgICAgIDptb2RhbC1hY3RpdmU9XFxcImRlbGV0ZU1vZGFsXFxcIlxcbiAgICAgICAgQGNsb3NlPVxcXCJcXG4gICAgICAgICAgKCkgPT4ge1xcbiAgICAgICAgICAgIGRlbGV0ZU1vZGFsID0gZmFsc2U7XFxuICAgICAgICAgIH1cXG4gICAgICAgIFxcXCJcXG4gICAgICA+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ0aXRsZSBtYi02IGZsZXhcXFwiPlxcbiAgICAgICAgICA8c3ZnLXZ1ZSBjbGFzcz1cXFwibXItMSBtdC0wLjUgdGV4dC1sZyB0ZXh0LWNyaW1zb24tNDBcXFwiIGljb249XFxcImRlbGV0ZVxcXCIgLz5cXG4gICAgICAgICAgPGIgY2xhc3M9XFxcInVwcGVyY2FzZVxcXCI+e3tcXG4gICAgICAgICAgICBsYW5ndWFnZS5idXR0b25fbGFuZy5kZWxldGVfZWxlbWVudC5yZXBsYWNlKFxcbiAgICAgICAgICAgICAgJzplbGVtZW50JyxcXG4gICAgICAgICAgICAgIGxhbmd1YWdlLnVzZXJfbGFuZy51c2VyXFxuICAgICAgICAgICAgKVxcbiAgICAgICAgICB9fTwvYj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICAgPHAgY2xhc3M9XFxcInJvdW5kZWQtbGcgYmctcm9zZSBwLTRcXFwiPlxcbiAgICAgICAgICB7eyBsYW5ndWFnZS51c2VyX2xhbmcuZGVsZXRlX2NvbmZpcm1hdGlvbi5yZXBsYWNlKCc6ZWxlbWVudCcsICc6JylcXG4gICAgICAgICAgfX08Yj4ge3sgZGVsZXRlVXNlcm5hbWUgfX08L2JcXG4gICAgICAgICAgPiA/XFxuICAgICAgICA8L3A+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJtdC02IGZsZXgganVzdGlmeS1lbmQgc3BhY2UteC0yXFxcIj5cXG4gICAgICAgICAgPGJ1dHRvblxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJzZWNvbmRhcnktYnRuIGZvbnQtYm9sZFxcXCJcXG4gICAgICAgICAgICBAY2xpY2s9XFxcIlxcbiAgICAgICAgICAgICAgKCkgPT4ge1xcbiAgICAgICAgICAgICAgICBkZWxldGVNb2RhbCA9IGZhbHNlO1xcbiAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgPlxcbiAgICAgICAgICAgIHt7IGxhbmd1YWdlLmJ1dHRvbl9sYW5nLmNhbmNlbCB9fVxcbiAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cXFwicHJpbWFyeS1idG4gIXB4LTEwXFxcIiBAY2xpY2s9XFxcImRlbGV0ZVVzZXIoZGVsZXRlSWQpXFxcIj5cXG4gICAgICAgICAgICB7eyBsYW5ndWFnZS5idXR0b25fbGFuZy5kZWxldGUgfX1cXG4gICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L1BvcHVwTW9kYWw+XFxuXFxuICAgICAgPFBvcHVwTW9kYWxcXG4gICAgICAgIDptb2RhbC1hY3RpdmU9XFxcInN0YXR1c01vZGFsXFxcIlxcbiAgICAgICAgQGNsb3NlPVxcXCJcXG4gICAgICAgICAgKCkgPT4ge1xcbiAgICAgICAgICAgIHN0YXR1c01vZGFsID0gZmFsc2U7XFxuICAgICAgICAgIH1cXG4gICAgICAgIFxcXCJcXG4gICAgICA+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ0aXRsZSBtYi02IGZsZXhcXFwiPlxcbiAgICAgICAgICA8YiBjbGFzcz1cXFwiZmlyc3QtbGV0dGVyOnVwcGVyY2FzZVxcXCI+XFxuICAgICAgICAgICAge3tcXG4gICAgICAgICAgICAgIGxhbmd1YWdlLmJ1dHRvbl9sYW5nLm1ha2VfZWxlbWVudC5yZXBsYWNlKFxcbiAgICAgICAgICAgICAgICAnOmVsZW1lbnQnLFxcbiAgICAgICAgICAgICAgICBsYW5ndWFnZS51c2VyX2xhbmcudXNlci50b0xvd2VyQ2FzZSgpXFxuICAgICAgICAgICAgICApXFxuICAgICAgICAgICAgfX1cXG4gICAgICAgICAgICB7e1xcbiAgICAgICAgICAgICAgc3RhdHVzVmFsdWVcXG4gICAgICAgICAgICAgICAgPyBsYW5ndWFnZS51c2VyX2xhbmcuaW5hY3RpdmVcXG4gICAgICAgICAgICAgICAgOiBsYW5ndWFnZS51c2VyX2xhbmcuYWN0aXZlXFxuICAgICAgICAgICAgfX1cXG4gICAgICAgICAgPC9iPlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgICA8cCBjbGFzcz1cXFwicm91bmRlZC1sZyBiZy1yb3NlIHAtNFxcXCI+XFxuICAgICAgICAgIHt7IGxhbmd1YWdlLmJ1dHRvbl9sYW5nLm1ha2VfY29uZmlybWF0aW9uLnJlcGxhY2UoJzplbGVtZW50JywgJyAnKSB9fVxcbiAgICAgICAgICA8Yj4ge3sgc3RhdHVzVXNlcm5hbWUgfX08L2I+XFxuICAgICAgICAgIHt7XFxuICAgICAgICAgICAgc3RhdHVzVmFsdWVcXG4gICAgICAgICAgICAgID8gbGFuZ3VhZ2UudXNlcl9sYW5nLmluYWN0aXZlXFxuICAgICAgICAgICAgICA6IGxhbmd1YWdlLnVzZXJfbGFuZy5hY3RpdmVcXG4gICAgICAgICAgfX1cXG4gICAgICAgICAgP1xcbiAgICAgICAgPC9wPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwibXQtNiBmbGV4IGp1c3RpZnktZW5kIHNwYWNlLXgtMlxcXCI+XFxuICAgICAgICAgIDxidXR0b25cXG4gICAgICAgICAgICBjbGFzcz1cXFwic2Vjb25kYXJ5LWJ0biBmb250LWJvbGRcXFwiXFxuICAgICAgICAgICAgQGNsaWNrPVxcXCJcXG4gICAgICAgICAgICAgICgpID0+IHtcXG4gICAgICAgICAgICAgICAgc3RhdHVzTW9kYWwgPSBmYWxzZTtcXG4gICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBcXFwiXFxuICAgICAgICAgID5cXG4gICAgICAgICAgICB7eyBsYW5ndWFnZS5idXR0b25fbGFuZy5jYW5jZWwgfX1cXG4gICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICAgIDxidXR0b25cXG4gICAgICAgICAgICBjbGFzcz1cXFwicHJpbWFyeS1idG4gIXB4LTEwXFxcIlxcbiAgICAgICAgICAgIEBjbGljaz1cXFwidG9nZ2xlVXNlclN0YXR1cyhzdGF0dXNJZClcXFwiXFxuICAgICAgICAgID5cXG4gICAgICAgICAgICB7eyBsYW5ndWFnZS5jb21tb25fbGFuZy55ZXMgfX1cXG4gICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L1BvcHVwTW9kYWw+XFxuXFxuICAgICAgPGRpdiBjbGFzcz1cXFwiZmlsdGVycyBtYi00IGZsZXggZmxleC13cmFwIGp1c3RpZnktYmV0d2VlbiBnYXAtMlxcXCI+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJzZWxlY3QgZmlsdGVycyBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0yXFxcIj5cXG4gICAgICAgICAgPHN2Zy12dWUgY2xhc3M9XFxcInctMTAgdGV4dC1sZ1xcXCIgaWNvbj1cXFwiZnVubmVsXFxcIiAvPlxcbiAgICAgICAgICA8c3BhblxcbiAgICAgICAgICAgIHYtaWY9XFxcInVzZXJSb2xlID09PSAnc3VwZXJhZG1pbicgfHwgdXNlclJvbGUgPT09ICdpYXRpX2FkbWluJ1xcXCJcXG4gICAgICAgICAgICBjbGFzcz1cXFwibXVsdGlzZWxlY3QtbGFiZWwtd3JhcHBlclxcXCJcXG4gICAgICAgICAgICA6c3R5bGU9XFxcImdlbmVyYXRlTGFiZWwoJ29yZ2FuaXNhdGlvbicpXFxcIlxcbiAgICAgICAgICAgID48TXVsdGlzZWxlY3RcXG4gICAgICAgICAgICAgIGlkPVxcXCJvcmdhbml6YXRpb24tZmlsdGVyXFxcIlxcbiAgICAgICAgICAgICAgdi1tb2RlbD1cXFwiZmlsdGVyLm9yZ2FuaXphdGlvblxcXCJcXG4gICAgICAgICAgICAgIDpvcHRpb25zPVxcXCJvcmdhbml6YXRpb25zXFxcIlxcbiAgICAgICAgICAgICAgOnBsYWNlaG9sZGVyPVxcXCJsYW5ndWFnZS5jb21tb25fbGFuZy5vcmdhbmlzYXRpb25cXFwiXFxuICAgICAgICAgICAgICA6c2VhcmNoYWJsZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgICAgIG1vZGU9XFxcIm11bHRpcGxlXFxcIlxcbiAgICAgICAgICAgICAgOnRhZ2dhYmxlPVxcXCJ0cnVlXFxcIlxcbiAgICAgICAgICAgICAgOmNsb3NlLW9uLXNlbGVjdD1cXFwiZmFsc2VcXFwiXFxuICAgICAgICAgICAgICA6Y2xlYXItb24tc2VsZWN0PVxcXCJmYWxzZVxcXCJcXG4gICAgICAgICAgICAgIDpoaWRlLXNlbGVjdGVkPVxcXCJmYWxzZVxcXCJcXG4gICAgICAgICAgICAgIGxhYmVsPVxcXCJuYW1lXFxcIlxcbiAgICAgICAgICAgIC8+XFxuICAgICAgICAgIDwvc3Bhbj5cXG5cXG4gICAgICAgICAgPHNwYW5cXG4gICAgICAgICAgICBjbGFzcz1cXFwibXVsdGlzZWxlY3QtbGFiZWwtd3JhcHBlclxcXCJcXG4gICAgICAgICAgICA6c3R5bGU9XFxcImdlbmVyYXRlTGFiZWwoJ3JvbGUnKVxcXCJcXG4gICAgICAgICAgPlxcbiAgICAgICAgICAgIDxNdWx0aXNlbGVjdFxcbiAgICAgICAgICAgICAgaWQ9XFxcInJvbGUtZmlsdGVyXFxcIlxcbiAgICAgICAgICAgICAgdi1tb2RlbD1cXFwiZmlsdGVyLnJvbGVzXFxcIlxcbiAgICAgICAgICAgICAgOm9wdGlvbnM9XFxcInJvbGVzXFxcIlxcbiAgICAgICAgICAgICAgOnBsYWNlaG9sZGVyPVxcXCJsYW5ndWFnZS51c2VyX2xhbmcucm9sZVxcXCJcXG4gICAgICAgICAgICAgIDpzZWFyY2hhYmxlPVxcXCJ0cnVlXFxcIlxcbiAgICAgICAgICAgICAgbW9kZT1cXFwibXVsdGlwbGVcXFwiXFxuICAgICAgICAgICAgICA6Y2xvc2Utb24tc2VsZWN0PVxcXCJmYWxzZVxcXCJcXG4gICAgICAgICAgICAgIDpjbGVhci1vbi1zZWxlY3Q9XFxcImZhbHNlXFxcIlxcbiAgICAgICAgICAgICAgOmhpZGUtc2VsZWN0ZWQ9XFxcImZhbHNlXFxcIlxcbiAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgPHNwYW4gdi1pZj1cXFwiZmlsdGVyLnJvbGVzLmxlbmd0aCA+IDBcXFwiIGNsYXNzPVxcXCJzdGF0dXNcXFwiPlxcbiAgICAgICAgICAgICAgPCEtLSBwbGFjZWhvbGRlciAtLT5cXG4gICAgICAgICAgICAgIDwhLS0gcm9sZSAtLT5cXG4gICAgICAgICAgICA8L3NwYW4+PC9zcGFuXFxuICAgICAgICAgID5cXG4gICAgICAgICAgPHNwYW5cXG4gICAgICAgICAgICBjbGFzcz1cXFwibXVsdGlzZWxlY3QtbGFiZWwtd3JhcHBlclxcXCJcXG4gICAgICAgICAgICA6c3R5bGU9XFxcImdlbmVyYXRlTGFiZWwoJ3N0YXR1cycpXFxcIlxcbiAgICAgICAgICAgID48TXVsdGlzZWxlY3RcXG4gICAgICAgICAgICAgIGlkPVxcXCJzdGF0dXMtZmlsdGVyXFxcIlxcbiAgICAgICAgICAgICAgdi1tb2RlbD1cXFwiZmlsdGVyLnN0YXR1c1xcXCJcXG4gICAgICAgICAgICAgIDpvcHRpb25zPVxcXCJzdGF0dXNcXFwiXFxuICAgICAgICAgICAgICA6cGxhY2Vob2xkZXI9XFxcImxhbmd1YWdlLnVzZXJfbGFuZy5zdGF0dXNcXFwiXFxuICAgICAgICAgICAgICA6c2VhcmNoYWJsZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgICAvPlxcbiAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICAgPGRpdlxcbiAgICAgICAgICBjbGFzcz1cXFwiZmxleCBoLVszOHB4XSB3LWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kIGdhcC0zIHNwYWNlLXgtMiBweC00IDJ4bDp3LWF1dG9cXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIDxzcGFuPlxcbiAgICAgICAgICAgIDxEYXRlUmFuZ2VXaWRnZXRcXG4gICAgICAgICAgICAgIDpkcm9wZG93bi1yYW5nZT1cXFwiZHJvcGRvd25SYW5nZVxcXCJcXG4gICAgICAgICAgICAgIDpmaXJzdC1kYXRlPVxcXCJvbGRlc3REYXRlc1xcXCJcXG4gICAgICAgICAgICAgIDpjbGVhci1kYXRlPVxcXCJjbGVhckRhdGVcXFwiXFxuICAgICAgICAgICAgICA6c3RhcnRpbmctZGF0ZT1cXFwiZmlsdGVyLnN0YXJ0X2RhdGVcXFwiXFxuICAgICAgICAgICAgICA6ZGF0ZS1uYW1lPVxcXCJkYXRlVHlwZVxcXCJcXG4gICAgICAgICAgICAgIDplbmRpbmctZGF0ZT1cXFwiZmlsdGVyLmVuZF9kYXRlXFxcIlxcbiAgICAgICAgICAgICAgQHRyaWdnZXItc2V0LWRhdGUtcmFuZ2U9XFxcInNldERhdGVSYW5nZURhdGVcXFwiXFxuICAgICAgICAgICAgICBAdHJpZ2dlci1zZXQtZGF0ZS10eXBlPVxcXCJzZXREYXRlVHlwZVxcXCJcXG4gICAgICAgICAgICAgIEBkYXRlLWNsZWFyZWQ9XFxcImNsZWFyRGF0ZSA9IGZhbHNlXFxcIlxcbiAgICAgICAgICAgIC8+XFxuICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwib3Blbi10ZXh0IGgtWzM4cHhdXFxcIj5cXG4gICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcImFic29sdXRlIHRvcC0xLzIgbGVmdC0yIHctMTAgLXRyYW5zbGF0ZS15LTEvMiB0ZXh0LWJhc2VcXFwiXFxuICAgICAgICAgICAgICBpY29uPVxcXCJtYWduaWZ5aW5nLWdsYXNzXFxcIlxcbiAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgICB2LW1vZGVsPVxcXCJmaWx0ZXIucVxcXCJcXG4gICAgICAgICAgICAgIHR5cGU9XFxcInRleHRcXFwiXFxuICAgICAgICAgICAgICA6cGxhY2Vob2xkZXI9XFxcImxhbmd1YWdlLnVzZXJfbGFuZy5zZWFyY2hfZm9yX3VzZXJzXFxcIlxcbiAgICAgICAgICAgIC8+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+XFxuXFxuICAgICAgPGRpdlxcbiAgICAgICAgdi1pZj1cXFwiaXNGaWx0ZXJBcHBsaWVkXFxcIlxcbiAgICAgICAgY2xhc3M9XFxcIm1iLTQgZmxleCBtYXgtdy1mdWxsIGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLTJcXFwiXFxuICAgICAgPlxcbiAgICAgICAgPHNwYW4gY2xhc3M9XFxcInRleHQtc20gZm9udC1ib2xkIHVwcGVyY2FzZSB0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgICB7eyBsYW5ndWFnZS51c2VyX2xhbmcuZmlsdGVyZWRfYnkgfX06XFxuICAgICAgICA8L3NwYW4+XFxuXFxuICAgICAgICA8c3BhblxcbiAgICAgICAgICB2LWlmPVxcXCJmaWx0ZXIub3JnYW5pemF0aW9uLmxlbmd0aFxcXCJcXG4gICAgICAgICAgY2xhc3M9XFxcImlubGluZS1mbGV4IGZsZXgtd3JhcCBnYXAtMlxcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAgPHNwYW5cXG4gICAgICAgICAgICB2LWZvcj1cXFwiKGl0ZW0sIGluZGV4KSBpbiBmaWx0ZXIub3JnYW5pemF0aW9uXFxcIlxcbiAgICAgICAgICAgIDprZXk9XFxcImluZGV4XFxcIlxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTEgcm91bmRlZC1mdWxsIGJvcmRlciBib3JkZXItbi0zMCBweS0xIHB4LTIgdGV4dC14c1xcXCJcXG4gICAgICAgICAgPlxcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJ0ZXh0LW4tNDBcXFwiPnt7IGxhbmd1YWdlLmNvbW1vbl9sYW5nLm9yZyB9fTo8L3NwYW5cXG4gICAgICAgICAgICA+PHNwYW5cXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJtYXgtdy1bNTAwcHhdIG92ZXJmbG93LXgtaGlkZGVuIHRleHQtZWxsaXBzaXMgd2hpdGVzcGFjZS1ub3dyYXBcXFwiXFxuICAgICAgICAgICAgICA+e3sgdGV4dEJ1YmJsZWRhdGEoaXRlbSwgJ29yZycpIH19PC9zcGFuXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwibXgtMiBtdC0xIGN1cnNvci1wb2ludGVyIHRleHQteHNcXFwiXFxuICAgICAgICAgICAgICBpY29uPVxcXCJjcm9zc1xcXCJcXG4gICAgICAgICAgICAgIEBjbGljaz1cXFwiZmlsdGVyLm9yZ2FuaXphdGlvbi5zcGxpY2UoaW5kZXgsIDEpXFxcIlxcbiAgICAgICAgICAgIC8+XFxuICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgIDwvc3Bhbj5cXG4gICAgICAgIDxzcGFuIHYtaWY9XFxcImZpbHRlci5yb2xlcy5sZW5ndGhcXFwiIGNsYXNzPVxcXCJpbmxpbmUtZmxleCBmbGV4LXdyYXAgZ2FwLTJcXFwiPlxcbiAgICAgICAgICA8c3BhblxcbiAgICAgICAgICAgIHYtZm9yPVxcXCIoaXRlbSwgaW5kZXgpIGluIGZpbHRlci5yb2xlc1xcXCJcXG4gICAgICAgICAgICA6a2V5PVxcXCJpbmRleFxcXCJcXG4gICAgICAgICAgICBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0xIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLW4tMzAgcHgtMiBweS0xIHRleHQteHNcXFwiXFxuICAgICAgICAgID5cXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwidGV4dC1uLTQwXFxcIj57eyBsYW5ndWFnZS51c2VyX2xhbmcucm9sZXMgfX06PC9zcGFuXFxuICAgICAgICAgICAgPjxzcGFuPnt7IHRleHRCdWJibGVkYXRhKGl0ZW0sICdyb2xlcycpIH19PC9zcGFuPlxcbiAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwibXgtMiBtdC0xIGN1cnNvci1wb2ludGVyIHRleHQteHNcXFwiXFxuICAgICAgICAgICAgICBpY29uPVxcXCJjcm9zc1xcXCJcXG4gICAgICAgICAgICAgIEBjbGljaz1cXFwiZmlsdGVyLnJvbGVzLnNwbGljZShpbmRleCwgMSlcXFwiXFxuICAgICAgICAgICAgLz5cXG4gICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgPHNwYW4gdi1pZj1cXFwiZmlsdGVyLnN0YXR1cy5sZW5ndGhcXFwiIGNsYXNzPVxcXCJpbmxpbmUtZmxleCBmbGV4LXdyYXAgZ2FwLTJcXFwiPlxcbiAgICAgICAgICA8c3BhblxcbiAgICAgICAgICAgIHYtZm9yPVxcXCIoaXRlbSwgaW5kZXgpIGluIGZpbHRlci5zdGF0dXNcXFwiXFxuICAgICAgICAgICAgOmtleT1cXFwiaW5kZXhcXFwiXFxuICAgICAgICAgICAgY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMSByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci1uLTMwIHB5LTEgcHgtMiB0ZXh0LXhzXFxcIlxcbiAgICAgICAgICA+XFxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInRleHQtbi00MFxcXCI+e3sgbGFuZ3VhZ2UudXNlcl9sYW5nLnN0YXR1cyB9fTo8L3NwYW5cXG4gICAgICAgICAgICA+PHNwYW4+e3sgdGV4dEJ1YmJsZWRhdGEoaXRlbSwgJ3N0YXR1cycpIH19PC9zcGFuPlxcbiAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwibXgtMiBtdC0xIGN1cnNvci1wb2ludGVyIHRleHQteHNcXFwiXFxuICAgICAgICAgICAgICBpY29uPVxcXCJjcm9zc1xcXCJcXG4gICAgICAgICAgICAgIEBjbGljaz1cXFwiXFxuICAgICAgICAgICAgICAgICgpID0+IHtcXG4gICAgICAgICAgICAgICAgICBmaWx0ZXIuc3RhdHVzID0gJyc7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAvPlxcbiAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICA8L3NwYW4+XFxuICAgICAgICA8c3BhblxcbiAgICAgICAgICB2LWlmPVxcXCJmaWx0ZXIuc3RhcnRfZGF0ZSAmJiBmaWx0ZXIuZW5kX2RhdGVcXFwiXFxuICAgICAgICAgIGNsYXNzPVxcXCJpbmxpbmUtZmxleCBmbGV4LXdyYXAgZ2FwLTJcXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMSByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci1uLTMwIHB5LTEgcHgtMiB0ZXh0LXhzXFxcIlxcbiAgICAgICAgICA+XFxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInRleHQtbi00MFxcXCI+RGF0ZTo8L3NwYW5cXG4gICAgICAgICAgICA+PHNwYW4+e3tcXG4gICAgICAgICAgICAgIHRleHRCdWJibGVkYXRhKFxcbiAgICAgICAgICAgICAgICBmaWx0ZXIuc2VsZWN0ZWRfZGF0ZV9maWx0ZXIsXFxuICAgICAgICAgICAgICAgIGZpbHRlci5zZWxlY3RlZF9kYXRlX2ZpbHRlclxcbiAgICAgICAgICAgICAgKVxcbiAgICAgICAgICAgIH19PC9zcGFuPlxcbiAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwibXgtMiBtdC0xIGN1cnNvci1wb2ludGVyIHRleHQteHNcXFwiXFxuICAgICAgICAgICAgICBpY29uPVxcXCJjcm9zc1xcXCJcXG4gICAgICAgICAgICAgIEBjbGljaz1cXFwiXFxuICAgICAgICAgICAgICAgICgpID0+IHtcXG4gICAgICAgICAgICAgICAgICBjbGVhckRhdGVGaWx0ZXIoKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgIC8+XFxuICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgIDwvc3Bhbj5cXG4gICAgICAgIDxidXR0b25cXG4gICAgICAgICAgY2xhc3M9XFxcImZvbnQtYm9sZCB1cHBlcmNhc2UgdGV4dC1ibHVlY29yYWxcXFwiXFxuICAgICAgICAgIEBjbGljaz1cXFwiXFxuICAgICAgICAgICAgKCkgPT4ge1xcbiAgICAgICAgICAgICAgY2xlYXJGaWx0ZXIoKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgIFxcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAge3sgbGFuZ3VhZ2UudXNlcl9sYW5nLmNsZWFyX2ZpbHRlciB9fVxcbiAgICAgICAgPC9idXR0b24+XFxuICAgICAgPC9kaXY+XFxuICAgICAgPHAgY2xhc3M9XFxcInB5LTFcXFwiPlRvdGFsIE51bWJlciBvZiBVc2Vyczoge3sgdG90YWxVc2VyIH19PC9wPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImlhdGktbGlzdC10YWJsZSB1c2VyLWxpc3QtdGFibGUgdGV4dC1uLTQwXFxcIj5cXG4gICAgICAgIDx0YWJsZT5cXG4gICAgICAgICAgPHRoZWFkPlxcbiAgICAgICAgICAgIDx0ciBjbGFzcz1cXFwiYmctbi0xMFxcXCI+XFxuICAgICAgICAgICAgICA8dGggaWQ9XFxcInRpdGxlXFxcIiBzY29wZT1cXFwiY29sXFxcIj5cXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlclxcXCI+XFxuICAgICAgICAgICAgICAgICAgPHNwYW5cXG4gICAgICAgICAgICAgICAgICAgIHYtaWY9XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIuZGlyZWN0aW9uID09PSAnZGVzYycgJiZcXG4gICAgICAgICAgICAgICAgICAgICAgZmlsdGVyLm9yZGVyQnkgPT09ICd1c2VybmFtZSdcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwibXgtMiBoLTMgdy0yIGN1cnNvci1wb2ludGVyXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBpY29uPVxcXCJzb3J0LWRlc2NlbmRpbmdcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIEBjbGljaz1cXFwic29ydCgndXNlcm5hbWUnKVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgICAgIDxzcGFuIHYtZWxzZT5cXG4gICAgICAgICAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJteC0yIGgtMyB3LTIgY3Vyc29yLXBvaW50ZXJcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIGljb249XFxcInNvcnQtYXNjZW5kaW5nXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XFxcInNvcnQoJ3VzZXJuYW1lJylcXFwiXFxuICAgICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG5cXG4gICAgICAgICAgICAgICAgICA8c3Bhbj57eyBsYW5ndWFnZS51c2VyX2xhbmcudXNlcnMgfX08L3NwYW4+XFxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgICAgICA8dGggaWQ9XFxcIm1lYXN1cmVcXFwiIHNjb3BlPVxcXCJjb2xcXFwiIHN0eWxlPVxcXCJ3aWR0aDogMjEwcHhcXFwiPlxcbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBsYW5ndWFnZS51c2VyX2xhbmcuZW1haWwgfX08L3NwYW4+XFxuICAgICAgICAgICAgICA8L3RoPlxcblxcbiAgICAgICAgICAgICAgPHRoIGlkPVxcXCJ0aXRsZVxcXCIgc2NvcGU9XFxcImNvbFxcXCI+XFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXJcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgICAgICAgICB2LWlmPVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgZmlsdGVyLmRpcmVjdGlvbiA9PT0gJ2Rlc2MnICYmXFxuICAgICAgICAgICAgICAgICAgICAgIGZpbHRlci5vcmRlckJ5ID09PSAncHVibGlzaGVyX25hbWUnXFxuICAgICAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcIm14LTIgaC0zIHctMiBjdXJzb3ItcG9pbnRlclxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgaWNvbj1cXFwic29ydC1kZXNjZW5kaW5nXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XFxcInNvcnQoJ3B1Ymxpc2hlcl9uYW1lJylcXFwiXFxuICAgICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgICA8c3BhbiB2LWVsc2U+XFxuICAgICAgICAgICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwibXgtMiBoLTMgdy0yIGN1cnNvci1wb2ludGVyXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBpY29uPVxcXCJzb3J0LWFzY2VuZGluZ1xcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVxcXCJzb3J0KCdwdWJsaXNoZXJfbmFtZScpXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XFxuXFxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3tsYW5ndWFnZS5jb21tb25fbGFuZy5vcmdhbmlzYXRpb25fbmFtZX19PC9zcGFuPlxcbiAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICA8L3RoPlxcblxcbiAgICAgICAgICAgICAgPHRoIGlkPVxcXCJ0aXRsZVxcXCIgc2NvcGU9XFxcImNvbFxcXCI+XFxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IGxhbmd1YWdlLnVzZXJfbGFuZy51c2VyX3JvbGUgfX08L3NwYW4+XFxuICAgICAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICAgICAgPHRoPlxcbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBsYW5ndWFnZS51c2VyX2xhbmcuc3RhdHVzIH19PC9zcGFuPlxcbiAgICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICAgIDx0aFxcbiAgICAgICAgICAgICAgICBpZD1cXFwiYWdncmVnYXRpb25fc3RhdHVzXFxcIlxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXJcXFwiXFxuICAgICAgICAgICAgICAgIHNjb3BlPVxcXCJjb2xcXFwiXFxuICAgICAgICAgICAgICAgIHdpZHRoPVxcXCIyMDhweFxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgPHNwYW5cXG4gICAgICAgICAgICAgICAgICB2LWlmPVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlci5kaXJlY3Rpb24gPT09ICdkZXNjJyAmJlxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyLm9yZGVyQnkgPT09ICdjcmVhdGVkX2F0J1xcbiAgICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cXFwiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyXFxcIlxcbiAgICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJteC0yIGgtMyB3LTIgY3Vyc29yLXBvaW50ZXJcXFwiXFxuICAgICAgICAgICAgICAgICAgICBpY29uPVxcXCJzb3J0LWRlc2NlbmRpbmdcXFwiXFxuICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XFxcInNvcnQoJ2NyZWF0ZWRfYXQnKVxcXCJcXG4gICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgIDxzcGFuIHYtZWxzZT5cXG4gICAgICAgICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcIm14LTIgaC0zIHctMiBjdXJzb3ItcG9pbnRlclxcXCJcXG4gICAgICAgICAgICAgICAgICAgIGljb249XFxcInNvcnQtYXNjZW5kaW5nXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVxcXCJzb3J0KCdsYXN0X2xvZ2dlZF9pbicpXFxcIlxcbiAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcIndoaXRlc3BhY2Utbm93cmFwXFxcIj5MYXN0IExvZ2luPC9zcGFuPlxcbiAgICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICAgIDx0aFxcbiAgICAgICAgICAgICAgICB2LWlmPVxcXCJ1c2VyUm9sZSAhPT0gJ2dlbmVyYWxfdXNlcidcXFwiXFxuICAgICAgICAgICAgICAgIGlkPVxcXCJhY3Rpb25cXFwiXFxuICAgICAgICAgICAgICAgIHNjb3BlPVxcXCJjb2xcXFwiXFxuICAgICAgICAgICAgICAgIHdpZHRoPVxcXCIxOTBweFxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgbGFuZ3VhZ2UudXNlcl9sYW5nLmFjdGlvbiB9fTwvc3Bhbj5cXG4gICAgICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgICAgICA8dGggaWQ9XFxcImNiXFxcIiBzY29wZT1cXFwiY29sXFxcIj5cXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcImN1cnNvci1wb2ludGVyXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8c3ZnLXZ1ZSBpY29uPVxcXCJjaGVja2JveFxcXCIgQGNsaWNrPVxcXCJ0b2dnbGVTZWxlY3RhbGxcXFwiIC8+XFxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgICAgPC90cj5cXG4gICAgICAgICAgPC90aGVhZD5cXG4gICAgICAgICAgPHRib2R5IHYtaWY9XFxcInVzZXJzRGF0YT8uZGF0YS5sZW5ndGggPiAwIHx8IGZldGNoaW5nVGFibGVEYXRhXFxcIj5cXG4gICAgICAgICAgICA8dHIgdi1pZj1cXFwiZmV0Y2hpbmdUYWJsZURhdGFcXFwiPlxcbiAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XFxcIjRcXFwiPkZldGNoaW5nIERhdGEuLi48L3RkPlxcbiAgICAgICAgICAgIDwvdHI+XFxuICAgICAgICAgICAgPHRyIHYtZm9yPVxcXCIodXNlciwgaW5kZXgpIGluIHVzZXJzRGF0YT8uZGF0YVxcXCIgdi1lbHNlIDprZXk9XFxcImluZGV4XFxcIj5cXG4gICAgICAgICAgICAgIDx0ZD5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZWxsaXBzaXMgcmVsYXRpdmVcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxwXFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwidy0zMiBvdmVyZmxvdy14LWhpZGRlbiBvdmVyZmxvdy1lbGxpcHNpcyB3aGl0ZXNwYWNlLW5vd3JhcCB0ZXh0LXNtIGNhcGl0YWxpemUgdGV4dC1uLTUwXFxcIlxcbiAgICAgICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgICAgIHt7IHVzZXJbJ2Z1bGxfbmFtZSddIH19XFxuICAgICAgICAgICAgICAgICAgPC9wPlxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZWxsaXBzaXMgcmVsYXRpdmVcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxwXFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwidy0zMiBvdmVyZmxvdy14LWhpZGRlbiBvdmVyZmxvdy1lbGxpcHNpcyB3aGl0ZXNwYWNlLW5vd3JhcFxcXCJcXG4gICAgICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgICAgICB7eyB1c2VyWyd1c2VybmFtZSddIH19XFxuICAgICAgICAgICAgICAgICAgPC9wPlxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XFxcImZsZXggc3BhY2UteC0yXFxcIj5cXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcIm1zLTFcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwibXQtMSBjdXJzb3ItcG9pbnRlciB0ZXh0LWJhc2VcXFwiXFxuICAgICAgICAgICAgICAgICAgICA6aWNvbj1cXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIHVzZXJbJ2VtYWlsX3ZlcmlmaWVkX2F0J11cXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICd0aWNrLW91dGxpbmUnXFxuICAgICAgICAgICAgICAgICAgICAgICAgOiAnYWxlcnQtb3V0bGluZSdcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCIuLi4gdHJ1bmNhdGVcXFwiPlxcbiAgICAgICAgICAgICAgICAgIHt7IHVzZXJbJ2VtYWlsJ10gfX1cXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgICAgIDx0ZCB2LWlmPVxcXCJ1c2VyUm9sZSA9PT0gJ3N1cGVyYWRtaW4nIHx8IHVzZXJSb2xlID09PSAnaWF0aV9hZG1pbidcXFwiPlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJlbGxpcHNpcyByZWxhdGl2ZVxcXCI+XFxuICAgICAgICAgICAgICAgICAgPHBcXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJ3LTMyIG92ZXJmbG93LXgtaGlkZGVuIG92ZXJmbG93LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwXFxcIlxcbiAgICAgICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgICAgIHt7IHVzZXJbJ25hbWUnXSB9fVxcbiAgICAgICAgICAgICAgICAgICAge3tcXG4gICAgICAgICAgICAgICAgICAgICAgdXNlclsncHVibGlzaGVyX25hbWUnXSA/IHVzZXJbJ3B1Ymxpc2hlcl9uYW1lJ10gOiAnLSAtJ1xcbiAgICAgICAgICAgICAgICAgICAgfX1cXG4gICAgICAgICAgICAgICAgICA8L3A+XFxuXFxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwidy01MlxcXCI+XFxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiZWxsaXBzaXNfX3RpdGxlLS1ob3ZlclxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgPnt7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdXNlclsncHVibGlzaGVyX25hbWUnXSA/IHVzZXJbJ3B1Ymxpc2hlcl9uYW1lJ10gOiAnLSAtJ1xcbiAgICAgICAgICAgICAgICAgICAgICB9fVxcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XFxcImNhcGl0YWxpemVcXFwiPlxcbiAgICAgICAgICAgICAgICB7eyByb2xlc1t1c2VyWydyb2xlX2lkJ11dIH19XFxuICAgICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgICAgPHRkIDpjbGFzcz1cXFwidXNlclsnc3RhdHVzJ10gPyAndGV4dC1zcHJpbmctNTAnIDogJ3RleHQtbi00MCdcXFwiPlxcbiAgICAgICAgICAgICAgICB7e1xcbiAgICAgICAgICAgICAgICAgIHVzZXJbJ3N0YXR1cyddXFxuICAgICAgICAgICAgICAgICAgICA/IGxhbmd1YWdlLnVzZXJfbGFuZy5hY3RpdmVcXG4gICAgICAgICAgICAgICAgICAgIDogbGFuZ3VhZ2UudXNlcl9sYW5nLmluYWN0aXZlXFxuICAgICAgICAgICAgICAgIH19XFxuICAgICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgICAgPHRkPlxcbiAgICAgICAgICAgICAgICB7e1xcbiAgICAgICAgICAgICAgICAgIHVzZXJbJ2xhc3RfbG9nZ2VkX2luJ11cXG4gICAgICAgICAgICAgICAgICAgID8gZm9ybWF0RGF0ZSh1c2VyWydsYXN0X2xvZ2dlZF9pbiddKVxcbiAgICAgICAgICAgICAgICAgICAgOiBsYW5ndWFnZS5jb21tb25fbGFuZy5taXNzaW5nLm5vdF9hdmFpbGFibGVcXG4gICAgICAgICAgICAgICAgfX1cXG4gICAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgICA8dGRcXG4gICAgICAgICAgICAgICAgdi1pZj1cXFwidXNlclJvbGUgIT09ICdnZW5lcmFsX3VzZXInXFxcIlxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwiZmxleCBoLWZ1bGwgaXRlbXMtY2VudGVyIHNwYWNlLXgtNlxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgPHAgQGNsaWNrPVxcXCJlZGl0VXNlcih1c2VyKVxcXCI+XFxuICAgICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJjdXJzb3ItcG9pbnRlciB0ZXh0LWJhc2VcXFwiXFxuICAgICAgICAgICAgICAgICAgICBpY29uPVxcXCJlZGl0LWFjdGlvblxcXCJcXG4gICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICA8L3A+XFxuICAgICAgICAgICAgICAgIDwhLS0gPHAgQGNsaWNrPVxcXCJkZWxldGVVc2VyKHVzZXJbJ2lkJ10pXFxcIj4gLS0+XFxuICAgICAgICAgICAgICAgIDxwIEBjbGljaz1cXFwib3BlbkRlbGV0ZW1vZGVsKHVzZXIpXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8c3ZnLXZ1ZSBjbGFzcz1cXFwiY3Vyc29yLXBvaW50ZXIgdGV4dC1iYXNlXFxcIiBpY29uPVxcXCJkZWxldGVcXFwiIC8+XFxuICAgICAgICAgICAgICAgIDwvcD5cXG5cXG4gICAgICAgICAgICAgICAgPHAgQGNsaWNrPVxcXCJvcGVuU3RhdHVzTW9kZWwodXNlcilcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgICAgICAgICA6Y2xhc3M9XFxcInVzZXJbJ3N0YXR1cyddID8gJ2JnLXNwcmluZy01MCcgOiAnYmctbi00MCdcXFwiXFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwicmVsYXRpdmUgYmxvY2sgaC00IHctNyBjdXJzb3ItcG9pbnRlciByb3VuZGVkLWZ1bGxcXFwiXFxuICAgICAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cXG4gICAgICAgICAgICAgICAgICAgICAgOmNsYXNzPVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VyWydzdGF0dXMnXSA/ICd0cmFuc2xhdGUteC0wJyA6ICd0cmFuc2xhdGUteC1mdWxsJ1xcbiAgICAgICAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJhYnNvbHV0ZSB0b3AtMS8yIGxlZnQtWzJweF0gYmxvY2sgaC0zIHctMyAtdHJhbnNsYXRlLXktMS8yIHJvdW5kZWQtZnVsbCBiZy13aGl0ZSBkdXJhdGlvbi0yMDBcXFwiXFxuICAgICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgPC9wPlxcbiAgICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgICAgIDx0ZD5cXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInJlbGF0aXZlIGgtNSB3LTVcXFwiXFxuICAgICAgICAgICAgICAgICAgPjxpbnB1dFxcbiAgICAgICAgICAgICAgICAgICAgdi1tb2RlbD1cXFwiY2hlY2tsaXN0XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcInVzZXItY2hlY2tsaXN0XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgOnZhbHVlPVxcXCJ1c2VyWydpZCddXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cXFwiY2hlY2tib3hcXFwiXFxuICAgICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwicHNldWRvLWNoZWNrYm94XFxcIiAvPlxcbiAgICAgICAgICAgICAgICAgIDxzdmctdnVlIGNsYXNzPVxcXCJ0aWNrZWQtc3ZnIHRleHQtc3ByaW5nLTUwXFxcIiBpY29uPVxcXCJ0aWNrZWRcXFwiIC8+XFxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgPC90cj5cXG4gICAgICAgICAgPC90Ym9keT5cXG4gICAgICAgICAgPHRib2R5IHYtZWxzZT5cXG4gICAgICAgICAgICA8dGQgdi1pZj1cXFwibG9hZGVyXFxcIiBjb2xzcGFuPVxcXCI1XFxcIiBjbGFzcz1cXFwidGV4dC1jZW50ZXJcXFwiPlxcbiAgICAgICAgICAgICAgPGRpdiBjb2xzcGFuPVxcXCI1XFxcIiBjbGFzcz1cXFwic3BpblxcXCI+PC9kaXY+XFxuICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgICA8dGQgdi1lbHNlIGNvbHNwYW49XFxcIjhcXFwiIGNsYXNzPVxcXCJ0ZXh0LWNlbnRlclxcXCI+XFxuICAgICAgICAgICAgICB7eyBsYW5ndWFnZS51c2VyX2xhbmcudXNlcl9ub3RfZm91bmQgfX1cXG4gICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICA8L3Rib2R5PlxcbiAgICAgICAgPC90YWJsZT5cXG4gICAgICA8L2Rpdj5cXG5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJtdC02XFxcIj5cXG4gICAgICAgIDxQYWdpbmF0aW9uXFxuICAgICAgICAgIHYtaWY9XFxcInVzZXJzRGF0YSAmJiB1c2Vyc0RhdGFbJ2xhc3RfcGFnZSddID4gMVxcXCJcXG4gICAgICAgICAgOmRhdGE9XFxcInVzZXJzRGF0YVxcXCJcXG4gICAgICAgICAgQGZldGNoLWFjdGl2aXRpZXM9XFxcImZldGNoVXNlcnNMaXN0XFxcIlxcbiAgICAgICAgLz5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICA8L2Rpdj5cXG48L3RlbXBsYXRlPlxcbjxzY3JpcHQgc2V0dXAgbGFuZz1cXFwidHNcXFwiPlxcbmltcG9ydCB7IGRlZmluZVByb3BzLCByZWFjdGl2ZSwgcmVmLCBjb21wdXRlZCwgd2F0Y2gsIG9uTW91bnRlZCB9IGZyb20gJ3Z1ZSc7XFxuaW1wb3J0IExvYWRlciBmcm9tICcuLi8uLi9jb21wb25lbnRzL0xvYWRlci52dWUnO1xcbmltcG9ydCBUb2FzdCBmcm9tICdDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWUnO1xcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XFxuaW1wb3J0IFBvcHVwTW9kYWwgZnJvbSAnQ29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZSc7XFxuaW1wb3J0IGVuY3J5cHQgZnJvbSAnQ29tcG9zYWJsZS9lbmNyeXB0aW9uJztcXG5pbXBvcnQgTXVsdGlzZWxlY3QgZnJvbSAnQHZ1ZWZvcm0vbXVsdGlzZWxlY3QnO1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcXG5pbXBvcnQgUGFnaW5hdGlvbiBmcm9tICdDb21wb25lbnRzL1RhYmxlUGFnaW5hdGlvbi52dWUnO1xcbmltcG9ydCB7IHdhdGNoSWdub3JhYmxlIH0gZnJvbSAnQHZ1ZXVzZS9jb3JlJztcXG5pbXBvcnQgRGF0ZVJhbmdlV2lkZ2V0IGZyb20gJ0NvbXBvbmVudHMvRGF0ZVJhbmdlV2lkZ2V0LnZ1ZSc7XFxuXFxuY29uc3QgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcXG5jb25zdCBwcm9wcyA9IGRlZmluZVByb3BzKHtcXG4gIG9yZ2FuaXphdGlvbnM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxcbiAgc3RhdHVzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcXG4gIHJvbGVzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcXG4gIHVzZXJSb2xlOiB7IHR5cGU6IFN0cmluZywgcmVxdWlyZWQ6IHRydWUgfSxcXG4gIG9sZGVzdERhdGVzOiB7IHR5cGU6IFN0cmluZywgcmVxdWlyZWQ6IHRydWUgfSxcXG59KTtcXG5cXG5jb25zdCB0b2FzdERhdGEgPSByZWFjdGl2ZSh7XFxuICB2aXNpYmlsaXR5OiBmYWxzZSxcXG4gIG1lc3NhZ2U6ICcnLFxcbiAgdHlwZTogZmFsc2UsXFxufSk7XFxuXFxuY29uc3QgZmlsdGVyID0gcmVhY3RpdmUoe1xcbiAgb3JnYW5pemF0aW9uOiBbXSxcXG4gIHJvbGVzOiBbXSxcXG4gIHN0YXR1czogJycsXFxuICBvcmRlckJ5OiAnJyxcXG4gIGRpcmVjdGlvbjogJycsXFxuICBxOiAnJyxcXG4gIHN0YXJ0X2RhdGU6ICcnLFxcbiAgZW5kX2RhdGU6ICcnLFxcbiAgZGF0ZV90eXBlOiAnY3JlYXRlZF9hdCcsXFxuICBzZWxlY3RlZF9kYXRlX2ZpbHRlcjogJycsXFxufSk7XFxuXFxuY29uc3QgaXNMb2FkZXJWaXNpYmxlID0gcmVmKGZhbHNlKTtcXG5jb25zdCBhZGRVc2VyRm9ybSA9IHJlZihmYWxzZSk7XFxuY29uc3QgZWRpdFVzZXJGb3JtID0gcmVmKGZhbHNlKTtcXG5jb25zdCB1c2Vyc0RhdGEgPSByZWFjdGl2ZSh7IGRhdGE6IFtdIH0pO1xcbmNvbnN0IGlzRW1wdHkgPSByZWYodHJ1ZSk7XFxuY29uc3QgYWxsU2VsZWN0ZWQgPSByZWY8Ym9vbGVhbltdPihbXSk7XFxuY29uc3QgZGVsZXRlTW9kYWwgPSByZWYoZmFsc2UpO1xcbmNvbnN0IGRlbGV0ZUlkID0gcmVmKCk7XFxuY29uc3QgdG90YWxVc2VyID0gcmVmKDApO1xcbmNvbnN0IHN0YXR1c0lkID0gcmVmKCk7XFxuY29uc3Qgc3RhdHVzTW9kYWwgPSByZWYoZmFsc2UpO1xcbmNvbnN0IHN0YXR1c1ZhbHVlID0gcmVmKCk7XFxuY29uc3Qgc3RhdHVzVXNlcm5hbWUgPSByZWYoKTtcXG5jb25zdCBkZWxldGVVc2VybmFtZSA9IHJlZigpO1xcbmNvbnN0IGxvYWRlciA9IHJlZih0cnVlKTtcXG5jb25zdCBmZXRjaGluZ1RhYmxlRGF0YSA9IHJlZihmYWxzZSk7XFxuY29uc3Qgc2VsZWN0ZWRJZHMgPSByZWYoe30pO1xcbmNvbnN0IGNoZWNrbGlzdCA9IHJlZihbXSk7XFxuY29uc3QgY3VycmVudHBhZ2VEYXRhID0gcmVmKFtdKTtcXG5jb25zdCBjbGVhckRhdGUgPSByZWYoZmFsc2UpO1xcbmNvbnN0IGVkaXRVc2VySWQgPSByZWYoJycpO1xcbmNvbnN0IGRhdGVUeXBlID0gcmVmKCdBbGwgVGltZScpO1xcblxcbmNvbnN0IGRyb3Bkb3duUmFuZ2UgPSB7XFxuICBjcmVhdGVkX2F0OiAnVXNlciBjcmVhdGVkIGRhdGUnLFxcbiAgbGFzdF9sb2dnZWRfaW46ICdMYXN0IGxvZ2luIGRhdGUnLFxcbn07XFxuXFxuY29uc3QgZm9ybURhdGEgPSByZWFjdGl2ZSh7XFxuICB1c2VybmFtZTogJycsXFxuICBmdWxsX25hbWU6ICcnLFxcbiAgZW1haWw6ICcnLFxcbiAgc3RhdHVzOiAnMScsXFxuICByb2xlX2lkOiAnJyxcXG4gIHBhc3N3b3JkOiAnJyxcXG4gIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogJycsXFxufSk7XFxuXFxuY29uc3QgZm9ybUVycm9yID0gcmVhY3RpdmUoe1xcbiAgdXNlcm5hbWU6ICcnLFxcbiAgZnVsbF9uYW1lOiAnJyxcXG4gIGVtYWlsOiAnJyxcXG4gIHN0YXR1czogJycsXFxuICByb2xlX2lkOiAnJyxcXG4gIHBhc3N3b3JkOiAnJyxcXG4gIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogJycsXFxufSk7XFxuaW1wb3J0IHsga2ViYWJDYXNlVG9TbmFrZWNhc2UgfSBmcm9tICdDb21wb3NhYmxlL3V0aWxzJztcXG5cXG5jb25zdCBpc0ZpbHRlckFwcGxpZWQgPSBjb21wdXRlZCgoKSA9PiB7XFxuICByZXR1cm4gKFxcbiAgICBmaWx0ZXIub3JnYW5pemF0aW9uLmxlbmd0aCArIGZpbHRlci5yb2xlcy5sZW5ndGggIT0gMCB8fFxcbiAgICBmaWx0ZXIuc3RhdHVzICE9ICcnIHx8XFxuICAgIChmaWx0ZXIuc3RhcnRfZGF0ZSAmJiBmaWx0ZXIuZW5kX2RhdGUpXFxuICApO1xcbn0pO1xcblxcbmNvbnN0IHsgaWdub3JlVXBkYXRlcyB9ID0gd2F0Y2hJZ25vcmFibGUodG9hc3REYXRhLCAoKSA9PiB1bmRlZmluZWQsIHtcXG4gIGZsdXNoOiAnc3luYycsXFxufSk7XFxuXFxud2F0Y2goXFxuICAoKSA9PiB0b2FzdERhdGEudmlzaWJpbGl0eSxcXG4gICgpID0+IHtcXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XFxuICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSBmYWxzZTtcXG4gICAgICBpZ25vcmVUb2FzdFVwZGF0ZSgpO1xcbiAgICB9LCAyMDAwKTtcXG4gIH1cXG4pO1xcblxcbmNvbnN0IGlnbm9yZVRvYXN0VXBkYXRlID0gKCkgPT4ge1xcbiAgaWdub3JlVXBkYXRlcygoKSA9PiB7XFxuICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gJyc7XFxuICB9KTtcXG59O1xcblxcbmNvbnN0IGNsZWFyRGF0ZUZpbHRlciA9ICgpID0+IHtcXG4gIGZpbHRlci5zZWxlY3RlZF9kYXRlX2ZpbHRlciA9ICcnO1xcbiAgY2xlYXJEYXRlUmFuZ2VGaWx0ZXIoKTtcXG59O1xcblxcbm9uTW91bnRlZCgoKSA9PiB7XFxuICBsZXQgZmlsdGVyUGFyYW1zID0gZ2V0RmlsdGVyUGFyYW1zRnJvbVByZXZpb3VzUGFnZSgpO1xcbiAgaWYgKGZpbHRlclBhcmFtcykge1xcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpbHRlclBhcmFtcy5sZW5ndGg7IGkrKykge1xcbiAgICAgIGxldCBrZXkgPSBrZWJhYkNhc2VUb1NuYWtlY2FzZShmaWx0ZXJQYXJhbXNbaV1bMF0pO1xcbiAgICAgIGxldCB2YWx1ZSA9IGZpbHRlclBhcmFtc1tpXVsxXTtcXG4gICAgICBpZiAoWydyb2xlcycsICdvcmdhbml6YXRpb24nXS5pbmNsdWRlcyhrZXkpKSB7XFxuICAgICAgICBmaWx0ZXJba2V5XS5wdXNoKHZhbHVlKTtcXG4gICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2RhdGVfdHlwZScpIHtcXG4gICAgICAgIGRhdGVUeXBlLnZhbHVlID0gdmFsdWUuc3BsaXQoJy0nKS5qb2luKCcgJyk7XFxuICAgICAgfSBlbHNlIHtcXG4gICAgICAgIGZpbHRlcltrZXldID0gdmFsdWU7XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxufSk7XFxuY29uc3QgZ2V0RmlsdGVyUGFyYW1zRnJvbVByZXZpb3VzUGFnZSA9ICgpID0+IHtcXG4gIGxldCBxdWVyeVN0cmluZyA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmPy50b1N0cmluZygpO1xcblxcbiAgaWYgKHF1ZXJ5U3RyaW5nKSB7XFxuICAgIHF1ZXJ5U3RyaW5nID0gcXVlcnlTdHJpbmcuc3BsaXQoJz8nKVsxXTtcXG5cXG4gICAgbGV0IHF1ZXJ5UGFyYW1zSW5LZXlWYWw6IG9iamVjdFtdID0gW107XFxuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gcXVlcnlTdHJpbmc/LnNwbGl0KCcmJyk7XFxuXFxuICAgIGlmIChxdWVyeVBhcmFtcykge1xcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcXVlcnlQYXJhbXMubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgIGxldCBba2V5LCB2YWx1ZV0gPSBxdWVyeVBhcmFtc1tpXS5zcGxpdCgnPScpO1xcbiAgICAgICAgaWYgKGtleSkge1xcbiAgICAgICAgICBxdWVyeVBhcmFtc0luS2V5VmFsLnB1c2goW2tleSwgdmFsdWUgPz8gJyddKTtcXG4gICAgICAgIH1cXG4gICAgICB9XFxuICAgIH1cXG5cXG4gICAgcmV0dXJuIHF1ZXJ5UGFyYW1zSW5LZXlWYWw7XFxuICB9XFxuXFxuICByZXR1cm4gZmFsc2U7XFxufTtcXG5cXG5vbk1vdW50ZWQoYXN5bmMgKCkgPT4ge1xcbiAgYXhpb3MuZ2V0KGAvdXNlcnMvcGFnZS8xYCkudGhlbigocmVzKSA9PiB7XFxuICAgIGNvbnN0IHJlc3BvbnNlID0gcmVzLmRhdGE7XFxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzcG9uc2UuZGF0YS5kYXRhLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgcmVzcG9uc2UuZGF0YS5kYXRhW2ldLnJvbGUgPSByZXNwb25zZS5kYXRhLmRhdGFbaV0ucm9sZVxcbiAgICAgICAgLnNwbGl0KCdfJylcXG4gICAgICAgIC5qb2luKCcgJyk7XFxuICAgIH1cXG4gICAgT2JqZWN0LmFzc2lnbih1c2Vyc0RhdGEsIHJlc3BvbnNlLmRhdGEpO1xcbiAgICBpc0VtcHR5LnZhbHVlID0gcmVzcG9uc2UuZGF0YS5kYXRhLmxlbmd0aCA/IGZhbHNlIDogdHJ1ZTtcXG4gICAgbG9hZGVyLnZhbHVlID0gZmFsc2U7XFxuICB9KTtcXG5cXG4gIHNldFRpbWVvdXQoKCkgPT4ge1xcbiAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IGZhbHNlO1xcbiAgfSwgNTAwMCk7XFxufSk7XFxuXFxuY29uc3QgdGV4dEJ1YmJsZWRhdGEgPSAoaWQsIGZpZWxkKSA9PiB7XFxuICBzd2l0Y2ggKGZpZWxkKSB7XFxuICAgIGNhc2UgJ29yZyc6XFxuICAgICAgcmV0dXJuIHByb3BzLm9yZ2FuaXphdGlvbnNbK2lkXTtcXG4gICAgY2FzZSAncm9sZXMnOlxcbiAgICAgIHJldHVybiBwcm9wcy5yb2xlc1sraWRdO1xcbiAgICBjYXNlICdzdGF0dXMnOlxcbiAgICAgIHJldHVybiBwcm9wcy5zdGF0dXNbK2lkXTtcXG4gICAgZGVmYXVsdDpcXG4gICAgICByZXR1cm4gZmllbGQ7XFxuICB9XFxufTtcXG5cXG5jb25zdCBjbGVhckZpbHRlciA9ICgpID0+IHtcXG4gIGZpbHRlci5vcmdhbml6YXRpb24gPSBbXTtcXG4gIGZpbHRlci5yb2xlcyA9IFtdO1xcbiAgZmlsdGVyLnN0YXR1cyA9ICcnO1xcbiAgZmlsdGVyLmRpcmVjdGlvbiA9ICcnO1xcbiAgZmlsdGVyLm9yZGVyQnkgPSAnJztcXG4gIGZpbHRlci5xID0gJyc7XFxuICBmaWx0ZXIuc2VsZWN0ZWRfZGF0ZV9maWx0ZXIgPSAnJztcXG4gIGNsZWFyRGF0ZVJhbmdlRmlsdGVyKCk7XFxufTtcXG5cXG5jb25zdCBjbGVhckRhdGVSYW5nZUZpbHRlciA9ICgpID0+IHtcXG4gIGNsZWFyRGF0ZS52YWx1ZSA9IHRydWU7XFxufTtcXG5cXG5jb25zdCBzZXREYXRlUmFuZ2VEYXRlID0gKHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgc2VsZWN0ZWREYXRlKSA9PiB7XFxuICBmaWx0ZXIuc3RhcnRfZGF0ZSA9IHN0YXJ0RGF0ZTtcXG4gIGZpbHRlci5lbmRfZGF0ZSA9IGVuZERhdGU7XFxuICBmaWx0ZXIuc2VsZWN0ZWRfZGF0ZV9maWx0ZXIgPSBzZWxlY3RlZERhdGU7XFxufTtcXG5jb25zdCBzZXREYXRlVHlwZSA9IChkYXRlVHlwZSkgPT4ge1xcbiAgZmlsdGVyLmRhdGVfdHlwZSA9IGRhdGVUeXBlO1xcbn07XFxuXFxuY29uc3QgY3JlYXRlVXNlciA9ICgpID0+IHtcXG4gIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XFxuICBsZXQgcGFzc3dvcmREYXRhID0ge1xcbiAgICBwYXNzd29yZDogZW5jcnlwdChmb3JtRGF0YS5wYXNzd29yZCwgcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZID8/ICcnKSxcXG4gICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiBlbmNyeXB0KFxcbiAgICAgIGZvcm1EYXRhLnBhc3N3b3JkX2NvbmZpcm1hdGlvbixcXG4gICAgICBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkgPz8gJydcXG4gICAgKSxcXG4gIH07XFxuXFxuICBheGlvc1xcbiAgICAucG9zdCgnL3VzZXInLCB7IC4uLmZvcm1EYXRhLCAuLi5wYXNzd29yZERhdGEgfSlcXG4gICAgLnRoZW4oKHJlcykgPT4ge1xcbiAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcXG4gICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHJlcy5kYXRhLm1lc3NhZ2U7XFxuICAgICAgdG9hc3REYXRhLnR5cGUgPSByZXMuZGF0YS5zdWNjZXNzO1xcbiAgICAgIHNldEZvcm1FcnJvcigpO1xcbiAgICAgIHNldEZvcm1FcnJvcihyZXMuZGF0YS5lcnJvcnMpO1xcblxcbiAgICAgIGlmIChyZXMuZGF0YS5zdWNjZXNzKSB7XFxuICAgICAgICBjbGVhckZpbHRlcigpO1xcbiAgICAgICAgZmV0Y2hVc2Vyc0xpc3QodXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXSwgdHJ1ZSk7XFxuICAgICAgICBhZGRVc2VyRm9ybS52YWx1ZSA9IGZhbHNlO1xcbiAgICAgICAgZW1wdHlGb3JtRGF0YSgpO1xcbiAgICAgICAgc2V0Rm9ybUVycm9yKCk7XFxuICAgICAgfVxcbiAgICB9KVxcbiAgICAuY2F0Y2goKGVycm9yKSA9PiB7XFxuICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xcbiAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gZXJyb3IuZGF0YS5tZXNzYWdlO1xcbiAgICAgIHRvYXN0RGF0YS50eXBlID0gZmFsc2U7XFxuICAgICAgYWRkVXNlckZvcm0udmFsdWUgPSBmYWxzZTtcXG4gICAgfSlcXG4gICAgLmZpbmFsbHkoKCkgPT4ge1xcbiAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xcbiAgICB9KTtcXG59O1xcblxcbmNvbnN0IGVkaXRVc2VyID0gKHVzZXIpID0+IHtcXG4gIGZvcm1EYXRhLnVzZXJuYW1lID0gdXNlci51c2VybmFtZTtcXG4gIGZvcm1EYXRhLmZ1bGxfbmFtZSA9IHVzZXIuZnVsbF9uYW1lO1xcbiAgZm9ybURhdGEuZW1haWwgPSB1c2VyLmVtYWlsO1xcbiAgZm9ybURhdGEucm9sZV9pZCA9IHVzZXIucm9sZV9pZDtcXG4gIGVkaXRVc2VySWQudmFsdWUgPSB1c2VyLmlkO1xcbiAgZWRpdFVzZXJGb3JtLnZhbHVlID0gdHJ1ZTtcXG59O1xcblxcbmNvbnN0IGVtcHR5Rm9ybURhdGEgPSAoKSA9PiB7XFxuICBmb3IgKGNvbnN0IGtleSBpbiBmb3JtRGF0YSkge1xcbiAgICBmb3JtRGF0YVtrZXldID0ga2V5ID09PSAnc3RhdHVzJyA/IDEgOiAnJztcXG4gIH1cXG59O1xcbmNvbnN0IHNldEZvcm1FcnJvciA9IChlcnJvcnMgPSB7fSkgPT4ge1xcbiAgaWYgKE9iamVjdC5rZXlzKGVycm9ycykubGVuZ3RoKSB7XFxuICAgIGZvciAoY29uc3Qga2V5IGluIGVycm9ycykge1xcbiAgICAgIGZvcm1FcnJvcltrZXldID0gZXJyb3JzW2tleV07XFxuICAgIH1cXG4gIH0gZWxzZSB7XFxuICAgIGZvciAoY29uc3Qga2V5IGluIGZvcm1FcnJvcikge1xcbiAgICAgIGZvcm1FcnJvcltrZXldID0gJyc7XFxuICAgIH1cXG4gIH1cXG59O1xcblxcbmNvbnN0IG9wZW5TdGF0dXNNb2RlbCA9ICh1c2VyKSA9PiB7XFxuICBzdGF0dXNJZC52YWx1ZSA9IHVzZXIuaWQ7XFxuICBzdGF0dXNWYWx1ZS52YWx1ZSA9IHVzZXIuc3RhdHVzO1xcbiAgc3RhdHVzTW9kYWwudmFsdWUgPSB0cnVlO1xcbiAgc3RhdHVzVXNlcm5hbWUudmFsdWUgPSB1c2VyLnVzZXJuYW1lO1xcbn07XFxuXFxuY29uc3QgdXBkYXRlVXNlciA9ICgpID0+IHtcXG4gIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XFxuICBsZXQgcGFzc3dvcmREYXRhID0ge1xcbiAgICBwYXNzd29yZDogZW5jcnlwdChmb3JtRGF0YS5wYXNzd29yZCwgcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZID8/ICcnKSxcXG4gICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiBlbmNyeXB0KFxcbiAgICAgIGZvcm1EYXRhLnBhc3N3b3JkX2NvbmZpcm1hdGlvbixcXG4gICAgICBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkgPz8gJydcXG4gICAgKSxcXG4gIH07XFxuXFxuICBheGlvc1xcbiAgICAucGF0Y2goYC91c2VyLyR7ZWRpdFVzZXJJZC52YWx1ZX1gLCB7IC4uLmZvcm1EYXRhLCAuLi5wYXNzd29yZERhdGEgfSlcXG4gICAgLnRoZW4oKHJlcykgPT4ge1xcbiAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcXG4gICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHJlcy5kYXRhLm1lc3NhZ2U7XFxuICAgICAgdG9hc3REYXRhLnR5cGUgPSByZXMuZGF0YS5zdWNjZXNzO1xcbiAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xcbiAgICAgIHNldEZvcm1FcnJvcigpO1xcbiAgICAgIHNldEZvcm1FcnJvcihyZXMuZGF0YS5lcnJvcnMpO1xcblxcbiAgICAgIGlmIChyZXMuZGF0YS5zdWNjZXNzKSB7XFxuICAgICAgICBlZGl0VXNlckZvcm0udmFsdWUgPSBmYWxzZTtcXG4gICAgICAgIGZldGNoVXNlcnNMaXN0KHVzZXJzRGF0YVsnY3VycmVudF9wYWdlJ10pO1xcbiAgICAgICAgZWRpdFVzZXJJZC52YWx1ZSA9ICcnO1xcbiAgICAgICAgZW1wdHlGb3JtRGF0YSgpO1xcbiAgICAgICAgc2V0Rm9ybUVycm9yKCk7XFxuICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XFxuICAgICAgfVxcbiAgICB9KVxcbiAgICAuY2F0Y2goKGVycm9yKSA9PiB7XFxuICAgICAgZWRpdFVzZXJJZC52YWx1ZSA9ICcnO1xcbiAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcXG4gICAgICB0b2FzdERhdGEubWVzc2FnZSA9IGVycm9yLmRhdGEubWVzc2FnZTtcXG4gICAgICB0b2FzdERhdGEudHlwZSA9IGZhbHNlO1xcbiAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xcbiAgICB9KVxcbiAgICAuZmluYWxseSgoKSA9PiB7XFxuICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XFxuICAgIH0pO1xcbn07XFxuXFxud2F0Y2goXFxuICAoKSA9PiBbXFxuICAgIGZpbHRlci5vcmdhbml6YXRpb24sXFxuICAgIGZpbHRlci5yb2xlcyxcXG4gICAgZmlsdGVyLnEsXFxuICAgIGZpbHRlci5zdGF0dXMsXFxuICAgIGZpbHRlci5zdGFydF9kYXRlLFxcbiAgICBmaWx0ZXIuZW5kX2RhdGUsXFxuICAgIGZpbHRlci5kYXRlX3R5cGUsXFxuICBdLFxcbiAgKCkgPT4ge1xcbiAgICBmZXRjaFVzZXJzTGlzdCh1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddLCB0cnVlKTtcXG4gIH0sXFxuICB7IGRlZXA6IHRydWUgfVxcbik7XFxuXFxuZnVuY3Rpb24gZmV0Y2hVc2Vyc0xpc3QoYWN0aXZlX3BhZ2U6IG51bWJlciwgZmlsdGVyZWQgPSBmYWxzZSkge1xcbiAgbGV0IHJvdXRlID0gYC91c2Vycy9wYWdlLyR7ZmlsdGVyZWQgPyAnMScgOiBhY3RpdmVfcGFnZX1gO1xcbiAgZmV0Y2hpbmdUYWJsZURhdGEudmFsdWUgPSB0cnVlO1xcbiAgbGV0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcXG5cXG4gIGZvciAoY29uc3QgZmlsdGVyX2tleSBpbiBmaWx0ZXIpIHtcXG4gICAgaWYgKGZpbHRlcltmaWx0ZXJfa2V5XSkge1xcbiAgICAgIGlmIChmaWx0ZXJbZmlsdGVyX2tleV0ubGVuZ3RoID4gMCkge1xcbiAgICAgICAgcGFyYW1zLmFwcGVuZChmaWx0ZXJfa2V5LCBmaWx0ZXJbZmlsdGVyX2tleV0pO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcblxcbiAgYXhpb3NcXG4gICAgLmdldChyb3V0ZSwgeyBwYXJhbXM6IHBhcmFtcyB9KVxcbiAgICAudGhlbigocmVzKSA9PiB7XFxuICAgICAgY29uc3QgcmVzcG9uc2UgPSByZXMuZGF0YTtcXG4gICAgICBPYmplY3QuYXNzaWduKHVzZXJzRGF0YSwgcmVzcG9uc2UuZGF0YSk7XFxuICAgICAgaXNFbXB0eS52YWx1ZSA9IHJlc3BvbnNlLmRhdGEgPyBmYWxzZSA6IHRydWU7XFxuICAgICAgdG90YWxVc2VyLnZhbHVlID0gcmVzcG9uc2UuZGF0YS50b3RhbDtcXG4gICAgfSlcXG4gICAgLmZpbmFsbHkoKCkgPT4ge1xcbiAgICAgIGZldGNoaW5nVGFibGVEYXRhLnZhbHVlID0gZmFsc2U7XFxuICAgIH0pO1xcbn1cXG5cXG5jb25zdCBvcGVuRGVsZXRlbW9kZWwgPSAodXNlcikgPT4ge1xcbiAgZGVsZXRlTW9kYWwudmFsdWUgPSB0cnVlO1xcbiAgZGVsZXRlSWQudmFsdWUgPSB1c2VyLmlkO1xcbiAgZGVsZXRlVXNlcm5hbWUudmFsdWUgPSB1c2VyLnVzZXJuYW1lO1xcbn07XFxuXFxuZnVuY3Rpb24gZGVsZXRlVXNlcihpZDogbnVtYmVyKSB7XFxuICBkZWxldGVNb2RhbC52YWx1ZSA9IGZhbHNlO1xcbiAgd2luZG93LnNjcm9sbFRvKDAsIDApO1xcblxcbiAgYXhpb3MuZGVsZXRlKGAvdXNlci8ke2lkfWApLnRoZW4oKHJlcykgPT4ge1xcbiAgICBpZiAocmVzLmRhdGEubWVzc2FnZSkge1xcbiAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcXG4gICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHJlcy5kYXRhLm1lc3NhZ2U7XFxuICAgICAgdG9hc3REYXRhLnR5cGUgPSByZXMuZGF0YS5zdWNjZXNzO1xcbiAgICB9XFxuXFxuICAgIGlmIChyZXMuZGF0YS5zdWNjZXNzKSB7XFxuICAgICAgZmV0Y2hVc2Vyc0xpc3QodXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXSk7XFxuICAgIH1cXG4gIH0pO1xcbn1cXG5cXG5jb25zdCBzb3J0ID0gKHBhcmFtKSA9PiB7XFxuICBmaWx0ZXIuZGlyZWN0aW9uID1cXG4gICAgZmlsdGVyLmRpcmVjdGlvbiA9PT0gJ2FzYycgJiYgZmlsdGVyLm9yZGVyQnkgPT09IHBhcmFtID8gJ2Rlc2MnIDogJ2FzYyc7XFxuICBmaWx0ZXIub3JkZXJCeSA9IHBhcmFtO1xcblxcbiAgZmV0Y2hVc2Vyc0xpc3QoMSk7XFxufTtcXG5cXG5mdW5jdGlvbiB0b2dnbGVVc2VyU3RhdHVzKGlkOiBudW1iZXIpIHtcXG4gIHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcXG4gIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XFxuICBzdGF0dXNNb2RhbC52YWx1ZSA9IGZhbHNlO1xcblxcbiAgYXhpb3NcXG4gICAgLnBhdGNoKGAvdXNlci9zdGF0dXMvJHtpZH1gKVxcbiAgICAudGhlbigocmVzKSA9PiB7XFxuICAgICAgaWYgKHJlcy5zdGF0dXMpIHtcXG4gICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcXG4gICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcmVzLmRhdGEubWVzc2FnZTtcXG4gICAgICAgIHRvYXN0RGF0YS50eXBlID0gcmVzLmRhdGEuc3VjY2VzcztcXG5cXG4gICAgICAgIGZldGNoVXNlcnNMaXN0KHVzZXJzRGF0YVsnY3VycmVudF9wYWdlJ10pO1xcbiAgICAgIH1cXG4gICAgfSlcXG4gICAgLmZpbmFsbHkoKCkgPT4ge1xcbiAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xcbiAgICB9KTtcXG59XFxuXFxuZnVuY3Rpb24gZm9ybWF0RGF0ZShkYXRlOiBEYXRlKSB7XFxuICByZXR1cm4gbW9tZW50KGRhdGUpLmZvcm1hdCgnTEwnKTtcXG59XFxuXFxuY29uc3QgdG9nZ2xlU2VsZWN0YWxsID0gKCkgPT4ge1xcbiAgY3VycmVudHBhZ2VEYXRhLnZhbHVlID0gdXNlcnNEYXRhLmRhdGEubWFwKCh2YWx1ZSkgPT4ge1xcbiAgICByZXR1cm4gdmFsdWVbJ2lkJ107XFxuICB9KTtcXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdXNlcnNEYXRhLmRhdGEubGVuZ3RoOyBpKyspIHtcXG4gICAgaWYgKCFjaGVja2xpc3QudmFsdWUuaW5jbHVkZXModXNlcnNEYXRhLmRhdGFbaV1bJ2lkJ10pKVxcbiAgICAgIGNoZWNrbGlzdC52YWx1ZVtjaGVja2xpc3QudmFsdWUubGVuZ3RoICsgaV0gPSB1c2Vyc0RhdGEuZGF0YVtpXVsnaWQnXTtcXG4gIH1cXG4gIHNlbGVjdGVkSWRzLnZhbHVlW3VzZXJzRGF0YVsnY3VycmVudF9wYWdlJ11dID0gY2hlY2tsaXN0LnZhbHVlO1xcbiAgaWYgKGFsbFNlbGVjdGVkLnZhbHVlW3VzZXJzRGF0YVsnY3VycmVudF9wYWdlJ11dKSB7XFxuICAgIGNoZWNrbGlzdC52YWx1ZSA9IGNoZWNrbGlzdC52YWx1ZS5maWx0ZXIoXFxuICAgICAgKG4pID0+ICFPYmplY3QudmFsdWVzKGN1cnJlbnRwYWdlRGF0YS52YWx1ZSkuaW5jbHVkZXMobilcXG4gICAgKTtcXG4gIH1cXG4gIGNoZWNrbGlzdC52YWx1ZSA9IGNoZWNrbGlzdC52YWx1ZS5maWx0ZXIoZnVuY3Rpb24gKGVsKSB7XFxuICAgIHJldHVybiBlbCAhPSBudWxsO1xcbiAgfSk7XFxuICBhbGxTZWxlY3RlZC52YWx1ZVt1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddXSA9XFxuICAgICFhbGxTZWxlY3RlZC52YWx1ZVt1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddXTtcXG59O1xcbndhdGNoKFxcbiAgKCkgPT4gY2hlY2tsaXN0LnZhbHVlLFxcbiAgKCkgPT4ge1xcbiAgICBzZWxlY3RlZElkcy52YWx1ZVt1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddXSA9IFtdO1xcblxcbiAgICBjdXJyZW50cGFnZURhdGEudmFsdWUgPSB1c2Vyc0RhdGEuZGF0YS5tYXAoKHZhbHVlKSA9PiB7XFxuICAgICAgcmV0dXJuIHZhbHVlWydpZCddO1xcbiAgICB9KTtcXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGVja2xpc3QudmFsdWUubGVuZ3RoOyBpKyspIHtcXG4gICAgICBpZiAoY3VycmVudHBhZ2VEYXRhLnZhbHVlLmluY2x1ZGVzKGNoZWNrbGlzdC52YWx1ZVtpXSkpIHtcXG4gICAgICAgIHNlbGVjdGVkSWRzLnZhbHVlW3VzZXJzRGF0YVsnY3VycmVudF9wYWdlJ11dW2ldID0gY2hlY2tsaXN0LnZhbHVlW2ldO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgICBzZWxlY3RlZElkcy52YWx1ZVt1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddXSA9IHNlbGVjdGVkSWRzLnZhbHVlW1xcbiAgICAgIHVzZXJzRGF0YVsnY3VycmVudF9wYWdlJ11cXG4gICAgXS5maWx0ZXIoZnVuY3Rpb24gKGVsKSB7XFxuICAgICAgcmV0dXJuIGVsICE9IG51bGw7XFxuICAgIH0pO1xcbiAgfVxcbik7XFxuXFxuY29uc3QgZ2VuZXJhdGVMYWJlbCA9IChsYWJlbCkgPT4ge1xcbiAgcmV0dXJuIHsgJy0tbGFiZWwnOiBgJyR7bGFiZWx9J2AgfTtcXG59O1xcblxcbmNvbnN0IGRvd25sb2FkQWxsID0gKCkgPT4ge1xcbiAgbGV0IHJvdXRlID0gYC91c2Vycy9kb3dubG9hZC9gO1xcbiAgbGV0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcXG4gIGxldCBhbGxQYWdlU2VsZWN0ZWQ7XFxuICBhbGxQYWdlU2VsZWN0ZWQgPSBPYmplY3QudmFsdWVzKHNlbGVjdGVkSWRzLnZhbHVlKS5mbGF0KCk7XFxuXFxuICBpZiAoY2hlY2tsaXN0LnZhbHVlLmxlbmd0aCA9PSAwKSB7XFxuICAgIGZvciAoY29uc3QgZmlsdGVyX2tleSBpbiBmaWx0ZXIpIHtcXG4gICAgICBpZiAoZmlsdGVyW2ZpbHRlcl9rZXldLmxlbmd0aCA+IDApIHtcXG4gICAgICAgIHBhcmFtcy5hcHBlbmQoZmlsdGVyX2tleSwgZmlsdGVyW2ZpbHRlcl9rZXldKTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH0gZWxzZSB7XFxuICAgIHBhcmFtcy5hcHBlbmQoJ3VzZXJzJywgYWxsUGFnZVNlbGVjdGVkKTtcXG4gIH1cXG5cXG4gIGF4aW9zLmdldChyb3V0ZSwgeyBwYXJhbXM6IHBhcmFtcyB9KS50aGVuKChyZXMpID0+IHtcXG4gICAgY29uc3QgcmVzcG9uc2UgPSByZXMuZGF0YTtcXG4gICAgbGV0IGJsb2IgPSBuZXcgQmxvYihbcmVzcG9uc2VdLCB7XFxuICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL2NzdicsXFxuICAgIH0pO1xcbiAgICBsZXQgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcXG4gICAgbGluay5ocmVmID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XFxuICAgIGxpbmsuZG93bmxvYWQgPSByZXMuaGVhZGVyc1snY29udGVudC1kaXNwb3NpdGlvbiddLnNwbGl0KCc9JylbMV07XFxuICAgIGxpbmsuY2xpY2soKTtcXG4gIH0pO1xcbn07XFxuPC9zY3JpcHQ+XFxuPHN0eWxlIHNjb3BlZD5cXG5Aa2V5ZnJhbWVzIHNwaW5uZXIge1xcbiAgMCUge1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01MCUsIC01MCUsIDApIHJvdGF0ZSgwZGVnKTtcXG4gIH1cXG4gIDEwMCUge1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01MCUsIC01MCUsIDApIHJvdGF0ZSgzNjBkZWcpO1xcbiAgfVxcbn1cXG5cXG4uc3Bpbjo6YmVmb3JlIHtcXG4gIGFuaW1hdGlvbjogMS41cyBsaW5lYXIgaW5maW5pdGUgc3Bpbm5lcjtcXG4gIGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBpbmhlcml0O1xcbiAgYm9yZGVyOiBzb2xpZCAzcHggI2NmZDBkMTtcXG4gIGJvcmRlci1ib3R0b20tY29sb3I6IGdyZXk7XFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICBjb250ZW50OiAnJztcXG4gIGhlaWdodDogMjBweDtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogNTAlO1xcbiAgbGVmdDogNTAlO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNTAlLCAtNTAlLCAwKTtcXG4gIHdpZHRoOiAyMHB4O1xcbiAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcXG59XFxuLnNwaW4ge1xcbiAgaGVpZ2h0OiA0MHB4O1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBtYXJnaW46IGF1dG87XFxufVxcbjwvc3R5bGU+XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmFjdGl2aXR5X19oZWFkZXJbZGF0YS12LTZmZTU5MDU1XSB7XFxuICB0b3A6IDBweDtcXG4gIHotaW5kZXg6IDEwMDtcXG59XFxuLmFjdGl2aXR5X19oZWFkZXIgbmF2W2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxNDIwcHgpIHtcXG4uYWN0aXZpdHlfX2hlYWRlciBuYXZbZGF0YS12LTZmZTU5MDU1XSB7XFxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbn1cXG59XFxuLmFjdGl2aXR5X19oZWFkZXIgbmF2IGFbZGF0YS12LTZmZTU5MDU1XTpob3ZlciB7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLXdoaXRlKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxufVxcbi5hY3Rpdml0eV9faGVhZGVyIG5hdiB1bFtkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDM3NXB4KSB7XFxuLmFjdGl2aXR5X19oZWFkZXIgLmFkZC1idG5bZGF0YS12LTZmZTU5MDU1XSB7XFxuICAgIGRpc3BsYXk6IG5vbmU7XFxufVxcbn1cXG4uYWN0aXZpdHlfX2hlYWRlciAudXNlci1uYXZbZGF0YS12LTZmZTU5MDU1XSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG59XFxuLnRvYXN0W2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgbGVmdDogNTAlO1xcbiAgei1pbmRleDogNTA7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgcmlnaHQ6IDAuNzVyZW07XFxuICB6LWluZGV4OiAyMDtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0td2hpdGUpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICB0ZXh0LWFsaWduOiBsZWZ0O1xcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjI1cmVtO1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1ibHVlY29yYWwpLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG4gIG9wYWNpdHk6IDA7XFxuICAtLXR3LXNoYWRvdzogMHB4IDRweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcXG4gIC0tdHctc2hhZG93LWNvbG9yZWQ6IDBweCA0cHggNDBweCB2YXIoLS10dy1zaGFkb3ctY29sb3IpO1xcbiAgYm94LXNoYWRvdzogdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93LCAwIDAgIzAwMDApLCB2YXIoLS10dy1yaW5nLXNoYWRvdywgMCAwICMwMDAwKSwgdmFyKC0tdHctc2hhZG93KTtcXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDMwMG1zO1xcbn1cXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4ucHJvZmlsZV9fZHJvcGRvd25bZGF0YS12LTZmZTU5MDU1XSB7XFxuICAgIHJpZ2h0OiAyLjVyZW07XFxufVxcbn1cXG4ucHJvZmlsZV9fZHJvcGRvd25bZGF0YS12LTZmZTU5MDU1XSB7XFxuICB0b3A6IDUwcHg7XFxuICB3aWR0aDogMjY1cHg7XFxuICBib3gtc2hhZG93OiA0cHggNHB4IDQwcHggcmdiYSgwLCA1MCwgNzYsIDAuMik7XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDY0MHB4KSB7XFxuLnByb2ZpbGVfX2Ryb3Bkb3duW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgICB3aWR0aDogMjIwcHg7XFxufVxcbn1cXG4ucHJvZmlsZV9fZHJvcGRvd24gbGlbZGF0YS12LTZmZTU5MDU1XSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duIGxpW2RhdGEtdi02ZmU1OTA1NV0gPiA6bm90KFtoaWRkZW5dKSB+IDpub3QoW2hpZGRlbl0pIHtcXG4gIC0tdHctc3BhY2UteC1yZXZlcnNlOiAwO1xcbiAgbWFyZ2luLXJpZ2h0OiBjYWxjKDAuNzVyZW0gKiB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKTtcXG4gIG1hcmdpbi1sZWZ0OiBjYWxjKDAuNzVyZW0gKiBjYWxjKDEgLSB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKSk7XFxufVxcbi5wcm9maWxlX19kcm9wZG93biBsaVtkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIHBhZGRpbmc6IDAuNzVyZW07XFxufVxcbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xcbi5wcm9maWxlX19kcm9wZG93biBsaVtkYXRhLXYtNmZlNTkwNTVdIHtcXG4gICAgcGFkZGluZzogMXJlbTtcXG59XFxufVxcbi5wcm9maWxlX19kcm9wZG93biBsaSBhW2RhdGEtdi02ZmU1OTA1NV06aG92ZXIge1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1ibHVlY29yYWwpLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duIGxpIC51c2VyLXByb2ZpbGVbZGF0YS12LTZmZTU5MDU1XSB7XFxuICBmb250LXNpemU6IDI2cHg7XFxufVxcbi5wcm9maWxlX19kcm9wZG93biAuZHJvcGRvd25fX2xpc3RbZGF0YS12LTZmZTU5MDU1XSB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLW4tMTApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxufVxcbi5wcm9maWxlX19kcm9wZG93biAuZHJvcGRvd25fX2xpc3RbZGF0YS12LTZmZTU5MDU1XTpob3ZlciB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLW4tMjApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLWJsdWVjb3JhbCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cXG4ucHJvZmlsZV9fZHJvcGRvd24gLmRyb3Bkb3duX19saXN0IGFbZGF0YS12LTZmZTU5MDU1XSB7XFxuICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duLS10b3VjaFtkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHJpZ2h0OiAyLjVyZW07XFxuICB6LWluZGV4OiAyMDtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0td2hpdGUpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICB0ZXh0LWFsaWduOiBsZWZ0O1xcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjI1cmVtO1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1ibHVlY29yYWwpLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG4gIC0tdHctc2hhZG93OiAwcHggNHB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xcbiAgLS10dy1zaGFkb3ctY29sb3JlZDogMHB4IDRweCA0MHB4IHZhcigtLXR3LXNoYWRvdy1jb2xvcik7XFxuICBib3gtc2hhZG93OiB2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3csIDAgMCAjMDAwMCksIHZhcigtLXR3LXJpbmctc2hhZG93LCAwIDAgIzAwMDApLCB2YXIoLS10dy1zaGFkb3cpO1xcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMzAwbXM7XFxuICB0b3A6IDUwcHg7XFxuICB3aWR0aDogMjY1cHg7XFxuICBib3gtc2hhZG93OiA0cHggNHB4IDQwcHggcmdiYSgwLCA1MCwgNzYsIDAuMik7XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDY0MHB4KSB7XFxuLnByb2ZpbGVfX2Ryb3Bkb3duLS10b3VjaFtkYXRhLXYtNmZlNTkwNTVdIHtcXG4gICAgd2lkdGg6IDIyMHB4O1xcbn1cXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duLS10b3VjaCBsaVtkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbn1cXG4ucHJvZmlsZV9fZHJvcGRvd24tLXRvdWNoIGxpW2RhdGEtdi02ZmU1OTA1NV0gPiA6bm90KFtoaWRkZW5dKSB+IDpub3QoW2hpZGRlbl0pIHtcXG4gIC0tdHctc3BhY2UteC1yZXZlcnNlOiAwO1xcbiAgbWFyZ2luLXJpZ2h0OiBjYWxjKDAuNzVyZW0gKiB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKTtcXG4gIG1hcmdpbi1sZWZ0OiBjYWxjKDAuNzVyZW0gKiBjYWxjKDEgLSB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKSk7XFxufVxcbi5wcm9maWxlX19kcm9wZG93bi0tdG91Y2ggbGlbZGF0YS12LTZmZTU5MDU1XSB7XFxuICBwYWRkaW5nOiAwLjc1cmVtO1xcbn1cXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4ucHJvZmlsZV9fZHJvcGRvd24tLXRvdWNoIGxpW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgICBwYWRkaW5nOiAxcmVtO1xcbn1cXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duLS10b3VjaCBsaSBhW2RhdGEtdi02ZmU1OTA1NV06aG92ZXIge1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1ibHVlY29yYWwpLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duLS10b3VjaCBsaSAudXNlci1wcm9maWxlW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgZm9udC1zaXplOiAyNnB4O1xcbn1cXG4ucHJvZmlsZV9fZHJvcGRvd24tLXRvdWNoIC5kcm9wZG93bl9fbGlzdFtkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tbi0xMCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duLS10b3VjaCAuZHJvcGRvd25fX2xpc3RbZGF0YS12LTZmZTU5MDU1XTpob3ZlciB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLW4tMjApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLWJsdWVjb3JhbCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cXG4ucHJvZmlsZV9fZHJvcGRvd24tLXRvdWNoIC5kcm9wZG93bl9fbGlzdCBhW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XFxufVxcbi5kcm9wZG93bi1idG46aG92ZXIgLnByb2ZpbGVfX2Ryb3Bkb3duW2RhdGEtdi02ZmU1OTA1NV0sIFxcbi5kcm9wZG93bi1idG46YWN0aXZlIC5wcm9maWxlX19kcm9wZG93bltkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIHZpc2liaWxpdHk6IHZpc2libGU7XFxuICBvcGFjaXR5OiAxO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwcHgpO1xcbn1cXG4uZHJvcGRvd24tYnRuOmhvdmVyIC5kcm9wZG93bl9fYXJyb3dbZGF0YS12LTZmZTU5MDU1XSxcXG4uZHJvcGRvd24tYnRuOmFjdGl2ZSAuZHJvcGRvd25fX2Fycm93W2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcXG59XFxuLmFkZC1pbXBvcnRbZGF0YS12LTZmZTU5MDU1XSB7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxufVxcbi5hZGQtaW1wb3J0LWRyb3Bkb3duW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xcbiAgb3BhY2l0eTogMDtcXG59XFxuLmFkZC1pbXBvcnQ6aG92ZXIgLmFkZC1pbXBvcnQtZHJvcGRvd25bZGF0YS12LTZmZTU5MDU1XSB7XFxuICB2aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7XFxuICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XFxufVxcbi5zcGlubmVyW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAwLjc1cmVtO1xcbiAgcmlnaHQ6IDEuNzVyZW07XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxufVxcbkAtd2Via2l0LWtleWZyYW1lcyBzcGluLTZmZTU5MDU1IHtcXG50byB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XFxufVxcbn1cXG5Aa2V5ZnJhbWVzIHNwaW4tNmZlNTkwNTUge1xcbnRvIHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcXG59XFxufVxcbi5zcGlubmVyW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgLXdlYmtpdC1hbmltYXRpb246IHNwaW4tNmZlNTkwNTUgMXMgbGluZWFyIGluZmluaXRlO1xcbiAgICAgICAgICBhbmltYXRpb246IHNwaW4tNmZlNTkwNTUgMXMgbGluZWFyIGluZmluaXRlO1xcbiAgYm9yZGVyLXJhZGl1czogOTk5OXB4O1xcbiAgYm9yZGVyLXdpZHRoOiAycHg7XFxuICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tbi0xMCksIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5KSk7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAwLjA1O1xcbiAgd2lkdGg6IDE1cHg7XFxuICBoZWlnaHQ6IDE1cHg7XFxuICBib3JkZXItdG9wLWNvbG9yOiB3aGl0ZTtcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0FkbWluSGVhZGVyLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFDQTtFQUNFLFFBQUE7RUFDQSxZQUFBO0FBQUY7QUFFRTtFQUNFLGFBQUE7RUFDQSxXQUFBO0VBQ0EsOEJBQUE7QUFBSjtBQUVJO0FBTEY7SUFNSSxzQkFBQTtJQUNBLHVCQUFBO0FBQ0o7QUFDRjtBQUVNO0VBQUEsb0JBQUE7RUFBQSxpREFBQTtBQUFBO0FBR0E7RUFBQSxhQUFBO0FBQUE7QUFJRjtBQURGO0lBRUksYUFBQTtBQUFKO0FBQ0Y7QUFHSTtFQUFBLGFBQUE7RUFBQSxtQkFBQTtBQUFBO0FBSUY7RUFBQSxrQkFBQTtFQUFBLFNBQUE7RUFBQSxXQUFBO0VBQ0EsZ0NBQUE7QUFEQTtBQUlBO0VBQUEsa0JBQUE7RUFBQSxrQkFBQTtFQUFBLGNBQUE7RUFBQSxXQUFBO0VBQUEsa0JBQUE7RUFBQSwwREFBQTtFQUFBLGdCQUFBO0VBQUEsbUJBQUE7RUFBQSxvQkFBQTtFQUFBLG9CQUFBO0VBQUEscURBQUE7RUFBQSxVQUFBO0VBQUEsNENBQUE7RUFBQSx3REFBQTtFQUFBLHVHQUFBO0VBQUEsMEJBQUE7QUFBQTtBQUFBO0FBQUE7SUFBQSxhQUFBO0FBQUE7QUFBQTtBQURGO0VBRUUsU0FBQTtFQUNBLFlBQUE7RUFDQSw2Q0FBQTtBQUNGO0FBQ0U7QUFORjtJQU9JLFlBQUE7QUFFRjtBQUNGO0FBQ0k7RUFBQSxhQUFBO0VBQUEsbUJBQUE7QUFBQTtBQUFBO0VBQUEsdUJBQUE7RUFBQSx1REFBQTtFQUFBLGdFQUFBO0FBQUE7QUFBQTtFQUFBLGdCQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUEsYUFBQTtBQUFBO0FBQUE7QUFFRTtFQUFBLG9CQUFBO0VBQUEscURBQUE7QUFBQTtBQUVGO0VBQ0UsZUFBQTtBQUdOO0FBQ0k7RUFBQSxrQkFBQTtFQUFBLHlEQUFBO0FBQUE7QUFBQTtFQUFBLGtCQUFBO0VBQUEseURBQUE7RUFBQSxvQkFBQTtFQUFBLHFEQUFBO0FBQUE7QUFFRTtFQUFBLDBCQUFBO0FBQUE7QUFLSjtFQUFBLGtCQUFBO0VBQUEsYUFBQTtFQUFBLFdBQUE7RUFBQSxrQkFBQTtFQUFBLDBEQUFBO0VBQUEsZ0JBQUE7RUFBQSxtQkFBQTtFQUFBLG9CQUFBO0VBQUEsb0JBQUE7RUFBQSxxREFBQTtFQUFBLDRDQUFBO0VBQUEsd0RBQUE7RUFBQSx1R0FBQTtFQUFBLDBCQUFBO0VBQ0EsU0FBQTtFQUNBLFlBQUE7RUFDQSw2Q0FBQTtBQUhBO0FBS0E7QUFORjtJQU9JLFlBQUE7QUFHRjtBQUNGO0FBQUk7RUFBQSxhQUFBO0VBQUEsbUJBQUE7QUFBQTtBQUFBO0VBQUEsdUJBQUE7RUFBQSx1REFBQTtFQUFBLGdFQUFBO0FBQUE7QUFBQTtFQUFBLGdCQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUEsYUFBQTtBQUFBO0FBQUE7QUFFRTtFQUFBLG9CQUFBO0VBQUEscURBQUE7QUFBQTtBQUVGO0VBQ0UsZUFBQTtBQUlOO0FBQUk7RUFBQSxrQkFBQTtFQUFBLHlEQUFBO0FBQUE7QUFBQTtFQUFBLGtCQUFBO0VBQUEseURBQUE7RUFBQSxvQkFBQTtFQUFBLHFEQUFBO0FBQUE7QUFFRTtFQUFBLDBCQUFBO0FBQUE7QUFPRjs7RUFBQSxtQkFBQTtFQUFBLFVBQUE7RUFDQSwyQkFBQTtBQURBO0FBR0Y7O0VBQ0UseUJBQUE7QUFHSjtBQUFBO0VBQ0UsZUFBQTtBQUdGO0FBREE7RUFDRSxrQkFBQTtFQUNBLFVBQUE7QUFJRjtBQUZBO0VBQ0UsOEJBQUE7RUFDQSxxQkFBQTtFQUNBLHdCQUFBO0FBS0Y7QUFERTtFQUFBLGtCQUFBO0VBQUEsWUFBQTtFQUFBLGNBQUE7RUFBQSxxQkFBQTtBQUFBO0FBQUE7QUFBQTtJQUFBLHlCQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7SUFBQSx5QkFBQTtBQUFBO0FBQUE7QUFBQTtFQUFBLG1EQUFBO1VBQUEsMkNBQUE7RUFBQSxxQkFBQTtFQUFBLGlCQUFBO0VBQUEseURBQUE7RUFBQSx5QkFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsdUJBQUE7QUFIQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4uYWN0aXZpdHlfX2hlYWRlciB7XFxuICB0b3A6IDBweDtcXG4gIHotaW5kZXg6IDEwMDtcXG5cXG4gIG5hdiB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxuXFxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDE0MjBweCkge1xcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICAgIH1cXG5cXG4gICAgYTpob3ZlciB7XFxuICAgICAgQGFwcGx5IHRleHQtd2hpdGU7XFxuICAgIH1cXG4gICAgdWwge1xcbiAgICAgIEBhcHBseSBmbGV4O1xcbiAgICB9XFxuICB9XFxuICAuYWRkLWJ0biB7XFxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDM3NXB4KSB7XFxuICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgfVxcbiAgfVxcbiAgLnVzZXItbmF2IHtcXG4gICAgQGFwcGx5IGZsZXggaXRlbXMtY2VudGVyO1xcbiAgfVxcbn1cXG4udG9hc3Qge1xcbiAgQGFwcGx5IGFic29sdXRlICBsZWZ0LTIvNCB6LTUwO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XFxufVxcbi5wcm9maWxlX19kcm9wZG93biB7XFxuICBAYXBwbHkgaW52aXNpYmxlIGFic29sdXRlIHJpZ2h0LTMgei0yMCBiZy13aGl0ZSB0ZXh0LWxlZnQgdGV4dC1zbSB0ZXh0LWJsdWVjb3JhbCBvcGFjaXR5LTAgc2hhZG93LWRyb3Bkb3duIGR1cmF0aW9uLTMwMCBzbTpyaWdodC0xMDtcXG4gIHRvcDogNTBweDtcXG4gIHdpZHRoOiAyNjVweDtcXG4gIGJveC1zaGFkb3c6IDRweCA0cHggNDBweCByZ2JhKDAsIDUwLCA3NiwgMC4yKTtcXG5cXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDY0MHB4KSB7XFxuICAgIHdpZHRoOiAyMjBweDtcXG4gIH1cXG5cXG4gIGxpIHtcXG4gICAgQGFwcGx5IGZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMyBwLTMgc206cC00O1xcbiAgICBhOmhvdmVyIHtcXG4gICAgICBAYXBwbHkgdGV4dC1ibHVlY29yYWw7XFxuICAgIH1cXG4gICAgLnVzZXItcHJvZmlsZSB7XFxuICAgICAgZm9udC1zaXplOiAyNnB4O1xcbiAgICB9XFxuICB9XFxuICAuZHJvcGRvd25fX2xpc3Qge1xcbiAgICBAYXBwbHkgYmctbi0xMCBob3ZlcjpiZy1uLTIwIGhvdmVyOnRleHQtYmx1ZWNvcmFsO1xcbiAgICBhIHtcXG4gICAgICBAYXBwbHkgY2FwaXRhbGl6ZTtcXG4gICAgfVxcbiAgfVxcbn1cXG4ucHJvZmlsZV9fZHJvcGRvd24tLXRvdWNoIHtcXG4gIEBhcHBseSBhYnNvbHV0ZSAgcmlnaHQtMTAgei0yMCBiZy13aGl0ZSB0ZXh0LWxlZnQgdGV4dC1zbSB0ZXh0LWJsdWVjb3JhbCBzaGFkb3ctZHJvcGRvd24gIGR1cmF0aW9uLTMwMDtcXG4gIHRvcDogNTBweDtcXG4gIHdpZHRoOiAyNjVweDtcXG4gIGJveC1zaGFkb3c6IDRweCA0cHggNDBweCByZ2JhKDAsIDUwLCA3NiwgMC4yKTtcXG5cXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDY0MHB4KSB7XFxuICAgIHdpZHRoOiAyMjBweDtcXG4gIH1cXG5cXG4gIGxpIHtcXG4gICAgQGFwcGx5IGZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMyBwLTMgc206cC00O1xcbiAgICBhOmhvdmVyIHtcXG4gICAgICBAYXBwbHkgdGV4dC1ibHVlY29yYWw7XFxuICAgIH1cXG4gICAgLnVzZXItcHJvZmlsZSB7XFxuICAgICAgZm9udC1zaXplOiAyNnB4O1xcbiAgICB9XFxuICB9XFxuICAuZHJvcGRvd25fX2xpc3Qge1xcbiAgICBAYXBwbHkgYmctbi0xMCBob3ZlcjpiZy1uLTIwIGhvdmVyOnRleHQtYmx1ZWNvcmFsO1xcbiAgICBhIHtcXG4gICAgICBAYXBwbHkgY2FwaXRhbGl6ZTtcXG4gICAgfVxcbiAgfVxcbn1cXG4uZHJvcGRvd24tYnRuOmhvdmVyLFxcbi5kcm9wZG93bi1idG46YWN0aXZlIHtcXG4gIC5wcm9maWxlX19kcm9wZG93biB7XFxuICAgIEBhcHBseSB2aXNpYmxlIG9wYWNpdHktMTAwO1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTBweCk7XFxuICB9XFxuICAuZHJvcGRvd25fX2Fycm93IHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcXG4gIH1cXG59XFxuLmFkZC1pbXBvcnQge1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbn1cXG4uYWRkLWltcG9ydC1kcm9wZG93biB7XFxuICB2aXNpYmlsaXR5OiBoaWRkZW47XFxuICBvcGFjaXR5OiAwO1xcbn1cXG4uYWRkLWltcG9ydDpob3ZlciAuYWRkLWltcG9ydC1kcm9wZG93biB7XFxuICB2aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7XFxuICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XFxufVxcblxcbi5zcGlubmVyIHtcXG4gIEBhcHBseSBhYnNvbHV0ZSB0b3AtMyByaWdodC03IGlubGluZS1ibG9jayBhbmltYXRlLXNwaW4gcm91bmRlZC1mdWxsIGJvcmRlci0yIGJvcmRlci1uLTEwIGJvcmRlci1vcGFjaXR5LTU7XFxuICB3aWR0aDogMTVweDtcXG4gIGhlaWdodDogMTVweDtcXG4gIGJvcmRlci10b3AtY29sb3I6IHdoaXRlO1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIubWludXNbZGF0YS12LTI0NDNkZjUzXSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgaGVpZ2h0OiAwLjc1cmVtO1xcbiAgd2lkdGg6IDAuNzVyZW07XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbn1cXG4ubWludXNbZGF0YS12LTI0NDNkZjUzXTpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIGhlaWdodDogMC4xMjVyZW07XFxuICB3aWR0aDogMC43NXJlbTtcXG4gIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWJsdWVjb3JhbC01MCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG59XFxuI3B1Ymxpc2hpbmdfYWN0aXZpdGllc1tkYXRhLXYtMjQ0M2RmNTNdIHtcXG4gIHBvc2l0aW9uOiBmaXhlZDtcXG4gIGJvdHRvbTogMHB4O1xcbiAgcmlnaHQ6IDBweDtcXG4gIGZpbHRlcjogZHJvcC1zaGFkb3coMHB4IDRweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xKSk7XFxufVxcbi5yb2xsaW5nW2RhdGEtdi0yNDQzZGY1M10ge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbn1cXG5ALXdlYmtpdC1rZXlmcmFtZXMgc3Bpbi0yNDQzZGY1MyB7XFxudG8ge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcbn1cXG59XFxuQGtleWZyYW1lcyBzcGluLTI0NDNkZjUzIHtcXG50byB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XFxufVxcbn1cXG4ucm9sbGluZ1tkYXRhLXYtMjQ0M2RmNTNdIHtcXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBzcGluLTI0NDNkZjUzIDFzIGxpbmVhciBpbmZpbml0ZTtcXG4gICAgICAgICAgYW5pbWF0aW9uOiBzcGluLTI0NDNkZjUzIDFzIGxpbmVhciBpbmZpbml0ZTtcXG4gIGJvcmRlci1yYWRpdXM6IDk5OTlweDtcXG4gIGJvcmRlci13aWR0aDogMnB4O1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1uLTIwKSwgdmFyKC0tdHctYm9yZGVyLW9wYWNpdHkpKTtcXG4gIHdpZHRoOiAyMHB4O1xcbiAgaGVpZ2h0OiAyMHB4O1xcbiAgYm9yZGVyLXRvcC1jb2xvcjogd2hpdGU7XFxufVxcbi5hY3Rpdml0eS10aXRsZVtkYXRhLXYtMjQ0M2RmNTNdIHtcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9CdWxrcHVibGlzaFdpdGhYbHMudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUVFO0VBQUEsYUFBQTtFQUFBLGVBQUE7RUFBQSxjQUFBO0VBQUEsbUJBQUE7QUFBQTtBQUNBO0VBQ0UsV0FBQTtFQUNBLGNBQUE7RUFBQSxnQkFBQTtFQUFBLGNBQUE7RUFBQSxzQkFBQTtFQUFBLGtCQUFBO0VBQUEsaUVBQUE7QUFDSjtBQUlFO0VBQUEsZUFBQTtFQUFBLFdBQUE7RUFBQSxVQUFBO0VBQ0Esb0RBQUE7QUFEQTtBQUtBO0VBQUEscUJBQUE7QUFBQTtBQUFBO0FBQUE7SUFBQSx5QkFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUEseUJBQUE7QUFBQTtBQUFBO0FBQUE7RUFBQSxtREFBQTtVQUFBLDJDQUFBO0VBQUEscUJBQUE7RUFBQSxpQkFBQTtFQUFBLHNCQUFBO0VBQUEseURBQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLHVCQUFBO0FBSEE7QUFNRjtFQUNFLG1CQUFBO0VBQ0EsZ0JBQUE7RUFDQSx1QkFBQTtBQUFGXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5taW51cyB7XFxuICBAYXBwbHkgZmxleCBoLTMgdy0zIGl0ZW1zLWNlbnRlcjtcXG4gICY6YmVmb3JlIHtcXG4gICAgY29udGVudDogJyc7XFxuICAgIEBhcHBseSBibG9jayBoLTAuNSB3LTMgcm91bmRlZC14bCBiZy1ibHVlLTUwO1xcbiAgfVxcbn1cXG5cXG4jcHVibGlzaGluZ19hY3Rpdml0aWVzIHtcXG4gIEBhcHBseSBmaXhlZCBib3R0b20tMCByaWdodC0wO1xcbiAgZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggNHB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjEpKTtcXG59XFxuXFxuLnJvbGxpbmcge1xcbiAgQGFwcGx5IGlubGluZS1ibG9jayBhbmltYXRlLXNwaW4gcm91bmRlZC1mdWxsIGJvcmRlci0yIGJvcmRlci1uLTIwO1xcbiAgd2lkdGg6IDIwcHg7XFxuICBoZWlnaHQ6IDIwcHg7XFxuICBib3JkZXItdG9wLWNvbG9yOiB3aGl0ZTtcXG59XFxuXFxuLmFjdGl2aXR5LXRpdGxlIHtcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5hbGVydFtkYXRhLXYtYjc3YjExZDRdIHtcXG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWNhbWVsLTEwKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgcGFkZGluZzogMXJlbTtcXG4gIHBhZGRpbmctcmlnaHQ6IDEuNXJlbTtcXG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XFxuICBsaW5lLWhlaWdodDogMS4yNXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjYyNTtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tbi01MCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpXFxufVxcbi5hbGVydF9fY29udGFpbmVyW2RhdGEtdi1iNzdiMTFkNF0ge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICBsaW5lLWhlaWdodDogMS41cmVtXFxufVxcbi5hbGVydF9fY29udGVudFtkYXRhLXYtYjc3YjExZDRdIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyXFxufVxcbi5hbGVydF9fY29udGVudFtkYXRhLXYtYjc3YjExZDRdID4gOm5vdChbaGlkZGVuXSkgfiA6bm90KFtoaWRkZW5dKSB7XFxuICAtLXR3LXNwYWNlLXgtcmV2ZXJzZTogMDtcXG4gIG1hcmdpbi1yaWdodDogY2FsYygxcmVtICogdmFyKC0tdHctc3BhY2UteC1yZXZlcnNlKSk7XFxuICBtYXJnaW4tbGVmdDogY2FsYygxcmVtICogY2FsYygxIC0gdmFyKC0tdHctc3BhY2UteC1yZXZlcnNlKSkpXFxufVxcbi5hbGVydF9fY29udGVudCBzcGFuW2RhdGEtdi1iNzdiMTFkNF0ge1xcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjI1cmVtO1xcbiAgZm9udC13ZWlnaHQ6IDcwMDtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tbi01MCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpXFxufVxcbi5hbGVydF9fbWVzc2FnZVtkYXRhLXYtYjc3YjExZDRdIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyXFxufVxcbi5hbGVydF9fbWVzc2FnZVtkYXRhLXYtYjc3YjExZDRdID4gOm5vdChbaGlkZGVuXSkgfiA6bm90KFtoaWRkZW5dKSB7XFxuICAtLXR3LXNwYWNlLXgtcmV2ZXJzZTogMDtcXG4gIG1hcmdpbi1yaWdodDogY2FsYygwLjI1cmVtICogdmFyKC0tdHctc3BhY2UteC1yZXZlcnNlKSk7XFxuICBtYXJnaW4tbGVmdDogY2FsYygwLjI1cmVtICogY2FsYygxIC0gdmFyKC0tdHctc3BhY2UteC1yZXZlcnNlKSkpXFxufVxcbi50ZXh0LXNob3dbZGF0YS12LWI3N2IxMWQ0XSB7XFxuICB2aXNpYmlsaXR5OiBoaWRkZW47XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlclxcbn1cXG4udGV4dC1zaG93W2RhdGEtdi1iNzdiMTFkNF0gPiA6bm90KFtoaWRkZW5dKSB+IDpub3QoW2hpZGRlbl0pIHtcXG4gIC0tdHctc3BhY2UteC1yZXZlcnNlOiAwO1xcbiAgbWFyZ2luLXJpZ2h0OiBjYWxjKDAuNXJlbSAqIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpO1xcbiAgbWFyZ2luLWxlZnQ6IGNhbGMoMC41cmVtICogY2FsYygxIC0gdmFyKC0tdHctc3BhY2UteC1yZXZlcnNlKSkpXFxufVxcbi50ZXh0LXNob3dbZGF0YS12LWI3N2IxMWQ0XSB7XFxuICBvcGFjaXR5OiAwO1xcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMzAwbXM7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTBweCwgMzBweClcXG59XFxuLnRleHQtaGlkZVtkYXRhLXYtYjc3YjExZDRdIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICAtLXR3LXRyYW5zbGF0ZS15OiAtMHB4O1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUodmFyKC0tdHctdHJhbnNsYXRlLXgpLCB2YXIoLS10dy10cmFuc2xhdGUteSkpIHJvdGF0ZSh2YXIoLS10dy1yb3RhdGUpKSBza2V3WCh2YXIoLS10dy1za2V3LXgpKSBza2V3WSh2YXIoLS10dy1za2V3LXkpKSBzY2FsZVgodmFyKC0tdHctc2NhbGUteCkpIHNjYWxlWSh2YXIoLS10dy1zY2FsZS15KSk7XFxuICBhbGlnbi1pdGVtczogY2VudGVyXFxufVxcbi50ZXh0LWhpZGVbZGF0YS12LWI3N2IxMWQ0XSA+IDpub3QoW2hpZGRlbl0pIH4gOm5vdChbaGlkZGVuXSkge1xcbiAgLS10dy1zcGFjZS14LXJldmVyc2U6IDA7XFxuICBtYXJnaW4tcmlnaHQ6IGNhbGMoMC41cmVtICogdmFyKC0tdHctc3BhY2UteC1yZXZlcnNlKSk7XFxuICBtYXJnaW4tbGVmdDogY2FsYygwLjVyZW0gKiBjYWxjKDEgLSB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKSlcXG59XFxuLnRleHQtaGlkZVtkYXRhLXYtYjc3YjExZDRdIHtcXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDMwMG1zXFxufVxcbi5ib3JkZXItaGlkZVtkYXRhLXYtYjc3YjExZDRdOjpiZWZvcmUge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgbGVmdDogMHB4O1xcbiAgdG9wOiAwcHg7XFxuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1zYWxtb24tNTApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAzMDBtcztcXG4gIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTtcXG4gIHdpZHRoOiAycHg7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSlcXG59XFxuLmJvcmRlci1zaG93W2RhdGEtdi1iNzdiMTFkNF06OmJlZm9yZSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBsZWZ0OiAwcHg7XFxuICB0b3A6IDBweDtcXG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXNhbG1vbi01MCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDMwMG1zO1xcbiAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO1xcbiAgd2lkdGg6IDJweDtcXG4gIGhlaWdodDogMTAwJTtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKVxcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRXJyb3JNZXNzYWdlLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFFRTtFQUFBLHNCQUFBO0VBQUEsa0JBQUE7RUFBQSw2REFBQTtFQUFBLGFBQUE7RUFBQSxxQkFBQTtFQUFBLG1CQUFBO0VBQUEsb0JBQUE7RUFBQSxrQkFBQTtFQUFBLG9CQUFBO0VBQUE7QUFBQTtBQUdFO0VBQUEsYUFBQTtFQUFBLHNCQUFBO0VBQUE7QUFBQTtBQUdBO0VBQUEsYUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBLHVCQUFBO0VBQUEsb0RBQUE7RUFBQTtBQUFBO0FBR0U7RUFBQSxtQkFBQTtFQUFBLG9CQUFBO0VBQUEsZ0JBQUE7RUFBQSxvQkFBQTtFQUFBO0FBQUE7QUFJRjtFQUFBLGFBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQSx1QkFBQTtFQUFBLHVEQUFBO0VBQUE7QUFBQTtBQUlGO0VBQUEsa0JBQUE7RUFBQSxhQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUEsdUJBQUE7RUFBQSxzREFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBLFVBQUE7RUFBQSwwQkFBQTtFQUNBO0FBREE7QUFJQTtFQUFBLGFBQUE7RUFBQSxzQkFBQTtFQUFBLCtMQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUEsdUJBQUE7RUFBQSxzREFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBO0FBQUE7QUFHQTtFQUFBLGtCQUFBO0VBQUEsU0FBQTtFQUFBLFFBQUE7RUFBQSxzQkFBQTtFQUFBLGtCQUFBO0VBQUEsOERBQUE7RUFBQSwwQkFBQTtFQUFBLHNEQUFBO0VBQ0EsVUFBQTtFQUNBLFlBQUE7RUFDQSxXQUFBO0VBQ0E7QUFKQTtBQU9BO0VBQUEsa0JBQUE7RUFBQSxTQUFBO0VBQUEsUUFBQTtFQUFBLHNCQUFBO0VBQUEsa0JBQUE7RUFBQSw4REFBQTtFQUFBLDBCQUFBO0VBQUEsc0RBQUE7RUFDQSxVQUFBO0VBQ0EsWUFBQTtFQUNBLFdBQUE7RUFDQTtBQUpBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5hbGVydCB7XFxuICBAYXBwbHkgcm91bmRlZCBiZy1jYW1lbC0xMCBwLTQgcHItNiB0ZXh0LXNtIGxlYWRpbmctcmVsYXhlZCB0ZXh0LW4tNTA7XFxuXFxuICAmX19jb250YWluZXIge1xcbiAgICBAYXBwbHkgZmxleCBmbGV4LWNvbCBsZWFkaW5nLTY7XFxuICB9XFxuICAmX19jb250ZW50IHtcXG4gICAgQGFwcGx5IGZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtNDtcXG5cXG4gICAgc3BhbiB7XFxuICAgICAgQGFwcGx5IHRleHQtc20gZm9udC1ib2xkIHRleHQtbi01MDtcXG4gICAgfVxcbiAgfVxcbiAgJl9fbWVzc2FnZSB7XFxuICAgIEBhcHBseSBmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTE7XFxuICB9XFxufVxcbi50ZXh0LXNob3cge1xcbiAgQGFwcGx5IGludmlzaWJsZSBmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTIgb3BhY2l0eS0wIGR1cmF0aW9uLTMwMDtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MHB4LCAzMHB4KTtcXG59XFxuLnRleHQtaGlkZSB7XFxuICBAYXBwbHkgZmxleCAtdHJhbnNsYXRlLXktMCBpdGVtcy1jZW50ZXIgc3BhY2UteC0yIGR1cmF0aW9uLTMwMDtcXG59XFxuLmJvcmRlci1oaWRlOjpiZWZvcmUge1xcbiAgQGFwcGx5IGFic29sdXRlIGxlZnQtMCB0b3AtMCByb3VuZGVkIGJnLXNhbG1vbi01MCBkdXJhdGlvbi0zMDAgZWFzZS1vdXQ7XFxuICB3aWR0aDogMnB4O1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgY29udGVudDogJyc7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMCUpO1xcbn1cXG4uYm9yZGVyLXNob3c6OmJlZm9yZSB7XFxuICBAYXBwbHkgYWJzb2x1dGUgbGVmdC0wIHRvcC0wIHJvdW5kZWQgYmctc2FsbW9uLTUwIGR1cmF0aW9uLTMwMCBlYXNlLW91dDtcXG4gIHdpZHRoOiAycHg7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBjb250ZW50OiAnJztcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSk7XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5oZWxwIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG59XFxuLmhlbHBfX3RleHQge1xcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAxcmVtO1xcbiAgei1pbmRleDogMjA7XFxufVxcbi5oZWxwX190ZXh0ID4gOm5vdChbaGlkZGVuXSkgfiA6bm90KFtoaWRkZW5dKSB7XFxuICAtLXR3LXNwYWNlLXktcmV2ZXJzZTogMDtcXG4gIG1hcmdpbi10b3A6IGNhbGMoMC4zNzVyZW0gKiBjYWxjKDEgLSB2YXIoLS10dy1zcGFjZS15LXJldmVyc2UpKSk7XFxuICBtYXJnaW4tYm90dG9tOiBjYWxjKDAuMzc1cmVtICogdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSk7XFxufVxcbi5oZWxwX190ZXh0IHtcXG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWVnZ3NoZWxsKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgcGFkZGluZzogMXJlbTtcXG4gIHRleHQtYWxpZ246IGxlZnQ7XFxuICBmb250LXNpemU6IDAuNzVyZW07XFxuICBsaW5lLWhlaWdodDogMXJlbTtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tbi00MCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbiAgb3BhY2l0eTogMDtcXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDIwMG1zO1xcbiAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1vdXQ7XFxuICBib3gtc2hhZG93OiAwcHggNHB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xcbn1cXG4uaGVscF9fdGV4dCBwIGEge1xcbiAgZm9udC13ZWlnaHQ6IDcwMDtcXG59XFxuLmhlbHA6aG92ZXIgLmhlbHBfX3RleHQge1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoNTAlLCA1cHgpO1xcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcXG4gIG9wYWNpdHk6IDE7XFxufVxcbkBtZWRpYSAobWF4LXdpZHRoOiAxMDI0cHgpIHtcXG4uaGVscDpob3ZlciAuaGVscF9fdGV4dCB7XFxuICAgIHdpZHRoOiAyMDBweDtcXG59XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Ib3ZlclRleHQudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUVFO0VBQUEsa0JBQUE7QUFBQTtBQUdFO0VBQUEsa0JBQUE7RUFBQSxrQkFBQTtFQUFBLFNBQUE7RUFBQSxXQUFBO0FBQUE7QUFBQTtFQUFBLHVCQUFBO0VBQUEsZ0VBQUE7RUFBQSx5REFBQTtBQUFBO0FBQUE7RUFBQSxzQkFBQTtFQUFBLGtCQUFBO0VBQUEsNkRBQUE7RUFBQSxhQUFBO0VBQUEsZ0JBQUE7RUFBQSxrQkFBQTtFQUFBLGlCQUFBO0VBQUEsb0JBQUE7RUFBQSxnREFBQTtFQUFBLFVBQUE7RUFBQSwwQkFBQTtFQUNBLDZCQUFBO0VBQ0EsMkNBQUE7QUFGQTtBQUlBO0VBQ0UsZ0JBQUE7QUFBTjtBQU1FO0VBQ0UsOEJBQUE7RUFDQSxtQkFBQTtFQUNBLFVBQUE7QUFISjtBQUlJO0FBSkY7SUFLSSxZQUFBO0FBREo7QUFDRlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4uaGVscCB7XFxuICBAYXBwbHkgcmVsYXRpdmU7XFxuXFxuICAmX190ZXh0IHtcXG4gICAgQGFwcGx5IGludmlzaWJsZSBhYnNvbHV0ZSB0b3AtNCB6LTIwIHNwYWNlLXktMS41IHJvdW5kZWQgYmctZWdnc2hlbGwgcC00IHRleHQtbGVmdCB0ZXh0LXhzIHRleHQtbi00MCBvcGFjaXR5LTAgZHVyYXRpb24tMjAwO1xcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dDtcXG4gICAgYm94LXNoYWRvdzogMHB4IDRweCA0MHB4IHJnYigwIDAgMCAvIDEwJSk7XFxuXFxuICAgIHAgYSB7XFxuICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcXG4gICAgfVxcbiAgfVxcbn1cXG5cXG4uaGVscDpob3ZlciB7XFxuICAuaGVscF9fdGV4dCB7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDUwJSwgNXB4KTtcXG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcXG4gICAgb3BhY2l0eTogMTtcXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDEwMjRweCkge1xcbiAgICAgIHdpZHRoOiAyMDBweDtcXG4gICAgfVxcbiAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIub3ZlcmxheSB7XFxuICBwb3NpdGlvbjogZml4ZWQ7XFxuICBsZWZ0OiAwcHg7XFxuICB0b3A6IDBweDtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1ibGFjayksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIG9wYWNpdHk6IDAuNztcXG4gIHotaW5kZXg6IDEwMDBcXG59XFxuLm92ZXJsYXlfX2lubmVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDBweDtcXG4gIHRvcDogMHB4O1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDEwMCVcXG59XFxuLm92ZXJsYXlfX2NvbnRlbnQge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgbGVmdDogNTAlO1xcbiAgdG9wOiA1MCU7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKVxcbn1cXG4ub3ZlcmxheV9fY29udGVudCAuc3Bpbm5lciB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2tcXG59XFxuQC13ZWJraXQta2V5ZnJhbWVzIHNwaW4ge1xcbnRvIHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKVxcbn1cXG59XFxuQGtleWZyYW1lcyBzcGluIHtcXG50byB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZylcXG59XFxufVxcbi5vdmVybGF5X19jb250ZW50IC5zcGlubmVyIHtcXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBzcGluIDFzIGxpbmVhciBpbmZpbml0ZTtcXG4gICAgICAgICAgYW5pbWF0aW9uOiBzcGluIDFzIGxpbmVhciBpbmZpbml0ZTtcXG4gIGJvcmRlci1yYWRpdXM6IDk5OTlweDtcXG4gIGJvcmRlci13aWR0aDogMnB4O1xcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLW4tMTApLCB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpO1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMC4wNTtcXG4gIHdpZHRoOiA3NXB4O1xcbiAgaGVpZ2h0OiA3NXB4O1xcbiAgYm9yZGVyLXRvcC1jb2xvcjogd2hpdGVcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0xvYWRlci52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBRUU7RUFBQSxlQUFBO0VBQUEsU0FBQTtFQUFBLFFBQUE7RUFBQSxZQUFBO0VBQUEsV0FBQTtFQUFBLGtCQUFBO0VBQUEsMERBQUE7RUFDQSxZQUFBO0VBQ0E7QUFGQTtBQUtFO0VBQUEsa0JBQUE7RUFBQSxTQUFBO0VBQUEsUUFBQTtFQUFBLFlBQUE7RUFBQTtBQUFBO0FBSUE7RUFBQSxrQkFBQTtFQUFBLFNBQUE7RUFBQSxRQUFBO0VBQ0E7QUFEQTtBQUlFO0VBQUE7QUFBQTtBQUFBO0FBQUE7SUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUE7QUFBQTtBQUFBO0FBQUE7RUFBQSwwQ0FBQTtVQUFBLGtDQUFBO0VBQUEscUJBQUE7RUFBQSxpQkFBQTtFQUFBLHlEQUFBO0VBQUEseUJBQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBO0FBSEFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLm92ZXJsYXkge1xcbiAgQGFwcGx5IGZpeGVkIGxlZnQtMCAgdG9wLTAgIGgtZnVsbCB3LWZ1bGwgYmctYmxhY2s7XFxuICBvcGFjaXR5OiAwLjc7XFxuICB6LWluZGV4OiAxMDAwO1xcblxcbiAgJl9faW5uZXIge1xcbiAgICBAYXBwbHkgYWJzb2x1dGUgbGVmdC0wIHRvcC0wIGgtZnVsbCB3LWZ1bGw7XFxuICB9XFxuXFxuICAmX19jb250ZW50IHtcXG4gICAgQGFwcGx5IGFic29sdXRlIGxlZnQtMi80IHRvcC0yLzQ7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xcblxcbiAgICAuc3Bpbm5lciB7XFxuICAgICAgQGFwcGx5IGlubGluZS1ibG9jayBhbmltYXRlLXNwaW4gcm91bmRlZC1mdWxsIGJvcmRlci0yIGJvcmRlci1uLTEwIGJvcmRlci1vcGFjaXR5LTU7XFxuICAgICAgd2lkdGg6IDc1cHg7XFxuICAgICAgaGVpZ2h0OiA3NXB4O1xcbiAgICAgIGJvcmRlci10b3AtY29sb3I6IHdoaXRlO1xcbiAgICB9XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5tb2RhbC1hbmltYXRpb24tZW50ZXItYWN0aXZlW2RhdGEtdi01YTJiZGE1OF0sXFxuLm1vZGFsLWFuaW1hdGlvbi1sZWF2ZS1hY3RpdmVbZGF0YS12LTVhMmJkYTU4XSB7XFxuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuNXMgY3ViaWMtYmV6aWVyKDAuNTIsIDAuMDIsIDAuMTksIDEuMDIpO1xcbn1cXG4ubW9kYWwtYW5pbWF0aW9uLWVudGVyLWZyb21bZGF0YS12LTVhMmJkYTU4XSxcXG4ubW9kYWwtYW5pbWF0aW9uLWxlYXZlLXRvW2RhdGEtdi01YTJiZGE1OF0ge1xcbiAgb3BhY2l0eTogMDtcXG59XFxuLm1vZGFsLWFuaW1hdGlvbi1pbm5lci1lbnRlci1hY3RpdmVbZGF0YS12LTVhMmJkYTU4XSB7XFxuICB0cmFuc2l0aW9uOiBhbGwgMC41cyBjdWJpYy1iZXppZXIoMC41MiwgMC4wMiwgMC4xOSwgMS4wMikgMC4xNXM7XFxufVxcbi5tb2RhbC1hbmltYXRpb24taW5uZXItbGVhdmUtYWN0aXZlW2RhdGEtdi01YTJiZGE1OF0ge1xcbiAgdHJhbnNpdGlvbjogYWxsIDAuMXMgY3ViaWMtYmV6aWVyKDAuNTIsIDAuMDIsIDAuMTksIDEuMDIpO1xcbn1cXG4ubW9kYWwtYW5pbWF0aW9uLWlubmVyLWVudGVyLWZyb21bZGF0YS12LTVhMmJkYTU4XSB7XFxuICBvcGFjaXR5OiAwO1xcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLjgpO1xcbn1cXG4ubW9kYWwtYW5pbWF0aW9uLWlubmVyLWxlYXZlLXRvW2RhdGEtdi01YTJiZGE1OF0ge1xcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLjgpO1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvUG9wdXBNb2RhbC52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQ0E7O0VBRUUsNkRBQUE7QUFBRjtBQUdBOztFQUVFLFVBQUE7QUFBRjtBQUdBO0VBQ0UsK0RBQUE7QUFBRjtBQUdBO0VBQ0UseURBQUE7QUFBRjtBQUdBO0VBQ0UsVUFBQTtFQUNBLHFCQUFBO0FBQUY7QUFHQTtFQUNFLHFCQUFBO0FBQUZcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLm1vZGFsLWFuaW1hdGlvbi1lbnRlci1hY3RpdmUsXFxuLm1vZGFsLWFuaW1hdGlvbi1sZWF2ZS1hY3RpdmUge1xcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzIGN1YmljLWJlemllcigwLjUyLCAwLjAyLCAwLjE5LCAxLjAyKTtcXG59XFxuXFxuLm1vZGFsLWFuaW1hdGlvbi1lbnRlci1mcm9tLFxcbi5tb2RhbC1hbmltYXRpb24tbGVhdmUtdG8ge1xcbiAgb3BhY2l0eTogMDtcXG59XFxuXFxuLm1vZGFsLWFuaW1hdGlvbi1pbm5lci1lbnRlci1hY3RpdmUge1xcbiAgdHJhbnNpdGlvbjogYWxsIDAuNXMgY3ViaWMtYmV6aWVyKDAuNTIsIDAuMDIsIDAuMTksIDEuMDIpIDAuMTVzO1xcbn1cXG5cXG4ubW9kYWwtYW5pbWF0aW9uLWlubmVyLWxlYXZlLWFjdGl2ZSB7XFxuICB0cmFuc2l0aW9uOiBhbGwgMC4xcyBjdWJpYy1iZXppZXIoMC41MiwgMC4wMiwgMC4xOSwgMS4wMik7XFxufVxcblxcbi5tb2RhbC1hbmltYXRpb24taW5uZXItZW50ZXItZnJvbSB7XFxuICBvcGFjaXR5OiAwO1xcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLjgpO1xcbn1cXG5cXG4ubW9kYWwtYW5pbWF0aW9uLWlubmVyLWxlYXZlLXRvIHtcXG4gIHRyYW5zZm9ybTogc2NhbGUoMC44KTtcXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLnNoaW1tZXJfX2Jsb2NrW2RhdGEtdi03NDM1NjE3Ml0ge1xcbiAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IDJzO1xcbiAgICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IDJzO1xcbiAgLXdlYmtpdC1hbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkcztcXG4gICAgICAgICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7XFxuICAtd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xcbiAgICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcXG4gIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHBsYWNlSG9sZGVyU2hpbW1lci03NDM1NjE3MjtcXG4gICAgICAgICAgYW5pbWF0aW9uLW5hbWU6IHBsYWNlSG9sZGVyU2hpbW1lci03NDM1NjE3MjtcXG4gIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xcbiAgICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7XFxuICAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTogMC41cztcXG4gICAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAwLjVzO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VkZWRlZDtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgI2VkZWRlZCAxNC4zNiUsICNkN2Q2ZDYgNTYuMjklLCAjZWRlZGVkIDEwMCUpO1xcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcXG4gIGJhY2tncm91bmQtc2l6ZTogMjQ0cHggMTA0cHg7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBoZWlnaHQ6IDE5cHg7XFxuICBib3JkZXItcmFkaXVzOiAxMHB4O1xcbiAgd2lkdGg6IDEwMCU7XFxuICBtYXJnaW46IDNweCA2cHggM3B4IDBweDtcXG59XFxuQC13ZWJraXQta2V5ZnJhbWVzIHBsYWNlSG9sZGVyU2hpbW1lci03NDM1NjE3MiB7XFxuMCUge1xcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjYWxjKDAlIC0gMzAwcHgpIDA7XFxufVxcbjIwJSB7XFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNhbGMoMCUgLSAzMDBweCkgMDtcXG59XFxuODAlIHtcXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2FsYygxMDAlICsgMzAwcHgpIDA7XFxufVxcbjEwMCUge1xcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjYWxjKDEwMCUgKyAzMDBweCkgMDtcXG59XFxufVxcbkBrZXlmcmFtZXMgcGxhY2VIb2xkZXJTaGltbWVyLTc0MzU2MTcyIHtcXG4wJSB7XFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNhbGMoMCUgLSAzMDBweCkgMDtcXG59XFxuMjAlIHtcXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2FsYygwJSAtIDMwMHB4KSAwO1xcbn1cXG44MCUge1xcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjYWxjKDEwMCUgKyAzMDBweCkgMDtcXG59XFxuMTAwJSB7XFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNhbGMoMTAwJSArIDMwMHB4KSAwO1xcbn1cXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1NoaW1tZXJMb2FkaW5nLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFDQTtFQUNFLDhCQUFBO1VBQUEsc0JBQUE7RUFDQSxxQ0FBQTtVQUFBLDZCQUFBO0VBQ0EsMkNBQUE7VUFBQSxtQ0FBQTtFQUNBLG1EQUFBO1VBQUEsMkNBQUE7RUFDQSx5Q0FBQTtVQUFBLGlDQUFBO0VBQ0EsNkJBQUE7VUFBQSxxQkFBQTtFQUNBLHlCQUFBO0VBQ0Esc0ZBQUE7RUFNQSw0QkFBQTtFQUNBLDRCQUFBO0VBQ0Esa0JBQUE7RUFDQSxZQUFBO0VBQ0EsbUJBQUE7RUFDQSxXQUFBO0VBQ0EsdUJBQUE7QUFMRjtBQVFBO0FBQ0U7SUFDRSx1Q0FBQTtBQUxGO0FBUUE7SUFDRSx1Q0FBQTtBQU5GO0FBU0E7SUFDRSx5Q0FBQTtBQVBGO0FBVUE7SUFDRSx5Q0FBQTtBQVJGO0FBQ0Y7QUFQQTtBQUNFO0lBQ0UsdUNBQUE7QUFMRjtBQVFBO0lBQ0UsdUNBQUE7QUFORjtBQVNBO0lBQ0UseUNBQUE7QUFQRjtBQVVBO0lBQ0UseUNBQUE7QUFSRjtBQUNGXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5zaGltbWVyX19ibG9jayB7XFxuICBhbmltYXRpb24tZHVyYXRpb246IDJzO1xcbiAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7XFxuICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcXG4gIGFuaW1hdGlvbi1uYW1lOiBwbGFjZUhvbGRlclNoaW1tZXI7XFxuICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7XFxuICBhbmltYXRpb24tZGVsYXk6IDAuNXM7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWRlZGVkO1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KFxcbiAgICA5MGRlZyxcXG4gICAgI2VkZWRlZCAxNC4zNiUsXFxuICAgICNkN2Q2ZDYgNTYuMjklLFxcbiAgICAjZWRlZGVkIDEwMCVcXG4gICk7XFxuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xcbiAgYmFja2dyb3VuZC1zaXplOiAyNDRweCAxMDRweDtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGhlaWdodDogMTlweDtcXG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XFxuICB3aWR0aDogMTAwJTtcXG4gIG1hcmdpbjogM3B4IDZweCAzcHggMHB4O1xcbn1cXG5cXG5Aa2V5ZnJhbWVzIHBsYWNlSG9sZGVyU2hpbW1lciB7XFxuICAwJSB7XFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNhbGMoMCUgLSAzMDBweCkgMDtcXG4gIH1cXG5cXG4gIDIwJSB7XFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNhbGMoMCUgLSAzMDBweCkgMDtcXG4gIH1cXG5cXG4gIDgwJSB7XFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNhbGMoMTAwJSArIDMwMHB4KSAwO1xcbiAgfVxcblxcbiAgMTAwJSB7XFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNhbGMoMTAwJSArIDMwMHB4KSAwO1xcbiAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIuZXJyb3JzW2RhdGEtdi1mNjdjN2U3Ml0ge1xcbiAgICBib3JkZXItbGVmdC13aWR0aDogMnB4XFxufVxcbi5lcnJvcnNfX2hlYWRbZGF0YS12LWY2N2M3ZTcyXSB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG4gICAgcGFkZGluZzogMXJlbVxcbn1cXG4uZXJyb3JzX19oZWFkLS10aXRsZVtkYXRhLXYtZjY3YzdlNzJdIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgZmxleC1ncm93OiAxO1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xcbiAgICBsaW5lLWhlaWdodDogMS4yNXJlbTtcXG4gICAgbGluZS1oZWlnaHQ6IDEuNjI1XFxufVxcbi5lcnJvcnNfX2xpc3RbZGF0YS12LWY2N2M3ZTcyXSB7XFxuICAgIGhlaWdodDogMHB4O1xcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgICBwYWRkaW5nLWxlZnQ6IDFyZW07XFxuICAgIHBhZGRpbmctcmlnaHQ6IDFyZW07XFxuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGFsbDtcXG4gICAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XFxuICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDUwMG1zXFxufVxcbi5lcnJvcnNfX2xpc3QgdWxbZGF0YS12LWY2N2M3ZTcyXSB7XFxuICAgIHBhZGRpbmctbGVmdDogMS41cmVtO1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxLjVyZW1cXG59XFxuLmVycm9yc19faXRlbVtkYXRhLXYtZjY3YzdlNzJdIHtcXG4gICAgcGFkZGluZy10b3A6IDFyZW07XFxuICAgIHBhZGRpbmctYm90dG9tOiAxcmVtO1xcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xcbiAgICBsaW5lLWhlaWdodDogMS4yNXJlbTtcXG4gICAgbGluZS1oZWlnaHQ6IDEuNVxcbn1cXG4uZXJyb3JzX19pdGVtW2RhdGEtdi1mNjdjN2U3Ml06bm90KDpsYXN0LWNoaWxkKSB7XFxuICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDFweDtcXG4gICAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLW4tMjApLCB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpXFxufVxcbi5lcnJvcnNfX2VsZW1lbnRbZGF0YS12LWY2N2M3ZTcyXSB7XFxuICAgIGxpc3Qtc3R5bGUtdHlwZTogZGlzYztcXG4gICAgcGFkZGluZy1sZWZ0OiAxcmVtO1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxcmVtO1xcbiAgICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gICAgY29sb3I6IHJnYmEodmFyKC0tYmx1ZWNvcmFsLTUwKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSlcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL0Vycm9yTGlzdHMudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUVFO0lBQUE7QUFBQTtBQUdFO0lBQUEsYUFBQTtJQUFBLDhCQUFBO0lBQUE7QUFBQTtBQUdFO0lBQUEsYUFBQTtJQUFBLFlBQUE7SUFBQSxtQkFBQTtJQUFBLG1CQUFBO0lBQUEsb0JBQUE7SUFBQTtBQUFBO0FBS0Y7SUFBQSxXQUFBO0lBQUEsZ0JBQUE7SUFBQSxrQkFBQTtJQUFBLG1CQUFBO0lBQUEsd0JBQUE7SUFBQSx3REFBQTtJQUFBO0FBQUE7QUFHRTtJQUFBLG9CQUFBO0lBQUE7QUFBQTtBQUtGO0lBQUEsaUJBQUE7SUFBQSxvQkFBQTtJQUFBLG1CQUFBO0lBQUEsb0JBQUE7SUFBQTtBQUFBO0FBSUE7SUFBQSx3QkFBQTtJQUFBLHNCQUFBO0lBQUE7QUFBQTtBQUlBO0lBQUEscUJBQUE7SUFBQSxrQkFBQTtJQUFBLG1CQUFBO0lBQUEsb0JBQUE7SUFBQTtBQUFBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5lcnJvcnMge1xcbiAgQGFwcGx5IGJvcmRlci1sLTI7XFxuXFxuICAmX19oZWFkIHtcXG4gICAgQGFwcGx5IGZsZXgganVzdGlmeS1iZXR3ZWVuIHAtNDtcXG5cXG4gICAgJi0tdGl0bGUge1xcbiAgICAgIEBhcHBseSBmbGV4IGdyb3cgaXRlbXMtY2VudGVyIHRleHQtc20gbGVhZGluZy1yZWxheGVkO1xcbiAgICB9XFxuICB9XFxuXFxuICAmX19saXN0IHtcXG4gICAgQGFwcGx5IGgtMCBvdmVyZmxvdy1oaWRkZW4gcHgtNCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi01MDA7XFxuXFxuICAgIHVsIHtcXG4gICAgICBAYXBwbHkgcHgtNjtcXG4gICAgfVxcbiAgfVxcblxcbiAgJl9faXRlbSB7XFxuICAgIEBhcHBseSBweS00IHRleHQtc20gbGVhZGluZy1ub3JtYWw7XFxuICB9XFxuXFxuICAmX19pdGVtOm5vdCg6bGFzdC1jaGlsZCkge1xcbiAgICBAYXBwbHkgYm9yZGVyLWIgYm9yZGVyLW4tMjA7XFxuICB9XFxuXFxuICAmX19lbGVtZW50IHtcXG4gICAgQGFwcGx5IGxpc3QtZGlzYyBweC00IHRleHQtYmx1ZS01MDtcXG4gIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLnByb2dyZXNzX2JhcltkYXRhLXYtNWMzMmJmMGNdIHtcXG4gIHBvc2l0aW9uOiBmaXhlZDtcXG4gIGxlZnQ6IDBweDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICB3aWR0aDogMTAwJTtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0td2hpdGUpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICB0b3A6IDAgIWltcG9ydGFudDtcXG4gIHotaW5kZXg6IDk5OTk5OTtcXG4gIGhlaWdodDogMTAwdmg7XFxufVxcbi5wcm9ncmVzc19iYXJfX3dyYXBwZXJbZGF0YS12LTVjMzJiZjBjXSB7XFxuICB3aWR0aDogMjUwcHg7XFxuICBib3JkZXItcmFkaXVzOiAxcmVtO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2M0YzRjNDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxufVxcbi5wcm9ncmVzc19iYXJfX3ZpZXdlcltkYXRhLXYtNWMzMmJmMGNdIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tc3ByaW5nLTUwKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xcbiAgaGVpZ2h0OiA0cHg7XFxuICB0cmFuc2Zvcm06IHNjYWxlWCgwKTtcXG4gIHRyYW5zZm9ybS1vcmlnaW46IDAgMDtcXG59XFxuLnByb2dyZXNzX2Jhci5hbmltYXRlLWxvYWRlciAucHJvZ3Jlc3NfYmFyX192aWV3ZXJbZGF0YS12LTVjMzJiZjBjXSB7XFxuICAtd2Via2l0LWFuaW1hdGlvbjogRmlsbEFuaW1hdGlvbi01YzMyYmYwYyA2cyBsaW5lYXIgZm9yd2FyZHM7XFxuICAgICAgICAgIGFuaW1hdGlvbjogRmlsbEFuaW1hdGlvbi01YzMyYmYwYyA2cyBsaW5lYXIgZm9yd2FyZHM7XFxufVxcbi5wcm9ncmVzc19iYXIuYW5pbWF0ZS1sb2FkZXIgLnByb2dyZXNzX2Jhcl9fc3RhdGVbZGF0YS12LTVjMzJiZjBjXTo6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgLXdlYmtpdC1hbmltYXRpb246IFRleHRDaGFuZ2UtNWMzMmJmMGMgNnMgbGluZWFyIGZvcndhcmRzO1xcbiAgICAgICAgICBhbmltYXRpb246IFRleHRDaGFuZ2UtNWMzMmJmMGMgNnMgbGluZWFyIGZvcndhcmRzO1xcbn1cXG4ucHJvZ3Jlc3NfYmFyX19jb250ZW50W2RhdGEtdi01YzMyYmYwY10ge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxufVxcbi5wcm9ncmVzc19iYXJfX3N0YXRlW2RhdGEtdi01YzMyYmYwY10ge1xcbiAgbWFyZ2luLXRvcDogMS41cmVtO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjI1cmVtO1xcbiAgZm9udC13ZWlnaHQ6IDcwMDtcXG4gIGxpbmUtaGVpZ2h0OiAxLjU7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLWJsdWVjb3JhbC01MCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cXG5ALXdlYmtpdC1rZXlmcmFtZXMgRmlsbEFuaW1hdGlvbi01YzMyYmYwYyB7XFxuMCUge1xcbiAgICB0cmFuc2Zvcm06IHNjYWxlWCgwKTtcXG59XFxuMTAwJSB7XFxuICAgIHRyYW5zZm9ybTogc2NhbGVYKDEpO1xcbn1cXG59XFxuQGtleWZyYW1lcyBGaWxsQW5pbWF0aW9uLTVjMzJiZjBjIHtcXG4wJSB7XFxuICAgIHRyYW5zZm9ybTogc2NhbGVYKDApO1xcbn1cXG4xMDAlIHtcXG4gICAgdHJhbnNmb3JtOiBzY2FsZVgoMSk7XFxufVxcbn1cXG5ALXdlYmtpdC1rZXlmcmFtZXMgVGV4dENoYW5nZS01YzMyYmYwYyB7XFxuMCUge1xcbiAgICBjb250ZW50OiBhdHRyKGRhdGEtc3RhcnQpO1xcbn1cXG45NSUge1xcbiAgICBjb250ZW50OiBhdHRyKGRhdGEtc3RhcnQpO1xcbn1cXG4xMDAlIHtcXG4gICAgY29udGVudDogYXR0cihkYXRhLWVuZCk7XFxufVxcbn1cXG5Aa2V5ZnJhbWVzIFRleHRDaGFuZ2UtNWMzMmJmMGMge1xcbjAlIHtcXG4gICAgY29udGVudDogYXR0cihkYXRhLXN0YXJ0KTtcXG59XFxuOTUlIHtcXG4gICAgY29udGVudDogYXR0cihkYXRhLXN0YXJ0KTtcXG59XFxuMTAwJSB7XFxuICAgIGNvbnRlbnQ6IGF0dHIoZGF0YS1lbmQpO1xcbn1cXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1Byb2dyZXNzTG9hZGVyLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFFRTtFQUFBLGVBQUE7RUFBQSxTQUFBO0VBQUEsYUFBQTtFQUFBLFdBQUE7RUFBQSxtQkFBQTtFQUFBLHVCQUFBO0VBQUEsa0JBQUE7RUFBQSwwREFBQTtFQUNBLGlCQUFBO0VBQ0EsZUFBQTtFQUNBLGFBQUE7QUFIQTtBQU1FO0VBQUEsWUFBQTtFQUFBLG1CQUFBO0VBQ0EseUJBQUE7RUFDQSxnQkFBQTtBQUZBO0FBTUE7RUFBQSxrQkFBQTtFQUFBLDhEQUFBO0VBQ0Esa0JBQUE7RUFDQSxXQUFBO0VBQ0Esb0JBQUE7RUFDQSxxQkFBQTtBQUpBO0FBT0Y7RUFDRSw0REFBQTtVQUFBLG9EQUFBO0FBRko7QUFLRTtFQUNFLFdBQUE7RUFDQSx5REFBQTtVQUFBLGlEQUFBO0FBSEo7QUFPSTtFQUFBLGFBQUE7RUFBQSxzQkFBQTtBQUFBO0FBSUE7RUFBQSxrQkFBQTtFQUFBLGtCQUFBO0VBQUEsbUJBQUE7RUFBQSxvQkFBQTtFQUFBLGdCQUFBO0VBQUEsZ0JBQUE7RUFBQSxvQkFBQTtFQUFBLHdEQUFBO0FBQUE7QUFJSjtBQUNFO0lBQ0Usb0JBQUE7QUFORjtBQVFBO0lBQ0Usb0JBQUE7QUFORjtBQUNGO0FBQUE7QUFDRTtJQUNFLG9CQUFBO0FBTkY7QUFRQTtJQUNFLG9CQUFBO0FBTkY7QUFDRjtBQVNBO0FBQ0U7SUFDRSx5QkFBQTtBQVBGO0FBVUE7SUFDRSx5QkFBQTtBQVJGO0FBV0E7SUFDRSx1QkFBQTtBQVRGO0FBQ0Y7QUFGQTtBQUNFO0lBQ0UseUJBQUE7QUFQRjtBQVVBO0lBQ0UseUJBQUE7QUFSRjtBQVdBO0lBQ0UsdUJBQUE7QUFURjtBQUNGXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5wcm9ncmVzc19iYXIge1xcbiAgQGFwcGx5IGZpeGVkICBsZWZ0LTAgZmxleCB3LWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGJnLXdoaXRlO1xcbiAgdG9wOiAwICFpbXBvcnRhbnQ7XFxuICB6LWluZGV4OiA5OTk5OTk7XFxuICBoZWlnaHQ6IDEwMHZoO1xcblxcbiAgJl9fd3JhcHBlciB7XFxuICAgIEBhcHBseSB3LVsyNTBweF0gb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtMnhsO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzRjNGM0O1xcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgfVxcblxcbiAgJl9fdmlld2VyIHtcXG4gICAgQGFwcGx5IGJnLXNwcmluZy01MDtcXG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xcbiAgICBoZWlnaHQ6IDRweDtcXG4gICAgdHJhbnNmb3JtOiBzY2FsZVgoMCk7XFxuICAgIHRyYW5zZm9ybS1vcmlnaW46IDAgMDtcXG4gIH1cXG5cXG4gICYuYW5pbWF0ZS1sb2FkZXIgJl9fdmlld2VyIHtcXG4gICAgYW5pbWF0aW9uOiBGaWxsQW5pbWF0aW9uIDZzIGxpbmVhciBmb3J3YXJkcztcXG4gIH1cXG5cXG4gICYuYW5pbWF0ZS1sb2FkZXIgJl9fc3RhdGU6OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6ICcnO1xcbiAgICBhbmltYXRpb246IFRleHRDaGFuZ2UgNnMgbGluZWFyIGZvcndhcmRzO1xcbiAgfVxcblxcbiAgJl9fY29udGVudCB7XFxuICAgIEBhcHBseSBmbGV4IGZsZXgtY29sO1xcbiAgfVxcblxcbiAgJl9fc3RhdGUge1xcbiAgICBAYXBwbHkgbXQtNiB0ZXh0LWNlbnRlciB0ZXh0LXNtIGZvbnQtYm9sZCBsZWFkaW5nLW5vcm1hbCB0ZXh0LWJsdWUtNTA7XFxuICB9XFxufVxcblxcbkBrZXlmcmFtZXMgRmlsbEFuaW1hdGlvbiB7XFxuICAwJSB7XFxuICAgIHRyYW5zZm9ybTogc2NhbGVYKDApO1xcbiAgfVxcbiAgMTAwJSB7XFxuICAgIHRyYW5zZm9ybTogc2NhbGVYKDEpO1xcbiAgfVxcbn1cXG5cXG5Aa2V5ZnJhbWVzIFRleHRDaGFuZ2Uge1xcbiAgMCUge1xcbiAgICBjb250ZW50OiBhdHRyKGRhdGEtc3RhcnQpO1xcbiAgfVxcblxcbiAgOTUlIHtcXG4gICAgY29udGVudDogYXR0cihkYXRhLXN0YXJ0KTtcXG4gIH1cXG5cXG4gIDEwMCUge1xcbiAgICBjb250ZW50OiBhdHRyKGRhdGEtZW5kKTtcXG4gIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLnZhbGlkYXRpb25bZGF0YS12LTFlMzhkMTBlXSB7XFxuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwLjVyZW07XFxuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwLjVyZW07XFxuICBib3JkZXItd2lkdGg6IDFweDtcXG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IGFsbDtcXG4gIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogNTAwbXM7XFxuICBib3gtc2hhZG93OiAwcHggNHB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xcbn1cXG4udmFsaWRhdGlvbl9fZXJyb3JIZWFkW2RhdGEtdi0xZTM4ZDEwZV0ge1xcbiAgd2lkdGg6IDIxMnB4O1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1jcmltc29uLTIwKSwgdmFyKC0tdHctYm9yZGVyLW9wYWNpdHkpKTtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tY3JpbXNvbi0xMCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIGJveC1zaGFkb3c6IDBweCA0cHggNDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7XFxufVxcbi52YWxpZGF0aW9uX19lcnJvcnNbZGF0YS12LTFlMzhkMTBlXSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDBweDtcXG4gIHJpZ2h0OiAwcHg7XFxuICB6LWluZGV4OiAxMDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICB3aWR0aDogNTk1cHg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDE7XFxuICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0td2hpdGUpLCB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS13aGl0ZSksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIG1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSA2MHB4KTtcXG59XFxuLnZhbGlkYXRpb25fX2hlYWRpbmdbZGF0YS12LTFlMzhkMTBlXSB7XFxuICBwYWRkaW5nLWxlZnQ6IDFyZW07XFxuICBwYWRkaW5nLXJpZ2h0OiAxcmVtO1xcbiAgcGFkZGluZy10b3A6IDAuNzVyZW07XFxuICBwYWRkaW5nLWJvdHRvbTogMC43NXJlbTtcXG59XFxuLnZhbGlkYXRpb25fX2Vycm9ycy1saXN0W2RhdGEtdi0xZTM4ZDEwZV0ge1xcbiAgZmxleC1ncm93OiAxO1xcbiAgb3ZlcmZsb3cteTogYXV0bztcXG4gIHBhZGRpbmctbGVmdDogMXJlbTtcXG4gIHBhZGRpbmctcmlnaHQ6IDFyZW07XFxuICBwYWRkaW5nLXRvcDogMC43NXJlbTtcXG4gIHBhZGRpbmctYm90dG9tOiAwLjc1cmVtO1xcbn1cXG4udmFsaWRhdGlvbl9fdG9nZ2xlW2RhdGEtdi0xZTM4ZDEwZV0ge1xcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDFyZW07XFxuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xcbiAgbGluZS1oZWlnaHQ6IDEuNTtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tYmx1ZWNvcmFsLTUwKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxufVxcbi5hY3RpdmVbZGF0YS12LTFlMzhkMTBlXTo6YWZ0ZXIge1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBoZWlnaHQ6IDJweDtcXG4gIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMwNmRiZTQ7XFxuICB3aWR0aDogMTAwJTtcXG4gIHRvcDogY2FsYygxMDAlICsgM3B4KTtcXG4gIGxlZnQ6IDA7XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9TdGlja3lFcnJvcnMudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUVFO0VBQUEsOEJBQUE7RUFBQSxpQ0FBQTtFQUFBLGlCQUFBO0VBQUEsd0JBQUE7RUFBQSx3REFBQTtFQUFBLDBCQUFBO0VBQ0EsMkNBQUE7QUFEQTtBQUlFO0VBQUEsWUFBQTtFQUFBLHNCQUFBO0VBQUEsK0RBQUE7RUFBQSxrQkFBQTtFQUFBLCtEQUFBO0VBQ0EsMkNBQUE7QUFEQTtBQUtBO0VBQUEsa0JBQUE7RUFBQSxRQUFBO0VBQUEsVUFBQTtFQUFBLFdBQUE7RUFBQSxhQUFBO0VBQUEsWUFBQTtFQUFBLHNCQUFBO0VBQUEsZ0JBQUE7RUFBQSxzQkFBQTtFQUFBLDBEQUFBO0VBQUEsa0JBQUE7RUFBQSwwREFBQTtFQUNBLDhCQUFBO0FBREE7QUFLQTtFQUFBLGtCQUFBO0VBQUEsbUJBQUE7RUFBQSxvQkFBQTtFQUFBLHVCQUFBO0FBQUE7QUFJQTtFQUFBLFlBQUE7RUFBQSxnQkFBQTtFQUFBLGtCQUFBO0VBQUEsbUJBQUE7RUFBQSxvQkFBQTtFQUFBLHVCQUFBO0FBQUE7QUFJQTtFQUFBLGtCQUFBO0VBQUEsaUJBQUE7RUFBQSx5QkFBQTtFQUFBLGdCQUFBO0VBQUEsb0JBQUE7RUFBQSx3REFBQTtBQUFBO0FBSUY7RUFDRSxXQUFBO0VBQ0Esa0JBQUE7RUFDQSxXQUFBO0VBQ0Esa0JBQUE7RUFDQSx5QkFBQTtFQUNBLFdBQUE7RUFDQSxxQkFBQTtFQUNBLE9BQUE7QUFMSlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4udmFsaWRhdGlvbiB7XFxuICBAYXBwbHkgcm91bmRlZC10bC1sZyByb3VuZGVkLWJsLWxnIGJvcmRlciB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi01MDA7XFxuICBib3gtc2hhZG93OiAwcHggNHB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xcblxcbiAgJl9fZXJyb3JIZWFkIHtcXG4gICAgQGFwcGx5IHctWzIxMnB4XSBib3JkZXItY3JpbXNvbi0yMCBiZy1jcmltc29uLTEwO1xcbiAgICBib3gtc2hhZG93OiAwcHggNHB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xcbiAgfVxcblxcbiAgJl9fZXJyb3JzIHtcXG4gICAgQGFwcGx5IGFic29sdXRlIHRvcC0wIHJpZ2h0LTAgei0xMCBmbGV4IHctWzU5NXB4XSBmbGV4LWNvbCBvdmVyZmxvdy1oaWRkZW4gYm9yZGVyLXdoaXRlIGJnLXdoaXRlO1xcbiAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNjBweCk7XFxuICB9XFxuXFxuICAmX19oZWFkaW5nIHtcXG4gICAgQGFwcGx5IHB4LTQgcHktMztcXG4gIH1cXG5cXG4gICZfX2Vycm9ycy1saXN0IHtcXG4gICAgQGFwcGx5IGdyb3cgb3ZlcmZsb3cteS1hdXRvIHB4LTQgcHktMztcXG4gIH1cXG5cXG4gICZfX3RvZ2dsZSB7XFxuICAgIEBhcHBseSB0ZXh0LXhzIHVwcGVyY2FzZSBsZWFkaW5nLW5vcm1hbCB0ZXh0LWJsdWUtNTA7XFxuICB9XFxufVxcbi5hY3RpdmUge1xcbiAgJjo6YWZ0ZXIge1xcbiAgICBjb250ZW50OiAnJztcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICBoZWlnaHQ6IDJweDtcXG4gICAgYm9yZGVyLXJhZGl1czogMnB4O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDZkYmU0O1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgdG9wOiBjYWxjKDEwMCUgKyAzcHgpO1xcbiAgICBsZWZ0OiAwO1xcbiAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIuZXJyb3ItYm9yZGVyW2RhdGEtdi02ZjE3ZWM0NV06OmFmdGVyIHtcXG4gIGNvbnRlbnQ6IFxcXCIgXFxcIjtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDA7XFxuICB0b3A6IDA7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMnB4O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UzNGQ1YjtcXG59XFxuLndhcm5pbmctYm9yZGVyW2RhdGEtdi02ZjE3ZWM0NV06OmFmdGVyIHtcXG4gIGNvbnRlbnQ6IFxcXCIgXFxcIjtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDA7XFxuICB0b3A6IDA7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMnB4O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y0Yjc4NDtcXG59XFxuLmVycm9yLWNvbnRhaW5lcltkYXRhLXYtNmYxN2VjNDVdIHtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB0cmFuc2l0aW9uOiBoZWlnaHQgMC4zcyBlYXNlLW91dDtcXG4gIGhlaWdodDogYXV0bztcXG59XFxuLmxpc3QtaW5kZXhbZGF0YS12LTZmMTdlYzQ1XSB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBwYWRkaW5nLWxlZnQ6IDI0cHg7XFxufVxcbi5saXN0LWluZGV4W2RhdGEtdi02ZjE3ZWM0NV06YWZ0ZXIge1xcbiAgY29udGVudDogXFxcIiBcXFwiO1xcbiAgei1pbmRleDogMTA7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBoZWlnaHQ6IDRweDtcXG4gIHdpZHRoOiA0cHg7XFxuICBib3JkZXItcmFkaXVzOiAxMHB4O1xcbiAgbGVmdDogOHB4O1xcbiAgdG9wOiA1MCU7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XFxuICBiYWNrZ3JvdW5kOiAjMmEyZjMwO1xcbn1cXG4uY29udGFpbmVyW2RhdGEtdi02ZjE3ZWM0NV0ge1xcbiAgaGVpZ2h0OiAwcHg7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgcGFkZGluZy1sZWZ0OiAxcmVtO1xcbiAgcGFkZGluZy1yaWdodDogMXJlbTtcXG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IGFsbDtcXG4gIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogNTAwbXM7XFxufVxcbi5lcnJvci1lbGVtZW50W2RhdGEtdi02ZjE3ZWM0NV06bm90KDpsYXN0LW9mLXR5cGUpIHtcXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZDVkY2RlO1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvVXBsb2FkZWRFcnJvcnMudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUVFO0VBQ0UsWUFBQTtFQUNBLGtCQUFBO0VBQ0EsT0FBQTtFQUNBLE1BQUE7RUFDQSxZQUFBO0VBQ0EsVUFBQTtFQUNBLHlCQUFBO0FBREo7QUFLRTtFQUNFLFlBQUE7RUFDQSxrQkFBQTtFQUNBLE9BQUE7RUFDQSxNQUFBO0VBQ0EsWUFBQTtFQUNBLFVBQUE7RUFDQSx5QkFBQTtBQUZKO0FBS0E7RUFDRSxnQkFBQTtFQUNBLGdDQUFBO0VBQ0EsWUFBQTtBQUZGO0FBS0E7RUFDRSxrQkFBQTtFQUNBLGtCQUFBO0FBRkY7QUFJRTtFQUNFLFlBQUE7RUFDQSxXQUFBO0VBQ0Esa0JBQUE7RUFDQSxXQUFBO0VBQ0EsVUFBQTtFQUNBLG1CQUFBO0VBQ0EsU0FBQTtFQUNBLFFBQUE7RUFDQSwyQkFBQTtFQUNBLG1CQUFBO0FBRko7QUFNRTtFQUFBLFdBQUE7RUFBQSxnQkFBQTtFQUFBLGtCQUFBO0VBQUEsbUJBQUE7RUFBQSx3QkFBQTtFQUFBLHdEQUFBO0VBQUEsMEJBQUE7QUFBQTtBQUVGO0VBQ0UsZ0NBQUE7QUFERlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4uZXJyb3ItYm9yZGVyIHtcXG4gICY6OmFmdGVyIHtcXG4gICAgY29udGVudDogJyAnO1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIGxlZnQ6IDA7XFxuICAgIHRvcDogMDtcXG4gICAgaGVpZ2h0OiAxMDAlO1xcbiAgICB3aWR0aDogMnB4O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTM0ZDViO1xcbiAgfVxcbn1cXG4ud2FybmluZy1ib3JkZXIge1xcbiAgJjo6YWZ0ZXIge1xcbiAgICBjb250ZW50OiAnICc7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgbGVmdDogMDtcXG4gICAgdG9wOiAwO1xcbiAgICBoZWlnaHQ6IDEwMCU7XFxuICAgIHdpZHRoOiAycHg7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmNGI3ODQ7XFxuICB9XFxufVxcbi5lcnJvci1jb250YWluZXIge1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHRyYW5zaXRpb246IGhlaWdodCAwLjNzIGVhc2Utb3V0O1xcbiAgaGVpZ2h0OiBhdXRvO1xcbn1cXG5cXG4ubGlzdC1pbmRleCB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBwYWRkaW5nLWxlZnQ6IDI0cHg7XFxuXFxuICAmOmFmdGVyIHtcXG4gICAgY29udGVudDogJyAnO1xcbiAgICB6LWluZGV4OiAxMDtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICBoZWlnaHQ6IDRweDtcXG4gICAgd2lkdGg6IDRweDtcXG4gICAgYm9yZGVyLXJhZGl1czogMTBweDtcXG4gICAgbGVmdDogOHB4O1xcbiAgICB0b3A6IDUwJTtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xcbiAgICBiYWNrZ3JvdW5kOiAjMmEyZjMwO1xcbiAgfVxcbn1cXG4uY29udGFpbmVyIHtcXG4gIEBhcHBseSBoLTAgb3ZlcmZsb3ctaGlkZGVuIHB4LTQgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNTAwO1xcbn1cXG4uZXJyb3ItZWxlbWVudDpub3QoOmxhc3Qtb2YtdHlwZSkge1xcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkNWRjZGU7XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5wYWdlLWhlaWdodCB7XFxuICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoIC0gNjBweCk7XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvQWN0aXZpdHlJbmRleC52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQ0E7RUFDRSw4QkFBQTtBQUFGXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5wYWdlLWhlaWdodCB7XFxuICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoIC0gNjBweCk7XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5mb3JtLWdyb3VwW2RhdGEtdi1jN2NhMjhiOF0ge1xcbiAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xcbiAgYm9yZGVyLXdpZHRoOiAxcHg7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLW4tMjApLCB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpO1xcbiAgcGFkZGluZzogMS4yNXJlbTtcXG59XFxuLmZvcm0tZ3JvdXBbZGF0YS12LWM3Y2EyOGI4XTpsYXN0LWNoaWxkIHtcXG4gIG1hcmdpbi1ib3R0b206IDA7XFxufVxcbi5mb3JtLWdyb3VwIC5mb3JtX19jb250ZW50W2RhdGEtdi1jN2NhMjhiOF0ge1xcbiAgbWFyZ2luLXRvcDogMDtcXG4gIGdhcDogMjVweDtcXG59XFxuLmZvcm0tZ3JvdXAgLmZvcm1fX2NvbnRlbnQgLmxhYmVsLWZpZWxkW2RhdGEtdi1jN2NhMjhiOF0ge1xcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxufVxcbi5mb3JtLWdyb3VwLXRpdGxlLWNvbnRhaW5lcltkYXRhLXYtYzdjYTI4YjhdIHtcXG4gIG1hcmdpbi1ib3R0b206IDAuMzc1cmVtO1xcbiAgZGlzcGxheTogZmxleDtcXG59XFxuLmZvcm0tZ3JvdXAtdGl0bGUtY29udGFpbmVyW2RhdGEtdi1jN2NhMjhiOF0gPiA6bm90KFtoaWRkZW5dKSB+IDpub3QoW2hpZGRlbl0pIHtcXG4gIC0tdHctc3BhY2UteC1yZXZlcnNlOiAwO1xcbiAgbWFyZ2luLXJpZ2h0OiBjYWxjKDAuMjVyZW0gKiB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKTtcXG4gIG1hcmdpbi1sZWZ0OiBjYWxjKDAuMjVyZW0gKiBjYWxjKDEgLSB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKSk7XFxufVxcbi5mb3JtLWdyb3VwLXRpdGxlW2RhdGEtdi1jN2NhMjhiOF0ge1xcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDFyZW07XFxuICBmb250LXdlaWdodDogNzAwO1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1ibHVlY29yYWwpLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9DcmVhdGVNb2RhbC52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBRUU7RUFBQSxxQkFBQTtFQUFBLGlCQUFBO0VBQUEsc0JBQUE7RUFBQSx5REFBQTtFQUFBLGdCQUFBO0FBQUE7QUFFQTtFQUNFLGdCQUFBO0FBQUo7QUFHRTtFQUNFLGFBQUE7RUFDQSxTQUFBO0FBREo7QUFJTTtFQUFBLHFCQUFBO0VBQUEsYUFBQTtFQUFBLG1CQUFBO0VBQUEsOEJBQUE7QUFBQTtBQUtKO0VBQUEsdUJBQUE7RUFBQSxhQUFBO0FBQUE7QUFBQTtFQUFBLHVCQUFBO0VBQUEsdURBQUE7RUFBQSxnRUFBQTtBQUFBO0FBR0E7RUFBQSxrQkFBQTtFQUFBLGlCQUFBO0VBQUEsZ0JBQUE7RUFBQSxvQkFBQTtFQUFBLHFEQUFBO0FBQUFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLmZvcm0tZ3JvdXAge1xcbiAgQGFwcGx5IHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1uLTIwIHAtNTtcXG5cXG4gICY6bGFzdC1jaGlsZCB7XFxuICAgIG1hcmdpbi1ib3R0b206IDA7XFxuICB9XFxuXFxuICAuZm9ybV9fY29udGVudCB7XFxuICAgIG1hcmdpbi10b3A6IDA7XFxuICAgIGdhcDogMjVweDtcXG5cXG4gICAgLmxhYmVsLWZpZWxkIHtcXG4gICAgICBAYXBwbHkgbWItMiBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW47XFxuICAgIH1cXG4gIH1cXG59XFxuLmZvcm0tZ3JvdXAtdGl0bGUtY29udGFpbmVyIHtcXG4gIEBhcHBseSBtYi0xLjUgZmxleCBzcGFjZS14LTE7XFxufVxcbi5mb3JtLWdyb3VwLXRpdGxlIHtcXG4gIEBhcHBseSB0ZXh0LXhzIGZvbnQtYm9sZCB0ZXh0LWJsdWVjb3JhbDtcXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmFjY29yZGlvbi1jb250ZW50W2RhdGEtdi0wNjNjYmQ4Nl0ge1xcbiAgaGVpZ2h0OiAwcHg7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogYWxsO1xcbiAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XFxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiA1MDBtcztcXG59XFxuLmFjY29yZGlvbi1jb250ZW50IGRpdltkYXRhLXYtMDYzY2JkODZdIHtcXG4gIG1hcmdpbi10b3A6IDFyZW07XFxuICBib3JkZXItdG9wLXdpZHRoOiAxcHg7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLW4tMjApLCB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpO1xcbiAgcGFkZGluZy10b3A6IDAuNzVyZW07XFxuICBwYWRkaW5nLWJvdHRvbTogMC43NXJlbTtcXG59XFxuLmFjdGl2aXR5LXRpdGxlW2RhdGEtdi0wNjNjYmQ4Nl0ge1xcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvRXJyb3JJdGVtLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFFRTtFQUFBLFdBQUE7RUFBQSxnQkFBQTtFQUFBLHdCQUFBO0VBQUEsd0RBQUE7RUFBQSwwQkFBQTtBQUFBO0FBRUU7RUFBQSxnQkFBQTtFQUFBLHFCQUFBO0VBQUEsc0JBQUE7RUFBQSx5REFBQTtFQUFBLG9CQUFBO0VBQUEsdUJBQUE7QUFBQTtBQUlKO0VBQ0UsbUJBQUE7RUFDQSxnQkFBQTtFQUNBLHVCQUFBO0FBQUZcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLmFjY29yZGlvbi1jb250ZW50IHtcXG4gIEBhcHBseSBoLTAgb3ZlcmZsb3ctaGlkZGVuIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMDtcXG4gIGRpdiB7XFxuICAgIEBhcHBseSBtdC00IGJvcmRlci10IGJvcmRlci1uLTIwIHB5LTM7XFxuICB9XFxufVxcblxcbi5hY3Rpdml0eS10aXRsZSB7XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIuYWN0aXZpdGllcyB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxufVxcbi5hY3Rpdml0aWVzIC5lbGVtZW50cyB7XFxuICBib3JkZXItcmFkaXVzOiAwcHggOHB4IDhweCAwcHg7XFxuICB3aWR0aDogMTI1cHg7XFxuICBtaW4taGVpZ2h0OiAxNzRweDtcXG59XFxuLmFjdGl2aXRpZXMgLmVsZW1lbnRzX19wYW5lbCB7XFxuICBib3JkZXItcmFkaXVzOiAwLjVyZW07XFxuICBwYWRkaW5nOiAxcmVtO1xcbiAgLS10dy1zaGFkb3c6IDBweCA0cHggNDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7XFxuICAtLXR3LXNoYWRvdy1jb2xvcmVkOiAwcHggNHB4IDQwcHggdmFyKC0tdHctc2hhZG93LWNvbG9yKTtcXG4gIGJveC1zaGFkb3c6IHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdywgMCAwICMwMDAwKSwgdmFyKC0tdHctcmluZy1zaGFkb3csIDAgMCAjMDAwMCksIHZhcigtLXR3LXNoYWRvdyk7XFxufVxcbi5hY3Rpdml0aWVzIC5lbGVtZW50c19fcGFuZWwgLnBhbmVsX19pbnB1dDpmb2N1cywgXFxuLmFjdGl2aXRpZXMgLmVsZW1lbnRzX19wYW5lbCAucGFuZWxfX3NlYXJjaDpmb2N1cyB7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLW4tNDApLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG59XFxuLmFjdGl2aXRpZXMgLmhvdmVyX190ZXh0IHtcXG4gIG1hcmdpbi1sZWZ0OiAwLjI1cmVtO1xcbn1cXG4uYWN0aXZpdGllcyAuYnV0dG9uX19kcm9wZG93biB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICByaWdodDogMHB4O1xcbiAgdG9wOiAxMDAlO1xcbiAgei1pbmRleDogMTA7XFxuICB0ZXh0LWFsaWduOiBsZWZ0O1xcbiAgLS10dy1zaGFkb3c6IDBweCA0cHggNDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7XFxuICAtLXR3LXNoYWRvdy1jb2xvcmVkOiAwcHggNHB4IDQwcHggdmFyKC0tdHctc2hhZG93LWNvbG9yKTtcXG4gIGJveC1zaGFkb3c6IHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdywgMCAwICMwMDAwKSwgdmFyKC0tdHctcmluZy1zaGFkb3csIDAgMCAjMDAwMCksIHZhcigtLXR3LXNoYWRvdyk7XFxuICBtaW4td2lkdGg6IDE1MHB4O1xcbn1cXG4uYWN0aXZpdGllcyAuYnV0dG9uX19kcm9wZG93biBsaSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgcGFkZGluZy10b3A6IDAuMzc1cmVtO1xcbiAgcGFkZGluZy1ib3R0b206IDAuMzc1cmVtO1xcbiAgcGFkZGluZy1sZWZ0OiAwLjg3NXJlbTtcXG4gIHBhZGRpbmctcmlnaHQ6IDAuODc1cmVtO1xcbn1cXG4uYWN0aXZpdGllcyAuYnV0dG9uX19kcm9wZG93biBsaTpob3ZlciB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXdoaXRlKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbn1cXG4uYWN0aXZpdGllcyAuYnV0dG9uX19kcm9wZG93biBsaSBzdmcge1xcbiAgbWFyZ2luLXJpZ2h0OiAwLjI1cmVtO1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0FjdGl2aXRpZXNFbGVtZW50cy52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQ0E7RUFDRSxrQkFBQTtBQUFGO0FBQ0U7RUFDRSw4QkFBQTtFQUNBLFlBQUE7RUFDQSxpQkFBQTtBQUNKO0FBR0k7RUFBQSxxQkFBQTtFQUFBLGFBQUE7RUFBQSw0Q0FBQTtFQUFBLHdEQUFBO0VBQUEsdUdBQUE7QUFBQTtBQUlFOztFQUFBLG9CQUFBO0VBQUEsZ0RBQUE7QUFBQTtBQUtGO0VBQUEsb0JBQUE7QUFBQTtBQUdBO0VBQUEsa0JBQUE7RUFBQSxVQUFBO0VBQUEsU0FBQTtFQUFBLFdBQUE7RUFBQSxnQkFBQTtFQUFBLDRDQUFBO0VBQUEsd0RBQUE7RUFBQSx1R0FBQTtFQUNBLGdCQUFBO0FBREE7QUFJRTtFQUFBLGFBQUE7RUFBQSxxQkFBQTtFQUFBLHdCQUFBO0VBQUEsc0JBQUE7RUFBQSx1QkFBQTtBQUFBO0FBQUE7RUFBQSxrQkFBQTtFQUFBLDBEQUFBO0FBQUE7QUFHRTtFQUFBLHFCQUFBO0FBQUFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLmFjdGl2aXRpZXMge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgLmVsZW1lbnRzIHtcXG4gICAgYm9yZGVyLXJhZGl1czogMHB4IDhweCA4cHggMHB4O1xcbiAgICB3aWR0aDogMTI1cHg7XFxuICAgIG1pbi1oZWlnaHQ6IDE3NHB4O1xcbiAgfVxcblxcbiAgLmVsZW1lbnRzX19wYW5lbCB7XFxuICAgIEBhcHBseSByb3VuZGVkLWxnIHAtNCBzaGFkb3ctZHJvcGRvd247XFxuXFxuICAgIC5wYW5lbF9faW5wdXQ6Zm9jdXMsXFxuICAgIC5wYW5lbF9fc2VhcmNoOmZvY3VzIHtcXG4gICAgICBAYXBwbHkgdGV4dC1uLTQwO1xcbiAgICB9XFxuICB9XFxuXFxuICAuaG92ZXJfX3RleHQge1xcbiAgICBAYXBwbHkgbWwtMTtcXG4gIH1cXG4gIC5idXR0b25fX2Ryb3Bkb3duIHtcXG4gICAgQGFwcGx5IGFic29sdXRlIHJpZ2h0LTAgdG9wLWZ1bGwgei0xMCB0ZXh0LWxlZnQgc2hhZG93LWRyb3Bkb3duO1xcbiAgICBtaW4td2lkdGg6IDE1MHB4O1xcblxcbiAgICBsaSB7XFxuICAgICAgQGFwcGx5IGZsZXggcHktMS41IHB4LTMuNSBob3ZlcjpiZy13aGl0ZTtcXG5cXG4gICAgICBzdmcge1xcbiAgICAgICAgQGFwcGx5IG1yLTE7XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5zcGlubmVyW2RhdGEtdi02NjFlNmY4ZV0ge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrXFxufVxcbkAtd2Via2l0LWtleWZyYW1lcyBzcGluLTY2MWU2ZjhlIHtcXG50byB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZylcXG59XFxufVxcbkBrZXlmcmFtZXMgc3Bpbi02NjFlNmY4ZSB7XFxudG8ge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpXFxufVxcbn1cXG4uc3Bpbm5lcltkYXRhLXYtNjYxZTZmOGVdIHtcXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBzcGluLTY2MWU2ZjhlIDFzIGxpbmVhciBpbmZpbml0ZTtcXG4gICAgICAgICAgYW5pbWF0aW9uOiBzcGluLTY2MWU2ZjhlIDFzIGxpbmVhciBpbmZpbml0ZTtcXG4gIGJvcmRlci1yYWRpdXM6IDk5OTlweDtcXG4gIGJvcmRlci13aWR0aDogMnB4O1xcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLW4tMTApLCB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpO1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMC4wNTtcXG4gIHdpZHRoOiA3NXB4O1xcbiAgaGVpZ2h0OiA3NXB4O1xcbiAgYm9yZGVyLXRvcC1jb2xvcjogd2hpdGVcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9Eb3dubG9hZEFjdGl2aXR5QnV0dG9uLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFFRTtFQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtJQUFBO0FBQUE7QUFBQTtBQUFBO0VBQUEsbURBQUE7VUFBQSwyQ0FBQTtFQUFBLHFCQUFBO0VBQUEsaUJBQUE7RUFBQSx5REFBQTtFQUFBLHlCQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQTtBQUhBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5zcGlubmVyIHtcXG4gIEBhcHBseSBpbmxpbmUtYmxvY2sgIGFuaW1hdGUtc3BpbiByb3VuZGVkLWZ1bGwgYm9yZGVyLTIgYm9yZGVyLW4tMTAgYm9yZGVyLW9wYWNpdHktNTtcXG4gIHdpZHRoOiA3NXB4O1xcbiAgaGVpZ2h0OiA3NXB4O1xcbiAgYm9yZGVyLXRvcC1jb2xvcjogd2hpdGU7XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5hY3RpdmVOYXYge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tYmx1ZWNvcmFsKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS13aGl0ZSksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cXG4ubmF2bGlzdC13aWR0aCB7XFxuICB3aWR0aDogMTAwcHg7XFxufVxcbi50ZXh0LXNlbWktZGFyayB7XFxuICBjb2xvcjogIzJhMmYzMCAhaW1wb3J0YW50O1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2Rhc2hib2FyZC9EYXNoYm9hcmRMaXN0U2VjdGlvbi52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBRUU7RUFBQSxrQkFBQTtFQUFBLHNCQUFBO0VBQUEsa0JBQUE7RUFBQSw4REFBQTtFQUFBLG9CQUFBO0VBQUEsaURBQUE7QUFBQTtBQUdGO0VBQ0UsWUFBQTtBQUFGO0FBR0E7RUFDRSx5QkFBQTtBQUFGXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5hY3RpdmVOYXYge1xcbiAgQGFwcGx5IHJlbGF0aXZlICByb3VuZGVkIGJnLWJsdWVjb3JhbCB0ZXh0LXdoaXRlO1xcbn1cXG5cXG4ubmF2bGlzdC13aWR0aCB7XFxuICB3aWR0aDogMTAwcHg7XFxufVxcblxcbi50ZXh0LXNlbWktZGFyayB7XFxuICBjb2xvcjogIzJhMmYzMCAhaW1wb3J0YW50O1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIudXBsb2FkLWVycm9yW2RhdGEtdi00MGQ3ODcwYV0ge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDApICFpbXBvcnRhbnQ7XFxuICB6LWluZGV4OiAxO1xcbn1cXG4udXBsb2FkLWVycm9yW2RhdGEtdi00MGQ3ODcwYV06OmFmdGVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgaGVpZ2h0OiA2OHB4O1xcbiAgd2lkdGg6IDEwMCU7XFxuICBib3JkZXItbGVmdDogMnB4IHNvbGlkICNkMTAwMWU7XFxuICBsZWZ0OiAwO1xcbiAgdG9wOiAwO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjFmMDtcXG4gIHotaW5kZXg6IC0xO1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9JbXBvcnRMaXN0LnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFDQTtFQUNFLDZCQUFBO0VBQ0EsdUNBQUE7RUFDQSxVQUFBO0FBQUY7QUFFRTtFQUNFLGtCQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSxXQUFBO0VBQ0EsOEJBQUE7RUFDQSxPQUFBO0VBQ0EsTUFBQTtFQUNBLHlCQUFBO0VBQ0EsV0FBQTtBQUFKXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi51cGxvYWQtZXJyb3Ige1xcbiAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDApICFpbXBvcnRhbnQ7XFxuICB6LWluZGV4OiAxO1xcblxcbiAgJjo6YWZ0ZXIge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIGNvbnRlbnQ6ICcnO1xcbiAgICBoZWlnaHQ6IDY4cHg7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBib3JkZXItbGVmdDogMnB4IHNvbGlkICNkMTAwMWU7XFxuICAgIGxlZnQ6IDA7XFxuICAgIHRvcDogMDtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjFmMDtcXG4gICAgei1pbmRleDogLTE7XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5tYW5kYXRvcnk6OmFmdGVyIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgd2lkdGg6IDAuNXB4O1xcbiAgaGVpZ2h0OiAxNDBweDtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMC4yNXJlbTtcXG4gIHJpZ2h0OiAtMS41cmVtO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1uLTIwKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbn1cXG4uZWxlbWVudCB7XFxuICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtO1xcbiAgbWFyZ2luLWxlZnQ6IDAuNXJlbTtcXG59XFxuLmVsZW1lbnRfX2lubmVyIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxufVxcbi5lbGVtZW50X19pbm5lciA+IDpub3QoW2hpZGRlbl0pIH4gOm5vdChbaGlkZGVuXSkge1xcbiAgLS10dy1zcGFjZS14LXJldmVyc2U6IDA7XFxuICBtYXJnaW4tcmlnaHQ6IGNhbGMoMC42MjVyZW0gKiB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKTtcXG4gIG1hcmdpbi1sZWZ0OiBjYWxjKDAuNjI1cmVtICogY2FsYygxIC0gdmFyKC0tdHctc3BhY2UteC1yZXZlcnNlKSkpO1xcbn1cXG4uZWxlbWVudF9fbm90ZXMge1xcbiAgaGVpZ2h0OiAxcmVtO1xcbiAgd2lkdGg6IDJyZW07XFxuICBib3JkZXItcmFkaXVzOiAwLjEyNXJlbTtcXG4gIGJvcmRlci13aWR0aDogMXB4O1xcbn1cXG4uZWxlbWVudF9fc2VhcmNoIHtcXG4gIG1hcmdpbi10b3A6IDFyZW07XFxuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xcbiAgaGVpZ2h0OiAyLjVyZW07XFxuICB3aWR0aDogMTAwJTtcXG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XFxuICBib3JkZXItd2lkdGg6IDFweDtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDE7XFxuICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tbi0zMCksIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5KSk7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXdoaXRlKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgcGFkZGluZy10b3A6IDAuNzVyZW07XFxuICBwYWRkaW5nLWJvdHRvbTogMC43NXJlbTtcXG4gIHBhZGRpbmctcmlnaHQ6IDAuNzVyZW07XFxuICBwYWRkaW5nLWxlZnQ6IDIuNXJlbTtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tbi00MCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbiAgb3V0bGluZTogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xcbiAgb3V0bGluZS1vZmZzZXQ6IDJweDtcXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDMwMG1zO1xcbn1cXG4uZWxlbWVudF9fc2VhcmNoOjotbW96LXBsYWNlaG9sZGVyIHtcXG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XFxuICBsaW5lLWhlaWdodDogMS4yNXJlbTtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tbi0zMCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMzAwbXM7XFxuICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcXG59XFxuLmVsZW1lbnRfX3NlYXJjaDo6cGxhY2Vob2xkZXIge1xcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjI1cmVtO1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1uLTMwKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAzMDBtcztcXG4gIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xcbn1cXG4uZWxlbWVudF9fc2VhcmNoOmZvY3VzOjotbW96LXBsYWNlaG9sZGVyIHtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tbi00MCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cXG4uZWxlbWVudF9fc2VhcmNoOmZvY3VzOjpwbGFjZWhvbGRlciB7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLW4tNDApLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG59XFxuLnRhYl9fbGlua3Mge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgcGFkZGluZy1sZWZ0OiAwLjVyZW07XFxuICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW07XFxuICBwYWRkaW5nLWJvdHRvbTogMS41cmVtO1xcbn1cXG4udGFiX19saW5rczo6YWZ0ZXIge1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBib3R0b206IDBweDtcXG4gIGxlZnQ6IDBweDtcXG4gIGhlaWdodDogMC4yNXJlbTtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgLS10dy1zY2FsZS14OiAwO1xcbiAgLS10dy1zY2FsZS15OiAwO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUodmFyKC0tdHctdHJhbnNsYXRlLXgpLCB2YXIoLS10dy10cmFuc2xhdGUteSkpIHJvdGF0ZSh2YXIoLS10dy1yb3RhdGUpKSBza2V3WCh2YXIoLS10dy1za2V3LXgpKSBza2V3WSh2YXIoLS10dy1za2V3LXkpKSBzY2FsZVgodmFyKC0tdHctc2NhbGUteCkpIHNjYWxlWSh2YXIoLS10dy1zY2FsZS15KSk7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWJsdWVjb3JhbCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDMwMG1zO1xcbn1cXG4udGFiX19saW5rczpob3Zlcjo6YWZ0ZXIge1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xcbiAgLS10dy1zY2FsZS14OiAxO1xcbiAgLS10dy1zY2FsZS15OiAxO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUodmFyKC0tdHctdHJhbnNsYXRlLXgpLCB2YXIoLS10dy10cmFuc2xhdGUteSkpIHJvdGF0ZSh2YXIoLS10dy1yb3RhdGUpKSBza2V3WCh2YXIoLS10dy1za2V3LXgpKSBza2V3WSh2YXIoLS10dy1za2V3LXkpKSBzY2FsZVgodmFyKC0tdHctc2NhbGUteCkpIHNjYWxlWSh2YXIoLS10dy1zY2FsZS15KSk7XFxufVxcbi50YWJfX2xpbmtzLS1hY3RpdmUge1xcbiAgZm9udC13ZWlnaHQ6IDcwMDtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tYmx1ZWNvcmFsKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxufVxcbi50YWJfX2xpbmtzLS1hY3RpdmU6OmFmdGVyIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgYm90dG9tOiAwcHg7XFxuICBsZWZ0OiAwcHg7XFxuICBoZWlnaHQ6IDAuMjVyZW07XFxuICB3aWR0aDogMTAwJTtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tYmx1ZWNvcmFsKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMzAwbXM7XFxufVxcbi5zZXBhcmF0b3Ige1xcbiAgbWFyZ2luLWxlZnQ6IDFyZW07XFxuICBtYXJnaW4tcmlnaHQ6IDFyZW07XFxufVxcbi5sYXN0IHtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tbi0zMCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9PcmdhbmlzYXRpb25EYXRhLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFDQTtFQUNFLFdBQUE7RUFDQSxZQUFBO0VBQ0EsYUFBQTtFQUNBLGtCQUFBO0VBQUEsWUFBQTtFQUFBLGNBQUE7RUFBQSxrQkFBQTtFQUFBLHlEQUFBO0FBQUY7QUFJRTtFQUFBLHNCQUFBO0VBQUEsbUJBQUE7QUFBQTtBQUdFO0VBQUEsYUFBQTtBQUFBO0FBQUE7RUFBQSx1QkFBQTtFQUFBLHdEQUFBO0VBQUEsaUVBQUE7QUFBQTtBQUlBO0VBQUEsWUFBQTtFQUFBLFdBQUE7RUFBQSx1QkFBQTtFQUFBLGlCQUFBO0FBQUE7QUFLRjtFQUFBLGdCQUFBO0VBQUEsbUJBQUE7RUFBQSxjQUFBO0VBQUEsV0FBQTtFQUFBLHNCQUFBO0VBQUEsaUJBQUE7RUFBQSxzQkFBQTtFQUFBLHlEQUFBO0VBQUEsa0JBQUE7RUFBQSwwREFBQTtFQUFBLG9CQUFBO0VBQUEsdUJBQUE7RUFBQSxzQkFBQTtFQUFBLG9CQUFBO0VBQUEsb0JBQUE7RUFBQSxnREFBQTtFQUFBLDhCQUFBO0VBQUEsbUJBQUE7RUFBQSwwQkFBQTtBQUFBO0FBR0U7RUFBQSxtQkFBQTtFQUFBLG9CQUFBO0VBQUEsb0JBQUE7RUFBQSxnREFBQTtFQUFBLDBCQUFBO0VBQ0EsdUJBQUE7QUFEQTtBQUFBO0VBQUEsbUJBQUE7RUFBQSxvQkFBQTtFQUFBLG9CQUFBO0VBQUEsZ0RBQUE7RUFBQSwwQkFBQTtFQUNBLHVCQUFBO0FBREE7QUFLQTtFQUFBLG9CQUFBO0VBQUEsZ0RBQUE7QUFBQTtBQUFBO0VBQUEsb0JBQUE7RUFBQSxnREFBQTtBQUFBO0FBS0Y7RUFBQSxrQkFBQTtFQUFBLGVBQUE7RUFBQSxvQkFBQTtFQUFBLHFCQUFBO0VBQUEsc0JBQUE7QUFBQTtBQUVBO0VBQ0UsV0FBQTtFQUNBLGtCQUFBO0VBQUEsV0FBQTtFQUFBLFNBQUE7RUFBQSxlQUFBO0VBQUEsV0FBQTtFQUFBLGVBQUE7RUFBQSxlQUFBO0VBQUEsK0xBQUE7RUFBQSxrQkFBQTtFQUFBLDhEQUFBO0VBQUEsMEJBQUE7QUFKSjtBQU9FO0VBQ0UsV0FBQTtFQUNBLG1CQUFBO0VBQUEsZUFBQTtFQUFBLGVBQUE7RUFBQSwrTEFBQTtBQUxKO0FBU0k7RUFBQSxnQkFBQTtFQUFBLG9CQUFBO0VBQUEscURBQUE7QUFBQTtBQUlKO0VBQ0UsV0FBQTtFQUNBLGtCQUFBO0VBQUEsV0FBQTtFQUFBLFNBQUE7RUFBQSxlQUFBO0VBQUEsV0FBQTtFQUFBLGtCQUFBO0VBQUEsOERBQUE7RUFBQSwwQkFBQTtBQVBGO0FBV0U7RUFBQSxpQkFBQTtFQUFBLGtCQUFBO0FBQUE7QUFJQTtFQUFBLG9CQUFBO0VBQUEsZ0RBQUE7QUFBQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4ubWFuZGF0b3J5OjphZnRlciB7XFxuICBjb250ZW50OiAnJztcXG4gIHdpZHRoOiAwLjVweDtcXG4gIGhlaWdodDogMTQwcHg7XFxuICBAYXBwbHkgYWJzb2x1dGUgdG9wLTEgLXJpZ2h0LTYgYmctbi0yMDtcXG59XFxuXFxuLmVsZW1lbnQge1xcbiAgQGFwcGx5IG1iLTMgbWwtMjtcXG5cXG4gICZfX2lubmVyIHtcXG4gICAgQGFwcGx5IGZsZXggc3BhY2UteC0yLjU7XFxuICB9XFxuXFxuICAmX19ub3RlcyB7XFxuICAgIEBhcHBseSBoLTQgdy04IHJvdW5kZWQtc20gYm9yZGVyO1xcbiAgfVxcbn1cXG5cXG4uZWxlbWVudF9fc2VhcmNoIHtcXG4gIEBhcHBseSBteS00IGgtMTAgdy1mdWxsIHJvdW5kZWQgYm9yZGVyIGJvcmRlci1uLTMwIGJnLXdoaXRlIHB5LTMgcHItMyBwbC0xMCB0ZXh0LW4tNDAgb3V0bGluZS1ub25lIGR1cmF0aW9uLTMwMDtcXG5cXG4gICY6OnBsYWNlaG9sZGVyIHtcXG4gICAgQGFwcGx5IHRleHQtc20gdGV4dC1uLTMwIGR1cmF0aW9uLTMwMDtcXG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XFxuICB9XFxuXFxuICAmOmZvY3VzOjpwbGFjZWhvbGRlciB7XFxuICAgIEBhcHBseSB0ZXh0LW4tNDA7XFxuICB9XFxufVxcblxcbi50YWJfX2xpbmtzIHtcXG4gIEBhcHBseSByZWxhdGl2ZSBjdXJzb3ItcG9pbnRlciBweC0yIHBiLTY7XFxuXFxuICAmOjphZnRlciB7XFxuICAgIGNvbnRlbnQ6ICcnO1xcbiAgICBAYXBwbHkgYWJzb2x1dGUgYm90dG9tLTAgbGVmdC0wIGgtMSB3LWZ1bGwgc2NhbGUtMCBiZy1ibHVlY29yYWwgZHVyYXRpb24tMzAwO1xcbiAgfVxcblxcbiAgJjpob3Zlcjo6YWZ0ZXIge1xcbiAgICBjb250ZW50OiAnJztcXG4gICAgQGFwcGx5IHZpc2libGUgc2NhbGUtMTAwO1xcbiAgfVxcblxcbiAgJi0tYWN0aXZlIHtcXG4gICAgQGFwcGx5IGZvbnQtYm9sZCB0ZXh0LWJsdWVjb3JhbDtcXG4gIH1cXG59XFxuXFxuLnRhYl9fbGlua3MtLWFjdGl2ZTo6YWZ0ZXIge1xcbiAgY29udGVudDogJyc7XFxuICBAYXBwbHkgYWJzb2x1dGUgYm90dG9tLTAgbGVmdC0wIGgtMSB3LWZ1bGwgYmctYmx1ZWNvcmFsIGR1cmF0aW9uLTMwMDtcXG59XFxuXFxuLnNlcGFyYXRvciB7XFxuICBAYXBwbHkgbXgtNDtcXG59XFxuXFxuLmxhc3Qge1xcbiAgQGFwcGx5IHRleHQtbi0zMDtcXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLnJlc2V0IHtcXG4gIGJveC1zaGFkb3c6IDBweCAyMHB4IDQwcHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xcbiAgbWFyZ2luLWxlZnQ6IDAuNzVyZW07XFxuICBtYXJnaW4tcmlnaHQ6IDAuNzVyZW07XFxuICBib3JkZXItcmFkaXVzOiAwLjVyZW07XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXdoaXRlKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgcGFkZGluZzogMS4yNXJlbTtcXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDQwcHgpIHtcXG4ucmVzZXQge1xcbiAgICBwYWRkaW5nOiAyLjVyZW07XFxufVxcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xcbi5yZXNldCB7XFxuICAgIHdpZHRoOiA1ODNweDtcXG4gICAgbWFyZ2luOiBhdXRvO1xcbiAgICBwYWRkaW5nOiA2cmVtO1xcbn1cXG59XFxuLnJlc2V0X19jb250ZW50IHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbn1cXG4ucmVzZXRfX2NvbnRlbnQgLmlucHV0IHtcXG4gIG1hcmdpbi10b3A6IDAuNXJlbTtcXG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcXG4gIHBhZGRpbmctdG9wOiAxLjI1cmVtO1xcbiAgcGFkZGluZy1ib3R0b206IDEuMjVyZW07XFxufVxcbi5yZXNldF9fY29udGVudCAubG9jay1pY29uIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDEuNXJlbTtcXG4gIGZvbnQtc2l6ZTogMS4xMjVyZW07XFxuICBsaW5lLWhlaWdodDogMS43NXJlbTtcXG4gIHRvcDogNDdweDtcXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4ucmVzZXRfX2NvbnRlbnQgLmxvY2staWNvbiB7XFxuICAgIHRvcDogNTBweDtcXG4gICAgZm9udC1zaXplOiAyMHB4O1xcbn1cXG59XFxuLnJlc2V0X19jb250ZW50IC5tYWlsLWljb24ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgbGVmdDogMS41cmVtO1xcbiAgdG9wOiA0N3B4O1xcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xcbi5yZXNldF9fY29udGVudCAubWFpbC1pY29uIHtcXG4gICAgdG9wOiA1MXB4O1xcbn1cXG59XFxuLnJlc2V0IGgyIHtcXG4gIGZvbnQtc2l6ZTogMjRweDtcXG4gIGZvbnQtd2VpZ2h0OiA3MDA7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLW4tNTApLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG59XFxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7XFxuLnJlc2V0IGgyIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xcbn1cXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4ucmVzZXQgaDIge1xcbiAgICBmb250LXNpemU6IDQwcHg7XFxuICAgIGxpbmUtaGVpZ2h0OiA2MHB4O1xcbn1cXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDQwcHgpIHtcXG4ucmVzZXQgaDIge1xcbiAgICBmb250LXNpemU6IDMycHg7XFxuICAgIGxpbmUtaGVpZ2h0OiA1MHB4O1xcbn1cXG59XFxuLnJlc2V0IHAge1xcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjI1cmVtO1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1uLTQwKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxufVxcbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xcbi5yZXNldCBwIHtcXG4gICAgZm9udC1zaXplOiAxcmVtO1xcbiAgICBsaW5lLWhlaWdodDogMS41cmVtO1xcbn1cXG59XFxuLnJlc2V0IC5yZXNldC1idG4ge1xcbiAgbWFyZ2luLXRvcDogMC43NXJlbTtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDFyZW07XFxuICBwYWRkaW5nOiAxNHB4O1xcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xcbi5yZXNldCAucmVzZXQtYnRuIHtcXG4gICAgcGFkZGluZzogMThweCA5NHB4O1xcbiAgICBmb250LXNpemU6IDE0cHg7XFxufVxcbn1cXG4ucmVzZXQgLnZlcmlmaWNhdGlvbiB7XFxuICBmb250LXNpemU6IDE1MHB4O1xcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xcbi5yZXNldCAudmVyaWZpY2F0aW9uIHtcXG4gICAgZm9udC1zaXplOiAxOTBweDtcXG59XFxufVxcbi5yZXNldF9fcGFzc3dvcmQge1xcbiAgaGVpZ2h0OiA2MTBweDtcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9yZXNldC9SZXNldFBhZ2UudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUNBO0VBV0Usa0RBQUE7RUFDQSxvQkFBQTtFQUFBLHFCQUFBO0VBQUEscUJBQUE7RUFBQSxrQkFBQTtFQUFBLDBEQUFBO0VBQUEsZ0JBQUE7QUFWRjtBQURFO0FBQ0U7SUFBQSxlQUFBO0FBQUE7QUFLSjtBQUZFO0FBTEY7SUFNSSxZQUFBO0lBQ0EsWUFBQTtJQUVBLGFBQUE7QUFJRjtBQUNGO0FBQ0k7RUFBQSxrQkFBQTtFQUFBLGFBQUE7RUFBQSxzQkFBQTtBQUFBO0FBR0U7RUFBQSxrQkFBQTtFQUFBLHFCQUFBO0VBQUEsb0JBQUE7RUFBQSx1QkFBQTtBQUFBO0FBSUE7RUFBQSxrQkFBQTtFQUFBLFlBQUE7RUFBQSxtQkFBQTtFQUFBLG9CQUFBO0VBQ0EsU0FBQTtBQURBO0FBR0E7QUFKRjtJQUtJLFNBQUE7SUFDQSxlQUFBO0FBRU47QUFDRjtBQUVNO0VBQUEsa0JBQUE7RUFBQSxZQUFBO0VBQ0EsU0FBQTtBQURBO0FBR0E7QUFKRjtJQUtJLFNBQUE7QUFFTjtBQUNGO0FBV0k7RUFBQSxlQUFBO0VBQUEsZ0JBQUE7RUFBQSxvQkFBQTtFQUFBLGdEQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUEscUJBQUE7QUFBQTtBQUFBO0FBVEE7QUFDRTtJQUFBLGVBQUE7SUFDQSxpQkFBQTtBQURBO0FBTU47QUFGSTtBQUNFO0lBQUEsZUFBQTtJQUNBLGlCQUFBO0FBREE7QUFPTjtBQURJO0VBQUEsbUJBQUE7RUFBQSxvQkFBQTtFQUFBLG9CQUFBO0VBQUEsZ0RBQUE7QUFBQTtBQUFBO0FBQUE7SUFBQSxlQUFBO0lBQUEsbUJBQUE7QUFBQTtBQUFBO0FBR0E7RUFBQSxtQkFBQTtFQUFBLFdBQUE7RUFBQSxrQkFBQTtFQUFBLGlCQUFBO0VBQ0EsYUFBQTtBQURBO0FBR0E7QUFKRjtJQUtJLGtCQUFBO0lBQ0EsZUFBQTtBQUtKO0FBQ0Y7QUFIRTtFQUNFLGdCQUFBO0FBS0o7QUFISTtBQUhGO0lBSUksZ0JBQUE7QUFNSjtBQUNGO0FBSEE7RUFDRSxhQUFBO0FBTUZcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLnJlc2V0IHtcXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQ0MHB4KSB7XFxuICAgIEBhcHBseSBwLTEwO1xcbiAgfVxcblxcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4gICAgd2lkdGg6IDU4M3B4O1xcbiAgICBtYXJnaW46IGF1dG87XFxuXFxuICAgIEBhcHBseSBwLTI0O1xcbiAgfVxcbiAgYm94LXNoYWRvdzogMHB4IDIwcHggNDBweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XFxuICBAYXBwbHkgbXgtMyByb3VuZGVkLWxnIGJnLXdoaXRlIHAtNTtcXG5cXG4gICZfX2NvbnRlbnQge1xcbiAgICBAYXBwbHkgcmVsYXRpdmUgZmxleCBmbGV4LWNvbDtcXG5cXG4gICAgLmlucHV0IHtcXG4gICAgICBAYXBwbHkgbXktMiBweS01O1xcbiAgICB9XFxuXFxuICAgIC5sb2NrLWljb24ge1xcbiAgICAgIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTYgdGV4dC1sZztcXG4gICAgICB0b3A6IDQ3cHg7XFxuXFxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4gICAgICAgIHRvcDogNTBweDtcXG4gICAgICAgIGZvbnQtc2l6ZTogMjBweDtcXG4gICAgICB9XFxuICAgIH1cXG5cXG4gICAgLm1haWwtaWNvbiB7XFxuICAgICAgQGFwcGx5IGFic29sdXRlIGxlZnQtNjtcXG4gICAgICB0b3A6IDQ3cHg7XFxuXFxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4gICAgICAgIHRvcDogNTFweDtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG4gIGgyIHtcXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4gICAgICBAYXBwbHkgdGV4dC1oZWFkaW5nLTM7XFxuICAgICAgbGluZS1oZWlnaHQ6IDYwcHg7XFxuICAgIH1cXG5cXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDQwcHgpIHtcXG4gICAgICBAYXBwbHkgdGV4dC1oZWFkaW5nLTQ7XFxuICAgICAgbGluZS1oZWlnaHQ6IDUwcHg7XFxuICAgIH1cXG4gICAgQGFwcGx5IHRleHQtaGVhZGluZy01IGZvbnQtYm9sZCB0ZXh0LW4tNTAgc206bWItMjtcXG4gIH1cXG4gIHAge1xcbiAgICBAYXBwbHkgdGV4dC1zbSB0ZXh0LW4tNDAgc206dGV4dC1iYXNlO1xcbiAgfVxcbiAgLnJlc2V0LWJ0biB7XFxuICAgIEBhcHBseSBtdC0zIHctZnVsbCB0ZXh0LXhzO1xcbiAgICBwYWRkaW5nOiAxNHB4O1xcblxcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xcbiAgICAgIHBhZGRpbmc6IDE4cHggOTRweDtcXG4gICAgICBmb250LXNpemU6IDE0cHg7XFxuICAgIH1cXG4gIH1cXG4gIC52ZXJpZmljYXRpb24ge1xcbiAgICBmb250LXNpemU6IDE1MHB4O1xcblxcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xcbiAgICAgIGZvbnQtc2l6ZTogMTkwcHg7XFxuICAgIH1cXG4gIH1cXG59XFxuLnJlc2V0X19wYXNzd29yZCB7XFxuICBoZWlnaHQ6IDYxMHB4O1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIubGFiZWwge1xcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjI1cmVtO1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tbi01MCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIHtcXG4gIG1heC13aWR0aDogODY1cHg7XFxuICBtYXJnaW46IGF1dG87XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyODBweCkge1xcbi5zZWN0aW9uX19jb250YWluZXIge1xcbiAgICBtYXgtd2lkdGg6IDEyMDZweDtcXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAuZmVlZGJhY2sge1xcbiAgICB3aWR0aDogNzAycHg7XFxufVxcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5mZWVkYmFjayBwIHtcXG4gIGxpbmUtaGVpZ2h0OiAyMnB4O1xcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5zZWN0aW9uX193cmFwcGVyIHtcXG4gIGJveC1zaGFkb3c6IDBweCAyMHB4IDQwcHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5zZWN0aW9uX193cmFwcGVyIC52ZXJpZmljYXRpb24ge1xcbiAgZm9udC1zaXplOiAxOTBweDtcXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAuc2VjdGlvbl9fdGl0bGUge1xcbiAgbWFyZ2luLXRvcDogMS43NXJlbTtcXG4gIG1hcmdpbi1ib3R0b206IDEuNzVyZW07XFxuICBtYXJnaW4tbGVmdDogMC43NXJlbTtcXG4gIG1hcmdpbi1yaWdodDogMC43NXJlbTtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIGxpbmUtaGVpZ2h0OiAxLjc1cmVtO1xcbn1cXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4uc2VjdGlvbl9fY29udGFpbmVyIC5zZWN0aW9uX190aXRsZSB7XFxuICAgIGxpbmUtaGVpZ2h0OiAyLjVyZW07XFxufVxcbn1cXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAuc2VjdGlvbl9fdGl0bGUge1xcbiAgICBtYXJnaW4tYm90dG9tOiAyLjVyZW07XFxuICAgIG1hcmdpbi10b3A6IDMuNXJlbTtcXG59XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQ0MHB4KSB7XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAuc2VjdGlvbl9fdGl0bGUge1xcbiAgICBsaW5lLWhlaWdodDogMi4yNXJlbTtcXG59XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLnNlY3Rpb25fX3RpdGxlIHAge1xcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcXG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XFxuICBsaW5lLWhlaWdodDogMS4yNXJlbTtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tbi00MCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4uc2VjdGlvbl9fY29udGFpbmVyIC5zZWN0aW9uX190aXRsZSBwIHtcXG4gICAgZm9udC1zaXplOiAxcmVtO1xcbiAgICBsaW5lLWhlaWdodDogMS41cmVtO1xcbn1cXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAucmVnaXN0ZXJfX3NpZGViYXIge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1lZ2dzaGVsbCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIHBhZGRpbmc6IDk2cHggMzJweCA0MHB4O1xcbiAgd2lkdGg6IDM0NHB4O1xcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5yZWdpc3Rlcl9fc2lkZWJhciB1bCB7XFxuICB3aWR0aDogMjUzcHg7XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLnJlZ2lzdGVyX19zaWRlYmFyIHVsOjpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICB3aWR0aDogNHB4O1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1uLTIwKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgbGVmdDogMHB4O1xcbiAgdG9wOiAwcHg7XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLnJlZ2lzdGVyX19zaWRlYmFyIC5kZXRhaWwge1xcbiAgbWFyZ2luLWxlZnQ6IDQ1cHg7XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLnJlZ2lzdGVyX19zaWRlYmFyIC5saXN0X19hY3RpdmU6OmFmdGVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMDtcXG4gIGxlZnQ6IC0xcHg7XFxuICB3aWR0aDogNnB4O1xcbiAgaGVpZ2h0OiA4NXB4O1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS10dXJxdW9pc2UpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gIHotaW5kZXg6IDU7XFxufVxcbi5mb3JtIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0td2hpdGUpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBwYWRkaW5nOiAxLjI1cmVtO1xcbn1cXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4uZm9ybSB7XFxuICAgIHBhZGRpbmctbGVmdDogMi41cmVtO1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAyLjVyZW07XFxuICAgIHBhZGRpbmctdG9wOiAyLjVyZW07XFxuICAgIHBhZGRpbmctYm90dG9tOiAyLjVyZW07XFxufVxcbn1cXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XFxuLmZvcm0ge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDVyZW07XFxuICAgIHBhZGRpbmctcmlnaHQ6IDVyZW07XFxufVxcbn1cXG4uZm9ybSB7XFxuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA4cHg7XFxuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA4cHg7XFxuICB3aWR0aDogODYycHg7XFxufVxcbi5mb3JtX19jb250YWluZXIge1xcbiAgYm9yZGVyLWJvdHRvbS13aWR0aDogMnB4O1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1ib3R0b20tY29sb3I6IHJnYmEodmFyKC0tbi0xMCksIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5KSk7XFxuICBtYXJnaW4tYm90dG9tOiAyNHB4O1xcbn1cXG4uZm9ybV9fY29udGFpbmVyIC5lcnJvcl9faW5wdXQge1xcbiAgYm9yZGVyLXdpZHRoOiAxcHg7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNyaW1zb24tNTApLCB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpO1xcbn1cXG4uZm9ybV9fY29udGVudCB7XFxuICBtYXJnaW4tdG9wOiAyNHB4O1xcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI0cHgpIHtcXG4uZm9ybV9fY29udGVudCB7XFxuICAgIGRpc3BsYXk6IGdyaWQ7XFxuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XFxuICAgIGdhcDogMTZweDtcXG59XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL0lhdGlSZWdpc3RlclBhZ2UudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUVFO0VBQUEsbUJBQUE7RUFBQSxvQkFBQTtFQUFBLGdCQUFBO0VBQUEsb0JBQUE7RUFBQSxnREFBQTtBQUFBO0FBSUE7RUFJRSxnQkFBQTtFQUNBLFlBQUE7QUFKSjtBQUFJO0FBREY7SUFFSSxpQkFBQTtBQUdKO0FBRUU7SUFFSSxZQUFBO0FBQ047QUFKRjtBQU1NO0VBQ0UsaUJBQUE7QUFDUjtBQUdJO0VBQ0Usa0RBQUE7QUFETjtBQUdNO0VBQ0UsZ0JBQUE7QUFEUjtBQVVNO0VBQUEsbUJBQUE7RUFBQSxzQkFBQTtFQUFBLG9CQUFBO0VBQUEscUJBQUE7RUFBQSxrQkFBQTtFQUFBLG9CQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUEsbUJBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtJQUFBLHFCQUFBO0lBQUEsa0JBQUE7QUFBQTtBQUFBO0FBSkE7QUFDRTtJQUFBLG9CQUFBO0FBQUE7QUFDUjtBQUlNO0VBQ0UsbUJBQUE7RUFDQSxrQkFBQTtFQUNBLG1CQUFBO0VBQUEsb0JBQUE7RUFBQSxvQkFBQTtFQUFBLGdEQUFBO0FBRlI7QUFFUTtBQUFBO0lBQUEsZUFBQTtJQUFBLG1CQUFBO0FBQUE7QUFBQTtBQUtGO0VBQUEsa0JBQUE7RUFBQSw2REFBQTtFQUNBLHVCQUFBO0VBQ0EsWUFBQTtBQUZBO0FBSUE7RUFDRSxZQUFBO0FBSlI7QUFPTTtFQUNFLFdBQUE7RUFDQSxVQUFBO0VBQ0EsWUFBQTtFQUNBLGtCQUFBO0VBQUEseURBQUE7RUFDQSxrQkFBQTtFQUNBLGtCQUFBO0VBQ0EsU0FBQTtFQUNBLFFBQUE7QUFMUjtBQVFNO0VBQ0UsaUJBQUE7QUFOUjtBQVNNO0VBQ0Usa0JBQUE7RUFDQSxNQUFBO0VBQ0EsVUFBQTtFQUNBLFVBQUE7RUFDQSxZQUFBO0VBQ0Esa0JBQUE7RUFBQSw4REFBQTtFQUNBLFdBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7QUFQUjtBQWNFO0VBQUEsa0JBQUE7RUFBQSwwREFBQTtFQUFBLGdCQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUEsb0JBQUE7SUFBQSxxQkFBQTtJQUFBLG1CQUFBO0lBQUEsc0JBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtJQUFBLGtCQUFBO0lBQUEsbUJBQUE7QUFBQTtBQUFBO0FBREY7RUFFRSwyQkFBQTtFQUNBLDhCQUFBO0VBQ0EsWUFBQTtBQVZGO0FBYUk7RUFBQSx3QkFBQTtFQUFBLHNCQUFBO0VBQUEsZ0VBQUE7RUFDQSxtQkFBQTtBQURBO0FBSUU7RUFBQSxpQkFBQTtFQUFBLHNCQUFBO0VBQUEsK0RBQUE7QUFBQTtBQUlKO0VBQ0UsZ0JBQUE7QUFaSjtBQWdCQTtBQUNFO0lBQ0UsYUFBQTtJQUNBLHFDQUFBO0lBQ0EsU0FBQTtBQWJGO0FBQ0ZcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLmxhYmVsIHtcXG4gIEBhcHBseSB0ZXh0LXNtIGZvbnQtbm9ybWFsIHRleHQtbi01MDtcXG59XFxuXFxuLnNlY3Rpb24ge1xcbiAgJl9fY29udGFpbmVyIHtcXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTI4MHB4KSB7XFxuICAgICAgbWF4LXdpZHRoOiAxMjA2cHg7XFxuICAgIH1cXG4gICAgbWF4LXdpZHRoOiA4NjVweDtcXG4gICAgbWFyZ2luOiBhdXRvO1xcblxcbiAgICAuZmVlZGJhY2sge1xcbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyODBweCkge1xcbiAgICAgICAgd2lkdGg6IDcwMnB4O1xcbiAgICAgIH1cXG5cXG4gICAgICBwIHtcXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAyMnB4O1xcbiAgICAgIH1cXG4gICAgfVxcblxcbiAgICAuc2VjdGlvbl9fd3JhcHBlciB7XFxuICAgICAgYm94LXNoYWRvdzogMHB4IDIwcHggNDBweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XFxuXFxuICAgICAgLnZlcmlmaWNhdGlvbiB7XFxuICAgICAgICBmb250LXNpemU6IDE5MHB4O1xcbiAgICAgIH1cXG4gICAgfVxcblxcbiAgICAuc2VjdGlvbl9fdGl0bGUge1xcbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQ0MHB4KSB7XFxuICAgICAgICBAYXBwbHkgbGVhZGluZy05O1xcbiAgICAgIH1cXG5cXG4gICAgICBAYXBwbHkgbXktNyBteC0zIHRleHQtY2VudGVyIGxlYWRpbmctNyBzbTpsZWFkaW5nLTEwIGxnOm1iLTEwIGxnOm10LTE0O1xcblxcbiAgICAgIHAge1xcbiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcXG4gICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcXG4gICAgICAgIEBhcHBseSB0ZXh0LXNtIHRleHQtbi00MCBzbTp0ZXh0LWJhc2U7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgIC5yZWdpc3Rlcl9fc2lkZWJhciB7XFxuICAgICAgQGFwcGx5IGJnLWVnZ3NoZWxsO1xcbiAgICAgIHBhZGRpbmc6IDk2cHggMzJweCA0MHB4O1xcbiAgICAgIHdpZHRoOiAzNDRweDtcXG5cXG4gICAgICB1bCB7XFxuICAgICAgICB3aWR0aDogMjUzcHg7XFxuICAgICAgfVxcblxcbiAgICAgIHVsOjpiZWZvcmUge1xcbiAgICAgICAgY29udGVudDogJyc7XFxuICAgICAgICB3aWR0aDogNHB4O1xcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xcbiAgICAgICAgQGFwcGx5IGJnLW4tMjA7XFxuICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7XFxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgICAgICBsZWZ0OiAwcHg7XFxuICAgICAgICB0b3A6IDBweDtcXG4gICAgICB9XFxuXFxuICAgICAgLmRldGFpbCB7XFxuICAgICAgICBtYXJnaW4tbGVmdDogNDVweDtcXG4gICAgICB9XFxuXFxuICAgICAgLmxpc3RfX2FjdGl2ZTo6YWZ0ZXIge1xcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgICAgdG9wOiAwO1xcbiAgICAgICAgbGVmdDogLTFweDtcXG4gICAgICAgIHdpZHRoOiA2cHg7XFxuICAgICAgICBoZWlnaHQ6IDg1cHg7XFxuICAgICAgICBAYXBwbHkgYmctdHVycXVvaXNlO1xcbiAgICAgICAgY29udGVudDogJyc7XFxuICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7XFxuICAgICAgICB6LWluZGV4OiA1O1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcbn1cXG5cXG4uZm9ybSB7XFxuICBAYXBwbHkgYmctd2hpdGUgcC01IHNtOnB4LTEwIHNtOnB5LTEwIGxnOnB4LTIwO1xcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogOHB4O1xcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogOHB4O1xcbiAgd2lkdGg6IDg2MnB4O1xcblxcbiAgJl9fY29udGFpbmVyIHtcXG4gICAgQGFwcGx5IGJvcmRlci1iLTIgYm9yZGVyLWItbi0xMDtcXG4gICAgbWFyZ2luLWJvdHRvbTogMjRweDtcXG5cXG4gICAgLmVycm9yX19pbnB1dCB7XFxuICAgICAgQGFwcGx5IGJvcmRlciBib3JkZXItY3JpbXNvbi01MDtcXG4gICAgfVxcbiAgfVxcblxcbiAgJl9fY29udGVudCB7XFxuICAgIG1hcmdpbi10b3A6IDI0cHg7XFxuICB9XFxufVxcblxcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMjRweCkge1xcbiAgLmZvcm1fX2NvbnRlbnQge1xcbiAgICBkaXNwbGF5OiBncmlkO1xcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xcbiAgICBnYXA6IDE2cHg7XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5sYWJlbCB7XFxuICBmb250LXNpemU6IDAuODc1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDEuMjVyZW07XFxuICBmb250LXdlaWdodDogNDAwO1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1uLTUwKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIge1xcbiAgbWF4LXdpZHRoOiA4NjVweDtcXG4gIG1hcmdpbjogYXV0bztcXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTI4MHB4KSB7XFxuLnNlY3Rpb25fX2NvbnRhaW5lciB7XFxuICAgIG1heC13aWR0aDogMTIwNnB4O1xcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5mZWVkYmFjayB7XFxuICAgIHdpZHRoOiA3MDJweDtcXG59XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLmZlZWRiYWNrIHAge1xcbiAgbGluZS1oZWlnaHQ6IDIycHg7XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLnNlY3Rpb25fX3dyYXBwZXIge1xcbiAgYm94LXNoYWRvdzogMHB4IDIwcHggNDBweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLnNlY3Rpb25fX3dyYXBwZXIgLnZlcmlmaWNhdGlvbiB7XFxuICBmb250LXNpemU6IDE5MHB4O1xcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5zZWN0aW9uX190aXRsZSB7XFxuICBtYXJnaW4tdG9wOiAxLjc1cmVtO1xcbiAgbWFyZ2luLWJvdHRvbTogMS43NXJlbTtcXG4gIG1hcmdpbi1sZWZ0OiAwLjc1cmVtO1xcbiAgbWFyZ2luLXJpZ2h0OiAwLjc1cmVtO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgbGluZS1oZWlnaHQ6IDEuNzVyZW07XFxufVxcbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xcbi5zZWN0aW9uX19jb250YWluZXIgLnNlY3Rpb25fX3RpdGxlIHtcXG4gICAgbGluZS1oZWlnaHQ6IDIuNXJlbTtcXG59XFxufVxcbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHtcXG4uc2VjdGlvbl9fY29udGFpbmVyIC5zZWN0aW9uX190aXRsZSB7XFxuICAgIG1hcmdpbi1ib3R0b206IDIuNXJlbTtcXG4gICAgbWFyZ2luLXRvcDogMy41cmVtO1xcbn1cXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDQwcHgpIHtcXG4uc2VjdGlvbl9fY29udGFpbmVyIC5zZWN0aW9uX190aXRsZSB7XFxuICAgIGxpbmUtaGVpZ2h0OiAyLjI1cmVtO1xcbn1cXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAuc2VjdGlvbl9fdGl0bGUgcCB7XFxuICBmb250LXdlaWdodDogbm9ybWFsO1xcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjI1cmVtO1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1uLTQwKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxufVxcbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xcbi5zZWN0aW9uX19jb250YWluZXIgLnNlY3Rpb25fX3RpdGxlIHAge1xcbiAgICBmb250LXNpemU6IDFyZW07XFxuICAgIGxpbmUtaGVpZ2h0OiAxLjVyZW07XFxufVxcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5yZWdpc3Rlcl9fc2lkZWJhciB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWVnZ3NoZWxsKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgcGFkZGluZzogOTZweCAzMnB4IDQwcHg7XFxuICB3aWR0aDogMzQ0cHg7XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLnJlZ2lzdGVyX19zaWRlYmFyIHVsIHtcXG4gIHdpZHRoOiAyNTNweDtcXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAucmVnaXN0ZXJfX3NpZGViYXIgdWw6OmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIHdpZHRoOiA0cHg7XFxuICBoZWlnaHQ6IDE3NXB4O1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1uLTIwKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgbGVmdDogMHB4O1xcbiAgdG9wOiAwcHg7XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLnJlZ2lzdGVyX19zaWRlYmFyIC5kZXRhaWwge1xcbiAgbWFyZ2luLWxlZnQ6IDQ1cHg7XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLnJlZ2lzdGVyX19zaWRlYmFyIC5saXN0X19hY3RpdmU6OmFmdGVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMDtcXG4gIGxlZnQ6IC0xcHg7XFxuICB3aWR0aDogNnB4O1xcbiAgaGVpZ2h0OiA4NXB4O1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS10dXJxdW9pc2UpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gIHotaW5kZXg6IDU7XFxufVxcbi5mb3JtIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0td2hpdGUpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBwYWRkaW5nOiAxLjI1cmVtO1xcbn1cXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4uZm9ybSB7XFxuICAgIHBhZGRpbmctbGVmdDogMi41cmVtO1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAyLjVyZW07XFxuICAgIHBhZGRpbmctdG9wOiAyLjVyZW07XFxuICAgIHBhZGRpbmctYm90dG9tOiAyLjVyZW07XFxufVxcbn1cXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XFxuLmZvcm0ge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDVyZW07XFxuICAgIHBhZGRpbmctcmlnaHQ6IDVyZW07XFxufVxcbn1cXG4uZm9ybSB7XFxuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA4cHg7XFxuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA4cHg7XFxuICB3aWR0aDogODYycHg7XFxufVxcbi5mb3JtX19jb250YWluZXIge1xcbiAgYm9yZGVyLWJvdHRvbS13aWR0aDogMnB4O1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1ib3R0b20tY29sb3I6IHJnYmEodmFyKC0tbi0xMCksIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5KSk7XFxuICBtYXJnaW4tYm90dG9tOiAyNHB4O1xcbn1cXG4uZm9ybV9fY29udGFpbmVyIC5lcnJvcl9faW5wdXQge1xcbiAgYm9yZGVyLXdpZHRoOiAxcHg7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNyaW1zb24tNTApLCB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpO1xcbn1cXG4uZm9ybV9fY29udGVudCB7XFxuICBtYXJnaW4tdG9wOiAyNHB4O1xcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI0cHgpIHtcXG4uZm9ybV9fY29udGVudCB7XFxuICAgIGRpc3BsYXk6IGdyaWQ7XFxuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XFxuICAgIGdhcDogMTZweDtcXG59XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1JlZ2lzdGVyUGFnZS52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBRUU7RUFBQSxtQkFBQTtFQUFBLG9CQUFBO0VBQUEsZ0JBQUE7RUFBQSxvQkFBQTtFQUFBLGdEQUFBO0FBQUE7QUFJQTtFQUlFLGdCQUFBO0VBQ0EsWUFBQTtBQUpKO0FBQUk7QUFERjtJQUVJLGlCQUFBO0FBR0o7QUFFRTtJQUVJLFlBQUE7QUFDTjtBQUpGO0FBTU07RUFDRSxpQkFBQTtBQUNSO0FBR0k7RUFDRSxrREFBQTtBQUROO0FBR007RUFDRSxnQkFBQTtBQURSO0FBVU07RUFBQSxtQkFBQTtFQUFBLHNCQUFBO0VBQUEsb0JBQUE7RUFBQSxxQkFBQTtFQUFBLGtCQUFBO0VBQUEsb0JBQUE7QUFBQTtBQUFBO0FBQUE7SUFBQSxtQkFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUEscUJBQUE7SUFBQSxrQkFBQTtBQUFBO0FBQUE7QUFKQTtBQUNFO0lBQUEsb0JBQUE7QUFBQTtBQUNSO0FBSU07RUFDRSxtQkFBQTtFQUNBLGtCQUFBO0VBQ0EsbUJBQUE7RUFBQSxvQkFBQTtFQUFBLG9CQUFBO0VBQUEsZ0RBQUE7QUFGUjtBQUVRO0FBQUE7SUFBQSxlQUFBO0lBQUEsbUJBQUE7QUFBQTtBQUFBO0FBS0Y7RUFBQSxrQkFBQTtFQUFBLDZEQUFBO0VBQ0EsdUJBQUE7RUFDQSxZQUFBO0FBRkE7QUFJQTtFQUNFLFlBQUE7QUFKUjtBQU9NO0VBQ0UsV0FBQTtFQUNBLFVBQUE7RUFDQSxhQUFBO0VBQ0Esa0JBQUE7RUFBQSx5REFBQTtFQUNBLGtCQUFBO0VBQ0Esa0JBQUE7RUFDQSxTQUFBO0VBQ0EsUUFBQTtBQUxSO0FBUU07RUFDRSxpQkFBQTtBQU5SO0FBU007RUFDRSxrQkFBQTtFQUNBLE1BQUE7RUFDQSxVQUFBO0VBQ0EsVUFBQTtFQUNBLFlBQUE7RUFDQSxrQkFBQTtFQUFBLDhEQUFBO0VBQ0EsV0FBQTtFQUNBLGtCQUFBO0VBQ0EsVUFBQTtBQVBSO0FBY0U7RUFBQSxrQkFBQTtFQUFBLDBEQUFBO0VBQUEsZ0JBQUE7QUFBQTtBQUFBO0FBQUE7SUFBQSxvQkFBQTtJQUFBLHFCQUFBO0lBQUEsbUJBQUE7SUFBQSxzQkFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUEsa0JBQUE7SUFBQSxtQkFBQTtBQUFBO0FBQUE7QUFERjtFQUVFLDJCQUFBO0VBQ0EsOEJBQUE7RUFDQSxZQUFBO0FBVkY7QUFhSTtFQUFBLHdCQUFBO0VBQUEsc0JBQUE7RUFBQSxnRUFBQTtFQUNBLG1CQUFBO0FBREE7QUFJRTtFQUFBLGlCQUFBO0VBQUEsc0JBQUE7RUFBQSwrREFBQTtBQUFBO0FBSUo7RUFDRSxnQkFBQTtBQVpKO0FBZ0JBO0FBQ0U7SUFDRSxhQUFBO0lBQ0EscUNBQUE7SUFDQSxTQUFBO0FBYkY7QUFDRlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4ubGFiZWwge1xcbiAgQGFwcGx5IHRleHQtc20gZm9udC1ub3JtYWwgdGV4dC1uLTUwO1xcbn1cXG5cXG4uc2VjdGlvbiB7XFxuICAmX19jb250YWluZXIge1xcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMjgwcHgpIHtcXG4gICAgICBtYXgtd2lkdGg6IDEyMDZweDtcXG4gICAgfVxcbiAgICBtYXgtd2lkdGg6IDg2NXB4O1xcbiAgICBtYXJnaW46IGF1dG87XFxuXFxuICAgIC5mZWVkYmFjayB7XFxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTI4MHB4KSB7XFxuICAgICAgICB3aWR0aDogNzAycHg7XFxuICAgICAgfVxcblxcbiAgICAgIHAge1xcbiAgICAgICAgbGluZS1oZWlnaHQ6IDIycHg7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgIC5zZWN0aW9uX193cmFwcGVyIHtcXG4gICAgICBib3gtc2hhZG93OiAwcHggMjBweCA0MHB4IDIwcHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcXG5cXG4gICAgICAudmVyaWZpY2F0aW9uIHtcXG4gICAgICAgIGZvbnQtc2l6ZTogMTkwcHg7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgIC5zZWN0aW9uX190aXRsZSB7XFxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDQwcHgpIHtcXG4gICAgICAgIEBhcHBseSBsZWFkaW5nLTk7XFxuICAgICAgfVxcblxcbiAgICAgIEBhcHBseSBteS03IG14LTMgdGV4dC1jZW50ZXIgbGVhZGluZy03IHNtOmxlYWRpbmctMTAgbGc6bWItMTAgbGc6bXQtMTQ7XFxuXFxuICAgICAgcCB7XFxuICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xcbiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xcbiAgICAgICAgQGFwcGx5IHRleHQtc20gdGV4dC1uLTQwIHNtOnRleHQtYmFzZTtcXG4gICAgICB9XFxuICAgIH1cXG5cXG4gICAgLnJlZ2lzdGVyX19zaWRlYmFyIHtcXG4gICAgICBAYXBwbHkgYmctZWdnc2hlbGw7XFxuICAgICAgcGFkZGluZzogOTZweCAzMnB4IDQwcHg7XFxuICAgICAgd2lkdGg6IDM0NHB4O1xcblxcbiAgICAgIHVsIHtcXG4gICAgICAgIHdpZHRoOiAyNTNweDtcXG4gICAgICB9XFxuXFxuICAgICAgdWw6OmJlZm9yZSB7XFxuICAgICAgICBjb250ZW50OiAnJztcXG4gICAgICAgIHdpZHRoOiA0cHg7XFxuICAgICAgICBoZWlnaHQ6IDE3NXB4O1xcbiAgICAgICAgQGFwcGx5IGJnLW4tMjA7XFxuICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7XFxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgICAgICBsZWZ0OiAwcHg7XFxuICAgICAgICB0b3A6IDBweDtcXG4gICAgICB9XFxuXFxuICAgICAgLmRldGFpbCB7XFxuICAgICAgICBtYXJnaW4tbGVmdDogNDVweDtcXG4gICAgICB9XFxuXFxuICAgICAgLmxpc3RfX2FjdGl2ZTo6YWZ0ZXIge1xcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgICAgdG9wOiAwO1xcbiAgICAgICAgbGVmdDogLTFweDtcXG4gICAgICAgIHdpZHRoOiA2cHg7XFxuICAgICAgICBoZWlnaHQ6IDg1cHg7XFxuICAgICAgICBAYXBwbHkgYmctdHVycXVvaXNlO1xcbiAgICAgICAgY29udGVudDogJyc7XFxuICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7XFxuICAgICAgICB6LWluZGV4OiA1O1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcbn1cXG5cXG4uZm9ybSB7XFxuICBAYXBwbHkgYmctd2hpdGUgcC01IHNtOnB4LTEwIHNtOnB5LTEwIGxnOnB4LTIwO1xcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogOHB4O1xcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogOHB4O1xcbiAgd2lkdGg6IDg2MnB4O1xcblxcbiAgJl9fY29udGFpbmVyIHtcXG4gICAgQGFwcGx5IGJvcmRlci1iLTIgYm9yZGVyLWItbi0xMDtcXG4gICAgbWFyZ2luLWJvdHRvbTogMjRweDtcXG5cXG4gICAgLmVycm9yX19pbnB1dCB7XFxuICAgICAgQGFwcGx5IGJvcmRlciBib3JkZXItY3JpbXNvbi01MDtcXG4gICAgfVxcbiAgfVxcblxcbiAgJl9fY29udGVudCB7XFxuICAgIG1hcmdpbi10b3A6IDI0cHg7XFxuICB9XFxufVxcblxcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMjRweCkge1xcbiAgLmZvcm1fX2NvbnRlbnQge1xcbiAgICBkaXNwbGF5OiBncmlkO1xcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xcbiAgICBnYXA6IDE2cHg7XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIiNidG5bZGF0YS12LWExODYxZjNlXSB7XFxuICBwYWRkaW5nOiAxM3B4IDA7XFxufVxcbiNidG4gc3ZnW2RhdGEtdi1hMTg2MWYzZV0ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgcmlnaHQ6IDEuNzVyZW07XFxuICBmb250LXNpemU6IDEuNXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAycmVtO1xcbiAgdHJhbnNpdGlvbjogMC40cztcXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4jYnRuW2RhdGEtdi1hMTg2MWYzZV0ge1xcbiAgICBwYWRkaW5nOiAxOHB4IDA7XFxufVxcbn1cXG4udXNlcm5hbWVbZGF0YS12LWExODYxZjNlXSB7XFxuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XFxufVxcbi5wYXNzd29yZFtkYXRhLXYtYTE4NjFmM2VdIHtcXG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcXG59XFxubGFiZWxbZGF0YS12LWExODYxZjNlXSB7XFxuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XFxuICBmb250LXdlaWdodDogNzAwO1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9TaWduSW4udnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUNBO0VBQ0UsZUFBQTtBQUFGO0FBR0k7RUFBQSxrQkFBQTtFQUFBLGNBQUE7RUFBQSxpQkFBQTtFQUFBLGlCQUFBO0VBQ0EsZ0JBQUE7QUFEQTtBQUlKO0FBQ0U7SUFDRSxlQUFBO0FBQUY7QUFDRjtBQUdFO0VBQUEscUJBQUE7QUFBQTtBQUdBO0VBQUEscUJBQUE7QUFBQTtBQUdBO0VBQUEscUJBQUE7RUFBQSxnQkFBQTtBQUFBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbiNidG4ge1xcbiAgcGFkZGluZzogMTNweCAwO1xcblxcbiAgc3ZnIHtcXG4gICAgQGFwcGx5IGFic29sdXRlIHJpZ2h0LTcgdGV4dC0yeGw7XFxuICAgIHRyYW5zaXRpb246IDAuNHM7XFxuICB9XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XFxuICAjYnRuIHtcXG4gICAgcGFkZGluZzogMThweCAwO1xcbiAgfVxcbn1cXG4udXNlcm5hbWUge1xcbiAgQGFwcGx5IG1iLTI7XFxufVxcbi5wYXNzd29yZCB7XFxuICBAYXBwbHkgbWItMjtcXG59XFxubGFiZWwge1xcbiAgQGFwcGx5IG1iLTIgZm9udC1ib2xkO1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5leHBvcnQge307IiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5leHBvcnQge307IiwidmFyIG1hcCA9IHtcblx0XCIuL2FmXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hZi5qc1wiLFxuXHRcIi4vYWYuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FmLmpzXCIsXG5cdFwiLi9hclwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXIuanNcIixcblx0XCIuL2FyLWR6XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1kei5qc1wiLFxuXHRcIi4vYXItZHouanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLWR6LmpzXCIsXG5cdFwiLi9hci1rd1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXIta3cuanNcIixcblx0XCIuL2FyLWt3LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1rdy5qc1wiLFxuXHRcIi4vYXItbHlcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLWx5LmpzXCIsXG5cdFwiLi9hci1seS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItbHkuanNcIixcblx0XCIuL2FyLW1hXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1tYS5qc1wiLFxuXHRcIi4vYXItbWEuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLW1hLmpzXCIsXG5cdFwiLi9hci1zYVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItc2EuanNcIixcblx0XCIuL2FyLXNhLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1zYS5qc1wiLFxuXHRcIi4vYXItdG5cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLXRuLmpzXCIsXG5cdFwiLi9hci10bi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItdG4uanNcIixcblx0XCIuL2FyLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci5qc1wiLFxuXHRcIi4vYXpcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2F6LmpzXCIsXG5cdFwiLi9hei5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXouanNcIixcblx0XCIuL2JlXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9iZS5qc1wiLFxuXHRcIi4vYmUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JlLmpzXCIsXG5cdFwiLi9iZ1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYmcuanNcIixcblx0XCIuL2JnLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9iZy5qc1wiLFxuXHRcIi4vYm1cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JtLmpzXCIsXG5cdFwiLi9ibS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYm0uanNcIixcblx0XCIuL2JuXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ibi5qc1wiLFxuXHRcIi4vYm4tYmRcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JuLWJkLmpzXCIsXG5cdFwiLi9ibi1iZC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYm4tYmQuanNcIixcblx0XCIuL2JuLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ibi5qc1wiLFxuXHRcIi4vYm9cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JvLmpzXCIsXG5cdFwiLi9iby5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYm8uanNcIixcblx0XCIuL2JyXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ici5qc1wiLFxuXHRcIi4vYnIuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JyLmpzXCIsXG5cdFwiLi9ic1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYnMuanNcIixcblx0XCIuL2JzLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9icy5qc1wiLFxuXHRcIi4vY2FcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2NhLmpzXCIsXG5cdFwiLi9jYS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvY2EuanNcIixcblx0XCIuL2NzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9jcy5qc1wiLFxuXHRcIi4vY3MuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2NzLmpzXCIsXG5cdFwiLi9jdlwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvY3YuanNcIixcblx0XCIuL2N2LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9jdi5qc1wiLFxuXHRcIi4vY3lcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2N5LmpzXCIsXG5cdFwiLi9jeS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvY3kuanNcIixcblx0XCIuL2RhXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kYS5qc1wiLFxuXHRcIi4vZGEuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RhLmpzXCIsXG5cdFwiLi9kZVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZGUuanNcIixcblx0XCIuL2RlLWF0XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kZS1hdC5qc1wiLFxuXHRcIi4vZGUtYXQuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RlLWF0LmpzXCIsXG5cdFwiLi9kZS1jaFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZGUtY2guanNcIixcblx0XCIuL2RlLWNoLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kZS1jaC5qc1wiLFxuXHRcIi4vZGUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RlLmpzXCIsXG5cdFwiLi9kdlwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZHYuanNcIixcblx0XCIuL2R2LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kdi5qc1wiLFxuXHRcIi4vZWxcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VsLmpzXCIsXG5cdFwiLi9lbC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZWwuanNcIixcblx0XCIuL2VuLWF1XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1hdS5qc1wiLFxuXHRcIi4vZW4tYXUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWF1LmpzXCIsXG5cdFwiLi9lbi1jYVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tY2EuanNcIixcblx0XCIuL2VuLWNhLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1jYS5qc1wiLFxuXHRcIi4vZW4tZ2JcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWdiLmpzXCIsXG5cdFwiLi9lbi1nYi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tZ2IuanNcIixcblx0XCIuL2VuLWllXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1pZS5qc1wiLFxuXHRcIi4vZW4taWUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWllLmpzXCIsXG5cdFwiLi9lbi1pbFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4taWwuanNcIixcblx0XCIuL2VuLWlsLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1pbC5qc1wiLFxuXHRcIi4vZW4taW5cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWluLmpzXCIsXG5cdFwiLi9lbi1pbi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4taW4uanNcIixcblx0XCIuL2VuLW56XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1uei5qc1wiLFxuXHRcIi4vZW4tbnouanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLW56LmpzXCIsXG5cdFwiLi9lbi1zZ1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tc2cuanNcIixcblx0XCIuL2VuLXNnLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1zZy5qc1wiLFxuXHRcIi4vZW9cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VvLmpzXCIsXG5cdFwiLi9lby5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW8uanNcIixcblx0XCIuL2VzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lcy5qc1wiLFxuXHRcIi4vZXMtZG9cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VzLWRvLmpzXCIsXG5cdFwiLi9lcy1kby5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXMtZG8uanNcIixcblx0XCIuL2VzLW14XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lcy1teC5qc1wiLFxuXHRcIi4vZXMtbXguanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VzLW14LmpzXCIsXG5cdFwiLi9lcy11c1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXMtdXMuanNcIixcblx0XCIuL2VzLXVzLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lcy11cy5qc1wiLFxuXHRcIi4vZXMuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VzLmpzXCIsXG5cdFwiLi9ldFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXQuanNcIixcblx0XCIuL2V0LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ldC5qc1wiLFxuXHRcIi4vZXVcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2V1LmpzXCIsXG5cdFwiLi9ldS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXUuanNcIixcblx0XCIuL2ZhXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mYS5qc1wiLFxuXHRcIi4vZmEuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZhLmpzXCIsXG5cdFwiLi9maVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZmkuanNcIixcblx0XCIuL2ZpLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9maS5qc1wiLFxuXHRcIi4vZmlsXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9maWwuanNcIixcblx0XCIuL2ZpbC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZmlsLmpzXCIsXG5cdFwiLi9mb1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZm8uanNcIixcblx0XCIuL2ZvLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mby5qc1wiLFxuXHRcIi4vZnJcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZyLmpzXCIsXG5cdFwiLi9mci1jYVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnItY2EuanNcIixcblx0XCIuL2ZyLWNhLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mci1jYS5qc1wiLFxuXHRcIi4vZnItY2hcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZyLWNoLmpzXCIsXG5cdFwiLi9mci1jaC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnItY2guanNcIixcblx0XCIuL2ZyLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mci5qc1wiLFxuXHRcIi4vZnlcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2Z5LmpzXCIsXG5cdFwiLi9meS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnkuanNcIixcblx0XCIuL2dhXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nYS5qc1wiLFxuXHRcIi4vZ2EuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dhLmpzXCIsXG5cdFwiLi9nZFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ2QuanNcIixcblx0XCIuL2dkLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nZC5qc1wiLFxuXHRcIi4vZ2xcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dsLmpzXCIsXG5cdFwiLi9nbC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ2wuanNcIixcblx0XCIuL2dvbS1kZXZhXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nb20tZGV2YS5qc1wiLFxuXHRcIi4vZ29tLWRldmEuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dvbS1kZXZhLmpzXCIsXG5cdFwiLi9nb20tbGF0blwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ29tLWxhdG4uanNcIixcblx0XCIuL2dvbS1sYXRuLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nb20tbGF0bi5qc1wiLFxuXHRcIi4vZ3VcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2d1LmpzXCIsXG5cdFwiLi9ndS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ3UuanNcIixcblx0XCIuL2hlXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9oZS5qc1wiLFxuXHRcIi4vaGUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2hlLmpzXCIsXG5cdFwiLi9oaVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaGkuanNcIixcblx0XCIuL2hpLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9oaS5qc1wiLFxuXHRcIi4vaHJcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2hyLmpzXCIsXG5cdFwiLi9oci5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaHIuanNcIixcblx0XCIuL2h1XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9odS5qc1wiLFxuXHRcIi4vaHUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2h1LmpzXCIsXG5cdFwiLi9oeS1hbVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaHktYW0uanNcIixcblx0XCIuL2h5LWFtLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9oeS1hbS5qc1wiLFxuXHRcIi4vaWRcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2lkLmpzXCIsXG5cdFwiLi9pZC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaWQuanNcIixcblx0XCIuL2lzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9pcy5qc1wiLFxuXHRcIi4vaXMuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2lzLmpzXCIsXG5cdFwiLi9pdFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaXQuanNcIixcblx0XCIuL2l0LWNoXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9pdC1jaC5qc1wiLFxuXHRcIi4vaXQtY2guanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2l0LWNoLmpzXCIsXG5cdFwiLi9pdC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaXQuanNcIixcblx0XCIuL2phXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9qYS5qc1wiLFxuXHRcIi4vamEuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2phLmpzXCIsXG5cdFwiLi9qdlwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvanYuanNcIixcblx0XCIuL2p2LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9qdi5qc1wiLFxuXHRcIi4va2FcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2thLmpzXCIsXG5cdFwiLi9rYS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva2EuanNcIixcblx0XCIuL2trXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ray5qc1wiLFxuXHRcIi4va2suanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2trLmpzXCIsXG5cdFwiLi9rbVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva20uanNcIixcblx0XCIuL2ttLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rbS5qc1wiLFxuXHRcIi4va25cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2tuLmpzXCIsXG5cdFwiLi9rbi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva24uanNcIixcblx0XCIuL2tvXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rby5qc1wiLFxuXHRcIi4va28uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2tvLmpzXCIsXG5cdFwiLi9rdVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva3UuanNcIixcblx0XCIuL2t1LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rdS5qc1wiLFxuXHRcIi4va3lcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2t5LmpzXCIsXG5cdFwiLi9reS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva3kuanNcIixcblx0XCIuL2xiXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9sYi5qc1wiLFxuXHRcIi4vbGIuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2xiLmpzXCIsXG5cdFwiLi9sb1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbG8uanNcIixcblx0XCIuL2xvLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9sby5qc1wiLFxuXHRcIi4vbHRcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2x0LmpzXCIsXG5cdFwiLi9sdC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbHQuanNcIixcblx0XCIuL2x2XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9sdi5qc1wiLFxuXHRcIi4vbHYuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2x2LmpzXCIsXG5cdFwiLi9tZVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWUuanNcIixcblx0XCIuL21lLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tZS5qc1wiLFxuXHRcIi4vbWlcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21pLmpzXCIsXG5cdFwiLi9taS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWkuanNcIixcblx0XCIuL21rXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tay5qc1wiLFxuXHRcIi4vbWsuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21rLmpzXCIsXG5cdFwiLi9tbFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWwuanNcIixcblx0XCIuL21sLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tbC5qc1wiLFxuXHRcIi4vbW5cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21uLmpzXCIsXG5cdFwiLi9tbi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbW4uanNcIixcblx0XCIuL21yXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tci5qc1wiLFxuXHRcIi4vbXIuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21yLmpzXCIsXG5cdFwiLi9tc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXMuanNcIixcblx0XCIuL21zLW15XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tcy1teS5qc1wiLFxuXHRcIi4vbXMtbXkuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21zLW15LmpzXCIsXG5cdFwiLi9tcy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXMuanNcIixcblx0XCIuL210XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tdC5qc1wiLFxuXHRcIi4vbXQuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL210LmpzXCIsXG5cdFwiLi9teVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXkuanNcIixcblx0XCIuL215LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9teS5qc1wiLFxuXHRcIi4vbmJcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25iLmpzXCIsXG5cdFwiLi9uYi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmIuanNcIixcblx0XCIuL25lXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9uZS5qc1wiLFxuXHRcIi4vbmUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25lLmpzXCIsXG5cdFwiLi9ubFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmwuanNcIixcblx0XCIuL25sLWJlXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ubC1iZS5qc1wiLFxuXHRcIi4vbmwtYmUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25sLWJlLmpzXCIsXG5cdFwiLi9ubC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmwuanNcIixcblx0XCIuL25uXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ubi5qc1wiLFxuXHRcIi4vbm4uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25uLmpzXCIsXG5cdFwiLi9vYy1sbmNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL29jLWxuYy5qc1wiLFxuXHRcIi4vb2MtbG5jLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9vYy1sbmMuanNcIixcblx0XCIuL3BhLWluXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9wYS1pbi5qc1wiLFxuXHRcIi4vcGEtaW4uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3BhLWluLmpzXCIsXG5cdFwiLi9wbFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcGwuanNcIixcblx0XCIuL3BsLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9wbC5qc1wiLFxuXHRcIi4vcHRcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3B0LmpzXCIsXG5cdFwiLi9wdC1iclwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcHQtYnIuanNcIixcblx0XCIuL3B0LWJyLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9wdC1ici5qc1wiLFxuXHRcIi4vcHQuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3B0LmpzXCIsXG5cdFwiLi9yb1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcm8uanNcIixcblx0XCIuL3JvLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9yby5qc1wiLFxuXHRcIi4vcnVcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3J1LmpzXCIsXG5cdFwiLi9ydS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcnUuanNcIixcblx0XCIuL3NkXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zZC5qc1wiLFxuXHRcIi4vc2QuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NkLmpzXCIsXG5cdFwiLi9zZVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2UuanNcIixcblx0XCIuL3NlLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zZS5qc1wiLFxuXHRcIi4vc2lcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NpLmpzXCIsXG5cdFwiLi9zaS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2kuanNcIixcblx0XCIuL3NrXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zay5qc1wiLFxuXHRcIi4vc2suanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NrLmpzXCIsXG5cdFwiLi9zbFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2wuanNcIixcblx0XCIuL3NsLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zbC5qc1wiLFxuXHRcIi4vc3FcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NxLmpzXCIsXG5cdFwiLi9zcS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3EuanNcIixcblx0XCIuL3NyXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zci5qc1wiLFxuXHRcIi4vc3ItY3lybFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3ItY3lybC5qc1wiLFxuXHRcIi4vc3ItY3lybC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3ItY3lybC5qc1wiLFxuXHRcIi4vc3IuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NyLmpzXCIsXG5cdFwiLi9zc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3MuanNcIixcblx0XCIuL3NzLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zcy5qc1wiLFxuXHRcIi4vc3ZcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3N2LmpzXCIsXG5cdFwiLi9zdi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3YuanNcIixcblx0XCIuL3N3XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zdy5qc1wiLFxuXHRcIi4vc3cuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3N3LmpzXCIsXG5cdFwiLi90YVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGEuanNcIixcblx0XCIuL3RhLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90YS5qc1wiLFxuXHRcIi4vdGVcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RlLmpzXCIsXG5cdFwiLi90ZS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGUuanNcIixcblx0XCIuL3RldFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGV0LmpzXCIsXG5cdFwiLi90ZXQuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RldC5qc1wiLFxuXHRcIi4vdGdcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RnLmpzXCIsXG5cdFwiLi90Zy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGcuanNcIixcblx0XCIuL3RoXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90aC5qc1wiLFxuXHRcIi4vdGguanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RoLmpzXCIsXG5cdFwiLi90a1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGsuanNcIixcblx0XCIuL3RrLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90ay5qc1wiLFxuXHRcIi4vdGwtcGhcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RsLXBoLmpzXCIsXG5cdFwiLi90bC1waC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGwtcGguanNcIixcblx0XCIuL3RsaFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGxoLmpzXCIsXG5cdFwiLi90bGguanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RsaC5qc1wiLFxuXHRcIi4vdHJcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RyLmpzXCIsXG5cdFwiLi90ci5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdHIuanNcIixcblx0XCIuL3R6bFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdHpsLmpzXCIsXG5cdFwiLi90emwuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3R6bC5qc1wiLFxuXHRcIi4vdHptXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90em0uanNcIixcblx0XCIuL3R6bS1sYXRuXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90em0tbGF0bi5qc1wiLFxuXHRcIi4vdHptLWxhdG4uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3R6bS1sYXRuLmpzXCIsXG5cdFwiLi90em0uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3R6bS5qc1wiLFxuXHRcIi4vdWctY25cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3VnLWNuLmpzXCIsXG5cdFwiLi91Zy1jbi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdWctY24uanNcIixcblx0XCIuL3VrXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91ay5qc1wiLFxuXHRcIi4vdWsuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3VrLmpzXCIsXG5cdFwiLi91clwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdXIuanNcIixcblx0XCIuL3VyLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91ci5qc1wiLFxuXHRcIi4vdXpcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3V6LmpzXCIsXG5cdFwiLi91ei1sYXRuXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91ei1sYXRuLmpzXCIsXG5cdFwiLi91ei1sYXRuLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91ei1sYXRuLmpzXCIsXG5cdFwiLi91ei5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdXouanNcIixcblx0XCIuL3ZpXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS92aS5qc1wiLFxuXHRcIi4vdmkuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3ZpLmpzXCIsXG5cdFwiLi94LXBzZXVkb1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUveC1wc2V1ZG8uanNcIixcblx0XCIuL3gtcHNldWRvLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS94LXBzZXVkby5qc1wiLFxuXHRcIi4veW9cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3lvLmpzXCIsXG5cdFwiLi95by5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUveW8uanNcIixcblx0XCIuL3poLWNuXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS96aC1jbi5qc1wiLFxuXHRcIi4vemgtY24uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3poLWNuLmpzXCIsXG5cdFwiLi96aC1oa1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvemgtaGsuanNcIixcblx0XCIuL3poLWhrLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS96aC1oay5qc1wiLFxuXHRcIi4vemgtbW9cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3poLW1vLmpzXCIsXG5cdFwiLi96aC1tby5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvemgtbW8uanNcIixcblx0XCIuL3poLXR3XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS96aC10dy5qc1wiLFxuXHRcIi4vemgtdHcuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3poLXR3LmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKiRcIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMi42NjcgMi42NjZoLTEuMzMzVjJBLjY2Ni42NjYgMCAxIDAgMTAgMnYuNjY2SDZWMmEuNjY3LjY2NyAwIDAgMC0xLjMzMyAwdi42NjZIMy4zMzRhMiAyIDAgMCAwLTIgMnY4YTIgMiAwIDAgMCAyIDJoOS4zMzNhMiAyIDAgMCAwIDItMnYtOGEyIDIgMCAwIDAtMi0yWm0uNjY3IDEwYS42NjYuNjY2IDAgMCAxLS42NjcuNjY3SDMuMzMzYS42NjYuNjY2IDAgMCAxLS42NjYtLjY2N1Y4aDEwLjY2NnY0LjY2NlptMC02SDIuNjY3di0yQS42NjcuNjY3IDAgMCAxIDMuMzM0IDRoMS4zMzN2LjY2NmEuNjY3LjY2NyAwIDAgMCAxLjMzMyAwVjRoNHYuNjY2YS42NjcuNjY3IDAgMSAwIDEuMzM0IDBWNGgxLjMzM2EuNjY3LjY2NyAwIDAgMSAuNjY3LjY2NnYyWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTQgMTMuMzMzSDIuNjY3VjEyaDJhLjY2Ny42NjcgMCAwIDAgMC0xLjMzNGgtMlY5LjMzM2g0LjY2N2EuNjY3LjY2NyAwIDAgMCAwLTEuMzMzSDIuNjY3VjYuNjY2SDEwYS42NjcuNjY3IDAgMCAwIDAtMS4zMzNIMi42NjdWNGgxMGEuNjY3LjY2NyAwIDEgMCAwLTEuMzM0aC0xMFYyYS42NjcuNjY3IDAgMCAwLTEuMzMzIDB2MTJhLjY2Ny42NjcgMCAwIDAgLjY2Ni42NjZoMTJhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTggNGEuNjY3LjY2NyAwIDAgMC0uNjY3LjY2NnY2LjY2N2EuNjY3LjY2NyAwIDEgMCAxLjMzNCAwVjQuNjY2QS42NjcuNjY3IDAgMCAwIDggNFpNNC42NjcgOEEuNjY3LjY2NyAwIDAgMCA0IDguNjY2djIuNjY3YS42NjcuNjY3IDAgMSAwIDEuMzMzIDBWOC42NjZBLjY2Ny42NjcgMCAwIDAgNC42NjcgOFptNi42NjctMS4zMzRhLjY2Ny42NjcgMCAwIDAtLjY2Ny42Njd2NGEuNjY3LjY2NyAwIDAgMCAxLjMzMyAwdi00YS42NjcuNjY3IDAgMCAwLS42NjYtLjY2N1ptMS4zMzMtNS4zMzNIMy4zMzNhMiAyIDAgMCAwLTIgMnY5LjMzM2EyIDIgMCAwIDAgMiAyaDkuMzM0YTIgMiAwIDAgMCAyLTJWMy4zMzNhMiAyIDAgMCAwLTItMlptLjY2NyAxMS4zMzNhLjY2Ni42NjYgMCAwIDEtLjY2Ny42NjdIMy4zMzNhLjY2Ni42NjYgMCAwIDEtLjY2Ni0uNjY3VjMuMzMzYS42NjcuNjY3IDAgMCAxIC42NjctLjY2N2g5LjMzM2EuNjY3LjY2NyAwIDAgMSAuNjY3LjY2N3Y5LjMzM1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTUuMzM0IDcuMzM0aDUuMzMzYS42NjcuNjY3IDAgMCAwIC41MTMtLjI0Ny42NjYuNjY2IDAgMCAwIC4xNTQtLjU1M0wxMC42NjcgMy4yQS42NjcuNjY3IDAgMCAwIDEwIDIuNjY3SDZhLjY2Ny42NjcgMCAwIDAtLjY2Ni41MzNsLS42NjcgMy4zMzRhLjY2Ny42NjcgMCAwIDAgLjE0LjU1My42NjcuNjY3IDAgMCAwIC41MjcuMjQ3Wk02LjU0NyA0aDIuOTA3bC40IDJINi4xNDdsLjQtMlptOC4xMiA1LjJBLjY2Ny42NjcgMCAwIDAgMTQgOC42NjdoLTRhLjY2Ny42NjcgMCAwIDAtLjY2Ni41MzNsLS42NjcgMy4zMzRhLjY2Ny42NjcgMCAwIDAgLjE0LjU1My42NjYuNjY2IDAgMCAwIC41MjcuMjQ3aDUuMzMzYS42NjcuNjY3IDAgMCAwIC41MTMtLjI0Ny42NjYuNjY2IDAgMCAwIC4xNTQtLjU1M0wxNC42NjcgOS4yWm0tNC41MiAyLjguNC0yaDIuOTA2bC40IDJoLTMuNzA2Wk02IDguNjY4SDJhLjY2Ny42NjcgMCAwIDAtLjY2Ni41MzNsLS42NjcgMy4zMzRhLjY2Ny42NjcgMCAwIDAgLjE0LjU1My42NjYuNjY2IDAgMCAwIC41MjcuMjQ3aDUuMzMzYS42NjcuNjY3IDAgMCAwIC41MTMtLjI0Ny42NjYuNjY2IDAgMCAwIC4xNTQtLjU1M0w2LjY2NyA5LjJBLjY2Ny42NjcgMCAwIDAgNiA4LjY2N1ptLTMuODUzIDMuMzM0LjQtMmgyLjkwN2wuNCAySDIuMTQ3WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNOS4zMzQgNS4zMzNIMTBBLjY2Ny42NjcgMCAwIDAgMTAgNGgtLjY2NmEuNjY3LjY2NyAwIDAgMCAwIDEuMzMzWm0wIDIuNjY3SDEwYS42NjcuNjY3IDAgMCAwIDAtMS4zMzRoLS42NjZhLjY2Ny42NjcgMCAwIDAgMCAxLjMzNFpNNiA1LjMzM2guNjY3YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNINmEuNjY3LjY2NyAwIDEgMCAwIDEuMzMzWk02IDhoLjY2N2EuNjY3LjY2NyAwIDEgMCAwLTEuMzM0SDZBLjY2Ny42NjcgMCAwIDAgNiA4Wm04IDUuMzMzaC0uNjY2VjJhLjY2Ni42NjYgMCAwIDAtLjY2Ny0uNjY3SDMuMzMzQS42NjcuNjY3IDAgMCAwIDIuNjY3IDJ2MTEuMzMzSDJhLjY2Ni42NjYgMCAxIDAgMCAxLjMzM2gxMmEuNjY3LjY2NyAwIDAgMCAwLTEuMzMzWm0tNS4zMzMgMEg3LjMzNHYtMi42NjdoMS4zMzN2Mi42NjdabTMuMzMzIDBoLTJWMTBhLjY2Ny42NjcgMCAwIDAtLjY2Ni0uNjY3SDYuNjY3QS42NjcuNjY3IDAgMCAwIDYgMTB2My4zMzNINFYyLjY2Nmg4djEwLjY2N1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTcuMzM0IDZIMTBhLjY2Ny42NjcgMCAxIDAgMC0xLjMzM0g4LjY2N1Y0YS42NjcuNjY3IDAgMSAwLTEuMzMzIDB2LjY2N2EyIDIgMCAwIDAgMCA0aDEuMzMzYS42NjcuNjY3IDAgMCAxIDAgMS4zMzNINmEuNjY3LjY2NyAwIDAgMCAwIDEuMzM0aDEuMzM0VjEyYS42NjcuNjY3IDAgMSAwIDEuMzMzIDB2LS42NjZhMiAyIDAgMCAwIDAtNEg3LjMzNGEuNjY3LjY2NyAwIDAgMSAwLTEuMzM0Wk04IC42NjdhNy4zMzMgNy4zMzMgMCAxIDAgMCAxNC42NjdBNy4zMzMgNy4zMzMgMCAwIDAgOCAuNjY3Wk04IDE0QTYgNiAwIDEgMSA4IDJhNiA2IDAgMCAxIDAgMTJaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMy4xMiA0LjU4N2EyLjkzMyAyLjkzMyAwIDAgMC0yLjIwNi0uMjEzIDIuOTEzIDIuOTEzIDAgMCAwLTUuODIgMCAyLjk4NyAyLjk4NyAwIDAgMC0yLjIwNy4xOTNBMi45MTMgMi45MTMgMCAwIDAgMy4yOTQgOS45YTIuOTMzIDIuOTMzIDAgMCAwLS41MzQgMS42NjdjLjAwMy4xNjguMDE5LjMzNS4wNDcuNWEyLjg5MyAyLjg5MyAwIDAgMCAyLjg2IDIuNDJjLjE0Mi4wMS4yODUuMDEuNDI3IDBBMi45NDcgMi45NDcgMCAwIDAgOCAxMy4zMzRhMi45NDcgMi45NDcgMCAwIDAgMS45MDcgMS4xMjZjLjE0Mi4wMS4yODUuMDEuNDI3IDBhMi45MDcgMi45MDcgMCAwIDAgMi4zNzMtNC41OCAyLjkwNyAyLjkwNyAwIDAgMCAuNDEzLTUuMzMzdi4wNFpNNi44OTQgMy4yOTRhMS42IDEuNiAwIDAgMSAyLjIxMyAwIDEuNjIgMS42MiAwIDAgMSAuMzQ3IDEuNzczbC0uMTc0LjM5My0uNDQuMzg3QTIuNzEzIDIuNzEzIDAgMCAwIDggNS43Yy0uMzcgMC0uNzM1LjA3OC0xLjA3My4yMjdsLS4zNzMtLjg2YTEuNTkzIDEuNTkzIDAgMCAxIC4zNC0xLjc3M1ptLTQuMDY3IDQuNTZBMS41OCAxLjU4IDAgMCAxIDUuMjk0IDZsLjMyNi4yODcuMjM0LjUzM2EyLjYxMyAyLjYxMyAwIDAgMC0uNTIgMS41NDcgMS45IDEuOSAwIDAgMCAwIC4zaC0uMzY3bC0uNTYuMDUzYTEuNTggMS41OCAwIDAgMS0xLjU4LS44NjZabTQuNCA0LjA1M2ExLjU4NyAxLjU4NyAwIDAgMS0zLjEwNy0uMDUzIDIuMDQ3IDIuMDQ3IDAgMCAxIDAtLjI4IDEuNTUzIDEuNTUzIDAgMCAxIC43OC0xLjMzNGwuMzQtLjI0LjYwNy0uMDY2Yy4zODIuNTMyLjk0Ny45MDQgMS41ODcgMS4wNDZsLS4yMDcuOTI3Wk04IDkuN2ExLjMzMyAxLjMzMyAwIDEgMSAwLTIuNjY2QTEuMzMzIDEuMzMzIDAgMCAxIDggOS43Wm0zLjg4IDIuMTQ3YTEuNTczIDEuNTczIDAgMCAxLTEuNzg2IDEuMjkzIDEuNTkzIDEuNTkzIDAgMCAxLTEuMzM0LTEuMjMzbC0uMDkzLS40LjE0LS42MTNhMi42NjcgMi42NjcgMCAwIDAgMS40NjctMS4xNzRsLjMzMy4yaC4wNmwuNDQuMjZhMS41ODcgMS41ODcgMCAwIDEgLjc3MyAxLjY2N1ptMS4yOTQtNGExLjU5NCAxLjU5NCAwIDAgMS0xLjQyLjg4N2gtLjE2bC0uNDI3LS4wNjctLjUtLjI3M2MwLS42NDktLjIzOC0xLjI3NC0uNjY3LTEuNzZsLjI4Ny0uMjQ3LjQyLS4zODdhMS41OCAxLjU4IDAgMCAxIDIuNDY3IDEuODh2LS4wMzNaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMy4zMzQgNS45NmEuODguODggMCAwIDAtLjA0LS4xOHYtLjA2YS43MTYuNzE2IDAgMCAwLS4xMjctLjE4N2wtNC00YS43MTMuNzEzIDAgMCAwLS4xODctLjEyN2gtLjA2YS41ODcuNTg3IDAgMCAwLS4yMi0uMDczSDQuNjY3YTIgMiAwIDAgMC0yIDJ2OS4zMzNhMiAyIDAgMCAwIDIgMmg2LjY2N2EyIDIgMCAwIDAgMi0yVjUuOTZabS00LTIuMzU0IDEuNzI2IDEuNzI3SDEwYS42NjcuNjY3IDAgMCAxLS42NjYtLjY2N3YtMS4wNlpNMTIgMTIuNjY2YS42NjcuNjY3IDAgMCAxLS42NjYuNjY3SDQuNjY3QS42NjYuNjY2IDAgMCAxIDQgMTIuNjY2VjMuMzMzYS42NjcuNjY3IDAgMCAxIC42NjctLjY2N0g4djJhMiAyIDAgMCAwIDIgMmgydjZaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMi45NiA4LjY2NmMtLjE0NyAwLS4zLS4wNDYtLjQ0Ny0uMDhhNi4yOSA2LjI5IDAgMCAxLS44NzMtLjI2IDEuMzMzIDEuMzMzIDAgMCAwLTEuNjUzLjY2N2wtLjE0Ny4zQTguMTIgOC4xMiAwIDAgMSA4LjA2NyA3Ljk2YTguMTIgOC4xMiAwIDAgMS0xLjMzNC0xLjc3NEw3LjAxMyA2YTEuMzMzIDEuMzMzIDAgMCAwIC42NjctMS42NTQgNi44ODcgNi44ODcgMCAwIDEtLjI2LS44NzNjLS4wMzMtLjE0Ny0uMDYtLjMtLjA4LS40NTNhMiAyIDAgMCAwLTItMS42NmgtMmEyIDIgMCAwIDAtMiAyLjI3MyAxMi42NjcgMTIuNjY3IDAgMCAwIDExLjAxMyAxMC45NzNoLjI1NGEyIDIgMCAwIDAgMS44MjctMS4xODUgMiAyIDAgMCAwIC4xNzMtLjgyMXYtMmEyIDIgMCAwIDAtMS42NDctMS45MzRabS4zMzMgNGEuNjY2LjY2NiAwIDAgMS0uNDgyLjY0MS43MDcuNzA3IDAgMCAxLS4yOS4wMjZBMTEuMzMzIDExLjMzMyAwIDAgMSAyLjcxMiAzLjQ4YS43MjcuNzI3IDAgMCAxIC4xNjctLjU0Ny42NjcuNjY3IDAgMCAxIC41LS4yMjdoMmEuNjY3LjY2NyAwIDAgMSAuNjY3LjUyNyA3LjQxNCA3LjQxNCAwIDAgMCAuNDA3IDEuNTczbC0uOTM0LjQzNGEuNjY3LjY2NyAwIDAgMC0uMzI3Ljg4NiA5LjY2IDkuNjYgMCAwIDAgNC42NjcgNC42NjcuNjY2LjY2NiAwIDAgMCAuNTA3IDAgLjY2NS42NjUgMCAwIDAgLjM4LS4zNDdsLjQxMy0uOTMzYy4zNDUuMTIzLjY5Ny4yMjYgMS4wNTMuMzA3LjE3OC4wNC4zNTguMDczLjU0LjFhLjY2Ny42NjcgMCAwIDEgLjUyNy42NjZsLjAxMyAyLjA4WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTQuMTQ2IDhhMiAyIDAgMCAwIC41Mi0xLjMzMyAyIDIgMCAwIDAtMi0ySDkuMjEzQTIgMiAwIDAgMCA3LjMzMyAyaC00YTIgMiAwIDAgMC0yIDIgMiAyIDAgMCAwIC41MiAxLjMzMyAyIDIgMCAwIDAgMCAyLjY2NyAyIDIgMCAwIDAgMCAyLjY2N0EyIDIgMCAwIDAgMS4zMzMgMTJhMiAyIDAgMCAwIDIgMmg5LjMzM2EyIDIgMCAwIDAgMS40OC0zLjMzMyAyIDIgMCAwIDAgMC0yLjY2N1ptLTYuODEzIDQuNjY3aC00YS42NjcuNjY3IDAgMCAxIDAtMS4zMzRoNGEuNjY3LjY2NyAwIDAgMSAwIDEuMzM0Wm0wLTIuNjY3aC00YS42NjcuNjY3IDAgMCAxIDAtMS4zMzNoNGEuNjY3LjY2NyAwIDAgMSAwIDEuMzMzWm0wLTIuNjY3aC00YS42NjcuNjY3IDAgMSAxIDAtMS4zMzNoNGEuNjY3LjY2NyAwIDAgMSAwIDEuMzMzWm0wLTIuNjY2aC00YS42NjcuNjY3IDAgMCAxIDAtMS4zMzRoNGEuNjY3LjY2NyAwIDEgMSAwIDEuMzM0Wm01Ljc5MyA3LjgwNmEuNjIuNjIgMCAwIDEtLjQ2LjE5NEg5LjIxM2MuMTYtLjQzLjE2LS45MDQgMC0xLjMzNGgzLjQ1M2EuNjY3LjY2NyAwIDAgMSAuNjY3LjY2Ny42NjYuNjY2IDAgMCAxLS4yMDcuNDczWm0wLTIuNjY2YS42Mi42MiAwIDAgMS0uNDYuMTkzSDkuMjEzYy4xNi0uNDMuMTYtLjkwMyAwLTEuMzMzaDMuNDUzYS42NjYuNjY2IDAgMCAxIC42NjcuNjY2LjY2Ni42NjYgMCAwIDEtLjIwNy40NzRabTAtMi42NjdhLjYyLjYyIDAgMCAxLS40Ni4xOTNIOS4yMTNjLjE2LS40My4xNi0uOTAzIDAtMS4zMzNoMy40NTNhLjY2Ni42NjYgMCAwIDEgLjY2Ny42NjcuNjY2LjY2NiAwIDAgMS0uMjA3LjQ3M1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTkuMzMzIDUuMzMzSDEwQS42NjcuNjY3IDAgMSAwIDEwIDRoLS42NjdhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM1ptMCAyLjY2N0gxMGEuNjY3LjY2NyAwIDEgMCAwLTEuMzM0aC0uNjY3YS42NjcuNjY3IDAgMCAwIDAgMS4zMzRaTTYgNS4zMzNoLjY2NmEuNjY3LjY2NyAwIDAgMCAwLTEuMzMzSDZhLjY2Ny42NjcgMCAxIDAgMCAxLjMzM1pNNiA4aC42NjZhLjY2Ny42NjcgMCAxIDAgMC0xLjMzNEg2QS42NjcuNjY3IDAgMCAwIDYgOFptOCA1LjMzM2gtLjY2N1YyYS42NjYuNjY2IDAgMCAwLS42NjctLjY2N0gzLjMzM0EuNjY3LjY2NyAwIDAgMCAyLjY2NiAydjExLjMzM0gyYS42NjYuNjY2IDAgMSAwIDAgMS4zMzNoMTJhLjY2Ny42NjcgMCAxIDAgMC0xLjMzM1ptLTUuMzM0IDBINy4zMzN2LTIuNjY3aDEuMzMzdjIuNjY3Wm0zLjMzNCAwaC0yVjEwYS42NjcuNjY3IDAgMCAwLS42NjctLjY2N0g2LjY2NkEuNjY3LjY2NyAwIDAgMCA2IDEwdjMuMzMzSDRWMi42NjZoOHYxMC42NjdaXFxcIiBmaWxsPVxcXCIjQTZCNUJBXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTMuMzM0LjY2N0gyLjY2N2EyIDIgMCAwIDAtMiAydjEwLjY2N2EyIDIgMCAwIDAgMiAyaDEwLjY2N2EyIDIgMCAwIDAgMi0yVjIuNjY3YTIgMiAwIDAgMC0yLTJaTTUuMzM0IDE0SDIuNjY3QS42NjcuNjY3IDAgMCAxIDIgMTMuMzM0di0uNzg3YTIgMiAwIDAgMCAuNjY3LjEyaDIuNjY3VjE0Wm0wLTIuNjY2SDIuNjY3QS42NjcuNjY3IDAgMCAxIDIgMTAuNjY3VjkuODhhMiAyIDAgMCAwIC42NjcuMTJoMi42Njd2MS4zMzRabTAtMi42NjdIMi42NjdBLjY2Ny42NjcgMCAwIDEgMiA4VjIuNjY3QS42NjcuNjY3IDAgMCAxIDIuNjY3IDJoMi42Njd2Ni42NjdabTQgNS4zMzNINi42Njd2LTRoMi42Njd2NFptMC01LjMzM0g2LjY2N1YyaDIuNjY3djYuNjY3Wk0xNCAxMy4zMzRhLjY2Ny42NjcgMCAwIDEtLjY2Ni42NjZoLTIuNjY3di0xLjMzM2gyLjY2N2EyIDIgMCAwIDAgLjY2Ni0uMTJ2Ljc4N1ptMC0yLjY2N2EuNjY3LjY2NyAwIDAgMS0uNjY2LjY2N2gtMi42NjdWMTBoMi42NjdBMiAyIDAgMCAwIDE0IDkuODh2Ljc4N1pNMTQgOGEuNjY3LjY2NyAwIDAgMS0uNjY2LjY2N2gtMi42NjdWMmgyLjY2N2EuNjY3LjY2NyAwIDAgMSAuNjY2LjY2N1Y4Wm0tMi0zLjMzM2EuNjY3LjY2NyAwIDEgMCAwIDEuMzM0LjY2Ny42NjcgMCAwIDAgMC0xLjMzNFpNNCA2YS42NjcuNjY3IDAgMSAwIDAtMS4zMzNBLjY2Ny42NjcgMCAwIDAgNCA2WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNNCA3LjMzM2EuNjY3LjY2NyAwIDEgMCAwIDEuMzMzLjY2Ny42NjcgMCAwIDAgMC0xLjMzM1ptOCAwYS42NjcuNjY3IDAgMSAwIDAgMS4zMzQuNjY3LjY2NyAwIDAgMCAwLTEuMzM0Wm0xLjMzNC00SDIuNjY3YTIgMiAwIDAgMC0yIDJ2NS4zMzNhMiAyIDAgMCAwIDIgMmgxMC42NjdhMiAyIDAgMCAwIDItMlY1LjMzM2EyIDIgMCAwIDAtMi0yWk0xNCAxMC42NjZhLjY2Ny42NjcgMCAwIDEtLjY2Ni42NjdIMi42NjdBLjY2Ni42NjYgMCAwIDEgMiAxMC42NjZWNS4zMzNhLjY2Ny42NjcgMCAwIDEgLjY2Ny0uNjY3aDEwLjY2N2EuNjY3LjY2NyAwIDAgMSAuNjY2LjY2N3Y1LjMzM1pNOCA2YTIgMiAwIDEgMCAwIDQgMiAyIDAgMCAwIDAtNFptMCAyLjY2NmEuNjY3LjY2NyAwIDEgMSAwLTEuMzMzLjY2Ny42NjcgMCAwIDEgMCAxLjMzM1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTExLjMzMyA0YS42NjcuNjY3IDAgMCAwLS42NjcuNjY2djUuMDZMNS4xNCA0LjE5M2EuNjcuNjcgMCAwIDAtLjk0Ny45NDdsNS41MzMgNS41MjZoLTUuMDZhLjY2Ny42NjcgMCAxIDAgMCAxLjMzNGg2LjY2N2EuNjY3LjY2NyAwIDAgMCAuNjY3LS42NjdWNC42NjZBLjY2Ni42NjYgMCAwIDAgMTEuMzMzIDRaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk02IDYuNjY2aC42NjdhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM0g2YS42NjcuNjY3IDAgMCAwIDAgMS4zMzNaTTYgOGEuNjY3LjY2NyAwIDAgMCAwIDEuMzMzaDRBLjY2Ny42NjcgMCAwIDAgMTAgOEg2Wm03LjMzMy0yLjA0YS44OC44OCAwIDAgMC0uMDQtLjE4di0uMDZhLjcxNC43MTQgMCAwIDAtLjEyNy0uMTg3bC00LTRhLjcxMy43MTMgMCAwIDAtLjE4Ni0uMTI3LjIxMy4yMTMgMCAwIDAtLjA2IDAgLjU4Ny41ODcgMCAwIDAtLjIyLS4wNzNINC42NjdhMiAyIDAgMCAwLTIgMnY5LjMzM2EyIDIgMCAwIDAgMiAyaDYuNjY2YTIgMiAwIDAgMCAyLTJWNS45NlptLTQtMi4zNTQgMS43MjcgMS43MjdIMTBhLjY2Ny42NjcgMCAwIDEtLjY2Ny0uNjY3di0xLjA2Wk0xMiAxMi42NjZhLjY2Ny42NjcgMCAwIDEtLjY2Ny42NjdINC42NjZBLjY2Ni42NjYgMCAwIDEgNCAxMi42NjZWMy4zMzNhLjY2Ny42NjcgMCAwIDEgLjY2Ny0uNjY3SDh2MmEyIDIgMCAwIDAgMiAyaDJ2NlptLTItMkg2QS42NjcuNjY3IDAgMCAwIDYgMTJoNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzM0WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJtNi42NjYgMTEuNy0xLjE4IDEuMTQ3YTEuNjUgMS42NSAwIDAgMS0yLjMzMy0yLjMzM0w2LjE4IDcuNDhhMS42NCAxLjY0IDAgMCAxIDIuMjYtLjA2bC4wOC4wNjdhLjY2Ny42NjcgMCAwIDAgLjkzMy0uOTUzIDEuODM2IDEuODM2IDAgMCAwLS4xMi0uMTQgMi45NzMgMi45NzMgMCAwIDAtNC4wNi4xNDZMMi4yMDYgOS41NzRhMi45ODcgMi45ODcgMCAwIDAgNC4yMiA0LjIybDEuMTU0LTEuMTI3YS42NjcuNjY3IDAgMCAwLS45MTQtLjk2N1ptNy4xMjctOS40OTNhMi45OTMgMi45OTMgMCAwIDAtNC4yMiAwTDguNDIgMy4zMzRhLjY2Ny42NjcgMCAwIDAgLjkxMy45NjZsMS4xNTMtMS4xNDZhMS42NSAxLjY1IDAgMCAxIDIuMzM0IDIuMzMzTDkuNzkzIDguNTJhMS42NCAxLjY0IDAgMCAxLTIuMjYuMDZsLS4wOC0uMDY2YS42NjcuNjY3IDAgMCAwLS45MzMuOTUzIDIuOTggMi45OCAwIDAgMCA0LjIxMy0uMDA3bDMuMDMzLTMuMDMzYTIuOTkzIDIuOTkzIDAgMCAwIC4wMjctNC4yMlpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTkuMzMzIDcuMzM0aC0uNjY2di0uNjY3YS42NjcuNjY3IDAgMSAwLTEuMzM0IDB2LjY2N2gtLjY2NmEuNjY3LjY2NyAwIDAgMCAwIDEuMzMzaC42NjZ2LjY2N2EuNjY3LjY2NyAwIDAgMCAxLjMzNCAwdi0uNjY3aC42NjZhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM1ptNC4xMDctNEE0LjE5NCA0LjE5NCAwIDAgMCA4IDIuOTRhNC4xOCA0LjE4IDAgMCAwLTUuNDQgNi4zMmw0IDQuMDM0YTIgMiAwIDAgMCAyLjgyNyAwbDQtNC4wMzRhNC4xOCA0LjE4IDAgMCAwIC4wNTMtNS45MjZabS0uOTQgNC45NzMtNCA0YS42NjYuNjY2IDAgMCAxLS45NDcgMGwtNC00YTIuODYgMi44NiAwIDAgMSAwLTQgMi44NDcgMi44NDcgMCAwIDEgNCAwIC42NjcuNjY3IDAgMCAwIC45NDcgMCAyLjg0NyAyLjg0NyAwIDAgMSA0IDAgMi44NiAyLjg2IDAgMCAxIDAgNC4wMTN2LS4wMTNaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0zLjMzMyA1LjMzM2g5LjMzNGEuNjY3LjY2NyAwIDEgMCAwLTEuMzMzSDMuMzMzYS42NjcuNjY3IDAgMCAwIDAgMS4zMzNabTEwLjY2NyAySDJhLjY2Ny42NjcgMCAxIDAgMCAxLjMzNGgxMmEuNjY3LjY2NyAwIDAgMCAwLTEuMzM0Wm0tMS4zMzMgMy4zMzRIMy4zMzNhLjY2Ny42NjcgMCAxIDAgMCAxLjMzM2g5LjMzNGEuNjY2LjY2NiAwIDEgMCAwLTEuMzMzWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTAuNjY3IDkuMzMzSDUuMzMzYS42NjcuNjY3IDAgMCAwIDAgMS4zMzNoNS4zMzRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM1ptMC0yLjY2N2gtNGEuNjY3LjY2NyAwIDAgMCAwIDEuMzM0aDRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzNFptMi42NjYtNGgtMlYyQS42NjcuNjY3IDAgMSAwIDEwIDJ2LjY2Nkg4LjY2N1YyYS42NjcuNjY3IDAgMSAwLTEuMzM0IDB2LjY2Nkg2VjJhLjY2Ny42NjcgMCAwIDAtMS4zMzMgMHYuNjY2aC0yQS42NjcuNjY3IDAgMCAwIDIgMy4zMzN2OS4zMzNhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWMy4zMzNhLjY2Ni42NjYgMCAwIDAtLjY2Ny0uNjY3Wm0tLjY2NiAxMGEuNjY3LjY2NyAwIDAgMS0uNjY3LjY2N0g0YS42NjYuNjY2IDAgMCAxLS42NjctLjY2N1Y0aDEuMzM0di42NjZhLjY2Ny42NjcgMCAxIDAgMS4zMzMgMFY0aDEuMzMzdi42NjZhLjY2Ny42NjcgMCAwIDAgMS4zMzQgMFY0SDEwdi42NjZhLjY2Ni42NjYgMCAxIDAgMS4zMzMgMFY0aDEuMzM0djguNjY2WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTMuMDg3IDIuNDMzYS42NjcuNjY3IDAgMCAwLS41Ni0uMTMzIDUuMzMzIDUuMzMzIDAgMCAxLTQuMTQ3LS44NDcuNjY3LjY2NyAwIDAgMC0uNzYgMCA1LjMzMyA1LjMzMyAwIDAgMS00LjE0Ni44NDcuNjY3LjY2NyAwIDAgMC0uODA3LjY1M1Y3LjkyYTYgNiAwIDAgMCAyLjUxMyA0Ljg4NmwyLjQzNCAxLjczNGEuNjY3LjY2NyAwIDAgMCAuNzczIDBsMi40MzMtMS43MzRhNiA2IDAgMCAwIDIuNTE0LTQuODg2VjIuOTUzYS42NjcuNjY3IDAgMCAwLS4yNDctLjUyWk0xMiA3LjkyYTQuNjY2IDQuNjY2IDAgMCAxLTEuOTUzIDMuOEw4IDEzLjE4bC0yLjA0Ni0xLjQ2QTQuNjY3IDQuNjY3IDAgMCAxIDQgNy45MnYtNC4yYTYuNjY3IDYuNjY3IDAgMCAwIDQtLjkyNyA2LjY2NyA2LjY2NyAwIDAgMCA0IC45Mjd2NC4yWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNNy4zMzMgNy45MzN2My40YS42NjcuNjY3IDAgMSAwIDEuMzM0IDB2LTMuNGEzLjMzMyAzLjMzMyAwIDEgMC0xLjMzNCAwWk04IDIuNjY3YTIgMiAwIDEgMSAwIDQgMiAyIDAgMCAxIDAtNFptMi44MDcgNi45NDZhLjY4MS42ODEgMCAwIDAtLjI4IDEuMzM0YzEuNTEzLjMgMi4xNC44NCAyLjE0IDEuMDUzIDAgLjM4Ny0xLjYzNCAxLjMzMy00LjY2NyAxLjMzM1MzLjMzMyAxMi4zODcgMy4zMzMgMTJjMC0uMjEzLjYyNy0uNzUzIDIuMTQtMS4wOGEuNjgxLjY4MSAwIDAgMC0uMjgtMS4zMzNDMy4xNjcgMTAuMDUzIDIgMTAuOTI3IDIgMTJjMCAxLjc1MyAzLjAyIDIuNjY3IDYgMi42NjdzNi0uOTE0IDYtMi42NjdjMC0xLjA3My0xLjE2Ny0xLjk0Ny0zLjE5My0yLjM4N1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTIgMy4zMzNoMTJjLjQgMCAuNjY3LS4yNjYuNjY3LS42NjZTMTQuNCAyIDE0IDJIMmMtLjQgMC0uNjY3LjI2Ny0uNjY3LjY2N3MuMjY3LjY2Ni42NjcuNjY2Wm0xMiA5LjMzNEg3LjMzM2MtLjQgMC0uNjY2LjI2Ni0uNjY2LjY2NnMuMjY3LjY2Ny42NjcuNjY3SDE0Yy40IDAgLjY2Ny0uMjY3LjY2Ny0uNjY3cy0uMjY3LS42NjYtLjY2Ny0uNjY2Wm0wLTUuMzM0SDJjLS40IDAtLjY2Ny4yNjctLjY2Ny42NjdzLjI2Ny42NjcuNjY3LjY2N2gxMmMuNCAwIC42NjctLjI2Ny42NjctLjY2N1MxNC40IDcuMzMzIDE0IDcuMzMzWk0xNCAxMEgyYy0uNCAwLS42NjcuMjY3LS42NjcuNjY3cy4yNjcuNjY2LjY2Ny42NjZoMTJjLjQgMCAuNjY3LS4yNjYuNjY3LS42NjZTMTQuNCAxMCAxNCAxMFptMC01LjMzM0gyYy0uNCAwLS42NjcuMjY2LS42NjcuNjY2UzEuNiA2IDIgNmgxMmMuNCAwIC42NjctLjI2Ny42NjctLjY2N1MxNC40IDQuNjY3IDE0IDQuNjY3WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJtMTMuMzMzIDUuMzMzLTQtMy41MDZhMiAyIDAgMCAwLTIuNjY2IDBsLTQgMy41MDZBMiAyIDAgMCAwIDIgNi44NHY1LjgyN2EyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlY2LjgzM2EyIDIgMCAwIDAtLjY2Ny0xLjVabS00IDhINi42NjdWMTBhLjY2Ny42NjcgMCAwIDEgLjY2Ni0uNjY3aDEuMzM0YS42NjcuNjY3IDAgMCAxIC42NjYuNjY3djMuMzMzWm0zLjMzNC0uNjY2YS42NjcuNjY3IDAgMCAxLS42NjcuNjY2aC0xLjMzM1YxMGEyIDIgMCAwIDAtMi0ySDcuMzMzYTIgMiAwIDAgMC0yIDJ2My4zMzNINGEuNjY3LjY2NyAwIDAgMS0uNjY3LS42NjZWNi44MzNhLjY2Ny42NjcgMCAwIDEgLjIyNy0uNWw0LTMuNWEuNjY3LjY2NyAwIDAgMSAuODggMGw0IDMuNWEuNjY3LjY2NyAwIDAgMSAuMjI3LjV2NS44MzRaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMC42NjcgOS4zMzNINS4zMzNhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM2g1LjMzNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzMzWm0wLTIuNjY3aC00YS42NjcuNjY3IDAgMCAwIDAgMS4zMzRoNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzM0Wm0yLjY2Ni00aC0yVjJBLjY2Ny42NjcgMCAxIDAgMTAgMnYuNjY2SDguNjY3VjJhLjY2Ny42NjcgMCAxIDAtMS4zMzQgMHYuNjY2SDZWMmEuNjY3LjY2NyAwIDAgMC0xLjMzMyAwdi42NjZoLTJBLjY2Ny42NjcgMCAwIDAgMiAzLjMzM3Y5LjMzM2EyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYzLjMzM2EuNjY2LjY2NiAwIDAgMC0uNjY3LS42NjdabS0uNjY2IDEwYS42NjcuNjY3IDAgMCAxLS42NjcuNjY3SDRhLjY2Ni42NjYgMCAwIDEtLjY2Ny0uNjY3VjRoMS4zMzR2LjY2NmEuNjY3LjY2NyAwIDEgMCAxLjMzMyAwVjRoMS4zMzN2LjY2NmEuNjY3LjY2NyAwIDAgMCAxLjMzNCAwVjRIMTB2LjY2NmEuNjY2LjY2NiAwIDEgMCAxLjMzMyAwVjRoMS4zMzR2OC42NjZaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE3XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk04IDguNWEyIDIgMCAxIDAgMCA0IDIgMiAwIDAgMCAwLTRabTAgMi42NjZhLjY2Ny42NjcgMCAxIDEgMC0xLjMzNC42NjcuNjY3IDAgMCAxIDAgMS4zMzRabS0uNDczLTQuMTkzYy4wNjMuMDYuMTM4LjEwOC4yMi4xNGEuNjI3LjYyNyAwIDAgMCAuNTA3IDAgLjY2Ny42NjcgMCAwIDAgLjIyLS4xNEwxMCA1LjQ3M2EuNjg4LjY4OCAwIDEgMC0uOTczLS45NzNsLS4zNi4zOTNWMi41YS42NjcuNjY3IDAgMCAwLTEuMzMzIDB2Mi4zOTNsLS4zNi0uMzkzQS42ODguNjg4IDAgMCAwIDYgNS40NzNsMS41MjcgMS41Wm01LjE0IDMuNTI3YS42NjYuNjY2IDAgMSAwLTEuMzMyIDAgLjY2Ni42NjYgMCAwIDAgMS4zMzIgMFptLjY2Ny00LjY2N2gtMmEuNjY2LjY2NiAwIDEgMCAwIDEuMzMzaDJhLjY2Ny42NjcgMCAwIDEgLjY2Ni42Njd2NS4zMzNhLjY2Ny42NjcgMCAwIDEtLjY2Ni42NjdIMi42NjdBLjY2Ni42NjYgMCAwIDEgMiAxMy4xNjZWNy44MzNhLjY2Ny42NjcgMCAwIDEgLjY2Ny0uNjY3aDJhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM2gtMmEyIDIgMCAwIDAtMiAydjUuMzMzYTIgMiAwIDAgMCAyIDJoMTAuNjY3YTIgMiAwIDAgMCAyLTJWNy44MzNhMiAyIDAgMCAwLTItMlptLTEwIDQuNjY3YS42NjcuNjY3IDAgMSAwIDEuMzM0IDAgLjY2Ny42NjcgMCAwIDAtMS4zMzQgMFpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTYgNi42NjZoLjY2N2EuNjY3LjY2NyAwIDAgMCAwLTEuMzMzSDZhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM1pNMTAgOEg2YS42NjcuNjY3IDAgMSAwIDAgMS4zMzNoNEEuNjY3LjY2NyAwIDEgMCAxMCA4Wm0wIDIuNjY2SDZBLjY2Ny42NjcgMCAwIDAgNiAxMmg0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzRabTMuMTQgMi44NmExLjA4NSAxLjA4NSAwIDAgMC0uMS0uMDguNTA3LjUwNyAwIDAgMC0uMTItLjA2bC0uMTItLjA1M2EuNjY3LjY2NyAwIDAgMC0uMzg2LjA0LjU5OS41OTkgMCAwIDAtLjM2LjM2QS41Ni41NiAwIDAgMCAxMiAxNGEuNjY4LjY2OCAwIDEgMCAxLjI4LS4yNTQuNzY2Ljc2NiAwIDAgMC0uMTQtLjIyWm0uMTk0LTcuNTY2YS44OC44OCAwIDAgMC0uMDQtLjE4di0uMDZhLjcxNi43MTYgMCAwIDAtLjEyNy0uMTg3bC00LTRhLjcxMy43MTMgMCAwIDAtLjE4Ny0uMTI3LjIxMy4yMTMgMCAwIDAtLjA2IDAgLjU4Ny41ODcgMCAwIDAtLjIyLS4wNzNINC42NjdhMiAyIDAgMCAwLTIgMnY5LjMzM2EyIDIgMCAwIDAgMiAySDEwYS42NjcuNjY3IDAgMSAwIDAtMS4zMzNINC42NjdBLjY2Ni42NjYgMCAwIDEgNCAxMi42NjZWMy4zMzNhLjY2Ny42NjcgMCAwIDEgLjY2Ny0uNjY3SDh2MmEyIDIgMCAwIDAgMiAyaDJWOGEuNjY3LjY2NyAwIDAgMCAxLjMzNCAwVjUuOTZaTTEwIDUuMzMzYS42NjcuNjY3IDAgMCAxLS42NjYtLjY2N3YtMS4wNmwxLjcyNiAxLjcyN0gxMFpNMTIuNjY3IDEwYS42NjcuNjY3IDAgMCAwLS42NjcuNjY2VjEyYS42NjcuNjY3IDAgMCAwIDEuMzM0IDB2LTEuMzM0YS42NjcuNjY3IDAgMCAwLS42NjctLjY2NlpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwibTE0LjIxMyAzLjM2Ny00LTEuMzMzaC0uMDQ2YS40NjYuNDY2IDAgMCAwLS4wOTQgMGgtLjI4Nkw2IDMuMzM0bC0zLjc4Ny0xLjNhLjY2Ny42NjcgMCAwIDAtLjYuMDkzLjY2Ny42NjcgMCAwIDAtLjI4LjU0VjEyYS42NjYuNjY2IDAgMCAwIC40NTQuNjMzbDQgMS4zMzRhLjY2Ny42NjcgMCAwIDAgLjQxMyAwTDEwIDEyLjdsMy43ODcgMS4zYy4wNy4wMS4xNDIuMDEuMjEzIDBhLjYyNi42MjYgMCAwIDAgLjM4Ny0uMTI3LjY2Ni42NjYgMCAwIDAgLjI4LS41NFY0YS42NjcuNjY3IDAgMCAwLS40NTQtLjYzM1ptLTguODggOS4wNC0yLjY2Ni0uODg3VjMuNTk0bDIuNjY3Ljg4NnY3LjkyN1ptNC0uODg3LTIuNjY2Ljg4N1Y0LjQ4bDIuNjY3LS44ODZ2Ny45MjZabTQgLjg4Ny0yLjY2Ni0uODg3VjMuNTk0bDIuNjY3Ljg4NnY3LjkyN1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEzLjY0IDYuNDJhNS42NjYgNS42NjYgMCAwIDAtOC43NzMtNC4xOEE1LjcwNyA1LjcwNyAwIDAgMCAyLjM2IDYuNDIgNS42NCA1LjY0IDAgMCAwIDQgMTAuOTczbDMuNTMzIDMuNTRhLjY2Ni42NjYgMCAwIDAgLjk0NyAwbDMuNTItMy41NGE1LjYzOCA1LjYzOCAwIDAgMCAxLjY0LTQuNTUzWm0tMi41NzMgMy42MTNMOCAxMy4xbC0zLjA2Ny0zLjA2N2E0LjMyNyA0LjMyNyAwIDAgMS0xLjI0Ni0zLjQ4IDQuMzggNC4zOCAwIDAgMSAxLjkyNi0zLjIyQTQuMzEzIDQuMzEzIDAgMCAxIDExLjcxIDQuNzJjLjMzNC41NTUuNTQgMS4xNzYuNjA0IDEuODJhNC4zMjYgNC4zMjYgMCAwIDEtMS4yNDYgMy40OTNaTTggNGEzIDMgMCAxIDAgMyAzIDMuMDA3IDMuMDA3IDAgMCAwLTMtM1ptMCA0LjY2NmExLjY2NyAxLjY2NyAwIDEgMSAwLTMuMzMzIDEuNjY3IDEuNjY3IDAgMCAxIDAgMy4zMzNaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk00LjY2NyAxMC42NjZhMSAxIDAgMCAwIDEtMSAuNTE0LjUxNCAwIDAgMCAwLS4xbDEuODYtMS44NmguMzA2TDguOTA3IDguNzh2LjA1M2ExIDEgMCAxIDAgMiAwVjguNzhsMi40MjYtMi40NDdhMSAxIDAgMSAwLTEtMSAuNTIyLjUyMiAwIDAgMCAwIC4xTDkuOTI3IDcuODRIOS44Mkw4LjY2NyA2LjY2NmExIDEgMCAwIDAtMiAwbC0yIDJhMSAxIDAgMCAwIDAgMlptOSAyLjY2N0gyLjMzM1YyQS42NjcuNjY3IDAgMSAwIDEgMnYxMmEuNjY3LjY2NyAwIDAgMCAuNjY3LjY2NmgxMmEuNjY3LjY2NyAwIDAgMCAwLTEuMzMzWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDEyIDE1XFxcIj48cGF0aCBkPVxcXCJtNi4xNCAxMC43NDIuMDIuMDU4LjAwNy4wMXYuMDM2YS4wNi4wNiAwIDAgMS0uMDA2LjAyN2wtLjAxLjAyMi0uMDA4LjAyMWEuMS4xIDAgMCAxLS4wNi4wNmwtLjAyMi4wMDgtLjAyMS4wMWEuMDYuMDYgMCAwIDEtLjAyNy4wMDZoLS4wMDZhLjE2Ni4xNjYgMCAwIDEtLjEwNi0uMDQuMjY2LjI2NiAwIDAgMS0uMDQtLjA2NmwtLjAwNC0uMDEtLjAwNS0uMDFhLjA2LjA2IDAgMCAxLS4wMDUtLjAyOHYtLjAyM2wtLjAwMS0uMDIzLS4wMDEtLjAxOC4wMDMtLjAwNy4wMTItLjAzM2EuNTc2LjU3NiAwIDAgMSAuMDIzLS4wMy4xNjYuMTY2IDAgMCAxIC4wNDQtLjAyNmwuMDE0LS4wMDVhLjE2Ny4xNjcgMCAwIDEgLjA5Ni0uMDFsLjA5NC0uNDkxLS4wOTQuNDlhLjE2Ni4xNjYgMCAwIDEgLjA3Ny4wMzhjLjAwOS4wMS4wMTguMDIyLjAyNi4wMzRabS42OTMtOS4zMzUgMy45NjMgMy45NjMuMDIzLjA3YS4zNy4zNyAwIDAgMSAuMDE0LjA1NHY2LjY3M2ExLjUgMS41IDAgMCAxLTEuNSAxLjVIMi42NjdhMS41IDEuNSAwIDAgMS0xLjA2MS0uNDRsLS4zNDguMzQ4LjM0OC0uMzQ4YTEuNSAxLjUgMCAwIDEtLjQ0LTEuMDZWMi44MzNhMS41IDEuNSAwIDAgMSAxLjUtMS41aDMuOTlsLjAxNS4wMDcuMTE2LjA2N2guMDQ2Wm0uODU0IDEuMzQ2TDYuODMzIDEuOXYyLjI2N0ExLjE2NyAxLjE2NyAwIDAgMCA4IDUuMzMzaDIuMjY3bC0uODUzLS44NTMtMS43MjctMS43MjdaTTYuNSAyLjE2N3YtLjVIMi42NjdBMS4xNjcgMS4xNjcgMCAwIDAgMS41IDIuODMzdjkuMzM0YTEuMTY3IDEuMTY3IDAgMCAwIDEuMTY3IDEuMTY2aDYuNjY2YTEuMTY3IDEuMTY3IDAgMCAwIDEuMTY3LTEuMTY2di02LjVIOGExLjUgMS41IDAgMCAxLTEuNS0xLjV2LTJabS0uNjE4IDUuMjE1YS4xNjcuMTY3IDAgMCAxIC4yODUuMTE4djEuMzMzYS4xNjcuMTY3IDAgMCAxLS4zMzQgMFY3LjVjMC0uMDQ0LjAxOC0uMDg3LjA1LS4xMThaXFxcIiBmaWxsPVxcXCJDdXJyZW50Q29sb3JcXFwiIHN0cm9rZT1cXFwiQ3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTMuMDg3IDIuNDMzYS42NjcuNjY3IDAgMCAwLS41Ni0uMTMzIDUuMzMzIDUuMzMzIDAgMCAxLTQuMTQ3LS44NDcuNjY3LjY2NyAwIDAgMC0uNzYgMCA1LjMzMyA1LjMzMyAwIDAgMS00LjE0Ni44NDcuNjY3LjY2NyAwIDAgMC0uODA3LjY1M1Y3LjkyYTYgNiAwIDAgMCAyLjUxMyA0Ljg4NmwyLjQzNCAxLjczNGEuNjY3LjY2NyAwIDAgMCAuNzczIDBsMi40MzMtMS43MzRhNiA2IDAgMCAwIDIuNTE0LTQuODg2VjIuOTUzYS42NjcuNjY3IDAgMCAwLS4yNDctLjUyWk0xMiA3LjkyYTQuNjY2IDQuNjY2IDAgMCAxLTEuOTUzIDMuOEw4IDEzLjE4bC0yLjA0Ni0xLjQ2QTQuNjY3IDQuNjY3IDAgMCAxIDQgNy45MnYtNC4yYTYuNjY3IDYuNjY3IDAgMCAwIDQtLjkyNyA2LjY2NyA2LjY2NyAwIDAgMCA0IC45Mjd2NC4yWk05LjAyNyA2LjM5M2wtMS43OTMgMS44LS41OTQtLjZhLjY3LjY3IDAgMCAwLS45NDYuOTQ3TDYuNzYgOS42MDZhLjY2Ny42NjcgMCAwIDAgLjk0NyAwTDEwIDcuMzMzYS42Ny42NyAwIDEgMC0uOTQ2LS45NDdsLS4wMjcuMDA3WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAyMCAyMFxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMy42MzQgMTcuOWEuNS41IDAgMCAxLS41MjQuMDQ3bC0uMTQ5LjI5Ny4xNDktLjI5N2EuNS41IDAgMCAxLS4yMDItLjE4NGwtLjI4My4xNzQuMjgzLS4xNzRhLjUuNSAwIDAgMS0uMDc1LS4yNjN2LTE1YS41LjUgMCAwIDEgLjUtLjVoMTMuMzM0YS41LjUgMCAwIDEgLjUuNXYxNC45OTlhLjUuNSAwIDAgMS0uMjc1LjQ0NWgtLjAwMWEuNS41IDAgMCAxLS41MjUtLjA0NWwtMS43MjQtMS4yOS0uMi0uMTUtLjIuMTUtMS43MTcgMS4yOTFhLjUuNSAwIDAgMS0uNiAwTDEwLjIgMTYuNjA4bC0uMi0uMTUtLjIuMTVMOC4wNzUgMTcuOWEuNS41IDAgMCAxLS42IDBsLTEuNzE2LTEuMjkxLS4yLS4xNS0uMi4xNS0xLjcyNSAxLjI5Wm0xMi0xLjguNTMzLjM5OVYzSDMuODMzdjEzLjQ5OWwuNTMzLS4zOTkuODkyLS42NjZhLjUuNSAwIDAgMSAuNiAwbDEuNzE3IDEuMjkuMi4xNTEuMi0uMTVMOS43IDE1LjQzM2EuNS41IDAgMCAxIC42IDBsMS43MjUgMS4yOTIuMi4xNS4yLS4xNSAxLjcxNy0xLjI5MmEuNS41IDAgMCAxIC42IDBsLjg5Mi42NjdabS0yLjMtOS43NjdoLTVhLjUuNSAwIDAgMSAwLTFoNWEuNS41IDAgMCAxIDAgMVptMCAzLjMzNEg2LjY2NmEuNS41IDAgMCAxIDAtMWg2LjY2NmEuNS41IDAgMCAxIDAgMVptMCAzLjMzM0g2LjY2NmEuNS41IDAgMCAxIDAtMWg2LjY2NmEuNS41IDAgMSAxIDAgMVpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjY2N1xcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTggNy4yYTEuMzMzIDEuMzMzIDAgMSAwIDAtMi42NjdBMS4zMzMgMS4zMzMgMCAwIDAgOCA3LjJabS0uNDczIDQuNjA2YS42NjYuNjY2IDAgMCAwIC45NDYgMEwxMS4yIDkuMDczYTQuNTI3IDQuNTI3IDAgMSAwLTYuNCAwbDIuNzI3IDIuNzMzWk00LjgyIDUuNTZhMy4yMDcgMy4yMDcgMCAwIDEgMS40Mi0yLjM2NyAzLjIwNyAzLjIwNyAwIDAgMSAzLjUyIDAgMy4yMTMgMy4yMTMgMCAwIDEgLjUgNC45NEw4IDEwLjM5M2wtMi4yNi0yLjI2YTMuMTggMy4xOCAwIDAgMS0uOTItMi41NzNabTcuODQ2IDcuNzczSDMuMzMzYS42NjcuNjY3IDAgMSAwIDAgMS4zMzNoOS4zMzRhLjY2Ni42NjYgMCAxIDAgMC0xLjMzM1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTQuNjY2IDRhLjY2Ny42NjcgMCAxIDAgMCAxLjMzMy42NjcuNjY3IDAgMCAwIDAtMS4zMzNabTkuODA3IDMuODUzLTYuMzItNi4zMDdhLjY2Ny42NjcgMCAwIDAtLjQ4Ny0uMjEzaC00YS42NjcuNjY3IDAgMCAwLS40NzMuMTkzbC0xLjY2NyAxLjY2YS42NjcuNjY3IDAgMCAwLS4xOTMuNDc0djRhLjcuNyAwIDAgMCAuMTkzLjQ3M2w2LjMyNyA2LjMzM2EuNy43IDAgMCAwIC40NzMuMTk0LjY2Ni42NjYgMCAwIDAgLjQ3NC0uMTk0bDUuNjczLTUuNjczYS42NjcuNjY3IDAgMCAwIDAtLjk0Wk04LjMyNiAxMy4wNmwtNS42Ni01LjY2N3YtMy40NmwxLjI2Ny0xLjI2N2gzLjQ1M2w1LjY2NyA1LjY2LTQuNzI3IDQuNzM0WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTAuNjY3IDkuMzMzSDUuMzMzYS42NjcuNjY3IDAgMCAwIDAgMS4zMzNoNS4zMzRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM1ptMC0yLjY2N2gtNGEuNjY3LjY2NyAwIDAgMCAwIDEuMzM0aDRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzNFptMi42NjYtNGgtMlYyQS42NjcuNjY3IDAgMSAwIDEwIDJ2LjY2Nkg4LjY2N1YyYS42NjcuNjY3IDAgMSAwLTEuMzM0IDB2LjY2Nkg2VjJhLjY2Ny42NjcgMCAwIDAtMS4zMzMgMHYuNjY2aC0yQS42NjcuNjY3IDAgMCAwIDIgMy4zMzN2OS4zMzNhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWMy4zMzNhLjY2Ni42NjYgMCAwIDAtLjY2Ny0uNjY3Wm0tLjY2NiAxMGEuNjY3LjY2NyAwIDAgMS0uNjY3LjY2N0g0YS42NjYuNjY2IDAgMCAxLS42NjctLjY2N1Y0aDEuMzM0di42NjZhLjY2Ny42NjcgMCAxIDAgMS4zMzMgMFY0aDEuMzMzdi42NjZhLjY2Ny42NjcgMCAwIDAgMS4zMzQgMFY0SDEwdi42NjZhLjY2Ni42NjYgMCAxIDAgMS4zMzMgMFY0aDEuMzM0djguNjY2WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNNi42NjcgNS4zMzNoNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzMzaC00YS42NjcuNjY3IDAgMCAwIDAgMS4zMzNaTTUuMzMzIDhoNS4zMzRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzNEg1LjMzM2EuNjY3LjY2NyAwIDAgMCAwIDEuMzM0Wm0wIDIuNjY2aDUuMzM0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNINS4zMzNhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM1ptOC05LjMzM0gyLjY2N0EuNjY3LjY2NyAwIDAgMCAyIDJ2MTJhLjY2Ny42NjcgMCAwIDAgMS4wNjcuNTMzbDEuMzgtMS4wMzMgMS4zNzMgMS4wMzNhLjY2Ni42NjYgMCAwIDAgLjggMEw4IDEzLjVsMS4zOCAxLjAzM2EuNjY2LjY2NiAwIDAgMCAuOCAwbDEuMzczLTEuMDMzIDEuMzggMS4wMzNBLjY2Ny42NjcgMCAwIDAgMTQgMTRWMmEuNjY2LjY2NiAwIDAgMC0uNjY3LS42NjdabS0uNjY2IDExLjMzMy0uNzE0LS41MzNhLjY2Ny42NjcgMCAwIDAtLjggMEw5Ljc4IDEzLjE2NiA4LjQgMTIuMTMzYS42NjcuNjY3IDAgMCAwLS44IDBsLTEuMzggMS4wMzMtMS4zNzMtMS4wMzNhLjY2Ny42NjcgMCAwIDAtLjggMGwtLjcxNC41MzN2LTEwaDkuMzM0djEwWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxOCAxOFxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cmVjdCB3aWR0aD1cXFwiMThcXFwiIGhlaWdodD1cXFwiMThcXFwiIHJ4PVxcXCI5XFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48cGF0aCBkPVxcXCJNMiA5YTcgNyAwIDEgMSAxNCAwQTcgNyAwIDEgMSAyIDlaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48cGF0aCBkPVxcXCJNMTMuMDgzIDguNDE2aC0zLjV2LTMuNWEuNTgzLjU4MyAwIDAgMC0xLjE2NyAwdjMuNWgtMy41YS41ODMuNTgzIDAgMCAwIDAgMS4xNjdoMy41djMuNWEuNTgzLjU4MyAwIDAgMCAxLjE2NyAwdi0zLjVoMy41YS41ODMuNTgzIDAgMCAwIDAtMS4xNjdaXFxcIiBmaWxsPVxcXCIjZmZmXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNyAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTIuOTM1IDcuMzMzaC00di00YS42NjcuNjY3IDAgMSAwLTEuMzMzIDB2NGgtNGEuNjY3LjY2NyAwIDAgMCAwIDEuMzM0aDR2NGEuNjY3LjY2NyAwIDEgMCAxLjMzNCAwdi00aDRhLjY2Ny42NjcgMCAxIDAgMC0xLjMzNFpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMjAgMjBcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEwIDVhMSAxIDAgMCAwLTEgMXY0YTEgMSAwIDEgMCAyIDBWNmExIDEgMCAwIDAtMS0xWm0uOTIgOC42MmEuNzU4Ljc1OCAwIDAgMC0uMDktLjE4bC0uMTItLjE1YS45OTkuOTk5IDAgMCAwLTEuMDktLjIxIDEuMTUgMS4xNSAwIDAgMC0uMzMuMjEgMSAxIDAgMCAwLS4yMSAxLjA5LjkuOSAwIDAgMCAuNTQuNTQuOTQuOTQgMCAwIDAgLjc2IDAgLjkuOSAwIDAgMCAuNTQtLjU0Yy4wNTEtLjEyLjA3OC0uMjUuMDgtLjM4YTEuMzYyIDEuMzYyIDAgMCAwIDAtLjIuNjM5LjYzOSAwIDAgMC0uMDgtLjE4Wk0xMCAwYTEwIDEwIDAgMSAwIDAgMjAgMTAgMTAgMCAwIDAgMC0yMFptMCAxOGE4IDggMCAxIDEgMC0xNiA4IDggMCAwIDEgMCAxNlpcXFwiIGZpbGw9XFxcIiNGNkMzOThcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDIxIDIwXFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMC40NjQgMS42NjdDNS44OCAxLjY2NyAyLjEzIDUuNDE3IDIuMTMgMTBjMCA0LjU4NCAzLjc1IDguMzM0IDguMzMzIDguMzM0czguMzMzLTMuNzUgOC4zMzMtOC4zMzRjMC00LjU4My0zLjc1LTguMzMzLTguMzMzLTguMzMzWm0wIDEyLjVjLS41IDAtLjgzMy0uMzMzLS44MzMtLjgzMyAwLS41LjMzMy0uODM0LjgzMy0uODM0LjUgMCAuODMzLjMzNC44MzMuODM0IDAgLjUtLjMzMy44MzMtLjgzMy44MzNaTTExLjI5NyAxMGMwIC41LS4zMzMuODM0LS44MzMuODM0LS41IDAtLjgzMy0uMzM0LS44MzMtLjgzNFY2LjY2N2MwLS41LjMzMy0uODMzLjgzMy0uODMzLjUgMCAuODMzLjMzMy44MzMuODMzVjEwWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMy4zMzMgNS4zMzNoOS4zMzRhLjY2Ny42NjcgMCAxIDAgMC0xLjMzM0gzLjMzM2EuNjY3LjY2NyAwIDAgMCAwIDEuMzMzWm0xMC42NjcgMkgyYS42NjcuNjY3IDAgMSAwIDAgMS4zMzRoMTJhLjY2Ny42NjcgMCAwIDAgMC0xLjMzNFptLTEuMzMzIDMuMzM0SDMuMzMzYS42NjcuNjY3IDAgMSAwIDAgMS4zMzNoOS4zMzRhLjY2Ni42NjYgMCAxIDAgMC0xLjMzM1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTIgMy4zMzNoMTJjLjQgMCAuNjY3LS4yNjYuNjY3LS42NjZTMTQuNCAyIDE0IDJIMmMtLjQgMC0uNjY3LjI2Ny0uNjY3LjY2N3MuMjY3LjY2Ni42NjcuNjY2Wm0xMiA5LjMzNEg3LjMzM2MtLjQgMC0uNjY2LjI2Ni0uNjY2LjY2NnMuMjY3LjY2Ny42NjcuNjY3SDE0Yy40IDAgLjY2Ny0uMjY3LjY2Ny0uNjY3cy0uMjY3LS42NjYtLjY2Ny0uNjY2Wm0wLTUuMzM0SDJjLS40IDAtLjY2Ny4yNjctLjY2Ny42NjdzLjI2Ny42NjcuNjY3LjY2N2gxMmMuNCAwIC42NjctLjI2Ny42NjctLjY2N1MxNC40IDcuMzMzIDE0IDcuMzMzWk0xNCAxMEgyYy0uNCAwLS42NjcuMjY3LS42NjcuNjY3cy4yNjcuNjY2LjY2Ny42NjZoMTJjLjQgMCAuNjY3LS4yNjYuNjY3LS42NjZTMTQuNCAxMCAxNCAxMFptMC01LjMzM0gyYy0uNCAwLS42NjcuMjY2LS42NjcuNjY2UzEuNiA2IDIgNmgxMmMuNCAwIC42NjctLjI2Ny42NjctLjY2N1MxNC40IDQuNjY3IDE0IDQuNjY3WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIj48cGF0aCBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIGQ9XFxcIm05LjUyNyA5LjQ2LTIuMTk0IDIuMTk0LS44Ni0uODZhLjY2OC42NjggMCAxIDAtLjk0Ni45NGwxLjMzMyAxLjMzM2EuNjY2LjY2NiAwIDAgMCAuOTQ3IDBsMi42NjYtMi42NjdhLjY2Ny42NjcgMCAxIDAtLjk0Ni0uOTRabTIuNzUzLTMuOTEzYTQuNjY3IDQuNjY3IDAgMCAwLTguOTA3IDEuMjY3IDIuNjY3IDIuNjY3IDAgMCAwLS4yNTMgNS4xLjY2OC42NjggMCAxIDAgLjQyNy0xLjI0NyAxLjMzMyAxLjMzMyAwIDAgMS0uODgtMS4yNjdBMS4zMzMgMS4zMzMgMCAwIDEgNCA4LjA2N2EuNjY3LjY2NyAwIDAgMCAuNjY3LS42NjcgMy4zMzMgMy4zMzMgMCAwIDEgNi40ODYtMS4wNjYuNjY4LjY2OCAwIDAgMCAuNTIuNDQgMiAyIDAgMCAxIC4xNiAzLjg5M0EuNjcyLjY3MiAwIDEgMCAxMiAxMmguMTY3YTMuMzMzIDMuMzMzIDAgMCAwIC4xMTMtNi40MTN2LS4wNFpcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDIwIDIwXFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xNC4xNjcgNy42NGEuODM0LjgzNCAwIDAgMC0xLjE3NSAwTDEwIDEwLjU5IDcuMDUgNy42NGEuODMzLjgzMyAwIDEgMC0xLjE3NSAxLjE4NGwzLjUzNCAzLjUzM2EuODMzLjgzMyAwIDAgMCAxLjE4MyAwbDMuNTc1LTMuNTMzYS44MzMuODMzIDAgMCAwIDAtMS4xODNaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDggMTJcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTggMS4wNTQgNi44MDUgMCAwIDZsNi44MDUgNkw4IDEwLjk0NyAyLjM5IDYgOCAxLjA1NFpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgOCAxMlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMCAxLjA1NCAxLjE5NSAwIDggNmwtNi44MDUgNkwwIDEwLjk0NyA1LjYxIDYgMCAxLjA1NFpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAxOFxcXCI+PHBhdGggZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIiBkPVxcXCJNNC4zMTEgNy40MyAzLjc0IDhoMTAuOTI2YTEgMSAwIDAgMSAwIDJIMy43NGwuNTcxLjU2OSA0LjQgNC4zODdhLjk5OS45OTkgMCAwIDEgMCAxLjQybC0uMDAxLjAwMmExLjAwMSAxLjAwMSAwIDAgMS0xLjQyIDBoLS4wMDFMLjYyNSA5LjcxMmExIDEgMCAwIDEtLjIwOC0uMzI3TC40MTUgOS4zOGExIDEgMCAwIDEgMC0uNzZsLjAwMi0uMDA3YTEgMSAwIDAgMSAuMjA4LS4zMjdsNi42NjQtNi42NjRBMS4wMDUgMS4wMDUgMCAxIDEgOC43MSAzLjA0NEw0LjMxIDcuNDNaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE3IDE2XFxcIj48cGF0aCBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIGQ9XFxcIk01Ljk1NSAxMC4zMzNoNC42N2wtMi4zMzYgMi4yNTMtMi4zMzQtMi4yNTNabTEuODQ0IDMuMTk0Yy4yNy4yNi43MDQuMjYuOTc0IDBsMy4xNy0zLjA2Yy40MzYtLjQxNC4xMzItMS4xMzQtLjQ4My0xLjEzNEg1LjEyNmMtLjYxNSAwLS45MjYuNzItLjQ5IDEuMTRsMy4xNjMgMy4wNTNabS0yLjY4LTYuODZoNi4zNDFjLjYxNSAwIC45MjYtLjcyLjQ5LTEuMTRsLTMuMTctMy4wNmEuNzA2LjcwNiAwIDAgMC0uOTc0IDBsLTMuMTcgMy4wNmMtLjQzNi40Mi0uMTMyIDEuMTQuNDgzIDEuMTRaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAyMCAyMFxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMy42MzQgMTcuOWEuNS41IDAgMCAxLS41MjQuMDQ3bC0uMTQ5LjI5Ny4xNDktLjI5N2EuNS41IDAgMCAxLS4yMDItLjE4NGwtLjI4My4xNzQuMjgzLS4xNzRhLjUuNSAwIDAgMS0uMDc1LS4yNjN2LTE1YS41LjUgMCAwIDEgLjUtLjVoMTMuMzM0YS41LjUgMCAwIDEgLjUuNXYxNC45OTlhLjUuNSAwIDAgMS0uMjc1LjQ0NWgtLjAwMWEuNS41IDAgMCAxLS41MjUtLjA0NWwtMS43MjQtMS4yOS0uMi0uMTUtLjIuMTUtMS43MTcgMS4yOTFhLjUuNSAwIDAgMS0uNiAwTDEwLjIgMTYuNjA4bC0uMi0uMTUtLjIuMTVMOC4wNzUgMTcuOWEuNS41IDAgMCAxLS42IDBsLTEuNzE2LTEuMjkxLS4yLS4xNS0uMi4xNS0xLjcyNSAxLjI5Wm0xMi0xLjguNTMzLjM5OVYzSDMuODMzdjEzLjQ5OWwuNTMzLS4zOTkuODkyLS42NjZhLjUuNSAwIDAgMSAuNiAwbDEuNzE3IDEuMjkuMi4xNTEuMi0uMTVMOS43IDE1LjQzM2EuNS41IDAgMCAxIC42IDBsMS43MjUgMS4yOTIuMi4xNS4yLS4xNSAxLjcxNy0xLjI5MmEuNS41IDAgMCAxIC42IDBsLjg5Mi42NjdabS0yLjMtOS43NjdoLTVhLjUuNSAwIDAgMSAwLTFoNWEuNS41IDAgMCAxIDAgMVptMCAzLjMzNEg2LjY2NmEuNS41IDAgMCAxIDAtMWg2LjY2NmEuNS41IDAgMCAxIDAgMVptMCAzLjMzM0g2LjY2NmEuNS41IDAgMCAxIDAtMWg2LjY2NmEuNS41IDAgMSAxIDAgMVpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjY2N1xcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEzLjY0NyA0LjkxM1Y0Ljg2bC0uMDQtLjFhLjQ2Ni40NjYgMCAwIDAtLjA0Ny0uMDYuNjIzLjYyMyAwIDAgMC0uMDYtLjA4bC0uMDYtLjA0Ny0uMTA3LS4wNTMtNS0zLjA4N2EuNjY3LjY2NyAwIDAgMC0uNzA2IDBMMi42NjcgNC41MmwtLjA2LjA1My0uMDYuMDQ3YS42MjcuNjI3IDAgMCAwLS4wNi4wOC40NzMuNDczIDAgMCAwLS4wNDcuMDZsLS4wNC4xdi4wNTNhLjc2Ny43NjcgMCAwIDAgMCAuMTc0djUuODI2YS42NjcuNjY3IDAgMCAwIC4zMTMuNTY3bDUgMy4wODdjLjAzMS4wMTkuMDY1LjAzMi4xLjA0aC4wNTRhLjU3NC41NzQgMCAwIDAgLjM0NiAwaC4wNTRhLjMxNC4zMTQgMCAwIDAgLjEtLjA0bDQuOTY2LTMuMDg3YS42NjguNjY4IDAgMCAwIC4zMTQtLjU2N1Y1LjA4N2EuNzYxLjc2MSAwIDAgMCAwLS4xNzRabS02LjMxNCA3Ljg5NEwzLjY2NyAxMC41NFY2LjI4N2wzLjY2NiAyLjI2djQuMjZaTTggNy4zOTMgNC4yNjcgNS4wODcgOCAyLjc4N2wzLjczMyAyLjNMOCA3LjM5M1ptNC4zMzMgMy4xNDctMy42NjYgMi4yNjd2LTQuMjZsMy42NjYtMi4yNnY0LjI1M1pcXFwiIGZpbGw9XFxcIiNBNjZFRTlcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk01LjMzNCA3LjMzNGg1LjMzM2EuNjY3LjY2NyAwIDAgMCAuNTEzLS4yNDcuNjY2LjY2NiAwIDAgMCAuMTU0LS41NTNMMTAuNjY3IDMuMkEuNjY3LjY2NyAwIDAgMCAxMCAyLjY2N0g2YS42NjcuNjY3IDAgMCAwLS42NjYuNTMzbC0uNjY3IDMuMzM0YS42NjcuNjY3IDAgMCAwIC4xNC41NTMuNjY3LjY2NyAwIDAgMCAuNTI3LjI0N1pNNi41NDcgNGgyLjkwN2wuNCAySDYuMTQ3bC40LTJabTguMTIgNS4yQS42NjcuNjY3IDAgMCAwIDE0IDguNjY3aC00YS42NjcuNjY3IDAgMCAwLS42NjYuNTMzbC0uNjY3IDMuMzM0YS42NjcuNjY3IDAgMCAwIC4xNC41NTMuNjY2LjY2NiAwIDAgMCAuNTI3LjI0N2g1LjMzM2EuNjY3LjY2NyAwIDAgMCAuNTEzLS4yNDcuNjY2LjY2NiAwIDAgMCAuMTU0LS41NTNMMTQuNjY3IDkuMlptLTQuNTIgMi44LjQtMmgyLjkwNmwuNCAyaC0zLjcwNlpNNiA4LjY2OEgyYS42NjcuNjY3IDAgMCAwLS42NjYuNTMzbC0uNjY3IDMuMzM0YS42NjcuNjY3IDAgMCAwIC4xNC41NTMuNjY2LjY2NiAwIDAgMCAuNTI3LjI0N2g1LjMzM2EuNjY3LjY2NyAwIDAgMCAuNTEzLS4yNDcuNjY2LjY2NiAwIDAgMCAuMTU0LS41NTNMNi42NjcgOS4yQS42NjcuNjY3IDAgMCAwIDYgOC42NjdabS0zLjg1MyAzLjMzNC40LTJoMi45MDdsLjQgMkgyLjE0N1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTkuMzM0IDUuMzMzSDEwQS42NjcuNjY3IDAgMCAwIDEwIDRoLS42NjZhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM1ptMCAyLjY2N0gxMGEuNjY3LjY2NyAwIDAgMCAwLTEuMzM0aC0uNjY2YS42NjcuNjY3IDAgMCAwIDAgMS4zMzRaTTYgNS4zMzNoLjY2N2EuNjY3LjY2NyAwIDAgMCAwLTEuMzMzSDZhLjY2Ny42NjcgMCAxIDAgMCAxLjMzM1pNNiA4aC42NjdhLjY2Ny42NjcgMCAxIDAgMC0xLjMzNEg2QS42NjcuNjY3IDAgMCAwIDYgOFptOCA1LjMzM2gtLjY2NlYyYS42NjYuNjY2IDAgMCAwLS42NjctLjY2N0gzLjMzM0EuNjY3LjY2NyAwIDAgMCAyLjY2NyAydjExLjMzM0gyYS42NjYuNjY2IDAgMSAwIDAgMS4zMzNoMTJhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM1ptLTUuMzMzIDBINy4zMzR2LTIuNjY3aDEuMzMzdjIuNjY3Wm0zLjMzMyAwaC0yVjEwYS42NjcuNjY3IDAgMCAwLS42NjYtLjY2N0g2LjY2N0EuNjY3LjY2NyAwIDAgMCA2IDEwdjMuMzMzSDRWMi42NjZoOHYxMC42NjdaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTcgMTZcXFwiPjxwYXRoIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIGQ9XFxcIm0xMi4zMjIgNS42OC4wOTIuMjEyLjIyMS4wNjdhMi44MzQgMi44MzQgMCAwIDEtLjA5NCA1LjQ1LjE2OC4xNjggMCAwIDEtLjA4My0uMzI1bC4wMDgtLjAwMmEyLjUgMi41IDAgMCAwLS4yLTQuODY2bC0uMDA4LS4wMDJhLjE2Ny4xNjcgMCAwIDEtLjEzLS4xMTJsLS4wMDItLjAwNGEzLjgzNCAzLjgzNCAwIDAgMC03LjQ2IDEuMjM1LjE2Ny4xNjcgMCAwIDEtLjE2Ni4xNjcgMS44MzMgMS44MzMgMCAxIDAgMCAzLjY2Ny4xNjcuMTY3IDAgMCAxIDAgLjMzM2gtLjAwMWEyLjE2NyAyLjE2NyAwIDAgMS0uNTEtNC4yNzNsLjMzNi0uMDguMDQ0LS4zNDJhNC4xNjcgNC4xNjcgMCAwIDEgNy45NTMtMS4xMjVabS0yLjM3IDQuMTk5LjAwMi4wMDNhLjE2Ny4xNjcgMCAwIDEgMCAuMjM3bC0uODY2Ljg2LS4zNTguMzU1LjM1OC4zNTQuODY2Ljg2YS4xNjcuMTY3IDAgMCAxIDAgLjIzN2wtLjAwMi4wMDNhLjE2Ni4xNjYgMCAwIDEtLjE4My4wMzcuMTY2LjE2NiAwIDAgMS0uMDU0LS4wMzdsLS44Ni0uODY3LS4zNTUtLjM1Ny0uMzU1LjM1Ny0uODYuODY3YS4xNjYuMTY2IDAgMCAxLS4xODMuMDM3LjE2Ni4xNjYgMCAwIDEtLjA1NC0uMDM3bC0uMDAzLS4wMDNhLjE2Ny4xNjcgMCAwIDEgMC0uMjM2bC44NjctLjg2LjM1OC0uMzU1LS4zNTgtLjM1NS0uODY1LS44NTlhLjE3LjE3IDAgMCAxIC4yNC0uMjRsLjg1OC44NjYuMzU1LjM1Ny4zNTUtLjM1Ny44Ni0uODY3YS4xNjcuMTY3IDAgMCAxIC4yMzcgMFpcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTQgMTRcXFwiPjxwYXRoIGZpbGw9XFxcIiMyQTJGMzBcXFwiIGQ9XFxcIm04LjQxIDcgNC4zLTQuMjlhMS4wMDQgMS4wMDQgMCAwIDAtMS40Mi0xLjQyTDcgNS41OWwtNC4yOS00LjNhMS4wMDQgMS4wMDQgMCAxIDAtMS40MiAxLjQyTDUuNTkgN2wtNC4zIDQuMjlhLjk5OS45OTkgMCAwIDAgMCAxLjQyIDEgMSAwIDAgMCAxLjQyIDBMNyA4LjQxbDQuMjkgNC4zYTEuMDAxIDEuMDAxIDAgMCAwIDEuNjM5LS4zMjUgMSAxIDAgMCAwLS4yMi0xLjA5NUw4LjQxIDdaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDE0IDE0XFxcIj48cGF0aCBkPVxcXCJNNyAuMzMyYy0zLjY2NyAwLTYuNjY3IDMtNi42NjcgNi42NjcgMCAzLjY2NiAzIDYuNjY2IDYuNjY3IDYuNjY2IDMuNjY2IDAgNi42NjYtMyA2LjY2Ni02LjY2NiAwLTMuNjY3LTMtNi42NjctNi42NjYtNi42NjdabTIuOCA1LjUzMy0zLjIgMy4yYS42NDQuNjQ0IDAgMCAxLS45MzQgMEw0LjIgNy42YS42NDQuNjQ0IDAgMCAxIDAtLjkzNC42NDQuNjQ0IDAgMCAxIC45MzMgMGwxIDEgMi43MzMtMi43MzNhLjY0NC42NDQgMCAwIDEgLjkzNCAwIC42NDUuNjQ1IDAgMCAxIDAgLjkzM1pcXFwiIGZpbGw9XFxcIiMxNzk5N0JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjAgMjBcXFwiPjxwYXRoIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIGQ9XFxcIk0xNy4xNjcgMy4zMzR2LS41aC0xMXYxMWgxMXYtMTAuNVpNOC4yMDQgOC43NWwuNDYzLS40NjYgMS4zNyAxLjM3Ni4zNTUuMzU3LjM1NC0uMzU3IDMuOTItMy45NS40NjMuNDY1LTQuNzM3IDQuNzhMOC4yMDQgOC43NVptLTUuMzcgNy45MTZ2LjVIMTQuNXYuNjY3SDMuMzMzYy0uNjQgMC0xLjE2Ni0uNTI2LTEuMTY2LTEuMTY3VjUuNWguNjY2djExLjE2N1ptMy44MzMtMTQuNWgxMGMuNjQgMCAxLjE2Ni41MjYgMS4xNjYgMS4xNjd2MTBjMCAuNjQtLjUyNiAxLjE2Ni0xLjE2NiAxLjE2NmgtMTBjLS42NCAwLTEuMTY3LS41MjYtMS4xNjctMS4xNjZ2LTEwYzAtLjY0LjUyNi0xLjE2NyAxLjE2Ny0xLjE2N1pcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTIgMTBcXFwiPjxwYXRoIGQ9XFxcIm0uNzUgNS4yNSAzLjUgMy41IDctNy41XFxcIiBzdHJva2U9XFxcIiMxNTUzNjZcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS41XFxcIiBzdHJva2UtbGluZWNhcD1cXFwicm91bmRcXFwiIHN0cm9rZS1saW5lam9pbj1cXFwicm91bmRcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlLWxpbmVjYXA9XFxcInJvdW5kXFxcIiBzdHJva2UtbGluZWpvaW49XFxcInJvdW5kXFxcIiBzdHJva2Utd2lkdGg9XFxcIjJcXFwiIGNsYXNzPVxcXCJjaGV2cm9uX3N2Z19fZmVhdGhlciBjaGV2cm9uX3N2Z19fZmVhdGhlci1jaGV2cm9ucy1yaWdodFxcXCIgdmlld0JveD1cXFwiMCAwIDI0IDI0XFxcIj48cGF0aCBkPVxcXCJtMTMgMTcgNS01LTUtNU02IDE3bDUtNS01LTVcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDEwIDExXFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk01IC41Yy0yLjc1IDAtNSAyLjI1LTUgNXMyLjI1IDUgNSA1IDUtMi4yNSA1LTUtMi4yNS01LTUtNVptMS44NSA2LjE1Yy4yLjIuMi41IDAgLjctLjIuMi0uNS4yLS43IDBMNSA2LjIgMy44NSA3LjM1Yy0uMi4yLS41LjItLjcgMC0uMi0uMi0uMi0uNSAwLS43TDQuMyA1LjUgMy4xNSA0LjM1Yy0uMi0uMi0uMi0uNSAwLS43LjItLjIuNS0uMi43IDBMNSA0LjhsMS4xNS0xLjE1Yy4yLS4yLjUtLjIuNyAwIC4yLjIuMi41IDAgLjdMNS43IDUuNWwxLjE1IDEuMTVaXFxcIiBmaWxsPVxcXCIjRTM0RDVCXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxOCAxOVxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNOSAyLjQzNGMtNC4xMjUgMC03LjUgMy4zNzUtNy41IDcuNXMzLjM3NSA3LjUgNy41IDcuNSA3LjUtMy4zNzUgNy41LTcuNS0zLjM3NS03LjUtNy41LTcuNVptMi43NzUgOS4yMjVjLjMuMy4zLjc1IDAgMS4wNS0uMy4zLS43NS4zLTEuMDUgMEw5IDEwLjk4NGwtMS43MjUgMS43MjVjLS4zLjMtLjc1LjMtMS4wNSAwLS4zLS4zLS4zLS43NSAwLTEuMDVMNy45NSA5LjkzNCA2LjIyNSA4LjIwOWMtLjMtLjMtLjMtLjc1IDAtMS4wNS4zLS4zLjc1LS4zIDEuMDUgMEw5IDguODg0bDEuNzI1LTEuNzI1Yy4zLS4zLjc1LS4zIDEuMDUgMCAuMy4zLjMuNzUgMCAxLjA1TDEwLjA1IDkuOTM0bDEuNzI1IDEuNzI1WlxcXCIgZmlsbD1cXFwiI0UzNEQ1QlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCI+PHBhdGggZD1cXFwiTTguNzUgNS40NTdoLTEuNUExLjA4MyAxLjA4MyAwIDAgMCA2LjE2NyA2LjU0djNhMS4wODMgMS4wODMgMCAwIDAgMS4wODMgMS4wODNoMS41QTEuMDg0IDEuMDg0IDAgMCAwIDkuODMzIDkuNTRhLjQxNy40MTcgMCAwIDEgLjgzNCAwIDEuOTE3IDEuOTE3IDAgMCAxLTEuOTE3IDEuOTE3aC0xLjVBMS45MTYgMS45MTYgMCAwIDEgNS4zMzMgOS41NHYtM0ExLjkxNyAxLjkxNyAwIDAgMSA3LjI1IDQuNjIzaDEuNWExLjkxNyAxLjkxNyAwIDAgMSAxLjkxNyAxLjkxNy40MTYuNDE2IDAgMSAxLS44MzQgMEExLjA4MyAxLjA4MyAwIDAgMCA4Ljc1IDUuNDU3Wk00LjAxOCAyLjA4QTcuMTY3IDcuMTY3IDAgMSAxIDExLjk4MiAxNCA3LjE2NyA3LjE2NyAwIDAgMSA0LjAxOCAyLjA4Wm0uNDYzIDExLjIyNUE2LjMzNCA2LjMzNCAwIDEgMCAxMS41MiAyLjc3NGE2LjMzNCA2LjMzNCAwIDAgMC03LjA0IDEwLjUzMlpcXFwiIGZpbGw9XFxcIiNBNkI1QkFcXFwiIHN0cm9rZT1cXFwiI0E2QjVCQVxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNCAxNFxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNOS45MTcgNC4wODNhNC41MTUgNC41MTUgMCAxIDAtNS44MzQgNS44MzQgNC41MTUgNC41MTUgMCAxIDAgNS44MzQtNS44MzRabS0uOTM0LjkzNGEzLjQ1MyAzLjQ1MyAwIDAgMS0uMDMgMS40NDdMNy41MzIgNS4wNTFjLjI1Ni0uMDYxLjUxOC0uMDkzLjc4MS0uMDk0LjIyNCAwIC40NDYuMDIyLjY2NS4wNjRsLjAwNi0uMDA1Wm0tLjU0OCAyLjU2NmEzLjUgMy41IDAgMCAxLS44NTIuODUyTDUuNTY1IDYuNDE3YTMuNSAzLjUgMCAwIDEgLjg1Mi0uODUybDIuMDE4IDIuMDE4Wm0tNC42NjcuODUyYTMuMzU0IDMuMzU0IDAgMSAxIDQuNjY3LTQuNjY3aC0uMTQ2YTQuNTI3IDQuNTI3IDAgMCAwLTQuNDk3IDQuNTQ0YzAgLjA0Ny4wMDUuMS4wMDUuMTQ2bC0uMDI5LS4wMjNabTEuMjI1LjUxOWEzLjU3IDMuNTcgMCAwIDEtLjA2NC0uNjY1Yy4wMDEtLjI2My4wMzMtLjUyNi4wOTMtLjc4Mkw2LjQ0IDguOTI1Yy0uMjU2LjA2LS41MTkuMDkyLS43ODIuMDkzYTMuNTcgMy41NyAwIDAgMS0uNjM2LS4wNGwtLjAyOS0uMDI0Wm0zLjMyIDIuNzEyYTMuMzY1IDMuMzY1IDAgMCAxLTIuNzcxLTEuNDY0aC4xNDVhNC41MjcgNC41MjcgMCAwIDAgNC41MjEtNC41MTV2LS4xNDVhMy4zNTQgMy4zNTQgMCAwIDEtMS44OTYgNi4xMjRaXFxcIiBmaWxsPVxcXCIjRjRCNzg0XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIj48cGF0aCBmaWxsPVxcXCIjNjg3OTdFXFxcIiBkPVxcXCJNMTAuNzgzIDUuMjE4YS43NS43NSAwIDAgMC0xLjA2NSAwTDggNi45NDIgNi4yODMgNS4yMThhLjc1My43NTMgMCAxIDAtMS4wNjUgMS4wNjRMNi45NDMgOCA1LjIxOCA5LjcxN2EuNzUuNzUgMCAwIDAgMCAxLjA2Ni43NS43NSAwIDAgMCAxLjA2NSAwTDggOS4wNTZsMS43MTggMS43MjZhLjc1Ljc1IDAgMCAwIDEuMjI5LS4yNDUuNzUuNzUgMCAwIDAtLjE2NC0uODJMOS4wNTggOGwxLjcyNS0xLjcxOGEuNzQ4Ljc0OCAwIDAgMCAwLTEuMDY0Wm0yLjUyLTIuNTJBNy41MDEgNy41MDEgMCAxIDAgMi42OTggMTMuMzAxIDcuNTAxIDcuNTAxIDAgMSAwIDEzLjMwMyAyLjY5OVptLTEuMDU4IDkuNTQ3QTYgNiAwIDEgMSAxNCA4YTUuOTY1IDUuOTY1IDAgMCAxLTEuNzU1IDQuMjQ1WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxMiAxNFxcXCIgZmlsbD1cXFwibm9uZVxcXCI+PHBhdGggZmlsbD1cXFwiIzJBMkYzMFxcXCIgZD1cXFwiTTQuNTg4IDMuNSA3LjIxMi44OGEuNDE4LjQxOCAwIDAgMC0uNTkxLS41OTJMNCAyLjkxMyAxLjM4LjI4OGEuNDE4LjQxOCAwIDEgMC0uNTkzLjU5MUwzLjQxMyAzLjUuNzg3IDYuMTJhLjQxNy40MTcgMCAwIDAgLjEzNi42ODQuNDE3LjQxNyAwIDAgMCAuNDU2LS4wOTFMNCA0LjA4OGwyLjYyIDIuNjI1YS40MTcuNDE3IDAgMCAwIC42ODQtLjEzNi40MTcuNDE3IDAgMCAwLS4wOTItLjQ1Nkw0LjU4OCAzLjVaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDUyIDUyXFxcIj48Y2lyY2xlIGN4PVxcXCIyNlxcXCIgY3k9XFxcIjI2XFxcIiByPVxcXCIyNS4yNVxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS41XFxcIi8+PHBhdGggZD1cXFwiTTM3LjQgMzcuODJjLS4wNTEtLjYwOS0uMDUtNS4zODMtLjAzNi04LjMxOGEuNi42IDAgMCAwLS41OTgtLjYwNGgtLjAwM2EuNi42IDAgMCAwLS42LjU5OGMwIC4wMjItLjAxIDIuMTItLjAxIDQuMjA0LjAwMiAyLjExMi4wMDQgMy4yMjQuMDI5IDMuODM0bC05Ljg0OSAyLjk2M2EuNTk3LjU5NyAwIDAgMCAuMDU0LS4yNDh2LTcuODk3YS42LjYgMCAxIDAtMS4yMDIgMHY3Ljg5N2MwIC4wNTUuMDA5LjEwOC4wMjIuMTU5bC05LjU2LTIuOTA4LS4wMDgtNy45YS42LjYgMCAwIDAtLjYtLjYwMWgtLjAwMWEuNi42IDAgMCAwLS42LjZsLjAwNyA4LjM0N2EuNi42IDAgMCAwIC40MjUuNTc0bDEwLjg2OCAzLjMwNGEuNTkyLjU5MiAwIDAgMCAuMzQ4IDBsMTAuOTAzLTMuMjhhLjYuNiAwIDAgMCAuNDEtLjcyNFptLS40NzItLjQ0WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcIiMxOEFDQjJcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjNcXFwiLz48cGF0aCBkPVxcXCJtNDAuMDQgMjMuNzQ2LTMuMzY1LTEuOTAyLS4wMTMtLjAwNmExMi4wMDQgMTIuMDA0IDAgMCAwLTIuMzMxLTMuMjU5LjYuNiAwIDEgMC0uODQ3Ljg1MiAxMC43NzggMTAuNzc4IDAgMCAxIDIuNjI0IDQuMjE3bC0xLjU4Mi40MzNjLTEuMjU4LTMuNjMzLTQuNzMzLTYuMTMyLTguNjEzLTYuMTMyYTkuMTE1IDkuMTE1IDAgMCAwLTQuNTcyIDEuMjI4LjYwMS42MDEgMCAwIDAgLjYwMyAxLjAzOSA3LjkwOCA3LjkwOCAwIDAgMSAzLjk2OS0xLjA2NiA3Ljk1IDcuOTUgMCAwIDEgNy40NSA1LjI1bC0xLjU4My40MzNhNi4zMTIgNi4zMTIgMCAwIDAtNS44NjctNC4wNDcgNi4yOTUgNi4yOTUgMCAwIDAtNS44NzkgNC4wNzVsLTEuNTg2LS40MjVhNy45NCA3Ljk0IDAgMCAxIDEuODcxLTIuOTcuNi42IDAgMSAwLS44NS0uODQ5IDkuMTQ4IDkuMTQ4IDAgMCAwLTIuMTg0IDMuNTA2bC0xLjU4My0uNDI1Yy4xMDItLjMxLjIxOC0uNjEzLjM0Ni0uOTA5YS42MDcuNjA3IDAgMCAwIC4xNzItLjM3NiAxMC43NzYgMTAuNzc2IDAgMCAxIDkuNjkzLTYuMWMxLjg5IDAgMy43NDkuNDk3IDUuMzc1IDEuNDM5YS42MDEuNjAxIDAgMCAwIC42MDItMS4wNCAxMS45NDkgMTEuOTQ5IDAgMCAwLTUuOTc3LTEuNiAxMS45OCAxMS45OCAwIDAgMC0xMC44MTQgNi44NmwtMy4xMzkgMS43NzRhLjYuNiAwIDAgMCAuMzU4IDEuMTJsMS4zMi0uMTM2LTEuNDczIDEuODdhLjU5OS41OTkgMCAwIDAgLjMwMS45NDdsMTEuMzYxIDMuMzc4YS42MDEuNjAxIDAgMCAwIC42OTEtLjI3NGwxLjQwOS0yLjQxOCAxLjMxIDIuMTc3YS42LjYgMCAwIDAgLjY3My4yN2wxMS40NDctMy4xMjlhLjYwMi42MDIgMCAwIDAgLjMxMy0uOTUxbC0xLjQ4Ny0xLjg4OSAxLjQ5OS4xNTZhLjYuNiAwIDAgMCAuMzU4LTEuMTJabS0xNC4xMjctMS43NThhNS4xMDQgNS4xMDQgMCAwIDEgNC43MDIgMy4xNjVsLTQuNzAzIDEuMjg4LTQuNzEtMS4yNjVhNS4wOSA1LjA5IDAgMCAxIDQuNzExLTMuMTg4Wm0tMi4xOTYgNy42NTItMTAuMDYxLTIuOTkyIDEuNDYtMS44NTVMMjUgMjcuNDM5bC0xLjI4MiAyLjIwMVptNC4zMTUtLjI0LTEuMTg0LTEuOTY0IDkuODctMi42NDMgMS40NDggMS44MzgtMTAuMTM0IDIuNzdabS02LjQ0Ny0xNS45N2EuNjAxLjYwMSAwIDAgMCAxLjE1NS0uMzNsLS44LTIuODAzYS42MDEuNjAxIDAgMCAwLTEuMTU2LjMzbC44MDEgMi44MDRabTcuNzU1LjQ3OWEuNjAxLjYwMSAwIDAgMCAuNzQyLS40MTJsLjgtMi44MDRhLjYuNiAwIDEgMC0xLjE1NS0uMzNsLS44IDIuODA0YS42LjYgMCAwIDAgLjQxMi43NDJabTYuNTcgMy42NzdhLjYwMS42MDEgMCAwIDAgLjQyLS4xN2wyLjA1My0yLjAwM2EuNi42IDAgMSAwLS44MzktLjg2bC0yLjA1MiAyLjAwMmEuNi42IDAgMCAwIC40MTkgMS4wM1ptLTIwLjU0LS4yMjFhLjYwMi42MDIgMCAwIDAgLjg0LS44NmwtMi4wMDMtMS45NTJhLjYuNiAwIDEgMC0uODM4Ljg2bDIuMDAxIDEuOTUyWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcIiMxOEFDQjJcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjNcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgNTIgNTJcXFwiPjxjaXJjbGUgY3g9XFxcIjI2XFxcIiBjeT1cXFwiMjZcXFwiIHI9XFxcIjI1LjI1XFxcIiBzdHJva2U9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIxLjVcXFwiLz48cGF0aCBkPVxcXCJNMjAuODcxIDE3LjIwOEExMC4xNjcgMTAuMTY3IDAgMCAxIDI2IDE1LjgyM2ExMC4xMSAxMC4xMSAwIDAgMSA3LjE5NiAyLjk4LjU2Ni41NjYgMCAwIDAgLjgwNCAwQS41Ny41NyAwIDAgMCAzNCAxOGExMS4yNCAxMS4yNCAwIDAgMC04LTMuMzEzYy0yLjAwOCAwLTMuOTguNTMyLTUuNzAzIDEuNTRhLjU2OC41NjggMCAxIDAgLjU3NC45ODJaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZT1cXFwiIzE4QUNCMlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuM1xcXCIvPjxwYXRoIGQ9XFxcIk0yNiAxMmMtMy43OCAwLTcuMzIxIDEuNDgyLTkuOTc0IDQuMTc1YS41Ny41NyAwIDAgMCAuODEuNzk4QTEyLjc3IDEyLjc3IDAgMCAxIDI2IDEzLjEzN2M3LjA5MiAwIDEyLjg2MyA1Ljc3IDEyLjg2MyAxMi44NjMgMCAyLjE4NC0uNTQ4IDQuMjQ0LTEuNTEzIDYuMDQ3bC0xLjc3LTIuNzA3YTQuMzgxIDQuMzgxIDAgMCAwIDEuNzM0LTMuNDkgNC4zOTIgNC4zOTIgMCAwIDAtNC4zODgtNC4zODggNC4zNCA0LjM0IDAgMCAwLTIuMzg5LjcwNyA1LjkzIDUuOTMgMCAwIDAtOS4xMjMuMDYgNC4zNzcgNC4zNzcgMCAwIDAtMi40NzktLjc2NyA0LjM5MiA0LjM5MiAwIDAgMC00LjM4NyA0LjM4N2MwIDEuNDE1LjY3NCAyLjY3NCAxLjcxNiAzLjQ3N2wtMS42MzUgMi42ODFhMTIuODYgMTIuODYgMCAwIDEgLjIwNC0xMi4zOTMuNTY5LjU2OSAwIDEgMC0uOTg3LS41NjVBMTQgMTQgMCAwIDAgMTIgMjZjMCA1LjA5NSAyLjczNiA5LjU2NCA2LjgxNyAxMi4wMTNhLjU2Ni41NjYgMCAwIDAgLjMyNS4xODlBMTMuOTExIDEzLjkxMSAwIDAgMCAyNiA0MGM3LjcxOSAwIDE0LTYuMjggMTQtMTRzLTYuMjgxLTE0LTE0LTE0Wm02LjkyNSAxMC41OTlhMy4yNTMgMy4yNTMgMCAwIDEgMy4yNSAzLjI1IDMuMjUzIDMuMjUzIDAgMCAxLTMuMjUgMy4yNWMtLjU3NiAwLTEuMTI3LS4xNS0xLjYxOC0uNDM0QTUuOTA2IDUuOTA2IDAgMCAwIDMxLjk0IDI2YTUuOTAzIDUuOTAzIDAgMCAwLS43NTctMi44OTYgMy4yMTcgMy4yMTcgMCAwIDEgMS43NC0uNTA1Wk0yNiAyMS4xOTZBNC44MSA0LjgxIDAgMCAxIDMwLjgwMyAyNiA0LjgxIDQuODEgMCAwIDEgMjYgMzAuODA0IDQuODEgNC44MSAwIDAgMSAyMS4xOTUgMjYgNC44MSA0LjgxIDAgMCAxIDI2IDIxLjE5NlptLTEwLjMxNiA0LjY1M2EzLjI1MyAzLjI1MyAwIDAgMSA1LjA5Mi0yLjY3OEE1LjkwNSA1LjkwNSAwIDAgMCAyMC4wNTggMjZjMCAuOTMzLjIxNyAxLjgxNi42MDEgMi42MDNhMy4yNTMgMy4yNTMgMCAwIDEtNC45NzYtMi43NTRabTMuMzgxIDEwLjk4MWExMi45NjIgMTIuOTYyIDAgMCAxLTMuNzc5LTMuNzE5bDEuOTU5LTMuMjEzYy41Mi4yMTggMS4wOS4zMzkgMS42ODkuMzM5LjgzMiAwIDEuNjI3LS4yMyAyLjMyMS0uNjY1YTYgNiAwIDAgMCAxLjMgMS4yNjVsLTMuNDkgNS45OTNaTTI2IDM4Ljg2NGMtMi4xNDYgMC00LjE3LS41My01Ljk1MS0xLjQ2M2wzLjQ5LTUuOTk1YTUuOSA1LjkgMCAwIDAgMi40Ni41MzVjLjg2MSAwIDEuNjgtLjE4NSAyLjQxOC0uNTE2bDMuNDk1IDUuOTk3QTEyLjc4NCAxMi43ODQgMCAwIDEgMjYgMzguODY0Wm02Ljg5Ny0yLjAxLTMuNDktNS45OWMuNDktLjM0NS45MjYtLjc2MiAxLjI5Mi0xLjIzNWE0LjM0OSA0LjM0OSAwIDAgMCAyLjIyNi42MDdjLjU5IDAgMS4xNTItLjExOCAxLjY2Ni0uMzNsMi4xMSAzLjIyNGExMi45NzMgMTIuOTczIDAgMCAxLTMuODA0IDMuNzIzWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcIiMxOEFDQjJcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjNcXFwiLz48cGF0aCBkPVxcXCJNMjYgMjkuODAzYTMuODIzIDMuODIzIDAgMCAwIDMuMDQ4LTEuNTI4LjU2OS41NjkgMCAwIDAtLjkxLS42OCAyLjY2OCAyLjY2OCAwIDAgMS00LjMzNy0uMDg2LjU2OS41NjkgMCAwIDAtLjkzOC42NDNBMy44MDQgMy44MDQgMCAwIDAgMjYgMjkuODAzWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcIiMxOEFDQjJcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjNcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTIgMTRcXFwiPjxwYXRoIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIGQ9XFxcIk04LjE2NyAzdi41aDMuMTY2YS4xNjcuMTY3IDAgMCAxIDAgLjMzM2gtMS4xNjZ2Ny44MzNhMS41IDEuNSAwIDAgMS0xLjUgMS41SDMuMzMzYTEuNSAxLjUgMCAwIDEtMS4wNi0uNDM5bC0uMzU0LjM1NC4zNTQtLjM1NGExLjUgMS41IDAgMCAxLS40NC0xLjA2VjMuODMySC42NjdhLjE2Ny4xNjcgMCAxIDEgMC0uMzMzaDMuMTY2VjIuMzMzYTEuNSAxLjUgMCAwIDEgMS41LTEuNWgxLjMzNGExLjUgMS41IDAgMCAxIDEuNSAxLjVWM1ptLS44MzQuNWguNVYyLjMzM2ExLjE2NyAxLjE2NyAwIDAgMC0xLjE2Ni0xLjE2N0g1LjMzM2ExLjE2NyAxLjE2NyAwIDAgMC0xLjE2NiAxLjE2N1YzLjVoMy4xNjZabS00LjY2Ni4zMzNoLS41djcuODMzYTEuMTY3IDEuMTY3IDAgMCAwIDEuMTY2IDEuMTY3aDUuMzM0YTEuMTY3IDEuMTY3IDAgMCAwIDEuMTY2LTEuMTY3VjMuODMzSDIuNjY3Wm0yLjExOCA2LjYxOGEuMTY3LjE2NyAwIDAgMS0uMjg1LS4xMTh2LTRhLjE2Ny4xNjcgMCAxIDEgLjMzMyAwdjRhLjE2Ny4xNjcgMCAwIDEtLjA0OC4xMThabTIuNjY2IDBhLjE2Ny4xNjcgMCAwIDEtLjI4NC0uMTE4di00YS4xNjcuMTY3IDAgMCAxIC4zMzMgMHY0YS4xNjcuMTY3IDAgMCAxLS4wNDkuMTE4WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNyAxNlxcXCI+PHBhdGggZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBkPVxcXCJNMTAuNjI0IDUuNjY3aC00LjY3TDguMjkgMy40MTRsMi4zMzUgMi4yNTNaTTguNzggMi40NzRhLjcwNi43MDYgMCAwIDAtLjk3NCAwbC0zLjE3IDMuMDZjLS40MzYuNDEzLS4xMzIgMS4xMzMuNDgzIDEuMTMzaDYuMzM0Yy42MTUgMCAuOTI2LS43Mi40OS0xLjE0TDguNzggMi40NzRabTIuNjggNi44Nkg1LjExOWMtLjYxNSAwLS45MjYuNzItLjQ5IDEuMTRsMy4xNyAzLjA2Yy4yNy4yNi43MDQuMjYuOTc0IDBsMy4xNy0zLjA2Yy40MzYtLjQyLjEzMi0xLjE0LS40ODMtMS4xNFpcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiPjxwYXRoIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgZD1cXFwibTEzLjgwNyAxMS4xNC0xLjYxNC0xLjYxNGEuNjY2LjY2NiAwIDAgMC0uOTQ2IDBMOC44NiAxMS45MTNhLjY2Ny42NjcgMCAwIDAtLjE5My40NzNWMTRhLjY2Ny42NjcgMCAwIDAgLjY2Ni42NjZoMS42MTRhLjY2OC42NjggMCAwIDAgLjQ3My0uMTkzbDIuMzg3LTIuMzg3YS42NjcuNjY3IDAgMCAwIDAtLjk0NlptLTMuMTQgMi4xOTNIMTB2LS42NjdsMS43Mi0xLjcyLjY2Ny42NjctMS43MiAxLjcyWm0tNCAwSDRhLjY2Ni42NjYgMCAwIDEtLjY2Ny0uNjY3VjMuMzMzQS42NjcuNjY3IDAgMCAxIDQgMi42NjZoMy4zMzN2MmEyIDIgMCAwIDAgMiAyaDJ2LjY2N2EuNjY3LjY2NyAwIDAgMCAxLjMzNCAwVjUuOTZhLjg4Ljg4IDAgMCAwLS4wNC0uMTh2LS4wNmEuNzE0LjcxNCAwIDAgMC0uMTI3LS4xODdsLTQtNGEuNzEzLjcxMyAwIDAgMC0uMTg3LS4xMjcuMjEzLjIxMyAwIDAgMC0uMDYgMGwtLjIxMy0uMDczSDRhMiAyIDAgMCAwLTIgMnY5LjMzM2EyIDIgMCAwIDAgMiAyaDIuNjY3YS42NjcuNjY3IDAgMSAwIDAtMS4zMzNabTItOS43MjcgMS43MjYgMS43MjdoLTEuMDZhLjY2Ny42NjcgMCAwIDEtLjY2Ni0uNjY3di0xLjA2Wk01LjMzMyA5LjMzM2g0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNoLTRhLjY2Ny42NjcgMCAxIDAgMCAxLjMzM1ptMC0yLjY2N0g2YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNoLS42NjdhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM1ptMS4zMzQgNEg1LjMzM2EuNjY3LjY2NyAwIDAgMCAwIDEuMzM0aDEuMzM0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzRaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNCAxNFxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48ZyBjbGlwLXBhdGg9XFxcInVybCgjZG91YmxlLXRpY2tfc3ZnX19hKVxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIj48cGF0aCBkPVxcXCJNOS44NDUgMy43MDZhLjY0Ny42NDcgMCAwIDAtLjk0NyAwbC01LjA3IDUuMTRMMS43MzMgNi43MmEuNjQ3LjY0NyAwIDAgMC0uOTQ3IDAgLjY2OS42NjkgMCAwIDAgMCAuOTZsMi41NyAyLjYwNGEuNjEuNjEgMCAwIDAgLjQ3Mi4yMDYuNjEuNjEgMCAwIDAgLjQ3NC0uMjA2bDUuNTQzLTUuNjJhLjY2OS42NjkgMCAwIDAgMC0uOTZaXFxcIi8+PHBhdGggZD1cXFwiTTEzLjYzMiAzLjM2YTEuMjM0IDEuMjM0IDAgMCAwLTEuNzgzIDBMNy4xOTcgOC4wNzhsLTEuNjc3LTEuN2ExLjIzNCAxLjIzNCAwIDAgMC0xLjc4MyAwIDEuMjU2IDEuMjU2IDAgMCAwIDAgMS43ODRsMi41NyAyLjYwNGMuMTAxLjEwMy4yMjcuMjA1LjM4Ny4yNzcuMTY0LjA3NC4zMzMuMTA0LjUwMy4xMDQuMTcxIDAgLjM0LS4wMy41MDQtLjEwNC4xNi0uMDcyLjI4Ni0uMTc0LjM4OC0uMjc3bDUuNTQzLTUuNjJhMS4yNTYgMS4yNTYgMCAwIDAgMC0xLjc4NFpcXFwiIHN0cm9rZT1cXFwiI2ZmZlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIxLjE3NVxcXCIvPjwvZz48ZGVmcz48Y2xpcFBhdGggaWQ9XFxcImRvdWJsZS10aWNrX3N2Z19fYVxcXCI+PHBhdGggZmlsbD1cXFwiI2ZmZlxcXCIgZD1cXFwiTTAgMGgxNHYxNEgwelxcXCIvPjwvY2xpcFBhdGg+PC9kZWZzPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHdpZHRoPVxcXCIxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCI+PHBhdGggZmlsbD1cXFwiIzE1NTM2NlxcXCIgc3Ryb2tlPVxcXCIjMTU1MzY2XFxcIiBkPVxcXCJNOC4xNjcgOS43MzN2MS4yMDhsLjg1My0uODU0Ljg2Ny0uODY3QS4xNi4xNiAwIDAgMSAxMCA5LjE2N2MuMDMgMCAuMDcuMDEuMTEzLjA1M2EuMTYuMTYgMCAwIDEgLjA1NC4xMTQuMTYuMTYgMCAwIDEtLjA1NC4xMTNsLTIgMmMtLjAzNy4wMzctLjA1NC4wNDUtLjA1OC4wNDZBLjEzNi4xMzYgMCAwIDEgOCAxMS41YS4xMzYuMTM2IDAgMCAxLS4wNTUtLjAwNy4yMDUuMjA1IDAgMCAxLS4wNTgtLjA0NmwtMi0yYS4xNi4xNiAwIDAgMS0uMDU0LS4xMTMuMTYuMTYgMCAwIDEgLjA1NC0uMTE0QS4xNi4xNiAwIDAgMSA2IDkuMTY3Yy4wMyAwIC4wNy4wMS4xMTMuMDUzbC44NjcuODY3Ljg1My44NTRWMmMwLS4wODYuMDI3LS4xMi4wMzctLjEzLjAxLS4wMS4wNDQtLjAzNy4xMy0uMDM3LjA4NiAwIC4xMi4wMjcuMTMuMDM3LjAxLjAxLjAzNy4wNDQuMDM3LjEzdjcuNzMzWm0yLjUtMy4yMzNIMTJjLjg1NyAwIDEuNS42NDMgMS41IDEuNXY0LjY2N2MwIC44NTctLjY0MyAxLjUtMS41IDEuNUg0Yy0uODU3IDAtMS41LS42NDMtMS41LTEuNVY4YzAtLjg1Ny42NDMtMS41IDEuNS0xLjVoMS4zMzNjLjA4NyAwIC4xMi4wMjcuMTMuMDM3LjAxLjAxLjAzNy4wNDMuMDM3LjEzIDAgLjA4Ni0uMDI3LjEyLS4wMzcuMTMtLjAxLjAxLS4wNDMuMDM3LS4xMy4wMzdINGMtLjMxNCAwLS42MTQuMTA2LS44MzcuMzMtLjIyMy4yMjItLjMzLjUyMy0uMzMuODM2djQuNjY3YzAgLjMxMy4xMDcuNjE0LjMzLjgzNy4yMjMuMjIzLjUyMy4zMy44MzcuMzNoOGMuMzE0IDAgLjYxNC0uMTA3LjgzNy0uMzMuMjIzLS4yMjMuMzMtLjUyNC4zMy0uODM3VjhjMC0uMzEzLS4xMDctLjYxNC0uMzMtLjgzN2ExLjE2NiAxLjE2NiAwIDAgMC0uODM3LS4zM2gtMS4zMzNjLS4wODcgMC0uMTItLjAyNi0uMTMtLjAzNi0uMDEtLjAxLS4wMzctLjA0NC0uMDM3LS4xMyAwLS4wODcuMDI3LS4xMi4wMzctLjEzLjAxLS4wMS4wNDMtLjAzNy4xMy0uMDM3WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCI+PHBhdGggZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcImN1cnJlbnRDb2xvclxcXCIgZD1cXFwibTEyLjc5NiA1Ljg3LjAyMy4wN2EuMzA1LjMwNSAwIDAgMSAuMDE0LjA1NHY2LjY3MmExLjUgMS41IDAgMCAxLTEuNSAxLjVINC42NjdhMS41IDEuNSAwIDAgMS0xLjUtMS41VjMuMzMzYTEuNSAxLjUgMCAwIDEgMS41LTEuNWgzLjk3OGEuMjMzLjIzMyAwIDAgMSAuMDMzLjAxNGwuMTEuMDZoLjA0NWwzLjk2MyAzLjk2MlptLTMuMTEtMi42MTctLjg1My0uODU0djIuMjY3QTEuMTY3IDEuMTY3IDAgMCAwIDEwIDUuODMzaDIuMjY3bC0uODUzLS44NTQtMS43MjctMS43MjZaTTguNSAyLjY2NnYtLjVINC42NjdBMS4xNjcgMS4xNjcgMCAwIDAgMy41IDMuMzMzdjkuMzMzYTEuMTY3IDEuMTY3IDAgMCAwIDEuMTY3IDEuMTY3aDYuNjY2YTEuMTY3IDEuMTY3IDAgMCAwIDEuMTY3LTEuMTY3di02LjVIMTBhMS41IDEuNSAwIDAgMS0xLjUtMS41di0yWm0tLjMzMyA3LjA2djEuMjM3bC44Ni0uODkuMTg5LS4xOTVhLjE3LjE3IDAgMCAxIC4yMzcuMjQybC0xLjMyOCAxLjMyOGEuMTY3LjE2NyAwIDAgMS0uMDUyLjAzMmwtLjAxMS4wMDQtLjAxLjAwNWEuMTI3LjEyNyAwIDAgMS0uMTAzIDBsLS4wMS0uMDA1LS4wMTItLjAwNGEuMTY3LjE2NyAwIDAgMS0uMDUyLS4wMzJsLTEuMzI4LTEuMzI5YS4xNy4xNyAwIDAgMSAuMjM3LS4yNDFsLjE5LjE5Ni44Ni44ODlWOGEuMTY3LjE2NyAwIDAgMSAuMzMzIDB2MS43MjZaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJtMi42MjYgMTMuMzc0LjIzNi0uMjM2LS4yMzYuMjM2YTEgMSAwIDAgMCAuNzA3LjI5M2g5LjMzNGExIDEgMCAwIDAgLjcwNy0uMjkzbC0uMjM2LS4yMzYuMjM2LjIzNmExIDEgMCAwIDAgLjI5My0uNzA3VjEwYS4zMzMuMzMzIDAgMCAxIC41NjktLjIzNmwuMjM1LS4yMzUtLjIzNS4yMzVhLjMzMy4zMzMgMCAwIDEgLjA5Ny4yMzZ2Mi42NjdhMS42NjcgMS42NjcgMCAwIDEtMS42NjYgMS42NjZIMy4zMzNhMS42NjcgMS42NjcgMCAwIDEtMS42NjYtMS42NjZWMTBjMC0uMDg4LjAzNS0uMTczLjA5Ny0uMjM2TDEuNTMgOS41M2wuMjM1LjIzNWEuMzMzLjMzMyAwIDAgMSAuNDcyIDBsLjIzNS0uMjM1LS4yMzUuMjM1YS4zMzMuMzMzIDAgMCAxIC4wOTcuMjM2djIuNjY3YTEgMSAwIDAgMCAuMjkzLjcwN1ptNS4yNTUtMy4wNjYtLjAwNy0uMDAzLS4wMDctLjAwMmEuMzMzLjMzMyAwIDAgMS0uMTA4LS4wNjhMNS4wOTYgNy41N2EuMzM2LjMzNiAwIDAgMSAuMzY2LS41NDhsLjEyOC0uMzA4LS4xMjguMzA4Yy4wNC4wMTcuMDc4LjA0MS4xMDkuMDcyTDcuMDk3IDguNjNsLjU3LjU3MlYyYS4zMzMuMzMzIDAgMSAxIC42NjYgMHY3LjIwMWwuNTctLjU3MiAxLjUyNi0xLjUzM2EuMzM2LjMzNiAwIDAgMSAuNDc1LjQ3NWwtMi42NjMgMi42NjRhLjMzMy4zMzMgMCAwIDEtLjEwOC4wNjhsLS4wMDcuMDAyLS4wMDcuMDAzYS4yOTIuMjkyIDAgMCAxLS4yMzggMFpcXFwiIGZpbGw9XFxcImN1cnJlbnRjb2xvclxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Y29sb3JcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjY2N1xcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxMCA2XFxcIj48cGF0aCBkPVxcXCJNOC45MzIuODc4YS41LjUgMCAwIDEgMCAuNzFMNS4zNTcgNS4xMjFsLS4wMDIuMDAzYS41LjUgMCAwIDEtLjcxIDB2LS4wMDFMMS4xMSAxLjU4OWEuNS41IDAgMCAxIDAtLjcxVi44NzdhLjUuNSAwIDAgMSAuNzA1IDBsMi45NSAyLjk1LjIzMy4yMzMuMjM2LS4yMzJMOC4yMjYuODc5Vi44NzhhLjUuNSAwIDAgMSAuNzA2IDBaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2Utd2lkdGg9XFxcIi42NjdcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDIwIDIwXFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xNy41IDEwYS44MzMuODMzIDAgMCAwLS44MzMuODMzdjVhLjgzMy44MzMgMCAwIDEtLjgzNC44MzRINC4xNjdhLjgzMy44MzMgMCAwIDEtLjgzNC0uODM0VjQuMTY3YS44MzMuODMzIDAgMCAxIC44MzQtLjgzNGg1YS44MzMuODMzIDAgMSAwIDAtMS42NjZoLTVhMi41IDIuNSAwIDAgMC0yLjUgMi41djExLjY2NmEyLjUgMi41IDAgMCAwIDIuNSAyLjVoMTEuNjY2YTIuNSAyLjUgMCAwIDAgMi41LTIuNXYtNUEuODMzLjgzMyAwIDAgMCAxNy41IDEwWk01IDEwLjYzM3YzLjUzNGEuODMzLjgzMyAwIDAgMCAuODMzLjgzM2gzLjUzNGEuODMzLjgzMyAwIDAgMCAuNTkxLS4yNDJsNS43NjctNS43NzUgMi4zNjctMi4zMTZhLjgzMy44MzMgMCAwIDAgMC0xLjE4NGwtMy41MzQtMy41NzVhLjgzNC44MzQgMCAwIDAtMS4xODMgMGwtMi4zNSAyLjM1OS01Ljc4MyA1Ljc3NWEuODM0LjgzNCAwIDAgMC0uMjQyLjU5MVptOC45NjctNi45NTggMi4zNTggMi4zNTgtMS4xODMgMS4xODQtMi4zNTktMi4zNTkgMS4xODQtMS4xODNabS03LjMgNy4zIDQuOTQxLTQuOTQyIDIuMzU5IDIuMzU5LTQuOTQyIDQuOTQxSDYuNjY3di0yLjM1OFpcXFwiIGZpbGw9XFxcIiM2ODc5N0VcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE3IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0zLjcxOCAxMmgyLjgyN2EuNjY2LjY2NiAwIDAgMCAuNDczLS4xOTRsNC42MTQtNC42MiAxLjg5My0xLjg1M2EuNjY4LjY2OCAwIDAgMCAwLS45NDdsLTIuODI3LTIuODZhLjY2Ny42NjcgMCAwIDAtLjk0NiAwbC0xLjg4IDEuODg3LTQuNjI3IDQuNjJhLjY2Ny42NjcgMCAwIDAtLjE5My40NzN2Mi44MjdhLjY2Ny42NjcgMCAwIDAgLjY2Ni42NjdabTYuNTA3LTkuMDYgMS44ODcgMS44ODYtLjk0Ny45NDctMS44ODctMS44ODcuOTQ3LS45NDZabS01Ljg0IDUuODQgMy45NTMtMy45NTQgMS44ODcgMS44ODctMy45NTMgMy45NTNINC4zODVWOC43OFptMTAgNC41NTNoLTEyYS42NjcuNjY3IDAgMSAwIDAgMS4zMzNoMTJhLjY2Ni42NjYgMCAxIDAgMC0xLjMzM1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBjbGFzcz1cXFwiZXhjbGFtYXRpb24td2FybmluZ19zdmdfX2VsZW1lbnRzLXN2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDE4IDE4XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk05IDQuNzk1YS44MzMuODMzIDAgMCAwLS44MzQuODM0djMuMzMzYS44MzMuODMzIDAgMCAwIDEuNjY3IDBWNS42MjlhLjgzMy44MzMgMCAwIDAtLjgzNC0uODM0Wm0uNzY2IDcuMTg0YS42MzIuNjMyIDAgMCAwLS4wNzUtLjE1bC0uMS0uMTI1YS44MzMuODMzIDAgMCAwLS45MDgtLjE3NS45NTguOTU4IDAgMCAwLS4yNzUuMTc1LjgzMy44MzMgMCAwIDAtLjE3NS45MDguNzUuNzUgMCAwIDAgLjQ1LjQ1Ljc4My43ODMgMCAwIDAgLjYzMyAwIC43NS43NSAwIDAgMCAuNDUtLjQ1LjgzNC44MzQgMCAwIDAgLjA2Ny0uMzE3IDEuMTMzIDEuMTMzIDAgMCAwIDAtLjE2Ni41MzIuNTMyIDAgMCAwLS4wNjctLjE1Wk04Ljk5OS42MjlhOC4zMzMgOC4zMzMgMCAxIDAgMCAxNi42NjZBOC4zMzMgOC4zMzMgMCAwIDAgOSAuNjNabTAgMTVBNi42NjYgNi42NjYgMCAxIDEgOSAyLjI5NiA2LjY2NiA2LjY2NiAwIDAgMSA5IDE1LjYzWlxcXCIgZmlsbD1cXFwiI0Y0Qjc4NFxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAyMSAyMFxcXCI+PG1hc2sgaWQ9XFxcImV4cG9ydF9zdmdfX2FcXFwiIHdpZHRoPVxcXCIyMVxcXCIgaGVpZ2h0PVxcXCIyMFxcXCIgeD1cXFwiMFxcXCIgeT1cXFwiMFxcXCIgbWFza1VuaXRzPVxcXCJ1c2VyU3BhY2VPblVzZVxcXCIgc3R5bGU9XFxcIm1hc2stdHlwZTphbHBoYVxcXCI+PHBhdGggZmlsbD1cXFwiI0Q5RDlEOVxcXCIgZD1cXFwiTS41IDBoMjB2MjBILjV6XFxcIi8+PC9tYXNrPjxnIG1hc2s9XFxcInVybCgjZXhwb3J0X3N2Z19fYSlcXFwiPjxwYXRoIGZpbGw9XFxcIiMxNTUzNjZcXFwiIGQ9XFxcIk00LjY2NyAxNy41Yy0uNDU5IDAtLjg1MS0uMTYzLTEuMTc3LS40OUExLjYwNSAxLjYwNSAwIDAgMSAzIDE1LjgzM1Y0LjE2N2MwLS40NTkuMTYzLS44NTEuNDktMS4xNzcuMzI2LS4zMjcuNzE4LS40OSAxLjE3Ny0uNDlIMTAuNXYxLjY2N0g0LjY2N3YxMS42NjZoMTEuNjY2VjEwSDE4djUuODMzYzAgLjQ1OS0uMTYzLjg1MS0uNDkgMS4xNzctLjMyNi4zMjctLjcxOC40OS0xLjE3Ny40OUg0LjY2N1ptMy45MTYtNC40MTctMS4xNjYtMS4xNjYgNy43NS03Ljc1aC0zVjIuNUgxOHY1LjgzM2gtMS42Njd2LTNsLTcuNzUgNy43NVpcXFwiLz48L2c+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNyAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTIuNzUxIDcuMjEzYS43MzIuNzMyIDAgMCAwLS41LjE5NS42NDcuNjQ3IDAgMCAwLS4yMDguNDcydjQuNzg2YS42NDcuNjQ3IDAgMCAxLS4yMDcuNDcyLjczMS43MzEgMCAwIDEtLjUwMS4xOTVIMy41NDNhLjczMS43MzEgMCAwIDEtLjUtLjE5NS42NDcuNjQ3IDAgMCAxLS4yMDgtLjQ3MlY1LjMzM2MwLS4xNzcuMDc0LS4zNDYuMjA3LS40NzFhLjczMS43MzEgMCAwIDEgLjUwMS0uMTk2aDUuMDg2Yy4xODggMCAuMzY4LS4wNy41LS4xOTVBLjY0Ny42NDcgMCAwIDAgOS4zMzggNGEuNjQ3LjY0NyAwIDAgMC0uMjA3LS40NzIuNzMxLjczMSAwIDAgMC0uNTAxLS4xOTVIMy41NDNjLS41NjQgMC0xLjEwNC4yMS0xLjUwMy41ODZhMS45NDIgMS45NDIgMCAwIDAtLjYyMiAxLjQxNHY3LjMzM2MwIC41My4yMjQgMS4wNC42MjIgMS40MTUuMzk5LjM3NS45NC41ODUgMS41MDMuNTg1aDcuNzkyYy41NjMgMCAxLjEwNC0uMjEgMS41MDItLjU4NS4zOTktLjM3NS42MjMtLjg4NC42MjMtMS40MTVWNy44OGEuNjQ3LjY0NyAwIDAgMC0uMjA4LS40NzIuNzMyLjczMiAwIDAgMC0uNS0uMTk1Wm0yLjc3Ny01LjQ2N2EuNjkuNjkgMCAwIDAtLjM4My0uMzYuNzQ3Ljc0NyAwIDAgMC0uMjY5LS4wNTNoLTQuMjVhLjczMi43MzIgMCAwIDAtLjUuMTk1LjY0Ny42NDcgMCAwIDAtLjIwOC40NzJjMCAuMTc2LjA3NS4zNDYuMjA3LjQ3MWEuNzMyLjczMiAwIDAgMCAuNTAxLjE5NWgyLjU0M2wtNy4yOTYgNi44NmEuNjY2LjY2NiAwIDAgMC0uMTU1LjIxNy42MzMuNjMzIDAgMCAwIC4xNTUuNzMuNzQ2Ljc0NiAwIDAgMCAxLjAwNiAwbDcuMjg5LTYuODY3VjZjMCAuMTc2LjA3NS4zNDYuMjA3LjQ3MWEuNzMyLjczMiAwIDAgMCAuNTAxLjE5NWMuMTg4IDAgLjM2OC0uMDcuNTAxLS4xOTVBLjY0Ny42NDcgMCAwIDAgMTUuNTg1IDZWMmEuNjMzLjYzMyAwIDAgMC0uMDU3LS4yNTRaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE3XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xNC42MTMgNy45OEMxMy4yNjcgNC44NTMgMTAuNzMzIDIuOTEzIDggMi45MTNjLTIuNzMzIDAtNS4yNjcgMS45NC02LjYxMyA1LjA2N2EuNjY3LjY2NyAwIDAgMCAwIC41MzNDMi43MzMgMTEuNjQgNS4yNjcgMTMuNTggOCAxMy41OGMyLjczMyAwIDUuMjY3LTEuOTQgNi42MTMtNS4wNjdhLjY2Ny42NjcgMCAwIDAgMC0uNTMzWk04IDEyLjI0NmMtMi4xMTMgMC00LjExMy0xLjUyNi01LjI2Ny00IDEuMTU0LTIuNDczIDMuMTU0LTQgNS4yNjctNCAyLjExMyAwIDQuMTEzIDEuNTI3IDUuMjY3IDQtMS4xNTQgMi40NzQtMy4xNTQgNC01LjI2NyA0Wk04IDUuNThhMi42NjcgMi42NjcgMCAxIDAgMCA1LjMzM0EyLjY2NyAyLjY2NyAwIDAgMCA4IDUuNThabTAgNGExLjMzMyAxLjMzMyAwIDEgMSAwLTIuNjY3QTEuMzMzIDEuMzMzIDAgMCAxIDggOS41OFpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTUwIDE1MFxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48Y2lyY2xlIGN4PVxcXCI3NVxcXCIgY3k9XFxcIjc1XFxcIiByPVxcXCI3NVxcXCIgZmlsbD1cXFwidXJsKCNmb2xkZXJfc3ZnX19hKVxcXCIvPjxwYXRoIGQ9XFxcIk00NS41NDggNTQuMjJjMC0yLjM4IDAtMy41Ny40Ny00LjQ3NWE0LjE3OCA0LjE3OCAwIDAgMSAxLjc4Mi0xLjc4MWMuOTA2LS40NyAyLjA5NS0uNDcgNC40NzUtLjQ3aDE3LjU1N2MxLjAxMiAwIDEuNTE4IDAgMS45OTUuMTEzLjQwNi4wOTYuNzk1LjI1MyAxLjE1NC40NjUuNDIzLjI1Ljc4OC42IDEuNTE3IDEuMzAybC40My40MTZjLjczLjcwMiAxLjA5NCAxLjA1MyAxLjUxNyAxLjMwMi4zNi4yMTIuNzQ4LjM2OSAxLjE1NC40NjUuNDc3LjExNC45ODMuMTE0IDEuOTk2LjExNGgxNy43MThjMi4zNzkgMCAzLjU2OCAwIDQuNDc0LjQ3YTQuMTgyIDQuMTgyIDAgMCAxIDEuNzgyIDEuNzgyYy40Ny45MDYuNDcgMi4wOTUuNDcgNC40NzR2NDAuMDQ2YzAgMS4xOSAwIDEuNzg0LS4yMzUgMi4yMzdhMi4wODMgMi4wODMgMCAwIDEtLjg5MS44OTFjLS40NTMuMjM1LTEuMDQ4LjIzNS0yLjIzNy4yMzVINTEuNjAyYy0yLjE0MSAwLTMuMjEyIDAtNC4wMjctLjQyM2EzLjc2MyAzLjc2MyAwIDAgMS0xLjYwNC0xLjYwNGMtLjQyMy0uODE1LS40MjMtMS44ODUtLjQyMy00LjAyN1Y1NC4yMlpcXFwiIGZpbGw9XFxcInVybCgjZm9sZGVyX3N2Z19fYilcXFwiLz48cGF0aCBkPVxcXCJNNjYuNjU2IDYyLjMxMWgzOC41MzFjMS42NzIgMCAyLjkwNCAwIDMuODMuMTMzLjkyLjEzMyAxLjQ5OS4zOSAxLjg5NC44NzcuMzk0LjQ4Ni41MjggMS4xMDYuNDY3IDIuMDM0LS4wNjEuOTMzLS4zMTQgMi4xNC0uNjU4IDMuNzc1bC01Ljg5NCAyNy45OTJjLS4yMzUgMS4xMTctLjQwOCAxLjkzOC0uNjIxIDIuNTYyLS4yMTEuNjE5LS40NTUgMS4wMjMtLjgxOSAxLjMxOC0uMzYzLjI5NS0uODA4LjQ1LTEuNDU4LjUyOS0uNjU0LjA4LTEuNDkzLjA4MS0yLjYzNC4wODFINTAuMTU3Yy45Mi0xLjEwMSAxLjQyMi0yLjI0NSAxLjkxNy0zLjg2MS4yMjUtLjczNC40NS0xLjU2OC43MTItMi41NDJsLjE2OC0uNjIyYy4zMzctMS4yNDguNzQyLTIuNzE0IDEuMjgtNC40NzQgMS41NTItNS4wNiA1LjEwNS0xNy4yNDMgNi45ODgtMjMuNzIyLjI5Ny0xLjAyMS41MTUtMS43Ny43NTUtMi4zMzkuMjM4LS41NjMuNDktLjkzLjg0Mi0xLjE5NC4zNTItLjI2NS43NzQtLjQwNCAxLjM4Mi0uNDc1LjYxMi0uMDcyIDEuMzkyLS4wNzIgMi40NTUtLjA3MlpcXFwiIGZpbGw9XFxcIiNCOURERkZcXFwiIHN0cm9rZT1cXFwidXJsKCNmb2xkZXJfc3ZnX19jKVxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuMzlcXFwiLz48cGF0aCBkPVxcXCJNNjYuNjU2IDYyLjMxMWgzOC41MzFjMS42NzIgMCAyLjkwNCAwIDMuODMuMTMzLjkyLjEzMyAxLjQ5OS4zOSAxLjg5NC44NzcuMzk0LjQ4Ni41MjggMS4xMDYuNDY3IDIuMDM0LS4wNjEuOTMzLS4zMTQgMi4xNC0uNjU4IDMuNzc1bC01Ljg5NCAyNy45OTJjLS4yMzUgMS4xMTctLjQwOCAxLjkzOC0uNjIxIDIuNTYyLS4yMTEuNjE5LS40NTUgMS4wMjMtLjgxOSAxLjMxOC0uMzYzLjI5NS0uODA4LjQ1LTEuNDU4LjUyOS0uNjU0LjA4LTEuNDkzLjA4MS0yLjYzNC4wODFINTAuMTU3Yy45Mi0xLjEwMSAxLjQyMi0yLjI0NSAxLjkxNy0zLjg2MS4yMjUtLjczNC40NS0xLjU2OC43MTItMi41NDJsLjE2OC0uNjIyYy4zMzctMS4yNDguNzQyLTIuNzE0IDEuMjgtNC40NzQgMS41NTItNS4wNiA1LjEwNS0xNy4yNDMgNi45ODgtMjMuNzIyLjI5Ny0xLjAyMS41MTUtMS43Ny43NTUtMi4zMzkuMjM4LS41NjMuNDktLjkzLjg0Mi0xLjE5NC4zNTItLjI2NS43NzQtLjQwNCAxLjM4Mi0uNDc1LjYxMi0uMDcyIDEuMzkyLS4wNzIgMi40NTUtLjA3MlpcXFwiIGZpbGw9XFxcInVybCgjZm9sZGVyX3N2Z19fZClcXFwiIGZpbGwtb3BhY2l0eT1cXFwiLjhcXFwiIHN0cm9rZT1cXFwidXJsKCNmb2xkZXJfc3ZnX19lKVxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuMzlcXFwiLz48cGF0aCBkPVxcXCJNNTUuOTkzIDUxLjgyOGg4LjM1NmExLjkzMyAxLjkzMyAwIDAgMSAwIDMuODY2aC04LjM1NmExLjkzMyAxLjkzMyAwIDEgMSAwLTMuODY2WlxcXCIgZmlsbD1cXFwidXJsKCNmb2xkZXJfc3ZnX19mKVxcXCIgZmlsbC1vcGFjaXR5PVxcXCIuOVxcXCIgc3Ryb2tlPVxcXCJ1cmwoI2ZvbGRlcl9zdmdfX2cpXFxcIiBzdHJva2Utd2lkdGg9XFxcIi4zMTJcXFwiLz48ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XFxcImZvbGRlcl9zdmdfX2FcXFwiIHgxPVxcXCI3NVxcXCIgeTE9XFxcIjBcXFwiIHgyPVxcXCI3NVxcXCIgeTI9XFxcIjE1MFxcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIHN0b3AtY29sb3I9XFxcIiNFM0VDRkFcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIjFcXFwiIHN0b3AtY29sb3I9XFxcIiNEQUU3RkZcXFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cXFwiZm9sZGVyX3N2Z19fYlxcXCIgeDE9XFxcIjYyLjQyXFxcIiB5MT1cXFwiNTkuMzc0XFxcIiB4Mj1cXFwiMTA2LjU1NFxcXCIgeTI9XFxcIjc1LjcxOVxcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIHN0b3AtY29sb3I9XFxcIiM3RkMwRkJcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIjFcXFwiIHN0b3AtY29sb3I9XFxcIiM0MDg4RjRcXFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cXFwiZm9sZGVyX3N2Z19fY1xcXCIgeDE9XFxcIjQ2LjU5M1xcXCIgeTE9XFxcIjY0Ljk1MVxcXCIgeDI9XFxcIjY4Ljc0NlxcXCIgeTI9XFxcIjExOC4zNzJcXFwiIGdyYWRpZW50VW5pdHM9XFxcInVzZXJTcGFjZU9uVXNlXFxcIj48c3RvcCBzdG9wLWNvbG9yPVxcXCIjZmZmXFxcIi8+PHN0b3Agb2Zmc2V0PVxcXCIuNzY2XFxcIiBzdG9wLWNvbG9yPVxcXCIjZmZmXFxcIiBzdG9wLW9wYWNpdHk9XFxcIjBcXFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cXFwiZm9sZGVyX3N2Z19fZFxcXCIgeDE9XFxcIjEwOC41XFxcIiB5MT1cXFwiOThcXFwiIHgyPVxcXCI0MVxcXCIgeTI9XFxcIjk5LjVcXFwiIGdyYWRpZW50VW5pdHM9XFxcInVzZXJTcGFjZU9uVXNlXFxcIj48c3RvcCBzdG9wLWNvbG9yPVxcXCIjQjRENEY3XFxcIi8+PHN0b3Agb2Zmc2V0PVxcXCIuMTI4XFxcIiBzdG9wLWNvbG9yPVxcXCIjOEJCREZCXFxcIi8+PHN0b3Agb2Zmc2V0PVxcXCIuMjYyXFxcIiBzdG9wLWNvbG9yPVxcXCIjOTFDMkZCXFxcIi8+PHN0b3Agb2Zmc2V0PVxcXCIuNzU5XFxcIiBzdG9wLWNvbG9yPVxcXCIjOUZDRkZEXFxcIi8+PHN0b3Agb2Zmc2V0PVxcXCIxXFxcIiBzdG9wLWNvbG9yPVxcXCIjOUVDRUZEXFxcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XFxcImZvbGRlcl9zdmdfX2VcXFwiIHgxPVxcXCI0Ni41OTNcXFwiIHkxPVxcXCI2NC45NTFcXFwiIHgyPVxcXCI2OC43NDZcXFwiIHkyPVxcXCIxMTguMzcyXFxcIiBncmFkaWVudFVuaXRzPVxcXCJ1c2VyU3BhY2VPblVzZVxcXCI+PHN0b3Agc3RvcC1jb2xvcj1cXFwiI2ZmZlxcXCIvPjxzdG9wIG9mZnNldD1cXFwiLjc2NlxcXCIgc3RvcC1jb2xvcj1cXFwiI2ZmZlxcXCIgc3RvcC1vcGFjaXR5PVxcXCIwXFxcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XFxcImZvbGRlcl9zdmdfX2ZcXFwiIHgxPVxcXCI1Mi45NTJcXFwiIHkxPVxcXCI1MS4zOTNcXFwiIHgyPVxcXCI3MC4xMDZcXFwiIHkyPVxcXCI1Ni40NjFcXFwiIGdyYWRpZW50VW5pdHM9XFxcInVzZXJTcGFjZU9uVXNlXFxcIj48c3RvcCBzdG9wLWNvbG9yPVxcXCIjZmZmXFxcIi8+PHN0b3Agb2Zmc2V0PVxcXCIxXFxcIiBzdG9wLWNvbG9yPVxcXCIjZmZmXFxcIiBzdG9wLW9wYWNpdHk9XFxcIjBcXFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cXFwiZm9sZGVyX3N2Z19fZ1xcXCIgeDE9XFxcIjUxLjc4MlxcXCIgeTE9XFxcIjUyLjU2MlxcXCIgeDI9XFxcIjYwLjE3MVxcXCIgeTI9XFxcIjU1Ljg1XFxcIiBncmFkaWVudFVuaXRzPVxcXCJ1c2VyU3BhY2VPblVzZVxcXCI+PHN0b3Agc3RvcC1jb2xvcj1cXFwiI2ZmZlxcXCIvPjxzdG9wIG9mZnNldD1cXFwiMVxcXCIgc3RvcC1jb2xvcj1cXFwiI2ZmZlxcXCIgc3RvcC1vcGFjaXR5PVxcXCIwXFxcIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDI2NiA2M1xcXCI+PHBhdGggZD1cXFwiTS44MyA1OC45MVYyOC43aDguNzI1djMwLjIxSC44M1ptMzUuMDE3LTIuOTNjLTEuOTgzIDIuNDE2LTQuODM1IDMuNzc3LTguNjE1IDMuNzc3LTYuMDc2IDAtMTAuOTcxLTMuNzc4LTEwLjk3MS05LjYwMyAwLTUuNzYzIDQuODk4LTguNjEgMTEuNzc3LTguOTg1IDUuMjctLjMxIDYuOTQzLS44NjggNi45NDMtMi42NjMgMC0xLjczNi0xLjYxMS0yLjkxMy00LjQ2My0yLjkxMy0zLjQ3IDAtNC45NiAxLjczNi01LjE0NSAzLjU5NGgtOC40OTRjLjQzNC02LjYyOCA1LjM5Mi0xMS4yMTQgMTMuNzAxLTExLjIxNCA4LjEyMiAwIDEzLjMzIDQuMzk4IDEzLjMzIDEyLjYzN3YxOC40NjNoLTcuMjU0bC0uODA5LTMuMDk0Wm0tMTAuNzg2LTYuMTk1YzAgMS43MzYgMS41NSAyLjc4OCA0LjAzIDIuNzg4IDMuMzQ4IDAgNi4wMTItMS44NTggNi4wMTItNS42MzhWNDUuODJzLTEuNjExLjc0My00Ljk2LjkzYy0zLjY1OC4xODUtNS4wODIgMS4zNjItNS4wODIgMy4wMzVabTM4LjMwNyA5LjQxNmMtNi42MzIgMC0xMC40NzctMy44NC0xMC40NzctMTAuNTMzVjM2LjgzNmgtNS4wODN2LTguMTE3aDUuMDgzdi00LjQ2MWw4LjgwMi03LjQzNFYyOC43Mmg3LjYyNnY4LjExN2gtNy42MjZWNDcuNDNjMCAyLjkxMiAxLjkyMiAzLjU5MyAzLjcyIDMuNTkzYTkuNTM5IDkuNTM5IDAgMCAwIDMuNzIxLS44MDV2Ny45OTJjMCAuMDAyLTIuMzU1Ljk5Mi01Ljc2Ni45OTJaTS4wOCAxOS42MzRjMC0yLjg1IDIuMjMtNS4xNDIgNS4wODItNS4xNDJhNS4xMyA1LjEzIDAgMCAxIDUuMTQ1IDUuMTQyYzAgMi43ODgtMi4yOTMgNS4wOC01LjE0NSA1LjA4YTUuMDYzIDUuMDYzIDAgMCAxLTUuMDgyLTUuMDhaTTc1LjgwOSA1OC45MVYyOC43aDguNzI2djMwLjIxaC04LjcyNlptMjAuMTU0LTM5LjIwMmMwLTEuNC0uMTktMi43Ni0uNTM3LTQuMDUzYTE1LjUxIDE1LjUxIDAgMCAwLTEuNTY5LTMuNzcyIDE1LjY2NSAxNS42NjUgMCAwIDAtMi40ODktMy4yNDEgMTUuNzMyIDE1LjczMiAwIDAgMC03LjAxOC00LjA1IDE1LjY1OCAxNS42NTggMCAwIDAtNC4wNTItLjUzM2gtLjAwNmExNS43NSAxNS43NSAwIDAgMC00LjA0OS41M2MtMS4zNC4zNTctMi42MDUuODg4LTMuNzc3IDEuNTY1QTE1LjY3IDE1LjY3IDAgMCAwIDY5LjIyIDguNjRhMTUuNzcgMTUuNzcgMCAwIDAtMi40OTIgMy4yNDIgMTUuNjQ4IDE1LjY0OCAwIDAgMC0xLjU3MiAzLjc3NGwyLjI0Mi42MDJhMTMuNDI3IDEzLjQyNyAwIDAgMSAzLjQ2Mi01Ljk3OCAxMy40MjYgMTMuNDI2IDAgMCAxIDUuOTg0LTMuNDUgMTMuNDI2IDEzLjQyNiAwIDAgMSAzLjQ0OC0uNDVoLjAwNmMxLjE5NSAwIDIuMzUuMTU4IDMuNDU0LjQ1M2ExMy40MTIgMTMuNDEyIDAgMCAxIDUuOTggMy40NDljLjgxOS44MiAxLjUzMSAxLjc1IDIuMTE5IDIuNzZhMTMuMyAxMy4zIDAgMCAxIDEuNzkzIDYuNjY0di4wMTJhMTMuMzggMTMuMzggMCAwIDEtLjQ1MSAzLjQ0MyAxMy4yMTcgMTMuMjE3IDAgMCAxLTEuMzM0IDMuMjE5bDIuMDEgMS4xNmExNS41MzkgMTUuNTM5IDAgMCAwIDEuNTY2LTMuNzc4IDE1LjcgMTUuNyAwIDAgMCAuNTMtNC4wNDFsLS4wMDItLjAxMlpcXFwiIGZpbGw9XFxcIiNmZmZcXFwiLz48cGF0aCBkPVxcXCJNMTAwLjAyMyAxOS43MDhhMTkuNjU1IDE5LjY1NSAwIDAgMC0yLjY0NC05Ljg1NSAxOS44MSAxOS44MSAwIDAgMC03LjIyLTcuMjEzQTE5LjYxMiAxOS42MTIgMCAwIDAgODUuNDAzLjY3IDE5LjgxIDE5LjgxIDAgMCAwIDgwLjI5OCAwaC0uMDA2Yy0xLjc2NSAwLTMuNDczLjIzMy01LjEwMi42NjZhMTkuNTEzIDE5LjUxMyAwIDAgMC00Ljc1OSAxLjk2OSAxOS44MjQgMTkuODI0IDAgMCAwLTQuMDg2IDMuMTM0bDEuMjMxIDEuMjNhMTguMTA2IDE4LjEwNiAwIDAgMSAzLjcyNi0yLjg1NSAxNy44MDMgMTcuODAzIDAgMCAxIDQuMzQtMS43OTMgMTguMDg0IDE4LjA4NCAwIDAgMSA0LjY0OC0uNjA3aC4wMDVhMTcuOTUgMTcuOTUgMCAwIDEgMTIuNzEzIDUuMjYxIDE3LjkzMyAxNy45MzMgMCAwIDEgNS4yNzMgMTIuNzAzdi4wMTFhMTguMDMgMTguMDMgMCAwIDEtLjYwNyA0LjY0MyAxNy42NzUgMTcuNjc1IDAgMCAxLTEuNzk3IDQuMzM3IDE4LjAyMyAxOC4wMjMgMCAwIDEtMi44NTcgMy43MjNsMS4yMzEgMS4yMzFhMTkuNzQzIDE5Ljc0MyAwIDAgMCAzLjEzNi00LjA4NCAxOS42IDE5LjYgMCAwIDAgMS45Ny00Ljc1NmMuNDM0LTEuNjI1LjY2Ni0zLjMzMi42NjYtNS4wOTR2LS4wMVpcXFwiIGZpbGw9XFxcIiNmZmZcXFwiLz48cGF0aCBkPVxcXCJNOTAuOTQ1IDE2Ljg1NWExMC45NDggMTAuOTQ4IDAgMCAwLTEuMTA0LTIuNjU1IDExLjE1NSAxMS4xNTUgMCAwIDAtMS43NS0yLjI4IDExLjA0OCAxMS4wNDggMCAwIDAtMi4yODItMS43NDdBMTAuOTY0IDEwLjk2NCAwIDAgMCA4MC4zIDguNjk1aC0uMDA2Yy0uOTg3IDAtMS45NC4xMy0yLjg0OS4zNzJhMTAuOTEgMTAuOTEgMCAwIDAtMi42NiAxLjEgMTAuOTk0IDEwLjk5NCAwIDAgMC00LjAzNyA0LjAyNyAxMSAxMSAwIDAgMC0xLjQ4NCA1LjUxdi4wMTJhMTAuOTI0IDEwLjkyNCAwIDAgMCAxLjQ3NiA1LjUwNWwzLjAxMy0xLjczOGE3LjUzNSA3LjUzNSAwIDAgMS0xLjAxLTMuNzd2LS4wMWE3LjU1MyA3LjU1MyAwIDAgMSA3LjU0OC03LjUzM2guMDA2YTcuNTI0IDcuNTI0IDAgMCAxIDMuNzY5IDEuMDEyIDcuNTUgNy41NSAwIDAgMSAzLjUxMyA0LjU3MmMuMTY3LjYyLjI1OCAxLjI3Ni4yNTggMS45NTFoMy40NzljLjAwMy0uOTg0LS4xMjgtMS45NC0uMzcyLTIuODVaXFxcIiBmaWxsPVxcXCIjZmZmXFxcIi8+PHBhdGggZD1cXFwiTTg3LjU4NSAxNy43NjVhNy41NDIgNy41NDIgMCAwIDAtMS45NTUtMy4zOGwtMS42NCAxLjYzOWE1LjI2NCA1LjI2NCAwIDAgMSAxLjM1NCAyLjM0MyA1LjE4NCA1LjE4NCAwIDAgMSAwIDIuNzA1IDUuMjM5IDUuMjM5IDAgMCAxLTMuNjk4IDMuNjk1IDUuMTk1IDUuMTk1IDAgMCAxLTIuNzA3IDAgNS4yOTYgNS4yOTYgMCAwIDEtMS4yNi0uNTIxbC0xLjE2IDIuMDA4YTcuNTI4IDcuNTI4IDAgMCAwIDMuNzc0IDEuMDFjLjY3NyAwIDEuMzMtLjA5MSAxLjk1NC0uMjU2YTcuNTUzIDcuNTUzIDAgMCAwIDQuNTg0LTMuNTE3IDcuNTQ0IDcuNTQ0IDAgMCAwIDEuMDEzLTMuNzcxIDcuNSA3LjUgMCAwIDAtLjI1OS0xLjk1NVpcXFwiIGZpbGw9XFxcIiMxNTUzNjZcXFwiLz48cGF0aCBkPVxcXCJNOTEuODUzIDEzLjA0NmExMy40MzUgMTMuNDM1IDAgMCAwLTIuMTItMi43NjUgMTMuMzQzIDEzLjM0MyAwIDAgMC0yLjc2Ni0yLjExOCAxMy4yODcgMTMuMjg3IDAgMCAwLTYuNjc1LTEuNzljLTEuMTk3IDAtMi4zNTIuMTU5LTMuNDU2LjQ1NC0xLjE0MS4zMDMtMi4yMi43NTctMy4yMTggMS4zMzZhMTMuNDM2IDEzLjQzNiAwIDAgMC0yLjc2NyAyLjExOCAxMy4zMzQgMTMuMzM0IDAgMCAwLTIuMTIgMi43NjUgMTMuMjcyIDEzLjI3MiAwIDAgMC0xLjc5IDYuNjdoMi4zMmMwLS45ODYuMTMxLTEuOTQyLjM3NS0yLjg1MmExMS4wODggMTEuMDg4IDAgMCAxIDIuODU1LTQuOTQgMTEuMDAyIDExLjAwMiAwIDAgMSAyLjI4NC0xLjc1IDExLjAzIDExLjAzIDAgMCAxIDIuNjYtMS4xMDQgMTEuMDIgMTEuMDIgMCAwIDEgMi44NTQtLjM3NGMuOTg4IDAgMS45NDQuMTMgMi44NTUuMzc0YTExLjA5OSAxMS4wOTkgMCAwIDEgNC45NDMgMi44NTMgMTAuOTkgMTAuOTkgMCAwIDEgMS43NTEgMi4yODNjLjQ3Ny44MjYuODUyIDEuNzE2IDEuMTA0IDIuNjU4bDIuMjQyLS42MDJhMTMuMTk0IDEzLjE5NCAwIDAgMC0xLjMzLTMuMjE2WlxcXCIgZmlsbD1cXFwiIzE1NTM2NlxcXCIvPjxwYXRoIGQ9XFxcIk05Ny42NzQgMTUuMDYzYTE3Ljc5MSAxNy43OTEgMCAwIDAtMS44LTQuMzM2IDE4LjA0MyAxOC4wNDMgMCAwIDAtNi41ODYtNi41ODMgMTcuOTMgMTcuOTMgMCAwIDAtOC45OTYtMi40MDhjLTEuNjEyIDAtMy4xNzIuMjEzLTQuNjU3LjYxYTE3LjgxNyAxNy44MTcgMCAwIDAtNC4zMzkgMS43OTggMTguMDMyIDE4LjAzMiAwIDAgMC02LjU4NiA2LjU4M2wyLjAxMiAxLjE2M2ExNS42NzYgMTUuNjc2IDAgMCAxIDIuNDg5LTMuMjQ1Yy45NjUtLjk2NCAyLjA1Ny0xLjggMy4yNDYtMi40ODdhMTUuNzA2IDE1LjcwNiAwIDAgMSAzLjc3Ny0xLjU2OSAxNS42OCAxNS42OCAwIDAgMSA4LjExIDBjMS4zNC4zNTggMi42MDYuODkxIDMuNzc4IDEuNTY5YTE1LjY4NSAxNS42ODUgMCAwIDEgMy4yNDYgMi40ODcgMTUuNjc2IDE1LjY3NiAwIDAgMSAyLjQ4OSAzLjI0NSAxNS42ODQgMTUuNjg0IDAgMCAxIDEuNTY5IDMuNzc0IDE1LjY1NCAxNS42NTQgMCAwIDEgMCA4LjEwNmwyLjI0NS42MDFjLjM5Ny0xLjQ4My42MS0zLjA0My42MS00LjY1NGExNy44NzUgMTcuODc1IDAgMCAwLS42MDgtNC42NTRaXFxcIiBmaWxsPVxcXCIjMTU1MzY2XFxcIi8+PHBhdGggZD1cXFwiTTgwLjI5MyAyNC45NDRjMi44ODggMCA1LjIzLTIuMzQgNS4yMy01LjIyN2E1LjIyOSA1LjIyOSAwIDAgMC01LjIzLTUuMjI3IDUuMjI4IDUuMjI4IDAgMCAwLTUuMjMgNS4yMjcgNS4yMjggNS4yMjggMCAwIDAgNS4yMyA1LjIyN1ptMjAuNjE1IDE1LjQzNlYyOS41NDNoMi4zMDRWNDAuMzhoLTIuMzA0Wm02LjYxOC0zLjc4N3YzLjc4N2gtMi4xOTZ2LTcuNTc2aDIuMTY1di41MjVhMi41MzkgMi41MzkgMCAwIDEgMS43OTMtLjcxMmMxLjg1NiAwIDMuMDc5IDEuMjA2IDMuMDc5IDMuMzU1djQuNDA1aC0yLjE5NnYtNC4yMzVjMC0uODAyLS4zNzItMS40ODMtMS4yNTQtMS40ODMtMS4wMzMuMDAzLTEuMzkxLjc3NC0xLjM5MSAxLjkzNFptOS42NjYgMy44MTdjLTEuNjU1IDAtMi42MTQtLjk1OC0yLjYxNC0yLjYyOHYtMi45NTNoLTEuMjY4di0yLjAyNWgxLjI2OHYtMS4xMTFsMi4xOTYtMS44NTV2Mi45N2gxLjkwMnYyLjAyNGgtMS45MDJ2Mi42NDNjMCAuNzI3LjQ4Ljg5Ny45MjguODk3LjUxMSAwIC45MjgtLjIwMi45MjgtLjIwMnYxLjk5NHMtLjU4Ny4yNDctMS40MzguMjQ3Wm0xMC4xOTMtMy4yM2gtNS4zNTJjLjEyNS43NzUuNzU3IDEuMzYyIDEuNyAxLjM2Mi42MzUgMCAxLjAwNC0uMjY0IDEuMjM3LS42NWgyLjM2N2MtLjUxMSAxLjY0LTEuNjg2IDIuNjYtMy41NzMgMi42Ni0yLjE5NyAwLTMuOTU5LTEuNTMtMy45NTktMy45MSAwLTIuMjg5IDEuNjA5LTQuMDE5IDMuODM3LTQuMDE5IDIuNDg5IDAgMy43NTcgMS45NjMgMy43NTcgMy45ODggMCAuMTk4LS4wMTQuNTctLjAxNC41N1ptLTMuNzE1LTIuNjI4Yy0uODM0IDAtMS4zOTMuNTEtMS41MzIgMS4xNmgyLjk0Yy0uMDQ2LS42NjQtLjYxOS0xLjE2LTEuNDA4LTEuMTZabTEwLjIzOS0xLjMxNXYyLjE2NHMtLjU3My0uNTg3LTEuNDM5LS41ODdjLS42NjQgMC0xLjQwNy4zNTQtMS40MDcgMS40Njl2NC4wOTVoLTIuMTk3di03LjU3NWgyLjE2NXYuNjM1Yy0uMDE0IDAgLjQzNS0uNzQzIDEuNTE2LS43NDMuOTI4IDAgMS4zNjIuNTQyIDEuMzYyLjU0MlptMy40MDMgMy4zNTZ2My43ODdoLTIuMTk3di03LjU3NmgyLjE2NXYuNTI1YTIuNTQzIDIuNTQzIDAgMCAxIDEuNzk0LS43MTJjMS44NTYgMCAzLjA3OSAxLjIwNiAzLjA3OSAzLjM1NXY0LjQwNWgtMi4xOTd2LTQuMjM1YzAtLjgwMi0uMzcxLTEuNDgzLTEuMjU0LTEuNDgzLTEuMDM2LjAwMy0xLjM5Ljc3NC0xLjM5IDEuOTM0Wm0xMS4xNjYgMy4wMTVjLS40OTYuNjA0LTEuMjA2Ljk0NS0yLjE1MS45NDUtMS41MTUgMC0yLjczOC0uOTQ1LTIuNzM4LTIuMzk3IDAtMS40MzggMS4yMi0yLjE1IDIuOTM3LTIuMjQgMS4zMTQtLjA3NyAxLjczNC0uMjE2IDEuNzM0LS42NjQgMC0uNDM0LS40MDMtLjcyNi0xLjExMy0uNzI2LS44NjUgMC0xLjIzNy40MzQtMS4yODUuODk2aC0yLjEyYy4xMDgtMS42NTMgMS4zNDUtMi43OTkgMy40Mi0yLjc5OSAyLjAyNiAwIDMuMzI2IDEuMDk4IDMuMzI2IDMuMTU0djQuNjA2aC0xLjgxMWwtLjE5OS0uNzc1Wm0tMi42OTMtMS41NDVjMCAuNDM0LjM4Ni42OTQgMS4wMDUuNjk0LjgzNCAwIDEuNTAxLS40NjIgMS41MDEtMS40MDZ2LS4yNzhzLS40MDMuMTg0LTEuMjM3LjIzMmMtLjkxNC4wNDYtMS4yNjkuMzQtMS4yNjkuNzU4Wm05LjU1OCAyLjM0N2MtMS42NTUgMC0yLjYxNC0uOTU4LTIuNjE0LTIuNjI4di0yLjk1M2gtMS4yNjl2LTIuMDI1aDEuMjY5di0xLjExMWwyLjE5Ni0xLjg1NXYyLjk3aDEuOTAydjIuMDI0aC0xLjkwMnYyLjY0M2MwIC43MjcuNDguODk3LjkyOC44OTcuNTExIDAgLjkyOC0uMjAyLjkyOC0uMjAydjEuOTk0cy0uNTkuMjQ3LTEuNDM4LjI0N1ptMi45NTEtOS43NTNjMC0uNzEyLjU1Ni0xLjI4MiAxLjI2OC0xLjI4Mi43MTMgMCAxLjI4Ni41NzMgMS4yODYgMS4yODIgMCAuNjk1LS41NzMgMS4yNjgtMS4yODYgMS4yNjhhMS4yNjQgMS4yNjQgMCAwIDEtMS4yNjgtMS4yNjhabS4xNyA5LjcyMnYtNy41NzVoMi4xOTd2Ny41NzVoLTIuMTk3Wm0zLjc4OS0zLjc4NmMwLTIuMjcyIDEuNzQ4LTMuOTc0IDQuMDM4LTMuOTc0czQuMDM1IDEuNzAyIDQuMDM1IDMuOTc0YzAgMi4yNzEtMS43NDggMy45NTYtNC4wMzUgMy45NTYtMi4yOSAwLTQuMDM4LTEuNjg1LTQuMDM4LTMuOTU2Wm0yLjI0NSAwYzAgMS4xMTEuNzU3IDEuOTE3IDEuNzkzIDEuOTE3czEuNzk0LS44MDMgMS43OTQtMS45MTdjMC0xLjExMi0uNzU4LTEuOTE4LTEuNzk0LTEuOTE4cy0xLjc5My44MDMtMS43OTMgMS45MThabTkuNTQgMHYzLjc4N2gtMi4xOTZ2LTcuNTc2aDIuMTY1di41MjVhMi41NCAyLjU0IDAgMCAxIDEuNzkzLS43MTJjMS44NTYgMCAzLjA3OSAxLjIwNiAzLjA3OSAzLjM1NXY0LjQwNWgtMi4xOTZ2LTQuMjM1YzAtLjgwMi0uMzcyLTEuNDgzLTEuMjU0LTEuNDgzLTEuMDM2LjAwMy0xLjM5MS43NzQtMS4zOTEgMS45MzRabTExLjE2NyAzLjAxNWMtLjQ5Ny42MDQtMS4yMDYuOTQ1LTIuMTUxLjk0NS0xLjUxNiAwLTIuNzM5LS45NDUtMi43MzktMi4zOTcgMC0xLjQzOCAxLjIyMS0yLjE1IDIuOTM3LTIuMjQgMS4zMTQtLjA3NyAxLjczNC0uMjE2IDEuNzM0LS42NjQgMC0uNDM0LS40MDMtLjcyNi0xLjExMi0uNzI2LS44NjYgMC0xLjIzNy40MzQtMS4yODYuODk2aC0yLjExOWMuMTA3LTEuNjUzIDEuMzQ1LTIuNzk5IDMuNDE5LTIuNzk5IDIuMDI2IDAgMy4zMjYgMS4wOTggMy4zMjYgMy4xNTR2NC42MDZoLTEuODFsLS4xOTktLjc3NVptLTIuNjkzLTEuNTQ1YzAgLjQzNC4zODYuNjk0IDEuMDA0LjY5NC44MzUgMCAxLjUwMi0uNDYyIDEuNTAyLTEuNDA2di0uMjc4cy0uNDAzLjE4NC0xLjIzOC4yMzJjLS45MTEuMDQ2LTEuMjY4LjM0LTEuMjY4Ljc1OFptNi41MjQgMi4zMTdWMjkuNTQzaDIuMTk2VjQwLjM4aC0yLjE5NlptMTQuMDg5LTEwLjgzNyA0LjI0IDEwLjgzN2gtMi4zODFsLS44NjYtMi4xMzNoLTQuMTkxbC0uODUxIDIuMTMzaC0yLjM4MWw0LjIzOS0xMC44MzdoMi4xOTFabS0xLjA5OCAzLjEyMy0xLjM0NSAzLjUzOWgyLjY5bC0xLjM0NS0zLjU0Wm02LjM4NS0yLjAwOWMwLS43MTIuNTU2LTEuMjgyIDEuMjY5LTEuMjgyLjcxMiAwIDEuMjg1LjU3MyAxLjI4NSAxLjI4MiAwIC42OTUtLjU3MyAxLjI2OC0xLjI4NSAxLjI2OGExLjI2NCAxLjI2NCAwIDAgMS0xLjI2OS0xLjI2OFptLjE3IDkuNzIydi03LjU3NWgyLjE5N3Y3LjU3NWgtMi4xOTdabTMuNzg5LTMuNzg2YzAtMi4zOTYgMS43MTYtMy45NzMgMy44MTktMy45NzMuODY2IDAgMS41OTIuMzIzIDEuOTgxLjY2NHYtMy43NDFoMi4xOTZWNDAuMzhoLTIuMTY1di0uNTQyYy0uNC4zODYtMS4xNi43MTItMi4wMDkuNzEyLTIuMTA2IDAtMy44MjItMS41MTUtMy44MjItMy45NTZabTUuODMxIDBjMC0xLjE3NC0uNzcyLTEuOTgtMS43OTMtMS45OC0xLjAyMiAwLTEuNzk0LjgwMy0xLjc5NCAxLjk4IDAgMS4xNzUuNzcyIDEuOTggMS43OTQgMS45OCAxLjAyMSAwIDEuNzkzLS44MDUgMS43OTMtMS45OFpNMTAwLjE5NiA0OC4wOWg4LjUyMnYyLjExOGgtMy4xMXY4LjcxOWgtMi4zMDR2LTguNzE5aC0zLjExMVY0OC4wOWguMDAzWm0xMy44ODggMy42OTJ2Mi4xNjRzLS41NzMtLjU4Ny0xLjQzOS0uNTg3Yy0uNjY0IDAtMS40MDcuMzU0LTEuNDA3IDEuNDY5djQuMDk1aC0yLjE5NnYtNy41NzVoMi4xNjV2LjYzNWMtLjAxNCAwIC40MzQtLjc0MyAxLjUxNS0uNzQzLjkzMS4wMDMgMS4zNjIuNTQyIDEuMzYyLjU0MlptNS44OTEgNi4zNzFjLS40OTYuNjA0LTEuMjA2Ljk0NS0yLjE1MS45NDUtMS41MTUgMC0yLjczOC0uOTQ1LTIuNzM4LTIuMzk3IDAtMS40MzggMS4yMi0yLjE1IDIuOTM3LTIuMjQgMS4zMTQtLjA3NyAxLjczNC0uMjE2IDEuNzM0LS42NjQgMC0uNDM0LS40MDMtLjcyNi0xLjExMi0uNzI2LS44NjYgMC0xLjIzOC40MzQtMS4yODYuODk2aC0yLjEyYy4xMDgtMS42NTMgMS4zNDUtMi43OTkgMy40Mi0yLjc5OSAyLjAyNiAwIDMuMzI2IDEuMDk4IDMuMzI2IDMuMTU0djQuNjA1aC0xLjgxMWwtLjE5OS0uNzc0Wm0tMi42OS0xLjU0NWMwIC40MzQuMzg2LjY5NSAxLjAwNS42OTUuODM0IDAgMS41MDEtLjQ2MyAxLjUwMS0xLjQwN3YtLjI3OHMtLjQwMy4xODQtMS4yMzcuMjMyYy0uOTE0LjA0Ni0xLjI2OS4zNC0xLjI2OS43NThabTguNzIxLTEuNDd2My43ODdoLTIuMTk3di03LjU3NmgyLjE2NXYuNTI1YTIuNTQgMi41NCAwIDAgMSAxLjc5NC0uNzEyYzEuODU2IDAgMy4wNzkgMS4yMDUgMy4wNzkgMy4zNTV2NC40MDVoLTIuMTk3di00LjIzNWMwLS44MDItLjM3MS0xLjQ4My0xLjI1NC0xLjQ4My0xLjAzMy4wMDMtMS4zOS43NzQtMS4zOSAxLjkzNFptMTAuNzk1IDEuNjA3YzAtLjIzMi0uMTM5LS40MTYtLjc0NC0uNTQxbC0xLjE0My0uMjMzYy0xLjcxNy0uMzQtMi40NDQtMS4xNi0yLjQ0NC0yLjI4OCAwLTEuMzMgMS4wMDUtMi41MTkgMy4wOTQtMi41MTkgMi4xMDIgMCAzLjA0NyAxLjE3NCAzLjIwMSAyLjQ5aC0yLjA4OWMtLjEyNS0uNDE3LS40OC0uNjY0LTEuMTI5LS42NjQtLjYxOSAwLS45Ni4yMTYtLjk2LjUyNSAwIC4yMzMuMTg1LjM3Mi43NTguNDhsMS4xNDQuMjMyYzEuNjIzLjMyMyAyLjQyOSAxLjA4MyAyLjQyOSAyLjM4IDAgMS40NjktMS4wNjcgMi40OS0zLjE4NyAyLjQ5LTIuMTY1IDAtMy4zMjYtMS4wMjEtMy41NDItMi41OThoMi4yMTRjLjEyNS41MjQuNTExLjgwMiAxLjMyOC44MDIuNzQ2IDAgMS4wNy0uMjE1IDEuMDctLjU1NlptMTEuNTUyLTEuNjA4YzAgMi4zOTctMS43MTcgMy45NTctMy44MTkgMy45NTctLjg2NiAwLTEuNTkyLS4zMS0xLjk4MS0uNjV2My40NzdoLTIuMTk3VjUxLjM0OGgyLjE2NnYuNTQyYy40MDMtLjM4NiAxLjE2LS43MjYgMi4wMTItLjcyNiAyLjEwMiAwIDMuODE5IDEuNTE3IDMuODE5IDMuOTczWm0tNS44MzEgMGMwIDEuMTc1Ljc3NCAxLjk4IDEuNzkzIDEuOTggMS4wMjIgMCAxLjc5NC0uODAzIDEuNzk0LTEuOTggMC0xLjE3NC0uNzcyLTEuOTgtMS43OTQtMS45OC0xLjAxOS4wMDQtMS43OTMuODA2LTEuNzkzIDEuOThabTExLjg3OSAzLjAxNmMtLjQ5Ny42MDQtMS4yMDYuOTQ1LTIuMTUxLjk0NS0xLjUxNiAwLTIuNzM5LS45NDUtMi43MzktMi4zOTcgMC0xLjQzOCAxLjIyLTIuMTUgMi45MzctMi4yNCAxLjMxNC0uMDc3IDEuNzM0LS4yMTYgMS43MzQtLjY2NCAwLS40MzQtLjQwMy0uNzI2LTEuMTEyLS43MjYtLjg2NiAwLTEuMjM3LjQzNC0xLjI4Ni44OTZoLTIuMTJjLjEwOC0xLjY1MyAxLjM0Ni0yLjc5OSAzLjQyLTIuNzk5IDIuMDI2IDAgMy4zMjYgMS4wOTggMy4zMjYgMy4xNTR2NC42MDVoLTEuODExbC0uMTk4LS43NzRabS0yLjY5My0xLjU0NWMwIC40MzQuMzg2LjY5NSAxLjAwNC42OTUuODM1IDAgMS41MDEtLjQ2MyAxLjUwMS0xLjQwN3YtLjI3OHMtLjQwMy4xODQtMS4yMzcuMjMyYy0uOTExLjA0Ni0xLjI2OC4zNC0xLjI2OC43NThabTExLjU2Ni00LjgyNnYyLjE2NHMtLjU3My0uNTg3LTEuNDM5LS41ODdjLS42NjQgMC0xLjQwNy4zNTQtMS40MDcgMS40Njl2NC4wOTVoLTIuMTk3di03LjU3NWgyLjE2NnYuNjM1Yy0uMDE1IDAgLjQzNC0uNzQzIDEuNTE1LS43NDMuOTI4LjAwMyAxLjM2Mi41NDIgMS4zNjIuNTQyWm04LjQyOCAzLjk0NGgtNS4zNTJjLjEyNS43NzQuNzU4IDEuMzYgMS43MDMgMS4zNi42MzYgMCAxLjAwNS0uMjYzIDEuMjM3LS42NDloMi4zNjdjLS41MTEgMS42NC0xLjY4NiAyLjY2LTMuNTczIDIuNjYtMi4xOTYgMC0zLjk1OS0xLjUzLTMuOTU5LTMuOTEgMC0yLjI4OSAxLjYxLTQuMDE5IDMuODM3LTQuMDE5IDIuNDg5IDAgMy43NTcgMS45NjMgMy43NTcgMy45ODggMCAuMi0uMDE3LjU3LS4wMTcuNTdabS0zLjcxMS0yLjYyN2MtLjgzNSAwLTEuMzk0LjUxLTEuNTMzIDEuMTZoMi45NGMtLjA0NS0uNjY2LS42MTktMS4xNi0xLjQwNy0xLjE2Wm03LjM5MiAyLjAzOXYzLjc4N2gtMi4xOTZ2LTcuNTc2aDIuMTY1di41MjVhMi41MzggMi41MzggMCAwIDEgMS43OTMtLjcxMmMxLjg1NiAwIDMuMDc5IDEuMjA1IDMuMDc5IDMuMzU1djQuNDA1aC0yLjE5NnYtNC4yMzVjMC0uODAyLS4zNzItMS40ODMtMS4yNTQtMS40ODMtMS4wMzYuMDAzLTEuMzkxLjc3NC0xLjM5MSAxLjkzNFptMTEuNTY3LjgzN2gyLjQxMmMtLjM1NyAxLjg0LTEuNzQ4IDMuMTIzLTMuNzkxIDMuMTIzLTIuMjkgMC0zLjk5LTEuNjg1LTMuOTktMy45NTcgMC0yLjI3MSAxLjcwMy0zLjk3MyAzLjk5LTMuOTczIDEuOTk1IDAgMy4zODggMS4yMzYgMy42NjYgMy4wMjloLTIuNDE1Yy0uMTctLjU3My0uNjY0LS45NTktMS4zMjgtLjk1OS0uOTI4IDAtMS42NzEuNzg5LTEuNjcxIDEuOSAwIDEuMTEyLjc0MyAxLjkgMS43MDMgMS45LjcxMi4wMDQgMS4yNC0uNDE2IDEuNDI0LTEuMDYzWm01LjEwMiA2LjAyN2MtLjk5IDAtMS40ODQtLjI2NC0xLjQ4NC0uMjY0di0yLjAxcy40NDguMjMyLjkyOC4yMzJjLjQ5NiAwIDEuMTQzLS4xODQgMS4yOTktMS4wMzVsLTIuOTU0LTcuNTc1aDIuNDQ0bDEuNzE3IDQuNjk5IDEuNzQ4LTQuN2gyLjM0OWwtMy4wNzkgNy43Yy0uODAzIDIuMDI2LTEuNDUzIDIuOTUzLTIuOTY4IDIuOTUzWm0xMS41OTgtMy4wNzVWNDguMDloMi4zMDV2MTAuODM3aC0yLjMwNVptNi42MTgtMy43ODl2My43ODdoLTIuMTk3di03LjU3NmgyLjE2NnYuNTI1YTIuNTM4IDIuNTM4IDAgMCAxIDEuNzkzLS43MTJjMS44NTYgMCAzLjA3OSAxLjIwNSAzLjA3OSAzLjM1NXY0LjQwNWgtMi4xOTZ2LTQuMjM1YzAtLjgwMi0uMzcyLTEuNDgzLTEuMjU1LTEuNDgzLTEuMDMzLjAwMy0xLjM5Ljc3NC0xLjM5IDEuOTM0Wm02LjU0MS01LjkzNmMwLS43MTIuNTU2LTEuMjgyIDEuMjY4LTEuMjgyczEuMjg2LjU3MyAxLjI4NiAxLjI4MmExLjI4IDEuMjggMCAwIDEtMS4yODYgMS4yNjggMS4yNjQgMS4yNjQgMCAwIDEtMS4yNjgtMS4yNjhabS4xNyA5LjcyNXYtNy41NzVoMi4xOTZ2Ny41NzVoLTIuMTk2Wm03LjI1NC4wMjljLTEuNjU1IDAtMi42MTQtLjk1OS0yLjYxNC0yLjYzdi0yLjk1MmgtMS4yNjhWNTEuMzVoMS4yNjh2LTEuMTExbDIuMTk2LTEuODU1djIuOTdoMS45MDJ2Mi4wMjRoLTEuOTAydjIuNjQzYzAgLjcyNi40OC44OTcuOTI4Ljg5Ny41MTEgMCAuOTI4LS4yMDIuOTI4LS4yMDJ2MS45OTRzLS41ODcuMjQ3LTEuNDM4LjI0N1ptMi45NTQtOS43NTRjMC0uNzEyLjU1Ni0xLjI4MiAxLjI2OC0xLjI4MnMxLjI4Ni41NzMgMS4yODYgMS4yODJhMS4yOCAxLjI4IDAgMCAxLTEuMjg2IDEuMjY4IDEuMjY0IDEuMjY0IDAgMCAxLTEuMjY4LTEuMjY4Wm0uMTcgOS43MjV2LTcuNTc1aDIuMTk2djcuNTc1aC0yLjE5NlptOC43NTQtLjc3NGMtLjQ5Ni42MDQtMS4yMDYuOTQ1LTIuMTUxLjk0NS0xLjUxNSAwLTIuNzM4LS45NDUtMi43MzgtMi4zOTcgMC0xLjQzOCAxLjIyLTIuMTUgMi45MzctMi4yNCAxLjMxNC0uMDc3IDEuNzM0LS4yMTYgMS43MzQtLjY2NCAwLS40MzQtLjQwMy0uNzI2LTEuMTEzLS43MjYtLjg2NSAwLTEuMjM3LjQzNC0xLjI4NS44OTZoLTIuMTJjLjEwOC0xLjY1MyAxLjM0NS0yLjc5OSAzLjQxOS0yLjc5OSAyLjAyNyAwIDMuMzI2IDEuMDk4IDMuMzI2IDMuMTU0djQuNjA1aC0xLjgxbC0uMTk5LS43NzRabS0yLjY5My0xLjU0NWMwIC40MzQuMzg2LjY5NSAxLjAwNS42OTUuODM0IDAgMS41MDEtLjQ2MyAxLjUwMS0xLjQwN3YtLjI3OHMtLjQwMy4xODQtMS4yMzcuMjMyYy0uOTE0LjA0Ni0xLjI2OS4zNC0xLjI2OS43NThabTkuNTU4IDIuMzQ4Yy0xLjY1NSAwLTIuNjE0LS45NTktMi42MTQtMi42M3YtMi45NTJoLTEuMjY4VjUxLjM1aDEuMjY4di0xLjExMWwyLjE5Ny0xLjg1NXYyLjk3aDEuOTAxdjIuMDI0aC0xLjkwMXYyLjY0M2MwIC43MjYuNDc5Ljg5Ny45MjguODk3LjUxIDAgLjkyOC0uMjAyLjkyOC0uMjAydjEuOTk0cy0uNTg4LjI0Ny0xLjQzOS4yNDdabTIuOTUxLTkuNzU0YzAtLjcxMi41NTYtMS4yODIgMS4yNjktMS4yODIuNzEyIDAgMS4yODUuNTczIDEuMjg1IDEuMjgyIDAgLjY5NS0uNTczIDEuMjY4LTEuMjg1IDEuMjY4YTEuMjY0IDEuMjY0IDAgMCAxLTEuMjY5LTEuMjY4Wm0uMTcgOS43MjV2LTcuNTc1aDIuMTk3djcuNTc1aC0yLjE5N1ptMTAuOTgzLTcuNTc1LTIuNjkxIDcuNTc1aC0yLjI1OGwtMi42OTEtNy41NzVoMi4zMzZsMS40ODQgNC42ODUgMS40ODQtNC42ODVoMi4zMzZabTcuOTggNC4zNzRoLTUuMzUyYy4xMjUuNzc0Ljc1NyAxLjM2IDEuNzAyIDEuMzYuNjM2IDAgMS4wMDUtLjI2MyAxLjIzOC0uNjQ5aDIuMzY2Yy0uNTEgMS42NC0xLjY4NSAyLjY2LTMuNTcyIDIuNjYtMi4xOTcgMC0zLjk1OS0xLjUzLTMuOTU5LTMuOTEgMC0yLjI4OSAxLjYwOS00LjAxOSAzLjgzNy00LjAxOSAyLjQ4OCAwIDMuNzYgMS45NjMgMy43NiAzLjk4OC0uMDA2LjItLjAyLjU3LS4wMi41N1ptLTMuNzEyLTIuNjI3Yy0uODM0IDAtMS4zOTMuNTEtMS41MzIgMS4xNmgyLjk0Yy0uMDQ5LS42NjYtLjYxOS0xLjE2LTEuNDA4LTEuMTZaXFxcIiBmaWxsPVxcXCIjZmZmXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIj48cGF0aCBmaWxsPVxcXCIjZmZmXFxcIiBzdHJva2U9XFxcIiMxNTUzNjZcXFwiIGQ9XFxcIm03LjMzMyAxMi4zNjEtLjIyMy4xMTIuMjIzLjQ0N2guNXYtLjI1bC44MzQtLjQxNy0xLjMzNC4xMDhabTAgMFY5LjMzM3YzLjAyOFptLTUuNS04LjI0OHYtLjc4YTEuNSAxLjUgMCAwIDEgMS41LTEuNWg5LjMzNGExLjUgMS41IDAgMCAxIDEuNSAxLjV2Ljc3MmExLjQ5OSAxLjQ5OSAwIDAgMS0uMTQ1LjU5M2wtLjA0OS4xMDJ2LjA0YTEuMzcxIDEuMzcxIDAgMCAxLS4yNDYuMzMydi4wMDFsLTQuMDggNC4wOEw5LjUgOS40djMuMjY2YzAgLjAzLS4wMDkuMDYtLjAyNS4wODZsLjQyNS4yNjMtLjQyNS0uMjYzYS4xNjcuMTY3IDAgMCAxLS4wNjYuMDYxbC0yLjY2NiAxLjMzMy0uMDA0LjAwMmEuMTY3LjE2NyAwIDAgMS0uMDc1LjAxOS4xNjcuMTY3IDAgMCAxLS4wODctLjAyNS4xNjYuMTY2IDAgMCAxLS4wNzctLjE0MVY5LjM5OWwtLjE0OC0uMTQ3LTQuMTA2LTQuMDhBMS4zNzMgMS4zNzMgMCAwIDEgMiA0Ljg0di0uMDNsLS4wNDItLjA5N2ExLjUgMS41IDAgMCAxLS4xMjUtLjZaTTYgOS42MDdWMTRhLjY2Ni42NjYgMCAwIDAgLjY2Ny42NjcuNjY2LjY2NiAwIDAgMCAuMy0uMDc0TDYgOS42MDdabTMuMTY3LS4yNzRWOS4zM2EuMTY3LjE2NyAwIDAgMSAuMDQ4LS4xMThsMy41MzEtMy41MjUuODU2LS44NTRIMi4zOTdsLjg1Ni44NTQgMy41MzIgMy41MjVhLjE2Ny4xNjcgMCAwIDEgLjA0OC4xMTh2NC4zOTlsLjcyNC0uMzYyTDguODkgMTIuN2wuMjc3LS4xMzhWOS4zMzNaTTEzLjMzMyA0LjVoLjVWMy4zMzNhMS4xNjcgMS4xNjcgMCAwIDAtMS4xNjYtMS4xNjZIMy4zMzNhMS4xNjcgMS4xNjcgMCAwIDAtMS4xNjYgMS4xNjZWNC41aDExLjE2NlpcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgOTUwIDI5MlxcXCI+PGcgb3BhY2l0eT1cXFwiLjNcXFwiPjxwYXRoIG9wYWNpdHk9XFxcIi40XFxcIiBkPVxcXCJNMzkzLjM4MyA1MzcuNTkyYTIxMy4wNTggMjEzLjA1OCAwIDAgMS01NS4xMzMtNy4yNDhjLTE4LjE5Ni00Ljg2LTM1LjQxOS0xMi4wOS01MS4zNDctMjEuMzE2LTE2LjE2Ni05LjM0NS0zMS4wMDMtMjAuNzAzLTQ0LjExNy0zMy44MTctMTMuMTEzLTEzLjExMy0yNC40NzEtMjcuOTY3LTMzLjgxNi00NC4xMTZhMjExLjgyNiAyMTEuODI2IDAgMCAxLTIxLjMxNy01MS4zNDcgMjEyLjkwNiAyMTIuOTA2IDAgMCAxLTcuMjQ3LTU1LjEzMyAyMTMuMDkgMjEzLjA5IDAgMCAxIDcuMjQ3LTU1LjEzM2M0Ljg2MS0xOC4xOTYgMTIuMDkxLTM1LjQyIDIxLjMxNy01MS4zNDhsNTYuNjg1IDMyLjcyNWExNDcuMjAzIDE0Ny4yMDMgMCAwIDAtMTQuNzY4IDM1LjU3MyAxNDcuNTMxIDE0Ny41MzEgMCAwIDAtNS4wMTQgMzguMTgzIDE0Ny41MyAxNDcuNTMgMCAwIDAgNS4wMTQgMzguMTgyIDE0Ni41MjcgMTQ2LjUyNyAwIDAgMCAxNC43NjggMzUuNTczYzYuNDggMTEuMTg3IDE0LjM0MSAyMS40NyAyMy40MzEgMzAuNTU5IDkuMDg5IDkuMDg5IDE5LjM3MiAxNi45NTEgMzAuNTU5IDIzLjQzMWExNDcuMjAzIDE0Ny4yMDMgMCAwIDAgMzUuNTczIDE0Ljc2OCAxNDcuNjI3IDE0Ny42MjcgMCAwIDAgMzguMTgyIDUuMDE0YzEzLjIgMCAyNi4wMDYtMS43NTcgMzguMTgyLTUuMDE0YTE0Ni40OTQgMTQ2LjQ5NCAwIDAgMCAzNS41NzMtMTQuNzY4YzExLjE4Ny02LjQ4IDIxLjQ3LTE0LjM0MiAzMC41Ni0yMy40MzFsNDYuMjgyIDQ2LjI4MmMtMTMuMTE0IDEzLjExNC0yNy45NjcgMjQuNDcyLTQ0LjExNyAzMy44MTdhMjExLjc1IDIxMS43NSAwIDAgMS01MS4zNDcgMjEuMzE2IDIxMy4yOCAyMTMuMjggMCAwIDEtNTUuMTUgNy4yNDhaTTU4MS42NjggNjUwLjc0YzI4LjU4MS0xNi41MjQgNTQuODI2LTM2LjYxMyA3OC4wMTgtNTkuODA1IDIzLjE5Mi0yMy4xOTMgNDMuMjgxLTQ5LjQ1NSA1OS44MDYtNzguMDE5IDE2LjMwMy0yOC4xNzIgMjkuMDc1LTU4LjYyOSAzNy42ODctOTAuODA4YTM3Ni41OTIgMzc2LjU5MiAwIDAgMCAxMi44MDctOTcuNDc2IDM3Ny4yMyAzNzcuMjMgMCAwIDAtMTIuODA3LTk3LjQ3N2MtOC41OTUtMzIuMTc5LTIxLjM4NC02Mi42MzYtMzcuNjg3LTkwLjgwOC0xNi41NDItMjguNTgxLTM2LjYxNC01NC44MjYtNTkuODA2LTc4LjAxOC0yMy4xOTItMjMuMTkzLTQ5LjQ1NC00My4yODEtNzguMDE4LTU5LjgwNi0yOC4xNzItMTYuMzAzLTU4LjYyOS0yOS4wOTMtOTAuODA5LTM3LjY4N2EzNzYuNTkyIDM3Ni41OTIgMCAwIDAtOTcuNDc2LTEyLjgwN3Y2NS40NWMyNy44NjUgMCA1NC44NDMgMy43MTcgODAuNTQzIDEwLjU5IDI2LjU4NSA3LjExMSA1MS43MzkgMTcuNjY3IDc1LjAxNyAzMS4xMzkgMjMuNjAxIDEzLjY2IDQ1LjMxIDMwLjI1MiA2NC40NjEgNDkuNDIgMTkuMTY3IDE5LjE2OCAzNS43NiA0MC44NiA0OS40MiA2NC40NjEgMTMuNDcyIDIzLjI3OCAyNC4wMjggNDguNDMxIDMxLjEzOSA3NS4wMTdhMzExLjI2NiAzMTEuMjY2IDAgMCAxIDEwLjU5IDgwLjU0M2MwIDI3Ljg2NS0zLjcxNyA1NC44NDMtMTAuNTkgODAuNTQyLTcuMTExIDI2LjU4Ni0xNy42NjcgNTEuNzM5LTMxLjEzOSA3NS4wMTctMTMuNjYgMjMuNjAyLTMwLjI1MyA0NS4zMS00OS40MiA2NC40NjEtMTkuMTUxIDE5LjE1MS00MC44NiAzNS43NjEtNjQuNDYxIDQ5LjQyLTIzLjI3OCAxMy40NzItNDguNDMyIDI0LjAyOC03NS4wMTcgMzEuMTM5bDE2LjkzMyA2My4yMzRjMzIuMTk3LTguNjQ2IDYyLjYzNy0yMS40MTkgOTAuODA5LTM3LjcyMlptLTU2LjkwNyAxNjQuMTg4YTUwNC4zMTIgNTA0LjMxMiAwIDAgMCAxMjIuNDI1LTUwLjczMyA1MTAuNCA1MTAuNCAwIDAgMCAxMDUuMDgyLTgwLjcxM0E1MDkuMjI2IDUwOS4yMjYgMCAwIDAgODMyLjk4MSA1NzguNGE1MDQuNzMgNTA0LjczIDAgMCAwIDUwLjczMy0xMjIuNDI1YzExLjIwNC00MS45MTYgMTcuMjA3LTg1Ljk0OCAxNy4yMDctMTMxLjM3NyAwLTQ1LjQ0Ny02LjAwMy04OS40NzktMTcuMjA3LTEzMS4zNzhhNTA0LjM0MyA1MDQuMzQzIDAgMCAwLTUwLjczMy0xMjIuNDI1QzgxMC43MDkgMzIuMjg4IDc4My41MDktMy4wMyA3NTIuMjY4LTM0LjI4N0E1MDkuMjE3IDUwOS4yMTcgMCAwIDAgNjQ3LjE4Ni0xMTVsLTMyLjc5MyA1Ni43ODdjMzMuNTQzIDE5LjQwNyA2NC4zNTkgNDIuOTkxIDkxLjU5MiA3MC4yMDggMjcuMjE3IDI3LjIxNyA1MC44MDIgNTguMDUgNzAuMjA5IDkxLjU3NiAxOS4xMzMgMzMuMDY2IDM0LjE0IDY4LjgxIDQ0LjIzNiAxMDYuNTgyIDkuNzU0IDM2LjUxMSAxNS4wNDEgNzQuODQ3IDE1LjA0MSAxMTQuNDI4IDAgMzkuNTgtNS4yNyA3Ny45MTYtMTUuMDQxIDExNC40MjYtMTAuMDk2IDM3Ljc3My0yNS4xMDMgNzMuNTE3LTQ0LjIzNiAxMDYuNTgzLTE5LjQwNyAzMy41NDQtNDIuOTkyIDY0LjM1OS03MC4yMDkgOTEuNTc2LTI3LjIxNiAyNy4yMTctNTguMDQ5IDUwLjgwMS05MS41OTIgNzAuMjA4LTMzLjA2NiAxOS4xMzQtNjguODEgMzQuMTQtMTA2LjU4MyA0NC4yMzYtMzYuNTExIDkuNzU0LTc0Ljg0NiAxNS4wNDEtMTE0LjQyNyAxNS4wNDEtMzkuNTggMC03Ny45MTYtNS4yODctMTE0LjQyNy0xNS4wNDFsLTE2Ljk1MSA2My4yODRjNDEuOSAxMS4yMDQgODUuOTMxIDE3LjIwNyAxMzEuMzc4IDE3LjIwNyA0NS40NDcuMDM0IDg5LjQ3OC01Ljk2OSAxMzEuMzc4LTE3LjE3M1pcXFwiIGZpbGw9XFxcInVybCgjZ3JvdXBfc3ZnX19hKVxcXCIvPjxwYXRoIGQ9XFxcIk0zOTMuMzgzIDc2Ni42ODZhNDQyLjQ4OSA0NDIuNDg5IDAgMCAxLTExNC4xMDMtMTQuOTM4Yy0zNy43NzMtMTAuMDYyLTczLjUxNi0yNS4wNTItMTA2LjU5OS00NC4xNTFsMzIuNzI1LTU2LjY4NWMyOC4xODkgMTYuMjY5IDU4LjY0NiAyOS4wMjQgOTAuODI1IDM3LjYwMmEzNzcuMTI2IDM3Ny4xMjYgMCAwIDAgOTcuMTUyIDEyLjcyMmguMzA3YTM3Ni45NTggMzc2Ljk1OCAwIDAgMCA5Ny40MjUtMTIuODc1YzMyLjE0Ni04LjYxMiA2Mi41NjgtMjEuNDAyIDkwLjcyMy0zNy43MDUgMjguNTQ3LTE2LjUyNCA1NC43NzUtMzYuNjEzIDc3LjkzMy01OS43ODggMjMuMTU5LTIzLjE3NiA0My4yMy00OS40MDQgNTkuNzU1LTc3Ljk1MSAxNi4yODYtMjguMTU0IDI5LjA1OS01OC41NiAzNy42Ny05MC43MjNhMzc2LjU3NSAzNzYuNTc1IDAgMCAwIDEyLjgyNC05Ny4zOXYtLjE4OGMwLTMzLjYyOS00LjQ2Ny02Ni4yMDEtMTIuNzM4LTk3LjIzNy04LjU3OC0zMi4xNjMtMjEuMzM0LTYyLjYwMy0zNy42MDMtOTAuNzc1LTE2LjUwNy0yOC41ODEtMzYuNTYyLTU0Ljg0My01OS43Mi03OC4wMzUtMjMuMTc1LTIzLjIxLTQ5LjQwMy00My4zMzItNzcuOTUtNTkuODkxLTI4LjE3Mi0xNi4zMzctNTguNjEyLTI5LjE0NC05MC43NzQtMzcuNzczbDE2LjkzMy02My4yMzNjMzcuNzczIDEwLjEzIDczLjUgMjUuMTUzIDEwNi41NjYgNDQuMzIxIDMzLjUyNyAxOS40MjQgNjQuMzA4IDQzLjA0MiA5MS41MDcgNzAuMjc2IDI3LjE4MyAyNy4yMzQgNTAuNzUxIDU4LjA2NyA3MC4xMjMgOTEuNjEgMTkuMSAzMy4wNjYgMzQuMDcyIDY4Ljc5MyA0NC4xNTEgMTA2LjU2NmE0NDIuMjggNDQyLjI4IDAgMCAxIDE0Ljk3MyAxMTQuMTcxdi4xODhhNDQyLjc4NCA0NDIuNzg0IDAgMCAxLTE1LjA1OCAxMTQuMzQxYy0xMC4wOTYgMzcuNzM5LTI1LjA4NiA3My40NDgtNDQuMjE5IDEwNi40OTctMTkuMzkgMzMuNTEtNDIuOTU3IDY0LjMwOC03MC4xNCA5MS41MjUtMjcuMiAyNy4yLTU3Ljk4MSA1MC43ODQtOTEuNDkxIDcwLjE5MS0zMy4wMzIgMTkuMTM0LTY4Ljc1OCAzNC4xNDEtMTA2LjQ5NyA0NC4yNTNhNDQyLjA1MiA0NDIuMDUyIDAgMCAxLTExNC4zNTkgMTUuMDkyYy0uMTM2LS4wMTctLjIzOC0uMDE3LS4zNDEtLjAxN1ptLjMwNyAxMTQuNTQ3YzQ5LjgxMy0uMDM1IDk4LjA5LTYuNjM0IDE0NC4wMzItMTguOTI5YTU1My4zMTYgNTUzLjMxNiAwIDAgMCAxMzQuMTc0LTU1LjY2MiA1NTcuODg3IDU1Ny44ODcgMCAwIDAgMTE1LjE0My04OC41MDYgNTU4LjkzOCA1NTguOTM4IDAgMCAwIDg4LjQ1NS0xMTUuMTc4IDU1Mi44NjMgNTUyLjg2MyAwIDAgMCA1NS42MTEtMTM0LjE3NEM5NDMuNCA0MjIuODQyIDk0OS45ODMgMzc0LjU4MiA5NTAgMzI0Ljc4NnYtLjE4N2MwLTQ5Ljc0NC02LjU2Ni05Ny45NTQtMTguODEtMTQzLjg0NGE1NTMuNDU0IDU1My40NTQgMCAwIDAtNTUuNTQyLTEzNC4yNDNDODUxLjI0NSA0LjI3MiA4MjEuNDUzLTM0LjQ1NiA3ODcuMjEtNjguNzVsLTM0LjcyIDM0LjcyYTUwOC45MDggNTA4LjkwOCAwIDAgMSA4MC42MjcgMTA1LjA5OSA1MDQuNDY1IDUwNC40NjUgMCAwIDEgNTAuNjMxIDEyMi4zOTFjMTEuMTUzIDQxLjgzMSAxNy4xMzkgODUuNzc3IDE3LjEzOSAxMzEuMTM5di4xODdjLS4wMTcgNDUuNDEzLTYuMDIgODkuNDEtMTcuMjI0IDEzMS4yOTNhNTA0LjkwMiA1MDQuOTAyIDAgMCAxLTUwLjY5OSAxMjIuMzIzIDUwOS43MTUgNTA5LjcxNSAwIDAgMS04MC42NjIgMTA1LjAxMyA1MDkuMjc4IDUwOS4yNzggMCAwIDEtMTA0Ljk5NiA4MC42OTYgNTA0LjMyIDUwNC4zMiAwIDAgMS0xMjIuMzIzIDUwLjc1Yy00MS44ODMgMTEuMjIxLTg1Ljg5NyAxNy4yNDEtMTMxLjMyNyAxNy4yNzVoLS4zMDdjLTQ1LjMyNyAwLTg5LjIzOS01Ljk2OC0xMzEuMDU0LTE3LjEyMWE1MDQuODk5IDUwNC44OTkgMCAwIDEtMTIyLjQ0Mi01MC42MzFBNTA5LjI4NCA1MDkuMjg0IDAgMCAxIDM0LjcyIDY4My43MjJMMCA3MTguNDQzYTU1OS4yMjIgNTU5LjIyMiAwIDAgMCAxMTUuMjk3IDg4LjQ3MiA1NTMuNTYzIDU1My41NjMgMCAwIDAgMTM0LjI5NCA1NS41NDJjNDUuODU2IDEyLjIyNyA5NC4wMzEgMTguNzc2IDE0My43NTggMTguNzc2aC4zNDFabTgwLjQ3NC0yNTYuMTA2YTMwOS4yOCAzMDkuMjggMCAwIDAgNzQuOTMyLTMxLjE1NmMyMy41NjgtMTMuNjU5IDQ1LjI0Mi0zMC4yNTIgNjQuMzc2LTQ5LjM4NiAxOS4xMzQtMTkuMTUxIDM1LjcwOS00MC44MDggNDkuMzUyLTY0LjM5MyAxMy40NTUtMjMuMjQzIDI0LjAxMS00OC4zOCAzMS4xMDUtNzQuOTMxYTMxMS4zOTYgMzExLjM5NiAwIDAgMCAxMC42MDctODAuNDU3di0uMTg4YzAtMjcuNzgtMy42ODMtNTQuNjczLTEwLjUwNS04MC4yODctNy4wNzctMjYuNTY4LTE3LjYxNi01MS43MjItMzEuMDU0LTc1LTEzLjYyNS0yMy42MTgtMzAuMjAxLTQ1LjMxLTQ5LjMzNC02NC40NzgtMTkuMTM0LTE5LjE4NS00MC44MDktMzUuODExLTY0LjM5My00OS40ODgtMjMuMjYxLTEzLjQ5LTQ4LjQxNC0yNC4wOC03NS0zMS4yMjVhMzExLjQ1MSAzMTEuNDUxIDAgMCAwLTgwLjU2LTEwLjY3NWgtLjMwN2EzMTAuOTk3IDMxMC45OTcgMCAwIDAtODAuMzAzIDEwLjUyMmMtMjYuNjIgNy4wOTQtNTEuODA4IDE3LjY1LTc1LjEyIDMxLjEyMmw0OS4wOTcgODUuMDI3YTIxMS42NzggMjExLjY3OCAwIDAgMSA1MS40MzItMjEuMjk5IDIxMy4zMTQgMjEzLjMxNCAwIDAgMSA1NC44OTQtNy4xOGguMzA3YTIxMy4yIDIxMy4yIDAgMCAxIDU1LjE1IDcuMzMzIDIxMS4yNDUgMjExLjI0NSAwIDAgMSA1MS4zMzEgMjEuNDAyYzE2LjEzMiA5LjM3OSAzMC45NTEgMjAuNzcxIDQ0LjA0OCAzMy45MDIgMTMuMDggMTMuMTMxIDI0LjQyIDI3Ljk4NCAzMy43NDggNDQuMTM0YTIxMS40MDggMjExLjQwOCAwIDAgMSAyMS4yMzEgNTEuMzMgMjEzLjI3NiAyMTMuMjc2IDAgMCAxIDcuMTggNTQuODc3di4xODhhMjEyLjkxMSAyMTIuOTExIDAgMCAxLTcuMjY1IDU1LjAzYy00Ljg2IDE4LjE2Mi0xMi4wOTEgMzUuMzUyLTIxLjI4MiA1MS4yNjItOS4zMjggMTYuMTMzLTIwLjY2OSAzMC45NTItMzMuNzY2IDQ0LjA0OS0xMy4wNzkgMTMuMDk2LTI3Ljg5OSAyNC40NTQtNDQuMDMxIDMzLjc5OS0xNS45MTEgOS4yMjYtMzMuMSAxNi40NTYtNTEuMjYyIDIxLjMzNGEyMTIuNDk1IDIxMi40OTUgMCAwIDEtNTUuMDY1IDcuMjk4djk4LjE3NmEzMTIuMDkgMzEyLjA5IDAgMCAwIDgwLjQ1Ny0xMC42NDJabTY2Ljc0Ny0zMDAuNTExYzAtODEuNDgtNjYuMDQ3LTE0Ny41MjctMTQ3LjUyOC0xNDcuNTI3LTgxLjQ4IDAtMTQ3LjUyNyA2Ni4wNDctMTQ3LjUyNyAxNDcuNTI3IDAgODEuNDggNjYuMDQ3IDE0Ny41MjcgMTQ3LjUyNyAxNDcuNTI3IDgxLjQ4MSAwIDE0Ny41MjgtNjYuMDY0IDE0Ny41MjgtMTQ3LjUyN1pcXFwiIGZpbGw9XFxcInVybCgjZ3JvdXBfc3ZnX19iKVxcXCIvPjwvZz48ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XFxcImdyb3VwX3N2Z19fYVxcXCIgeDE9XFxcIjEyNy44OTVcXFwiIHkxPVxcXCI1ODIuNjQ3XFxcIiB4Mj1cXFwiODc4LjM0MlxcXCIgeTI9XFxcIjE0OS4zNzdcXFwiIGdyYWRpZW50VW5pdHM9XFxcInVzZXJTcGFjZU9uVXNlXFxcIj48c3RvcCBvZmZzZXQ9XFxcIi42XFxcIiBzdG9wLWNvbG9yPVxcXCIjZmZmXFxcIi8+PHN0b3Agb2Zmc2V0PVxcXCIxXFxcIiBzdG9wLWNvbG9yPVxcXCIjZmZmXFxcIiBzdG9wLW9wYWNpdHk9XFxcIjBcXFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cXFwiZ3JvdXBfc3ZnX19iXFxcIiB4MT1cXFwiLTExLjA3MVxcXCIgeTE9XFxcIjY5OS4xOTNcXFwiIHgyPVxcXCI5MzYuNTg5XFxcIiB5Mj1cXFwiMTUyLjA2MVxcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIG9mZnNldD1cXFwiLjZcXFwiIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIjFcXFwiIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiIHN0b3Atb3BhY2l0eT1cXFwiMFxcXCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCA5MzQgMjIwXFxcIj48ZyBmaWxsPVxcXCJub25lXFxcIj48cGF0aCBmaWxsPVxcXCIjMTg1NTY4XFxcIiBkPVxcXCJNMi42IDIwOC43VjEwMi4yaDMwLjh2MTA2LjV6TTEyNiAxOTguNGMtNyA4LjUtMTcgMTMuMy0zMC40IDEzLjMtMjEuNCAwLTM4LjctMTMuMy0zOC43LTMzLjkgMC0yMC4zIDE3LjMtMzAuNCA0MS41LTMxLjcgMTguNi0xLjEgMjQuNS0zLjEgMjQuNS05LjQgMC02LjEtNS43LTEwLjMtMTUuNy0xMC4zLTEyLjIgMC0xNy41IDYuMS0xOC4xIDEyLjdINTkuMmMxLjUtMjMuNCAxOS0zOS41IDQ4LjMtMzkuNSAyOC42IDAgNDcgMTUuNSA0NyA0NC42djY1LjFoLTI1LjZsLTIuOS0xMC45em0tMzgtMjEuOWMwIDYuMSA1LjUgOS44IDE0LjIgOS44IDExLjggMCAyMS4yLTYuNiAyMS4yLTE5Ljl2LTMuOXMtNS43IDIuNi0xNy41IDMuM2MtMTIuOC43LTE3LjkgNC44LTE3LjkgMTAuN3ptMTM1IDMzLjJjLTIzLjQgMC0zNi45LTEzLjUtMzYuOS0zNy4xdi00MS43aC0xNy45di0yOC42aDE3LjlWODYuNWwzMS0yNi4ydjQxLjlIMjQ0djI4LjZoLTI2Ljl2MzcuNGMwIDEwLjMgNi44IDEyLjcgMTMuMSAxMi43IDcuMiAwIDEzLjEtMi44IDEzLjEtMi44djI4LjJzLTguMyAzLjQtMjAuMyAzLjR6TTAgNzAuMmMwLTEwIDcuOS0xOC4xIDE3LjktMTguMSAxMCAwIDE4LjEgOC4xIDE4LjEgMTguMSAwIDkuOC04LjEgMTcuOS0xOC4xIDE3LjktMTAgMC0xNy45LTgtMTcuOS0xNy45em0yNjYuOSAxMzguNVYxMDIuMmgzMC44djEwNi41elxcXCIvPjxnIHRyYW5zZm9ybT1cXFwidHJhbnNsYXRlKDIyNylcXFwiPjxwYXRoIGZpbGw9XFxcIiMxODU1NjhcXFwiIGQ9XFxcIk0xMTAuOSA3MC41YzAtNC45LS43LTkuNy0xLjktMTQuMy0xLjMtNC43LTMuMS05LjItNS41LTEzLjMtMi40LTQuMi01LjQtOC04LjgtMTEuNC0zLjQtMy40LTcuMi02LjMtMTEuNC04LjgtNC4xLTIuNC04LjYtNC4zLTEzLjMtNS41LTQuNi0xLjItOS4zLTEuOS0xNC4zLTEuOS00LjkgMC05LjcuNy0xNC4zIDEuOS00LjcgMS4zLTkuMiAzLjEtMTMuMyA1LjUtNC4yIDIuNC04IDUuNC0xMS40IDguOC0zLjQgMy40LTYuNCA3LjItOC44IDExLjQtMi40IDQuMS00LjMgOC42LTUuNSAxMy4zbDcuOSAyLjFjMS4xLTQgMi43LTcuOCA0LjctMTEuMyAyLjEtMy42IDQuNi02LjggNy41LTkuNyAyLjktMi45IDYuMi01LjQgOS43LTcuNSAzLjUtMiA3LjMtMy42IDExLjMtNC43IDMuOS0xIDcuOS0xLjYgMTIuMS0xLjYgNC4yIDAgOC4zLjYgMTIuMiAxLjYgNCAxLjEgNy44IDIuNyAxMS4zIDQuNyAzLjYgMi4xIDYuOCA0LjYgOS43IDcuNSAyLjkgMi45IDUuNCA2LjIgNy41IDkuNyAyIDMuNSAzLjYgNy4zIDQuNyAxMS4zIDEgMy45IDEuNiA4IDEuNiAxMi4yIDAgNC4yLS42IDguMy0xLjYgMTIuMS0xLjEgNC0yLjcgNy44LTQuNyAxMS4zbDcuMSA0LjFjMi40LTQuMSA0LjMtOC42IDUuNS0xMy4zIDEuMy00LjUgMi05LjIgMi0xNC4yWlxcXCIvPjxwYXRoIGZpbGw9XFxcIiMxODU1NjhcXFwiIGQ9XFxcIk0xMjUuMiA3MC41YzAtNi4yLS44LTEyLjMtMi40LTE4LTEuNi01LjktMy45LTExLjYtNy0xNi44LTMuMS01LjMtNi44LTEwLjEtMTEuMS0xNC40LTQuMy00LjMtOS4xLTgtMTQuNC0xMS4xLTUuMi0zLTEwLjgtNS40LTE2LjgtNi45QzY3LjggMS44IDYxLjcuOSA1NS41LjljLTYuMiAwLTEyLjIuOC0xOCAyLjMtNS45IDEuNi0xMS42IDMuOS0xNi44IDYuOS01LjMgMy0xMC4xIDYuOC0xNC40IDExbDQuMyA0LjNjMy45LTMuOSA4LjMtNy4zIDEzLjEtMTAuMSA0LjctMi43IDkuOS00LjkgMTUuMy02LjMgNS4yLTEuNCAxMC43LTIuMSAxNi40LTIuMSA1LjcgMCAxMS4yLjggMTYuNCAyLjIgNS40IDEuNCAxMC41IDMuNiAxNS4zIDYuM2E2NC40NjYgNjQuNDY2IDAgMCAxIDIzLjIgMjMuMmMyLjcgNC43IDQuOSA5LjkgNi4zIDE1LjMgMS40IDUuMiAyLjIgMTAuNyAyLjIgMTYuNCAwIDUuNy0uNyAxMS4xLTIuMSAxNi40LTEuNCA1LjQtMy42IDEwLjYtNi4zIDE1LjMtMi44IDQuOC02LjIgOS4yLTEwLjEgMTMuMWw0LjMgNC4zYzQuMy00LjMgOC05LjEgMTEuMS0xNC40IDMtNS4yIDUuNC0xMC44IDYuOS0xNi44IDEuOC01LjQgMi42LTExLjUgMi42LTE3LjdaXFxcIi8+PHBhdGggZmlsbD1cXFwiIzE4NTU2OFxcXCIgZD1cXFwiTTkzLjIgNjAuNGMtLjktMy4zLTIuMi02LjUtMy45LTkuNC0xLjctMi45LTMuOC01LjctNi4yLTgtMi40LTIuNC01LjEtNC41LTgtNi4yLTIuOS0xLjctNi0zLTkuNC0zLjktMy4yLS45LTYuNi0xLjMtMTAtMS4zLTMuNSAwLTYuOC41LTEwIDEuMy0zLjMuOS02LjUgMi4yLTkuNCAzLjktMi45IDEuNy01LjcgMy44LTguMSA2LjItMi40IDIuNC00LjUgNS4xLTYuMiA4LTEuNyAyLjktMyA2LTMuOSA5LjQtLjkgMy4yLTEuMyA2LjYtMS4zIDEwLjFzLjUgNi44IDEuMyAxMGMuOSAzLjMgMi4yIDYuNSAzLjkgOS40bDEwLjYtNi4xYy0xLjItMi0yLjEtNC4xLTIuNy02LjQtLjYtMi4yLS45LTQuNS0uOS02LjkgMC0yLjQuMy00LjcuOS02LjkuNi0yLjMgMS41LTQuNCAyLjctNi40IDEuMi0yIDIuNi0zLjkgNC4yLTUuNXMzLjUtMy4xIDUuNS00LjIgNC4xLTIgNi40LTIuN2MyLjItLjYgNC41LS45IDYuOS0uOSAyLjQgMCA0LjcuMyA2LjkuOSAyLjMuNiA0LjQgMS41IDYuNCAyLjcgMiAxLjIgMy45IDIuNiA1LjUgNC4yczMuMSAzLjUgNC4yIDUuNWMxLjIgMiAyLjEgNC4xIDIuNyA2LjQuNiAyLjIuOSA0LjUuOSA2LjloMTIuM2MwLTMuNS0uNC02LjktMS4zLTEwLjFaXFxcIi8+PGcgZmlsbD1cXFwiI0E3RUJFRlxcXCI+PHBhdGggZD1cXFwiTTgxLjQgNjMuNmMtLjYtMi4zLTEuNS00LjQtMi43LTYuNC0xLjItMi0yLjYtMy45LTQuMi01LjVsLTUuOCA1LjhjMS4xIDEuMSAyLjEgMi40IDIuOSAzLjguOCAxLjQgMS40IDIuOSAxLjggNC40LjQgMS41LjYgMy4xLjYgNC44IDAgMS43LS4yIDMuMi0uNiA0LjgtLjQgMS42LTEgMy4xLTEuOCA0LjQtLjggMS40LTEuOCAyLjctMi45IDMuOC0xLjEgMS4xLTIuNCAyLjEtMy44IDIuOS0xLjQuOC0yLjkgMS40LTQuNCAxLjgtMS41LjQtMy4xLjYtNC44LjYtMS43IDAtMy4yLS4yLTQuOC0uNi0xLjYtLjQtMy4xLTEtNC40LTEuOGwtNC4xIDcuMWMyIDEuMiA0LjEgMi4xIDYuNCAyLjcgMi4yLjYgNC41LjkgNi45LjkgMi40IDAgNC43LS4zIDYuOS0uOSAyLjMtLjYgNC40LTEuNSA2LjQtMi43IDItMS4yIDMuOS0yLjYgNS41LTQuMnMzLjEtMy41IDQuMi01LjVjMS4yLTIgMi4xLTQuMSAyLjctNi40LjYtMi4yLjktNC41LjktNi45IDAtMi40LS4zLTQuNy0uOS02LjlaXFxcIi8+PHBhdGggZD1cXFwiTTk2LjQgNDdjLTIuMS0zLjYtNC42LTYuOC03LjUtOS43LTIuOS0yLjktNi4yLTUuNC05LjctNy41LTMuNS0yLTcuMy0zLjYtMTEuMy00LjctMy45LTEtOC0xLjYtMTIuMi0xLjYtNC4yIDAtOC4zLjYtMTIuMiAxLjYtNCAxLjEtNy44IDIuNy0xMS4zIDQuNy0zLjYgMi4xLTYuOCA0LjYtOS43IDcuNS0yLjkgMi45LTUuNCA2LjItNy41IDkuNy0yIDMuNS0zLjYgNy4zLTQuNyAxMS4zLTEgMy45LTEuNiA4LTEuNiAxMi4yaDguMmMwLTMuNS41LTYuOSAxLjMtMTAuMS45LTMuMyAyLjItNi41IDMuOS05LjQgMS43LTIuOSAzLjgtNS43IDYuMi04LjEgMi40LTIuNCA1LjEtNC41IDguMS02LjIgMi45LTEuNyA2LjEtMyA5LjQtMy45IDMuMi0uOSA2LjYtMS4zIDEwLjEtMS4zczYuOS41IDEwLjEgMS4zYzMuMy45IDYuNSAyLjIgOS40IDMuOSAyLjkgMS43IDUuNyAzLjggOC4xIDYuMiAyLjQgMi40IDQuNSA1LjEgNi4yIDguMSAxLjcgMi45IDMgNi4xIDMuOSA5LjRsNy45LTIuMWMtMS41LTQtMy4xLTcuOC01LjEtMTEuM1pcXFwiLz48cGF0aCBkPVxcXCJNMTE2LjkgNTQuMWMtMS40LTUuNC0zLjYtMTAuNS02LjMtMTUuM2E2NC40NjYgNjQuNDY2IDAgMCAwLTIzLjItMjMuMmMtNC43LTIuNy05LjktNC45LTE1LjMtNi4zLTUuMi0xLjQtMTAuNy0yLjEtMTYuNC0yLjEtNS43IDAtMTEuMi44LTE2LjQgMi4xLTUuNCAxLjQtMTAuNSAzLjYtMTUuMyA2LjNBNjQuNDY2IDY0LjQ2NiAwIDAgMCAuOCAzOC44bDcuMSA0LjFjMi40LTQuMiA1LjQtOCA4LjgtMTEuNCAzLjQtMy40IDcuMy02LjMgMTEuNC04LjggNC4xLTIuNCA4LjYtNC4zIDEzLjMtNS41IDQuNi0xLjIgOS4zLTEuOSAxNC4zLTEuOXM5LjcuNyAxNC4zIDEuOWM0LjcgMS4zIDkuMiAzLjEgMTMuMyA1LjUgNC4yIDIuNCA4IDUuNCAxMS40IDguOCAzLjQgMy40IDYuMyA3LjMgOC44IDExLjQgMi40IDQuMSA0LjMgOC42IDUuNSAxMy4zIDEuMiA0LjYgMS45IDkuMyAxLjkgMTQuMyAwIDQuOS0uNyA5LjctMS45IDE0LjNsNy45IDIuMWMxLjQtNS4yIDIuMS0xMC43IDIuMS0xNi40LjEtNS42LS43LTExLjEtMi4xLTE2LjRaXFxcIi8+PC9nPjxjaXJjbGUgY3g9XFxcIjU1LjdcXFwiIGN5PVxcXCI3MC41XFxcIiByPVxcXCIxOC40XFxcIiBmaWxsPVxcXCIjMTg1NTY4XFxcIi8+PC9nPjxwYXRoIGQ9XFxcIk0zNTUuMyAxNDMuNHYtMzguMmg4LjF2MzguMnptMjMuMy0xMy40djEzLjRoLTcuN3YtMjYuN2g3LjZ2MS45YzEuNS0xLjQgMy42LTIuNSA2LjMtMi41IDYuNSAwIDEwLjggNC4zIDEwLjggMTEuOHYxNS41SDM4OHYtMTQuOWMwLTIuOC0xLjMtNS4yLTQuNC01LjItMy43LS4xLTUgMi42LTUgNi43em0zNC4xIDEzLjVjLTUuOCAwLTkuMi0zLjQtOS4yLTkuM3YtMTAuNEgzOTl2LTcuMWg0LjV2LTMuOWw3LjctNi41djEwLjVoNi43djcuMWgtNi43djkuM2MwIDIuNiAxLjcgMy4yIDMuMyAzLjIgMS44IDAgMy4zLS43IDMuMy0uN3Y3YzAtLjEtMi4xLjgtNS4xLjh6bTM1LjktMTEuNGgtMTguOWMuNCAyLjcgMi43IDQuOCA2IDQuOCAyLjIgMCAzLjUtLjkgNC40LTIuM2g4LjNjLTEuOCA1LjgtNS45IDkuNC0xMi42IDkuNC03LjcgMC0xNC01LjQtMTQtMTMuOCAwLTguMSA1LjctMTQuMiAxMy41LTE0LjIgOC44IDAgMTMuMiA2LjkgMTMuMiAxNC4xLjIuNy4xIDIgLjEgMnptLTEzLjEtOS4zYy0yLjkgMC00LjkgMS44LTUuNCA0LjFoMTAuNGMtLjItMi4zLTIuMi00LjEtNS00LjF6bTM2LjEtNC42djcuNnMtMi0yLjEtNS4xLTIuMWMtMi4zIDAtNSAxLjMtNSA1LjJ2MTQuNGgtNy43di0yNi43aDcuNnYyLjJjLS4xIDAgMS41LTIuNiA1LjMtMi42IDMuNC4xIDQuOSAyIDQuOSAyem0xMiAxMS44djEzLjRoLTcuN3YtMjYuN2g3LjZ2MS45YzEuNS0xLjQgMy42LTIuNSA2LjMtMi41IDYuNSAwIDEwLjggNC4zIDEwLjggMTEuOHYxNS41aC03Ljd2LTE0LjljMC0yLjgtMS4zLTUuMi00LjQtNS4yLTMuNy0uMS00LjkgMi42LTQuOSA2Ljd6bTM5LjMgMTAuN2MtMS43IDIuMS00LjMgMy4zLTcuNiAzLjMtNS4zIDAtOS42LTMuMy05LjYtOC40IDAtNS4xIDQuMy03LjYgMTAuNC03LjkgNC42LS4zIDYuMS0uOCA2LjEtMi4zIDAtMS41LTEuNC0yLjYtMy45LTIuNi0zLjEgMC00LjQgMS41LTQuNSAzLjJoLTcuNWMuNC01LjggNC43LTkuOSAxMi05LjkgNy4xIDAgMTEuNyAzLjkgMTEuNyAxMS4xdjE2LjJoLTYuNGwtLjctMi43em0tOS40LTUuNWMwIDEuNSAxLjQgMi41IDMuNSAyLjUgMi45IDAgNS4zLTEuNiA1LjMtNXYtMXMtMS40LjctNC40LjhjLTMuMi4yLTQuNCAxLjItNC40IDIuN3ptMzMuNiA4LjNjLTUuOCAwLTkuMi0zLjQtOS4yLTkuM3YtMTAuNGgtNC41di03LjFoNC41di0zLjlsNy43LTYuNXYxMC41aDYuN3Y3LjFoLTYuN3Y5LjNjMCAyLjYgMS43IDMuMiAzLjMgMy4yIDEuOCAwIDMuMy0uNyAzLjMtLjd2N2MwLS4xLTIuMS44LTUuMS44em0xMC40LTM0LjRjMC0yLjUgMi00LjUgNC41LTQuNXM0LjUgMiA0LjUgNC41LTIgNC41LTQuNSA0LjUtNC41LTIuMS00LjUtNC41em0uNiAzNC4zdi0yNi43aDcuN3YyNi43aC03Ljd6bTEzLjQtMTMuNGMwLTggNi4yLTE0IDE0LjItMTQgOC4xIDAgMTQuMiA2IDE0LjIgMTRzLTYuMiAxNC0xNC4yIDE0Yy04LjEgMC0xNC4yLTYtMTQuMi0xNHptNy45IDBjMCAzLjkgMi43IDYuOCA2LjMgNi44IDMuNyAwIDYuMy0yLjggNi4zLTYuOCAwLTMuOS0yLjctNi44LTYuMy02LjgtMy42LjEtNi4zIDIuOS02LjMgNi44em0zMy42IDB2MTMuNGgtNy43di0yNi43aDcuNnYxLjljMS41LTEuNCAzLjYtMi41IDYuMy0yLjUgNi41IDAgMTAuOCA0LjMgMTAuOCAxMS44djE1LjVoLTcuN3YtMTQuOWMwLTIuOC0xLjMtNS4yLTQuNC01LjItMy42LS4xLTQuOSAyLjYtNC45IDYuN3ptMzkuNCAxMC43Yy0xLjcgMi4xLTQuMyAzLjMtNy42IDMuMy01LjMgMC05LjYtMy4zLTkuNi04LjQgMC01LjEgNC4zLTcuNiAxMC40LTcuOSA0LjYtLjMgNi4xLS44IDYuMS0yLjMgMC0xLjUtMS40LTIuNi0zLjktMi42LTMuMSAwLTQuNCAxLjUtNC41IDMuMmgtNy41Yy40LTUuOCA0LjctOS45IDEyLTkuOSA3LjEgMCAxMS43IDMuOSAxMS43IDExLjF2MTYuMmgtNi40bC0uNy0yLjd6bS05LjUtNS41YzAgMS41IDEuNCAyLjUgMy41IDIuNSAyLjkgMCA1LjMtMS42IDUuMy01di0xcy0xLjQuNy00LjQuOGMtMy4yLjItNC40IDEuMi00LjQgMi43em0yMyA4LjJ2LTM4LjJoNy43djM4LjJ6bTQ5LjYtMzguMiAxNC45IDM4LjJINzIybC0zLjEtNy41aC0xNC44bC0zIDcuNWgtOC40bDE0LjktMzguMmg3Ljl6bS0zLjkgMTEtNC43IDEyLjVoOS41bC00LjgtMTIuNXptMjIuNS03LjFjMC0yLjUgMi00LjUgNC41LTQuNXM0LjUgMiA0LjUgNC41LTIgNC41LTQuNSA0LjUtNC41LTIuMS00LjUtNC41em0uNiAzNC4zdi0yNi43aDcuN3YyNi43aC03Ljd6bTEzLjQtMTMuNGMwLTguNCA2LjEtMTQgMTMuNS0xNCAzLjEgMCA1LjYgMS4xIDcgMi4zdi0xMy4yaDcuN3YzOC4yaC03LjZ2LTEuOWMtMS40IDEuNC00LjEgMi41LTcuMSAyLjUtNy41LjEtMTMuNS01LjMtMTMuNS0xMy45em0yMC41IDBjMC00LjEtMi43LTctNi4zLTctMy42IDAtNi4zIDIuOC02LjMgNyAwIDQuMSAyLjcgNyA2LjMgNyAzLjYgMCA2LjMtMi44IDYuMy03em0tNDE1LjggNDAuNmgzMHY3LjVoLTExdjMwLjdoLTguMVYxNzhoLTExdi03LjR6bTQ4LjkgMTN2Ny42cy0yLTIuMS01LjEtMi4xYy0yLjMgMC01IDEuMy01IDUuMnYxNC40SDM4NFYxODJoNy42djIuMmMtLjEgMCAxLjUtMi42IDUuMy0yLjYgMy4zLjEgNC44IDIgNC44IDJ6bTIwLjggMjIuNGMtMS43IDIuMS00LjMgMy4zLTcuNiAzLjMtNS4zIDAtOS42LTMuMy05LjYtOC40IDAtNS4xIDQuMy03LjYgMTAuNC03LjkgNC42LS4zIDYuMS0uOCA2LjEtMi4zIDAtMS41LTEuNC0yLjYtMy45LTIuNi0zLjEgMC00LjQgMS41LTQuNSAzLjJoLTcuNWMuNC01LjggNC43LTkuOSAxMi05LjkgNy4xIDAgMTEuNyAzLjkgMTEuNyAxMS4xdjE2LjJoLTYuNGwtLjctMi43em0tOS41LTUuNGMwIDEuNSAxLjQgMi41IDMuNSAyLjUgMi45IDAgNS4zLTEuNiA1LjMtNXYtMXMtMS40LjctNC40LjhjLTMuMS4yLTQuNCAxLjItNC40IDIuN3ptMzAuOC01LjJ2MTMuNEg0MzZ2LTI2LjdoNy42djEuOWMxLjUtMS40IDMuNi0yLjUgNi4zLTIuNSA2LjUgMCAxMC44IDQuMyAxMC44IDExLjh2MTUuNUg0NTN2LTE0LjljMC0yLjgtMS4zLTUuMi00LjQtNS4yLTMuNi0uMS00LjggMi42LTQuOCA2Ljd6bTM4IDUuN2MwLS44LS41LTEuNS0yLjYtMS45bC00LS44Yy02LjEtMS4yLTguNi00LjEtOC42LTguMSAwLTQuNyAzLjUtOC45IDEwLjktOC45czEwLjcgNC4xIDExLjMgOC44aC03LjRjLS40LTEuNS0xLjctMi4zLTQtMi4zLTIuMiAwLTMuNC44LTMuNCAxLjkgMCAuOC43IDEuMyAyLjcgMS43bDQgLjhjNS43IDEuMSA4LjYgMy44IDguNiA4LjQgMCA1LjItMy44IDguOC0xMS4yIDguOC03LjYgMC0xMS43LTMuNi0xMi41LTkuMmg3LjhjLjQgMS45IDEuOCAyLjggNC43IDIuOCAyLjUtLjEgMy43LS44IDMuNy0yem00MC43LTUuN2MwIDguNC02LjEgMTQtMTMuNSAxNC0zLjEgMC01LjYtMS4xLTctMi4zdjEyLjNoLTcuN3YtMzcuM2g3LjZ2MS45YzEuNC0xLjQgNC4xLTIuNiA3LjEtMi42IDcuNSAwIDEzLjUgNS40IDEzLjUgMTR6bS0yMC41IDBjMCA0LjEgMi43IDcgNi4zIDcgMy42IDAgNi4zLTIuOCA2LjMtNyAwLTQuMS0yLjctNy02LjMtNy0zLjYgMC02LjMgMi45LTYuMyA3em00MS44IDEwLjZjLTEuNyAyLjEtNC4zIDMuMy03LjYgMy4zLTUuMyAwLTkuNi0zLjMtOS42LTguNCAwLTUuMSA0LjMtNy42IDEwLjQtNy45IDQuNi0uMyA2LjEtLjggNi4xLTIuMyAwLTEuNS0xLjQtMi42LTMuOS0yLjYtMy4xIDAtNC40IDEuNS00LjUgMy4yaC03LjVjLjQtNS44IDQuNy05LjkgMTItOS45IDcuMSAwIDExLjcgMy45IDExLjcgMTEuMXYxNi4yaC02LjRsLS43LTIuN3ptLTkuNS01LjRjMCAxLjUgMS40IDIuNSAzLjUgMi41IDIuOSAwIDUuMy0xLjYgNS4zLTV2LTFzLTEuNC43LTQuNC44Yy0zLjEuMi00LjQgMS4yLTQuNCAyLjd6bTQwLjgtMTd2Ny42cy0yLTIuMS01LjEtMi4xYy0yLjMgMC01IDEuMy01IDUuMnYxNC40aC03LjdWMTgyaDcuNnYyLjJjLS4xIDAgMS41LTIuNiA1LjMtMi42IDMuNC4xIDQuOSAyIDQuOSAyem0yOS43IDEzLjloLTE4LjljLjQgMi43IDIuNyA0LjggNiA0LjggMi4yIDAgMy41LS45IDQuNC0yLjNoOC4zYy0xLjggNS44LTUuOSA5LjQtMTIuNiA5LjQtNy43IDAtMTQtNS40LTE0LTEzLjggMC04LjEgNS43LTE0LjIgMTMuNS0xNC4yIDguOCAwIDEzLjIgNi45IDEzLjIgMTQuMS4xLjcuMSAyIC4xIDJ6bS0xMy4xLTkuM2MtMi45IDAtNC45IDEuOC01LjQgNC4xaDEwLjRjLS4yLTIuMy0yLjItNC4xLTUtNC4xem0yNi4xIDcuMnYxMy40SDYxMHYtMjYuN2g3LjZ2MS45YzEuNS0xLjQgMy42LTIuNSA2LjMtMi41IDYuNSAwIDEwLjggNC4zIDEwLjggMTEuOHYxNS41SDYyN3YtMTQuOWMwLTIuOC0xLjMtNS4yLTQuNC01LjItMy42LS4xLTQuOCAyLjYtNC44IDYuN3ptNDAuNyAzaDguNWMtMS4zIDYuNS02LjIgMTEtMTMuNCAxMS04LjEgMC0xNC4xLTUuOS0xNC4xLTE0IDAtOCA2LTE0IDE0LjEtMTQgNyAwIDExLjkgNC40IDEyLjkgMTAuN0g2NThjLS42LTItMi4zLTMuNC00LjctMy40LTMuMyAwLTUuOSAyLjgtNS45IDYuNyAwIDMuOSAyLjYgNi43IDYgNi43IDIuNiAwIDQuNS0xLjQgNS4xLTMuN3ptMTggMjEuMmMtMy41IDAtNS4yLS45LTUuMi0uOXYtNy4xczEuNi44IDMuMy44YzEuNyAwIDQtLjcgNC42LTMuN0w2NjguOCAxODJoOC42bDYuMSAxNi42IDYuMi0xNi42aDguM2wtMTEgMjcuMmMtMi45IDcuMS01LjIgMTAuNC0xMC41IDEwLjR6bTQwLjktMTAuOHYtMzguMmg4LjF2MzguMnptMjMuMy0xMy40djEzLjRINzMzdi0yNi43aDcuNnYxLjljMS41LTEuNCAzLjYtMi41IDYuMy0yLjUgNi41IDAgMTAuOCA0LjMgMTAuOCAxMS44djE1LjVINzUwdi0xNC45YzAtMi44LTEuMy01LjItNC40LTUuMi0zLjctLjEtNC45IDIuNi00LjkgNi43em0yMy0yMC45YzAtMi41IDItNC41IDQuNS00LjVzNC41IDIgNC41IDQuNS0yIDQuNS00LjUgNC41LTQuNS0yLjEtNC41LTQuNXptLjYgMzQuM3YtMjYuN2g3Ljd2MjYuN2gtNy43em0yNS42LjFjLTUuOCAwLTkuMi0zLjQtOS4yLTkuM3YtMTAuNGgtNC41di03LjFoNC41di0zLjlsNy43LTYuNXYxMC41aDYuN3Y3LjFoLTYuN3Y5LjNjMCAyLjYgMS43IDMuMiAzLjMgMy4yIDEuOCAwIDMuMy0uNyAzLjMtLjd2N2MwLS4xLTIuMS44LTUuMS44em0xMC40LTM0LjRjMC0yLjUgMi00LjUgNC41LTQuNXM0LjUgMiA0LjUgNC41LTIgNC41LTQuNSA0LjUtNC41LTIuMS00LjUtNC41em0uNiAzNC4zdi0yNi43aDcuN3YyNi43aC03Ljd6bTMwLjgtMi44Yy0xLjcgMi4xLTQuMyAzLjMtNy42IDMuMy01LjMgMC05LjYtMy4zLTkuNi04LjQgMC01LjEgNC4zLTcuNiAxMC40LTcuOSA0LjYtLjMgNi4xLS44IDYuMS0yLjMgMC0xLjUtMS40LTIuNi0zLjktMi42LTMuMSAwLTQuNCAxLjUtNC41IDMuMmgtNy41Yy40LTUuOCA0LjctOS45IDEyLTkuOSA3LjEgMCAxMS43IDMuOSAxMS43IDExLjF2MTYuMmgtNi40bC0uNy0yLjd6bS05LjQtNS40YzAgMS41IDEuNCAyLjUgMy41IDIuNSAyLjkgMCA1LjMtMS42IDUuMy01di0xcy0xLjQuNy00LjQuOGMtMy4yLjItNC40IDEuMi00LjQgMi43em0zMy42IDguM2MtNS44IDAtOS4yLTMuNC05LjItOS4zdi0xMC40aC00LjV2LTcuMWg0LjV2LTMuOWw3LjctNi41djEwLjVoNi43djcuMWgtNi43djkuM2MwIDIuNiAxLjcgMy4yIDMuMyAzLjIgMS44IDAgMy4zLS43IDMuMy0uN3Y3YzAtLjEtMi4xLjgtNS4xLjh6bTEwLjQtMzQuNGMwLTIuNSAyLTQuNSA0LjUtNC41czQuNSAyIDQuNSA0LjUtMiA0LjUtNC41IDQuNS00LjUtMi4xLTQuNS00LjV6bS42IDM0LjN2LTI2LjdoNy43djI2LjdoLTcuN3ptMzguNy0yNi43LTkuNSAyNi43aC04bC05LjUtMjYuN2g4LjJsNS4yIDE2LjUgNS4yLTE2LjV6bTI4LjIgMTUuNGgtMTguOWMuNCAyLjcgMi43IDQuOCA2IDQuOCAyLjIgMCAzLjUtLjkgNC40LTIuM2g4LjNjLTEuOCA1LjgtNS45IDkuNC0xMi42IDkuNC03LjcgMC0xNC01LjQtMTQtMTMuOCAwLTguMSA1LjctMTQuMiAxMy41LTE0LjIgOC44IDAgMTMuMiA2LjkgMTMuMiAxNC4xLjEuNy4xIDIgLjEgMlptLTEzLjEtOS4zYy0yLjkgMC00LjkgMS44LTUuNCA0LjFoMTAuNGMtLjItMi4zLTIuMi00LjEtNS00LjFaXFxcIiBmaWxsPVxcXCIjMTg1NTY4XFxcIi8+PC9nPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNSAyNFxcXCI+PHBhdGggZD1cXFwiTTIwLjgzNCAxMS4yM1Y4Ljk1N2E4LjMzMyA4LjMzMyAwIDAgMC0xNi42NjcgMHYyLjI3MWEzLjEyNSAzLjEyNSAwIDAgMC0yLjA4MyAyLjkzOHYyLjA4M2EzLjEyNSAzLjEyNSAwIDAgMCAzLjEyNCAzLjEyNWgzLjEyNmExLjA0MSAxLjA0MSAwIDAgMCAxLjA0MS0xLjA0MnYtNi4yNWExLjA0MiAxLjA0MiAwIDAgMC0xLjA0MS0xLjA0MUg2LjI1VjguOTU4YTYuMjUgNi4yNSAwIDEgMSAxMi41IDB2Mi4wODRoLTIuMDgzYTEuMDQxIDEuMDQxIDAgMCAwLTEuMDQyIDEuMDQxdjYuMjVhMS4wNDEgMS4wNDEgMCAwIDAgMS4wNDIgMS4wNDJoMy4xMjVhMy4xMjUgMy4xMjUgMCAwIDAgMy4xMjUtMy4xMjV2LTIuMDgzYTMuMTI1IDMuMTI1IDAgMCAwLTIuMDg0LTIuOTM4Wk03LjI5MiAxMy4xMjR2NC4xNjdINS4yMDlhMS4wNDIgMS4wNDIgMCAwIDEtMS4wNDItMS4wNDJ2LTIuMDgzYTEuMDQyIDEuMDQyIDAgMCAxIDEuMDQyLTEuMDQyaDIuMDgzWm0xMy41NDIgMy4xMjVhMS4wNDIgMS4wNDIgMCAwIDEtMS4wNDIgMS4wNDJoLTIuMDg0di00LjE2N2gyLjA4NGExLjA0MiAxLjA0MiAwIDAgMSAxLjA0MSAxLjA0MnYyLjA4M1pcXFwiIGZpbGw9XFxcIiNmZmZcXFwiLz48cGF0aCBkPVxcXCJNMTguMzg0IDIxLjYxNkE0LjYzIDQuNjMgMCAwIDEgMTUuMTIgMjNsLS4wMS0xLjE1OGEzLjQ3MiAzLjQ3MiAwIDAgMCAzLjQ0NS0zLjVsMS4xNTctLjAwOWE0LjYzIDQuNjMgMCAwIDEtMS4zMyAzLjI4NFpcXFwiIGZpbGw9XFxcIiNmZmZcXFwiIHN0cm9rZT1cXFwiI2ZmZlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIxLjA0MlxcXCIvPjxyZWN0IHg9XFxcIjExLjI1XFxcIiB5PVxcXCIyMC40MTZcXFwiIHdpZHRoPVxcXCI0LjY4OFxcXCIgaGVpZ2h0PVxcXCIzLjEyNVxcXCIgcng9XFxcIjEuNTYzXFxcIiBmaWxsPVxcXCIjZmZmXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDE1IDE0XFxcIj48cGF0aCBkPVxcXCJNNy4zODUgNC42NjdhMS4xIDEuMSAwIDAgMC0uNTE4LjEyOGMtLjE2LjA4NS0uMjk1LjIwOS0uMzkuMzYybC0uMDA0LjAwNi0uMDAzLjAwN2EuMzQ2LjM0NiAwIDAgMS0uMDkzLjEwNS40MzguNDM4IDAgMCAxLS40NTUuMDMzLjM3LjM3IDAgMCAxLS4xMTMtLjA5My4zMTMuMzEzIDAgMCAxLS4wNi0uMTE3LjI4Ny4yODcgMCAwIDEtLjAwNS0uMTI0bC0uMzI5LS4wNTguMzI5LjA1OGEuMzA1LjMwNSAwIDAgMSAuMDQ5LS4xMmwuMDA0LS4wMDUuMDA0LS4wMDZhMS43NSAxLjc1IDAgMCAxIC42NjMtLjYxNSAxLjkyIDEuOTIgMCAwIDEgMi4wOTIuMTc2Yy4zMjQuMjU2LjUzNy42MDUuNjA3Ljk4NS4wNy4zNzgtLjAwNS43Ny0uMjE1IDEuMTA1LS4yMTEuMzM3LS41NDYuNi0uOTUyLjczN2wtLjIyNy4wNzZ2LjM2YS4zMS4zMSAwIDAgMS0uMTA0LjIyNy40MTQuNDE0IDAgMCAxLS4yOC4xMDZjLS4xMSAwLS4yMS0uMDQtLjI4MS0uMTA2QS4zMS4zMSAwIDAgMSA3IDcuNjY3VjdhLjMxLjMxIDAgMCAxIC4xMDQtLjIyNy40MTQuNDE0IDAgMCAxIC4yOC0uMTA2Yy4yNzIgMCAuNTM2LS4xLjczNS0uMjg1YS45NzcuOTc3IDAgMCAwIC4zMTctLjcxNS45NzcuOTc3IDAgMCAwLS4zMTctLjcxNiAxLjA4IDEuMDggMCAwIDAtLjczNC0uMjg0Wm0wIDBWNXYtLjMzM1ptLS4zNjkgNC45MDYuMDEyLS4wMjEuMDA5LS4wMjNhLjE2LjE2IDAgMCAxIC4wMi0uMDM3LjczNi43MzYgMCAwIDEgLjA1LS4wNi4zOTEuMzkxIDAgMCAxIC4xMjItLjA3NC40MzMuNDMzIDAgMCAxIC4zMTEgMGwuMTItLjMxLS4xMi4zMWEuMzkuMzkgMCAwIDEgLjEyNy4wNzljLjAzNC4wMzIuMDYuMDcuMDc3LjEwOGEuMy4zIDAgMCAxIC4wMjUuMTJ2LjAxNWEuMjkuMjkgMCAwIDEtLjAyLjExOC4yNjMuMjYzIDAgMCAxLS4wNjcuMDk4bC4yMjcuMjQ0LS4yMjctLjI0NGEuMzIxLjMyMSAwIDAgMS0uMTE2LjA2OGwtLjAxLjAwMy0uMDEuMDA1YS4zODYuMzg2IDAgMCAxLS4yOTMgMGwtLjAxLS4wMDUtLjAxLS4wMDNhLjMyMS4zMjEgMCAwIDEtLjExNy0uMDY4bC0uMjI3LjI0NC4yMjctLjI0NGEuMjYzLjI2MyAwIDAgMS0uMDY3LS4wOTdsLS4wMDYtLjAxNS0uMDA3LS4wMTVhLjE5My4xOTMgMCAwIDEtLjAyMi0uMDkzVjkuNjRhLjUxLjUxIDAgMCAxLS4wMDItLjA1Ny4wNzguMDc4IDAgMCAxIC4wMDQtLjAxWk0zLjU3MiAxLjc0QTcuMjQ1IDcuMjQ1IDAgMCAxIDcuMzg1LjY2N2MuOTAyIDAgMS43OTUuMTY1IDIuNjI3LjQ4NS44MzMuMzIgMS41ODguNzg5IDIuMjIyIDEuMzc4YTYuMzIzIDYuMzIzIDAgMCAxIDEuNDggMi4wNTVjLjM0MS43NjYuNTE3IDEuNTg3LjUxNyAyLjQxNWE2IDYgMCAwIDEtMS4xNDcgMy41MSA2Ljc2IDYuNzYgMCAwIDEtMy4wNzIgMi4zMzggNy4zNjIgNy4zNjIgMCAwIDEtMy45NjguMzYzIDcuMDMzIDcuMDMzIDAgMCAxLTMuNTEtMS43NDFBNi4yMDEgNi4yMDEgMCAwIDEgLjY3IDguMjNhNS44OTIgNS44OTIgMCAwIDEgLjM4Ny0zLjY0NUE2LjQ2NyA2LjQ2NyAwIDAgMSAzLjU3MiAxLjc0Wm0uNDQ2IDkuOTc4YTYuMzkgNi4zOSAwIDAgMCAzLjM2Ny45NDljMS42MDQgMCAzLjE0Ni0uNTkyIDQuMjg4LTEuNjUyQzEyLjgxNSA5Ljk1NSAxMy40NiA4LjUxMSAxMy40NiA3YTUuNCA1LjQgMCAwIDAtMS4wMy0zLjE1OCA2LjAwNyA2LjAwNyAwIDAgMC0yLjcyOS0yLjA4IDYuNDg4IDYuNDg4IDAgMCAwLTMuNDk4LS4zMiA2LjIyNiA2LjIyNiAwIDAgMC0zLjEwOCAxLjU0MiA1LjU2IDUuNTYgMCAwIDAtMS42NyAyLjkwNiA1LjMxNCA1LjMxNCAwIDAgMCAuMzQ4IDMuMjg3IDUuNzczIDUuNzczIDAgMCAwIDIuMjQ0IDIuNTRaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2Utd2lkdGg9XFxcIi42NjdcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjAgMjBcXFwiPjxwYXRoIGZpbGw9XFxcIiM2ODc5N0VcXFwiIHN0cm9rZT1cXFwiIzY4Nzk3RVxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIiBkPVxcXCJtMTIuMzMgMTQuNjAyLS41OS4xMzJhOC4wNzUgOC4wNzUgMCAwIDEtMS43NC4xODNsMi4zMy0uMzE1Wm0wIDAtLjQyNy0uNDI5bS40MjcuNDMtLjQyNy0uNDNtMCAwLTEuOS0xLjkwOC0uMDgzLS4wODRtMS45ODMgMS45OTJMOS45MiAxMi4xODFtMCAwLS4xMTgtLjAxMm0uMTE4LjAxMi0uMTE4LS4wMTJtMCAwYTIuMjIgMi4yMiAwIDAgMS0xLjk3LTEuOTcxbC0uMDEzLS4xMTdtMS45ODMgMi4wODhMNy44MiAxMC4wOG0wIDAtLjA4My0uMDgzbS4wODMuMDgzLS4wODMtLjA4M20wIDBMNC45MDMgNy4xNTZsLS4yMTktLjIxOW0zLjA1MiAzLjA2MS0zLjA1Mi0zLjA2bTAgMC0uMjM0LjJtLjIzNC0uMi0uMjM0LjJtMCAwYTguNTQ0IDguNTQ0IDAgMCAwLTIuMDc2IDIuNjcuNDMyLjQzMiAwIDAgMCAwIC4zODUgOC41MTggOC41MTggMCAwIDAgMy4xMTkgMy40MzRNNC40NSA3LjEzOWwxLjA0MyA2LjQ4OE0xOC44MDggMTBDMTcuMzg0IDYuNTI5IDEzLjk3OCA0LjA4MyAxMCA0LjA4M2E5LjU0NSA5LjU0NSAwIDAgMC0zLjMyMi41OTZsLjc4Mi43NzdBOC45NzMgOC45NzMgMCAwIDEgMTAgNS4wODNMMTguODA4IDEwWm0wIDBhOS40OTIgOS40OTIgMCAwIDEtMi45NDMgMy44ODNsLS43MDQtLjcwOWE4LjU1MSA4LjU1MSAwIDAgMCAyLjQ2Ni0yLjk4MS40MzIuNDMyIDAgMCAwIDAtLjM4NUE4LjUxNyA4LjUxNyAwIDAgMCAxMCA1LjA4M0wxOC44MDggMTBaTTUuNDkzIDEzLjYyN0E4LjUxOCA4LjUxOCAwIDAgMCAxMCAxNC45MTdsLTQuNTA3LTEuMjlabTcuNzg0IDEuOTA0LS4xNDUtLjE0NS0uMTk1LjA2NGE5LjMxMiA5LjMxMiAwIDAgMS0yLjkzNy40NjdjLTMuOTc4IDAtNy4zODQtMi40NDYtOC44MDctNS45MTdhOS40NjQgOS40NjQgMCAwIDEgMi41MTktMy41MzNsLjI2Ny0uMjM1LS4yNTEtLjI1MS0xLjI5Mi0xLjI5MmEuNDE4LjQxOCAwIDEgMSAuNTkxLS41OWwxMi44NzUgMTIuODc0YS40MTguNDE4IDAgMCAxLS41OTEuNTkxbC0yLjAzNC0yLjAzM1pNMTAgNy44MzNBMi4xNjcgMi4xNjcgMCAwIDEgMTIuMTY3IDEwYzAgLjA1NS0uMDAyLjExLS4wMDYuMTY0TDkuODM2IDcuODRjLjA1NC0uMDA0LjEwOS0uMDA2LjE2NC0uMDA2WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCI+PHBhdGggZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBkPVxcXCJNMTEuMzMzIDIuMmMtMi42LTEuNDY3LTUuOC0xLTcuOTMzIDFWMmMwLS40LS4yNjctLjY2Ny0uNjY3LS42NjdTMi4wNjcgMS42IDIuMDY3IDJ2M2MwIC40LjI2Ni42NjYuNjY2LjY2NmgzYy40IDAgLjY2Ny0uMjY2LjY2Ny0uNjY2cy0uMjY3LS42NjctLjY2Ny0uNjY3aC0xLjZjMS0xLjA2NyAyLjQtMS42NjcgMy44NjctMS42NjcgMi45MzMgMCA1LjMzMyAyLjQgNS4zMzMgNS4zMzQgMCAyLjkzMy0yLjQgNS4zMzMtNS4zMzMgNS4zMzMtMi45MzMgMC01LjMzMy0yLjQtNS4zMzMtNS4zMzMgMC0uNC0uMjY3LS42NjctLjY2Ny0uNjY3UzEuMzMzIDcuNiAxLjMzMyA4YzAgMy42NjYgMyA2LjY2NiA2LjY2NyA2LjY2NiAyLjQgMCA0LjYtMS4yNjYgNS44LTMuMzMzIDEuOC0zLjIuNzMzLTcuMjY3LTIuNDY3LTkuMTMzWk04IDUuMzMzYy0uNCAwLS42NjcuMjY3LS42NjcuNjY3djJjMCAuNC4yNjcuNjY2LjY2Ny42NjZoMS4zMzNjLjQgMCAuNjY3LS4yNjYuNjY3LS42NjZzLS4yNjctLjY2Ny0uNjY3LS42NjdoLS42NjZWNmMwLS40LS4yNjctLjY2Ny0uNjY3LS42NjdaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxOTAgMTkwXFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxjaXJjbGUgY3g9XFxcIjk1XFxcIiBjeT1cXFwiOTVcXFwiIHI9XFxcIjg1XFxcIiBmaWxsPVxcXCIjZmZmXFxcIi8+PGNpcmNsZSBjeD1cXFwiOTVcXFwiIGN5PVxcXCI5NVxcXCIgcj1cXFwiOTVcXFwiIGZpbGw9XFxcIiNDREY4RkFcXFwiLz48cGF0aCBkPVxcXCJNNTEuMTcyIDc5LjYzNmMwLTEuODQ4IDAtMi43NzIuMjQyLTMuNjIyYTYuMzMxIDYuMzMxIDAgMCAxIC45ODEtMi4wMDdjLjUyMy0uNzEzIDEuMjUyLTEuMjggMi43MS0yLjQxNmwzNC4xMTYtMjYuNTM3Yy45MjgtLjcyMyAxLjM5Mi0xLjA4NCAxLjktMS4zNDlhNi4zMjkgNi4zMjkgMCAwIDEgMi4wNDctLjY1NWMuNTY3LS4wOCAxLjE1NS0uMDU2IDIuMzMtLjAwOCAxLjAyNy4wNDIgMS41NC4wNjMgMi4wMzMuMTYzLjYyMi4xMjYgMS4yMi4zNDQgMS43NzcuNjQ4LjQ0Mi4yNDEuODQ4LjU1NSAxLjY2MSAxLjE4NGwzNC42ODggMjYuODI0YzEuNDY3IDEuMTM0IDIuMiAxLjcwMiAyLjcyNiAyLjQxNi40NDYuNjA2Ljc4IDEuMjg4Ljk4NyAyLjAxMi4yNDQuODUyLjI0NCAxLjc4LjI0NCAzLjYzNHY1Mi4xMDFjMCAxLjgwMiAwIDIuNzA0LS4zNTYgMy4zOWEzLjE2NyAzLjE2NyAwIDAgMS0xLjM1IDEuMzQ5Yy0uNjg2LjM1Ny0xLjU4Ny4zNTctMy4zOS4zNTdINjAuMzQ1Yy0zLjI0NSAwLTQuODY3IDAtNi4xMDItLjY0MmE1LjY5NyA1LjY5NyAwIDAgMS0yLjQzLTIuNDI5Yy0uNjQxLTEuMjM1LS42NDEtMi44NTctLjY0MS02LjEwMlY3OS42MzZaXFxcIiBmaWxsPVxcXCJ1cmwoI2ljLXZlcmlmaWNhdGlvbl9zdmdfX2EpXFxcIi8+PHBhdGggZD1cXFwiTTU5Ljc3NSA3MS45MjRjMS4yODYgMCAxLjg5LjAwMiAyLjQ2LjExNC43NC4xNDYgMS40NDYuNDI5IDIuMDgxLjgzNC40OS4zMTMuOTI4LjczIDEuODU4IDEuNjE4bDI2Ljc2IDI1LjU2MmE1LjM2IDUuMzYgMCAwIDEgLjAxMiA3LjczOGwtMjYuMTM0IDI1LjExM2MtMS44MzIgMS43Ni0yLjY5MyAyLjU4MS0zLjc2NiAzLjAxMy0xLjA3Mi40MzEtMi4yNjIuNDM2LTQuODAyLjQzNmgtLjc0MmMtMS41IDAtMi41OTYgMC0zLjQzNC0uMTEzLS44MjktLjExMS0xLjM2MS0uMzI4LTEuNzYtLjcyNy0uNC0uNC0uNjE2LS45MzItLjcyOC0xLjc2MS0uMTEyLS44MzgtLjExMy0xLjkzMy0uMTEzLTMuNDM0VjgwLjIzMmMwLTEuMzU4IDAtMi4zNjIuMDU2LTMuMTYuMDU1LS43OTQuMTY0LTEuMzYzLjM3Mi0xLjg1M2E1LjQwMiA1LjQwMiAwIDAgMSAyLjg2Ny0yLjg2N2MuNDktLjIwOCAxLjA1OC0uMzE3IDEuODUzLS4zNzIuNzk4LS4wNTYgMS44MDItLjA1NiAzLjE2LS4wNTZaXFxcIiBmaWxsPVxcXCIjQjlEREZGXFxcIiBmaWxsLW9wYWNpdHk9XFxcIi42XFxcIiBzdHJva2U9XFxcInVybCgjaWMtdmVyaWZpY2F0aW9uX3N2Z19fYilcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjU5MVxcXCIvPjxwYXRoIGQ9XFxcIk0xMzEuNzggNzEuOTI0Yy0xLjI4NiAwLTEuODkuMDAyLTIuNDYxLjExNGE2LjA0MSA2LjA0MSAwIDAgMC0yLjA4MS44MzRjLS40OS4zMTMtLjkyNy43My0xLjg1NyAxLjYxOGwtMjYuNzYgMjUuNTYyYTUuMzYgNS4zNiAwIDAgMC0uMDEyIDcuNzM4bDI2LjEzNCAyNS4xMTNjMS44MzIgMS43NiAyLjY5MyAyLjU4MSAzLjc2NSAzLjAxMyAxLjA3My40MzEgMi4yNjMuNDM2IDQuODAzLjQzNmguNzQyYzEuNSAwIDIuNTk2IDAgMy40MzMtLjExMy44My0uMTExIDEuMzYyLS4zMjggMS43NjEtLjcyNy40LS40LjYxNi0uOTMyLjcyNy0xLjc2MS4xMTMtLjgzOC4xMTQtMS45MzMuMTE0LTMuNDM0VjgwLjIzMmMwLTEuMzU4IDAtMi4zNjItLjA1Ni0zLjE2LS4wNTUtLjc5NC0uMTY1LTEuMzYzLS4zNzItMS44NTNhNS40MDIgNS40MDIgMCAwIDAtMi44NjgtMi44NjdjLS40ODktLjIwOC0xLjA1OC0uMzE3LTEuODUzLS4zNzItLjc5Ny0uMDU2LTEuODAxLS4wNTYtMy4xNTktLjA1NlpcXFwiIGZpbGw9XFxcIiNCOURERkZcXFwiIGZpbGwtb3BhY2l0eT1cXFwiLjZcXFwiIHN0cm9rZT1cXFwidXJsKCNpYy12ZXJpZmljYXRpb25fc3ZnX19jKVxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNTkxXFxcIi8+PHBhdGggZD1cXFwiTTUwLjcxIDEyOS40NjVjMC0xLjMxLjAwMi0xLjkyNS4xMTUtMi40OTdhNi4wMzYgNi4wMzYgMCAwIDEgMS4zODItMi44MDhjLjM4NC0uNDM5Ljg3LS44MTUgMS45MDktMS42MTVsMzUuMjczLTI3LjE2OGMuOTU2LS43MzYgMS40MDQtMS4wOCAxLjg5My0xLjMzYTYuMDM0IDYuMDM0IDAgMCAxIDEuODkyLS42MDJjLjU0My0uMDc3IDEuMTA5LS4wNTUgMi4zMTQtLjAwNiAxLjA1LjA0MyAxLjU0NC4wNjQgMi4wMTYuMTZhNi4wMzQgNi4wMzQgMCAwIDEgMS42NC41OTVjLjQyNS4yMjcuODE3LjUyNyAxLjY1MyAxLjE2NmwzNC41NTMgMjYuNDUxYzIuMzQ5IDEuNzk4IDMuNDQ1IDIuNjQ1IDQuMDU4IDMuODI0LjAzOC4wNzMuMDc1LjE0Ny4xMS4yMjIuNTYzIDEuMjAzLjU3IDIuNTg5LjU3IDUuNTQ3IDAgMS40MzEtLjAwMSAyLjQ3Ni0uMTA0IDMuMjc4LS4xMDIuNzk1LS4zIDEuMzA5LS42NjYgMS43MDJhMi43MzUgMi43MzUgMCAwIDEtLjE0My4xNDJjLS4zOTMuMzY2LS45MDcuNTY1LTEuNzAyLjY2Ny0uODAyLjEwMy0xLjg0Ny4xMDQtMy4yNzguMTA0SDU4LjU0MmMtMi4yODYgMC0zLjM1NC0uMDA0LTQuMjA1LS4zYTUuNDAzIDUuNDAzIDAgMCAxLTMuMzI2LTMuMzI3Yy0uMjk2LS44NS0uMy0xLjkxOC0uMy00LjIwNVpcXFwiIGZpbGw9XFxcIiNCOURERkZcXFwiIHN0cm9rZT1cXFwidXJsKCNpYy12ZXJpZmljYXRpb25fc3ZnX19kKVxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNTkxXFxcIi8+PHBhdGggZD1cXFwiTTUwLjcxIDEyOS40NjVjMC0xLjMxLjAwMi0xLjkyNS4xMTUtMi40OTdhNi4wMzYgNi4wMzYgMCAwIDEgMS4zODItMi44MDhjLjM4NC0uNDM5Ljg3LS44MTUgMS45MDktMS42MTVsMzUuMjczLTI3LjE2OGMuOTU2LS43MzYgMS40MDQtMS4wOCAxLjg5My0xLjMzYTYuMDM0IDYuMDM0IDAgMCAxIDEuODkyLS42MDJjLjU0My0uMDc3IDEuMTA5LS4wNTUgMi4zMTQtLjAwNiAxLjA1LjA0MyAxLjU0NC4wNjQgMi4wMTYuMTZhNi4wMzQgNi4wMzQgMCAwIDEgMS42NC41OTVjLjQyNS4yMjcuODE3LjUyNyAxLjY1MyAxLjE2NmwzNC41NTMgMjYuNDUxYzIuMzQ5IDEuNzk4IDMuNDQ1IDIuNjQ1IDQuMDU4IDMuODI0bC4yNjItLjEzNy0uMjYyLjEzN2MuMDM4LjA3My4wNzUuMTQ3LjExLjIyMmwuMjY3LS4xMjUtLjI2Ny4xMjVjLjU2MyAxLjIwMy41NyAyLjU4OS41NyA1LjU0NyAwIDEuNDMxLS4wMDEgMi40NzYtLjEwNCAzLjI3OC0uMTAyLjc5NS0uMyAxLjMwOS0uNjY2IDEuNzAyYTMuMjE0IDMuMjE0IDAgMCAxLS4xNDMuMTQzYy0uMzkzLjM2NS0uOTA3LjU2NC0xLjcwMi42NjYtLjgwMi4xMDMtMS44NDcuMTA0LTMuMjc4LjEwNEg1OC41NDJjLTIuMjg2IDAtMy4zNTQtLjAwNC00LjIwNS0uM2E1LjQwMyA1LjQwMyAwIDAgMS0zLjMyNi0zLjMyN2MtLjI5Ni0uODUtLjMtMS45MTgtLjMtNC4yMDVaXFxcIiBmaWxsPVxcXCJ1cmwoI2ljLXZlcmlmaWNhdGlvbl9zdmdfX2UpXFxcIiBzdHJva2U9XFxcInVybCgjaWMtdmVyaWZpY2F0aW9uX3N2Z19fZilcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjU5MVxcXCIvPjxjaXJjbGUgY3g9XFxcIjEzMy43MzNcXFwiIGN5PVxcXCIxMzIuMjEzXFxcIiByPVxcXCIyMS4yMTNcXFwiIGZpbGw9XFxcIiNGMUY3RjlcXFwiLz48bWFzayBpZD1cXFwiaWMtdmVyaWZpY2F0aW9uX3N2Z19faVxcXCIgZmlsbD1cXFwiI2ZmZlxcXCI+PHBhdGggZmlsbC1ydWxlPVxcXCJldmVub2RkXFxcIiBjbGlwLXJ1bGU9XFxcImV2ZW5vZGRcXFwiIGQ9XFxcIk0xNDYuNTQxIDEyNy4zNjRhMy4wMDEgMy4wMDEgMCAwIDAtNC4yNDMtNC4yNDNsLTEyLjEzMSAxMi4xMzEtNC4yODMtNC4yODNhMyAzIDAgMSAwLTQuMjQzIDQuMjQzbDYuMzY0IDYuMzY0YTMuMDAxIDMuMDAxIDAgMCAwIDMuNDYuNTY0Yy4zMzktLjE0Ni42NTctLjM1Ny45MzQtLjYzNGwxNC4xNDItMTQuMTQyWlxcXCIvPjwvbWFzaz48cGF0aCBmaWxsLXJ1bGU9XFxcImV2ZW5vZGRcXFwiIGNsaXAtcnVsZT1cXFwiZXZlbm9kZFxcXCIgZD1cXFwiTTE0Ni41NDEgMTI3LjM2NGEzLjAwMSAzLjAwMSAwIDAgMC00LjI0My00LjI0M2wtMTIuMTMxIDEyLjEzMS00LjI4My00LjI4M2EzIDMgMCAxIDAtNC4yNDMgNC4yNDNsNi4zNjQgNi4zNjRhMy4wMDEgMy4wMDEgMCAwIDAgMy40Ni41NjRjLjMzOS0uMTQ2LjY1Ny0uMzU3LjkzNC0uNjM0bDE0LjE0Mi0xNC4xNDJaXFxcIiBmaWxsPVxcXCJ1cmwoI2ljLXZlcmlmaWNhdGlvbl9zdmdfX2cpXFxcIiBmaWxsLW9wYWNpdHk9XFxcIi45XFxcIi8+PHBhdGggZD1cXFwibTE0Ni41NDEgMTIzLjEyMS0uMTczLjE3My4xNzMtLjE3M1ptMCA0LjI0My0uMTczLS4xNzQuMTczLjE3NFptLTQuMjQzLTQuMjQzLS4xNzMtLjE3My4xNzMuMTczWm0tMTIuMTMxIDEyLjEzMS0uMTczLjE3My4xNzMuMTc0LjE3My0uMTc0LS4xNzMtLjE3M1ptLTQuMjgzLTQuMjgzLjE3My0uMTczLS4xNzMuMTczWm0tNC4yNDMgNC4yNDMuMTc0LS4xNzQtLjE3NC4xNzRabTYuMzY0IDYuMzY0LS4xNzMuMTczLjE3My0uMTczWm0zLjQ2LjU2NC0uMDk3LS4yMjUtLjAxMi4wMDYuMTA5LjIxOVptLjkzNC0uNjM0LS4xNzQtLjE3NC4xNzQuMTc0Wm0xMy45NjktMTguMjEyYTIuNzU2IDIuNzU2IDAgMCAxIDAgMy44OTZsLjM0Ni4zNDdhMy4yNDUgMy4yNDUgMCAwIDAgMC00LjU4OWwtLjM0Ni4zNDZabS0zLjg5NyAwYTIuNzU2IDIuNzU2IDAgMCAxIDMuODk3IDBsLjM0Ni0uMzQ2YTMuMjQzIDMuMjQzIDAgMCAwLTQuNTg5IDBsLjM0Ni4zNDZabS0xMi4xMzEgMTIuMTMxIDEyLjEzMS0xMi4xMzEtLjM0Ni0uMzQ2LTEyLjEzMSAxMi4xMzEuMzQ2LjM0NlptLTQuNjI5LTQuMjgzIDQuMjgzIDQuMjgzLjM0Ni0uMzQ2LTQuMjgzLTQuMjgzLS4zNDYuMzQ2Wm0tMy44OTYgMGEyLjc1NSAyLjc1NSAwIDAgMSAzLjg5NiAwbC4zNDYtLjM0NmEzLjI0MyAzLjI0MyAwIDAgMC00LjU4OSAwbC4zNDcuMzQ2Wm0wIDMuODk2YTIuNzU1IDIuNzU1IDAgMCAxIDAtMy44OTZsLS4zNDctLjM0NmEzLjI0NSAzLjI0NSAwIDAgMCAwIDQuNTg5bC4zNDctLjM0N1ptNi4zNjQgNi4zNjQtNi4zNjQtNi4zNjQtLjM0Ny4zNDcgNi4zNjQgNi4zNjQuMzQ3LS4zNDdabTMuMTc3LjUxOWEyLjc1NSAyLjc1NSAwIDAgMS0zLjE3Ny0uNTE5bC0uMzQ3LjM0N2EzLjI0NCAzLjI0NCAwIDAgMCAzLjc0Mi42MWwtLjIxOC0uNDM4Wm0uODY5LS41ODlhMi43MzUgMi43MzUgMCAwIDEtLjg1Ny41ODNsLjE5NC40NWEzLjIzNyAzLjIzNyAwIDAgMCAxLjAxLS42ODZsLS4zNDctLjM0N1ptMTQuMTQzLTE0LjE0Mi0xNC4xNDMgMTQuMTQyLjM0Ny4zNDcgMTQuMTQyLTE0LjE0Mi0uMzQ2LS4zNDdaXFxcIiBmaWxsPVxcXCJ1cmwoI2ljLXZlcmlmaWNhdGlvbl9zdmdfX2gpXFxcIiBtYXNrPVxcXCJ1cmwoI2ljLXZlcmlmaWNhdGlvbl9zdmdfX2kpXFxcIi8+PG1hc2sgaWQ9XFxcImljLXZlcmlmaWNhdGlvbl9zdmdfX2xcXFwiIGZpbGw9XFxcIiNmZmZcXFwiPjxwYXRoIGZpbGwtcnVsZT1cXFwiZXZlbm9kZFxcXCIgY2xpcC1ydWxlPVxcXCJldmVub2RkXFxcIiBkPVxcXCJNMTQ2LjU0MSAxMjcuMzY0YTMuMDAxIDMuMDAxIDAgMCAwLTQuMjQzLTQuMjQzbC0xMi4xMzEgMTIuMTMxLTQuMjgzLTQuMjgzYTMgMyAwIDEgMC00LjI0MyA0LjI0M2w2LjM2NCA2LjM2NGEzLjAwMSAzLjAwMSAwIDAgMCAzLjQ2LjU2NGMuMzM5LS4xNDYuNjU3LS4zNTcuOTM0LS42MzRsMTQuMTQyLTE0LjE0MlpcXFwiLz48L21hc2s+PHBhdGggZmlsbC1ydWxlPVxcXCJldmVub2RkXFxcIiBjbGlwLXJ1bGU9XFxcImV2ZW5vZGRcXFwiIGQ9XFxcIk0xNDYuNTQxIDEyNy4zNjRhMy4wMDEgMy4wMDEgMCAwIDAtNC4yNDMtNC4yNDNsLTEyLjEzMSAxMi4xMzEtNC4yODMtNC4yODNhMyAzIDAgMSAwLTQuMjQzIDQuMjQzbDYuMzY0IDYuMzY0YTMuMDAxIDMuMDAxIDAgMCAwIDMuNDYuNTY0Yy4zMzktLjE0Ni42NTctLjM1Ny45MzQtLjYzNGwxNC4xNDItMTQuMTQyWlxcXCIgZmlsbD1cXFwidXJsKCNpYy12ZXJpZmljYXRpb25fc3ZnX19qKVxcXCIgZmlsbC1vcGFjaXR5PVxcXCIuNzVcXFwiLz48cGF0aCBkPVxcXCJtMTQ2LjU0MSAxMjMuMTIxLS4xNzMuMTczLjE3My0uMTczWm0wIDQuMjQzLS4xNzMtLjE3NC4xNzMuMTc0Wm0tNC4yNDMtNC4yNDMtLjE3My0uMTczLjE3My4xNzNabS0xMi4xMzEgMTIuMTMxLS4xNzMuMTczLjE3My4xNzQuMTczLS4xNzQtLjE3My0uMTczWm0tNC4yODMtNC4yODMuMTczLS4xNzMtLjE3My4xNzNabS00LjI0MyA0LjI0My4xNzQtLjE3NC0uMTc0LjE3NFptNi4zNjQgNi4zNjQtLjE3My4xNzMuMTczLS4xNzNabTMuNDYuNTY0LS4wOTctLjIyNS0uMDEyLjAwNi4xMDkuMjE5Wm0uOTM0LS42MzQtLjE3NC0uMTc0LjE3NC4xNzRabTEzLjk2OS0xOC4yMTJhMi43NTYgMi43NTYgMCAwIDEgMCAzLjg5NmwuMzQ2LjM0N2EzLjI0NSAzLjI0NSAwIDAgMCAwLTQuNTg5bC0uMzQ2LjM0NlptLTMuODk3IDBhMi43NTYgMi43NTYgMCAwIDEgMy44OTcgMGwuMzQ2LS4zNDZhMy4yNDMgMy4yNDMgMCAwIDAtNC41ODkgMGwuMzQ2LjM0NlptLTEyLjEzMSAxMi4xMzEgMTIuMTMxLTEyLjEzMS0uMzQ2LS4zNDYtMTIuMTMxIDEyLjEzMS4zNDYuMzQ2Wm0tNC42MjktNC4yODMgNC4yODMgNC4yODMuMzQ2LS4zNDYtNC4yODMtNC4yODMtLjM0Ni4zNDZabS0zLjg5NiAwYTIuNzU1IDIuNzU1IDAgMCAxIDMuODk2IDBsLjM0Ni0uMzQ2YTMuMjQzIDMuMjQzIDAgMCAwLTQuNTg5IDBsLjM0Ny4zNDZabTAgMy44OTZhMi43NTUgMi43NTUgMCAwIDEgMC0zLjg5NmwtLjM0Ny0uMzQ2YTMuMjQ1IDMuMjQ1IDAgMCAwIDAgNC41ODlsLjM0Ny0uMzQ3Wm02LjM2NCA2LjM2NC02LjM2NC02LjM2NC0uMzQ3LjM0NyA2LjM2NCA2LjM2NC4zNDctLjM0N1ptMy4xNzcuNTE5YTIuNzU1IDIuNzU1IDAgMCAxLTMuMTc3LS41MTlsLS4zNDcuMzQ3YTMuMjQ0IDMuMjQ0IDAgMCAwIDMuNzQyLjYxbC0uMjE4LS40MzhabS44NjktLjU4OWEyLjczNSAyLjczNSAwIDAgMS0uODU3LjU4M2wuMTk0LjQ1YTMuMjM3IDMuMjM3IDAgMCAwIDEuMDEtLjY4NmwtLjM0Ny0uMzQ3Wm0xNC4xNDMtMTQuMTQyLTE0LjE0MyAxNC4xNDIuMzQ3LjM0NyAxNC4xNDItMTQuMTQyLS4zNDYtLjM0N1pcXFwiIGZpbGw9XFxcInVybCgjaWMtdmVyaWZpY2F0aW9uX3N2Z19faylcXFwiIGZpbGwtb3BhY2l0eT1cXFwiLjFcXFwiIG1hc2s9XFxcInVybCgjaWMtdmVyaWZpY2F0aW9uX3N2Z19fbClcXFwiLz48ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XFxcImljLXZlcmlmaWNhdGlvbl9zdmdfX2FcXFwiIHgxPVxcXCI3Ni42ODRcXFwiIHkxPVxcXCI4Ni41NjhcXFwiIHgyPVxcXCIxNDMuNDE3XFxcIiB5Mj1cXFwiMTExLjI4M1xcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIHN0b3AtY29sb3I9XFxcIiM3RkMwRkJcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIjFcXFwiIHN0b3AtY29sb3I9XFxcIiM0MDg4RjRcXFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cXFwiaWMtdmVyaWZpY2F0aW9uX3N2Z19fYlxcXCIgeDE9XFxcIjkxLjg4OVxcXCIgeTE9XFxcIjY4LjM3OFxcXCIgeDI9XFxcIjM0LjAwOFxcXCIgeTI9XFxcIjkzLjkzN1xcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIi43NjZcXFwiIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiIHN0b3Atb3BhY2l0eT1cXFwiMFxcXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVxcXCJpYy12ZXJpZmljYXRpb25fc3ZnX19jXFxcIiB4MT1cXFwiOTkuNjY1XFxcIiB5MT1cXFwiNjguMzc4XFxcIiB4Mj1cXFwiMTU3LjU0N1xcXCIgeTI9XFxcIjkzLjkzN1xcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIi43NjZcXFwiIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiIHN0b3Atb3BhY2l0eT1cXFwiMFxcXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVxcXCJpYy12ZXJpZmljYXRpb25fc3ZnX19kXFxcIiB4MT1cXFwiNDUuOTE3XFxcIiB5MT1cXFwiOTYuMTg1XFxcIiB4Mj1cXFwiNjYuNTY5XFxcIiB5Mj1cXFwiMTU5LjgyMlxcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIi43NjZcXFwiIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiIHN0b3Atb3BhY2l0eT1cXFwiMFxcXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVxcXCJpYy12ZXJpZmljYXRpb25fc3ZnX19lXFxcIiB4MT1cXFwiOTUuNFxcXCIgeTE9XFxcIjkzXFxcIiB4Mj1cXFwiOTUuNFxcXCIgeTI9XFxcIjEzNy41OTJcXFwiIGdyYWRpZW50VW5pdHM9XFxcInVzZXJTcGFjZU9uVXNlXFxcIj48c3RvcCBzdG9wLWNvbG9yPVxcXCIjQTdEMkZEXFxcIiBzdG9wLW9wYWNpdHk9XFxcIi4yNVxcXCIvPjxzdG9wIG9mZnNldD1cXFwiMVxcXCIgc3RvcC1jb2xvcj1cXFwiIzk3QzhGQ1xcXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVxcXCJpYy12ZXJpZmljYXRpb25fc3ZnX19mXFxcIiB4MT1cXFwiNDUuOTE3XFxcIiB5MT1cXFwiOTYuMTg1XFxcIiB4Mj1cXFwiNjYuNTY5XFxcIiB5Mj1cXFwiMTU5LjgyMlxcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIi43NjZcXFwiIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiIHN0b3Atb3BhY2l0eT1cXFwiMFxcXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVxcXCJpYy12ZXJpZmljYXRpb25fc3ZnX19nXFxcIiB4MT1cXFwiMTUwLjM0M1xcXCIgeTE9XFxcIjEyNC4xMjhcXFwiIHgyPVxcXCIxMTcuMzIyXFxcIiB5Mj1cXFwiMTM3LjM5NVxcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIHN0b3AtY29sb3I9XFxcIiMxNzk5N0JcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIjFcXFwiIHN0b3AtY29sb3I9XFxcIiMxNzk5N0JcXFwiIHN0b3Atb3BhY2l0eT1cXFwiMFxcXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVxcXCJpYy12ZXJpZmljYXRpb25fc3ZnX19oXFxcIiB4MT1cXFwiMTUwLjg3MVxcXCIgeTE9XFxcIjEyMS4yMjVcXFwiIHgyPVxcXCIxMzQuMDM1XFxcIiB5Mj1cXFwiMTI1Ljg5XFxcIiBncmFkaWVudFVuaXRzPVxcXCJ1c2VyU3BhY2VPblVzZVxcXCI+PHN0b3Agc3RvcC1jb2xvcj1cXFwiIzE3OTk3QlxcXCIvPjxzdG9wIG9mZnNldD1cXFwiMVxcXCIgc3RvcC1jb2xvcj1cXFwiIzE3OTk3QlxcXCIgc3RvcC1vcGFjaXR5PVxcXCIwXFxcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XFxcImljLXZlcmlmaWNhdGlvbl9zdmdfX2pcXFwiIHgxPVxcXCIxNTAuMzQzXFxcIiB5MT1cXFwiMTI0LjEyOFxcXCIgeDI9XFxcIjExNy4zMjJcXFwiIHkyPVxcXCIxMzcuMzk1XFxcIiBncmFkaWVudFVuaXRzPVxcXCJ1c2VyU3BhY2VPblVzZVxcXCI+PHN0b3Agc3RvcC1jb2xvcj1cXFwiIzE3OTk3QlxcXCIgc3RvcC1vcGFjaXR5PVxcXCIwXFxcIi8+PHN0b3Agb2Zmc2V0PVxcXCIxXFxcIiBzdG9wLWNvbG9yPVxcXCIjMTc5OTdCXFxcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XFxcImljLXZlcmlmaWNhdGlvbl9zdmdfX2tcXFwiIHgxPVxcXCIxNTAuODcxXFxcIiB5MT1cXFwiMTIxLjIyNVxcXCIgeDI9XFxcIjEzNC4wMzVcXFwiIHkyPVxcXCIxMjUuODlcXFwiIGdyYWRpZW50VW5pdHM9XFxcInVzZXJTcGFjZU9uVXNlXFxcIj48c3RvcCBzdG9wLWNvbG9yPVxcXCIjMTc5OTdCXFxcIiBzdG9wLW9wYWNpdHk9XFxcIjBcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIjFcXFwiIHN0b3AtY29sb3I9XFxcIiMxNzk5N0JcXFwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTYgMTlcXFwiPjxwYXRoIGZpbGw9XFxcIiNmZmZcXFwiIHN0cm9rZT1cXFwiIzE1NTM2NlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIiBkPVxcXCJNMTEgNS42NjdWNmgyLjMzM2EuMzMzLjMzMyAwIDAgMSAuMzM0LjMzM3Y5LjMzNEExLjY2NyAxLjY2NyAwIDAgMSAxMiAxNy4zMzNINGExLjY2NyAxLjY2NyAwIDAgMS0xLjY2Ny0xLjY2NlY2LjMzM0EuMzMzLjMzMyAwIDAgMSAyLjY2NyA2SDVWNWEuMzMzLjMzMyAwIDEgMSAuNjY3IDB2MWgyVjVhLjMzMy4zMzMgMCAxIDEgLjY2NiAwdjFoMlY1YzAtLjA4OC4wMzUtLjE3My4wOTgtLjIzNmwtLjIzNi0uMjM1LjIzNi4yMzVBLjMzMy4zMzMgMCAwIDEgMTEgNXYuNjY3Wk0zLjI5MyAxNi4zNzRsLjIzNi0uMjM2LS4yMzYuMjM2YTEgMSAwIDAgMCAuNzA3LjI5M2g4YTEgMSAwIDAgMCAxLTF2LTloLTJ2MWEuMzMzLjMzMyAwIDEgMS0uNjY3IDB2LTFoLTJ2MWEuMzMzLjMzMyAwIDAgMS0uNjY2IDB2LTFoLTJ2MWEuMzMzLjMzMyAwIDAgMS0uNjY3IDB2LTFIM3Y5YTEgMSAwIDAgMCAuMjkzLjcwN1ptMi4wNC0zLjcwN2g1LjMzNGEuMzMzLjMzMyAwIDEgMSAwIC42NjZINS4zMzNhLjMzMy4zMzMgMCAwIDEtLjIzNS0uMDk3bC0uMjM2LjIzNS4yMzYtLjIzNWEuMzMzLjMzMyAwIDAgMSAwLS40NzJsLS4yMzYtLjIzNi4yMzYuMjM2YS4zMzMuMzMzIDAgMCAxIC4yMzUtLjA5N1ptMS4wOTgtMi41N0EuMzMzLjMzMyAwIDAgMSA2LjY2NyAxMGg0YS4zMzMuMzMzIDAgMSAxIDAgLjY2N2gtNGEuMzMzLjMzMyAwIDAgMS0uMjM2LS41N1pcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjAgMjBcXFwiPjxwYXRoIGZpbGw9XFxcIiMxNTUzNjZcXFwiIGQ9XFxcIm0xNy41IDMuNjY3LjU4My0uNTg0YS44MDYuODA2IDAgMCAwIDAtMS4xNjYuODA2LjgwNiAwIDAgMC0xLjE2NiAwbC04Ljc1IDguNzVBNC40OCA0LjQ4IDAgMCAwIDUuODMyIDEwYTQuMTI2IDQuMTI2IDAgMCAwLTQuMTY3IDQuMTY3IDQuMTI2IDQuMTI2IDAgMCAwIDQuMTY3IDQuMTY2QTQuMTI2IDQuMTI2IDAgMCAwIDEwIDE0LjE2N2E0LjQ4IDQuNDggMCAwIDAtLjY2Ny0yLjMzNEwxNCA3LjE2N2wxLjc1IDEuNzVhLjgwNi44MDYgMCAwIDAgMS4xNjYgMCAuODA2LjgwNiAwIDAgMCAwLTEuMTY3TDE1LjE2NiA2bDEuMTY3LTEuMTY3LjU4NC41ODRhLjgwNi44MDYgMCAwIDAgMS4xNjYgMCAuODA2LjgwNiAwIDAgMCAwLTEuMTY3bC0uNTgzLS41ODNabS0xMS42NjcgMTNjLTEuNDE3IDAtMi41LTEuMDg0LTIuNS0yLjUgMC0xLjQxNyAxLjA4My0yLjUgMi41LTIuNXMyLjUgMS4wODMgMi41IDIuNWMwIDEuNDE2LTEuMDgzIDIuNS0yLjUgMi41WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAxOFxcXCI+PHBhdGggZD1cXFwiTTQuMzExIDcuNDMgMy43NCA4aDEwLjkyNmExIDEgMCAxIDEgMCAySDMuNzRsLjU3MS41NyA0LjQgNC4zODZhMSAxIDAgMCAxIDAgMS40MmwtLjAwMS4wMDNhMSAxIDAgMCAxLTEuNDIgMGwtLjAwMS0uMDAxTC42MjUgOS43MTRhMSAxIDAgMCAxLS4yMDgtLjMyOEwuNDE1IDkuMzhhMSAxIDAgMCAxIDAtLjc2bC4wMDItLjAwNmExIDEgMCAwIDEgLjIwOC0uMzI4bDYuNjY0LTYuNjY0LS4yMzYtLjIzNS4yMzYuMjM1QTEuMDA1IDEuMDA1IDAgMSAxIDguNzEgMy4wNDRsLTQuNCA0LjM4N1pcXFwiIGZpbGw9XFxcIiMxNTUzNjZcXFwiIHN0cm9rZT1cXFwiIzE1NTM2NlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDI2NiA2M1xcXCI+PHBhdGggZD1cXFwiTS44MyA1OC45MVYyOC43aDguNzI1djMwLjIxSC44M1ptMzUuMDE3LTIuOTNjLTEuOTgzIDIuNDE2LTQuODM1IDMuNzc3LTguNjE1IDMuNzc3LTYuMDc2IDAtMTAuOTcxLTMuNzc4LTEwLjk3MS05LjYwMyAwLTUuNzYzIDQuODk4LTguNjEgMTEuNzc3LTguOTg1IDUuMjctLjMxIDYuOTQzLS44NjggNi45NDMtMi42NjMgMC0xLjczNi0xLjYxMS0yLjkxMy00LjQ2My0yLjkxMy0zLjQ3IDAtNC45NiAxLjczNi01LjE0NSAzLjU5NGgtOC40OTRjLjQzNC02LjYyOCA1LjM5Mi0xMS4yMTQgMTMuNzAxLTExLjIxNCA4LjEyMiAwIDEzLjMzIDQuMzk4IDEzLjMzIDEyLjYzN3YxOC40NjNoLTcuMjU0bC0uODA5LTMuMDk0Wm0tMTAuNzg2LTYuMTk1YzAgMS43MzYgMS41NSAyLjc4OCA0LjAzIDIuNzg4IDMuMzQ4IDAgNi4wMTItMS44NTggNi4wMTItNS42MzhWNDUuODJzLTEuNjExLjc0My00Ljk2LjkzYy0zLjY1OC4xODUtNS4wODIgMS4zNjItNS4wODIgMy4wMzVabTM4LjMwNyA5LjQxNmMtNi42MzIgMC0xMC40NzctMy44NC0xMC40NzctMTAuNTMzVjM2LjgzNmgtNS4wODN2LTguMTE3aDUuMDgzdi00LjQ2MWw4LjgwMi03LjQzNFYyOC43Mmg3LjYyNnY4LjExN2gtNy42MjZWNDcuNDNjMCAyLjkxMiAxLjkyMiAzLjU5MyAzLjcyIDMuNTkzYTkuNTM5IDkuNTM5IDAgMCAwIDMuNzIxLS44MDV2Ny45OTJjMCAuMDAyLTIuMzU1Ljk5Mi01Ljc2Ni45OTJaTS4wOCAxOS42MzRjMC0yLjg1IDIuMjMtNS4xNDIgNS4wODItNS4xNDJhNS4xMyA1LjEzIDAgMCAxIDUuMTQ1IDUuMTQyYzAgMi43ODgtMi4yOTMgNS4wOC01LjE0NSA1LjA4YTUuMDYzIDUuMDYzIDAgMCAxLTUuMDgyLTUuMDhaTTc1LjgwOSA1OC45MVYyOC43aDguNzI2djMwLjIxaC04LjcyNlptMjAuMTU0LTM5LjIwMmMwLTEuNC0uMTktMi43Ni0uNTM3LTQuMDUzYTE1LjUxIDE1LjUxIDAgMCAwLTEuNTY5LTMuNzcyIDE1LjY2NSAxNS42NjUgMCAwIDAtMi40ODktMy4yNDEgMTUuNzMyIDE1LjczMiAwIDAgMC03LjAxOC00LjA1IDE1LjY1OCAxNS42NTggMCAwIDAtNC4wNTItLjUzM2gtLjAwNmExNS43NSAxNS43NSAwIDAgMC00LjA0OS41M2MtMS4zNC4zNTctMi42MDUuODg4LTMuNzc3IDEuNTY1QTE1LjY3IDE1LjY3IDAgMCAwIDY5LjIyIDguNjRhMTUuNzcgMTUuNzcgMCAwIDAtMi40OTIgMy4yNDIgMTUuNjQ4IDE1LjY0OCAwIDAgMC0xLjU3MiAzLjc3NGwyLjI0Mi42MDJhMTMuNDI3IDEzLjQyNyAwIDAgMSAzLjQ2Mi01Ljk3OCAxMy40MjYgMTMuNDI2IDAgMCAxIDUuOTg0LTMuNDUgMTMuNDI2IDEzLjQyNiAwIDAgMSAzLjQ0OC0uNDVoLjAwNmMxLjE5NSAwIDIuMzUuMTU4IDMuNDU0LjQ1M2ExMy40MTIgMTMuNDEyIDAgMCAxIDUuOTggMy40NDljLjgxOS44MiAxLjUzMSAxLjc1IDIuMTE5IDIuNzZhMTMuMyAxMy4zIDAgMCAxIDEuNzkzIDYuNjY0di4wMTJhMTMuMzggMTMuMzggMCAwIDEtLjQ1MSAzLjQ0MyAxMy4yMTcgMTMuMjE3IDAgMCAxLTEuMzM0IDMuMjE5bDIuMDEgMS4xNmExNS41MzkgMTUuNTM5IDAgMCAwIDEuNTY2LTMuNzc4IDE1LjcgMTUuNyAwIDAgMCAuNTMtNC4wNDFsLS4wMDItLjAxMlpcXFwiIGZpbGw9XFxcIiNmZmZcXFwiLz48cGF0aCBkPVxcXCJNMTAwLjAyMyAxOS43MDhhMTkuNjU1IDE5LjY1NSAwIDAgMC0yLjY0NC05Ljg1NSAxOS44MSAxOS44MSAwIDAgMC03LjIyLTcuMjEzQTE5LjYxMiAxOS42MTIgMCAwIDAgODUuNDAzLjY3IDE5LjgxIDE5LjgxIDAgMCAwIDgwLjI5OCAwaC0uMDA2Yy0xLjc2NSAwLTMuNDczLjIzMy01LjEwMi42NjZhMTkuNTEzIDE5LjUxMyAwIDAgMC00Ljc1OSAxLjk2OSAxOS44MjQgMTkuODI0IDAgMCAwLTQuMDg2IDMuMTM0bDEuMjMxIDEuMjNhMTguMTA2IDE4LjEwNiAwIDAgMSAzLjcyNi0yLjg1NSAxNy44MDMgMTcuODAzIDAgMCAxIDQuMzQtMS43OTMgMTguMDg0IDE4LjA4NCAwIDAgMSA0LjY0OC0uNjA3aC4wMDVhMTcuOTUgMTcuOTUgMCAwIDEgMTIuNzEzIDUuMjYxIDE3LjkzMyAxNy45MzMgMCAwIDEgNS4yNzMgMTIuNzAzdi4wMTFhMTguMDMgMTguMDMgMCAwIDEtLjYwNyA0LjY0MyAxNy42NzUgMTcuNjc1IDAgMCAxLTEuNzk3IDQuMzM3IDE4LjAyMyAxOC4wMjMgMCAwIDEtMi44NTcgMy43MjNsMS4yMzEgMS4yMzFhMTkuNzQzIDE5Ljc0MyAwIDAgMCAzLjEzNi00LjA4NCAxOS42IDE5LjYgMCAwIDAgMS45Ny00Ljc1NmMuNDM0LTEuNjI1LjY2Ni0zLjMzMi42NjYtNS4wOTR2LS4wMVpcXFwiIGZpbGw9XFxcIiNmZmZcXFwiLz48cGF0aCBkPVxcXCJNOTAuOTQ1IDE2Ljg1NWExMC45NDggMTAuOTQ4IDAgMCAwLTEuMTA0LTIuNjU1IDExLjE1NSAxMS4xNTUgMCAwIDAtMS43NS0yLjI4IDExLjA0OCAxMS4wNDggMCAwIDAtMi4yODItMS43NDdBMTAuOTY0IDEwLjk2NCAwIDAgMCA4MC4zIDguNjk1aC0uMDA2Yy0uOTg3IDAtMS45NC4xMy0yLjg0OS4zNzJhMTAuOTEgMTAuOTEgMCAwIDAtMi42NiAxLjEgMTAuOTk0IDEwLjk5NCAwIDAgMC00LjAzNyA0LjAyNyAxMSAxMSAwIDAgMC0xLjQ4NCA1LjUxdi4wMTJhMTAuOTI0IDEwLjkyNCAwIDAgMCAxLjQ3NiA1LjUwNWwzLjAxMy0xLjczOGE3LjUzNSA3LjUzNSAwIDAgMS0xLjAxLTMuNzd2LS4wMWE3LjU1MyA3LjU1MyAwIDAgMSA3LjU0OC03LjUzM2guMDA2YTcuNTI0IDcuNTI0IDAgMCAxIDMuNzY5IDEuMDEyIDcuNTUgNy41NSAwIDAgMSAzLjUxMyA0LjU3MmMuMTY3LjYyLjI1OCAxLjI3Ni4yNTggMS45NTFoMy40NzljLjAwMy0uOTg0LS4xMjgtMS45NC0uMzcyLTIuODVaXFxcIiBmaWxsPVxcXCIjZmZmXFxcIi8+PHBhdGggZD1cXFwiTTg3LjU4NSAxNy43NjVhNy41NDIgNy41NDIgMCAwIDAtMS45NTUtMy4zOGwtMS42NCAxLjYzOWE1LjI2NCA1LjI2NCAwIDAgMSAxLjM1NCAyLjM0MyA1LjE4NCA1LjE4NCAwIDAgMSAwIDIuNzA1IDUuMjM5IDUuMjM5IDAgMCAxLTMuNjk4IDMuNjk1IDUuMTk1IDUuMTk1IDAgMCAxLTIuNzA3IDAgNS4yOTYgNS4yOTYgMCAwIDEtMS4yNi0uNTIxbC0xLjE2IDIuMDA4YTcuNTI4IDcuNTI4IDAgMCAwIDMuNzc0IDEuMDFjLjY3NyAwIDEuMzMtLjA5MSAxLjk1NC0uMjU2YTcuNTUzIDcuNTUzIDAgMCAwIDQuNTg0LTMuNTE3IDcuNTQ0IDcuNTQ0IDAgMCAwIDEuMDEzLTMuNzcxIDcuNSA3LjUgMCAwIDAtLjI1OS0xLjk1NVpcXFwiIGZpbGw9XFxcIiMxNTUzNjZcXFwiLz48cGF0aCBkPVxcXCJNOTEuODUzIDEzLjA0NmExMy40MzUgMTMuNDM1IDAgMCAwLTIuMTItMi43NjUgMTMuMzQzIDEzLjM0MyAwIDAgMC0yLjc2Ni0yLjExOCAxMy4yODcgMTMuMjg3IDAgMCAwLTYuNjc1LTEuNzljLTEuMTk3IDAtMi4zNTIuMTU5LTMuNDU2LjQ1NC0xLjE0MS4zMDMtMi4yMi43NTctMy4yMTggMS4zMzZhMTMuNDM2IDEzLjQzNiAwIDAgMC0yLjc2NyAyLjExOCAxMy4zMzQgMTMuMzM0IDAgMCAwLTIuMTIgMi43NjUgMTMuMjcyIDEzLjI3MiAwIDAgMC0xLjc5IDYuNjdoMi4zMmMwLS45ODYuMTMxLTEuOTQyLjM3NS0yLjg1MmExMS4wODggMTEuMDg4IDAgMCAxIDIuODU1LTQuOTQgMTEuMDAyIDExLjAwMiAwIDAgMSAyLjI4NC0xLjc1IDExLjAzIDExLjAzIDAgMCAxIDIuNjYtMS4xMDQgMTEuMDIgMTEuMDIgMCAwIDEgMi44NTQtLjM3NGMuOTg4IDAgMS45NDQuMTMgMi44NTUuMzc0YTExLjA5OSAxMS4wOTkgMCAwIDEgNC45NDMgMi44NTMgMTAuOTkgMTAuOTkgMCAwIDEgMS43NTEgMi4yODNjLjQ3Ny44MjYuODUyIDEuNzE2IDEuMTA0IDIuNjU4bDIuMjQyLS42MDJhMTMuMTk0IDEzLjE5NCAwIDAgMC0xLjMzLTMuMjE2WlxcXCIgZmlsbD1cXFwiIzE1NTM2NlxcXCIvPjxwYXRoIGQ9XFxcIk05Ny42NzQgMTUuMDYzYTE3Ljc5MSAxNy43OTEgMCAwIDAtMS44LTQuMzM2IDE4LjA0MyAxOC4wNDMgMCAwIDAtNi41ODYtNi41ODMgMTcuOTMgMTcuOTMgMCAwIDAtOC45OTYtMi40MDhjLTEuNjEyIDAtMy4xNzIuMjEzLTQuNjU3LjYxYTE3LjgxNyAxNy44MTcgMCAwIDAtNC4zMzkgMS43OTggMTguMDMyIDE4LjAzMiAwIDAgMC02LjU4NiA2LjU4M2wyLjAxMiAxLjE2M2ExNS42NzYgMTUuNjc2IDAgMCAxIDIuNDg5LTMuMjQ1Yy45NjUtLjk2NCAyLjA1Ny0xLjggMy4yNDYtMi40ODdhMTUuNzA2IDE1LjcwNiAwIDAgMSAzLjc3Ny0xLjU2OSAxNS42OCAxNS42OCAwIDAgMSA4LjExIDBjMS4zNC4zNTggMi42MDYuODkxIDMuNzc4IDEuNTY5YTE1LjY4NSAxNS42ODUgMCAwIDEgMy4yNDYgMi40ODcgMTUuNjc2IDE1LjY3NiAwIDAgMSAyLjQ4OSAzLjI0NSAxNS42ODQgMTUuNjg0IDAgMCAxIDEuNTY5IDMuNzc0IDE1LjY1NCAxNS42NTQgMCAwIDEgMCA4LjEwNmwyLjI0NS42MDFjLjM5Ny0xLjQ4My42MS0zLjA0My42MS00LjY1NGExNy44NzUgMTcuODc1IDAgMCAwLS42MDgtNC42NTRaXFxcIiBmaWxsPVxcXCIjMTU1MzY2XFxcIi8+PHBhdGggZD1cXFwiTTgwLjI5MyAyNC45NDRjMi44ODggMCA1LjIzLTIuMzQgNS4yMy01LjIyN2E1LjIyOSA1LjIyOSAwIDAgMC01LjIzLTUuMjI3IDUuMjI4IDUuMjI4IDAgMCAwLTUuMjMgNS4yMjcgNS4yMjggNS4yMjggMCAwIDAgNS4yMyA1LjIyN1ptMjAuNjE1IDE1LjQzNlYyOS41NDNoMi4zMDRWNDAuMzhoLTIuMzA0Wm02LjYxOC0zLjc4N3YzLjc4N2gtMi4xOTZ2LTcuNTc2aDIuMTY1di41MjVhMi41MzkgMi41MzkgMCAwIDEgMS43OTMtLjcxMmMxLjg1NiAwIDMuMDc5IDEuMjA2IDMuMDc5IDMuMzU1djQuNDA1aC0yLjE5NnYtNC4yMzVjMC0uODAyLS4zNzItMS40ODMtMS4yNTQtMS40ODMtMS4wMzMuMDAzLTEuMzkxLjc3NC0xLjM5MSAxLjkzNFptOS42NjYgMy44MTdjLTEuNjU1IDAtMi42MTQtLjk1OC0yLjYxNC0yLjYyOHYtMi45NTNoLTEuMjY4di0yLjAyNWgxLjI2OHYtMS4xMTFsMi4xOTYtMS44NTV2Mi45N2gxLjkwMnYyLjAyNGgtMS45MDJ2Mi42NDNjMCAuNzI3LjQ4Ljg5Ny45MjguODk3LjUxMSAwIC45MjgtLjIwMi45MjgtLjIwMnYxLjk5NHMtLjU4Ny4yNDctMS40MzguMjQ3Wm0xMC4xOTMtMy4yM2gtNS4zNTJjLjEyNS43NzUuNzU3IDEuMzYyIDEuNyAxLjM2Mi42MzUgMCAxLjAwNC0uMjY0IDEuMjM3LS42NWgyLjM2N2MtLjUxMSAxLjY0LTEuNjg2IDIuNjYtMy41NzMgMi42Ni0yLjE5NyAwLTMuOTU5LTEuNTMtMy45NTktMy45MSAwLTIuMjg5IDEuNjA5LTQuMDE5IDMuODM3LTQuMDE5IDIuNDg5IDAgMy43NTcgMS45NjMgMy43NTcgMy45ODggMCAuMTk4LS4wMTQuNTctLjAxNC41N1ptLTMuNzE1LTIuNjI4Yy0uODM0IDAtMS4zOTMuNTEtMS41MzIgMS4xNmgyLjk0Yy0uMDQ2LS42NjQtLjYxOS0xLjE2LTEuNDA4LTEuMTZabTEwLjIzOS0xLjMxNXYyLjE2NHMtLjU3My0uNTg3LTEuNDM5LS41ODdjLS42NjQgMC0xLjQwNy4zNTQtMS40MDcgMS40Njl2NC4wOTVoLTIuMTk3di03LjU3NWgyLjE2NXYuNjM1Yy0uMDE0IDAgLjQzNS0uNzQzIDEuNTE2LS43NDMuOTI4IDAgMS4zNjIuNTQyIDEuMzYyLjU0MlptMy40MDMgMy4zNTZ2My43ODdoLTIuMTk3di03LjU3NmgyLjE2NXYuNTI1YTIuNTQzIDIuNTQzIDAgMCAxIDEuNzk0LS43MTJjMS44NTYgMCAzLjA3OSAxLjIwNiAzLjA3OSAzLjM1NXY0LjQwNWgtMi4xOTd2LTQuMjM1YzAtLjgwMi0uMzcxLTEuNDgzLTEuMjU0LTEuNDgzLTEuMDM2LjAwMy0xLjM5Ljc3NC0xLjM5IDEuOTM0Wm0xMS4xNjYgMy4wMTVjLS40OTYuNjA0LTEuMjA2Ljk0NS0yLjE1MS45NDUtMS41MTUgMC0yLjczOC0uOTQ1LTIuNzM4LTIuMzk3IDAtMS40MzggMS4yMi0yLjE1IDIuOTM3LTIuMjQgMS4zMTQtLjA3NyAxLjczNC0uMjE2IDEuNzM0LS42NjQgMC0uNDM0LS40MDMtLjcyNi0xLjExMy0uNzI2LS44NjUgMC0xLjIzNy40MzQtMS4yODUuODk2aC0yLjEyYy4xMDgtMS42NTMgMS4zNDUtMi43OTkgMy40Mi0yLjc5OSAyLjAyNiAwIDMuMzI2IDEuMDk4IDMuMzI2IDMuMTU0djQuNjA2aC0xLjgxMWwtLjE5OS0uNzc1Wm0tMi42OTMtMS41NDVjMCAuNDM0LjM4Ni42OTQgMS4wMDUuNjk0LjgzNCAwIDEuNTAxLS40NjIgMS41MDEtMS40MDZ2LS4yNzhzLS40MDMuMTg0LTEuMjM3LjIzMmMtLjkxNC4wNDYtMS4yNjkuMzQtMS4yNjkuNzU4Wm05LjU1OCAyLjM0N2MtMS42NTUgMC0yLjYxNC0uOTU4LTIuNjE0LTIuNjI4di0yLjk1M2gtMS4yNjl2LTIuMDI1aDEuMjY5di0xLjExMWwyLjE5Ni0xLjg1NXYyLjk3aDEuOTAydjIuMDI0aC0xLjkwMnYyLjY0M2MwIC43MjcuNDguODk3LjkyOC44OTcuNTExIDAgLjkyOC0uMjAyLjkyOC0uMjAydjEuOTk0cy0uNTkuMjQ3LTEuNDM4LjI0N1ptMi45NTEtOS43NTNjMC0uNzEyLjU1Ni0xLjI4MiAxLjI2OC0xLjI4Mi43MTMgMCAxLjI4Ni41NzMgMS4yODYgMS4yODIgMCAuNjk1LS41NzMgMS4yNjgtMS4yODYgMS4yNjhhMS4yNjQgMS4yNjQgMCAwIDEtMS4yNjgtMS4yNjhabS4xNyA5LjcyMnYtNy41NzVoMi4xOTd2Ny41NzVoLTIuMTk3Wm0zLjc4OS0zLjc4NmMwLTIuMjcyIDEuNzQ4LTMuOTc0IDQuMDM4LTMuOTc0czQuMDM1IDEuNzAyIDQuMDM1IDMuOTc0YzAgMi4yNzEtMS43NDggMy45NTYtNC4wMzUgMy45NTYtMi4yOSAwLTQuMDM4LTEuNjg1LTQuMDM4LTMuOTU2Wm0yLjI0NSAwYzAgMS4xMTEuNzU3IDEuOTE3IDEuNzkzIDEuOTE3czEuNzk0LS44MDMgMS43OTQtMS45MTdjMC0xLjExMi0uNzU4LTEuOTE4LTEuNzk0LTEuOTE4cy0xLjc5My44MDMtMS43OTMgMS45MThabTkuNTQgMHYzLjc4N2gtMi4xOTZ2LTcuNTc2aDIuMTY1di41MjVhMi41NCAyLjU0IDAgMCAxIDEuNzkzLS43MTJjMS44NTYgMCAzLjA3OSAxLjIwNiAzLjA3OSAzLjM1NXY0LjQwNWgtMi4xOTZ2LTQuMjM1YzAtLjgwMi0uMzcyLTEuNDgzLTEuMjU0LTEuNDgzLTEuMDM2LjAwMy0xLjM5MS43NzQtMS4zOTEgMS45MzRabTExLjE2NyAzLjAxNWMtLjQ5Ny42MDQtMS4yMDYuOTQ1LTIuMTUxLjk0NS0xLjUxNiAwLTIuNzM5LS45NDUtMi43MzktMi4zOTcgMC0xLjQzOCAxLjIyMS0yLjE1IDIuOTM3LTIuMjQgMS4zMTQtLjA3NyAxLjczNC0uMjE2IDEuNzM0LS42NjQgMC0uNDM0LS40MDMtLjcyNi0xLjExMi0uNzI2LS44NjYgMC0xLjIzNy40MzQtMS4yODYuODk2aC0yLjExOWMuMTA3LTEuNjUzIDEuMzQ1LTIuNzk5IDMuNDE5LTIuNzk5IDIuMDI2IDAgMy4zMjYgMS4wOTggMy4zMjYgMy4xNTR2NC42MDZoLTEuODFsLS4xOTktLjc3NVptLTIuNjkzLTEuNTQ1YzAgLjQzNC4zODYuNjk0IDEuMDA0LjY5NC44MzUgMCAxLjUwMi0uNDYyIDEuNTAyLTEuNDA2di0uMjc4cy0uNDAzLjE4NC0xLjIzOC4yMzJjLS45MTEuMDQ2LTEuMjY4LjM0LTEuMjY4Ljc1OFptNi41MjQgMi4zMTdWMjkuNTQzaDIuMTk2VjQwLjM4aC0yLjE5NlptMTQuMDg5LTEwLjgzNyA0LjI0IDEwLjgzN2gtMi4zODFsLS44NjYtMi4xMzNoLTQuMTkxbC0uODUxIDIuMTMzaC0yLjM4MWw0LjIzOS0xMC44MzdoMi4xOTFabS0xLjA5OCAzLjEyMy0xLjM0NSAzLjUzOWgyLjY5bC0xLjM0NS0zLjU0Wm02LjM4NS0yLjAwOWMwLS43MTIuNTU2LTEuMjgyIDEuMjY5LTEuMjgyLjcxMiAwIDEuMjg1LjU3MyAxLjI4NSAxLjI4MiAwIC42OTUtLjU3MyAxLjI2OC0xLjI4NSAxLjI2OGExLjI2NCAxLjI2NCAwIDAgMS0xLjI2OS0xLjI2OFptLjE3IDkuNzIydi03LjU3NWgyLjE5N3Y3LjU3NWgtMi4xOTdabTMuNzg5LTMuNzg2YzAtMi4zOTYgMS43MTYtMy45NzMgMy44MTktMy45NzMuODY2IDAgMS41OTIuMzIzIDEuOTgxLjY2NHYtMy43NDFoMi4xOTZWNDAuMzhoLTIuMTY1di0uNTQyYy0uNC4zODYtMS4xNi43MTItMi4wMDkuNzEyLTIuMTA2IDAtMy44MjItMS41MTUtMy44MjItMy45NTZabTUuODMxIDBjMC0xLjE3NC0uNzcyLTEuOTgtMS43OTMtMS45OC0xLjAyMiAwLTEuNzk0LjgwMy0xLjc5NCAxLjk4IDAgMS4xNzUuNzcyIDEuOTggMS43OTQgMS45OCAxLjAyMSAwIDEuNzkzLS44MDUgMS43OTMtMS45OFpNMTAwLjE5NiA0OC4wOWg4LjUyMnYyLjExOGgtMy4xMXY4LjcxOWgtMi4zMDR2LTguNzE5aC0zLjExMVY0OC4wOWguMDAzWm0xMy44ODggMy42OTJ2Mi4xNjRzLS41NzMtLjU4Ny0xLjQzOS0uNTg3Yy0uNjY0IDAtMS40MDcuMzU0LTEuNDA3IDEuNDY5djQuMDk1aC0yLjE5NnYtNy41NzVoMi4xNjV2LjYzNWMtLjAxNCAwIC40MzQtLjc0MyAxLjUxNS0uNzQzLjkzMS4wMDMgMS4zNjIuNTQyIDEuMzYyLjU0MlptNS44OTEgNi4zNzFjLS40OTYuNjA0LTEuMjA2Ljk0NS0yLjE1MS45NDUtMS41MTUgMC0yLjczOC0uOTQ1LTIuNzM4LTIuMzk3IDAtMS40MzggMS4yMi0yLjE1IDIuOTM3LTIuMjQgMS4zMTQtLjA3NyAxLjczNC0uMjE2IDEuNzM0LS42NjQgMC0uNDM0LS40MDMtLjcyNi0xLjExMi0uNzI2LS44NjYgMC0xLjIzOC40MzQtMS4yODYuODk2aC0yLjEyYy4xMDgtMS42NTMgMS4zNDUtMi43OTkgMy40Mi0yLjc5OSAyLjAyNiAwIDMuMzI2IDEuMDk4IDMuMzI2IDMuMTU0djQuNjA1aC0xLjgxMWwtLjE5OS0uNzc0Wm0tMi42OS0xLjU0NWMwIC40MzQuMzg2LjY5NSAxLjAwNS42OTUuODM0IDAgMS41MDEtLjQ2MyAxLjUwMS0xLjQwN3YtLjI3OHMtLjQwMy4xODQtMS4yMzcuMjMyYy0uOTE0LjA0Ni0xLjI2OS4zNC0xLjI2OS43NThabTguNzIxLTEuNDd2My43ODdoLTIuMTk3di03LjU3NmgyLjE2NXYuNTI1YTIuNTQgMi41NCAwIDAgMSAxLjc5NC0uNzEyYzEuODU2IDAgMy4wNzkgMS4yMDUgMy4wNzkgMy4zNTV2NC40MDVoLTIuMTk3di00LjIzNWMwLS44MDItLjM3MS0xLjQ4My0xLjI1NC0xLjQ4My0xLjAzMy4wMDMtMS4zOS43NzQtMS4zOSAxLjkzNFptMTAuNzk1IDEuNjA3YzAtLjIzMi0uMTM5LS40MTYtLjc0NC0uNTQxbC0xLjE0My0uMjMzYy0xLjcxNy0uMzQtMi40NDQtMS4xNi0yLjQ0NC0yLjI4OCAwLTEuMzMgMS4wMDUtMi41MTkgMy4wOTQtMi41MTkgMi4xMDIgMCAzLjA0NyAxLjE3NCAzLjIwMSAyLjQ5aC0yLjA4OWMtLjEyNS0uNDE3LS40OC0uNjY0LTEuMTI5LS42NjQtLjYxOSAwLS45Ni4yMTYtLjk2LjUyNSAwIC4yMzMuMTg1LjM3Mi43NTguNDhsMS4xNDQuMjMyYzEuNjIzLjMyMyAyLjQyOSAxLjA4MyAyLjQyOSAyLjM4IDAgMS40NjktMS4wNjcgMi40OS0zLjE4NyAyLjQ5LTIuMTY1IDAtMy4zMjYtMS4wMjEtMy41NDItMi41OThoMi4yMTRjLjEyNS41MjQuNTExLjgwMiAxLjMyOC44MDIuNzQ2IDAgMS4wNy0uMjE1IDEuMDctLjU1NlptMTEuNTUyLTEuNjA4YzAgMi4zOTctMS43MTcgMy45NTctMy44MTkgMy45NTctLjg2NiAwLTEuNTkyLS4zMS0xLjk4MS0uNjV2My40NzdoLTIuMTk3VjUxLjM0OGgyLjE2NnYuNTQyYy40MDMtLjM4NiAxLjE2LS43MjYgMi4wMTItLjcyNiAyLjEwMiAwIDMuODE5IDEuNTE3IDMuODE5IDMuOTczWm0tNS44MzEgMGMwIDEuMTc1Ljc3NCAxLjk4IDEuNzkzIDEuOTggMS4wMjIgMCAxLjc5NC0uODAzIDEuNzk0LTEuOTggMC0xLjE3NC0uNzcyLTEuOTgtMS43OTQtMS45OC0xLjAxOS4wMDQtMS43OTMuODA2LTEuNzkzIDEuOThabTExLjg3OSAzLjAxNmMtLjQ5Ny42MDQtMS4yMDYuOTQ1LTIuMTUxLjk0NS0xLjUxNiAwLTIuNzM5LS45NDUtMi43MzktMi4zOTcgMC0xLjQzOCAxLjIyLTIuMTUgMi45MzctMi4yNCAxLjMxNC0uMDc3IDEuNzM0LS4yMTYgMS43MzQtLjY2NCAwLS40MzQtLjQwMy0uNzI2LTEuMTEyLS43MjYtLjg2NiAwLTEuMjM3LjQzNC0xLjI4Ni44OTZoLTIuMTJjLjEwOC0xLjY1MyAxLjM0Ni0yLjc5OSAzLjQyLTIuNzk5IDIuMDI2IDAgMy4zMjYgMS4wOTggMy4zMjYgMy4xNTR2NC42MDVoLTEuODExbC0uMTk4LS43NzRabS0yLjY5My0xLjU0NWMwIC40MzQuMzg2LjY5NSAxLjAwNC42OTUuODM1IDAgMS41MDEtLjQ2MyAxLjUwMS0xLjQwN3YtLjI3OHMtLjQwMy4xODQtMS4yMzcuMjMyYy0uOTExLjA0Ni0xLjI2OC4zNC0xLjI2OC43NThabTExLjU2Ni00LjgyNnYyLjE2NHMtLjU3My0uNTg3LTEuNDM5LS41ODdjLS42NjQgMC0xLjQwNy4zNTQtMS40MDcgMS40Njl2NC4wOTVoLTIuMTk3di03LjU3NWgyLjE2NnYuNjM1Yy0uMDE1IDAgLjQzNC0uNzQzIDEuNTE1LS43NDMuOTI4LjAwMyAxLjM2Mi41NDIgMS4zNjIuNTQyWm04LjQyOCAzLjk0NGgtNS4zNTJjLjEyNS43NzQuNzU4IDEuMzYgMS43MDMgMS4zNi42MzYgMCAxLjAwNS0uMjYzIDEuMjM3LS42NDloMi4zNjdjLS41MTEgMS42NC0xLjY4NiAyLjY2LTMuNTczIDIuNjYtMi4xOTYgMC0zLjk1OS0xLjUzLTMuOTU5LTMuOTEgMC0yLjI4OSAxLjYxLTQuMDE5IDMuODM3LTQuMDE5IDIuNDg5IDAgMy43NTcgMS45NjMgMy43NTcgMy45ODggMCAuMi0uMDE3LjU3LS4wMTcuNTdabS0zLjcxMS0yLjYyN2MtLjgzNSAwLTEuMzk0LjUxLTEuNTMzIDEuMTZoMi45NGMtLjA0NS0uNjY2LS42MTktMS4xNi0xLjQwNy0xLjE2Wm03LjM5MiAyLjAzOXYzLjc4N2gtMi4xOTZ2LTcuNTc2aDIuMTY1di41MjVhMi41MzggMi41MzggMCAwIDEgMS43OTMtLjcxMmMxLjg1NiAwIDMuMDc5IDEuMjA1IDMuMDc5IDMuMzU1djQuNDA1aC0yLjE5NnYtNC4yMzVjMC0uODAyLS4zNzItMS40ODMtMS4yNTQtMS40ODMtMS4wMzYuMDAzLTEuMzkxLjc3NC0xLjM5MSAxLjkzNFptMTEuNTY3LjgzN2gyLjQxMmMtLjM1NyAxLjg0LTEuNzQ4IDMuMTIzLTMuNzkxIDMuMTIzLTIuMjkgMC0zLjk5LTEuNjg1LTMuOTktMy45NTcgMC0yLjI3MSAxLjcwMy0zLjk3MyAzLjk5LTMuOTczIDEuOTk1IDAgMy4zODggMS4yMzYgMy42NjYgMy4wMjloLTIuNDE1Yy0uMTctLjU3My0uNjY0LS45NTktMS4zMjgtLjk1OS0uOTI4IDAtMS42NzEuNzg5LTEuNjcxIDEuOSAwIDEuMTEyLjc0MyAxLjkgMS43MDMgMS45LjcxMi4wMDQgMS4yNC0uNDE2IDEuNDI0LTEuMDYzWm01LjEwMiA2LjAyN2MtLjk5IDAtMS40ODQtLjI2NC0xLjQ4NC0uMjY0di0yLjAxcy40NDguMjMyLjkyOC4yMzJjLjQ5NiAwIDEuMTQzLS4xODQgMS4yOTktMS4wMzVsLTIuOTU0LTcuNTc1aDIuNDQ0bDEuNzE3IDQuNjk5IDEuNzQ4LTQuN2gyLjM0OWwtMy4wNzkgNy43Yy0uODAzIDIuMDI2LTEuNDUzIDIuOTUzLTIuOTY4IDIuOTUzWm0xMS41OTgtMy4wNzVWNDguMDloMi4zMDV2MTAuODM3aC0yLjMwNVptNi42MTgtMy43ODl2My43ODdoLTIuMTk3di03LjU3NmgyLjE2NnYuNTI1YTIuNTM4IDIuNTM4IDAgMCAxIDEuNzkzLS43MTJjMS44NTYgMCAzLjA3OSAxLjIwNSAzLjA3OSAzLjM1NXY0LjQwNWgtMi4xOTZ2LTQuMjM1YzAtLjgwMi0uMzcyLTEuNDgzLTEuMjU1LTEuNDgzLTEuMDMzLjAwMy0xLjM5Ljc3NC0xLjM5IDEuOTM0Wm02LjU0MS01LjkzNmMwLS43MTIuNTU2LTEuMjgyIDEuMjY4LTEuMjgyczEuMjg2LjU3MyAxLjI4NiAxLjI4MmExLjI4IDEuMjggMCAwIDEtMS4yODYgMS4yNjggMS4yNjQgMS4yNjQgMCAwIDEtMS4yNjgtMS4yNjhabS4xNyA5LjcyNXYtNy41NzVoMi4xOTZ2Ny41NzVoLTIuMTk2Wm03LjI1NC4wMjljLTEuNjU1IDAtMi42MTQtLjk1OS0yLjYxNC0yLjYzdi0yLjk1MmgtMS4yNjhWNTEuMzVoMS4yNjh2LTEuMTExbDIuMTk2LTEuODU1djIuOTdoMS45MDJ2Mi4wMjRoLTEuOTAydjIuNjQzYzAgLjcyNi40OC44OTcuOTI4Ljg5Ny41MTEgMCAuOTI4LS4yMDIuOTI4LS4yMDJ2MS45OTRzLS41ODcuMjQ3LTEuNDM4LjI0N1ptMi45NTQtOS43NTRjMC0uNzEyLjU1Ni0xLjI4MiAxLjI2OC0xLjI4MnMxLjI4Ni41NzMgMS4yODYgMS4yODJhMS4yOCAxLjI4IDAgMCAxLTEuMjg2IDEuMjY4IDEuMjY0IDEuMjY0IDAgMCAxLTEuMjY4LTEuMjY4Wm0uMTcgOS43MjV2LTcuNTc1aDIuMTk2djcuNTc1aC0yLjE5NlptOC43NTQtLjc3NGMtLjQ5Ni42MDQtMS4yMDYuOTQ1LTIuMTUxLjk0NS0xLjUxNSAwLTIuNzM4LS45NDUtMi43MzgtMi4zOTcgMC0xLjQzOCAxLjIyLTIuMTUgMi45MzctMi4yNCAxLjMxNC0uMDc3IDEuNzM0LS4yMTYgMS43MzQtLjY2NCAwLS40MzQtLjQwMy0uNzI2LTEuMTEzLS43MjYtLjg2NSAwLTEuMjM3LjQzNC0xLjI4NS44OTZoLTIuMTJjLjEwOC0xLjY1MyAxLjM0NS0yLjc5OSAzLjQxOS0yLjc5OSAyLjAyNyAwIDMuMzI2IDEuMDk4IDMuMzI2IDMuMTU0djQuNjA1aC0xLjgxbC0uMTk5LS43NzRabS0yLjY5My0xLjU0NWMwIC40MzQuMzg2LjY5NSAxLjAwNS42OTUuODM0IDAgMS41MDEtLjQ2MyAxLjUwMS0xLjQwN3YtLjI3OHMtLjQwMy4xODQtMS4yMzcuMjMyYy0uOTE0LjA0Ni0xLjI2OS4zNC0xLjI2OS43NThabTkuNTU4IDIuMzQ4Yy0xLjY1NSAwLTIuNjE0LS45NTktMi42MTQtMi42M3YtMi45NTJoLTEuMjY4VjUxLjM1aDEuMjY4di0xLjExMWwyLjE5Ny0xLjg1NXYyLjk3aDEuOTAxdjIuMDI0aC0xLjkwMXYyLjY0M2MwIC43MjYuNDc5Ljg5Ny45MjguODk3LjUxIDAgLjkyOC0uMjAyLjkyOC0uMjAydjEuOTk0cy0uNTg4LjI0Ny0xLjQzOS4yNDdabTIuOTUxLTkuNzU0YzAtLjcxMi41NTYtMS4yODIgMS4yNjktMS4yODIuNzEyIDAgMS4yODUuNTczIDEuMjg1IDEuMjgyIDAgLjY5NS0uNTczIDEuMjY4LTEuMjg1IDEuMjY4YTEuMjY0IDEuMjY0IDAgMCAxLTEuMjY5LTEuMjY4Wm0uMTcgOS43MjV2LTcuNTc1aDIuMTk3djcuNTc1aC0yLjE5N1ptMTAuOTgzLTcuNTc1LTIuNjkxIDcuNTc1aC0yLjI1OGwtMi42OTEtNy41NzVoMi4zMzZsMS40ODQgNC42ODUgMS40ODQtNC42ODVoMi4zMzZabTcuOTggNC4zNzRoLTUuMzUyYy4xMjUuNzc0Ljc1NyAxLjM2IDEuNzAyIDEuMzYuNjM2IDAgMS4wMDUtLjI2MyAxLjIzOC0uNjQ5aDIuMzY2Yy0uNTEgMS42NC0xLjY4NSAyLjY2LTMuNTcyIDIuNjYtMi4xOTcgMC0zLjk1OS0xLjUzLTMuOTU5LTMuOTEgMC0yLjI4OSAxLjYwOS00LjAxOSAzLjgzNy00LjAxOSAyLjQ4OCAwIDMuNzYgMS45NjMgMy43NiAzLjk4OC0uMDA2LjItLjAyLjU3LS4wMi41N1ptLTMuNzEyLTIuNjI3Yy0uODM0IDAtMS4zOTMuNTEtMS41MzIgMS4xNmgyLjk0Yy0uMDQ5LS42NjYtLjYxOS0xLjE2LTEuNDA4LTEuMTZaXFxcIiBmaWxsPVxcXCIjZmZmXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxMjIgMzZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgeG1sbnM6eGxpbms9XFxcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcXFwiPjxwYXRoIGQ9XFxcIk00NC4wMTkgMjdWMTYuOTc5aDMuMjQ3YzEuMjMgMCAyLjAzMi4wNSAyLjQwNi4xNS41NzQuMTUgMS4wNTUuNDc4IDEuNDQyLjk4NC4zODguNTAyLjU4MSAxLjE1MS41ODEgMS45NDggMCAuNjE2LS4xMTEgMS4xMzMtLjMzNSAxLjU1Mi0uMjIzLjQyLS41MDguNzUtLjg1NC45OTItLjM0Mi4yMzYtLjY5LjM5NC0xLjA0Ni40NzEtLjQ4My4wOTYtMS4xODMuMTQ0LTIuMDk5LjE0NGgtMS4zMTlWMjdoLTIuMDIzWm0yLjAyMy04LjMyNnYyLjg0NGgxLjEwN2MuNzk4IDAgMS4zMzEtLjA1MyAxLjYtLjE1OGExLjMzMyAxLjMzMyAwIDAgMCAuODYxLTEuMjcxYzAtLjM2NS0uMTA3LS42NjUtLjMyLS45MDJhMS4zOTkgMS4zOTkgMCAwIDAtLjgxNC0uNDQ1Yy0uMjQyLS4wNDUtLjcyNy0uMDY4LTEuNDU2LS4wNjhoLS45NzhabTcuMDItMS42OTVoMi4wMjR2NS40MjdjMCAuODYyLjAyNSAxLjQyLjA3NSAxLjY3NS4wODcuNDEuMjkyLjc0LjYxNi45OTEuMzI4LjI0Ni43NzQuMzcgMS4zNC4zNy41NzQgMCAxLjAwNy0uMTE3IDEuMjk4LS4zNS4yOTItLjIzNi40NjctLjUyNi41MjctLjg2Ny4wNTktLjM0Mi4wODktLjkxLjA4OS0xLjcwM1YxNi45OGgyLjAyM3Y1LjI2M2MwIDEuMjAzLS4wNTUgMi4wNTMtLjE2NCAyLjU1LS4xMS40OTctLjMxMi45MTYtLjYwOCAxLjI1OC0uMjkyLjM0Mi0uNjg0LjYxNS0xLjE3Ni44Mi0uNDkyLjItMS4xMzUuMy0xLjkyOC4zLS45NTcgMC0xLjY4NC0uMTA5LTIuMTgtLjMyNy0uNDkzLS4yMjQtLjg4My0uNTEtMS4xNy0uODYyYTIuNzg4IDIuNzg4IDAgMCAxLS41NjctMS4xMTRjLS4xMzItLjU3NC0uMTk4LTEuNDIyLS4xOTgtMi41NDN2LTUuMzQ2Wm05Ljg1OCAwaDQuMDA2Yy43OTMgMCAxLjM4My4wMzQgMS43Ny4xMDIuMzkzLjA2NC43NDEuMiAxLjA0Ny40MS4zMS4yMS41NjcuNDkuNzcyLjg0MS4yMDUuMzQ2LjMwOC43MzYuMzA4IDEuMTY5IDAgLjQ3LS4xMjguOS0uMzgzIDEuMjkyYTIuMzMgMi4zMyAwIDAgMS0xLjAyNS44ODJjLjYxLjE3NyAxLjA4LjQ4IDEuNDA4LjkwOS4zMjguNDI4LjQ5Mi45MzIuNDkyIDEuNTEgMCAuNDU2LS4xMDcuOS0uMzIxIDEuMzM0LS4yMS40MjgtLjUuNzcyLS44NjggMS4wMzItLjM2NS4yNTUtLjgxNi40MTItMS4zNTQuNDcyLS4zMzcuMDM2LTEuMTUuMDU5LTIuNDQuMDY4SDYyLjkyVjE2Ljk3OVptMi4wMjQgMS42Njh2Mi4zMTdoMS4zMjZjLjc4OCAwIDEuMjc4LS4wMTEgMS40Ny0uMDM0LjM0Ni0uMDQxLjYxNy0uMTYuODEzLS4zNTYuMi0uMi4zMDEtLjQ2Mi4zMDEtLjc4NiAwLS4zMS0uMDg3LS41Ni0uMjYtLjc1Mi0uMTY4LS4xOTYtLjQyMS0uMzE0LS43NTgtLjM1NS0uMjAxLS4wMjMtLjc3OC0uMDM1LTEuNzMtLjAzNWgtMS4xNjJabTAgMy45ODV2Mi42OGgxLjg3M2MuNzMgMCAxLjE5Mi0uMDIxIDEuMzg4LS4wNjIuMy0uMDU1LjU0NC0uMTg3LjczMS0uMzk2LjE5MS0uMjE1LjI4Ny0uNS4yODctLjg1NSAwLS4zLS4wNzMtLjU1Ni0uMjE5LS43NjZhMS4yMzcgMS4yMzcgMCAwIDAtLjYzNS0uNDU4Yy0uMjc0LS4wOTUtLjg3LS4xNDMtMS43OTEtLjE0M2gtMS42MzRaTTcyLjgwNSAyN3YtOS45NGgyLjAyNHY4LjI1Mmg1LjAzMVYyN2gtNy4wNTVabTguMTYzIDBWMTYuOTc5aDIuMDIzVjI3aC0yLjAyM1ptMy4xNjUtMy4yNiAxLjk2OS0uMTkyYy4xMTguNjYuMzU4IDEuMTQ2LjcxOCAxLjQ1Ni4zNjQuMzEuODU0LjQ2NSAxLjQ3LjQ2NS42NTEgMCAxLjE0MS0uMTM3IDEuNDctLjQxLjMzMi0uMjc4LjQ5OC0uNjAyLjQ5OC0uOTcxYS44OS44OSAwIDAgMC0uMjEyLS42MDJjLS4xMzYtLjE2OC0uMzc4LS4zMTQtLjcyNC0uNDM3LS4yMzctLjA4Mi0uNzc3LS4yMjgtMS42Mi0uNDM4LTEuMDg1LS4yNjktMS44NDYtLjU5OS0yLjI4NC0uOTktLjYxNS0uNTUyLS45MjItMS4yMjQtLjkyMi0yLjAxNyAwLS41MS4xNDMtLjk4Ny40My0xLjQzLjI5Mi0uNDQ2LjcwOS0uNzg1IDEuMjUxLTEuMDE4LjU0Ny0uMjMyIDEuMjA2LS4zNDggMS45NzYtLjM0OCAxLjI1NyAwIDIuMjAzLjI3NSAyLjgzNy44MjcuNjM4LjU1MS45NzMgMS4yODcgMS4wMDUgMi4yMDhsLTIuMDI0LjA4OWMtLjA4Ny0uNTE1LS4yNzMtLjg4NC0uNTYtMS4xMDgtLjI4My0uMjI4LS43MS0uMzQyLTEuMjc5LS4zNDItLjU4OCAwLTEuMDQ4LjEyMS0xLjM4LjM2M2EuNzMuNzMgMCAwIDAtLjMyMi42MjJjMCAuMjM3LjEuNDQuMy42MDguMjU2LjIxNC44NzYuNDM4IDEuODYuNjcuOTg1LjIzMiAxLjcxMi40NzQgMi4xOC43MjUuNDc1LjI0Ni44NDQuNTg1IDEuMTA4IDEuMDE4LjI3LjQyOS40MDQuOTYuNDA0IDEuNTkzIDAgLjU3NC0uMTYgMS4xMTItLjQ3OSAxLjYxMy0uMzE5LjUwMi0uNzcuODc1LTEuMzUzIDEuMTIxLS41ODQuMjQyLTEuMzEuMzYzLTIuMTgxLjM2My0xLjI2NyAwLTIuMjQtLjI5Mi0yLjkxOS0uODc1LS42NzktLjU4OC0xLjA4NS0xLjQ0My0xLjIxNy0yLjU2NFpNOTMuNzExIDI3VjE2Ljk3OWgyLjAyM3YzLjk0NEg5OS43di0zLjk0NGgyLjAyM1YyN2gtMi4wMjN2LTQuMzgyaC0zLjk2NVYyN2gtMi4wMjNabTkuODMgMFYxNi45NzloNy40MzF2MS42OTVoLTUuNDA4djIuMjIxaDUuMDMydjEuNjg5aC01LjAzMnYyLjcyN2g1LjU5OVYyN2gtNy42MjJabTkuMDY1IDBWMTYuOTc5aDQuMjU4YzEuMDcxIDAgMS44NDguMDkgMi4zMzIuMjczYTIuMjggMi4yOCAwIDAgMSAxLjE2OC45NTdjLjI5Mi40Ni40MzguOTg3LjQzOCAxLjU4IDAgLjc1MS0uMjIxIDEuMzczLS42NjMgMS44NjUtLjQ0Mi40ODgtMS4xMDMuNzk2LTEuOTgzLjkyMy40MzguMjU1Ljc5OC41MzYgMS4wODEuODQxLjI4Ny4zMDUuNjcyLjg0OCAxLjE1NSAxLjYyN0wxMjEuNjE1IDI3aC0yLjQxOWwtMS40NjMtMi4xOGMtLjUyLS43OC0uODc1LTEuMjctMS4wNjctMS40N2ExLjUwMyAxLjUwMyAwIDAgMC0uNjA4LS40MTdjLS4yMTQtLjA3OC0uNTU0LS4xMTctMS4wMTktLjExN2gtLjQxVjI3aC0yLjAyM1ptMi4wMjMtNS43ODNoMS40OTdjLjk3MSAwIDEuNTc3LS4wNDEgMS44MTktLjEyMy4yNDEtLjA4Mi40My0uMjI0LjU2Ny0uNDI0LjEzNy0uMi4yMDUtLjQ1MS4yMDUtLjc1MiAwLS4zMzctLjA5MS0uNjA4LS4yNzMtLjgxMy0uMTc4LS4yMS0uNDMxLS4zNDItLjc1OS0uMzk3LS4xNjQtLjAyMy0uNjU2LS4wMzQtMS40NzctLjAzNGgtMS41Nzl2Mi41NDNaXFxcIiBmaWxsPVxcXCIjZmZmXFxcIi8+PHBhdGggZmlsbD1cXFwidXJsKCNsb2dvX3N2Z19fYSlcXFwiIGQ9XFxcIk0wIDBoNDF2MzZIMHpcXFwiLz48ZGVmcz48cGF0dGVybiBpZD1cXFwibG9nb19zdmdfX2FcXFwiIHBhdHRlcm5Db250ZW50VW5pdHM9XFxcIm9iamVjdEJvdW5kaW5nQm94XFxcIiB3aWR0aD1cXFwiMVxcXCIgaGVpZ2h0PVxcXCIxXFxcIj48dXNlIHhsaW5rOmhyZWY9XFxcIiNsb2dvX3N2Z19fYlxcXCIgdHJhbnNmb3JtPVxcXCJtYXRyaXgoLjAwMDkzIDAgMCAuMDAxMDYgLS4xMjIgLS4wMDcpXFxcIi8+PC9wYXR0ZXJuPjxpbWFnZSBpZD1cXFwibG9nb19zdmdfX2JcXFwiIHdpZHRoPVxcXCIyMjM1XFxcIiBoZWlnaHQ9XFxcIjk1OVxcXCIgeGxpbms6aHJlZj1cXFwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUNMc0FBQU8vQ0FZQUFBQXRLbGFrQUFBQUNYQklXWE1BQUNFM0FBQWhOd0V6V0o5NkFBQWdBRWxFUVZSNDJ1emRQWWhkNlowbThPY2RPakRzRFdwaFlDb3diRFd1b0lPQnZnM09YR0Fwc3BMRjNiU1NpVlJpY2FUQXJVaFIwMm9jS2VxZVFKR0RMa1dUcUxITUp0V1JOU0REQkF0ekd5YVlvSXhyWVlKYUdKZ2FxSVVKQnQ0TjNsdXJzdHdmK3JqM1BlZmMrL3RCY1V0cSs1NnY5MVNwZEI0OS93UUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEb29EZ0ZBQUFBTUU2MTFwMGs4ei83WWI2VXA4NE9BQUFBQU50SzJBVUFBQUJXck5hNmwyUnYrY3Q1a3AzbDUvL3R5dTluK2Z2ek5lekMweGQrdlVqeTc4dlBUNWNmU2JJb3BaeTdZZ0FBQUFCTWliQUxBQUFBdktKYTYyV0E1ZHJ5dDM2NmZMMGFiSm1TMCtYSGVaS3ZsNitMSktlbGxGTlhIQUFBQUlBeEVYWUJBQUNBYjNCbGhOQThyWkZsbnRiS3NyZUZwMk9SRm9ENSt5eURNVVlwQVFBQUFEQVVZUmNBQUFDMjNyS3BaUzh0MFBMVFRMZWhwYmZUdENETTEybWprelRCQUFBQUFMQjJ3aTRBQUFCc2xXVmp5N1VJdHF6TGVWcnc1VElBc3lpbG5Ec3RBQUFBQUt5S3NBc0FBQUFiYmRuYWNobHN1WmJ0SEVNMHRFV3VCR0MwdndBQUFBRHdKb1JkQUFBQTJDaTExcjIwVU12UGw2OWFXOGJuTkMzODh0dTA4SXZtRndBQUFBQmVtckFMQUFBQWszWmxMTkZsdUdYUFdabWN5K2FYMzVaU25qb2RBQUFBQUh3WFlSY0FBQUFtWjluZThuNmVCMXpZSE9kNTN2cnlST3NMQUFBQUFDOFNkZ0VBQUdBU2FxM3pKTGZTUWk1N3pzaldXQ1I1bEJaOE9YVTZBQUFBQUJCMkFRQUFZTFFFWEhpQjRBc0FBQUFBd2k0QUFBQ01pNEFMTDBud0JRQUFBR0JMQ2JzQUFBQXd1RnJyWGxxNDVaY1JjT0hWUGMzejRNdTUwd0VBQUFDdzJZUmRBQUFBR0V5dDlUREp6OU9DTHJBS1Iwa2VsVktlT2hVQUFBQUFtMG5ZQlFBQWdLNldMUzYvVEhLWVpNY1pZVTFPMDlwZWpvdzVBZ0FBQU5nc3dpNEFBQUIwc1d4eHVaWGttck5CWjBmUjlnSUFBQUN3TVlSZEFBQUFXSnRsaTh0aFdwT0xGaGVHZHByazB5UlBTaW5uVGdjQUFBREFOQW03QUFBQXNISzExbXRwTFM2SHpnWWpkSjdXOXZLM1Jod0JBQUFBVEkrd0N3QUFBQ3RUYTMwL3JjWGxtclB4VWhiZjhIc25TZjd2Szd6SGo1TE1Ydmk5V1pKOXAvZWxITVdJSXdBQUFJQkpFWFlCQUFEZ2pkVmFENU44a21SdnkwL0ZSVnBZSlVtK1hyNmVMVCt5L0c4WEErelg3dklqYVNHWVdaTC9rdWVCbUxsVm5LZEpQaFY2QVFBQUFCZy9ZUmNBQUFCZTI1YUdYQzdESzVjTkxJdjhhY2hseXVaNTNncnpWMmtCbWN0d3pMWjRtdGIwY3VRT0J3QUFBQmduWVJjQUFBQmVTYTExSjhsSGFlT0tkamI0VUM4RExDZEovcEFXY0ZsczZXVy9ETURzcDQxTjJzM210OEdjcGpXOUhMbnJBUUFBQU1aRjJBVUFBSUNYVm11OW44ME51U3pTUmc5ZEJsek9YUEh2ZFRVQU04L3pzVWliNURSQ0x3QUFBQUNqSXV3Q0FBREE5OXJBY1VXWExTMS9XTDZldU1vck0xOStYQVpnTm1VRTBpTEozVkxLVTVjWUFBQUFZRmpDTGdBQUFIeXJEUXE1WENSNWx0YmNzb2pXbHA3MjAwSXY3Mll6d2k5UDA1cGVucnEwQUFBQUFNTVFkZ0VBQU9EUDFGcXZwWVZjcmszNE1CWkpmaC9OTFdOejJmenlrMHg3N05HVHRLYVhVNWNVQUFBQW9DOWhGd0FBQVA2L1d1dGVraTh5elpETDVXaWl5NERMaFNzNmVyTWtCMm5CbDZtMnZueWUxdlJ5N25JQ0FBQUE5Q0hzQWdBQVFHcXRPMmxOTGg5TmJOZlAwc1lUZlJYdExadmdNdmh5a0drRlg4N1RBaStmdTRRQUFBQUE2eWZzQWdBQXNPVnFyUitsQlYxMkpyTExBaTdiWVlyQmw5TWt0MHNwVDEwK0FBQUFnUFVSZGdFQUFOaFN0ZFpyU1Q1TEd4OHpkaGRKamlQZ3NxMm1Gbng1a3VSdUtlWFVwUU1BQUFCWVBXRVhBQUNBTGJNY1dmUlprc01KN081eGt0K25OYm5BTEMzdzhyT01QNlIxbnVSdlN5bjNYVFlBQUFDQTFSSjJBUUFBMkNLMTFzTzBvTXVZUnhhZHBEVzRIS2MxdXNBMzJVMXlJeTM0c2p2aS9WeWt0Ync4ZGNrQUFBQUFWa1BZQlFBQVlBdlVXdmVTZkpIazJvaDM4empKbHpHbWlGZDMyZlp5TU9KOS9EekpwNldVYzVjTEFBQUE0TTBJdXdBQUFHeTRXdXRIU1Q3Sk9OdGN6dElDTGxwY1dJWGRKQittTmI3TVJyaC81MGx1bDFLZXVGUUFBQUFBcjAvWUJRQUFZRVBWV3VkcGJTN3pFZTdlSWkzazhzeVZZZzFtYVMwdnR6TE9FVWRQMGtJdldsNEFBQUFBWG9Pd0N3QUF3QWFxdGQ1UGEzTVpHNk9LNk8wZ3JlMWxiS0V2TFM4QUFBQUFyMG5ZQlFBQVlJUFVXdmZTMmx5dWpXelhqcE04U2h0YkJFT1lwNFZlRGthMlgxcGVBQUFBQUY2UnNBc0FBTUNHcUxWK2xOYm1zak9TWGJwSWEzRjV2UHdjeG1BM2JielJqUkh0MDJsYTRPV3B5d01BQUFEdy9ZUmRBQUFBSnE3V3VwUFc1dkwrU0haSnlJVXBHR1BvNWZOU3lsMlhCZ0FBQU9DN0Nic0FBQUJNV0szMVdwTGZaQnh0TGtJdVROSFlRaStMSkIrVVVrNWRHZ0FBQUlCdkp1d0NBQUF3VWJYVysybGppOGJnT01uRENMa3dYYnRKN2lXWmoyQmZ6cFBjTGFVY3VTd0FBQUFBZjA3WUJRQUFZR0pxclh0cGJTNWplQ2gvbk9SUmtqTlhoZzB4VDJ0NkdjUDlkWlFXZWpsM1dRQUFBQUNlRTNZQkFBQ1lrQkdOTFZxa2hWd1dyc3JhekpMc2Y4ODFZSDBPa3R4SmEzd1orbDY3WFVweHZRRUFBQUNXaEYwQUFBQW1ZaVJqaTg3U3hoVTljMFZleXRYQXl0V21rSGV2Zkw2YjFRWXFUdktuNDZTK1hyNWVMUDliSWlqektnNlRmTGk4bGtNNVR3dThQSEU1QUFBQUFJUmRBQUFBUnEvV3VwUFc1bkp0d04yNFNQSmwybGdWL3RSK1doQmludVMvTEgrOTZnREx1bHdHWTc3Tzh6RE1XWXlsZXRFc3JlWGx4c0Q3OFhrcDVhN0xBUUFBQUd3N1lSY0FBSUFScTdYTzA0SXVld1B1eHJPME5wZHREMEJjQmxqbVNYNjAvSHgvZzQ5M3Niem1mMGdMd2J6WUdMT041bW1obHlHdis5TWtINVJTem4yRkJBQUFBTGFWc0FzQUFNQkkxVm9QazN5V1pHZWdYVGhMOGlEYk9mTG1jdnpRWmJCbG5tSEgySXpGV1ZybzVldmw2N2FPUTdxWjVOYUFhK0kwTGZCaUhCVUFBQUN3bFlSZEFBQUFScWpXZWovSkp3UHV3cU5zMThpaXl6RkU3eTVmOTYzQ2w3WklDNzhzc2wzdEw3TWs5NUljRExUOTh5UjNTeWxIbGlBQUFBQ3diWVJkQUFBQVJxVFd1cFBXNW5JNDBDNHMwa1lXbld6NHFSWnVXZThhdWd5L2JFUHp5RHd0OUxJNzBQWS9MYVhjdCt3QUFBQ0FiU0xzQWdBQU1CTExvTXZ2MGg2ZTkzYVIxdWJ5ZUlOUDhXNWFDOGRQQmpySDIrZ2lMZkR5K3lUUHNybXRMN08wc1VZM0I5citVU25sdHVVR0FBQUFiQXRoRndBQWdCR290YzdUZ2k0N0EyeCtrZVJCa3JNTlBMWDdTWDZXRm5MWnRkSUdkNUxrcTdUZ3l5YXV0eUZiWGhaSnJwZFN6aTB6QUFBQVlOTUp1d0FBQUF5czFub3R5Vy9TUCtpeXFXMHVBaTdUc0tuQmx5RmJYaFpKYnBkU0ZwWVhBQUFBc01tRVhRQUFBQVpVYXoxTThzVUFtejVKOG5FMkoyU3dtK1REQ0xoTTFXWHc1VGliTStwb251UlhhZUdYbnM3VEdsNEVYZ0FBQUlDTkpld0NBQUF3a0ZyclIwaytHMkRUajVJY2JjQXBuS1dGV3o1TWEzTmhNenhMOHZ1MDRNc21yTkY3eTNYYTAzbGF3OHNUeXdrQUFBRFlSTUl1QUFBQUE2aTFmcEhrc1BObXo1SThTQnQxTW1YenRERkZONnlralhhUkZuajVNdE52SUxxUjVFNzZ0N3pjTHFVY1dVb0FBQURBcGhGMkFRQUE2R3lnb011enRLRExWRWZFWExhNDNJb3hSZHRva2VkampxWnFQNjNscFhjTGtjQUxBQUFBc0hHRVhRQUFBRHFwdGU2a2pTMDY3THpwaDBrZVQvUzA3YWFOS2JxUi9xMFlqTTlaV3VqbGNhWVozSnFsTmJ6MGJpWDZ0SlJ5My9JQkFBQUFOb1d3Q3dBQVFBZkxvTXZ2MGtidzlIS1c1T01rSnhNOFpmTzBrTXVCMWNNM3VFaHJLM3FVYVk0NEdtS3MwVkVwNWJhbEF3QUFBR3dDWVJjQUFJQTFHeWpvTXRXeFJRZHBJWmU1bGNOTE9rNXJlMWxNYkwrSEdHc2s4QUlBQUFCc0JHRVhBQUNBTlJvbzZQSW95ZEhFVHRXTkpMZlN4aGJCNjFnczEvNlVRaSt6dE1CTHp3WWpnUmNBQUFCZzhvUmRBQUFBMW1TQW9NdEZXcHZMc3dtZEppRVhWbTJLb1pmRDVYM1FpOEFMQUFBQU1HbkNMZ0FBQUd2U09leHlraFowT1puSTZUbEljaWRDTHF6UDFFSXZCMmt0TDdOTzJ4TjRBUUFBQUNaTDJBVUFBR0NOT2dWZUZraytUbXQyR2J0NVdvUEYzT3FnaytPMDBNdlpCUFoxUDhtdjBpOEVKdkFDQUFBQVRKS3dDd0FBd0pxdE9mQnluTmJvTW5hN2FhMFZRaTRNNVhGYTZHWHNvYkJaa3MvU2dpODlDTHdBQUFBQWt5UHNBZ0FBME1HYUFpOFAweDdnajlrc3JjbmxwbFhBQ0Z3aytUTEowUVQyOVY2U0c1MjJKZkFDQUFBQVRJcXdDd0FBUUNjckRMeGNwQVZkamtkK3lEZlRnaTR6VjUrUk9WdmVRODlHdnArSHkzdW9oODlMS1hjdERRQUFBR0FLaEYwQUFBQTZXa0hnNVNMSjNTUW5JejdNZVpJNzZUZUdCVjdYSW0wTTJObUk5L0ZHV3N0TEQ3ZExLVWVXQlFBQUFEQjJ3aTRBQUFDZHZVSGc1U3pKeHhsdjBHV1dGbks1NFNxL2xwTzBNTlByMm84V25kZjFLT01lYlhTUUZuanBjWDBGWGdBQUFJRFJFM1lCQUFBWXdHc0VYazdTR2wwdVJucElOOUtDTHNJV2Yrb2l6ME1zZjFqKzN1S0YvN1l1bDJ0cmx1Y3RPKysrOE45NDdpeXQ1V1V4MHYzYlQvSlpCRjRBQUFBQWhGMEFBQUNHOGdxQmx6RUhYWGJUR2llMlBUeHh0dno0K3Nybmk1SHY4MlVJWmovSlgxMzVmTnNEUzQvVG1sN0dlTC8xQ3J5Y0o3bGVTbGtFQUFBQVlJU0VYUUFBQUFiMEVvR1hNUWRkYmlhNWxlMExSMXdHV2Y2d3ZENmJGZ2k0RE1ITWsveG8rYnFOMTNpc0xTLzdhUUd6L1RWdlIrQUZBQUFBR0MxaEZ3QUFnSUY5UitEbE9NbkRqQy9vc20xdExwZUJscStYcnhkYnVFeDNsOWY3M2VYcjdwWWM5MWhiWG1acERTL3JEcnljSm5tdmxITHVLelVBQUFBd0pzSXVBQUFBSS9BTmdaZmp0R2FKc2RtR05oZmhsdSszVGVHWHNiYTg5QXE4TE5JYVhnUmVBQUFBZ05FUWRnRUFBQmlKSzRHWHk0ZnJZekpMYTNNNTJORFQveXd0M1BKc2VmNTVOWmRqajM2VzlZY3Zodkk0cldscGJQZGxqOERMVVNubHRtVU9BQUFBaklXd0N3QUF3RWpVV3QvS09NTWs4eVMveW1hMXVWemtUd011Mmx0VzU3TDE1U2ZadkhEVVNaS1BNNjVBVksvQXkrZWxsTHVXTndBQUFEQUd3aTRBQUFBanNBeTZ6RE8rUU1saDJ0aWlUZkVzeVZmTFY5WnZsaFo0K1RDYjAvaHlrZGJ3Y2p5eTg5d2o4SEs3bEhKa1dRTUFBQUJERTNZQkFBQVkyRWlETHIwZW52ZHdrdVRMYUhBWjJtNlNHMm1qam5ZMzRIaU8wMEl2RjF0MHo1NG51VjVLV1ZqT0FBQUF3SkNFWFFBQUFBWldhLzNySkg4NW9sM2FoTEZGRjJsaGhDOHpycEV6UEY5alAwc0x2MHpaMk1ZYTlRcTh2RjFLT2JlTUFRQUFnS0VJdXdBQUFBeW8xdnBPeHRWeWNUUEpuUW1mMHNzV2wyT3JheEptYVlHWER6UGR0cGVMSkE4eW50RlkrMm1CbDNXRzFSYWxsUGNzWHdBQUFHQW93aTRBQUFBREdWblFaWmJrWHBLRGlaN080eVJmSlRGZVpib08wa0l2ODRudS82TWtSeVBabHg2Qmw2TlN5bTNMRmdBQUFCaUNzQXNBQU1BQWFxMzdTWDQ0a3QzWlRSdGJ0RCt4MDJoVTBXYmFUd3U5VEhIRTBiTzBscGVMa1p6SGRRZGVicGRTaml4WkFBQUFvRGRoRndBQWdNNXFyYnRKM2huSjd2UjRJTDVxRjJrQmw4Y1pSNmlBOWRoTmNpdlRDNzJjSlBrNDR3aGd6WmYzOTdxY0o3bGVTdEdvQkFBQUFIUWw3QUlBQU5EUnlJSXVOOUpHRjAyRmtNdDJtbUxvNVNMSjNiVGd5NmJmNTZkSjNpdWxuRnVxQUFBQVFDL0NMZ0FBQUozVVdtZEpmanlTM1RsTUN4Qk1nWkFMeWZSQ0x4ZEpIcWFOMmhyYXpTUjMxdmorVDBvcEgxaWlBQUFBUUMvQ0xnQUFBQjBzZ3k3ekpHK05ZSGZ1WlRxQmdjZEpIa1hJaGVkMjA0SWJCeFBaM3djWlIrQmwzZmY5M1ZMSzU1WW5BQUFBMElPd0N3QUF3SnJWV3Q5S0M3ck1CdDZWV1pKZkxmZGw3STdUUWk1blZoRGZZcDdXOURLVjlmeGdCUHZ4MlJyUDEzbVM2NldVaGFVSkFBQUFySnV3Q3dBQXdKclZXbitjY1FSZFBrdXlQL0xUZFpJMitzVURjMTdXamJUUXkrN0k5M01NZ1pkMWZ4MVlwQVZlemkxTEFBQUFZSjJFWFFBQUFOYW8xdnBPaG44SVA0V2d5MFZheU9YWXF1RTExL2pOdE5ETG1CMHYxL21RWTduMmwxOFAxaFhBKzd5VWN0ZVNCQUFBQU5aSjJBVUFBR0JOYXEyN1NkNFplRGYyMDBZWGpibjE0bkhheUtJTHE0WTN0SnZrWHNZOTJ1Z2t5ZDJCMS9zOExmQ3lMaCtVVXA1WWpnQUFBTUM2Q0xzQUFBQ3NRYTExSjhNL2NGOTNnOE9iTXJLSWRibVI1TTdJMS83UWdaZWJ5M08wRHVkSjNqYk9DQUFBQUZpWHYzQUtBQUFBVnF2VytvTWtmejN3Ym93OTZQSW95UzhpNk1KNkhDZjVteVRQUnJwL1k3Zy9IMmQ5WThOMmtueGhHUUlBQUFEcm90a0ZBQUJneFdxdFA4NndEN0hISEhRNVNmSmcrUW85SEtTTk5ocnIvVEJrdzh0cytiVmlmMDN2Zjd1VWNtUUpBZ0FBQUtzbTdBSUFBTEJDdGRaM2t1d091QXRqRHJvOFNuSzA1VXRrZC9reHkvT0F3WSt1WEsrcnYvOHFyamJrbkNYNVB5Lzgva21HSFprenRGbGE0T1ZnaFBzMmRPQmxOOG12MS9RMTR6ekplNldVVTk4ZEFBQUFnRlVTZGdFQUFGaVJXdXR1a25jRzNJV3hCbDNPa255YzdXcHptZWQ1c09YZHZINklaZFVXYWFHS1B5eXZ4OW1XWFpleHRyd01IWGc1U1BLck5iMzMwMUxLZGQ4aEFBQUFnRlVTZGdFQUFGaUJXdXNzTGVEdzFrQzdzTTUyaGpkeG5PUmhOcnRWWkgvNThlNlZ6NmRta1JhNCtNUHk4N01Odmw2N2FZR1grY2oyYStqQXk1MGtOOWYwM3NZWkFRQUFBQ3NsN0FJQUFQQ0dhcTF2cFQwNEh5cG9Na3RyZEJsVHlPSWlMZVJ5dklHWGZIOTV2ZDhkK0xxdjAxbGE2T1hyYkc3NDVUREpyWkh0MDdPMEZxU2gvSHBOWDBmT2s3eGRTam4zSFFNQUFBQllCV0VYQUFDQU4xUnIzVS95dzRFMlA4YWd5MG1TQjltYzhUaXp0REV2N3k1ZloxdTR6Qy9ETDc5UEMyUnNpbm5hK0o0eFhkUGo1ZjB6aEhVMlJEMHBwWHpnT3dZQUFBQ3dDc0l1QUFBQWI2RFcrcGRKL25xZ3pZOHg2TElwWTR0MjA0SXRQOHMweHhLdDI3TThENzVNL1ZxUDlUNGFLdkJ5a0JZQVdvY1BTaWxQM0Q0QUFBREFteEoyQVFBQWVFMjExaDhrK1hHU3R3YmFoWHRKYm96b2xEekl0TWNXelpiblU4RGwxV3hLOEdWczk5UERKSTgzN0Z5Y0publBPQ01BQUFEZ1RRbTdBQUFBdktaYTZ6ekp6a0NiSDlPRCtZc2tkelBkc1VVM2t2d2tyZEdDTjFzSHo1SjhsVGJ5YUtwcjRkNkk5bWVvQU5rc2JaelI3aHJlKzlOU3luMjNDd0FBQVBBbWhGMEFBQUJlUTYzMWh4bXUvV05NRCtSUGtueWM1R3hpbDNBM3lZZkxjem16b2xmdUxNbVhhVUdOcWJXOTdLZU5OUnJMdXZoRmhnbVM3YWNGWHRiaHZWTEt3bTBDQUFBQXZDNWhGd0FBZ0ZkVWE1MGxtV2VZOFVVSFNYNDFrbFB4TEsxNVlrcGhobmxheUVXTFN6L0hTUjVsV29HbzNlVjlOb1p4VmtNMkp4MG11YldHOTMxYVNybnUxZ0FBQUFCZWw3QUxBQURBSzZxMS9qakR0RDZNcVhIaU9DM29NaFUzMGg3YTcxckJnMW1raFY2bTB1Z3hXOTV2WXdpOG5LUUZYb1lJbHYxNlRlZmdkaW5seUcwQkFBQUF2QTVoRndBQWdGZFFhOTFMc2pmQXBtZHBENTNIRU5aNG1PVHhCQzdYTEszQlJjaGxYQlpKdmtvTFRFM0J2YlN3MU5DZXBZME02MjFkNDR4TzA4WVpuYnNsQUFBQWdGY2w3QUlBQVBDU2x1T0xmanpRNWo5TEc4RXp0QWVaUmtqaE1HMWMwY3pLSGEyenRLYVhLYXluc1FSZUhxZUZ6WWE0bjlZeHp1alRVc3A5dHdJQUFBRHdxb1JkQUFBQVhsS3RkWjVrWjRCTjMwbHljK0REdjBoN3lENzJZSUp4UmRNemxmRkdONWYzNHRDR0NweXRhNXpSMjZXVVU3Y0JBQUFBOENxRVhRQUFBRjVDcmZXSFdjK0QzdTl6STYxVllrZ1hTZTRtT1JueEpUcElDeUlJdVV6WElpMVFOZVoxdHMzMzR6eXRZV3JWamtvcHR5MS9BQUFBNEZVSXV3QUFBSHlQV3VzUDBzWVh2ZFY1MC90cEQ1ZUhITVV6OXFETGZscklaVzZsYm96anROREx4VWozYnd5Qmw1UGxmZG43SEsyclplcDZLZVdwcFE4QUFBQzhMR0VYQUFDQTcxRnIvZXNrZjlsNXM3TzBvTXYrZ0ljKzVxRExMRzFjMFUwcmRDTmRwSTAyZWp6Uy9SdEQ0T1Zaa284SHVPOStuZFUzS0QwdHBWeTM3QUVBQUlDWDlSZE9BUUFBd0xlcnRlNmtmOUFsYVEwS2dpN2Y3Q0RKMzBYUVpaUE5sdmZBcnpQTzFwN2pKQTlHY0IvY0hPRHJ3c00xdk8rMVd1djdsajBBQUFEd3NqUzdBQUFBZkl0YTYxdHA0NHQrMEhuVFE3ZEdqRFhvc3JzOEwwWVdiWi9IYVUwdll4dHROSWFHbDE4TWNLOSt0b2I3OExTVThyYWxEZ0FBQUx3TXpTNEFBQURmN29mcEgzVFpUV3UwR01wWWd5NDNNOTZXRDdiMytvK2g0ZVZlV2hOT1QrczQ1cjFhNjZHbERnQUFBTHdNelM0QUFBRGZvTmI2ZzdSV2w3YzZiL3JYR1haODBkMGtpeEZkQ20wdXZHaU1MUzlETjd3OHpuckdDMzJYd3lTM1Z2eWUybDBBQUFDQWw2TFpCUUFBNEp2OU1QMkRMb2NaTnVqeUlPTUt1aHhFbXd0LzdyTGxaWDlFKzNTOC9CanluQngwM3ViakpHY3Jmay90TGdBQUFNQkwwZXdDQUFEd0xXcXR1MmtQMUh1RVh1WkpQaHZ3Y0I5azJJZjFWODNTUmpuZHNBcjVIbytTSEkxb2YrNE51RzR2a3Z4TitqYmVyS1BSUnJzTEFBQUE4TDAwdXdBQUFIeUxVc3Baa245SWNycm1UYzB5L0FpVXNRUmQ5dE5DUDRJdXZJeGJ5L1V5RzhuK0RObU9OTVRYa2VNMUhLOTJGd0FBQU9CN0Nic0FBQUI4aDFMS2Y1WlNUdE5DTC8rNnBzM2NTckk3MENFZUozazRrdE45SXkyNHNHL2w4UXJtU2Y1dVJPdm00eVFuQTIzN0lQM0hHVDFhdzN0K1lsa0RBQUFBMzBYWUJRQUE0Q1dVVXY2amxQSlBhUzBHLzdIQ3Q1NG51VG5RWVoxa1BFR1hlOHVQbWRYR2E1Z2wrWFhHMFFoMGtSWjR1Ump3WHVwNUh5MlNQRnZ4ZTJwM0FRQUFBTDVUY1FvQUFBQmVYYTMxaDBuMmtyejFCbTl6K1lCK2lGYVhzeVMveUhBUDVLK2VBMjB1ck5KeDJqaWhvZTB2Nys4aFBFc0wzUFN5bTlhdXMwcW5wWlMzTFdjQUFBRGdtMmgyQVFBQWVBMmxsSDlKRzIzMEwyL3dOamN6VE5CbDZPYUpTNWRoQUVFWFZ1bkdjbDBOM1JKMGt1RkNONzNIR1oybGhZeFdTYnNMQUFBQThLMkVYUUFBQUY1VEtlVS9TeWtuU2Y1WGt2TlgvTC92SjdrMTBLNC9USHNRUDZSNVdxUExycFhFR3V4bkhJMUJ4MGtlRDdUdE8ra2IrSG0waHZmOHhGSUdBQUFBdm9td0N3QUF3QnNxcFZ5VVVoWkovaW5KZjd6ay8rM09RTHY3T0t0dllIaFZOOUtDQ0RPcmh6VWFTK0RsWVpMRkFOdmRUZDlBM1ZsV0gzalpxN1crYnlrREFBQUFMeEoyQVFBQVdKRlN5citXVXY0aHlXbVMvL3lPLytuTnRHYVQzaFpwRDk2SGREUEpQYXVGVG1acGdaZURnZmRqcUxGaE45TTM3UE40RGNmNVM4c1lBQUFBZUpHd0N3QUF3SXFWVWs2VC9FTmEwOEdMWmhsbWZORkYyZ1AzSWQzTGNJMDJiSzlaa2wrbE5Rb041U0xKM1lHMmZhZnpjWDY1NHZlOFZtdTlaaGtEQUFBQVZ3bTdBQUFBckVFcDVUOUxLZitjMXFaeWZ1VS8zY2t3NDN1R2FwYTRkQy9EaGcxZzZEVjRrbUdhbGVhZGozc2Q3UzYzTEY4QUFBRGdLbUVYQUFDQU5TcWxuSmRTRmtuK09XU0c5c0FBQUNBQVNVUkJWTWtQTTh6RDlrZHBvWnVoQ0xvd0ZrT3Z4Y2NEM1lzOVEzYnJhSGM1ckxYdVdiNEFBQURBSldFWEFBQ0FEa29wWjBuK3h3Q2JYaVE1R3ZEUUJWMFltNkhYNUJBdFM3TWtOenR1Ny9FYTN2UFEwZ1VBQUFBdUNic0FBQUIwVUdzOVRIS3Q4Mll2a2p3WThMQUZYUmlySWRmbVVQZmxyU1M3SFkveGVNWHYrVXZMRmdBQUFMZ2s3QUlBQU5ESEp3TnM4MkdTczRHT1Y5Q0ZzUnR5alQ3TGV0cFB2cytkanR0NnRPTDMyMW1HQmdFQUFBRHlsbE1BQUFDd1hyWFcrMG4yT20vMldWYmZyUEN5RGlQbzhyS2VKamxQOHZXVlgxODZMNlVzdm1OZFhidnl5NTBrOCtYblAzM2gxM3k3ZTh2WEllNlZSMGtPMHE5dEpjdnR6ZFBHbTYzYjJmSzhydkpyd1M4ejdGZzJBQUFBWUNTS1V3QUFBTEErdGRhZEpIOU1DeC8wY3BIa2I1YXZ2ZDNJOHdBQno1Mm1CUXkrVGd1MExFb3A1eDNXMzE1YXVHR2U1TjIwVVZvN0xzZWYzUzkzazV3TXNPMTVrczg2YjNPeFBONGU5cFA4ZXNYditkNTNoY0FBQUFDQTdTRHNBZ0FBc0ViTFZwZmVJNHcrVG10MjZVM1E1YmxGV3FqbDc1TTg3UkZzZVlVMXVaY1dldm5wOG5YUDVSbzA4SElueWMzTzI3eWJQdTB1U1F2enJMSmw2S2lVY3R1U0JRQUFnTzBtN0FJQUFMQW1BN1c2UEVzTHUvUzJuL1pRZTdiRmwveEprdCttaFZ0T0o3Uk81Mm1obDF2Wjd0RkhaMGwra2Y2TlNMTzA5cE9lNDR4T2xzZmF3MEdTWDYzdy9jNlR2RDJtQUJrQUFBRFEzMTg0QlFBQUFHdnpVZnFQTDNvNHdISHVabnVETGsrUzNFN3lYMHNwSDVSU2pxWVVkRW1TVXNxaWxQSjVLZVc5SkcrbmIrdkhtRnl1NDk0dWtqem92TTM5dENhbUhwNmxCWWxXWlNmSis3NjlBQUFBd0hZVGRnRUFBRmlEWmF2TEx6dHY5bEZXKzFENVpjelNXaHUyS2VoeW11VFR0SGFKeTRETFJyUk1sRkpPcndSZjNrdnllVnFUeHJiWXp6Q2p1QmJwUDNyc1ZzZHRmVG5oZlFjQUFBQkdTTmdGQUFCZ1BYcTN1cHdrZVR6QWNkNUpDd2hzZzZkSlBpaWx2RjFLdVQrMUJwZFh0V3g4dVp2VzluSTdMZVN6RFc0a3VUbkFkaCttN3dpbDNmUnJkemxlOGJGZHE3WHUrVFlEQUFBQTIwdllCUUFBWU1VR2FuVVpZbnpSemZSN1dENmtvN1FXbCt1bGxDZmJ0cDVMS2VmTDlwcTNrMXhQQy8xc3VqdEo1cDIzZVpiV3p0UlRyNGFVaTZ5K3VlYlFkeHNBQUFEWVhzSXVBQUFBcTllNzFlVTRiUXhLVC9PMFFNQW1PMG9MdWR6ZTlCYVhsMVZLZVZwS3VaN3RDTDBNTVo3cmNmcU9JdHROdjFDUFVVWUFBQURBeWdpN0FBQUFyTkFBclM0WDZkL3FNa3NMQW15cW93aTVmS2N0Q2IwTXRjNGZkTjVlcjlESXlmSmpWZlpxclhOM0l3QUFBR3duWVJjQUFJRFY2dDNxOG1WYTRLV25JUm92ZW5pYTVMcVF5OHU3RW5xNW5XUVR6OWs4L2NmbExOSzNxV21lNmJhNy9OSmRDQUFBQU50SjJBVUFBR0MxZW83V09FdHJJZW5wTVAwZWpQZHludVIyS2VWNktlV3BKZnpxU2lsSFNkNUw4dW1HM3RPOTEzenZkcGNQTzIzbldWWWJ6bnZmM1FjQUFBRGJTZGdGQUFCZ1JXcXRoMG4yT203eVVlZEQzRS9mTUU4UFIya2ppNDZzNERkVFNqa3ZwZHhQOG5ZMmI3VFJ2ZlJ0TXpwTGN0eHhld2RKZGp0czV5SXQ4TElxTzdWV2dSY0FBQURZUXNJdUFBQUFxOU56cEVidmgrR3p0QWYrbStJMHowY1duVnU2cTFOS09WMk9OcnFiMXBxekNYWUhXUDhQMDNkRVdhOGcyMWNyZnIrZnUrc0FBQUJnK3dpN0FBQUFyRUN0OVZyNmpqcnBQZWJrVmxxenl5WTRTdktla1VYclZVcjVQRzIwMGFhYzU0UGxSeThYU2I3c2ZIdzkybXNXYVdHOVZkSHNBZ0FBQUZ0STJBVUFBR0ExZW83M1dTdy9lcGtudWJrQjErZzh5UWZhWFBxNTB2THk2WVljVXU5eFJvL1RyOTFsbHVSR3AyMFpaUVFBQUFDOEVXRVhBQUNBTjFScjNVdHkySEdUanpvZjRpYU1MMXFrdGJrOHNXTDdLNlhjVDNJOTB4OXIxSHVjVis5Mmx3ODdiV2ZWeDJTVUVRQUFBR3daWVJjQUFJQTNkOWh4VzcxYlhRNlQ3RTc4K2h3bHVWNUtPYlZVaDdNY0cvVjI1L1c3RGdmcE83S3NaN3ZMYnFkak8wdHlzc0wzdStZT0F3QUFnTzBpN0FJQUFQRG1lbzR3NnRucXN0djUyTmJocnJGRjQxRktPUytsdkpjV1FKcXludU9NZXJlNy9LelRkcjVhNFh2dDFWcm43akFBQUFEWUhzSXVBQUFBYjZEVytuNlN2VTZiNjkzcU11WHhSZWRKUGlpbGZHNlZqazhwNVhhU3V4TStoTjBrTnp0dXIyZTd5NDMwQ2ZJOFcvSDczWEpuQVFBQXdQWVFkZ0VBQUhnelBSK3dmdFZ4VzcxSHRhelNlZHJZb2llVzUzZ3RnMGkzSjM3djl4cnhkWkhrdU9PeDNlaXdEYU9NQUFBQWdOY203QUlBQVBDYWFxMDdTZDd2dExtejlIdllQVXR5WjZLWDVUTG9zckJDeDYrVWNwVGtnK1YxbTZLZTdVYzlSeGw5MkdrN3F3end6V3V0ZSs0cUFBQUEyQTdDTGdBQUFLL3ZzT08ySG5YYzFzMzBhNnhZcFVXU3R3VmRwbVhad0hNOTB3eTh6Tk92QWFsbjRHMDN5WDZIN2F4NmxORTFkeFFBQUFCc0IyRVhBQUNBMTlkcmhORkZWdjlRK052TTBxL1ZZWlVXYVkwdTU1Ymw5Q3dEU3JlWGEzMXFlcllnOVd4MytWbUhiWnd0UDFibDUrNG1BQUFBMkE1dk9RWHdhcGExeUZjL0xyMmJaT2ZLcnhkSi92M0tyNThtU1NubHFiTUlBTEF4Znk3czFlaHduSDRoZ0R0cGdaY3AyWWlneTVXZk5YWmVXRnN2L3F4eG11Ui92M0Q4NTBrV1V6MEh0ZFozbHNkd044bG5FMXVEKzBsdXBFL3J5c255ZXZmNDJuTWp5Y01PMjNtVzFpYTFDdGQ4ZHdJQUFJRHRVSndDK0hhMTFubmFYNWE5bTlYV1U1K24vUVhsM3k5Zm4vb1hxQUFBay91ejR2MGtuM1RhM045a3RlMEgzMlkzeWQ5TjdGS2Nwd1ZkRmhOYlAxZC8xdGpMNmg3U1gvNnNzVWp5OWZKbmpkT1JuNHQzOHFkanMrWnBnWmNwT1Z2ZXB6M2NTSEt2MDdZK3p2cGJwVlo5dmQ4enlnd0FBQUEybjdBTFhGRnIzVW55ZmxyMThiWDg2YitlWExkRld2dkxiN1cvQUFCTTRzK09mOHlmTnYydHk3TzBCODQ5M0V0N2tENFZrd202RFB5enh1bVZueldlak95OHZCaDB1ZFF6MExFcUQ5S24zU1ZKL21mNnROOGNMNDlyU3NmemFTbmx2dTlTQUFBQXNObUVYZGg2TC95bDgvc2oyYTN6SkUrUy9LMS9rUVlBTU1vL1E4NlQvR09uemZWb1ZraW0yZW95NmdhSGtmNnNrZVhQR28rR0RyNThSOURsMHMyMHNWcFQwYlBkNVU1V04vcm51MXdrK2U4ZHRyUEtvTjNUVXNwMTM2a0FBQUJncy8yRlU4QzJxclhPYTYxZkpQbGpraTh5cnI5ODNrbHltT1FmYTYxL3JMVit0UHlMY2dBQXhxSFhueDNQMGlmb2tpUzNKbllOYm84MTZITGxaNDEvRytIUEdwZnI5emUxMW4rcnRYNVdhOTBiNEJ4OVg5QWxTUjZuWDFQS0t1eW1YelBTbDUyMk0wdHkwR0U3WDYvd3ZhNzVGZ1VBQUFDYlQ5aUZyVk5ydlZaci9WM2F2OFE5VE4vNjhOZXhsemEvL0krMTF2dEQvRVUwQUFCLzV1ZWR0dE1yNk5MeklmMHFmRjVLT1JyaHp4cnZ2L0N6eHRqdEpQbG8rYlBHRjdYV2E1M08wOHNFWFM0OVNCdjVPaFc5UW1ObkhjL0xUenBzWTdIaU5YWXRBQUFBd0VZVGRtRnJYQW01L0M3VC9KZGVPMGsrU2Z1TDZNODB2UUFBRFBibnlyMGs4MDZiNjlYZU1LVldsNmVsbExzai9GbmpqMGwrayttMlNod20rVjJ0OVhmTE1WM3JPbGV2RW5TNTlIRmF1R01LZWdiSHZ1cTBuUjdOTG1kSlRsYjRmbE85RHdFQUFJQ1hKT3pDeHF1MTd0VmFmNVBwaGx5K3llVy92cnp2Q2dNQWROZHJKTTFKK2p6Z24yVTZyUzduU1Q0WTBjOGFWd1AxZXh1eXZxK2xqVlA5WXRXdGtxOFpkRW1TaTdUQXkxVDBDbzg5VzU2YkhsOGo5anRzWjVYdExqLzFyUW9BQUFBMm03QUxHMjBaQnZuSDlIc2cwZE5Pa2s5cXJYOVUwUXdBLzQrOXV3ZVI1TXpUUmYrOGc0eUJJOWdjV0RneUZpYWJsWEU4bGVCNlowSFoxbzZuYXM0NjExSzJjYTFycU50YWErbHVqclZXdDR5MXE5cTYxOWhEbCtBYWM2ek9CaTJNc2RBbEdHT01YcFFEWS9RQndlWkNINUFoZUs4UlVlcFNUWDlVVlVaRVJtYitmdEQwaktUS3lQaEh2Rkh4OGNUL2hVRU5OWVhSVUYxZC9tNkxhbitybExJYXdYWEdwTlo2bE4wSzFGODBUeE42dWQ5UnphNGJkRG56SXNrL2JVbnRQc293M1o5ZVpiaXB6djUyZ0dWODIrRm51VVlHQUFDQUhTZnN3azZxdFI3VVdwK25tZlpuMTZmN21hWnBOMjVxSXdDQS9zOHpKeG51SWVwUUQ3SC8yNWFVLzBFcFpUR0NmZUF3eVhkcHdpQzc3aXhnLzN5ZHFZMDZDTHFjK2VkMDIvMmpUME4xZC9tWGdaWXpSSGpudE9PeGVoQUFBQUJnWndtN3NITnFyWGZTZEhQWnR4dGJkOUs4ZVRtekZ3QUE5R2FvYzYyaHBpZjVUWm9wU3NidXRKUnlmOFBYR1pOMmV0UW4yZjFBL1VVSHVXYVhsdzZETG1mK1lhQ3gwVVhOUHRxaFk4WEhBNnpQcXpRZGZMYnRlQTBBQUFCc2dMQUxPK1BjemVlSGUxeUdhWm91TC9mdEVRQUF2UmhxQ3FPaHVqVnNRMWVYVlpKYkc3N1dPTWp1VG85NkZmZHFyVTh2MjFHeWg2QkwwZ1FpL25GTDZqWFUrQnFxQzlTMmRYZjV4SzhzQUFBQTJGM0NMdXlFOXViejA3ajVmT1plcmZXSmFZMEFBRG8zRzJnNVF6eTgvcmo5TTNaZmxWS1dHN3pXbUtjSnVrenQvaitOZ2UvZU4wVk1UMEdYOCtQam15Mm8xVzhHV3M1UTRiZ2h3aVBmYnVIeEdnQUFBTmdBWVJlMjNybWdpL200Zis0d1RaY1hnUmNBZ0k2VVVtNGt1Wm5rVWJydFFIRGVVTk9TYkVOWGw0MU9YMVJyZlpqa3lKNy9aeVpwcGpXYXY2VnVmUVpkenZ4VHhqK2QwWWNaSnZBeTFESGpiNFlZOHgxKzF0VDFNQUFBQU93dVlSZTIycm0zTE4zQWVyT0RYT0t0U3dBQUxxK1VzaWlsM0MybGZKcmtWMm1tMkRsT3N1eG9FZDhPdENwL3N3WGx2cnZCYTQyakpIZnM4ZTkwVkd1OWM2RnVRd1Jka3VSbGtzZGJVS08vSFdnNVEzUzYrVEQ5ZDRONjFXN2JMcStKQVFBQWdCMGs3TUxXYW9NdTNySjh2MG1hRGk5dThnRUFkS3lVc2lxbG5KUlNicmRkWDI0a3VaM2tKTW5xbWg4N3hFUHIzNlI1Y0QxbXg2V1V4UWF1TXlhMTF1ZEo1dmJ3UzNuWUJvT0dETHFjK2Vja0wwWmVuNE9CYXZMdGdPdlR0eTY3dTh3TVVRQUFBTmhOd2k1c0pVR1hLeE40QVFBWVFDbGxXVW81THFYY0txWDhLc21uU1I0a1dWenlJMTZrMjY0R2IvTmZSMTdLVlRiUTFhV2Q4c1FVcVZjM3I3VSt5YkJCbHpQL3RBWDFHYUtMMGpjRHJjc25BeXpqMzdicyt3SUFBQUFiSU96QzFoRjB1VGFCRndDQWdaVlNUa3NwOTBzcE4wc3BKYzJVUjQveTlzNEZwd044clE4ei9pbU12aXFscklaY29LREwyZzZUL1AwR2xuczYwTGhaeDM4YllCbXZCcXJERU9PankyNDlVME1UQUFBQWRwT3dDMXVsRFdvOFZJbHJPd3U4VEpVQ0FHQjQ3WlJIZDBzcG55YjVWWm9wajQ2VExOdi81RjhHK0JwakQ3b3Mwd1NDaG5ZVVFaZDEvU2FibWY3cEgwZGVsNCtTZkR6QWNvYVl5dWpEOU4vQnA4dlFqakVOQUFBQU8wclloYTNSQmpTZXBnbHNjSDJUSkUvYU4xY0JBTmlRVXNxcW5mTG9kaW5sUnBvcGo0Ym96REQyS1l3ZWJLQ3J5MUdhemlTczc0czBvWmNodlV6eTI1SFg1Vzk3L3Z4Vmt2OTNvSFhacXU0dXRkYVpZUWtBQUFDN1I5aUZyZEFHTTU1RTBLVXJCMjA5QVFBWWoxY0RMR1BzVXhndFN5bkhBMTlyM01sbXVwSHNzci9QOEIwMUhtL0JOVmpYeDRzL0pmbDlrbS9hS2ROK215YjAwcmUvSG1BWnBqSUNBQUFBM2tuWWhXM3hNTm9QZDIxV2E3MnZEQUFBb3pGRXNIdnNVeGc5R0hKaGJjY0gwNlQyNDcrbi8rbHV6aHQ3ZDVlUDE2ekhqKzA2L2lISjcwb3AvMXBLZVZGSytiNlU4dU81LzI0eHdMb01jVzMrdnpyOHJLbmhDQUFBQUx0SDJJWFJxN1hPNDAzTHZ0elQwaGtBWUJUbnZCK2s2YnJTdHpGUFliUWFzcXRMTzAycWJvZjkrVEJONEdWSVkrL3VjdFd3MmZkcE9wejhheW5sbTFMS0gwb3BMMHNwUDd6alo1NE5zQjRmRDdDTUxxZDArOHh3QkFBQWdOMGo3TUtvdFRlZ3ZXblpyeWZ0TkZFQUFHek9VT2RqWSs2VytOWEF5enVLYVZMNzluR1MvM3ZBNWIxTXR5R0pybjN5bm4vL0tza3l5V2twWlZGSytYMHA1VStsbEt0TWNiYllrV09KYVl3QUFBQ0FkeEoyWWV6Y2dPN2ZwSzB6QUFDYlBTZnIyMEdHNlI1elhZK0dXbEE3bmVmTWJqZUl2OHV3SWFzeGQzZTUyTm5saHlSL1N2TDdKTiswVXhNdFN5bXI2eTZnbERKVTJLZnY3aTZ2Mmo5ZG1CcUdBQUFBc0h1RVhSaXRkdnFpbVVvTTRyRFdlcWdNQU1DSXpnVVBhcTM3Tk1YTUVDR1VNWGQxT1Y3bkFmOFY5NjFwa250RzJhRCtQc01GclU3VGRIZ1pxNE1rZjBqeXUxTEs3MG9wTDBvcDM1ZFNmdXh3R1lzQjF1TS9EN0NNRngyTyt3UERFQUFBQUhhTHNBdWoxRTZyWS9xaVlUMDBuUkVBTUpKendYbVNwOW12RG45RHJPc25JMTcvSWJ0eDZHbzR2SS9TZEhnWnl2OFljUzErWFVwNVdVcjVvY2RsUEJ0Z1BUNGVZQmxkVG1Ya1doY0FBQUIyakxBTFkzVXZia1lOYlpya2pqSUFBSnRVYTcyVFBadktzdFk2Vk1lTHNYWTJXSlpTRmdQVmVoN2RJemZsaXpTaGx5SDhkc1IxR0dML0cySXFveUdPSi85N3krb09BQUFBREVqWWhkRnAyNG9MWFd6R3ZiYitBQUNiT0E4OHluNTI5OXYzS1l5K0dtai8wajF5OC81K29PVzhTdkxOU0d0d01FQkh6ZE9CMXVXakxWcVB2ekQ4QUFBQVlMY0l1ekJHOTVSQS9RR0EvVkZybmRSYW55ZVo3MmtKOWozc2NqTFFjdTVFOThoTk94aHdYL3lmSTY5RGIwb3B5eVNyQWRhajc3RExxejA1QmdJQUFBRFhJT3pDcUxSZFJlWXFzVkZ6M1YwQWdBSFAvdzZTUE0xK1A0Z2NJdXp5eVVqWC9iUjlNTi8zZmpaSjhxVVJOd3BmRExTY2I5SnRXS0pMc3lIRzFnREw2UHU0L2NKd0FRQUFBTjVHMklXeDBWWEVkZ0FBOWtTdGRSWkJsMlNZYmlNZmozVGRIdyswSEYxZHhtUEk3aTVqbmNyb3N3R1dNVVRZNVQ4TnNJeVhIWDNPek5BREFBQ0EzU0xzd21qbzZqSXF1cnNBQUgyZis4M1RCRjBtZTE2SFh3NndtSTh6VFBlWTZ6Z1pvTWE2dW96UFVOMWR2aDNwK2c4Ujl2bmpRTWVXdnIwMFhBQUFBSUEzRVhaaFRPWktZSHNBQUx1djF2b3d5WkZLSkVtR0NMdDhOTkoxSDJRS28vYThWbGVYY1JtcXU4dFlPN3RNQm5pNVlJak9Ma01jV3pxYmlxcnRKZ1lBQUFEc0NHRVh4dVFMSlJnVmI3OENBSjJxdFU1cXJVL1NUQ2xEWTUrbk1GbzRyOTFyZnp2QU1sNWxtTkRIZGZRZDl0bVZzTXUvR1NvQUFBREFtd2k3TUFxMTFzTWtVNVVZbFVrN3ZRQUFRQmZuZTVNMDB4WWRxc2JQZkREQU1qNFo2YnAvN1RwanIvMG13MHl2dFpkVEdaVlNWa2xXQTZ6SFIxdTB6emtXQUFBQXdBNFJkbUVzUGxjQzJ3VUEyRTIxMW9NazMyV1lhVXUyelJBUCswZjVNTHFVc25BK3UvZCtNOEF5eHRyWjVaTWRXZmVQdG1nZHBvWWNBQUFBN0E1aEY4YkNHNzRqM1M3dFc5Z0FBTmZTZG9wN21tR202OWxHUTNSMkdXUFlaVEhBdmpkSk1yZUxqZG9RVXhtTk5ld3lIV0FaT3JzQUFBQUFPMHZZaFkxclc0dDcrREZlZ2tnQXdIWFA4KzRrT1hLdTkwNTlkM1laYXplZFo4NWpTZkp4aGdsTGpESHdNc1RZSEdJS3A3NjMzOHNPUCtzVFF3NEFBQUIyaDdBTFkvQ1pFdGcrQU1CdXFiVWVKWG1vRXUrczBSQmRYVDRjNmVvUEVUNHdoZEYyK0pzQmx2SHRTSThCMDU0WHNkcUIvYVBMc0l2Z0pRQUFBT3dRWVJmR3dCdVh0ZzhBc0NOcXJaTmE2L09ZUHVZeWhnaWlmRHpTZFI4aTdES3ppMjJGL3pyQU1sNk1kTjJuT3pET2RFc0JBQUFBTmtMWWhZMXEzMlNicXNTb1RXcXRCOG9BQUZ6aTNPNGd5Zk9NZCtxY2ZmU2ZSdmlkVnFXVVpjLzc0aXk2T0d5TElZNFhMMGU2N3E2Rmg5MStqZ2tBQUFDd1E0UmQyRFFQUXJiRFRBa0FnSGRwd3dWUDQrSHRWUXp4NEhXTW5WMTBkV0hvNjhLOTdPeFNTbG5zeVA3eGNrdjJNd0FBQUdCQXdpNXMybWRLWURzQkFOdXQxanBQRTNUeDFqeVhNVVRZeGZucmRqbllrZjN1cXY3Q3RnTUFBQUM0bmcrVWdBMXpZOHgyQWdDMldLMzFLTWxjSlp6SFhjRi9PSC9sZ2s4R1dNWXI0eE1BQUFCZ2QranN3cWE1dWJjZHBrb0FBSnhYYTUzVVdwOUUwR1VkKzlvSlo5SHp2am1OTGtQYlpvanB0djdOZU50YUx3d1JBQUFBNENKaEZ6YW0xanFKbTlEYnRMMW1xZ0FBdE9jRjB6VFRGaDJxeHFoOXVLZnJMVkMvbmZ0cTMvdXJ6aTdiZTZ6NTN4Mysvbko4QUFBQWdCMGg3TUltdWNtMFhRU1RBSUN6QjRYUG5jdHRoWS9IK0tWS0tRdlhHV3hnZngxamQ1Q0piYWZtQUFBQXdQVUl1N0JKYmpKdEZ3OE5BR0RQMVZybmFUcTZPSTlqekg2dEJGdnBZeVhveFVvSkFBQUFnRjBrN01JbUNVOEFBR3lKV3V2OUpFY1JkT25TUHRaeU9jQXlwbmF0cmRUM1ZEZ3Y5clN1MzlxMUFBQUFnRjBrN0FKYzFpZEtBQUQ3cWRaNmxPU2VTdENCNVFETEVNamFUdis1NTg5L05kTGpxNWRBQUFBQUFLN2hBeVVBTHNsREF3RFlNN1hXU1pwcGl6eU0zVTRIMXBzdDhwSHJMTjdpbFJJQUFBQUFGK25zd2licEZBSUFNRkp0dDRIbkVSd0FZTE5lS0FFQUFBQndrYkFMbStRTk5nQ0FFYXExenRKMGRKbXFCckJEWGlvQkFBQUF3RzRRZGdFQUFINVNhNTJuQ2JvSUp0T0hsUkt3UWNJdUFBQUFBRHZpQXlVQUFBQ1NwTlo2bEdTdUV2VG9XeVZnZzM2ZjhRV3VCTUFBQUFBQXJrSFlCUUFBOWx5dGRaTGtTWktaYWd5bmxMTG9lYnZhbnZCei8xQktXU29EQUFBQXdQWXpqUkdiNUEwMkFJQU5xN1ZPMDB4Yk5GTU5CdkNKRWdBQUFBQUE2eEoyWVpPME1BY0EyS0JhNjBHUzUwa09WSU9CVEpTQURmcEJDUUFBQUFCMmc3QUxjRmxMSlFDQTNWRnJuYWNKdWdnZkFQdEMyQVVBQUFCZ1J3aTdBSmYxUnlVQWdOMVFhNzJmNUVnbGR0N0tlZ003UVBjeEFBQUE0TThJdTdCSkN5VUFBQmhPclhWU2F6MUtjazgxOXNLcDlXYUxtT1lXQUFBQWdFdjdRQW5ZSUc5Y2JwZUZFZ0RBOXFxMVRwSThqVGZrMlN6N0g1djBveElBQUFBQTdBYWRYZGlZVW9vM0xyZUxjQklBYktsYTYwR1M1eEUwWVBNbUF5emptVEp2cFJjRFhJTysyc082Zm1iWEFnQUFBSGFSc0F1YnRsU0M3U0NjQkFEYnFkWjZtS2FqeTFRMUdNaysyWGZnUlVoN083MVNBdHNPQUFBQTRMS0VYZGcwQVlydHNGQUNBTmcrdGRaNWtpY1pwcHNHSTFOS0dlczVYTjhkaGx4anVEWjhFNEdNL3J6WW91KzZ0TGtBQUFCZ053aTdzR25mS3NGVzhNQUFBTFpNcmZVb3laRktNRUo5aDYrY3UyNmZsd01zNDBmamJXdjlkVmNmVkVwWkdtNEFBQUN3RzRSZDJMU0ZFbXlGWjBvQUFOdWgxanFwdFQ1Tk1sY05NczRwZlhydDdGSktXVVgzaG0welJFQnBYenU3SE96QU9ueG9pQUFBQUFBWENidXdVU051cmM3UDJVNEFzQVZxcmRNa1Q1UE1WSVBXR0x1Yy9OcjVLeGY4MndETCtFR1plMkY2S0FBQUFHQWpoRjBZZzRVU2pOcHArM1lzQURCaXRkYURKTSt6RzIveHM5dUcyRWRObDdwbDF4d0RMR1B2UWhsdEFMSnZMK3krQUFBQXdDWUl1ekFHWHl2QnFDMlVBQURHcmRZNlR4TjBtYWdHRjR4eE9zb2h3aTRuTnYzV2VKVmhBaFA3MklGa3VpUHI4YkZyV3dBQUFPQWlZUmZHd0kzb2NYdXNCQUF3WHJYV2gwbU9WSUl0MjI5N0RieVVVcFpKbGlxOUZiNFpZQmsvbEZKK1ZPcGV2QnhnR1I4cU13QUFBSENSc0FzYjE5NklQbFdKVVZxV1Vtd2JBQmloV3V1azFucVU1STVxOEE2TGtYNHYzVjA0TThTVVU2LzJ0TGF6QVpieHYrekNBQUFBd0NZSXV6QVd1b2ZZTGdEQUpkVmFKMG1lSnBtckJ1K3hHdW4zK3N5NUxLMGhPcnU4VXVhdDlYR0huK1ZGRGdBQUFOZ2h3aTZNaGJjdXgrbFlDUUJnWE5ycFg3N0xNSjB4MkhJajd0STNHMmpkbC9hQ1VmdHRoZ21pclBhMHZrT0V5dm8reG5RNWhkRi9HSElBQUFDd080UmRHSVYyS2lPQmwzRlp0TnNGQUJpSld1dGhtbzR1RTlYZ0NzWVllSm5XV3FjRExNYzF4cmo5eTBEWG0vc2FkdG1GM3hVZkdpWUFBQURBbXdpN01DWmZLWUh0QVFDOFdhMzFUcEluRVhUaDZwWWovVjR6NTdSNzdXV0dtY0pvdGNjMUhxSUQySXVlUDcvTGFZd1doaDBBQUFEc0RtRVhScU9Vc29nMjQyT3hMS1Y0Q3hZQVJxTFdlcFRrb1Vwd1RkK085SHYxUHNWSzI2bHdZUmNZcGY4NTBISyszOVBmRzlPQkZ2WEtyZ3dBQUFCc2dyQUxZL05BQ1d3SEFLQlJhNTNVV3A4bW1hc0dhMWlNOUhzZE9yZmRhLzg4MEhMMnRiUExkSUJsdkJoZ0daOTArRmxMd3c0QUFBQjJoN0FMbzFKS09ZNGJVSnUyYkxjREFMQkJ0ZGFESkU4enpGUXY3TGJUa1g2dlNidWY5MzJOc1hDTk1UcS96VEFkUVg0b3BleHI1NUVoZm5kc1ZXM2JUazhBQUFEQWpoQjJZWXk4ZWJsWmQ1VUFBRGJyWE5EbFFEVllWeWxsbGZHR1BiNXdqYkdYSGcrMG5PLzN1TWEvSG1BWlEweVIxdFh2d1pWaEJ3QUFBTHRGMklYUmFidUtMRlJpSXhhbGxCTmxBSUROcWJYT2t6eFBNbEVOdWp6UEcrbjNHbVFxSXgwa1IrVzNTVjRPdEt5WGUxem5BL1g5bVZORER3QUFBSGFMc0F0ajVjM0x6ZERWQlFBMnFOYjZNTW1SU3RDRGIwZjZ2YVpEVEdYVXVtMDMyTGhYR2E2cnl6NVBZWlRzUnRpbHkzWFEyUVVBQUFCMmpMQUxvMVJLV1NRNVZvbEJQU3FsZU5zTkFEYWcxanFwdFI0bHVhTWE5R1F4NHUvMjVZRFhHQXU3d2tiOWp3elhEV1J2cHpDcXRjNEdXdFNMbmovL3d3NC82MXZERHdBQUFIYUxzQXRqZGpmZXZocktNcnJwQU1CRzFGb25TWjRtbWFzR2ZXbER6V005dHo1c3g4RlExeGhzeHNzay96emc4djYweDdVZXFxdEwzNTF6UHU3d3M5eGJBQUFBZ0IwajdNSm9sVkpXMFdwOEtMZmJlZ01BQTJxbmIva3V3enlZaE1WSXY5Y2t5ZUZBMXhpbkVmTGVsSDlLLytHSU02dFN5Zzk3WE90UEJsakdFQjE2L3JyRHo5TEZGQUFBQUhhTXNBdWpWa281aWVtTSt2YWdiZWtPQUF5bzFqcFAwOUZsb2hvTTVObUl2OXVYQXk3clVack9oZ3pubS9iUFVGN3VlYjJIQ0ZBT01TM1FSeDErbGpFUEFBQUFPMGJZaFcxd045N0M2c3VpbEhKZkdRQmdXTFhXTzBtT0l1akNzRTVHL04wT2FxMnpJUmJVZGpTOFpYY1l6S3NrL3pqZzhuNG9wZXh0MktXZEVteUlzTXVMQVpieGNZZmpmbWtvQWdBQXdHNFJkbUgwemsxblpKcWRicm5KRHdBYlVHczlTdkpRSmRqQWVmVXk0KzV1OE1XQXRUQ2QwWEQrSWNOTlg1VG82akliYURsOWgxMCs3dkN6Rm9ZaEFBQUE3QjVoRjdaQ2V6UDZ0a3AwWnBYa1poc2tBZ0FHVUd1ZDFGcWZKNW1yQmhzMDV1NHU4MXJyZE1CcmpQdnhFTHh2anpOc2w4NGZrL3hwejJ2KzJRRExlSlgrUTBXbU1BSUFBQURlU2RpRnJWRktPWW5BUzFkdXR3RWlBR0FBdGRhREpFOHp6TlFTOEM1ZmovejczUnQ0ZWJmaVFYaGZUcE1jRDd6TVA1VlNmdHp6dXM4R1dNWldUV0dVNUkrR0l3QUFBT3dlWVJlMlNpbmxPTVBmTU4wMXQ5dmdFQUF3Z0ZyckxJSXVqT2Q4ZXBGeFR3ODZkSGVYczZrOWRUenMxb3MwMHhjTmFlKzd1dFJhSndQOXJ2bDJnR1Y4MHVGbmVkRURBQUFBZHBDd0MxdW5sSEk3QWkvWGRic05EQUVBQTZpMXp0TUVYU2Fxd1lpTVBmZzhhSGNYVTZaMjdsV1NmMnovSHBLdUxzTjBkVW1HNmV6UzVUUkd3aTRBQUFDd2c0UmQyRW9DTDljaTZBSUFBNnExUGt4eXBCS00wTmluTWhxMHUwdDdmV0hLMUc2OFNuSTN3NFFoenR2N3JpNnR6d1phVHQvaGtRL1RZZGlsbExLMGF3QUFBTUR1RVhaaGF3bThYSW1nQ3dBTXBOWTZxYlUrU1hKSE5SanBlZlJKK3N4YnZnQUFJQUJKUkVGVXhqOXR6OE1OMU9VNEFpL3IyRlRRSmRIVjVjemhBTXQ0a2Y2NzluUTVGZFBDYmdFQUFBQzdTZGlGcmRZR1h1NnF4RnV0a3R3VWRBR0FZZFJhSjJtbUxUcFVEVVp1N09lSGg3WFdnNkVYS3ZCeWJac011dndRWFYzU2RrT2FEckNvSWFZRStuakx2aThBQUFDd0FjSXViTDFTeXFNME42UlhxdkV6eXpSQmw0VlNBRUQvMmdmejM2WGJOOUtoTDQrMzREeDJJdytwQlY2dWJKTkJseVI1b2F0TGt1RkNsdDhPc0l4UHR1ejdBZ0FBQUJzZzdNSk9hRzlJMzB4elk1emtKTW1ubTNwQUFBRDdwdFk2VDlQUlphSWFiTW41OCtrSXo1MVhTZTZXVW01c09yQjlMdkFpVVA5dW13NjZyRW9wMzlzTVNaSXZCbHFPemk0QUFBREFLQWk3c0RQYUcvYWZwZ2w2N0xPN3BaUmJwUlEzNWdGZ0FMWFdPMG1PSXVqQzl2bHFSTi9sVVpJYmJkZkdzVnhmSEtjSjFEdXZmck1YU2Y3UGJDN29raVIvc0JsK21rTHZZS0J0L3FyblpYeWM1TU9PN3hNQUFBQUFPMGpZaFoxU1NsbVZVbTVsUDkvQ1BFM1R6ZVdSUFFFQWhsRnJQVXJ5VUNYWVVzY2orQTZMOWh6MjdoakQydTJEOGh2UkhlS2kzNmJwNlBKcWc5OWhXVXI1d2FaSU10d1VSdjlma3QrbENSbDluNlNQNmFPNkRPMHM3Qm9BQUFDd3U0UmQyRW50VzVqNzB1VmxsZVJCS2NXMFJRQXdrRnJycE5iNlBNbGNOZGppYytaVk5oZDRXU2E1VlVxNU9mWnoyRFpRLzJtYTdqUDc3bFdTZjJ6L2JETG84cXFVc3JRNWZ2TDVRTXQ1VmtyNW9aVHlzcFR5KzFMS04wbit0UjNQWFlYVi9yckQ3K3Y2R0FBQUFIWllVUUoyWGEzMU1NMGIxOU1kWEwyVE5OTVdMVzFwQUJqczNPSWd5Wk1kUGJjWW0wVXA1YVl5OUw0L1B4OXdrYXNrWDVWUzdtOXB2V1pwcGkzYngvSC9Jc2svSkhrNWd1L3lyNldVVjBid1QxTVkvZnNReXlxbGxFdDhuNzlNTTYzZkpOZWJqdWovU2ZKUlIxLzVWaW5seEY0Q0FBQUF1MGxuRjNaZUtlV2tsSElqVFp2dFhabmFhSkhrWmlubGxxQUxBQXluZmREOU5JSXU3TTY1OG1tR20rcmpPTTJVUmZlM3VGNkxOQjBrOTZuTHk2c2tqNVA4WHhsSDBPV0ZvTXZQRERXRjBja2x4OGozcFpRWHBaUi9UZkpObWltUFhpYTV6SlJUSDZXN29FdWlzd3NBQUFEc05HRVg5a1lwNVZHU0cwa2VaSHRETDRzMElaZWI3WTEyQUdBZ3RkWjVtcURMUkRYWU1ZOEhPb2U5dlF0QjdYWmFvN3RKYm1iM0g2Wi9reWJrY2p5UzcvTjlLZVZQaHV6UGZEblFjcjYreGxqNXNaM3k2QStsbE44bCtWMmFEa0hmSi9ueERUOXkwT0gzWFhveEJBQUFBSGFiYVl6WVcrMERxeS9UN1EyMXZoeW5hZmZ1elRRQTJOeTV3OU1rTTVVWWxHbU1odHUvdjB2M0hZdVdTUjZVVW81M3RHWWZKUGsvMG5UVytDTGRkcVRZdEJkSi9pbmpDdlA4a0diNm9oK04ySi8yd1dtUzd3WmEzSTJ1d3lQdEZFem4vL3ozSkgvVDFUVjBLZVcydlFRQUFBQjIxd2RLd0w1cWI3b2YxMW9QMG9SZURqT3VON1ZQazN5VjVLU1VzckxGQUFEbzBZTWtSeDEvM3FNZFA0LzlxeVMvVFBMYk5CMVEvaTdKMzJhN1F5OHYwM1Q2K2UwSXY5dnZCVjMrekh5b2E5TSt1cVMweDRkVjhsTjRyTXNYVVo3WlBRQUFBR0MzNmV3QzU5UmFENU44bGliNE10M0FWMWlrYVE5OW91VXlBSXp1UEVGbmx3MmNHK25zTXRqK1BVblRJV0xkOFBkSmtydTdmaTViYS8xbG1xNHViM3FCNURmWnZrNHZwMmxDTG1QdEpQbUhVc3BMSS9YUDlzTStPaks5eWQxMld1QSsxK1VneWZNT1AvSlRuVkVCQUFCZ3QrbnNBdWVVVWs3UzNxQnZXMExQMG9SZkR0TDlkRWVyTkRlVG42VjVrTE93QlFBQTJOQjU4S3JXK2xXU2U5ZjhpTk0wRDhUMzVaeDIrbzdyNmQrMmZ3N1NkSHI1elVqWDRWWDdQZjlIbW80dVkvVW5RWmMvMTc2b01SMW9jU2NETEdQVzViVzJvQXNBQUFEc1BwMWQ0QXJhdDgwbWVYMGo3cE5jN3UzWDB5VC9rV1RaL2prMU5SRUFiTjE1Z000dXc5UFpaZGg5L0RyZFhWWnBRaTdIZTFhbnF3VGhQMHp5TjBuK2EvdjNKcjFLTStYU3Y3Ui9qOTNMVXNvZmpNNDM3b2RQMG5RazdkdHBLZVhUTGZzZGUxeEt1VzB2QVFBQWdOMm1zd3Rjd2JtM3d4YXFBUURBanAzclhyVzd5Nk1rRC9Zd3hQM3hGZi83c3c0cXYyMy8vOStrQ2MwZlhPT3pydU0weWJkcHdpMHZ0cWpPcjdicyt3Nm03VUo2T05EaUhnK3dQdWRmS09uQ00zc0pBQUFBN0Q1aEZ3QUFBSklrcFpUN3RkWXY4dTdwVVJaSmJwZFNsdnRXbjFyclIyazZ0YXpqbS95OHE4cFo2T1UvdDM5LzFQNjVxaGRwQWlMZnBwbVc2RVcyTnl6eUtrMUhrUitOeWplYUQ3aXNJYVl3NmpxNHM3Q0xBQUFBd080VGRnRUFBT0M4QjBtTzN2RFBsMmxDTG90OUxFcXQ5WVAwMDRubHRQM3pKdStiTG1rWHU1OEl1cnpmbHdNdDUzU2dVTnRuSFg3V2NoK0RlQUFBQUxDUGhGMEFBQUQ0U1NubHVOWjZMNis3dTZ5U2ZGVkt1Yi9ucGZtckRWeERuKzVaalFWZDNxUFdPazh5R1doeGp3ZGFUcGVkWFU3c0pRQUFBTEFmZnFFRUFBQUFYSEM3L2ZzNHlZMTlEN3JVV24rWmQwL3R4UG9FWFM3bnl3R1hkVHpBMkRwTXQrR2RaM1lSQUFBQTJBODZ1d0FBQVBBenBaUkZyZldHNlVCKzhyRVM5RXJRNVJKcXJiTzhmMnFycnB5VVVsWURMT2Z6am85ZE9yc0FBQURBbmhCMkFRQUE0TThJdWpScXJaTWtmNmtTdlZrbCtiMmd5NlhjRzNCWnBqQUNBQUFBUmszWUJRQUFBTjd1dnloQmIxNldVdjZnRE8vWGRuV1pEYlM0NVJBZFVucVl3dWhyZXdvQUFBRHNEMkVYQUFBQWVJTmE2MThsK2FWSzlPSkZLZVZQeW5CcFh3NjRyS0c2dW56ZThlY3Q3Q1lBQUFDd1A0UmRBQUFBNElKYTZ3ZEpwaXJSdVIvVFRGdTBVb3BMNzR2VGREdmR6L3NjRDdTY0x0ZnAxTlJyQUFBQXNGK0VYUUFBQU9EUFRWMHpkKzVWbXFETEQwcHhKUThIWE5iSkVLR1JIcVl3ZW13M0FRQUFnUDNpeGgwQUFBQ2NVMnY5WlpLL1VvbE8vYW1VOGtJWnJyd3Z6akpzVjVldkJscE8xMU1ZbmRoYkFBQUFZTDhJdXdBQUFNRFAvUmNsNk13UFNmNWcycUpydXpmZ3NwYWxsRVhmQzZtMVRwTE1PL3hJVXhnQkFBREFIaEoyQVFBQWdGYXQ5Uy9UN2ZRcSsreGxraGVsbEIrVjRscjc0aXpKYk1CRlBoaG9PVjEzcWpHRkVRQUFBT3doWVJjQUFBQjQ3V01sV0p0dUx0MFlzcXZMS3NOTkJmUmx4NTluQ2lNQUFBRFlROEl1QUFBQWtLVFdPazN5UzVWWXl6TEpuM1J6V1h0Zm5HZllyaTVmRFJGT2FzZllRWWNmYVFvakFBQUEyRlBDTGdBQUFOQll0WDlNWTNSMTM2ZVpzdWdIcFZoUHJYV1NZYnU2Sk1tamdaYlRkVmNYVXhnQkFBREFuaEoyQVFBQWdDUnRaNHZUV3V0SFNhYlI1ZVV5VmttV3BpenExTkJocStNQnQ5Kzg0ODh6aFJFQUFBRHNxVjhvQVFBQUFMeFdTbmxaU3ZsZGtqOGswYW5relZacHBwQTVGWFRwZlA5Ykp2azB5WU8yem4xN01NUjZ0Vk16ZFJua1daakNDQUFBQVBhWHNBc0FBQUM4d1lYUXl5c1ZTU0xrTXRTK3R5cWwzRThUZXVtemU4bnhnSUdSTHpyK1BGTVlBUUFBd0I0clNnQUFBTzlYYTMyYVpLWVNnMXFVVW00cUF5TTZEa3lTZk5UKzJTYy9KdmsrelhSRk90MXNadCtiSlhtWTVLRGpqNzR4Uk5pbDFqcE44bDJISDdscXY3dkFGUUFBQU95cEQ1UUFBQUFBM3E5OXNMNnF0Uzd6T3ZUeXl4MWU1VmRKL3BUaysxTEtqL2FBamU1N2l5U2Z0bE1CUFV3MzB3RU4yZFhsWHNlZmR5TG9BZ0FBQVB0Tlp4Y0FBTGdFblYwMlFtY1h0dUhZOEdHYTBNdGZaamVDTHo4a2VabmtwUzR1bzkzbkprbnVaUDBBeVZCZFhTWnB1cnBNT3Z6WW0yMEFDQUFBQU5oVE9yc0FBQURBTlpWU1hpVjVrZVRGdWVETEpNbUhXN1FhcXpUVEZIMHY0TElWKzl3cXlmMWE2M0dTbzF3dmlEbGtWNWM3NlRib3NoUjBBUUFBQUlSZEFBQUFvQVBuZ2krcHRmNHl6UVArcytETG1NSXZxelJURksyU3JFeFJ0TFg3MnpMSnpWcnJMRTNvWlhxRkgzOHc0RmY5b3VQUCs4cldCd0FBQUlSZEFBQUFvR050aDVTWDdaL1VXajlJRTNpWnBKbnU2Q3dNMDdkVm1xbUpYaVY1MVhZRlliZjJ0VVdTRzdYV3M2bU4zcmRmUFJpcXEwdXRkWjZyaFhBdTQ5aFdCd0FBQUlvU0FBREErOVZhbitaNlUwVndmWXRTeWsxbFlNZVBMV2ZCbDdNd1RQSTZESE5acjVLY2RXYzVDN084MHJGbEwvZW5TWktIU2VaditVOVdTVzRNRlhxcXRYNlhic011eDZXVTI3WTBBQUFBb0xNTEFBQUFiRWpiQWVhSDl2OStyeUtzdVQrdGt0eXV0WDZWSnZReXUvQ2ZmRFZnMEdXVzdydTZQTGFWQVFBQWdDVDVoUklBQUFBQTdJNVN5bW5iR2V0V2ttWDdqNWVsbFBzRGZvMTdIWC9lYVR0bEV3QUFBSURPTGdBQUFBQzdxSlJ5a3VTazFuby95ZWxReTIyN3VzdzYvdGl2YkZFQUFBRGdqTEFMQUFBQXdBNGJ1S05MMG4xWGwxVXA1ZGlXQkFBQUFNNll4Z2dBQUFDQVR1anFBZ0FBQUF4QjJBVUFBQUNBcnR6cjRUTWZLU3NBQUFCd25yQUxBQUFBQUd2cnFhdkxjU2xscGJvQUFBREFlUjhvQVFCY1hYc2ovOHhCa3NtRi8rU3pqaGU1VFBMSEMvOXNjZjdmbDFLV3Rnd0FBQnZVUjFlWEI4b0tBQUFBWENUc0FnRG4xRnFuU2M3LytZczBZWmFrKzdkVTEzWHZ3bmMvKzUrblNWYnRuMi9idjArVHJFb3BwN1l5QUFBOW5FZlAwazlYbDZYcUFnQUFBQmNKdXdDd2QycXRrelFCbG9Na3YyNy9uclovZHNIQnVmOTllR0hkazlmaGwyV2FiakdMNkF3REFNQjYrdWpxOGxoWkFRQUFnRGNSZGdGZ3A5VmF6MEl0bitSMXdHV3k1MldaNU9kdjNkNXJhNVcwd1pjMEhXRk9TeWtMZXhFQUFPODU1NTZuKzY0dUMrZWlBQUFBd05zSXV3Q3dNOW9waUdaNUhXeVpxY3FWelM3VU5HbTZ3SndtZVpZbUFHTXFKQUFBenV1anE4c0RaUVVBQUFEZVJ0Z0ZnSzNWZG0yWkpmbXMvWHVpS3IwNDY0Z3piK3UrU3RNQjVsbWFOMjZGWHdBQTl2ZWMvSDY2bnc1VVZ4Y0FBQURnbllSZEFOZ2E1enEzZkI3aGxrMmFKRGxzLzV5RlgwN3lPdnl5VkNJQWdMMDRQNThrK2JLSGo5YlZCWUJOLzQ2YnBnbHp6dEpNOTd3VXhBUUFHQmRoRjhaOFFYRVFEN0tIdE5LZGdaRWVDMlpwd2kySDZmNk5VYm94U2RQMVpkNXVzOU0wblY4ZU82NEFNTEx6aWttYWJtVU1aeWtJdTlQdTlYRGR2ckd1TGgwY0kwNUxLU3U3QmNCV255OGV0ci9mRHQ3dzc4NWU5cm5yZU04ZWo1SFpkWDlXWUF5QXJoVWxZTVFuVFUvVEpPY1p4cUtVY2xNWkdNbjRQOHpyZ0l2UTIzWmJwdTM2VWtvNVVZNjlHY1AzMDl3Y0JEYnZRU25sdmpMOGRIeWFKWG1xRXZaQk9obFBCMG1lOS9EUk56Y1lkbG4zR0hIVFF4eUFyZjI5TmtseWxMYUw3WHVza3R4Mm40TTlIU3YxdWo5YlN2Rk1Fb0JPL1VJSkFCakpoZEpocmZWSmU4SDBKRTJYRUVHWDdUZE5jaWZKazFycnY5ZGFIN1lQUmdBQTJHNFBlL2pNaGJBSWw3aDJuS29DR1BjOWVKTExCVjJTNW43VmsvWmxMUUFBTmtUWUJZQ05xYlhPYXExSHRkWi96OVZ1S3JDZEptbUNMODlycmQvVld1KzdVUTBBc0pYbjhZZnBweFByWGRYbFBmdmUvVFNkRjREOStwM3p2T2RsM0wvbTc3VWo5elVBQURaSDJBV0FRZFZhcDIzSTRiczBMY0xuMGNGbEgwM1RUSFB6WGEzMWFhMTFyaVFBQUZ0eFBqOUpQMTFkamtzcHB5ck0yL2E3V3V0UlRKVUoremIyNzZSNU9XclM0ekltU2I2ODVvOVBISmNBQURaSDJBV0FRWnhOVTVUa3UvWkd3RlJWYU0zU3ZBMzE3N3E5QUFDTVhsL244ZytVbHJkY1MwN3kra1VKWUgvRy9sSDZDVmRlTk05NllScGRpZ0VBTmtUWUJZRGV0Ry9mblhWeE1VMFI3M1AyUnRSMzdmUldNeVVCQUJqVitmMUJtbWtwdS9hb2xMSlVZZDZ5enoxUGNxQWFzRGZqZmxKckhUTGc5dG1hUHo5eC93SUFZRE9FWFFEb1hEdFYwVkYwY2VINjVrbWV0bE1jQ1VrQkFJekRVUStmdVlxdUxyejV1dkl3VFVjWDE1T3dQK1Arb0IzM3N3RVgyOFVVU1FKNUFBQWJJT3dDUUdkcXJiTnpJWmQ1ZXB4VG1iMHhTL0trMXZwZHJYV3VIQUFBR3p2WHY1TitIdVo5VlVwWnFUQnYyTitldUthRXZScjNzelJCbDIwTWpqaFdBUUJzZ0xBTEFHdHJReTVQWXg1MStqTk5jaVQwQWdDd2tmUDlhWnFPalYxYmxsTHVxekFYOXJlakpBOVZBdlpxM00vVDNGUGExdERJcWEwSUFEQThZUmNBcnUxQ3lHV21JZ3hnbXRlaEYvc2NBTUF3anRMUEE4aTdTc3U1Njh0SmUzMDVWdzNZcTdIL01QMU1rM2RacHlQNURBQUFya2pZQllBcnE3Vk9oVnpZc0dtU3A3WFdwMEl2QUFDOW52dmY2ZW1jZjFGS09WRmgydjNzd1BVbDdOMjRuOVJhbnlTNXMrR3Y4dldhUDM5YVNsbmFvZ0FBd3hOMkFlRFMycERMVVpMdjRpWWs0ekJMRTNvNWF0dnJBd0RRNGZsLytwbStLRWx1cXpEdGZuWVdkRGxRRGRpYmNUOXB4LzNocHI5TEtXV1JaTEhHUnp5d1JRRUFOa1BZQllEM2F0KzJ1Wi9rZWJTVVpwem1TWjYzK3lrQUFOM29hL3FpQjk2Q3A3M1duTGZYbVJQVmdMMFo5d2RwWHFJYVU4RHRicExWTlg3dVdKY3lBSURORVhZQjRKMXFyWWRwYmo3ZWl4dVFqTnNreWIxYTYzZW1OZ0lBV1BzNjRINzY2ZWE0VFBKSWhhbTFQa3dUcUFMMlo5elAwM1IwR2RYOXBWTEthYTRlZUZtMFB3TUF3SVlJdXdEd1J1MlVSVStUUEVreVZSRzJ5RFN2cHpZUzBBSUF1UHExd0VINm03N29iaWxscGNwN3Y0L05rdHhSQ2RnN2ZYVU1XMXNwNVRqSnpieC9TcU5WbWc1bE4vMCtBd0RZckErVUFJQ0wycmM0djR4T0xteTNlWkxEV3V0dGJZVUJBQzU5TFRCSmY5MDJUcHlYQVRCV2JZZVhtMjBnNy9QOGZLcWxWWkpuYWFZdUVuSUJBQmdCWVJjQWZ0Syt3WG1VY2MyYkRPdVlKSGxTYXoxSmN0c05LUUNBOTNyWTAvWEFLcVo3QUdBTGxGSVdlWCtIRndBQU5zdzBSZ0FrK2FtYnkvTUl1ckNiRHBNOGI5L09BZ0RnemRjRWgybTY0L1hoUVNsbHFjb0FBQUJBRjRSZEFQWmNyZldnMXZvOHlUM1ZZTWROa3p4dGcxMEFBUHo4dW1DYS9xWXZXcFJTSHFreUFBQUEwQlZoRjRBOVZtdWRKM2thM1Z6WUwvZHFyYy9iQnpvQUFEU2VwSmtDc2crbUx3SUFBQUE2OVlFU0FPeWZXdXNrelZ1Ymg2ckJuanBJTTYzUnJYWXViZ0NBZmI0K09FcC9BZmdIcFpSVFZkN0lOZCtzM2E2ZjVNK0RUTXNrZjB4eW11VFVGRk9kMXY2Z3JmczB5YS9idnk4NlRmSWZ1MWIvZHI4N2Z5eFpqVzM4dDl0bjFtNmJOeDMzbmlWWnRkdGxzUVUxbjdicmNaRGtMOTV4TEQrL3p5MGRsM2ZxZUhPMkQ3enRlSE4ydkYrMisvWHBqdFZnZG01TVgxei9WWkp2dDJuZEwvd09lZGVZZnRiK3ZXakh0Ti9qQU93bFlSZUEvYndRZnZLV0MyRFlKNU0wMHhyZDFWWWZBTmpqNjRONWtubFBIMzlhU3JtdnlwZmFCdGU1UGx1V1VvNHZmTlpoa2k5eXhSY2JhcTNMSkNkSnZ1cmlnZGtsMXVuWGEzejg5QnBUa3g3MytTQ3dyZnZuYmQwdjB5RnA5b2I2TDVJOEhpSmdzY2JVcm0vYjU5NjY3clhXdE92MmRic2RWcGY4anRNMWprMC8yOTduUHV1TFM0eTEyWVh2ZnBMazY0dnJQWUpqeG1kWDJOL2V0TSt0em0yWGs4dHVsL2Q4cjluRjVXeDR2MTFjZGp5dGNSenUvZmh5NFh0TzJ1MytlVnZyeVRVK28vTnQzL2YrY2ZGY29yMjMrZVVseDhEaGhYVS9HZXBZZTQxdGVwWGYzV2UxdkhmaDk4alhwWlFUWjFjQTdJdWlCSXhWcmZWcG54ZEl2UEVDOEtZeTdQeTRtaWQ1bVA3YWs4TzJPazV5ZDZpYlBIdHdyTG1mOW9ZTHNIRVBQR2orMmZGcGxtWUtSK3lENUtlSFJVOTd1ajVZSmZsMG05NDA3dUFZY2ZNNkQ4L1d1UC94MDNWOCs5MlAwczFMRFl0MjdDN1dxT1hZN3VuYzdQckJadnVBOGs2YUI2NWRqcUZsa3E5eWhXRElOYjU3dmU2K3NlWSt0MnJYN2RINzFtM044WGl6bExKb3Q5RzlkanQxY1V5NzFIZnZhWnROMjMxdDNzTXhlOVZlRTY4VmRodmhkZUNsejBIV1BHYmQ3RHM0Y1M3Y01lL2g0OCtDam4ydnc3WDNqMUpLT1RjT0hxYWJUdFhMZGg4NTN1QTV4eGM5YmRObGtzZDlIYS9XK0IzeTA3WUVnSzc4UWdrQTlrT3Q5V0dhRzFHQ0x2RG41bW02dkJnZkFNQytYQjlNMG5SODdPdjg1NEdXK3NOc3gvWmE3Mm02Njk0NWE4K05Iem8vZm12Tjd5ZjVMczJEMjY1ck5FM3pNUGQ1KzhMS1dPOHZYR2VmT3d1ZlBHMGYzdmY1SFdkSm5xZWJvTXY1Ny82OC9leWh4L2gzN2JyME1TYlBnbHZmcmRIMWgzNjIvN1FONGp4UGYxM1lEdHN4K1hUSWZmc2F0WmkzZGVocVN2WnBrcU4ydmFjRGI5TW43VEcwcjIwNmJZOVgzNDMxOXdnQWRFWFlCV0QzTDR3bjdZWHhIZFdBZHpwSWMrUHlRQ2tBZ0QzUTU5U21DOU5FRG1LUzVtRlpYOWQ2ZHpKQUtHSExycTluYVI2MjloRnl1V2lhMXc5aUp5T3F3VkVIKzl4WlY2bStmSkZ1QTJBWHQ4dlRJVUloUFFSMkx1TmVyZFYxOGViSDJmbVEwMnlneGM3YWZmdG9iRUhIOXJqVDF3dDhzd3dVTHF5MTNrbTNnWjNMbkNjYzFWcWZDSzhDc0t1RVhRQjIrK0w0N0FiU1REWGdVcVp4UXg4QTJQM3JoSWM5WGlPc2t0eFM1VUVjdEgvNlhvYno0L3cwQlVkZkFZcDNtYVY1TzM4TTIyQ1c3am9SOVBuZ2RUNUFMZTYxRCtENzJ0L21HOXJmalB2Tkgydk83dVZ0NnFXMWVYdk1tWTJvTEgyUDZiTlF5THpIN1hxVXpVMHRmOWE5WjJxRUFiQnJoRjBBZHYvaTJNMEp1SnBKZXhOZ3JoUUF3QTVlSjh6VDd3TzAyNldVbFVydjVQbnh3UjZQbTZNMDNWdzJ1UTJldTBZWm5Ya2ZnWmQyT3grTllOenI4TEtaMzlGanVKZTNyL2RGZWdtOHRNZUpUZGZ5ckp1eERpOEE3QlJoRjREZHZqaDJBUVBYMC90YlBRQUFHN2hPbUtYZkI2aVBTaWtuS3IyejU4ZDdPUTNDU0I1U25uR05Najd6THJmSlNJSXU1K253TXR5eDVtemJqK2s0ZTlSbkI2T1JPdXB5bngvWjc1Q3pFSlA3eFFEc0RHRVhBQmZId051NW1Rd0E3TXAxd2tHU0p6MHU0alRKQTVYZWFkTTBVekRzMDdnWjAwUEs4OWNvd2dmajhyQ0w2VUhhN1RxMllNRmtoTjlwRjQ4MTh4SFhlYjZIZ1pkT3dwMjExanNqL0IxeWtNMTJLZ09BVGdtN0FMZzRCdDVONEFVQTJQYnJoTE9IbFgwRjRsY3hmZEcrbUxjZGd2WmgzTnpQK0I1U252Rm0vcmgwRlFoNU10TDFPMmpIQS8wY2F3NHovbnQ1OHoyN0x6TE5tbE0rdGdHNHNRWkU3K3pMNzNJQWRwK3dDOER1WEJ6UEkrZ0NmUkY0QVFDMjlUcGhrbWFLMHo0N1Fkd3RwWnlxOXQ2NHR3ZmpaamJ5OVp4a3ZNR0lmVFZiNStGeEd5YVpqbmo5dmhTdzZ1VllNOFp1UG05enRHY0JpWFgzK2JGdlY5MWRBTmdKd2k0QXUzRngvRENDTHRBM2dSY0FZQnM5VEw5QmwrTlN5ckV5NzVYWkxqL3diQjl1UHRtUzdlRDZaRnp1cmJIUGZUbnlkWnRrelU0WHZORzJUVVArWkk5Q1Q5ZmU1OXZma1dQL1BUblQzUVdBWFNEc0FyRGwycHRiYmpqQU1JN2FGc01BQU50d3JYQ1VmcWRoT1UxeVY2WDMwaGM3dkc3M3NqMFBueC9xdGpFcXMzYnFrcXM2M0pKOTdndWJ1TlBmMGZmVGJ4aTFENU9NZDJxZU1lM3oyekpXdmpRU0FkaDJIeWdCd0ZaZkdNK2pvd3NNN2FqV3V0U3FId0FZK2JYQ3cvUWJkRmtsdVZWS1dhbjJYanBNY25zSHg4MDAzYjVNY3ByazYvWi9MOU5NVS9NWGFkNzQ3K0loOTFubmdmdDJ5VkdOalVkWC9Ka3VIaml2a3B3a2VkYnVhK2NkSlBrazY0ZHFwclhXV1NsbFlUTjNjcXpaMXFEQnZOYjZlRS8yZ3l2djgyMEFzWXZ6citXNU1YM3hYR3QyYmt5dmRieXF0VTZjeXdHd3pZUmRBTGIzd25nZVFSZlloRW1TcDdYV213SXZBTUNJcnhYNjd2NTR1NVN5Vk8xUk9rM3l1UDE3V1VwWnRsTVZUTk84YlQ3cjRweTQxbnBZU2puWnNkcmQ2K2h6SHFTWjRtdjVqbkU2YlpjM1gzTlpYMGJZNVRMT3dpQmZKMW1WVWhidE5wZ20rYnpkRGwxMFYva2lWd2k3dEEvR0R6clkzeDY5NDRIMW9sM1czVFJkT2RiWjV6NC8renpXUHRaMDJjMW4yVzZYaTJHbmFWNkhJcVlkZi85Tjd3ZkxDMlA2dE5aNmNHRk1kK0dxKy95NnYyTlhTZTYrWjRySXhibmZJMC9XUEliTTJqb0N3RllTZGdIWVFvSXVzSEdUTkhOVmYrb05HQUJnRDY4Vkh1eGd5R0VYbkhYYldWejhGK2YrMlhFYmZEbksrZzgrUDh2Ykg1RGR6YnNmNUI3aytsTmhYR2Y2ck5OTGpKMXAxbjg0ZXBvbUNQYmU1YlZCbU51MTFzZHBIbFplOThIM3BOWTZmOCtEMGI2ZEQxZ2xyN3ZZVE52OVpKWnVIN1JmMVhHYWg4ZXJOMnlEWlpKRnJmVkJtZ2Y0NndZRkQ2N1lLV0cyNXZJK3ZleExHTzEzdWwxcnpScjcrc0Y3NnJ4NHo4OC9YV05kYjE3eHYxK085UGQwRjhlYTgrdjQ0QkxqLzI1NzdMK1hiZ0tQc3cxMytibGJTbm4waG4zOHREME9uYlJqK3FpRDliM3F6MysyNXZhOGVka3djUnRtdmRtT3Erc0dYdDcxdXh3QVJrL1lCV0RMdEc4cENMckE1azNUM0ZENFZDa0FnSkZjSzh3SHVGWTRLYVhjViszUldTVzVjWmtIN0cxSGkwK1RQTTk2QVlTRGR5emo5RDM3NmxycjJ0TUQxblduZ3poTjg1RHlTbUg0ZG51Y1BheThidURsOHpSQmc2R2Rwbm5vL0tidHNXei9QbTYzK1dHYUxqU3pnYi9qR3grS3YyRTdyTklFQXY2WTZ3ZXh6bytOeGJyajZKTHJkcDF1bzNkei9iREY3QjAxWE9ZOUFaTjF4djRPVFpzejcraHpIcFZTN2w2eGZvdGE2NTBPOXZHazZXSzBpVzF5NnpLQjIzWi92RmxyZmJMbThmMmc1Ly8rNHJvdHJ6Z3VWbTNYcHFjRHJSOEFqTW92bEFCZ2U3UkJsNmNxQWFOeFVHc1ZQZ01BeG5DdE1FLy9RWmZUSkxkVmU1U3VGTEk0Ni9DdzVqSm5PMWJETDlmNDJWV3VFWFE1dHoydTA2M212TU4yT3B3aEhaZFNQcjFzQUtHVWNsSkt1ZG11NTFEZE1VOHVFM1M1OEQwZlpmMEgrRmQ1ZUh6ZExoQ3JxNjdiaGZGLzdYVnNPNU53ZlY5MDhCbTNyeEowZWNNKzNzWHY4dmtHamp2WDZTeDNPMnQyK1dtNzR2UXgvaThlcjA2dnVVM1hPV1laendCc05XRVhnQzNSWGtDdTA5b1k2TWU4ZlRNS0FHQlQxd3J6OUI5ME9ac2l4eFNPNDNOOG5RZGs3Y094WStYNzZlSDlkSTJQdUx2dTJHaW5JVm11OFJHSEE1WnNVVXE1ZmMzMWZKU21PK2JwQU4venVnR2lkWU1BUTl5M09kbmdkNXc2YWx6N1dIUFFRZjBlckR0dFdmdnpYUVJlaGp6dUxLL1RXYTQ5Tmo4WWNMeGNkMnc5MjlCdWFUd0RzTlZNWXdTd1BaNjZBSUhSZWxoclhWejNMUndBZ0RWOU9jQXlibDYxdFQ2RCtXcU5uLzA2YTB5cFVXdWQ3Y2pVSXVzOHNGMnQrK0Q1bk1kSjdsM3paei9MY09HbHRSNlN0OGVTdnFlRFBiN3VNYXVVc3F5MW51YjZIUnF1MHEzbGJxNzNjSHk1eHJnOWlLbEx0dkZZa3lTblhVMGxXRW81cnJWK3Z1WjNHdks0czg3dnVwTTBVemRkTjRoeWtNc0h6RzVlZDl1dU1hYTlnQVhBM2hKMkFkZ0M3VFFwYmtUQXVEMnR0ZDd3dGpNQXNBRTMwNFRqKzdwbXVDM1VPMXJMZGJaTktlV2sxcXFLMTU5S0prbE9yempGeGJ1c2N5MHhHNmhXeDFzU2ZQdTZnNS92L1Q3TWtNZld0bVB3UE5jUFZMSFpZMDJ5M25SbmIvdThkY0l1c3dGcmQ3TEdPRnZWV2hjWm9CUE5rQUhRdGl1Wk1RM0FYaE4yQVJpNXRpWDVYQ1ZnOU02bUdydXBGQURBa05xSE9IMEZYaDUwMkxXQzdwMTA4Qm1MRFB2QWNveldHVGV6a2RSdk90Qnl2dDZTYmJybzRPZTM5Z0Z5RzJ3NWFLOVREOUtFTFBaOW5JL0JPdHRnMFhXUW91MWlkSnpyMzNlYzFscW5Bd1RnVGp0WXhyY1pkdHFscnNmMHREM09uLzNwYkV6dlVKYzJBUGFRc0F2QXVDOWtEcEljcVFSc2pWbXQ5WDVYYllVQkFDNnJwOERMc2ZPYTBmdTJnODlZS3VOdVRCbFl5SVNRQUFBZ0FFbEVRVlE4MEFQTGJlanl0T3lnNCtacXhOdjViQnFpYVpKZm45dC9KOUVWT0NQZmJ1dDQzTk5YVzJzNnUzYi82L3YzeUhJa245SGJzVHV2dzJtZjVQVjBTOU9ZMGg0QTNrbllCV0M4RnpwblhTS0E3WEt2MW5xaTFUOEFNTFNPQXkrTFVzcHRWUjI5WlFlZjhjYzl2L1lXRHJqYWNXYTVEK09pbEhJNmxpbSsybzRPaDBrK2orNHMyMnl5N3UvbG5zYjB1dFBaSGZUMTNjN1pxV0JuKzN2bmkzWTgreDBFQUd2NGhSSUFqTlpScFBkaFd6MXBBMnNBQUlOcXV4bmN6SHJkRjA2VDNGTE5yYkJTZ3JYdDBubjd6T2JjblhGUmE1M1hXcDhtK1M3SlE5dDM2MDNYMmFkN0Rwb3RIRU43SDgrVFd1dWRXdXQzU1o0bnVSTkJGd0JZbTdBTHdEZ3ZnTzVraStlUkJUTE5Gcy92RGdCc3R6VURMNmRKYm5Zd0JRakRiR3ZkQk9IUGZidk5YNzdXT21zZmlCOUZ3R1hYN2hOYzE3NGY2eGRiUHFibmVSMWFteG9LQU5BZFlSZUE4VjBBSGJRWFA4QjJ1OVBPdXd3QU1MaHJCbDVXU1c0SnVnQnNScTMxWVpxcDZLYXF3WUFFSi9zWno1TzJPOU5SZE1BQmdGNEl1d0NNejVFU3dPNk1aOU1aQVFDYmNzWEF5eXBOUjVlbHlnRU1xMzBvZmphMUNRek5mWXZ1eC9SQm1tNHVNOVVBZ1A0SXV3Q002MExvZnN6WENydGtHamNyQVlBTnVtVGc1U3pvNHMxdWdNMTRHdmVEZUx1K3d5aFRKZTVPclhYYWpta2hJZ0RvbWJBTHdIZ3VoQTZTM0ZNSjJEbjMydkVOQUxBUjd3bThDTG9BYkZBN2RaRnJ4dDIzenUvWnZ2ZVBxYzNUcVNjUmRBR0FRUWk3QUl5SDZZdGdkejFVQWdCZ2s5NFNlQkYwQWRpZ1d1c3N3M1lEWFNZNVRuS2krb05icmJtdkhQUzBEMDZ5WHRobGFkUCtySjczTTJ4NDdUVEpvNndYcGdLQXJmV0JFZ0RzNVlVUU1LeFpyWFZlU2psV0NnQmdVMG9wcTFycnpieWVMdU91b0F2R1JWblVXcS83NDh0U3lnMVZaQTFkZC9oZDVuWDRZSlhrMi9aL0w1S2N0c0hIcy90UWg4by9xSFYvMzM2UmZnSU5oeDNzYzd6MlpRLzd6ZXBjcmYvWS92L1RDMlA2cWRJRHNJK0VYUUEyckozSDlVdVZnSjEzcjlaNmNuWWpBZ0JnRTg0RlhtYWxGRy8yUTJPVjYwMDVNYTIxSGdpTmNSM3QvYUJaQi92dWNaS3ZTeWtMVlIzOTc5L3JIbXVTSnBSeXQ0ZXY5c1dhNjJXL2V6Mm01MWwvK3FKbG1zNUxqLzF1QVlEM000MFJ3T1k5akhsY1lSOU1NMng3YWdDQU55cWxyQVJkNEdmV2VhRG81Uld1YTkyT0dpZEpicFJTN2w0amNQQ0o4bS9FWW8yZm5iWmhpczYwMDJqTk5uVHMzRVdmcmZuekQwb3BaMlA2cXJXZEtqOEErMGpZQldDRDJvdEtiV05oZjN6WnpvY05BQUJjejdTSHozeTJ4cy9PMnc0ZGNGWHJCRTRXcFpSYmEzUU8zYnA5ZGtmRzJiTTFmLzVoVi9jVTJzODVXdk5qRm9ieHo4elcrTmtIcFpUN2EyeEx2NGNBMkV1bU1RTFlyQ01sZ0wweVNkUE42YlpTQUFEQXRVeHJyYk9PcDg0NFNYSnZqWjkva3VUVGRiNUErN0J5clU2UTEzMVF5dWIyNVRWKzl1NGErOW8weWNFVzFtdWVaTnYzOFpQMm5zQjFUWkk4WGZkNDAzcVk5UU1Tend6anpzYjBvelYrMW91VUFPd3RZUmVBRGFtMTNvblVQZXlqZWEzMVFTbGxxUlFBQU95cDFaby9meThkZGhRb3BaeldXcGRyWEtNZjFGcVBTaW5yaE5xUHN0NER5OU5zZnhDQUsreXphNDZmYmZSbHJmWFJHdDFzeHJEZGxyWFcwNndYTmpxb3RSNGx1WHZkV3JRL1AxOXpkWmFtUk96TVlzMzkrcDRTQXJDdlRHTUVzQUh0RzFzdVJHQi9HZjhBQU95dE5SL1VKOG1zMXZya2ZkT2ExRm9QMjRlNmwvRjR6ZTgwcjdVK3ZjNVVLKzEzWFBmTi9NZjJyUDF4M1NsOTJ1bTA1eHY4Nm9zMWZuYVM1R203RHU5YXg0TmE2OE5hNjFpNzEzelZ3V2ZNMjFvY1hIVy9xYlUrN1dnZmNNenB6c0VheHdJdlV3S3cxM1IyQWRpTU8rMUZPckNmZEhjQkFJRDFIQ1k1ckxVdTh1ZFRhWHlXNXVIaDJYWDNaVHF1SEdmOVVQb3N5Zk5hNjFkSjN0dUJvbjFvL3pEZFRDbHpiSmZZcjJ2S1hMR1RUeHVNZUxMbDYzMlFKdVJ4bWlZNDh4L24vdDBuN2IrZnR2Ly82NUd1dzlsVVJwTU9hdkc4MW5xYzVLdDNoUWpiYmY5bHVnMDZPZVowWjNLZDZmbHFyZk9zTnkwV0FHdzlZUmVBZ2JWZFhiNVVDZGg3OTNLNW0rNEFBTENMRm1uQ0lldWFkZkU1N2ZRaXgxbi9ZZkJaSjlkNzU0STR5L1pQMGp5Zy9uV2FzTTYwbzFvZWIvUFVMbHp2ZXJMV3VpeWxIRi9tUDI2N1A5ekw1bCs4ZXRiUnVEOUlOeUd4d1pWU1ZtMGdycXVPci9NMEw5UXMwMHhuOXUyNWYzY3hBTlNWWXkvdmRPNUpyZlhtWlRxZm5lc1lma2ZaQU5oM3dpNEF3eHZEelFWZzgzUjNBUUJnbjUybW00ZmVYWHFRYmpzZnpBWmF4d2QycDYyMGJ2RGpxTmI2UlpxdUhpY1gvMlhieldPVzVvV3I2WWpHL2Q0cnBkeHZ0MTJYMjJYYS9qbnMrZXV2a3R5MUZkOW9zY2FZbnVSMXA1N0hiK3J5MG5ZRCs3ejlQZVhlTWdBaytZVVNBQXlublZOWjZoNDRjMDhKQUFEWVU4L0c5b1hhSVBxMkJVZDBXTmhlWFFRL1ptazZRdFJhNjcvWFdwKzJmOWNrejlOTWNUSWQwVG92YlBhZmJHdW4xd2M2U2ZVNnB1ZHBwdXA2MDVoK211YStzcUFMQUxTRVhRQ0dOVmNDNEp6RHR2MHNBQURzbGJZVHhSZ2ZtRDdLOW5TZjBHRmh1eTA2L3J4Sm12RExaTVRqZnBYa3hLWlAyczRkajdadG55MmxQTEwxM3VyeHZvMXBBTmcwWVJlQWdiUVB0TDlVQ2VDY1NYUjdBZ0JnZngyUDdRdTFEK052WjV4Qm5JdHU2N0N3dmRwdGQ3eUhxLzdZMXYvSmcyeFh1TzZXVGZiT01YMmFaS2tTQURBY1lSZUE0V2d6Q2J6SkYwb0FBTUNlK2lvakRKVzBEeXpIM2pIbHVPMk93M1o3c0c4cjNPNjNwemI5VDRHbm14bC91RzZWNUtad25URU5BR01qN0FJd0hGMWRnRGVaMWxybnlnQUF3TDRwcFN6VEJGN0crTjJPMDNSNEdhTnRDT053K1RHd2o5UEMySDlmN3dOakQ3eWNCVjBFbEM3L3UwT3RBR0Fnd2k0QUEyZ2ZaT3ZxQXJ5TjdpNEFBT3lsVXNyOWpQVEI0RWdETDZmUllXSFhiTk5VTmwyTnJVWDJNK1R6dG5xY3BnbThMRWYyMVFSZHJtZGJwc0lEZ0swbjdBSXdqSHRLQUx6RHJOWTZWUVlBQVBiVXpZdzc4SElyNDNod0tlaXlnOXJ0dVltSDQ0c05yL2ZkSk1mMmdKL3FjWnJrMHhFZEM4K09ONEl1MTl1V20raGV0RkI5QVBhTnNBdEF6MnF0c3lSVGxRRGV3MVJuQUFEc3BYUFRlSXcxOEhLU3pUK0VQb21neXk2UGdiUE9Ia050MytOU3lzYW56aW1sM0k3QXk4K09oYVdVVDlOMCs5bWtSeEYwV1hkYkhtZll6bUMzTTk2cDl3Q2dOOEl1QVAwelBRbHdHWE1sQUFCZ1g1MEx2RHdhNmZkYnRnK2g3MmJZZ01BcXlkMVN5aTFCbDUwZkE2ZEpicVQvVU5XRE5tU1NOQ0dxVGEvMzdRMk1xN0h2Qy9mVEJPd1dBeTk2bVNia2N0ZnhwcFB0ZU54dXgyWFB2eU51bDFLT1N5bkxqRzhxTEFEb2xiQUxRSTlxclpONGdBMWN6cVRXZXFnTUFBRHNxN2Fyd2QwMER3ZTdlZ2kvNnZnN1Brb1RTSGlRL2gvT0h5ZTUwUzZUL1JrRG4vYTBmeTNUQkJudW4vdG56MGF5M21majZyakQ5VjV0K2I1dzJuYmZ1WlgrQTFETE5JR0pHNldVaFpIWTdYWnNmNmYxY1J4ZkpQbTBEZFdjLzJjQXNEZUVYUUQ2TlZjQzRBbytWd0lBQVBaZCs1RDNWcHFIMzNkejlZZDNwMmtlTE40cXBmeXFoKyszYWdNRFo5K3Z5d2ZSeXpSQmh4dWxsTnU2Syt6dEdEamJ2N29JdlN6VGRITjVVNUJoTWFKMVhyVmRYbTZrbVk3bDVJcnJ2a3dUbHJtZDVGZTdNZ1ZQS2VXa0RVRGRUTGRob0xRMXZ0WHVHOGRHWHEvNzl0MjhEblN0NnpSTk9PbG0yODNsdkdjcURzQmUvWjVWQXNhcTF2bzB5VXdsQnJObzN4YWcyLzM0dXlSVGxRQ3U0RmZiZmtPNzFuby95VDJiRWtiaHdZVzNkL2Y5M0d5VzVLbEsyQWZoTGNlSVNaS0ROVDdpOURybmNiWFdneVNUNnl5d2l6ZndhNjNUTmE1YlQ0YzhkejFYcTR2ZitUVE5BK0RWcGg1d3QzV2NKZm1zL2Z1eU5WMjEzLzlaa3BNaHZuLzcrekNiMnVjR0dJL0xOendBSHJKT25lK0hiUmZRejl1YVhLWXVwKzJmcjBzcEp4MnY1OURqL215OFg5d25sdTJmdGZmTGRZN0RROWZqM1A3d1dWdVBxMnkveGJuanpXSkQyM0VqTlI3RE1lWENkem04NHUrTDAzYjdQWDdYOGVXYTYzbWwrbTdEN3hBQTlvZXdDNk1sN0RJNFlaZnU5K0dESk05VllxK2MzV0E5VGZJZjUyNGt2UGNpOGkwWGltZi83Qy9hQzlWMWI3NnpIVzV2K3h0VndpNHdLb0lHZi83N1Z0akZQZ2d3NUgyQmR6MUFQOVc1aFRYT2FkN0l3K1M5M0IvZWQ3K28wN0FHZzI2LzFhNTBLUUtBUG55Z0JBQzkrVUlKZHRZeVRhRGwyelJobHJWdkdyemxadFRpTFJmQjB6UnZmY3lTL0RwWGUydVE4ZnM4M2JTMUJRQUFOc2dEU25yY3R4YXF3TG45WVpVUlRVbUY3UWNBUXhGMkFlalBvUkxzakxOV29ZTzNlWDNMUmZBeVRlRG1wd3ZoOWkyUVdab1dxSWNSZnRucVkwZXRkZUlOVHdBQUFBQUFnRGNUZGdIb1FUdDM3bFFsdHRwSlhzK1p2aHo3bDIyREVTZnRuN3R0OTVmRE5CMkdUSDIwZlE2anV3c0FBQUFBQU1BYi9VSUpBSHJ4dVJKc3BXV1N1MGx1bEZKdWxWSWViZXVjeHFXVVpmdjlQMDF5SThtakpEcUZPSVlBQUFBQUFBQnNQV0VYZ0g3TWxHQ3JIQ2U1V1VxNXNjMEJsN2RwZ3k5M1N5bS9Tbkk3VGFnSHh4QUFBQUFBQUlDdEpPd0MwTEZhNjBGTVliUXRqdE4wY2JsZFNsbnN3d3FYVW81TEtUY2k5REoyazFyclRCa0FBQUFBQUFEK25MQUxRUGUrVUlMUk84bnJrTXR5SHd0d0x2UnlONlkzR2l0VEdRRUFBQUFBQUx5QnNBdEE5MlpLTUZxbmFhWXJ1cld2SVplTFNpbVBrbnlhSmdDRVl3a0FBQUFBQU1Eb0Nic0FkS2pXT2sxeW9CS2o5S0NVOHVtK1RGZDBGYVdVWlNubFZwb3VMNHpIUVh0TUFRQUFBQUFBNEJ4aEY0QnV6WlJnZEpaSlBpMmwzRmVLZHp2WDVjVzBSbzRwQUFBQUFBQUFveVhzQXRDdHo1UmdWRTdTQkYxT2xlSnkybHJkU0RQbEU0NHBBQUFBQUFBQW95UHNBdEN0UXlVWWpRZWxsRnVsRkYxS3JxaXQyYzBJdkl6QlRBa0FBQUFBQUFCKzdnTWxBT2hHcmZVZ3lVUWxSdUYyS2VWWUdhNnZsTEtxdGQ1TThqVEpnWXBzekxUV09pMmxMTGZzZXg4bldlemc5bmhvUEF6dU5NbGRaVmpMVWdrQUFBQUFnRjBqN0FMUW5aa1NqSUtnUzBmYXdNdnROSUVYUWE3Tk9jaVdQYXh1d3puTFhkc1F0VmFkb29hM0txVXNsQUVBQUFBQWdQTk1Zd1RRblUrVVlPTUVYVHBXU2psTmNsc2xOdW96SlFBQUFBQUFBSGhOMkFXZ096TWwyS2k3Z2k3OUtLV2NKSG1rRWh0ajJod0FBQUFBQUlCemhGMEFPbEJyblNTWnFzVEdISmZ5LzdOM3IxZE9KTWtDZ0NQMzdQL1ZXckFhQzZheEFHRUJqUVdvTFlDMmdNWUNHQXRhV0VCakFSb0xSbU1CV2d0VzE0SzRQNVJhTkN6UWtySWtsYVR2TzZjUFR6MHFNaXZya1ZHUlJUTEdmcjJOQ0V1NEhNZElDQUFBQUFBQUFMNlM3QUxRalpFUUhNMnNsR0tablQwcnBTd2k0bFlramlNelZYY0JBQUFBQUFDb0pMc0FkTU5FOUhFc0l1S0ZNQnhHWFNacUxoTEdHQUFBQUFBQWdHT1M3QUxRalYrRjRDamVsbExtd25EWW1BdUJNUVlBQUFBQUFPQ1lKTHNBZEVQVmhjT2JsbExlQzhQQlBjU3lvZzdHR0FBQUFBQUFnS09RN0FMUUtETUhFVEVVaVlPN0ZZTERLNlVzWXBud3dtRkpkZ0VBQUFBQUFLZ2t1d0MwTXdsOWVKTlN5a3dZanVhVEVCemNvQ2JXQVFBQUFBQUFYRHpKTGdEdEpMc2MzbHNoT0txcEVCaHJBQUFBQUFBQWprV3lDMEE3MVJZT2ExSkttUXZEOGRTbGpGVFdPVHpKTGdBQUFBQUFBQ0haQmFBTFQ0WGdvSDRUZ2w2WUM4SEJTYXdEQUFBQUFBQUl5UzRBWFRBQmZUaXpVb3FLSXYzd3B4QWNuTVE2QUFBQUFBQ0FrT3dDMEFWTGl4eU9xaTVjTW9sMUFBQUFBQUFBSWRrRm9FbG1tbncrckFjaDZBMFZkZzVQWWgwQUFBQUFBRUJJZGdGb1pmTDVjS2FsbElVdzlJYTJPQUlKZGdBQUFBQUFBSkpkQUZxWmVENmNUMElBRXV3QUFBQUFBQUFrdXdDME1mRjhPRk1oNkpXaEVBQUFBQUFBQUhBTWtsMEFPQW1sbEprbzlNcFFDSTVpSkFRQUFBQUFBTUNsayt3QzBPWmZRbkFRVXlIb25YOElBUUFBQUFBQUFNY2cyUVdnelZBSURrSlZsLzZ4aE5keFNMQURBQUFBQUFBdW5tUVhBRTdCL3dsQjc0eUU0Q2lHUWdBQUFBQUFBRnc2eVM0QWJZWkNjQkJUSWVpUHpMd1dCUUFBQUFBQUFJN2w3MElBME9SR0NBN0NNa2I5OGx3SWptWW9CQUFBQUFBQXdLV1Q3QUxRb0pReUZRVXVTV1lPSW1Jc0VrY3pGQUlBQUFBQUFPRFNXY1lJQU5qR2F5RUFBQUFBQUFEZ21DUzdBQUFieWN5cmlIZ2pFZ0FBQUFBQUFCeVRaQmNBNEZGMSthSjdrZWhGV3d4RkFRQUFBQUFBdUdTU1hRQ0FUYnlMaUN0aDZJV2hFQUFBQUFBQUFKZE1zZ3NBOEZPWmVSOFJZNUVBQUFBQUFBQ2dEeVM3QUFEZmxaa0RpUzRBQUFBQUFBRDB6ZCtGQUFENFZtWmVSY1I5V0xvSUFBQUFBQUNBbmxIWkJRRDRpOHk4aTRnL1FxSUxBQUFBQUFBQVBhU3lDd0FRRVJHWk9ZNklOeEV4RkEwQUFBQUFBQUQ2U3JJTEFGdzRTUzRuUnpzQkFOQ1hhNGxoUkZ4SHhLOXI1Nm16aVBnekloNUtLUXRSQWdBQVlCOGt1d0RBQmNyTXE0aDRHUkhqaUJpSXlFa1pDZ0VBd0VtZGU0OGJ6dUdtcFpScEQ3ZHBFTXVFK2RmZitlZFIvZlZkWnY1V1NyblRsaEVSTVNtbHpNOXNtMDVGTDJNUEFBQzBrZXdDQUJlaUpyaU1ZcG5rY2lVaUFBQ3c5M1B3UVVTOGk5MFR6SjlHeExTSDIvUjVnMnVLUVVTOHljeW5FZkhpVEtxOHZJeXZ5VHpibWtiRS9NeTI2VlQwTmZZQUFFQUR5UzRBY0ticVRlaFJMRytRWDRlS0lBQUFjR2pYMFZaSmNaU1p3NzVVcGRnaTBlVXYyeEFSSHlQaW1lNEFBQUJBVnlTN0FNQ1p5TXhoTEc4ay8xcC9WYjBGQUFDTzYyVUg3L0VxSW01N3NqMnZkN3pPR0dYbXVKUXkwU1VBQUFEb2dtUVhBRGhCbVRtS1phV1dZU3dydDF4RjJ4T2pBQUJBdCtmc3craG1lWmh4OUNEWnBWWjFlZFh3Rm04aVlxSm5BQUFBMEFYSkxnRFFVL1htK0RDK0pySThqYThKTGdBQVFMKzk2dWg5QnBsNVhVcDVPUEwydEM3Sk5Nek1VU2xscW1zQUFBRFFTcklMQUJ4SnJjNFM4VFdCNVY5cnZ4K0tFQUFBbkxSeGgrLzFNaUtPbmV6U3hUWEtLQ0ttdWdZQUFBQ3RKTHNBUUljeWMzMDVvZlhmUDYyL0RtSzNOZTRCQUlEVHVTNFlSN2ZMakY1bjVyQ1VNai9pWmozVnNnQUFBUFNGWkJjQStNYmE4a0VyMy83NVg5LzhlU1JxQUFEQW11ZDdlTTl4Uk53SkxRQUFBRWgyQWVETWZaTzRNbHI3cC9XbkV0Zi9Ed0FBUU9zMXlQVWUzdnBsSERmWjVmZVE2QThBQUVCUFNIWUI0S1JsNWlqK3VqVFFLb2xsSkRvQUFNQVJqUGYwdnNQTXZDNmxQQnhwdTJZZHZNZUQ3Z0VBQUVBWEpMc0EwSHVaZVJYTHlpdFg4WFVKb2F0WUpya0FBQUQweWNzOXZ2ZnpPRkxDU0NubElUTVhEZGRoODFMS1RQY0FBQUNnQzVKZEFPaU56RnhWYUJuRk1xbmxLcjVXYkFFQUFPajdOYzExN0hlSjFIRm0zcFpTRmtmYXhMY1I4VzdIMTk3cUlRQUFBSFJGc2dzQVIvRk5Zc3V2OWZkRGtRRUFBRTdZeXdOOHhqZ2kzaDlqNDBvcDd6UHphVVJjYi9uU3lSR1hYd0lBQU9BTVNYWUI0Q0F5Y3hqTHhKYW5vV0lMQUFCd2Z0YzhnOWcrQ1dRWHIrSkl5UzdWVGYxMTAyMTlYMHBSMWFXL3VsNWFhdEI0dlQrdlAxMWFhR1lBQURnL2tsMEEySXR2a2x0R29Xb0xBQUJ3M3NZSCtweGhabDZWVW1iSDJNaTZoTktMekJ4SHhKdWZYT3ROSStKdEtXV3FhL1JYMTRsSW1UbUtpTThOYi9HaGxIS25aUUFBZ01kSWRnR2dNM1Y5K2xWSjY2R0lBQUFBRitUVmdUL3I1cGdiVzBxWlJNUWtNMWZMMHc3cVB5MGlZbnFzWkJ3QUFBQXVnMlFYQUhaV3E3ZXNKN2dBQUFCYzRyWFJLQTZiOEgrZG1iZTF5c3BSMWFRV2lTMEFBQUFjbEdRWEFMYXlsdUR5TXRyVzRRWUFBRGdYTHcvOGVZTjZYVFlSZWdBQUFDNlJaQmNBSGlYQkJRQUE0SWZYUzZ2RWswTjdGWkpkQUFBQXVGQ1NYUUQ0cnJVYnRpOWp1ZjQ2QUFBQS8rczZscFZXRHUwcU02L3FNa0lBQUFCd1VTUzdBUEFYZGEzNWx4RXhGZzBBQUlCSHZXcDQ3U0xhRW1WZVJvUmtsNTlmMzQ0aTR0ZUlHTWFQSzVYTzY4L3ZFVEV0cFV4Rmp5MzYyTlYzOXVOWlJNeEtLZk1EZnBlcjcvVDNuNDB2c3pvRy9WNS9QeTJsTEU2MEhhNGo0bW5kNXRFRysvbXNsUExROHpGckVJOC9mRGF0Mi9SbmJiL1pDYmJkVlN5VFJuK3Q3VGZjb0wrZXhEaGRIeVJjalJGUGE1dGVQWEpPTUR2MU5sM2I5aC90ajlPNkR5NE8vSjJHYS92WDFTTmo1R3E4bUszMXVaTWNIOWYyczVlUGJIZnZ4OGdOOXJIaFQ4YVFWZDliSDBlY1E4TVprT3dDd09yRWNCekxtN1JERVFFQUFOam9XbW8xYWJDcmgxamVwTi8xT213Y0ViY0gzTjV4TENkTGRuRjdpRW1GT3VuOVBMYXJ1RE9zUDZPSWVKT1ppOW8ydjVrSU9hdjk5Zk9PTDUyVlVtN1gzbWNZRVc4MjZXT1pPYXY5YUxMSE1lalZqdVBJYXV3YXJiM2ZOQ0krUk1URHZpWjJ1eHBINnIyczEvVzlobHZ1NTlHWC9YenRvYk5kcW9TTnZubXYxVFo5NkRvWnBQYTFkenUrL01QNlBsRDNvZkVXYmZkdGYzMlRtYXRqNktkOTdWODd4bW13dG0zYm5oOE12dE9tODdWK091L2grUGh0MjQ3cW1QU3o1UjNmckk4MysyeS9odlpZSHk5ZXI0L24reHdmZXpaR1JpeVh5L3pRcCtTeXhuMXN0WDlkNzJQTXJQMy9UZVBiN09WOHVYRU0vNTl6SVFBMlBNRktEdW16WG5lUis5a3dNKzh6OHo5MkFUZ1pkMFl2NXliT1QyRDNtMDkySzhjdDZIaGN1Vy9jUjBhWiticnhQY1lIM042N2xtM2Q4M2NiWithWGZaeVAxQW1DMXZQQjBZWHNFNk8rSGpkYXowa3pjNUNaNzNaOGp5OWQ5b0VhNTMxZW4veW43dStEUG80amRYLy9UOGY3K2ZBSSs4bysyL0R6SHZwYzAzNWQ5Nkg3VStxdk85eGp6Vk5wMDQ3R3gvVzIvZGg2bkQyUjl0aHJmK3Rvakx6ZXd4aDVkZVR6aTMzdlkxOWF6Nm5yZnRBYTkvczl4ZTlkNC9jYUIvVFUzNFFBNENKdnlJNHk4Mk5FZklsbEp2UkFWQUFBQUxaMjNmRGFlWDJLdExWTS9NdExib0I2ZmZzbEl1NWpQNVZLUnhIeGgrUzl5MVluTlQ5SGZjSi9COE9JK056QlJOcXdKdDk4anNlWHVHa3hpT1hUNlY5cXRhUytHTlQ3V2ZmUjdiMnNVZDNXdTBQMHBib04rMjdEVWUxekg0K1pCTEsyM2RmeDlUN2tQdnZyK0FqYmRyZkhiZnRlbTc3clE1dXViZjlWM2Y3cnh1MjY2bWovMm5kN3JQZTMxOUV2ZzVvczhYRVBZK1JSem9WV1NYSUgyTWVHRVhHZm1YL3NtbFJXSy82MG50ZnY2NWpiRXJzdXRndjJScklMd0FWWlBUVlNMNml2UlFRQUFHRG42NnR4dEUway9CWVJVWmNsYUxtQlBEcDBSWUtleEgrUW1lL3E5ZTBodHY5TjdIZGltdjVhSmJwMDhWVDdmVU9mSDBmRUh3ZnVoNE9JK0xpdko4MTNqTjgrNzJlOTJXZHlTQWRKQWJ1NGp1V2svREdyTXJ5TTdpZmZmOVJmNzJzVmlyMG5nOVRrc3oraWZkbVNiYjJPWmVMQlZRLzJ5WC9WOFhIUVFkdTk2MkQvT21SN0RDTGkzYUg2MnhaajVIalBZK1RCdG5mUFNYSS9jaFhMNUt1N2x2UDdsbjdWZFpKcGZiK1dOdHZyMGwzUVNySUx3QVg0SnNsbEpDSUFBQUROV2l1cXJDZTRmR3A4cjFjWGRvMTdGVzFWTm1BYlY5Rk5va3RMbjcrUDdxdVpiR05jbjNZLzlvVHVJVDcvT3BZVG5ZT08yM0ExYmcyT0ZMZGpMa015UFBEbmpXTFBDVDVyaVJYSGpPbm5IaVM4aktNSEZjUFhrZ0dIUi9qNHZmZTNubzJSbzMyTWtkKzA1NzRxMUd4anA4U2VVc29zSXVaSHZzYm8rdjErQytneHlTNEFaMHlTQ3dBQXdGNnV0WWFOMTFnUHRhSkxSRVNVVWlheExCRytxK3NMaXYxcXd2aEtUK1JDK3Z5K245VGYxRlVzSng0dndWVTBWT0g1eWJoMXpLU0FZeWU4SEdONy85akhza1k5YWM5TGJOTWZ0Y2U3THZkWGJiSHhHUGw1VCsyNXFxYldoK1BlS0haTDdHbE5Ecm51S3Btb3ZrL0xkY0tzSnZCQWIwbDJBVGpQay93clNTNEFBQUI3MDFwSjVYdVZYQ1lON3pmc3V1UjVYNjkxb3g4VGpIQ29Qdjg2K2pIaHR6S3FFOHVYNExwaEdZdjFOaHpFY2FzVHJGc3RTM1ZKWStoOWx3a3ZOZG0xVDhlaFZaTEZSUjRYYXpMZzY1NjF4Y1VrdkhSOVBGaExkT2xUREs5MjJNY21IWHh1VitmMXJlT2ZxaTcwbm1RWGdQTTZ3VitWK0R2MEdzNEFBQUNYWk56dzJrV3Q1UEt0RDQzZjZlVTVCN3lIRTR5dzd6NC9pb2crSnBhOHJ0L3RFcnpwWU9MNlRSeG5hWlVmR2NieHEyQWMybjJIQ1FoOVNWeGFON2pBTmwwdFhUVHVZVnRjVXZKUlo4ZURuaWE2ckd4VnlhYVVzb2oyaEpldWxpaHR1VDVZeEYrWFhZVmVrdXdDY0Q0bitIY1I4YVdISi9rQUFBRG5kTzExSFcwVFhkKzlhVnhMaExlVUNiK3VDU0huR1BNK1ZVYUFRN24zM1hwaDU0U2pPaWEvN3VFMlhWOVF3dEpLY3dKQ3ZmZmExNm9kMTVkUTRXMnRMVVk5SG9kVzV5ekd5TzJQSzMydWlyTnRKWnRQSFh6ZXNIRS91V3FNNlVOTjNJRmVrK3dDY0FZbjk1bjVSeXlmRkhIakR3QUFZTDlhSzZqOHJCeDRhM1dYOFpuRy9FMzBld0lFT2xVckZneDcvQldIWFM0TjAzT2poc1NRTnowZlZ5OUpVd0pDVFpSNTFmTnR2SWdseHRZU1lQcytidHhkeUw1MTFYbzhxTEU2aFdTdGpTdlpsRkllSW1KKzVQUDZmVjZ6UUc5SWRnRTQ0UlA3bWszYzEvSitBQUFBNTNZZE5veTJtL0d6V3NIbFJ5YU5YL0hsR2NaOEZQMnNqQUQ3OU1aMzdKVmRreHo2UEhrN090ZHFZSTlzODNqSDE3Nk8vajlrT0x5UWlqM3Y0alFlK0h4MVFmdll6dWVmdGZySW14UHJmNXM2OWhLbCs3eG1nZDZRN0FKd2d1cUZ5eC9oaGg4QUFNQWhqUnRmLzlPYjNyVlUrS1RoL2M5eG91dGV0K09TMUtWSWhoMi83U3dpcGhIUjVYSUV3d3RhQ21mclplSnFiQVlkdE52YmlMaU5pR2YxNTIwOVRzdzcySzVYRjdpTHZkdHhPYU91azBrWGRaK2NkL3krTDgrNThlcCtOVDZScnp1SXkwa0tiRW1lTzdXS1JOdFVzcGswZnRiT3g5a096aVZVZGVGay9GMElBRTdxaEg1MWtpekpCUUFBNFBCYUo1RW1HL3lmVDlFMmtmTXlsaE5vNTNBTlBJN3VKLzFYRTR4L3J2M2RQeUppRktxbWNoN2pUTlErL2lFaXBxV1UrWGYycmV1SWVCN3RrOGJQZXpiZXJIK1hVY2Z2ZlIwUjc3ZjQveTJmUDR1SUY5OXJ1L1Z0ckdOa1M1V0xVWS9hYmxaLy9yMzJkNy9XNzlobEZZOUJMTytyM20xeExCcDFjQ3hhSmJOKytGNjFoRnJkWWhUTEJLU1d6eHBIeE0wWmo0OWRKWThzSXVLaG5uUE5WMjFTMjJGWXg3YnJEdnJlT0RQZi9tQmZ2dlF4Y2pXR2pVNjBIejU2VGw5S21XZm1RN1JWV05uMXZQNTVCL3NIbkFTVlhRQk9SRDNaVnMwRkFBRGdPTmRrclU5SVB0VEtMVDlWU25tSXRpZTl4enMrdGQ1SFhUNFJQWTJJWjZXVWY1WlNYcFJTN3RaK2Jrc3BUeUxpbDFoV1RWam84ZXpRdjZiUlRaV0dVY05yRjdGTWtuaFdTcG44YUlLMWxQSlFTcm1KaUNleFRERFlWUitXNlpsRXhKT3k5R3p0cDBURWkrZ3VHZWZwbHYvLzF4MC9aMTdIcWtmN1VpbGxVc2V0WGNlc3F5TWZMeFoxelAybGxQS2tsSEx6emRqOG9wVHl6MWhXdEpsMitMbmJWclI1M2tFZi9hVWVhMlkvYU10WktlVjlLZVdYYUt3RzBiT0tTNHUxOFhIUndYWjFzVzJyUG5kVHg4TFpOKzJ3R2g5WDV3UjlPcGZaeHhqWlZWTEQ4eVBIWmg3TFpKdG5aVTF0eDV1T3g1QnRLcTU4YXZ5czZ4MzJsVUcwSmJOdWRNMENmU0haQmZmZjFSZ0FBQ0FBU1VSQlZPQUVaT2JyV0NhNkRFVURBQURnS0ZvbnV6NXM4WDliSng3R1ozQWRQT3JvR25nUnk0bVBaNldVNmMvK1l5bGxYa3E1aStYRWlDZGErWmw1TEplVytlV2JDY1JmNnVUYXMxaE91aTIyN1BkWHNYc2xnVlZmMzdqdjFrbmVsaW9Rd3lNbVM4eGpPWUY3ODVNRWdvZFN5clBvcHRMRmFNdi92MnRjdHBwa3JQLzNSY04ySGF1aTFVUGRmKzRlUyt3cHBVeHJPejZMYnBJUkIxc3NROUlhbzBudG85dTBhZXZFL0NpT2ExNzN1VjlxZ3VscWZQeG5SUHl6OXRmSkR1L2J1dXpXb280WmR4c21IeS9xT1VGcnZ6dFdFdkxxbVBEWUdQbWl0bGZydnJWVnYrdHd5YjVGUk56VzQrL3R0K2Q2OWR4dXNqYUd6RHVLNzhzTjkrZEpZMnkzSGE4aTJoTlJMV0hFU1pIc0F0QmptVG5Jekk5eGVtdFhBZ0FBbk5XMVdiUWxrQ3kybVlDTzlwdk1yODRnN0YwczVUS0w1V1RiZEpzWDFRbXVGN0ZNWm9CdnZhMlRhdTkvVWpsbFdrcTVqZTJyQmJWTXF2LzJvd25OUi9yN0xOcVN1NDZSTExHYXhKMXR1STJUYUU5NEdXVG04QURiTnRxaERhZTFEYWM3L0F5T3RBKzkyTFp5UU4zT1g2S3RHdEhLODMyMlNUV3ZpU3M3N2M4TjIvWnJITWQ2MHNGM0swdlY0K3VxY3NvL1k4UEtLZlU4N1BwUVk4WjMrbDNyK0hGOWhMWjR0dW41VHgwam04OTV0cXdxMU1WNTNyeHU1L3N0MnZKSlIyUElObTA2T2VCNDFYb2RNTnRsUDRGamt1d0MwRlAxYVo3UDBZK1NzQUFBQUpkczNQajZ5VGIvdVU0UXRkeG9IdFpyeWxQV2VpMjhtdWpaK1duYU9ubnlYdmRuelUxOTBuL1RQclRZc2xyUXNPRzd0ZlRWUDF2R215TzF3M3pML1hrUzdSV2JEckd0VjVuNWNkdkVtcG84OG15SG4wTlhzWHEvelQ3MHZYMHF1cW53Y3IxSnRZM0dpaHd0Q1N2VGh0Y2VzNHJJKzIzYXN2YUZUWklQeGgyTUdiT0dmdmNRYlFrTHp3L2NIcmZiYm04ZEl5ZU5uN3ZSdU5WQjh0S3F6ejNaWVR0WFk4aTg4Zk1IV3lUM3RDYXhYMjg2RnRWalIxUGlyRk05VHMzZmhRQ2dmK3FKMHNjalhad0FBQUR3VjYyVlVuN2I4VFgzamQvNTVoU0RYYStKVzYrSFg3UWt1cXlVVW01cjR0RElibkR4M3RmSndGMzYwU0lpWG1UbVk1Vjc1N0hiSlBlOHNiLy9xK0cxd3dPM3c3UWhRZU50dEUyd2pxSXRDV0ZUMTdHYzNIeUlaU0xTTkpaUDJ5OU9mQjlhVlR4cUhaY1htZmtpbGc4SlJtTjdQbXpRdjNkdDgybmpkOXZWTVpKZDMrNmFURkpLbVdYbXMwZjJ6YWRIR2pPK1BTOGJOK3pUaHpMZjlWaFZ4OGh4dzJjUER4aVBuUk9hNnhoeUc4djVsOVl4WkxyQjU4MHpjOXE0WDQ5anM2VFdsbXVXUlZqR2t4TWsyUVdnWitvYWpQY2lBUUFBMEl0cnRLdG9tOHlkYlZ1Qm9IcUk1WksydXlaOVhHZm03WWxPam80YVh6L1pkdW1pUjl4RXhCZDd3MFZieEliTGJmek1ZeFA5SFQxWnYrMFlONHIycWdtSDlLRWgvclBNbk1WaGtnRm1IWXhsMS9YblRXMnJXWDNmUCt1eFpYcGkrMUZuUzhPVlVxYVpPV25zdTAvamtZbmRtc0R4N01ENzVHRFY1anM2OU1PVDgyMHF1dndnem90SHhyN3JZNHdaM3hrLzVydWVFMmJtNkVENzdHOE4yemh2SENQL3NjVysxK0p0NjFJN3BaU0hsdmFzZnQyeUg3WWNFMTdHWnNrdUxmdkt3eGtrVlhLQkpMc0E5RWg5d3VlMVNBQUFBUFRHTWFxNnJKNDZmWWpkSi9KV0plSW5KeGp6NWttUUxyOU1uZnlaeEdrbEJOQ3RzNXNBcWtrdUwwK3dYN2MrZFQ2Tnd5UzcvTG1IOTd4YS8rNlpHYkZNZmxrbHdFeGJKNEQzYUxLSDc5WmFoZUtxWi92a3NCNjNYOFZ4bGdmcnhUSDNCMk5WaTE4ejg2NEhjUnJGWVNwRHRZNlJueHIyamFzdFlyR3JSWFMzeE9TenhuMXRzV1c3dENTeFgyWG04R2NKOUhWZmFka2VTeGh4a2lTN0FQVG5ndVkrM0RnREFBRG8wM1hhS21Ha1JjdWt3NGZHNjhSWGNackpMaTBUa0E4N1Z0SjV6Q2ZYN0JmdDB3bU9YVmZmN0ZPRFdDNVhOSXpUWFphcmk2VjgvdDN3Mm0yV2U1b2VjTHhjVDRDWjE4LyswTFBLTDUzdlF6VVI4YUhoT0QwNjhINjUyZytqL25vVnkwb1lxd3B5d3hQZEwvZmR6MXJqMHBjSFMvOTFnTTlZZEhBT2RJaUV1WlkyN1N6NXRNWnFmb2pHN3lDSmZYVmUvN01LV1M4Ymo2OTlUWmFFbjVMc0F0Q1BteEFTWFFBQUFQcm5PdHFXQTVpMDNKQ3Z5elRNWS9kSmdVZWZBdTJwbHBqL3ZvOHZWTXZkTCtMd3kwUFFEOU0rZnFuNkZQY29sa3NwRE9KMGsxZzIxY1ZZMWpLWnQvRllYQk14cGtkb2syRXM3ekdPNi9IanQ5WmpVVmRqNko3ZSt2ZG9UMHJ0Y3A5Y0pSLzlHcWVmeExKeFh6OUFuejRIaDlpT0xwSVZGbnZlUjFySHhFOG4zQWQraTdZNW9PdjRRYkpMQnduNnFycHdzaVM3QUJ6L0lraWlDd0FBUUQrMUxtSDA3dzV1NnMraWJZTGtzYWRBKzNhTmZOVkJ2UFpsRnVlZlRNQjM5R1VKbzdYSnJPZlJvd24rQS9yenhMN3YyeU9QR2NOWUxwdnhKak52U3ltVEkzMlBhVi9mT3pOSHJSVnc2bkhyVlczcjRZWHRrOU1EZk1iVE00blZJZnJHMlZmbTJHUGkzQ0crK3l3elo3RjdCY1BoVDhhc2xnVDlSYlF2ZndWSEk5a0Y0SWdrdWdBQUFQVDJldTB2UzBQczZFMzlPYVp4bkZDeVN6UldUdG56c2gyU1hUaldlRFNJNVZJY3IwSjFvWk5ScTNPMUxMUFQ1Ymg2bjVrdkkrTEZFWkszWm51TThTd3pqN1ZmanVzeGZxaTNzNEZEOUpQL080RTR0SnhIemMrZ0gzeG92TDU0R2Q5UE1tdFp3dWloTDBtOXNJdS9DUUhBY1VoMEFRQUE2TFdYWjdJZGd6b2hSN3YvRXdJT0xUTmZSOFNYV0U2cVMzUTVQVGZSbjJvTG80ajQwa0VGcllzZU96UHpLalAvaUlqN2tPZ0NoelEvZzIyWU5MNysranRqMGpEYWtvZ3NZY1JKayt3Q2NKeUxJb2t1QUFBQS9YWk8xMnd2TlNlY2xzd2NaT2JuV0M1REk4bmxSTlduNVo5RmZ4SmVCaEh4K1FnSkwrZXlYNDRqNG85b3Ivd0dYTzR4WWRJeWhuOG5pYjNsbW1WV1NwbHBHVTZaWkJlQXcxOFV2UXVKTGdBQUFIMitiaHZIZVUwdWorcFRuOEJwakVHRGlQZ2NsczA2Q3oxTmVMbXYvWXpOOTh2N1dGWnpBV2p4b2ZIMXo3LzVjMHRTdTZvdW5EekpMZ0NIdlNnYXgzS05aUUFBQVByckhDdWhqRFVyOU45YW9vdktFV2VrbExJb3BUeUppTGM5K1VwWGNiaDdsUDg0Zy8xeTdEZ0tSemM4aytQQk5OcVdaTHBlSmJIWEtsMjd4bVVSRVErNkZhZE9zZ3ZBNFM2S1JpSDdId0FBb08vWGJzTTR6Mm9LTHkray9mYVpJUERVSHNJQnZBbUpMbWVybEhJWEViOUUyeklXWFhsMW9Pb3VlK3ZQaDFpT3FYNkdlN3JRalduRGE0ZG5GSWZXNmk3WHEzRzg0VDBlYXVVeE9HbC9Gd0tBL2FzM1N6K0tCQUFBUU8rOU90UHRHbWJtZFNtbDEwOXdsbEttbWRueUZxUFkzMUloRWhEWXEzci82RkRWTm1iMTUvZFlQdDN0dnRYaHhybDVSTnhrNXR0WVZndDVHY2VaeEIzVXozKy81OCs1NnV0NzF3b0xqM2wzb1BhWXIrMlQwNGo0dzk3eTM3anNhaElSL3hiQ3N6cE85djVjZG91KythYmg5Uy9yMkgzZDhCNldNT0lzU0hZQjJQOEoyS0RlTUxBT0xnQUFRUDlkbi9HMnZZelRLRmUrYUxpR2ZocDdtTGpOekd2WDlSekFtdzdmYXhyTGlmUC9XL3R6Uk1TOEpsdXM5KytSMEI5ZWJZZTdpTGlyMVVPdTZ4aDJ5UFo0R2Z0UGRobnNjWUw2ZWVPeDVyR3gvNnJEOXBqWGZmTFArdWZaNmp0OEwrbW1NZkh6bkxRa3F5eHFOU1g2WTliQlBuL3l5UzZsbEhsbVBqUmNkMXhsNXJ1R2M5TlpLV1dtTzNJT0pMc0E3Tis3OFBRWEFBQkE3OVdFaHVFWmIrSjFaZzYvbmVqdW9WbnNQcm00cjIxOGJnL2hFUHRvQi92T2I2V1V5WmF2azhoMVpIWFNjYloyUEJyRjhuN2lyL1hYZmQxYnZNck13UUdXc3VoOGdycFdRcnB1M0Y4ZTAxcnRiUkhMNmdtVEV6ajI5dm1jb0dWTXZSWENYbzExaTh5Y041eHZYMmZtYlZkalZtWithVHozZjl1UVVQV2hjUXhycVFTbnFndG40MjlDQUxBLzlVYnBXQ1FBQUFCT3dzc0wyTVpUcUZ6VCtxUnBsOVV4VmhPcXJ1M1pxNXJjMEpKME1pbWxQTmtoMFNYQ1ExcTlVMHFabGxMZWwxSnVhcnVXaUhnV3k0bjdTWFM3WE5zaDJuOWN4OUl1dFk3MW04UncxUGorVDBvcGQ5c211dFJLNGJTZkV3eFZydXFsYWNOckI5SFJjbisxYnd5UDFUOXJ0YXZGRWVLL2lET29qZ01ya2wwQTlxUmV3TjJMQkFBQXdNbGN3MTFmd0thK09vSHYrSHZqNjhkMTZZbXV1TGJuRUVZTnI1MldVbTRhWHYrcjhQZmZ0d2t3RWZGTFJOekVjbm1jRm9kS3JPaHNMSzFqL1BnQXg1cGh3L3ZmTkZSekdlbngvKzMzODhZKy9rNFV6KzQ4NzAxSDUzbGRKRWRQRzE4L09VTDhIdzVRelFzT3hqSkdBUHU5Z0pPRkR3QUFjQnJHRjdLZHc4d2NsVkttUGY2T1hYeTNqNW41cFBWbWZtYmVoVWxIK3U5RFF4OGZ4R1VrK2gxRXJmSzg2eVRzZEp1eHVTWUJUQ0ppa3BuM0RjZXhxempNVS82anpMeHJXUEpqdmM5K2JQMHl0YXJDeno2blpleWYxcVdwZG1YcHZMOTZpTjJyZVZ4bDVuMWpRbUJrNXNmR3NmSnRhOTgvcy9ac1RYNXJPcy9yNlB4dTFrSFN5Ry9SVWFXYUxUOFR6b1prRjREOVhOaStEamZEQUFBQVRzbkxDOXZXYVYrL1hDbGxrWmtQMFRhcE5JeUl6NW41ckdFaVpCd2RMNGtFUC9Hdmh0Zk9HMTZyajNmcnFpR20vMm9ZbTIvak5KSTIzMlRtZk1mbHRsYUpMcCtqZmVtUjNpN2hZZW04Ny9vUWJRa0I0OHlNWFJOZTZyMys2M1B0Y3lkK25uZXpiV0paaCtkM0h6cUl4VHd6cDNHNHVhUlpZeUllOUk1a0Y0RDlYSkM0VWNBbG1MajRCZ0RnVEs3alJ0RStjVFk5NEZjZXhPNlZBeUtXa3o2M1BTOWgvaW5hSjVhdUl1S1BPaEV5M2FJL0RHSzU3SUhySFU3RjFTNWpVQjM3WGd0ZnAxb21FY2VaK1hhWHBXL3E1UEdweE9nK001OUd4RmJIb2RwZjd6czRYa2QwTUVuOWlKMitZMWRWYTg1TktXV1dtZlBHdGgvWCsvWmJMUzlWSzRDMDN1dWZTekQ0N2o3WXhYbmU1enB1dnQ5dy8zclQ0WEZ2MG1Fc1JnZUt1Nm91bkIzSkxnRGRleGVXTCtKOHplb0orS1RlU0JrTENRQUFaNkMxcXN1a3RUeitOdXJOK2krTjE1N2ppSGpmMXdZcHBVd3k4MDIwVDJvT1l6a1JNb21JMzM0MjJWVGpPbzdsUklqcmVnN3QzdzJ2ZlpXWmt4MFNCMHlxZDIvYStQcVB1MVNrYWwxeTV3aHhHa2ZFZFdhK3JjZlF4VSsyN1NvaVhrVjNDWWp6eDVZd3Fsb1NRb2VaK1hxVENmaHZqa0dmb3kyWjlaeTlqZmFsYjBZUjhhV2VFM3o0V1NMc1d2V1BZUWZmWFlMQi81N25QWFNRd0JUMWZPMWRacjZLWmZXY1Q5KzJheDBmbjljeHBLdnp1MGxYU2VQMW5QY1FjMHFMVUdHSU15VFpCYUJEOWNUSk9zZWNtMVdDeThNdVR4Y0JBRURQcitOV0NRNHRQaHp5TzYrVmYyLzUzaStqeDhrdWEzSHRxbkxxT0paUGRjOWpPYkg3YldMQjA3QWNNYWRyR011a3JoZVBYYmV2VlNRZUM5dmV4dWRaN0o2d3NIVkZxZzRTbDQ1VjVXdFZSZXRkWGNiajkyLysvVjkxWEI1Mi9MbHZOMnpMV1dPMW5IZDE2WnhOS2s2TXd3T1VqM25vTUVhcmM0S0lyOGxlODdXKzF1WDV3Q0s2cXdCeWJycElZRm8vRHI2T2lOY0hxbkwxZGcvOWU5L0g1WWVlVjNXRW5VaDJBZWpXdlJCd0JoYjFRdTlUUkV3bHVBQUFjT2JHamErZmI3TkVUb2QrYS96dVY1bDUxZk95K3U5am1aUXo3UEE5aDJHU24zNmFSbHR5MTFVc0t4WTh4REpwNE50OWV4UVJ2NGFIdEE3aFE3UlY1eGpHTW5scEhzc0owRDlqT1JHL2JyV2MzZlBHejRxZUhBZEdjWmlFdzNrcFpiTE4vMjg4QnEwcVRueUkvNjJnTTR4bG91VjFTSExacEo4dU12TTJ1ci8vdnU5Kzk1c0VneCsyNmFUdUg2ZFd6V2l5aC92bHJlZjFtMzRHbkIzSkxnQWR5Y3pYMGYyVEJuQW8wMWplREh1d2hpd0FBQmZtVmVQcmozTGp1RDV4UG8yMlNacFhFWEhUMTRaWm05aXkxQXBucjVReTdlaHA5T3VRMEhKc2sraG1PYlJoTENzVjdOT2xMV214N1RGdkd1MFQwTVBhSDk3WU5ackh5VWxtdm96VHFjUTJqLzVYMGV2RFB2bkhDWDNmUlhSZjFXVjFYdDlTRmV3eE0vZjhPVmQvRXdLQWRyWHN0UXNXVHNVOGxqY3piaVBpU1ZsNlZrcTVjOUlMQU1DRlhjdGRSZnREQzVNamJrTHI4a25YOVhxMnQwb3BEM0Y1azdGY0xuMzlETlFxRHBNVCticWZMcWhwM3U5UWllMkRIdDA3dDNHOHBiZTIvcTZxdWp3NlhzNWlEOGtqZS9SMmoxWFE5NWxBcjZvTFowdXlDMEEzWG9keWsvVFRQSlkzeTk1R3hMT0krR2NwNVpkU3lvdFN5bnZKTFFBQVhMaldxaTZUWTA1aTFLVVlXajUvRUtkUkFlSW1UbWRpQzFxWWpEb2ZiMDlnM0Zwc3VhVFBLZHRwUXIwbXg4eDE1LzZvOXpKdlQrQ3JQdFNFWFI1djA3czRqV1RQaDFMS1BpdjE3Q3NHaTVCTXl4bVQ3QUxRcUQ0Rjkwb2tPTEo1TEV1cnZxOFhmTTlxeFpaVllzdGRLV1hxYVFJQUFQakx0Vnhyb2tjZm5vaWZOTDcrWmQvYnFsN0hQQXNKTDV5NU9yRStGWW16YU10RjlIaVp1T3J0aFRUSElpSnVHdTZKdmRXamU3ZC9UYUxmeXdQTlRtRC83NXViR3JlTGJkTTlWZ1Y3TUNmQU9aUHNBdEJPVlJjT2VWSTlyUmR6cTBvdFQ5YVNXcDZWVW01cnhaYXBjQUVBd0U5ZE4xN0x6WHZ5eEc1ckpZaFJaZzc3M2xqMVNXNFRSMXlDV3lFNEQvVVlNZW5wMTV2dHVVSkJYeXhpK1VEWXJLRWRKeUVKclkvNzEyMVA5Ni9XNUtwTGJjOVZZdk9zcDIzNjRrQnR1bytsMDFTTjQ2ejlYUWdBbXFucVF1dko4bXp0OTMvVzM4L3JUMGhjQVFDQVhsN0xmZWpEUnBSUzVwazVqWWhSWXl4NlA4RmVTbm5JekdjUjhURThkTUtaS3FYTU12TW1JdTVGNHl6YTh5WXpJeUxHUGZwYWk0aDRjUUhoYjA1MFdmTWlJcjQ0OXZSeS8xckU4bUhVYyt0emw5aWVpM3FlOXpraXJucnl0ZWF4VEhTWkh5Z0cwOHljUjhTd283ZWM2WStjTzhrdUFBMHljK3dpaDdXTG1kbmFTZkMvdi9QMy96MXBGUzRBQURqcXRkd3cybStpVDNxMFNSK2lMZGxsSENkU1RhSk9BcXdTWG9aNk0rZW9sRExKektkeDJBU0o5N0dzZUdXLzZyNDkrNVR3c3BxTW41OTUyR2ZSNFFUMU41UHdnd051dzZlSWVHTXYrbW5iM0dibW54SHhMbzU3bjE2aVMwZjdXa1E4eWN6N0hveVpzOXFtaDY3UzgxdnR6MTI5RjV3MXlTNEFiVnhzWEpaWkxCTlovb3l2bFZmbUYzQ0RBQUFBemsxclZaZUhQbDBIMUlueGxrbWVRV2FPNjFJTnZWY3JYenlKWmVXTDZ3Tis5Q0k4OE1MaCt2bE5adjQ3RG5QdjZYMmRNQjVFdnlxUWFNOXV6V0s1dk1xNVQ4YS9qNGkzWFU5UTEyUFBvUkplWnJGYzBtVVk3ajl2ZWg0MGkyV0N3T2dJWDJFYWgxdm01cExHekUvMVhPOFk1MTV2U3lsM1I5cjhoK2dtMldWUjN3dk8ydCtFQUdBM21Ua0tUN3VjczJsRXZJM2xtdkJQeXRLVFVzcUxVc3BkS1dWU1NwbEtkQUVBZ0pNMGJuejloeDV1MDZUeDljOVBxUUZMS1l0U3lvdFlMaTJ4Nyt1eVJiMDI5SFFzaCs3bmQ3V1BML2JadDBzcHE4cE92NHY2M3R2elNTenZPUjNhK3poZTFZbHAvZng5bTlkdHZOMVgwa0dOM3k5N2JzT0h1aDJMK25rU0tEWnNtMUxLczNxOFBsVE1GaEZ4VzBwNUp0RmxMMjM2VVBlMzl3ZjgyR2tzNXdMdWpyamQ4K2dtU2VWQnYrUVNTSFlCMk4xTElUZ2JxeXpuMi9pYTJQSnNMYWxGK1VrQUFEZ1RIU3hITzY4MzMvdW1OUkhqdWk3dmRGSktLUStsbEY5aU9iazEzOE5IVENMaWwxT3Blc1A1MmVOazN6U1c5MERXKzdZbndQZmZucXNKK1dkeG1LU1gxUmgyZTh4Sno1cFF0YTlFbjNrc2s3WitPY1RTNFRVSjVka2VqanZ6V0ZZSCtiWkN5TlNlczFYN1RPcVllUnY3UzRaZHhQSWh5VjlLS2U5RmZlLzcyMjF0MDBuc0w1RnBWZm1xTDB0UmRaRllMMG1iaXlEWkJXQUh5cnFlaFZrc2J4UTlLYVg4czE1SXZwZllBZ0FBWjYrMWdra2ZxN3AwOVJUbzlhazJhbjFRNFpkWVZzR1lSTnRreUR5K1RtTGRlQ3FXSHZUdjljbSt0OUUyZ1R1SlpkV0laOTlXcTYxOTNYMlJ3N1RwdENaTVBJbmwvYWt1NHo2TDVVVC9hZ3liOTJTYloydmIzRHBPTDliNjhsRVNFdGVPT3pmUmxwQXlpNitWcGI5M0hGZHhhYmN4ODMySDV3VXIwOXBXdjlTSEpKMGZIUEE4dDVSeVU0K0ROOUZOY3VZOHZzNFBQT2xUWW5NZEMxckc3cGw1RGk1bWZCQUMraW96UDhkeDFsZThWS3NMTERicm4rTllyaGZKYVpuSDhzYjB4UEpEbmUwTEtRb0hkOHcxWTUyYk9EZHhmc0twNzhlamlQZ3NFbzVid0VXTis2T0krRFdXMVh5dTR2dFZmYWF4bkFUN3ZaNS9tQnpnRlByM1ZlM2ZUMnUvL3Q2MXlpcDVaYmJXdjAzTzlyZE5oM1djdXRwZzNGcHYzMFZFL0ZsL3Y1YzJianlQL3VGMTNUZmo5R3I3ZjdTZDg3cWR2UnluNjhPUjEzVmJyaHh6ZWoxdXJ2cmI2aWQrMEU1UjIybHYreGJOKzl6Vk4rZDZveC84OTNuOW1VWEV2MDloMzh2TS84VHUxU2h2VkNYa1V2eGRDQUIyWWdtajB6S0ppQStIS0dWNmdSZUlBQUFBdlZTdkFWMEhjcTc5ZTVYRVlnbU44Mm5UZVN3bll4OHVhSnZQWnB5dWlSQVRQZmtreGszT1o1ODd5M085ekx5TzNSTmRGbUZaUWk2SVpCZUE3VTgwaHVISi9sT3dpT1c2bEtxNDdNOUFDQUFBQUFBQW9ET3ZHbDc3b0FvUmwwU3lDOEQycm9XZzExWkpMdStkMUFFQUFBQUFBS2NnTThmUjlyRDFiNkxJSlpIc0FyQzlwMExRVzVPSWVLdVN5OEVNaFFBQUFBQUFBTnJVUkpmN2hyZVkxdVc2NEdMOFRRZ0F0anJaR0lUS0xuMDBqNGhucFpRYmlTNEhOUlFDQUFBQUFBRDRxOHk4eTh6N3pMeDY1UDhOTS9NKzJoSmRJaUkraURxWFJtVVhnTzJNaEtCM0poRnhhOG1pby9pSEVBQUFBQUFBd0hlTkkyS2NtWXVJbUViRW4ydi85bzlZempsZGRmQTU4MUxLUkxpNU5KSmRBTFpqQ2FOK3VYRUNkMVJYUWdBWVp3QUFBQURncDFhckJ1eHI1WUMzUXN3bGt1d0NzSjJSRVBUQ0lpSmVsRkttUW5GVVF5RUFEbkFqQUFBQUFBRDRQbFZkdUZoL0V3S0F6V1RtSUR4aDNnZUxpSGdtMGFVWGhrSUFIT2o0Q3dBQUFBRDhMMVZkdUZpU1hRQTJOeEtDWG5oV1Nwa0p3M0ZscHYwQk9CU0pwZ0FBQUFEd3YxUjE0YUpKZGdIWW5NbTI0N3VSNk5JYlF5RUFqRGNBQUFBQWNEUTNRc0Fsayt3Q3NMbW5RbkJVNzJVbzJ4K0FpL1NyRUFBQUFBREFYenlVVXFiQ3dDV1Q3QUt3T1pWZGptY2UxcDIwUHdER0d3QUFBQUJnSHFxNmdHUVhnRTFrNWlBaUJpSnhORGVsbElVdzlHcC9NUGtNSE1wSUNBQUFBQURndjE2WU13SEpMZ0NiTXJGL1BGT2wrSHBuSkFUQUlXV21jUWNBQUFBQWxnOEh6NFFCSkxzQWJFcXl5L0ZZdnFoL25nc0JjR0FqSVFBQUFBRGd3dDJVVWliQ0FFdVNYUUEyWXdtajQ1aXA2dEpMSXlFQURreVNIUUFBQUFDWGFoRVJ6eVM2d0Y5SmRnSFl6Rk1oT0lyZmhLQmZNdk1xSW9ZaUFSellWV1lhZXdBQUFBQTRGZk9PM3VkOVJQeml3V0Q0WDVKZEFPaXpCeUhvblpkQ0FCekpXQWdBQUFBQU9BVzFDc3N2RVhFYnk3bU8rUll2bjlYWC9WSkt1UzJsTEVRVS90ZmZoUUJnSTFkQ2NIQXpKM0M5TkJZQzRFaGVSc1NkTUFBQUFCeFdyU1pRUkFKZzYvRnpIc3ZLTE85WGY1ZVpvN1gvc3ZyOUlwWUpMcUdDQzJ4T3NndkFaZ1pDY0hCTzZIb21NNi90QzF3NENYakhOY3pNc2JXSkFRQUFBRGhWM3lTelRFVUVkbWNaSTRCSFpLYkovZVA0VXdoNnh4SkdHSmN3RGdFQUFBQUFjSFNTWFFBZVp3bWo0NWdMUVg5azVqQWlya1VDT0xKUlpvNkZBUUFBQUFEZ3NrbDJBYUN2WmtMUUsyK0VBREFlQVFBQUFBRFFCNUpkQU9pbFVzcENGUHFoTHVVMUZnbWdKNGFaZVNjTUFBQUFBQUNYUzdJTEFQQ1kxMElBRVJFaENhOC8zbVNtWlFZQkFBQUFBQzZVWkJlQXg0MkVnRXVWbWNPd1pBaXNXRjZ0WHo3V3lsTUFBQUFBQUZ3WXlTNEF3TTlJZEFINmFoZ1JINFVCQUFBQUFPRHlTSFlCQUw0ck0wY1JNUllKb01kR21Ya3ZEQUFBQUFBQWwwV3lDd0M5bEpsWG9uQjA3NFFBdmlxbFRFV2hsOFlTWGdBQUFBQUFMb3RrRndENmFpQUV4NU9aZHhFaDRRZzRGZVBNdk05TXg0N2xHRDdJektGSUFBQUFBQURuU3JJTEFIMDFFb0xqcUZWMTNvZ0VmTmRDQ0hwckhCR2ZMem5KSXpPSHRjck5sN0FNSFFBQUFBQnd4aVM3QU5CWHZ3ckI0ZFdxQ0pZRGdSK2JDVUd2WFVYRUg1bDVmVW5qZG1hT00vTnpmRTF5VWVFR0FBQUFBRGhyZnhjQ0FIcHFKQVJIOFM0c1h3U2N0a0ZFZk16TWg0aTRMYVhNejNFamEwTFA4NGk0RHNrdEFBQUFBTUNGVWRrRjRIRnpJVGlLUVYxT2h3UEp6TmRoMlF0NHpPOUNjREt1SStKTFp0N1ZxbFduUGtZUE12TTZNKzh6OHo4UjhURlVjUUVBQUFBQUxwUmtGNERIellYZ2FGNEp3V0hVQ2dIdlJBSTRRMjlpbWZSeW41bkRFeHVicnpMemRWMmlTSUlMQUFBQUFFQWwyUVdBUHJzK2g2ZngrNjVXMExrWENkaklWQWhPMGlDV1NTSmZNdk56Wm83N2VIeFpTMjc1V0t1My9CSExSTVNSSmdRQUFBQUErT3J2UWdCQWp3MGk0blZFM0FuRmZ0UkVsOCtoU2dCc2FpRUVKMjlVZis0emN4WVJueUppV2txWkhuajhIVVhFTUNKK2pZaXJrTkFDQUFBQUFMQXh5UzRBanpPeGVWeXZNdk45S1VVN2RFeWlDMnl2bERMTFRJRTRIMWYxNTAxdDExbjkrWGY5ZFJFUnMxMk9RWFdNSGRTZnE0ajRSLzExV0g4QUFBQUFBTmlSWkJlQVI1allQRHJWWGZaQW9nczBtWWRraFhPMVNuNzVkc3hjYi92NUQxNDcxQzhBQUFBQUFBNURzZ3NBcCtCTlpqNlVVbVpDMFM0enJ5UGlQaVM2d0s3bUlhbmhVZzIxUFFBQUFBREE4ZjFOQ0FBMk1oZUNvN3ZQVE1rWmpUSnpIQkVmUTZJTHRQaGRDQUFBQUFBQTRIZ2t1d0JzWmk0RVIzY1ZFZStFWVRlWk9jak0rMWhXZEFFY0V3QUFBQUFBNEdSWnhnaGdNM01oNklWeFprWXA1VVlvTnBlWlY3Rk1jcmtTRGVpRUpkVUFBQUFBQU9DSVZIWUIyTXkvaGFBM3hwbjVXaGcyVTJQMU9TUzZRR2RLS1pKZEFBQUFBQURnaUNTN0FHeG1MZ1M5OHE0dXljTVBaT1pWWm42TzVkSlBBeEdCemsyRkFBQUFBQUFBamtPeUM4Qm01a0xRTytQTS9KaVpFam5XWk9ZZ00rOGk0bytJR0lrSTdJM3FMZ0FBQUFBQWNDU1NYUUEyVUVxWmlrSXZYVWZFSDVrNUVvcUl6QnhIeEplSWVDTWFzSGQvQ2dFQUFBQUFBQnlIWkJlQXpjMkZvSmVHRWZFNU05OWRhcFdYekJ4bjVwZUl1QTlMRnNHaFRJVUFBQUFBQUFDT1E3SUx3T1lzV2RGdnJ5UGlTNjF1Y3ZaV3l4V3RKYmtNZFFFNG5GTEtQQ0lXSWdFQTBIUmRzMXFlZHQxLzZ0K05MelFtbzdyOS8va21McDlydkR6Z2NMNzd3YmR0ZnJIN0FRQUFiRUt5QzhEbUxGblJmNE9JdU0vTXMwMTZxVGMrN3lQaVA3RmNybWlvMmVGb3BrSUFBR2QzcnQxaUpJb2J4L29xTS8rSVplTCs5WGV1NjY3cnRkMGZtWGwxSVRFWlpPYm5pUGhjdC8vYnBKWlJqWmVsZk05M1AvaTJ6VmY3d1pkTDJROEFBR0Fia2wwQU5qY1ZncE14aks4M2hPNHljM2pLRzFOdmdMMnJWVncrUjhSWUUwTXYvQzRFQUFEYlg5L1U2NXBOSnUrdllybHM3ZFVGeE9STExCTmFOcm5lL2F6aXgwWHRCOE5ZSmpsZGl4d0FBSHdsMlFWZ2M1WXhPajNEV0ZZLytiSXEvM3NxSlovclU2V3JCSmMvWXJsTTAxQ1RRcTlNaFFBQVlLdnJuRUVzSi9pM3VTNGJ4REs1WTNpazcvejZBSlZVN3JlTVNjVHlBUS9WUHZiVDV1LzIyZVoxUC9pNFk1dTdMd0FBQUpWa0Y0QU5sVklXSWVIbGxGM0g4Z2JpZjJvcDdMdStsSDZ1NWFwSDlUdDl6c3lNNVExZ0NTN1E3K1BDTENMbUlnRUFzTEYzc2YwRWY5VFh2RG5DdGRwOS9jNzcvSXk3Mkt5NngvZmNrbkhiMlFBQUhrcEpSRUZVNjFLZFg1dC9yTmZpKzdUcmtzUURiUTRBQUYvOVhRZ0F0aktMM1c5QzBSOVg5ZWZOTXE4a1p2WG56L3JydkpReTM4Y0gxd1NiUWYzOFgrdXZRMDBDSjJzYWxoWURBTmprV21qUWVONDB6c3kzKzdwVys4NTMzWFNKbVZZdlc2NXRNM05VU3BucVlhZlI1aDNzQjZQTXZLcUo5d0FBY05Fa3V3QnM1L2N3cVhtT1Zza3YvMVdUWU9ieHRXckRMQ0wrYjh2M2ZWcC9IWVFrS1RoWG54d1hBQUEyY3QzUmU3emY1NWVzU3dQZEgrSWFybjdXc1BGdG5vZmxOYnRvaDIyWDE5clZxSVBQdVE2Vmh3RUFRTElMd0pZZVFzbllTektNcnpjZVI4SUJmTWRVQ0FBQU5yNithdld2Zlg3QldvbnpZeHdtNlNHaW00UWFEMWEwdGZrNGRsOWU2MWp0OWF1V0F3Q0FpTDhKQWNEbVNpbUw4UFFNQUg4OUxqeUlCQURBUWV3dHNhTW1QUnlxdXNmS1VKTWVUMmEranVVRFRZTVQrK29EclFjQUFKSmRBSFl4RlFJQTFud1NBZ0NBZzVqdjQwMHo4MTBjcDRyclFwTWVSMmJleDdLaUN3QUFjS0lrdXdCczc0TVFBTEJtS2dRQUFJL3FJckhqMzExK29jd2NaT2JIaUhoOXBKaDBVVGwycm10dDNlWi9STVQ0U0YraGkvYjZYVXNDQUlCa0Y0Q3RsVkptNGVrckFMNGVGK1loNFFVQTRERVBQWG1QaUZnbVBjUnkyYUxySTU1SFRxUDkvb0xFaDgzYi9LcTIrZFdKN3dldVBRQUFJQ1M3QU96cVFRZ0FXS1BxRndEQVQzU1FJRHl0RDU4MHEwa1BYK0s0U1E4ckxmY1g1cVdVaWQ2MVVadVA0dmlKTGxGS1dVVEVwTEhOcDFvVUFBQWt1d0RzNnBNUUFMQkdFaVFBd09OdWovVGEvOHJNY1N5VEhnWTlpc25pbURFNWR6MXM4N2NOYlg2alJRRUFZRW15QzhBT1Npa1BZU2tqQUw0ZUZ4WWg0UVVBNExGenBsbnNObGwvMDBWVmw4eDhIUkgzMFora2g5VjU1TFBZL2g3RCszcHZncCszK2J2YTVuM2FEK1lOKzhGVXF3SUF3SkprRjREZFRZUUFnRFdXTWdJQWVFUmRkdWRGYkpiY3NZaUlGMTBzMVZNVFhkNzFOQ2F6V0NhOHpEZU15VTBwUlZXWHg5djhYVVM4N21tYlA4VG1TVTZyTnA5b1ZRQUErRXF5QzhEdVRHb0M4Ri8xaHZWY0pBQUFOanB2K2lXV3k3bDg3L3hwWHYvdGx3NnJsd3g2SHBOWlJEeUo1ZEpFc3gvRTVIMUVQSkgwc0xHcm5yZjVkSXY5UUpzREFNQTMvaTRFQUxzcHBjd3ljeFk5djNrQ3dFRjlpSWczd2dBQThPZzE5U0lpN2lMaUxqTUhhOWZXcy9wdmx4cVQ5eEh4L3B1WXpPdlNOOWdQQUFDQVNySUxRSnZmb21kclB3TndWSk9RN0FJQXNKVTZxVDhWQ1RIUjV0b2NBQUEyWlJramdEWVBzZG42eWdCY2dQckU3VVFrQUFBQUFBQmdmeVM3QURTb1Q5MU1SQUtBTlIrRUFBQUFBQUFBOXNjeVJnRHRmb3VJMThJQVFFUkVLV1dhbWRPSUdJa0dBSEJNbVhrVkVZT0lHTmFmaUloWkxDdVVMa29wTTFGaWgzNDFpSWlyK3NmMTMwZXNMY05UU3BtS0ZqM3V4NnZydGZYeGNWSEh5SWlJZWEzY0NRQkFUMGwyQVdoVVNwbG41aVFpeHFJQlFQVTJKTHNBQUJ0WVMwaloxbmVUVlRKekhCSFA2N25JNEpIUGpsZ21KL3dlRVEvN1RuN0p6R0Y4blZUZTFrOG5udGNtcm4va1h3MWYvYXJHYXB0N0JkTU5ZL0p0c2tobk1lbTRqMTVIeE5QNlhYL1dyOTU4MDcvbXNVd2UrQlFSMHk2Lzd3WnRQdWhwbSs5bFAyanNTejhjVTQ0d3RtMFZ6eTMyczFVZkhtMGEvOHhjSmI4Y1pJd0VBR0E3a2wwQXV2RWhKTHNBVU5YcUx2UFkvU1kyQUhBNTNzVnVTYkxUaUhnVzhkK0ozTmNSOFNxMm4xd2UxWjgzbVRtTGlOOUtLWk05YmVzNDFwSWh0dlEySXU1Kzh1K2Y5OXhHVzU4U2J2ai9yaHErKzJNeDJWbE55QmhIeE12R2M5cGgvYm11N3p1TmlBOGQ5YkZUYmZPOTdBZWxsRVZtZm96ZEUwem1FZkZMaHpIOG8rRzFuWHlYbWhEMU1uYS9aemY0Wm95Y3g3TEM4NlF1YlE0QXdCSDlUUWdBMnRXblRhWWlBY0NhdDBJQUFPeGJuY3o5STVhVDU0UEd0N3VLaVB2TS9MSkIxUXpPc3o4Tk12TStJcjdVUGpYcytDTkdhMzNzV3NRNzk5RHcybUd0eHRKRlA3bys0blpFWm80eTgzTXNFNkxHSGNaM0dNdEVxQytaZVZjVERRRUFPQkxKTGdEZE1ha0p3SC9WcDFXVnVRWUE5aVl6WDhkeU1uZlk4VnNQSStKelpyNFQ1WXZxVCtOWUpybU1EL0J4dzRqNG1KbWZKUXgwNmxQajYxOTI5RDJlTjc3K3R4Mzc4S0JXdC9rYysxMVdkaERMWkxBL0pBWUNBQnlQWkJlQWpxanVBc0IzM0FvQkFMQW5vOWh0cVpWdHZKYU1jUDdXcXJuY1IzdDFvRjM2OFpldUtvcGN1bExLUTBTMExLL1RWYldkbHZlWmxWTG1PL1RqNjFnbWF4MnlZdEF3SkFZQ0FCeU5aQmVBYnQwSUFRQXJFaUVCZ0RNd2l1Vmtyb1NYTTFUYnRldWxYclkxcUgxTXdrczNKZzJ2SFdibXNMRlBYVWRiMHRTSEhUN3pkVVI4ak1NbmE2Mjh6c3lQeGtrQWdNT1M3QUxRb2Zya3lVUWtBRmhqbVRzQTROUmR4ZjZyeUhCZ2E0a3VmVWd5a2ZEU25RK05yMit0ak5LNmhOSERsdjM0dmlmajAzVklEQVFBT0NqSkxnRGRleHR0SldNQk9DTzF1c3RFSkFDQUV6ZXUxUk00SCsraUg0a3VLNE9JVUIyai9mcGpGaEh6aHJkNDJmZ1ZSZzJ2ZmRobUNhT2E2REx1VWZpdllya2NHQUFBQnlEWkJhQmo5YUw4TjVFQVlNMXRTSVFFQUU3Zkc0a0k1NkV1TlRQdTRWY2JSc1FiTGRTc3BickwxYTVMR2RYS1BNT0d6LzYweFdlTmU5cUhyek5USlN3QWdBT1E3QUt3QjZXVXUyaDdpZ2FBOHpvdUxNSnlSZ0RBNlJ1RTVZeE9YazFZNm5QMWlkZTdKbHZ3WDVQRzErKzZsRkZyVlppSERmdncxUW4wNFd2ZEVBQmd2eVM3QU96UGpSQUFzRkpLZVI4Uk01RUFBRTdjV0NMQ3lYc2R5OFNsUGxQZHBlM2FZOTU0N2ZGMHg5ZTFKSGc4MUljRWZxb21hMzA4Z1dhNFZ3a0xBR0MvSkxzQTdFa3BaUm9iUHBFQ3dNV1FDQWtBbklPeEVKeTBWNmZReHlSVk5XdFp5dWg2MjBTTkRwWXcydlQ3dm1uOG5FTVpoS1F0QUlDOWt1d0NzRjgzRWJFUUJnQWlJa29wczdDY0VRQncrbDRLd1duS3pIRjBWOVZsRnN2bGN0NnUvVXlqdS9zZ2xvRnBNemx3L0VjTm43VW9wVHhzMEgrSHNheE0xS1Y1N2JmVGp2dHZoQ1c1QUFEMjZ1OUNBTEEvcFpSRlp0N0VhWlJYQmVBd3g0YTd6SHdlRVZlaUFRRHN5U3lXazdiL3QvWjNUNk50TW5yZE1ET3ZhaUl2cCtWNTQrc1hFZkZiUkx6LzJaSXptVG1LWlZXTFVlTjNmYS9KZHI3dVdHVG1RK3llTlBROHRrdVlhVW1DMjdReWNsZVZVcWF4ckNUejNhV1RhcFdhbDdHc1l0V2FIUFltVlBnRUFOZ0x5UzRBZTFaS2VXaTh1UURBK2JtSmlEK0VBUURvMkNRaTNwWlM1dC83eDdvc3ladm9wakxDS0paSk5YM3hXUFc4bG1TZlNVVDgrMHo2eUtqaHRiT0llUGF6SkplVnVyVHpORFB2WS9kbHIwYU5iZjR5ZGwvdTVsemEvRlBzZmo5cTQ5ZlY2aVV0eWZ3Zk52eU1jV004RmhGeDgxZ1ZtWnJJTjh2TXR4RnhIMjMzOU1hWmVidkpmZ01Bd0hZa3V3QWN4azI5NkI4S0JRQ2xsRmxtM2tiRU85RUFBTHE2N2l5bFRCNDVCMWxFeEcxbS9obkxDZHdXVDZOSFZUZEtLWGMvKy9mTXZJdmRFejArMU9TTmsxYXJWZXhhcFdJUkd5YTZmTk11TjdYS3kzREg3eno2VWV3M2FQT25zZnQ5bUxObzgxaFdUTGx2NkRQWG15d3ZGRzNKSVBNTlkvMnFNUmFyUGp6Ym92OHVJdUpGWTlKVzFOZXFVZ1FBMExHL0NRSEEvdFdMWXlWTEFWZy9OcnlQemN0MUF3RDh6TzFqaVM3Zm5JZE1JdUsyOFRNdHlYaDZobzE5Yk5mS0ZCK085SjFkY3l6YmJOTHdGcHN1ZTNXSUpZeGFFbXEyVG5UNUpvNDMwVmJKNnFYZUNBRFFQY2t1QUFkU24xSjVLeElBckxtSmlMa3dBQUFOcGpXSmR0dHIxUGVONXlGRG9UODVMUWxLeDByUzFzL2FmV3A0N2FNSkpuVjV0SDB2WWRSYUxmbnRyb2t1YTFvU0JLOXFuQUFBNkpCbGpBQU9xSlJ5bDVtL1J0dlRLQUNjejNGaGtaa3ZJdUp6N0Y1U0hnQzRiTDgxdlBadHRDMXhjdFhCQkRLSE05M3hkWXVHcWk0Unl5V3ZPTjQxeDBObUxuYTgzaGhzc0pSUjZ4SkdtNHdoTHhzLzQzMEhjWnhtNWl4MlQreTVqcllxT3dBQWZFT3lDOERoM2NUeWFSUWxud0dJVXNvc00yK2pZYUlKQUxoWWkwY21vUi96MEhnT0lsbjN0TTQ3cDdGN3dzdE9Ndk11SWtZTmJ5RlJwaHNQRVRIZThiWFA0K2VWZlo0M2ZLOU5rL1g2VXBYb1U4TjMrVlUzQkFEb2xtUVhnQU9yVC9IZmhLZjRBZmg2YkpqVXlsK3ZSUU1BMk1LMGcrdlRsa29GOEJkMXFaWlJMSk5VcnNNeVJIM3hXK3llN0RKNnBMMWJLcnM4dEg2SFRWNmJtWjg3aW1OTGZ6Yk9BZ0IwVExJTHdCSFVwL2h2SXVLamFIREdKckg3elRTNHhHUERiYjFaYkw4QkFEYjFad2Z2c1JCR0hwT1p3MWhPOUEvaXI1UDIvNHF2Q1FBamtlcnR0Y1lzTStleFc3TEc4Q2RMbHJVa3VzeEtLZk1OK2w1cmtraGZra3pzSHdBQUhaUHNBbkFrZGMza203QnNCZWRwRmhHM3NieVJOaElPMk5odExHL0dldW9QQU5qRXRJUDMrTjA1Tyt1K3FjNXlwWCtjallmWXZaTGt5M3FkLzYyV1phWTJYY0pvY0U3N1ZpbEZnaUVBUUVmK0pnUUF4MU5LbVVURWU1SGd6TXdqNGxtOWdmTkpPR0NyNDhJaUlwN0Y5MjhrQXdEQTNtVG1kV1oraklqL3hMSVM3ZXVRNkhKT1BqUzg5bnJMdjkvRUlaWXc2aHNQTlFBQWRFaXlDOENSbFZKdVk3bmNDNXlEUlVTOFdIdFNhU29rc1BWeFFjSUxBTEFwNXdzMHEwa3VYMktaNEhJdEltZDduVEZyR0RPRzN5NG5sSm5Yc1h2VmxRY1ZUZ0FBYUNYWkJhQUhTaWszSWVHRjA3ZUlaVVdYMlZyZm50Vy9CN1k3TGtoNEFRQTJQV2VBbldUbUlETS94ekxKWlNnaUY2R2x1c3ZvbXo4L2IzZ3ZWV0FCQUdnbTJRV2dKMnJDeTROSWNNSmVyQ2U2ckprS0RleDBYSkR3QWdEQVh0UXFIVi9DTWtXWHB1VyswOHR2L3J4ckZhQkZ1UDhGQUVBSEpMc0E5TXRObU5Ua1JQdHVLV1g2ZzMvN1hYaGdOeEplQUFEb1drMTArUnk3TDBIRDZWNWZ6R1AzQjFLdU1uTzQxb2NzWVFRQXdGRkpkZ0hva2JWSnpZbG9jRUp1U2lrLzY3TlRJWUpPamcwU1hnQUFhSktaZzVEb2N1bGFsakphVlhONTJmQWVsakFDQUtBVGtsMEFlcWFVc3FoTEdrMUVneFB3V0tKTDFLV05QTFVGamNlR1dDYThURVVEQUlBRzkzSDRSQmRKMi8zU3hWSkdPeTloVkVxeGhCRUFBSjM0dXhBQTlGTXA1U1l6SXlMR29rRlBQWnJvc3VaQlg0Ym00OElpSXA1bDVyMzlDUUNBYldYbUtIWlBVdGpVTkpZUE8vd1p5eVNYYVVTc2xrMmlKOWNWbWZtd1kxKzRxdjFvdU9QSFQzYnNVMjhhK3VQYkhvVmY0aGNBUUlja3V3RDBXRTE0V1VURWE5R2dSeGF4VEhUWjVtbXMzOFBrUEhSNWJQZ3pJdDZKQmdBQVczalYwZnM4eERLWlpSckxTaDAvbmNDdkQvTFFMNTlpOThTbis0YlAzV1VKcFpaS3NjTlN5bFJ6QXdDY0o4c1lBZlJjS2VVMkltNUVncDVZUk1Tekhjb09UNFVPT2owMnZJL2xza2FXQ0FNQTJML0JtV3hIYTFXWHR4SHh6MUxLaTFMS1hTbGwrbGlpQzcyOW5wZzBYRXNNZDN6ZGZKZiswdGpIaHJVU0RRQUFaMGl5QzhBSnFEY2hUR3B5Ykt0RWwxMXVUczBqWWk2RTBPbXhZUm9SVDBJcGJBQ0FmYnM2OVEzb1lNTC9waWE0N0hKZlluU0NJUnRlUUw5K09QRG5mV2g0N2JUaHRXOENBSUN6WkJramdCTlJTcGxtNXJOWWxvdTlFaEVPYkJiTFJKZVdoS3RwV01vSXVqNDJ6Q1BpU1dhK0MwdmVBUURzeTY5bnNBMHQ5eEVtOVNHY1M0cmYwNGlZbkhtLy9uVGdhL1NXZVA0ZXV5ZE5qVEp6M05pSEl6TUhqZnRSV0ZJSkFLQmJrbDBBVGtncFpiYVc4SEl0SWh6SVF5eWY0bXV0TFBSN1NIYUJmUjBmYmpQejkzcDhHSWdJQUVDbnJqUHo2c1NYN0drNVIveDkxeGRtNWpDT2QvK2lKVUZpbkpsdmEzTDV1VjVEUEdUbVBBNVR4V2JXR011SGFLdlE4aTR6WjQzN2NPdTl1SWV3eERNQVFLY3NZd1J3WWtvcGkxTEtpNGk0RlEwTzRHMWRqNzJMSmJRZWhCUDJlbng0aUloZjdHc0FBSHZ4T1RNZnJlcVFtWVBNOUhES1YrOU8rTHQvck1rNm03VDVxVmJnUGRTMVE4c1NSbEdUVk9ZTmJ6R28rL0JvbHhkbjVsMjBKMjE5TWh3QUFIUkxzZ3ZBaVNxbHZJK0lKNDBYKy9Bamk0aDRVVXE1NjdEUExtSzVIQkt3djJQREtpSHlSZDJQQVFCWWFyMFdHVVRFSDVsNW41blhxeVNJekJ4bTVpZ3pYMmZteDRqNFQwUzhPclBZUGQzbFJaazVqdE91U250VjIveGRiZU5WbTEvVlA5OWw1dWZhNXFlNm5SOE85RGxkSk5YODFzRSsvTG51dzhNTisvQWdNKytqcmFwTTFHc3pEeVVBQUhSTXNndkFDYXRQdGp4eHdVekhaaEh4ckZhSjZOcFVlT0VneDRkVmxaZUphQUFBUkVSM2ljRGppUGdZRVY4eU15UGlTMFI4am1VRmszT3Q2REt1aVNzYnk4eDNzVnoyNVppNnVQNGNSTVRyMnNhck52K2ovdmxON0w1TVVsK3VHMW9ycG16aW9hUGxvQ1lkN2NmajJwYjNtVG4rTnZHbEpyaU1haC8rRXQwc3gvelFVY1ZjQUFEV1NIWUJPSEdlNHFkamsxZ211dXlyQXN2dlFnd0hQVDdjUk1TelVGVUpBSEJ1Tkwzd0VMUnUvMzJ0WkRMNDBYK29TUUxqelB3U3l3U1JZM01PdkpsOVYzZjUxTkUrdklqMjZpN3J4ckZNeVBxU2EySlpxZWR6N2NPRGpqN3JyVzRHQU5BOXlTNEFaNkkreGY4a1ZNNWdONnRsaTI3Mi9MU1IvZ21IUHo1TVN5bFBJdUkySkVVQ0FKZnRrcTlINWgyOHg1dUkrRTltZnE1TCs5elZuM2RyeS9uY1I4U3dKK2ZCaTdEMDh5WW1lMzcvTHF2R3ZqL0JOcDEwVk5rR0FJQnZTSFlCT0NPbGxIa3A1Vm1vOHNKMnBoSHh5NTZXTGZxMmp5N0MwM1Z3ckdQRSsxZ3ViZlRXTVFJQXVGQ2ZMblhENjJSN1Y5ZGlvMWhXdlhoVGYxNUhmNWZ6c2V6ellmdkd0eVpkUGxCVDMrdjJoTUo3YXQ4WEFPQ2tTSFlCT0VNMWFlR1gyUC9UT1p5MlJVVGNsbEtlSFhqdDZLblF3OUdPRDR0U3lsMDlScndYRVFEZ3dsejZOZktIQzl6bTMzVDdvL2FOemhQTTZqMnZVN21XZVh2Zyt5MEFBQmRGc2d2QW1hb1RtamNSOFN4VTB1Qi9QY1N5bXNzeGJoQjlFbjdveFRIaU5sUjZBUUF1N0J3b0xqdmhaWEpwNTMyMWFzbFU3OStvYjNSdHNhOEtzdlZhcHUvM3VoNk9kTThGQU9CaVNIWUJPSE9sbEdrcDVVbEUzSVRKVEpaclc3OG9wYnc0MXRORnBaU3Bab0RlSENQbWE1VmUzdFl4Z3RObnlUZ0ErTEdMVGZTdDE0Q1hXT25rUnJmZnFHOTBuWml5N3lXayt2eHcxMXkvQXdEWVA4a3VBQmVpbERJSlQvQmZza1Z0K3lmN2VySnFTMU5OQXIwNlJpeEtLWGVsbEY5aWVWTldvc1JwbXNReW9mR2ZQUm5yQWFDUDV6M3ppTGk5NE8yL3U3Unp2ZHJtYi9YK1IzVmRoZlhEbnR0MUVmMU1lRm5VYzNMMzNnQUE5a3l5QzhBRldVMW14akxwUlNuVnl6R0paWkxMWFk5dXR2eXVXYUMzeDRwSnJRajJKQzZ3MVAwSmVvaGxndEkvU3lrM2tsd0FZTFB6bmJqczVZeGVIT2tjYjNIRU5yKzc4RGJmOUx5eXF6YWFINktxYXc4VFhoWVI4YXlVNHVFQkFJQURrT3dDOFAvdDNkRnhHa2NBQnVEL1p2SWVwNExJRlZpdVFGSUZqaXB3cUNCREIzWUZjUW1vQTZXRGN3Zm5EbEFGd1JWY0huYlBNTEZrR1lIZ1RuemZEQU1qalJEc0x0emUzcis3SjZpR1h1WXBvWmVGRW5teDJwU1F5NnpPWkJ2YmF3UEdmYXpvNnZmSGJ5bGhDaUdLY1ZqVlkvZDFTc0RsdWdhVWhKSUFZTHUrenV4VXo0ZnIrZUZWRGhzK21ZM2dQSEN1VC92RGRySFByWXh1RC9tNmExai8ySk82dXBReEdFRVhBSUFERVhZQk9HRk4weXpyQUovdGpWNldObVVtMFdobkU5VVpYdG9iVE9kNHNXaWE1anFKNE12eHZ0ZUhyZWkrcmVBaTRBSUFPL2R4WmpuUjdXM3F1ZUpWa3VVei82dGhTNWRGanJ6Q1p3MUZYTWRLdHoreXI2Mk1ibzVRdi9NRHRlbjdmRW9aaDFscVFnQUFoeVBzQXNBUWV2bVFkZWpGeWZrMHRWbUhYTnFKdkY1Z1dzZUwxVDNCbDBXRTEvYXRTeGt3SDFadnVhcGIwWmtsQ2dENzc5OThTTm0rc1QzQjk5N1Y5LzVjNFkrdW5xUGVqdWtjY0NNVTRaejArN0xaeDFaRzNiSDZyWFVzNUcwT042RnJXZHY0WEJBZEFPRHdoRjBBMkJ3VVdOV0xhYTh6amlXRytUbUxKSzhuRkhJWmZGWjFNUGxqeG1KanE2TmhVTm14WXp1cnJGZHV1VW9KdDd5dEErWldid0dBdy9ScnVxWnBybXAvWnBHblh5UmZwZ1JINWhQcjArMDcvTEZLTXE5OW1tNnpuRE9Ta0hUVE5HMnQ4NnNkNjN3SUtTOWUwRWRpMTFVY2IwYlFwaitrVE9pYTUza21kSFZKWmszVHZKN1lPQXdBd0l2eWl5SUE0SUhCZ1VXU1JkLzM1MG4rU3ZKSGtsZEtaalNXS1FOSW55WjhJYlJWamZDaWpodGR5cUJ2a3FUdis4c2tsMGt1a3B3N2hpUXBGMUdHY3ZxU0k4NTZCZURCUHZiSEhmLytLVzV5M0NCNGU4RDMzQjdwZFc3VG41a2xtZFZ6NGN2YWg3bDQ0RSs2SkYvcmErdWVlRzYyUzd0cjkvamUyeVJ0My9kbkcyTUFaMXMrelcyU2YrcDR3a1BtV3o3djhwbnJ2SzNsT0t2OTEvTkg2dnp6UnRrL3RjNUgvVG1vN2ZGdWg3OGZ4WmFudFc0K0pmbFVQOC92NjJmNi9JbFAyYVZzODNTckR3OEFNQTZOSWdEZ1ovVjkvMmVTZHltRFhoekhiWktialdXZ3A5Nm0vbzBMNE52NldHZXB3ZFErNzJjcEE4dm5LUmNQenJMOUJaUXBhVk11enR3Tmo1dW1XV29KQU1CRSsyKy81dnVRd0xmZ2g5VXRtRmpidnN3NjJQVDdQZWNsUXo5K2xSSnEwcjRCQUVaSTJBV0Fwd3dLbktVRVh0N242VE5pK0hsZHltelAyNWQyb2JUdis3KzFvYTNkUERKVEVxYjJQWENaZGZEbFRjcUE4eFJXZ2xsdTNPNDJIbmUySGdJQUFBQUFlRjdDTGdEc1pDUDQ4aTVsT1ZqMlk1bjFLaTZXeHdWTzlSZ3poRjZHQUV4eS82emlYWTgvdy9aQ200WnRDWWJ2NU9Yd2MyRVdBQUFBQUlEakVuWUJZRy82dm4rVkVueTVxUGUycDlsT20vWCt6MHZGQVFBQUFBQUFBTjhUZGdIZzJkUVorWmV4NnN0RGxsa0hYRm9yQlFBQUFBQUFBTURqaEYwQU9KaU44TXRGeWhZVVp5ZFdCRjFLdU9WTFNyaGxxVlVBQUFBQUFBREFkb1JkQURpYXV1M1JFSUI1a3hKK09YOGhiNjlOV2JubFM1S3VhWnBXalFNQUFBQUFBTUR1aEYwQUdKMjZBc3haU3ZEbDkvcDR1STFKbDJSVjc3K21CbHlzMkFJQUFBQUFBQURQUjlnRmdFblpXQTBtOWY1VmZUeUVZalp0L3Y0eHkzcjcvOC91N3ZsOTF6VE5TbTBBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFjSHIrQTNMQmQ0YXc4VXlMQUFBQUFFbEZUa1N1UW1DQ1xcXCIvPjwvZGVmcz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTIgMTRcXFwiPjxwYXRoIGQ9XFxcIk0uNjY3IDdhLjY2Ny42NjcgMCAwIDAgLjY2Ni42NjZoNS4wNkw0Ljg2IDkuMTkzYS42NjcuNjY3IDAgMCAwIC4yMTcgMS4wOTMuNjY4LjY2OCAwIDAgMCAuNzMtLjE0NmwyLjY2Ni0yLjY2N2EuNjY3LjY2NyAwIDAgMCAuMTQtLjIyLjY2Ny42NjcgMCAwIDAgMC0uNTA3LjY2Ny42NjcgMCAwIDAtLjE0LS4yMkw1LjgwNyAzLjg2YS42Ny42NyAwIDAgMC0uOTQ3Ljk0NmwxLjUzMyAxLjUyN2gtNS4wNkEuNjY3LjY2NyAwIDAgMCAuNjY3IDdaTTkuMzMzLjMzM0gyLjY2N2EyIDIgMCAwIDAtMiAydjJhLjY2Ny42NjcgMCAxIDAgMS4zMzMgMHYtMmEuNjY3LjY2NyAwIDAgMSAuNjY3LS42NjdoNi42NjZhLjY2Ny42NjcgMCAwIDEgLjY2Ny42Njd2OS4zMzNhLjY2Ni42NjYgMCAwIDEtLjY2Ny42NjdIMi42NjdBLjY2Ni42NjYgMCAwIDEgMiAxMS42NjZ2LTJhLjY2Ny42NjcgMCAwIDAtMS4zMzMgMHYyYTIgMiAwIDAgMCAyIDJoNi42NjZhMiAyIDAgMCAwIDItMlYyLjMzM2EyIDIgMCAwIDAtMi0yWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCI+PGcgY2xpcC1wYXRoPVxcXCJ1cmwoI21hZ25pZnlpbmctZ2xhc3Nfc3ZnX19hKVxcXCI+PHBhdGggZmlsbD1cXFwiI0E2QjVCQVxcXCIgZD1cXFwiTTEyLjkxNyAxMS42NjdoLS42NTlsLS4yMzMtLjIyNWE1LjQxNyA1LjQxNyAwIDAgMCAxLjIzMy00LjQ1Yy0uMzkxLTIuMzE3LTIuMzI1LTQuMTY3LTQuNjU4LTQuNDVBNS40MiA1LjQyIDAgMCAwIDIuNTQyIDguNmMuMjgzIDIuMzMzIDIuMTMzIDQuMjY3IDQuNDUgNC42NThhNS40MTcgNS40MTcgMCAwIDAgNC40NS0xLjIzM2wuMjI1LjIzM3YuNjU5bDMuNTQxIDMuNTQxYS44OC44OCAwIDAgMCAxLjI0MiAwIC44OC44OCAwIDAgMCAwLTEuMjQxbC0zLjUzMy0zLjU1Wm0tNSAwYTMuNzQ1IDMuNzQ1IDAgMCAxLTMuNzUtMy43NSAzLjc0NSAzLjc0NSAwIDAgMSAzLjc1LTMuNzUgMy43NDUgMy43NDUgMCAwIDEgMy43NSAzLjc1IDMuNzQ1IDMuNzQ1IDAgMCAxLTMuNzUgMy43NVpcXFwiLz48L2c+PGRlZnM+PGNsaXBQYXRoIGlkPVxcXCJtYWduaWZ5aW5nLWdsYXNzX3N2Z19fYVxcXCI+PHBhdGggZmlsbD1cXFwiI2ZmZlxcXCIgZD1cXFwiTTAgMGgyMHYyMEgwelxcXCIvPjwvY2xpcFBhdGg+PC9kZWZzPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyMCAxNlxcXCI+PHBhdGggZD1cXFwiTTE3IDBIM2EzIDMgMCAwIDAtMyAzdjEwYTMgMyAwIDAgMCAzIDNoMTRhMyAzIDAgMCAwIDMtM1YzYTMgMyAwIDAgMC0zLTNabS0uNDEgMi01Ljg4IDUuODhhMSAxIDAgMCAxLTEuNDIgMEwzLjQxIDJoMTMuMThaTTE4IDEzYTEgMSAwIDAgMS0xIDFIM2ExIDEgMCAwIDEtMS0xVjMuNDFsNS44OCA1Ljg4YTMgMyAwIDAgMCA0LjI0IDBMMTggMy40MVYxM1pcXFwiIGZpbGw9XFxcIiMxNTUzNjZcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDJcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEzLjk1OCAwSDEuOTk5QzEuMjQgMCAuNjY2LjI0LjY2NiAxcy41NzQgMSAxLjMzMyAxaDEyYy43NiAwIDEuMzM0LS4yNCAxLjMzNC0xcy0uNjE2LTEtMS4zNzUtMVpcXFwiIGZpbGw9XFxcIiMyQTJGMzBcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE1IDE0XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMi44NDYgNy41ODNhLjU4My41ODMgMCAwIDAtLjYxMi0uMDgyIDQuNjk2IDQuNjk2IDAgMCAxLTEuOTY2LjQyNkE0Ljc1NCA0Ljc1NCAwIDAgMSA1LjUyIDMuMjAyYTUuMDEgNS4wMSAwIDAgMSAuMTQ1LTEuMTY2LjU4My41ODMgMCAwIDAtLjc3NS0uNjYgNS45MTUgNS45MTUgMCAxIDAgOC4xNjYgNi44Mi41ODMuNTgzIDAgMCAwLS4yMS0uNjEzWm0tNS41NDEgMy45MDNhNC43NDggNC43NDggMCAwIDEtMi45NTItOC40NDF2LjE1N2E1LjkyIDUuOTIgMCAwIDAgNy4xNCA1Ljc4NyA0LjczMSA0LjczMSAwIDAgMS00LjE4OCAyLjUydi0uMDIzWlxcXCIgZmlsbD1cXFwiI0E2NkVFOVxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEwLjY2NyA5LjMzM0g1LjMzM2EuNjY3LjY2NyAwIDAgMCAwIDEuMzMzaDUuMzM0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNabTAtMi42NjdoLTRhLjY2Ny42NjcgMCAwIDAgMCAxLjMzNGg0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzRabTIuNjY2LTRoLTJWMkEuNjY3LjY2NyAwIDEgMCAxMCAydi42NjZIOC42NjdWMmEuNjY3LjY2NyAwIDEgMC0xLjMzNCAwdi42NjZINlYyYS42NjcuNjY3IDAgMCAwLTEuMzMzIDB2LjY2NmgtMkEuNjY3LjY2NyAwIDAgMCAyIDMuMzMzdjkuMzMzYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjMuMzMzYS42NjYuNjY2IDAgMCAwLS42NjctLjY2N1ptLS42NjYgMTBhLjY2Ny42NjcgMCAwIDEtLjY2Ny42NjdINGEuNjY2LjY2NiAwIDAgMS0uNjY3LS42NjdWNGgxLjMzNHYuNjY2YS42NjcuNjY3IDAgMSAwIDEuMzMzIDBWNGgxLjMzM3YuNjY2YS42NjcuNjY3IDAgMCAwIDEuMzM0IDBWNEgxMHYuNjY2YS42NjYuNjY2IDAgMSAwIDEuMzMzIDBWNGgxLjMzNHY4LjY2NlpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTkuMzM0IDUuMzMzSDEwQS42NjcuNjY3IDAgMCAwIDEwIDRoLS42NjZhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM1ptMCAyLjY2N0gxMGEuNjY3LjY2NyAwIDAgMCAwLTEuMzM0aC0uNjY2YS42NjcuNjY3IDAgMCAwIDAgMS4zMzRaTTYgNS4zMzNoLjY2N2EuNjY3LjY2NyAwIDAgMCAwLTEuMzMzSDZhLjY2Ny42NjcgMCAxIDAgMCAxLjMzM1pNNiA4aC42NjdhLjY2Ny42NjcgMCAxIDAgMC0xLjMzNEg2QS42NjcuNjY3IDAgMCAwIDYgOFptOCA1LjMzM2gtLjY2NlYyYS42NjYuNjY2IDAgMCAwLS42NjctLjY2N0gzLjMzM0EuNjY3LjY2NyAwIDAgMCAyLjY2NyAydjExLjMzM0gyYS42NjYuNjY2IDAgMSAwIDAgMS4zMzNoMTJhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM1ptLTUuMzMzIDBINy4zMzR2LTIuNjY3aDEuMzMzdjIuNjY3Wm0zLjMzMyAwaC0yVjEwYS42NjcuNjY3IDAgMCAwLS42NjYtLjY2N0g2LjY2N0EuNjY3LjY2NyAwIDAgMCA2IDEwdjMuMzMzSDRWMi42NjZoOHYxMC42NjdaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk02IDYuNjY2aC42NjdhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM0g2YS42NjcuNjY3IDAgMCAwIDAgMS4zMzNaTTYgOGEuNjY3LjY2NyAwIDAgMCAwIDEuMzMzaDRBLjY2Ny42NjcgMCAwIDAgMTAgOEg2Wm03LjMzMy0yLjA0YS44OC44OCAwIDAgMC0uMDQtLjE4di0uMDZhLjcxNC43MTQgMCAwIDAtLjEyNy0uMTg3bC00LTRhLjcxMy43MTMgMCAwIDAtLjE4Ni0uMTI3LjIxMy4yMTMgMCAwIDAtLjA2IDAgLjU4Ny41ODcgMCAwIDAtLjIyLS4wNzNINC42NjdhMiAyIDAgMCAwLTIgMnY5LjMzM2EyIDIgMCAwIDAgMiAyaDYuNjY2YTIgMiAwIDAgMCAyLTJWNS45NlptLTQtMi4zNTQgMS43MjcgMS43MjdIMTBhLjY2Ny42NjcgMCAwIDEtLjY2Ny0uNjY3di0xLjA2Wk0xMiAxMi42NjZhLjY2Ny42NjcgMCAwIDEtLjY2Ny42NjdINC42NjZBLjY2Ni42NjYgMCAwIDEgNCAxMi42NjZWMy4zMzNhLjY2Ny42NjcgMCAwIDEgLjY2Ny0uNjY3SDh2MmEyIDIgMCAwIDAgMiAyaDJ2NlptLTItMkg2QS42NjcuNjY3IDAgMCAwIDYgMTJoNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzM0WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDE0IDE1XFxcIj48cGF0aCBkPVxcXCJtMTEuNzkgNi44OTYuMDU2LjQzN0gxM2EuMTY2LjE2NiAwIDAgMSAuMTE4LjI4NWwuMzUzLjM1My0uMzUzLS4zNTNhLjE2Ni4xNjYgMCAwIDEtLjExOC4wNDloLTEuMTU0bC0uMDU1LjQzN2E0LjgzMyA0LjgzMyAwIDAgMS00LjE4NyA0LjE4N2wtLjQzNy4wNTVWMTMuNWEuMTY3LjE2NyAwIDAgMS0uMDUuMTE4bC4zNTQuMzUzLS4zNTMtLjM1M2EuMTY3LjE2NyAwIDAgMS0uMjg1LS4xMTh2LTEuMTUzbC0uNDM3LS4wNTZBNC44MzMgNC44MzMgMCAwIDEgMi4yMSA4LjEwNGwtLjA1NS0uNDM3SDFhLjE2Ny4xNjcgMCAxIDEgMC0uMzM0aDEuMTUzbC4wNTYtLjQzN0E0LjgzMyA0LjgzMyAwIDAgMSA2LjM5NiAyLjcxbC40MzctLjA1NVYxLjVhLjE2Ny4xNjcgMCAwIDEgLjMzNCAwdjEuMTUzbC40MzcuMDU2YTQuODM0IDQuODM0IDAgMCAxIDQuMTg3IDQuMTg3Wm0tLjM1NyAxLjM1NC4xLS41ODNoLTEuMmEuMTY2LjE2NiAwIDEgMSAwLS4zMzRoMS4xOTlsLS4xLS41ODNBNC41IDQuNSAwIDAgMCA3Ljc1IDMuMDY3bC0uNTgzLS4xdjEuMmEuMTY3LjE2NyAwIDAgMS0uMDUuMTE4bC4zMDQuMzAzLS4zMDMtLjMwM2EuMTY3LjE2NyAwIDAgMS0uMjg1LS4xMThWMi45NjhsLS41ODMuMUE0LjUgNC41IDAgMCAwIDIuNTY3IDYuNzVsLS4xLjU4M2gxLjJhLjE2Ny4xNjcgMCAwIDEgLjExOC4yODVsLjMwMy4zMDMtLjMwNC0uMzAzYS4xNjcuMTY3IDAgMCAxLS4xMTcuMDQ5SDIuNDY4bC4xLjU4M2E0LjUgNC41IDAgMCAwIDMuNjgyIDMuNjgzbC41ODMuMXYtMS4yYS4xNjYuMTY2IDAgMSAxIC4zMzQgMHYxLjE5OWwuNTgzLS4xYTQuNSA0LjUgMCAwIDAgMy42ODMtMy42ODJabS00LjUyNi0uODg5YS4xNjcuMTY3IDAgMSAxIC4xODYuMjc4LjE2Ny4xNjcgMCAwIDEtLjE4Ni0uMjc4WlxcXCIgZmlsbD1cXFwiQ3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcIkN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEwLjY2NyA5LjMzM0g1LjMzM2EuNjY3LjY2NyAwIDAgMCAwIDEuMzMzaDUuMzM0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNabTAtMi42NjdoLTRhLjY2Ny42NjcgMCAwIDAgMCAxLjMzNGg0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzRabTIuNjY2LTRoLTJWMkEuNjY3LjY2NyAwIDEgMCAxMCAydi42NjZIOC42NjdWMmEuNjY3LjY2NyAwIDEgMC0xLjMzNCAwdi42NjZINlYyYS42NjcuNjY3IDAgMCAwLTEuMzMzIDB2LjY2NmgtMkEuNjY3LjY2NyAwIDAgMCAyIDMuMzMzdjkuMzMzYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjMuMzMzYS42NjYuNjY2IDAgMCAwLS42NjctLjY2N1ptLS42NjYgMTBhLjY2Ny42NjcgMCAwIDEtLjY2Ny42NjdINGEuNjY2LjY2NiAwIDAgMS0uNjY3LS42NjdWNGgxLjMzNHYuNjY2YS42NjcuNjY3IDAgMSAwIDEuMzMzIDBWNGgxLjMzM3YuNjY2YS42NjcuNjY3IDAgMCAwIDEuMzM0IDBWNEgxMHYuNjY2YS42NjYuNjY2IDAgMSAwIDEuMzMzIDBWNGgxLjMzNHY4LjY2NlpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTggNGEuNjY3LjY2NyAwIDAgMC0uNjY3LjY2NnY2LjY2N2EuNjY3LjY2NyAwIDEgMCAxLjMzNCAwVjQuNjY2QS42NjcuNjY3IDAgMCAwIDggNFpNNC42NjcgOEEuNjY3LjY2NyAwIDAgMCA0IDguNjY2djIuNjY3YS42NjcuNjY3IDAgMSAwIDEuMzMzIDBWOC42NjZBLjY2Ny42NjcgMCAwIDAgNC42NjcgOFptNi42NjctMS4zMzRhLjY2Ny42NjcgMCAwIDAtLjY2Ny42Njd2NGEuNjY3LjY2NyAwIDAgMCAxLjMzMyAwdi00YS42NjcuNjY3IDAgMCAwLS42NjYtLjY2N1ptMS4zMzMtNS4zMzNIMy4zMzNhMiAyIDAgMCAwLTIgMnY5LjMzM2EyIDIgMCAwIDAgMiAyaDkuMzM0YTIgMiAwIDAgMCAyLTJWMy4zMzNhMiAyIDAgMCAwLTItMlptLjY2NyAxMS4zMzNhLjY2Ni42NjYgMCAwIDEtLjY2Ny42NjdIMy4zMzNhLjY2Ni42NjYgMCAwIDEtLjY2Ni0uNjY3VjMuMzMzYS42NjcuNjY3IDAgMCAxIC42NjctLjY2N2g5LjMzM2EuNjY3LjY2NyAwIDAgMSAuNjY3LjY2N3Y5LjMzM1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTggNGEuNjY3LjY2NyAwIDAgMC0uNjY3LjY2NnY2LjY2N2EuNjY3LjY2NyAwIDEgMCAxLjMzNCAwVjQuNjY2QS42NjcuNjY3IDAgMCAwIDggNFpNNC42NjcgOEEuNjY3LjY2NyAwIDAgMCA0IDguNjY2djIuNjY3YS42NjcuNjY3IDAgMSAwIDEuMzMzIDBWOC42NjZBLjY2Ny42NjcgMCAwIDAgNC42NjcgOFptNi42NjctMS4zMzRhLjY2Ny42NjcgMCAwIDAtLjY2Ny42Njd2NGEuNjY3LjY2NyAwIDAgMCAxLjMzMyAwdi00YS42NjcuNjY3IDAgMCAwLS42NjYtLjY2N1ptMS4zMzMtNS4zMzNIMy4zMzNhMiAyIDAgMCAwLTIgMnY5LjMzM2EyIDIgMCAwIDAgMiAyaDkuMzM0YTIgMiAwIDAgMCAyLTJWMy4zMzNhMiAyIDAgMCAwLTItMlptLjY2NyAxMS4zMzNhLjY2Ni42NjYgMCAwIDEtLjY2Ny42NjdIMy4zMzNhLjY2Ni42NjYgMCAwIDEtLjY2Ni0uNjY3VjMuMzMzYS42NjcuNjY3IDAgMCAxIC42NjctLjY2N2g5LjMzM2EuNjY3LjY2NyAwIDAgMSAuNjY3LjY2N3Y5LjMzM1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTggNGEuNjY3LjY2NyAwIDAgMC0uNjY3LjY2NnY2LjY2N2EuNjY3LjY2NyAwIDEgMCAxLjMzNCAwVjQuNjY2QS42NjcuNjY3IDAgMCAwIDggNFpNNC42NjcgOEEuNjY3LjY2NyAwIDAgMCA0IDguNjY2djIuNjY3YS42NjcuNjY3IDAgMSAwIDEuMzMzIDBWOC42NjZBLjY2Ny42NjcgMCAwIDAgNC42NjcgOFptNi42NjctMS4zMzRhLjY2Ny42NjcgMCAwIDAtLjY2Ny42Njd2NGEuNjY3LjY2NyAwIDAgMCAxLjMzMyAwdi00YS42NjcuNjY3IDAgMCAwLS42NjYtLjY2N1ptMS4zMzMtNS4zMzNIMy4zMzNhMiAyIDAgMCAwLTIgMnY5LjMzM2EyIDIgMCAwIDAgMiAyaDkuMzM0YTIgMiAwIDAgMCAyLTJWMy4zMzNhMiAyIDAgMCAwLTItMlptLjY2NyAxMS4zMzNhLjY2Ni42NjYgMCAwIDEtLjY2Ny42NjdIMy4zMzNhLjY2Ni42NjYgMCAwIDEtLjY2Ni0uNjY3VjMuMzMzYS42NjcuNjY3IDAgMCAxIC42NjctLjY2N2g5LjMzM2EuNjY3LjY2NyAwIDAgMSAuNjY3LjY2N3Y5LjMzM1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTQuNjY3IDEwLjY2NmExIDEgMCAwIDAgMS0xIC41MTQuNTE0IDAgMCAwIDAtLjFsMS44Ni0xLjg2aC4zMDZMOC45MDcgOC43OHYuMDUzYTEgMSAwIDEgMCAyIDBWOC43OGwyLjQyNi0yLjQ0N2ExIDEgMCAxIDAtMS0xIC41MjIuNTIyIDAgMCAwIDAgLjFMOS45MjcgNy44NEg5LjgyTDguNjY3IDYuNjY2YTEgMSAwIDAgMC0yIDBsLTIgMmExIDEgMCAwIDAgMCAyWm05IDIuNjY3SDIuMzMzVjJBLjY2Ny42NjcgMCAxIDAgMSAydjEyYS42NjcuNjY3IDAgMCAwIC42NjcuNjY2aDEyYS42NjcuNjY3IDAgMCAwIDAtMS4zMzNaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk02IDYuNjY2aC42NjdhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM0g2YS42NjcuNjY3IDAgMCAwIDAgMS4zMzNaTTYgOGEuNjY3LjY2NyAwIDAgMCAwIDEuMzMzaDRBLjY2Ny42NjcgMCAwIDAgMTAgOEg2Wm03LjMzMy0yLjA0YS44OC44OCAwIDAgMC0uMDQtLjE4di0uMDZhLjcxNC43MTQgMCAwIDAtLjEyNy0uMTg3bC00LTRhLjcxMy43MTMgMCAwIDAtLjE4Ni0uMTI3LjIxMy4yMTMgMCAwIDAtLjA2IDAgLjU4Ny41ODcgMCAwIDAtLjIyLS4wNzNINC42NjdhMiAyIDAgMCAwLTIgMnY5LjMzM2EyIDIgMCAwIDAgMiAyaDYuNjY2YTIgMiAwIDAgMCAyLTJWNS45NlptLTQtMi4zNTQgMS43MjcgMS43MjdIMTBhLjY2Ny42NjcgMCAwIDEtLjY2Ny0uNjY3di0xLjA2Wk0xMiAxMi42NjZhLjY2Ny42NjcgMCAwIDEtLjY2Ny42NjdINC42NjZBLjY2Ni42NjYgMCAwIDEgNCAxMi42NjZWMy4zMzNhLjY2Ny42NjcgMCAwIDEgLjY2Ny0uNjY3SDh2MmEyIDIgMCAwIDAgMiAyaDJ2NlptLTItMkg2QS42NjcuNjY3IDAgMCAwIDYgMTJoNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzM0WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDI0IDI0XFxcIj48cGF0aCBkPVxcXCJNMTIgMTRhMSAxIDAgMSAwLTEtMSAxIDEgMCAwIDAgMSAxWm01IDBhMSAxIDAgMSAwLTEtMSAxIDEgMCAwIDAgMSAxWm0tNSA0YTEgMSAwIDEgMC0xLTEgMSAxIDAgMCAwIDEgMVptNSAwYTEgMSAwIDEgMC0xLTEgMSAxIDAgMCAwIDEgMVpNNyAxNGExIDEgMCAxIDAtMS0xIDEgMSAwIDAgMCAxIDFaTTE5IDRoLTFWM2ExIDEgMCAwIDAtMiAwdjFIOFYzYTEgMSAwIDAgMC0yIDB2MUg1YTMgMyAwIDAgMC0zIDN2MTJhMyAzIDAgMCAwIDMgM2gxNGEzIDMgMCAwIDAgMy0zVjdhMyAzIDAgMCAwLTMtM1ptMSAxNWExIDEgMCAwIDEtMSAxSDVhMSAxIDAgMCAxLTEtMXYtOWgxNlptMC0xMUg0VjdhMSAxIDAgMCAxIDEtMWgxNGExIDEgMCAwIDEgMSAxWk03IDE4YTEgMSAwIDEgMC0xLTEgMSAxIDAgMCAwIDEgMVpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxMiAxNVxcXCI+PHBhdGggZD1cXFwibTYuMTQgMTAuNzQyLjAyLjA1OC4wMDcuMDF2LjAzNmEuMDYuMDYgMCAwIDEtLjAwNi4wMjdsLS4wMS4wMjItLjAwOC4wMjFhLjEuMSAwIDAgMS0uMDYuMDZsLS4wMjIuMDA4LS4wMjEuMDFhLjA2LjA2IDAgMCAxLS4wMjcuMDA2aC0uMDA2YS4xNjYuMTY2IDAgMCAxLS4xMDYtLjA0LjI2Ni4yNjYgMCAwIDEtLjA0LS4wNjZsLS4wMDQtLjAxLS4wMDUtLjAxYS4wNi4wNiAwIDAgMS0uMDA1LS4wMjh2LS4wMjNsLS4wMDEtLjAyMy0uMDAxLS4wMTguMDAzLS4wMDcuMDEyLS4wMzNhLjU3Ni41NzYgMCAwIDEgLjAyMy0uMDMuMTY2LjE2NiAwIDAgMSAuMDQ0LS4wMjZsLjAxNC0uMDA1YS4xNjcuMTY3IDAgMCAxIC4wOTYtLjAxbC4wOTQtLjQ5MS0uMDk0LjQ5YS4xNjYuMTY2IDAgMCAxIC4wNzcuMDM4Yy4wMDkuMDEuMDE4LjAyMi4wMjYuMDM0Wm0uNjkzLTkuMzM1IDMuOTYzIDMuOTYzLjAyMy4wN2EuMzcuMzcgMCAwIDEgLjAxNC4wNTR2Ni42NzNhMS41IDEuNSAwIDAgMS0xLjUgMS41SDIuNjY3YTEuNSAxLjUgMCAwIDEtMS4wNjEtLjQ0bC0uMzQ4LjM0OC4zNDgtLjM0OGExLjUgMS41IDAgMCAxLS40NC0xLjA2VjIuODMzYTEuNSAxLjUgMCAwIDEgMS41LTEuNWgzLjk5bC4wMTUuMDA3LjExNi4wNjdoLjA0NlptLjg1NCAxLjM0Nkw2LjgzMyAxLjl2Mi4yNjdBMS4xNjcgMS4xNjcgMCAwIDAgOCA1LjMzM2gyLjI2N2wtLjg1My0uODUzLTEuNzI3LTEuNzI3Wk02LjUgMi4xNjd2LS41SDIuNjY3QTEuMTY3IDEuMTY3IDAgMCAwIDEuNSAyLjgzM3Y5LjMzNGExLjE2NyAxLjE2NyAwIDAgMCAxLjE2NyAxLjE2Nmg2LjY2NmExLjE2NyAxLjE2NyAwIDAgMCAxLjE2Ny0xLjE2NnYtNi41SDhhMS41IDEuNSAwIDAgMS0xLjUtMS41di0yWm0tLjYxOCA1LjIxNWEuMTY3LjE2NyAwIDAgMSAuMjg1LjExOHYxLjMzM2EuMTY3LjE2NyAwIDAgMS0uMzM0IDBWNy41YzAtLjA0NC4wMTgtLjA4Ny4wNS0uMTE4WlxcXCIgZmlsbD1cXFwiQ3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcIkN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxMiAxNVxcXCI+PHBhdGggZD1cXFwibTYuMTQgMTAuNzQyLjAyLjA1OC4wMDcuMDF2LjAzNmEuMDYuMDYgMCAwIDEtLjAwNi4wMjdsLS4wMS4wMjItLjAwOC4wMjFhLjEuMSAwIDAgMS0uMDYuMDZsLS4wMjIuMDA4LS4wMjEuMDFhLjA2LjA2IDAgMCAxLS4wMjcuMDA2aC0uMDA2YS4xNjYuMTY2IDAgMCAxLS4xMDYtLjA0LjI2Ni4yNjYgMCAwIDEtLjA0LS4wNjZsLS4wMDQtLjAxLS4wMDUtLjAxYS4wNi4wNiAwIDAgMS0uMDA1LS4wMjh2LS4wMjNsLS4wMDEtLjAyMy0uMDAxLS4wMTguMDAzLS4wMDcuMDEyLS4wMzNhLjU3Ni41NzYgMCAwIDEgLjAyMy0uMDMuMTY2LjE2NiAwIDAgMSAuMDQ0LS4wMjZsLjAxNC0uMDA1YS4xNjcuMTY3IDAgMCAxIC4wOTYtLjAxbC4wOTQtLjQ5MS0uMDk0LjQ5YS4xNjYuMTY2IDAgMCAxIC4wNzcuMDM4Yy4wMDkuMDEuMDE4LjAyMi4wMjYuMDM0Wm0uNjkzLTkuMzM1IDMuOTYzIDMuOTYzLjAyMy4wN2EuMzcuMzcgMCAwIDEgLjAxNC4wNTR2Ni42NzNhMS41IDEuNSAwIDAgMS0xLjUgMS41SDIuNjY3YTEuNSAxLjUgMCAwIDEtMS4wNjEtLjQ0bC0uMzQ4LjM0OC4zNDgtLjM0OGExLjUgMS41IDAgMCAxLS40NC0xLjA2VjIuODMzYTEuNSAxLjUgMCAwIDEgMS41LTEuNWgzLjk5bC4wMTUuMDA3LjExNi4wNjdoLjA0NlptLjg1NCAxLjM0Nkw2LjgzMyAxLjl2Mi4yNjdBMS4xNjcgMS4xNjcgMCAwIDAgOCA1LjMzM2gyLjI2N2wtLjg1My0uODUzLTEuNzI3LTEuNzI3Wk02LjUgMi4xNjd2LS41SDIuNjY3QTEuMTY3IDEuMTY3IDAgMCAwIDEuNSAyLjgzM3Y5LjMzNGExLjE2NyAxLjE2NyAwIDAgMCAxLjE2NyAxLjE2Nmg2LjY2NmExLjE2NyAxLjE2NyAwIDAgMCAxLjE2Ny0xLjE2NnYtNi41SDhhMS41IDEuNSAwIDAgMS0xLjUtMS41di0yWm0tLjYxOCA1LjIxNWEuMTY3LjE2NyAwIDAgMSAuMjg1LjExOHYxLjMzM2EuMTY3LjE2NyAwIDAgMS0uMzM0IDBWNy41YzAtLjA0NC4wMTgtLjA4Ny4wNS0uMTE4WlxcXCIgZmlsbD1cXFwiQ3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcIkN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEwLjY2NyA5LjMzM0g1LjMzM2EuNjY3LjY2NyAwIDAgMCAwIDEuMzMzaDUuMzM0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNabTAtMi42NjdoLTRhLjY2Ny42NjcgMCAwIDAgMCAxLjMzNGg0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzRabTIuNjY2LTRoLTJWMkEuNjY3LjY2NyAwIDEgMCAxMCAydi42NjZIOC42NjdWMmEuNjY3LjY2NyAwIDEgMC0xLjMzNCAwdi42NjZINlYyYS42NjcuNjY3IDAgMCAwLTEuMzMzIDB2LjY2NmgtMkEuNjY3LjY2NyAwIDAgMCAyIDMuMzMzdjkuMzMzYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjMuMzMzYS42NjYuNjY2IDAgMCAwLS42NjctLjY2N1ptLS42NjYgMTBhLjY2Ny42NjcgMCAwIDEtLjY2Ny42NjdINGEuNjY2LjY2NiAwIDAgMS0uNjY3LS42NjdWNGgxLjMzNHYuNjY2YS42NjcuNjY3IDAgMSAwIDEuMzMzIDBWNGgxLjMzM3YuNjY2YS42NjcuNjY3IDAgMCAwIDEuMzM0IDBWNEgxMHYuNjY2YS42NjYuNjY2IDAgMSAwIDEuMzMzIDBWNGgxLjMzNHY4LjY2NlpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEwLjY2NyA5LjMzM0g1LjMzM2EuNjY3LjY2NyAwIDAgMCAwIDEuMzMzaDUuMzM0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNabTAtMi42NjdoLTRhLjY2Ny42NjcgMCAwIDAgMCAxLjMzNGg0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzRabTIuNjY2LTRoLTJWMkEuNjY3LjY2NyAwIDEgMCAxMCAydi42NjZIOC42NjdWMmEuNjY3LjY2NyAwIDEgMC0xLjMzNCAwdi42NjZINlYyYS42NjcuNjY3IDAgMCAwLTEuMzMzIDB2LjY2NmgtMkEuNjY3LjY2NyAwIDAgMCAyIDMuMzMzdjkuMzMzYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjMuMzMzYS42NjYuNjY2IDAgMCAwLS42NjctLjY2N1ptLS42NjYgMTBhLjY2Ny42NjcgMCAwIDEtLjY2Ny42NjdINGEuNjY2LjY2NiAwIDAgMS0uNjY3LS42NjdWNGgxLjMzNHYuNjY2YS42NjcuNjY3IDAgMSAwIDEuMzMzIDBWNGgxLjMzM3YuNjY2YS42NjcuNjY3IDAgMCAwIDEuMzM0IDBWNEgxMHYuNjY2YS42NjYuNjY2IDAgMSAwIDEuMzMzIDBWNGgxLjMzNHY4LjY2NlpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEyLjk2IDguNjY2Yy0uMTQ3IDAtLjMtLjA0Ni0uNDQ3LS4wOGE2LjI5IDYuMjkgMCAwIDEtLjg3My0uMjYgMS4zMzMgMS4zMzMgMCAwIDAtMS42NTMuNjY3bC0uMTQ3LjNBOC4xMiA4LjEyIDAgMCAxIDguMDY3IDcuOTZhOC4xMiA4LjEyIDAgMCAxLTEuMzM0LTEuNzc0TDcuMDEzIDZhMS4zMzMgMS4zMzMgMCAwIDAgLjY2Ny0xLjY1NCA2Ljg4NyA2Ljg4NyAwIDAgMS0uMjYtLjg3M2MtLjAzMy0uMTQ3LS4wNi0uMy0uMDgtLjQ1M2EyIDIgMCAwIDAtMi0xLjY2aC0yYTIgMiAwIDAgMC0yIDIuMjczIDEyLjY2NyAxMi42NjcgMCAwIDAgMTEuMDEzIDEwLjk3M2guMjU0YTIgMiAwIDAgMCAxLjgyNy0xLjE4NSAyIDIgMCAwIDAgLjE3My0uODIxdi0yYTIgMiAwIDAgMC0xLjY0Ny0xLjkzNFptLjMzMyA0YS42NjYuNjY2IDAgMCAxLS40ODIuNjQxLjcwNy43MDcgMCAwIDEtLjI5LjAyNkExMS4zMzMgMTEuMzMzIDAgMCAxIDIuNzEyIDMuNDhhLjcyNy43MjcgMCAwIDEgLjE2Ny0uNTQ3LjY2Ny42NjcgMCAwIDEgLjUtLjIyN2gyYS42NjcuNjY3IDAgMCAxIC42NjcuNTI3IDcuNDE0IDcuNDE0IDAgMCAwIC40MDcgMS41NzNsLS45MzQuNDM0YS42NjcuNjY3IDAgMCAwLS4zMjcuODg2IDkuNjYgOS42NiAwIDAgMCA0LjY2NyA0LjY2Ny42NjYuNjY2IDAgMCAwIC41MDcgMCAuNjY1LjY2NSAwIDAgMCAuMzgtLjM0N2wuNDEzLS45MzNjLjM0NS4xMjMuNjk3LjIyNiAxLjA1My4zMDcuMTc4LjA0LjM1OC4wNzMuNTQuMWEuNjY3LjY2NyAwIDAgMSAuNTI3LjY2NmwuMDEzIDIuMDhaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTUgMTVcXFwiPjxwYXRoIGQ9XFxcIk0xMC45MTcgOS42NjZoLS42NTlsLS4yMzMtLjIyNWE1LjQxNyA1LjQxNyAwIDAgMCAxLjIzMy00LjQ1QzEwLjg2NyAyLjY3NSA4LjkzMy44MjUgNi42LjU0MUE1LjQyIDUuNDIgMCAwIDAgLjU0MiA2LjZjLjI4MyAyLjMzMyAyLjEzMyA0LjI2NiA0LjQ1IDQuNjU4YTUuNDE3IDUuNDE3IDAgMCAwIDQuNDUtMS4yMzNsLjIyNS4yMzN2LjY1OGwzLjU0MSAzLjU0MmEuODguODggMCAwIDAgMS4yNDIgMCAuODguODggMCAwIDAgMC0xLjI0MmwtMy41MzMtMy41NVptLTUgMGEzLjc0NSAzLjc0NSAwIDAgMS0zLjc1LTMuNzUgMy43NDUgMy43NDUgMCAwIDEgMy43NS0zLjc1IDMuNzQ1IDMuNzQ1IDAgMCAxIDMuNzUgMy43NSAzLjc0NSAzLjc0NSAwIDAgMS0zLjc1IDMuNzVaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiPjxtYXNrIGlkPVxcXCJwZXJpb2QtaWNvbl9zdmdfX2FcXFwiIGZpbGw9XFxcIiNmZmZcXFwiPjxwYXRoIGQ9XFxcIk04IDkuMzMzQS42NjcuNjY3IDAgMSAwIDggOGEuNjY3LjY2NyAwIDAgMCAwIDEuMzMzWm0zLjMzMyAwYS42NjcuNjY3IDAgMSAwIDAtMS4zMzQuNjY3LjY2NyAwIDAgMCAwIDEuMzM0Wk04IDEyYS42NjcuNjY3IDAgMSAwIDAtMS4zMzRBLjY2Ny42NjcgMCAwIDAgOCAxMlptMy4zMzMgMGEuNjY3LjY2NyAwIDEgMCAwLTEuMzM1LjY2Ny42NjcgMCAwIDAgMCAxLjMzNVpNNC42NjcgOS4zMzNhLjY2Ny42NjcgMCAxIDAgMC0xLjMzMy42NjcuNjY3IDAgMCAwIDAgMS4zMzNabTgtNi42NjZIMTJWMmEuNjY3LjY2NyAwIDEgMC0xLjMzMyAwdi42NjdINS4zMzNWMkEuNjY3LjY2NyAwIDEgMCA0IDJ2LjY2N2gtLjY2N2EyIDIgMCAwIDAtMiAydjhhMiAyIDAgMCAwIDIgMmg5LjMzNGEyIDIgMCAwIDAgMi0ydi04YTIgMiAwIDAgMC0yLTJabS42NjYgMTBhLjY2Ny42NjcgMCAwIDEtLjY2Ni42NjZIMy4zMzNhLjY2Ny42NjcgMCAwIDEtLjY2Ni0uNjY2di02aDEwLjY2NnY2Wm0wLTcuMzM0SDIuNjY3di0uNjY2QS42NjcuNjY3IDAgMCAxIDMuMzMzIDRoOS4zMzRhLjY2Ny42NjcgMCAwIDEgLjY2Ni42Njd2LjY2NlpNNC42NjcgMTJhLjY2Ny42NjcgMCAxIDAgMC0xLjMzNC42NjcuNjY3IDAgMCAwIDAgMS4zMzRaXFxcIi8+PC9tYXNrPjxwYXRoIGZpbGw9XFxcIiNmZmZcXFwiIHN0cm9rZT1cXFwiIzE1NTM2NlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIxLjMzM1xcXCIgZD1cXFwiTTggOS4zMzNBLjY2Ny42NjcgMCAxIDAgOCA4YS42NjcuNjY3IDAgMCAwIDAgMS4zMzNabTMuMzMzIDBhLjY2Ny42NjcgMCAxIDAgMC0xLjMzNC42NjcuNjY3IDAgMCAwIDAgMS4zMzRaTTggMTJhLjY2Ny42NjcgMCAxIDAgMC0xLjMzNEEuNjY3LjY2NyAwIDAgMCA4IDEyWm0zLjMzMyAwYS42NjcuNjY3IDAgMSAwIDAtMS4zMzUuNjY3LjY2NyAwIDAgMCAwIDEuMzM1Wk00LjY2NyA5LjMzM2EuNjY3LjY2NyAwIDEgMCAwLTEuMzMzLjY2Ny42NjcgMCAwIDAgMCAxLjMzM1ptOC02LjY2NkgxMlYyYS42NjcuNjY3IDAgMSAwLTEuMzMzIDB2LjY2N0g1LjMzM1YyQS42NjcuNjY3IDAgMSAwIDQgMnYuNjY3aC0uNjY3YTIgMiAwIDAgMC0yIDJ2OGEyIDIgMCAwIDAgMiAyaDkuMzM0YTIgMiAwIDAgMCAyLTJ2LThhMiAyIDAgMCAwLTItMlptLjY2NiAxMGEuNjY3LjY2NyAwIDAgMS0uNjY2LjY2NkgzLjMzM2EuNjY3LjY2NyAwIDAgMS0uNjY2LS42NjZ2LTZoMTAuNjY2djZabTAtNy4zMzRIMi42Njd2LS42NjZBLjY2Ny42NjcgMCAwIDEgMy4zMzMgNGg5LjMzNGEuNjY3LjY2NyAwIDAgMSAuNjY2LjY2N3YuNjY2Wk00LjY2NyAxMmEuNjY3LjY2NyAwIDEgMCAwLTEuMzM0LjY2Ny42NjcgMCAwIDAgMCAxLjMzNFpcXFwiIG1hc2s9XFxcInVybCgjcGVyaW9kLWljb25fc3ZnX19hKVxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCI+PHBhdGggZmlsbD1cXFwiI2ZmZlxcXCIgc3Ryb2tlPVxcXCIjZmZmXFxcIiBzdHJva2Utd2lkdGg9XFxcIi42NjdcXFwiIGQ9XFxcIk04LjMzMyA3LjMzM3YuMzM0aDIuMzM0YS4zMzMuMzMzIDAgMSAxIDAgLjY2Nkg4LjMzM3YyLjMzNGEuMzMzLjMzMyAwIDEgMS0uNjY2IDBWOC4zMzNINS4zMzNhLjMzMy4zMzMgMCAwIDEgMC0uNjY2aDIuMzM0VjUuMzMzYS4zMzMuMzMzIDAgMCAxIC42NjYgMHYyWk00LjQ4MSAyLjczNGE2LjMzMyA2LjMzMyAwIDEgMSA3LjAzOCAxMC41MzJBNi4zMzMgNi4zMzMgMCAwIDEgNC40OCAyLjczNFptLjM3IDkuOTc4YTUuNjY2IDUuNjY2IDAgMSAwIDYuMjk3LTkuNDIzIDUuNjY2IDUuNjY2IDAgMCAwLTYuMjk2IDkuNDIzWlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCI+PHBhdGggZmlsbD1cXFwiI2ZmZlxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIGQ9XFxcIk04LjE2NyA3LjMzNHYuNWg0LjVhLjE2Ny4xNjcgMCAxIDEgMCAuMzMzaC00LjV2NC41YS4xNjYuMTY2IDAgMSAxLS4zMzQgMHYtNC41aC00LjVhLjE2Ny4xNjcgMCAwIDEgMC0uMzMzaDQuNXYtNC41YS4xNjcuMTY3IDAgMSAxIC4zMzQgMHY0WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNyAxNlxcXCI+PHBhdGggZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIiBkPVxcXCJNOC4xNjcgMy42di0uODA1bC0uNTcuNTY5LS44NjYuODY3YS4zMTIuMzEyIDAgMCAxLS40NjIgMCAuMzEyLjMxMiAwIDAgMSAwLS40NjJsMi0yLS4yMzQtLjIzNS4yMzQuMjM1YS4zMTIuMzEyIDAgMCAxIC40NjIgMGwuMjMzLS4yMzQtLjIzMy4yMzQgMiAyYS4zMTIuMzEyIDAgMCAxIDAgLjQ2Mi4zNjguMzY4IDAgMCAxLS4xMDguMDguMjkyLjI5MiAwIDAgMS0uMTIzLjAyMi4yOTIuMjkyIDAgMCAxLS4xMjMtLjAyMS4zNjguMzY4IDAgMCAxLS4xMDgtLjA4MWwtLjg2Ny0uODY3LS41NjktLjU3djguNTM5YzAgLjEyNC0uMDQuMjAyLS4wODUuMjQ4LS4wNDYuMDQ1LS4xMjQuMDg1LS4yNDguMDg1cy0uMjAyLS4wNC0uMjQ4LS4wODVjLS4wNDUtLjA0Ni0uMDg1LS4xMjQtLjA4NS0uMjQ4VjMuNlptMyAyLjczM0gxMi41Yy45NSAwIDEuNjY3LjcxNyAxLjY2NyAxLjY2N3Y0LjY2NmMwIC45NS0uNzE4IDEuNjY3LTEuNjY3IDEuNjY3aC04Yy0uOTUgMC0xLjY2Ny0uNzE3LTEuNjY3LTEuNjY3VjhjMC0uOTUuNzE4LTEuNjY3IDEuNjY3LTEuNjY3aDEuMzMzYy4xMjUgMCAuMjAyLjA0LjI0OC4wODYuMDQ2LjA0NS4wODYuMTIzLjA4Ni4yNDcgMCAuMTI1LS4wNC4yMDItLjA4Ni4yNDgtLjA0Ni4wNDYtLjEyMy4wODYtLjI0OC4wODZINC41YTEgMSAwIDAgMC0uNzE5LjI4QTEgMSAwIDAgMCAzLjUgOHY0LjY2NmExIDEgMCAwIDAgLjI4MS43MiAxIDEgMCAwIDAgLjcxOS4yOGg4YTEgMSAwIDAgMCAuNzE5LS4yOCAxIDEgMCAwIDAgLjI4MS0uNzJWOGExIDEgMCAwIDAtLjI4MS0uNzJBMSAxIDAgMCAwIDEyLjUgN2gtMS4zMzNjLS4xMjUgMC0uMjAyLS4wNC0uMjQ4LS4wODYtLjA0Ni0uMDQ2LS4wODYtLjEyMy0uMDg2LS4yNDggMC0uMTI0LjA0LS4yMDIuMDg2LS4yNDcuMDQ2LS4wNDYuMTIzLS4wODYuMjQ4LS4wODZaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDE2IDIwXFxcIj48cGF0aCBkPVxcXCJNMTIuNjY3IDd2LjMzM0gxM0EyLjY2NyAyLjY2NyAwIDAgMSAxNS42NjcgMTB2N0EyLjY2NyAyLjY2NyAwIDAgMSAxMyAxOS42NjdIM0EyLjY2NyAyLjY2NyAwIDAgMSAuMzMzIDE3di03QTIuNjY3IDIuNjY3IDAgMCAxIDMgNy4zMzNoLjMzM1Y1YTQuNjY3IDQuNjY3IDAgMCAxIDkuMzM0IDB2MlpNMTEgNy4zMzNoLjMzM1Y1YTMuMzMzIDMuMzMzIDAgMCAwLTYuNjY2IDB2Mi4zMzNIMTFabTIuOTQzIDEwLjYxYy4yNS0uMjUuMzktLjU5LjM5LS45NDN2LTdBMS4zMzMgMS4zMzMgMCAwIDAgMTMgOC42NjdIM0ExLjMzMyAxLjMzMyAwIDAgMCAxLjY2NyAxMHY3QTEuMzMzIDEuMzMzIDAgMCAwIDMgMTguMzMzaDEwYy4zNTQgMCAuNjkzLS4xNC45NDMtLjM5WlxcXCIgZmlsbD1cXFwiIzE1NTM2NlxcXCIgc3Ryb2tlPVxcXCIjMTU1MzY2XFxcIiBzdHJva2Utd2lkdGg9XFxcIi42NjdcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTUgMTRcXFwiPjxwYXRoIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjY2N1xcXCIgZD1cXFwiTTcuNSA0LjY2NmExIDEgMCAwIDAtLjg2OS41bC0uMDA2LjAxMmEuMzMzLjMzMyAwIDAgMS0uMjAzLjE2NmwuMDkzLjMyLS4wOTMtLjMyYS4zMzMuMzMzIDAgMCAxLS4zNi0uMTJsLS4yNjYuMi4yNjctLjJhLjMzMy4zMzMgMCAwIDEtLjAxNS0uMzc5bC4wMDQtLjAwNi4wMDMtLjAwNkExLjY2NyAxLjY2NyAwIDAgMSA3LjUgNGExLjY2NyAxLjY2NyAwIDAgMSAuNTU0IDMuMjMzbC0uMjIuMDh2LjM1M2EuMzMzLjMzMyAwIDEgMS0uNjY2IDBWN2EuMzMzLjMzMyAwIDAgMSAuMzMzLS4zMzQgMSAxIDAgMCAwIDAtMlptMCAwVjVsLjAwMS0uMzM0Wm0tLjMxNiA0Ljg5OC4wMS0uMDIuMDA4LS4wMjNhLjE3My4xNzMgMCAwIDEgLjAyLS4wMzkgMS4yIDEuMiAwIDAgMSAuMDQ2LS4wNi4zMzMuMzMzIDAgMCAxIC4xMDQtLjA2N2wtLjEyOC0uMzA4LjEyOC4zMDhhLjMzMy4zMzMgMCAwIDEgLjM2NS4wNzMuMzMzLjMzMyAwIDAgMSAuMDk2LjIzNnYuMDE1YS4zMzMuMzMzIDAgMCAxLS4wMi4xMjZ2LjAwMWEuMjY3LjI2NyAwIDAgMS0uMDYyLjA5OGwuMjM2LjIzNi0uMjM2LS4yMzZhLjI2Ny4yNjcgMCAwIDEtLjA5OC4wNjJsLS4wMS4wMDQtLjAxMS4wMDVhLjI5My4yOTMgMCAwIDEtLjIzNyAwbC0uMDEtLjAwNS0uMDEyLS4wMDRhLjI2Ny4yNjcgMCAwIDEtLjA5Ny0uMDYybC0uMjM2LjIzNi4yMzYtLjIzNmEuMjY3LjI2NyAwIDAgMS0uMDYzLS4wOThsLS4wMDUtLjAxNC0uMDA3LS4wMTVhLjIyNy4yMjcgMCAwIDEtLjAyMS0uMTAydi0uMDMzYS41NzMuNTczIDAgMCAxLS4wMDItLjA2NC4wOTQuMDk0IDAgMCAxIC4wMDYtLjAxNFpNMy45OCAxLjczNGE2LjMzMyA2LjMzMyAwIDEgMSA3LjAzOCAxMC41MzJBNi4zMzMgNi4zMzMgMCAwIDEgMy45OCAxLjczNFptLjM3IDkuOTc3YTUuNjY2IDUuNjY2IDAgMSAwIDYuMjk3LTkuNDIyIDUuNjY2IDUuNjY2IDAgMCAwLTYuMjk2IDkuNDIyWlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNCAxNFxcXCI+PHBhdGggZmlsbD1cXFwicmVkXFxcIiBkPVxcXCJtOC40MSA3IDQuMy00LjI5YTEuMDA0IDEuMDA0IDAgMCAwLTEuNDItMS40Mkw3IDUuNTlsLTQuMjktNC4zYTEuMDA0IDEuMDA0IDAgMSAwLTEuNDIgMS40Mkw1LjU5IDdsLTQuMyA0LjI5YS45OTkuOTk5IDAgMCAwIDAgMS40MiAxIDEgMCAwIDAgMS40MiAwTDcgOC40MWw0LjI5IDQuM2ExLjAwMSAxLjAwMSAwIDAgMCAxLjYzOS0uMzI1IDEgMSAwIDAgMC0uMjItMS4wOTVMOC40MSA3WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCA2IDZcXFwiPjxjaXJjbGUgY3g9XFxcIjNcXFwiIGN5PVxcXCIzXFxcIiByPVxcXCIzXFxcIiBmaWxsPVxcXCIjRkY3MjY0XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTMuOTk5IDcuMzMzYy0uNCAwLS42NjcuMjY3LS42NjcuNjY3IDAgMS45MzMtMSAzLjY2Ni0yLjY2NyA0LjYtMi41MzMgMS40NjYtNS44LjYtNy4yNjYtMS45MzQtMS40NjctMi41MzMtLjYtNS44IDEuOTMzLTcuMjY2YTUuMzM4IDUuMzM4IDAgMCAxIDYuNTMzLjkzM2gtMS42Yy0uNCAwLS42NjYuMjY3LS42NjYuNjY3cy4yNjYuNjY2LjY2Ni42NjZoM2MuNCAwIC42NjctLjI2Ni42NjctLjY2NlYyYzAtLjQtLjI2Ny0uNjY3LS42NjctLjY2N1MxMi42IDEuNiAxMi42IDJ2MS4yYy0xLjI2Ny0xLjItMi44NjctMS44NjctNC42LTEuODY3LTMuNjY3IDAtNi42NjcgMy02LjY2NyA2LjY2NyAwIDMuNjY2IDMgNi42NjYgNi42NjcgNi42NjYgMy42NjYgMCA2LjY2Ni0zIDYuNjY2LTYuNjY2IDAtLjQtLjI2Ni0uNjY3LS42NjYtLjY2N1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAxOVxcXCI+PHBhdGggZmlsbD1cXFwiI2ZmZlxcXCIgc3Ryb2tlPVxcXCIjMTU1MzY2XFxcIiBzdHJva2Utd2lkdGg9XFxcIi42NjdcXFwiIGQ9XFxcIm0xMyAxNi4zMzItLjUzMy0uMzk4LS43MTMtLjUzNGEuMzMzLjMzMyAwIDAgMC0uNCAwbDEuNjQ2LjkzMlptMCAwVjUuMzMzSDN2MTAuOTk5bC41MzMtLjM5OC43MTMtLjUzNGEuMzMzLjMzMyAwIDAgMSAuNCAwbDEuMzc0IDEuMDMzLjIuMTUuMi0uMTVMNy44IDE1LjRhLjMzMy4zMzMgMCAwIDEgLjQgMGwxLjM4IDEuMDMzLjIuMTUuMi0uMTUgMS4zNzMtMS4wMzMgMS42NDcuOTMyWm0tMTAuMTMzLjkzNGEuMzM0LjMzNCAwIDAgMS0uNDg0LS4wOWwtLjI4My4xNzQuMjgzLS4xNzVhLjMzNC4zMzQgMCAwIDEtLjA1LS4xNzVWNWEuMzMzLjMzMyAwIDAgMSAuMzM0LS4zMzNoMTAuNjY2YS4zMzMuMzMzIDAgMCAxIC4zMzQuMzMzdjExLjk5OWEuMzM0LjMzNCAwIDAgMS0uMDUuMTc0bC4yODMuMTc1LS4yODMtLjE3NWEuMzMzLjMzMyAwIDAgMS0uMzE0LjE1OGwtLjAyOC4zMzIuMDI4LS4zMzJhLjMzNC4zMzQgMCAwIDEtLjE3LS4wNjVsLTEuMzgtMS4wMzMtLjItLjE1LS4yLjE1LTEuMzczIDEuMDM0YS4zMzMuMzMzIDAgMCAxLS40IDBMOC4yIDE2LjIzMmwtLjItLjE1LS4yLjE1LTEuMzggMS4wMzNhLjMzMy4zMzMgMCAwIDEtLjQgMGwtMS4zNzMtMS4wMzItLjItLjE1LS4yLjE1LTEuMzggMS4wMzJabTIuMjMtNC4wMy0uMjM1LjIzNS4yMzYtLjIzNWEuMzMzLjMzMyAwIDAgMSAwLS40NzJsLS4yMzYtLjIzNi4yMzYuMjM2YS4zMzMuMzMzIDAgMCAxIC4yMzUtLjA5N2g1LjMzNGEuMzMzLjMzMyAwIDEgMSAwIC42NjZINS4zMzNhLjMzMy4zMzMgMCAwIDEtLjIzNS0uMDk3Wk0xMC42NjggOGgtNGEuMzMzLjMzMyAwIDAgMSAwLS42NjdoNGEuMzMzLjMzMyAwIDEgMSAwIC42NjdabTAgMi42NjdINS4zMzNhLjMzMy4zMzMgMCAxIDEgMC0uNjY3aDUuMzM0YS4zMzMuMzMzIDAgMSAxIDAgLjY2N1pcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjQgMjRcXFwiPjxwYXRoIGQ9XFxcIk0zIDEyaDE4bS01LTUgNSA1LTUgNVxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZS13aWR0aD1cXFwiMlxcXCIgc3Ryb2tlLWxpbmVjYXA9XFxcInJvdW5kXFxcIiBzdHJva2UtbGluZWpvaW49XFxcInJvdW5kXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIj48cGF0aCBkPVxcXCJtMTAuMTY1IDkuNjYyLjE2My4xNjQuMjEtLjA5NmExLjcyIDEuNzIgMCAwIDEgMS44OTUuMzE0bDEuMzc2IDEuNDA5LjIzOC0uMjMzLS4yMzMuMjM4YTEuNjY1IDEuNjY1IDAgMCAxIDAgMi4zODRsLS4wMDMuMDAyYTEuNjY3IDEuNjY3IDAgMCAxLTIuMzU1IDBsLTEuNDEyLTEuNDEyYTEuNjY3IDEuNjY3IDAgMCAxLS4yOTMtMS45MmwuMTEtLjIxNi0uMTcyLS4xNzItLjU5My0uNTkzLS4yMDQtLjIwNC0uMjMxLjE3M2E0LjMzMyA0LjMzMyAwIDEgMSAuODcyLS44NzNsLS4xNzMuMjMxLjIwNS4yMDQuNi42Wm0yLjg1MyAzLjg5OGExIDEgMCAwIDAgLjU0My0uNTQyLjk5OS45OTkgMCAwIDAtLjIxOS0xLjA5NGwtMS40MTItMS40MTJhMSAxIDAgMCAwLTEuNjM3LjMyMyAxIDEgMCAwIDAgLjIxOSAxLjA5NWwxLjQxMiAxLjQxMXYuMDAxYS45OTkuOTk5IDAgMCAwIDEuMDk0LjIxOFpNNi43NTIgOS42M2EzLjY2NyAzLjY2NyAwIDEgMC0xLjQyNC03LjE5NEEzLjY2NyAzLjY2NyAwIDAgMCA2Ljc1MiA5LjYzWlxcXCIgZmlsbD1cXFwiI0E2QjVCQVxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjY2N1xcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwibTE0LjIxMiA2LjM2Ni0xLjI2LS40Mi41OTMtMS4xODZBLjY2Ny42NjcgMCAwIDAgMTMuNDIgNGwtMS40Mi0xLjQyYS42NjcuNjY3IDAgMCAwLS43NjctLjEyN2wtMS4xODcuNTkzLS40Mi0xLjI2QS42NjcuNjY3IDAgMCAwIDkgMS4zMzNoLTJhLjY2Ny42NjcgMCAwIDAtLjYzNC40NTNsLS40MiAxLjI2LTEuMTg2LS41OTNhLjY2Ny42NjcgMCAwIDAtLjc2LjEyN0wyLjU3OSA0YS42NjcuNjY3IDAgMCAwLS4xMjcuNzY2bC41OTMgMS4xODctMS4yNi40MkEuNjY3LjY2NyAwIDAgMCAxLjMzMiA3djJhLjY2Ny42NjcgMCAwIDAgLjQ1My42MzNsMS4yNi40Mi0uNTkzIDEuMTg3YS42NjcuNjY3IDAgMCAwIC4xMjcuNzZsMS40MiAxLjQyYS42NjcuNjY3IDAgMCAwIC43NjYuMTI2bDEuMTg3LS41OTMuNDIgMS4yNmEuNjY3LjY2NyAwIDAgMCAuNjMzLjQ1M2gyYS42NjcuNjY3IDAgMCAwIC42MzQtLjQ1M2wuNDItMS4yNiAxLjE4Ni41OTNBLjY2Ni42NjYgMCAwIDAgMTIgMTMuNDJsMS40Mi0xLjQyYS42NjcuNjY3IDAgMCAwIC4xMjYtLjc2N2wtLjU5My0xLjE4NyAxLjI2LS40MkEuNjY3LjY2NyAwIDAgMCAxNC42NjUgOVY3YS42NjcuNjY3IDAgMCAwLS40NTMtLjYzNFptLS44OCAyLjE1NC0uOC4yNjZhMS4zMzQgMS4zMzQgMCAwIDAtLjc3MyAxLjg4bC4zOC43Ni0uNzM0LjczNC0uNzQtLjRhMS4zMzUgMS4zMzUgMCAwIDAtMS44Ni43NzNsLS4yNjYuOGgtMS4wNmwtLjI2Ny0uOGExLjMzMyAxLjMzMyAwIDAgMC0xLjg4LS43NzNsLS43Ni4zOC0uNzMzLS43MzQuNC0uNzRhMS4zMzMgMS4zMzMgMCAwIDAtLjc3NC0xLjg4bC0uOC0uMjY2VjcuNDhsLjgtLjI2N2ExLjMzMyAxLjMzMyAwIDAgMCAuNzc0LTEuODhsLS4zOC0uNzQuNzMzLS43MzMuNzQuMzhhMS4zMzMgMS4zMzMgMCAwIDAgMS44OC0uNzc0bC4yNjctLjhoMS4wNGwuMjY2LjhhMS4zMzMgMS4zMzMgMCAwIDAgMS44OC43NzRsLjc2LS4zOC43MzQuNzMzLS40Ljc0YTEuMzMzIDEuMzMzIDAgMCAwIC43NzMgMS44NmwuOC4yNjd2MS4wNlpNNy45OTkgNS4zMzNhMi42NjcgMi42NjcgMCAxIDAgMCA1LjMzMyAyLjY2NyAyLjY2NyAwIDAgMCAwLTUuMzMzWm0wIDRhMS4zMzMgMS4zMzMgMCAxIDEgMC0yLjY2NyAxLjMzMyAxLjMzMyAwIDAgMSAwIDIuNjY3WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxOCAxOFxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTQuNzIzIDIuNzM4YS43NS43NSAwIDAgMC0uNjMtLjE1IDYgNiAwIDAgMS00LjY2NS0uOTUzLjc1Ljc1IDAgMCAwLS44NTYgMCA2IDYgMCAwIDEtNC42NjQuOTUzLjc1Ljc1IDAgMCAwLS45MDguNzM1VjguOTFhNi43NSA2Ljc1IDAgMCAwIDIuODI3IDUuNDk4bDIuNzM4IDEuOTVhLjc1Ljc1IDAgMCAwIC44NyAwbDIuNzM3LTEuOTVBNi43NSA2Ljc1IDAgMCAwIDE1IDguOTFWMy4zMjNhLjc0OS43NDkgMCAwIDAtLjI3Ny0uNTg1Wk0xMy41IDguOTFhNS4yNDkgNS4yNDkgMCAwIDEtMi4xOTcgNC4yNzVMOSAxNC44MjhsLTIuMzAzLTEuNjQzQTUuMjUgNS4yNSAwIDAgMSA0LjUgOC45MVY0LjE4NUE3LjUgNy41IDAgMCAwIDkgMy4xNDNhNy41IDcuNSAwIDAgMCA0LjUgMS4wNDJWOC45MVptLTMuMzQ1LTEuNzE3TDguMTM3IDkuMjE4bC0uNjY3LS42NzVhLjc1My43NTMgMCAxIDAtMS4wNjUgMS4wNjVsMS4yIDEuMmEuNzUuNzUgMCAwIDAgMS4wNjUgMGwyLjU4LTIuNTU4YS43NTMuNzUzIDAgMCAwLTEuMDY1LTEuMDY1bC0uMDMuMDA4WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTQuMjczIDUuNzY3di0uMDRhNi42NjcgNi42NjcgMCAwIDAtMTIuNTItLjA0LjU2Ny41NjcgMCAwIDAtLjA1My4xNiA2LjY2NyA2LjY2NyAwIDEgMCAxMi41NzMtLjA4Wk04IDIuNjY3YTUuMzMzIDUuMzMzIDAgMCAxIDQuNjEzIDIuNjY2aC0uOGEyIDIgMCAwIDAtMy4wOC4xNDdBMi4xMTMgMi4xMTMgMCAwIDAgOCA1LjMzM2MtLjI1MS4wMDUtLjUuMDU1LS43MzMuMTQ3YTIgMiAwIDAgMC0zLjA4LS4xNDdoLS44QTUuMzMzIDUuMzMzIDAgMCAxIDggMi42NjdabTMgNGEuNjY3LjY2NyAwIDEgMS0xLjMzNCAwIC42NjcuNjY3IDAgMCAxIDEuMzM0IDBabS00LjY2NyAwYS42NjcuNjY3IDAgMSAxLTEuMzMzIDAgLjY2Ny42NjcgMCAwIDEgMS4zMzMgMFpNOCAxMy4zMzNBNS4zMzMgNS4zMzMgMCAwIDEgMi42NjcgOGMuMDAzLS40NS4wNi0uODk4LjE3My0xLjMzM2guODI3YTIgMiAwIDAgMCA0IC4xMi42NjcuNjY3IDAgMCAxIC42NjYgMCAyIDIgMCAxIDAgNC0uMTJoLjgyN2MuMTEyLjQzNS4xNy44ODMuMTczIDEuMzMzQTUuMzM0IDUuMzM0IDAgMCAxIDggMTMuMzMzWm0xLjU3My0zLjg0NmEyLjUwNyAyLjUwNyAwIDAgMS0zLjE0NiAwIC42NjcuNjY3IDAgMCAwLS44NTQgMS4wMjYgMy43ODcgMy43ODcgMCAwIDAgNC44NTQgMCAuNjY4LjY2OCAwIDAgMC0uODU0LTEuMDI2WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCA5IDEyXFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xLjk1NSA4LjMzM2g0LjY3bC0yLjMzNiAyLjI1NC0yLjMzNC0yLjI1NFptMS44NDQgMy4xOTRjLjI3LjI2LjcwNC4yNi45NzQgMGwzLjE3LTMuMDZjLjQzNi0uNDE0LjEzMi0xLjEzNC0uNDgzLTEuMTM0SDEuMTI2Yy0uNjE1IDAtLjkyNi43Mi0uNDkgMS4xNGwzLjE2MyAzLjA1NFptLTIuNjgtNi44Nkg3LjQ2Yy42MTUgMCAuOTI2LS43Mi40OS0xLjE0TDQuNzguNDY3YS43MDYuNzA2IDAgMCAwLS45NzQgMGwtMy4xNyAzLjA2Yy0uNDM2LjQyLS4xMzIgMS4xNC40ODMgMS4xNFpcXFwiIGZpbGw9XFxcIiMxNTUzNjZcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgOSAxMlxcXCI+PHBhdGggZmlsbD1cXFwiIzE1NTM2NlxcXCIgZD1cXFwiTTYuNjI0IDMuNjY3aC00LjY3TDQuMjkgMS40MTNsMi4zMzUgMi4yNTRaTTQuNzguNDczYS43MDYuNzA2IDAgMCAwLS45NzQgMGwtMy4xNyAzLjA2Yy0uNDM2LjQxNC0uMTMyIDEuMTM0LjQ4MyAxLjEzNGg2LjMzNGMuNjE1IDAgLjkyNi0uNzIuNDktMS4xNEw0Ljc4LjQ3M1ptMi42OCA2Ljg2SDEuMTE5Yy0uNjE1IDAtLjkyNi43Mi0uNDkgMS4xNGwzLjE3IDMuMDZjLjI3LjI2LjcwNC4yNi45NzQgMGwzLjE3LTMuMDZjLjQzNi0uNDIuMTMyLTEuMTQtLjQ4My0xLjE0WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHdpZHRoPVxcXCI5XFxcIiBmaWxsPVxcXCJub25lXFxcIj48cGF0aCBmaWxsPVxcXCIjMTU1MzY2XFxcIiBkPVxcXCJNNi42MjUgMy42NjdoLTQuNjdMNC4yOSAxLjQxNGwyLjMzNSAyLjI1M1pNNC43OC40NzRhLjcwNi43MDYgMCAwIDAtLjk3NCAwbC0zLjE3IDMuMDZjLS40MzUuNDEzLS4xMzEgMS4xMzMuNDgzIDEuMTMzaDYuMzM1Yy42MTUgMCAuOTI1LS43Mi40OS0xLjE0TDQuNzguNDc0Wm0yLjY4IDYuODZIMS4xMmMtLjYxNSAwLS45MjYuNzItLjQ5MSAxLjE0bDMuMTcgMy4wNmMuMjcuMjYuNzA1LjI2Ljk3NSAwbDMuMTctMy4wNmMuNDM1LS40Mi4xMzEtMS4xNC0uNDgzLTEuMTRaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNyAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTQuODkgNi40NDdBLjY2Ni42NjYgMCAwIDAgMTQuMzE2IDZsLTMuNzkzLS41NTNMOC44MjMgMmEuNjY3LjY2NyAwIDAgMC0xLjIgMGwtMS43IDMuNDRMMi4xMyA2YS42NjcuNjY3IDAgMCAwLS41NC40NTMuNjY3LjY2NyAwIDAgMCAuMTY2LjY2N0w0LjUxIDkuNzg3bC0uNjY3IDMuNzg2YS42NjcuNjY3IDAgMCAwIC45NjcuNzE0bDMuNDEzLTEuNzggMy40IDEuNzg2Yy4wOTQuMDUzLjIuMDguMzA3LjA4YS42NjcuNjY3IDAgMCAwIC42MjQtLjQyLjY2Ni42NjYgMCAwIDAgLjAzNi0uMzczbC0uNjY3LTMuNzg3IDIuNzUzLTIuNjY2YS42NjcuNjY3IDAgMCAwIC4yMTQtLjY4Wm0tNC4xIDIuNjY2YS42NjYuNjY2IDAgMCAwLS4xOTQuNTk0bC40OCAyLjc5My0yLjUwNi0xLjMzM2EuNjY2LjY2NiAwIDAgMC0uNjI3IDBMNS40MzYgMTIuNWwuNDgtMi43OTNhLjY2Ny42NjcgMCAwIDAtLjE5My0uNTk0bC0yLTIgMi44MDctLjQwNmEuNjY3LjY2NyAwIDAgMCAuNTA2LS4zNjdMOC4yMjMgMy44bDEuMjUzIDIuNTQ3YS42NjcuNjY3IDAgMCAwIC41MDcuMzY2bDIuODA3LjQwNy0yIDEuOTkzWlxcXCIgZmlsbD1cXFwiIzA2REJFNFxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNCAxNFxcXCI+PHBhdGggZmlsbD1cXFwiIzE3OTk3QlxcXCIgc3Ryb2tlPVxcXCIjMTc5OTdCXFxcIiBzdHJva2Utd2lkdGg9XFxcIi42NjdcXFwiIGQ9XFxcIm01LjcxOCA3Ljk2Mi4yMzYuMjM2LjIzNS0uMjM2IDIuODYtMi44NjZhLjMzMy4zMzMgMCAwIDEgLjQ3IDAgLjMzMy4zMzMgMCAwIDEgMCAuNDc0bC0uMDAxLjAwMS0zLjMzMyAzLjMzMmEuMzMzLjMzMyAwIDAgMS0uNDcgMEw0LjE0OSA3LjMzMWwtLjAwOS0uMDA5LS4wMS0uMDA5YS4zMzMuMzMzIDAgMSAxIC40Ny0uNDdsLjAwOC4wMS4wMS4wMSAxLjEgMS4xWk0zLjQ4IDEuNzM0YTYuMzMzIDYuMzMzIDAgMSAxIDcuMDM4IDEwLjUzMkE2LjMzMyA2LjMzMyAwIDAgMSAzLjQ4IDEuNzM0Wm0uMzcgOS45NzhhNS42NjcgNS42NjcgMCAxIDAgNi4yOTctOS40MjUgNS42NjcgNS42NjcgMCAwIDAtNi4yOTYgOS40MjVaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIj48cGF0aCBmaWxsPVxcXCIjZmZmXFxcIiBkPVxcXCJNNi44NzUgMTAuNzI5YS42NjUuNjY1IDAgMCAxLS40NzEtLjE5Nkw0LjUyOSA4LjY1OGEuNjY3LjY2NyAwIDAgMSAuOTQyLS45NDJsMS40MDQgMS40MDMgMy42NTQtMy42NTNhLjY2Ny42NjcgMCAwIDEgLjk0Mi45NDJsLTQuMTI1IDQuMTI1YS42NjQuNjY0IDAgMCAxLS40NzEuMTk2WlxcXCIgb3BhY2l0eT1cXFwiLjk5XFxcIi8+PHBhdGggZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBkPVxcXCJNOCAxLjMzM0E2LjY2NyA2LjY2NyAwIDEgMCAxNC42NjcgOCA2LjY3NCA2LjY3NCAwIDAgMCA4IDEuMzMzWm0zLjQ3MSA1LjA3Ni00LjEyNSA0LjEyNWEuNjY3LjY2NyAwIDAgMS0uOTQyIDBMNC41MjkgOC42NTlhLjY2Ny42NjcgMCAwIDEgLjk0Mi0uOTQzbDEuNDA0IDEuNDAzIDMuNjU0LTMuNjUzYS42NjcuNjY3IDAgMCAxIC45NDIuOTQzWlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCI+PHBhdGggc3Ryb2tlPVxcXCIjMTc5OTdCXFxcIiBmaWxsPVxcXCIjMTc5OTdCXFxcIiBkPVxcXCJNMjAuMjg1IDIgOSAxMy41NjcgMy43MTQgOC41NTYgMCAxMi4yNzIgOSAyMSAyNCA1LjcxNXpcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTQgMTRcXFwiPjxwYXRoIGQ9XFxcIk03IC4zMzJjLTMuNjY3IDAtNi42NjcgMy02LjY2NyA2LjY2NyAwIDMuNjY2IDMgNi42NjYgNi42NjcgNi42NjYgMy42NjYgMCA2LjY2Ni0zIDYuNjY2LTYuNjY2IDAtMy42NjctMy02LjY2Ny02LjY2Ni02LjY2N1ptMi40NjYgOC4yYS42NDQuNjQ0IDAgMCAxIDAgLjkzMy42NDQuNjQ0IDAgMCAxLS45MzMgMEw3IDcuOTMyIDUuNDY2IDkuNDY1YS42NDQuNjQ0IDAgMCAxLS45MzMgMCAuNjQ0LjY0NCAwIDAgMSAwLS45MzNsMS41MzMtMS41MzMtMS41MzMtMS41MzRhLjY0NC42NDQgMCAwIDEgMC0uOTMzLjY0NC42NDQgMCAwIDEgLjkzMyAwTDcgNi4wNjVsMS41MzMtMS41MzNhLjY0NC42NDQgMCAwIDEgLjkzMyAwIC42NDQuNjQ0IDAgMCAxIDAgLjkzM0w3LjkzMyA3bDEuNTMzIDEuNTMzWlxcXCIgZmlsbD1cXFwiI0QxMDAxRVxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAzMiAzMlxcXCI+PGNpcmNsZSBjeD1cXFwiMTZcXFwiIGN5PVxcXCIxNlxcXCIgcj1cXFwiMTZcXFwiIGZpbGw9XFxcIiNGMUY3RjlcXFwiLz48cGF0aCBkPVxcXCJNMTAuNzAyIDE3LjY5YTIuNzQ5IDIuNzQ5IDAgMCAwIDIuMzUgMS40MTFsLjkzMy4wMTgtLjczNC41NzhhNi40OTggNi40OTggMCAwIDEtMy40MDEgMS4zNjIgOC4zNDIgOC4zNDIgMCAwIDAgMy4zNjcuNzA1aC4wMDRhOC4zNTggOC4zNTggMCAwIDAgOC40NDYtOC40MjR2LS41NjhsLjEzNC0uMWMuMjYzLS4xOTYuNTEtLjQxNC43MzctLjY1TDEwLjcwMiAxNy42OVptMCAwaC4wNTJjLjMxMS0uMDAzLjYyLS4wNS45MTgtLjE0MWwtLjAzMi0uNjQ2YTIuNzQxIDIuNzQxIDAgMCAxLTIuMTU4LTIuMTc3Yy4zMjIuMTEuNjYuMTcyIDEuMDA0LjE4MmwxLjE1Ni4wMzEtLjk2Mi0uNjQyYTIuNzM0IDIuNzM0IDAgMCAxLTEuMjE3LTIuMjhjMC0uMzIzLjA1Ni0uNjQyLjE2NC0uOTQzYTkuMDY0IDkuMDY0IDAgMCAwIDYuMjM2IDIuOTQxbC40NDUuMDIzLS4xMDQtLjQzNGEyLjc0MiAyLjc0MiAwIDAgMSA0LjY4LTIuNWwuMTI4LjEzNi4xODMtLjAzNmMuMzg0LS4wNzYuNzYtLjE4NiAxLjEyMi0uMzI5YTIuNzYzIDIuNzYzIDAgMCAxLS43NTguNjY4TDEwLjcwMiAxNy42OVpcXFwiIGZpbGw9XFxcIiMxNTUzNjZcXFwiIHN0cm9rZT1cXFwiIzE1NTM2NlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIj48cGF0aCBmaWxsPVxcXCIjZmZmXFxcIiBzdHJva2U9XFxcIiNmZmZcXFwiIGQ9XFxcIm04LjA2MyA1Ljg1LjAxLjAwM2EuMTY2LjE2NiAwIDAgMSAuMDUyLjAzMkwxMC4xMiA3Ljg4di4wMDJhLjE2OC4xNjggMCAwIDEgLjAzNy4xODJsLjQ2Mi4xOTItLjQ2Mi0uMTkyYS4xNjguMTY4IDAgMCAxLS4wMzYuMDU0bC0uMDAzLjAwM2EuMTY3LjE2NyAwIDAgMS0uMTgyLjAzN2wtLjE5My40NjEuMTkzLS40NjFhLjE2Ny4xNjcgMCAwIDEtLjA1NS0uMDM3bC0uODYtLjg2Ny0uODU1LS44NjFWMTBhLjE2Ny4xNjcgMCAwIDEtLjMzMyAwVjYuMzkzbC0uODU1Ljg2MS0uODU5Ljg2NmEuMTcuMTcgMCAwIDEtLjI0LS4yNGwxLjk5Ni0xLjk5NWEuMTY2LjE2NiAwIDAgMSAuMDUyLS4wMzJsLjAxLS4wMDRhLjE2Ny4xNjcgMCAwIDEgLjEyNiAwWm0tMy40OS0yLjk3N2E2LjE2NyA2LjE2NyAwIDEgMSA2Ljg1MyAxMC4yNTRBNi4xNjcgNi4xNjcgMCAwIDEgNC41NzQgMi44NzNabS4xODYgOS45NzdhNS44MzQgNS44MzQgMCAxIDAgNi40ODEtOS43IDUuODM0IDUuODM0IDAgMCAwLTYuNDgyIDkuNzAxWlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTkuMjcgOS40OTFhLjE2Ny4xNjcgMCAwIDEtLjA1NC0uMDM1bC0uMTktLjE5Ny0uODYtLjg4OXYyLjk2M2EuMTY3LjE2NyAwIDAgMS0uMzMzIDBWOC4zN2wtLjg2Ljg5LS4xODkuMTk1YS4xNy4xNyAwIDAgMS0uMjM3LS4yNDFsMS4zMjgtMS4zMjlhLjE2Ni4xNjYgMCAwIDEgLjA1Mi0uMDMybC4wMS0uMDA0YS4xNjcuMTY3IDAgMCAxIC4xMjYgMGwuMDEuMDA0YS4xNTYuMTU2IDAgMCAxIC4wNTIuMDMybDEuMzI4IDEuMzI5LjAwMi4wMDFhLjE2Ny4xNjcgMCAwIDEgLjAzNi4xODJsLjQ2Mi4xOTMtLjQ2Mi0uMTkzYS4xNjcuMTY3IDAgMCAxLS4wMzYuMDU1bC0uMDAzLjAwM2EuMTY3LjE2NyAwIDAgMS0uMTgzLjAzNlptLS40MzctNy41ODQgMy45NjMgMy45NjMuMDIzLjA3YS4zMy4zMyAwIDAgMSAuMDE0LjA1NHY2LjY3M2ExLjUgMS41IDAgMCAxLTEuNSAxLjVINC42NjdhMS41IDEuNSAwIDAgMS0xLjA2MS0uNDRsLS4zNDguMzQ4LjM0OC0uMzQ4YTEuNSAxLjUgMCAwIDEtLjQ0LTEuMDZWMy4zMzNhMS41IDEuNSAwIDAgMSAxLjUtMS41aDMuOThhLjIzMy4yMzMgMCAwIDEgLjAzMi4wMTVsLjExLjA1OWguMDQ1Wm0uODU0IDEuMzQ2TDguODMzIDIuNHYyLjI2N0ExLjE2NyAxLjE2NyAwIDAgMCAxMCA1LjgzM2gyLjI2N2wtLjg1My0uODUzLTEuNzI3LTEuNzI3Wk04LjUgMi42Njd2LS41SDQuNjY3QTEuMTY3IDEuMTY3IDAgMCAwIDMuNSAzLjMzM3Y5LjMzNGExLjE2NyAxLjE2NyAwIDAgMCAxLjE2NyAxLjE2Nmg2LjY2NmExLjE2NyAxLjE2NyAwIDAgMCAxLjE2Ny0xLjE2NnYtNi41SDEwYTEuNSAxLjUgMCAwIDEtMS41LTEuNXYtMlpcXFwiIGZpbGw9XFxcImN1cnJlbnRjb2xvclxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Y29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIm0zLjgzNyAxMS42NDMtLjEyOC4zMTQuMjQzLjIzNUE1LjgzMyA1LjgzMyAwIDAgMCA4IDEzLjgzM2guMDAyYTUuODMzIDUuODMzIDAgMCAwIDQuMDQ3LTEuNjRsLjI0My0uMjM2LS4xMjktLjMxNGE0LjUgNC41IDAgMCAwLTguMzI1IDBabTguMzM4LS43MjQuNDMuNzM2LjQzMy0uNzM2QTUuNzggNS43OCAwIDAgMCAxMy44MzMgOCA1LjgzMyA1LjgzMyAwIDAgMCAyLjE2NyA4YTUuNzggNS43OCAwIDAgMCAuNzk1IDIuOTJsLjQzMi43MzYuNDMtLjczN2E0LjgzMyA0LjgzMyAwIDAgMSAyLjM2My0yLjA0MmwuNjU1LS4yNjUtLjQ2Ny0uNTNhMi4xNjcgMi4xNjcgMCAxIDEgMy4yNSAwbC0uNDY3LjUzLjY1NS4yNjVhNC44MzMgNC44MzMgMCAwIDEgMi4zNjIgMi4wNDJaTTQuNjM1IDIuODRjMS0uNjU1IDIuMTctMS4wMDUgMy4zNjUtMS4wMDdhNi4xNjYgNi4xNjYgMCAwIDEgNC41MzIgMTAuMzM1IDYuMTY3IDYuMTY3IDAgMCAxLTkuMDY0IDBBNi4xNjcgNi4xNjcgMCAwIDEgNC42MzUgMi44NFptMS44NCAyLjgwOGExLjgzMyAxLjgzMyAwIDEgMCAzLjA1IDIuMDM3IDEuODMzIDEuODMzIDAgMCAwLTMuMDUtMi4wMzdaXFxcIiBmaWxsPVxcXCJ0cmFuc3BhcmVudFxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjAgMjJcXFwiPjxwYXRoIGQ9XFxcIm0xMy41MDQgMTEuNDQ4LS40NTUuMzU4LjUzOC4yMTRhOS42NjcgOS42NjcgMCAwIDEgNi4wNDIgNy45MTYuNjY3LjY2NyAwIDAgMS0uNTcuNzNoLS4wOTFhLjY2Ny42NjcgMCAwIDEtLjY2Ny0uNTkzIDguMzMzIDguMzMzIDAgMCAwLTE2LjU2MiAwQS42NzMuNjczIDAgMCAxIC40IDE5LjkyNmE5LjY2NyA5LjY2NyAwIDAgMSA2LjAxMy03LjkwN2wuNTM2LS4yMTQtLjQ1NC0uMzU3YTUuNjY3IDUuNjY3IDAgMSAxIDcuMDA4IDBabS01LjkxMS0uODQ1YTQuMzM0IDQuMzM0IDAgMSAwIDQuODE1LTcuMjA3IDQuMzM0IDQuMzM0IDAgMCAwLTQuODE1IDcuMjA3WlxcXCIgZmlsbD1cXFwiIzE1NTM2NlxcXCIgc3Ryb2tlPVxcXCIjMTU1MzY2XFxcIiBzdHJva2Utd2lkdGg9XFxcIi42NjdcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjAgMThcXFwiPjxwYXRoIGQ9XFxcIm0xOC45MTcgMTMuNTgzLTYuNzUtMTEuNjY2QzExLjUuNzUgOS45MTcuMzMzIDguNzUgMWMtLjQxNy4yNS0uNzUuNTgzLS45MTcuOTE3bC02Ljc1IDExLjY2NkMuNDE3IDE0Ljc1LjgzMyAxNi4zMzMgMiAxN2MuNDE3LjI1LjgzMy4zMzMgMS4yNS4zMzNoMTMuNDE3YzEuNDE2IDAgMi41LTEuMTY2IDIuNS0yLjUuMDgzLS41LS4wODQtLjkxNi0uMjUtMS4yNVpNMTAgMTRjLS41IDAtLjgzMy0uMzMzLS44MzMtLjgzMyAwLS41LjMzMy0uODM0LjgzMy0uODM0LjUgMCAuODMzLjMzNC44MzMuODM0IDAgLjUtLjMzMy44MzMtLjgzMy44MzNabS44MzMtNC4xNjdjMCAuNS0uMzMzLjgzNC0uODMzLjgzNC0uNSAwLS44MzMtLjMzNC0uODMzLS44MzRWNi41YzAtLjUuMzMzLS44MzMuODMzLS44MzMuNSAwIC44MzMuMzMzLjgzMy44MzN2My4zMzNaXFxcIiBmaWxsPVxcXCIjRkY3MjY0XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE4IDE5XFxcIj48ZyBjbGlwLXBhdGg9XFxcInVybCgjd2FybmluZy1maWxsX3N2Z19fYSlcXFwiPjxwYXRoIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgZD1cXFwibTE3LjAyIDEzLjk5Mi02LjA3My0xMC41Yy0uNi0xLjA1LTIuMDI1LTEuNDI1LTMuMDc0LS44MjUtLjM3NS4yMjUtLjY3NS41MjUtLjgyNS44MjVsLTYuMDczIDEwLjVjLS42IDEuMDUtLjIyNSAyLjQ3NS44MjQgMy4wNzUuMzc1LjIyNS43NS4zIDEuMTI1LjNoMTIuMDcxYzEuMjc1IDAgMi4yNS0xLjA1IDIuMjUtMi4yNS4wNzUtLjQ1LS4wNzUtLjgyNS0uMjI1LTEuMTI1Wm0tOC4wMjMuMzc1Yy0uNDUgMC0uNzUtLjMtLjc1LS43NXMuMy0uNzUuNzUtLjc1Ljc1LjMuNzUuNzUtLjMuNzUtLjc1Ljc1Wm0uNzUtMy43NWMwIC40NS0uMy43NS0uNzUuNzVzLS43NS0uMy0uNzUtLjc1di0zYzAtLjQ1LjMtLjc1Ljc1LS43NXMuNzUuMy43NS43NXYzWlxcXCIvPjwvZz48ZGVmcz48Y2xpcFBhdGggaWQ9XFxcIndhcm5pbmctZmlsbF9zdmdfX2FcXFwiPjxwYXRoIGZpbGw9XFxcIiNmZmZcXFwiIGQ9XFxcIk0wIDBoMTcuOTk1djE4SDB6XFxcIiB0cmFuc2Zvcm09XFxcInRyYW5zbGF0ZSgwIC44NjcpXFxcIi8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDIzIDIxXFxcIj48cGF0aCBkPVxcXCJNMTEuODg3IDE1YTEgMSAwIDEgMCAwIDIgMSAxIDAgMCAwIDAtMlptMTAuNjcgMS40Ny04LjA1LTE0YTMgMyAwIDAgMC01LjI0IDBsLTggMTRBMyAzIDAgMCAwIDMuODI3IDIxaDE2LjEyYTMgMyAwIDAgMCAyLjYxLTQuNTNabS0xLjczIDJhMSAxIDAgMCAxLS44OC41MUgzLjgyN2ExIDEgMCAwIDEtLjg4LS41MSAxIDEgMCAwIDEgMC0xbDgtMTRhMSAxIDAgMCAxIDEuNzggMGw4LjA1IDE0YTEgMSAwIDAgMSAuMDUgMS4wMnYtLjAyWk0xMS44ODcgN2ExIDEgMCAwIDAtMSAxdjRhMSAxIDAgMCAwIDIgMFY4YTEgMSAwIDAgMC0xLTFaXFxcIiBmaWxsPVxcXCIjRDEwMDFFXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDMyIDMyXFxcIj48Y2lyY2xlIGN4PVxcXCIxNlxcXCIgY3k9XFxcIjE2XFxcIiByPVxcXCIxNlxcXCIgZmlsbD1cXFwiI0YxRjdGOVxcXCIvPjxwYXRoIGQ9XFxcIk0yMy45MTcgMTQuMjd2LjAxMmMwIC40NjIgMCAyLjk3Ny0uMDMgMy4zODF2LjAyOGE3LjYgNy42IDAgMCAxLS4zNzQgMi40NDN2LjAwMWExLjUzNSAxLjUzNSAwIDAgMS0uMzc1LjYxNSAxLjgyNyAxLjgyNyAwIDAgMS0uOTU1LjQ5MWMtMi43MDIuMjA4LTQuOTkuMjQ1LTcuNjAzLjIwOGgtLjAxMmEzMy41NjIgMzMuNTYyIDAgMCAxLTQuODE3LS4yNDQgMS44MTEgMS44MTEgMCAwIDEtLjkyNy0uNDg1IDIuMDIyIDIuMDIyIDAgMCAxLS40NS0uODY4bC0uMDAxLS4wMDZhNi44MjggNi44MjggMCAwIDEtLjIxNS0xLjQzdi0uMDA5YTM1Ljg4NyAzNS44ODcgMCAwIDEgLjAwMy00Ljg1N2MuMDM3LS40NDIuMDc0LS44ODguMTc1LTEuMjk4LjEwNC0uNDI0LjI3LS43NzUuNTQtMS4wMjVsLjAwMy0uMDAzYy4yNTMtLjI0LjU3LS40MDEuOTExLS40NjZhNTguNTI3IDU4LjUyNyAwIDAgMSA2LjIwNC0uMjIzaC4wMTJhNTguNDI2IDU4LjQyNiAwIDAgMSA2LjIyNi4yM2MuNDEuMDc4Ljc4Mi4yOSAxLjA1Ni42MDUuNDQ3LjkuNjY0IDEuODk2LjYyOSAyLjlabS05Ljk0NSAzLjg2N3YuNTZsLjQ5Mi0uMjY3YTk4Ljk3IDk4Ljk3IDAgMCAxIDIuMjY0LTEuMTc1bC4wNjMtLjAzMmE3MC40NSA3MC40NSAwIDAgMCAyLjExNi0xLjEwNGwuNTQtLjMtLjU0Ny0uMjg3LTQuNDQtMi4zMzItLjQ4OC0uMjU3djUuMTk0WlxcXCIgZmlsbD1cXFwiIzE1NTM2NlxcXCIgc3Ryb2tlPVxcXCIjMTU1MzY2XFxcIiBzdHJva2Utd2lkdGg9XFxcIi42NjdcXFwiLz48L3N2Zz5cIjsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMV0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsyXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL011bHRpU2VsZWN0V2l0aFNlYXJjaC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD1kYzcwNWY0OCZsYW5nPWNzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsxXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzJdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vWGxzTGlzdEVycm9yLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTM3NjE3NzAyJnNjb3BlZD10cnVlJmxhbmc9Y3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzFdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMl0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9zcGlubmVyTG9hZGVyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTAwODkyZGY2Jmxhbmc9Y3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzFdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMl0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UYWJsZUxheW91dC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD01ZDg0YTFkOCZzY29wZWQ9dHJ1ZSZsYW5nPWNzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTGlzdEVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9OWE2MDg0MzImc2NvcGVkPXRydWUmbGFuZz1jc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMV0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsyXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1hsc0xpc3QudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NWY1MDA4YjQmc2NvcGVkPXRydWUmbGFuZz1jc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMV0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsyXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RhYmxlTGlzdC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0wNWIyNjM0YiZsYW5nPWNzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVXNlckxpc3RpbmcudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MDYxMWQ5ZjAmc2NvcGVkPXRydWUmbGFuZz1jc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWRtaW5IZWFkZXIudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTEmaWQ9NmZlNTkwNTUmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0J1bGtwdWJsaXNoV2l0aFhscy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0yNDQzZGY1MyZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRXJyb3JNZXNzYWdlLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPWI3N2IxMWQ0Jmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Ib3ZlclRleHQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NTUzOGQ3ZTImbGFuZz1zY3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0xvYWRlci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD04ZTM2ZjhlYyZsYW5nPXNjc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUG9wdXBNb2RhbC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD01YTJiZGE1OCZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU2hpbW1lckxvYWRpbmcudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NzQzNTYxNzImbGFuZz1zY3NzJnNjb3BlZD10cnVlXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Vycm9yTGlzdHMudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9ZjY3YzdlNzImbGFuZz1zY3NzJnNjb3BlZD10cnVlXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1Byb2dyZXNzTG9hZGVyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTVjMzJiZjBjJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TdGlja3lFcnJvcnMudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MWUzOGQxMGUmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1VwbG9hZGVkRXJyb3JzLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTZmMTdlYzQ1Jmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BY3Rpdml0eUluZGV4LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTBhNTcxZmQ2Jmxhbmc9c2Nzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9DcmVhdGVNb2RhbC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD1jN2NhMjhiOCZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRXJyb3JJdGVtLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTA2M2NiZDg2Jmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BY3Rpdml0aWVzRWxlbWVudHMudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NWE0MGZjZjQmbGFuZz1zY3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Rvd25sb2FkQWN0aXZpdHlCdXR0b24udnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NjYxZTZmOGUmc2NvcGVkPXRydWUmbGFuZz1zY3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Rhc2hib2FyZExpc3RTZWN0aW9uLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTRmMjI1ZDNlJmxhbmc9c2Nzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9JbXBvcnRMaXN0LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTQwZDc4NzBhJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9PcmdhbmlzYXRpb25EYXRhLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTRhZGE1ZjM2Jmxhbmc9c2Nzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZXNldFBhZ2UudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MzZiNzY0YmImbGFuZz1zY3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0lhdGlSZWdpc3RlclBhZ2UudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTEmaWQ9MTdlNjMyYTYmbGFuZz1zY3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlZ2lzdGVyUGFnZS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MSZpZD01MjI2NjIwMCZsYW5nPXNjc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU2lnbkluLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPWExODYxZjNlJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0FjdGl2aXR5RG93bmxvYWQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTMyNmFkNzZlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9BY3Rpdml0eURvd25sb2FkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FjdGl2aXR5RG93bmxvYWQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQWN0aXZpdHlEb3dubG9hZC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMzI2YWQ3NmVcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCczMjZhZDc2ZScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzMyNmFkNzZlJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9BY3Rpdml0eURvd25sb2FkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zMjZhZDc2ZSZ0cz10cnVlXCIsICgpID0+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+IHtcbiAgICBhcGkucmVyZW5kZXIoJzM3OTI3MGE2JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9BYm91dFBhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdkOWZhOTA0XCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQWJvdXRQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qc1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BYm91dFBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvQWJvdXRQYWdlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI3ZDlmYTkwNFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzdkOWZhOTA0JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnN2Q5ZmE5MDQnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0Fib3V0UGFnZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2Q5ZmE5MDRcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignN2Q5ZmE5MDQnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0VtYWlsVmVyaWZpY2F0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03Y2RhNWMxOSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRW1haWxWZXJpZmljYXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0VtYWlsVmVyaWZpY2F0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL0VtYWlsVmVyaWZpY2F0aW9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI3Y2RhNWMxOVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzdjZGE1YzE5JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnN2NkYTVjMTknLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0VtYWlsVmVyaWZpY2F0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03Y2RhNWMxOSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzdjZGE1YzE5JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9JYXRpUmVnaXN0ZXJQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xN2U2MzJhNiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vSWF0aVJlZ2lzdGVyUGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vSWF0aVJlZ2lzdGVyUGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgXCJAdnVlZm9ybS9tdWx0aXNlbGVjdC90aGVtZXMvZGVmYXVsdC5jc3M/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPWNzc1wiXG5pbXBvcnQgXCIuL0lhdGlSZWdpc3RlclBhZ2UudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTEmaWQ9MTdlNjMyYTYmbGFuZz1zY3NzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvSWF0aVJlZ2lzdGVyUGFnZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMTdlNjMyYTZcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcxN2U2MzJhNicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzE3ZTYzMmE2JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9JYXRpUmVnaXN0ZXJQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xN2U2MzJhNiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzE3ZTYzMmE2JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9JYXRpU3RhbmRhcmQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWU2ODQ5NGQwJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9JYXRpU3RhbmRhcmQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIlxuZXhwb3J0ICogZnJvbSBcIi4vSWF0aVN0YW5kYXJkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvSWF0aVN0YW5kYXJkLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJlNjg0OTRkMFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2U2ODQ5NGQwJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnZTY4NDk0ZDAnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0lhdGlTdGFuZGFyZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZTY4NDk0ZDAmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdlNjg0OTRkMCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUHVibGlzaGluZ0NoZWNrbGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZGNhNjkzOTYmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1B1Ymxpc2hpbmdDaGVja2xpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIlxuZXhwb3J0ICogZnJvbSBcIi4vUHVibGlzaGluZ0NoZWNrbGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1B1Ymxpc2hpbmdDaGVja2xpc3QudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImRjYTY5Mzk2XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnZGNhNjkzOTYnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdkY2E2OTM5NicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUHVibGlzaGluZ0NoZWNrbGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZGNhNjkzOTYmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdkY2E2OTM5NicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUmVnaXN0ZXJQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01MjI2NjIwMCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUmVnaXN0ZXJQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SZWdpc3RlclBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IFwiQHZ1ZWZvcm0vbXVsdGlzZWxlY3QvdGhlbWVzL2RlZmF1bHQuY3NzP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1jc3NcIlxuaW1wb3J0IFwiLi9SZWdpc3RlclBhZ2UudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTEmaWQ9NTIyNjYyMDAmbGFuZz1zY3NzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvUmVnaXN0ZXJQYWdlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI1MjI2NjIwMFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzUyMjY2MjAwJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNTIyNjYyMDAnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1JlZ2lzdGVyUGFnZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTIyNjYyMDAmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc1MjI2NjIwMCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vU3VwcG9ydFBhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTU2ZmZmOTgwJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9TdXBwb3J0UGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiXG5leHBvcnQgKiBmcm9tIFwiLi9TdXBwb3J0UGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1N1cHBvcnRQYWdlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI1NmZmZjk4MFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzU2ZmZmOTgwJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNTZmZmY5ODAnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1N1cHBvcnRQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01NmZmZjk4MCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzU2ZmZmOTgwJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9XZWxjb21lUGFnZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZWFlNDQ4NWFcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9XZWxjb21lUGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anNcIlxuZXhwb3J0ICogZnJvbSBcIi4vV2VsY29tZVBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvV2VsY29tZVBhZ2UudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImVhZTQ0ODVhXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnZWFlNDQ4NWEnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdlYWU0NDg1YScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vV2VsY29tZVBhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWVhZTQ0ODVhXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2VhZTQ0ODVhJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9BZG1pbkZvb3Rlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTVmOWI0YmImdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FkbWluRm9vdGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FkbWluRm9vdGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvQWRtaW5Gb290ZXIudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjU1ZjliNGJiXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNTVmOWI0YmInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc1NWY5YjRiYicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQWRtaW5Gb290ZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTU1ZjliNGJiJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNTVmOWI0YmInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0pvaW5Ob3cudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI2OWY1MDg2JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Kb2luTm93LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9Kb2luTm93LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9ob21lL21vbWlrL1lJL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL0pvaW5Ob3cudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjI2OWY1MDg2XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMjY5ZjUwODYnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcyNjlmNTA4NicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vSm9pbk5vdy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjY5ZjUwODYmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcyNjlmNTA4NicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vU2lnbkluLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1hMTg2MWYzZSZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vU2lnbkluLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9TaWduSW4udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9TaWduSW4udnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9YTE4NjFmM2UmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL2hvbWUvbW9taWsvWUkvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX3Njb3BlSWQnLFwiZGF0YS12LWExODYxZjNlXCJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL1NpZ25Jbi52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiYTE4NjFmM2VcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdhMTg2MWYzZScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2ExODYxZjNlJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9TaWduSW4udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWExODYxZjNlJnNjb3BlZD10cnVlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignYTE4NjFmM2UnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1dlYkZvb3Rlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjBkMTA2ODAmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1dlYkZvb3Rlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiXG5leHBvcnQgKiBmcm9tIFwiLi9XZWJGb290ZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9XZWJGb290ZXIudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjIwZDEwNjgwXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMjBkMTA2ODAnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcyMGQxMDY4MCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vV2ViRm9vdGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yMGQxMDY4MCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzIwZDEwNjgwJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9XZWJIZWFkZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTEwYzllMGIyJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9XZWJIZWFkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1dlYkhlYWRlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvaG9tZS9tb21pay9ZSS9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9XZWJIZWFkZXIudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjEwYzllMGIyXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMTBjOWUwYjInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcxMGM5ZTBiMicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vV2ViSGVhZGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xMGM5ZTBiMiZ0cz10cnVlXCIsICgpID0+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/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/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Fib3V0UGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BYm91dFBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9XZWxjb21lUGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9XZWxjb21lUGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anNcIiIsInZhciBtYXAgPSB7XG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9hY3Rpdml0eV9kYXRlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2FjdGl2aXR5X2RhdGUuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9hY3Rpdml0eV9zY29wZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9hY3Rpdml0eV9zY29wZS5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL2FjdGl2aXR5X3N0YXR1cy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9hY3Rpdml0eV9zdGF0dXMuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9idWRnZXQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvYnVkZ2V0LnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvYnVpbGRpbmcuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvYnVpbGRpbmcuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9jYXBpdGFsX3NwZW5kLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2NhcGl0YWxfc3BlbmQuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9jb2xsYWJvcmF0aW9uX3R5cGUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvY29sbGFib3JhdGlvbl90eXBlLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvY29uZGl0aW9ucy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9jb25kaXRpb25zLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvY29udGFjdF9pbmZvLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2NvbnRhY3RfaW5mby5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL2NvdW50cnlfYnVkZ2V0X2l0ZW1zLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2NvdW50cnlfYnVkZ2V0X2l0ZW1zLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvY3JzLWFkZC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9jcnMtYWRkLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvZGVmYXVsdF9haWRfdHlwZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9kZWZhdWx0X2FpZF90eXBlLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvZGVmYXVsdF9maW5hbmNlX3R5cGUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvZGVmYXVsdF9maW5hbmNlX3R5cGUuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9kZWZhdWx0X2Zsb3dfdHlwZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9kZWZhdWx0X2Zsb3dfdHlwZS5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL2Rlc2NyaXB0aW9uLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2Rlc2NyaXB0aW9uLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvZG9jdW1lbnRfbGluay5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9kb2N1bWVudF9saW5rLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvaHVtYW5pdGFyaWFuX3Njb3BlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2h1bWFuaXRhcmlhbl9zY29wZS5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL2lhdGlfaWRlbnRpZmllci5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9pYXRpX2lkZW50aWZpZXIuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9pbmRpY2F0b3Iuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvaW5kaWNhdG9yLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvbGVnYWN5X2RhdGEuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvbGVnYWN5X2RhdGEuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9sb2NhdGlvbi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9sb2NhdGlvbi5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL290aGVyX2lkZW50aWZpZXIuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvb3RoZXJfaWRlbnRpZmllci5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL3BhcnRpY2lwYXRpbmdfb3JnLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3BhcnRpY2lwYXRpbmdfb3JnLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvcGVyaW9kLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3BlcmlvZC5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL3BsYW5uZWRfZGlzYnVyc2VtZW50LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3BsYW5uZWRfZGlzYnVyc2VtZW50LnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvcG9saWN5X21hcmtlci5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9wb2xpY3lfbWFya2VyLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvcmVjaXBpZW50X2NvdW50cnkuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvcmVjaXBpZW50X2NvdW50cnkuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9yZWNpcGllbnRfcmVnaW9uLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3JlY2lwaWVudF9yZWdpb24uc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9yZWxhdGVkX2FjdGl2aXR5LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3JlbGF0ZWRfYWN0aXZpdHkuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9yZXBvcnRpbmdfb3JnLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3JlcG9ydGluZ19vcmcuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9yZXN1bHQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvcmVzdWx0LnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvcmVzdWx0cy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9yZXN1bHRzLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvc2VjdG9yLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3NlY3Rvci5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL3RhZy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy90YWcuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy90aXRsZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy90aXRsZS5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL3RyYW5zYWN0aW9ucy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy90cmFuc2FjdGlvbnMuc3ZnXCIsXG5cdFwiLi9hZGQtbW9yZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hZGQtbW9yZS5zdmdcIixcblx0XCIuL2FkZC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hZGQuc3ZnXCIsXG5cdFwiLi9hbGVydC1vdXRsaW5lLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FsZXJ0LW91dGxpbmUuc3ZnXCIsXG5cdFwiLi9hbGVydC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hbGVydC5zdmdcIixcblx0XCIuL2FsaWduLWNlbnRlci5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hbGlnbi1jZW50ZXIuc3ZnXCIsXG5cdFwiLi9hbGlnbi1yaWdodC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hbGlnbi1yaWdodC5zdmdcIixcblx0XCIuL2FwcHJvdmVkLWNsb3VkLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FwcHJvdmVkLWNsb3VkLnN2Z1wiLFxuXHRcIi4vYXJyb3ctZG93bi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hcnJvdy1kb3duLnN2Z1wiLFxuXHRcIi4vYXJyb3ctbGVmdC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hcnJvdy1sZWZ0LnN2Z1wiLFxuXHRcIi4vYXJyb3ctcmlnaHQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYXJyb3ctcmlnaHQuc3ZnXCIsXG5cdFwiLi9hcnJvdy1zaG9ydC1sZWZ0LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Fycm93LXNob3J0LWxlZnQuc3ZnXCIsXG5cdFwiLi9hc2NlbmRpbmctYXJyb3cuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYXNjZW5kaW5nLWFycm93LnN2Z1wiLFxuXHRcIi4vYmlsbC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9iaWxsLnN2Z1wiLFxuXHRcIi4vYm94LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2JveC5zdmdcIixcblx0XCIuL2J1ZGdldC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9idWRnZXQuc3ZnXCIsXG5cdFwiLi9idWlsZGluZy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9idWlsZGluZy5zdmdcIixcblx0XCIuL2NhbmNlbC1jbG91ZC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jYW5jZWwtY2xvdWQuc3ZnXCIsXG5cdFwiLi9jYW5jZWwtY3Jvc3Muc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY2FuY2VsLWNyb3NzLnN2Z1wiLFxuXHRcIi4vY2hlY2stY2lyY2xlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2NoZWNrLWNpcmNsZS5zdmdcIixcblx0XCIuL2NoZWNrYm94LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2NoZWNrYm94LnN2Z1wiLFxuXHRcIi4vY2hlY2tlZC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jaGVja2VkLnN2Z1wiLFxuXHRcIi4vY2hldnJvbi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jaGV2cm9uLnN2Z1wiLFxuXHRcIi4vY2lyY2xlLXJlZC1jcm9zcy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jaXJjbGUtcmVkLWNyb3NzLnN2Z1wiLFxuXHRcIi4vY2xvc2Uuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY2xvc2Uuc3ZnXCIsXG5cdFwiLi9jb3B5cmlnaHQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY29weXJpZ2h0LnN2Z1wiLFxuXHRcIi4vY29yZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jb3JlLnN2Z1wiLFxuXHRcIi4vY3Jvc3MtaWNvbi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jcm9zcy1pY29uLnN2Z1wiLFxuXHRcIi4vY3Jvc3Muc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY3Jvc3Muc3ZnXCIsXG5cdFwiLi9kZWZhdWx0LTEuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZGVmYXVsdC0xLnN2Z1wiLFxuXHRcIi4vZGVmYXVsdC0yLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2RlZmF1bHQtMi5zdmdcIixcblx0XCIuL2RlbGV0ZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kZWxldGUuc3ZnXCIsXG5cdFwiLi9kZXNjZW5kaW5nLWFycm93LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Rlc2NlbmRpbmctYXJyb3cuc3ZnXCIsXG5cdFwiLi9kb2N1bWVudC13cml0ZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kb2N1bWVudC13cml0ZS5zdmdcIixcblx0XCIuL2RvdWJsZS10aWNrLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2RvdWJsZS10aWNrLnN2Z1wiLFxuXHRcIi4vZG93bmxvYWQtY29kZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kb3dubG9hZC1jb2RlLnN2Z1wiLFxuXHRcIi4vZG93bmxvYWQtZmlsZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kb3dubG9hZC1maWxlLnN2Z1wiLFxuXHRcIi4vZG93bmxvYWQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZG93bmxvYWQuc3ZnXCIsXG5cdFwiLi9kcm9wZG93bi1hcnJvdy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kcm9wZG93bi1hcnJvdy5zdmdcIixcblx0XCIuL2VkaXQtYWN0aW9uLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2VkaXQtYWN0aW9uLnN2Z1wiLFxuXHRcIi4vZWRpdC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9lZGl0LnN2Z1wiLFxuXHRcIi4vZXhjbGFtYXRpb24td2FybmluZy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9leGNsYW1hdGlvbi13YXJuaW5nLnN2Z1wiLFxuXHRcIi4vZXhwb3J0LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2V4cG9ydC5zdmdcIixcblx0XCIuL2V4dGVybmFsLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2V4dGVybmFsLnN2Z1wiLFxuXHRcIi4vZXllLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2V5ZS5zdmdcIixcblx0XCIuL2ZvbGRlci5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9mb2xkZXIuc3ZnXCIsXG5cdFwiLi9mb290ZXItbG9nby5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9mb290ZXItbG9nby5zdmdcIixcblx0XCIuL2Z1bm5lbC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9mdW5uZWwuc3ZnXCIsXG5cdFwiLi9ncm91cC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9ncm91cC5zdmdcIixcblx0XCIuL2hlYWRlci1sb2dvLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2hlYWRlci1sb2dvLnN2Z1wiLFxuXHRcIi4vaGVhZHBob25lLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2hlYWRwaG9uZS5zdmdcIixcblx0XCIuL2hlbHAuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvaGVscC5zdmdcIixcblx0XCIuL2hpZGUtcGFzc3dvcmQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvaGlkZS1wYXNzd29yZC5zdmdcIixcblx0XCIuL2hpc3Rvcnkuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvaGlzdG9yeS5zdmdcIixcblx0XCIuL2ljLXZlcmlmaWNhdGlvbi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9pYy12ZXJpZmljYXRpb24uc3ZnXCIsXG5cdFwiLi9pbmRpY2F0b3ItaWNvbi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9pbmRpY2F0b3ItaWNvbi5zdmdcIixcblx0XCIuL2tleS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9rZXkuc3ZnXCIsXG5cdFwiLi9sZWZ0LWFycm93LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2xlZnQtYXJyb3cuc3ZnXCIsXG5cdFwiLi9sb2dvLXdoaXRlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2xvZ28td2hpdGUuc3ZnXCIsXG5cdFwiLi9sb2dvLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2xvZ28uc3ZnXCIsXG5cdFwiLi9sb2dvdXQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvbG9nb3V0LnN2Z1wiLFxuXHRcIi4vbWFnbmlmeWluZy1nbGFzcy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9tYWduaWZ5aW5nLWdsYXNzLnN2Z1wiLFxuXHRcIi4vbWFpbC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9tYWlsLnN2Z1wiLFxuXHRcIi4vbWluaW1pemUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvbWluaW1pemUuc3ZnXCIsXG5cdFwiLi9tb29uLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL21vb24uc3ZnXCIsXG5cdFwiLi9ub3RlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL25vdGUuc3ZnXCIsXG5cdFwiLi9vcmdhbmlzYXRpb24tZWxlbWVudHMvYnVpbGRpbmcuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL2J1aWxkaW5nLnN2Z1wiLFxuXHRcIi4vb3JnYW5pc2F0aW9uLWVsZW1lbnRzL2Rlc2NyaXB0aW9uLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9kZXNjcmlwdGlvbi5zdmdcIixcblx0XCIuL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9kb2N1bWVudF9saW5rLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9kb2N1bWVudF9saW5rLnN2Z1wiLFxuXHRcIi4vb3JnYW5pc2F0aW9uLWVsZW1lbnRzL25hbWUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL25hbWUuc3ZnXCIsXG5cdFwiLi9vcmdhbmlzYXRpb24tZWxlbWVudHMvb3JnX2lkZW50aWZpZXIuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL29yZ19pZGVudGlmaWVyLnN2Z1wiLFxuXHRcIi4vb3JnYW5pc2F0aW9uLWVsZW1lbnRzL29yZ2FuaXNhdGlvbl9pZGVudGlmaWVyLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9vcmdhbmlzYXRpb25faWRlbnRpZmllci5zdmdcIixcblx0XCIuL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9vcmdhbml6YXRpb25faWRlbnRpZmllci5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvb3JnYW5pemF0aW9uX2lkZW50aWZpZXIuc3ZnXCIsXG5cdFwiLi9vcmdhbmlzYXRpb24tZWxlbWVudHMvcmVjaXBpZW50X2NvdW50cnlfYnVkZ2V0LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9yZWNpcGllbnRfY291bnRyeV9idWRnZXQuc3ZnXCIsXG5cdFwiLi9vcmdhbmlzYXRpb24tZWxlbWVudHMvcmVjaXBpZW50X29yZ19idWRnZXQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3JlY2lwaWVudF9vcmdfYnVkZ2V0LnN2Z1wiLFxuXHRcIi4vb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3JlY2lwaWVudF9yZWdpb25fYnVkZ2V0LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9yZWNpcGllbnRfcmVnaW9uX2J1ZGdldC5zdmdcIixcblx0XCIuL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9yZXBvcnRpbmdfb3JnLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9yZXBvcnRpbmdfb3JnLnN2Z1wiLFxuXHRcIi4vb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3JlcG9ydGluZ19vcmdhbmlzYXRpb24uc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3JlcG9ydGluZ19vcmdhbmlzYXRpb24uc3ZnXCIsXG5cdFwiLi9vcmdhbmlzYXRpb24tZWxlbWVudHMvdGl0bGUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3RpdGxlLnN2Z1wiLFxuXHRcIi4vb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3RvdGFsX2J1ZGdldC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvdG90YWxfYnVkZ2V0LnN2Z1wiLFxuXHRcIi4vb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3RvdGFsX2V4cGVuZGl0dXJlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy90b3RhbF9leHBlbmRpdHVyZS5zdmdcIixcblx0XCIuL3BhbmVsLXNlYXJjaC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9wYW5lbC1zZWFyY2guc3ZnXCIsXG5cdFwiLi9wZXJpb2QtaWNvbi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9wZXJpb2QtaWNvbi5zdmdcIixcblx0XCIuL3BsdXMtb3V0bGluZWQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcGx1cy1vdXRsaW5lZC5zdmdcIixcblx0XCIuL3BsdXMuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcGx1cy5zdmdcIixcblx0XCIuL3B1Ymxpc2guc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcHVibGlzaC5zdmdcIixcblx0XCIuL3B3LWxvY2suc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcHctbG9jay5zdmdcIixcblx0XCIuL3F1ZXN0aW9uLW1hcmsuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcXVlc3Rpb24tbWFyay5zdmdcIixcblx0XCIuL3JlZC1jcm9zcy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9yZWQtY3Jvc3Muc3ZnXCIsXG5cdFwiLi9yZWQtZG90LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3JlZC1kb3Quc3ZnXCIsXG5cdFwiLi9yZWRvLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3JlZG8uc3ZnXCIsXG5cdFwiLi9yZXN1bHQtaWNvbi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9yZXN1bHQtaWNvbi5zdmdcIixcblx0XCIuL3JpZ2h0LWFycm93LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3JpZ2h0LWFycm93LnN2Z1wiLFxuXHRcIi4vc2VhcmNoLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3NlYXJjaC5zdmdcIixcblx0XCIuL3NldHRpbmcuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvc2V0dGluZy5zdmdcIixcblx0XCIuL3NoaWVsZC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9zaGllbGQuc3ZnXCIsXG5cdFwiLi9zbWlsZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9zbWlsZS5zdmdcIixcblx0XCIuL3NvcnQtYXNjZW5kaW5nLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3NvcnQtYXNjZW5kaW5nLnN2Z1wiLFxuXHRcIi4vc29ydC1kZXNjZW5kaW5nLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3NvcnQtZGVzY2VuZGluZy5zdmdcIixcblx0XCIuL3NvcnQtaWNvbi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9zb3J0LWljb24uc3ZnXCIsXG5cdFwiLi9zdGFyLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3N0YXIuc3ZnXCIsXG5cdFwiLi90aWNrLW91dGxpbmUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvdGljay1vdXRsaW5lLnN2Z1wiLFxuXHRcIi4vdGljay5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy90aWNrLnN2Z1wiLFxuXHRcIi4vdGlja2VkLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3RpY2tlZC5zdmdcIixcblx0XCIuL3RpbWVzLWNpcmNsZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy90aW1lcy1jaXJjbGUuc3ZnXCIsXG5cdFwiLi90d2l0dGVyLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3R3aXR0ZXIuc3ZnXCIsXG5cdFwiLi91cC1hcnJvdy1vdXRsaW5lLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3VwLWFycm93LW91dGxpbmUuc3ZnXCIsXG5cdFwiLi91cGxvYWQtZmlsZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy91cGxvYWQtZmlsZS5zdmdcIixcblx0XCIuL3VzZXItcHJvZmlsZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy91c2VyLXByb2ZpbGUuc3ZnXCIsXG5cdFwiLi91c2VyLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3VzZXIuc3ZnXCIsXG5cdFwiLi93YXJuaW5nLWFjdGl2aXR5LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3dhcm5pbmctYWN0aXZpdHkuc3ZnXCIsXG5cdFwiLi93YXJuaW5nLWZpbGwuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvd2FybmluZy1maWxsLnN2Z1wiLFxuXHRcIi4vd2FybmluZy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy93YXJuaW5nLnN2Z1wiLFxuXHRcIi4veW91dHViZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy95b3V0dWJlLnN2Z1wiXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2ZyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qJFwiOyIsIi8qIChpZ25vcmVkKSAqLyJdLCJuYW1lcyI6WyJfX2ltcG9ydERlZmF1bHQiLCJtb2QiLCJfX2VzTW9kdWxlIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJ2dWVfMSIsInJlcXVpcmUiLCJ2dWVfMiIsInNwaW5uZXJMb2FkZXJfdnVlXzEiLCJQb3B1cE1vZGFsX3Z1ZV8xIiwiYXhpb3NfMSIsImluZGV4XzEiLCJkZWZpbmVDb21wb25lbnQiLCJfX25hbWUiLCJzZXR1cCIsIl9fcHJvcHMiLCJfYSIsImV4cG9zZSIsInN0b3JlIiwidXNlU3RvcmUiLCJzaG93UmV0cnlEb3dubG9hZE1vZGVsIiwicmVmIiwiaXNMb2FkaW5nIiwib25Nb3VudGVkIiwic3VwcG9ydEJ1dHRvbiIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsInN0eWxlIiwidHJhbnNmb3JtIiwiZG93bmxvYWRGaWxlIiwiZGlzcGF0Y2giLCJhcGlVcmwiLCJjb25jYXQiLCJkb3dubG9hZEFwaVVybCIsInNwbGl0IiwibWV0aG9kIiwidXJsIiwicmVzcG9uc2VUeXBlIiwidGhlbiIsInJlcyIsImZpbGVOYW1lIiwiaGVhZGVycyIsImJsb2IiLCJCbG9iIiwiZGF0YSIsImxpbmsiLCJjcmVhdGVFbGVtZW50IiwiaHJlZiIsIndpbmRvdyIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsInNldEF0dHJpYnV0ZSIsImJvZHkiLCJhcHBlbmRDaGlsZCIsImNsaWNrIiwicmV0cnlEb3dubG9hZCIsInhsc0Rvd25sb2FkU3RhdHVzIiwiZ2V0IiwiY2FuY2VsRG93bmxvYWQiLCJzdWNjZXNzIiwicGVyY2VudGFnZVdpZHRoIiwiY29tcHV0ZWQiLCJmaWxlQ291bnQiLCJpbmplY3QiLCJfX3JldHVybmVkX18iLCJzcGlubmVyTG9hZGVyIiwiTW9kYWwiLCJlbnVtZXJhYmxlIiwiX19hd2FpdGVyIiwidGhpc0FyZyIsIl9hcmd1bWVudHMiLCJQIiwiZ2VuZXJhdG9yIiwiYWRvcHQiLCJyZXNvbHZlIiwiUHJvbWlzZSIsInJlamVjdCIsImZ1bGZpbGxlZCIsInN0ZXAiLCJuZXh0IiwiZSIsInJlamVjdGVkIiwicmVzdWx0IiwiZG9uZSIsImFwcGx5IiwiX19nZW5lcmF0b3IiLCJfIiwibGFiZWwiLCJzZW50IiwidCIsInRyeXMiLCJvcHMiLCJmIiwieSIsImciLCJ2ZXJiIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJuIiwidiIsIm9wIiwiVHlwZUVycm9yIiwiY2FsbCIsInBvcCIsImxlbmd0aCIsInB1c2giLCJzaG93XzEiLCJjb3JlXzEiLCJDcmVhdGVNb2RhbF92dWVfMSIsIlRvYXN0TWVzc2FnZV92dWVfMSIsInByb3BzIiwidXNlciIsInR5cGUiLCJyZXF1aXJlZCIsIm9yZ2FuaXphdGlvbiIsInZhbGlkYXRvciIsInN1cGVyQWRtaW4iLCJCb29sZWFuIiwiaGFzQWRtaW5CYXIiLCJOdW1iZXIiLCJfYiIsImRldGFpbFN0b3JlIiwidHJhbnNsYXRpb24iLCJzaG93VXNlckRyb3Bkb3duIiwidG9hc3RWaXNpYmlsaXR5Iiwic2hvd1NpZGViYXIiLCJ0b2FzdE1lc3NhZ2UiLCJ0b2FzdFR5cGUiLCJyZWFjdGl2ZSIsImxhbmd1YWdlTmF2TGlDbGFzc2VzIiwibGFuZ3VhZ2VOYXZBbmNob3JDbGFzc2VzIiwibWVudU5hdkxpQ2xhc3NlcyIsIm1lbnVOYXZBbmNob3JDbGFzc2VzIiwibGFuZ3VhZ2VzIiwibGFuZ3VhZ2UiLCJwZXJtYWxpbmsiLCJhY3RpdmUiLCJ3ZWJfbGFuZyIsIm9yZ19tZW51cyIsIm5hbWUiLCJhZG1pbiIsImhlYWRlciIsImFjdGl2aXR5X2RhdGEiLCJvcmdhbmlzYXRpb25fZGF0YSIsInNldHRpbmdzIiwiY29tbW9uX2xhbmciLCJhZGRfaW1wb3J0X2FjdGl2aXR5IiwidXNlcnMiLCJzdXBlcmFkbWluX21lbnVzIiwib3JnX2xpc3QiLCJ3YXRjaCIsInN0YXRlIiwibGlDbGFzcyIsIl9jIiwidXNlVG9nZ2xlIiwibW9kYWxWYWx1ZSIsIm1vZGFsVG9nZ2xlIiwidG9hc3QiLCJtZXNzYWdlIiwic2V0VGltZW91dCIsImlzVG91Y2hEZXZpY2UiLCJuYXZpZ2F0b3IiLCJtYXhUb3VjaFBvaW50cyIsIlRvZ2dsZU1vZGVsIiwibG9jYWxTdG9yYWdlIiwicmVtb3ZlSXRlbSIsInNpZGViYXIiLCJkb2N1bWVudEVsZW1lbnQiLCJvdmVyZmxvdyIsImNoYW5nZUFjdGl2ZU1lbnUiLCJwYXRoIiwibG9jYXRpb24iLCJwYXRobmFtZSIsImZvckVhY2giLCJtZW51Iiwia2V5IiwiaW5jbHVkZXMiLCJwYSIsInVzZVN0b3JhZ2UiLCJwdWJsaXNoaW5nQWN0aXZpdGllcyIsImdldEl0ZW0iLCJsb2dvdXQiLCJwb3N0Iiwic3RhdHVzIiwic2VhcmNoVmFsdWUiLCJjdXJyZW50VVJMIiwicXVlcnlTdHJpbmciLCJzZWFyY2giLCJ1cmxQYXJhbXMiLCJVUkxTZWFyY2hQYXJhbXMiLCJzcGlubmVyIiwic2VhcmNoRnVuY3Rpb24iLCJwYXJhbSIsInJlcGxhY2UiLCJzb3J0aW5nUGFyYW0iLCJxdWVyeVN0cmluZ0FyciIsInNsaWNlIiwiam9pbiIsInJlZGlyZWN0UHJvZmlsZSIsIm9uVW5tb3VudGVkIiwiQ3JlYXRlTW9kYWwiLCJUb2FzdCIsInRpdGxlXzEiLCJjb21wb25lbnRzIiwidG9SZWZzIiwiYnJlYWRjcnVtYkRhdGEiLCJnZXRBY3Rpdml0eVRpdGxlIiwiYnVsa1B1Ymxpc2hTdGF0dXMiLCJ1dGlsc18xIiwiZW1pdHMiLCJidWxrUHVibGlzaExlbmd0aCIsIm9wZW5Nb2RlbCIsInBhU3RvcmFnZSIsImJ1bGtwdWJsaXNoQWN0aXZpdGllcyIsImNvbXBsZXRlZCIsInJlZnJlc2hUb2FzdE1zZyIsImFjdGl2aXRpZXMiLCJoYXNGYWlsZWRBY3Rpdml0aWVzIiwiaWRzIiwicmVzcG9uc2UiLCJwb2xsaW5nRm9yQnVsa3B1Ymxpc2hEYXRhIiwiaW50ZXJ2YWxJRCIsInNldEludGVydmFsIiwicHVibGlzaGluZyIsImNsZWFySW50ZXJ2YWwiLCJmYWlsZWRBY3Rpdml0aWVzIiwidmlzaWJpbGl0eSIsInJlZnJlc2hNZXNzYWdlVHlwZSIsInJlZnJlc2hNZXNzYWdlIiwiZXJyb3IiLCJzb21lX2FjdGl2aXRpZXNfaGF2ZV9mYWlsZWRfdG9fcHVibGlzaCIsImFjdGl2aXR5X2hhc19iZWVuX3B1Ymxpc2hlZF9zdWNjZXNzZnVsbHkiLCJyZXRyeVB1Ymxpc2hpbmciLCJlbmRwb2ludCIsIm5lc3RlZE9iamVjdCIsImZhaWxlZEFjdGl2aXRpZXNJRCIsImFzQXJyYXlEYXRhIiwiZW50cmllcyIsImZpbHRlcmVkIiwiZmlsdGVyIiwidmFsdWVzIiwiaW5kZXhPZiIsImFjdGl2aXR5X2lkIiwiZmFpbGVkQWN0aXZpdGllc0RhdGEiLCJmcm9tRW50cmllcyIsImNvbXBsZXRlZEFjdGl2aXRpZXMiLCJjb3VudCIsImkiLCJrZXlzIiwic2V0RGF0YVRvTG9jYWxzdG9yYWdlIiwiZ2V0RGF0YUZyb21Mb2NhbHN0b3JhZ2UiLCJpc0pzb24iLCJKU09OIiwicGFyc2UiLCJzZXRJdGVtIiwic3RyaW5naWZ5IiwiZW1wdHlidWxrUHVibGlzaFN0YXR1cyIsInN0YXR1c18xIiwiYXNzaWduIiwiZGVlcCIsInRleHQiLCJTdHJpbmciLCJpY29uIiwiYWN0aXZpdHlMZW5ndGgiLCJidG5UeXBlIiwiZGF0ZV9mbnNfMSIsInZ1ZV9kYXRlcGlja2VyXzEiLCJtb21lbnRfMSIsImRyb3Bkb3duUmFuZ2UiLCJmaXJzdERhdGUiLCJkYXRlTGFiZWwiLCJjdXJyZW50VmlldyIsImNsZWFyRGF0ZSIsInN0YXJ0aW5nRGF0ZSIsImVuZGluZ0RhdGUiLCJkYXRlTmFtZSIsIl90aGlzIiwiZW1pdCIsInNlbGVjdGVkUHJlc2VudEluZGV4IiwiZGF0ZVJhbmdlTWFpbiIsImRhdGVUeXBlIiwiZGF0ZURyb3Bkb3duIiwiZGF0ZVR5cGVOYW1lIiwiZGF0ZVR5cGVLZXkiLCJzaG93UmFuZ2VEcm9wZG93biIsImluaXRpYWxEYXRlIiwiZml4ZWQiLCJ0b2RheURhdGUiLCJEYXRlIiwiZm9ybWF0Iiwic2VsZWN0ZWREYXRlIiwic2V0RGF0ZSIsImdldERhdGUiLCJkYXRlcGlja2VyIiwidHJpZ2dlclNldERhdGVSYW5nZSIsImhhbmRsZVByZXNlbnRSYW5nZUl0ZW1DbGljayIsImluZGV4IiwicHJlc2VudFJhbmdlSXRlbXMiLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwiY2xhc3NMaXN0IiwiYWRkIiwiaiIsInJlbW92ZSIsInJlc2V0RGF0ZSIsImhhbmRsZUNhbGVuZGFySXRlbUNsaWNrIiwiYWRkRXZlbnRzRm9yQ2FsZW5kYXIiLCJfbG9vcF8xIiwiYWRkRXZlbnRMaXN0ZW5lciIsImNhbGVuZGFySXRlbXMiLCJyZW1vdmVFdmVudHNPZkNhbGVuZGFyIiwiX2xvb3BfMiIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJ0b2dnbGVTaG93UmFuZ2VEcm9wZG93biIsInByZXNldFJhbmdlcyIsInJhbmdlIiwic3RhcnRPZkRheSIsImVuZE9mRGF5Iiwic3RhcnRPZldlZWsiLCJzdWJEYXlzIiwic3RhcnRPZk1vbnRoIiwiZW5kT2ZNb250aCIsInN1Yk1vbnRocyIsInN0YXJ0T2ZZZWFyIiwiY29udmVydERhdGUiLCJkYXRlIiwiZGF0ZU9iaiIsInllYXIiLCJnZXRGdWxsWWVhciIsIm1vbnRoIiwiZ2V0TW9udGgiLCJwYWRTdGFydCIsImRheSIsIm9wZW5DYWxlbmRhciIsIm9wZW5NZW51IiwiY2xvc2VDYWxlbmRhciIsImNsb3NlTWVudSIsInNlbGVjdERhdGUiLCJkYXRlcyIsInRlbXBBcnJheSIsInRvTG9jYWxlRGF0ZVN0cmluZyIsImNsb3NlRGF0ZURyb3Bkb3duIiwia2VlcE1vZGVsT3BlbiIsImV2ZW50Iiwic3RvcFByb3BhZ2F0aW9uIiwic3RhcnREYXRlIiwiZW5kRGF0ZSIsInNldFNlbGVjdGVkUHJlc2VudERheVRleHQiLCJ0cmlnZ2VyU2V0RGF0ZVR5cGUiLCJmaWx0ZXJlZERhdGVUeXBlIiwiZXZlbnRUeXBlIiwiY3VzdG9tUG9zaXRpb24iLCJfZCIsIl9lIiwibGVmdFBvc2l0aW9uIiwiaW5uZXJXaWR0aCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInJpZ2h0IiwidG9wIiwiYm90dG9tIiwibGVmdCIsInNldERhdGVSYW5nZVR5cGVJbkRyb3Bkb3duIiwiVnVlRGF0ZVBpY2tlciIsInZ1ZV8zIiwiTG9hZGVyX3Z1ZV8xIiwiaXNFbXB0eSIsInNob3ciLCJoYXNFcnJvcnMiLCJlcnJvckNvdW50IiwidG9hc3REYXRhIiwiZXJyb3JEYXRhIiwiYWNjb3VudF92ZXJpZmllZCIsInB1Ymxpc2hlcl9hY3RpdmUiLCJkZWZhdWx0X3NldHRpbmciLCJwdWJsaXNoZXJfc2V0dGluZyIsInRva2VuX3N0YXR1cyIsImlzTG9hZGVyVmlzaWJsZSIsInJlc2VuZFZlcmlmaWNhdGlvbkVtYWlsIiwiYWxsIiwic3ByZWFkIiwic2V0dGluZ19yZXMiLCJ1c2VyX3JlcyIsIm9yZ19yZXMiLCJ1c2VyX3Jlc3BvbnNlIiwib3JnX3Jlc3BvbnNlIiwiZGVmYXVsdF9zdGF0dXMiLCJwdWJsaXNoZXJfc3RhdHVzIiwiZ3JvdXBlZEVycm9yIiwiVHJhbnNpdGlvblJvb3QiLCJMb2FkZXIiLCJBcnJheSIsInRpdGxlIiwiY2xvc2UiLCJob3ZlclRleHQiLCJ3aWR0aCIsInBvc2l0aW9uIiwiaWNvblNpemUiLCJzaG93SWF0aVJlZmVyZW5jZSIsIkJ1dHRvbkNvbXBvbmVudF92dWVfMSIsImxpc3RJdGVtcyIsInRlbXBMaXN0SXRlbXMiLCJwdWJsaXNoZXJUeXBlTXVsdGlzZWxlY3QiLCJzZWFyY2hJbnB1dCIsImNoZWNrZWRCb3hlcyIsImNoYW5nZVNlbGVjdGVkUHVibGlzaGVyIiwic2VsZWN0ZWRQdWJsaXNoZXJUeXBlIiwiZm9ybWF0UHVibGlzaGVyVHlwZSIsImtlZXBQdWJsaXNoZXJNb2RlbE9wZW4iLCJvbkJlZm9yZVVubW91bnQiLCJzaG93Tm9EYXRhQ29tcG9uZW50IiwibWFwIiwiaXRlbSIsInVwZGF0ZUFycmF5QnlTZWFyY2giLCJzZWFyY2hTdHJpbmciLCJ0b0xvd2VyQ2FzZSIsImFwcGx5RmlsdGVyIiwiQnRuQ29tcG9uZW50IiwiYnRuVGV4dCIsImJ0bkxpbmsiLCJtb2RhbEFjdGl2ZSIsIm5vUGFkZGluZyIsInZ1ZTNfcmFkaWFsX3Byb2dyZXNzXzEiLCJSYWRpYWxQcm9ncmVzc0JhciIsInBlcmNlbnQiLCJjb21wbGV0ZWRQZXJjZW50IiwidG90YWxQZXJjZW50IiwiU2hpbW1lckxvYWRpbmdfdnVlXzEiLCJyb3dDb3VudCIsImNvbENvdW50IiwiU2hpbW1lckxvYWRpbmciLCJyZXNldCIsImFjdGl2ZV9wYWdlIiwibGFzdF9wYWdlbGlzdCIsIm1pZF9wYWdlbGlzdCIsImxhc3RwYWdlcyIsIm1pZHBhZ2VzIiwidXBkYXRlQWN0aXZlUGFnZSIsInBhZ2UiLCJjaGFuZ2VQYWdlIiwicGFnZU51bSIsIm5leHRQYWdlIiwibGFzdF9wYWdlIiwiY3VycmVudFBhZ2UiLCJmcm9tIiwicHJldmlvdXNQYWdlIiwiY2xhc3NOYW1lIiwiaW1wb3J0RGF0YSIsImFjdGl2aXR5Iiwic2hvd0Vycm9ycyIsInNob3dDcml0aWNhbCIsImNyaXRpY2FsVG9nZ2xlIiwic2hvd0Vycm9yIiwiZXJyb3JUb2dnbGUiLCJ3YXJuaW5nVG9nZ2xlIiwic2hvd1dhcm5pbmciLCJlcnJvckxlbmd0aCIsImN1cnJlbnRFcnJvciIsImVycm9ycyIsIm5hcnJhdGl2ZSIsInBlcmlvZF9zdGFydCIsInBlcmlvZF9lbmQiLCJjb3VudEVycm9ycyIsImFjdGl2aXR5SW5kZXgiLCJjcml0aWNhbEFjY29yZGlvblRvZ2dsZSIsImN1cnJlbnRUYXJnZXQiLCJ0YXJnZXQiLCJwYXJlbnRFbGVtZW50IiwiZWxIZWlnaHQiLCJjbGllbnRIZWlnaHQiLCJjc3NUZXh0Iiwid2FybmluZ0FjY29yZGlvblRvZ2dsZSIsImVycm9yQWNjb3JkaW9uVG9nZ2xlIiwiYWN0aXZpdHlOYW1lIiwidG90YWxDb3VudCIsInByb2Nlc3NlZENvdW50IiwieGxzRmFpbGVkIiwiY3VycmVudEFjdGl2aXR5IiwibWF4aW1pemUiLCJzaG93TWluaW1pemVkTW9kZWwiLCJtYXBBY3Rpdml0eU5hbWUiLCJyZXRyeSIsImNoZWNrU3VwcG9ydEJ1dHRvbiIsInRvU3RyaW5nIiwieGxzRmFpbGVkTWVzc2FnZSIsInByb2Nlc3NpbmciLCJBY3Rpdml0eURvd25sb2FkX3Z1ZV8xIiwiWGxzTG9hZGVyX3Z1ZV8xIiwiQnVsa3B1Ymxpc2hXaXRoWGxzX3Z1ZV8xIiwieGxzRGF0YSIsInNob3dYbHNTdGF0dXMiLCJkb3dubG9hZENvbXBsZXRlZCIsInNob3dCdWxrcHVibGlzaCIsImRvd25sb2FkaW5nIiwic3RhcnRCdWxrUHVibGlzaCIsImNsb3NlQnVsa3B1Ymxpc2giLCJjbG9zZVhscyIsImNvbXBsZXRlWGxzRG93bmxvYWQiLCJBY3Rpdml0eURvd25sb2FkIiwiWGxzTG9hZGVyIiwiQnVsa3B1Ymxpc2hXaXRoWGxzIiwiUHJvZ3Jlc3NMb2FkZXJfdnVlXzEiLCJkZWxldGVWYWx1ZSIsImRlbGV0ZVRvZ2dsZSIsImxvYWRlciIsInBsZWFzZV93YWl0IiwiZGVsZXRlRnVuY3Rpb24iLCJldmVudHNfbGFuZyIsImRlbGV0aW5nIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJkZWxldGVFbmRQb2ludCIsInNlbGVjdGVkQWN0aXZpdGllcyIsInJlbG9hZCIsImNhcGl0YWxpemUiLCJkZXNpZ24iLCJzdHlsZVR5cGUiLCJjbGFzc2VzIiwibGlua2VkVG9JYXRpIiwiY29yZUNvbXBsZXRlZCIsImFjdGl2aXR5SWQiLCJvblVwZGF0ZWQiLCJwdWJsaXNoVmFsdWUiLCJwdWJsaXNoU3RlcCIsImlkIiwicHVibGlzaFRvZ2dsZSIsImNvcmVFbGVtZW50U3RhdHVzIiwibG9hZGVyVGV4dCIsInJlc2V0UHVibGlzaFN0ZXAiLCJwdWJsaXNoU3RhdGVDaGFuZ2UiLCJwdWJsaXNoU3RhdGUiLCJkZXNjcmlwdGlvbiIsImFsZXJ0U3RhdGUiLCJjb3JlX2NvbXBsZXRlZF90aXRsZSIsImNvcmVfY29tcGxldGVkX2Rlc2NyaXB0aW9uIiwiY29yZV9ub3RfY29tcGxldGVkX3RpdGxlIiwiY29yZV9ub3RfY29tcGxldGVkX2Rlc2NyaXB0aW9uIiwicyIsInN0aWNreSIsImNvbW1vbiIsImRlc2NyaXB0aW9uXzEiLCJ0aXRsZV8yIiwiZGVzY3JpcHRpb25fMiIsInRpdGxlXzMiLCJlcnIiLCJjcml0aWNhbE51bWJlciIsImNyaXRpY2FsIiwiZXJyb3JOdW1iZXIiLCJhbmQiLCJ3YXJuaW5nTnVtYmVyIiwid2FybmluZ3MiLCJoYXNfYXRsZWFzdF9vbmVfY3JpdGljYWxfZXJyb3IiLCJ3ZV9oaWdobHlfcmVjb21tZW5kIiwid2VyZV9mb3VuZCIsInZpZXdfaW5mb3JtYXRpb24iLCJzdGVwUGx1c09uZSIsInN0ZXBNaW51c09uZSIsInZhbGlkYXRvckZ1bmN0aW9uIiwidmFsaWRhdGluZyIsImNyaXQiLCJzdW1tYXJ5Iiwid2FybmluZyIsImNoZWNrUHVibGlzaCIsInB1Ymxpc2hGdW5jdGlvbiIsInB1Ymxpc2hTdGF0dXMiLCJsaW5rZWRfdG9faWF0aSIsImJ1dHRvbl9sYW5nIiwicmVwdWJsaXNoIiwicHVibGlzaCIsInVucHVibGlzaFZhbHVlIiwidW5wdWJsaXNoVG9nZ2xlIiwidW5QdWJsaXNoRnVuY3Rpb24iLCJ1bnB1Ymxpc2hpbmciLCJpdGVtSWQiLCJpdGVtVHlwZSIsImVycm9yVHlwZSIsImJnQ29sb3IiLCJpY29uQ29sb3IiLCJ0b2dnbGUiLCJhY2NvcmRpb25Ub2dnbGUiLCJ1cGRhdGVFcnJvckNvdW50TWVzc2FnZSIsInRyYW5zbGF0ZWRUeXBlIiwiTGlua192dWVfMSIsIkJ0biIsIm1hbmRhdG9yeUVsZW1lbnRTdGF0dXMiLCJpc19wdWJsaXNoZWQiLCJwdWJsaXNoZWQiLCJCcmVhZENydW1iX3Z1ZV8xIiwiQnJlYWRjcnVtYiIsImJhY2tMaW5rIiwiY29uc29sZSIsImxvZyIsImNoYW5nZVRleHQiLCJkaXNwbGF5IiwiRXJyb3JMaXN0c192dWVfMSIsIlVwbG9hZGVkRXJyb3JzX3Z1ZV8xIiwiZXJyb3JWYWx1ZSIsImltcG9ydEVycm9ycyIsImlzc3VlVHlwZSIsImltcG9ydEVycm9yVHlwZXMiLCJ0ZW1wRGF0YSIsInVwZGF0ZVRlbXBNZXNzYWdlIiwiZXJyb3JEYXRhUHJvcHMiLCJfaSIsImVycm9yRGF0YVByb3BzXzEiLCJzZXZlcml0eSIsImltcG9ydEVycm9ybGVuZ3RoIiwiZGVsZXRlRXJyb3JzIiwic2Vzc2lvblN0b3JhZ2UiLCJFcnJvckxpc3RzIiwiVXBsb2FkZWRFcnJvcnMiLCJjb2xvciIsIm5vdF9jb21wbGV0ZWQiLCJwcmV2aW91c2x5X3B1Ymxpc2hlZF9vbl9pYXRpIiwiX19hc3NpZ24iLCJhcmd1bWVudHMiLCJwIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJtdWx0aXNlbGVjdF8xIiwiY3VycmVuY2llcyIsImJ1ZGdldE5vdFByb3ZpZGVkIiwiaHVtYW5pdGFyaWFuIiwiZGVmYXVsdFZhbHVlcyIsImJ1ZGdldF9ub3RfcHJvdmlkZWQiLCJkZWZhdWx0X2N1cnJlbmN5IiwiZGVmYXVsdF9sYW5ndWFnZSIsImhpZXJhcmNoeSIsImRlZmF1bHRFcnJvcnMiLCJlcnJvclJlc2V0IiwiZGVmYXVsdERhdGEiLCJsb2FkZXJWaXNpYmlsaXR5Iiwic3VibWl0Rm9ybSIsInB1dCIsIk11bHRpc2VsZWN0IiwiSW5kZXhfMSIsIkhvdmVyVGV4dF92dWVfMSIsIlJhZGlhbFByb2dyZXNzQmFyX3Z1ZV8xIiwiUHVibGlzaEJ1dHRvbl92dWVfMSIsIlVuUHVibGlzaEJ1dHRvbl92dWVfMSIsIkRlbGV0ZUJ1dHRvbl92dWVfMSIsIlN0aWNreUVycm9yc192dWVfMSIsIkVycm9yUG9wVXBfdnVlXzEiLCJBY3Rpdml0aWVzRWxlbWVudHNfdnVlXzEiLCJBY3Rpdml0eUVsZW1lbnRfdnVlXzEiLCJQcmV2aW91c2x5UHVibGlzaGVkX3Z1ZV8xIiwiSG92ZXJUZXh0IiwiUHJvZ3Jlc3NCYXIiLCJFbGVtZW50cyIsIkFjdGl2aXR5RWxlbWVudCIsIlJlc3VsdCIsIlB1Ymxpc2giLCJFcnJvcnMiLCJVblB1Ymxpc2giLCJEZWxldGVCdXR0b24iLCJQcmV2aW91c2x5UHVibGlzaGVkIiwiRXJyb3JQb3BVcCIsImVsZW1lbnRzIiwiZ3JvdXBzIiwicHJvZ3Jlc3MiLCJ0eXBlcyIsInJlc3VsdHMiLCJ0cmFuc2FjdGlvbnMiLCJpYXRpVmFsaWRhdG9yUmVzcG9uc2UiLCJpbXBvcnRBY3Rpdml0eUVycm9yIiwicmVtb3ZlZCIsImluZGV4U3RvcmUiLCJwb3NpdGlvblkiLCJzY3JlZW5XaWR0aCIsImRvd25sb2FkVmFsdWUiLCJkb3dubG9hZFRvZ2dsZSIsInRvZ2dsZVNpZGViYXIiLCJoYW5kbGVTY3JvbGwiLCJzY3JvbGxZIiwiaXN0b3BWaXNpYmxlIiwiY2FsY1dpZHRoIiwib25sb2FkIiwiY2xlYXIiLCJpZ25vcmVUb2FzdFVwZGF0ZSIsImdyb3VwZWREYXRhIiwiYWN0aXZpdHlQcm9wcyIsImVsZW1lbnRQcm9wcyIsInN0YXR1c1Byb3BzIiwidHJhbnNhY3Rpb25Qcm9wcyIsImZsYWciLCJrIiwicGFnZVRpdGxlIiwiZGVmYXVsdF9maWVsZF92YWx1ZXMiLCJmb3JtYXRUaXRsZSIsInRyYW5zbGF0ZWRUaXRsZSIsImFjdGl2aXR5X2xhbmciLCJpZ25vcmVVcGRhdGVzIiwid2F0Y2hJZ25vcmFibGUiLCJ1bmRlZmluZWQiLCJmbHVzaCIsInByb3ZpZGUiLCJhY3Rpdml0aWVzX2xhbmciLCJ5b3VyX2FjdGl2aXRpZXMiLCJ2YWxpZGF0aW9uUmVzdWx0IiwidG9TbmFrZUNhc2UiLCJzZW50ZW5jZSIsIndvcmRzIiwid29yZCIsIlhsc1VwbG9hZEluZGljYXRvcl92dWVfMSIsIkVtcHR5QWN0aXZpdHlfdnVlXzEiLCJUYWJsZUxheW91dF92dWVfMSIsIlRhYmxlUGFnaW5hdGlvbl92dWVfMSIsIlBhZ2VUaXRsZV92dWVfMSIsIkVycm9yTWVzc2FnZV92dWVfMSIsImNvcmVfMiIsImFjdGl2aXR5U3RvcmUiLCJFbXB0eUFjdGl2aXR5IiwiUGFnZVRpdGxlIiwiUGFnaW5hdGlvbiIsIlRhYmxlTGF5b3V0IiwiRXJyb3JNZXNzYWdlIiwiWGxzVXBsb2FkSW5kaWNhdG9yIiwiY2xvc2VNb2RlbCIsInVwbG9hZENvbXBsZXRlIiwiaW1wb3J0Q29tcGxldGVkIiwidGFibGVMb2FkZXIiLCJzaG93RW1wdHlUZW1wbGF0ZSIsInBvbGxpbmdGb3JYbHNTdGF0dXMiLCJjaGVja1N0YXR1cyIsIl9mIiwiX2ciLCJfaCIsIl9qIiwiX2siLCJ0b3RhbF9jb3VudCIsInByb2Nlc3NlZF9jb3VudCIsInN0YXJ0WGxzRG93bmxvYWQiLCJjaGVja0Rvd25sb2FkU3RhdHVzIiwiY2xvc2VYbHNNb2RlbCIsImNoZWNrWGxzc3RhdHVzIiwidGVtcGxhdGUiLCJjaGVja0Rvd25sb2FkIiwiZmlsZV9jb3VudCIsInNob3dCdXR0b25zIiwic2hvd09ySGlkZSIsImZldGNoQWN0aXZpdGllcyIsImZvcm1EYXRhIiwiYWN0aXZpdHlfaWRlbnRpZmllciIsImNsb3NlTW9kYWwiLCJzdG9yZUFjdGl2aXR5IiwiY2xvc2VzdCIsInNjIiwiVmFsaWRhdGlvbkVycm9yc192dWVfMSIsIkJ1bGtQdWJsaXNoaW5nRXJyb3JQb3B1cF92dWVfMSIsInB1Ymxpc2hBbGVydFZhbHVlIiwicHVibGlzaEFsZXJ0VG9nZ2xlIiwiYnVsa1B1Ymxpc2hTdGVwIiwic3RhcnRQdWJsaXNoIiwic2hvd0NhbmNlbENvbmZpcm1hdGlvblBvcHVwIiwic2hvd0NhbmNlbGxlZFBvcHVwIiwibWVzc2FnZU9uQ2FuY2VsbGF0aW9uIiwicG9wVXBXaWR0aENoYW5nZSIsImRpc3BsYXlUb2FzdCIsImluX3Byb2dyZXNzIiwic2hvd0NhbmNlbENvbmZpcm1hdGlvbk1vZGFsIiwiY29yZUNvbXBsZXRlZEFjdGl2aXRpZXMiLCJjb3JlSW5Db21wbGV0ZWRBY3Rpdml0aWVzIiwidmVyaWZ5Q29yZUVsZW1lbnRzIiwidmVyaWZ5aW5nX2NvcmVfZWxlbWVudHMiLCJjb21wbGV0ZSIsImluY29tcGxldGUiLCJ2YWxpZGF0aW9uRXJyb3JzIiwib3JnYW5pemF0aW9uX2lkIiwiam9iX2JhdGNoX3V1aWQiLCJ2YWxpZGF0ZUFjdGl2aXRpZXMiLCJ2YWxpZGF0aW5nX2FjdGl2aXRpZXMiLCJzdGFydGluZ190b19wdWJsaXNoIiwiY2FuY2VsT3RoZXJCdWxrUHVibGlzaCIsImNsb3NlQ2FuY2VsQ29uZmlybWF0aW9uTW9kYWwiLCJzZXRDYW5jZWxsYXRpb25NZXNzYWdlIiwic2hvd0NhbmNlbGxlZERldGFpbFBvcHVwIiwibXNnIiwiY2xvc2VDYW5jZWxsZWREZXRhaWxzUG9wdXAiLCJwdWJsaXNoQWZ0ZXJDYW5jZWwiLCJWYWxpZGF0aW9uRXJyb3JzIiwiUGFnZUxvYWRlciIsIkJ1bGtQdWJsaXNoaW5nRXJyb3JQb3B1cCIsImNsYXNzTmFtZTIiLCJFcnJvckl0ZW1fdnVlXzEiLCJjcml0aWNhbE1lc3NhZ2UiLCJ3YXJuaW5nTWVzc2FnZSIsIm5vRXJyb3JNZXNzYWdlIiwibm9fZXJyb3IiLCJFcnJvckl0ZW0iLCJmb3JtYXREYXRlIiwiZGF0ZUZvcm1hdF8xIiwiZGF0ZUZvcm1hdCIsInJvdW5kRmxvYXQiLCJudW0iLCJwYXJzZUZsb2F0IiwidG9GaXhlZCIsIkhhdmVOb3RBZGRlZFlldF92dWVfMSIsIk5vdFlldCIsInRvb2x0aXAiLCJkZWZhdWx0TGFuZ3VhZ2UiLCJyZXN1bHREYXRhIiwiY29udGVudCIsImN1cnJlbnRMYW5ndWFnZSIsIm1vbWVudCIsIlRpdGxlRWxlbWVudCIsIk1lYXN1cmUiLCJBc2NlbmRpbmciLCJBZ2dyZWdhdGlvblN0YXR1cyIsIkRlc2NyaXB0aW9uIiwiUmVmZXJlbmNlIiwiQmFzZWxpbmUiLCJEb2N1bWVudExpbmsiLCJQZXJpb2QiLCJyZXN1bHRUaXRsZSIsImluZGljYXRvciIsInBlcmlvZCIsImVsZW1lbnQiLCJsaW5rQ2xhc3NlcyIsImluZGljYXRvckRhdGEiLCJwZXJpb2REYXRhIiwicGFyZW50RGF0YSIsInJlc3VsdF9pZCIsImFjdGl2aXR5TGluayIsInJlc3VsdElkIiwiYWN0aXZpdHlUaXRsZSIsInJlc3VsdFRpdGxlZCIsInJlc3VsdExpbmsiLCJpbmRpY2F0b3JMaW5rIiwiaW5kaWNhdG9yVGl0bGUiLCJjb3VudERvY3VtZW50TGluayIsIkRlbGV0ZUFjdGlvbl92dWVfMSIsIm1ldGhvZHMiLCJzbmFrZUNhc2VUb1NlbnRlbmNlQ2FzZSIsImNyZWF0ZUNhcGl0YWxpemVkU2VudGVuY2UiLCJEZWxldGVBY3Rpb24iLCJpbmRpY2F0b3JzIiwiaW5kaWNhdG9yc0RhdGEiLCJpbmRpY2F0b3JfbGlzdCIsImhhbmRsZU5hdmlnYXRlIiwiZmV0Y2hMaXN0aW5ncyIsInN0YXR1c0RhdGEiLCJiYXNlVHlwZSIsImVsZW1lbnRTcGFjaW5nIiwiYmFzZWxpbmUiLCJsb2NhdGlvbnMiLCJyZWZlcmVuY2UiLCJsYXN0TG9jYXRpb24iLCJkaW1lbnNpb25zIiwibWlzc2luZyIsImNvZGUiLCJkZXNjVHlwZSIsImRlc2NyaXB0aW9uRGF0YSIsImFsaWdubWVudCIsImRsRGF0YSIsIm1lYXN1cmVUeXBlIiwibWVhc3VyZURhdGEiLCJyZWZUeXBlIiwicmVmRGF0YSIsInRpdGxlVHlwZSIsInRpdGxlRGF0YSIsImNvcmVFbGVtZW50c18xIiwiZHJvcGRvd24iLCJkcm9wZG93bkJ0biIsInNlYXJjaEJ0blZhbHVlIiwic2VhcmNoQnRuVG9nZ2xlIiwiZWxlbWVudEljb25zIiwiY29yZSIsImZpbHRlcmVkRWxlbWVudHMiLCJlbGVtZW50c19jb21tb25fbGFuZyIsImp1c3RTdHJpbmdzIiwiYWN0aXZpdHlDb3JlRWxlbWVudHMiLCJkcm9wZG93bkZpbHRlciIsImNvbnRhaW5zIiwiZ2V0TGluayIsImhhc19kYXRhIiwiRWxlbWVudFN0YXR1c192dWVfMSIsIndhcm5pbmdJbmZvVGV4dCIsImxheW91dCIsImRlbGV0ZUFjdGl2aXR5RWxlbWVudCIsImRlbGV0ZUVsZW1lbnQiLCJzY3JvbGxUbyIsImNvdWxkbnRfZGVsZXRlX3RoZV9hY3Rpdml0eSIsIkFjdGl2aXR5RGF0ZSIsIkNvbmRpdGlvbnMiLCJDb250YWN0SW5mbyIsIkh1bWFuaXRhcmlhblNjb3BlIiwiSWF0aUlkZW50aWZpZXIiLCJMZWdhY3lEYXRhIiwiTG9jYXRpb24iLCJPdGhlcklkZW50aWZpZXIiLCJQYXJ0aWNpcGF0aW5nT3JnIiwiUGxhbm5lZERpc2J1cnNlbWVudCIsIlBvbGljeU1hcmtlciIsIlJlY2lwaWVudENvdW50cnkiLCJSZWNpcGllbnRSZWdpb24iLCJSZWxhdGVkQWN0aXZpdHkiLCJSZXBvcnRpbmdPcmdhbml6YXRpb24iLCJTZWN0b3IiLCJUYWciLCJUcmFuc2FjdGlvbnMiLCJTdGF0dXMiLCJpc1Zpc2libGUiLCJtb2RlbFZpc2libGUiLCJ0b2dnbGVNb2RlbCIsInRvYXN0bWVzc2FnZVR5cGUiLCJzaG93RXJyb3Jwb3B1cCIsImRvd25sb2FkaW5nQmFja2dyb3VuZE1lc3NhZ2UiLCJkb3dubG9hZGluZ0luUHJvY2VzcyIsImRvd25sb2FkRXJyb3IiLCJmaWxlbmFtZSIsImVuY29kZVVSSUNvbXBvbmVudCIsInJlbW92ZUNoaWxkIiwiZG93bmxvYWRBbnl3YXkiLCJkb3dubG9hZEVycm9yeG1sIiwiY291bnRBY3Rpdml0aWVzIiwicXVlcnlQYXJhbWV0ZXJzIiwiYWRkUXVlcnlQYXJhbXMiLCJkb3dubG9hZCIsImRvd25sb2FkWG1sIiwieG1sX2Vycm9yIiwiZG93bmxvYWRYbHMiLCJkb3dubG9hZENzdiIsIkFkZEFjdGl2aXR5QnV0dG9uX3Z1ZV8xIiwiQWN0aXZpdHlCdXR0b24iLCJkaXNtaXNzIiwiRG93bmxvYWRBY3Rpdml0eUJ1dHRvbl92dWVfMSIsIlJlZnJlc2hUb2FzdF92dWVfMSIsIlB1Ymxpc2hTZWxlY3RlZF92dWVfMSIsIkRvd25sb2FkQWN0aXZpdHlCdXR0b24iLCJBZGRBY3Rpdml0eUJ1dHRvbiIsIlJlZnJlc2hUb2FzdE1lc3NhZ2UiLCJQdWJsaXNoU2VsZWN0ZWQiLCJzZWxlY3RBbGxWYWx1ZSIsInNlbGVjdEFsbFRvZ2dsZSIsImZyb21Ob3ciLCJ0b2dnbGVTZWxlY3RBbGwiLCJkYXR1bSIsInF1ZXJ5IiwiZGlyZWN0aW9uIiwic29ydGluZ0RpcmVjdGlvbiIsInNvcnRCeVB1Ymxpc2hpbmdQcm9ncmVzcyIsInNvcnRCeURhdGVVcmwiLCJUYXJnZXRWYWx1ZSIsIkFjdHVhbFZhbHVlIiwiaW5kaWNhdG9ySWQiLCJwZXJpb2RMaW5rIiwicGVyaW9kc0RhdGEiLCJwZXJpb2RzX2xpc3QiLCJkbFR5cGUiLCJhY3R1YWxWYWx1ZSIsImdldExvY2F0aW9uIiwidGFyZ2V0VmFsdWUiLCJSZXN1bHRFbGVtZW50X3Z1ZV8xIiwiSW5kaWNhdG9yX3Z1ZV8xIiwiUmVzdWx0RWxlbWVudCIsIkluZGljYXRvciIsImhhc0luZGljYXRvcnMiLCJyZXN1bHRzRGF0YSIsIlRpdGxlRGVzY3JpcHRpb24iLCJSZXN1bHRUeXBlIiwiZWxlbWVudE5hbWUiLCJlZGl0VXJsIiwiZWxlbWVudERhdGEiLCJyZXN1bHRUeXBlIiwicmVzdWx0Vm9jYWJ1bGFyeSIsInJlc3VsdF9saXN0IiwidG9vbFRpcCIsInJldmVyc2UiLCJyZWZlcmVuY2VEYXRhIiwidHlwZURhdGEiLCJ0ZERhdGEiLCJUcmFuc2FjdGlvbkVsZW1lbnRfdnVlXzEiLCJUcmFuc2FjdGlvbkVsZW1lbnQiLCJ0cmFuc2FjdGlvbiIsInRyYW5zYWN0aW9uRGF0YSIsInRyYW5zYWN0aW9uTGluayIsImlzTWFuZGF0b3J5SWNvbiIsInIiLCJBaWRUeXBlIiwiVHJhbnNhY3Rpb25UeXBlIiwiVHJhbnNhY3Rpb25EYXRlIiwiVmFsdWUiLCJQcm92aWRlck9yZ2FuaXphdGlvbiIsIlJlY2VpdmVyT3JnYW5pemF0aW9uIiwiRGlzYnVyc2VtZW50Q2hhbm5lbCIsIkZsb3dUeXBlIiwiRmluYW5jZVR5cGUiLCJUaWVkU3RhdHVzIiwiZ2V0TGFuZ3VhZ2VzIiwiZW50cnkiLCJ0cmFuc2FjdGlvbnNEYXRhIiwidHJhbnNhY3Rpb25fbGlzdCIsImF0RGF0YSIsImZpbmFuY2VEYXRhIiwiZmxvd0RhdGEiLCJQb0RhdGEiLCJjb3VudHJ5Iiwic2VjdG9yIiwidHNEYXRhIiwiYXVkaXREYXRhIiwiZmV0Y2hBdWRpdExpc3QiLCJyb3V0ZSIsInBhcmFtcyIsImxhYmVscyIsInJvdW5kZWRMYWJlbHMiLCJzaG93R3JhcGhMb2FkZXIiLCJncmFwaEFtb3VudCIsInlheGlzVGlja3MiLCJtYXhWYWx1ZSIsImNoYXJ0IiwiZ3JhcGhDb2xvciIsInRvb2x0aXBUZXh0IiwiY2hhcnRPcHRpb25zIiwiaGVpZ2h0Iiwib2Zmc2V0WSIsInpvb20iLCJlbmFibGVkIiwib3B0aW9ucyIsInhheGlzIiwicGFkZGluZyIsInRvb2xiYXIiLCJtYXJrZXJzIiwic2l6ZSIsInN0cm9rZVdpZHRoIiwiY29sb3JzIiwiaG92ZXIiLCJzdHJva2UiLCJjdXJ2ZSIsImN1c3RvbSIsInNlcmllcyIsInNlcmllc0luZGV4IiwiZGF0YVBvaW50SW5kZXgiLCJ3IiwiZ2V0RGF5IiwiZm9ybWF0dGVkRGF0ZSIsImdsb2JhbHMiLCJjYXRlZ29yeUxhYmVscyIsInRpY2tBbW91bnQiLCJyb3RhdGUiLCJ5YXhpcyIsIm1pbiIsIm1heCIsImZvcm1hdHRlciIsInlBeGlzU2NhbGUiLCJNYXRoIiwicm91bmQiLCJUYWJsZUxvYWRlckNvbXBvbmVudF92dWVfMSIsInRhYmxlRGF0YSIsInRhYmxlSGVhZGVyIiwiYWN0aXZpdHlOYXZMaXN0IiwiYXBpUGFyYW1zIiwicHVibGlzaGVyTmF2TGlzdCIsImN1cnJlbnRwYWdlIiwicmVzZXRwYWdpbmF0aW9uIiwib3JkZXJCeSIsInNvcnQiLCJzb3J0RWxlbWVudCIsInVzZXJOYXZsaXN0IiwiY3VycmVudEl0ZW0iLCJjdXJyZW50TmF2TGlzdCIsImZldGNoVGFibGVEYXRhIiwic29ydFRhYmxlIiwidHJpZ2dlcnBhZ2luYXRpb24iLCJhY3RpdmVDbGFzcyIsIk5hdmlnYXRlV2l0aEZpbHRlciIsInRhYkNoYW5nZSIsInRvZ2dsZVNvcnQiLCJvcmRlciIsImNvbXBsZXRlTmVzcyIsInJlZ2lzdHJhdGlvblR5cGUiLCJzaG93VGFibGVMb2FkZXIiLCJ0cnVuY2F0ZVRleHQiLCJUYWJsZUxvYWRlckNvbXBvbmVudCIsIkRhc2hib2FyZFN0YXRzU2VjdGlvbl92dWVfMSIsIkRhc2hib2FyZExpc3RTZWN0aW9uX3Z1ZV8xIiwiRGF0ZVJhbmdlV2lkZ2V0X3Z1ZV8xIiwib2xkZXN0RGF0ZXMiLCJjdXJyZW50TmF2IiwiRGF0ZUxhYmVsIiwiZ3JhcGhUb3RhbCIsInB1Ymxpc2hlciIsImhhbmRsZUNoYW5nZVRhYmxlTmF2Iiwic2V0RGF0ZVJhbmdlRGF0ZSIsImZldGNoR3JhcGhEYXRhIiwiZG93bmxvYWRSZXBvcnQiLCJhcHBlbmQiLCJncmFwaERhdGFGb3JtYXR0ZXIiLCJncmFwaERhdGEiLCJ4Iiwic3RhcnQiLCJlbmQiLCJhY3RpdmVUYWIiLCJrZWJhYkNhc2VUb1NuYWtlY2FzZSIsImNvZGVMaXN0Iiwib2JqZWN0TGVuZ3RoIiwicGFnaW5hdGVkRGF0YSIsIml0ZW1JblBhZ2luYXRlZERhdGEiLCJwdWJsaXNoZXJUeXBlS2V5IiwidG90YWwiLCJEYXNoYm9hcmRTdGF0c1NlY3Rpb24iLCJEYXNoYm9hcmRMaXN0U2VjdGlvbiIsIkRhdGVSYW5nZVdpZGdldCIsIkJ1dHRvbkNvbXBvbmVudCIsIkRhc2hib2FyZEdyYXBoX3Z1ZV8xIiwiaW5hY3RpdmVQdWJsaXNoZXIiLCJwdWJsaXNoZXJXaXRob3V0QWN0aXZpdHkiLCJsYXN0UmVnaXN0ZXJlZCIsImxhc3RVcGRhdGVkUHVibGlzaGVyIiwibGFzdFVwZGF0ZWRBY3Rpdml0eSIsInNob3dTdGF0c0xvYWRlciIsInB1Ymxpc2hlclN0YXRzIiwic2hvd1B1Ymxpc2hlclN0YXRzIiwidXNlcklkIiwiZmV0Y2hTdGF0c0RhdGEiLCJwcm94eVVzZXIiLCJsYXN0UmVnaXN0ZXJlZFB1Ymxpc2hlciIsInVzZXJfaWQiLCJpbkFjdGl2ZVB1Ymxpc2hlciIsIkRhc2hib2FyZEdyYXBoIiwiZmlsZSIsInVwbG9hZEZpbGUiLCJ1cGxvYWRpbmdfY3N2X3htbF9maWxlIiwiZmlsZXMiLCJjb25maWciLCJGb3JtRGF0YSIsImVycm9yX2hhc19vY2N1cnJlZF93aGlsZV91cGxvYWRpbmdfZmlsZSIsImRvd25sb2FkRXhjZWwiLCJ4bHNJbmRpY2F0b3JNb3VudGVkIiwidXBsb2FkVHlwZSIsInNob3dEb3dubG9hZERyb3Bkb3duIiwic2hvd0Rvd25sb2FkQ29kZSIsInNob3dDYW5jZWxNb2RlbCIsImRvd25sb2FkQ29kZSIsImFjdGl2aXRpZXNfMSIsInJlcSIsImNhbmNlbFVwbG9hZCIsImNhbmNlbEltcG9ydCIsImltcG9ydEFueXdheSIsInNlbGVjdEFsbCIsInhsc1R5cGUiLCJfbCIsIl9tIiwiSW1wb3J0UGxhY2Vob2xkZXJfdnVlXzEiLCJMaXN0RWxlbWVudF92dWVfMSIsInNlbGVjdGVkQ291bnQiLCJhY3Rpdml0aWVzTGVuZ3RoIiwidGFibGVSb3ciLCJ0YWJsZVdpZHRoIiwidGltZXIiLCJnZXREaW1lbnNpb25zIiwibmV4dFRpY2siLCJjbGllbnRXaWR0aCIsInVwZGF0ZVNlbGVjdGVkQWN0aXZpdGllcyIsInNwbGljZSIsInNlbGVjdEFsbEFjdGl2aXRpZXMiLCJpbXBvcnRBY3Rpdml0aWVzIiwiaW1wb3J0aW5nX2Nzdl94bWxfZmlsZSIsImZpbGV0eXBlIiwiUGxhY2Vob2xkZXIiLCJMaXN0RWxlbWVudCIsIlNoaW1tZXIiLCJ0b2dnbGVFcnJvciIsInNlbGVjdEVsZW1lbnQiLCJzZWxlY3RlZERhdGEiLCJYbHNMaXN0RXJyb3JfdnVlXzEiLCJnbG9iYWxFcnJvciIsInNvcnRPcmRlciIsInNob3dDcml0aWNhbEVycm9yTW9kZWwiLCJzaG93SWRlbnRpZmllckVycm9yTW9kZWwiLCJzaG93Q3JpdGljYWxFcnJvck1lc3NhZ2UiLCJzaG93R0xvYmFsRXJyb3IiLCJzb3J0ZWREYXRhIiwiYSIsImIiLCJjaGVja0NyaXRpY2FsRXJyb3IiLCJkb3dubG9hZElkZW50aWZpZXJFcnJvciIsIkZpbGUiLCJhbmNob3JUYWciLCJyZXZva2VPYmplY3RVUkwiLCJjcml0aWNhbEFycnkiLCJ0b3RhbENyaXJpY2FsRXJyb3JDb3VudCIsImFkZEFjdGl2aXRpZXMiLCJYbHNMaXN0RXJyb3IiLCJPcmdhbmlzYXRpb25FbGVtZW50c192dWVfMSIsIk9yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsX3Z1ZV8xIiwiT3JnYW5pemF0aW9uUHVibGlzaFVucHVibGlzaEJ1dHRvbl92dWVfMSIsIk9yZ2FuaXNhdGlvbkVsZW1lbnRzIiwiT3JnYW5pc2F0aW9uRWxlbWVudHNEZXRhaWwiLCJQdWJsaXNoVW5wdWJsaXNoIiwibWFuZGF0b3J5Q29tcGxldGVkIiwidXNlclJvbGUiLCJvcmdhbml6YXRpb25Qcm9wcyIsIm9yZ2FuaXphdGlvbkRhdGEiLCJwdWJsaXNoTWVzc2FnZSIsIm1hbmRhdG9yeSIsIm9yZ01hbmRhdG9yeUVsZW1lbnRzIiwicmVwbGFjZVVuZGVyc2NvcmUiLCJzdHJpbmciLCJyZWdleCIsIlJlcG9ydGluZ09yZ2FuaXNhdGlvbiIsIlRvdGFsQnVkZ2V0IiwiUmVwb3J0aW5nT3JnQnVkZ2V0IiwiUmVwb3J0aW5nUmVnaW9uQnVkZ2V0IiwiUmVjaXBpZW50Q291bnRyeUJ1ZGdldCIsIlRvdGFsRXhwZW5kaXR1cmUiLCJlbWFpbCIsImVtYWlsRXJyb3IiLCJyZXF1ZXN0IiwicmVzcG9uc2VVUkwiLCJlbmNyeXB0aW9uXzEiLCJ0b2tlbiIsInBhc3N3b3JkIiwicGFzc3dvcmRfY29uZmlybWF0aW9uIiwiZm9ybSIsInByb2Nlc3MiLCJlbnYiLCJNSVhfRU5DUllQVElPTl9LRVkiLCJzdG9yZV8xIiwiYWN0aW9uc18xIiwiZGVmYXVsdENvbGxhYm9yYXRpb25UeXBlIiwiZGVmYXVsdEZsb3dUeXBlIiwiZGVmYXVsdEZpbmFuY2VUeXBlIiwiZGVmYXVsdEFpZFR5cGUiLCJkZWZhdWx0VGllZFN0YXR1cyIsImRlZmF1bHRGb3JtIiwiZGVmYXVsdEVycm9yIiwidXBkYXRlU3RvcmUiLCJBY3Rpb25UeXBlcyIsIlVQREFURV9ERUZBVUxUX1ZBTFVFUyIsIlNldHRpbmdEZWZhdWx0Rm9ybV92dWVfMSIsIlNldHRpbmdQdWJsaXNoaW5nRm9ybV92dWVfMSIsIlNldHRpbmdEZWZhdWx0Rm9ybSIsIlNldHRpbmdQdWJsaXNoaW5nRm9ybSIsInRhYiIsInB1Ymxpc2hpbmdGb3JtIiwicHVibGlzaGluZ0luZm8iLCJwdWJsaXNoaW5nRXJyb3IiLCJzZXR0aW5nRGF0YSIsInB1Ymxpc2hlckluZm8iLCJhY3Rpdml0eVZhbHVlcyIsImRlZmF1bHRfdmFsdWVzIiwicHVibGlzaGluZ19pbmZvIiwiYWN0aXZpdHlfZGVmYXVsdF92YWx1ZXMiLCJhcGlfdG9rZW4iLCJ0b2dnbGVUYWIiLCJzdWJtaXREZWZhdWx0IiwiaGllcmFyY2hpYWwiLCJzdWJtaXRQdWJsaXNoaW5nIiwicHVibGlzaGVyX3ZlcmlmaWNhdGlvbiIsInRva2VuX3ZlcmlmaWNhdGlvbiIsImF1dG9WZXJpZnkiLCJVUERBVEVfUFVCTElTSElOR19GT1JNIiwiVGFibGVMaXN0X3Z1ZV8xIiwiY291bnRyaWVzIiwic2V0dXBDb21wbGV0ZW5lc3MiLCJyZWdpc3RyYXRpb25UeXBlcyIsInB1Ymxpc2hlclR5cGVzIiwiZGF0YUxpY2Vuc2VzIiwiVGFibGVMaXN0IiwibGFuZ18xIiwicGhwRGVwZW5kZW5jaWVzIiwibm9kZURlcGVuZGVuY2llcyIsInBhY2thZ2VNYW5hZ2VyVmVyc2lvbiIsImxhdGVzdE1hbmFnZXJWZXJzaW9uIiwiZ2V0U3RhdHVzQ2xhc3MiLCJ1cGRhdGVTdGF0dXMiLCJnZXRTdGF0dXNNZXNzYWdlIiwicmVzb2x2ZUxhdGVzdFZlcnNpb24iLCJnZXRJbmRleCIsInBhcnNlSW50Iiwib3JnYW5pemF0aW9uTmFtZSIsInN3aXRjaEJhY2siLCJNdWx0aVNlbGVjdFdpdGhTZWFyY2hfdnVlXzEiLCJnZXRDb3VudHJpZXNXaXRoUHJlZml4IiwicmV0dXJuVmFsdWVGb3JDb3VudHJpZXMiLCJjb3VudHJ5Q29kZXMiLCJjb3VudHJpZXNXaXRoUHJlZml4Iiwib3JnYW5pc2F0aW9uRGF0YSIsIm11bHRpc2VsZWN0U3R5bGUiLCJwdWJsaXNoZXJfdHlwZSIsImRhdGFfbGljZW5zZSIsImNvbXBsZXRlbmVzcyIsInJlZ2lzdHJhdGlvbl90eXBlIiwic3RhcnRfZGF0ZSIsImVuZF9kYXRlIiwiZGF0ZV90eXBlIiwic2VsZWN0ZWRfZGF0ZV9maWx0ZXIiLCJyZXNldFBhZ2luYXRpb24iLCJ0b3RhbE9yZ2FuaXNhdGlvbiIsInJlZ2lzdHJ5QXBpS2V5U3RhdHVzIiwiZGVmYXVsdFZhbHVlU3RhdHVzIiwic2hvd011bHRpU2VsZWN0V2l0aFNlYXJjaCIsImNyZWF0ZWRfYXQiLCJsYXN0X2xvZ2dlZF9pbiIsInNvcnRQYXJhbXMiLCJyb3RhdGVDbGFzcyIsImNsb3NlUHVibGlzaGVyTW9kZWwiLCJjbGVhckRhdGVGaWx0ZXIiLCJnZW5lcmF0ZUxhYmVsIiwiZmlsdGVyUGFyYW1zIiwiZ2V0RmlsdGVyUGFyYW1zRnJvbVByZXZpb3VzUGFnZSIsImZldGNoT3JnYW5pc2F0aW9uIiwicXVlcnlQYXJhbXNJbktleVZhbCIsInF1ZXJ5UGFyYW1zIiwiaXNGaWx0ZXJBcHBsaWVkIiwiZmlsdGVyS2V5IiwicmVmcmVzaFN0YXR1c0FycmF5cyIsInByb3h5X2xvZ2luIiwiZGVmYXVsdFNvcnREaXJlY3Rpb24iLCJzb3J0RGlyZWN0aW9uIiwib3JkZXJUeXBlIiwic29ydEJ5IiwicmVzZXRBbGxGaWx0ZXJzIiwib3JnRGF0YSIsIm9yZ0RhdHVtIiwiY2hlY2tJZkRlZmF1bHRWYWx1ZXNBcmVWYWxpZCIsImFjdGl2aXR5RGVmYXVsdFZhbHVlcyIsInNlbGVjdGVkRGF0ZUZpbHRlciIsInNldERhdGVUeXBlIiwidG9nZ2xlU2hvd011bHRpU2VsZWN0IiwicmVjdCIsInNldFNlbGVjdGVkUHVibGlzaGVyIiwic2hvd01hcHBlZERhdGEiLCJsaWNlbnNlIiwidHJpbSIsIm5vdF9hdmFpbGFibGUiLCJNdWx0aVNlbGVjdFdpdGhTZWFyY2giLCJvcmdhbml6YXRpb25zIiwicm9sZXMiLCJxIiwiYWRkVXNlckZvcm0iLCJlZGl0VXNlckZvcm0iLCJ1c2Vyc0RhdGEiLCJhbGxTZWxlY3RlZCIsImRlbGV0ZU1vZGFsIiwiZGVsZXRlSWQiLCJ0b3RhbFVzZXIiLCJzdGF0dXNJZCIsInN0YXR1c01vZGFsIiwic3RhdHVzVmFsdWUiLCJzdGF0dXNVc2VybmFtZSIsImRlbGV0ZVVzZXJuYW1lIiwiZmV0Y2hpbmdUYWJsZURhdGEiLCJzZWxlY3RlZElkcyIsImNoZWNrbGlzdCIsImN1cnJlbnRwYWdlRGF0YSIsImVkaXRVc2VySWQiLCJ1c2VybmFtZSIsImZ1bGxfbmFtZSIsInJvbGVfaWQiLCJmb3JtRXJyb3IiLCJjbGVhckRhdGVSYW5nZUZpbHRlciIsInJvbGUiLCJ0ZXh0QnViYmxlZGF0YSIsImZpZWxkIiwiY2xlYXJGaWx0ZXIiLCJjcmVhdGVVc2VyIiwicGFzc3dvcmREYXRhIiwic2V0Rm9ybUVycm9yIiwiZmV0Y2hVc2Vyc0xpc3QiLCJlbXB0eUZvcm1EYXRhIiwiZWRpdFVzZXIiLCJvcGVuU3RhdHVzTW9kZWwiLCJ1cGRhdGVVc2VyIiwicGF0Y2giLCJmaWx0ZXJfa2V5Iiwib3BlbkRlbGV0ZW1vZGVsIiwiZGVsZXRlVXNlciIsInRvZ2dsZVVzZXJTdGF0dXMiLCJ0b2dnbGVTZWxlY3RhbGwiLCJlbCIsImRvd25sb2FkQWxsIiwiYWxsUGFnZVNlbGVjdGVkIiwiZmxhdCIsIlBvcHVwTW9kYWwiLCJsYW5ndWFnZVByZWZlcmVuY2UiLCJlZGl0UHJvZmlsZUZvcm0iLCJlZGl0UGFzc3dvcmRGb3JtIiwic2hvd0N1cnJlbnRQYXNzd29yZCIsInNob3dOZXdQYXNzd29yZCIsInNob3dDb25maXJtUGFzc3dvcmQiLCJ1c2VyRGF0YSIsInVzZXJfcm9sZSIsImxhbmd1YWdlX3ByZWZlcmVuY2UiLCJlcnJvckZvcm1EYXRhIiwiY3VycmVudF9wYXNzd29yZCIsImVycm9yUGFzc3dvcmREYXRhIiwidXBkYXRlUGFzc3dvcmQiLCJwYXNzd29yZEZvcm1EYXRhIiwiZm9ybV90eXBlIiwidXBkYXRlUHJvZmlsZSIsIkVtYWlsVmVyaWZpY2F0aW9uX3Z1ZV8xIiwiRW1haWxWZXJpZmljYXRpb24iLCJwdWJsaXNoZXJFeGlzdHMiLCJ0ZXh0YXJlYSIsInB1Ymxpc2hlcl9uYW1lIiwicHVibGlzaGVyX2lkIiwicmVnaXN0cmF0aW9uX2FnZW5jeSIsInJlZ2lzdHJhdGlvbl9udW1iZXIiLCJpZGVudGlmaWVyIiwibGljZW5zZV9pZCIsImltYWdlX3VybCIsImNvbnRhY3RfZW1haWwiLCJ3ZWJzaXRlIiwiYWRkcmVzcyIsInNvdXJjZSIsInJlY29yZF9leGNsdXNpb25zIiwiaWF0aUVycm9yIiwicmVzaXplIiwic2Nyb2xsSGVpZ2h0IiwiYWdlbmNpZXMiLCJyZWdpc3RyYXRpb25BZ2VuY3kiLCJ1bmNhdGVnb3JpemVkXzEiLCJzdGFydHNXaXRoIiwic29tZSIsImlzVGV4dEZpZWxkIiwiZmllbGRUeXBlIiwiZmllbGROYW1lIiwiY2hlY2tTdGVwIiwiZm9ybVN0ZXAiLCJyZWdpc3RlckZvcm0iLCJyZWdpc3Rlcl9sYW5nIiwicHVibGlzaGVyX2luZm9ybWF0aW9uIiwiaXNfY29tcGxldGUiLCJob3Zlcl90ZXh0IiwiZmllbGRzIiwicGxhY2Vob2xkZXIiLCJoZWxwX3RleHQiLCJvcmdfcmVnaXN0cmF0aW9uX2FnZW5jeSIsImZvcl9lZyIsImlhdGlfb3JnX2lkZW50aWZpZXIiLCJwdWJsaXNoZXJUeXBlIiwiZGF0YUxpY2Vuc2UiLCJwdWJsaXNoZXJfbG9nb191cmwiLCJvcmdhbmlzYXRpb25fZGVzYyIsImNvbnRhY3RfaW5mbyIsImNvbnRhY3QiLCJwdWJsaXNoaW5nX2FkZGl0aW9uYWxfaW5mbyIsImFkbWluaXN0cmF0b3JfaW5mb3JtYXRpb24iLCJpYXRpX3JlZ2lzdGVyX2Rlc2NyaXB0aW9uIiwiZnVsbG5hbWUiLCJlbWFpbF9hZGRyZXNzIiwiY29uZmlybSIsImNvbmZpcm1faGVscCIsImVtYWlsX3ZlcmlmaWNhdGlvbiIsInVwZGF0ZVZhbGlkYXRpb25FcnJvcnMiLCJlcnJvclJlc3BvbnNlIiwiY2xlYW5WYWxpZGF0aW9uRXJyb3JzIiwidXBkYXRlRXJyb3JzIiwiZXZlcnkiLCJjbGVhbklhdGlFcnJvcnMiLCJ2ZXJpZnlQdWJsaXNoZXIiLCJ1cGRhdGVTdGVwIiwidmVyaWZ5Q29udGFjdEluZm9ybWF0aW9uIiwidmVyaWZ5QWRkaXRpb25hbEluZm9ybWF0aW9uIiwiZ2V0Q3VycmVudFN0ZXAiLCJjdXJyZW50X3N0ZXAiLCJnb1RvTmV4dEZvcm0iLCJnb1RvUHJldmlvdXNGb3JtIiwiZG93bmxvYWRNYW51YWwiLCJvcmlnaW4iLCJ0cmlnZ2VyTW9kZWwiLCJhZ2VuY3kiLCJvcmdhbml6YXRpb25fcmVnaXN0cmF0aW9uX2FnZW5jeSIsIm9yZ2FuaXphdGlvbl9yZWdpc3RyYXRpb25fbm8iLCJvcmdfcmVnaXN0cmF0aW9uX25vIiwiaWF0aV9vcmdhbml6YXRpb25hbF9pZGVudGlmaWVyIiwicmVnaXN0ZXJfZGVzY3JpcHRpb24iLCJjb25maXJtX3Bhc3N3b3JkIiwidXBkYXRlRm9ybUVycm9ycyIsImVycktleSIsImludGVudCIsImxvZ2luIiwiTmF2RHJvcGRvd25fdnVlXzEiLCJOYXZEcm9wZG93biIsImF1dGgiLCJyZW5kZXIiLCJfaG9pc3RlZF8xIiwiX2hvaXN0ZWRfMiIsIl9ob2lzdGVkXzMiLCJfaG9pc3RlZF80IiwiY3JlYXRlRWxlbWVudFZOb2RlIiwiX2hvaXN0ZWRfNSIsIl9ob2lzdGVkXzYiLCJfaG9pc3RlZF83IiwiX2hvaXN0ZWRfOCIsIl9ob2lzdGVkXzkiLCJfaG9pc3RlZF8xMCIsIl9jdHgiLCJfY2FjaGUiLCIkcHJvcHMiLCIkc2V0dXAiLCIkZGF0YSIsIiRvcHRpb25zIiwiX2NvbXBvbmVudF9zdmdfdnVlIiwicmVzb2x2ZUNvbXBvbmVudCIsIm9wZW5CbG9jayIsImNyZWF0ZUVsZW1lbnRCbG9jayIsIkZyYWdtZW50Iiwib25DbGljayIsImNyZWF0ZVZOb2RlIiwiY3JlYXRlQ29tbWVudFZOb2RlIiwibm9ybWFsaXplU3R5bGUiLCIkZXZlbnQiLCJ0b0Rpc3BsYXlTdHJpbmciLCJjcmVhdGVCbG9jayIsIndpdGhDdHgiLCJfd2l0aFNjb3BlSWQiLCJwdXNoU2NvcGVJZCIsInBvcFNjb3BlSWQiLCJfaG9pc3RlZF8xMSIsIl9ob2lzdGVkXzEyIiwiX2hvaXN0ZWRfMTMiLCJfaG9pc3RlZF8xNCIsIl9ob2lzdGVkXzE1IiwiX2hvaXN0ZWRfMTYiLCJfaG9pc3RlZF8xNyIsIl9ob2lzdGVkXzE4IiwiX2hvaXN0ZWRfMTkiLCJfaG9pc3RlZF8yMCIsIl9ob2lzdGVkXzIxIiwiX2hvaXN0ZWRfMjIiLCJfaG9pc3RlZF8yMyIsIl9ob2lzdGVkXzI0IiwiX2hvaXN0ZWRfMjUiLCJfaG9pc3RlZF8yNiIsIl9ob2lzdGVkXzI3IiwiX2hvaXN0ZWRfMjgiLCJfaG9pc3RlZF8yOSIsIl9ob2lzdGVkXzMwIiwiX2hvaXN0ZWRfMzEiLCJfaG9pc3RlZF8zMiIsIl9ob2lzdGVkXzMzIiwiX2hvaXN0ZWRfMzQiLCJfaG9pc3RlZF8zNSIsIl9ob2lzdGVkXzM2IiwiX2hvaXN0ZWRfMzciLCJfaG9pc3RlZF8zOCIsIm5vcm1hbGl6ZUNsYXNzIiwicmVuZGVyTGlzdCIsIm5hdl9fcG9pbnRlciIsImxvZ3MiLCJjcmVhdGVUZXh0Vk5vZGUiLCJhZGRfYWN0aXZpdHlfbWFudWFsbHkiLCJpbXBvcnRfYWN0aXZpdGllc19mcm9tX2NzdiIsImltcG9ydF9hY3Rpdml0aWVzX2Zyb21feGxzIiwiYXBpIiwic3lzdGVtIiwid2l0aERpcmVjdGl2ZXMiLCJzZWFyY2hfYWN0aXZpdHkiLCJvbktleXVwIiwid2l0aEtleXMiLCJ2TW9kZWxUZXh0Iiwic2VhcmNoX29yZ2FuaXNhdGlvbiIsInlvdXJfcHJvZmlsZSIsIm9uQ2xvc2UiLCJvbkNsb3NlTW9kYWwiLCJvblRvYXN0IiwiYmMiLCJkIiwiYW5vdGhlcl9idWxrX3B1Ymxpc2hfaW5fcHJvZ3Jlc3MiLCJhY3Rpdml0aWVzX2JlaW5nX3B1Ymxpc2hlZCIsInBsZWFzZV93YWl0X2Zvcl9wcmV2aW91c190b19jb21wbGV0ZSIsIiRlbWl0IiwidG8iLCJpYXRpX3JlZ2lzdHJ5IiwiZGlzYWJsZWQiLCJ2U2hvdyIsImVtcHR5IiwibW9kZWxWYWx1ZSIsImNsZWFyYWJsZSIsInRlbGVwb3J0Iiwib25PcGVuIiwib25DbGVhcmVkIiwieWVhcmx5IiwicHJlc2V0RGF0ZVJhbmdlIiwiYWN0aW9uIiwidGFiaW5kZXgiLCJjb2xzIiwicm93cyIsImNyZWF0ZVN0YXRpY1ZOb2RlIiwiY29tbW9vbl9sYW5nIiwic2VsZWN0X2FfdmFsdWUiLCJnZW5lcmFsIiwib2JqZWN0aXZlcyIsInRhcmdldF9ncm91cHMiLCJvdGhlciIsImFkZF9uYXJyYXRpdmVfaW5fb3RoZXJfbGFuZyIsImFkZF9hZGRpdGlvbmFsX2Rlc2NyaXB0aW9uIiwiYWxlcnRzIiwiYWNjb3VudF9ub3RfdmVyaWZpZWQiLCJjb21wbGV0ZV95b3VyX3NldHVwIiwicHVibGlzaGVyX2lzX2luYWN0aXZlIiwic2hvd19sZXNzIiwic2hvd19tb3JlIiwiYXMiLCJlbnRlciIsImxlYXZlIiwiYWNjb3VudF9ub3RfdmVyaWZpZWRfZGVzY19wMSIsImFjY291bnRfbm90X3ZlcmlmaWVkX2Rlc2NfcDIiLCJpbm5lckhUTUwiLCJhY2NvdW50X25vdF92ZXJpZmllZF9kZXNjX3AzIiwiY29tcGxldGVfeW91cl9zZXR1cF9kZXNjcmlwdGlvbiIsInVwZGF0ZV9yZWdpc3RyeV9pbmZvcm1hdGlvbiIsImFwaV9rZXlfYW5kX3B1Ymxpc2hlcl9pZCIsImVudGVyX2NvcnJlY3RfYXBpX3Rva2VuIiwidXBkYXRlX2RlZmF1bHRfdmFsdWVzIiwicHVibGlzaGVyX2lzX25vdF9hY3RpdmUiLCJpYXRpX3N0YW5kYXJkX3JlZmVyZW5jZSIsImxlYXJuX21vcmUiLCJvbklucHV0Iiwidk1vZGVsQ2hlY2tib3giLCJUZWxlcG9ydCIsIlRyYW5zaXRpb24iLCJhcmdzIiwicmVuZGVyU2xvdCIsIiRzbG90cyIsIl9jb21wb25lbnRfcmFkaWFsX3Byb2dyZXNzX2JhciIsImRpYW1ldGVyIiwicm93IiwiY29sIiwicHJldiIsIm0iLCJlbGVfZXJyIiwidHJ1bmMiLCJkZWxldGVfZWxlbWVudCIsImRlbGV0ZV9jb25maXJtYXRpb24iLCJnb19iYWNrIiwib25SZXNldCIsImNvbnRpbnVlX2FueXdheSIsImFkZF9lbGVtZW50IiwicHVibGlzaF9hbnl3YXkiLCJmaXhfaXNzdWVzIiwidW5wdWJsaXNoIiwidW5wdWJsaXNoX2NvbmZpcm1hdGlvbiIsImRlbGV0ZV9jb25maXJtYXRpb25fZGVmYXVsdCIsInJlbGF0ZWRfaW5kaWNhdG9yX3BlcmlvZF9kZWxldGVkIiwicmVsYXRlZF9wZXJpb2RfZGVsZXRlZCIsIm1vZHVsZSIsImlhdGlfcGF0aCIsIl9jb21wb25lbnRfQnRuIiwib3JnYW5pc2F0aW9uIiwiX2NvbXBvbmVudF9CcmVhZGNydW1iIiwiYWxtb3N0X3RoZXJlIiwiaXNzdWVzX2ZvdW5kIiwiaWF0aV92YWxpZGF0b3JfaXNzdWVzIiwidXBsb2FkX2ZpbGVfaXNzdWVzIiwiZXJyb3JJbmRleCIsImVycm9yTGlzdCIsImxpc3RJbmRleCIsIl9ob2lzdGVkXzM5IiwiX2NvbXBvbmVudF9Ib3ZlclRleHQiLCJhY3Rpdml0eV9kZWZhdWx0X2xhbmciLCJvdmVycmlkZV9kZWZhdWx0X3ZhbHVlcyIsImN1cnJlbmN5IiwiaG92ZXJfaGVhZGVyIiwic2VhcmNoYWJsZSIsImNhbmNlbF9sYWJlbCIsInNhdmVfZGVmYXVsdF92YWx1ZXNfbGFiZWwiLCJfaG9pc3RlZF80MCIsIl9ob2lzdGVkXzQxIiwiX2hvaXN0ZWRfNDIiLCJfaG9pc3RlZF80MyIsIl9ob2lzdGVkXzQ0IiwiX2hvaXN0ZWRfNDUiLCJfaG9pc3RlZF80NiIsIl9ob2lzdGVkXzQ3IiwiX2hvaXN0ZWRfNDgiLCJfaG9pc3RlZF80OSIsIl9ob2lzdGVkXzUwIiwiX2hvaXN0ZWRfNTEiLCJfaG9pc3RlZF81MiIsIl9ob2lzdGVkXzUzIiwiX2hvaXN0ZWRfNTQiLCJfaG9pc3RlZF81NSIsIl9ob2lzdGVkXzU2IiwiX2hvaXN0ZWRfNTciLCJfaG9pc3RlZF81OCIsIl9jb21wb25lbnRfVG9hc3QiLCJfY29tcG9uZW50X0Vycm9yUG9wVXAiLCJfY29tcG9uZW50X0RlbGV0ZUJ1dHRvbiIsIl9jb21wb25lbnRfVW5QdWJsaXNoIiwiX2NvbXBvbmVudF9QdWJsaXNoIiwiX2NvbXBvbmVudF9FcnJvcnMiLCJfY29tcG9uZW50X1ByZXZpb3VzbHlQdWJsaXNoZWQiLCJfY29tcG9uZW50X1Byb2dyZXNzQmFyIiwiX2NvbXBvbmVudF9FbGVtZW50cyIsIl9jb21wb25lbnRfQWN0aXZpdHlFbGVtZW50IiwiX2NvbXBvbmVudF9SZXN1bHQiLCJfZGlyZWN0aXZlX3N0aWNreV9jb21wb25lbnQiLCJyZXNvbHZlRGlyZWN0aXZlIiwiX2RpcmVjdGl2ZV9zbW9vdGhfc2Nyb2xsIiwieW91cl9hY3Rpdml0aWVzX2xhYmVsIiwidW50aXRsZWQiLCJhY3Rpdml0eV9jb3VsZF9ub3RfYmVfcHVibGlzaGVkIiwib25DbG9zZVBvcHVwIiwidW5QdWJsaXNoZWQiLCJzaG93UHVibGlzaGVkIiwicHVibGlzaEVycm9ycyIsInB1Ymxpc2hpbmdfcHJvZ3Jlc3MiLCJ0aGVfaWF0aV9zdGFuZGFyZF9jb250YWluc193aWRlIiwiY29tcGxldGVfYWxsX2NvcmVfbGFiZWwiLCJlYWNoX2VsZW1lbnRfcmVwcmVzZW50cyIsImNvcmVfZWxlbWVudHNfaW5jbHVkZSIsImNhbm5vdF9wdWJsaXNoX2FjdGl2aXR5X3VudGlsX21hbmRhdG9yeSIsImJvdW5kYXJ5IiwidWNfb3ZlcnJpZGVfdGhpc19hY3Rpdml0eV9sYWJlbCIsImljb25fc2l6ZSIsIndhcm5pbmdfaW5mb190ZXh0IiwiX2NvbXBvbmVudF9Mb2FkZXIiLCJfY29tcG9uZW50X1BhZ2VUaXRsZSIsIl9jb21wb25lbnRfRXJyb3JNZXNzYWdlIiwiX2NvbXBvbmVudF9FbXB0eUFjdGl2aXR5IiwiX2NvbXBvbmVudF9UYWJsZUxheW91dCIsIl9jb21wb25lbnRfUGFnaW5hdGlvbiIsIl9jb21wb25lbnRfWGxzVXBsb2FkSW5kaWNhdG9yIiwib25TaG93T3JIaWRlIiwib25GZXRjaEFjdGl2aXRpZXMiLCJfY29tcG9uZW50X011bHRpc2VsZWN0IiwiX2NvbXBvbmVudF9CdG5Db21wb25lbnQiLCJfY29tcG9uZW50X01vZGFsIiwiYWRkX2FfdGl0dGxlX2FuZF9pZGVudGlmaWVyX2xhYmVsIiwiZWxlbWVudHNfbGFuZyIsImVycm9yX19pbnB1dCIsInR5cGVfbmFycmF0aXZlX2hlcmUiLCJhX2NvZGVfc3BlY2lmeWluZ190ZXh0X29yZ19kb2N1bWVudF9saW5rX3RpdGxlX25hcnJhdGl2ZSIsInNlbGVjdF9sYW5ndWFnZSIsInlvdXJfZGVmYXVsdF9sYW5ndWFnZV9hc3N1bWVkX25vX3RoYXQiLCJpYXRpX2lkZW50aWZpZXIiLCJ0eXBlX2lkZW50aWZpZXJfaGVyZSIsInNob3J0ZXJfaGVscF90ZXh0IiwiaWF0aV9pZGVudGlmaWVyX3RleHQiLCJ0aGlzX2lzX2F1dG9nZW5lcmF0ZWQiLCJjYW5jZWwiLCJzYXZlIiwiYyIsInZpZXdfZXJyb3JzX29yX3dhcm5pbmciLCJwdWJsaXNoX3NlbGVjdGVkIiwicHVibGlzaGluZ19hbGVydCIsImFjdGl2aXRpZXNfYWxyZWFkeV9wdWJsaXNoZWRfd2lsbF9ub3QiLCJjaGFuZ2VzX21hZGVfdG9fcHVibGlzaGVkX3dpbGxfYmVfcmVwdWJsaXNoZWQiLCJhY3QiLCJub19hY3Rpdml0aWVzX2ZvdW5kIiwiY2FuY2VsbGF0aW9uX3N1Y2Nlc3NmdWwiLCJjb250aW51ZV9zZWxlY3RpbmciLCJyZWZyZXNoIiwiY3JpdGljYWxfZXJyb3JfZm91bmQiLCJhY3Rpdml0aWVzX25vY2FzZSIsImVycm9yc19hbmRfd2FybmluZ3NfZm91bmQiLCJub19lcnJvcnMiLCJhY3Rpdml0eURhdGUiLCJjb25kaXRpb25fYXR0YWNoZWQiLCJhdHRhY2hlZCIsIm5vIiwieWVzIiwiY29uZGl0aW9uIiwiY29uZGl0aW9uX3R5cGUiLCJjb25kaXRpb25UeXBlIiwiY29uZGl0aW9uc19ub3RfYXR0YWNoZWQiLCJjb250YWN0VHlwZSIsInBlcnNvbl9uYW1lIiwiZGVwYXJ0bWVudCIsImpvYl90aXRsZSIsImVtYWlsX3ZhbHVlIiwidGVsZXBob25lIiwidGVsIiwibWFpbGluZ19hZGRyZXNzIiwiYWRkcmVzc19pbmRleCIsImRlc2NyaXB0aW9uVHlwZSIsImh1bWFuaXRhcmlhblNjb3BlVHlwZSIsInZvY2FidWxhcnkiLCJodW1hbml0YXJpYW5TY29wZVZvY2FidWxhcnkiLCJ2b2NhYnVsYXJ5X3VyaSIsImxlZ2FjeV9uYW1lIiwiaWF0aV9lcXVpdmFsZW50IiwibG9jYXRpb25fcmVhY2giLCJnZW9ncmFwaGljTG9jYXRpb25SZWFjaCIsImxvY2F0aW9uX3JlYWNoZWQiLCJsb2NhdGlvbl9pZCIsImdlb2dyYXBoaWNWb2NhYnVsYXJ5IiwiYWN0aXZpdHlfZGVzY3JpcHRpb24iLCJhZG1pbmlzdHJhdGl2ZSIsImxldmVsIiwicG9pbnQiLCJzcnNfbmFtZSIsInBvcyIsImxhdGl0dWRlIiwibG9uZ2l0dWRlIiwiZXhhY3RuZXNzIiwiZ2VvZ3JhcGhpY0V4YWN0bmVzcyIsImxvY2F0aW9uX2NsYXNzIiwiZ2VvZ3JhcGhpY0xvY2F0aW9uQ2xhc3MiLCJmZWF0dXJlX2Rlc2lnbmF0aW9uIiwicHJvcGVyX2NsYXNzIiwibG9jYXRpb25UeXBlIiwicmVmZXJlbmNlX3R5cGUiLCJvdGhlcklkZW50aWZpZXJUeXBlIiwib3duZXJfb3JnIiwib3duZXJfb3JnYW5pc2F0aW9uX3JlZmVyZW5jZSIsIm93bmVyX29yZ2FuaXNhdGlvbl9uYXJyYXRpdmUiLCJwYXJ0aWNpcGF0aW5nX29yZyIsIm9yZ2FuaXphdGlvbl9yb2xlIiwib3JnYW5pc2F0aW9uUm9sZSIsIm9yZ2FuaXNhdGlvbl9yb2xlIiwib3JnYW5pc2F0aW9uX25hbWUiLCJvcmdhbmlzYXRpb25fdHlwZSIsIm9yZ2FuaXphdGlvblR5cGUiLCJjcnNfY2hhbm5lbF9jb2RlIiwiY3JzQ2hhbm5lbENvZGUiLCJidWRnZXRUeXBlIiwicGxhbm5lZF9kaXNidXJzZW1lbnRfdHlwZSIsInZhbHVlX2Ftb3VudCIsImFtb3VudCIsInRvTG9jYWxlU3RyaW5nIiwidmFsdWVfZGF0ZSIsInByb3ZpZGVyX29yZyIsImVsZW1lbnRfbGFiZWxzX2xhbmciLCJwcm92aWRlcl9vcmdfc3BhY2VkIiwicHJvdmlkZXIiLCJwcm92aWRlcl9hY3Rpdml0eV9pZCIsInJlY2VpdmVyX29yZyIsInJlY2VpdmVyX29yZ19zcGFjZWQiLCJyZWNlaXZlciIsInJlY2VpdmVyX2FjdGl2aXR5X2lkIiwicG9saWN5X21hcmtlcl92b2NhYnVsYXJ5IiwicG9saWN5TWFya2VyVm9jYWJ1bGFyeSIsInBvbGljeV9tYXJrZXIiLCJwb2xpY3lNYXJrZXIiLCJwb2xpY3lfbWFya2VyX3RleHQiLCJzaWduaWZpY2FuY2UiLCJwb2xpY3lTaWduaWZpY2FuY2UiLCJjb3VudHJ5X2NvZGUiLCJwZXJjZW50YWdlIiwicmVnaW9uX3ZvY2FidWxhcnkiLCJyZWdpb25Wb2NhYnVsYXJ5IiwicmVnaW9uX2NvZGUiLCJyZWdpb24iLCJjdXN0b21fY29kZSIsInJlbGF0aW9uc2hpcF90eXBlIiwicmVsYXRlZEFjdGl2aXR5VHlwZSIsInJlcG9ydGluZ19vcmciLCJzZWNvbmRhcnlfcmVwb3J0ZXIiLCJfY29tcG9uZW50X05vdFlldCIsIm5ld19yZXN1bHQiLCJzaG93X2VsZW1lbnQiLCJmdWxsX3Jlc3VsdCIsInZpZXdfZWxlbWVudCIsImVkaXRfZWxlbWVudCIsInJlc3VsdF90eXBlIiwibm90X3lldF9hZGRlZF9wZXJpb2QiLCJub3RfeWV0X2FkZGVkX3BlcmlvZF9idG4iLCJuZXdfaW5kaWNhdG9yIiwiZnVsbF9pbmRpY2F0b3IiLCJwZXJpb2RzIiwiZWRpdCIsInNob3dfZnVsbF9wZXJpb2QiLCJzZWN0b3Jfdm9jYWJ1bGFyeSIsInNlY3RvclZvY2FidWxhcnkiLCJzZWN0b3JDb2RlIiwiY2F0ZWdvcnlfY29kZSIsInNlY3RvckNhdGVnb3J5Iiwic2RnX2dvYWwiLCJzZGdHb2FscyIsInNkZ190YXJnZXQiLCJzZGdUYXJnZXQiLCJ0YWdfdm9jYWJ1bGFyeSIsInRhZ1ZvY2FidWxhcnkiLCJ0YWdfdGV4dCIsImdvYWxzX3RhZ19jb2RlIiwidGFyZ2V0c190YWdfY29kZSIsInRyYW5zIiwidHJhbnNhY3Rpb25UeXBlIiwidHJhbnNhY3Rpb25fdHlwZSIsInRyYW5zYWN0aW9uX3R5cGVfY29kZSIsInZhbCIsInZhbHVlZF9hdCIsIl9jb21wb25lbnRfVGl0bGVFbGVtZW50IiwiX2NvbXBvbmVudF9Bc2NlbmRpbmciLCJfY29tcG9uZW50X01lYXN1cmUiLCJfY29tcG9uZW50X0FnZ3JlZ2F0aW9uU3RhdHVzIiwiX2NvbXBvbmVudF9EZXNjcmlwdGlvbiIsIl9jb21wb25lbnRfUmVmZXJlbmNlIiwiX2NvbXBvbmVudF9CYXNlbGluZSIsIl9jb21wb25lbnRfUGVyaW9kIiwiX2NvbXBvbmVudF9Eb2N1bWVudExpbmsiLCJpbmRpY2F0b3JfZGV0YWlsIiwiaW5kaWNhdG9yX2NvZGUiLCJyRGF0YSIsInJpIiwicGVyaW9kX25vY2FzZSIsImRvY3VtZW50X2xpbmsiLCJhc2NlbmRpbmciLCJtZWFzdXJlIiwiaW5kaWNhdG9yTWVhc3VyZSIsImFnZ3JlZ2F0aW9uX3N0YXR1cyIsInNjb3BlIiwiY29sc3BhbiIsIl9jb21wb25lbnRfRGVsZXRlQWN0aW9uIiwibm90X2ZvdW5kIiwiYmFzZSIsImRpbWVuc2lvbiIsImNvbW1lbnQiLCJjb20iLCJuYSIsImRlZnVhbHQiLCJjYXRlZ29yeSIsImNhdCIsImRvY3VtZW50Q2F0ZWdvcnkiLCJkb2N1bWVudF9kYXRlIiwiaW5kaWNhdG9yVm9jYWJ1bGFyeSIsImluZGljYXRvcl91cmkiLCJzZWFyY2hfZWxlbWVudHNfcGxhY2Vob2xkZXIiLCJhbGxfZWxlbWVudHMiLCJ2aWV3Qm94IiwiZmlsbCIsInhtbG5zIiwiX2hvaXN0ZWRfNTkiLCJfaG9pc3RlZF82MCIsIl9ob2lzdGVkXzYxIiwiX2hvaXN0ZWRfNjIiLCJfaG9pc3RlZF82MyIsIl9ob2lzdGVkXzY0IiwiX2hvaXN0ZWRfNjUiLCJfaG9pc3RlZF82NiIsIl9ob2lzdGVkXzY3IiwiX2hvaXN0ZWRfNjgiLCJfaG9pc3RlZF82OSIsIl9ob2lzdGVkXzcwIiwiX2hvaXN0ZWRfNzEiLCJfaG9pc3RlZF83MiIsIl9ob2lzdGVkXzczIiwiX2hvaXN0ZWRfNzQiLCJfaG9pc3RlZF83NSIsIl9ob2lzdGVkXzc2IiwiX2hvaXN0ZWRfNzciLCJfaG9pc3RlZF83OCIsIl9ob2lzdGVkXzc5IiwiX2hvaXN0ZWRfODAiLCJfaG9pc3RlZF84MSIsIl9ob2lzdGVkXzgyIiwiX2hvaXN0ZWRfODMiLCJfaG9pc3RlZF84NCIsIl9ob2lzdGVkXzg1IiwiX2hvaXN0ZWRfODYiLCJfaG9pc3RlZF84NyIsIl9ob2lzdGVkXzg4IiwiX2hvaXN0ZWRfODkiLCJfaG9pc3RlZF85MCIsIl9ob2lzdGVkXzkxIiwiX2hvaXN0ZWRfOTIiLCJfaG9pc3RlZF85MyIsIl9ob2lzdGVkXzk0IiwiX2hvaXN0ZWRfOTUiLCJfaG9pc3RlZF85NiIsImZ1bGxfdHJhbnNhY3Rpb24iLCJkZWZhdWx0X2FpZF90eXBlX3ZvY2FidWxhcnkiLCJhaWRUeXBlVm9jYWJ1bGFyeSIsImVhcm1hcmtpbmdfY2F0ZWdvcnkiLCJlYXJtYXJraW5nQ2F0ZWdvcnkiLCJlYXJtYXJraW5nX21vZGFsaXR5IiwiZWFybWFya2luZ01vZGFsaXR5IiwiY2FzaF9hbmRfdm91Y2hlcl9tb2RhbGl0aWVzIiwiY2FzaGFuZFZvdWNoZXJNb2RhbGl0aWVzIiwiZGVmYXVsdF9haWRfdHlwZSIsImFpZFR5cGUiLCJjb3VudHJ5X2J1ZGdldF92b2NhYnVsYXJ5IiwiYnVkZ2V0SWRlbnRpZmllclZvY2FidWxhcnkiLCJidWRnZXRfaXRlbSIsImJ1ZGdldElkZW50aWZpZXIiLCJidWRnZXRfdHlwZSIsImJ1ZGdldF92YWx1ZSIsImJ1ZGdldF9zdGF0dXMiLCJidWRnZXRTdGF0dXMiLCJhY3Rpdml0eVN0YXR1cyIsImFjdGl2aXR5U2NvcGUiLCJjb2xsYWJvcmF0aW9uVHlwZSIsImZsb3dUeXBlIiwidGllZFN0YXR1cyIsImZpbmFuY2VUeXBlIiwibm9fY29udGVudCIsIl9jb21wb25lbnRfQ3JlYXRlTW9kYWwiLCJhZGRfYWN0aXZpdHkiLCJkb3dubG9hZF9hbGwiLCJkb3dubG9hZF9lbGVtZW50IiwiY3N2IiwieG1sIiwieGxzIiwiZG93bmxvYWRfeG1sX2NvbmZpcm1hdGlvbiIsImVycm9yX21lc3NhZ2UiLCJhbnl3YXkiLCJub3RlIiwiY29yZV9lbGVtZW50cyIsIm1hbmRhdG9yeV9zdWJfZWxlbWVudHMiLCJyZWNvbW1lbmRlZF9zdWJfZWxlbWVudHMiLCJfY29tcG9uZW50X0FjdGl2aXR5QnV0dG9uIiwibm9fYWN0aXZpdHlfaGFzX2JlZW5fYWRkZWRfbGFiZWwiLCJjbGlja19vbl9idXR0b25fdG9fYWRkX25ld19sYWJlbCIsIndoYXRfaXNfYWN0aXZpdHkiLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImFjdGl2aXR5X3RpdGxlIiwidXBkYXRlZF9vbiIsInVwZGF0ZWRfYXQiLCJzdGF0dXNfbGFiZWxzIiwic2VsZWN0IiwiYWN0aXZpdGllc19ub3RfZm91bmQiLCJfY29tcG9uZW50X1RhcmdldFZhbHVlIiwiX2NvbXBvbmVudF9BY3R1YWxWYWx1ZSIsInBlcmlvZF9kZXRhaWwiLCJwZXJpb2RfY29kZSIsImFjdHVhbCIsInBlIiwiX2NvbXBvbmVudF90NDZ0ciIsInRWYWx1ZSIsImFjdHVhbF92YWx1ZSIsImxvY2F0aW9uX3JlZmVyZW5jZSIsImRpbSIsInRhcmdldF92YWx1ZSIsIl9jb21wb25lbnRfUmVzdWx0RWxlbWVudCIsIl9jb21wb25lbnRfSW5kaWNhdG9yIiwicmVzdWx0X2RldGFpbCIsInJlc3VsdF9jb2RlIiwiaW5kaWNhdG9yX25vY2FzZSIsImFkZF9pbmRpY2F0b3Jfbm9jYXNlIiwibm90X3lldF9hZGRlZF9pbmRpY2F0b3IiLCJfY29tcG9uZW50X1RpdGxlRGVzY3JpcHRpb24iLCJfY29tcG9uZW50X1Jlc3VsdFR5cGUiLCJpbmRpY2F0b3JfdGl0bGUiLCJkb2N1bWVudHMiLCJsb2MiLCJsIiwidGFyIiwiX2NvbXBvbmVudF9UcmFuc2FjdGlvbkVsZW1lbnQiLCJ0cmFuc2FjdGlvbl9kZXRhaWwiLCJfY29tcG9uZW50X0FpZFR5cGUiLCJfY29tcG9uZW50X1RyYW5zYWN0aW9uVHlwZSIsIl9jb21wb25lbnRfVHJhbnNhY3Rpb25EYXRlIiwiX2NvbXBvbmVudF9WYWx1ZSIsIl9jb21wb25lbnRfUHJvdmlkZXJPcmdhbml6YXRpb24iLCJfY29tcG9uZW50X1JlY2VpdmVyT3JnYW5pemF0aW9uIiwiX2NvbXBvbmVudF9EaXNidXJzZW1lbnRDaGFubmVsIiwiX2NvbXBvbmVudF9TZWN0b3IiLCJfY29tcG9uZW50X1JlY2lwaWVudENvdW50cnkiLCJfY29tcG9uZW50X1JlY2lwaWVudFJlZ2lvbiIsIl9jb21wb25lbnRfRmxvd1R5cGUiLCJfY29tcG9uZW50X0ZpbmFuY2VUeXBlIiwiX2NvbXBvbmVudF9UaWVkU3RhdHVzIiwiaW50ZXJuYWwiLCJ0cmFuc2FjdGlvbl9kYXRlIiwiY2xhcyIsImF0IiwiYWlkX3R5cGVfdm9jYWJ1bGFyeSIsImFpZF90eXBlX2NvZGUiLCJjYXNoQW5kVm91Y2hlck1vZGFsaXRpZXMiLCJlYXJNYXJraW5nQ2F0ZWdvcnkiLCJlYXJNYXJraW5nTW9kYWxpdHkiLCJkaXNidXJzZW1lbnRfY2hhbm5lbF9jb2RlIiwiZGlzYnVyc2VtZW50Q2hhbm5lbCIsImZpbmFuY2VfdHlwZSIsImZsb3dfdHlwZSIsIm9yZ2FuaXNlcl9pZGVudGlmaWVyX2NvZGUiLCJvcmdhbml6YXRpb25faWRlbnRpZmllcl9jb2RlIiwicG8iLCJjb3UiLCJjb3VudHJ5Q29kZSIsInNkIiwicmVnaW9uQ29kZSIsInNlYyIsInVuc2RnR29hbHMiLCJ1bnNkZ1RhcmdldHMiLCJ0aWVkX3N0YXR1c19jb2RlIiwidGllZFN0YXR1c1R5cGUiLCJ0aWVkX3N0YXR1cyIsImF1ZGl0cyIsIl9jb21wb25lbnRfYXBleGNoYXJ0IiwiX2hvaXN0ZWRfOTciLCJfaG9pc3RlZF85OCIsIl9ob2lzdGVkXzk5IiwiX2hvaXN0ZWRfMTAwIiwiX2hvaXN0ZWRfMTAxIiwiX2hvaXN0ZWRfMTAyIiwiX2hvaXN0ZWRfMTAzIiwiX2hvaXN0ZWRfMTA0IiwiX2hvaXN0ZWRfMTA1IiwiX2hvaXN0ZWRfMTA2IiwiX2hvaXN0ZWRfMTA3IiwiX2hvaXN0ZWRfMTA4IiwiX2hvaXN0ZWRfMTA5IiwiX2hvaXN0ZWRfMTEwIiwiX2hvaXN0ZWRfMTExIiwiX28iLCJfcCIsImFkbWluX3VzZXJfY291bnQiLCJnZW5lcmFsX3VzZXJfY291bnQiLCJhY3RpdmVfdXNlcl9jb3VudCIsImRlYWN0aXZhdGVkX3VzZXJfY291bnQiLCJ0b3RhbF91c2VyX2NvdW50IiwiY29tcGxldGVTZXR1cCIsImluY29tcGxldGVTZXR1cCIsImRlZmF1bHRWYWx1ZSIsImJvdGgiLCJkcmFmdCIsIm9uVHJpZ2dlclNldERhdGVSYW5nZSIsIm9uVGFibGVOYXYiLCJyb2xlSWQiLCJpbXBvcnRfYWN0aXZpdHkiLCJ1cGxvYWRfZmlsZSIsImRvd25sb2FkX2Nzdl90ZW1wbGF0ZSIsImRvd25sb2FkX2Nzdl90ZW1wbGF0ZV9kZXNjcmlwdGlvbiIsInZNb2RlbFJhZGlvIiwiaW1wb3J0X2FjdGl2aXkiLCJyZWZfZm9yIiwib25TZWxlY3RFbGVtZW50IiwiaXNzdWVzIiwiY2xvc2VkIiwiYWN0aXZpdHlfY29udGFpbnNfY3JpdGljYWxfZXJyb3JzIiwiYWN0aXZpdGllc193aXRoX2Vycm9yX3dpbGxfYmVfdXBsb2FkZWQiLCJmaWVsZF93aXRoX3dhcm5pbmdfd2lsbF9iZV91cGxvYWRlZCIsImV4aXN0aW5nIiwiX2NvbXBvbmVudF9QdWJsaXNoVW5wdWJsaXNoIiwiX2NvbXBvbmVudF9SYWRpYWxQcm9ncmVzc0JhciIsIl9jb21wb25lbnRfT3JnYW5pc2F0aW9uRWxlbWVudHMiLCJfY29tcG9uZW50X09yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsIiwib3JnX2xhbmciLCJ5b3VyX29yZ2FuaXNhdGlvbiIsIm9yZ19jb3VsZF9ub3RfYmVfcHVibGlzaGVkIiwiZmlsbF9tYW5kYXRvcnlfZmllbGRzIiwicmVjaXBpZW50X2NvdW50cnkiLCJyZWNpcGllbnRfY291bnRyeV9idWRnZXQiLCJidWRnZXRfbGluZSIsImJ1ZGdldF9hbW91bnQiLCJyZWNpcGllbnRfb3JnX2J1ZGdldCIsInJlY2lwaWVudF9vcmciLCJyZWNpcGllbnRfb3JnX2luZGV4IiwibmFycmF0aXZlX2luZGV4IiwiYnVkZ2V0IiwicmVjaXBpZW50X3JlZ2lvbl9idWRnZXQiLCJyZWNpcGllbnRfcmVnaW9uIiwidG90YWxfYnVkZ2V0IiwidG90YWxfYnVkZ2V0X3N0YXR1cyIsImJ1ZGdldF9sYW5nIiwidG90YWxfZXhwZW5kaXR1cmUiLCJleHBlbmRpdHVyZV9hbW91bnQiLCJleHBlbnNlX2xpbmUiLCJtaXNzaW5nX2xhbmciLCJwYXNzd29yZF9yZWNvdmVyeSIsInBhc3N3b3JkX3JlY292ZXJ5X2hlYWRlciIsInlvdXJfZW1haWxfaGFzX2JlZW5fc2VudF93aXRoX2xhYmVsIiwicGFzc3dvcmRfcmVjb3ZlcnlfZGVzY3JpcHRpb24iLCJlbWFpbF9sYWJlbCIsImVtYWlsX3BsYWNlaG9sZGVyIiwic2VuZF9wYXNzd29yZF9yZXNldCIsInJlc2V0X3Bhc3N3b3JkIiwiZW50ZXJfbmV3X3Bhc3N3b3JkIiwibmV3X3Bhc3N3b3JkIiwiZW50ZXJfbmV3X3Bhc3N3b3JkX3BsYWNlaG9sZGVyIiwicmVwZWF0X3Bhc3N3b3JkIiwicmVlbnRlcl9wYXNzd29yZF9wbGFjZWhvbGRlciIsInNldHRpbmdzX2xhbmciLCJkZWZhdWx0X2Zvcl9hbGxfZGF0YV9sYWJlbCIsImRlZmF1bHRfZm9yX2FjdGl2aXR5X2xhYmVsIiwiZGVmYXVsdF9oaWVyYXJjaHkiLCJsaW5rZWRfZGF0YV91cmkiLCJkZWZhdWx0X2NvbGxhYm9yYXRpb25fdHlwZSIsImRlZmF1bHRfZmxvd190eXBlIiwiZGVmYXVsdF9maW5hbmNlX3R5cGUiLCJkZWZhdWx0X3RpZWRfc3RhdHVzIiwiX2NvbXBvbmVudF9TZXR0aW5nUHVibGlzaGluZ0Zvcm0iLCJfY29tcG9uZW50X1NldHRpbmdEZWZhdWx0Rm9ybSIsInNldHRpbmdzX2xhYmVsIiwiYWN0aXZlX190YWIiLCJwdWJsaXNoaW5nX3NldHRpbmdzX2xhYmVsIiwiZGVmYXVsdF92YWx1ZXNfbGFiZWwiLCJvblN1Ym1pdFB1Ymxpc2hpbmciLCJzYXZlX3B1Ymxpc2hpbmdfc2V0dGluZ3MiLCJzYXZlX2RlZmF1bHRfdmFsdWVzIiwicmVnaXN0cnlfaW5mb3JtYXRpb24iLCJpc1ZlcmlmaWNhdGlvblJlcXVlc3RlZCIsInRhZ19fY29ycmVjdCIsInRhZ19faW5jb3JyZWN0IiwiY29ycmVjdF9sYWJlbCIsImluY29ycmVjdF9sYWJlbCIsInZlcmlmeSIsIm9yZ2FuaXNhdGlvbnMiLCJwa2ciLCJ2ZXJzaW9uIiwibGF0ZXN0IiwibG9nZ2VkX2luX2FzIiwic3dpdGNoX2JhY2siLCJfY29tcG9uZW50X0RhdGVSYW5nZVdpZGdldCIsIm1vZGUiLCJ0YWdnYWJsZSIsIm9uVHJpZ2dlclNldERhdGVUeXBlIiwib25EYXRlQ2xlYXJlZCIsImZldGNoaW5nX2RhdGEiLCJhbGxfYWN0aXZpdGllc19jb3VudCIsInVzZXJfbGFuZyIsImFkZF9hX25ldyIsInVzZXJfcm9sZXMiLCJpYXRpX2FkbWluIiwibWFrZV9lbGVtZW50IiwiaW5hY3RpdmUiLCJtYWtlX2NvbmZpcm1hdGlvbiIsInNlYXJjaF9mb3JfdXNlcnMiLCJmaWx0ZXJlZF9ieSIsIm9yZyIsImNsZWFyX2ZpbHRlciIsInVzZXJfbm90X2ZvdW5kIiwiY2hhbmdlX3Bhc3N3b3JkIiwidk1vZGVsRHluYW1pYyIsInlvdXJfaW5mb3JtYXRpb24iLCJjaGFuZ2VfeW91cl9wYXNzd29yZCIsInVzZXJfbmFtZSIsInlvdV9oYXZlbnRfdmVyaWZpZWRfZW1haWxfeWV0IiwiaWZfeW91X2hhdmVudF9yZWNlaXZlZCIsInZlcmlmeV95b3VyX2FjY291bnQiLCJhX3ZlcmlmaWNhdGlvbl9lbWFpbF9oYXNfYmVlbl9zZW50IiwiY2xpY2tfYW5kX2FjdGl2YXRlIiwiZ2V0X3N0YXJ0ZWQiLCJfY29tcG9uZW50X0VtYWlsVmVyaWZpY2F0aW9uIiwiY3JlYXRlX2lhdGlfcHVibGlzaGVyX2hlYWRlciIsImNyZWF0ZV9pYXRpX3B1Ymxpc2hlcl9zdWJoZWFkZXIiLCJvdXRfb2YiLCJlcnJvcl9rZXkiLCJmb3JtX19pbnB1dCIsIm9uRm9jdXMiLCJ3aXRoTW9kaWZpZXJzIiwidnVlX19zZWxlY3QiLCJhbHJlYWR5X2hhdmVfYWNjb3VudCIsInNpZ25faW4iLCJuZXh0X3N0ZXAiLCJyZWwiLCJpYXRpX3N0YW5kYXJkIiwiaWF0aV9zdGFuZGFyZF9kZXNjcmlwdGlvbiIsIm9yZ2FuaXNhdGlvbl9kYXRhX2hlYWRlciIsIm9yZ2FuaXNhdGlvbl9kYXRhX2Rlc2NyaXB0aW9uIiwibGlzdF9pdGVtcyIsImZvdXIiLCJmaXZlIiwiYWN0aXZpdHlfZGF0YV9oZWFkZXIiLCJhY3Rpdml0eV9kYXRhX2Rlc2NyaXB0aW9uIiwic2l4Iiwic2V2ZW4iLCJwdWJsaXNoaW5nX2RhdGFfZWl0aGVyX2hlYWRlciIsInB1Ymxpc2hpbmdfZGF0YV9laXRoZXJfZGVzY3JpcHRpb24iLCJkb3dubG9hZF9wZGZfaGVhZGVyIiwiZG93bmxvYWRfcGRmX2Rlc2NyaXB0aW9uIiwiaWF0aV9zdGFuZGFyZF9yZWZlcmVuY2VfaGVhZGVyIiwiaWF0aV9zdGFuZGFyZF9yZWZlcmVuY2VfZGVzY3JpcHRpb24iLCJwdWJsaXNoaW5nX2NoZWNrbGlzdCIsIm9yZ2FuaXNhdGlvbnNfdXNpbmdfaWF0aV9sYWJlbCIsInJlZ2lzdGVyX2FfcHVibGlzaGVyX2hlYWRlciIsInJlZ2lzdGVyX2FfcHVibGlzaGVyX2Rlc2NyaXB0aW9uIiwicHVibGlzaF95b3VyX29yZ2FuaXNhdGlvbl9oZWFkZXIiLCJwdWJsaXNoX3lvdXJfb3JnYW5pc2F0aW9uX2Rlc2NyaXB0aW9uIiwicHVibGlzaF95b3VyX2FjdGl2aXR5X2hlYWRlciIsInB1Ymxpc2hfeW91cl9hY3Rpdml0eV9kZXNjcmlwdGlvbiIsInVuZGVyc3RhbmRfZnVydGhlcl9kYXRhX2hlYWRlciIsInVuZGVyc3RhbmRfZnVydGhlcl9kYXRhX2Rlc2NyaXB0aW9uIiwicnVuX2F1dG9tYXRpY19jaGVja3NfaGVhZGVyIiwicnVuX2F1dG9tYXRpY19jaGVja3NfZGVzY3JpcHRpb24iLCJwdWJsaXNoX3lvdXJfZGF0YV9oZWFkZXIiLCJwdWJsaXNoX3lvdXJfZGF0YV9kZXNjcmlwdGlvbiIsImFjY2Vzc195b3VyX2RhdGFfaGVhZGVyIiwiYWNjZXNzX3lvdXJfZGF0YV9kZXNjcmlwdGlvbiIsInVwZGF0ZV9hbmRfaW1wcm92ZV9oZWFkZXIiLCJ1cGRhdGVfYW5kX2ltcHJvdmVfZGVzY3JpcHRpb24iLCJpbmZvcm1hdGlvbl9kb2VzbnRfbWF0Y2hfcmVnaXN0cnkiLCJpZl95b3VfYXJlX2FjY291bnRfaG9sZGVyIiwibWFrZV9zdXJlX3lvdXIiLCJvcmdhbmlzYXRpb25faWQiLCJtYXRjaF95b3VyX2lhdGlfcmVnaXN0cnlfaW5mbyIsImZvcl9tb3JlX2RldGFpbHMiLCJzdXBwb3J0Iiwic3VwcG9ydF9kZXNjcmlwdGlvbiIsImlhdGlfcHVibGlzaGVyIiwiYWJvdXQiLCJ1c2VyX21hbnVhbCIsImZvb3RlciIsInBhcnRfb2ZfaWF0aV91bmlmaWVkX2xhYmVsIiwiY29kZV9saWNlbnNlZF91bmRlcl9sYWJlbCIsImRvY3VtZW50YXRpb25fbGljZW5zZWRfdW5kZXJfbGFiZWwiLCJhbnlfcXVlc3Rpb25zX2NvbnRhY3RfbGFiZWwiLCJjb3B5cmlnaHRfbGFiZWwiLCJqb2luX25vdyIsImhvbWUiLCJqb2luX25vd19zZWN0aW9uIiwidG9fYmVnaW5fdGV4dCIsIm5ld190b19pYXRpX2xhYmVsIiwibmV3X3RvX2lhdGlfdGV4dCIsIm15X29yZ2FuaXNhdGlvbl9oYXNfcmVnaXN0ZXJlZF9sYWJlbCIsIm15X29yZ2FuaXNhdGlvbl9oYXNfcmVnaXN0ZXJlZF90ZXh0Iiwibm90X3N1cmVfd2hpY2hfb25lX2xhYmVsIiwiY29udGFjdF9zdXBwb3J0X2xhYmVsIiwic2lnbl9pbl9zZWN0aW9uIiwid2VsY29tZV9iYWNrX2xhYmVsIiwidXBkYXRlZCIsInVzZV9uZXciLCJ1c2VybmFtZV9sYWJlbCIsImVycm9yX2lucHV0IiwidXNlcm5hbWVfcGxhY2Vob2xkZXIiLCJwYXNzd29yZF9sYWJlbCIsInBhc3N3b3JkX3BsYWNlaG9sZGVyIiwiZm9yZ290X3Bhc3N3b3JkX2xhYmVsIiwiX2NvbXBvbmVudF9OYXZEcm9wZG93biIsImFib3V0X2hvdmVyX3RleHQiLCJwdWJsaXNoaW5nX2NoZWNrbGlzdF9ob3Zlcl90ZXh0IiwicmVhZF9tb3JlIiwiaWF0aV9zdGFuZGFyZF9ob3Zlcl90ZXh0Iiwic2VlX2FsbF9kYXRhX2ZpZWxkcyIsInN1cHBvcnRfaG92ZXJfdGV4dCIsImdvX3RvIiwidnVlM19zbW9vdGhfc2Nyb2xsXzEiLCJzdmdfdnVlM18xIiwiV2ViSGVhZGVyX3Z1ZV8xIiwiV2ViRm9vdGVyX3Z1ZV8xIiwiQWRtaW5Gb290ZXJfdnVlXzEiLCJXZWxjb21lUGFnZV92dWVfMSIsIlJlZ2lzdGVyUGFnZV92dWVfMSIsIkFib3V0UGFnZV92dWVfMSIsIlN1cHBvcnRQYWdlX3Z1ZV8xIiwiSWF0aVN0YW5kYXJkX3Z1ZV8xIiwiUHVibGlzaGluZ0NoZWNrbGlzdF92dWVfMSIsIklhdGlSZWdpc3RlclBhZ2VfdnVlXzEiLCJSZXN1bHREZXRhaWxfdnVlXzEiLCJSZXN1bHRMaXN0X3Z1ZV8xIiwiSW5kaWNhdG9yRGV0YWlsX3Z1ZV8xIiwiSW5kaWNhdG9yTGlzdF92dWVfMSIsIlBlcmlvZHNEZXRhaWxfdnVlXzEiLCJQZXJpb2RzTGlzdF92dWVfMSIsIlRyYW5zYWN0aW9uTGlzdF92dWVfMSIsIlRyYW5zYWN0aW9uRGV0YWlsX3Z1ZV8xIiwiRGVzY3JpcHRpb25Gb3JtX3Z1ZV8xIiwiRWxlbWVudHNOb3RlX3Z1ZV8xIiwiQWN0aXZpdHlJbmRleF92dWVfMSIsIkFkbWluSGVhZGVyX3Z1ZV8xIiwiQWN0aXZpdHlEZXRhaWxfdnVlXzEiLCJTaWRlYmFySGVscEJsb2NrX3Z1ZV8xIiwiQWN0aXZpdHlVcGxvYWRfdnVlXzEiLCJBY3Rpdml0eVhsc1VwbG9hZF92dWVfMSIsIkRhc2hib2FyZFBhZ2VfdnVlXzEiLCJJbXBvcnRMaXN0X3Z1ZV8xIiwiWGxzTGlzdF92dWVfMSIsIlNldHRpbmdQYWdlX3Z1ZV8xIiwiQWN0aXZpdHlEZWZhdWx0VmFsdWVfdnVlXzEiLCJSZXNldFBhZ2VfdnVlXzEiLCJQYXNzd29yZFJlY292ZXJ5X3Z1ZV8xIiwiUmVzZXRQYXNzd29yZF92dWVfMSIsIk9yZ2FuaXNhdGlvbkRhdGFfdnVlXzEiLCJPcmdhbmlzYXRpb25MaXN0X3Z1ZV8xIiwiQWRtaW5CYXJfdnVlXzEiLCJVc2VyUHJvZmlsZV92dWVfMSIsIlVzZXJMaXN0aW5nX3Z1ZV8xIiwiQXVkaXRMaXN0aW5nX3Z1ZV8xIiwiU3lzdGVtVmVyc2lvbl92dWVfMSIsInZ1ZTNfYXBleGNoYXJ0c18xIiwiYXBwIiwiY3JlYXRlQXBwIiwidXNlIiwiY29tcG9uZW50IiwibGFzdFNjcm9sbFRvcCIsImFmZml4VHlwZSIsInN0aWNreVNpZGViYXIiLCJwYXJlbnRXcmFwcGVyIiwic3RpY2t5RWxlbWVudCIsImZpcnN0Q2hpbGQiLCJvZmZzZXRIZWlnaHQiLCJzdGlja3lDdXJyZW50VG9wIiwic3RpY2t5Q3VycmVudEJvdHRvbSIsImVsV2lkdGgiLCJvZmZzZXRXaWR0aCIsImVsU2Nyb2xsTGVmdCIsImVsU2Nyb2xsVG9wIiwiZWxTY3JvbGxCb3R0b20iLCJ2aWV3cG9ydEhlaWdodCIsImlubmVySGVpZ2h0IiwiY3VycmVudFdpbmRvd3NTY3JvbGxQb3NpdGlvbiIsInBhZ2VZT2Zmc2V0IiwidGFyZ2V0U2Nyb2xsUG9zaXRpb24iLCJlbFBhcmVudCIsImVsUGFyZW50Qm90dG9tIiwiaXNTY3JvbGxEb3duIiwiaXNTY3JvbGxVcCIsInNjcm9sbERvd25TdGlja3lCb3R0b20iLCJzY3JvbGxEb3duU3RpY2t5VG9wIiwic2Nyb2xsRG93blN0aWNreVRyYW5zbGF0ZSIsInNjcm9sbERvd25GaXhlZFRvcCIsInNjcm9sbERvd25TdGlja3lOb25lIiwic2Nyb2xsRG93blN0aWNreUJvdW5kIiwiaGFuZGxlU2Nyb2xsRG93biIsInNjcm9sbFVwU3RpY2t5VG9wIiwic2Nyb2xsVXBTdGlja3lCb3R0b20iLCJzY3JvbGxVcEZpeGVkVG9wIiwic2Nyb2xsVXBTdGlja3lUcmFuc2xhdGUiLCJzY3JvbGxVcFN0aWNreUJvdW5kIiwiaGFuZGxlU2Nyb2xsVXAiLCJib3JkZXIiLCJkaXJlY3RpdmUiLCJtb3VudGVkIiwiYmluZGluZyIsInVubW91bnRlZCIsInBhcmVudCIsIm1vdW50IiwiZm9ybWF0X2RhdGUiLCJjcnlwdG9fanNfMSIsImVuY3J5cHQiLCJpdiIsImxpYiIsIldvcmRBcnJheSIsInJhbmRvbSIsInNhbHQiLCJpdGVyYXRpb25zIiwiZW5jcnlwdE1ldGhvZExlbmd0aCIsImhhc2hLZXkiLCJQQktERjIiLCJoYXNoZXIiLCJhbGdvIiwiU0hBNTEyIiwia2V5U2l6ZSIsImVuY3J5cHRlZCIsIkFFUyIsIkNCQyIsImVuY3J5cHRlZFN0cmluZyIsImVuYyIsIkJhc2U2NCIsImNpcGhlcnRleHQiLCJvdXRwdXQiLCJIZXgiLCJVdGY4IiwiZGF0YV8xIiwic2VudGVuY2VDYXNlVG9LZWJhYkNhc2UiLCJyZWR1Y2VEb2N1bWVudExpbmsiLCJkb2N1bWVudENvdW50IiwiZG9jdW1lbnRfMSIsInN0ciIsIm1heExlbmd0aCIsInN1YnN0cmluZyIsImNhcGl0YWxpemVkRmlyc3RXb3JkIiwiY29uY2F0ZW5hdGVkV29yZHMiLCJ2dWV4XzEiLCJtYXhpbWl6ZVhscyIsIm11dGF0aW9ucyIsIm11dGF0ZVNlbGVjdGVkQWN0aXZpdGllcyIsInBheWxvYWQiLCJtdXRhdGVDbG9zZVhsc01vZGVsIiwibXV0YXRlQnVsa1B1Ymxpc2hMZW5ndGgiLCJtdXRhdGVDYW5jZWxVcGxvYWQiLCJtdXRhdGVNYXhpbWl6ZVhscyIsIm11dGF0ZVN0YXJ0WGxzRG93bmxvYWQiLCJtdXRhdGVDb21wbGV0ZVhsc0Rvd25sb2FkIiwibXV0YXRlQ2FuY2VsRG93bmxvYWQiLCJtdXRhdGVCdWxrcHVibGlzaEFjdGl2aXRpZXMiLCJtdXRhdGVTdGFydEJ1bGtQdWJsaXNoIiwiYWN0aW9ucyIsImNvbW1pdCIsInVwZGF0ZUNsb3NlWGxzTW9kZWwiLCJ1cGRhdGVCdWxrUHVibGlzaExlbmd0aCIsInVwZGF0ZUNhbmNlbFVwbG9hZCIsInVwZGF0ZU1heGltaXplWGxzIiwidXBkYXRlU3RhcnRYbHNEb3dubG9hZCIsInVwZGF0ZUNvbXBsZXRlWGxzRG93bmxvYWQiLCJ1cGRhdGVDYW5jZWxEb3dubG9hZCIsInVwZGF0ZUJ1bGtwdWJsaXNoQWN0aXZpdGllcyIsInVwZGF0ZVN0YXJ0QnVsa1B1Ymxpc2giLCJhY3Rpdml0eUxpc3RTdG9yZSIsImNyZWF0ZVN0b3JlIiwiYnVsa3B1Ymxpc2hMZW5ndGgiLCJtdXRhdGVVblB1Ymxpc2hlZCIsIm11dGF0ZVNob3dQdWJsaXNoZWQiLCJtdXRhdGVQdWJsaXNoRXJyb3JzIiwibXV0YXRlSXNMb2FkaW5nIiwibXV0YXRlQnVsa3B1Ymxpc2hMZW5ndGgiLCJ1cGRhdGVVblB1Ymxpc2hlZCIsInVwZGF0ZVNob3dQdWJsaXNoZWQiLCJ1cGRhdGVQdWJsaXNoRXJyb3JzIiwidXBkYXRlSXNMb2FkaW5nIiwidXBkYXRlQnVsa3B1Ymxpc2hMZW5ndGgiLCJhY3Rpdml0eURldGFpbFN0b3JlIiwic3RhdGVfMSIsIm11dGF0aW9uXzEiLCJNdXRhdGlvblR5cGVzIiwiVVBEQVRFX1BVQkxJU0hFUl9JTkZPIiwiVVBEQVRFX1BVQkxJU0hJTkdfRVJST1IiLCJVUERBVEVfREVGQVVMVF9FUlJPUiIsIlVQREFURV9JU19MT0FESU5HIiwiSVNfTE9BRElORyIsIlVQREFURV9CVUxLUFVCTElTSF9MRU5HVEgiLCJCVUxLUFVCTElTSF9MRU5HVEgiLCJSZXN1bHRfdnVlXzEiLCJJYXRpSWRlbnRpZmllcl92dWVfMSIsIk90aGVySWRlbnRpZmllcl92dWVfMSIsIlRpdGxlX3Z1ZV8xIiwiRGVzY3JpcHRpb25fdnVlXzEiLCJBY3Rpdml0eURhdGVfdnVlXzEiLCJDb250YWN0SW5mb192dWVfMSIsIlBhcnRpY2lwYXRpbmdPcmdfdnVlXzEiLCJSZWNpcGllbnRDb3VudHJ5X3Z1ZV8xIiwiUmVjaXBpZW50UmVnaW9uX3Z1ZV8xIiwiVHJhbnNhY3Rpb25zX3Z1ZV8xIiwiTG9jYXRpb25fdnVlXzEiLCJTZWN0b3JfdnVlXzEiLCJMZWdhY3lEYXRhX3Z1ZV8xIiwiQ29uZGl0aW9uc192dWVfMSIsIlJlbGF0ZWRBY3Rpdml0eV92dWVfMSIsIlBvbGljeU1hcmtlcl92dWVfMSIsIlRhZ192dWVfMSIsIkh1bWFuaXRhcmlhblNjb3BlX3Z1ZV8xIiwiUGxhbm5lZERpc2J1cnNlbWVudF92dWVfMSIsIlJlcG9ydGluZ09yZ2FuaXphdGlvbl92dWVfMSIsIk1lYXN1cmVfdnVlXzEiLCJJbmRpY2F0b3JBc2NlbmRpbmdfdnVlXzEiLCJBZ2dyZWdhdGlvblN0YXR1c192dWVfMSIsIlJlZmVyZW5jZV92dWVfMSIsIkRvY3VtZW50TGlua192dWVfMSIsIkJhc2VsaW5lX3Z1ZV8xIiwiUGVyaW9kX3Z1ZV8xIiwiVGFyZ2V0VmFsdWVfdnVlXzEiLCJBY3R1YWxWYWx1ZV92dWVfMSIsIlRpdGxlRGVzY3JpcHRpb25fdnVlXzEiLCJSZXN1bHRUeXBlX3Z1ZV8xIiwiQWlkVHlwZV92dWVfMSIsIlRyYW5zYWN0aW9uVHlwZV92dWVfMSIsIlRyYW5zYWN0aW9uRGF0ZV92dWVfMSIsIlZhbHVlX3Z1ZV8xIiwiUHJvdmlkZXJPcmdhbml6YXRpb25fdnVlXzEiLCJSZWNlaXZlck9yZ2FuaXphdGlvbl92dWVfMSIsIkRpc2J1cnNlbWVudENoYW5uZWxfdnVlXzEiLCJGbG93VHlwZV92dWVfMSIsIkZpbmFuY2VUeXBlX3Z1ZV8xIiwiVGllZFN0YXR1c192dWVfMSIsIlJlcG9ydGluZ09yZ2FuaXNhdGlvbl92dWVfMSIsIlRvdGFsQnVkZ2V0X3Z1ZV8xIiwiUmVwb3J0aW5nT3JnQnVkZ2V0X3Z1ZV8xIiwiUmVwb3J0aW5nUmVnaW9uQnVkZ2V0X3Z1ZV8xIiwiUmVjaXBpZW50Q291bnRyeUJ1ZGdldF92dWVfMSIsIlRvdGFsRXhwZW5kaXR1cmVfdnVlXzEiLCJTaWduSW4iLCJKb2luTm93IiwicGFnZUNvbnRlbnQiLCJ0b2dnbGVQYWdlIiwiX2NyZWF0ZUVsZW1lbnRCbG9jayIsIl9jcmVhdGVFbGVtZW50Vk5vZGUiLCJfdG9EaXNwbGF5U3RyaW5nIiwid2hhdF9pc19pYXRpX3B1Ymxpc2hlcl9oZWFkZXIiLCJ3aGF0X2lzX2lhdGlfcHVibGlzaGVyX2Rlc2NyaXB0aW9uIiwidXNlX2lhdGlfcHVibGlzaGVyX3RvX2hlYWRlciIsInVzZV9pYXRpX3B1Ymxpc2hlcl90b19kZXNjcmlwdGlvbiIsImRldmVsb3BtZW50X29mX2lhdGlfaGVhZGVyIiwiZGV2ZWxvcG1lbnRfb2ZfaWF0aV9kZXNjcmlwdGlvbiIsImlhdGlfcHVibGlzaGluZ190b29sX2hlYWRlciIsImlhdGlfcHVibGlzaGluZ190b29sX3NlY3Rpb24iLCJ3ZWxjb21lX3RleHQiLCJoYXZlbnRfcmVnaXN0ZXJlZF9sYWJlbCIsImFscmVhZHlfaGF2ZV9hY2NvdW50X2xhYmVsIiwiX2NyZWF0ZUJsb2NrIiwiX2NvbXBvbmVudF9TaWduSW4iLCJfY29tcG9uZW50X0pvaW5Ob3ciXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUNkLzBDLEdBQUcsRUFBRSxDQURTO0VBRWQsU0FBTztBQUZPLENBQWxCO0FBSUEsSUFBSWcxQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJeUgsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHLENBQUMsTUFBRCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRyxDQUFDLE1BQUQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUcsQ0FB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Q0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJeUgsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMs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QUhRLENBQWxCO0FBS0EsSUFBSWk4QyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUcsQ0FBQyxXQUFELENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHLENBQUMsV0FBRCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRyxDQUFDLFdBQUQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUcsQ0FBQyxXQUFELENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHLENBQUMsV0FBRCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRyxDQUFDLFdBQUQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUc7RUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJQyxXQUFXLEdBQUcsQ0FBQyxXQUFELENBQWxCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHO0VBQUUsU0FBTztBQUFULENBQWxCO0FBQ0EsSUFBSXlILFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFsQjtBQUNBLElBQUlDLFdBQVcsR0FBRztFQUFFLFNBQU87QUFBVCxDQUFs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QUssVUFBVSxVQUFVLEtBQUssS0FBSyxVQUFVLFVBQVUsV0FBVyxLQUFLLEtBQUssS0FBSyxXQUFXLFdBQVcsS0FBSyxLQUFLLEtBQUssV0FBVyxXQUFXLEtBQUssS0FBSyxVQUFVLEtBQUssS0FBSyxLQUFLLFVBQVUsS0FBSyxLQUFLLEtBQUssVUFBVSxXQUFXLEtBQUssS0FBSyxXQUFXLFVBQVUsVUFBVSxXQUFXLEtBQUssS0FBSyxXQUFXLFdBQVcsVUFBVSxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsVUFBVSxXQUFXLFdBQVcsV0FBVyxXQUFXLEtBQUssS0FBSyxLQUFLLFVBQVUsS0FBSyxLQUFLLEtBQUssVUFBVSxVQUFVLFdBQVcsS0FBSyxLQUFLLEtBQUssVUFBVSxLQUFLLEtBQUssS0FBSyxVQUFVLFdBQVcsS0FBSyxLQUFLLFdBQVcsV0FBVyxXQUFXLEtBQUssS0FBSyxXQUFXLEtBQUssS0FBSyxLQUFLLFVBQVUsS0FBSyxLQUFLLEtBQUssV0FBVyxXQUFXLEtBQUssS0FBSyxVQUFVLEtBQUssS0FBSyxXQUFXLFdBQVcsS0FBSyxLQUFLLFdBQVcsV0FBVyxXQUFXLFdBQVcsS0FBSyxLQUFLLFdBQVcsS0FBSyxLQUFLLFdBQVcsVUFBVSxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxVQUFVLFVBQVUsV0FBVyxLQUFLLEtBQUssS0FBSyxVQUFVLEtBQUssS0FBSyxLQUFLLFVBQVUsV0FBVyxLQUFLLEtBQUssV0FBVyxXQUFXLFdBQVcsS0FBSyxLQUFLLFdBQVcsS0FBSyxLQUFLLEtBQUssVUFBVSxLQUFLLEtBQUssS0FBSyxXQUFXLFdBQVcsS0FBSyxLQUFLLFVBQVUsS0FBSyxLQUFLLFdBQVcsV0FBVyxLQUFLLEtBQUssV0FBVyxXQUFXLFdBQVcsV0FBVyxLQUFLLEtBQUssV0FBVyxLQUFLLE1BQU0sV0FBVyxVQUFVLFdBQVcsS0FBSyxNQUFNLFdBQVcsS0FBSyxLQUFLLFVBQVUsS0FBSyxLQUFLLFdB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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7QUNuU0EsaUVBQWUsMmVBQTJlOzs7Ozs7Ozs7Ozs7Ozs7QUNBMWYs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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBWjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBeUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQU47Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQWQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVc7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVE7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUY7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVo7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQTBCOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBYzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBaEI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVE7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUc7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQW5COzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSDs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBOEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQXBDOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRDs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBakI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUY7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQWtCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FNOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FmOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FGOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FpQjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBZDs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBYzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBbEI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUk7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVg7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQWlCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0ExQjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSDs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBYTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBVDs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBWDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRDs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBZTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBVDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBVjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBVDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBUzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBUjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSDs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSDs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBUjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSDs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBUTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBUjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSDs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBWTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRDs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBVDs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBVjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBUDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBUDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBUDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBZTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBTDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBVjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBSzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBVDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBbEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVA7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQU07Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUg7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQVY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUw7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQU87Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQU87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQWxCOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FTOzs7Ozs7Ozs7Ozs7Ozs7OztBQ0FmOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0F6RTs7Ozs7Ozs7Ozs7Ozs7OztBQ0FFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBNU47QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7OztBQzFLQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9BY3Rpdml0eURvd25sb2FkLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQWRtaW5IZWFkZXIudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9CcmVhZENydW1iLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnVsa1B1Ymxpc2hpbmdFcnJvclBvcHVwLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnVsa3B1Ymxpc2hXaXRoWGxzLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRGF0ZVJhbmdlV2lkZ2V0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRGVzY3JpcHRpb25Gb3JtLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRXJyb3JNZXNzYWdlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvRXJyb3JQb3BVcC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0hvdmVyVGV4dC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0xvYWRlci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL011bHRpU2VsZWN0V2l0aFNlYXJjaC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL05hdkRyb3Bkb3duLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvUG9wdXBNb2RhbC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1JhZGlhbFByb2dyZXNzQmFyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvVGFibGVMb2FkZXJDb21wb25lbnQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9UYWJsZVBhZ2luYXRpb24udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9YbHNMaXN0RXJyb3IudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9YbHNMb2FkZXIudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9YbHNVcGxvYWRJbmRpY2F0b3IudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9idXR0b25zL0RlbGV0ZUJ1dHRvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL2J1dHRvbnMvTGluay52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL2J1dHRvbnMvUHVibGlzaEJ1dHRvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL2J1dHRvbnMvVW5QdWJsaXNoQnV0dG9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvRGVsZXRlQWN0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvRXJyb3JMaXN0cy52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL0hhdmVOb3RBZGRlZFlldC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL09yZ2FuaXphdGlvblB1Ymxpc2hVbnB1Ymxpc2hCdXR0b24udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9QYWdlVGl0bGUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1N0aWNreUVycm9ycy52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1VwbG9hZGVkRXJyb3JzLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc3RhdHVzL0VsZW1lbnRTdGF0dXMudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zdGF0dXMvUHJldmlvdXNseVB1Ymxpc2hlZC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9BY3Rpdml0eURlZmF1bHRWYWx1ZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9BY3Rpdml0eURldGFpbC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9BY3Rpdml0eUluZGV4LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0NyZWF0ZU1vZGFsLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9FcnJvckl0ZW0udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL1B1Ymxpc2hTZWxlY3RlZC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvUmVmcmVzaFRvYXN0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9WYWxpZGF0aW9uRXJyb3JzLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0FjdGl2aXR5RGF0ZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9Db25kaXRpb25zLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0NvbnRhY3RJbmZvLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0Rlc2NyaXB0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0h1bWFuaXRhcmlhblNjb3BlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0lhdGlJZGVudGlmaWVyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0xlZ2FjeURhdGEudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvTG9jYXRpb24udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvT3RoZXJJZGVudGlmaWVyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1BhcnRpY2lwYXRpbmdPcmcudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUGxhbm5lZERpc2J1cnNlbWVudC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9Qb2xpY3lNYXJrZXIudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVjaXBpZW50Q291bnRyeS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9SZWNpcGllbnRSZWdpb24udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVsYXRlZEFjdGl2aXR5LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1JlcG9ydGluZ09yZ2FuaXphdGlvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9SZXN1bHQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvU2VjdG9yLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1RhZy52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9UaXRsZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9UcmFuc2FjdGlvbnMudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9JbmRpY2F0b3JEZXRhaWwudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9JbmRpY2F0b3JMaXN0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvQWdncmVnYXRpb25TdGF0dXMudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9CYXNlbGluZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0Rlc2NyaXB0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvRG9jdW1lbnRMaW5rLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvSW5kaWNhdG9yQXNjZW5kaW5nLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvTWVhc3VyZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL1BlcmlvZC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL1JlZmVyZW5jZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL1RpdGxlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0FjdGl2aXRpZXNFbGVtZW50cy52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9BY3Rpdml0eUVsZW1lbnQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvQWRkQWN0aXZpdHlCdXR0b24udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvRG93bmxvYWRBY3Rpdml0eUJ1dHRvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9FbGVtZW50c05vdGUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvRW1wdHlBY3Rpdml0eS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9QYWdlVGl0bGUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvU2lkZWJhckhlbHBCbG9jay52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9UYWJsZUxheW91dC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wZXJpb2RzL1BlcmlvZHNEZXRhaWwudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGVyaW9kcy9QZXJpb2RzTGlzdC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wZXJpb2RzL2VsZW1lbnRzL0FjdHVhbFZhbHVlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BlcmlvZHMvZWxlbWVudHMvVGFyZ2V0VmFsdWUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9SZXN1bHREZXRhaWwudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9SZXN1bHRFbGVtZW50LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvUmVzdWx0TGlzdC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL0RvY3VtZW50TGluay52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL0luZGljYXRvci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL1JlZmVyZW5jZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL1Jlc3VsdFR5cGUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9lbGVtZW50cy9UaXRsZURlc2NyaXB0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9UcmFuc2FjdGlvbkRldGFpbC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvVHJhbnNhY3Rpb25FbGVtZW50LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9UcmFuc2FjdGlvbkxpc3QudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL0FpZFR5cGUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL0Rlc2NyaXB0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9EaXNidXJzZW1lbnRDaGFubmVsLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9GaW5hbmNlVHlwZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvRmxvd1R5cGUudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1Byb3ZpZGVyT3JnYW5pemF0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9SZWNlaXZlck9yZ2FuaXphdGlvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvUmVjaXBpZW50Q291bnRyeS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvUmVjaXBpZW50UmVnaW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9TZWN0b3IudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1RpZWRTdGF0dXMudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1RyYW5zYWN0aW9uRGF0ZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvVHJhbnNhY3Rpb25UeXBlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9WYWx1ZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hdWRpdC9BdWRpdExpc3RpbmcudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvZGFzaGJvYXJkL0Rhc2hib2FyZEdyYXBoLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2Rhc2hib2FyZC9EYXNoYm9hcmRMaXN0U2VjdGlvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9kYXNoYm9hcmQvRGFzaGJvYXJkUGFnZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9kYXNoYm9hcmQvRGFzaGJvYXJkU3RhdHNTZWN0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9BY3Rpdml0eVVwbG9hZC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvQWN0aXZpdHlYbHNVcGxvYWQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0ltcG9ydExpc3QudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0ltcG9ydFBsYWNlaG9sZGVyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9MaXN0RWxlbWVudC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvWGxzTGlzdC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vT3JnYW5pc2F0aW9uRGF0YS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vT3JnYW5pc2F0aW9uRWxlbWVudHMudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL09yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9Eb2N1bWVudExpbmsudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1JlY2lwaWVudENvdW50cnlCdWRnZXQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1JlcG9ydGluZ09yZ0J1ZGdldC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvUmVwb3J0aW5nT3JnYW5pc2F0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9SZXBvcnRpbmdSZWdpb25CdWRnZXQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1RvdGFsQnVkZ2V0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9Ub3RhbEV4cGVuZGl0dXJlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3Jlc2V0L1Bhc3N3b3JkUmVjb3ZlcnkudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvcmVzZXQvUmVzZXRQYWdlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3Jlc2V0L1Jlc2V0UGFzc3dvcmQudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc2V0dGluZy9TZXR0aW5nRGVmYXVsdEZvcm0udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc2V0dGluZy9TZXR0aW5nUGFnZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zZXR0aW5nL1NldHRpbmdQdWJsaXNoaW5nRm9ybS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zdXBlcmFkbWluL09yZ2FuaXNhdGlvbkxpc3QudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9TeXN0ZW1WZXJzaW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3N1cGVyYWRtaW4vY29tcG9uZW50cy9BZG1pbkJhci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zdXBlcmFkbWluL2NvbXBvbmVudHMvVGFibGVMaXN0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3VzZXIvVXNlckxpc3RpbmcudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvdXNlci9Vc2VyUHJvZmlsZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvRW1haWxWZXJpZmljYXRpb24udnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL0lhdGlSZWdpc3RlclBhZ2UudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL0lhdGlTdGFuZGFyZC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvUHVibGlzaGluZ0NoZWNrbGlzdC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvUmVnaXN0ZXJQYWdlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9TdXBwb3J0UGFnZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvQWRtaW5Gb290ZXIudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL0pvaW5Ob3cudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL1NpZ25Jbi52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvV2ViRm9vdGVyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9XZWJIZWFkZXIudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvYXBwLnRzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9zYWJsZS9jb3JlRWxlbWVudHMudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb3NhYmxlL2RhdGVGb3JtYXQudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb3NhYmxlL2VuY3J5cHRpb24udHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb3NhYmxlL3RpdGxlLnRzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9zYWJsZS91dGlscy50cyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3N0b3JlL2FjdGl2aXRpZXMvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9zdG9yZS9hY3Rpdml0aWVzL3Nob3cudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9zdG9yZS9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3N0b3JlL3NldHRpbmcvYWN0aW9ucy50cyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3N0b3JlL3NldHRpbmcvbXV0YXRpb24udHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9zdG9yZS9zZXR0aW5nL3N0YXRlLnRzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvSW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0luZGV4LnRzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGVyaW9kcy9lbGVtZW50cy9JbmRleC50cyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvZWxlbWVudHMvSW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvSW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvSW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvQWJvdXRQYWdlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9XZWxjb21lUGFnZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1NoaW1tZXJMb2FkaW5nLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc3Bpbm5lckxvYWRlci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL011bHRpU2VsZWN0V2l0aFNlYXJjaC52dWU/MjJjZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvWGxzTGlzdEVycm9yLnZ1ZT84ZjNiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zcGlubmVyTG9hZGVyLnZ1ZT9jODA4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvVGFibGVMYXlvdXQudnVlPzI0ZTkiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvTGlzdEVsZW1lbnQudnVlPzk3OGEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvWGxzTGlzdC52dWU/NmUwMyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3N1cGVyYWRtaW4vY29tcG9uZW50cy9UYWJsZUxpc3QudnVlPzhhN2MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy91c2VyL1VzZXJMaXN0aW5nLnZ1ZT80ODhkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9BZG1pbkhlYWRlci52dWU/YjljZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnVsa3B1Ymxpc2hXaXRoWGxzLnZ1ZT9kNTk4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9FcnJvck1lc3NhZ2UudnVlPzdjZTgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0hvdmVyVGV4dC52dWU/NzgzYSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvTG9hZGVyLnZ1ZT81OTM4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZT8xZjA4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9TaGltbWVyTG9hZGluZy52dWU/YjdkYSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvRXJyb3JMaXN0cy52dWU/NjMxMSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvUHJvZ3Jlc3NMb2FkZXIudnVlPzlkZTgiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1N0aWNreUVycm9ycy52dWU/ZjM1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvVXBsb2FkZWRFcnJvcnMudnVlPzE2MTMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9BY3Rpdml0eUluZGV4LnZ1ZT81ZGI2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvQ3JlYXRlTW9kYWwudnVlPzhkZjciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvRXJyb3JJdGVtLnZ1ZT81N2FkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvQWN0aXZpdGllc0VsZW1lbnRzLnZ1ZT80NTExIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvRG93bmxvYWRBY3Rpdml0eUJ1dHRvbi52dWU/N2Q3ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2Rhc2hib2FyZC9EYXNoYm9hcmRMaXN0U2VjdGlvbi52dWU/YjRjYSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9JbXBvcnRMaXN0LnZ1ZT8xOTA3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL09yZ2FuaXNhdGlvbkRhdGEudnVlPzVmYTUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9yZXNldC9SZXNldFBhZ2UudnVlPzJkZWIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvSWF0aVJlZ2lzdGVyUGFnZS52dWU/OGIwYSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9SZWdpc3RlclBhZ2UudnVlPzExNDciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvU2lnbkluLnZ1ZT8yNzBlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9hcHAuc2Nzcz83YWRjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy93ZWJwb3J0YWwtYXBwLnNjc3M/ZTM3ZCIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS8gc3luYyBeXFwuXFwvLiokIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9hY3Rpdml0eV9kYXRlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvYWN0aXZpdHlfc2NvcGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9hY3Rpdml0eV9zdGF0dXMuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9idWRnZXQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9idWlsZGluZy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2NhcGl0YWxfc3BlbmQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9jb2xsYWJvcmF0aW9uX3R5cGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9jb25kaXRpb25zLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvY29udGFjdF9pbmZvLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvY291bnRyeV9idWRnZXRfaXRlbXMuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9jcnMtYWRkLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvZGVmYXVsdF9haWRfdHlwZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2RlZmF1bHRfZmluYW5jZV90eXBlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvZGVmYXVsdF9mbG93X3R5cGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9kZXNjcmlwdGlvbi5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2RvY3VtZW50X2xpbmsuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9odW1hbml0YXJpYW5fc2NvcGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9pYXRpX2lkZW50aWZpZXIuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9pbmRpY2F0b3Iuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9sZWdhY3lfZGF0YS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2xvY2F0aW9uLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvb3RoZXJfaWRlbnRpZmllci5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3BhcnRpY2lwYXRpbmdfb3JnLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvcGVyaW9kLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvcGxhbm5lZF9kaXNidXJzZW1lbnQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9wb2xpY3lfbWFya2VyLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvcmVjaXBpZW50X2NvdW50cnkuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9yZWNpcGllbnRfcmVnaW9uLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvcmVsYXRlZF9hY3Rpdml0eS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3JlcG9ydGluZ19vcmcuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9yZXN1bHQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9yZXN1bHRzLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvc2VjdG9yLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvdGFnLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvdGl0bGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy90cmFuc2FjdGlvbnMuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hZGQtbW9yZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FkZC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FsZXJ0LW91dGxpbmUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hbGVydC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FsaWduLWNlbnRlci5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FsaWduLXJpZ2h0LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYXBwcm92ZWQtY2xvdWQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hcnJvdy1kb3duLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYXJyb3ctbGVmdC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Fycm93LXJpZ2h0LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYXJyb3ctc2hvcnQtbGVmdC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FzY2VuZGluZy1hcnJvdy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2JpbGwuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9ib3guc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9idWRnZXQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9idWlsZGluZy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2NhbmNlbC1jbG91ZC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2NhbmNlbC1jcm9zcy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2NoZWNrLWNpcmNsZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2NoZWNrYm94LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY2hlY2tlZC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2NoZXZyb24uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jaXJjbGUtcmVkLWNyb3NzLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY2xvc2Uuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jb3B5cmlnaHQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jb3JlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY3Jvc3MtaWNvbi5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Nyb3NzLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZGVmYXVsdC0xLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZGVmYXVsdC0yLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZGVsZXRlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZGVzY2VuZGluZy1hcnJvdy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2RvY3VtZW50LXdyaXRlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZG91YmxlLXRpY2suc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kb3dubG9hZC1jb2RlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZG93bmxvYWQtZmlsZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Rvd25sb2FkLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZHJvcGRvd24tYXJyb3cuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9lZGl0LWFjdGlvbi5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2VkaXQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9leGNsYW1hdGlvbi13YXJuaW5nLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZXhwb3J0LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZXh0ZXJuYWwuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9leWUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9mb2xkZXIuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9mb290ZXItbG9nby5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Z1bm5lbC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2dyb3VwLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvaGVhZGVyLWxvZ28uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9oZWFkcGhvbmUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9oZWxwLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvaGlkZS1wYXNzd29yZC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2hpc3Rvcnkuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9pYy12ZXJpZmljYXRpb24uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9pbmRpY2F0b3ItaWNvbi5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2tleS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2xlZnQtYXJyb3cuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9sb2dvLXdoaXRlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvbG9nby5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2xvZ291dC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL21hZ25pZnlpbmctZ2xhc3Muc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9tYWlsLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvbWluaW1pemUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9tb29uLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvbm90ZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9idWlsZGluZy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9kZXNjcmlwdGlvbi5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9kb2N1bWVudF9saW5rLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL25hbWUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvb3JnX2lkZW50aWZpZXIuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvb3JnYW5pc2F0aW9uX2lkZW50aWZpZXIuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvb3JnYW5pemF0aW9uX2lkZW50aWZpZXIuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvcmVjaXBpZW50X2NvdW50cnlfYnVkZ2V0LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3JlY2lwaWVudF9vcmdfYnVkZ2V0LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3JlY2lwaWVudF9yZWdpb25fYnVkZ2V0LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3JlcG9ydGluZ19vcmcuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvcmVwb3J0aW5nX29yZ2FuaXNhdGlvbi5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy90aXRsZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy90b3RhbF9idWRnZXQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvdG90YWxfZXhwZW5kaXR1cmUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9wYW5lbC1zZWFyY2guc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9wZXJpb2QtaWNvbi5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3BsdXMtb3V0bGluZWQuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9wbHVzLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcHVibGlzaC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3B3LWxvY2suc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9xdWVzdGlvbi1tYXJrLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcmVkLWNyb3NzLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcmVkLWRvdC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3JlZG8uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9yZXN1bHQtaWNvbi5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3JpZ2h0LWFycm93LnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvc2VhcmNoLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvc2V0dGluZy5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3NoaWVsZC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3NtaWxlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvc29ydC1hc2NlbmRpbmcuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9zb3J0LWRlc2NlbmRpbmcuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9zb3J0LWljb24uc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9zdGFyLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvdGljay1vdXRsaW5lLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvdGljay5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3RpY2tlZC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3RpbWVzLWNpcmNsZS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3R3aXR0ZXIuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy91cC1hcnJvdy1vdXRsaW5lLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvdXBsb2FkLWZpbGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy91c2VyLXByb2ZpbGUuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy91c2VyLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvd2FybmluZy1hY3Rpdml0eS5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3dhcm5pbmctZmlsbC5zdmciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3dhcm5pbmcuc3ZnIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy95b3V0dWJlLnN2ZyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvTXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZ1ZT85NzA4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9YbHNMaXN0RXJyb3IudnVlPzViOTciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NwaW5uZXJMb2FkZXIudnVlPzNjM2QiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9UYWJsZUxheW91dC52dWU/MDJjZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9MaXN0RWxlbWVudC52dWU/YWJjZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9YbHNMaXN0LnZ1ZT81YjQ5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9jb21wb25lbnRzL1RhYmxlTGlzdC52dWU/ZjI1ZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3VzZXIvVXNlckxpc3RpbmcudnVlP2Y1NzYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0FkbWluSGVhZGVyLnZ1ZT9mNmU5Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9CdWxrcHVibGlzaFdpdGhYbHMudnVlPzc5MjYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0Vycm9yTWVzc2FnZS52dWU/ODg5OCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZT9iNzdmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Mb2FkZXIudnVlPzY4NzQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1BvcHVwTW9kYWwudnVlP2ZkODYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1NoaW1tZXJMb2FkaW5nLnZ1ZT9iNGJjIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9FcnJvckxpc3RzLnZ1ZT9jZTk4Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWU/NmExNyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvU3RpY2t5RXJyb3JzLnZ1ZT81ZDIxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9VcGxvYWRlZEVycm9ycy52dWU/YjYxZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5SW5kZXgudnVlP2UzZTciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9DcmVhdGVNb2RhbC52dWU/MmU4ZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9FcnJvckl0ZW0udnVlP2Q2N2QiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9BY3Rpdml0aWVzRWxlbWVudHMudnVlPzc3MzciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9Eb3dubG9hZEFjdGl2aXR5QnV0dG9uLnZ1ZT9mZWFkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvZGFzaGJvYXJkL0Rhc2hib2FyZExpc3RTZWN0aW9uLnZ1ZT9jNGZhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0ltcG9ydExpc3QudnVlPzZjZDQiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vT3JnYW5pc2F0aW9uRGF0YS52dWU/ODFkNSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3Jlc2V0L1Jlc2V0UGFnZS52dWU/MGVhYiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9JYXRpUmVnaXN0ZXJQYWdlLnZ1ZT9kNjBiIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1JlZ2lzdGVyUGFnZS52dWU/NjliMSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9TaWduSW4udnVlP2QzODAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0FjdGl2aXR5RG93bmxvYWQudnVlPzRmNjkiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0FkbWluSGVhZGVyLnZ1ZT8zYzJkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9CcmVhZENydW1iLnZ1ZT9hYTFlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9CdWxrUHVibGlzaGluZ0Vycm9yUG9wdXAudnVlP2FkYjMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0J1bGtwdWJsaXNoV2l0aFhscy52dWU/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/OTBkNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9FbWFpbFZlcmlmaWNhdGlvbi52dWU/NWExNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9JYXRpUmVnaXN0ZXJQYWdlLnZ1ZT83Y2IwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL0lhdGlTdGFuZGFyZC52dWU/MDZhNCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9QdWJsaXNoaW5nQ2hlY2tsaXN0LnZ1ZT9mNjNmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1JlZ2lzdGVyUGFnZS52dWU/OTg2MyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9TdXBwb3J0UGFnZS52dWU/Y2ZkYyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9BZG1pbkZvb3Rlci52dWU/Yjg3YiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9Kb2luTm93LnZ1ZT82NjAxIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL1NpZ25Jbi52dWU/NjNkMyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9XZWJGb290ZXIudnVlPzZkZWIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvV2ViSGVhZGVyLnZ1ZT8wMmY2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL0Fib3V0UGFnZS52dWU/ZDYzYyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9XZWxjb21lUGFnZS52dWU/YzY2MiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvIHN5bmMgXlxcLlxcLy4qJCIsIndlYnBhY2s6Ly8vaWdub3JlZHwvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy9jcnlwdG8tanN8Y3J5cHRvIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgc3Bpbm5lckxvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9zcGlubmVyTG9hZGVyLnZ1ZVwiKSk7XG52YXIgUG9wdXBNb2RhbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZVwiKSk7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIGluZGV4XzEgPSByZXF1aXJlKFwiU3RvcmUvYWN0aXZpdGllcy9pbmRleFwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdBY3Rpdml0eURvd25sb2FkJyxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgc3RvcmUgPSAoMCwgaW5kZXhfMS51c2VTdG9yZSkoKTtcbiAgICAgICAgdmFyIHNob3dSZXRyeURvd25sb2FkTW9kZWwgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgaXNMb2FkaW5nID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHN1cHBvcnRCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbGF1bmNoZXInKTtcbiAgICAgICAgICAgIGlmIChzdXBwb3J0QnV0dG9uICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgc3VwcG9ydEJ1dHRvbi5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRleSgtNTBweCknO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGRvd25sb2FkRmlsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVDb21wbGV0ZVhsc0Rvd25sb2FkJywgdHJ1ZSk7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlQ2FuY2VsRG93bmxvYWQnLCB0cnVlKTtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTdGFydFhsc0Rvd25sb2FkJywgZmFsc2UpO1xuICAgICAgICAgICAgdmFyIGFwaVVybCA9IFwiXCIuY29uY2F0KGRvd25sb2FkQXBpVXJsLnZhbHVlLnNwbGl0KClbMF0uc3BsaXQoJy8nKVszXSwgXCIvXCIpLmNvbmNhdChkb3dubG9hZEFwaVVybC52YWx1ZS5zcGxpdCgpWzBdLnNwbGl0KCcvJylbNF0pO1xuICAgICAgICAgICAgKDAsIGF4aW9zXzEuZGVmYXVsdCkoe1xuICAgICAgICAgICAgICAgIG1ldGhvZDogJ2dldCcsXG4gICAgICAgICAgICAgICAgdXJsOiBhcGlVcmwsXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYicsXG4gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgZmlsZU5hbWUgPSByZXMuaGVhZGVyc1snY29udGVudC1kaXNwb3NpdGlvbiddLnNwbGl0KCdmaWxlbmFtZT0nKVsxXTtcbiAgICAgICAgICAgICAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFtyZXMuZGF0YV0sIHt9KTtcbiAgICAgICAgICAgICAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgICAgICBsaW5rLmhyZWYgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBmaWxlTmFtZSk7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcbiAgICAgICAgICAgICAgICBsaW5rLmNsaWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHJldHJ5RG93bmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB4bHNEb3dubG9hZFN0YXR1cy52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgaXNMb2FkaW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTdGFydFhsc0Rvd25sb2FkJywgdHJ1ZSk7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlQ2FuY2VsRG93bmxvYWQnLCBmYWxzZSk7XG4gICAgICAgICAgICBzaG93UmV0cnlEb3dubG9hZE1vZGVsLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB2YXIgYXBpVXJsID0gJ2FjdGl2aXRpZXMvcmV0cnkteGxzLWRvd25sb2FkJztcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoYXBpVXJsKS5maW5hbGx5KGZ1bmN0aW9uICgpIHsgcmV0dXJuIChpc0xvYWRpbmcudmFsdWUgPSBmYWxzZSk7IH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgY2FuY2VsRG93bmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB4bHNEb3dubG9hZFN0YXR1cy52YWx1ZSA9ICdjYW5jZWxsZWQnO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldCgnL2FjdGl2aXRpZXMvY2FuY2VsLXhscy1kb3dubG9hZCcpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVDYW5jZWxEb3dubG9hZCcsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU3RhcnRYbHNEb3dubG9hZCcsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHBlcmNlbnRhZ2VXaWR0aCA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIChmaWxlQ291bnQudmFsdWUgLyA0KSAqIDEwMDtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBmaWxlQ291bnQgPSAoMCwgdnVlXzIuaW5qZWN0KSgnZmlsZUNvdW50Jyk7XG4gICAgICAgIHZhciB4bHNEb3dubG9hZFN0YXR1cyA9ICgwLCB2dWVfMi5pbmplY3QpKCd4bHNEb3dubG9hZFN0YXR1cycpO1xuICAgICAgICB2YXIgZG93bmxvYWRBcGlVcmwgPSAoMCwgdnVlXzIuaW5qZWN0KSgnZG93bmxvYWRBcGlVcmwnKTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgc3RvcmU6IHN0b3JlLCBzaG93UmV0cnlEb3dubG9hZE1vZGVsOiBzaG93UmV0cnlEb3dubG9hZE1vZGVsLCBpc0xvYWRpbmc6IGlzTG9hZGluZywgZG93bmxvYWRGaWxlOiBkb3dubG9hZEZpbGUsIHJldHJ5RG93bmxvYWQ6IHJldHJ5RG93bmxvYWQsIGNhbmNlbERvd25sb2FkOiBjYW5jZWxEb3dubG9hZCwgcGVyY2VudGFnZVdpZHRoOiBwZXJjZW50YWdlV2lkdGgsIGZpbGVDb3VudDogZmlsZUNvdW50LCB4bHNEb3dubG9hZFN0YXR1czogeGxzRG93bmxvYWRTdGF0dXMsIGRvd25sb2FkQXBpVXJsOiBkb3dubG9hZEFwaVVybCwgc3Bpbm5lckxvYWRlcjogc3Bpbm5lckxvYWRlcl92dWVfMS5kZWZhdWx0LCBNb2RhbDogUG9wdXBNb2RhbF92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgc2hvd18xID0gcmVxdWlyZShcIlN0b3JlL2FjdGl2aXRpZXMvc2hvd1wiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBDcmVhdGVNb2RhbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi4vdmlld3MvYWN0aXZpdHkvQ3JlYXRlTW9kYWwudnVlXCIpKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnQWRtaW5IZWFkZXInLFxuICAgIHByb3BzOiB7XG4gICAgICAgIHVzZXI6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBvcmdhbml6YXRpb246IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHlwZW9mIHYgPT09ICdvYmplY3QnIHx8IHR5cGVvZiB2ID09PSAnc3RyaW5nJyB8fCB2ID09PSBudWxsO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBzdXBlckFkbWluOiB7IHR5cGU6IEJvb2xlYW4sIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIGhhc0FkbWluQmFyOiB7IHR5cGU6IE51bWJlciB8fCBCb29sZWFuLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgX2I7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgc3RvcmUgPSAoMCwgc2hvd18xLmRldGFpbFN0b3JlKSgpO1xuICAgICAgICB2YXIgdHJhbnNsYXRpb24gPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIHNob3dVc2VyRHJvcGRvd24gPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93QWN0aXZpdHlEcm9wZG93biA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHRvYXN0VmlzaWJpbGl0eSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGlzTG9hZGluZyA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNob3dTaWRlYmFyID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgdG9hc3RNZXNzYWdlID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICB2YXIgdG9hc3RUeXBlID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgbGFuZ3VhZ2VOYXZMaUNsYXNzZXM6ICdmbGV4JyxcbiAgICAgICAgICAgIGxhbmd1YWdlTmF2QW5jaG9yQ2xhc3NlczogJ2ZsZXggdGV4dC13aGl0ZSBpdGVtcy1jZW50ZXIgdXBwZXJjYXNlIG5hdl9fcG9pbnRlci1ob3ZlciBweC0xJyxcbiAgICAgICAgICAgIG1lbnVOYXZMaUNsYXNzZXM6ICdmbGV4IHJlbGF0aXZlJyxcbiAgICAgICAgICAgIG1lbnVOYXZBbmNob3JDbGFzc2VzOiAnZmxleCB0ZXh0LXdoaXRlIGl0ZW1zLWNlbnRlciB1cHBlcmNhc2UgbmF2X19wb2ludGVyLWhvdmVyJyxcbiAgICAgICAgICAgIGxhbmd1YWdlczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2U6ICdFTicsXG4gICAgICAgICAgICAgICAgICAgIHBlcm1hbGluazogJy9sYW5nL2VuJyxcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiB0cmFuc2xhdGlvbi53ZWJfbGFuZy5hY3RpdmUgPT09ICdlbicsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlOiAnRlInLFxuICAgICAgICAgICAgICAgICAgICBwZXJtYWxpbms6ICcvbGFuZy9mcicsXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogdHJhbnNsYXRpb24ud2ViX2xhbmcuYWN0aXZlID09PSAnZnInLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZTogJ0VTJyxcbiAgICAgICAgICAgICAgICAgICAgcGVybWFsaW5rOiAnL2xhbmcvZXMnLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IHRyYW5zbGF0aW9uLndlYl9sYW5nLmFjdGl2ZSA9PT0gJ2VzJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIG9yZ19tZW51czogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogdHJhbnNsYXRpb24uYWRtaW4uaGVhZGVyLmFjdGl2aXR5X2RhdGEsXG4gICAgICAgICAgICAgICAgICAgIHBlcm1hbGluazogJy9hY3Rpdml0aWVzJyxcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiB0cmFuc2xhdGlvbi5hZG1pbi5oZWFkZXIub3JnYW5pc2F0aW9uX2RhdGEsXG4gICAgICAgICAgICAgICAgICAgIHBlcm1hbGluazogJy9vcmdhbmlzYXRpb24nLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiB0cmFuc2xhdGlvbi5hZG1pbi5oZWFkZXIuc2V0dGluZ3MsXG4gICAgICAgICAgICAgICAgICAgIHBlcm1hbGluazogJy9zZXR0aW5nJyxcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogdHJhbnNsYXRpb24uY29tbW9uX2xhbmcuYWRkX2ltcG9ydF9hY3Rpdml0eSxcbiAgICAgICAgICAgICAgICAgICAgcGVybWFsaW5rOiAnIycsXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IHRyYW5zbGF0aW9uLmNvbW1vbl9sYW5nLnVzZXJzLFxuICAgICAgICAgICAgICAgICAgICBwZXJtYWxpbms6ICcvdXNlcnMnLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgc3VwZXJhZG1pbl9tZW51czogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ0Rhc2hib2FyZCcsXG4gICAgICAgICAgICAgICAgICAgIHBlcm1hbGluazogJy9kYXNoYm9hcmQnLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiB0cmFuc2xhdGlvbi5jb21tb25fbGFuZy5vcmdfbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgcGVybWFsaW5rOiAnL2xpc3Qtb3JnYW5pc2F0aW9ucycsXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IHRyYW5zbGF0aW9uLmNvbW1vbl9sYW5nLnVzZXJzLFxuICAgICAgICAgICAgICAgICAgICBwZXJtYWxpbms6ICcvdXNlcnMnLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgLy8ge1xuICAgICAgICAgICAgICAgIC8vICAgbmFtZTogdHJhbnNhbHRpb24uY29tbW9uX2xhbmcubG9ncy5kZWZhdWx0LFxuICAgICAgICAgICAgICAgIC8vICAgcGVybWFsaW5rOiAnL3N5c3RlbS12ZXJzaW9uJyxcbiAgICAgICAgICAgICAgICAvLyAgIGFjdGl2ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgLy8gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLmlzTG9hZGluZzsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpc0xvYWRpbmcudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBsaUNsYXNzID0gJ2Jsb2NrIHAtMi41IHRleHQtbi00MCB0ZXh0LXRpbnkgdXBwZXJjYXNlIGxlYWRpbmctWzEuNV0gZm9udC1ib2xkIGhvdmVyOiF0ZXh0LW4tNTAgaG92ZXI6Ymctbi0xMCc7XG4gICAgICAgIHZhciBfYyA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBtb2RhbFZhbHVlID0gX2NbMF0sIG1vZGFsVG9nZ2xlID0gX2NbMV07XG4gICAgICAgIGZ1bmN0aW9uIHRvYXN0KG1lc3NhZ2UsIHR5cGUpIHtcbiAgICAgICAgICAgIHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuICh0b2FzdFZpc2liaWxpdHkudmFsdWUgPSBmYWxzZSk7IH0sIDE1MDAwKTtcbiAgICAgICAgICAgIHRvYXN0TWVzc2FnZS52YWx1ZSA9IG1lc3NhZ2U7XG4gICAgICAgICAgICB0b2FzdFR5cGUudmFsdWUgPSB0eXBlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBpc1RvdWNoRGV2aWNlID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gJ29udG91Y2hzdGFydCcgaW4gd2luZG93IHx8IG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyA+IDA7XG4gICAgICAgIH0pO1xuICAgICAgICBmdW5jdGlvbiBUb2dnbGVNb2RlbCgpIHtcbiAgICAgICAgICAgIG1vZGFsVG9nZ2xlKCk7XG4gICAgICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ29wZW5BZGRNb2RlbCcpO1xuICAgICAgICB9XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc2hvd1NpZGViYXIudmFsdWU7IH0sIGZ1bmN0aW9uIChzaWRlYmFyKSB7XG4gICAgICAgICAgICBpZiAoc2lkZWJhcikge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgfSk7XG4gICAgICAgIGZ1bmN0aW9uIGNoYW5nZUFjdGl2ZU1lbnUoKSB7XG4gICAgICAgICAgICB2YXIgcGF0aCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTtcbiAgICAgICAgICAgIGRhdGEub3JnX21lbnVzLmZvckVhY2goZnVuY3Rpb24gKG1lbnUsIGtleSkge1xuICAgICAgICAgICAgICAgIGRhdGEub3JnX21lbnVzW2tleV1bJ2FjdGl2ZSddID0gbWVudS5wZXJtYWxpbmsgPT09IHBhdGggPyB0cnVlIDogZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChwYXRoLmluY2x1ZGVzKCdhY3Rpdml0eScpIHx8XG4gICAgICAgICAgICAgICAgcGF0aC5pbmNsdWRlcygncmVzdWx0JykgfHxcbiAgICAgICAgICAgICAgICBwYXRoLmluY2x1ZGVzKCdpbmRpY2F0b3InKSkge1xuICAgICAgICAgICAgICAgIGRhdGEub3JnX21lbnVzWzBdWydhY3RpdmUnXSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGF0aC5pbmNsdWRlcygnb3JnYW5pc2F0aW9uJykpIHtcbiAgICAgICAgICAgICAgICBkYXRhLm9yZ19tZW51c1sxXVsnYWN0aXZlJ10gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhdGguaW5jbHVkZXMoJ2ltcG9ydCcpKSB7XG4gICAgICAgICAgICAgICAgZGF0YS5vcmdfbWVudXNbM11bJ2FjdGl2ZSddID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwYXRoLmluY2x1ZGVzKCdkYXNoYm9hcmQnKSkge1xuICAgICAgICAgICAgICAgIGRhdGEuc3VwZXJhZG1pbl9tZW51c1swXVsnYWN0aXZlJ10gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhdGguaW5jbHVkZXMoJ3VzZXJzJykpIHtcbiAgICAgICAgICAgICAgICBkYXRhLm9yZ19tZW51c1s0XVsnYWN0aXZlJ10gPSB0cnVlO1xuICAgICAgICAgICAgICAgIGRhdGEuc3VwZXJhZG1pbl9tZW51c1syXVsnYWN0aXZlJ10gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhdGguaW5jbHVkZXMoJ2xpc3Qtb3JnYW5pc2F0aW9ucycpKSB7XG4gICAgICAgICAgICAgICAgZGF0YS5zdXBlcmFkbWluX21lbnVzWzFdWydhY3RpdmUnXSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGF0aC5pbmNsdWRlcygnc3lzdGVtLXZlcnNpb24nKSB8fFxuICAgICAgICAgICAgICAgIHBhdGguaW5jbHVkZXMoJ2xvZy12aWV3ZXInKSB8fFxuICAgICAgICAgICAgICAgIHBhdGguaW5jbHVkZXMoJ2xpbmszJykgfHxcbiAgICAgICAgICAgICAgICBwYXRoLmluY2x1ZGVzKCdsaW5rNCcpKSB7XG4gICAgICAgICAgICAgICAgZGF0YS5zdXBlcmFkbWluX21lbnVzWzJdWydhY3RpdmUnXSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gbG9jYWwgc3RvcmFnZSBmb3IgcHVibGlzaGluZ1xuICAgICAgICB2YXIgcGEgPSAoMCwgY29yZV8xLnVzZVN0b3JhZ2UpKCd2dWUtdXNlLWxvY2FsLXN0b3JhZ2UnLCB7XG4gICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllczogKF9iID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3B1Ymxpc2hpbmdBY3Rpdml0aWVzJykpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IHt9LFxuICAgICAgICB9KTtcbiAgICAgICAgZnVuY3Rpb24gbG9nb3V0KCkge1xuICAgICAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzID0ge307XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgYXhpb3NfMS5kZWZhdWx0LnBvc3QoJy9sb2dvdXQnKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMuc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnLyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogU2VhcmNoIGZ1bmN0aW9uYWxpdHlcbiAgICAgICAgICpcbiAgICAgICAgICovXG4gICAgICAgIHZhciBzZWFyY2hWYWx1ZSA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIGN1cnJlbnRVUkwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgICAgICAgaWYgKGN1cnJlbnRVUkwuaW5jbHVkZXMoJz8nKSkge1xuICAgICAgICAgICAgdmFyIHF1ZXJ5U3RyaW5nID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaCwgdXJsUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhxdWVyeVN0cmluZyksIHNlYXJjaCA9IHVybFBhcmFtcy5nZXQoJ3EnKTtcbiAgICAgICAgICAgIHNlYXJjaFZhbHVlLnZhbHVlID0gc2VhcmNoO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzcGlubmVyID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2VhcmNoRnVuY3Rpb24gPSBmdW5jdGlvbiAodXJsKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBzcGlubmVyLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIHZhciBwYXJhbSA9IChfYSA9IHNlYXJjaFZhbHVlLnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucmVwbGFjZSgnIycsICcnKTtcbiAgICAgICAgICAgIHZhciBzb3J0aW5nUGFyYW0gPSAnJztcbiAgICAgICAgICAgIGlmIChjdXJyZW50VVJMLmluY2x1ZGVzKCc/JykgJiYgY3VycmVudFVSTC5pbmNsdWRlcygnJicpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHF1ZXJ5U3RyaW5nID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaDtcbiAgICAgICAgICAgICAgICB2YXIgcXVlcnlTdHJpbmdBcnIgPSBxdWVyeVN0cmluZy5zcGxpdCgnJicpO1xuICAgICAgICAgICAgICAgIHNvcnRpbmdQYXJhbSA9ICcmJyArIHF1ZXJ5U3RyaW5nQXJyLnNsaWNlKDEpLmpvaW4oJyYnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBocmVmID0gcGFyYW1cbiAgICAgICAgICAgICAgICA/IFwiXCIuY29uY2F0KHVybCwgXCI/cT1cIikuY29uY2F0KHBhcmFtKS5jb25jYXQoc29ydGluZ1BhcmFtKVxuICAgICAgICAgICAgICAgIDogcHJvcHMuc3VwZXJBZG1pblxuICAgICAgICAgICAgICAgICAgICA/ICcvbGlzdC1vcmdhbmlzYXRpb25zJ1xuICAgICAgICAgICAgICAgICAgICA6ICcvYWN0aXZpdGllcy8nO1xuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBocmVmO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBjaGFuZ2VBY3RpdmVNZW51KCk7XG4gICAgICAgICAgICBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ29wZW5BZGRNb2RlbCcpID09PSAndHJ1ZScgJiZcbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgPT09ICcvYWN0aXZpdGllcycpIHtcbiAgICAgICAgICAgICAgICBtb2RhbFZhbHVlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciByZWRpcmVjdFByb2ZpbGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvcHJvZmlsZSc7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi5vblVubW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ29wZW5BZGRNb2RlbCcpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgc3RvcmU6IHN0b3JlLCBwcm9wczogcHJvcHMsIHRyYW5zbGF0aW9uOiB0cmFuc2xhdGlvbiwgc2hvd1VzZXJEcm9wZG93bjogc2hvd1VzZXJEcm9wZG93biwgc2hvd0FjdGl2aXR5RHJvcGRvd246IHNob3dBY3Rpdml0eURyb3Bkb3duLCB0b2FzdFZpc2liaWxpdHk6IHRvYXN0VmlzaWJpbGl0eSwgaXNMb2FkaW5nOiBpc0xvYWRpbmcsIHNob3dTaWRlYmFyOiBzaG93U2lkZWJhciwgdG9hc3RNZXNzYWdlOiB0b2FzdE1lc3NhZ2UsIHRvYXN0VHlwZTogdG9hc3RUeXBlLCBkYXRhOiBkYXRhLCBsaUNsYXNzOiBsaUNsYXNzLCBtb2RhbFZhbHVlOiBtb2RhbFZhbHVlLCBtb2RhbFRvZ2dsZTogbW9kYWxUb2dnbGUsIHRvYXN0OiB0b2FzdCwgaXNUb3VjaERldmljZTogaXNUb3VjaERldmljZSwgVG9nZ2xlTW9kZWw6IFRvZ2dsZU1vZGVsLCBjaGFuZ2VBY3RpdmVNZW51OiBjaGFuZ2VBY3RpdmVNZW51LCBwYTogcGEsIGxvZ291dDogbG9nb3V0LCBzZWFyY2hWYWx1ZTogc2VhcmNoVmFsdWUsIGN1cnJlbnRVUkw6IGN1cnJlbnRVUkwsIHNwaW5uZXI6IHNwaW5uZXIsIHNlYXJjaEZ1bmN0aW9uOiBzZWFyY2hGdW5jdGlvbiwgcmVkaXJlY3RQcm9maWxlOiByZWRpcmVjdFByb2ZpbGUsIENyZWF0ZU1vZGFsOiBDcmVhdGVNb2RhbF92dWVfMS5kZWZhdWx0LCBUb2FzdDogVG9hc3RNZXNzYWdlX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHRpdGxlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvdGl0bGVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdCcmVhZENydW1iJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIGJyZWFkY3J1bWJEYXRhID0gZGF0YS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHsgZ2V0QWN0aXZpdHlUaXRsZTogdGl0bGVfMS5kZWZhdWx0LCBicmVhZGNydW1iRGF0YTogYnJlYWRjcnVtYkRhdGEgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0J1bGtQdWJsaXNoaW5nRXJyb3JQb3B1cCcsXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIGJ1bGtQdWJsaXNoU3RhdHVzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ2J1bGtQdWJsaXNoU3RhdHVzJyk7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi5vblVubW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgYnVsa1B1Ymxpc2hTdGF0dXM6IGJ1bGtQdWJsaXNoU3RhdHVzLCBsYW5ndWFnZTogbGFuZ3VhZ2UgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGluZGV4XzEgPSByZXF1aXJlKFwiU3RvcmUvYWN0aXZpdGllcy9pbmRleFwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgdXRpbHNfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3V0aWxzXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0J1bGtwdWJsaXNoV2l0aFhscycsXG4gICAgZW1pdHM6IFsnY2xvc2UnXSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBfYjtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBzdG9yZSA9ICgwLCBpbmRleF8xLnVzZVN0b3JlKSgpO1xuICAgICAgICB2YXIgcGEgPSAoMCwgY29yZV8xLnVzZVN0b3JhZ2UpKCd2dWUtdXNlLWxvY2FsLXN0b3JhZ2UnLCB7XG4gICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllczogKF9iID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3B1Ymxpc2hpbmdBY3Rpdml0aWVzJykpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IHt9LFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciBidWxrUHVibGlzaExlbmd0aCA9ICgwLCB2dWVfMi5yZWYpKDApO1xuICAgICAgICB2YXIgb3Blbk1vZGVsID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgcGFTdG9yYWdlID0gKDAsIHZ1ZV8yLnJlZikoc3RvcmUuc3RhdGUuYnVsa3B1Ymxpc2hBY3Rpdml0aWVzKTtcbiAgICAgICAgdmFyIHB1Ymxpc2hpbmdBY3Rpdml0aWVzID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKShwYVN0b3JhZ2UudmFsdWUucHVibGlzaGluZ0FjdGl2aXRpZXNbJ2FjdGl2aXRpZXMnXSk7XG4gICAgICAgIHZhciBjb21wbGV0ZWQgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgcmVmcmVzaFRvYXN0TXNnID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3JlZnJlc2hUb2FzdE1zZycpO1xuICAgICAgICB2YXIgYWN0aXZpdGllcyA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBoYXNGYWlsZWRBY3Rpdml0aWVzID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBkYXRhOiB7fSxcbiAgICAgICAgICAgIGlkczogW10sXG4gICAgICAgICAgICBzdGF0dXM6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgY29tcGxldGVkLnZhbHVlID0gKF9hID0gcGFTdG9yYWdlLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzLnN0YXR1cykgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJ3Byb2Nlc3NpbmcnO1xuICAgICAgICAgICAgYnVsa1B1Ymxpc2hTdGF0dXMoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBidWxrUHVibGlzaFN0YXR1cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoXCIvYWN0aXZpdGllcy9idWxrLXB1Ymxpc2gtc3RhdHVzXCIpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIGlmICgnZGF0YScgaW4gcmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZpdGllcy52YWx1ZSA9IHJlc3BvbnNlLmRhdGEuYWN0aXZpdGllcztcbiAgICAgICAgICAgICAgICAgICAgY29tcGxldGVkLnZhbHVlID0gcmVzcG9uc2UuZGF0YS5zdGF0dXM7XG4gICAgICAgICAgICAgICAgICAgIC8vIHNhdmluZyBpbiBsb2NhbCBzdG9yYWdlXG4gICAgICAgICAgICAgICAgICAgIHBhU3RvcmFnZS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcy5hY3Rpdml0aWVzID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmRhdGEuYWN0aXZpdGllcztcbiAgICAgICAgICAgICAgICAgICAgcGFTdG9yYWdlLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzLnN0YXR1cyA9IHJlc3BvbnNlLmRhdGEuc3RhdHVzO1xuICAgICAgICAgICAgICAgICAgICBwYVN0b3JhZ2UudmFsdWUucHVibGlzaGluZ0FjdGl2aXRpZXMubWVzc2FnZSA9IHJlc3BvbnNlLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEuc3RhdHVzICE9PSAnY29tcGxldGVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9sbGluZ0ZvckJ1bGtwdWJsaXNoRGF0YSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZWQudmFsdWUgPSAnY29tcGxldGVkJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHZhciBwb2xsaW5nRm9yQnVsa3B1Ymxpc2hEYXRhID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBpbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KFwiL2FjdGl2aXRpZXMvYnVsay1wdWJsaXNoLXN0YXR1c1wiKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXNwb25zZS5wdWJsaXNoaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbElEKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgnZGF0YScgaW4gcmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpdml0aWVzLnZhbHVlID0gcmVzcG9uc2UuZGF0YS5hY3Rpdml0aWVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlZC52YWx1ZSA9IHJlc3BvbnNlLmRhdGEuc3RhdHVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNhdmluZyBpbiBsb2NhbCBzdG9yYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFTdG9yYWdlLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzLmFjdGl2aXRpZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5kYXRhLmFjdGl2aXRpZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFTdG9yYWdlLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzLnN0YXR1cyA9IHJlc3BvbnNlLmRhdGEuc3RhdHVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhU3RvcmFnZS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcy5tZXNzYWdlID0gcmVzcG9uc2UuZGF0YS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb21wbGV0ZWQudmFsdWUgPT09ICdjb21wbGV0ZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJRCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxlZEFjdGl2aXRpZXMocGFTdG9yYWdlLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzLmFjdGl2aXRpZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKChfYSA9IGhhc0ZhaWxlZEFjdGl2aXRpZXMgPT09IG51bGwgfHwgaGFzRmFpbGVkQWN0aXZpdGllcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogaGFzRmFpbGVkQWN0aXZpdGllcy5pZHMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGgpID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFRvYXN0TXNnLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFRvYXN0TXNnLnJlZnJlc2hNZXNzYWdlVHlwZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFRvYXN0TXNnLnJlZnJlc2hNZXNzYWdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZS5jb21tb25fbGFuZy5lcnJvci5zb21lX2FjdGl2aXRpZXNfaGF2ZV9mYWlsZWRfdG9fcHVibGlzaDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hUb2FzdE1zZy52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hUb2FzdE1zZy5yZWZyZXNoTWVzc2FnZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2UuY29tbW9uX2xhbmcuZXJyb3IuYWN0aXZpdHlfaGFzX2JlZW5fcHVibGlzaGVkX3N1Y2Nlc3NmdWxseTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hUb2FzdE1zZy52aXNpYmlsaXR5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAxMDAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZWQudmFsdWUgPSAnY29tcGxldGVkJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSwgMzAwMCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgICAgICB2YXIgcmV0cnlQdWJsaXNoaW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgLy9yZXNldCByZXF1aXJlZCBzdGF0ZXNcbiAgICAgICAgICAgIGNvbXBsZXRlZC52YWx1ZSA9ICdwcm9jZXNzaW5nJztcbiAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBoYXNGYWlsZWRBY3Rpdml0aWVzLmRhdGEpIHtcbiAgICAgICAgICAgICAgICBoYXNGYWlsZWRBY3Rpdml0aWVzLmRhdGFba2V5XS5zdGF0dXMgPSAncHJvY2Vzc2luZyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhY3Rpdml0aWVzLnZhbHVlID0gaGFzRmFpbGVkQWN0aXZpdGllcy5kYXRhO1xuICAgICAgICAgICAgLy8gYXBpIGVuZHBvaW50IGNhbGxcbiAgICAgICAgICAgIHZhciBlbmRwb2ludCA9IFwiL2FjdGl2aXRpZXMvc3RhcnQtYnVsay1wdWJsaXNoP2FjdGl2aXRpZXM9W1wiLmNvbmNhdChoYXNGYWlsZWRBY3Rpdml0aWVzLmlkcywgXCJdXCIpO1xuICAgICAgICAgICAgaGFzRmFpbGVkQWN0aXZpdGllcy5zdGF0dXMgPSBmYWxzZTtcbiAgICAgICAgICAgIGhhc0ZhaWxlZEFjdGl2aXRpZXMuaWRzID0gW107XG4gICAgICAgICAgICBoYXNGYWlsZWRBY3Rpdml0aWVzLmRhdGEgPSB7fTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoZW5kcG9pbnQpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhU3RvcmFnZS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcyA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIGJ1bGtQdWJsaXNoU3RhdHVzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBmYWlsZWRBY3Rpdml0aWVzID0gZnVuY3Rpb24gKG5lc3RlZE9iamVjdCkge1xuICAgICAgICAgICAgdmFyIGZhaWxlZEFjdGl2aXRpZXNJRCA9IFtdO1xuICAgICAgICAgICAgdmFyIGFzQXJyYXlEYXRhID0gbmVzdGVkT2JqZWN0ICYmIE9iamVjdC5lbnRyaWVzKG5lc3RlZE9iamVjdCk7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgICAgICB2YXIgZmlsdGVyZWQgPSBhc0FycmF5RGF0YSA9PT0gbnVsbCB8fCBhc0FycmF5RGF0YSA9PT0gdm9pZCAwID8gdm9pZCAwIDogYXNBcnJheURhdGEuZmlsdGVyKGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHZhciBrZXkgPSBfYVswXSwgdmFsdWUgPSBfYVsxXTtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgJiYgT2JqZWN0LnZhbHVlcyh2YWx1ZSkuaW5kZXhPZignZmFpbGVkJykgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICBmYWlsZWRBY3Rpdml0aWVzSUQucHVzaCh2YWx1ZS5hY3Rpdml0eV9pZCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBrZXk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB2YXIgZmFpbGVkQWN0aXZpdGllc0RhdGEgPSBmaWx0ZXJlZCAmJiBPYmplY3QuZnJvbUVudHJpZXMoZmlsdGVyZWQpO1xuICAgICAgICAgICAgaWYgKChmYWlsZWRBY3Rpdml0aWVzSUQgPT09IG51bGwgfHwgZmFpbGVkQWN0aXZpdGllc0lEID09PSB2b2lkIDAgPyB2b2lkIDAgOiBmYWlsZWRBY3Rpdml0aWVzSUQubGVuZ3RoKSA+IDApIHtcbiAgICAgICAgICAgICAgICBoYXNGYWlsZWRBY3Rpdml0aWVzLnN0YXR1cyA9IHRydWU7XG4gICAgICAgICAgICAgICAgaGFzRmFpbGVkQWN0aXZpdGllcy5pZHMgPSBmYWlsZWRBY3Rpdml0aWVzSUQ7XG4gICAgICAgICAgICAgICAgaGFzRmFpbGVkQWN0aXZpdGllcy5kYXRhID0gZmFpbGVkQWN0aXZpdGllc0RhdGE7XG4gICAgICAgICAgICAgICAgcmVmcmVzaFRvYXN0TXNnLnJlZnJlc2hNZXNzYWdlVHlwZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHJlZnJlc2hUb2FzdE1zZy5yZWZyZXNoTWVzc2FnZSA9XG4gICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlLmNvbW1vbl9sYW5nLmVycm9yLnNvbWVfYWN0aXZpdGllc19oYXZlX2ZhaWxlZF90b19wdWJsaXNoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaGFzRmFpbGVkQWN0aXZpdGllcy5zdGF0dXMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBoYXNGYWlsZWRBY3Rpdml0aWVzLmlkcyA9IFtdO1xuICAgICAgICAgICAgICAgIGhhc0ZhaWxlZEFjdGl2aXRpZXMuZGF0YSA9IHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgY29tcGxldGVkQWN0aXZpdGllcyA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIHZhciBjb3VudCA9IDA7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8XG4gICAgICAgICAgICAgICAgKCgoX2EgPSBwYVN0b3JhZ2UudmFsdWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5wdWJsaXNoaW5nQWN0aXZpdGllc1snYWN0aXZpdGllcyddKSAmJlxuICAgICAgICAgICAgICAgICAgICBPYmplY3QudmFsdWVzKChfYiA9IHBhU3RvcmFnZS52YWx1ZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnB1Ymxpc2hpbmdBY3Rpdml0aWVzWydhY3Rpdml0aWVzJ10pXG4gICAgICAgICAgICAgICAgICAgICAgICAubGVuZ3RoKTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC52YWx1ZXMocGFTdG9yYWdlLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzWydhY3Rpdml0aWVzJ10pW2ldWydzdGF0dXMnXSA9PT0gJ2NvbXBsZXRlZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY291bnQ7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgcGVyY2VudGFnZVdpZHRoID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgcmV0dXJuICgoY29tcGxldGVkQWN0aXZpdGllcy52YWx1ZSAvXG4gICAgICAgICAgICAgICAgKCgoX2EgPSBwYS52YWx1ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnB1Ymxpc2hpbmdBY3Rpdml0aWVzWydhY3Rpdml0aWVzJ10pICYmXG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKChfYiA9IHBhLnZhbHVlKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IucHVibGlzaGluZ0FjdGl2aXRpZXNbJ2FjdGl2aXRpZXMnXSkubGVuZ3RoKSkgKlxuICAgICAgICAgICAgICAgIDEwMCk7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLmJ1bGtwdWJsaXNoQWN0aXZpdGllczsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2V0RGF0YVRvTG9jYWxzdG9yYWdlKCk7XG4gICAgICAgICAgICBnZXREYXRhRnJvbUxvY2Fsc3RvcmFnZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGdldERhdGFGcm9tTG9jYWxzdG9yYWdlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgYWN0aXZpdGllcy52YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdidWxrUHVibGlzaEFjdGl2aXRpZXMnKTtcbiAgICAgICAgICAgIGFjdGl2aXRpZXMudmFsdWUgPSAoMCwgdXRpbHNfMS5pc0pzb24pKGFjdGl2aXRpZXMudmFsdWUpICYmIEpTT04ucGFyc2UoYWN0aXZpdGllcy52YWx1ZSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzZXREYXRhVG9Mb2NhbHN0b3JhZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnYnVsa1B1Ymxpc2hBY3Rpdml0aWVzJywgSlNPTi5zdHJpbmdpZnkocGFTdG9yYWdlLnZhbHVlKSk7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi5vblVubW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJ0QnVsa1B1Ymxpc2gnLCBmYWxzZSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZW1wdHlidWxrUHVibGlzaFN0YXR1cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZvciAodmFyIHN0YXR1c18xIGluIHB1Ymxpc2hpbmdBY3Rpdml0aWVzKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHB1Ymxpc2hpbmdBY3Rpdml0aWVzW3N0YXR1c18xXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5idWxrUHVibGlzaExlbmd0aDsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgYnVsa1B1Ymxpc2hMZW5ndGgudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgIHBhID0gKDAsIGNvcmVfMS51c2VTdG9yYWdlKSgndnVlLXVzZS1sb2NhbC1zdG9yYWdlJywge1xuICAgICAgICAgICAgICAgIHB1Ymxpc2hpbmdBY3Rpdml0aWVzOiAoX2EgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncHVibGlzaGluZ0FjdGl2aXRpZXMnKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDoge30sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGVtcHR5YnVsa1B1Ymxpc2hTdGF0dXMoKTtcbiAgICAgICAgICAgIGJ1bGtQdWJsaXNoU3RhdHVzKCk7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHB1Ymxpc2hpbmdBY3Rpdml0aWVzLCAoX2IgPSBwYS52YWx1ZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnB1Ymxpc2hpbmdBY3Rpdml0aWVzWydhY3Rpdml0aWVzJ10pO1xuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHN0b3JlOiBzdG9yZSwgcGE6IHBhLCBsYW5ndWFnZTogbGFuZ3VhZ2UsIGJ1bGtQdWJsaXNoTGVuZ3RoOiBidWxrUHVibGlzaExlbmd0aCwgb3Blbk1vZGVsOiBvcGVuTW9kZWwsIHBhU3RvcmFnZTogcGFTdG9yYWdlLCBwdWJsaXNoaW5nQWN0aXZpdGllczogcHVibGlzaGluZ0FjdGl2aXRpZXMsIGNvbXBsZXRlZDogY29tcGxldGVkLCByZWZyZXNoVG9hc3RNc2c6IHJlZnJlc2hUb2FzdE1zZywgYWN0aXZpdGllczogYWN0aXZpdGllcywgaGFzRmFpbGVkQWN0aXZpdGllczogaGFzRmFpbGVkQWN0aXZpdGllcywgYnVsa1B1Ymxpc2hTdGF0dXM6IGJ1bGtQdWJsaXNoU3RhdHVzLCByZXRyeVB1Ymxpc2hpbmc6IHJldHJ5UHVibGlzaGluZywgZmFpbGVkQWN0aXZpdGllczogZmFpbGVkQWN0aXZpdGllcywgY29tcGxldGVkQWN0aXZpdGllczogY29tcGxldGVkQWN0aXZpdGllcywgcGVyY2VudGFnZVdpZHRoOiBwZXJjZW50YWdlV2lkdGgsIGdldERhdGFGcm9tTG9jYWxzdG9yYWdlOiBnZXREYXRhRnJvbUxvY2Fsc3RvcmFnZSwgc2V0RGF0YVRvTG9jYWxzdG9yYWdlOiBzZXREYXRhVG9Mb2NhbHN0b3JhZ2UsIGVtcHR5YnVsa1B1Ymxpc2hTdGF0dXM6IGVtcHR5YnVsa1B1Ymxpc2hTdGF0dXMgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdCdXR0b25Db21wb25lbnQnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIHRleHQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBpY29uOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIGxpbms6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICBhY3Rpdml0eUxlbmd0aDoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgYnRuVHlwZSA9ICcnO1xuICAgICAgICBpZiAocHJvcHMudHlwZSA9PT0gJ3NlY29uZGFyeScpIHtcbiAgICAgICAgICAgIGJ0blR5cGUgPSAnc2Vjb25kYXJ5LWJ0biBmb250LWJvbGQnO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHByb3BzLnR5cGUgPT09ICdvdXRsaW5lJykge1xuICAgICAgICAgICAgYnRuVHlwZSA9ICdwcmltYXJ5LW91dGxpbmUtYnRuJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChwcm9wcy50eXBlID09PSAncHJpbWFyeScpIHtcbiAgICAgICAgICAgIGJ0blR5cGUgPSAncHJpbWFyeS1idG4gZm9udC1ib2xkJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGJ0blR5cGUgPSAnZm9udC1ib2xkJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBidG5UeXBlOiBidG5UeXBlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBkYXRlX2Zuc18xID0gcmVxdWlyZShcImRhdGUtZm5zXCIpO1xudmFyIHZ1ZV9kYXRlcGlja2VyXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkB2dWVwaWMvdnVlLWRhdGVwaWNrZXJcIikpO1xucmVxdWlyZShcIkB2dWVwaWMvdnVlLWRhdGVwaWNrZXIvZGlzdC9tYWluLmNzc1wiKTtcbnZhciBtb21lbnRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwibW9tZW50XCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdEYXRlUmFuZ2VXaWRnZXQnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRyb3Bkb3duUmFuZ2U6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICh7fSk7IH0sXG4gICAgICAgIH0sXG4gICAgICAgIGZpcnN0RGF0ZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRhdGVMYWJlbDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIGN1cnJlbnRWaWV3OiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2xlYXJEYXRlOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIHN0YXJ0aW5nRGF0ZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIGVuZGluZ0RhdGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICBkYXRlTmFtZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBlbWl0czogW1xuICAgICAgICAndHJpZ2dlclNldERhdGVSYW5nZScsXG4gICAgICAgICd0cmlnZ2VyU2V0RGF0ZVR5cGUnLFxuICAgICAgICAnZGF0ZUNsZWFyZWQnLFxuICAgIF0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlLCBlbWl0ID0gX2EuZW1pdDtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBzZWxlY3RlZFByZXNlbnRJbmRleCA9ICgwLCB2dWVfMi5yZWYpKDk5KTtcbiAgICAgICAgdmFyIGRhdGVSYW5nZU1haW4gPSAoMCwgdnVlXzIucmVmKShudWxsKTtcbiAgICAgICAgdmFyIGRhdGVUeXBlID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICB2YXIgZGF0ZURyb3Bkb3duID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIGRhdGVUeXBlTmFtZSA9ICgwLCB2dWVfMi5yZWYpKHByb3BzLmRhdGVOYW1lKTtcbiAgICAgICAgZGF0ZVR5cGUudmFsdWUgPSBwcm9wcy5kcm9wZG93blJhbmdlICYmIE9iamVjdC52YWx1ZXMocHJvcHMuZHJvcGRvd25SYW5nZSlbMF07XG4gICAgICAgIHZhciBkYXRlVHlwZUtleSA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgZGF0ZVR5cGVLZXkudmFsdWUgPSBwcm9wcy5kcm9wZG93blJhbmdlICYmIE9iamVjdC5rZXlzKHByb3BzLmRyb3Bkb3duUmFuZ2UpWzBdO1xuICAgICAgICB2YXIgc2hvd1JhbmdlRHJvcGRvd24gPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBpbml0aWFsRGF0ZSA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gcHJvcHMuZmlyc3REYXRlOyB9KTtcbiAgICAgICAgdmFyIGZpeGVkID0gKDAsIHZ1ZV8yLnJlZikocHJvcHMuZGF0ZU5hbWUpO1xuICAgICAgICB2YXIgdG9kYXlEYXRlID0gKDAsIG1vbWVudF8xLmRlZmF1bHQpKG5ldyBEYXRlKCkpLmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xuICAgICAgICB2YXIgc2VsZWN0ZWREYXRlID0gKDAsIHZ1ZV8yLnJlZikoW1xuICAgICAgICAgICAgbmV3IERhdGUoKSxcbiAgICAgICAgICAgIG5ldyBEYXRlKG5ldyBEYXRlKCkuc2V0RGF0ZShuZXcgRGF0ZSgpLmdldERhdGUoKSArIDcpKSxcbiAgICAgICAgXSk7XG4gICAgICAgIHZhciBkYXRlcGlja2VyID0gKDAsIHZ1ZV8yLnJlZikobnVsbCk7XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkRGF0ZS52YWx1ZVswXSA9ICcnO1xuICAgICAgICAgICAgc2VsZWN0ZWREYXRlLnZhbHVlWzFdID0gdG9kYXlEYXRlO1xuICAgICAgICAgICAgdHJpZ2dlclNldERhdGVSYW5nZSgnJywgdG9kYXlEYXRlLCBmaXhlZC52YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIFtwcm9wcy5lbmRpbmdEYXRlLCBwcm9wcy5zdGFydGluZ0RhdGVdOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAocHJvcHMuZW5kaW5nRGF0ZSAmJiBwcm9wcy5zdGFydGluZ0RhdGUpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGUudmFsdWVbMF0gPSBwcm9wcy5zdGFydGluZ0RhdGU7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRlLnZhbHVlWzFdID0gcHJvcHMuZW5kaW5nRGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICB2YXIgaGFuZGxlUHJlc2VudFJhbmdlSXRlbUNsaWNrID0gZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgICAgICAgICB2YXIgcHJlc2VudFJhbmdlSXRlbXMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdkcF9fcHJlc2V0X3JhbmdlJyk7XG4gICAgICAgICAgICBzZWxlY3RlZFByZXNlbnRJbmRleC52YWx1ZSA9IGluZGV4O1xuICAgICAgICAgICAgcHJlc2VudFJhbmdlSXRlbXNbaW5kZXhdLmNsYXNzTGlzdC5hZGQoJ3ByZXNldC1yYW5nZS1pdGVtLWFjdGl2ZScpO1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBwcmVzZW50UmFuZ2VJdGVtcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgIGlmIChqICE9PSBpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICBwcmVzZW50UmFuZ2VJdGVtc1tqXS5jbGFzc0xpc3QucmVtb3ZlKCdwcmVzZXQtcmFuZ2UtaXRlbS1hY3RpdmUnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gcHJvcHMuY2xlYXJEYXRlOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXNldERhdGUoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBlbWl0KCdkYXRlQ2xlYXJlZCcpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgdmFyIGhhbmRsZUNhbGVuZGFySXRlbUNsaWNrID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2VsZWN0ZWRQcmVzZW50SW5kZXgudmFsdWUgPSA5OTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGFkZEV2ZW50c0ZvckNhbGVuZGFyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hvd1JhbmdlRHJvcGRvd24udmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIHZhciBwcmVzZW50UmFuZ2VJdGVtcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2RwX19wcmVzZXRfcmFuZ2UnKTtcbiAgICAgICAgICAgIHZhciBfbG9vcF8xID0gZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgICAgICAgICBwcmVzZW50UmFuZ2VJdGVtc1tpXS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlUHJlc2VudFJhbmdlSXRlbUNsaWNrKGkpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJlc2VudFJhbmdlSXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBfbG9vcF8xKGkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGNhbGVuZGFySXRlbXMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdkcF9fY2FsZW5kYXJfaXRlbScpO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYWxlbmRhckl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY2FsZW5kYXJJdGVtc1tpXS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNhbGVuZGFySXRlbUNsaWNrKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHJlbW92ZUV2ZW50c09mQ2FsZW5kYXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgcHJlc2VudFJhbmdlSXRlbXMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdkcF9fcHJlc2V0X3JhbmdlJyk7XG4gICAgICAgICAgICB2YXIgX2xvb3BfMiA9IGZ1bmN0aW9uIChpKSB7XG4gICAgICAgICAgICAgICAgcHJlc2VudFJhbmdlSXRlbXNbaV0ucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZVByZXNlbnRSYW5nZUl0ZW1DbGljayhpKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByZXNlbnRSYW5nZUl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgX2xvb3BfMihpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBjYWxlbmRhckl0ZW1zID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZHBfX2NhbGVuZGFyX2l0ZW0nKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2FsZW5kYXJJdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNhbGVuZGFySXRlbXNbaV0ucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVDYWxlbmRhckl0ZW1DbGljayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciB0b2dnbGVTaG93UmFuZ2VEcm9wZG93biA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNob3dSYW5nZURyb3Bkb3duLnZhbHVlID0gIXNob3dSYW5nZURyb3Bkb3duLnZhbHVlO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgcmVzZXREYXRlID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHRyaWdnZXJTZXREYXRlUmFuZ2UoJycsICcnKTtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGUudmFsdWVbMF0gPSAnJztcbiAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGUudmFsdWVbMV0gPSAnJztcbiAgICAgICAgICAgICAgICBmaXhlZC52YWx1ZSA9ICdBbGwgdGltZSc7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi8sIHsgc3VjY2VzczogdHJ1ZSB9XTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfTtcbiAgICAgICAgdmFyIHByZXNldFJhbmdlcyA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnVG9kYXknLFxuICAgICAgICAgICAgICAgIHJhbmdlOiBbKDAsIGRhdGVfZm5zXzEuc3RhcnRPZkRheSkobmV3IERhdGUoKSksICgwLCBkYXRlX2Zuc18xLmVuZE9mRGF5KShuZXcgRGF0ZSgpKV0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnVGhpcyB3ZWVrJyxcbiAgICAgICAgICAgICAgICByYW5nZTogWygwLCBkYXRlX2Zuc18xLnN0YXJ0T2ZXZWVrKShuZXcgRGF0ZSgpKSwgKDAsIGRhdGVfZm5zXzEuZW5kT2ZEYXkpKG5ldyBEYXRlKCkpXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdMYXN0IDcgZGF5cycsXG4gICAgICAgICAgICAgICAgcmFuZ2U6IFsoMCwgZGF0ZV9mbnNfMS5zdWJEYXlzKShuZXcgRGF0ZSgpLCA2KSwgKDAsIGRhdGVfZm5zXzEuZW5kT2ZEYXkpKG5ldyBEYXRlKCkpXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdUaGlzIG1vbnRoJyxcbiAgICAgICAgICAgICAgICByYW5nZTogWygwLCBkYXRlX2Zuc18xLnN0YXJ0T2ZNb250aCkobmV3IERhdGUoKSksICgwLCBkYXRlX2Zuc18xLmVuZE9mTW9udGgpKG5ldyBEYXRlKCkpXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdMYXN0IDYgbW9udGgnLFxuICAgICAgICAgICAgICAgIHJhbmdlOiBbKDAsIGRhdGVfZm5zXzEuc3RhcnRPZk1vbnRoKSgoMCwgZGF0ZV9mbnNfMS5zdWJNb250aHMpKG5ldyBEYXRlKCksIDYpKSwgKDAsIGRhdGVfZm5zXzEuZW5kT2ZNb250aCkobmV3IERhdGUoKSldLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ1RoaXMgeWVhcicsXG4gICAgICAgICAgICAgICAgcmFuZ2U6IFsoMCwgZGF0ZV9mbnNfMS5zdGFydE9mWWVhcikobmV3IERhdGUoKSksICgwLCBkYXRlX2Zuc18xLmVuZE9mRGF5KShuZXcgRGF0ZSgpKV0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnTGFzdCAxMiBtb250aHMnLFxuICAgICAgICAgICAgICAgIHJhbmdlOiBbKDAsIGRhdGVfZm5zXzEuc3RhcnRPZk1vbnRoKSgoMCwgZGF0ZV9mbnNfMS5zdWJNb250aHMpKG5ldyBEYXRlKCksIDEyKSksICgwLCBkYXRlX2Zuc18xLmVuZE9mRGF5KShuZXcgRGF0ZSgpKV0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnQWxsIHRpbWUnLFxuICAgICAgICAgICAgICAgIHJhbmdlOiBbbmV3IERhdGUoaW5pdGlhbERhdGUudmFsdWUpLCAoMCwgZGF0ZV9mbnNfMS5lbmRPZkRheSkobmV3IERhdGUoKSldLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTsgfSk7XG4gICAgICAgIHZhciBjb252ZXJ0RGF0ZSA9IGZ1bmN0aW9uIChkYXRlKSB7XG4gICAgICAgICAgICB2YXIgZGF0ZU9iaiA9IG5ldyBEYXRlKGRhdGUpO1xuICAgICAgICAgICAgdmFyIHllYXIgPSBkYXRlT2JqLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgICAgICB2YXIgbW9udGggPSBTdHJpbmcoZGF0ZU9iai5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICAgICAgICAgIHZhciBkYXkgPSBTdHJpbmcoZGF0ZU9iai5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgICAgICAgICByZXR1cm4gXCJcIi5jb25jYXQoeWVhciwgXCItXCIpLmNvbmNhdChtb250aCwgXCItXCIpLmNvbmNhdChkYXkpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgb3BlbkNhbGVuZGFyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKGRhdGVwaWNrZXIudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBkYXRlcGlja2VyLnZhbHVlLm9wZW5NZW51KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjbG9zZUNhbGVuZGFyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKGRhdGVwaWNrZXIudmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZW1vdmVFdmVudHNPZkNhbGVuZGFyKCk7XG4gICAgICAgICAgICAgICAgZGF0ZXBpY2tlci52YWx1ZS5jbG9zZU1lbnUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHNlbGVjdERhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoZGF0ZXBpY2tlci52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGRhdGVwaWNrZXIudmFsdWUuc2VsZWN0RGF0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgZm9ybWF0ID0gZnVuY3Rpb24gKGRhdGVzKSB7XG4gICAgICAgICAgICB2YXIgdGVtcEFycmF5ID0gW107XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdGVtcEFycmF5W2ldID0gZGF0ZXNbaV0udG9Mb2NhbGVEYXRlU3RyaW5nKCdlbi1VUycsIHtcbiAgICAgICAgICAgICAgICAgICAgbW9udGg6ICdzaG9ydCcsXG4gICAgICAgICAgICAgICAgICAgIGRheTogJ251bWVyaWMnLFxuICAgICAgICAgICAgICAgICAgICB5ZWFyOiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGVtcEFycmF5LmpvaW4oJyAtICcpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgY2xvc2VEYXRlRHJvcGRvd24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzaG93UmFuZ2VEcm9wZG93bi52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNob3dSYW5nZURyb3Bkb3duLnZhbHVlOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGNsb3NlRGF0ZURyb3Bkb3duKTtcbiAgICAgICAgICAgICAgICAoX2EgPSBkYXRlUmFuZ2VNYWluLnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBrZWVwTW9kZWxPcGVuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY2xvc2VEYXRlRHJvcGRvd24pO1xuICAgICAgICAgICAgICAgIChfYiA9IGRhdGVSYW5nZU1haW4udmFsdWUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGtlZXBNb2RlbE9wZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGtlZXBNb2RlbE9wZW4gPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIFtzZWxlY3RlZERhdGVdOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgc3RhcnREYXRlID0gc2VsZWN0ZWREYXRlLnZhbHVlICYmIHNlbGVjdGVkRGF0ZS52YWx1ZVswXVxuICAgICAgICAgICAgICAgID8gY29udmVydERhdGUoc2VsZWN0ZWREYXRlLnZhbHVlWzBdKVxuICAgICAgICAgICAgICAgIDogZmFsc2U7XG4gICAgICAgICAgICB2YXIgZW5kRGF0ZSA9IHNlbGVjdGVkRGF0ZS52YWx1ZSAmJiBzZWxlY3RlZERhdGUudmFsdWVbMV1cbiAgICAgICAgICAgICAgICA/IGNvbnZlcnREYXRlKHNlbGVjdGVkRGF0ZS52YWx1ZVsxXSlcbiAgICAgICAgICAgICAgICA6IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHN0YXJ0RGF0ZSAmJiBlbmREYXRlKSB7XG4gICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRQcmVzZW50RGF5VGV4dCgpO1xuICAgICAgICAgICAgICAgIHRyaWdnZXJTZXREYXRlUmFuZ2Uoc3RhcnREYXRlLCBlbmREYXRlLCBmaXhlZC52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBbZGF0ZVR5cGVdOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB0cmlnZ2VyU2V0RGF0ZVR5cGUoZGF0ZVR5cGVLZXkudmFsdWUpO1xuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gW3Byb3BzLmN1cnJlbnRWaWV3XTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2VsZWN0ZWREYXRlLnZhbHVlWzBdID0gJyc7XG4gICAgICAgICAgICBzZWxlY3RlZERhdGUudmFsdWVbMV0gPSAnJztcbiAgICAgICAgICAgIGZpeGVkLnZhbHVlID0gJ0FsbCB0aW1lJztcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICB2YXIgdHJpZ2dlclNldERhdGVSYW5nZSA9IGZ1bmN0aW9uIChzdGFydERhdGUsIGVuZERhdGUsIGZpbHRlcmVkRGF0ZVR5cGUpIHtcbiAgICAgICAgICAgIGlmIChmaWx0ZXJlZERhdGVUeXBlID09PSB2b2lkIDApIHsgZmlsdGVyZWREYXRlVHlwZSA9ICcnOyB9XG4gICAgICAgICAgICBlbWl0KCd0cmlnZ2VyU2V0RGF0ZVJhbmdlJywgc3RhcnREYXRlLCBlbmREYXRlLCBmaWx0ZXJlZERhdGVUeXBlKTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBwcm9wcy5kYXRlTmFtZTsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBkYXRlVHlwZU5hbWUudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gZml4ZWQudmFsdWU7IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBzdGFydERhdGUgPSBzZWxlY3RlZERhdGUudmFsdWUgJiYgc2VsZWN0ZWREYXRlLnZhbHVlWzBdXG4gICAgICAgICAgICAgICAgPyBjb252ZXJ0RGF0ZShzZWxlY3RlZERhdGUudmFsdWVbMF0pXG4gICAgICAgICAgICAgICAgOiBmYWxzZTtcbiAgICAgICAgICAgIHZhciBlbmREYXRlID0gc2VsZWN0ZWREYXRlLnZhbHVlICYmIHNlbGVjdGVkRGF0ZS52YWx1ZVsxXVxuICAgICAgICAgICAgICAgID8gY29udmVydERhdGUoc2VsZWN0ZWREYXRlLnZhbHVlWzFdKVxuICAgICAgICAgICAgICAgIDogZmFsc2U7XG4gICAgICAgICAgICBpZiAoc3RhcnREYXRlICYmIGVuZERhdGUpIHtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyU2V0RGF0ZVJhbmdlKHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgZml4ZWQudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHRyaWdnZXJTZXREYXRlVHlwZSA9IGZ1bmN0aW9uIChldmVudFR5cGUpIHtcbiAgICAgICAgICAgIGVtaXQoJ3RyaWdnZXJTZXREYXRlVHlwZScsIGV2ZW50VHlwZSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzZXRTZWxlY3RlZFByZXNlbnREYXlUZXh0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIGZpeGVkLnZhbHVlID1cbiAgICAgICAgICAgICAgICAoX2IgPSAoX2EgPSBwcmVzZXRSYW5nZXMudmFsdWVbc2VsZWN0ZWRQcmVzZW50SW5kZXgudmFsdWVdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGFiZWwpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6ICdDdXN0b20nO1xuICAgICAgICAgICAgLy8gc2VsZWN0ZWRQcmVzZW50SW5kZXgudmFsdWUgPSA5OTtcbiAgICAgICAgICAgIGlmIChkYXRlVHlwZU5hbWUudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBmaXhlZC52YWx1ZSA9IGRhdGVUeXBlTmFtZS52YWx1ZTtcbiAgICAgICAgICAgICAgICBkYXRlVHlwZU5hbWUudmFsdWUgPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGN1c3RvbVBvc2l0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZTtcbiAgICAgICAgICAgIHZhciBsZWZ0UG9zaXRpb24gPSAwO1xuICAgICAgICAgICAgaWYgKGRhdGVSYW5nZU1haW4udmFsdWUpIHtcbiAgICAgICAgICAgICAgICBsZWZ0UG9zaXRpb24gPVxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuaW5uZXJXaWR0aCAtICgoX2IgPSAoX2EgPSBkYXRlUmFuZ2VNYWluLnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5yaWdodCkgPlxuICAgICAgICAgICAgICAgICAgICAgICAgMTUwXG4gICAgICAgICAgICAgICAgICAgICAgICA/IE51bWJlcigoX2MgPSBkYXRlUmFuZ2VNYWluLnZhbHVlKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkucmlnaHQpIC0gMzAwXG4gICAgICAgICAgICAgICAgICAgICAgICA6IE51bWJlcigoX2QgPSBkYXRlUmFuZ2VNYWluLnZhbHVlKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkucmlnaHQpIC0gNDIwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0b3A6IE51bWJlcigoX2UgPSBkYXRlUmFuZ2VNYWluLnZhbHVlKSA9PT0gbnVsbCB8fCBfZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tKSArIDIwLFxuICAgICAgICAgICAgICAgIGxlZnQ6IGxlZnRQb3NpdGlvbixcbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzZXREYXRlUmFuZ2VUeXBlSW5Ecm9wZG93biA9IGZ1bmN0aW9uICh2YWx1ZSwga2V5KSB7XG4gICAgICAgICAgICBzaG93UmFuZ2VEcm9wZG93bi52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgZGF0ZVR5cGUudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgIGRhdGVUeXBlS2V5LnZhbHVlID0ga2V5O1xuICAgICAgICB9O1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBwcm9wczogcHJvcHMsIHNlbGVjdGVkUHJlc2VudEluZGV4OiBzZWxlY3RlZFByZXNlbnRJbmRleCwgZGF0ZVJhbmdlTWFpbjogZGF0ZVJhbmdlTWFpbiwgZGF0ZVR5cGU6IGRhdGVUeXBlLCBkYXRlRHJvcGRvd246IGRhdGVEcm9wZG93biwgZGF0ZVR5cGVOYW1lOiBkYXRlVHlwZU5hbWUsIGRhdGVUeXBlS2V5OiBkYXRlVHlwZUtleSwgc2hvd1JhbmdlRHJvcGRvd246IHNob3dSYW5nZURyb3Bkb3duLCBlbWl0OiBlbWl0LCBpbml0aWFsRGF0ZTogaW5pdGlhbERhdGUsIGZpeGVkOiBmaXhlZCwgdG9kYXlEYXRlOiB0b2RheURhdGUsIHNlbGVjdGVkRGF0ZTogc2VsZWN0ZWREYXRlLCBkYXRlcGlja2VyOiBkYXRlcGlja2VyLCBoYW5kbGVQcmVzZW50UmFuZ2VJdGVtQ2xpY2s6IGhhbmRsZVByZXNlbnRSYW5nZUl0ZW1DbGljaywgaGFuZGxlQ2FsZW5kYXJJdGVtQ2xpY2s6IGhhbmRsZUNhbGVuZGFySXRlbUNsaWNrLCBhZGRFdmVudHNGb3JDYWxlbmRhcjogYWRkRXZlbnRzRm9yQ2FsZW5kYXIsIHJlbW92ZUV2ZW50c09mQ2FsZW5kYXI6IHJlbW92ZUV2ZW50c09mQ2FsZW5kYXIsIHRvZ2dsZVNob3dSYW5nZURyb3Bkb3duOiB0b2dnbGVTaG93UmFuZ2VEcm9wZG93biwgcmVzZXREYXRlOiByZXNldERhdGUsIHByZXNldFJhbmdlczogcHJlc2V0UmFuZ2VzLCBjb252ZXJ0RGF0ZTogY29udmVydERhdGUsIG9wZW5DYWxlbmRhcjogb3BlbkNhbGVuZGFyLCBjbG9zZUNhbGVuZGFyOiBjbG9zZUNhbGVuZGFyLCBzZWxlY3REYXRlOiBzZWxlY3REYXRlLCBmb3JtYXQ6IGZvcm1hdCwgY2xvc2VEYXRlRHJvcGRvd246IGNsb3NlRGF0ZURyb3Bkb3duLCBrZWVwTW9kZWxPcGVuOiBrZWVwTW9kZWxPcGVuLCB0cmlnZ2VyU2V0RGF0ZVJhbmdlOiB0cmlnZ2VyU2V0RGF0ZVJhbmdlLCB0cmlnZ2VyU2V0RGF0ZVR5cGU6IHRyaWdnZXJTZXREYXRlVHlwZSwgc2V0U2VsZWN0ZWRQcmVzZW50RGF5VGV4dDogc2V0U2VsZWN0ZWRQcmVzZW50RGF5VGV4dCwgY3VzdG9tUG9zaXRpb246IGN1c3RvbVBvc2l0aW9uLCBzZXREYXRlUmFuZ2VUeXBlSW5Ecm9wZG93bjogc2V0RGF0ZVJhbmdlVHlwZUluRHJvcGRvd24sIFZ1ZURhdGVQaWNrZXI6IHZ1ZV9kYXRlcGlja2VyXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0Rlc2NyaXB0aW9uRm9ybScsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHt9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICByZXR1cm4geyBsYW5ndWFnZTogbGFuZ3VhZ2UgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8zID0gcmVxdWlyZShcIkBoZWFkbGVzc3VpL3Z1ZVwiKTtcbnZhciBMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uL2NvbXBvbmVudHMvTG9hZGVyLnZ1ZVwiKSk7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0Vycm9yTWVzc2FnZScsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgaXNFbXB0eToge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIHNob3cgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBoYXNFcnJvcnMgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBlcnJvckNvdW50ID0gKDAsIHZ1ZV8yLnJlZikoMCk7XG4gICAgICAgIHZhciB0b2FzdERhdGEgPSAoMCwgdnVlXzIuaW5qZWN0KSgndG9hc3REYXRhJyk7XG4gICAgICAgIHZhciBlcnJvckRhdGEgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIGFjY291bnRfdmVyaWZpZWQ6IGZhbHNlLFxuICAgICAgICAgICAgcHVibGlzaGVyX2FjdGl2ZTogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0X3NldHRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgcHVibGlzaGVyX3NldHRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgdG9rZW5fc3RhdHVzOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBpc0xvYWRlclZpc2libGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgIGZ1bmN0aW9uIHJlc2VuZFZlcmlmaWNhdGlvbkVtYWlsKCkge1xuICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wb3N0KCcvdXNlci92ZXJpZmljYXRpb24vZW1haWwnKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSByZXMuZGF0YS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gcmVzLmRhdGEuc3VjY2VzcztcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IGVycm9yLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAuYWxsKFtcbiAgICAgICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldCgnL3NldHRpbmcvc3RhdHVzJyksXG4gICAgICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoJy91c2VyL3ZlcmlmaWNhdGlvbi9zdGF0dXMnKSxcbiAgICAgICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldCgnL29yZ2FuaXNhdGlvbi9zdGF0dXMnKSxcbiAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAudGhlbihheGlvc18xLmRlZmF1bHQuc3ByZWFkKGZ1bmN0aW9uIChzZXR0aW5nX3JlcywgdXNlcl9yZXMsIG9yZ19yZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHNldHRpbmdfcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIHZhciB1c2VyX3Jlc3BvbnNlID0gdXNlcl9yZXMuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG9yZ19yZXNwb25zZSA9IG9yZ19yZXMuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JEYXRhLmRlZmF1bHRfc2V0dGluZyA9IChfYSA9IHJlc3BvbnNlID09PSBudWxsIHx8IHJlc3BvbnNlID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXNwb25zZS5kYXRhKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGVmYXVsdF9zdGF0dXM7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yRGF0YS5wdWJsaXNoZXJfc2V0dGluZyA9IChfYiA9IHJlc3BvbnNlID09PSBudWxsIHx8IHJlc3BvbnNlID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXNwb25zZS5kYXRhKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IucHVibGlzaGVyX3N0YXR1cztcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JEYXRhLnRva2VuX3N0YXR1cyA9IChfYyA9IHJlc3BvbnNlID09PSBudWxsIHx8IHJlc3BvbnNlID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXNwb25zZS5kYXRhKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MudG9rZW5fc3RhdHVzO1xuICAgICAgICAgICAgICAgICAgICBlcnJvckRhdGEuYWNjb3VudF92ZXJpZmllZCA9IHVzZXJfcmVzcG9uc2UuZGF0YS5hY2NvdW50X3ZlcmlmaWVkO1xuICAgICAgICAgICAgICAgICAgICBlcnJvckRhdGEucHVibGlzaGVyX2FjdGl2ZSA9IG9yZ19yZXNwb25zZS5kYXRhLnB1Ymxpc2hlcl9hY3RpdmU7XG4gICAgICAgICAgICAgICAgICAgIHZhciBncm91cGVkRXJyb3IgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnZGVmYXVsdF9zZXR0aW5nJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdwdWJsaXNoZXJfc2V0dGluZycsXG4gICAgICAgICAgICAgICAgICAgICAgICAndG9rZW5fc3RhdHVzJyxcbiAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZXJyb3IgaW4gZXJyb3JEYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVycm9yRGF0YVtlcnJvcl0gJiYgZ3JvdXBlZEVycm9yLmluZGV4T2YoZXJyb3IpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yQ291bnQudmFsdWUgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoIShlcnJvckRhdGEucHVibGlzaGVyX3NldHRpbmcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yRGF0YS50b2tlbl9zdGF0dXMgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yRGF0YS5kZWZhdWx0X3NldHRpbmcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvckNvdW50LnZhbHVlICs9IDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKE9iamVjdC52YWx1ZXMoZXJyb3JEYXRhKS5pbmRleE9mKGZhbHNlKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNFcnJvcnMudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfSk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGxhbmd1YWdlOiBsYW5ndWFnZSwgc2hvdzogc2hvdywgaGFzRXJyb3JzOiBoYXNFcnJvcnMsIGVycm9yQ291bnQ6IGVycm9yQ291bnQsIHRvYXN0RGF0YTogdG9hc3REYXRhLCBlcnJvckRhdGE6IGVycm9yRGF0YSwgaXNMb2FkZXJWaXNpYmxlOiBpc0xvYWRlclZpc2libGUsIHJlc2VuZFZlcmlmaWNhdGlvbkVtYWlsOiByZXNlbmRWZXJpZmljYXRpb25FbWFpbCwgVHJhbnNpdGlvblJvb3Q6IHZ1ZV8zLlRyYW5zaXRpb25Sb290LCBMb2FkZXI6IExvYWRlcl92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnRXJyb3JQb3BVcCcsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgbWVzc2FnZToge1xuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICB0eXBlOiBBcnJheSB8fCBTdHJpbmcsXG4gICAgICAgIH0sXG4gICAgICAgIHRpdGxlOiB7IHR5cGU6IFN0cmluZywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIGVtaXRzOiBbJ2Nsb3NlLXBvcHVwJ10sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlLCBlbWl0ID0gX2EuZW1pdDtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgY2xvc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBlbWl0KCdjbG9zZS1wb3B1cCcsICdjbG9zZWQnKTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIub25Vbm1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGxhbmd1YWdlOiBsYW5ndWFnZSwgZW1pdDogZW1pdCwgcHJvcHM6IHByb3BzLCBjbG9zZTogY2xvc2UgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIHByb3BzOiB7XG4gICAgICAgIG5hbWU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICBob3ZlclRleHQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB3aWR0aDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJ3ctNjAnLFxuICAgICAgICB9LFxuICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIGxpbms6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICBpY29uU2l6ZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIHNob3dJYXRpUmVmZXJlbmNlOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgcmV0dXJuIHsgbGFuZ3VhZ2U6IGxhbmd1YWdlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdMb2FkZXJDbXAnLFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdNdWx0aVNlbGVjdFdpdGhTZWFyY2gnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGxpc3RJdGVtczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGhlYWRlcjoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBlbWl0czogWydjaGFuZ2VTZWxlY3RlZFB1Ymxpc2hlcicsICdjbG9zZSddLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZSwgZW1pdCA9IF9hLmVtaXQ7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgdGVtcExpc3RJdGVtcyA9ICgwLCB2dWVfMi5yZWYpKFtdKTtcbiAgICAgICAgdmFyIHB1Ymxpc2hlclR5cGVNdWx0aXNlbGVjdCA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMocHJvcHMubGlzdEl0ZW1zKTtcbiAgICAgICAgdmFyIHNlYXJjaElucHV0ID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICB2YXIgY2hlY2tlZEJveGVzID0gKDAsIHZ1ZV8yLnJlZikoW10pO1xuICAgICAgICB2YXIgY2hhbmdlU2VsZWN0ZWRQdWJsaXNoZXIgPSBmdW5jdGlvbiAoc2VsZWN0ZWRQdWJsaXNoZXJUeXBlKSB7XG4gICAgICAgICAgICBlbWl0KCdjaGFuZ2VTZWxlY3RlZFB1Ymxpc2hlcicsIHNlbGVjdGVkUHVibGlzaGVyVHlwZSk7XG4gICAgICAgIH07XG4gICAgICAgIGZvcm1hdFB1Ymxpc2hlclR5cGUoKTtcbiAgICAgICAgZnVuY3Rpb24gZm9ybWF0UHVibGlzaGVyVHlwZSgpIHtcbiAgICAgICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMocHJvcHMubGlzdEl0ZW1zKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHRlbXBMaXN0SXRlbXMudmFsdWUucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGtleToga2V5c1tpXSxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHByb3BzLmxpc3RJdGVtc1trZXlzW2ldXSxcbiAgICAgICAgICAgICAgICAgICAgc2hvdzogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBwdWJsaXNoZXJUeXBlTXVsdGlzZWxlY3QudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBrZWVwUHVibGlzaGVyTW9kZWxPcGVuKTtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi5vbkJlZm9yZVVubW91bnQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHB1Ymxpc2hlclR5cGVNdWx0aXNlbGVjdC52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGtlZXBQdWJsaXNoZXJNb2RlbE9wZW4pO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHNob3dOb0RhdGFDb21wb25lbnQgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBjb3VudCA9IDA7XG4gICAgICAgICAgICB0ZW1wTGlzdEl0ZW1zLnZhbHVlLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLnNob3cpIHtcbiAgICAgICAgICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiAhY291bnQ7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgdXBkYXRlQXJyYXlCeVNlYXJjaCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBzZWFyY2hTdHJpbmcgPSBzZWFyY2hJbnB1dC52YWx1ZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSB0ZW1wTGlzdEl0ZW1zLnZhbHVlW2ldO1xuICAgICAgICAgICAgICAgIHRlbXBMaXN0SXRlbXMudmFsdWVbaV0uc2hvdyA9IGl0ZW0ubGFiZWxcbiAgICAgICAgICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgLmluY2x1ZGVzKHNlYXJjaFN0cmluZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBrZWVwUHVibGlzaGVyTW9kZWxPcGVuID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGFwcGx5RmlsdGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZW1pdCgnY2xvc2UnKTtcbiAgICAgICAgICAgIGNoYW5nZVNlbGVjdGVkUHVibGlzaGVyKGNoZWNrZWRCb3hlcy52YWx1ZSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHByb3BzOiBwcm9wcywgdGVtcExpc3RJdGVtczogdGVtcExpc3RJdGVtcywgcHVibGlzaGVyVHlwZU11bHRpc2VsZWN0OiBwdWJsaXNoZXJUeXBlTXVsdGlzZWxlY3QsIGVtaXQ6IGVtaXQsIGtleXM6IGtleXMsIHNlYXJjaElucHV0OiBzZWFyY2hJbnB1dCwgY2hlY2tlZEJveGVzOiBjaGVja2VkQm94ZXMsIGNoYW5nZVNlbGVjdGVkUHVibGlzaGVyOiBjaGFuZ2VTZWxlY3RlZFB1Ymxpc2hlciwgZm9ybWF0UHVibGlzaGVyVHlwZTogZm9ybWF0UHVibGlzaGVyVHlwZSwgc2hvd05vRGF0YUNvbXBvbmVudDogc2hvd05vRGF0YUNvbXBvbmVudCwgdXBkYXRlQXJyYXlCeVNlYXJjaDogdXBkYXRlQXJyYXlCeVNlYXJjaCwga2VlcFB1Ymxpc2hlck1vZGVsT3Blbjoga2VlcFB1Ymxpc2hlck1vZGVsT3BlbiwgYXBwbHlGaWx0ZXI6IGFwcGx5RmlsdGVyLCBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBwcm9wczoge1xuICAgICAgICBuYW1lOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdGV4dDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGJ0blRleHQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBidG5MaW5rOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByb3BzOiBwcm9wcyxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1BvcHVwTW9kYWwnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIG1vZGFsQWN0aXZlOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIG5vUGFkZGluZzoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICB3aWR0aDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJzgwOScsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBlbWl0czogWydjbG9zZScsICdyZXNldCddLFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBlbWl0ID0gX2EuZW1pdDtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBwcm9wcy5tb2RhbEFjdGl2ZTsgfSwgZnVuY3Rpb24gKG1vZGFsQWN0aXZlKSB7XG4gICAgICAgICAgICBpZiAobW9kYWxBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBjbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgICAgIGVtaXQoJ2Nsb3NlJyk7XG4gICAgICAgICAgICBlbWl0KCdyZXNldCcpO1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4geyBjbG9zZTogY2xvc2UgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlM19yYWRpYWxfcHJvZ3Jlc3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwidnVlMy1yYWRpYWwtcHJvZ3Jlc3NcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgUmFkaWFsUHJvZ3Jlc3NCYXI6IHZ1ZTNfcmFkaWFsX3Byb2dyZXNzXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIHBlcmNlbnQ6IHtcbiAgICAgICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IDAsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBjb21wbGV0ZWRQZXJjZW50ID0gKDAsIHZ1ZV8xLnJlZikocHJvcHMucGVyY2VudCk7XG4gICAgICAgIHZhciB0b3RhbFBlcmNlbnQgPSAoMCwgdnVlXzEucmVmKSgxMDApO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29tcGxldGVkUGVyY2VudDogY29tcGxldGVkUGVyY2VudCxcbiAgICAgICAgICAgIHRvdGFsUGVyY2VudDogdG90YWxQZXJjZW50LFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBTaGltbWVyTG9hZGluZ192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9TaGltbWVyTG9hZGluZy52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1RhYmxlTG9hZGVyQ29tcG9uZW50JyxcbiAgICBwcm9wczoge1xuICAgICAgICByb3dDb3VudDogeyB0eXBlOiBOdW1iZXIsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIGNvbENvdW50OiB7IHR5cGU6IE51bWJlciwgcmVxdWlyZWQ6IGZhbHNlLCBkZWZhdWx0OiAxIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBTaGltbWVyTG9hZGluZzogU2hpbW1lckxvYWRpbmdfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1BhZ2luYXRpb25Db21wb25lbnQnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBlbWl0czogWydmZXRjaEFjdGl2aXRpZXMnXSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzLCBfYSkge1xuICAgICAgICB2YXIgZW1pdCA9IF9hLmVtaXQ7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgYWN0aXZlX3BhZ2UgPSAoMCwgdnVlXzEucmVmKSgxKTtcbiAgICAgICAgdmFyIGxhc3RfcGFnZWxpc3QgPSAoMCwgdnVlXzEucmVmKSgpO1xuICAgICAgICB2YXIgbWlkX3BhZ2VsaXN0ID0gKDAsIHZ1ZV8xLnJlZikoKTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBwcm9wcy5yZXNldDsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBhY3RpdmVfcGFnZS52YWx1ZSA9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGFjdGl2ZV9wYWdlLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBlbWl0KCdmZXRjaEFjdGl2aXRpZXMnLCBhY3RpdmVfcGFnZS52YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgbGFzdHBhZ2VzID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gbGFzdF9wYWdlbGlzdC52YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBtaWRwYWdlcyA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIG1pZF9wYWdlbGlzdC52YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZUFjdGl2ZVBhZ2UocGFnZSkge1xuICAgICAgICAgICAgYWN0aXZlX3BhZ2UudmFsdWUgPSBwYWdlO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGNoYW5nZVBhZ2UocGFnZU51bSkge1xuICAgICAgICAgICAgYWN0aXZlX3BhZ2UudmFsdWUgPSBwYWdlTnVtO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIG5leHRQYWdlKCkge1xuICAgICAgICAgICAgYWN0aXZlX3BhZ2UudmFsdWUgPVxuICAgICAgICAgICAgICAgIGFjdGl2ZV9wYWdlLnZhbHVlID09PSBwcm9wcy5kYXRhLmxhc3RfcGFnZSA/IDEgOiBhY3RpdmVfcGFnZS52YWx1ZSArIDE7XG4gICAgICAgIH1cbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBhY3RpdmVfcGFnZS52YWx1ZTsgfSwgZnVuY3Rpb24gKGN1cnJlbnRQYWdlKSB7XG4gICAgICAgICAgICBsYXN0X3BhZ2VsaXN0LnZhbHVlID0gQXJyYXkuZnJvbShBcnJheShwcm9wcy5kYXRhLmxhc3RfcGFnZSksIGZ1bmN0aW9uIChfLCBpbmRleCkgeyByZXR1cm4gaW5kZXggKyAxOyB9KTtcbiAgICAgICAgICAgIGxhc3RfcGFnZWxpc3QudmFsdWUgPSBsYXN0X3BhZ2VsaXN0LnZhbHVlLmZpbHRlcihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKHZhbHVlID4gcHJvcHMuZGF0YS5sYXN0X3BhZ2UgLSA1ICYmIHByb3BzLmRhdGEubGFzdF9wYWdlICE9IHZhbHVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgbWlkX3BhZ2VsaXN0LnZhbHVlID0gQXJyYXkuZnJvbShBcnJheShjdXJyZW50UGFnZSArIDIpLCBmdW5jdGlvbiAoXywgaW5kZXgpIHsgcmV0dXJuIGluZGV4ICsgMTsgfSk7XG4gICAgICAgICAgICBtaWRfcGFnZWxpc3QudmFsdWUgPSBtaWRfcGFnZWxpc3QudmFsdWUuZmlsdGVyKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSA+IGN1cnJlbnRQYWdlIC0gMztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgZnVuY3Rpb24gcHJldmlvdXNQYWdlKCkge1xuICAgICAgICAgICAgYWN0aXZlX3BhZ2UudmFsdWUgPVxuICAgICAgICAgICAgICAgIGFjdGl2ZV9wYWdlLnZhbHVlID09PSAxID8gcHJvcHMuZGF0YS5sYXN0X3BhZ2UgOiBhY3RpdmVfcGFnZS52YWx1ZSAtIDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByb3BzOiBwcm9wcyxcbiAgICAgICAgICAgIGFjdGl2ZV9wYWdlOiBhY3RpdmVfcGFnZSxcbiAgICAgICAgICAgIHVwZGF0ZUFjdGl2ZVBhZ2U6IHVwZGF0ZUFjdGl2ZVBhZ2UsXG4gICAgICAgICAgICBuZXh0UGFnZTogbmV4dFBhZ2UsXG4gICAgICAgICAgICBwcmV2aW91c1BhZ2U6IHByZXZpb3VzUGFnZSxcbiAgICAgICAgICAgIGNoYW5nZVBhZ2U6IGNoYW5nZVBhZ2UsXG4gICAgICAgICAgICBsYXN0cGFnZXM6IGxhc3RwYWdlcyxcbiAgICAgICAgICAgIG1pZHBhZ2VzOiBtaWRwYWdlcyxcbiAgICAgICAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1RvYXN0TWVzc2FnZScsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgbWVzc2FnZTogeyB0eXBlOiBTdHJpbmcsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHR5cGU6IHsgdHlwZTogQm9vbGVhbiwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBjbGFzc05hbWUgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIGNsYXNzTmFtZS52YWx1ZSA9XG4gICAgICAgICAgICBwcm9wcy50eXBlID09PSB0cnVlXG4gICAgICAgICAgICAgICAgPyAncm91bmRlZC1sZyBiZy1taW50IGJvcmRlciBib3JkZXItc3ByaW5nLTUwIHB5LTMgcHgtNSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0xIHRleHQtc20gbGVhZGluZy1ub3JtYWwgdGV4dC1uLTUwJ1xuICAgICAgICAgICAgICAgIDogJ3JvdW5kZWQtbGcgYmctY3JpbXNvbi0xMCBib3JkZXIgYm9yZGVyLWNyaW1zb24tMjAgcHktMyBweC01IGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTEgdGV4dC1zbSBsZWFkaW5nLW5vcm1hbCB0ZXh0LW4tNTAnO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBwcm9wczogcHJvcHMsIGNsYXNzTmFtZTogY2xhc3NOYW1lIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnWGxzTGlzdEVycm9yJyxcbiAgICBwcm9wczoge1xuICAgICAgICAvLyBOdW1iZXIgd2l0aCBhIGRlZmF1bHQgdmFsdWVcbiAgICAgICAgaW1wb3J0RGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHdpZHRoOiB7IHR5cGU6IE51bWJlciwgcmVxdWlyZWQ6IGZhbHNlLCBkZWZhdWx0OiAwIH0sXG4gICAgICAgIGFjdGl2aXR5OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgaW5kZXg6IHtcbiAgICAgICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBzdGF0dXM6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIHNob3dFcnJvcnMgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93Q3JpdGljYWwgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBjcml0aWNhbFRvZ2dsZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNob3dFcnJvciA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGVycm9yVG9nZ2xlID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgd2FybmluZ1RvZ2dsZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNob3dXYXJuaW5nID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgZXJyb3JMZW5ndGggPSBmdW5jdGlvbiAoY3VycmVudEVycm9yKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgdmFyIGNvdW50ID0gMDtcbiAgICAgICAgICAgICgoX2EgPSBwcm9wcy5hY3Rpdml0eSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmVycm9yc1tjdXJyZW50RXJyb3JdKSAmJlxuICAgICAgICAgICAgICAgICgoX2IgPSBPYmplY3QudmFsdWVzKHByb3BzLmFjdGl2aXR5WydlcnJvcnMnXVtjdXJyZW50RXJyb3JdKSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICBjb3VudCArPSBPYmplY3Qua2V5cyhpdGVtKS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgcmV0dXJuIGNvdW50O1xuICAgICAgICB9O1xuICAgICAgICB2YXIgdGl0bGUgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICAgICAgc3dpdGNoIChwcm9wcy5zdGF0dXNbJ3RlbXBsYXRlJ10pIHtcbiAgICAgICAgICAgICAgICBjYXNlICdhY3Rpdml0eSc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5hY3Rpdml0eS5kYXRhLnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IChfYSA9IHByb3BzLmFjdGl2aXR5LmRhdGEudGl0bGVbMF0ubmFycmF0aXZlKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnVW50aXRsZWQnXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICdVbnRpdGxlZCc7XG4gICAgICAgICAgICAgICAgY2FzZSAncmVzdWx0JzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzLmFjdGl2aXR5LmRhdGEudGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gKF9iID0gcHJvcHMuYWN0aXZpdHkuZGF0YS50aXRsZVswXS5uYXJyYXRpdmVbMF1bJ25hcnJhdGl2ZSddKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAnVW50aXRsZWQnXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICdVbnRpdGxlZCc7XG4gICAgICAgICAgICAgICAgY2FzZSAncGVyaW9kJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgocHJvcHMuYWN0aXZpdHkuZGF0YS5wZXJpb2Rfc3RhcnQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmFjdGl2aXR5LmRhdGEucGVyaW9kX3N0YXJ0WzBdLmRhdGUpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICcgLSAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcy5hY3Rpdml0eS5kYXRhLnBlcmlvZF9lbmQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5hY3Rpdml0eS5kYXRhLnBlcmlvZF9lbmRbMF0uZGF0ZSkpO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2luZGljYXRvcic6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5hY3Rpdml0eS5kYXRhLnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IChfYyA9IHByb3BzLmFjdGl2aXR5LmRhdGEudGl0bGVbMF0ubmFycmF0aXZlWzBdWyduYXJyYXRpdmUnXSkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogJ1VudGl0bGVkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAnVW50aXRsZWQnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnVW50aXRsZWQnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGNvdW50RXJyb3JzID0gZnVuY3Rpb24gKGFjdGl2aXR5SW5kZXgpIHtcbiAgICAgICAgICAgIHZhciBjb3VudCA9IDA7XG4gICAgICAgICAgICBmb3IgKHZhciB0eXBlIGluIHByb3BzLmltcG9ydERhdGFbYWN0aXZpdHlJbmRleF1bJ2Vycm9ycyddKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaW5kZXggaW4gcHJvcHMuaW1wb3J0RGF0YVthY3Rpdml0eUluZGV4XVsnZXJyb3JzJ11bdHlwZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgY291bnQgKz1cbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmltcG9ydERhdGFbYWN0aXZpdHlJbmRleF0gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhwcm9wcy5pbXBvcnREYXRhW2FjdGl2aXR5SW5kZXhdWydlcnJvcnMnXVt0eXBlXVtpbmRleF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvdW50O1xuICAgICAgICB9O1xuICAgICAgICB2YXIgY3JpdGljYWxBY2NvcmRpb25Ub2dnbGUgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgc2hvd0NyaXRpY2FsLnZhbHVlID0gIXNob3dDcml0aWNhbC52YWx1ZTtcbiAgICAgICAgICAgIHZhciBjdXJyZW50VGFyZ2V0ID0gZS5jdXJyZW50VGFyZ2V0O1xuICAgICAgICAgICAgdmFyIHRhcmdldCA9IGN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuY3JpdGljYWwtZHJvcGRvd24tY29udGFpbmVyJyk7XG4gICAgICAgICAgICB2YXIgZWxIZWlnaHQgPSAoX2EgPSB0YXJnZXQgPT09IG51bGwgfHwgdGFyZ2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0YXJnZXQucXVlcnlTZWxlY3RvcignLmNyaXRpY2FsLWRyb3Bkb3duJykpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jbGllbnRIZWlnaHQ7XG4gICAgICAgICAgICBpZiAoY3JpdGljYWxUb2dnbGUudmFsdWUgJiYgdGFyZ2V0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBcIi5jb25jYXQoZWxIZWlnaHQsIFwicHg7XCIpO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiXCI7XG4gICAgICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgICAgICAgICBjcml0aWNhbFRvZ2dsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGFyZ2V0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBcIi5jb25jYXQoZWxIZWlnaHQsIFwicHg7XCIpO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBhdXRvO1wiO1xuICAgICAgICAgICAgICAgIH0sIDYwMCk7XG4gICAgICAgICAgICAgICAgY3JpdGljYWxUb2dnbGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgd2FybmluZ0FjY29yZGlvblRvZ2dsZSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBzaG93V2FybmluZy52YWx1ZSA9ICFzaG93V2FybmluZy52YWx1ZTtcbiAgICAgICAgICAgIHZhciBjdXJyZW50VGFyZ2V0ID0gZS5jdXJyZW50VGFyZ2V0O1xuICAgICAgICAgICAgdmFyIHRhcmdldCA9IGN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudC5xdWVyeVNlbGVjdG9yKCcud2FybmluZy1kcm9wZG93bi1jb250YWluZXInKTtcbiAgICAgICAgICAgIHZhciBlbEhlaWdodCA9IChfYSA9IHRhcmdldCA9PT0gbnVsbCB8fCB0YXJnZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRhcmdldC5xdWVyeVNlbGVjdG9yKCcud2FybmluZy1kcm9wZG93bicpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2xpZW50SGVpZ2h0O1xuICAgICAgICAgICAgaWYgKHdhcm5pbmdUb2dnbGUudmFsdWUgJiYgdGFyZ2V0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBcIi5jb25jYXQoZWxIZWlnaHQsIFwicHg7XCIpO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiXCI7XG4gICAgICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgICAgICAgICB3YXJuaW5nVG9nZ2xlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0YXJnZXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IFwiLmNvbmNhdChlbEhlaWdodCwgXCJweDtcIik7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IGF1dG87XCI7XG4gICAgICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgICAgICAgICB3YXJuaW5nVG9nZ2xlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGVycm9yQWNjb3JkaW9uVG9nZ2xlID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHNob3dFcnJvci52YWx1ZSA9ICFzaG93RXJyb3IudmFsdWU7XG4gICAgICAgICAgICB2YXIgY3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldDtcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSBjdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignLmVycm9yLWRyb3Bkb3duLWNvbnRhaW5lcicpO1xuICAgICAgICAgICAgdmFyIGVsSGVpZ2h0ID0gKF9hID0gdGFyZ2V0ID09PSBudWxsIHx8IHRhcmdldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGFyZ2V0LnF1ZXJ5U2VsZWN0b3IoJy5lcnJvci1kcm9wZG93bicpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2xpZW50SGVpZ2h0O1xuICAgICAgICAgICAgaWYgKGVycm9yVG9nZ2xlLnZhbHVlICYmIHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcIlwiO1xuICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgICAgICAgICAgZXJyb3JUb2dnbGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogYXV0bztcIjtcbiAgICAgICAgICAgICAgICB9LCA2MDApO1xuICAgICAgICAgICAgICAgIGVycm9yVG9nZ2xlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgc2hvd0Vycm9yczogc2hvd0Vycm9ycywgc2hvd0NyaXRpY2FsOiBzaG93Q3JpdGljYWwsIGNyaXRpY2FsVG9nZ2xlOiBjcml0aWNhbFRvZ2dsZSwgc2hvd0Vycm9yOiBzaG93RXJyb3IsIGVycm9yVG9nZ2xlOiBlcnJvclRvZ2dsZSwgd2FybmluZ1RvZ2dsZTogd2FybmluZ1RvZ2dsZSwgc2hvd1dhcm5pbmc6IHNob3dXYXJuaW5nLCBwcm9wczogcHJvcHMsIGVycm9yTGVuZ3RoOiBlcnJvckxlbmd0aCwgdGl0bGU6IHRpdGxlLCBjb3VudEVycm9yczogY291bnRFcnJvcnMsIGNyaXRpY2FsQWNjb3JkaW9uVG9nZ2xlOiBjcml0aWNhbEFjY29yZGlvblRvZ2dsZSwgd2FybmluZ0FjY29yZGlvblRvZ2dsZTogd2FybmluZ0FjY29yZGlvblRvZ2dsZSwgZXJyb3JBY2NvcmRpb25Ub2dnbGU6IGVycm9yQWNjb3JkaW9uVG9nZ2xlIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgc3Bpbm5lckxvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9zcGlubmVyTG9hZGVyLnZ1ZVwiKSk7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1hsc0xvYWRlcicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgYWN0aXZpdHlOYW1lOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGVkOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIHRvdGFsQ291bnQ6IHtcbiAgICAgICAgICAgIHR5cGU6IE51bWJlciB8fCBudWxsLFxuICAgICAgICAgICAgZGVmYXVsdDogMCxcbiAgICAgICAgfSxcbiAgICAgICAgcHJvY2Vzc2VkQ291bnQ6IHtcbiAgICAgICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgICAgIGRlZmF1bHQ6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHhsc0ZhaWxlZDoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgZW1pdHM6IFsnY2xvc2UnXSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgY3VycmVudEFjdGl2aXR5ID0gKDAsIHZ1ZV8yLnJlZikobnVsbCk7XG4gICAgICAgIHZhciBtYXhpbWl6ZSA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBzaG93TWluaW1pemVkTW9kZWwgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBtYXBBY3Rpdml0eU5hbWUgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICAgICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnYWN0aXZpdHknOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ0Jhc2ljIEFjdGl2aXR5IEVsZW1lbnRzJztcbiAgICAgICAgICAgICAgICBjYXNlICdwZXJpb2QnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1BlcmlvZCc7XG4gICAgICAgICAgICAgICAgY2FzZSAnaW5kaWNhdG9yJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdJbmRpY2F0b3JzIGV4Y2VwdCBQZXJpb2QnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3Jlc3VsdCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnUmVzdWx0IGV4Y2VwdCBJbmRpY2F0b3JzIGFuZCBQZXJpb2QnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuYW1lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgcmV0cnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZGVsZXRlKFwiL2ltcG9ydC94bHNcIik7XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvaW1wb3J0L3hscyc7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdtYXhpbWl6ZScpID09PSAnZmFsc2UnXG4gICAgICAgICAgICAgICAgPyAobWF4aW1pemUudmFsdWUgPSBmYWxzZSlcbiAgICAgICAgICAgICAgICA6IChtYXhpbWl6ZS52YWx1ZSA9IHRydWUpO1xuICAgICAgICAgICAgY3VycmVudEFjdGl2aXR5LnZhbHVlID0gbWFwQWN0aXZpdHlOYW1lKHByb3BzLmFjdGl2aXR5TmFtZSk7XG4gICAgICAgICAgICB2YXIgY2hlY2tTdXBwb3J0QnV0dG9uID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBzdXBwb3J0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2xhdW5jaGVyJyk7XG4gICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRCdXR0b24gIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgc3VwcG9ydEJ1dHRvbi5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRleSgtNTBweCknO1xuICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrU3VwcG9ydEJ1dHRvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgMTApO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBtYXhpbWl6ZS52YWx1ZTsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHJldHVybiAoc2hvd01pbmltaXplZE1vZGVsLnZhbHVlID0gdHJ1ZSk7IH0sIDI2MCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzaG93TWluaW1pemVkTW9kZWwudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdtYXhpbWl6ZScsIHZhbHVlLnRvU3RyaW5nKCkpO1xuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgICgwLCB2dWVfMi5vblVubW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ21heGltaXplJywgJycpO1xuICAgICAgICAgICAgdmFyIHN1cHBvcnRCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbGF1bmNoZXInKTtcbiAgICAgICAgICAgIGlmIChzdXBwb3J0QnV0dG9uICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgc3VwcG9ydEJ1dHRvbi5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRleSgwcHgpJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBwZXJjZW50YWdlV2lkdGggPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChwcm9wcy50b3RhbENvdW50ICE9PSAwICYmIHByb3BzLnRvdGFsQ291bnQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKHByb3BzLnByb2Nlc3NlZENvdW50IC8gcHJvcHMudG90YWxDb3VudCkgKiAxMDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChwcm9wcy5jb21wbGV0ZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMTAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgeGxzRmFpbGVkTWVzc2FnZSA9ICgwLCB2dWVfMi5pbmplY3QpKCd4bHNGYWlsZWRNZXNzYWdlJyk7XG4gICAgICAgIHZhciBwcm9jZXNzaW5nID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3Byb2Nlc3NpbmcnKTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgY3VycmVudEFjdGl2aXR5OiBjdXJyZW50QWN0aXZpdHksIG1heGltaXplOiBtYXhpbWl6ZSwgc2hvd01pbmltaXplZE1vZGVsOiBzaG93TWluaW1pemVkTW9kZWwsIHByb3BzOiBwcm9wcywgbWFwQWN0aXZpdHlOYW1lOiBtYXBBY3Rpdml0eU5hbWUsIHJldHJ5OiByZXRyeSwgcGVyY2VudGFnZVdpZHRoOiBwZXJjZW50YWdlV2lkdGgsIHhsc0ZhaWxlZE1lc3NhZ2U6IHhsc0ZhaWxlZE1lc3NhZ2UsIHByb2Nlc3Npbmc6IHByb2Nlc3NpbmcsIHNwaW5uZXJMb2FkZXI6IHNwaW5uZXJMb2FkZXJfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgQWN0aXZpdHlEb3dubG9hZF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9BY3Rpdml0eURvd25sb2FkLnZ1ZVwiKSk7XG52YXIgWGxzTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL1hsc0xvYWRlci52dWVcIikpO1xudmFyIEJ1bGtwdWJsaXNoV2l0aFhsc192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9CdWxrcHVibGlzaFdpdGhYbHMudnVlXCIpKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIGluZGV4XzEgPSByZXF1aXJlKFwiU3RvcmUvYWN0aXZpdGllcy9pbmRleFwiKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1hsc1VwbG9hZEluZGljYXRvcicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgYWN0aXZpdHlOYW1lOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGVkOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIHRvdGFsQ291bnQ6IHtcbiAgICAgICAgICAgIHR5cGU6IE51bWJlciB8fCBudWxsLFxuICAgICAgICAgICAgZGVmYXVsdDogMCxcbiAgICAgICAgfSxcbiAgICAgICAgcHJvY2Vzc2VkQ291bnQ6IHtcbiAgICAgICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgICAgIGRlZmF1bHQ6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHhsc0ZhaWxlZDoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICB4bHNEYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgX2I7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgc3RvcmUgPSAoMCwgaW5kZXhfMS51c2VTdG9yZSkoKTtcbiAgICAgICAgdmFyIHNob3dYbHNTdGF0dXMgPSAoMCwgdnVlXzIucmVmKSh0cnVlKTtcbiAgICAgICAgdmFyIGRvd25sb2FkQ29tcGxldGVkID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgY2FuY2VsRG93bmxvYWQgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93QnVsa3B1Ymxpc2ggPSAoMCwgdnVlXzIucmVmKSh0cnVlKTtcbiAgICAgICAgdmFyIHB1Ymxpc2hpbmdBY3Rpdml0aWVzID0gKDAsIHZ1ZV8yLnJlZikoW10pO1xuICAgICAgICB2YXIgYnVsa1B1Ymxpc2hMZW5ndGggPSAoMCwgdnVlXzIucmVmKSgwKTtcbiAgICAgICAgdmFyIHBhID0gKDAsIGNvcmVfMS51c2VTdG9yYWdlKSgndnVlLXVzZS1sb2NhbC1zdG9yYWdlJywge1xuICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXM6IChfYiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdwdWJsaXNoaW5nQWN0aXZpdGllcycpKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiB7fSxcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHB1Ymxpc2hpbmdBY3Rpdml0aWVzLnZhbHVlID1cbiAgICAgICAgICAgICAgICBwYS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcyAmJiBPYmplY3Qua2V5cyhwYS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcyk7XG4gICAgICAgICAgICB2YXIgY2hlY2tTdXBwb3J0QnV0dG9uID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBzdXBwb3J0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2xhdW5jaGVyJyk7XG4gICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRCdXR0b24gIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgc3VwcG9ydEJ1dHRvbi5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRleSgtNTBweCknO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIShwcm9wcy54bHNEYXRhICYmIHNob3dYbHNTdGF0dXMpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhKGRvd25sb2FkaW5nICYmICFkb3dubG9hZENvbXBsZXRlZC52YWx1ZSAmJiAhY2FuY2VsRG93bmxvYWQudmFsdWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93QnVsa3B1Ymxpc2ggJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hpbmdBY3Rpdml0aWVzLnZhbHVlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllcy52YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0QnV0dG9uLnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGUoLTM1MHB4ICwwcHgpJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrU3VwcG9ydEJ1dHRvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgMTApO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBbc3RvcmUuc3RhdGUuc3RhcnRCdWxrUHVibGlzaCwgc3RvcmUuc3RhdGUuYnVsa3B1Ymxpc2hBY3Rpdml0aWVzXTsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllcy52YWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgIHN0b3JlLnN0YXRlLmJ1bGtwdWJsaXNoQWN0aXZpdGllcy5wdWJsaXNoaW5nQWN0aXZpdGllcyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoc3RvcmUuc3RhdGUuYnVsa3B1Ymxpc2hBY3Rpdml0aWVzLnB1Ymxpc2hpbmdBY3Rpdml0aWVzKTtcbiAgICAgICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllcy52YWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgIHBhLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhwYS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuc3RhcnRCdWxrUHVibGlzaDsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hvd0J1bGtwdWJsaXNoLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIFtcbiAgICAgICAgICAgIHByb3BzLnhsc0RhdGEsXG4gICAgICAgICAgICBzaG93WGxzU3RhdHVzLnZhbHVlLFxuICAgICAgICAgICAgZG93bmxvYWRpbmcsXG4gICAgICAgICAgICBkb3dubG9hZENvbXBsZXRlZC52YWx1ZSxcbiAgICAgICAgICAgIGNhbmNlbERvd25sb2FkLnZhbHVlLFxuICAgICAgICBdOyB9LCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgIHZhciB4bHNEYXRhID0gX2FbMF0sIHNob3dYbHNTdGF0dXMgPSBfYVsxXSwgZG93bmxvYWRpbmcgPSBfYVsyXSwgZG93bmxvYWRDb21wbGV0ZWQgPSBfYVszXSwgY2FuY2VsRG93bmxvYWQgPSBfYVs0XTtcbiAgICAgICAgICAgIHZhciBzdXBwb3J0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2xhdW5jaGVyJyk7XG4gICAgICAgICAgICBpZiAoISh4bHNEYXRhICYmIHNob3dYbHNTdGF0dXMpICYmXG4gICAgICAgICAgICAgICAgIShkb3dubG9hZGluZyAmJiAhZG93bmxvYWRDb21wbGV0ZWQgJiYgIWNhbmNlbERvd25sb2FkKSAmJlxuICAgICAgICAgICAgICAgIHNob3dCdWxrcHVibGlzaCAmJlxuICAgICAgICAgICAgICAgIHB1Ymxpc2hpbmdBY3Rpdml0aWVzLnZhbHVlICYmXG4gICAgICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXMudmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3VwcG9ydEJ1dHRvbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydEJ1dHRvbi5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRlKC0zNTBweCAsMHB4KSc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoc3VwcG9ydEJ1dHRvbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHN1cHBvcnRCdXR0b24uc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZXkoLTUwcHgpJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi5vblVubW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHN1cHBvcnRCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbGF1bmNoZXInKTtcbiAgICAgICAgICAgIGlmIChzdXBwb3J0QnV0dG9uICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKGJ1bGtQdWJsaXNoTGVuZ3RoLnZhbHVlID4gMCB8fFxuICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhwYS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBzdXBwb3J0QnV0dG9uLnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGUoLTM1MHB4ICwtMjBweCknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3VwcG9ydEJ1dHRvbi5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRlWSgtNjVweCknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBjbG9zZUJ1bGtwdWJsaXNoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hvd0J1bGtwdWJsaXNoLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndnVlLXVzZS1sb2NhbC1zdG9yYWdlJywgJ3B1Ymxpc2hpbmdBY3Rpdml0aWVzOnt9Jyk7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlQnVsa3B1Ymxpc2hBY3Rpdml0aWVzJywge30pO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmRlbGV0ZShcIi9hY3Rpdml0aWVzL2RlbGV0ZS1idWxrLXB1Ymxpc2gtc3RhdHVzXCIpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgY2xvc2VYbHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzaG93WGxzU3RhdHVzLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZGVsZXRlKFwiL2ltcG9ydC94bHNcIikudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZUNhbmNlbFVwbG9hZCcsIHRydWUpO1xuICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVDbG9zZVhsc01vZGVsJywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5kaXNwYXRjaCgndXBkYXRlQ2xvc2VYbHNNb2RlbCcsIGZhbHNlKTsgfSwgMjAwMCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5jb21wbGV0ZVhsc0Rvd25sb2FkOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGRvd25sb2FkQ29tcGxldGVkLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRvd25sb2FkQ29tcGxldGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5idWxrUHVibGlzaExlbmd0aDsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBidWxrUHVibGlzaExlbmd0aC52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuY2FuY2VsRG93bmxvYWQ7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgY2FuY2VsRG93bmxvYWQudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICB2YXIgZG93bmxvYWRpbmcgPSAoMCwgdnVlXzIuaW5qZWN0KSgnZG93bmxvYWRpbmcnKTtcbiAgICAgICAgdmFyIGFjdGl2aXRpZXMgPSAoMCwgdnVlXzIuaW5qZWN0KSgnYWN0aXZpdGllcycpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBzdG9yZTogc3RvcmUsIHNob3dYbHNTdGF0dXM6IHNob3dYbHNTdGF0dXMsIGRvd25sb2FkQ29tcGxldGVkOiBkb3dubG9hZENvbXBsZXRlZCwgY2FuY2VsRG93bmxvYWQ6IGNhbmNlbERvd25sb2FkLCBzaG93QnVsa3B1Ymxpc2g6IHNob3dCdWxrcHVibGlzaCwgcHVibGlzaGluZ0FjdGl2aXRpZXM6IHB1Ymxpc2hpbmdBY3Rpdml0aWVzLCBidWxrUHVibGlzaExlbmd0aDogYnVsa1B1Ymxpc2hMZW5ndGgsIHBhOiBwYSwgcHJvcHM6IHByb3BzLCBjbG9zZUJ1bGtwdWJsaXNoOiBjbG9zZUJ1bGtwdWJsaXNoLCBjbG9zZVhsczogY2xvc2VYbHMsIGRvd25sb2FkaW5nOiBkb3dubG9hZGluZywgYWN0aXZpdGllczogYWN0aXZpdGllcywgQWN0aXZpdHlEb3dubG9hZDogQWN0aXZpdHlEb3dubG9hZF92dWVfMS5kZWZhdWx0LCBYbHNMb2FkZXI6IFhsc0xvYWRlcl92dWVfMS5kZWZhdWx0LCBCdWxrcHVibGlzaFdpdGhYbHM6IEJ1bGtwdWJsaXNoV2l0aFhsc192dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG4vL2NvbXBvbmVudFxudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbnZhciBQb3B1cE1vZGFsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1BvcHVwTW9kYWwudnVlXCIpKTtcbnZhciBQcm9ncmVzc0xvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9Qcm9ncmVzc0xvYWRlci52dWVcIikpO1xuLy8gVnVleCBTdG9yZVxudmFyIGluZGV4XzEgPSByZXF1aXJlKFwiU3RvcmUvYWN0aXZpdGllcy9pbmRleFwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdEZWxldGVCdXR0b24nLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgc3RvcmUgPSAoMCwgaW5kZXhfMS51c2VTdG9yZSkoKTtcbiAgICAgICAgLy8gdG9nZ2xlIHN0YXRlIGZvciBtb2RhbCBwb3B1cFxuICAgICAgICB2YXIgX2IgPSAoMCwgY29yZV8xLnVzZVRvZ2dsZSkoKSwgZGVsZXRlVmFsdWUgPSBfYlswXSwgZGVsZXRlVG9nZ2xlID0gX2JbMV07XG4gICAgICAgIC8vIGRpc3BsYXkvaGlkZSB2YWxpZGF0b3IgbG9hZGVyXG4gICAgICAgIHZhciBsb2FkZXIgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZhbHVlOiBmYWxzZSxcbiAgICAgICAgICAgIHRleHQ6IGxhbmd1YWdlLmNvbW1vbl9sYW5nLnBsZWFzZV93YWl0LFxuICAgICAgICB9KTtcbiAgICAgICAgLy8gY2FsbCBhcGkgZm9yIHVucHVibGlzaGluZ1xuICAgICAgICB2YXIgdG9hc3RNZXNzYWdlID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3RvYXN0TWVzc2FnZScpO1xuICAgICAgICB2YXIgZGVsZXRlRnVuY3Rpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBsb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgbG9hZGVyLnRleHQgPVxuICAgICAgICAgICAgICAgIGxhbmd1YWdlLmV2ZW50c19sYW5nLmRlbGV0aW5nLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICtcbiAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2UuZXZlbnRzX2xhbmcuZGVsZXRpbmcuc2xpY2UoMSk7XG4gICAgICAgICAgICBkZWxldGVWYWx1ZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgdmFyIGRlbGV0ZUVuZFBvaW50ID0gXCIvYWN0aXZpdHkvXCIuY29uY2F0KHN0b3JlLnN0YXRlLnNlbGVjdGVkQWN0aXZpdGllcyk7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZGVsZXRlKGRlbGV0ZUVuZFBvaW50KS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2UubWVzc2FnZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgdG9hc3RNZXNzYWdlLnR5cGUgPSByZXNwb25zZS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKCcvYWN0aXZpdGllcycpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgbGFuZ3VhZ2U6IGxhbmd1YWdlLCBzdG9yZTogc3RvcmUsIGRlbGV0ZVZhbHVlOiBkZWxldGVWYWx1ZSwgZGVsZXRlVG9nZ2xlOiBkZWxldGVUb2dnbGUsIGxvYWRlcjogbG9hZGVyLCB0b2FzdE1lc3NhZ2U6IHRvYXN0TWVzc2FnZSwgZGVsZXRlRnVuY3Rpb246IGRlbGV0ZUZ1bmN0aW9uLCBjYXBpdGFsaXplOiB2dWVfMi5jYXBpdGFsaXplLCBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LCBNb2RhbDogUG9wdXBNb2RhbF92dWVfMS5kZWZhdWx0LCBMb2FkZXI6IFByb2dyZXNzTG9hZGVyX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdMaW5rQnV0dG9uJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICB0ZXh0OiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgbGluazoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIGljb246IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICdlZGl0JyxcbiAgICAgICAgfSxcbiAgICAgICAgZGVzaWduOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnaWNvblRleHQnLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgZGVzaWduID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRlc2lnbjtcbiAgICAgICAgdmFyIHN0eWxlVHlwZSA9IGRlc2lnbi52YWx1ZTtcbiAgICAgICAgdmFyIGNsYXNzZXMgPSAnJztcbiAgICAgICAgc3dpdGNoIChzdHlsZVR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2JnVGV4dCc6XG4gICAgICAgICAgICAgICAgY2xhc3NlcyA9ICdmbGV4IGl0ZW1zLWNlbnRlciBiZy1uLTEwIHAtMSB0ZXh0LXRpbnkgZm9udC1ib2xkIHVwcGVyY2FzZSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGNsYXNzZXMgPVxuICAgICAgICAgICAgICAgICAgICAnZmxleCBpdGVtcy1jZW50ZXIgZm9udC1ib2xkIGxlYWRpbmctbm9ybWFsIHVwcGVyY2FzZSB0ZXh0LXRpbnknO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGNsYXNzZXM6IGNsYXNzZXMgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xuLy9jb21wb25lbnRcbnZhciBCdXR0b25Db21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZVwiKSk7XG52YXIgUG9wdXBNb2RhbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZVwiKSk7XG52YXIgUHJvZ3Jlc3NMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvUHJvZ3Jlc3NMb2FkZXIudnVlXCIpKTtcbi8vIFZ1ZXggU3RvcmVcbnZhciBzaG93XzEgPSByZXF1aXJlKFwiU3RvcmUvYWN0aXZpdGllcy9zaG93XCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1B1Ymxpc2hCdXR0b24nLFxuICAgIHByb3BzOiB7XG4gICAgICAgIHR5cGU6IHsgdHlwZTogU3RyaW5nLCBkZWZhdWx0OiAncHJpbWFyeScgfSxcbiAgICAgICAgbGlua2VkVG9JYXRpOiB7IHR5cGU6IEJvb2xlYW4sIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHN0YXR1czogeyB0eXBlOiBTdHJpbmcsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIGNvcmVDb21wbGV0ZWQ6IHsgdHlwZTogQm9vbGVhbiwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgYWN0aXZpdHlJZDogeyB0eXBlOiBOdW1iZXIsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIF9iID0gKDAsIHZ1ZV8yLnRvUmVmcykocHJvcHMpLCBsaW5rZWRUb0lhdGkgPSBfYi5saW5rZWRUb0lhdGksIHN0YXR1cyA9IF9iLnN0YXR1cywgY29yZUNvbXBsZXRlZCA9IF9iLmNvcmVDb21wbGV0ZWQsIGFjdGl2aXR5SWQgPSBfYi5hY3Rpdml0eUlkO1xuICAgICAgICAoMCwgdnVlXzIub25VcGRhdGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAobG9hZGVyLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZUlzTG9hZGluZycsIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZUlzTG9hZGluZycsIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChsb2FkZXIudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBwdWJsaXNoVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwdWJsaXNoVmFsdWUudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwdWJsaXNoU3RlcC52YWx1ZSA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHB1Ymxpc2hWYWx1ZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0sIDUwMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHVibGlzaFN0ZXAudmFsdWUgPT09IDMgfHxcbiAgICAgICAgICAgICAgICBwdWJsaXNoU3RlcC52YWx1ZSA9PT0gMiB8fFxuICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGVwLnZhbHVlID09PSA0KSB7XG4gICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcHVibGlzaFZhbHVlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiAgR2xvYmFsIFN0YXRlXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgc3RvcmUgPSAoMCwgc2hvd18xLmRldGFpbFN0b3JlKSgpO1xuICAgICAgICAvL2FjdGl2aXR5IGlkXG4gICAgICAgIHZhciBpZCA9IGFjdGl2aXR5SWQudmFsdWU7XG4gICAgICAgIC8vIHRvZ2dsZSBzdGF0ZSBmb3IgbW9kYWwgcG9wdXBcbiAgICAgICAgdmFyIF9jID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIHB1Ymxpc2hWYWx1ZSA9IF9jWzBdLCBwdWJsaXNoVG9nZ2xlID0gX2NbMV07XG4gICAgICAgIC8vIHN0YXRlIGZvciBzdGVwIG9mIHRoZSBmbG93XG4gICAgICAgIHZhciBwdWJsaXNoU3RlcCA9ICgwLCB2dWVfMi5yZWYpKDApO1xuICAgICAgICAvLyBkaXNwbGF5L2hpZGUgdmFsaWRhdG9yIGxvYWRlclxuICAgICAgICB2YXIgbG9hZGVyID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICAvLyBzdGF0ZSBmb3IgZmlyc3Qgc3RlcFxuICAgICAgICAvLyBkZXRlcm1pbmUgaWYgY29yZSBlbGVtZW50IGNvbXBsZXRlZCBvciBub3RcbiAgICAgICAgLy8gdHJ1ZSBmb3IgY29tcGxldGVkIGFuZCBmYWxzZSBmb3Igbm90IGNvbXBsZXRlZFxuICAgICAgICB2YXIgY29yZUVsZW1lbnRTdGF0dXMgPSBjb3JlQ29tcGxldGVkLnZhbHVlO1xuICAgICAgICAvLyBEeW5hbWljIHRleHQgZm9yIGxvYWRlclxuICAgICAgICB2YXIgbG9hZGVyVGV4dCA9ICgwLCB2dWVfMi5yZWYpKGxhbmd1YWdlLmNvbW1vbl9sYW5nLnBsZWFzZV93YWl0KTtcbiAgICAgICAgLy8gcmVzZXQgc3RlcCB0byB6ZXJvIGFmdGVyIGNsb3NpbmcgbW9kYWxcbiAgICAgICAgdmFyIHJlc2V0UHVibGlzaFN0ZXAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBwdWJsaXNoU3RlcC52YWx1ZSA9IDA7XG4gICAgICAgICAgICBwdWJsaXNoVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gY29tcHV0ZWQgZnVuY3Rpb24gdG8gY2hhbmdlIGNvbnRlbnQgb2YgbW9kYWxcbiAgICAgICAgdmFyIHB1Ymxpc2hTdGF0ZUNoYW5nZSA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHB1Ymxpc2hTdGF0ZSA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnJyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgICAgICAgICAgICAgaWNvbjogJycsXG4gICAgICAgICAgICAgICAgYWxlcnRTdGF0ZTogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdmFyIHRpdGxlID0gJycsIGRlc2NyaXB0aW9uID0gJycsIGljb24gPSAndGljayc7XG4gICAgICAgICAgICAvLyBkaWZmZXJlbnQgY29udGVudCBmb3Igc3RlcCAxIGJhc2VkIG9uIGNvcmVFbGVtZW50IHN0YXR1c1xuICAgICAgICAgICAgaWYgKGNvcmVFbGVtZW50U3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgdGl0bGUgPSBsYW5ndWFnZS5jb21tb25fbGFuZy5jb3JlX2NvbXBsZXRlZF90aXRsZTtcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiA9IGxhbmd1YWdlLmNvbW1vbl9sYW5nLmNvcmVfY29tcGxldGVkX2Rlc2NyaXB0aW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGl0bGUgPSBsYW5ndWFnZS5jb21tb25fbGFuZy5jb3JlX25vdF9jb21wbGV0ZWRfdGl0bGU7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPSBsYW5ndWFnZS5jb21tb25fbGFuZy5jb3JlX25vdF9jb21wbGV0ZWRfZGVzY3JpcHRpb247XG4gICAgICAgICAgICAgICAgaWNvbiA9ICd3YXJuaW5nLWZpbGwnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy9jcmVhdGluZyBhIHNob3J0ZXIgdmFyaWFibGUgc28gdGhhdCBidWlsZGluZyBlcnJvciBkZXNjcmlwdGlvbiBmb3IgY2FzZSAzIGFuZCA0IGJlY29tZXMgZWFzaXJlXG4gICAgICAgICAgICB2YXIgcyA9IGxhbmd1YWdlLmNvbW1vbl9sYW5nLnN0aWNreS5jb21tb247XG4gICAgICAgICAgICBzd2l0Y2ggKHB1Ymxpc2hTdGVwLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgLy8gZmlyc3Qgc3RlcFxuICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLnRpdGxlID0gdGl0bGU7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uO1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuaWNvbiA9IGljb247XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS5hbGVydFN0YXRlID0gY29yZUVsZW1lbnRTdGF0dXM7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIC8vc2Vjb25kIHN0ZXBcbiAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS50aXRsZSA9IGxhbmd1YWdlLmNvbW1vbl9sYW5nLnN0aWNreS50aXRsZV8xO1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuZGVzY3JpcHRpb24gPSBsYW5ndWFnZS5jb21tb25fbGFuZy5zdGlja3kuZGVzY3JpcHRpb25fMTtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLmljb24gPSBcInNoaWVsZFwiO1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuYWxlcnRTdGF0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAvLyBjYXNlIDIgaXMgZm9yIHN1Y2Nlc3MgdmFsaWRhdGlvblxuICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLnRpdGxlID0gbGFuZ3VhZ2UuY29tbW9uX2xhbmcuc3RpY2t5LnRpdGxlXzI7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS5kZXNjcmlwdGlvbiA9IGxhbmd1YWdlLmNvbW1vbl9sYW5nLnN0aWNreS5kZXNjcmlwdGlvbl8yO1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuaWNvbiA9IFwidGlja1wiO1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuYWxlcnRTdGF0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIC8vY2FzZSAzIGlzIGZvciB2YWxpZGF0aW9uIHdpdGggY3JpdGljYWwgZXJyb3JzXG4gICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUudGl0bGUgPSBsYW5ndWFnZS5jb21tb25fbGFuZy5zdGlja3kudGl0bGVfMztcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLmRlc2NyaXB0aW9uID0gXCI8cD48Yj5cIi5jb25jYXQoZXJyLmNyaXRpY2FsTnVtYmVyLCBcIiBcIikuY29uY2F0KHMuY3JpdGljYWwsIFwiIFwiKS5jb25jYXQocy5lcnJvcnMsIFwiPC9iPiwgPGI+XCIpLmNvbmNhdChlcnIuZXJyb3JOdW1iZXIsIFwiIFwiKS5jb25jYXQocy5lcnJvcnMsIFwiPC9iPiBcIikuY29uY2F0KHMuYW5kLCBcIiA8Yj5cIikuY29uY2F0KGVyci53YXJuaW5nTnVtYmVyLCBcIiBcIikuY29uY2F0KHMud2FybmluZ3MsIFwiPC9iPiBcIikuY29uY2F0KHMud2FybmluZ3MsIFwiLiBcIikuY29uY2F0KHMuY3JpdGljYWwsIFwiPC9wPjxwPlwiKS5jb25jYXQocy5oYXNfYXRsZWFzdF9vbmVfY3JpdGljYWxfZXJyb3IsIFwiPC9wPjxwPlwiKS5jb25jYXQocy53ZV9oaWdobHlfcmVjb21tZW5kLCBcIjwvcD5cIik7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS5pY29uID0gXCJ3YXJuaW5nLWZpbGxcIjtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLmFsZXJ0U3RhdGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgLy8gY2FzZSA0IGlzIGZvciB2YWxpZGF0aW9uIHdpdGhvdXQgY3JpdGljYWwgZXJyb3JzXG4gICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUudGl0bGUgPSBsYW5ndWFnZS5jb21tb25fbGFuZy5zdGlja3kudGl0bGVfMztcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0YXRlLmRlc2NyaXB0aW9uID0gXCI8cD48Yj5cIi5jb25jYXQoZXJyLmVycm9yTnVtYmVyLCBcIiAgXCIpLmNvbmNhdChzLmVycm9ycywgXCI8L2I+ICBcIikuY29uY2F0KHMuYW5kLCBcIiA8Yj5cIikuY29uY2F0KGVyci53YXJuaW5nTnVtYmVyLCBcIiAgXCIpLmNvbmNhdChzLndhcm5pbmdzLCBcIjwvYj4gIFwiKS5jb25jYXQocy53ZXJlX2ZvdW5kLCBcIi4gIFwiKS5jb25jYXQocy52aWV3X2luZm9ybWF0aW9uLCBcIjwvcD48cD5cIikuY29uY2F0KHMud2VfaGlnaGx5X3JlY29tbWVuZCwgXCI8L3A+XCIpO1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuaWNvbiA9IFwid2FybmluZy1maWxsXCI7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS5hbGVydFN0YXRlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHB1Ymxpc2hTdGF0ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IGZ1bmN0aW9uXG4gICAgICAgIHZhciBzdGVwUGx1c09uZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChwdWJsaXNoU3RlcC52YWx1ZSA+PSAwICYmIHB1Ymxpc2hTdGVwLnZhbHVlIDwgNCkge1xuICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGVwLnZhbHVlKys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzdGVwTWludXNPbmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAocHVibGlzaFN0ZXAudmFsdWUgPiAwICYmIHB1Ymxpc2hTdGVwLnZhbHVlIDw9IDQpIHtcbiAgICAgICAgICAgICAgICBwdWJsaXNoU3RlcC52YWx1ZS0tO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICAvLyByZWFjdGl2ZSB2YXJpYWJsZSBmb3IgZXJyb3JzIG51bWJlclxuICAgICAgICB2YXIgZXJyID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBjcml0aWNhbE51bWJlcjogMCxcbiAgICAgICAgICAgIGVycm9yTnVtYmVyOiAwLFxuICAgICAgICAgICAgd2FybmluZ051bWJlcjogMCxcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGNhbGwgYXBpIGZvciB2YWxpZGF0aW9uXG4gICAgICAgIHZhciB2YWxpZGF0b3JGdW5jdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHB1Ymxpc2hWYWx1ZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKCFwdWJsaXNoVmFsdWUudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9LCA1MDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbG9hZGVyVGV4dC52YWx1ZSA9IFwiXCIuY29uY2F0KGxhbmd1YWdlLmNvbW1vbl9sYW5nLnZhbGlkYXRpbmcsIFwiIFwiKS5jb25jYXQobGFuZ3VhZ2UuY29tbW9uX2xhbmcuYWN0aXZpdHkpO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LnBvc3QoXCIvYWN0aXZpdHkvXCIuY29uY2F0KGlkLCBcIi92YWxpZGF0ZUFjdGl2aXR5XCIpKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB2YXIgZXJyb3JzID0gcmVzcG9uc2UuZXJyb3JzO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVQdWJsaXNoRXJyb3JzJywgZXJyb3JzKTtcbiAgICAgICAgICAgICAgICAgICAgLy9pZGVudGlmeSBlcnJvciB0eXBlc1xuICAgICAgICAgICAgICAgICAgICB2YXIgY3JpdCA9IHJlc3BvbnNlLnN1bW1hcnkuY3JpdGljYWw7XG4gICAgICAgICAgICAgICAgICAgIChlcnIuY3JpdGljYWxOdW1iZXIgPSBjcml0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIChlcnIuZXJyb3JOdW1iZXIgPSByZXNwb25zZS5zdW1tYXJ5LmVycm9yKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIChlcnIud2FybmluZ051bWJlciA9IHJlc3BvbnNlLnN1bW1hcnkud2FybmluZyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjcml0ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0ZXAudmFsdWUgPSAzO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlzaFN0ZXAudmFsdWUgPSA0O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RlcC52YWx1ZSA9IDI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9LCAyMDAwKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICAvLyBjYWxsIGFwaSBmb3IgcHVibGlzaGluZ1xuICAgICAgICB2YXIgZXJyb3JEYXRhID0gKDAsIHZ1ZV8yLmluamVjdCkoJ2Vycm9yRGF0YScpO1xuICAgICAgICAvKipcbiAgICAgICAgICogY2hlY2sgcHVibGlzaCBzdGF0dXNcbiAgICAgICAgICovXG4gICAgICAgIHZhciBjaGVja1B1Ymxpc2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KFwiL2FjdGl2aXRpZXMvY2hlY2tzLWZvci1hY3Rpdml0eS1wdWJsaXNoXCIpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hWYWx1ZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBlcnJvckRhdGEubWVzc2FnZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yRGF0YS50eXBlID0gcmVzcG9uc2Uuc3VjY2VzcztcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JEYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgcHVibGlzaEZ1bmN0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcHVibGlzaFZhbHVlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgICAgIGxvYWRlclRleHQudmFsdWUgPSBcIlwiLmNvbmNhdChsYW5ndWFnZS5jb21tb25fbGFuZy5wdWJsaXNoaW5nLCBcIiBcIikuY29uY2F0KGxhbmd1YWdlLmNvbW1vbl9sYW5nLmFjdGl2aXR5KTtcbiAgICAgICAgICAgIHJlc2V0UHVibGlzaFN0ZXAoKTtcbiAgICAgICAgICAgIHB1Ymxpc2hTdGVwLnZhbHVlID0gMDtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5wb3N0KFwiL2FjdGl2aXR5L1wiLmNvbmNhdChpZCwgXCIvcHVibGlzaFwiKSkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVVuUHVibGlzaGVkJywgcmVzcG9uc2Uuc3VjY2Vzcyk7XG4gICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVNob3dQdWJsaXNoZWQnLCAhcmVzcG9uc2Uuc3VjY2Vzcyk7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIC8vIHB1Ymxpc2gtcmVwdWJsaXNoXG4gICAgICAgIHZhciBwdWJsaXNoU3RhdHVzID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBsaW5rZWRfdG9faWF0aTogbGlua2VkVG9JYXRpLnZhbHVlLFxuICAgICAgICAgICAgc3RhdHVzOiBzdGF0dXMudmFsdWUsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgYnRuVGV4dCA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHB1Ymxpc2hTdGF0dXMubGlua2VkX3RvX2lhdGkgJiYgcHVibGlzaFN0YXR1cy5zdGF0dXMgPT09ICdkcmFmdCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGFuZ3VhZ2UuYnV0dG9uX2xhbmcucmVwdWJsaXNoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoIXB1Ymxpc2hTdGF0dXMubGlua2VkX3RvX2lhdGkgJiZcbiAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdHVzLnN0YXR1cyA9PT0gJ2RyYWZ0Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBsYW5ndWFnZS5idXR0b25fbGFuZy5wdWJsaXNoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgbGFuZ3VhZ2U6IGxhbmd1YWdlLCBwcm9wczogcHJvcHMsIGxpbmtlZFRvSWF0aTogbGlua2VkVG9JYXRpLCBzdGF0dXM6IHN0YXR1cywgY29yZUNvbXBsZXRlZDogY29yZUNvbXBsZXRlZCwgYWN0aXZpdHlJZDogYWN0aXZpdHlJZCwgc3RvcmU6IHN0b3JlLCBpZDogaWQsIHB1Ymxpc2hWYWx1ZTogcHVibGlzaFZhbHVlLCBwdWJsaXNoVG9nZ2xlOiBwdWJsaXNoVG9nZ2xlLCBwdWJsaXNoU3RlcDogcHVibGlzaFN0ZXAsIGxvYWRlcjogbG9hZGVyLCBjb3JlRWxlbWVudFN0YXR1czogY29yZUVsZW1lbnRTdGF0dXMsIGxvYWRlclRleHQ6IGxvYWRlclRleHQsIHJlc2V0UHVibGlzaFN0ZXA6IHJlc2V0UHVibGlzaFN0ZXAsIHB1Ymxpc2hTdGF0ZUNoYW5nZTogcHVibGlzaFN0YXRlQ2hhbmdlLCBzdGVwUGx1c09uZTogc3RlcFBsdXNPbmUsIHN0ZXBNaW51c09uZTogc3RlcE1pbnVzT25lLCBlcnI6IGVyciwgdmFsaWRhdG9yRnVuY3Rpb246IHZhbGlkYXRvckZ1bmN0aW9uLCBlcnJvckRhdGE6IGVycm9yRGF0YSwgY2hlY2tQdWJsaXNoOiBjaGVja1B1Ymxpc2gsIHB1Ymxpc2hGdW5jdGlvbjogcHVibGlzaEZ1bmN0aW9uLCBwdWJsaXNoU3RhdHVzOiBwdWJsaXNoU3RhdHVzLCBidG5UZXh0OiBidG5UZXh0LCBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LCBNb2RhbDogUG9wdXBNb2RhbF92dWVfMS5kZWZhdWx0LCBMb2FkZXI6IFByb2dyZXNzTG9hZGVyX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbi8vY29tcG9uZW50XG52YXIgQnV0dG9uQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWVcIikpO1xudmFyIFBvcHVwTW9kYWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvUG9wdXBNb2RhbC52dWVcIikpO1xudmFyIFByb2dyZXNzTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1Byb2dyZXNzTG9hZGVyLnZ1ZVwiKSk7XG4vLyBWdWV4IFN0b3JlXG52YXIgc2hvd18xID0gcmVxdWlyZShcIlN0b3JlL2FjdGl2aXRpZXMvc2hvd1wiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdVblB1Ymxpc2hCdXR0b24nLFxuICAgIHByb3BzOiB7XG4gICAgICAgIHR5cGU6IHsgdHlwZTogU3RyaW5nLCBkZWZhdWx0OiAncHJpbWFyeScgfSxcbiAgICAgICAgYWN0aXZpdHlJZDogeyB0eXBlOiBOdW1iZXIsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIGFjdGl2aXR5SWQgPSAoMCwgdnVlXzIudG9SZWZzKShwcm9wcykuYWN0aXZpdHlJZDtcbiAgICAgICAgLy8gdG9nZ2xlIHN0YXRlIGZvciBtb2RhbCBwb3B1cFxuICAgICAgICB2YXIgX2IgPSAoMCwgY29yZV8xLnVzZVRvZ2dsZSkoKSwgdW5wdWJsaXNoVmFsdWUgPSBfYlswXSwgdW5wdWJsaXNoVG9nZ2xlID0gX2JbMV07XG4gICAgICAgIC8vR2xvYmFsIFN0YXRlXG4gICAgICAgIHZhciBzdG9yZSA9ICgwLCBzaG93XzEuZGV0YWlsU3RvcmUpKCk7XG4gICAgICAgIC8vYWN0aXZpdHkgaWRcbiAgICAgICAgdmFyIGlkID0gYWN0aXZpdHlJZC52YWx1ZTtcbiAgICAgICAgLy8gZGlzcGxheS9oaWRlIHZhbGlkYXRvciBsb2FkZXJcbiAgICAgICAgdmFyIGxvYWRlciA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdmFsdWU6IGZhbHNlLFxuICAgICAgICAgICAgdGV4dDogbGFuZ3VhZ2UuY29tbW9uX2xhbmcucGxlYXNlX3dhaXQsXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBjYWxsIGFwaSBmb3IgdW5wdWJsaXNoaW5nXG4gICAgICAgICgwLCB2dWVfMi5vblVwZGF0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChsb2FkZXIudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlSXNMb2FkaW5nJywgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlSXNMb2FkaW5nJywgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHVucHVibGlzaFZhbHVlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobG9hZGVyLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdW5wdWJsaXNoVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB0b2FzdE1lc3NhZ2UgPSAoMCwgdnVlXzIuaW5qZWN0KSgndG9hc3RNZXNzYWdlJyk7XG4gICAgICAgIHZhciB1blB1Ymxpc2hGdW5jdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHVucHVibGlzaFZhbHVlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgICAgIGxvYWRlci50ZXh0ID0gbGFuZ3VhZ2UuY29tbW9uX2xhbmcudW5wdWJsaXNoaW5nO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LnBvc3QoXCIvYWN0aXZpdHkvXCIuY29uY2F0KGlkLCBcIi91bnB1Ymxpc2hcIikpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIHRvYXN0TWVzc2FnZS5tZXNzYWdlID0gcmVzcG9uc2UubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2UudHlwZSA9IHJlc3BvbnNlLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgdW5wdWJsaXNoVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVVblB1Ymxpc2hlZCcsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTaG93UHVibGlzaGVkJywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlUHVibGlzaEVycm9ycycsIFtdKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBsYW5ndWFnZTogbGFuZ3VhZ2UsIHByb3BzOiBwcm9wcywgYWN0aXZpdHlJZDogYWN0aXZpdHlJZCwgdW5wdWJsaXNoVmFsdWU6IHVucHVibGlzaFZhbHVlLCB1bnB1Ymxpc2hUb2dnbGU6IHVucHVibGlzaFRvZ2dsZSwgc3RvcmU6IHN0b3JlLCBpZDogaWQsIGxvYWRlcjogbG9hZGVyLCB0b2FzdE1lc3NhZ2U6IHRvYXN0TWVzc2FnZSwgdW5QdWJsaXNoRnVuY3Rpb246IHVuUHVibGlzaEZ1bmN0aW9uLCBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LCBNb2RhbDogUG9wdXBNb2RhbF92dWVfMS5kZWZhdWx0LCBMb2FkZXI6IFByb2dyZXNzTG9hZGVyX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbi8vY29tcG9uZW50XG52YXIgQnV0dG9uQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWVcIikpO1xudmFyIFBvcHVwTW9kYWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvUG9wdXBNb2RhbC52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0RlbGV0ZUFjdGlvbicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgaXRlbUlkOiB7IHR5cGU6IFtOdW1iZXIsIFN0cmluZ10sIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIGl0ZW1UeXBlOiB7IHR5cGU6IFN0cmluZywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICAvLyBwcm9wc1xuICAgICAgICAvLyB0b2dnbGUgc3RhdGUgZm9yIG1vZGFsIHBvcHVwXG4gICAgICAgIHZhciBfYiA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBkZWxldGVWYWx1ZSA9IF9iWzBdLCBkZWxldGVUb2dnbGUgPSBfYlsxXTtcbiAgICAgICAgdmFyIGRlbGV0ZUZ1bmN0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHByb3BzLml0ZW1UeXBlID09PSAncmVzdWx0JyB8fCBwcm9wcy5pdGVtVHlwZSA9PT0gJ3RyYW5zYWN0aW9uJykge1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5kZWxldGUoXCJcIi5jb25jYXQocHJvcHMuaXRlbVR5cGUsIFwiL1wiKS5jb25jYXQocHJvcHMuaXRlbUlkKSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZVZhbHVlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHByb3BzLml0ZW1UeXBlID09PSAnaW5kaWNhdG9yJykge1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5kZWxldGUoXCJcIi5jb25jYXQocHJvcHMuaXRlbVR5cGUsIFwiL1wiKS5jb25jYXQocHJvcHMuaXRlbUlkKSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZVZhbHVlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHByb3BzLml0ZW1UeXBlID09PSAncGVyaW9kJykge1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5kZWxldGUoXCJcIi5jb25jYXQocHJvcHMuaXRlbVR5cGUsIFwiL1wiKS5jb25jYXQocHJvcHMuaXRlbUlkKSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZVZhbHVlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBsYW5ndWFnZTogbGFuZ3VhZ2UsIHByb3BzOiBwcm9wcywgZGVsZXRlVmFsdWU6IGRlbGV0ZVZhbHVlLCBkZWxldGVUb2dnbGU6IGRlbGV0ZVRvZ2dsZSwgZGVsZXRlRnVuY3Rpb246IGRlbGV0ZUZ1bmN0aW9uLCBjYXBpdGFsaXplOiB2dWVfMi5jYXBpdGFsaXplLCBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LCBNb2RhbDogUG9wdXBNb2RhbF92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnRXJyb3JMaXN0cycsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZXJyb3JzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgdHlwZTogeyB0eXBlOiBTdHJpbmcsIGRlZmF1bHQ6ICdlcnJvcicgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICAvL3Byb3BzXG4gICAgICAgIC8vcHJvcHMgZGVzdHJ1Y3R1cmluZ1xuICAgICAgICB2YXIgX2IgPSAoMCwgdnVlXzIudG9SZWZzKShwcm9wcyksIHR5cGUgPSBfYi50eXBlLCBlcnJvcnMgPSBfYi5lcnJvcnM7XG4gICAgICAgIHZhciBlcnJvclR5cGUgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIC8vIGNvbG9ycyBiYXNlZCBvbiB0eXBlIHByb3BzIHZhbHVlXG4gICAgICAgIHZhciBiZ0NvbG9yID0gJycsIGljb25Db2xvciA9ICcnO1xuICAgICAgICBzd2l0Y2ggKHR5cGUudmFsdWUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2NyaXRpY2FsJzpcbiAgICAgICAgICAgICAgICBiZ0NvbG9yID0gJ2JnLWxhdmVuZGVyLTYwIGJvcmRlci1sYXZlbmRlci01MCc7XG4gICAgICAgICAgICAgICAgaWNvbkNvbG9yID0gJ3RleHQtbGF2ZW5kZXItNTAnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnd2FybmluZ3MnOlxuICAgICAgICAgICAgICAgIGJnQ29sb3IgPSAnYmctZWdnc2hlbGwgYm9yZGVyLWNhbWVsLTUwJztcbiAgICAgICAgICAgICAgICBpY29uQ29sb3IgPSAndGV4dC1jYW1lbC01MCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJnQ29sb3IgPSAnYmctcm9zZSBib3JkZXItY3JpbXNvbi00MCc7XG4gICAgICAgICAgICAgICAgaWNvbkNvbG9yID0gJ3RleHQtY3JpbXNvbi00MCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRvZ2dsZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGFjY29yZGlvblRvZ2dsZSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICB2YXIgY3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldDtcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSBjdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignLmVycm9yc19fbGlzdCcpO1xuICAgICAgICAgICAgdmFyIGVsSGVpZ2h0ID0gKF9hID0gdGFyZ2V0ID09PSBudWxsIHx8IHRhcmdldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGFyZ2V0LnF1ZXJ5U2VsZWN0b3IoJ3VsJykpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jbGllbnRIZWlnaHQ7XG4gICAgICAgICAgICBpZiAodG9nZ2xlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IFwiLmNvbmNhdChlbEhlaWdodCwgXCJweDtcIik7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgICAgICAgICB0b2dnbGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBhdXRvO1wiO1xuICAgICAgICAgICAgICAgICAgICB9LCA2MDApO1xuICAgICAgICAgICAgICAgICAgICB0b2dnbGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHVwZGF0ZUVycm9yQ291bnRNZXNzYWdlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHRyYW5zbGF0ZWRUeXBlID0gbGFuZ3VhZ2UuY29tbW9uX2xhbmcuc3RpY2t5LmNvbW1vblt0eXBlLnZhbHVlXTtcbiAgICAgICAgICAgIGVycm9yVHlwZS52YWx1ZSA9XG4gICAgICAgICAgICAgICAgZXJyb3JzLnZhbHVlLmxlbmd0aCArXG4gICAgICAgICAgICAgICAgICAgICcgJyArXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWRUeXBlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlZFR5cGUuc2xpY2UoMSk7XG4gICAgICAgIH07XG4gICAgICAgIHVwZGF0ZUVycm9yQ291bnRNZXNzYWdlKCk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gZXJyb3JzLnZhbHVlOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB1cGRhdGVFcnJvckNvdW50TWVzc2FnZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgbGFuZ3VhZ2U6IGxhbmd1YWdlLCBwcm9wczogcHJvcHMsIHR5cGU6IHR5cGUsIGVycm9yczogZXJyb3JzLCBlcnJvclR5cGU6IGVycm9yVHlwZSwgYmdDb2xvcjogYmdDb2xvciwgaWNvbkNvbG9yOiBpY29uQ29sb3IsIHRvZ2dsZTogdG9nZ2xlLCBhY2NvcmRpb25Ub2dnbGU6IGFjY29yZGlvblRvZ2dsZSwgdXBkYXRlRXJyb3JDb3VudE1lc3NhZ2U6IHVwZGF0ZUVycm9yQ291bnRNZXNzYWdlIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbi8vIGNvbXBvbmVudHNcbnZhciBMaW5rX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL2J1dHRvbnMvTGluay52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdIYXZlTm90QWRkZWRZZXQnLFxuICAgIGNvbXBvbmVudHM6IHsgQnRuOiBMaW5rX3Z1ZV8xLmRlZmF1bHQgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBsaW5rOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVzY3JpcHRpb246IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBidG5UZXh0OiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xuLy9jb21wb25lbnRcbnZhciBCdXR0b25Db21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZVwiKSk7XG52YXIgUG9wdXBNb2RhbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZVwiKSk7XG52YXIgUHJvZ3Jlc3NMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvUHJvZ3Jlc3NMb2FkZXIudnVlXCIpKTtcbi8vIHB1Ymxpc2gtcmVwdWJsaXNoXG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnT3JnYW5pemF0aW9uUHVibGlzaFVucHVibGlzaEJ1dHRvbicsXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIC8vIHRvZ2dsZSBzdGF0ZSBmb3IgbW9kYWwgcG9wdXBcbiAgICAgICAgdmFyIF9iID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIHB1Ymxpc2hWYWx1ZSA9IF9iWzBdLCBwdWJsaXNoVG9nZ2xlID0gX2JbMV07XG4gICAgICAgIHZhciBfYyA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCB1bnB1Ymxpc2hWYWx1ZSA9IF9jWzBdLCB1bnB1Ymxpc2hUb2dnbGUgPSBfY1sxXTtcbiAgICAgICAgLy8gZGlzcGxheS9oaWRlIHZhbGlkYXRvciBsb2FkZXJcbiAgICAgICAgdmFyIGxvYWRlciA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgLy8gc3RhdGUgZm9yIGZpcnN0IHN0ZXBcbiAgICAgICAgLy8gZGV0ZXJtaW5lIGlmIGNvcmUgZWxlbWVudCBjb21wbGV0ZWQgb3Igbm90XG4gICAgICAgIC8vIHRydWUgZm9yIGNvbXBsZXRlZCBhbmQgZmFsc2UgZm9yIG5vdCBjb21wbGV0ZWRcbiAgICAgICAgdmFyIG1hbmRhdG9yeUVsZW1lbnRTdGF0dXMgPSAoMCwgdnVlXzIuaW5qZWN0KSgnbWFuZGF0b3J5Q29tcGxldGVkJyk7XG4gICAgICAgIC8vIER5bmFtaWMgdGV4dCBmb3IgbG9hZGVyXG4gICAgICAgIHZhciBsb2FkZXJUZXh0ID0gKDAsIHZ1ZV8yLnJlZikobGFuZ3VhZ2UuY29tbW9uX2xhbmcucGxlYXNlX3dhaXQpO1xuICAgICAgICAvLyBjb21wdXRlZCBmdW5jdGlvbiB0byBjaGFuZ2UgY29udGVudCBvZiBtb2RhbFxuICAgICAgICB2YXIgcHVibGlzaFN0YXRlQ2hhbmdlID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgcHVibGlzaFN0YXRlID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICcnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnJyxcbiAgICAgICAgICAgICAgICBpY29uOiAnJyxcbiAgICAgICAgICAgICAgICBhbGVydFN0YXRlOiBtYW5kYXRvcnlFbGVtZW50U3RhdHVzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBkaWZmZXJlbnQgY29udGVudCBmb3Igc3RlcCAxIGJhc2VkIG9uIGNvcmVFbGVtZW50IHN0YXR1c1xuICAgICAgICAgICAgaWYgKG1hbmRhdG9yeUVsZW1lbnRTdGF0dXMpIHtcbiAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUudGl0bGUgPSBsYW5ndWFnZS5jb21tb25fbGFuZy5jb3JlX2NvbXBsZXRlZF90aXRsZTtcbiAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuZGVzY3JpcHRpb24gPSBsYW5ndWFnZS5jb21tb25fbGFuZy5jb3JlX2NvbXBsZXRlZF9kZXNjcmlwdGlvbjtcbiAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuaWNvbiA9ICd0aWNrJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS50aXRsZSA9IGxhbmd1YWdlLmNvbW1vbl9sYW5nLmNvcmVfY29tcGxldGVkX3RpdGxlO1xuICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0ZS5kZXNjcmlwdGlvbiA9XG4gICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlLmNvbW1vbl9sYW5nLmNvcmVfbm90X2NvbXBsZXRlZF9kZXNjcmlwdGlvbjtcbiAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdGUuaWNvbiA9ICd3YXJuaW5nLWZpbGwnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHB1Ymxpc2hTdGF0ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGNhbGwgYXBpIGZvciBwdWJsaXNoaW5nXG4gICAgICAgIHZhciB0b2FzdERhdGEgPSAoMCwgdnVlXzIuaW5qZWN0KSgndG9hc3REYXRhJyk7XG4gICAgICAgIHZhciBlcnJvckRhdGEgPSAoMCwgdnVlXzIuaW5qZWN0KSgnZXJyb3JEYXRhJyk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBjaGVjayBwdWJsaXNoIHN0YXR1c1xuICAgICAgICAgKi9cbiAgICAgICAgdmFyIGNoZWNrUHVibGlzaCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoXCIvb3JnYW5pc2F0aW9uL2NoZWNrcy1mb3Itb3JnYW5pc2F0aW9uLXB1Ymxpc2hcIikudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaFZhbHVlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yRGF0YS5tZXNzYWdlID0gcmVzcG9uc2UubWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JEYXRhLnR5cGUgPSByZXNwb25zZS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgICAgICBlcnJvckRhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBwdWJsaXNoRnVuY3Rpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBsb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgbG9hZGVyVGV4dC52YWx1ZSA9IGxhbmd1YWdlLmNvbW1vbl9sYW5nLnB1Ymxpc2hpbmc7XG4gICAgICAgICAgICBwdWJsaXNoVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5wb3N0KFwiL29yZ2FuaXNhdGlvbi9wdWJsaXNoXCIpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcmVzcG9uc2UubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHJlc3BvbnNlLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9LCAyMDAwKTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoU3RhdHVzLmlzX3B1Ymxpc2hlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0dXMuc3RhdHVzID0gbGFuZ3VhZ2UuZXZlbnRzX2xhbmcucHVibGlzaGVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgdW5QdWJsaXNoRnVuY3Rpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB1bnB1Ymxpc2hWYWx1ZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGxvYWRlclRleHQudmFsdWUgPVxuICAgICAgICAgICAgICAgIGxhbmd1YWdlLmNvbW1vbl9sYW5nLnVucHVibGlzaGluZy5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArXG4gICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlLmNvbW1vbl9sYW5nLnVucHVibGlzaGluZy5zbGljZSgxKTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5wb3N0KFwiL29yZ2FuaXNhdGlvbi91bnB1Ymxpc2hcIikudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSByZXNwb25zZS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gcmVzcG9uc2Uuc3VjY2VzcztcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0sIDIwMDApO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hTdGF0dXMuaXNfcHVibGlzaGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBwdWJsaXNoU3RhdHVzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3B1Ymxpc2hTdGF0dXMnKTtcbiAgICAgICAgdmFyIGJ0blRleHQgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChwdWJsaXNoU3RhdHVzLmlzX3B1Ymxpc2hlZCAmJiBwdWJsaXNoU3RhdHVzLnN0YXR1cyA9PT0gJ2RyYWZ0Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBsYW5ndWFnZS5idXR0b25fbGFuZy5yZXB1Ymxpc2g7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGFuZ3VhZ2UuYnV0dG9uX2xhbmcucHVibGlzaDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGxhbmd1YWdlOiBsYW5ndWFnZSwgcHVibGlzaFZhbHVlOiBwdWJsaXNoVmFsdWUsIHB1Ymxpc2hUb2dnbGU6IHB1Ymxpc2hUb2dnbGUsIHVucHVibGlzaFZhbHVlOiB1bnB1Ymxpc2hWYWx1ZSwgdW5wdWJsaXNoVG9nZ2xlOiB1bnB1Ymxpc2hUb2dnbGUsIGxvYWRlcjogbG9hZGVyLCBtYW5kYXRvcnlFbGVtZW50U3RhdHVzOiBtYW5kYXRvcnlFbGVtZW50U3RhdHVzLCBsb2FkZXJUZXh0OiBsb2FkZXJUZXh0LCBwdWJsaXNoU3RhdGVDaGFuZ2U6IHB1Ymxpc2hTdGF0ZUNoYW5nZSwgdG9hc3REYXRhOiB0b2FzdERhdGEsIGVycm9yRGF0YTogZXJyb3JEYXRhLCBjaGVja1B1Ymxpc2g6IGNoZWNrUHVibGlzaCwgcHVibGlzaEZ1bmN0aW9uOiBwdWJsaXNoRnVuY3Rpb24sIHVuUHVibGlzaEZ1bmN0aW9uOiB1blB1Ymxpc2hGdW5jdGlvbiwgcHVibGlzaFN0YXR1czogcHVibGlzaFN0YXR1cywgYnRuVGV4dDogYnRuVGV4dCwgQnRuQ29tcG9uZW50OiBCdXR0b25Db21wb25lbnRfdnVlXzEuZGVmYXVsdCwgTW9kYWw6IFBvcHVwTW9kYWxfdnVlXzEuZGVmYXVsdCwgTG9hZGVyOiBQcm9ncmVzc0xvYWRlcl92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbi8vIGNvbXBvbmVudHNcbnZhciBCcmVhZENydW1iX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0JyZWFkQ3J1bWIudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnUGFnZVRpdGxlJyxcbiAgICBjb21wb25lbnRzOiB7IEJyZWFkY3J1bWI6IEJyZWFkQ3J1bWJfdnVlXzEuZGVmYXVsdCB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGJyZWFkY3J1bWJEYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdGl0bGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBiYWNrTGluazoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKHByb3BzLnRpdGxlLCAndGl0bGUnKTtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnUHJvZ3Jlc3NMb2FkZXInLFxuICAgIHByb3BzOiB7XG4gICAgICAgIHRleHQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjaGFuZ2VUZXh0OiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ292ZXJmbG93LXktaGlkZGVuJyk7XG4gICAgICAgICAgICB2YXIgc3VwcG9ydEJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNsYXVuY2hlcicpO1xuICAgICAgICAgICAgaWYgKHN1cHBvcnRCdXR0b24gIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBzdXBwb3J0QnV0dG9uLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIub25Vbm1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnb3ZlcmZsb3cteS1oaWRkZW4nKTtcbiAgICAgICAgICAgIHZhciBzdXBwb3J0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2xhdW5jaGVyJyk7XG4gICAgICAgICAgICBpZiAoc3VwcG9ydEJ1dHRvbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHN1cHBvcnRCdXR0b24uc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBsYW5ndWFnZTogbGFuZ3VhZ2UgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xuLy8gY29tcG9uZW50c1xudmFyIEVycm9yTGlzdHNfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvRXJyb3JMaXN0cy52dWVcIikpO1xudmFyIFVwbG9hZGVkRXJyb3JzX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1VwbG9hZGVkRXJyb3JzLnZ1ZVwiKSk7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1N0aWNreUVycm9ycycsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZXJyb3JEYXRhOiB7IHR5cGU6IEFycmF5LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIC8vIHRvZ2dsZSBpc3N1ZXNcbiAgICAgICAgdmFyIF9iID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIGVycm9yVmFsdWUgPSBfYlswXSwgZXJyb3JUb2dnbGUgPSBfYlsxXTtcbiAgICAgICAgdmFyIGltcG9ydEVycm9ycyA9ICgwLCB2dWVfMi5pbmplY3QpKCdpbXBvcnRBY3Rpdml0eUVycm9yJyk7XG4gICAgICAgIHZhciBhY3Rpdml0eUlkID0gKDAsIHZ1ZV8yLmluamVjdCkoJ2FjdGl2aXR5SWQnKTtcbiAgICAgICAgdmFyIGlzc3VlVHlwZSA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBsaXN0IG9mIGVycm9yc1xuICAgICAgICAgKiovXG4gICAgICAgIHZhciBlcnJvckRhdGEgPSAoMCwgdnVlXzIudG9SZWZzKShwcm9wcykuZXJyb3JEYXRhO1xuICAgICAgICB2YXIgaW1wb3J0RXJyb3JUeXBlcyA9IFsnZXJyb3InLCAnd2FybmluZyddO1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoZXJyb3JEYXRhLnZhbHVlLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGlzc3VlVHlwZS52YWx1ZSA9ICd2YWxpZGF0b3InO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlzc3VlVHlwZS52YWx1ZSA9ICd1cGxvYWQnO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHRlbXBEYXRhID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBlcnJvcnM6IFtdLFxuICAgICAgICAgICAgY3JpdGljYWw6IFtdLFxuICAgICAgICAgICAgd2FybmluZ3M6IFtdLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHVwZGF0ZVRlbXBNZXNzYWdlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGVycm9yRGF0YVByb3BzID0gZXJyb3JEYXRhLnZhbHVlO1xuICAgICAgICAgICAgZm9yICh2YXIgZGF0YSBpbiB0ZW1wRGF0YSkge1xuICAgICAgICAgICAgICAgIHRlbXBEYXRhW2RhdGFdID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKHZhciBfaSA9IDAsIGVycm9yRGF0YVByb3BzXzEgPSBlcnJvckRhdGFQcm9wczsgX2kgPCBlcnJvckRhdGFQcm9wc18xLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgICAgIHZhciBkYXRhID0gZXJyb3JEYXRhUHJvcHNfMVtfaV07XG4gICAgICAgICAgICAgICAgdmFyIHNldmVyaXR5ID0gZGF0YS5zZXZlcml0eTtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHNldmVyaXR5KSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NyaXRpY2FsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBEYXRhLmNyaXRpY2FsLnB1c2goZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGVtcERhdGEuZXJyb3JzLnB1c2goZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnd2FybmluZyc6XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZW1wRGF0YS53YXJuaW5ncy5wdXNoKGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB1cGRhdGVUZW1wTWVzc2FnZSgpO1xuICAgICAgICB2YXIgaW1wb3J0RXJyb3JsZW5ndGggPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBjb3VudCA9IDA7XG4gICAgICAgICAgICBmb3IgKHZhciB0eXBlIGluIGltcG9ydEVycm9ycykge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGluZGV4IGluIGltcG9ydEVycm9yc1t0eXBlXSkge1xuICAgICAgICAgICAgICAgICAgICBjb3VudCArPSBPYmplY3Qua2V5cyhpbXBvcnRFcnJvcnNbdHlwZV1baW5kZXhdKS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvdW50O1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBlcnJvckRhdGEudmFsdWU7IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHVwZGF0ZVRlbXBNZXNzYWdlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZGVsZXRlRXJyb3JzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmRlbGV0ZShcIi9pbXBvcnQvZXJyb3JzL1wiLmNvbmNhdChhY3Rpdml0eUlkKSkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgncmVtb3ZlZCcsICd0cnVlJyk7XG4gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBsYW5ndWFnZTogbGFuZ3VhZ2UsIHByb3BzOiBwcm9wcywgZXJyb3JWYWx1ZTogZXJyb3JWYWx1ZSwgZXJyb3JUb2dnbGU6IGVycm9yVG9nZ2xlLCBpbXBvcnRFcnJvcnM6IGltcG9ydEVycm9ycywgYWN0aXZpdHlJZDogYWN0aXZpdHlJZCwgaXNzdWVUeXBlOiBpc3N1ZVR5cGUsIGVycm9yRGF0YTogZXJyb3JEYXRhLCBpbXBvcnRFcnJvclR5cGVzOiBpbXBvcnRFcnJvclR5cGVzLCB0ZW1wRGF0YTogdGVtcERhdGEsIHVwZGF0ZVRlbXBNZXNzYWdlOiB1cGRhdGVUZW1wTWVzc2FnZSwgaW1wb3J0RXJyb3JsZW5ndGg6IGltcG9ydEVycm9ybGVuZ3RoLCBkZWxldGVFcnJvcnM6IGRlbGV0ZUVycm9ycywgRXJyb3JMaXN0czogRXJyb3JMaXN0c192dWVfMS5kZWZhdWx0LCBVcGxvYWRlZEVycm9yczogVXBsb2FkZWRFcnJvcnNfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1VwbG9hZGVkRXJyb3JzJyxcbiAgICBwcm9wczoge1xuICAgICAgICBpdGVtOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgaW5kZXg6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIGFjdGl2ZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHRvZ2dsZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGVycm9yTGVuZ3RoID0gZnVuY3Rpb24gKGN1cnJlbnRFcnJvcikge1xuICAgICAgICAgICAgdmFyIGNvdW50ID0gMDtcbiAgICAgICAgICAgIGlmIChwcm9wcy5pbmRleCA9PT0gY3VycmVudEVycm9yKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgdHlwZSBpbiBwcm9wcy5pdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ICs9IE9iamVjdC5rZXlzKHByb3BzLml0ZW1bdHlwZV0pLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY291bnQ7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBhY2NvcmRpb25Ub2dnbGUgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgYWN0aXZlLnZhbHVlID0gIWFjdGl2ZS52YWx1ZTtcbiAgICAgICAgICAgIHZhciBjdXJyZW50VGFyZ2V0ID0gZS5jdXJyZW50VGFyZ2V0O1xuICAgICAgICAgICAgdmFyIHRhcmdldCA9IGN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuY29udGFpbmVyJyk7XG4gICAgICAgICAgICB2YXIgZWxIZWlnaHQgPSAoX2EgPSB0YXJnZXQgPT09IG51bGwgfHwgdGFyZ2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0YXJnZXQucXVlcnlTZWxlY3RvcignLmVycm9yLWNvbnRhaW5lcicpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2xpZW50SGVpZ2h0O1xuICAgICAgICAgICAgaWYgKHRvZ2dsZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBcIi5jb25jYXQoZWxIZWlnaHQsIFwicHg7XCIpO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IFwiLmNvbmNhdChlbEhlaWdodCwgXCJweDtcIik7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogYXV0bztcIjtcbiAgICAgICAgICAgICAgICAgICAgfSwgNjAwKTtcbiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGFjdGl2ZTogYWN0aXZlLCBwcm9wczogcHJvcHMsIHRvZ2dsZTogdG9nZ2xlLCBlcnJvckxlbmd0aDogZXJyb3JMZW5ndGgsIGFjY29yZGlvblRvZ2dsZTogYWNjb3JkaW9uVG9nZ2xlIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnRWxlbWVudFN0YXR1cycsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YTogeyB0eXBlOiBCb29sZWFuLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8yLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciBjb2xvciA9IGRhdGEudmFsdWUgPyAndGV4dC1zcHJpbmctNTAnIDogJ3RleHQtY3JpbXNvbi01MCcsIHRleHQgPSBkYXRhLnZhbHVlXG4gICAgICAgICAgICA/IGxhbmd1YWdlLmNvbW1vbl9sYW5nLmNvbXBsZXRlZFxuICAgICAgICAgICAgOiBsYW5ndWFnZS5jb21tb25fbGFuZy5ub3RfY29tcGxldGVkO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBsYW5ndWFnZTogbGFuZ3VhZ2UsIHByb3BzOiBwcm9wcywgZGF0YTogZGF0YSwgY29sb3I6IGNvbG9yLCB0ZXh0OiB0ZXh0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdQcmV2aW91c2x5UHVibGlzaGVkJyxcbiAgICBwcm9wczoge1xuICAgICAgICB0ZXh0OiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICBkZWZhdWx0OiB3aW5kb3dbJ2dsb2JhbExhbmcnXS5jb21tb25fbGFuZy5wcmV2aW91c2x5X3B1Ymxpc2hlZF9vbl9pYXRpLFxuICAgICAgICB9LFxuICAgICAgICBpY29uOiB7IHR5cGU6IFN0cmluZywgZGVmYXVsdDogJ2FwcHJvdmVkLWNsb3VkJyB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHt9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBtdWx0aXNlbGVjdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJAdnVlZm9ybS9tdWx0aXNlbGVjdFwiKSk7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIExvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Mb2FkZXIudnVlXCIpKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnQWN0aXZpdHlEZWZhdWx0VmFsdWUnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGN1cnJlbmNpZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgbGFuZ3VhZ2VzOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGFjdGl2aXR5SWQ6IHsgdHlwZTogTnVtYmVyLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBidWRnZXROb3RQcm92aWRlZDoge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBodW1hbml0YXJpYW46IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICAvKipcbiAgICAgICAgICogUHJvcHNcbiAgICAgICAgICovXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBSZWFjdGl2ZSB2YXJpYWJsZXNcbiAgICAgICAgICovXG4gICAgICAgIHZhciBkZWZhdWx0VmFsdWVzID0gKDAsIHZ1ZV8yLnJlZikoe1xuICAgICAgICAgICAgYnVkZ2V0X25vdF9wcm92aWRlZDogJycsXG4gICAgICAgICAgICBkZWZhdWx0X2N1cnJlbmN5OiAnJyxcbiAgICAgICAgICAgIGRlZmF1bHRfbGFuZ3VhZ2U6ICcnLFxuICAgICAgICAgICAgaGllcmFyY2h5OiAnJyxcbiAgICAgICAgICAgIGh1bWFuaXRhcmlhbjogJycsXG4gICAgICAgIH0pLCBkZWZhdWx0RXJyb3JzID0gKDAsIHZ1ZV8yLnJlZikoe1xuICAgICAgICAgICAgYnVkZ2V0X25vdF9wcm92aWRlZDogW10sXG4gICAgICAgICAgICBkZWZhdWx0X2N1cnJlbmN5OiBbXSxcbiAgICAgICAgICAgIGRlZmF1bHRfbGFuZ3VhZ2U6IFtdLFxuICAgICAgICAgICAgaGllcmFyY2h5OiBbXSxcbiAgICAgICAgICAgIGh1bWFuaXRhcmlhbjogW10sXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZXJyb3JSZXNldCA9IGRlZmF1bHRFcnJvcnMudmFsdWU7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBPbiBNb3VudGVkXG4gICAgICAgICAqL1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZGF0YSwgZGVmYXVsdERhdGE7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6IHJldHVybiBbNCAvKnlpZWxkKi8sIGF4aW9zXzEuZGVmYXVsdC5nZXQoXCIvYWN0aXZpdHkvXCIuY29uY2F0KHByb3BzLmFjdGl2aXR5SWQsIFwiL2RlZmF1bHRfdmFsdWVzL2RhdGFcIikpXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IChfYS5zZW50KCkpLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RGF0YSA9IGRhdGEuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWZhdWx0RGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZXMudmFsdWUgPSBkZWZhdWx0RGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH0pO1xuICAgICAgICAvKipcbiAgICAgICAgICogUmVmXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgbG9hZGVyVmlzaWJpbGl0eSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKSwgdG9hc3RWaXNpYmlsaXR5ID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpLCB0b2FzdE1lc3NhZ2UgPSAoMCwgdnVlXzIucmVmKSgnJyksIHRvYXN0VHlwZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFN1Ym1pdCBmb3JtXG4gICAgICAgICAqXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBzdWJtaXRGb3JtKCkge1xuICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBkZWZhdWx0RXJyb3JzLnZhbHVlID0gZXJyb3JSZXNldDtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wdXQoXCIvYWN0aXZpdHkvXCIuY29uY2F0KHByb3BzLmFjdGl2aXR5SWQsIFwiL2RlZmF1bHRfdmFsdWVzXCIpLCBkZWZhdWx0VmFsdWVzLnZhbHVlKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuICh0b2FzdFZpc2liaWxpdHkudmFsdWUgPSBmYWxzZSk7IH0sIDUwMDApO1xuICAgICAgICAgICAgICAgIHRvYXN0TWVzc2FnZS52YWx1ZSA9IHJlc3BvbnNlID09PSBudWxsIHx8IHJlc3BvbnNlID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXNwb25zZS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRvYXN0VHlwZS52YWx1ZSA9IHJlc3BvbnNlID09PSBudWxsIHx8IHJlc3BvbnNlID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXNwb25zZS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHkudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICAgICAgZGVmYXVsdEVycm9ycy52YWx1ZSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBkZWZhdWx0RXJyb3JzLnZhbHVlKSwgKF9hID0gZXJyb3IucmVzcG9uc2UuZGF0YSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmVycm9ycyk7XG4gICAgICAgICAgICAgICAgdG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2UudmFsdWUgPSAoX2IgPSBlcnJvci5yZXNwb25zZS5kYXRhKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdFR5cGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBsYW5ndWFnZTogbGFuZ3VhZ2UsIHByb3BzOiBwcm9wcywgZGVmYXVsdFZhbHVlczogZGVmYXVsdFZhbHVlcywgZGVmYXVsdEVycm9yczogZGVmYXVsdEVycm9ycywgZXJyb3JSZXNldDogZXJyb3JSZXNldCwgbG9hZGVyVmlzaWJpbGl0eTogbG9hZGVyVmlzaWJpbGl0eSwgdG9hc3RWaXNpYmlsaXR5OiB0b2FzdFZpc2liaWxpdHksIHRvYXN0TWVzc2FnZTogdG9hc3RNZXNzYWdlLCB0b2FzdFR5cGU6IHRvYXN0VHlwZSwgc3VibWl0Rm9ybTogc3VibWl0Rm9ybSwgTXVsdGlzZWxlY3Q6IG11bHRpc2VsZWN0XzEuZGVmYXVsdCwgTG9hZGVyOiBMb2FkZXJfdnVlXzEuZGVmYXVsdCwgVG9hc3Q6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xuLy8gY29tcG9uZW50c1xudmFyIEluZGV4XzEgPSByZXF1aXJlKFwiLi9lbGVtZW50cy9JbmRleFwiKTtcbnZhciBIb3ZlclRleHRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZVwiKSk7XG52YXIgUmFkaWFsUHJvZ3Jlc3NCYXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvUmFkaWFsUHJvZ3Jlc3NCYXIudnVlXCIpKTtcbnZhciBQdWJsaXNoQnV0dG9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL2J1dHRvbnMvUHVibGlzaEJ1dHRvbi52dWVcIikpO1xudmFyIFVuUHVibGlzaEJ1dHRvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9idXR0b25zL1VuUHVibGlzaEJ1dHRvbi52dWVcIikpO1xudmFyIERlbGV0ZUJ1dHRvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9idXR0b25zL0RlbGV0ZUJ1dHRvbi52dWVcIikpO1xudmFyIFN0aWNreUVycm9yc192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9TdGlja3lFcnJvcnMudnVlXCIpKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG52YXIgRXJyb3JQb3BVcF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9FcnJvclBvcFVwLnZ1ZVwiKSk7XG52YXIgdGl0bGVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS90aXRsZVwiKSk7XG4vLyBBY3Rpdml0eSBDb21wb25lbnRzXG52YXIgQWN0aXZpdGllc0VsZW1lbnRzX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJBY3Rpdml0eS9wYXJ0aWFscy9BY3Rpdml0aWVzRWxlbWVudHMudnVlXCIpKTtcbnZhciBBY3Rpdml0eUVsZW1lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkFjdGl2aXR5L3BhcnRpYWxzL0FjdGl2aXR5RWxlbWVudC52dWVcIikpO1xudmFyIFByZXZpb3VzbHlQdWJsaXNoZWRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc3RhdHVzL1ByZXZpb3VzbHlQdWJsaXNoZWQudnVlXCIpKTtcbi8vIFZ1ZXggU3RvcmVcbnZhciBzaG93XzEgPSByZXF1aXJlKFwiU3RvcmUvYWN0aXZpdGllcy9zaG93XCIpO1xudmFyIGluZGV4XzEgPSByZXF1aXJlKFwiU3RvcmUvYWN0aXZpdGllcy9pbmRleFwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEhvdmVyVGV4dDogSG92ZXJUZXh0X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFByb2dyZXNzQmFyOiBSYWRpYWxQcm9ncmVzc0Jhcl92dWVfMS5kZWZhdWx0LFxuICAgICAgICBFbGVtZW50czogQWN0aXZpdGllc0VsZW1lbnRzX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIEFjdGl2aXR5RWxlbWVudDogQWN0aXZpdHlFbGVtZW50X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFJlc3VsdDogSW5kZXhfMS5SZXN1bHQsXG4gICAgICAgIFB1Ymxpc2g6IFB1Ymxpc2hCdXR0b25fdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgRXJyb3JzOiBTdGlja3lFcnJvcnNfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgVW5QdWJsaXNoOiBVblB1Ymxpc2hCdXR0b25fdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgRGVsZXRlQnV0dG9uOiBEZWxldGVCdXR0b25fdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgUHJldmlvdXNseVB1Ymxpc2hlZDogUHJldmlvdXNseVB1Ymxpc2hlZF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBFcnJvclBvcFVwOiBFcnJvclBvcFVwX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGVsZW1lbnRzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZ3JvdXBzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgYWN0aXZpdHk6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBwcm9ncmVzczoge1xuICAgICAgICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRvYXN0OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBzdGF0dXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICByZXN1bHRzOiB7XG4gICAgICAgICAgICB0eXBlOiBBcnJheSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0cmFuc2FjdGlvbnM6IHtcbiAgICAgICAgICAgIHR5cGU6IEFycmF5LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGNvcmVDb21wbGV0ZWQ6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgaWF0aVZhbGlkYXRvclJlc3BvbnNlOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgaW1wb3J0QWN0aXZpdHlFcnJvcjoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciBfYiA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKSwgdHlwZXMgPSBfYi50eXBlcywgY29yZUNvbXBsZXRlZCA9IF9iLmNvcmVDb21wbGV0ZWQ7XG4gICAgICAgIHZhciByZW1vdmVkID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgncmVtb3ZlZCcpO1xuICAgICAgICB2YXIgc3RvcmUgPSAoMCwgc2hvd18xLmRldGFpbFN0b3JlKSgpO1xuICAgICAgICB2YXIgaW5kZXhTdG9yZSA9ICgwLCBpbmRleF8xLnVzZVN0b3JlKSgpO1xuICAgICAgICB2YXIgc2hvd1NpZGViYXIgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBwb3NpdGlvblkgPSAoMCwgdnVlXzEucmVmKSgwKTtcbiAgICAgICAgdmFyIHNjcmVlbldpZHRoID0gKDAsIHZ1ZV8xLnJlZikoMCk7XG4gICAgICAgIHZhciB0b2FzdERhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGVycm9yRGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICAgIHR5cGU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICBzaG93U2lkZWJhcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvciBtb2RhbCBwb3B1cCBjb21wbGV0ZWRcbiAgICAgICAgICovXG4gICAgICAgIHZhciBfYyA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBkZWxldGVWYWx1ZSA9IF9jWzBdLCBkZWxldGVUb2dnbGUgPSBfY1sxXTtcbiAgICAgICAgdmFyIF9kID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIGRvd25sb2FkVmFsdWUgPSBfZFswXSwgZG93bmxvYWRUb2dnbGUgPSBfZFsxXTtcbiAgICAgICAgdmFyIHRvZ2dsZVNpZGViYXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzaG93U2lkZWJhci52YWx1ZSA9ICFzaG93U2lkZWJhci52YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGhhbmRsZVNjcm9sbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHBvc2l0aW9uWS52YWx1ZSA9IHdpbmRvdy5zY3JvbGxZO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgaXN0b3BWaXNpYmxlID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gcG9zaXRpb25ZLnZhbHVlID09PSAwO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHdpZHRoID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gd2luZG93LmlubmVyV2lkdGg7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEub25Vbm1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpO1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNhbGNXaWR0aCk7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlmIChyZW1vdmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9ICdSZW1vdmVkIHN1Y2Nlc2Z1bGx5JztcbiAgICAgICAgICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2UuY2xlYXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgc2NyZWVuV2lkdGgudmFsdWUgPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpO1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNhbGNXaWR0aCk7XG4gICAgICAgICAgICBpZiAocHJvcHMudG9hc3QubWVzc2FnZSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHByb3BzLnRvYXN0LnR5cGU7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcHJvcHMudG9hc3QubWVzc2FnZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBjYWxjV2lkdGggPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIHNjcmVlbldpZHRoLnZhbHVlID0gZXZlbnQudGFyZ2V0LmlubmVyV2lkdGg7XG4gICAgICAgICAgICBpZiAoc2NyZWVuV2lkdGgudmFsdWUgPiAxMDI0KSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc2hvd1NpZGViYXIudmFsdWUgJiZcbiAgICAgICAgICAgICAgICAgICAgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzaG93U2lkZWJhci52YWx1ZTsgfSwgZnVuY3Rpb24gKHNpZGViYXIpIHtcbiAgICAgICAgICAgIGlmIChzaWRlYmFyKSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiB0b2FzdERhdGEudmlzaWJpbGl0eTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZ25vcmVUb2FzdFVwZGF0ZSgpO1xuICAgICAgICAgICAgfSwgMTAwMDApO1xuICAgICAgICB9KTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEdyb3VwaW5nIGFsbCB0aGUgZGF0YSdzIGZvciBzY3JvbGwgZnVuY3Rpb25cbiAgICAgICAgICpcbiAgICAgICAgICogdGhpcyBkYXRhIGlzIGNyZWF0ZWQgdXNpbmcgcHJvcHMuZWxlbWVudF9ncm91cCBhbmQgcHJvcHMuYWN0aXZpdHlcbiAgICAgICAgICovXG4gICAgICAgIHZhciBfZSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKSwgZ3JvdXBzID0gX2UuZ3JvdXBzLCBhY3Rpdml0eSA9IF9lLmFjdGl2aXR5LCBlbGVtZW50cyA9IF9lLmVsZW1lbnRzLCBzdGF0dXMgPSBfZS5zdGF0dXMsIHRyYW5zYWN0aW9ucyA9IF9lLnRyYW5zYWN0aW9ucywgZ3JvdXBlZERhdGEgPSBncm91cHMudmFsdWUsIGFjdGl2aXR5UHJvcHMgPSBhY3Rpdml0eS52YWx1ZSwgYWN0aXZpdGllcyA9IGdyb3Vwcy52YWx1ZSwgZWxlbWVudFByb3BzID0gZWxlbWVudHMudmFsdWUsIHN0YXR1c1Byb3BzID0gc3RhdHVzLnZhbHVlLCB0cmFuc2FjdGlvblByb3BzID0gdHJhbnNhY3Rpb25zLnZhbHVlO1xuICAgICAgICB2YXIgcmVzdWx0cyA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5yZXN1bHRzO1xuICAgICAgICBhY3Rpdml0eVByb3BzLnJlc3VsdCA9IHJlc3VsdHMudmFsdWU7XG4gICAgICAgIGFjdGl2aXR5UHJvcHMudHJhbnNhY3Rpb25zID0gdHJhbnNhY3Rpb25Qcm9wcztcbiAgICAgICAgLy8gZ2VuZXJhdGluZyBhdmFpbGFibGUgZWxlbWVudHNcbiAgICAgICAgT2JqZWN0LmtleXMoYWN0aXZpdGllcykubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgIHZhciBmbGFnID0gZmFsc2U7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhhY3Rpdml0aWVzW2tleV1bJ2VsZW1lbnRzJ10pLm1hcChmdW5jdGlvbiAoaykge1xuICAgICAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBhY3Rpdml0eVByb3BzW2tdID09PSAnbnVtYmVyJyB8fFxuICAgICAgICAgICAgICAgICAgICAodHlwZW9mIGFjdGl2aXR5UHJvcHNba10gPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBhY3Rpdml0eVByb3BzW2tdICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhhY3Rpdml0eVByb3BzW2tdKS5sZW5ndGgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGFjdGl2aXRpZXNba2V5XVsnZWxlbWVudHMnXVtrXVsnY29udGVudCddID0gYWN0aXZpdHlQcm9wc1trXTtcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZpdGllc1trZXldWydlbGVtZW50cyddW2tdWydob3Zlcl90ZXh0J10gPVxuICAgICAgICAgICAgICAgICAgICAgICAgKF9hID0gZWxlbWVudFByb3BzW2tdWydob3Zlcl90ZXh0J10pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnO1xuICAgICAgICAgICAgICAgICAgICBhY3Rpdml0aWVzW2tleV1bJ2VsZW1lbnRzJ11ba11bJ3dhcm5pbmdfaW5mb190ZXh0J10gPVxuICAgICAgICAgICAgICAgICAgICAgICAgKF9iID0gZWxlbWVudFByb3BzW2tdWyd3YXJuaW5nX2luZm9fdGV4dCddKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAnJztcbiAgICAgICAgICAgICAgICAgICAgZmxhZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgYWN0aXZpdGllc1trZXldW2tdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKGZsYWcgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGFjdGl2aXRpZXNba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGdlbmVyYXRpbmcgYXZhaWxhYmxlIGNhdGVnb3JpZXMgb2YgZWxlbWVudHNcbiAgICAgICAgT2JqZWN0LmtleXMoZ3JvdXBlZERhdGEpLm1hcChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGFjdGl2aXRpZXMsIGtleSkpIHtcbiAgICAgICAgICAgICAgICBncm91cGVkRGF0YVtrZXldWydzdGF0dXMnXSA9ICdlbmFibGVkJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGdyb3VwZWREYXRhW2tleV1bJ3N0YXR1cyddID0gJ2Rpc2FibGVkJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHcm91cGluZyBhbGwgZWxlbWVudHMgYW5kIHRoZWlycyBjb21wbGV0ZWQgc3RhdHVzXG4gICAgICAgICAqXG4gICAgICAgICAqIGNvbWJpbmluZyBwcm9wcy5lbGVtZW50cyBhbmQgcHJvcHMuc3RhdHVzXG4gICAgICAgICAqXG4gICAgICAgICAqIEByZXR1cm5zIG9iamVjdFxuICAgICAgICAgKi9cbiAgICAgICAgT2JqZWN0LmtleXMoZWxlbWVudFByb3BzKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIGVsZW1lbnRQcm9wc1trZXldWydjb21wbGV0ZWQnXSA9IChfYSA9IHN0YXR1c1Byb3BzW2tleV0pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGZhbHNlO1xuICAgICAgICAgICAgZWxlbWVudFByb3BzW2tleV1bJ25vdF9jb21wbGV0ZWQnXSA9ICEoKF9iID0gc3RhdHVzUHJvcHNba2V5XSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogZmFsc2UpO1xuICAgICAgICAgICAgZWxlbWVudFByb3BzW2tleV1bJ2hhc19kYXRhJ10gPSAwO1xuICAgICAgICAgICAgaWYgKGtleSBpbiBhY3Rpdml0eVByb3BzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBhY3Rpdml0eVByb3BzW2tleV0gPT09ICdudW1iZXInIHx8XG4gICAgICAgICAgICAgICAgICAgICh0eXBlb2YgYWN0aXZpdHlQcm9wc1trZXldID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZpdHlQcm9wc1trZXldICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhhY3Rpdml0eVByb3BzW2tleV0pLmxlbmd0aCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGFjdGl2aXR5UHJvcHNba2V5XSkubGVuZ3RoID4gMCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZpdHlQcm9wc1trZXldLnRvU3RyaW5nLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRQcm9wc1trZXldWydoYXNfZGF0YSddID0gMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGaW5kaW5nIGN1cnJlbnQgbGFuZ3VhZ2UgLSBhY3Rpdml0eSB0aXRsZVxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIHBhZ2VUaXRsZSA9ICgwLCB0aXRsZV8xLmRlZmF1bHQpKGFjdGl2aXR5UHJvcHMudGl0bGUsIChfYSA9IGFjdGl2aXR5UHJvcHMuZGVmYXVsdF9maWVsZF92YWx1ZXMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5kZWZhdWx0X2xhbmd1YWdlKTtcbiAgICAgICAgZnVuY3Rpb24gZm9ybWF0VGl0bGUodGl0bGUpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHZhciB0cmFuc2xhdGVkVGl0bGUgPSAoX2EgPSBsYW5ndWFnZS5hY3Rpdml0eV9sYW5nW3RpdGxlXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxhYmVsO1xuICAgICAgICAgICAgcmV0dXJuICgwLCB2dWVfMS5jYXBpdGFsaXplKSh0cmFuc2xhdGVkVGl0bGUgIT09IG51bGwgJiYgdHJhbnNsYXRlZFRpdGxlICE9PSB2b2lkIDAgPyB0cmFuc2xhdGVkVGl0bGUgOiB0aXRsZS5yZXBsYWNlKC9fL2dpLCAnICcpKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdG9hc3RNZXNzYWdlID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICAgIHR5cGU6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGlnbm9yZVVwZGF0ZXMgPSAoMCwgY29yZV8xLndhdGNoSWdub3JhYmxlKSh0b2FzdERhdGEsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSwge1xuICAgICAgICAgICAgZmx1c2g6ICdzeW5jJyxcbiAgICAgICAgfSkuaWdub3JlVXBkYXRlcztcbiAgICAgICAgdmFyIGlnbm9yZVRvYXN0VXBkYXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWdub3JlVXBkYXRlcyhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSAnJztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgcHVibGlzaFN0YXR1cyA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgbGlua2VkX3RvX2lhdGk6IGFjdGl2aXR5UHJvcHMubGlua2VkX3RvX2lhdGksXG4gICAgICAgICAgICBzdGF0dXM6IGFjdGl2aXR5UHJvcHMuc3RhdHVzLFxuICAgICAgICB9KTtcbiAgICAgICAgLy8gdnVlIHByb3ZpZGVzXG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgndHlwZXMnLCB0eXBlcy52YWx1ZSk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgnY29yZUNvbXBsZXRlZCcsIGNvcmVDb21wbGV0ZWQudmFsdWUpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3RvYXN0TWVzc2FnZScsIHRvYXN0TWVzc2FnZSk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgndG9hc3REYXRhJywgdG9hc3REYXRhKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdlcnJvckRhdGEnLCBlcnJvckRhdGEpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ2ltcG9ydEFjdGl2aXR5RXJyb3InLCBwcm9wcy5pbXBvcnRBY3Rpdml0eUVycm9yKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdhY3Rpdml0eUlkJywgcHJvcHMuYWN0aXZpdHkuaWQpO1xuICAgICAgICBpbmRleFN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTZWxlY3RlZEFjdGl2aXRpZXMnLCBbYWN0aXZpdHkudmFsdWUuaWRdKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEJyZWFkY3J1bWIgZGF0YVxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIGJyZWFkY3J1bWJEYXRhID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBsYW5ndWFnZS5hY3Rpdml0aWVzX2xhbmcueW91cl9hY3Rpdml0aWVzLFxuICAgICAgICAgICAgICAgIGxpbms6ICcvYWN0aXZpdGllcycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwYWdlVGl0bGUsXG4gICAgICAgICAgICAgICAgbGluazogJycsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgICAvKipcbiAgICAgICAgICogIEdsb2JhbCBTdGF0ZVxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIGlhdGlWYWxpZGF0b3JSZXNwb25zZSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5pYXRpVmFsaWRhdG9yUmVzcG9uc2U7XG4gICAgICAgIHZhciB2YWxpZGF0aW9uUmVzdWx0ID0gaWF0aVZhbGlkYXRvclJlc3BvbnNlLnZhbHVlO1xuICAgICAgICBpZiAodmFsaWRhdGlvblJlc3VsdCAmJiB2YWxpZGF0aW9uUmVzdWx0LmVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlUHVibGlzaEVycm9ycycsIHZhbGlkYXRpb25SZXN1bHQuZXJyb3JzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHVibGlzaFN0YXR1cy5saW5rZWRfdG9faWF0aSkge1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVVuUHVibGlzaGVkJywgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlVW5QdWJsaXNoZWQnLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEocHVibGlzaFN0YXR1cy5saW5rZWRfdG9faWF0aSAmJiBwdWJsaXNoU3RhdHVzLnN0YXR1cyA9PT0gJ3B1Ymxpc2hlZCcpKSB7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU2hvd1B1Ymxpc2hlZCcsIHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVNob3dQdWJsaXNoZWQnLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRvU25ha2VDYXNlID0gZnVuY3Rpb24gKHNlbnRlbmNlKSB7XG4gICAgICAgICAgICB2YXIgd29yZHMgPSBzZW50ZW5jZS5zcGxpdCgnICcpO1xuICAgICAgICAgICAgcmV0dXJuIHdvcmRzLm1hcChmdW5jdGlvbiAod29yZCkgeyByZXR1cm4gd29yZC50b0xvd2VyQ2FzZSgpOyB9KS5qb2luKCdfJyk7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBncm91cGVkRGF0YTogZ3JvdXBlZERhdGEsXG4gICAgICAgICAgICBhY3Rpdml0aWVzOiBhY3Rpdml0aWVzLFxuICAgICAgICAgICAgZGVsZXRlVmFsdWU6IGRlbGV0ZVZhbHVlLFxuICAgICAgICAgICAgZGVsZXRlVG9nZ2xlOiBkZWxldGVUb2dnbGUsXG4gICAgICAgICAgICBkb3dubG9hZFZhbHVlOiBkb3dubG9hZFZhbHVlLFxuICAgICAgICAgICAgZG93bmxvYWRUb2dnbGU6IGRvd25sb2FkVG9nZ2xlLFxuICAgICAgICAgICAgdG9hc3REYXRhOiB0b2FzdERhdGEsXG4gICAgICAgICAgICBlbGVtZW50UHJvcHM6IGVsZW1lbnRQcm9wcyxcbiAgICAgICAgICAgIHByb3BzOiBwcm9wcyxcbiAgICAgICAgICAgIGZvcm1hdFRpdGxlOiBmb3JtYXRUaXRsZSxcbiAgICAgICAgICAgIHBhZ2VUaXRsZTogcGFnZVRpdGxlLFxuICAgICAgICAgICAgdG9hc3RNZXNzYWdlOiB0b2FzdE1lc3NhZ2UsXG4gICAgICAgICAgICBwdWJsaXNoU3RhdHVzOiBwdWJsaXNoU3RhdHVzLFxuICAgICAgICAgICAgYnJlYWRjcnVtYkRhdGE6IGJyZWFkY3J1bWJEYXRhLFxuICAgICAgICAgICAgc3RvcmU6IHN0b3JlLFxuICAgICAgICAgICAgYWN0aXZpdHlQcm9wczogYWN0aXZpdHlQcm9wcyxcbiAgICAgICAgICAgIGVycm9yRGF0YTogZXJyb3JEYXRhLFxuICAgICAgICAgICAgc2hvd1NpZGViYXI6IHNob3dTaWRlYmFyLFxuICAgICAgICAgICAgdG9nZ2xlU2lkZWJhcjogdG9nZ2xlU2lkZWJhcixcbiAgICAgICAgICAgIGlzdG9wVmlzaWJsZTogaXN0b3BWaXNpYmxlLFxuICAgICAgICAgICAgc2NyZWVuV2lkdGg6IHNjcmVlbldpZHRoLFxuICAgICAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICAgICAgbGFuZ3VhZ2U6IGxhbmd1YWdlLFxuICAgICAgICAgICAgdG9TbmFrZUNhc2U6IHRvU25ha2VDYXNlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciBYbHNVcGxvYWRJbmRpY2F0b3JfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvWGxzVXBsb2FkSW5kaWNhdG9yLnZ1ZVwiKSk7XG52YXIgRW1wdHlBY3Rpdml0eV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9wYXJ0aWFscy9FbXB0eUFjdGl2aXR5LnZ1ZVwiKSk7XG52YXIgVGFibGVMYXlvdXRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vcGFydGlhbHMvVGFibGVMYXlvdXQudnVlXCIpKTtcbnZhciBUYWJsZVBhZ2luYXRpb25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVGFibGVQYWdpbmF0aW9uLnZ1ZVwiKSk7XG52YXIgUGFnZVRpdGxlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3BhcnRpYWxzL1BhZ2VUaXRsZS52dWVcIikpO1xudmFyIExvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Mb2FkZXIudnVlXCIpKTtcbnZhciBFcnJvck1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvRXJyb3JNZXNzYWdlLnZ1ZVwiKSk7XG52YXIgaW5kZXhfMSA9IHJlcXVpcmUoXCJTdG9yZS9hY3Rpdml0aWVzL2luZGV4XCIpO1xudmFyIHNob3dfMSA9IHJlcXVpcmUoXCJTdG9yZS9hY3Rpdml0aWVzL3Nob3dcIik7XG52YXIgY29yZV8yID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBzdG9yZSA9ICgwLCBpbmRleF8xLnVzZVN0b3JlKSgpO1xudmFyIGFjdGl2aXR5U3RvcmUgPSAoMCwgc2hvd18xLmRldGFpbFN0b3JlKSgpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdBY3Rpdml0eUNvbXBvbmVudCcsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBFbXB0eUFjdGl2aXR5OiBFbXB0eUFjdGl2aXR5X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFBhZ2VUaXRsZTogUGFnZVRpdGxlX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFBhZ2luYXRpb246IFRhYmxlUGFnaW5hdGlvbl92dWVfMS5kZWZhdWx0LFxuICAgICAgICBUYWJsZUxheW91dDogVGFibGVMYXlvdXRfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgTG9hZGVyOiBMb2FkZXJfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgRXJyb3JNZXNzYWdlOiBFcnJvck1lc3NhZ2VfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgWGxzVXBsb2FkSW5kaWNhdG9yOiBYbHNVcGxvYWRJbmRpY2F0b3JfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIHRvYXN0OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB2YXIgYWN0aXZpdGllcyA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe30pO1xuICAgICAgICB2YXIgaXNMb2FkaW5nID0gKDAsIHZ1ZV8xLnJlZikodHJ1ZSk7XG4gICAgICAgIHZhciBhY3Rpdml0eU5hbWUgPSAoMCwgdnVlXzEucmVmKSgnJyk7XG4gICAgICAgIHZhciBmaWxlQ291bnQgPSAoMCwgdnVlXzEucmVmKSgwKTtcbiAgICAgICAgdmFyIGRvd25sb2FkQ29tcGxldGVkID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgY2xvc2VNb2RlbCA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHhsc0Rvd25sb2FkU3RhdHVzID0gKDAsIHZ1ZV8xLnJlZikoJycpO1xuICAgICAgICB2YXIgeGxzRGF0YSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGRvd25sb2FkaW5nID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc3RhcnRCdWxrUHVibGlzaCA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHhsc0ZhaWxlZCA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHhsc0ZhaWxlZE1lc3NhZ2UgPSAoMCwgdnVlXzEucmVmKSgnJyk7XG4gICAgICAgIHZhciBwcm9jZXNzaW5nID0gKDAsIHZ1ZV8xLnJlZikoKTtcbiAgICAgICAgdmFyIHB1Ymxpc2hpbmdBY3Rpdml0aWVzID0gKDAsIHZ1ZV8xLnJlZikoKTtcbiAgICAgICAgdmFyIHVwbG9hZENvbXBsZXRlID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgaW1wb3J0Q29tcGxldGVkID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgdG90YWxDb3VudCA9ICgwLCB2dWVfMS5yZWYpKCk7XG4gICAgICAgIHZhciBwcm9jZXNzZWRDb3VudCA9ICgwLCB2dWVfMS5yZWYpKCk7XG4gICAgICAgIHZhciBzaG93WGxzU3RhdHVzID0gKDAsIHZ1ZV8xLnJlZikodHJ1ZSk7XG4gICAgICAgIHZhciB0YWJsZUxvYWRlciA9ICgwLCB2dWVfMS5yZWYpKHRydWUpO1xuICAgICAgICB2YXIgZG93bmxvYWRBcGlVcmwgPSAoMCwgdnVlXzEucmVmKSgnJyk7XG4gICAgICAgIHZhciBjdXJyZW50VVJMID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XG4gICAgICAgIHZhciBlbmRwb2ludCA9ICcnO1xuICAgICAgICB2YXIgc2hvd0VtcHR5VGVtcGxhdGUgPSBmYWxzZTtcbiAgICAgICAgdmFyIHBhID0gKDAsIGNvcmVfMi51c2VTdG9yYWdlKSgndnVlLXVzZS1sb2NhbC1zdG9yYWdlJywge1xuICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXM6IChfYSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdwdWJsaXNoaW5nQWN0aXZpdGllcycpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB7fSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChjdXJyZW50VVJMLmluY2x1ZGVzKCc/JykpIHtcbiAgICAgICAgICAgIHZhciBxdWVyeVN0cmluZyA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2g7XG4gICAgICAgICAgICBlbmRwb2ludCA9IFwiL2FjdGl2aXRpZXMvcGFnZVwiLmNvbmNhdChxdWVyeVN0cmluZyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBlbmRwb2ludCA9IFwiL2FjdGl2aXRpZXMvcGFnZVwiO1xuICAgICAgICAgICAgc2hvd0VtcHR5VGVtcGxhdGUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICAvL2ZvciBzZXNzaW9uIG1lc3NhZ2VcbiAgICAgICAgdmFyIHRvYXN0RGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICAgIHR5cGU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZXJyb3JEYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGZvciBwdWJsaXNoIGJ1dHRvblxuICAgICAgICB2YXIgdG9hc3RNZXNzYWdlID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgcG9sbGluZ0Zvclhsc1N0YXR1cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBjaGVja1N0YXR1cyA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KCcvaW1wb3J0L3hscy9zdGF0dXMnKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZSwgX2YsIF9nLCBfaCwgX2osIF9rO1xuICAgICAgICAgICAgICAgICAgICBpZiAoKChfYSA9IHJlcy5kYXRhLmRhdGEpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5tZXNzYWdlKSA9PT0gJ1N0YXJ0ZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL3Jlc2V0XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3RhbENvdW50LnZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NlZENvdW50LnZhbHVlID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHhsc0ZhaWxlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgeGxzRmFpbGVkTWVzc2FnZS52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxDb3VudC52YWx1ZSA9IChfYiA9IHJlcy5kYXRhLmRhdGEpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi50b3RhbF9jb3VudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NlZENvdW50LnZhbHVlID0gKF9jID0gcmVzLmRhdGEuZGF0YSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLnByb2Nlc3NlZF9jb3VudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHhsc0ZhaWxlZC52YWx1ZSA9ICEoKF9kID0gcmVzLmRhdGEuZGF0YSkgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kLnN1Y2Nlc3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgeGxzRmFpbGVkTWVzc2FnZS52YWx1ZSA9IChfZSA9IHJlcy5kYXRhLmRhdGEpID09PSBudWxsIHx8IF9lID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICgoKF9mID0gcmVzLmRhdGEuZGF0YSkgPT09IG51bGwgfHwgX2YgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9mLm1lc3NhZ2UpID09PSAnUHJvY2Vzc2luZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NpbmcudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghKChfaCA9IChfZyA9IHJlcy5kYXRhKSA9PT0gbnVsbCB8fCBfZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2cuZGF0YSkgPT09IG51bGwgfHwgX2ggPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9oLnN1Y2Nlc3MpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAoKF9rID0gKF9qID0gcmVzLmRhdGEpID09PSBudWxsIHx8IF9qID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfai5kYXRhKSA9PT0gbnVsbCB8fCBfayA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2subWVzc2FnZSkgPT09ICdDb21wbGV0ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwbG9hZENvbXBsZXRlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tTdGF0dXMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LCAyNTAwKTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5zdGFydFhsc0Rvd25sb2FkOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGNoZWNrRG93bmxvYWRTdGF0dXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIFtzdG9yZS5zdGF0ZS5zdGFydEJ1bGtQdWJsaXNoLCBzdG9yZS5zdGF0ZS5idWxrcHVibGlzaEFjdGl2aXRpZXNdOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHN0YXJ0QnVsa1B1Ymxpc2gudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHB1Ymxpc2hpbmdBY3Rpdml0aWVzLnZhbHVlID1cbiAgICAgICAgICAgICAgICAgICAgc3RvcmUuc3RhdGUuYnVsa3B1Ymxpc2hBY3Rpdml0aWVzLnB1Ymxpc2hpbmdBY3Rpdml0aWVzO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN0YXJ0QnVsa1B1Ymxpc2gudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLmNvbXBsZXRlWGxzRG93bmxvYWQ7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgZG93bmxvYWRDb21wbGV0ZWQudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTdGFydFhsc0Rvd25sb2FkJywgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuY2xvc2VYbHNNb2RlbDsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBjaGVja1hsc3N0YXR1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGNoZWNrWGxzc3RhdHVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldCgnL2ltcG9ydC94bHMvcHJvZ3Jlc3Nfc3RhdHVzJykudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZSwgX2YsIF9nLCBfaDtcbiAgICAgICAgICAgICAgICBhY3Rpdml0eU5hbWUudmFsdWUgPSAoX2IgPSAoX2EgPSByZXMgPT09IG51bGwgfHwgcmVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXMuZGF0YSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnN0YXR1cykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIHhsc0RhdGEudmFsdWUgPSBPYmplY3Qua2V5cyhyZXMuZGF0YS5zdGF0dXMpLmxlbmd0aCA+IDA7XG4gICAgICAgICAgICAgICAgaWYgKCgoX2QgPSAoX2MgPSByZXMgPT09IG51bGwgfHwgcmVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXMuZGF0YSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLnN0YXR1cykgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kLnN0YXR1cykgPT09ICdjb21wbGV0ZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHVwbG9hZENvbXBsZXRlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoKChfZiA9IChfZSA9IHJlcyA9PT0gbnVsbCB8fCByZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlcy5kYXRhKSA9PT0gbnVsbCB8fCBfZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Uuc3RhdHVzKSA9PT0gbnVsbCB8fCBfZiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Yuc3RhdHVzKSA9PT0gJ2ZhaWxlZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgeGxzRmFpbGVkLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgeGxzRmFpbGVkTWVzc2FnZS52YWx1ZSA9IChfaCA9IChfZyA9IHJlcyA9PT0gbnVsbCB8fCByZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlcy5kYXRhKSA9PT0gbnVsbCB8fCBfZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2cuc3RhdHVzKSA9PT0gbnVsbCB8fCBfaCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2gubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoT2JqZWN0LmtleXMocmVzLmRhdGEuc3RhdHVzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vcmVzZXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsQ291bnQudmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2luZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkQ291bnQudmFsdWUgPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgeGxzRmFpbGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB4bHNGYWlsZWRNZXNzYWdlLnZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2xsaW5nRm9yWGxzU3RhdHVzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNoZWNrRG93bmxvYWRTdGF0dXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBkb3dubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgdmFyIGNoZWNrRG93bmxvYWQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldCgnL2FjdGl2aXRpZXMvZG93bmxvYWQteGxzLXByb2dyZXNzLXN0YXR1cycpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgICAgICBmaWxlQ291bnQudmFsdWUgPSByZXMuZGF0YS5maWxlX2NvdW50O1xuICAgICAgICAgICAgICAgICAgICB4bHNEb3dubG9hZFN0YXR1cy52YWx1ZSA9IHJlcy5kYXRhLnN0YXR1cztcbiAgICAgICAgICAgICAgICAgICAgZG93bmxvYWRBcGlVcmwudmFsdWUgPSByZXMuZGF0YS51cmw7XG4gICAgICAgICAgICAgICAgICAgIGRvd25sb2FkaW5nLnZhbHVlID0gISFyZXMuZGF0YS5zdGF0dXM7XG4gICAgICAgICAgICAgICAgICAgIGlmICh4bHNEb3dubG9hZFN0YXR1cy52YWx1ZSA9PT0gJ2NvbXBsZXRlZCcgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHhsc0Rvd25sb2FkU3RhdHVzLnZhbHVlID09PSAnZmFpbGVkJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgIXJlcy5kYXRhLnN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0Rvd25sb2FkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSwgMzAwMCk7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuY2xvc2VYbHNNb2RlbDsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY2hlY2tEb3dubG9hZFN0YXR1cygpO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXMudmFsdWUgPSAoX2EgPSBwYS52YWx1ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnB1Ymxpc2hpbmdBY3Rpdml0aWVzO1xuICAgICAgICAgICAgY2hlY2tYbHNzdGF0dXMoKTtcbiAgICAgICAgICAgIGNoZWNrRG93bmxvYWRTdGF0dXMoKTtcbiAgICAgICAgICAgIGlmIChwcm9wcy50b2FzdC5tZXNzYWdlICE9PSAnJykge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gcHJvcHMudG9hc3QudHlwZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSBwcm9wcy50b2FzdC5tZXNzYWdlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHRhYmxlTG9hZGVyLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KGVuZHBvaW50KS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oYWN0aXZpdGllcywgcmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0YWJsZUxvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2hvd0VtcHR5VGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRW1wdHkudmFsdWUgPSAhcmVzcG9uc2UuZGF0YS5kYXRhLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfSk7XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gdG9hc3REYXRhLnZpc2liaWxpdHk7IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWdub3JlVG9hc3RVcGRhdGUoKTtcbiAgICAgICAgICAgIH0sIDEwMDAwKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBzdGF0ZSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgc2hvd0J1dHRvbnM6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGlzRW1wdHkgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93T3JIaWRlID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgICAgIGlmIChkYXRhID09PSB2b2lkIDApIHsgZGF0YSA9IEFycmF5OyB9XG4gICAgICAgICAgICBpZiAoZGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgc3RhdGUuc2hvd0J1dHRvbnMgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc3RhdGUuc2hvd0J1dHRvbnMgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgZnVuY3Rpb24gZmV0Y2hBY3Rpdml0aWVzKGFjdGl2ZV9wYWdlKSB7XG4gICAgICAgICAgICB0YWJsZUxvYWRlci52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB2YXIgcXVlcnlTdHJpbmcgPSAnJztcbiAgICAgICAgICAgIGlmIChjdXJyZW50VVJMLmluY2x1ZGVzKCc/JykpIHtcbiAgICAgICAgICAgICAgICBxdWVyeVN0cmluZyA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2g7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KCcvYWN0aXZpdGllcy9wYWdlLycgKyBhY3RpdmVfcGFnZSArIHF1ZXJ5U3RyaW5nKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGFjdGl2aXRpZXMsIHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgIGlzRW1wdHkudmFsdWUgPSAhcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGFibGVMb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgaWdub3JlVXBkYXRlcyA9ICgwLCBjb3JlXzEud2F0Y2hJZ25vcmFibGUpKHRvYXN0RGF0YSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9LCB7XG4gICAgICAgICAgICBmbHVzaDogJ3N5bmMnLFxuICAgICAgICB9KS5pZ25vcmVVcGRhdGVzO1xuICAgICAgICB2YXIgaWdub3JlVG9hc3RVcGRhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZ25vcmVVcGRhdGVzKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9ICcnO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIC8vIGZvciByZWZyZXNoIHRvYXN0IG1lc3NhZ2VcbiAgICAgICAgLy8gbGV0IHJlZnJlc2hUb2FzdE1zZyA9IHJlZihmYWxzZSk7XG4gICAgICAgIHZhciByZWZyZXNoVG9hc3RNc2cgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgcmVmcmVzaE1lc3NhZ2VUeXBlOiB0cnVlLFxuICAgICAgICAgICAgcmVmcmVzaE1lc3NhZ2U6IGxhbmd1YWdlLmNvbW1vbl9sYW5nLmFjdGl2aXR5X2hhc19iZWVuX3B1Ymxpc2hlZF9zdWNjZXNzZnVsbHksXG4gICAgICAgIH0pO1xuICAgICAgICAvKipcbiAgICAgICAgICogUHJvdmlkZVxuICAgICAgICAgKi9cbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCd0b2FzdE1lc3NhZ2UnLCB0b2FzdE1lc3NhZ2UpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3RvYXN0RGF0YScsIHRvYXN0RGF0YSk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgnZXJyb3JEYXRhJywgZXJyb3JEYXRhKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdyZWZyZXNoVG9hc3RNc2cnLCByZWZyZXNoVG9hc3RNc2cpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3hsc0ZhaWxlZE1lc3NhZ2UnLCB4bHNGYWlsZWRNZXNzYWdlKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdwcm9jZXNzaW5nJywgcHJvY2Vzc2luZyk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgnZG93bmxvYWRpbmcnLCBkb3dubG9hZGluZyk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgnZmlsZUNvdW50JywgZmlsZUNvdW50KTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCd4bHNEb3dubG9hZFN0YXR1cycsIHhsc0Rvd25sb2FkU3RhdHVzKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdkb3dubG9hZEFwaVVybCcsIGRvd25sb2FkQXBpVXJsKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdjbG9zZU1vZGVsJywgY2xvc2VNb2RlbCk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgnYWN0aXZpdGllcycsIHB1Ymxpc2hpbmdBY3Rpdml0aWVzKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdjb21wbGV0ZWQnLCB1cGxvYWRDb21wbGV0ZSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhY3Rpdml0aWVzOiBhY3Rpdml0aWVzLFxuICAgICAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICAgICAgaXNFbXB0eTogaXNFbXB0eSxcbiAgICAgICAgICAgIGlzTG9hZGluZzogaXNMb2FkaW5nLFxuICAgICAgICAgICAgc2hvd09ySGlkZTogc2hvd09ySGlkZSxcbiAgICAgICAgICAgIGZldGNoQWN0aXZpdGllczogZmV0Y2hBY3Rpdml0aWVzLFxuICAgICAgICAgICAgdG9hc3REYXRhOiB0b2FzdERhdGEsXG4gICAgICAgICAgICB0b2FzdE1lc3NhZ2U6IHRvYXN0TWVzc2FnZSxcbiAgICAgICAgICAgIHJlZnJlc2hUb2FzdE1zZzogcmVmcmVzaFRvYXN0TXNnLFxuICAgICAgICAgICAgZXJyb3JEYXRhOiBlcnJvckRhdGEsXG4gICAgICAgICAgICB0YWJsZUxvYWRlcjogdGFibGVMb2FkZXIsXG4gICAgICAgICAgICBsYW5ndWFnZTogbGFuZ3VhZ2UsXG4gICAgICAgICAgICB4bHNEYXRhOiB4bHNEYXRhLFxuICAgICAgICAgICAgYWN0aXZpdHlOYW1lOiBhY3Rpdml0eU5hbWUsXG4gICAgICAgICAgICBwcm9jZXNzZWRDb3VudDogcHJvY2Vzc2VkQ291bnQsXG4gICAgICAgICAgICB0b3RhbENvdW50OiB0b3RhbENvdW50LFxuICAgICAgICAgICAgc2hvd1hsc1N0YXR1czogc2hvd1hsc1N0YXR1cyxcbiAgICAgICAgICAgIHhsc0ZhaWxlZDogeGxzRmFpbGVkLFxuICAgICAgICAgICAgeGxzRmFpbGVkTWVzc2FnZTogeGxzRmFpbGVkTWVzc2FnZSxcbiAgICAgICAgICAgIGltcG9ydENvbXBsZXRlZDogaW1wb3J0Q29tcGxldGVkLFxuICAgICAgICAgICAgZG93bmxvYWRDb21wbGV0ZWQ6IGRvd25sb2FkQ29tcGxldGVkLFxuICAgICAgICAgICAgdXBsb2FkQ29tcGxldGU6IHVwbG9hZENvbXBsZXRlLFxuICAgICAgICAgICAgZG93bmxvYWRpbmc6IGRvd25sb2FkaW5nLFxuICAgICAgICAgICAgc3RhcnRCdWxrUHVibGlzaDogc3RhcnRCdWxrUHVibGlzaCxcbiAgICAgICAgICAgIHB1Ymxpc2hpbmdBY3Rpdml0aWVzOiBwdWJsaXNoaW5nQWN0aXZpdGllcyxcbiAgICAgICAgICAgIGFjdGl2aXR5U3RvcmU6IGFjdGl2aXR5U3RvcmUsXG4gICAgICAgICAgICBwYTogcGEsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIFBvcHVwTW9kYWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uLy4uL2NvbXBvbmVudHMvUG9wdXBNb2RhbC52dWVcIikpO1xudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi4vLi4vY29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbnZhciBtdWx0aXNlbGVjdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJAdnVlZm9ybS9tdWx0aXNlbGVjdFwiKSk7XG52YXIgSG92ZXJUZXh0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi9jb21wb25lbnRzL0hvdmVyVGV4dC52dWVcIikpO1xudmFyIExvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi4vLi4vY29tcG9uZW50cy9Mb2FkZXIudnVlXCIpKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBNb2RhbDogUG9wdXBNb2RhbF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBIb3ZlclRleHQ6IEhvdmVyVGV4dF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBNdWx0aXNlbGVjdDogbXVsdGlzZWxlY3RfMS5kZWZhdWx0LFxuICAgICAgICBMb2FkZXI6IExvYWRlcl92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgbW9kYWxWYWx1ZToge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIGVtaXRzOiBbJ2Nsb3NlTW9kYWwnLCAndG9hc3QnXSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzLCBfYSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgZW1pdCA9IF9hLmVtaXQ7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgZm9ybURhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIG5hcnJhdGl2ZTogJycsXG4gICAgICAgICAgICBsYW5ndWFnZTogJycsXG4gICAgICAgICAgICBhY3Rpdml0eV9pZGVudGlmaWVyOiAnJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBlcnJvckRhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIG5hcnJhdGl2ZTogJycsXG4gICAgICAgICAgICBsYW5ndWFnZTogJycsXG4gICAgICAgICAgICBhY3Rpdml0eV9pZGVudGlmaWVyOiAnJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBsb2FkZXJWaXNpYmlsaXR5ID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgbGFuZ3VhZ2VzID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7fSk7XG4gICAgICAgIHZhciBvcmdhbml6YXRpb24gPSAoMCwgdnVlXzEucmVhY3RpdmUpKHt9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoJy9hY3Rpdml0aWVzL2NvZGVsaXN0cycpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihsYW5ndWFnZXMsIHJlc3BvbnNlLmRhdGEubGFuZ3VhZ2VzKTtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihvcmdhbml6YXRpb24sIHJlc3BvbnNlLmRhdGEub3JnYW5pemF0aW9uKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH0pO1xuICAgICAgICBmdW5jdGlvbiBjbG9zZU1vZGFsKCkge1xuICAgICAgICAgICAgZW1pdCgnY2xvc2VNb2RhbCcpO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHN0b3JlQWN0aXZpdHkoKSB7XG4gICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wb3N0KCcvYWN0aXZpdHknLCBmb3JtRGF0YSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIGVtaXQoJ2Nsb3NlTW9kYWwnKTtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBcIi9hY3Rpdml0eS9cIi5jb25jYXQocmVzcG9uc2UuZGF0YS5pZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdmFyIGVycm9ycyA9IGVycm9yLnJlc3BvbnNlLmRhdGEuZXJyb3JzO1xuICAgICAgICAgICAgICAgIGVycm9yRGF0YS5uYXJyYXRpdmUgPSBlcnJvcnMubmFycmF0aXZlID8gZXJyb3JzLm5hcnJhdGl2ZVswXSA6ICcnO1xuICAgICAgICAgICAgICAgIGVycm9yRGF0YS5sYW5ndWFnZSA9IGVycm9ycy5sYW5ndWFnZSA/IGVycm9ycy5sYW5ndWFnZVswXSA6ICcnO1xuICAgICAgICAgICAgICAgIGVycm9yRGF0YS5hY3Rpdml0eV9pZGVudGlmaWVyID0gZXJyb3JzLmFjdGl2aXR5X2lkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgPyBlcnJvcnMuYWN0aXZpdHlfaWRlbnRpZmllclswXVxuICAgICAgICAgICAgICAgICAgICA6ICcnO1xuICAgICAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHkudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcm9wczogcHJvcHMsXG4gICAgICAgICAgICBmb3JtRGF0YTogZm9ybURhdGEsXG4gICAgICAgICAgICBlcnJvckRhdGE6IGVycm9yRGF0YSxcbiAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHk6IGxvYWRlclZpc2liaWxpdHksXG4gICAgICAgICAgICBsYW5ndWFnZXM6IGxhbmd1YWdlcyxcbiAgICAgICAgICAgIG9yZ2FuaXphdGlvbjogb3JnYW5pemF0aW9uLFxuICAgICAgICAgICAgY2xvc2VNb2RhbDogY2xvc2VNb2RhbCxcbiAgICAgICAgICAgIHN0b3JlQWN0aXZpdHk6IHN0b3JlQWN0aXZpdHksXG4gICAgICAgICAgICBsYW5ndWFnZTogbGFuZ3VhZ2UsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdFcnJvckl0ZW0nLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBtZXNzYWdlOiB7IHR5cGU6IFN0cmluZywgZGVmYXVsdDogJycgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgc2VsZWN0ZWRBY3Rpdml0aWVzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3NlbGVjdGVkQWN0aXZpdGllcycpO1xuICAgICAgICB2YXIgdG9nZ2xlID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgYWNjb3JkaW9uVG9nZ2xlID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHZhciBjdXJyZW50VGFyZ2V0ID0gZS5jdXJyZW50VGFyZ2V0O1xuICAgICAgICAgICAgdmFyIHRhcmdldCA9IGN1cnJlbnRUYXJnZXQuY2xvc2VzdCgnLmFjY29yZGlvbicpLnF1ZXJ5U2VsZWN0b3IoJy5hY2NvcmRpb24tY29udGVudCcpO1xuICAgICAgICAgICAgdmFyIGVsSGVpZ2h0ID0gKF9hID0gdGFyZ2V0ID09PSBudWxsIHx8IHRhcmdldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGFyZ2V0LnF1ZXJ5U2VsZWN0b3IoJ2RpdicpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2xpZW50SGVpZ2h0O1xuICAgICAgICAgICAgaWYgKHRvZ2dsZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBcIi5jb25jYXQoZWxIZWlnaHQsIFwicHg7XCIpO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IFwiLmNvbmNhdChlbEhlaWdodCwgXCJweDtcIik7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogYXV0bztcIjtcbiAgICAgICAgICAgICAgICAgICAgfSwgNjAwKTtcbiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBlcnJvckNvdW50ID0gZnVuY3Rpb24gKGVycm9ycykge1xuICAgICAgICAgICAgdmFyIGVycm9yQ291bnQgPSAnJztcbiAgICAgICAgICAgIHZhciBzYyA9IGxhbmd1YWdlLmNvbW1vbl9sYW5nLnN0aWNreS5jb21tb247XG4gICAgICAgICAgICBpZiAoZXJyb3JzID09PSBudWxsIHx8IGVycm9ycyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXJyb3JzLndhcm5pbmcpIHtcbiAgICAgICAgICAgICAgICBlcnJvckNvdW50ID0gXCJcIi5jb25jYXQoZXJyb3JzID09PSBudWxsIHx8IGVycm9ycyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXJyb3JzLmVycm9yLCBcIiBcIikuY29uY2F0KHNjLmVycm9ycywgXCIgXCIpLmNvbmNhdChzYy5hbmQsIFwiIFwiKS5jb25jYXQoZXJyb3JzID09PSBudWxsIHx8IGVycm9ycyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXJyb3JzLndhcm5pbmcsIFwiIFwiKS5jb25jYXQoc2Mud2FybmluZ3MsIFwiXFxuICAgICBcIikuY29uY2F0KHNjLndlcmVfZm91bmQsIFwiLlwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGVycm9yQ291bnQgPSBcIlwiLmNvbmNhdChlcnJvcnMgPT09IG51bGwgfHwgZXJyb3JzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlcnJvcnMuY3JpdGljYWwsIFwiIFwiKS5jb25jYXQoc2MuY3JpdGljYWwsIFwiIFwiKS5jb25jYXQoc2MuZXJyb3JzLCBcIiBcIikuY29uY2F0KHNjLndlcmVfZm91bmQsIFwiLlwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBlcnJvckNvdW50O1xuICAgICAgICB9O1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBsYW5ndWFnZTogbGFuZ3VhZ2UsIHNlbGVjdGVkQWN0aXZpdGllczogc2VsZWN0ZWRBY3Rpdml0aWVzLCB0b2dnbGU6IHRvZ2dsZSwgYWNjb3JkaW9uVG9nZ2xlOiBhY2NvcmRpb25Ub2dnbGUsIGVycm9yQ291bnQ6IGVycm9yQ291bnQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbi8vY29tcG9uZW50XG52YXIgQnV0dG9uQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWVcIikpO1xudmFyIFBvcHVwTW9kYWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvUG9wdXBNb2RhbC52dWVcIikpO1xudmFyIFByb2dyZXNzTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1Byb2dyZXNzTG9hZGVyLnZ1ZVwiKSk7XG52YXIgVmFsaWRhdGlvbkVycm9yc192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9WYWxpZGF0aW9uRXJyb3JzLnZ1ZVwiKSk7XG52YXIgTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0xvYWRlci52dWVcIikpO1xuLy8gVnVleCBTdG9yZVxudmFyIGluZGV4XzEgPSByZXF1aXJlKFwiU3RvcmUvYWN0aXZpdGllcy9pbmRleFwiKTtcbnZhciBCdWxrUHVibGlzaGluZ0Vycm9yUG9wdXBfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvQnVsa1B1Ymxpc2hpbmdFcnJvclBvcHVwLnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnUHVibGlzaFNlbGVjdGVkJyxcbiAgICBwcm9wczoge1xuICAgICAgICB0eXBlOiB7IHR5cGU6IFN0cmluZywgZGVmYXVsdDogJ3ByaW1hcnknIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBfYjtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICAvKipcbiAgICAgICAgICogIEdsb2JhbCBTdGF0ZVxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIHN0b3JlID0gKDAsIGluZGV4XzEudXNlU3RvcmUpKCk7XG4gICAgICAgIC8vIHRvZ2dsZSBzdGF0ZSBmb3IgbW9kYWwgcG9wdXBcbiAgICAgICAgdmFyIF9jID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIHB1Ymxpc2hBbGVydFZhbHVlID0gX2NbMF0sIHB1Ymxpc2hBbGVydFRvZ2dsZSA9IF9jWzFdO1xuICAgICAgICAvLyBzdGF0ZSBmb3Igc3RlcCBvZiB0aGUgZmxvd1xuICAgICAgICB2YXIgYnVsa1B1Ymxpc2hTdGVwID0gKDAsIHZ1ZV8yLnJlZikoMSk7XG4gICAgICAgIHZhciBidWxrUHVibGlzaFN0YXR1cyA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe30pO1xuICAgICAgICB2YXIgaXNMb2FkaW5nID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc3RhcnRQdWJsaXNoID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgcHVibGlzaGVkID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICAvLyBkaXNwbGF5L2hpZGUgdmFsaWRhdG9yIGxvYWRlclxuICAgICAgICB2YXIgbG9hZGVyID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICAvLyBEeW5hbWljIHRleHQgZm9yIGxvYWRlclxuICAgICAgICB2YXIgbG9hZGVyVGV4dCA9ICgwLCB2dWVfMi5yZWYpKGxhbmd1YWdlLmNvbW1vbl9sYW5nLnBsZWFzZV93YWl0KTtcbiAgICAgICAgLypTdGF0ZXMgZm9yIEJ1bGsgcHVibGlzaCBjYW5jZWxsYXRpb24gZmxvdyovXG4gICAgICAgIHZhciBzaG93Q2FuY2VsQ29uZmlybWF0aW9uUG9wdXAgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93Q2FuY2VsbGVkUG9wdXAgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBtZXNzYWdlT25DYW5jZWxsYXRpb24gPSAoMCwgdnVlXzIucmVmKSgnTm8gYnVsayBwdWJsaXNoIHdlcmUgY2FuY2VsbGVkJyk7XG4gICAgICAgIC8vIHJlc2V0IHN0ZXAgdG8gemVybyBhZnRlciBjbG9zaW5nIG1vZGFsXG4gICAgICAgIHZhciByZXNldFB1Ymxpc2hTdGVwID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgYnVsa1B1Ymxpc2hTdGVwLnZhbHVlID0gMTtcbiAgICAgICAgICAgIHB1Ymxpc2hBbGVydFZhbHVlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICBzZWxlY3RlZEFjdGl2aXRpZXMudmFsdWUgPSBbXTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHBvcFVwV2lkdGhDaGFuZ2UgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB3aWR0aCA9ICgwLCB2dWVfMi5yZWYpKCc4MjUnKTtcbiAgICAgICAgICAgIHN3aXRjaCAoYnVsa1B1Ymxpc2hTdGVwLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICB3aWR0aC52YWx1ZSA9ICc1ODMnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoLnZhbHVlID0gJzgwOSc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gd2lkdGgudmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyB0b2FzdCB2aXNpYmlsaXR5XG4gICAgICAgIHZhciBlcnJvckRhdGEgPSAoMCwgdnVlXzIuaW5qZWN0KSgnZXJyb3JEYXRhJyk7XG4gICAgICAgIHZhciBkaXNwbGF5VG9hc3QgPSBmdW5jdGlvbiAobWVzc2FnZSwgdHlwZSkge1xuICAgICAgICAgICAgZXJyb3JEYXRhLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgICAgICAgICAgZXJyb3JEYXRhLnR5cGUgPSB0eXBlO1xuICAgICAgICAgICAgZXJyb3JEYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZW1wdHlidWxrUHVibGlzaFN0YXR1cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZvciAodmFyIHN0YXR1c18xIGluIGJ1bGtQdWJsaXNoU3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGJ1bGtQdWJsaXNoU3RhdHVzW3N0YXR1c18xXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGNoZWNrIHB1Ymxpc2ggc3RhdHVzXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgY2hlY2tQdWJsaXNoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaXNMb2FkaW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5nZXQoXCIvYWN0aXZpdGllcy9jaGVja3MtZm9yLWFjdGl2aXR5LWJ1bGstcHVibGlzaFwiKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoQWxlcnRWYWx1ZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UgPT09IG51bGwgfHwgcmVzcG9uc2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlc3BvbnNlLmluX3Byb2dyZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbXB0eWJ1bGtQdWJsaXNoU3RhdHVzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGJ1bGtQdWJsaXNoU3RhdHVzLCByZXNwb25zZS5kYXRhLmFjdGl2aXRpZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NhbmNlbENvbmZpcm1hdGlvbk1vZGFsKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5VG9hc3QocmVzcG9uc2UubWVzc2FnZSwgcmVzcG9uc2Uuc3VjY2Vzcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5maW5hbGx5KGZ1bmN0aW9uICgpIHsgcmV0dXJuIChpc0xvYWRpbmcudmFsdWUgPSBmYWxzZSk7IH0pO1xuICAgICAgICB9O1xuICAgICAgICAvKipcbiAgICAgICAgICogVmVyaWZ5IGNvcmUgZWxlbWVudHNcbiAgICAgICAgICovXG4gICAgICAgIHZhciBjb3JlQ29tcGxldGVkQWN0aXZpdGllcyA9ICgwLCB2dWVfMi5yZWYpKFtdKSwgY29yZUluQ29tcGxldGVkQWN0aXZpdGllcyA9ICgwLCB2dWVfMi5yZWYpKFtdKSwgcGVybWFsaW5rID0gXCIvYWN0aXZpdHkvXCI7XG4gICAgICAgIHZhciB2ZXJpZnlDb3JlRWxlbWVudHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBsb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgbG9hZGVyVGV4dC52YWx1ZSA9IGxhbmd1YWdlLmNvbW1vbl9sYW5nLnZlcmlmeWluZ19jb3JlX2VsZW1lbnRzO1xuICAgICAgICAgICAgdmFyIGFjdGl2aXRpZXMgPSBzdG9yZS5zdGF0ZS5zZWxlY3RlZEFjdGl2aXRpZXMuam9pbignLCAnKTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5nZXQoXCIvYWN0aXZpdGllcy9jb3JlLWVsZW1lbnRzLWNvbXBsZXRlZD9hY3Rpdml0aWVzPVtcIi5jb25jYXQoYWN0aXZpdGllcywgXCJdXCIpKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBjb3JlQ29tcGxldGVkQWN0aXZpdGllcy52YWx1ZSA9IHJlc3BvbnNlLmRhdGEuY29tcGxldGU7XG4gICAgICAgICAgICAgICAgICAgIGNvcmVJbkNvbXBsZXRlZEFjdGl2aXRpZXMudmFsdWUgPSByZXNwb25zZS5kYXRhLmluY29tcGxldGU7XG4gICAgICAgICAgICAgICAgICAgIGJ1bGtQdWJsaXNoU3RlcC52YWx1ZSA9IDI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcmVzZXRQdWJsaXNoU3RlcCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UgPT09IG51bGwgfHwgcmVzcG9uc2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlc3BvbnNlLmluX3Byb2dyZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbXB0eWJ1bGtQdWJsaXNoU3RhdHVzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGJ1bGtQdWJsaXNoU3RhdHVzLCByZXNwb25zZS5kYXRhLmFjdGl2aXRpZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NhbmNlbENvbmZpcm1hdGlvbk1vZGFsKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5VG9hc3QocmVzcG9uc2UubWVzc2FnZSwgcmVzcG9uc2Uuc3VjY2Vzcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0sIDIwMDApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBWYWxpZGF0aW5nIEFjdGl2aXRpZXNcbiAgICAgICAgICovXG4gICAgICAgIHZhciB2YWxpZGF0aW9uRXJyb3JzID0gKDAsIHZ1ZV8yLnJlZikoe30pO1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLmdldChcImFjdGl2aXRpZXMvYnVsay1wdWJsaXNoLXN0YXR1cz9vcmdhbml6YXRpb25faWQ9XCIuY29uY2F0KChfYSA9IHBhLnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucHVibGlzaGluZ0FjdGl2aXRpZXMub3JnYW5pemF0aW9uX2lkLCBcIiYmdXVpZD1cIikuY29uY2F0KChfYiA9IHBhLnZhbHVlKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IucHVibGlzaGluZ0FjdGl2aXRpZXMuam9iX2JhdGNoX3V1aWQpKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oKF9hID0gcGEudmFsdWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5wdWJsaXNoaW5nQWN0aXZpdGllcywgKF9iID0gcmVzLmRhdGEpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5kYXRhKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHZhbGlkYXRlQWN0aXZpdGllcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBsb2FkZXJUZXh0LnZhbHVlID0gbGFuZ3VhZ2UuY29tbW9uX2xhbmcudmFsaWRhdGluZ19hY3Rpdml0aWVzO1xuICAgICAgICAgICAgdmFyIGFjdGl2aXRpZXMgPSBzdG9yZS5zdGF0ZS5zZWxlY3RlZEFjdGl2aXRpZXMuam9pbignLCAnKTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wb3N0KFwiL2FjdGl2aXRpZXMvdmFsaWRhdGUtYWN0aXZpdGllcz9hY3Rpdml0aWVzPVtcIi5jb25jYXQoYWN0aXZpdGllcywgXCJdXCIpKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBidWxrUHVibGlzaFN0ZXAudmFsdWUgPSAzO1xuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uRXJyb3JzLnZhbHVlID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc2V0UHVibGlzaFN0ZXAoKTtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheVRvYXN0KHJlc3BvbnNlLm1lc3NhZ2UsIHJlc3BvbnNlLnN1Y2Nlc3MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSwgMjAwMCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEJ1bGsgcHVibGlzaGluZyBhY3Rpdml0aWVzXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgc2VsZWN0ZWRBY3Rpdml0aWVzID0gKDAsIHZ1ZV8yLnJlZikoW10pO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ3NlbGVjdGVkQWN0aXZpdGllcycsIHNlbGVjdGVkQWN0aXZpdGllcyk7XG4gICAgICAgIC8vIGxvY2FsIHN0b3JhZ2UgZm9yIHB1Ymxpc2hpbmdcbiAgICAgICAgdmFyIHBhID0gKDAsIGNvcmVfMS51c2VTdG9yYWdlKSgndnVlLXVzZS1sb2NhbC1zdG9yYWdlJywge1xuICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXM6IChfYiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdwdWJsaXNoaW5nQWN0aXZpdGllcycpKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiB7fSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBzdGFydEJ1bGtQdWJsaXNoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJ0QnVsa1B1Ymxpc2gnLCB0cnVlKTtcbiAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBsb2FkZXJUZXh0LnZhbHVlID0gbGFuZ3VhZ2UuY29tbW9uX2xhbmcuc3RhcnRpbmdfdG9fcHVibGlzaDtcbiAgICAgICAgICAgIHBhLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzID0ge307XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAuZ2V0KFwiYWN0aXZpdGllcy9zdGFydC1idWxrLXB1Ymxpc2g/YWN0aXZpdGllcz1bXCIuY29uY2F0KHNlbGVjdGVkQWN0aXZpdGllcy52YWx1ZSwgXCJdXCIpKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU3RhcnRCdWxrUHVibGlzaCcsIHRydWUpO1xuICAgICAgICAgICAgICAgIHN0YXJ0UHVibGlzaC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVsa1B1Ymxpc2hTdGVwLnZhbHVlID0gMTtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaEFsZXJ0VmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcGEudmFsdWUucHVibGlzaGluZ0FjdGl2aXRpZXMgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJlc2V0UHVibGlzaFN0ZXAoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlID09PSBudWxsIHx8IHJlc3BvbnNlID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXNwb25zZS5pbl9wcm9ncmVzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW1wdHlidWxrUHVibGlzaFN0YXR1cygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihidWxrUHVibGlzaFN0YXR1cywgcmVzcG9uc2UuZGF0YS5hY3Rpdml0aWVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ocGEudmFsdWUucHVibGlzaGluZ0FjdGl2aXRpZXMsIHJlc3BvbnNlLmRhdGEuYWN0aXZpdGllcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlQnVsa3B1Ymxpc2hBY3Rpdml0aWVzJywgcmVzcG9uc2UuZGF0YS5hY3Rpdml0aWVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDYW5jZWxDb25maXJtYXRpb25Nb2RhbCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheVRvYXN0KHJlc3BvbnNlLm1lc3NhZ2UsIHJlc3BvbnNlLnN1Y2Nlc3MpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaGVkLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHBhLnZhbHVlOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2Q7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlQnVsa1B1Ymxpc2hMZW5ndGgnLCAoKF9iID0gKF9hID0gcGEgPT09IG51bGwgfHwgcGEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhLnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucHVibGlzaGluZ0FjdGl2aXRpZXMpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5hY3Rpdml0aWVzKSAmJlxuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKChfZCA9IChfYyA9IHBhID09PSBudWxsIHx8IHBhID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYS52YWx1ZSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLnB1Ymxpc2hpbmdBY3Rpdml0aWVzKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2QuYWN0aXZpdGllcylcbiAgICAgICAgICAgICAgICAgICAgLmxlbmd0aCk7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlQnVsa3B1Ymxpc2hBY3Rpdml0aWVzJywgcGEgPT09IG51bGwgfHwgcGEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhLnZhbHVlKTtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICAvKkNhbmNlbHMgb24tZ29pbmcgYnVsayBwdWJsaXNoKi9cbiAgICAgICAgdmFyIGNhbmNlbE90aGVyQnVsa1B1Ymxpc2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBsb2FkZXJUZXh0LnZhbHVlID0gJ0NhbmNlbGxpbmcgQnVsayBQdWJsaXNoJztcbiAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBjbG9zZUNhbmNlbENvbmZpcm1hdGlvbk1vZGFsKCk7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KCdhY3Rpdml0aWVzL2NhbmNlbC1idWxrLXB1Ymxpc2gnKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBzZXRDYW5jZWxsYXRpb25NZXNzYWdlKHJlcy5kYXRhLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICBzaG93Q2FuY2VsbGVkRGV0YWlsUG9wdXAoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0sIDUwMCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgLypTaG93IG1vZGFsIHRoYXQgc2hvd3MgbnVtYmVyIG9mIGJ1bGsgcHVibGlzaCBjYW5jZWxsZWQgKi9cbiAgICAgICAgdmFyIHNob3dDYW5jZWxsZWREZXRhaWxQb3B1cCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGVycm9yRGF0YS52aXNpYmlsaXR5ID0gZmFsc2U7XG4gICAgICAgICAgICBzaG93Q2FuY2VsbGVkUG9wdXAudmFsdWUgPSB0cnVlO1xuICAgICAgICB9O1xuICAgICAgICAvKlNldHMgbWVzc2FnZSBpbiBtb2RhbCB0cmlnZ2VyZWQgYnkgc2hvd0NhbmNlbGxlZERldGFpbFBvcHVwKCkgKi9cbiAgICAgICAgdmFyIHNldENhbmNlbGxhdGlvbk1lc3NhZ2UgPSBmdW5jdGlvbiAobXNnKSB7XG4gICAgICAgICAgICBlcnJvckRhdGEudmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgICAgICAgICAgbWVzc2FnZU9uQ2FuY2VsbGF0aW9uLnZhbHVlID0gbXNnO1xuICAgICAgICB9O1xuICAgICAgICAvKkNsb3NlcyBDYW5jZWwgQ29uZmlybWF0aW9uIFBvcHVwKi9cbiAgICAgICAgdmFyIGNsb3NlQ2FuY2VsbGVkRGV0YWlsc1BvcHVwID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZXJyb3JEYXRhLnZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICAgICAgICAgIHNob3dDYW5jZWxsZWRQb3B1cC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB9O1xuICAgICAgICAvKk9wZW5zIG1vZGFsIHRoYXQgYWxsb3dzIHRvIGNhbmNlbCBleGlzdGluZyBidWxrIHB1Ymxpc2gqL1xuICAgICAgICB2YXIgc2hvd0NhbmNlbENvbmZpcm1hdGlvbk1vZGFsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hvd0NhbmNlbENvbmZpcm1hdGlvblBvcHVwLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgfTtcbiAgICAgICAgLypDbG9zZXMgbW9kYWwgdGhhdCBhbGxvd3MgdG8gY2FuY2VsIGV4aXN0aW5nIGJ1bGsgcHVibGlzaCovXG4gICAgICAgIHZhciBjbG9zZUNhbmNlbENvbmZpcm1hdGlvbk1vZGFsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hvd0NhbmNlbENvbmZpcm1hdGlvblBvcHVwLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIH07XG4gICAgICAgIC8qIFRyaWdnZXIgdGhlIG5vcm1hbCBmbG93IG9mIGJ1bGsgcHVibGlzaGluZyBhY3Rpdml0aWVzKi9cbiAgICAgICAgdmFyIHB1Ymxpc2hBZnRlckNhbmNlbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNob3dDYW5jZWxsZWRQb3B1cC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgY2hlY2tQdWJsaXNoKCk7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgncGFTdG9yYWdlJywgcGEpO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ2J1bGtQdWJsaXNoU3RhdHVzJywgYnVsa1B1Ymxpc2hTdGF0dXMpO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ3N0YXJ0UHVibGlzaCcsIHN0YXJ0UHVibGlzaCk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGxhbmd1YWdlOiBsYW5ndWFnZSwgc3RvcmU6IHN0b3JlLCBwdWJsaXNoQWxlcnRWYWx1ZTogcHVibGlzaEFsZXJ0VmFsdWUsIHB1Ymxpc2hBbGVydFRvZ2dsZTogcHVibGlzaEFsZXJ0VG9nZ2xlLCBidWxrUHVibGlzaFN0ZXA6IGJ1bGtQdWJsaXNoU3RlcCwgYnVsa1B1Ymxpc2hTdGF0dXM6IGJ1bGtQdWJsaXNoU3RhdHVzLCBpc0xvYWRpbmc6IGlzTG9hZGluZywgc3RhcnRQdWJsaXNoOiBzdGFydFB1Ymxpc2gsIHB1Ymxpc2hlZDogcHVibGlzaGVkLCBsb2FkZXI6IGxvYWRlciwgbG9hZGVyVGV4dDogbG9hZGVyVGV4dCwgc2hvd0NhbmNlbENvbmZpcm1hdGlvblBvcHVwOiBzaG93Q2FuY2VsQ29uZmlybWF0aW9uUG9wdXAsIHNob3dDYW5jZWxsZWRQb3B1cDogc2hvd0NhbmNlbGxlZFBvcHVwLCBtZXNzYWdlT25DYW5jZWxsYXRpb246IG1lc3NhZ2VPbkNhbmNlbGxhdGlvbiwgcmVzZXRQdWJsaXNoU3RlcDogcmVzZXRQdWJsaXNoU3RlcCwgcG9wVXBXaWR0aENoYW5nZTogcG9wVXBXaWR0aENoYW5nZSwgZXJyb3JEYXRhOiBlcnJvckRhdGEsIGRpc3BsYXlUb2FzdDogZGlzcGxheVRvYXN0LCBlbXB0eWJ1bGtQdWJsaXNoU3RhdHVzOiBlbXB0eWJ1bGtQdWJsaXNoU3RhdHVzLCBjaGVja1B1Ymxpc2g6IGNoZWNrUHVibGlzaCwgY29yZUNvbXBsZXRlZEFjdGl2aXRpZXM6IGNvcmVDb21wbGV0ZWRBY3Rpdml0aWVzLCBjb3JlSW5Db21wbGV0ZWRBY3Rpdml0aWVzOiBjb3JlSW5Db21wbGV0ZWRBY3Rpdml0aWVzLCBwZXJtYWxpbms6IHBlcm1hbGluaywgdmVyaWZ5Q29yZUVsZW1lbnRzOiB2ZXJpZnlDb3JlRWxlbWVudHMsIHZhbGlkYXRpb25FcnJvcnM6IHZhbGlkYXRpb25FcnJvcnMsIHZhbGlkYXRlQWN0aXZpdGllczogdmFsaWRhdGVBY3Rpdml0aWVzLCBzZWxlY3RlZEFjdGl2aXRpZXM6IHNlbGVjdGVkQWN0aXZpdGllcywgcGE6IHBhLCBzdGFydEJ1bGtQdWJsaXNoOiBzdGFydEJ1bGtQdWJsaXNoLCBjYW5jZWxPdGhlckJ1bGtQdWJsaXNoOiBjYW5jZWxPdGhlckJ1bGtQdWJsaXNoLCBzaG93Q2FuY2VsbGVkRGV0YWlsUG9wdXA6IHNob3dDYW5jZWxsZWREZXRhaWxQb3B1cCwgc2V0Q2FuY2VsbGF0aW9uTWVzc2FnZTogc2V0Q2FuY2VsbGF0aW9uTWVzc2FnZSwgY2xvc2VDYW5jZWxsZWREZXRhaWxzUG9wdXA6IGNsb3NlQ2FuY2VsbGVkRGV0YWlsc1BvcHVwLCBzaG93Q2FuY2VsQ29uZmlybWF0aW9uTW9kYWw6IHNob3dDYW5jZWxDb25maXJtYXRpb25Nb2RhbCwgY2xvc2VDYW5jZWxDb25maXJtYXRpb25Nb2RhbDogY2xvc2VDYW5jZWxDb25maXJtYXRpb25Nb2RhbCwgcHVibGlzaEFmdGVyQ2FuY2VsOiBwdWJsaXNoQWZ0ZXJDYW5jZWwsIEJ0bkNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQsIE1vZGFsOiBQb3B1cE1vZGFsX3Z1ZV8xLmRlZmF1bHQsIExvYWRlcjogUHJvZ3Jlc3NMb2FkZXJfdnVlXzEuZGVmYXVsdCwgVmFsaWRhdGlvbkVycm9yczogVmFsaWRhdGlvbkVycm9yc192dWVfMS5kZWZhdWx0LCBQYWdlTG9hZGVyOiBMb2FkZXJfdnVlXzEuZGVmYXVsdCwgQnVsa1B1Ymxpc2hpbmdFcnJvclBvcHVwOiBCdWxrUHVibGlzaGluZ0Vycm9yUG9wdXBfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1JlZnJlc2hUb2FzdCcsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgbWVzc2FnZTogeyB0eXBlOiBTdHJpbmcsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHR5cGU6IHsgdHlwZTogQm9vbGVhbiwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgY2xhc3NOYW1lID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICBjbGFzc05hbWUudmFsdWUgPSBwcm9wcy50eXBlXG4gICAgICAgICAgICA/ICdiZy1taW50IGJvcmRlci1zcHJpbmctMTAnXG4gICAgICAgICAgICA6ICdiZy1jcmltc29uLTEwIGJvcmRlci1jcmltc29uLTIwJztcbiAgICAgICAgdmFyIGNsYXNzTmFtZTIgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIGNsYXNzTmFtZTIudmFsdWUgPSBwcm9wcy50eXBlXG4gICAgICAgICAgICA/ICd0ZXh0LXNwcmluZy01MCBob3Zlcjp0ZXh0LXNwcmluZy01MCdcbiAgICAgICAgICAgIDogJ3RleHQtY3JpbXNvbi01MCBob3Zlcjp0ZXh0LWNyaW1zb24tNTAnO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBsYW5ndWFnZTogbGFuZ3VhZ2UsIHByb3BzOiBwcm9wcywgY2xhc3NOYW1lOiBjbGFzc05hbWUsIGNsYXNzTmFtZTI6IGNsYXNzTmFtZTIgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIEVycm9ySXRlbV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9FcnJvckl0ZW0udnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdWYWxpZGF0aW9uRXJyb3JzJyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgY3JpdGljYWxNZXNzYWdlID0gbGFuZ3VhZ2UuY29tbW9uX2xhbmcubWVzc2FnZS5jcml0aWNhbDtcbiAgICAgICAgdmFyIHdhcm5pbmdNZXNzYWdlID0gbGFuZ3VhZ2UuY29tbW9uX2xhbmcubWVzc2FnZS53YXJuaW5nO1xuICAgICAgICB2YXIgbm9FcnJvck1lc3NhZ2UgPSBsYW5ndWFnZS5jb21tb25fbGFuZy5tZXNzYWdlLm5vX2Vycm9yO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBsYW5ndWFnZTogbGFuZ3VhZ2UsIGNyaXRpY2FsTWVzc2FnZTogY3JpdGljYWxNZXNzYWdlLCB3YXJuaW5nTWVzc2FnZTogd2FybmluZ01lc3NhZ2UsIG5vRXJyb3JNZXNzYWdlOiBub0Vycm9yTWVzc2FnZSwgRXJyb3JJdGVtOiBFcnJvckl0ZW1fdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgbW9tZW50XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1vbWVudFwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0FjdGl2aXR5RGF0ZScsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIGZ1bmN0aW9uIGZvcm1hdERhdGUoZGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuICgwLCBtb21lbnRfMS5kZWZhdWx0KShkYXRlKS5mb3JtYXQoJ0xMJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgdHlwZXM6IHR5cGVzLCBmb3JtYXREYXRlOiBmb3JtYXREYXRlLCBsYW5ndWFnZTogbGFuZ3VhZ2UgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdBY3Rpdml0eUNvbmRpdGlvbnMnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyB0eXBlczogdHlwZXMsIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0LCBsYW5ndWFnZTogbGFuZ3VhZ2UgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0FjdGl2aXR5Q29udGFjdEluZm8nLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyB0eXBlczogdHlwZXMsIGxhbmd1YWdlOiBsYW5ndWFnZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlEZXNjcmlwdGlvbicsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHJldHVybiB7IHR5cGVzOiB0eXBlcywgbGFuZ3VhZ2U6IGxhbmd1YWdlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdIdW1hbml0YXJpYW5TY29wZScsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGxhbmd1YWdlOiBsYW5ndWFnZSwgdHlwZXM6IHR5cGVzIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnSWF0aUlkZW50aWZpZXInLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlTZWN0b3InLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHJldHVybiB7IGxhbmd1YWdlOiBsYW5ndWFnZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlMb2NhdGlvbicsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHJldHVybiB7IHR5cGVzOiB0eXBlcywgbGFuZ3VhZ2U6IGxhbmd1YWdlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdPdGhlcklkZW50aWZpZXInLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICByZXR1cm4geyB0eXBlczogdHlwZXMsIGxhbmd1YWdlOiBsYW5ndWFnZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlQYXJ0aWNpcGF0aW5nT3JnJyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgcmV0dXJuIHsgdHlwZXM6IHR5cGVzLCBsYW5ndWFnZTogbGFuZ3VhZ2UgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIG1vbWVudF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJtb21lbnRcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1BsYW5uZWREaXNidXJzZW1lbnQnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgZnVuY3Rpb24gZm9ybWF0RGF0ZShkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gKDAsIG1vbWVudF8xLmRlZmF1bHQpKGRhdGUpLmZvcm1hdCgnTEwnKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGZvcm1hdERhdGU6IGZvcm1hdERhdGUsIGxhbmd1YWdlOiBsYW5ndWFnZSwgdHlwZXM6IHR5cGVzIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBkYXRlRm9ybWF0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZGF0ZUZvcm1hdFwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1BvbGljeU1hcmtlcicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHJldHVybiB7IHR5cGVzOiB0eXBlcywgZGF0ZUZvcm1hdDogZGF0ZUZvcm1hdF8xLmRlZmF1bHQsIGxhbmd1YWdlOiBsYW5ndWFnZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlSZWNpcGllbnRDb3VudHJ5JyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgZnVuY3Rpb24gcm91bmRGbG9hdChudW0pIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KG51bSkudG9GaXhlZCgyKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyB0eXBlczogdHlwZXMsIHJvdW5kRmxvYXQ6IHJvdW5kRmxvYXQsIGxhbmd1YWdlOiBsYW5ndWFnZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnUmVjaXBpZW50UmVnaW9uJyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzIuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgZnVuY3Rpb24gcm91bmRGbG9hdChudW0pIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KG51bSkudG9GaXhlZCgyKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBsYW5ndWFnZTogbGFuZ3VhZ2UsIHR5cGVzOiB0eXBlcywgcm91bmRGbG9hdDogcm91bmRGbG9hdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdSZWxhdGVkQWN0aXZpdHknLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICByZXR1cm4geyB0eXBlczogdHlwZXMsIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0LCBsYW5ndWFnZTogbGFuZ3VhZ2UgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1JlcG9ydGluZ09yZ2FuaXphdGlvbicsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YTogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgdHJhbnNsYXRpb24gPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHRyYW5zbGF0aW9uOiB0cmFuc2xhdGlvbiwgdHlwZXM6IHR5cGVzIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBtb21lbnRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwibW9tZW50XCIpKTtcbi8vY29tcG9uZW50c1xudmFyIExpbmtfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvYnV0dG9ucy9MaW5rLnZ1ZVwiKSk7XG52YXIgSGF2ZU5vdEFkZGVkWWV0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL0hhdmVOb3RBZGRlZFlldC52dWVcIikpO1xuLy8gY29tcG9zYWJsZVxudmFyIHRpdGxlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvdGl0bGVcIikpO1xudmFyIGRhdGVGb3JtYXRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS9kYXRlRm9ybWF0XCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlSZXN1bHQnLFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgQnRuOiBMaW5rX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIE5vdFlldDogSGF2ZU5vdEFkZGVkWWV0X3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgYWN0aXZpdHlJZDoge1xuICAgICAgICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRpdGxlOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdG9vbHRpcDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRMYW5ndWFnZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGVkOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgZm9ybWF0ID0gJ01NTU0gREQsIFlZWVknO1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgcmVzdWx0RGF0YSA9IGRhdGEudmFsdWUuY29udGVudDtcbiAgICAgICAgdmFyIGN1cnJlbnRMYW5ndWFnZSA9ICdlbic7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBtb21lbnQ6IG1vbWVudF8xLmRlZmF1bHQsXG4gICAgICAgICAgICBmb3JtYXQ6IGZvcm1hdCxcbiAgICAgICAgICAgIHJlc3VsdERhdGE6IHJlc3VsdERhdGEsXG4gICAgICAgICAgICBnZXRBY3Rpdml0eVRpdGxlOiB0aXRsZV8xLmRlZmF1bHQsXG4gICAgICAgICAgICBjdXJyZW50TGFuZ3VhZ2U6IGN1cnJlbnRMYW5ndWFnZSxcbiAgICAgICAgICAgIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0LFxuICAgICAgICAgICAgbGFuZ3VhZ2U6IGxhbmd1YWdlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlTZWN0b3InLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICBmdW5jdGlvbiByb3VuZEZsb2F0KG51bSkge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQobnVtKS50b0ZpeGVkKDIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IHR5cGVzOiB0eXBlcywgcm91bmRGbG9hdDogcm91bmRGbG9hdCwgbGFuZ3VhZ2U6IGxhbmd1YWdlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGRhdGVGb3JtYXRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS9kYXRlRm9ybWF0XCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlUYWcnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyB0eXBlczogdHlwZXMsIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0LCBsYW5ndWFnZTogbGFuZ3VhZ2UgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0FjdGl2aXR5VGl0bGUnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyB0eXBlczogdHlwZXMsIGxhbmd1YWdlOiBsYW5ndWFnZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBkYXRlRm9ybWF0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZGF0ZUZvcm1hdFwiKSk7XG52YXIgTGlua192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9idXR0b25zL0xpbmsudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlUcmFuc2FjdGlvbnMnLFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgQnRuOiBMaW5rX3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgcmV0dXJuIHsgdHlwZXM6IHR5cGVzLCBkYXRlRm9ybWF0OiBkYXRlRm9ybWF0XzEuZGVmYXVsdCwgbGFuZ3VhZ2U6IGxhbmd1YWdlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuLy9jb21wb25lbnRcbnZhciBMaW5rX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL2J1dHRvbnMvTGluay52dWVcIikpO1xudmFyIFBhZ2VUaXRsZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9QYWdlVGl0bGUudnVlXCIpKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG4vL2hlbHBlclxudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS91dGlsc1wiKTtcbnZhciBJbmRleF8xID0gcmVxdWlyZShcIi4vZWxlbWVudHMvSW5kZXhcIik7XG4vL2NvbXBvc2FibGVcbnZhciB0aXRsZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL3RpdGxlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnSW5kaWNhdG9yRGV0YWlsJyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIFRpdGxlRWxlbWVudDogSW5kZXhfMS5UaXRsZUVsZW1lbnQsXG4gICAgICAgIE1lYXN1cmU6IEluZGV4XzEuTWVhc3VyZSxcbiAgICAgICAgQXNjZW5kaW5nOiBJbmRleF8xLkFzY2VuZGluZyxcbiAgICAgICAgQWdncmVnYXRpb25TdGF0dXM6IEluZGV4XzEuQWdncmVnYXRpb25TdGF0dXMsXG4gICAgICAgIERlc2NyaXB0aW9uOiBJbmRleF8xLkRlc2NyaXB0aW9uLFxuICAgICAgICBSZWZlcmVuY2U6IEluZGV4XzEuUmVmZXJlbmNlLFxuICAgICAgICBCYXNlbGluZTogSW5kZXhfMS5CYXNlbGluZSxcbiAgICAgICAgRG9jdW1lbnRMaW5rOiBJbmRleF8xLkRvY3VtZW50TGluayxcbiAgICAgICAgUGVyaW9kOiBJbmRleF8xLlBlcmlvZCxcbiAgICAgICAgQnRuOiBMaW5rX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFBhZ2VUaXRsZTogUGFnZVRpdGxlX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGFjdGl2aXR5OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVzdWx0VGl0bGU6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBpbmRpY2F0b3I6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBwZXJpb2Q6IHtcbiAgICAgICAgICAgIHR5cGU6IEFycmF5LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdG9hc3Q6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBlbGVtZW50OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIGxpbmtDbGFzc2VzID0gJ2ZsZXggaXRlbXMtY2VudGVyIHctZnVsbCBiZy13aGl0ZSByb3VuZGVkIHAtMiB0ZXh0LXNtIHRleHQtbi01MCBmb250LWJvbGQgbGVhZGluZy1ub3JtYWwgbWItMiBzaGFkb3ctZGVmYXVsdCc7XG4gICAgICAgIHZhciB0b2FzdERhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9iID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLCBpbmRpY2F0b3IgPSBfYi5pbmRpY2F0b3IsIGFjdGl2aXR5ID0gX2IuYWN0aXZpdHksIHBlcmlvZCA9IF9iLnBlcmlvZCwgcmVzdWx0VGl0bGUgPSBfYi5yZXN1bHRUaXRsZTtcbiAgICAgICAgdmFyIHNob3dTaWRlYmFyID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgcG9zaXRpb25ZID0gKDAsIHZ1ZV8xLnJlZikoMCk7XG4gICAgICAgIHZhciBzY3JlZW5XaWR0aCA9ICgwLCB2dWVfMS5yZWYpKDApO1xuICAgICAgICAvL2luZGljYXRvclxuICAgICAgICB2YXIgaW5kaWNhdG9yRGF0YSA9IGluZGljYXRvci52YWx1ZS5pbmRpY2F0b3I7XG4gICAgICAgIHZhciBwZXJpb2REYXRhID0gcGVyaW9kLnZhbHVlO1xuICAgICAgICAvLyB2dWUgcHJvdmlkZXNcbiAgICAgICAgdmFyIHBhcmVudERhdGEgPSB7XG4gICAgICAgICAgICBhY3Rpdml0eTogYWN0aXZpdHkudmFsdWUuaWQsXG4gICAgICAgICAgICByZXN1bHQ6IGluZGljYXRvci52YWx1ZS5yZXN1bHRfaWQsXG4gICAgICAgICAgICBpbmRpY2F0b3I6IGluZGljYXRvci52YWx1ZS5pZCxcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdwYXJlbnREYXRhJywgcGFyZW50RGF0YSk7XG4gICAgICAgIHZhciBhY3Rpdml0eUlkID0gYWN0aXZpdHkudmFsdWUuaWQsIGFjdGl2aXR5TGluayA9IFwiL2FjdGl2aXR5L1wiLmNvbmNhdChhY3Rpdml0eUlkKSwgcmVzdWx0SWQgPSBpbmRpY2F0b3IudmFsdWUucmVzdWx0X2lkLCBkZWZhdWx0TGFuZ3VhZ2UgPSAoX2EgPSBhY3Rpdml0eS52YWx1ZS5kZWZhdWx0X2ZpZWxkX3ZhbHVlcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxhbmd1YWdlLCBhY3Rpdml0eVRpdGxlID0gKDAsIHRpdGxlXzEuZGVmYXVsdCkoYWN0aXZpdHkudmFsdWUudGl0bGUsIGRlZmF1bHRMYW5ndWFnZSksIHJlc3VsdFRpdGxlZCA9ICgwLCB0aXRsZV8xLmRlZmF1bHQpKHJlc3VsdFRpdGxlLnZhbHVlWzBdLm5hcnJhdGl2ZSwgZGVmYXVsdExhbmd1YWdlKSwgcmVzdWx0TGluayA9IFwiXCIuY29uY2F0KGFjdGl2aXR5TGluaywgXCIvcmVzdWx0L1wiKS5jb25jYXQocmVzdWx0SWQpLCBpbmRpY2F0b3JMaW5rID0gXCIvcmVzdWx0L1wiLmNvbmNhdChyZXN1bHRJZCwgXCIvaW5kaWNhdG9yXCIpLCBpbmRpY2F0b3JUaXRsZSA9ICgwLCB0aXRsZV8xLmRlZmF1bHQpKGluZGljYXRvckRhdGEudGl0bGVbMF0ubmFycmF0aXZlLCBkZWZhdWx0TGFuZ3VhZ2UpO1xuICAgICAgICB2YXIgY2FsY1dpZHRoID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBzY3JlZW5XaWR0aC52YWx1ZSA9IGV2ZW50LnRhcmdldC5pbm5lcldpZHRoO1xuICAgICAgICAgICAgaWYgKHNjcmVlbldpZHRoLnZhbHVlID4gMTAyNCkge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHNob3dTaWRlYmFyLnZhbHVlICYmXG4gICAgICAgICAgICAgICAgICAgIChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBCcmVhZGNydW1iIGRhdGFcbiAgICAgICAgICovXG4gICAgICAgIHZhciBicmVhZGNydW1iRGF0YSA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogbGFuZ3VhZ2UuYWN0aXZpdGllc19sYW5nLnlvdXJfYWN0aXZpdGllcyxcbiAgICAgICAgICAgICAgICBsaW5rOiAnL2FjdGl2aXRpZXMnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogYWN0aXZpdHlUaXRsZSxcbiAgICAgICAgICAgICAgICBsaW5rOiBhY3Rpdml0eUxpbmssXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiByZXN1bHRUaXRsZWQsXG4gICAgICAgICAgICAgICAgbGluazogcmVzdWx0TGluayxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGluZGljYXRvclRpdGxlLFxuICAgICAgICAgICAgICAgIGxpbms6ICcnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgICAgdmFyIGhhbmRsZVNjcm9sbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHBvc2l0aW9uWS52YWx1ZSA9IHdpbmRvdy5zY3JvbGxZO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgY2FsY1dpZHRoKTtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpO1xuICAgICAgICAgICAgaWYgKHByb3BzLnRvYXN0Lm1lc3NhZ2UgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSBwcm9wcy50b2FzdC50eXBlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHByb3BzLnRvYXN0Lm1lc3NhZ2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgICAgICAgICAgfSwgNTAwMCk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaXN0b3BWaXNpYmxlID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gcG9zaXRpb25ZLnZhbHVlID09PSAwO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLm9uVW5tb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKTtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxjV2lkdGgpO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzaG93U2lkZWJhci52YWx1ZTsgfSwgZnVuY3Rpb24gKHNpZGViYXIpIHtcbiAgICAgICAgICAgIGlmIChzaWRlYmFyKSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxpbmtDbGFzc2VzOiBsaW5rQ2xhc3NlcyxcbiAgICAgICAgICAgIGluZGljYXRvclRpdGxlOiBpbmRpY2F0b3JUaXRsZSxcbiAgICAgICAgICAgIGluZGljYXRvckRhdGE6IGluZGljYXRvckRhdGEsXG4gICAgICAgICAgICBhY3Rpdml0eUxpbms6IGFjdGl2aXR5TGluayxcbiAgICAgICAgICAgIHJlc3VsdExpbms6IHJlc3VsdExpbmssXG4gICAgICAgICAgICBpbmRpY2F0b3JMaW5rOiBpbmRpY2F0b3JMaW5rLFxuICAgICAgICAgICAgYnJlYWRjcnVtYkRhdGE6IGJyZWFkY3J1bWJEYXRhLFxuICAgICAgICAgICAgdG9hc3REYXRhOiB0b2FzdERhdGEsXG4gICAgICAgICAgICBwZXJpb2REYXRhOiBwZXJpb2REYXRhLFxuICAgICAgICAgICAgc2hvd1NpZGViYXI6IHNob3dTaWRlYmFyLFxuICAgICAgICAgICAgaXN0b3BWaXNpYmxlOiBpc3RvcFZpc2libGUsXG4gICAgICAgICAgICBjb3VudERvY3VtZW50TGluazogdXRpbHNfMS5jb3VudERvY3VtZW50TGluayxcbiAgICAgICAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xuLy8gY29tcG9uZW50c1xudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbnZhciBUYWJsZVBhZ2luYXRpb25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVGFibGVQYWdpbmF0aW9uLnZ1ZVwiKSk7XG52YXIgUGFnZVRpdGxlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1BhZ2VUaXRsZS52dWVcIikpO1xudmFyIFRvYXN0TWVzc2FnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlXCIpKTtcbnZhciBEZWxldGVBY3Rpb25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvRGVsZXRlQWN0aW9uLnZ1ZVwiKSk7XG4vLyBjb21wb3NhYmxlXG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xudmFyIHRpdGxlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvdGl0bGVcIikpO1xudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiLi4vLi4vLi4vY29tcG9zYWJsZS91dGlsc1wiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnSW5kaWNhdG9yTGlzdCcsXG4gICAgbWV0aG9kczogeyBzbmFrZUNhc2VUb1NlbnRlbmNlQ2FzZTogdXRpbHNfMS5zbmFrZUNhc2VUb1NlbnRlbmNlQ2FzZSwgY3JlYXRlQ2FwaXRhbGl6ZWRTZW50ZW5jZTogdXRpbHNfMS5jcmVhdGVDYXBpdGFsaXplZFNlbnRlbmNlIH0sXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBCdG46IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBQYWdpbmF0aW9uOiBUYWJsZVBhZ2luYXRpb25fdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgUGFnZVRpdGxlOiBQYWdlVGl0bGVfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgVG9hc3Q6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0LFxuICAgICAgICBEZWxldGVBY3Rpb246IERlbGV0ZUFjdGlvbl92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgYWN0aXZpdHk6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBwYXJlbnREYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgaW5kaWNhdG9yczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdG9hc3Q6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIF9hID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLCBhY3Rpdml0eSA9IF9hLmFjdGl2aXR5LCBwYXJlbnREYXRhID0gX2EucGFyZW50RGF0YTtcbiAgICAgICAgdmFyIGFjdGl2aXR5SWQgPSBhY3Rpdml0eS52YWx1ZS5pZCwgYWN0aXZpdHlUaXRsZSA9IGFjdGl2aXR5LnZhbHVlLnRpdGxlLCBhY3Rpdml0eUxpbmsgPSBcIi9hY3Rpdml0eS9cIi5jb25jYXQoYWN0aXZpdHlJZCksIHJlc3VsdElkID0gcGFyZW50RGF0YS52YWx1ZS5yZXN1bHQuaWQsIHJlc3VsdFRpdGxlID0gKDAsIHRpdGxlXzEuZGVmYXVsdCkocGFyZW50RGF0YS52YWx1ZS5yZXN1bHQudGl0bGUsICdlbicpLCByZXN1bHRMaW5rID0gXCJcIi5jb25jYXQoYWN0aXZpdHlMaW5rLCBcIi9yZXN1bHQvXCIpLmNvbmNhdChyZXN1bHRJZCksIGluZGljYXRvckxpbmsgPSBcIi9yZXN1bHQvXCIuY29uY2F0KHJlc3VsdElkLCBcIi9pbmRpY2F0b3JcIik7XG4gICAgICAgIHZhciBpbmRpY2F0b3JzRGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe30pO1xuICAgICAgICB2YXIgaXNFbXB0eSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHRvYXN0RGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICAgIHR5cGU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICAvKipcbiAgICAgICAgICogQnJlYWRjcnVtYiBkYXRhXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgYnJlYWRjcnVtYkRhdGEgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGxhbmd1YWdlLmFjdGl2aXRpZXNfbGFuZy55b3VyX2FjdGl2aXRpZXMsXG4gICAgICAgICAgICAgICAgbGluazogJy9hY3Rpdml0aWVzJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICgwLCB0aXRsZV8xLmRlZmF1bHQpKGFjdGl2aXR5VGl0bGUsICdlbicpLFxuICAgICAgICAgICAgICAgIGxpbms6IFwiL2FjdGl2aXR5L1wiLmNvbmNhdChhY3Rpdml0eUlkKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHJlc3VsdFRpdGxlLFxuICAgICAgICAgICAgICAgIGxpbms6IFwiL2FjdGl2aXR5L1wiLmNvbmNhdChhY3Rpdml0eUlkLCBcIi9yZXN1bHQvXCIpLmNvbmNhdChyZXN1bHRJZCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBsYW5ndWFnZS5jb21tb25fbGFuZy5pbmRpY2F0b3JfbGlzdCxcbiAgICAgICAgICAgICAgICBsaW5rOiAnJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICAgICgwLCB2dWVfMS5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KFwiL3Jlc3VsdC9cIi5jb25jYXQocmVzdWx0SWQsIFwiL2luZGljYXRvcnMvcGFnZS8xXCIpKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oaW5kaWNhdG9yc0RhdGEsIHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICBpc0VtcHR5LnZhbHVlID0gcmVzcG9uc2UuZGF0YS5kYXRhLmxlbmd0aCA/IGZhbHNlIDogdHJ1ZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAocHJvcHMudG9hc3QubWVzc2FnZSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSBwcm9wcy50b2FzdC50eXBlO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcHJvcHMudG9hc3QubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSwgNTAwMCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9KTtcbiAgICAgICAgZnVuY3Rpb24gaGFuZGxlTmF2aWdhdGUocGF0aCkge1xuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBwYXRoO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGZldGNoTGlzdGluZ3MoYWN0aXZlX3BhZ2UpIHtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5nZXQoXCIvcmVzdWx0L1wiLmNvbmNhdChyZXN1bHRJZCwgXCIvaW5kaWNhdG9ycy9wYWdlL1wiKSArIGFjdGl2ZV9wYWdlKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGluZGljYXRvcnNEYXRhLCByZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICAgICAgICBpc0VtcHR5LnZhbHVlID0gcmVzcG9uc2UuZGF0YSA/IGZhbHNlIDogdHJ1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIHByb3ZpZGVcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdwYXJlbnRJdGVtSWQnLCByZXN1bHRJZCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhY3Rpdml0eUlkOiBhY3Rpdml0eUlkLFxuICAgICAgICAgICAgZGF0ZUZvcm1hdDogZGF0ZUZvcm1hdF8xLmRlZmF1bHQsXG4gICAgICAgICAgICBpbmRpY2F0b3JzRGF0YTogaW5kaWNhdG9yc0RhdGEsXG4gICAgICAgICAgICBnZXRBY3Rpdml0eVRpdGxlOiB0aXRsZV8xLmRlZmF1bHQsXG4gICAgICAgICAgICBmZXRjaExpc3RpbmdzOiBmZXRjaExpc3RpbmdzLFxuICAgICAgICAgICAgcmVzdWx0TGluazogcmVzdWx0TGluayxcbiAgICAgICAgICAgIGluZGljYXRvckxpbms6IGluZGljYXRvckxpbmssXG4gICAgICAgICAgICBicmVhZGNydW1iRGF0YTogYnJlYWRjcnVtYkRhdGEsXG4gICAgICAgICAgICB0b2FzdERhdGE6IHRvYXN0RGF0YSxcbiAgICAgICAgICAgIHJlc3VsdElkOiByZXN1bHRJZCxcbiAgICAgICAgICAgIGhhbmRsZU5hdmlnYXRlOiBoYW5kbGVOYXZpZ2F0ZSxcbiAgICAgICAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0luZGljYXRvckFnZ3JlZ2F0aW9uU3RhdHVzJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciBzdGF0dXNEYXRhID0gZGF0YS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHsgc3RhdHVzRGF0YTogc3RhdHVzRGF0YSwgbGFuZ3VhZ2U6IGxhbmd1YWdlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIEluZGV4XzEgPSByZXF1aXJlKFwiLi9JbmRleFwiKTtcbnZhciB1dGlsc18xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdXRpbHNcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0luZGljYXRvckJhc2VsaW5lJyxcbiAgICBjb21wb25lbnRzOiB7IERvY3VtZW50TGluazogSW5kZXhfMS5Eb2N1bWVudExpbmsgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBBcnJheSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBiYXNlVHlwZToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciBlbGVtZW50U3BhY2luZyA9ICdtYi0xJztcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciBiYXNlbGluZSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHZhciBsb2NhdGlvbiA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgICAgICB2YXIgbG9jYXRpb25zID0gW107XG4gICAgICAgICAgICBsb2NhdGlvbnMgPSBkYXRhLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLnJlZmVyZW5jZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdmFyIGxhc3RMb2NhdGlvbiA9IGxvY2F0aW9ucy5zbGljZSgtMSlbMF07XG4gICAgICAgICAgICBsb2NhdGlvbnMgPSBsb2NhdGlvbnMuc2xpY2UoMCwgLTEpO1xuICAgICAgICAgICAgaWYgKGxvY2F0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChsb2NhdGlvbnMuam9pbignLCAnKSArXG4gICAgICAgICAgICAgICAgICAgICcgJyArXG4gICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlLmNvbW1vbl9sYW5nLnN0aWNreS5jb21tb24uYW5kICtcbiAgICAgICAgICAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgICAgICAgICAgbGFzdExvY2F0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBsYXN0TG9jYXRpb247XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGdW5jdGlvbiB0byByZXR1cm4gZGltZW5zaW9ucyBvZiBiYXNlbGluZVxuICAgICAgICAgKiBAcGFyYW0gZGF0YVxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIGRpbWVuc2lvbnMgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICAgICAgdmFyIGRpbWVuc2lvbnMgPSBbXTtcbiAgICAgICAgICAgIGRpbWVuc2lvbnMgPSBkYXRhLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICAgICAgdmFyIG5hbWUgPSAoX2EgPSBpdGVtLm5hbWUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGxhbmd1YWdlLmNvbW1vbl9sYW5nLm1pc3NpbmcuZGVmYXVsdCwgdmFsdWUgPSAoX2IgPSBpdGVtLnZhbHVlKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBsYW5ndWFnZS5jb21tb25fbGFuZy5taXNzaW5nLmRlZmF1bHQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiXCIuY29uY2F0KGxhbmd1YWdlLmNvbW1vbl9sYW5nLmNvZGUsIFwiIC0gXCIpLmNvbmNhdChuYW1lLCBcIiwgXCIpLmNvbmNhdChsYW5ndWFnZS5jb21tb25fbGFuZy52YWx1ZSwgXCIgLSAoXCIpLmNvbmNhdCh2YWx1ZSwgXCIpXCIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gZGltZW5zaW9ucy5qb2luKCc7ICcpO1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYmFzZWxpbmU6IGJhc2VsaW5lLFxuICAgICAgICAgICAgbG9jYXRpb246IGxvY2F0aW9uLFxuICAgICAgICAgICAgZGltZW5zaW9uczogZGltZW5zaW9ucyxcbiAgICAgICAgICAgIGVsZW1lbnRTcGFjaW5nOiBlbGVtZW50U3BhY2luZyxcbiAgICAgICAgICAgIGNvdW50RG9jdW1lbnRMaW5rOiB1dGlsc18xLmNvdW50RG9jdW1lbnRMaW5rLFxuICAgICAgICAgICAgbGFuZ3VhZ2U6IGxhbmd1YWdlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnSW5kaWNhdG9yRGVzY3JpcHRpb24nLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBkZXNjVHlwZToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgZGVzY3JpcHRpb25EYXRhID0gZGF0YS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHsgZGVzY3JpcHRpb25EYXRhOiBkZXNjcmlwdGlvbkRhdGEsIGxhbmd1YWdlOiBsYW5ndWFnZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbi8vY29tcG9zYWJsZVxudmFyIHRpdGxlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvdGl0bGVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdJbmRpY2F0b3JEb2N1bWVudExpbmsnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IEFycmF5LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBhbGlnbm1lbnQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICdjZW50ZXInLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIGRsRGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHJldHVybiB7IGRsRGF0YTogZGxEYXRhLCBnZXRBY3Rpdml0eVRpdGxlOiB0aXRsZV8xLmRlZmF1bHQsIGxhbmd1YWdlOiBsYW5ndWFnZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnSW5kaWNhdG9yQXNjZW5kaW5nJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICByZXR1cm4geyBsYW5ndWFnZTogbGFuZ3VhZ2UgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0luZGljYXRvck1lYXN1cmUnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBtZWFzdXJlVHlwZToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgbWVhc3VyZURhdGEgPSBkYXRhLnZhbHVlO1xuICAgICAgICByZXR1cm4geyBtZWFzdXJlRGF0YTogbWVhc3VyZURhdGEsIGxhbmd1YWdlOiBsYW5ndWFnZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBkYXRlRm9ybWF0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZGF0ZUZvcm1hdFwiKSk7XG52YXIgTGlua192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9idXR0b25zL0xpbmsudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnSW5kaWNhdG9yUGVyaW9kJyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEJ0bjogTGlua192dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIGlkID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3BhcmVudERhdGEnKTtcbiAgICAgICAgcmV0dXJuIHsgaWQ6IGlkLCBkYXRlRm9ybWF0OiBkYXRlRm9ybWF0XzEuZGVmYXVsdCwgbGFuZ3VhZ2U6IGxhbmd1YWdlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdJbmRpY2F0b3JSZWZlcmVuY2UnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICByZWZUeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciByZWZEYXRhID0gZGF0YS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHsgcmVmRGF0YTogcmVmRGF0YSwgbGFuZ3VhZ2U6IGxhbmd1YWdlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdJbmRpY2F0b3JUaXRsZScsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRpdGxlVHlwZToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgdGl0bGVEYXRhID0gZGF0YS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHsgdGl0bGVEYXRhOiB0aXRsZURhdGEsIGxhbmd1YWdlOiBsYW5ndWFnZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBjb3JlRWxlbWVudHNfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL2NvcmVFbGVtZW50c1wiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdBY3Rpdml0aWVzRWxlbWVudHMnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBhY3Rpdml0eUlkOiB7XG4gICAgICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMi50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgZHJvcGRvd24gPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgZHJvcGRvd25CdG4gPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgX2IgPSAoMCwgY29yZV8xLnVzZVRvZ2dsZSkoKSwgc2VhcmNoQnRuVmFsdWUgPSBfYlswXSwgc2VhcmNoQnRuVG9nZ2xlID0gX2JbMV07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTZWFyY2ggZnVuY3Rpb25hbGl0eVxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIGVsZW1lbnRzID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBzZWFyY2g6ICcnLFxuICAgICAgICAgICAgc3RhdHVzOiAnJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBlbGVtZW50SWNvbnMgPSB7XG4gICAgICAgICAgICBjb21wbGV0ZWQ6ICdkb3VibGUtdGljaycsXG4gICAgICAgICAgICBub3RfY29tcGxldGVkOiAncmVkLWNyb3NzJyxcbiAgICAgICAgICAgIGNvcmU6ICdjb3JlJyxcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGFzQXJyYXlEYXRhID0gT2JqZWN0LmVudHJpZXMoZGF0YS52YWx1ZSk7XG4gICAgICAgIHZhciBmaWx0ZXJlZEVsZW1lbnRzID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZmlsdGVyZWQgPSBhc0FycmF5RGF0YS5maWx0ZXIoZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgdmFyIGtleSA9IF9hWzBdLCB2YWx1ZSA9IF9hWzFdO1xuICAgICAgICAgICAgICAgIGlmICghZWxlbWVudHMuc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBsYW5ndWFnZS5lbGVtZW50c19jb21tb25fbGFuZ1trZXldXG4gICAgICAgICAgICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmluY2x1ZGVzKGVsZW1lbnRzLnNlYXJjaC50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoJ18nLCAnJykucmVwbGFjZSgnLScsICdfJykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlW2VsZW1lbnRzLnN0YXR1c10pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBrZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5pbmNsdWRlcyhlbGVtZW50cy5zZWFyY2gudG9Mb3dlckNhc2UoKS5yZXBsYWNlKCdfJywgJycpLnJlcGxhY2UoJy0nLCAnXycpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdmFyIGp1c3RTdHJpbmdzID0gT2JqZWN0LmZyb21FbnRyaWVzKGZpbHRlcmVkKTtcbiAgICAgICAgICAgIHJldHVybiBqdXN0U3RyaW5ncztcbiAgICAgICAgfSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBZGRpbmcgY29yZSBkYXRhXG4gICAgICAgICAqL1xuICAgICAgICBPYmplY3Qua2V5cyhkYXRhLnZhbHVlKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgaWYgKCgwLCBjb3JlRWxlbWVudHNfMS5hY3Rpdml0eUNvcmVFbGVtZW50cykoKS5pbmNsdWRlcyhrZXkudG9TdHJpbmcoKSkpIHtcbiAgICAgICAgICAgICAgICBkYXRhLnZhbHVlW2tleV1bJ2NvcmUnXSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZHJvcGRvd25GaWx0ZXIgPSBmdW5jdGlvbiAocykge1xuICAgICAgICAgICAgZWxlbWVudHMuc3RhdHVzID0gcztcbiAgICAgICAgICAgIHNlYXJjaEJ0blRvZ2dsZSgpO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIGlmICghZHJvcGRvd25CdG4udmFsdWUuY29udGFpbnMoZS50YXJnZXQpICYmXG4gICAgICAgICAgICAgICAgICAgICFkcm9wZG93bi52YWx1ZS5jb250YWlucyhlLnRhcmdldCkgJiZcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoQnRuVmFsdWUudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoQnRuVG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBmdW5jdGlvbiBnZXRMaW5rKGhhc19kYXRhLCBpbmRleCkge1xuICAgICAgICAgICAgaWYgKGhhc19kYXRhKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiI1wiLmNvbmNhdChpbmRleCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChpbmRleCA9PSAncmVzdWx0JyB8fCBpbmRleCA9PSAndHJhbnNhY3Rpb25zJykge1xuICAgICAgICAgICAgICAgIHZhciBlbGVtZW50ID0gaW5kZXggPT0gJ3Jlc3VsdCcgPyAncmVzdWx0JyA6ICd0cmFuc2FjdGlvbic7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiL2FjdGl2aXR5L1wiLmNvbmNhdChwcm9wcy5hY3Rpdml0eUlkLCBcIi9cIikuY29uY2F0KGVsZW1lbnQsIFwiL2NyZWF0ZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBcIi9hY3Rpdml0eS9cIi5jb25jYXQocHJvcHMuYWN0aXZpdHlJZCwgXCIvXCIpLmNvbmNhdChpbmRleCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgbGFuZ3VhZ2U6IGxhbmd1YWdlLCBwcm9wczogcHJvcHMsIGRhdGE6IGRhdGEsIGRyb3Bkb3duOiBkcm9wZG93biwgZHJvcGRvd25CdG46IGRyb3Bkb3duQnRuLCBzZWFyY2hCdG5WYWx1ZTogc2VhcmNoQnRuVmFsdWUsIHNlYXJjaEJ0blRvZ2dsZTogc2VhcmNoQnRuVG9nZ2xlLCBlbGVtZW50czogZWxlbWVudHMsIGVsZW1lbnRJY29uczogZWxlbWVudEljb25zLCBhc0FycmF5RGF0YTogYXNBcnJheURhdGEsIGZpbHRlcmVkRWxlbWVudHM6IGZpbHRlcmVkRWxlbWVudHMsIGRyb3Bkb3duRmlsdGVyOiBkcm9wZG93bkZpbHRlciwgZ2V0TGluazogZ2V0TGluaywgYWN0aXZpdHlDb3JlRWxlbWVudHM6IGNvcmVFbGVtZW50c18xLmFjdGl2aXR5Q29yZUVsZW1lbnRzIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBtb21lbnRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwibW9tZW50XCIpKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgdnVlXzMgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGNvcmVFbGVtZW50c18xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvY29yZUVsZW1lbnRzXCIpO1xuLy9jb21wb25lbnRzXG52YXIgSW5kZXhfMSA9IHJlcXVpcmUoXCJBY3Rpdml0eS9lbGVtZW50cy9JbmRleFwiKTtcbnZhciBMaW5rX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL2J1dHRvbnMvTGluay52dWVcIikpO1xudmFyIEVsZW1lbnRTdGF0dXNfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc3RhdHVzL0VsZW1lbnRTdGF0dXMudnVlXCIpKTtcbnZhciBIb3ZlclRleHRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZVwiKSk7XG52YXIgUG9wdXBNb2RhbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZVwiKSk7XG52YXIgQnV0dG9uQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0FjdGl2aXR5RWxlbWVudCcsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGFjdGl2aXR5SWQ6IHtcbiAgICAgICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0aXRsZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICB3aWR0aDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGVkOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHdhcm5pbmdJbmZvVGV4dDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgX2IgPSAoMCwgY29yZV8xLnVzZVRvZ2dsZSkoKSwgZGVsZXRlVmFsdWUgPSBfYlswXSwgZGVsZXRlVG9nZ2xlID0gX2JbMV07XG4gICAgICAgIHZhciB0cmFuc2xhdGlvbiA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICAvLyBjYWxsIGFwaSBmb3IgcHVibGlzaGluZ1xuICAgICAgICB2YXIgdG9hc3REYXRhID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3RvYXN0RGF0YScpO1xuICAgICAgICB2YXIgbGF5b3V0ID0gJ2Jhc2lzLWZ1bGwgIGxnOmJhc2lzLTYvMTInO1xuICAgICAgICBpZiAocHJvcHMud2lkdGggPT09ICdmdWxsJykge1xuICAgICAgICAgICAgbGF5b3V0ID0gJ2Jhc2lzLWZ1bGwnO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGZvcm1hdERhdGUoZGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuICgwLCBtb21lbnRfMS5kZWZhdWx0KShkYXRlKS5mb3JtYXQoJ0xMJyk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gcm91bmRGbG9hdChudW0pIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KG51bSkudG9GaXhlZCgyKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZGVsZXRlQWN0aXZpdHlFbGVtZW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZGVsZXRlVmFsdWUudmFsdWUgPSB0cnVlO1xuICAgICAgICB9O1xuICAgICAgICBmdW5jdGlvbiBkZWxldGVFbGVtZW50KGlkLCBlbGVtZW50KSB7XG4gICAgICAgICAgICBkZWxldGVWYWx1ZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKDAsIDApO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLmRlbGV0ZShcIi9hcGkvYWN0aXZpdHkvXCIuY29uY2F0KGlkLCBcIi9cIikuY29uY2F0KGVsZW1lbnQpKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgICAgIH0sIDMwMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghcmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcmVzcG9uc2UubWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSByZXNwb25zZS5zdGF0dXM7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSB0cmFuc2xhdGlvbi5jb21tb25fbGFuZy5jb3VsZG50X2RlbGV0ZV90aGVfYWN0aXZpdHk7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBkZWxldGVWYWx1ZTogZGVsZXRlVmFsdWUsIGRlbGV0ZVRvZ2dsZTogZGVsZXRlVG9nZ2xlLCB0cmFuc2xhdGlvbjogdHJhbnNsYXRpb24sIHByb3BzOiBwcm9wcywgdG9hc3REYXRhOiB0b2FzdERhdGEsIGxheW91dDogbGF5b3V0LCBmb3JtYXREYXRlOiBmb3JtYXREYXRlLCByb3VuZEZsb2F0OiByb3VuZEZsb2F0LCBkZWxldGVBY3Rpdml0eUVsZW1lbnQ6IGRlbGV0ZUFjdGl2aXR5RWxlbWVudCwgZGVsZXRlRWxlbWVudDogZGVsZXRlRWxlbWVudCwgY2FwaXRhbGl6ZTogdnVlXzMuY2FwaXRhbGl6ZSwgYWN0aXZpdHlDb3JlRWxlbWVudHM6IGNvcmVFbGVtZW50c18xLmFjdGl2aXR5Q29yZUVsZW1lbnRzLCBBY3Rpdml0eURhdGU6IEluZGV4XzEuQWN0aXZpdHlEYXRlLCBDb25kaXRpb25zOiBJbmRleF8xLkNvbmRpdGlvbnMsIENvbnRhY3RJbmZvOiBJbmRleF8xLkNvbnRhY3RJbmZvLCBEZXNjcmlwdGlvbjogSW5kZXhfMS5EZXNjcmlwdGlvbiwgSHVtYW5pdGFyaWFuU2NvcGU6IEluZGV4XzEuSHVtYW5pdGFyaWFuU2NvcGUsIElhdGlJZGVudGlmaWVyOiBJbmRleF8xLklhdGlJZGVudGlmaWVyLCBMZWdhY3lEYXRhOiBJbmRleF8xLkxlZ2FjeURhdGEsIExvY2F0aW9uOiBJbmRleF8xLkxvY2F0aW9uLCBPdGhlcklkZW50aWZpZXI6IEluZGV4XzEuT3RoZXJJZGVudGlmaWVyLCBQYXJ0aWNpcGF0aW5nT3JnOiBJbmRleF8xLlBhcnRpY2lwYXRpbmdPcmcsIFBsYW5uZWREaXNidXJzZW1lbnQ6IEluZGV4XzEuUGxhbm5lZERpc2J1cnNlbWVudCwgUG9saWN5TWFya2VyOiBJbmRleF8xLlBvbGljeU1hcmtlciwgUmVjaXBpZW50Q291bnRyeTogSW5kZXhfMS5SZWNpcGllbnRDb3VudHJ5LCBSZWNpcGllbnRSZWdpb246IEluZGV4XzEuUmVjaXBpZW50UmVnaW9uLCBSZWxhdGVkQWN0aXZpdHk6IEluZGV4XzEuUmVsYXRlZEFjdGl2aXR5LCBSZXBvcnRpbmdPcmdhbml6YXRpb246IEluZGV4XzEuUmVwb3J0aW5nT3JnYW5pemF0aW9uLCBTZWN0b3I6IEluZGV4XzEuU2VjdG9yLCBUYWc6IEluZGV4XzEuVGFnLCBUaXRsZUVsZW1lbnQ6IEluZGV4XzEuVGl0bGVFbGVtZW50LCBUcmFuc2FjdGlvbnM6IEluZGV4XzEuVHJhbnNhY3Rpb25zLCBCdG46IExpbmtfdnVlXzEuZGVmYXVsdCwgU3RhdHVzOiBFbGVtZW50U3RhdHVzX3Z1ZV8xLmRlZmF1bHQsIEhvdmVyVGV4dDogSG92ZXJUZXh0X3Z1ZV8xLmRlZmF1bHQsIE1vZGFsOiBQb3B1cE1vZGFsX3Z1ZV8xLmRlZmF1bHQsIEJ0bkNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIENyZWF0ZU1vZGFsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi9DcmVhdGVNb2RhbC52dWVcIikpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0FkZEFjdGl2aXR5QnV0dG9uJyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIENyZWF0ZU1vZGFsOiBDcmVhdGVNb2RhbF92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciBzdGF0ZSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgaXNWaXNpYmxlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBfYSA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBtb2RhbFZhbHVlID0gX2FbMF0sIG1vZGFsVG9nZ2xlID0gX2FbMV07XG4gICAgICAgIHZhciBtb2RlbFZpc2libGUgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB0b2dnbGVNb2RlbCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgbW9kZWxWaXNpYmxlLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBsaUNsYXNzID0gJ2Jsb2NrIHAtMi41IHRleHQtbi00MCB0ZXh0LXRpbnkgbGVhZGluZy1bMS41XSBmb250LWJvbGQgaG92ZXI6dGV4dC1uLTUwIGhvdmVyOmJnLW4tMTAnO1xuICAgICAgICB2YXIgZHJvcGRvd25CdG4gPSAoMCwgdnVlXzEucmVmKSgpO1xuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIGlmICghZHJvcGRvd25CdG4udmFsdWUuY29udGFpbnMoZS50YXJnZXQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLmlzVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHRvZ2dsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHN0YXRlLmlzVmlzaWJsZSA9ICFzdGF0ZS5pc1Zpc2libGU7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdGF0ZTogc3RhdGUsXG4gICAgICAgICAgICBsaUNsYXNzOiBsaUNsYXNzLFxuICAgICAgICAgICAgbW9kZWxWaXNpYmxlOiBtb2RlbFZpc2libGUsXG4gICAgICAgICAgICBtb2RhbFZhbHVlOiBtb2RhbFZhbHVlLFxuICAgICAgICAgICAgdG9nZ2xlOiB0b2dnbGUsXG4gICAgICAgICAgICBtb2RhbFRvZ2dsZTogbW9kYWxUb2dnbGUsXG4gICAgICAgICAgICB0b2dnbGVNb2RlbDogdG9nZ2xlTW9kZWwsXG4gICAgICAgICAgICBkcm9wZG93bkJ0bjogZHJvcGRvd25CdG4sXG4gICAgICAgICAgICBsYW5ndWFnZTogbGFuZ3VhZ2UsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgaW5kZXhfMSA9IHJlcXVpcmUoXCJTdG9yZS9hY3Rpdml0aWVzL2luZGV4XCIpO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBDcmVhdGVNb2RhbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi4vQ3JlYXRlTW9kYWwudnVlXCIpKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xudmFyIFRvYXN0TWVzc2FnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi4vLi4vLi4vY29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlXCIpKTtcbnZhciBQb3B1cE1vZGFsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1BvcHVwTW9kYWwudnVlXCIpKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG4vKipcbiAqICBHbG9iYWwgU3RhdGVcbiAqL1xudmFyIHN0b3JlID0gKDAsIGluZGV4XzEudXNlU3RvcmUpKCk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0FkZEFjdGl2aXR5QnV0dG9uJyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIENyZWF0ZU1vZGFsOiBDcmVhdGVNb2RhbF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBUb2FzdDogVG9hc3RNZXNzYWdlX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIE1vZGFsOiBQb3B1cE1vZGFsX3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIHN0YXRlID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBpc1Zpc2libGU6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9hID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIG1vZGFsVmFsdWUgPSBfYVswXSwgbW9kYWxUb2dnbGUgPSBfYVsxXTtcbiAgICAgICAgdmFyIG1vZGVsVmlzaWJsZSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHRvYXN0VmlzaWJpbGl0eSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHRvYXN0TWVzc2FnZSA9ICgwLCB2dWVfMS5yZWYpKCcnKTtcbiAgICAgICAgdmFyIHRvYXN0bWVzc2FnZVR5cGUgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93RXJyb3Jwb3B1cCA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIG1lc3NhZ2UgPSAoMCwgdnVlXzEucmVmKSgnJyk7XG4gICAgICAgIHZhciBkb3dubG9hZGluZ0JhY2tncm91bmRNZXNzYWdlID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgZG93bmxvYWRpbmdJblByb2Nlc3MgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBpc0xvYWRpbmcgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB0b2dnbGVNb2RlbCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgbW9kZWxWaXNpYmxlLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBsaUNsYXNzID0gJ2Jsb2NrIHAtMi41IHRleHQtbi00MCB0ZXh0LXRpbnkgbGVhZGluZy1bMS41XSBmb250LWJvbGQgaG92ZXI6dGV4dC1uLTUwIGhvdmVyOmJnLW4tMTAnO1xuICAgICAgICB2YXIgZHJvcGRvd25CdG4gPSAoMCwgdnVlXzEucmVmKSgpO1xuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIGlmICghZHJvcGRvd25CdG4udmFsdWUuY29udGFpbnMoZS50YXJnZXQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLmlzVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgZnVuY3Rpb24gZG93bmxvYWRFcnJvcihmaWxlbmFtZSwgdGV4dCkge1xuICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnaHJlZicsICdkYXRhOnRleHQvcGxhaW47Y2hhcnNldD11dGYtOCwnICsgZW5jb2RlVVJJQ29tcG9uZW50KHRleHQpKTtcbiAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdkb3dubG9hZCcsIGZpbGVuYW1lKTtcbiAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgICAgICBlbGVtZW50LmNsaWNrKCk7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0b2dnbGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzdGF0ZS5pc1Zpc2libGUgPSAhc3RhdGUuaXNWaXNpYmxlO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgY2hlY2tEb3dubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlzTG9hZGluZy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KCcvYWN0aXZpdGllcy9kb3dubG9hZC14bHMtcHJvZ3Jlc3Mtc3RhdHVzJykudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgZG93bmxvYWRpbmdJblByb2Nlc3MudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGRvd25sb2FkaW5nQmFja2dyb3VuZE1lc3NhZ2UudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZG93bmxvYWRBbnl3YXkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlQ2FuY2VsRG93bmxvYWQnLCB0cnVlKTtcbiAgICAgICAgICAgIGlzTG9hZGluZy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBkb3dubG9hZGluZ0luUHJvY2Vzcy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZUNhbmNlbERvd25sb2FkJywgdHJ1ZSk7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU3RhcnRYbHNEb3dubG9hZCcsIGZhbHNlKTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoJy9hY3Rpdml0aWVzL2NhbmNlbC14bHMtZG93bmxvYWQnKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBjaGVja0Rvd25sb2FkKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGRvd25sb2FkRXJyb3J4bWwgPSBmdW5jdGlvbiAoY291bnRBY3Rpdml0aWVzKSB7XG4gICAgICAgICAgICBzaG93RXJyb3Jwb3B1cC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgdmFyIHF1ZXJ5UGFyYW1ldGVycyA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLnNwbGl0KCc/Jyk7XG4gICAgICAgICAgICB2YXIgYWRkUXVlcnlQYXJhbXMgPSAnJztcbiAgICAgICAgICAgIGlmIChxdWVyeVBhcmFtZXRlcnMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICAgICAgYWRkUXVlcnlQYXJhbXMgPSAnJicgKyBxdWVyeVBhcmFtZXRlcnNbMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgYXBpVXJsID0gJy9hY3Rpdml0aWVzL2Rvd25sb2FkLXhtbC90cnVlP2FjdGl2aXRpZXM9YWxsJyArIGFkZFF1ZXJ5UGFyYW1zO1xuICAgICAgICAgICAgaWYgKGNvdW50QWN0aXZpdGllcyA+IDApIHtcbiAgICAgICAgICAgICAgICB2YXIgYWN0aXZpdGllcyA9IHN0b3JlLnN0YXRlLnNlbGVjdGVkQWN0aXZpdGllcy5qb2luKCcsJyk7XG4gICAgICAgICAgICAgICAgYXBpVXJsID0gXCIvYWN0aXZpdGllcy9kb3dubG9hZC14bWwvdHJ1ZT9hY3Rpdml0aWVzPVtcIi5jb25jYXQoYWN0aXZpdGllcywgXCJdXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldChhcGlVcmwpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEuc3VjY2VzcyA9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICB0b2FzdFZpc2liaWxpdHkudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2UudmFsdWUgPSByZXMuZGF0YS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdG1lc3NhZ2VUeXBlLnZhbHVlID0gcmVzLmRhdGEuc3VjY2VzcztcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHJldHVybiAodG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2UpOyB9LCAxNTAwMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbcmVzcG9uc2VdLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYXBwbGljYXRpb24veG1sJyxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgICAgICAgICBsaW5rLmhyZWYgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgICAgICAgICAgICAgbGluay5kb3dubG9hZCA9IChfYSA9IHJlcy5oZWFkZXJzWydjb250ZW50LWRpc3Bvc2l0aW9uJ10pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zcGxpdCgnPScpWzFdO1xuICAgICAgICAgICAgICAgICAgICBsaW5rLmNsaWNrKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBkb3dubG9hZFhtbCA9IGZ1bmN0aW9uIChjb3VudEFjdGl2aXRpZXMpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHZhciBxdWVyeVBhcmFtZXRlcnMgPSAoX2EgPSB3aW5kb3cubG9jYXRpb24uaHJlZikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnNwbGl0KCc/Jyk7XG4gICAgICAgICAgICB2YXIgYWRkUXVlcnlQYXJhbXMgPSAnJztcbiAgICAgICAgICAgIGlmIChxdWVyeVBhcmFtZXRlcnMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICAgICAgYWRkUXVlcnlQYXJhbXMgPSAnJicgKyBxdWVyeVBhcmFtZXRlcnNbMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgYXBpVXJsID0gJy9hY3Rpdml0aWVzL2Rvd25sb2FkLXhtbD9hY3Rpdml0aWVzPWFsbCcgKyBhZGRRdWVyeVBhcmFtcztcbiAgICAgICAgICAgIGlmIChjb3VudEFjdGl2aXRpZXMgPiAwKSB7XG4gICAgICAgICAgICAgICAgdmFyIGFjdGl2aXRpZXMgPSBzdG9yZS5zdGF0ZS5zZWxlY3RlZEFjdGl2aXRpZXMuam9pbignLCcpO1xuICAgICAgICAgICAgICAgIGFwaVVybCA9IFwiL2FjdGl2aXRpZXMvZG93bmxvYWQteG1sP2FjdGl2aXRpZXM9W1wiLmNvbmNhdChhY3Rpdml0aWVzLCBcIl1cIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KGFwaVVybCkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5zdWNjZXNzID09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YS54bWxfZXJyb3IgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dFcnJvcnBvcHVwLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UudmFsdWUgPSByZXMuZGF0YS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvYXN0TWVzc2FnZS52YWx1ZSA9IHJlcy5kYXRhLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2FzdG1lc3NhZ2VUeXBlLnZhbHVlID0gcmVzLmRhdGEuc3VjY2VzcztcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gKHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlKTsgfSwgMTUwMDApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbcmVzcG9uc2VdLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYXBwbGljYXRpb24veG1sJyxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgICAgICAgICBsaW5rLmhyZWYgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgICAgICAgICAgICAgbGluay5kb3dubG9hZCA9IChfYSA9IHJlcy5oZWFkZXJzWydjb250ZW50LWRpc3Bvc2l0aW9uJ10pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zcGxpdCgnPScpWzFdO1xuICAgICAgICAgICAgICAgICAgICBsaW5rLmNsaWNrKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBkb3dubG9hZFhscyA9IGZ1bmN0aW9uIChjb3VudEFjdGl2aXRpZXMpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIGlzTG9hZGluZy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU3RhcnRYbHNEb3dubG9hZCcsIHRydWUpO1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZUNhbmNlbERvd25sb2FkJywgZmFsc2UpO1xuICAgICAgICAgICAgZG93bmxvYWRpbmdCYWNrZ3JvdW5kTWVzc2FnZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgdmFyIHF1ZXJ5UGFyYW1ldGVycyA9IChfYSA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc3BsaXQoJz8nKTtcbiAgICAgICAgICAgIHZhciBhZGRRdWVyeVBhcmFtcyA9ICcnO1xuICAgICAgICAgICAgaWYgKHF1ZXJ5UGFyYW1ldGVycy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgICAgICBhZGRRdWVyeVBhcmFtcyA9ICcmJyArIHF1ZXJ5UGFyYW1ldGVyc1sxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBhcGlVcmwgPSAnL2FjdGl2aXRpZXMvcHJlcGFyZS14bHM/YWN0aXZpdGllcz1hbGwnICsgYWRkUXVlcnlQYXJhbXM7XG4gICAgICAgICAgICBpZiAoY291bnRBY3Rpdml0aWVzID4gMCkge1xuICAgICAgICAgICAgICAgIHZhciBhY3Rpdml0aWVzID0gc3RvcmUuc3RhdGUuc2VsZWN0ZWRBY3Rpdml0aWVzLmpvaW4oJywnKTtcbiAgICAgICAgICAgICAgICBhcGlVcmwgPSBcIi9hY3Rpdml0aWVzL3ByZXBhcmUteGxzP2FjdGl2aXRpZXM9W1wiLmNvbmNhdChhY3Rpdml0aWVzLCBcIl1cIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KGFwaVVybCkuZmluYWxseShmdW5jdGlvbiAoKSB7IHJldHVybiAoaXNMb2FkaW5nLnZhbHVlID0gZmFsc2UpOyB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGRvd25sb2FkQ3N2ID0gZnVuY3Rpb24gKGNvdW50QWN0aXZpdGllcykge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgdmFyIHF1ZXJ5UGFyYW1ldGVycyA9IChfYSA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc3BsaXQoJz8nKTtcbiAgICAgICAgICAgIHZhciBhZGRRdWVyeVBhcmFtcyA9ICcnO1xuICAgICAgICAgICAgaWYgKHF1ZXJ5UGFyYW1ldGVycy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgICAgICBhZGRRdWVyeVBhcmFtcyA9ICcmJyArIHF1ZXJ5UGFyYW1ldGVyc1sxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBhcGlVcmwgPSAnL2FjdGl2aXRpZXMvZG93bmxvYWQtY3N2P2FjdGl2aXRpZXM9YWxsJyArIGFkZFF1ZXJ5UGFyYW1zO1xuICAgICAgICAgICAgaWYgKGNvdW50QWN0aXZpdGllcyA+IDApIHtcbiAgICAgICAgICAgICAgICB2YXIgYWN0aXZpdGllcyA9IHN0b3JlLnN0YXRlLnNlbGVjdGVkQWN0aXZpdGllcy5qb2luKCcsJyk7XG4gICAgICAgICAgICAgICAgYXBpVXJsID0gXCIvYWN0aXZpdGllcy9kb3dubG9hZC1jc3Y/YWN0aXZpdGllcz1bXCIuY29uY2F0KGFjdGl2aXRpZXMsIFwiXVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoYXBpVXJsKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnN1Y2Nlc3MgPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3RNZXNzYWdlLnZhbHVlID0gcmVzLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3RtZXNzYWdlVHlwZS52YWx1ZSA9IHJlcy5kYXRhLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gKHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlKTsgfSwgMTUwMDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIHZhciBibG9iID0gbmV3IEJsb2IoW3Jlc3BvbnNlXSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL2NzdicsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgICAgICAgICAgbGluay5ocmVmID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICAgICAgICAgICAgICAgIGxpbmsuZG93bmxvYWQgPSAoX2EgPSByZXMuaGVhZGVyc1snY29udGVudC1kaXNwb3NpdGlvbiddKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc3BsaXQoJz0nKVsxXTtcbiAgICAgICAgICAgICAgICAgICAgbGluay5jbGljaygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc3RvcmU6IHN0b3JlLFxuICAgICAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICAgICAgbGlDbGFzczogbGlDbGFzcyxcbiAgICAgICAgICAgIG1vZGVsVmlzaWJsZTogbW9kZWxWaXNpYmxlLFxuICAgICAgICAgICAgbW9kYWxWYWx1ZTogbW9kYWxWYWx1ZSxcbiAgICAgICAgICAgIHRvZ2dsZTogdG9nZ2xlLFxuICAgICAgICAgICAgbW9kYWxUb2dnbGU6IG1vZGFsVG9nZ2xlLFxuICAgICAgICAgICAgdG9nZ2xlTW9kZWw6IHRvZ2dsZU1vZGVsLFxuICAgICAgICAgICAgZHJvcGRvd25CdG46IGRyb3Bkb3duQnRuLFxuICAgICAgICAgICAgZG93bmxvYWRDc3Y6IGRvd25sb2FkQ3N2LFxuICAgICAgICAgICAgdG9hc3RWaXNpYmlsaXR5OiB0b2FzdFZpc2liaWxpdHksXG4gICAgICAgICAgICBkb3dubG9hZGluZ0JhY2tncm91bmRNZXNzYWdlOiBkb3dubG9hZGluZ0JhY2tncm91bmRNZXNzYWdlLFxuICAgICAgICAgICAgdG9hc3RNZXNzYWdlOiB0b2FzdE1lc3NhZ2UsXG4gICAgICAgICAgICB0b2FzdG1lc3NhZ2VUeXBlOiB0b2FzdG1lc3NhZ2VUeXBlLFxuICAgICAgICAgICAgZG93bmxvYWRYbWw6IGRvd25sb2FkWG1sLFxuICAgICAgICAgICAgTW9kYWw6IFBvcHVwTW9kYWxfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgICAgIHNob3dFcnJvcnBvcHVwOiBzaG93RXJyb3Jwb3B1cCxcbiAgICAgICAgICAgIGNoZWNrRG93bmxvYWQ6IGNoZWNrRG93bmxvYWQsXG4gICAgICAgICAgICBkb3dubG9hZEVycm9yeG1sOiBkb3dubG9hZEVycm9yeG1sLFxuICAgICAgICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgICAgICAgIGRvd25sb2FkRXJyb3I6IGRvd25sb2FkRXJyb3IsXG4gICAgICAgICAgICBkb3dubG9hZFhsczogZG93bmxvYWRYbHMsXG4gICAgICAgICAgICBkb3dubG9hZGluZ0luUHJvY2VzczogZG93bmxvYWRpbmdJblByb2Nlc3MsXG4gICAgICAgICAgICBpc0xvYWRpbmc6IGlzTG9hZGluZyxcbiAgICAgICAgICAgIGRvd25sb2FkQW55d2F5OiBkb3dubG9hZEFueXdheSxcbiAgICAgICAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICAgICAgfTtcbiAgICB9LFxuICAgIG1ldGhvZHM6IHsgY2FwaXRhbGl6ZTogdnVlXzEuY2FwaXRhbGl6ZSB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgSG92ZXJUZXh0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi8uLi9jb21wb25lbnRzL0hvdmVyVGV4dC52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdFbGVtZW50Tm90ZScsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBIb3ZlclRleHQ6IEhvdmVyVGV4dF92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHJldHVybiB7IGxhbmd1YWdlOiBsYW5ndWFnZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBBZGRBY3Rpdml0eUJ1dHRvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9BZGRBY3Rpdml0eUJ1dHRvbi52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdFbXB0eUFjdGl2aXR5JyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEFjdGl2aXR5QnV0dG9uOiBBZGRBY3Rpdml0eUJ1dHRvbl92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciBzdGF0ZSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgZGlzbWlzczogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7IHN0YXRlOiBzdGF0ZSwgbGFuZ3VhZ2U6IGxhbmd1YWdlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBEb3dubG9hZEFjdGl2aXR5QnV0dG9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL0Rvd25sb2FkQWN0aXZpdHlCdXR0b24udnVlXCIpKTtcbnZhciBBZGRBY3Rpdml0eUJ1dHRvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9BZGRBY3Rpdml0eUJ1dHRvbi52dWVcIikpO1xudmFyIFRvYXN0TWVzc2FnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlXCIpKTtcbnZhciBSZWZyZXNoVG9hc3RfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkFjdGl2aXR5L2J1bGstcHVibGlzaC9SZWZyZXNoVG9hc3QudnVlXCIpKTtcbnZhciBQdWJsaXNoU2VsZWN0ZWRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkFjdGl2aXR5L2J1bGstcHVibGlzaC9QdWJsaXNoU2VsZWN0ZWQudnVlXCIpKTtcbnZhciBEZWxldGVCdXR0b25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvYnV0dG9ucy9EZWxldGVCdXR0b24udnVlXCIpKTtcbi8vIFZ1ZXggU3RvcmVcbnZhciBpbmRleF8xID0gcmVxdWlyZShcIlN0b3JlL2FjdGl2aXRpZXMvaW5kZXhcIik7XG52YXIgRXJyb3JQb3BVcF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9FcnJvclBvcFVwLnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnUGFnZVRpdGxlJyxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIHJlZnJlc2hUb2FzdE1zZyA9ICgwLCB2dWVfMi5pbmplY3QpKCdyZWZyZXNoVG9hc3RNc2cnKTtcbiAgICAgICAgdmFyIHRvYXN0TWVzc2FnZSA9ICgwLCB2dWVfMi5pbmplY3QpKCd0b2FzdERhdGEnKTtcbiAgICAgICAgdmFyIGVycm9yRGF0YSA9ICgwLCB2dWVfMi5pbmplY3QpKCdlcnJvckRhdGEnKTtcbiAgICAgICAgdmFyIHN0b3JlID0gKDAsIGluZGV4XzEudXNlU3RvcmUpKCk7XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGxhbmd1YWdlOiBsYW5ndWFnZSwgcmVmcmVzaFRvYXN0TXNnOiByZWZyZXNoVG9hc3RNc2csIHRvYXN0TWVzc2FnZTogdG9hc3RNZXNzYWdlLCBlcnJvckRhdGE6IGVycm9yRGF0YSwgc3RvcmU6IHN0b3JlLCBEb3dubG9hZEFjdGl2aXR5QnV0dG9uOiBEb3dubG9hZEFjdGl2aXR5QnV0dG9uX3Z1ZV8xLmRlZmF1bHQsIEFkZEFjdGl2aXR5QnV0dG9uOiBBZGRBY3Rpdml0eUJ1dHRvbl92dWVfMS5kZWZhdWx0LCBUb2FzdDogVG9hc3RNZXNzYWdlX3Z1ZV8xLmRlZmF1bHQsIFJlZnJlc2hUb2FzdE1lc3NhZ2U6IFJlZnJlc2hUb2FzdF92dWVfMS5kZWZhdWx0LCBQdWJsaXNoU2VsZWN0ZWQ6IFB1Ymxpc2hTZWxlY3RlZF92dWVfMS5kZWZhdWx0LCBEZWxldGVCdXR0b246IERlbGV0ZUJ1dHRvbl92dWVfMS5kZWZhdWx0LCBFcnJvclBvcFVwOiBFcnJvclBvcFVwX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdTaWRlYmFySGVscEJsb2NrJyxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIG1vbWVudF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJtb21lbnRcIikpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG4vLyBWdWV4IFN0b3JlXG52YXIgaW5kZXhfMSA9IHJlcXVpcmUoXCJTdG9yZS9hY3Rpdml0aWVzL2luZGV4XCIpO1xudmFyIFByZXZpb3VzbHlQdWJsaXNoZWRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc3RhdHVzL1ByZXZpb3VzbHlQdWJsaXNoZWQudnVlXCIpKTtcbnZhciBQdWJsaXNoQnV0dG9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL2J1dHRvbnMvUHVibGlzaEJ1dHRvbi52dWVcIikpO1xudmFyIFVuUHVibGlzaEJ1dHRvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9idXR0b25zL1VuUHVibGlzaEJ1dHRvbi52dWVcIikpO1xuLy8gaW1wb3J0IFNoaW1tZXIgZnJvbSBcIkNvbXBvbmVudHMvU2hpbW1lckxvYWRpbmcudnVlXCI7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnVGFibGVMYXlvdXQnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBsb2FkZXI6IHsgdHlwZTogQm9vbGVhbiwgcmVxdWlyZWQ6IGZhbHNlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIF9iID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIHNlbGVjdEFsbFZhbHVlID0gX2JbMF0sIHNlbGVjdEFsbFRvZ2dsZSA9IF9iWzFdO1xuICAgICAgICB2YXIgc3RvcmUgPSAoMCwgaW5kZXhfMS51c2VTdG9yZSkoKTtcbiAgICAgICAgZnVuY3Rpb24gZm9ybWF0RGF0ZShkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gKDAsIG1vbWVudF8xLmRlZmF1bHQpKGRhdGUpLmZyb21Ob3coKTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiB0b2dnbGVTZWxlY3RBbGwoYWN0aXZpdGllcywgc2VsZWN0QWxsVmFsdWUpIHtcbiAgICAgICAgICAgIGlmICghc2VsZWN0QWxsVmFsdWUpIHtcbiAgICAgICAgICAgICAgICB2YXIgaWRzID0gW107XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgZGF0dW0gaW4gYWN0aXZpdGllcykge1xuICAgICAgICAgICAgICAgICAgICBpZHMucHVzaChhY3Rpdml0aWVzW2RhdHVtXS5pZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTZWxlY3RlZEFjdGl2aXRpZXMnLCBpZHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVNlbGVjdGVkQWN0aXZpdGllcycsIFtdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGVjdEFsbFRvZ2dsZSgpO1xuICAgICAgICB9XG4gICAgICAgIC8vU29ydGluZyBieSB1cGRhdGVfYXRcbiAgICAgICAgdmFyIGN1cnJlbnRVUkwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgICAgICAgdmFyIHF1ZXJ5ID0gJycsIGRpcmVjdGlvbiA9ICdhc2MnO1xuICAgICAgICB2YXIgc29ydGluZ0RpcmVjdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBkaXJlY3Rpb24gPT09ICdhc2MnID8gJ2Rlc2NlbmRpbmcnIDogJ2FzY2VuZGluZyc7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzb3J0QnlQdWJsaXNoaW5nUHJvZ3Jlc3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBpZiAoY3VycmVudFVSTC5pbmNsdWRlcygnPycpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHF1ZXJ5U3RyaW5nID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaCwgdXJsUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhxdWVyeVN0cmluZyk7XG4gICAgICAgICAgICAgICAgcXVlcnkgPSAoX2EgPSB1cmxQYXJhbXMuZ2V0KCdxJykpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnO1xuICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9IHVybFBhcmFtcy5nZXQoJ2RpcmVjdGlvbicpID09PSAnZGVzYycgPyAnYXNjJyA6ICdkZXNjJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBcIj9xPVwiLmNvbmNhdChxdWVyeSwgXCImb3JkZXJCeT1jb21wbGV0ZV9wZXJjZW50YWdlJmRpcmVjdGlvbj1cIikuY29uY2F0KGRpcmVjdGlvbik7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzb3J0QnlEYXRlVXJsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRVUkwuaW5jbHVkZXMoJz8nKSkge1xuICAgICAgICAgICAgICAgIHZhciBxdWVyeVN0cmluZyA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gsIHVybFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMocXVlcnlTdHJpbmcpO1xuICAgICAgICAgICAgICAgIHF1ZXJ5ID0gKF9hID0gdXJsUGFyYW1zLmdldCgncScpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJztcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb24gPSB1cmxQYXJhbXMuZ2V0KCdkaXJlY3Rpb24nKSA9PT0gJ2Rlc2MnID8gJ2FzYycgOiAnZGVzYyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gXCI/cT1cIi5jb25jYXQocXVlcnksIFwiJm9yZGVyQnk9dXBkYXRlZF9hdCZkaXJlY3Rpb249XCIpLmNvbmNhdChkaXJlY3Rpb24pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBsYW5ndWFnZTogbGFuZ3VhZ2UsIHNlbGVjdEFsbFZhbHVlOiBzZWxlY3RBbGxWYWx1ZSwgc2VsZWN0QWxsVG9nZ2xlOiBzZWxlY3RBbGxUb2dnbGUsIHN0b3JlOiBzdG9yZSwgZm9ybWF0RGF0ZTogZm9ybWF0RGF0ZSwgdG9nZ2xlU2VsZWN0QWxsOiB0b2dnbGVTZWxlY3RBbGwsIGN1cnJlbnRVUkw6IGN1cnJlbnRVUkwsIHF1ZXJ5OiBxdWVyeSwgZGlyZWN0aW9uOiBkaXJlY3Rpb24sIHNvcnRpbmdEaXJlY3Rpb246IHNvcnRpbmdEaXJlY3Rpb24sIHNvcnRCeVB1Ymxpc2hpbmdQcm9ncmVzczogc29ydEJ5UHVibGlzaGluZ1Byb2dyZXNzLCBzb3J0QnlEYXRlVXJsOiBzb3J0QnlEYXRlVXJsLCBQcmV2aW91c2x5UHVibGlzaGVkOiBQcmV2aW91c2x5UHVibGlzaGVkX3Z1ZV8xLmRlZmF1bHQsIFB1Ymxpc2g6IFB1Ymxpc2hCdXR0b25fdnVlXzEuZGVmYXVsdCwgVW5QdWJsaXNoOiBVblB1Ymxpc2hCdXR0b25fdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG4vL2NvbXBvbmVudFxudmFyIExpbmtfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvYnV0dG9ucy9MaW5rLnZ1ZVwiKSk7XG52YXIgUGFnZVRpdGxlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1BhZ2VUaXRsZS52dWVcIikpO1xudmFyIFRvYXN0TWVzc2FnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlXCIpKTtcbnZhciBJbmRleF8xID0gcmVxdWlyZShcIi4vZWxlbWVudHMvSW5kZXhcIik7XG4vL2NvbXBvc2FibGVcbnZhciBkYXRlRm9ybWF0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZGF0ZUZvcm1hdFwiKSk7XG52YXIgdGl0bGVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS90aXRsZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1BlcmlvZERldGFpbCcsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBUYXJnZXRWYWx1ZTogSW5kZXhfMS5UYXJnZXRWYWx1ZSxcbiAgICAgICAgQWN0dWFsVmFsdWU6IEluZGV4XzEuQWN0dWFsVmFsdWUsXG4gICAgICAgIEJ0bjogTGlua192dWVfMS5kZWZhdWx0LFxuICAgICAgICBQYWdlVGl0bGU6IFBhZ2VUaXRsZV92dWVfMS5kZWZhdWx0LFxuICAgICAgICBUb2FzdDogVG9hc3RNZXNzYWdlX3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBhY3Rpdml0eToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHBhcmVudERhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBwZXJpb2Q6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRvYXN0OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZWxlbWVudDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgdmFyIHBvc2l0aW9uWSA9ICgwLCB2dWVfMS5yZWYpKDApO1xuICAgICAgICB2YXIgc2NyZWVuV2lkdGggPSAoMCwgdnVlXzEucmVmKSgwKTtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciBsaW5rQ2xhc3NlcyA9ICdmbGV4IGl0ZW1zLWNlbnRlciB3LWZ1bGwgYmctd2hpdGUgcm91bmRlZCBwLTIgdGV4dC1zbSB0ZXh0LW4tNTAgZm9udC1ib2xkIGxlYWRpbmctbm9ybWFsIG1iLTIgc2hhZG93LWRlZmF1bHQnO1xuICAgICAgICB2YXIgX2IgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcyksIHBlcmlvZCA9IF9iLnBlcmlvZCwgYWN0aXZpdHkgPSBfYi5hY3Rpdml0eSwgcGFyZW50RGF0YSA9IF9iLnBhcmVudERhdGEsIHR5cGVzID0gX2IudHlwZXM7XG4gICAgICAgIHZhciBoYW5kbGVTY3JvbGwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBwb3NpdGlvblkudmFsdWUgPSB3aW5kb3cuc2Nyb2xsWTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGlzdG9wVmlzaWJsZSA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uWS52YWx1ZSA9PT0gMDtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB0b2FzdERhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICB0eXBlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHNob3dTaWRlYmFyID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICAvLyB2dWUgcHJvdmlkZVxuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3R5cGVzJywgdHlwZXMudmFsdWUpO1xuICAgICAgICAvL2luZGljYXRvclxuICAgICAgICB2YXIgcGVyaW9kRGF0YSA9IHBlcmlvZC52YWx1ZS5wZXJpb2Q7XG4gICAgICAgIC8vdGl0bGVzXG4gICAgICAgIHZhciBhY3Rpdml0eUlkID0gYWN0aXZpdHkudmFsdWUuaWQsIGRlZmF1bHRMYW5ndWFnZSA9IChfYSA9IGFjdGl2aXR5LnZhbHVlLmRlZmF1bHRfZmllbGRfdmFsdWVzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGVmYXVsdF9sYW5ndWFnZSwgYWN0aXZpdHlUaXRsZSA9ICgwLCB0aXRsZV8xLmRlZmF1bHQpKGFjdGl2aXR5LnZhbHVlLnRpdGxlLCBkZWZhdWx0TGFuZ3VhZ2UpLCBhY3Rpdml0eUxpbmsgPSBcIi9hY3Rpdml0eS9cIi5jb25jYXQoYWN0aXZpdHlJZCksIHJlc3VsdElkID0gcGFyZW50RGF0YS52YWx1ZS5yZXN1bHQuaWQsIHJlc3VsdFRpdGxlID0gKDAsIHRpdGxlXzEuZGVmYXVsdCkocGFyZW50RGF0YS52YWx1ZS5yZXN1bHQudGl0bGUsIGRlZmF1bHRMYW5ndWFnZSksIHJlc3VsdExpbmsgPSBcIlwiLmNvbmNhdChhY3Rpdml0eUxpbmssIFwiL3Jlc3VsdC9cIikuY29uY2F0KHJlc3VsdElkKSwgaW5kaWNhdG9ySWQgPSBwYXJlbnREYXRhLnZhbHVlLmluZGljYXRvci5pZCwgaW5kaWNhdG9yVGl0bGUgPSAoMCwgdGl0bGVfMS5kZWZhdWx0KShwYXJlbnREYXRhLnZhbHVlLmluZGljYXRvci50aXRsZSwgZGVmYXVsdExhbmd1YWdlKSwgaW5kaWNhdG9yTGluayA9IFwiL3Jlc3VsdC9cIi5jb25jYXQocmVzdWx0SWQsIFwiL2luZGljYXRvci9cIikuY29uY2F0KGluZGljYXRvcklkKSwgcGVyaW9kTGluayA9IFwiL2luZGljYXRvci9cIi5jb25jYXQoaW5kaWNhdG9ySWQsIFwiL3BlcmlvZFwiKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEJyZWFkY3J1bWIgZGF0YVxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIGJyZWFkY3J1bWJEYXRhID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBsYW5ndWFnZS5hY3Rpdml0aWVzX2xhbmcueW91cl9hY3Rpdml0aWVzLFxuICAgICAgICAgICAgICAgIGxpbms6ICcvYWN0aXZpdGllcycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBhY3Rpdml0eVRpdGxlLFxuICAgICAgICAgICAgICAgIGxpbms6IGFjdGl2aXR5TGluayxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHJlc3VsdFRpdGxlLFxuICAgICAgICAgICAgICAgIGxpbms6IHJlc3VsdExpbmssXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpbmRpY2F0b3JUaXRsZSxcbiAgICAgICAgICAgICAgICBsaW5rOiBpbmRpY2F0b3JMaW5rLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogbGFuZ3VhZ2UuY29tbW9uX2xhbmcucGVyaW9kLFxuICAgICAgICAgICAgICAgIGxpbms6ICcnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgICAgdmFyIGNhbGNXaWR0aCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgc2NyZWVuV2lkdGgudmFsdWUgPSBldmVudC50YXJnZXQuaW5uZXJXaWR0aDtcbiAgICAgICAgICAgIGlmIChzY3JlZW5XaWR0aC52YWx1ZSA+IDEwMjQpIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnYXV0byc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzaG93U2lkZWJhci52YWx1ZSAmJlxuICAgICAgICAgICAgICAgICAgICAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNob3dTaWRlYmFyLnZhbHVlOyB9LCBmdW5jdGlvbiAoc2lkZWJhcikge1xuICAgICAgICAgICAgaWYgKHNpZGViYXIpIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnYXV0byc7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgY2FsY1dpZHRoKTtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpO1xuICAgICAgICAgICAgaWYgKHByb3BzLnRvYXN0Lm1lc3NhZ2UgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSBwcm9wcy50b2FzdC50eXBlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHByb3BzLnRvYXN0Lm1lc3NhZ2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgICAgICAgICAgfSwgNTAwMCk7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEub25Vbm1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpO1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNhbGNXaWR0aCk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbGlua0NsYXNzZXM6IGxpbmtDbGFzc2VzLFxuICAgICAgICAgICAgcGVyaW9kRGF0YTogcGVyaW9kRGF0YSxcbiAgICAgICAgICAgIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0LFxuICAgICAgICAgICAgYnJlYWRjcnVtYkRhdGE6IGJyZWFkY3J1bWJEYXRhLFxuICAgICAgICAgICAgYWN0aXZpdHlMaW5rOiBhY3Rpdml0eUxpbmssXG4gICAgICAgICAgICByZXN1bHRMaW5rOiByZXN1bHRMaW5rLFxuICAgICAgICAgICAgaW5kaWNhdG9yTGluazogaW5kaWNhdG9yTGluayxcbiAgICAgICAgICAgIHBlcmlvZExpbms6IHBlcmlvZExpbmssXG4gICAgICAgICAgICB0b2FzdERhdGE6IHRvYXN0RGF0YSxcbiAgICAgICAgICAgIHNob3dTaWRlYmFyOiBzaG93U2lkZWJhcixcbiAgICAgICAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICAgICAgICAgIGlzdG9wVmlzaWJsZTogaXN0b3BWaXNpYmxlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG4vLyBjb21wb25lbnRzXG52YXIgQnV0dG9uQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWVcIikpO1xudmFyIFRhYmxlUGFnaW5hdGlvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9UYWJsZVBhZ2luYXRpb24udnVlXCIpKTtcbnZhciBQYWdlVGl0bGVfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvUGFnZVRpdGxlLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xudmFyIERlbGV0ZUFjdGlvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9EZWxldGVBY3Rpb24udnVlXCIpKTtcbi8vIGNvbXBvc2FibGVcbnZhciBkYXRlRm9ybWF0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZGF0ZUZvcm1hdFwiKSk7XG52YXIgdGl0bGVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS90aXRsZVwiKSk7XG52YXIgdXRpbHNfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3V0aWxzXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdQZXJpb2RMaXN0JyxcbiAgICBtZXRob2RzOiB7IGNyZWF0ZUNhcGl0YWxpemVkU2VudGVuY2U6IHV0aWxzXzEuY3JlYXRlQ2FwaXRhbGl6ZWRTZW50ZW5jZSB9LFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgQnRuOiBCdXR0b25Db21wb25lbnRfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgUGFnaW5hdGlvbjogVGFibGVQYWdpbmF0aW9uX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFBhZ2VUaXRsZTogUGFnZVRpdGxlX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgRGVsZXRlQWN0aW9uOiBEZWxldGVBY3Rpb25fdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGFjdGl2aXR5OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgcGFyZW50RGF0YToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHBlcmlvZDoge1xuICAgICAgICAgICAgdHlwZTogQXJyYXksXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdG9hc3Q6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIF9hID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLCBhY3Rpdml0eSA9IF9hLmFjdGl2aXR5LCBwYXJlbnREYXRhID0gX2EucGFyZW50RGF0YTtcbiAgICAgICAgdmFyIGFjdGl2aXR5SWQgPSBhY3Rpdml0eS52YWx1ZS5pZCwgYWN0aXZpdHlUaXRsZSA9IGFjdGl2aXR5LnZhbHVlLnRpdGxlLCBhY3Rpdml0eUxpbmsgPSBcIi9hY3Rpdml0eS9cIi5jb25jYXQoYWN0aXZpdHlJZCksIHJlc3VsdFRpdGxlID0gcGFyZW50RGF0YS52YWx1ZS5yZXN1bHQudGl0bGUsIHJlc3VsdElkID0gcGFyZW50RGF0YS52YWx1ZS5yZXN1bHQuaWQsIHJlc3VsdExpbmsgPSBcIlwiLmNvbmNhdChhY3Rpdml0eUxpbmssIFwiL3Jlc3VsdC9cIikuY29uY2F0KHJlc3VsdElkKSwgaW5kaWNhdG9yVGl0bGUgPSBwYXJlbnREYXRhLnZhbHVlLmluZGljYXRvci50aXRsZSwgaW5kaWNhdG9ySWQgPSBwYXJlbnREYXRhLnZhbHVlLmluZGljYXRvci5pZCwgaW5kaWNhdG9yTGluayA9IFwiL3Jlc3VsdC9cIi5jb25jYXQocmVzdWx0SWQsIFwiL2luZGljYXRvci9cIikuY29uY2F0KGluZGljYXRvcklkKSwgcGVyaW9kTGluayA9IFwiL2luZGljYXRvci9cIi5jb25jYXQoaW5kaWNhdG9ySWQsIFwiL3BlcmlvZFwiKTtcbiAgICAgICAgdmFyIHBlcmlvZHNEYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7fSk7XG4gICAgICAgIHZhciBpc0VtcHR5ID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgdG9hc3REYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBCcmVhZGNydW1iIGRhdGFcbiAgICAgICAgICovXG4gICAgICAgIHZhciBicmVhZGNydW1iRGF0YSA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogbGFuZ3VhZ2UuYWN0aXZpdGllc19sYW5nLnlvdXJfYWN0aXZpdGllcyxcbiAgICAgICAgICAgICAgICBsaW5rOiAnL2FjdGl2aXR5JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICgwLCB0aXRsZV8xLmRlZmF1bHQpKGFjdGl2aXR5VGl0bGUsICdlbicpLFxuICAgICAgICAgICAgICAgIGxpbms6IGFjdGl2aXR5TGluayxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICgwLCB0aXRsZV8xLmRlZmF1bHQpKHJlc3VsdFRpdGxlLCAnZW4nKSxcbiAgICAgICAgICAgICAgICBsaW5rOiByZXN1bHRMaW5rLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogKDAsIHRpdGxlXzEuZGVmYXVsdCkoaW5kaWNhdG9yVGl0bGUsICdlbicpLFxuICAgICAgICAgICAgICAgIGxpbms6IGluZGljYXRvckxpbmssXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBsYW5ndWFnZS5jb21tb25fbGFuZy5wZXJpb2RzX2xpc3QsXG4gICAgICAgICAgICAgICAgbGluazogJycsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldChcIi9pbmRpY2F0b3IvXCIuY29uY2F0KGluZGljYXRvcklkLCBcIi9wZXJpb2RzL3BhZ2UvMVwiKSkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHBlcmlvZHNEYXRhLCByZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgaXNFbXB0eS52YWx1ZSA9IHJlc3BvbnNlLmRhdGEuZGF0YS5sZW5ndGggPyBmYWxzZSA6IHRydWU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzLnRvYXN0Lm1lc3NhZ2UgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gcHJvcHMudG9hc3QudHlwZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHByb3BzLnRvYXN0Lm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0sIDUwMDApO1xuICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfSk7XG4gICAgICAgIGZ1bmN0aW9uIGZldGNoTGlzdGluZ3MoYWN0aXZlX3BhZ2UpIHtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5nZXQoXCIvaW5kaWNhdG9yL1wiLmNvbmNhdChpbmRpY2F0b3JJZCwgXCIvcGVyaW9kcy9wYWdlL1wiKSArIGFjdGl2ZV9wYWdlKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHBlcmlvZHNEYXRhLCByZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICAgICAgICBpc0VtcHR5LnZhbHVlID0gcmVzcG9uc2UuZGF0YSA/IGZhbHNlIDogdHJ1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGhhbmRsZU5hdmlnYXRlKHBhdGgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gcGF0aDtcbiAgICAgICAgfVxuICAgICAgICAvLyBwcm92aWRlXG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgncGFyZW50SXRlbUlkJywgaW5kaWNhdG9ySWQpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnJlYWRjcnVtYkRhdGE6IGJyZWFkY3J1bWJEYXRhLFxuICAgICAgICAgICAgaW5kaWNhdG9yTGluazogaW5kaWNhdG9yTGluayxcbiAgICAgICAgICAgIHBlcmlvZExpbms6IHBlcmlvZExpbmssXG4gICAgICAgICAgICBkYXRlRm9ybWF0OiBkYXRlRm9ybWF0XzEuZGVmYXVsdCxcbiAgICAgICAgICAgIHBlcmlvZHNEYXRhOiBwZXJpb2RzRGF0YSxcbiAgICAgICAgICAgIGdldEFjdGl2aXR5VGl0bGU6IHRpdGxlXzEuZGVmYXVsdCxcbiAgICAgICAgICAgIGZldGNoTGlzdGluZ3M6IGZldGNoTGlzdGluZ3MsXG4gICAgICAgICAgICBpbmRpY2F0b3JJZDogaW5kaWNhdG9ySWQsXG4gICAgICAgICAgICB0b2FzdERhdGE6IHRvYXN0RGF0YSxcbiAgICAgICAgICAgIGhhbmRsZU5hdmlnYXRlOiBoYW5kbGVOYXZpZ2F0ZSxcbiAgICAgICAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG4vLyBjb21wb25lbnRcbnZhciBJbmRleF8xID0gcmVxdWlyZShcIkFjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvSW5kZXhcIik7XG4vL2NvbXBvc2FibGVcbnZhciB1dGlsc18xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdXRpbHNcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ0FjdHVhbFZhbHVlJyxcbiAgICBjb21wb25lbnRzOiB7IERvY3VtZW50TGluazogSW5kZXhfMS5Eb2N1bWVudExpbmsgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIC8vIHZ1ZSBpbmplY3RcbiAgICAgICAgdmFyIGRsVHlwZSA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICB2YXIgZWxlbWVudFNwYWNpbmcgPSAnbWItMSc7XG4gICAgICAgIHZhciBhY3R1YWxWYWx1ZSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhY3R1YWxWYWx1ZTogYWN0dWFsVmFsdWUsXG4gICAgICAgICAgICBlbGVtZW50U3BhY2luZzogZWxlbWVudFNwYWNpbmcsXG4gICAgICAgICAgICBsb2NhdGlvbjogbG9jYXRpb24sXG4gICAgICAgICAgICBnZXRMb2NhdGlvbjogdXRpbHNfMS5nZXRMb2NhdGlvbixcbiAgICAgICAgICAgIGRsVHlwZTogZGxUeXBlLFxuICAgICAgICAgICAgbGFuZ3VhZ2U6IGxhbmd1YWdlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbi8vIGNvbXBvbmVudFxudmFyIEluZGV4XzEgPSByZXF1aXJlKFwiQWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9JbmRleFwiKTtcbi8vY29tcG9zYWJsZVxudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS91dGlsc1wiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnVGFyZ2V0VmFsdWUnLFxuICAgIGNvbXBvbmVudHM6IHsgRG9jdW1lbnRMaW5rOiBJbmRleF8xLkRvY3VtZW50TGluayB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgLy8gdnVlIGluamVjdFxuICAgICAgICAvLyBjb25zdCBsYW5ndWFnZVR5cGUgPSBpbmplY3QoJ3R5cGVzJykubGFuZ3VhZ2U7XG4gICAgICAgIHZhciBkbFR5cGUgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgdmFyIGVsZW1lbnRTcGFjaW5nID0gJ21iLTEnO1xuICAgICAgICB2YXIgdGFyZ2V0VmFsdWUgPSBkYXRhLnZhbHVlO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGFyZ2V0VmFsdWU6IHRhcmdldFZhbHVlLFxuICAgICAgICAgICAgZWxlbWVudFNwYWNpbmc6IGVsZW1lbnRTcGFjaW5nLFxuICAgICAgICAgICAgbG9jYXRpb246IGxvY2F0aW9uLFxuICAgICAgICAgICAgZ2V0TG9jYXRpb246IHV0aWxzXzEuZ2V0TG9jYXRpb24sXG4gICAgICAgICAgICAvLyBsYW5ndWFnZVR5cGUsXG4gICAgICAgICAgICBkbFR5cGU6IGRsVHlwZSxcbiAgICAgICAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG4vL2NvbXBvbmVudFxudmFyIFJlc3VsdEVsZW1lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vUmVzdWx0RWxlbWVudC52dWVcIikpO1xudmFyIEluZGljYXRvcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQWN0aXZpdHkvcmVzdWx0cy9lbGVtZW50cy9JbmRpY2F0b3IudnVlXCIpKTtcbnZhciBMaW5rX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL2J1dHRvbnMvTGluay52dWVcIikpO1xudmFyIFBhZ2VUaXRsZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9QYWdlVGl0bGUudnVlXCIpKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG4vL2NvbXBvc2FibGVcbnZhciBkYXRlRm9ybWF0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZGF0ZUZvcm1hdFwiKSk7XG52YXIgdGl0bGVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS90aXRsZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1Jlc3VsdERldGFpbCcsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBSZXN1bHRFbGVtZW50OiBSZXN1bHRFbGVtZW50X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIEluZGljYXRvcjogSW5kaWNhdG9yX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIEJ0bjogTGlua192dWVfMS5kZWZhdWx0LFxuICAgICAgICBQYWdlVGl0bGU6IFBhZ2VUaXRsZV92dWVfMS5kZWZhdWx0LFxuICAgICAgICBUb2FzdDogVG9hc3RNZXNzYWdlX3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBhY3Rpdml0eToge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHJlc3VsdDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdG9hc3Q6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBlbGVtZW50OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIGxpbmtDbGFzc2VzID0gJ2ZsZXggaXRlbXMtY2VudGVyIHctZnVsbCBiZy13aGl0ZSByb3VuZGVkIHAtMiB0ZXh0LXNtIHRleHQtbi01MCBmb250LWJvbGQgbGVhZGluZy1ub3JtYWwgbWItMiBzaGFkb3ctZGVmYXVsdCc7XG4gICAgICAgIHZhciBwb3NpdGlvblkgPSAoMCwgdnVlXzEucmVmKSgwKTtcbiAgICAgICAgdmFyIHNob3dTaWRlYmFyID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2NyZWVuV2lkdGggPSAoMCwgdnVlXzEucmVmKSgwKTtcbiAgICAgICAgdmFyIF9iID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLCByZXN1bHQgPSBfYi5yZXN1bHQsIGFjdGl2aXR5ID0gX2IuYWN0aXZpdHk7XG4gICAgICAgIHZhciBoYXNJbmRpY2F0b3JzID0gcmVzdWx0LnZhbHVlLmluZGljYXRvcnMubGVuZ3RoID4gMCA/IHRydWUgOiBmYWxzZTtcbiAgICAgICAgdmFyIHJlc3VsdHNEYXRhID0gcmVzdWx0LnZhbHVlLnJlc3VsdDtcbiAgICAgICAgdmFyIGFjdGl2aXR5SWQgPSBhY3Rpdml0eS52YWx1ZS5pZCwgYWN0aXZpdHlUaXRsZSA9IGFjdGl2aXR5LnZhbHVlLnRpdGxlLCBhY3Rpdml0eUxpbmsgPSBcIi9hY3Rpdml0eS9cIi5jb25jYXQoYWN0aXZpdHlJZCksIHJlc3VsdFRpdGxlID0gKDAsIHRpdGxlXzEuZGVmYXVsdCkocmVzdWx0c0RhdGEudGl0bGVbMF0ubmFycmF0aXZlLCAnZW4nKSwgcmVzdWx0TGluayA9IFwiXCIuY29uY2F0KGFjdGl2aXR5TGluaywgXCIvcmVzdWx0L1wiKS5jb25jYXQocmVzdWx0LnZhbHVlLmlkKSwgZGVmYXVsdExhbmd1YWdlID0gKF9hID0gYWN0aXZpdHkudmFsdWUuZGVmYXVsdF9maWVsZF92YWx1ZXMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sYW5ndWFnZTtcbiAgICAgICAgdmFyIGhhbmRsZVNjcm9sbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHBvc2l0aW9uWS52YWx1ZSA9IHdpbmRvdy5zY3JvbGxZO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgdG9hc3REYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBCcmVhZGNydW1iIGRhdGFcbiAgICAgICAgICovXG4gICAgICAgIHZhciBicmVhZGNydW1iRGF0YSA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogbGFuZ3VhZ2UuYWN0aXZpdGllc19sYW5nLnlvdXJfYWN0aXZpdGllcyxcbiAgICAgICAgICAgICAgICBsaW5rOiAnL2FjdGl2aXRpZXMnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogKDAsIHRpdGxlXzEuZGVmYXVsdCkoYWN0aXZpdHlUaXRsZSwgZGVmYXVsdExhbmd1YWdlKSxcbiAgICAgICAgICAgICAgICBsaW5rOiBhY3Rpdml0eUxpbmssXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiByZXN1bHRUaXRsZSxcbiAgICAgICAgICAgICAgICBsaW5rOiAnJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICAgIHZhciBpc3RvcFZpc2libGUgPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBwb3NpdGlvblkudmFsdWUgPT09IDA7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKTtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxjV2lkdGgpO1xuICAgICAgICAgICAgaWYgKHByb3BzLnRvYXN0Lm1lc3NhZ2UgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSBwcm9wcy50b2FzdC50eXBlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHByb3BzLnRvYXN0Lm1lc3NhZ2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgICAgICAgICAgfSwgNTAwMCk7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEub25Vbm1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpO1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNhbGNXaWR0aCk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgY2FsY1dpZHRoID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBzY3JlZW5XaWR0aC52YWx1ZSA9IGV2ZW50LnRhcmdldC5pbm5lcldpZHRoO1xuICAgICAgICAgICAgaWYgKHNjcmVlbldpZHRoLnZhbHVlID4gMTAyNCkge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHNob3dTaWRlYmFyLnZhbHVlICYmXG4gICAgICAgICAgICAgICAgICAgIChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc2hvd1NpZGViYXIudmFsdWU7IH0sIGZ1bmN0aW9uIChzaWRlYmFyKSB7XG4gICAgICAgICAgICBpZiAoc2lkZWJhcikge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhY3Rpdml0eUxpbms6IGFjdGl2aXR5TGluayxcbiAgICAgICAgICAgIHJlc3VsdFRpdGxlOiByZXN1bHRUaXRsZSxcbiAgICAgICAgICAgIHJlc3VsdExpbms6IHJlc3VsdExpbmssXG4gICAgICAgICAgICBsaW5rQ2xhc3NlczogbGlua0NsYXNzZXMsXG4gICAgICAgICAgICBkYXRlRm9ybWF0OiBkYXRlRm9ybWF0XzEuZGVmYXVsdCxcbiAgICAgICAgICAgIGhhc0luZGljYXRvcnM6IGhhc0luZGljYXRvcnMsXG4gICAgICAgICAgICByZXN1bHRzRGF0YTogcmVzdWx0c0RhdGEsXG4gICAgICAgICAgICBicmVhZGNydW1iRGF0YTogYnJlYWRjcnVtYkRhdGEsXG4gICAgICAgICAgICB0b2FzdERhdGE6IHRvYXN0RGF0YSxcbiAgICAgICAgICAgIHNob3dTaWRlYmFyOiBzaG93U2lkZWJhcixcbiAgICAgICAgICAgIGlzdG9wVmlzaWJsZTogaXN0b3BWaXNpYmxlLFxuICAgICAgICAgICAgbGFuZ3VhZ2U6IGxhbmd1YWdlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBIb3ZlclRleHRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZVwiKSk7XG52YXIgSW5kZXhfMSA9IHJlcXVpcmUoXCIuL2VsZW1lbnRzL0luZGV4XCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdBY3Rpdml0eUVsZW1lbnQnLFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgSG92ZXJUZXh0OiBIb3ZlclRleHRfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgVGl0bGVEZXNjcmlwdGlvbjogSW5kZXhfMS5UaXRsZURlc2NyaXB0aW9uLFxuICAgICAgICBEb2N1bWVudExpbms6IEluZGV4XzEuRG9jdW1lbnRMaW5rLFxuICAgICAgICBSZWZlcmVuY2U6IEluZGV4XzEuUmVmZXJlbmNlLFxuICAgICAgICBSZXN1bHRUeXBlOiBJbmRleF8xLlJlc3VsdFR5cGUsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGVsZW1lbnROYW1lOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZWRpdFVybDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHdpZHRoOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBob3ZlclRleHQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgX2EgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcyksIGRhdGEgPSBfYS5kYXRhLCB0eXBlcyA9IF9hLnR5cGVzLCBlbGVtZW50RGF0YSA9IGRhdGEudmFsdWUsIHJlc3VsdFR5cGUgPSB0eXBlcy52YWx1ZS5yZXN1bHRUeXBlLCByZXN1bHRWb2NhYnVsYXJ5ID0gdHlwZXMudmFsdWUucmVzdWx0Vm9jYWJ1bGFyeSwgbGFuZ3VhZ2UgPSB0eXBlcy52YWx1ZS5sYW5ndWFnZTtcbiAgICAgICAgdmFyIHRyYW5zbGF0aW9uID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBlbGVtZW50RGF0YTogZWxlbWVudERhdGEsXG4gICAgICAgICAgICByZXN1bHRUeXBlOiByZXN1bHRUeXBlLFxuICAgICAgICAgICAgcmVzdWx0Vm9jYWJ1bGFyeTogcmVzdWx0Vm9jYWJ1bGFyeSxcbiAgICAgICAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICAgICAgICAgIHRyYW5zbGF0aW9uOiB0cmFuc2xhdGlvbixcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xuLy8gY29tcG9uZW50c1xudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbnZhciBUYWJsZVBhZ2luYXRpb25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVGFibGVQYWdpbmF0aW9uLnZ1ZVwiKSk7XG52YXIgUGFnZVRpdGxlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1BhZ2VUaXRsZS52dWVcIikpO1xudmFyIFRvYXN0TWVzc2FnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlXCIpKTtcbnZhciBEZWxldGVBY3Rpb25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvRGVsZXRlQWN0aW9uLnZ1ZVwiKSk7XG4vLyBjb21wb3NhYmxlXG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xudmFyIHRpdGxlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvdGl0bGVcIikpO1xudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiLi4vLi4vLi4vY29tcG9zYWJsZS91dGlsc1wiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnUmVzdWx0c0xpc3QnLFxuICAgIG1ldGhvZHM6IHsgY3JlYXRlQ2FwaXRhbGl6ZWRTZW50ZW5jZTogdXRpbHNfMS5jcmVhdGVDYXBpdGFsaXplZFNlbnRlbmNlIH0sXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBCdG46IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBQYWdpbmF0aW9uOiBUYWJsZVBhZ2luYXRpb25fdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgUGFnZVRpdGxlOiBQYWdlVGl0bGVfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgVG9hc3Q6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0LFxuICAgICAgICBEZWxldGVBY3Rpb246IERlbGV0ZUFjdGlvbl92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgYWN0aXZpdHk6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICByZXN1bHRzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0b2FzdDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgYWN0aXZpdHkgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuYWN0aXZpdHk7XG4gICAgICAgIHZhciBhY3Rpdml0eUlkID0gYWN0aXZpdHkudmFsdWUuaWQsIGFjdGl2aXR5VGl0bGUgPSBhY3Rpdml0eS52YWx1ZS50aXRsZSwgYWN0aXZpdHlMaW5rID0gXCIvYWN0aXZpdHkvXCIuY29uY2F0KGFjdGl2aXR5SWQpO1xuICAgICAgICB2YXIgdG9hc3REYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciByZXN1bHRzRGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe30pO1xuICAgICAgICB2YXIgaXNFbXB0eSA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEJyZWFkY3J1bWIgZGF0YVxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIGJyZWFkY3J1bWJEYXRhID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBsYW5ndWFnZS5hY3Rpdml0aWVzX2xhbmcueW91cl9hY3Rpdml0aWVzLFxuICAgICAgICAgICAgICAgIGxpbms6ICcvYWN0aXZpdGllcycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiAoMCwgdGl0bGVfMS5kZWZhdWx0KShhY3Rpdml0eVRpdGxlLCAnZW4nKSxcbiAgICAgICAgICAgICAgICBsaW5rOiBhY3Rpdml0eUxpbmssXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBsYW5ndWFnZS5jb21tb25fbGFuZy5yZXN1bHRfbGlzdCxcbiAgICAgICAgICAgICAgICBsaW5rOiAnJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICAgIGZ1bmN0aW9uIGhhbmRsZU5hdmlnYXRlKHBhdGgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gcGF0aDtcbiAgICAgICAgfVxuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldChcIi9hY3Rpdml0eS9cIi5jb25jYXQoYWN0aXZpdHlJZCwgXCIvcmVzdWx0cy9wYWdlLzFcIikpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihyZXN1bHRzRGF0YSwgcmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIGlzRW1wdHkudmFsdWUgPSByZXNwb25zZS5kYXRhLmRhdGEubGVuZ3RoID8gZmFsc2UgOiB0cnVlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChwcm9wcy50b2FzdC5tZXNzYWdlICE9PSAnJykge1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHByb3BzLnRvYXN0LnR5cGU7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSBwcm9wcy50b2FzdC5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9LCA1MDAwKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH0pO1xuICAgICAgICBmdW5jdGlvbiBmZXRjaExpc3RpbmdzKGFjdGl2ZV9wYWdlKSB7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAuZ2V0KFwiL2FjdGl2aXR5L1wiLmNvbmNhdChhY3Rpdml0eUlkLCBcIi9yZXN1bHRzL3BhZ2UvXCIpICsgYWN0aXZlX3BhZ2UpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ocmVzdWx0c0RhdGEsIHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgIGlzRW1wdHkudmFsdWUgPSByZXNwb25zZS5kYXRhID8gZmFsc2UgOiB0cnVlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUHJvdmlkZVxuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3BhcmVudEl0ZW1JZCcsIGFjdGl2aXR5SWQpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnJlYWRjcnVtYkRhdGE6IGJyZWFkY3J1bWJEYXRhLFxuICAgICAgICAgICAgYWN0aXZpdHlMaW5rOiBhY3Rpdml0eUxpbmssXG4gICAgICAgICAgICB0b2FzdERhdGE6IHRvYXN0RGF0YSxcbiAgICAgICAgICAgIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0LFxuICAgICAgICAgICAgcmVzdWx0c0RhdGE6IHJlc3VsdHNEYXRhLFxuICAgICAgICAgICAgZ2V0QWN0aXZpdHlUaXRsZTogdGl0bGVfMS5kZWZhdWx0LFxuICAgICAgICAgICAgZmV0Y2hMaXN0aW5nczogZmV0Y2hMaXN0aW5ncyxcbiAgICAgICAgICAgIGhhbmRsZU5hdmlnYXRlOiBoYW5kbGVOYXZpZ2F0ZSxcbiAgICAgICAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1Jlc3VsdERvY3VtZW50TGluaycsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogW09iamVjdCwgU3RyaW5nXSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIGRsRGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICByZXR1cm4geyBkbERhdGE6IGRsRGF0YSwgbGFuZ3VhZ2U6IGxhbmd1YWdlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuLy9jb21wb3NhYmxlXG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xudmFyIHRpdGxlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvdGl0bGVcIikpO1xuLy9jb21wb25lbnRzXG52YXIgSGF2ZU5vdEFkZGVkWWV0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL0hhdmVOb3RBZGRlZFlldC52dWVcIikpO1xudmFyIExpbmtfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvYnV0dG9ucy9MaW5rLnZ1ZVwiKSk7XG4vLyBoZWxwZXIgZnVuY3Rpb25cbnZhciB1dGlsc18xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvdXRpbHNcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1Jlc3VsdEluZGljYXRvcicsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBOb3RZZXQ6IEhhdmVOb3RBZGRlZFlldF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBCdG46IExpbmtfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIHJlc3VsdDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0b29sVGlwOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciByZXN1bHQgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykucmVzdWx0O1xuICAgICAgICB2YXIgaW5kaWNhdG9yRGF0YSA9IHJlc3VsdC52YWx1ZS5pbmRpY2F0b3JzLnJldmVyc2UoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGluZGljYXRvckRhdGE6IGluZGljYXRvckRhdGEsXG4gICAgICAgICAgICBkYXRlRm9ybWF0OiBkYXRlRm9ybWF0XzEuZGVmYXVsdCxcbiAgICAgICAgICAgIGdldEFjdGl2aXR5VGl0bGU6IHRpdGxlXzEuZGVmYXVsdCxcbiAgICAgICAgICAgIGNvdW50RG9jdW1lbnRMaW5rOiB1dGlsc18xLmNvdW50RG9jdW1lbnRMaW5rLFxuICAgICAgICAgICAgbGFuZ3VhZ2U6IGxhbmd1YWdlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnUmVzdWx0UmVmZXJlbmNlJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIHJlZmVyZW5jZURhdGEgPSBkYXRhLnZhbHVlO1xuICAgICAgICByZXR1cm4geyByZWZlcmVuY2VEYXRhOiByZWZlcmVuY2VEYXRhLCBsYW5ndWFnZTogbGFuZ3VhZ2UgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1Jlc3VsdFR5cGUnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciB0eXBlRGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHJldHVybiB7IHR5cGVEYXRhOiB0eXBlRGF0YSwgbGFuZ3VhZ2U6IGxhbmd1YWdlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdSZXN1bHRURCcsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogW09iamVjdCwgU3RyaW5nXSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIHRkRGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHZhciB0cmFuc2xhdGlvbiA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICByZXR1cm4geyB0ZERhdGE6IHRkRGF0YSwgdHJhbnNsYXRpb246IHRyYW5zbGF0aW9uIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuLy9jb21wb25lbnRzXG52YXIgTGlua192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9idXR0b25zL0xpbmsudnVlXCIpKTtcbnZhciBQYWdlVGl0bGVfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvUGFnZVRpdGxlLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xuLy9jb21wb3NhYmxlXG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xudmFyIHRpdGxlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvdGl0bGVcIikpO1xudmFyIFRyYW5zYWN0aW9uRWxlbWVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9UcmFuc2FjdGlvbkVsZW1lbnQudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnVHJhbnNhY3Rpb25EZXRhaWwnLFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgVHJhbnNhY3Rpb25FbGVtZW50OiBUcmFuc2FjdGlvbkVsZW1lbnRfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgQnRuOiBMaW5rX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFBhZ2VUaXRsZTogUGFnZVRpdGxlX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGFjdGl2aXR5OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHJhbnNhY3Rpb246IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRvYXN0OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZWxlbWVudDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgX2EgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcyksIGFjdGl2aXR5ID0gX2EuYWN0aXZpdHksIHRyYW5zYWN0aW9uID0gX2EudHJhbnNhY3Rpb247XG4gICAgICAgIHZhciBsaW5rQ2xhc3NlcyA9ICdmbGV4IGl0ZW1zLWNlbnRlciB3LWZ1bGwgYmctd2hpdGUgcm91bmRlZCBwLTIgdGV4dC1zbSB0ZXh0LW4tNTAgZm9udC1ib2xkIGxlYWRpbmctcmVsYXhlZCBtYi0yIHNoYWRvdy1kZWZhdWx0JztcbiAgICAgICAgdmFyIHNob3dTaWRlYmFyID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgcG9zaXRpb25ZID0gKDAsIHZ1ZV8xLnJlZikoMCk7XG4gICAgICAgIHZhciBzY3JlZW5XaWR0aCA9ICgwLCB2dWVfMS5yZWYpKDApO1xuICAgICAgICB2YXIgdG9hc3REYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBoYW5kbGVTY3JvbGwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBwb3NpdGlvblkudmFsdWUgPSB3aW5kb3cuc2Nyb2xsWTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGlzdG9wVmlzaWJsZSA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uWS52YWx1ZSA9PT0gMDtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIHRpdGxlc1xuICAgICAgICB2YXIgdHJhbnNhY3Rpb25EYXRhID0gdHJhbnNhY3Rpb24udmFsdWUudHJhbnNhY3Rpb247XG4gICAgICAgIHZhciBjYWxjV2lkdGggPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIHNjcmVlbldpZHRoLnZhbHVlID0gZXZlbnQudGFyZ2V0LmlubmVyV2lkdGg7XG4gICAgICAgICAgICBpZiAoc2NyZWVuV2lkdGgudmFsdWUgPiAxMDI0KSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc2hvd1NpZGViYXIudmFsdWUgJiZcbiAgICAgICAgICAgICAgICAgICAgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGFjdGl2aXR5SWQgPSBhY3Rpdml0eS52YWx1ZS5pZCwgYWN0aXZpdHlUaXRsZSA9ICgwLCB0aXRsZV8xLmRlZmF1bHQpKGFjdGl2aXR5LnZhbHVlLnRpdGxlLCAnZW4nKSwgYWN0aXZpdHlMaW5rID0gXCIvYWN0aXZpdHkvXCIuY29uY2F0KGFjdGl2aXR5SWQpLCB0cmFuc2FjdGlvbkxpbmsgPSBcIlwiLmNvbmNhdChhY3Rpdml0eUxpbmssIFwiL3RyYW5zYWN0aW9uL1wiKS5jb25jYXQodHJhbnNhY3Rpb24udmFsdWUuaWQpO1xuICAgICAgICAoMCwgdnVlXzEub25Vbm1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpO1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNhbGNXaWR0aCk7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNob3dTaWRlYmFyLnZhbHVlOyB9LCBmdW5jdGlvbiAoc2lkZWJhcikge1xuICAgICAgICAgICAgaWYgKHNpZGViYXIpIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBCcmVhZGNydW1iIGRhdGFcbiAgICAgICAgICovXG4gICAgICAgIHZhciBicmVhZGNydW1iRGF0YSA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogbGFuZ3VhZ2UuYWN0aXZpdGllc19sYW5nLnlvdXJfYWN0aXZpdGllcyxcbiAgICAgICAgICAgICAgICBsaW5rOiAnL2FjdGl2aXR5JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGFjdGl2aXR5VGl0bGUsXG4gICAgICAgICAgICAgICAgbGluazogYWN0aXZpdHlMaW5rLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogbGFuZ3VhZ2UuY29tbW9uX2xhbmcudHJhbnNhY3Rpb24sXG4gICAgICAgICAgICAgICAgbGluazogJycsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKTtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjYWxjV2lkdGgpO1xuICAgICAgICAgICAgaWYgKHByb3BzLnRvYXN0Lm1lc3NhZ2UgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSBwcm9wcy50b2FzdC50eXBlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHByb3BzLnRvYXN0Lm1lc3NhZ2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgICAgICAgICAgfSwgNTAwMCk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaXNNYW5kYXRvcnlJY29uID0gZnVuY3Rpb24gKHIpIHtcbiAgICAgICAgICAgIHJldHVybiAoci50b1N0cmluZygpID09PSAndmFsdWUnIHx8XG4gICAgICAgICAgICAgICAgci50b1N0cmluZygpID09PSAndHJhbnNhY3Rpb25fdHlwZScgfHxcbiAgICAgICAgICAgICAgICByLnRvU3RyaW5nKCkgPT09ICd0cmFuc2FjdGlvbl9kYXRlJyk7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhY3Rpdml0eVRpdGxlOiBhY3Rpdml0eVRpdGxlLFxuICAgICAgICAgICAgZGF0ZUZvcm1hdDogZGF0ZUZvcm1hdF8xLmRlZmF1bHQsXG4gICAgICAgICAgICB0cmFuc2FjdGlvbkRhdGE6IHRyYW5zYWN0aW9uRGF0YSxcbiAgICAgICAgICAgIGxpbmtDbGFzc2VzOiBsaW5rQ2xhc3NlcyxcbiAgICAgICAgICAgIGJyZWFkY3J1bWJEYXRhOiBicmVhZGNydW1iRGF0YSxcbiAgICAgICAgICAgIGFjdGl2aXR5TGluazogYWN0aXZpdHlMaW5rLFxuICAgICAgICAgICAgdHJhbnNhY3Rpb25MaW5rOiB0cmFuc2FjdGlvbkxpbmssXG4gICAgICAgICAgICB0b2FzdERhdGE6IHRvYXN0RGF0YSxcbiAgICAgICAgICAgIGlzTWFuZGF0b3J5SWNvbjogaXNNYW5kYXRvcnlJY29uLFxuICAgICAgICAgICAgc2hvd1NpZGViYXI6IHNob3dTaWRlYmFyLFxuICAgICAgICAgICAgaXN0b3BWaXNpYmxlOiBpc3RvcFZpc2libGUsXG4gICAgICAgICAgICBsYW5ndWFnZTogbGFuZ3VhZ2UsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIEhvdmVyVGV4dF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi8uLi8uLi8uLi9jb21wb25lbnRzL0hvdmVyVGV4dC52dWVcIikpO1xudmFyIGRhdGVGb3JtYXRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi8uLi8uLi8uLi9jb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xudmFyIEluZGV4XzEgPSByZXF1aXJlKFwiLi9lbGVtZW50cy9JbmRleFwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnQWN0aXZpdHlFbGVtZW50JyxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEhvdmVyVGV4dDogSG92ZXJUZXh0X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIERlc2NyaXB0aW9uOiBJbmRleF8xLkRlc2NyaXB0aW9uLFxuICAgICAgICBBaWRUeXBlOiBJbmRleF8xLkFpZFR5cGUsXG4gICAgICAgIFRyYW5zYWN0aW9uVHlwZTogSW5kZXhfMS5UcmFuc2FjdGlvblR5cGUsXG4gICAgICAgIFRyYW5zYWN0aW9uRGF0ZTogSW5kZXhfMS5UcmFuc2FjdGlvbkRhdGUsXG4gICAgICAgIFZhbHVlOiBJbmRleF8xLlZhbHVlLFxuICAgICAgICBQcm92aWRlck9yZ2FuaXphdGlvbjogSW5kZXhfMS5Qcm92aWRlck9yZ2FuaXphdGlvbixcbiAgICAgICAgUmVjZWl2ZXJPcmdhbml6YXRpb246IEluZGV4XzEuUmVjZWl2ZXJPcmdhbml6YXRpb24sXG4gICAgICAgIERpc2J1cnNlbWVudENoYW5uZWw6IEluZGV4XzEuRGlzYnVyc2VtZW50Q2hhbm5lbCxcbiAgICAgICAgU2VjdG9yOiBJbmRleF8xLlNlY3RvcixcbiAgICAgICAgUmVjaXBpZW50Q291bnRyeTogSW5kZXhfMS5SZWNpcGllbnRDb3VudHJ5LFxuICAgICAgICBSZWNpcGllbnRSZWdpb246IEluZGV4XzEuUmVjaXBpZW50UmVnaW9uLFxuICAgICAgICBGbG93VHlwZTogSW5kZXhfMS5GbG93VHlwZSxcbiAgICAgICAgRmluYW5jZVR5cGU6IEluZGV4XzEuRmluYW5jZVR5cGUsXG4gICAgICAgIFRpZWRTdGF0dXM6IEluZGV4XzEuVGllZFN0YXR1cyxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3QsIFN0cmluZ10sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZWxlbWVudE5hbWU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBlZGl0VXJsOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgd2lkdGg6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGhvdmVyVGV4dDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgX2EgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcyksIGRhdGEgPSBfYS5kYXRhLCB0eXBlcyA9IF9hLnR5cGVzLCBlbGVtZW50RGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgndHlwZXMnLCB0eXBlcyk7XG4gICAgICAgIGZ1bmN0aW9uIGdldExhbmd1YWdlcyhsYW5ndWFnZSkge1xuICAgICAgICAgICAgcmV0dXJuIGxhbmd1YWdlLm1hcChmdW5jdGlvbiAoZW50cnkpIHsgcmV0dXJuIGVudHJ5Lmxhbmd1YWdlOyB9KS5qb2luKCcsICcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBlbGVtZW50RGF0YTogZWxlbWVudERhdGEsXG4gICAgICAgICAgICBnZXRMYW5ndWFnZXM6IGdldExhbmd1YWdlcyxcbiAgICAgICAgICAgIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0LFxuICAgICAgICAgICAgbGFuZ3VhZ2U6IGxhbmd1YWdlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG4vL2NvbXBvbmVudHNcbnZhciBCdXR0b25Db21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZVwiKSk7XG52YXIgVGFibGVQYWdpbmF0aW9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RhYmxlUGFnaW5hdGlvbi52dWVcIikpO1xudmFyIFBhZ2VUaXRsZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9zZWN0aW9ucy9QYWdlVGl0bGUudnVlXCIpKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG52YXIgRGVsZXRlQWN0aW9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL0RlbGV0ZUFjdGlvbi52dWVcIikpO1xuLy9jb21wb3NhYmxlXG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2RhdGVGb3JtYXRcIikpO1xudmFyIHRpdGxlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvdGl0bGVcIikpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgdXRpbHNfMSA9IHJlcXVpcmUoXCIuLi8uLi8uLi9jb21wb3NhYmxlL3V0aWxzXCIpO1xuLy8gdG9nZ2xlIHN0YXRlIGZvciBtb2RhbCBwb3B1cFxudmFyIF9hID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIGRlbGV0ZVZhbHVlID0gX2FbMF0sIGRlbGV0ZVRvZ2dsZSA9IF9hWzFdO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdUcmFuc2FjdGlvbkxpc3QnLFxuICAgIG1ldGhvZHM6IHsgY3JlYXRlQ2FwaXRhbGl6ZWRTZW50ZW5jZTogdXRpbHNfMS5jcmVhdGVDYXBpdGFsaXplZFNlbnRlbmNlIH0sXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBCdG46IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBQYWdpbmF0aW9uOiBUYWJsZVBhZ2luYXRpb25fdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgUGFnZVRpdGxlOiBQYWdlVGl0bGVfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgVG9hc3Q6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0LFxuICAgICAgICBEZWxldGVBY3Rpb246IERlbGV0ZUFjdGlvbl92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgYWN0aXZpdHk6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0cmFuc2FjdGlvbnM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlczoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRvYXN0OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciBhY3Rpdml0eSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5hY3Rpdml0eTtcbiAgICAgICAgdmFyIGFjdGl2aXR5SWQgPSBhY3Rpdml0eS52YWx1ZS5pZCwgYWN0aXZpdHlUaXRsZSA9ICgwLCB0aXRsZV8xLmRlZmF1bHQpKGFjdGl2aXR5LnZhbHVlLnRpdGxlLCAnZW4nKSwgYWN0aXZpdHlMaW5rID0gXCIvYWN0aXZpdHkvXCIuY29uY2F0KGFjdGl2aXR5SWQpO1xuICAgICAgICB2YXIgdG9hc3REYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB0cmFuc2FjdGlvbnNEYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7fSk7XG4gICAgICAgICgwLCB2dWVfMS5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KFwiL2FjdGl2aXR5L1wiLmNvbmNhdChhY3Rpdml0eUlkLCBcIi90cmFuc2FjdGlvbnMvcGFnZS8xXCIpKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odHJhbnNhY3Rpb25zRGF0YSwgcmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzLnRvYXN0Lm1lc3NhZ2UgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gcHJvcHMudG9hc3QudHlwZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHByb3BzLnRvYXN0Lm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0sIDUwMDApO1xuICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfSk7XG4gICAgICAgIGZ1bmN0aW9uIGhhbmRsZU5hdmlnYXRlKHBhdGgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gcGF0aDtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBmZXRjaExpc3RpbmdzKGFjdGl2ZV9wYWdlKSB7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAuZ2V0KFwiL2FjdGl2aXR5L1wiLmNvbmNhdChhY3Rpdml0eUlkLCBcIi90cmFuc2FjdGlvbnMvcGFnZS9cIikgKyBhY3RpdmVfcGFnZSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0cmFuc2FjdGlvbnNEYXRhLCByZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIFByb3ZpZGVcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdwYXJlbnRJdGVtSWQnLCBhY3Rpdml0eUlkKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEJyZWFkY3J1bWIgZGF0YVxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIGJyZWFkY3J1bWJEYXRhID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBsYW5ndWFnZS5hY3Rpdml0aWVzX2xhbmcueW91cl9hY3Rpdml0aWVzLFxuICAgICAgICAgICAgICAgIGxpbms6ICcvYWN0aXZpdGllcycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBhY3Rpdml0eVRpdGxlLFxuICAgICAgICAgICAgICAgIGxpbms6IGFjdGl2aXR5TGluayxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGxhbmd1YWdlLmNvbW1vbl9sYW5nLnRyYW5zYWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgbGluazogJycsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnJlYWRjcnVtYkRhdGE6IGJyZWFkY3J1bWJEYXRhLFxuICAgICAgICAgICAgYWN0aXZpdHlMaW5rOiBhY3Rpdml0eUxpbmssXG4gICAgICAgICAgICBkYXRlRm9ybWF0OiBkYXRlRm9ybWF0XzEuZGVmYXVsdCxcbiAgICAgICAgICAgIHRyYW5zYWN0aW9uc0RhdGE6IHRyYW5zYWN0aW9uc0RhdGEsXG4gICAgICAgICAgICBnZXRBY3Rpdml0eVRpdGxlOiB0aXRsZV8xLmRlZmF1bHQsXG4gICAgICAgICAgICBmZXRjaExpc3RpbmdzOiBmZXRjaExpc3RpbmdzLFxuICAgICAgICAgICAgdG9hc3REYXRhOiB0b2FzdERhdGEsXG4gICAgICAgICAgICBkZWxldGVWYWx1ZTogZGVsZXRlVmFsdWUsXG4gICAgICAgICAgICBkZWxldGVUb2dnbGU6IGRlbGV0ZVRvZ2dsZSxcbiAgICAgICAgICAgIGhhbmRsZU5hdmlnYXRlOiBoYW5kbGVOYXZpZ2F0ZSxcbiAgICAgICAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1RyYW5zYWN0aW9uQWlkVHlwZScsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogW09iamVjdCwgU3RyaW5nXSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIGF0RGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHZhciB0eXBlID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhdERhdGE6IGF0RGF0YSxcbiAgICAgICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgICAgICBsYW5ndWFnZTogbGFuZ3VhZ2UsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdUcmFuc2FjdGlvbkRlc2NyaXB0aW9uJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgdGREYXRhID0gZGF0YS52YWx1ZTtcbiAgICAgICAgdmFyIHR5cGUgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgcmV0dXJuIHsgdGREYXRhOiB0ZERhdGEsIHR5cGU6IHR5cGUsIGxhbmd1YWdlOiBsYW5ndWFnZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnVHJhbnNhY3Rpb25EaXNidXJzZW1lbnRDaGFubmVsJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgY29kZSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHZhciB0eXBlID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHJldHVybiB7IGNvZGU6IGNvZGUsIHR5cGU6IHR5cGUsIGxhbmd1YWdlOiBsYW5ndWFnZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnVHJhbnNhY3Rpb25GaW5hbmNlVHlwZScsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogW09iamVjdCwgU3RyaW5nXSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIGZpbmFuY2VEYXRhID0gZGF0YS52YWx1ZTtcbiAgICAgICAgdmFyIHR5cGUgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgcmV0dXJuIHsgZmluYW5jZURhdGE6IGZpbmFuY2VEYXRhLCB0eXBlOiB0eXBlLCBsYW5ndWFnZTogbGFuZ3VhZ2UgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1RyYW5zYWN0aW9uRmxvd1R5cGUnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3QsIFN0cmluZ10sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciBmbG93RGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHZhciB0eXBlID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHJldHVybiB7IGZsb3dEYXRhOiBmbG93RGF0YSwgdHlwZTogdHlwZSwgbGFuZ3VhZ2U6IGxhbmd1YWdlIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdUcmFuc2FjdGlvblByb3ZpZGVyT3JnYW5pc2F0aW9uJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgUG9EYXRhID0gZGF0YS52YWx1ZTtcbiAgICAgICAgdmFyIHR5cGUgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgcmV0dXJuIHsgUG9EYXRhOiBQb0RhdGEsIHR5cGU6IHR5cGUsIGxhbmd1YWdlOiBsYW5ndWFnZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnVHJhbnNhY3Rpb25SZWNlaXZlck9yZ2FuaXNhdGlvbicsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogW09iamVjdCwgU3RyaW5nXSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIFBvRGF0YSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHZhciB0eXBlID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHJldHVybiB7IFBvRGF0YTogUG9EYXRhLCB0eXBlOiB0eXBlLCBsYW5ndWFnZTogbGFuZ3VhZ2UgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1RyYW5zYWN0aW9uUmVjaXBpZW50Q291bnRyeScsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogW09iamVjdCwgU3RyaW5nXSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIGNvdW50cnkgPSBkYXRhLnZhbHVlO1xuICAgICAgICB2YXIgdHlwZSA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyBjb3VudHJ5OiBjb3VudHJ5LCB0eXBlOiB0eXBlLCBsYW5ndWFnZTogbGFuZ3VhZ2UgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1RyYW5zYWN0aW9uUmVjaXBpZW50UmVnaW9uJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgY291bnRyeSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHZhciB0eXBlID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHJldHVybiB7IGNvdW50cnk6IGNvdW50cnksIHR5cGU6IHR5cGUsIGxhbmd1YWdlOiBsYW5ndWFnZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnVHJhbnNhY3Rpb25TZWN0b3InLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3QsIFN0cmluZ10sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciB0eXBlID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3R5cGVzJyk7XG4gICAgICAgIHZhciBzZWN0b3IgPSBkYXRhLnZhbHVlO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2VjdG9yOiBzZWN0b3IsXG4gICAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgICAgbGFuZ3VhZ2U6IGxhbmd1YWdlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnVHJhbnNhY3Rpb25UaWVkU3RhdHVzJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgdHNEYXRhID0gZGF0YS52YWx1ZTtcbiAgICAgICAgdmFyIHR5cGUgPSAoMCwgdnVlXzEuaW5qZWN0KSgndHlwZXMnKTtcbiAgICAgICAgcmV0dXJuIHsgdHNEYXRhOiB0c0RhdGEsIHR5cGU6IHR5cGUsIGxhbmd1YWdlOiBsYW5ndWFnZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBkYXRlRm9ybWF0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vLi4vLi4vLi4vLi4vY29tcG9zYWJsZS9kYXRlRm9ybWF0XCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnVHJhbnNhY3Rpb25EYXRlJyxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0LCBTdHJpbmddLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgZGF0YSA9ICgwLCB2dWVfMS50b1JlZnMpKHByb3BzKS5kYXRhO1xuICAgICAgICB2YXIgZGF0ZSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHJldHVybiB7IGRhdGU6IGRhdGUsIGRhdGVGb3JtYXQ6IGRhdGVGb3JtYXRfMS5kZWZhdWx0LCBsYW5ndWFnZTogbGFuZ3VhZ2UgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1RyYW5zYWN0aW9uVHlwZScsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdHlwZTogW09iamVjdCwgU3RyaW5nXSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIGRhdGEgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcykuZGF0YTtcbiAgICAgICAgdmFyIGNvZGUgPSBkYXRhLnZhbHVlO1xuICAgICAgICB2YXIgdHlwZSA9ICgwLCB2dWVfMS5pbmplY3QpKCd0eXBlcycpO1xuICAgICAgICByZXR1cm4geyBjb2RlOiBjb2RlLCB0eXBlOiB0eXBlLCBsYW5ndWFnZTogbGFuZ3VhZ2UgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgZGF0ZUZvcm1hdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLy4uLy4uLy4uLy4uL2NvbXBvc2FibGUvZGF0ZUZvcm1hdFwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgbmFtZTogJ1RyYW5zYWN0aW9uVmFsdWUnLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFtPYmplY3QsIFN0cmluZ10sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciBkYXRhID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmRhdGE7XG4gICAgICAgIHZhciB2YWx1ZSA9IGRhdGEudmFsdWU7XG4gICAgICAgIHJldHVybiB7IHZhbHVlOiB2YWx1ZSwgZGF0ZUZvcm1hdDogZGF0ZUZvcm1hdF8xLmRlZmF1bHQsIGxhbmd1YWdlOiBsYW5ndWFnZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIExvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi4vLi4vY29tcG9uZW50cy9Mb2FkZXIudnVlXCIpKTtcbnZhciBQYWdlVGl0bGVfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvUGFnZVRpdGxlLnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnQXVkaXRMaXN0aW5nJyxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIGF1ZGl0RGF0YSA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe30pO1xuICAgICAgICB2YXIgaXNFbXB0eSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGlzTG9hZGVyVmlzaWJsZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIGZldGNoQXVkaXRMaXN0KDEpO1xuICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfSk7XG4gICAgICAgIGZ1bmN0aW9uIGZldGNoQXVkaXRMaXN0KGFjdGl2ZV9wYWdlLCBmaWx0ZXJlZCkge1xuICAgICAgICAgICAgaWYgKGZpbHRlcmVkID09PSB2b2lkIDApIHsgZmlsdGVyZWQgPSBmYWxzZTsgfVxuICAgICAgICAgICAgdmFyIHJvdXRlID0gXCIvYXVkaXQvcGFnZS9cIi5jb25jYXQoZmlsdGVyZWQgPyAnMScgOiBhY3RpdmVfcGFnZSk7XG4gICAgICAgICAgICB2YXIgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldChyb3V0ZSwgeyBwYXJhbXM6IHBhcmFtcyB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGF1ZGl0RGF0YSwgcmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgaXNFbXB0eS52YWx1ZSA9IHJlc3BvbnNlLmRhdGEgPyBmYWxzZSA6IHRydWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBsYW5ndWFnZTogbGFuZ3VhZ2UsIGF1ZGl0RGF0YTogYXVkaXREYXRhLCBpc0VtcHR5OiBpc0VtcHR5LCBpc0xvYWRlclZpc2libGU6IGlzTG9hZGVyVmlzaWJsZSwgZmV0Y2hBdWRpdExpc3Q6IGZldGNoQXVkaXRMaXN0LCBMb2FkZXI6IExvYWRlcl92dWVfMS5kZWZhdWx0LCBQYWdlVGl0bGU6IFBhZ2VUaXRsZV92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBtb21lbnRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwibW9tZW50XCIpKTtcbnZhciBzcGlubmVyTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NwaW5uZXJMb2FkZXIudnVlXCIpKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnRGFzaGJvYXJkR3JhcGgnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGN1cnJlbnRWaWV3OiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBsYWJlbHMgPSAoMCwgdnVlXzIucmVmKShbXSk7XG4gICAgICAgIHZhciByb3VuZGVkTGFiZWxzID0gKDAsIHZ1ZV8yLnJlZikoW10pO1xuICAgICAgICB2YXIgc2hvd0dyYXBoTG9hZGVyID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3Nob3dHcmFwaExvYWRlcicpO1xuICAgICAgICB2YXIgZ3JhcGhBbW91bnQgPSAoMCwgdnVlXzIuaW5qZWN0KSgnZ3JhcGhBbW91bnQnKTtcbiAgICAgICAgdmFyIHlheGlzVGlja3MgPSAoMCwgdnVlXzIucmVmKShbXSk7XG4gICAgICAgIHZhciBtYXhWYWx1ZSA9ICgwLCB2dWVfMi5yZWYpKDApO1xuICAgICAgICB2YXIgY2hhcnQgPSAoMCwgdnVlXzIucmVmKSh7fSk7XG4gICAgICAgIHZhciBncmFwaENvbG9yID0gJyMxNzk5N0InO1xuICAgICAgICB2YXIgdG9vbHRpcFRleHQgPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocHJvcHMuY3VycmVudFZpZXcpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdwdWJsaXNoZXInOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1RvdGFsIG5vLiBvZiBwdWJsaXNoZXIgcmVnaXN0cmF0aW9uJztcbiAgICAgICAgICAgICAgICBjYXNlICdhY3Rpdml0eSc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnVG90YWwgbm8uIG9mIGFjdGl2aXRpZXMgYWRkZWQnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnVG90YWwgbnVtYmVyIG9mIHVzZXInO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGNoYXJ0T3B0aW9ucyA9ICgwLCB2dWVfMi5jb21wdXRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gKHtcbiAgICAgICAgICAgIGNoYXJ0OiB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgICAgICAgICAgIG9mZnNldFk6IDUsXG4gICAgICAgICAgICAgICAgem9vbToge1xuICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgeGF4aXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogNTAsIC8vIEFkanVzdCB0aGUgbGVmdCBwYWRkaW5nIHZhbHVlIGFzIG5lZWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdG9vbGJhcjoge1xuICAgICAgICAgICAgICAgICAgICBzaG93OiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1hcmtlcnM6IHtcbiAgICAgICAgICAgICAgICBzaXplOiBncmFwaEFtb3VudC52YWx1ZS5sZW5ndGggPiAxID8gMCA6IDIsXG4gICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDAsXG4gICAgICAgICAgICAgICAgY29sb3JzOiBbJyMxNzk5N0InXSxcbiAgICAgICAgICAgICAgICBob3Zlcjoge1xuICAgICAgICAgICAgICAgICAgICBzaXplOiA2LCAvLyBDdXN0b21pemUgdGhlIG1hcmtlciBzaXplIG9uIGhvdmVyXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdHJva2U6IHtcbiAgICAgICAgICAgICAgICBjdXJ2ZTogJ3N0cmFpZ2h0JyxcbiAgICAgICAgICAgICAgICB3aWR0aDogMSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb2xvcnM6IFtncmFwaENvbG9yXSxcbiAgICAgICAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgICAgICAgICBjdXN0b206IGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgc2VyaWVzID0gX2Euc2VyaWVzLCBzZXJpZXNJbmRleCA9IF9hLnNlcmllc0luZGV4LCBkYXRhUG9pbnRJbmRleCA9IF9hLmRhdGFQb2ludEluZGV4LCB3ID0gX2EudztcbiAgICAgICAgICAgICAgICAgICAgdmFyIGdldERheSA9IGZ1bmN0aW9uIChmb3JtYXR0ZWREYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDAsIG1vbWVudF8xLmRlZmF1bHQpKGZvcm1hdHRlZERhdGUpLmZvcm1hdCgnZGRkIE1NTSBERCBZWVlZJyk7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcIjxkaXYgY2xhc3M9XFxcInAtNFxcXCI+XFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInRleHQtbi00MFxcXCI+IFwiLmNvbmNhdChnZXREYXkody5nbG9iYWxzLmNhdGVnb3J5TGFiZWxzW2RhdGFQb2ludEluZGV4XSksIFwiPC9kaXY+XFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImZsZXggdGV4dC1uLTUwIHNwYWNlLXgtNCBqdXN0aWZ5LWJldHdlZW5cXFwiPjxkaXY+XCIpLmNvbmNhdCh0b29sdGlwVGV4dC52YWx1ZSwgXCI8L2Rpdj5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZm9udC1ib2xkXFxcIj5cIikuY29uY2F0KHNlcmllc1tzZXJpZXNJbmRleF1bZGF0YVBvaW50SW5kZXhdLCBcIjwvZGl2PjwvZGl2PlxcbiAgICAgICAgICAgICAgPC9kaXY+XCIpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeGF4aXM6IHtcbiAgICAgICAgICAgICAgICB0aWNrQW1vdW50OiAzLFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6IHtcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogMTAwLFxuICAgICAgICAgICAgICAgICAgICByaWdodDogMjAsIC8vIEluY3JlYXNlIHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSBsYXN0IHRpY2sgYW5kIHRoZSByaWdodCBlZGdlIG9mIHRoZSBjaGFydFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbGFiZWxzOiB7XG4gICAgICAgICAgICAgICAgICAgIHJvdGF0ZTogMCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHlheGlzOiB7XG4gICAgICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgICAgIG1heDogbWF4VmFsdWUudmFsdWUgKyAzLFxuICAgICAgICAgICAgICAgIHRpY2tBbW91bnQ6IG1heFZhbHVlLnZhbHVlID4gNCA/IDUgOiBtYXhWYWx1ZS52YWx1ZSArIDMsXG4gICAgICAgICAgICAgICAgLy8gQWRkaXRpb25hbCBzcGFjaW5nIG9wdGlvbnNcbiAgICAgICAgICAgICAgICBvZmZzZXRZOiAxMCxcbiAgICAgICAgICAgICAgICBsYWJlbHM6IHtcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WTogMTAsXG4gICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlcjogZnVuY3Rpb24gKHZhbHVlLCBpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscy52YWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnQudmFsdWUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfYiA9IChfYSA9IGNoYXJ0LnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2hhcnQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi53Lmdsb2JhbHMueUF4aXNTY2FsZVswXS5yZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcm91bmRlZExhYmVscy52YWx1ZSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgY291bnQgPSAwOyBjb3VudCA8IGxhYmVscy52YWx1ZS5sZW5ndGg7IGNvdW50KyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJvdW5kZWRMYWJlbHMudmFsdWUuaW5jbHVkZXMoTWF0aC5yb3VuZChsYWJlbHMudmFsdWVbY291bnRdKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91bmRlZExhYmVscy52YWx1ZS5wdXNoKE1hdGgucm91bmQobGFiZWxzLnZhbHVlW2NvdW50XSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByb3VuZGVkTGFiZWxzLnZhbHVlW2luZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7IH0pO1xuICAgICAgICB2YXIgc2VyaWVzID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKShbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ0Rlc2t0b3BzJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnbGluZScsXG4gICAgICAgICAgICAgICAgZGF0YTogZ3JhcGhBbW91bnQudmFsdWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdKTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBncmFwaEFtb3VudC52YWx1ZTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgbWF4VmFsdWUudmFsdWUgPSAwO1xuICAgICAgICAgICAgeWF4aXNUaWNrcy52YWx1ZS5sZW5ndGggPSAwO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBncmFwaEFtb3VudC52YWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChtYXhWYWx1ZS52YWx1ZSA8IGdyYXBoQW1vdW50LnZhbHVlW2ldWyd5J10pIHtcbiAgICAgICAgICAgICAgICAgICAgbWF4VmFsdWUudmFsdWUgPSBncmFwaEFtb3VudC52YWx1ZVtpXVsneSddO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlcmllc1snZGF0YSddID0gZ3JhcGhBbW91bnQudmFsdWU7XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgbGFiZWxzOiBsYWJlbHMsIHJvdW5kZWRMYWJlbHM6IHJvdW5kZWRMYWJlbHMsIHNob3dHcmFwaExvYWRlcjogc2hvd0dyYXBoTG9hZGVyLCBncmFwaEFtb3VudDogZ3JhcGhBbW91bnQsIHlheGlzVGlja3M6IHlheGlzVGlja3MsIG1heFZhbHVlOiBtYXhWYWx1ZSwgY2hhcnQ6IGNoYXJ0LCBncmFwaENvbG9yOiBncmFwaENvbG9yLCBwcm9wczogcHJvcHMsIHRvb2x0aXBUZXh0OiB0b29sdGlwVGV4dCwgY2hhcnRPcHRpb25zOiBjaGFydE9wdGlvbnMsIHNlcmllczogc2VyaWVzLCBzcGlubmVyTG9hZGVyOiBzcGlubmVyTG9hZGVyX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBUYWJsZVBhZ2luYXRpb25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVGFibGVQYWdpbmF0aW9uLnZ1ZVwiKSk7XG52YXIgdXRpbHNfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3V0aWxzXCIpO1xudmFyIFRhYmxlTG9hZGVyQ29tcG9uZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RhYmxlTG9hZGVyQ29tcG9uZW50LnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnRGFzaGJvYXJkTGlzdFNlY3Rpb24nLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGN1cnJlbnRWaWV3OiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdGFibGVEYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBbT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0YWJsZUhlYWRlcjoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHN0YXJ0RGF0ZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGVuZERhdGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBkYXRlVHlwZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBlbWl0czogWyd0YWJsZU5hdiddLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIF9iLCBfYztcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZSwgZW1pdCA9IF9hLmVtaXQ7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgYWN0aXZpdHlOYXZMaXN0ID0gW1xuICAgICAgICAgICAgeyBsYWJlbDogJ0FjdGl2aXR5IFN0YXR1cycsIGFwaVBhcmFtczogJ3N0YXR1cycgfSxcbiAgICAgICAgICAgIHsgbGFiZWw6ICdBY3Rpdml0eSBBZGRlZCcsIGFwaVBhcmFtczogJ21ldGhvZCcgfSxcbiAgICAgICAgICAgIHsgbGFiZWw6ICdBY3Rpdml0eSBDb21wbGV0aW9uJywgYXBpUGFyYW1zOiAnY29tcGxldGVuZXNzJyB9LFxuICAgICAgICBdO1xuICAgICAgICB2YXIgcHVibGlzaGVyTmF2TGlzdCA9IFtcbiAgICAgICAgICAgIHsgbGFiZWw6ICdQdWJsaXNoZXIgVHlwZScsIGFwaVBhcmFtczogJ3B1Ymxpc2hlci10eXBlJyB9LFxuICAgICAgICAgICAgeyBsYWJlbDogJ0RhdGEgTGljZW5jZScsIGFwaVBhcmFtczogJ2RhdGEtbGljZW5zZScgfSxcbiAgICAgICAgICAgIHsgbGFiZWw6ICdDb3VudHJ5JywgYXBpUGFyYW1zOiAnY291bnRyeScgfSxcbiAgICAgICAgICAgIHsgbGFiZWw6ICdSZWdpc3RyYXRpb24gVHlwZScsIGFwaVBhcmFtczogJ3JlZ2lzdHJhdGlvbi10eXBlJyB9LFxuICAgICAgICAgICAgeyBsYWJlbDogJ1NldHVwIENvbXBsZXRlbmVzcycsIGFwaVBhcmFtczogJ3NldHVwJyB9LFxuICAgICAgICBdO1xuICAgICAgICB2YXIgY3VycmVudHBhZ2UgPSAoMCwgdnVlXzIucmVmKSgxKTtcbiAgICAgICAgdmFyIHJlc2V0cGFnaW5hdGlvbiA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGZpbHRlciA9ICgwLCB2dWVfMi5yZWYpKHsgb3JkZXJCeTogJycsIHNvcnQ6ICcnIH0pO1xuICAgICAgICB2YXIgc29ydEVsZW1lbnQgPSAoMCwgdnVlXzIucmVmKSh7IGxhYmVsOiAnJywgYXBpUGFyYW1zOiAnJyB9KTtcbiAgICAgICAgdmFyIHVzZXJOYXZsaXN0ID0gW3sgbGFiZWw6ICd1c2VyJywgYXBpUGFyYW1zOiAnJyB9XTtcbiAgICAgICAgdmFyIGN1cnJlbnRJdGVtID0gKDAsIHZ1ZV8yLnJlZikoe1xuICAgICAgICAgICAgbGFiZWw6ICdQdWJsaXNoZXIgVHlwZScsXG4gICAgICAgICAgICBhcGlQYXJhbXM6ICdwdWJsaXNoZXItdHlwZScsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgY3VycmVudE5hdkxpc3QgPSAoMCwgdnVlXzIucmVmKShwdWJsaXNoZXJOYXZMaXN0KTtcbiAgICAgICAgdmFyIHRpdGxlID0gKDAsIHZ1ZV8yLnJlZikoKF9iID0gY3VycmVudE5hdkxpc3QudmFsdWVbMF0pID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5sYWJlbCk7XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZldGNoVGFibGVEYXRhKGN1cnJlbnROYXZMaXN0LnZhbHVlWzBdKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBzb3J0VGFibGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBmZXRjaFRhYmxlRGF0YShjdXJyZW50SXRlbS52YWx1ZSwgZmFsc2UpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgdHJpZ2dlcnBhZ2luYXRpb24gPSBmdW5jdGlvbiAocGFnZSkge1xuICAgICAgICAgICAgY3VycmVudHBhZ2UudmFsdWUgPSBwYWdlO1xuICAgICAgICAgICAgcmVzZXRwYWdpbmF0aW9uLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICBmZXRjaFRhYmxlRGF0YShjdXJyZW50SXRlbS52YWx1ZSwgZmFsc2UpO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZpbHRlci52YWx1ZTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmVzZXRwYWdpbmF0aW9uLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGN1cnJlbnRwYWdlLnZhbHVlID0gMTtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHByb3BzLmN1cnJlbnRWaWV3OyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICBjdXJyZW50cGFnZS52YWx1ZSA9IDE7XG4gICAgICAgICAgICBpZiAodmFsdWUgPT09ICdhY3Rpdml0eScpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50SXRlbS52YWx1ZSA9IHsgbGFiZWw6ICdBY3Rpdml0eSBTdGF0dXMnLCBhcGlQYXJhbXM6ICdzdGF0dXMnIH07XG4gICAgICAgICAgICAgICAgY3VycmVudE5hdkxpc3QudmFsdWUgPSBhY3Rpdml0eU5hdkxpc3Q7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PT0gJ3B1Ymxpc2hlcicpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50SXRlbS52YWx1ZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdQdWJsaXNoZXIgVHlwZScsXG4gICAgICAgICAgICAgICAgICAgIGFwaVBhcmFtczogJ3B1Ymxpc2hlci10eXBlJyxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGN1cnJlbnROYXZMaXN0LnZhbHVlID0gcHVibGlzaGVyTmF2TGlzdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGN1cnJlbnROYXZMaXN0LnZhbHVlID0gdXNlck5hdmxpc3Q7XG4gICAgICAgICAgICAgICAgY3VycmVudEl0ZW0udmFsdWUgPSB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAndXNlcicsXG4gICAgICAgICAgICAgICAgICAgIGFwaVBhcmFtczogJycsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZldGNoVGFibGVEYXRhKGN1cnJlbnROYXZMaXN0LnZhbHVlWzBdKTtcbiAgICAgICAgICAgIGFjdGl2ZUNsYXNzLnZhbHVlID0gKF9hID0gY3VycmVudE5hdkxpc3QudmFsdWVbMF0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sYWJlbDtcbiAgICAgICAgICAgIHRpdGxlLnZhbHVlID0gKF9iID0gY3VycmVudE5hdkxpc3QudmFsdWVbMF0pID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5sYWJlbDtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBzaG93Tm9EYXRhQ29tcG9uZW50ID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgcmV0dXJuIChwcm9wcy50YWJsZURhdGEubGVuZ3RoID09PSAwIHx8XG4gICAgICAgICAgICAgICAgKCEodGl0bGUudmFsdWUgPT09ICdSZWdpc3RyYXRpb24gVHlwZScgfHxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGUudmFsdWUgPT09ICdTZXR1cCBDb21wbGV0ZW5lc3MnKSAmJlxuICAgICAgICAgICAgICAgICAgICAoKF9iID0gKF9hID0gcHJvcHMudGFibGVEYXRhKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGF0YSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmxlbmd0aCkgPT09IDApKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBhY3RpdmVDbGFzcyA9ICgwLCB2dWVfMi5yZWYpKChfYyA9IGN1cnJlbnROYXZMaXN0LnZhbHVlWzBdKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MubGFiZWwpO1xuICAgICAgICB2YXIgTmF2aWdhdGVXaXRoRmlsdGVyID0gZnVuY3Rpb24gKHBhZ2UsIGtleSwgdmFsdWUpIHtcbiAgICAgICAgICAgIGlmICghIXByb3BzLnN0YXJ0RGF0ZSAmJiAhIXByb3BzLmVuZERhdGUpIHtcbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IFwiL1wiLmNvbmNhdChwYWdlLCBcIj9cIikuY29uY2F0KGtleSwgXCI9XCIpLmNvbmNhdCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBcIi9cIi5jb25jYXQocGFnZSwgXCI/XCIpLmNvbmNhdChrZXksIFwiPVwiKS5jb25jYXQodmFsdWUpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZmV0Y2hUYWJsZURhdGEgPSBmdW5jdGlvbiAoaXRlbSwgdGFiQ2hhbmdlKSB7XG4gICAgICAgICAgICBpZiAodGFiQ2hhbmdlID09PSB2b2lkIDApIHsgdGFiQ2hhbmdlID0gdHJ1ZTsgfVxuICAgICAgICAgICAgYWN0aXZlQ2xhc3MudmFsdWUgPSBpdGVtID09PSBudWxsIHx8IGl0ZW0gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGl0ZW0ubGFiZWw7XG4gICAgICAgICAgICB0aXRsZS52YWx1ZSA9IGl0ZW0gPT09IG51bGwgfHwgaXRlbSA9PT0gdm9pZCAwID8gdm9pZCAwIDogaXRlbS5sYWJlbDtcbiAgICAgICAgICAgIHNvcnRFbGVtZW50LnZhbHVlID0gaXRlbTtcbiAgICAgICAgICAgIGVtaXQoJ3RhYmxlTmF2JywgaXRlbSwgZmlsdGVyLCBjdXJyZW50cGFnZS52YWx1ZSwgdGFiQ2hhbmdlKTtcbiAgICAgICAgICAgIHJlc2V0cGFnaW5hdGlvbi52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgdG9nZ2xlU29ydCA9IGZ1bmN0aW9uIChvcmRlcikge1xuICAgICAgICAgICAgZmlsdGVyLnZhbHVlLnNvcnQgPT09ICdhc2MnXG4gICAgICAgICAgICAgICAgPyAoZmlsdGVyLnZhbHVlLnNvcnQgPSAnZGVzYycpXG4gICAgICAgICAgICAgICAgOiAoZmlsdGVyLnZhbHVlLnNvcnQgPSAnYXNjJyk7XG4gICAgICAgICAgICBmaWx0ZXIudmFsdWUub3JkZXJCeSA9IG9yZGVyO1xuICAgICAgICAgICAgc29ydFRhYmxlKCk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjb21wbGV0ZU5lc3MgPSAoMCwgdnVlXzIuaW5qZWN0KSgnY29tcGxldGVOZXNzJyk7XG4gICAgICAgIHZhciByZWdpc3RyYXRpb25UeXBlID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3JlZ2lzdHJhdGlvblR5cGUnKTtcbiAgICAgICAgdmFyIHNob3dUYWJsZUxvYWRlciA9ICgwLCB2dWVfMi5pbmplY3QpKCdzaG93VGFibGVMb2FkZXInKTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgcHJvcHM6IHByb3BzLCBlbWl0OiBlbWl0LCBhY3Rpdml0eU5hdkxpc3Q6IGFjdGl2aXR5TmF2TGlzdCwgcHVibGlzaGVyTmF2TGlzdDogcHVibGlzaGVyTmF2TGlzdCwgY3VycmVudHBhZ2U6IGN1cnJlbnRwYWdlLCByZXNldHBhZ2luYXRpb246IHJlc2V0cGFnaW5hdGlvbiwgZmlsdGVyOiBmaWx0ZXIsIHNvcnRFbGVtZW50OiBzb3J0RWxlbWVudCwgdXNlck5hdmxpc3Q6IHVzZXJOYXZsaXN0LCBjdXJyZW50SXRlbTogY3VycmVudEl0ZW0sIGN1cnJlbnROYXZMaXN0OiBjdXJyZW50TmF2TGlzdCwgdGl0bGU6IHRpdGxlLCBzb3J0VGFibGU6IHNvcnRUYWJsZSwgdHJpZ2dlcnBhZ2luYXRpb246IHRyaWdnZXJwYWdpbmF0aW9uLCBzaG93Tm9EYXRhQ29tcG9uZW50OiBzaG93Tm9EYXRhQ29tcG9uZW50LCBhY3RpdmVDbGFzczogYWN0aXZlQ2xhc3MsIE5hdmlnYXRlV2l0aEZpbHRlcjogTmF2aWdhdGVXaXRoRmlsdGVyLCBmZXRjaFRhYmxlRGF0YTogZmV0Y2hUYWJsZURhdGEsIHRvZ2dsZVNvcnQ6IHRvZ2dsZVNvcnQsIGNvbXBsZXRlTmVzczogY29tcGxldGVOZXNzLCByZWdpc3RyYXRpb25UeXBlOiByZWdpc3RyYXRpb25UeXBlLCBzaG93VGFibGVMb2FkZXI6IHNob3dUYWJsZUxvYWRlciwgUGFnaW5hdGlvbjogVGFibGVQYWdpbmF0aW9uX3Z1ZV8xLmRlZmF1bHQsIHRydW5jYXRlVGV4dDogdXRpbHNfMS50cnVuY2F0ZVRleHQsIFRhYmxlTG9hZGVyQ29tcG9uZW50OiBUYWJsZUxvYWRlckNvbXBvbmVudF92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBEYXNoYm9hcmRTdGF0c1NlY3Rpb25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vRGFzaGJvYXJkU3RhdHNTZWN0aW9uLnZ1ZVwiKSk7XG52YXIgRGFzaGJvYXJkTGlzdFNlY3Rpb25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vRGFzaGJvYXJkTGlzdFNlY3Rpb24udnVlXCIpKTtcbnZhciBEYXRlUmFuZ2VXaWRnZXRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvRGF0ZVJhbmdlV2lkZ2V0LnZ1ZVwiKSk7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgbW9tZW50XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1vbWVudFwiKSk7XG52YXIgdXRpbHNfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3V0aWxzXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0Rhc2hib2FyZFBhZ2UnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIG9sZGVzdERhdGVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBjdXJyZW50TmF2ID0gKDAsIHZ1ZV8yLnJlZikoe1xuICAgICAgICAgICAgbGFiZWw6ICdQdWJsaXNoZXIgVHlwZScsXG4gICAgICAgICAgICBhcGlQYXJhbXM6ICdwdWJsaXNoZXItdHlwZScsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgdGFibGVEYXRhID0gKDAsIHZ1ZV8yLnJlZikoe30pO1xuICAgICAgICB2YXIgRGF0ZUxhYmVsID0gKDAsIHZ1ZV8yLnJlZikoJ1JlZ2lzdGVyZWQgZGF0ZTonKTtcbiAgICAgICAgdmFyIHN0YXJ0RGF0ZSA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIGVuZERhdGUgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciBncmFwaEFtb3VudCA9ICgwLCB2dWVfMi5yZWYpKFtdKTtcbiAgICAgICAgdmFyIGdyYXBoVG90YWwgPSAoMCwgdnVlXzIucmVmKSgwKTtcbiAgICAgICAgdmFyIHNob3dUYWJsZUxvYWRlciA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNob3dHcmFwaExvYWRlciA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGRhdGVUeXBlID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICB2YXIgZGF0ZUxhYmVsID0ge1xuICAgICAgICAgICAgcHVibGlzaGVyOiAnUmVnaXN0ZXJlZCBkYXRlOicsXG4gICAgICAgICAgICBhY3Rpdml0eTogJ0FjdGl2aXR5IEFkZGVkIG9uOicsXG4gICAgICAgICAgICB1c2VyOiAnVXNlciBDcmVhdGVkIERhdGU6JyxcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGN1cnJlbnRWaWV3ID0gKDAsIHZ1ZV8yLnJlZikoJ3B1Ymxpc2hlcicpO1xuICAgICAgICB2YXIgY29tcGxldGVOZXNzID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIHJlZ2lzdHJhdGlvblR5cGUgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgaGFuZGxlQ2hhbmdlVGFibGVOYXYgPSBmdW5jdGlvbiAoaXRlbSwgZmlsdGVyLCBwYWdlLCB0YWJDaGFuZ2UpIHtcbiAgICAgICAgICAgIGlmICh0YWJDaGFuZ2UgPT09IHZvaWQgMCkgeyB0YWJDaGFuZ2UgPSB0cnVlOyB9XG4gICAgICAgICAgICBpZiAodGFiQ2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgZmlsdGVyLnZhbHVlLm9yZGVyQnkgPSAnJztcbiAgICAgICAgICAgICAgICBmaWx0ZXIudmFsdWUuc29ydCA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY3VycmVudE5hdi52YWx1ZSA9IGl0ZW07XG4gICAgICAgICAgICBmZXRjaFRhYmxlRGF0YShmaWx0ZXIudmFsdWUsIHBhZ2UpO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzZXREYXRlUmFuZ2VEYXRlKCcnLCAnJyk7XG4gICAgICAgICAgICBmZXRjaFRhYmxlRGF0YSgpO1xuICAgICAgICAgICAgZmV0Y2hHcmFwaERhdGEoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgdmFyIGRvd25sb2FkUmVwb3J0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICAgICAgICAgIGlmIChzdGFydERhdGUudmFsdWUgJiYgZW5kRGF0ZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ3N0YXJ0X2RhdGUnLCBzdGFydERhdGUudmFsdWUpO1xuICAgICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ2VuZF9kYXRlJywgZW5kRGF0ZS52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAuZ2V0KFwiL2Rhc2hib2FyZC9cIi5jb25jYXQoY3VycmVudFZpZXcudmFsdWUsIFwiL2Rvd25sb2FkXCIpLCB7IHBhcmFtczogcGFyYW1zIH0pXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIHZhciBibG9iID0gbmV3IEJsb2IoW3Jlc3BvbnNlXSwge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYXBwbGljYXRpb24vY3N2JyxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgICAgICBsaW5rLmhyZWYgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgICAgICAgICBsaW5rLmRvd25sb2FkID0gXCJcIi5jb25jYXQoY3VycmVudFZpZXcudmFsdWUsIFwiLXJlcG9ydC5jc3ZcIik7XG4gICAgICAgICAgICAgICAgbGluay5jbGljaygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBncmFwaERhdGFGb3JtYXR0ZXIgPSBmdW5jdGlvbiAoZ3JhcGhEYXRhKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBkYXRlIGluIGdyYXBoRGF0YSkge1xuICAgICAgICAgICAgICAgIHZhciBkYXRhID0ge1xuICAgICAgICAgICAgICAgICAgICB4OiAoMCwgbW9tZW50XzEuZGVmYXVsdCkoZGF0ZSkuZm9ybWF0KCdNTU0gREQgWVlZWScpLFxuICAgICAgICAgICAgICAgICAgICB5OiBncmFwaERhdGFbZGF0ZV0sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBncmFwaEFtb3VudC52YWx1ZS5wdXNoKGRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgZmV0Y2hHcmFwaERhdGEgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzaG93R3JhcGhMb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgdmFyIHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ3N0YXJ0X2RhdGUnLCBzdGFydERhdGUudmFsdWUpO1xuICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnZW5kX2RhdGUnLCBlbmREYXRlLnZhbHVlKTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5nZXQoXCIvZGFzaGJvYXJkL1wiLmNvbmNhdChjdXJyZW50Vmlldy52YWx1ZSwgXCIvY291bnQvXCIpLCB7IHBhcmFtczogcGFyYW1zIH0pXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIGdyYXBoQW1vdW50LnZhbHVlLmxlbmd0aCA9IDA7XG4gICAgICAgICAgICAgICAgZ3JhcGhUb3RhbC52YWx1ZSA9IHJlcy5kYXRhLmRhdGFbJ2NvdW50J107XG4gICAgICAgICAgICAgICAgZ3JhcGhEYXRhRm9ybWF0dGVyKHJlcy5kYXRhLmRhdGFbJ2dyYXBoJ10pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZmluYWxseShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc2hvd0dyYXBoTG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHNldERhdGVSYW5nZURhdGUgPSBmdW5jdGlvbiAoc3RhcnQsIGVuZCwgdHlwZSkge1xuICAgICAgICAgICAgaWYgKHR5cGUgPT09IHZvaWQgMCkgeyB0eXBlID0gJyc7IH1cbiAgICAgICAgICAgIHN0YXJ0RGF0ZS52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgZGF0ZVR5cGUudmFsdWUgPSB0eXBlO1xuICAgICAgICAgICAgaWYgKHN0YXJ0ICE9ICcxOTkwLTEyLTMxJykge1xuICAgICAgICAgICAgICAgIHN0YXJ0RGF0ZS52YWx1ZSA9IHN0YXJ0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZW5kRGF0ZS52YWx1ZSA9IGVuZDtcbiAgICAgICAgICAgIGlmIChjdXJyZW50Vmlldy52YWx1ZSAhPT0gJ3VzZXInKSB7XG4gICAgICAgICAgICAgICAgZmV0Y2hUYWJsZURhdGEoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZldGNoR3JhcGhEYXRhKCk7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gY3VycmVudFZpZXcudmFsdWU7IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIERhdGVMYWJlbC52YWx1ZSA9IChfYSA9IGRhdGVMYWJlbFtjdXJyZW50Vmlldy52YWx1ZV0pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGN1cnJlbnRWaWV3LnZhbHVlO1xuICAgICAgICAgICAgc3RhcnREYXRlLnZhbHVlID0gJyc7XG4gICAgICAgICAgICBlbmREYXRlLnZhbHVlID0gJyc7XG4gICAgICAgICAgICBmZXRjaEdyYXBoRGF0YSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGZldGNoVGFibGVEYXRhID0gZnVuY3Rpb24gKGZpbHRlciwgcGFnZSkge1xuICAgICAgICAgICAgaWYgKGZpbHRlciA9PT0gdm9pZCAwKSB7IGZpbHRlciA9IHsgb3JkZXJCeTogJycsIHNvcnQ6ICcnIH07IH1cbiAgICAgICAgICAgIGlmIChwYWdlID09PSB2b2lkIDApIHsgcGFnZSA9ICcxJzsgfVxuICAgICAgICAgICAgc2hvd1RhYmxlTG9hZGVyLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIHZhciBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgICAgICAgICB2YXIgYWN0aXZlVGFiID0gY3VycmVudE5hdi52YWx1ZVsnYXBpUGFyYW1zJ107XG4gICAgICAgICAgICBpZiAoZmlsdGVyLm9yZGVyQnkpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdvcmRlckJ5JywgKDAsIHV0aWxzXzEua2ViYWJDYXNlVG9TbmFrZWNhc2UpKGZpbHRlci5vcmRlckJ5KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdwYWdlJywgcGFnZSk7XG4gICAgICAgICAgICBpZiAoZmlsdGVyLnNvcnQpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdkaXJlY3Rpb24nLCBmaWx0ZXIuc29ydCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc3RhcnREYXRlLnZhbHVlICYmIGVuZERhdGUudmFsdWUgJiYgY3VycmVudE5hdi52YWx1ZS5sYWJlbCAhPT0gJ3VzZXInKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnc3RhcnRfZGF0ZScsIHN0YXJ0RGF0ZS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnZW5kX2RhdGUnLCBlbmREYXRlLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBhcGlVcmwgPSBcIi9kYXNoYm9hcmQvXCIuY29uY2F0KGN1cnJlbnRWaWV3LnZhbHVlLCBcIi9cIikuY29uY2F0KGFjdGl2ZVRhYik7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAuZ2V0KGFwaVVybCwgeyBwYXJhbXM6IHBhcmFtcyB9KVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2Q7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRWaWV3LnZhbHVlID09PSAncHVibGlzaGVyJykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aXZlVGFiICE9PSAnc2V0dXAnICYmIGFjdGl2ZVRhYiAhPT0gJ3JlZ2lzdHJhdGlvbi10eXBlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVEYXRhLnZhbHVlID0ge307XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGVtcERhdGEgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb2RlTGlzdCA9IChfYSA9IHJlc3BvbnNlLmRhdGEpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jb2RlTGlzdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvYmplY3RMZW5ndGggPSAoX2MgPSAoX2IgPSByZXNwb25zZS5kYXRhKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IucGFnaW5hdGVkRGF0YS5kYXRhLmxlbmd0aCkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb2JqZWN0TGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbUluUGFnaW5hdGVkRGF0YSA9IChfZCA9IHJlc3BvbnNlLmRhdGEpID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC5wYWdpbmF0ZWREYXRhLmRhdGFbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHB1Ymxpc2hlclR5cGVLZXkgPSBpdGVtSW5QYWdpbmF0ZWREYXRhWygwLCB1dGlsc18xLmtlYmFiQ2FzZVRvU25ha2VjYXNlKShhY3RpdmVUYWIpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wRGF0YS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGNvZGVMaXN0W3B1Ymxpc2hlclR5cGVLZXldLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogcHVibGlzaGVyVHlwZUtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWw6IGl0ZW1JblBhZ2luYXRlZERhdGEuY291bnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWJsZURhdGEudmFsdWUgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVEYXRhLnZhbHVlLmRhdGEgPSB0ZW1wRGF0YTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChhY3RpdmVUYWIgPT09ICdyZWdpc3RyYXRpb24tdHlwZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdHJhdGlvblR5cGUudmFsdWUgPSByZXNwb25zZS5kYXRhLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZU5lc3MudmFsdWUgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Vmlldy52YWx1ZSA9PT0gJ3VzZXInIHx8IGN1cnJlbnRWaWV3LnZhbHVlID09PSAnYWN0aXZpdHknKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhYmxlRGF0YS52YWx1ZSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZmluYWxseShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc2hvd1RhYmxlTG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCdjb21wbGV0ZU5lc3MnLCBjb21wbGV0ZU5lc3MpO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ3JlZ2lzdHJhdGlvblR5cGUnLCByZWdpc3RyYXRpb25UeXBlKTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCdncmFwaEFtb3VudCcsIGdyYXBoQW1vdW50KTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCdncmFwaFRvdGFsJywgZ3JhcGhUb3RhbCk7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgnc2hvd1RhYmxlTG9hZGVyJywgc2hvd1RhYmxlTG9hZGVyKTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCdzaG93R3JhcGhMb2FkZXInLCBzaG93R3JhcGhMb2FkZXIpO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ2N1cnJlbnRWaWV3JywgY3VycmVudFZpZXcpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBjdXJyZW50TmF2OiBjdXJyZW50TmF2LCB0YWJsZURhdGE6IHRhYmxlRGF0YSwgRGF0ZUxhYmVsOiBEYXRlTGFiZWwsIHN0YXJ0RGF0ZTogc3RhcnREYXRlLCBlbmREYXRlOiBlbmREYXRlLCBncmFwaEFtb3VudDogZ3JhcGhBbW91bnQsIGdyYXBoVG90YWw6IGdyYXBoVG90YWwsIHNob3dUYWJsZUxvYWRlcjogc2hvd1RhYmxlTG9hZGVyLCBzaG93R3JhcGhMb2FkZXI6IHNob3dHcmFwaExvYWRlciwgZGF0ZVR5cGU6IGRhdGVUeXBlLCBkYXRlTGFiZWw6IGRhdGVMYWJlbCwgY3VycmVudFZpZXc6IGN1cnJlbnRWaWV3LCBjb21wbGV0ZU5lc3M6IGNvbXBsZXRlTmVzcywgcmVnaXN0cmF0aW9uVHlwZTogcmVnaXN0cmF0aW9uVHlwZSwgaGFuZGxlQ2hhbmdlVGFibGVOYXY6IGhhbmRsZUNoYW5nZVRhYmxlTmF2LCBwcm9wczogcHJvcHMsIGRvd25sb2FkUmVwb3J0OiBkb3dubG9hZFJlcG9ydCwgZ3JhcGhEYXRhRm9ybWF0dGVyOiBncmFwaERhdGFGb3JtYXR0ZXIsIGZldGNoR3JhcGhEYXRhOiBmZXRjaEdyYXBoRGF0YSwgc2V0RGF0ZVJhbmdlRGF0ZTogc2V0RGF0ZVJhbmdlRGF0ZSwgZmV0Y2hUYWJsZURhdGE6IGZldGNoVGFibGVEYXRhLCBEYXNoYm9hcmRTdGF0c1NlY3Rpb246IERhc2hib2FyZFN0YXRzU2VjdGlvbl92dWVfMS5kZWZhdWx0LCBEYXNoYm9hcmRMaXN0U2VjdGlvbjogRGFzaGJvYXJkTGlzdFNlY3Rpb25fdnVlXzEuZGVmYXVsdCwgRGF0ZVJhbmdlV2lkZ2V0OiBEYXRlUmFuZ2VXaWRnZXRfdnVlXzEuZGVmYXVsdCwgQnV0dG9uQ29tcG9uZW50OiBCdXR0b25Db21wb25lbnRfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIERhc2hib2FyZEdyYXBoX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL0Rhc2hib2FyZEdyYXBoLnZ1ZVwiKSk7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIG1vbWVudF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJtb21lbnRcIikpO1xudmFyIFByb2dyZXNzTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1Byb2dyZXNzTG9hZGVyLnZ1ZVwiKSk7XG52YXIgdXRpbHNfMSA9IHJlcXVpcmUoXCIuLi8uLi9jb21wb3NhYmxlL3V0aWxzXCIpO1xudmFyIFNoaW1tZXJMb2FkaW5nX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1NoaW1tZXJMb2FkaW5nLnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnRGFzaGJvYXJkU3RhdHNTZWN0aW9uJyxcbiAgICBwcm9wczoge1xuICAgICAgICBjdXJyZW50Vmlldzoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgdG90YWwgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgaW5hY3RpdmVQdWJsaXNoZXIgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgcHVibGlzaGVyV2l0aG91dEFjdGl2aXR5ID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIGxhc3RSZWdpc3RlcmVkID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIGxhc3RVcGRhdGVkUHVibGlzaGVyID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIGxhc3RVcGRhdGVkQWN0aXZpdHkgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgbG9hZGVyID0gKDAsIHZ1ZV8yLnJlZikoeyBzdGF0dXM6IGZhbHNlLCB0ZXh0OiAnJyB9KTtcbiAgICAgICAgdmFyIHNob3dTdGF0c0xvYWRlciA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGdyYXBoVG90YWwgPSAoMCwgdnVlXzIuaW5qZWN0KSgnZ3JhcGhUb3RhbCcpO1xuICAgICAgICB2YXIgcHVibGlzaGVyU3RhdHMgPSAoMCwgdnVlXzIucmVmKShbXSk7XG4gICAgICAgIHZhciBzaG93UHVibGlzaGVyU3RhdHMgPSAoMCwgdnVlXzIucmVmKSh0cnVlKTtcbiAgICAgICAgdmFyIHNob3dHcmFwaExvYWRlciA9ICgwLCB2dWVfMi5pbmplY3QpKCdzaG93R3JhcGhMb2FkZXInKTtcbiAgICAgICAgdmFyIHVzZXJJZCA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZldGNoU3RhdHNEYXRhKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZm9ybWF0RGF0ZSA9IGZ1bmN0aW9uIChkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gKDAsIG1vbWVudF8xLmRlZmF1bHQpKGRhdGUpLmZvcm1hdCgnTU1NTSBERCwgWVlZWScpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgcHJveHlVc2VyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgbG9hZGVyLnZhbHVlLnN0YXR1cyA9IHRydWU7XG4gICAgICAgICAgICBsb2FkZXIudmFsdWUudGV4dCA9ICdQcm94eSBMb2dpbic7XG4gICAgICAgICAgICB2YXIgZW5kcG9pbnQgPSBcIi9wcm94eS1vcmdhbmlzYXRpb24vXCIuY29uY2F0KHVzZXJJZC52YWx1ZSk7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KGVuZHBvaW50KS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKCcvYWN0aXZpdGllcycpO1xuICAgICAgICAgICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZS5zdGF0dXMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBwcm9wcy5jdXJyZW50VmlldzsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZmV0Y2hTdGF0c0RhdGEoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBmZXRjaFN0YXRzRGF0YSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNob3dTdGF0c0xvYWRlci52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAuZ2V0KFwiL2Rhc2hib2FyZC9cIi5jb25jYXQocHJvcHMuY3VycmVudFZpZXcsIFwiL3N0YXRzXCIpKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB0b3RhbC52YWx1ZSA9IHJlc3BvbnNlLmRhdGEudG90YWxDb3VudDtcbiAgICAgICAgICAgICAgICBsYXN0UmVnaXN0ZXJlZC52YWx1ZSA9IHJlc3BvbnNlLmRhdGEubGFzdFJlZ2lzdGVyZWRQdWJsaXNoZXI7XG4gICAgICAgICAgICAgICAgbGFzdFVwZGF0ZWRQdWJsaXNoZXIudmFsdWUgPSByZXNwb25zZS5kYXRhLmxhc3RVcGRhdGVkUHVibGlzaGVyO1xuICAgICAgICAgICAgICAgIGxhc3RVcGRhdGVkQWN0aXZpdHkudmFsdWUgPSByZXNwb25zZS5kYXRhLmxhc3RVcGRhdGVkQWN0aXZpdHk7XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzLmN1cnJlbnRWaWV3ID09PSAncHVibGlzaGVyJykge1xuICAgICAgICAgICAgICAgICAgICB1c2VySWQudmFsdWUgPSBsYXN0UmVnaXN0ZXJlZC52YWx1ZS51c2VyX2lkO1xuICAgICAgICAgICAgICAgICAgICBpbmFjdGl2ZVB1Ymxpc2hlci52YWx1ZSA9IHJlc3BvbnNlLmRhdGEuaW5BY3RpdmVQdWJsaXNoZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChwcm9wcy5jdXJyZW50VmlldyA9PT0gJ2FjdGl2aXR5Jykge1xuICAgICAgICAgICAgICAgICAgICB1c2VySWQudmFsdWUgPSByZXNwb25zZS5kYXRhLnVzZXJJZDtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaGVyV2l0aG91dEFjdGl2aXR5LnZhbHVlID0gcmVzcG9uc2UuZGF0YS5wdWJsaXNoZXJXaXRob3V0QWN0aXZpdHk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChwcm9wcy5jdXJyZW50VmlldyA9PT0gJ3VzZXInKSB7XG4gICAgICAgICAgICAgICAgICAgIHNob3dQdWJsaXNoZXJTdGF0cy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hlclN0YXRzLnZhbHVlID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5maW5hbGx5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzaG93U3RhdHNMb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBwcm9wczogcHJvcHMsIHRvdGFsOiB0b3RhbCwgaW5hY3RpdmVQdWJsaXNoZXI6IGluYWN0aXZlUHVibGlzaGVyLCBwdWJsaXNoZXJXaXRob3V0QWN0aXZpdHk6IHB1Ymxpc2hlcldpdGhvdXRBY3Rpdml0eSwgbGFzdFJlZ2lzdGVyZWQ6IGxhc3RSZWdpc3RlcmVkLCBsYXN0VXBkYXRlZFB1Ymxpc2hlcjogbGFzdFVwZGF0ZWRQdWJsaXNoZXIsIGxhc3RVcGRhdGVkQWN0aXZpdHk6IGxhc3RVcGRhdGVkQWN0aXZpdHksIGxvYWRlcjogbG9hZGVyLCBzaG93U3RhdHNMb2FkZXI6IHNob3dTdGF0c0xvYWRlciwgZ3JhcGhUb3RhbDogZ3JhcGhUb3RhbCwgcHVibGlzaGVyU3RhdHM6IHB1Ymxpc2hlclN0YXRzLCBzaG93UHVibGlzaGVyU3RhdHM6IHNob3dQdWJsaXNoZXJTdGF0cywgc2hvd0dyYXBoTG9hZGVyOiBzaG93R3JhcGhMb2FkZXIsIHVzZXJJZDogdXNlcklkLCBmb3JtYXREYXRlOiBmb3JtYXREYXRlLCBwcm94eVVzZXI6IHByb3h5VXNlciwgZmV0Y2hTdGF0c0RhdGE6IGZldGNoU3RhdHNEYXRhLCBEYXNoYm9hcmRHcmFwaDogRGFzaGJvYXJkR3JhcGhfdnVlXzEuZGVmYXVsdCwgTG9hZGVyOiBQcm9ncmVzc0xvYWRlcl92dWVfMS5kZWZhdWx0LCB0cnVuY2F0ZVRleHQ6IHV0aWxzXzEudHJ1bmNhdGVUZXh0LCBTaGltbWVyTG9hZGluZzogU2hpbW1lckxvYWRpbmdfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbnZhciBIb3ZlclRleHRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZVwiKSk7XG52YXIgUHJvZ3Jlc3NMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvUHJvZ3Jlc3NMb2FkZXIudnVlXCIpKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnQWN0aXZpdHlVcGxvYWQnLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgZmlsZSA9ICgwLCB2dWVfMi5yZWYpKCksIGVycm9yID0gKDAsIHZ1ZV8yLnJlZikoJycpLCBsb2FkZXIgPSAoMCwgdnVlXzIucmVmKShmYWxzZSksIGxvYWRlclRleHQgPSAoMCwgdnVlXzIucmVmKShsYW5ndWFnZS5jb21tb25fbGFuZy5wbGVhc2Vfd2FpdCk7XG4gICAgICAgIGZ1bmN0aW9uIHVwbG9hZEZpbGUoKSB7XG4gICAgICAgICAgICBsb2FkZXIudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgbG9hZGVyVGV4dC52YWx1ZSA9IGxhbmd1YWdlLmNvbW1vbl9sYW5nLnVwbG9hZGluZ19jc3ZfeG1sX2ZpbGU7XG4gICAgICAgICAgICB2YXIgYWN0aXZpdHkgPSBmaWxlLnZhbHVlLmZpbGVzLmxlbmd0aCA/IGZpbGUudmFsdWUuZmlsZXNbMF0gOiAnJztcbiAgICAgICAgICAgIHZhciBjb25maWcgPSB7XG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAnY29udGVudC10eXBlJzogJ211bHRpcGFydC9mb3JtLWRhdGEnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdmFyIGRhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgICAgIGRhdGEuYXBwZW5kKCdhY3Rpdml0eScsIGFjdGl2aXR5KTtcbiAgICAgICAgICAgIGVycm9yLnZhbHVlID0gJyc7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucG9zdCgnL2ltcG9ydCcsIGRhdGEsIGNvbmZpZylcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIGlmIChmaWxlLnZhbHVlLmZpbGVzLmxlbmd0aCAmJiAoKF9hID0gcmVzID09PSBudWxsIHx8IHJlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVzLmRhdGEpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zdWNjZXNzKSkge1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9pbXBvcnQvbGlzdCc7XG4gICAgICAgICAgICAgICAgICAgIH0sIDUwMDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IudmFsdWUgPSBPYmplY3QudmFsdWVzKHJlcy5kYXRhLmVycm9ycykuam9pbignICcpO1xuICAgICAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgZXJyb3IudmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZS5jb21tb25fbGFuZy5lcnJvcl9oYXNfb2NjdXJyZWRfd2hpbGVfdXBsb2FkaW5nX2ZpbGU7XG4gICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBkb3dubG9hZEV4Y2VsKCkge1xuICAgICAgICAgICAgKDAsIGF4aW9zXzEuZGVmYXVsdCkoe1xuICAgICAgICAgICAgICAgIHVybDogJ2ltcG9ydC9kb3dubG9hZC9jc3YnLFxuICAgICAgICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInLFxuICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFtyZXNwb25zZS5kYXRhXSwge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYXBwbGljYXRpb24vY3N2JyxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgICAgICBsaW5rLmhyZWYgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgICAgICAgICBsaW5rLmRvd25sb2FkID0gJ0ltcG9ydF9BY3Rpdml0eV9DU1ZfVGVtcGxhdGUuY3N2JztcbiAgICAgICAgICAgICAgICBsaW5rLmNsaWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBsYW5ndWFnZTogbGFuZ3VhZ2UsIGZpbGU6IGZpbGUsIGVycm9yOiBlcnJvciwgbG9hZGVyOiBsb2FkZXIsIGxvYWRlclRleHQ6IGxvYWRlclRleHQsIHVwbG9hZEZpbGU6IHVwbG9hZEZpbGUsIGRvd25sb2FkRXhjZWw6IGRvd25sb2FkRXhjZWwsIEJ0bkNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQsIEhvdmVyVGV4dDogSG92ZXJUZXh0X3Z1ZV8xLmRlZmF1bHQsIExvYWRlcjogUHJvZ3Jlc3NMb2FkZXJfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbnZhciBIb3ZlclRleHRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZVwiKSk7XG52YXIgUHJvZ3Jlc3NMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvUHJvZ3Jlc3NMb2FkZXIudnVlXCIpKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgWGxzVXBsb2FkSW5kaWNhdG9yX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1hsc1VwbG9hZEluZGljYXRvci52dWVcIikpO1xudmFyIFBvcHVwTW9kYWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvUG9wdXBNb2RhbC52dWVcIikpO1xudmFyIFRvYXN0TWVzc2FnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlXCIpKTtcbnZhciBkYXRlRm9ybWF0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZGF0ZUZvcm1hdFwiKSk7XG52YXIgVGFibGVQYWdpbmF0aW9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RhYmxlUGFnaW5hdGlvbi52dWVcIikpO1xudmFyIGluZGV4XzEgPSByZXF1aXJlKFwiU3RvcmUvYWN0aXZpdGllcy9pbmRleFwiKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0FjdGl2aXR5WGxzVXBsb2FkJyxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBfYjtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciB4bHNJbmRpY2F0b3JNb3VudGVkID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgeGxzRmFpbGVkTWVzc2FnZSA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIHVwbG9hZFR5cGUgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgc2hvd0Rvd25sb2FkRHJvcGRvd24gPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBhY3Rpdml0eU5hbWUgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciBmaWxlQ291bnQgPSAoMCwgdnVlXzIucmVmKSgwKTtcbiAgICAgICAgdmFyIHhsc0Rvd25sb2FkU3RhdHVzID0gKDAsIHZ1ZV8yLnJlZikoJycpO1xuICAgICAgICB2YXIgZG93bmxvYWRDb21wbGV0ZWQgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBwdWJsaXNoaW5nQWN0aXZpdGllcyA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciB0b2FzdE1lc3NhZ2UgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciB0b2FzdFR5cGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93RG93bmxvYWRDb2RlID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgaXNFbXB0eSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHhsc0ZhaWxlZCA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGN1cnJlbnRBY3Rpdml0eSA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIHRvYXN0VmlzaWJpbGl0eSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHhsc0RhdGEgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93Q2FuY2VsTW9kZWwgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBhY3Rpdml0aWVzID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7fSk7XG4gICAgICAgIHZhciBzZWxlY3RBbGxWYWx1ZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHVwbG9hZENvbXBsZXRlID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgdG90YWxDb3VudCA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBwcm9jZXNzZWRDb3VudCA9ICgwLCB2dWVfMi5yZWYpKDApO1xuICAgICAgICB2YXIgZmlsZSA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBlcnJvciA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIGxvYWRlciA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGxvYWRlclRleHQgPSAoMCwgdnVlXzIucmVmKSgnUGxlYXNlIFdhaXQnKTtcbiAgICAgICAgdmFyIHN0b3JlID0gKDAsIGluZGV4XzEudXNlU3RvcmUpKCk7XG4gICAgICAgIHZhciBzZWFyY2hWYWx1ZSA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIGRpcmVjdGlvbiA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIHByb2Nlc3NpbmcgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgc29ydGluZ0RpcmVjdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGRpcmVjdGlvbi52YWx1ZSA9PT0gJ2FzYydcbiAgICAgICAgICAgICAgICA/IChkaXJlY3Rpb24udmFsdWUgPSAnZGVzYycpXG4gICAgICAgICAgICAgICAgOiAoZGlyZWN0aW9uLnZhbHVlID0gJ2FzYycpO1xuICAgICAgICAgICAgZmV0Y2hBY3Rpdml0aWVzKDEsIGRpcmVjdGlvbi52YWx1ZSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBkb3dubG9hZEFwaVVybCA9ICgwLCB2dWVfMi5yZWYpKCcnKTtcbiAgICAgICAgdmFyIGRvd25sb2FkaW5nID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgcGEgPSAoMCwgY29yZV8xLnVzZVN0b3JhZ2UpKCd2dWUtdXNlLWxvY2FsLXN0b3JhZ2UnLCB7XG4gICAgICAgICAgICBwdWJsaXNoaW5nQWN0aXZpdGllczogKF9iID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3B1Ymxpc2hpbmdBY3Rpdml0aWVzJykpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IHt9LFxuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZmV0Y2hBY3Rpdml0aWVzKDEpO1xuICAgICAgICAgICAgY2hlY2tYbHNzdGF0dXMoKTtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuc2VsZWN0ZWRBY3Rpdml0aWVzOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZS5sZW5ndGggPCA2KSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0QWxsVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBtYXBBY3Rpdml0eU5hbWUgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICAgICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnYWN0aXZpdHknOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ0Jhc2ljIEFjdGl2aXR5IEVsZW1lbnRzJztcbiAgICAgICAgICAgICAgICBjYXNlICdwZXJpb2QnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1BlcmlvZCc7XG4gICAgICAgICAgICAgICAgY2FzZSAnaW5kaWNhdG9yJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdJbmRpY2F0b3JzIGV4Y2VwdCBQZXJpb2QnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3Jlc3VsdCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnUmVzdWx0IGV4Y2VwdCBJbmRpY2F0b3JzIGFuZCBQZXJpb2QnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuYW1lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLnN0YXJ0QnVsa1B1Ymxpc2g7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXMudmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICBwYS52YWx1ZS5wdWJsaXNoaW5nQWN0aXZpdGllcyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMocGEudmFsdWUucHVibGlzaGluZ0FjdGl2aXRpZXMpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICB2YXIgYWN0aXZpdHlMZW5ndGggPSAoMCwgdnVlXzIuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHJldHVybiAhKChfYSA9IHVwbG9hZFR5cGUgPT09IG51bGwgfHwgdXBsb2FkVHlwZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogdXBsb2FkVHlwZS52YWx1ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxlbmd0aCk7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLnN0YXJ0WGxzRG93bmxvYWQ7IH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY2hlY2tEb3dubG9hZFN0YXR1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuY2xvc2VYbHNNb2RlbDsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY2hlY2tEb3dubG9hZFN0YXR1cygpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGNoZWNrRG93bmxvYWRTdGF0dXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBkb3dubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgdmFyIGNoZWNrRG93bmxvYWQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldCgnL2FjdGl2aXRpZXMvZG93bmxvYWQteGxzLXByb2dyZXNzLXN0YXR1cycpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgICAgICBmaWxlQ291bnQudmFsdWUgPSByZXMuZGF0YS5maWxlX2NvdW50O1xuICAgICAgICAgICAgICAgICAgICB4bHNEb3dubG9hZFN0YXR1cy52YWx1ZSA9IHJlcy5kYXRhLnN0YXR1cztcbiAgICAgICAgICAgICAgICAgICAgZG93bmxvYWRBcGlVcmwudmFsdWUgPSByZXMuZGF0YS51cmw7XG4gICAgICAgICAgICAgICAgICAgIGRvd25sb2FkaW5nLnZhbHVlID0gISFyZXMuZGF0YS5zdGF0dXM7XG4gICAgICAgICAgICAgICAgICAgIGlmICh4bHNEb3dubG9hZFN0YXR1cy52YWx1ZSA9PT0gJ2NvbXBsZXRlZCcgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHhsc0Rvd25sb2FkU3RhdHVzLnZhbHVlID09PSAnZmFpbGVkJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgIXJlcy5kYXRhLnN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0Rvd25sb2FkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSwgMzAwMCk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBkb3dubG9hZENvZGUgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgYXBpVXJsLCBhY3Rpdml0aWVzXzEsIHJlcSwgYmxvYiwgbGluaztcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwaVVybCA9ICcvYWN0aXZpdGllcy9kb3dubG9hZC1jb2Rlcy8/YWN0aXZpdGllcz1hbGwnO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0b3JlLnN0YXRlLnNlbGVjdGVkQWN0aXZpdGllcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZpdGllc18xID0gc3RvcmUuc3RhdGUuc2VsZWN0ZWRBY3Rpdml0aWVzLmpvaW4oJywnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcGlVcmwgPSBcIi9hY3Rpdml0aWVzL2Rvd25sb2FkLWNvZGVzLz9hY3Rpdml0aWVzPVtcIi5jb25jYXQoYWN0aXZpdGllc18xLCBcIl1cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCAoMCwgYXhpb3NfMS5kZWZhdWx0KSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ2dldCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogYXBpVXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdibG9iJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcSA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsb2IgPSBuZXcgQmxvYihbcmVxLmRhdGFdLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsuaHJlZiA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGluay5kb3dubG9hZCA9ICdpZGVudGlmaWVycy54bHN4JztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsuY2xpY2soKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH07XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc3RvcmUuc3RhdGUuY2FuY2VsVXBsb2FkO1xuICAgICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBjYW5jZWxJbXBvcnQoKTtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICB2YXIgaW1wb3J0QW55d2F5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmRlbGV0ZShcIi9pbXBvcnQveGxzXCIpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIHhsc0RhdGEudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB1cGxvYWRGaWxlKCk7XG4gICAgICAgICAgICAgICAgdXBsb2FkVHlwZS52YWx1ZSA9IFtdO1xuICAgICAgICAgICAgICAgIHNob3dDYW5jZWxNb2RlbC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHJldHVybiAodG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2UpOyB9LCAxNTAwMCk7XG4gICAgICAgICAgICAgICAgdG9hc3RNZXNzYWdlLnZhbHVlID0gcmVzcG9uc2UubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdFR5cGUudmFsdWUgPSByZXNwb25zZS5zdWNjZXNzO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzZWxlY3RBbGwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoIXNlbGVjdEFsbFZhbHVlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGlkcyA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgT2JqZWN0LnZhbHVlcyhhY3Rpdml0aWVzLmRhdGEpLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlkcy5wdXNoKGFjdGl2aXRpZXMuZGF0YVtpXVsnaWQnXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTZWxlY3RlZEFjdGl2aXRpZXMnLCBpZHMpO1xuICAgICAgICAgICAgICAgIHNlbGVjdEFsbFZhbHVlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCd1cGRhdGVTZWxlY3RlZEFjdGl2aXRpZXMnLCBbXSk7XG4gICAgICAgICAgICAgICAgc2VsZWN0QWxsVmFsdWUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgZnVuY3Rpb24gdXBsb2FkRmlsZSgpIHtcbiAgICAgICAgICAgIGlmICgheGxzRGF0YS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgbG9hZGVyVGV4dC52YWx1ZSA9ICdGZXRjaGluZyAueGxzIGZpbGUnO1xuICAgICAgICAgICAgICAgIHZhciBhY3Rpdml0eSA9IGZpbGUudmFsdWUuZmlsZXMubGVuZ3RoID8gZmlsZS52YWx1ZS5maWxlc1swXSA6ICcnO1xuICAgICAgICAgICAgICAgIHZhciB4bHNUeXBlID0gdXBsb2FkVHlwZTtcbiAgICAgICAgICAgICAgICB2YXIgY29uZmlnID0ge1xuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnY29udGVudC10eXBlJzogJ211bHRpcGFydC9mb3JtLWRhdGEnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdmFyIGRhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZCgnYWN0aXZpdHknLCBhY3Rpdml0eSk7XG4gICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoJ3hsc1R5cGUnLCB4bHNUeXBlLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBlcnJvci52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAucG9zdCgnL2ltcG9ydC94bHMnLCBkYXRhLCBjb25maWcpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmlsZS52YWx1ZS5maWxlcy5sZW5ndGggJiYgKChfYSA9IHJlcyA9PT0gbnVsbCB8fCByZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlcy5kYXRhKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc3VjY2VzcykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrWGxzc3RhdHVzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvci52YWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzLmRhdGEuZXJyb3JzICYmIE9iamVjdC52YWx1ZXMocmVzLmRhdGEuZXJyb3JzKS5qb2luKCcgJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBlcnJvci52YWx1ZSA9ICdFcnJvciBoYXMgb2NjdXJlZCB3aGlsZSB1cGxvYWRpbmcgZmlsZS4nO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5maW5hbGx5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHVwbG9hZFR5cGUudmFsdWUgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgZmlsZS52YWx1ZS52YWx1ZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzaG93Q2FuY2VsTW9kZWwudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGZldGNoQWN0aXZpdGllcyhhY3RpdmVfcGFnZSwgZGlyZWN0aW9uKSB7XG4gICAgICAgICAgICBpZiAoZGlyZWN0aW9uID09PSB2b2lkIDApIHsgZGlyZWN0aW9uID0gJyc7IH1cbiAgICAgICAgICAgIHZhciBhcGlVcmwgPSBcIi9hY3Rpdml0aWVzL3BhZ2UvXCIuY29uY2F0KGFjdGl2ZV9wYWdlKTtcbiAgICAgICAgICAgIHZhciBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdsaW1pdCcsICc2Jyk7XG4gICAgICAgICAgICBpZiAoZGlyZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnb3JkZXJCeScsICd1cGRhdGVkX2F0Jyk7XG4gICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnZGlyZWN0aW9uJywgZGlyZWN0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzZWFyY2hWYWx1ZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ3EnLCBzZWFyY2hWYWx1ZS52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KGFwaVVybCwgeyBwYXJhbXM6IHBhcmFtcyB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGFjdGl2aXRpZXMsIHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgIGlzRW1wdHkudmFsdWUgPSAhcmVzcG9uc2UuZGF0YS5kYXRhLmxlbmd0aDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHZhciBjYW5jZWxJbXBvcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZGVsZXRlKFwiL2ltcG9ydC94bHNcIikudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgeGxzRGF0YS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHVwbG9hZFR5cGUudmFsdWUgPSBbXTtcbiAgICAgICAgICAgICAgICBmaWxlLnZhbHVlLnZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICBzaG93Q2FuY2VsTW9kZWwudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB0b2FzdFZpc2liaWxpdHkudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gKHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlKTsgfSwgMTUwMDApO1xuICAgICAgICAgICAgICAgIHRvYXN0TWVzc2FnZS52YWx1ZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgdG9hc3RUeXBlLnZhbHVlID0gcmVzcG9uc2Uuc3VjY2VzcztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgcG9sbGluZ0Zvclhsc1N0YXR1cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBjaGVja1N0YXR1cyA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KCcvaW1wb3J0L3hscy9zdGF0dXMnKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZSwgX2YsIF9nLCBfaCwgX2osIF9rLCBfbCwgX207XG4gICAgICAgICAgICAgICAgICAgIGlmICgoKF9hID0gcmVzLmRhdGEuZGF0YSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm1lc3NhZ2UpID09PSAnU3RhcnRlZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vcmVzZXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsQ291bnQudmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkQ291bnQudmFsdWUgPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgeGxzRmFpbGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB4bHNGYWlsZWRNZXNzYWdlLnZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3RhbENvdW50LnZhbHVlID0gKF9iID0gcmVzLmRhdGEuZGF0YSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnRvdGFsX2NvdW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkQ291bnQudmFsdWUgPSAoX2MgPSByZXMuZGF0YS5kYXRhKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MucHJvY2Vzc2VkX2NvdW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgeGxzRmFpbGVkLnZhbHVlID0gISgoX2QgPSByZXMuZGF0YS5kYXRhKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Quc3VjY2Vzcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB4bHNGYWlsZWRNZXNzYWdlLnZhbHVlID0gKF9lID0gcmVzLmRhdGEuZGF0YSkgPT09IG51bGwgfHwgX2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9lLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCgoX2YgPSByZXMuZGF0YS5kYXRhKSA9PT0gbnVsbCB8fCBfZiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2YubWVzc2FnZSkgPT09ICdQcm9jZXNzaW5nJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2luZy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCEoKF9oID0gKF9nID0gcmVzLmRhdGEpID09PSBudWxsIHx8IF9nID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZy5kYXRhKSA9PT0gbnVsbCB8fCBfaCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2guc3VjY2VzcykgfHwgKChfayA9IChfaiA9IHJlcy5kYXRhKSA9PT0gbnVsbCB8fCBfaiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2ouZGF0YSkgPT09IG51bGwgfHwgX2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9rLm1lc3NhZ2UpID09PSAnQ29tcGxldGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrU3RhdHVzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoKChfbSA9IChfbCA9IHJlcy5kYXRhKSA9PT0gbnVsbCB8fCBfbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2wuZGF0YSkgPT09IG51bGwgfHwgX20gPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9tLm1lc3NhZ2UpID09PSAnQ29tcGxldGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cGxvYWRDb21wbGV0ZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sIDI1MDApO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgY2hlY2tYbHNzdGF0dXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZ2V0KCcvaW1wb3J0L3hscy9wcm9ncmVzc19zdGF0dXMnKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lLCBfZiwgX2csIF9oO1xuICAgICAgICAgICAgICAgIHVwbG9hZENvbXBsZXRlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgYWN0aXZpdHlOYW1lLnZhbHVlID0gKF9iID0gKF9hID0gcmVzID09PSBudWxsIHx8IHJlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVzLmRhdGEpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zdGF0dXMpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBjdXJyZW50QWN0aXZpdHkudmFsdWUgPSBtYXBBY3Rpdml0eU5hbWUoYWN0aXZpdHlOYW1lLnZhbHVlKTtcbiAgICAgICAgICAgICAgICB4bHNEYXRhLnZhbHVlID0gT2JqZWN0LmtleXMocmVzLmRhdGEuc3RhdHVzKS5sZW5ndGggPiAwO1xuICAgICAgICAgICAgICAgIGlmICgoKF9kID0gKF9jID0gcmVzID09PSBudWxsIHx8IHJlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVzLmRhdGEpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5zdGF0dXMpID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC5zdGF0dXMpID09PSAnY29tcGxldGVkJykge1xuICAgICAgICAgICAgICAgICAgICB1cGxvYWRDb21wbGV0ZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKCgoX2YgPSAoX2UgPSByZXMgPT09IG51bGwgfHwgcmVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXMuZGF0YSkgPT09IG51bGwgfHwgX2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9lLnN0YXR1cykgPT09IG51bGwgfHwgX2YgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9mLnN0YXR1cykgPT09ICdmYWlsZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHhsc0ZhaWxlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHhsc0ZhaWxlZE1lc3NhZ2UudmFsdWUgPSAoX2ggPSAoX2cgPSByZXMgPT09IG51bGwgfHwgcmVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXMuZGF0YSkgPT09IG51bGwgfHwgX2cgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9nLnN0YXR1cykgPT09IG51bGwgfHwgX2ggPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9oLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKE9iamVjdC5rZXlzKHJlcy5kYXRhLnN0YXR1cykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL3Jlc2V0XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3RhbENvdW50LnZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NlZENvdW50LnZhbHVlID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHhsc0ZhaWxlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgeGxzRmFpbGVkTWVzc2FnZS52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9sbGluZ0Zvclhsc1N0YXR1cygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgneGxzRmFpbGVkTWVzc2FnZScsIHhsc0ZhaWxlZE1lc3NhZ2UpO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ2FjdGl2aXR5TGVuZ3RoJywgYWN0aXZpdHlMZW5ndGgpO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ2NvbXBsZXRlZCcsIHVwbG9hZENvbXBsZXRlKTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCdwcm9jZXNzaW5nJywgcHJvY2Vzc2luZyk7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUuY29tcGxldGVYbHNEb3dubG9hZDsgfSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBkb3dubG9hZENvbXBsZXRlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVN0YXJ0WGxzRG93bmxvYWQnLCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHsgZGVlcDogdHJ1ZSB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uVW5tb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB4bHNJbmRpY2F0b3JNb3VudGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBmZXRjaEFjdGl2aXRpZXMoMSk7XG4gICAgICAgICAgICBjaGVja1hsc3N0YXR1cygpO1xuICAgICAgICAgICAgY2hlY2tEb3dubG9hZFN0YXR1cygpO1xuICAgICAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXMudmFsdWUgPVxuICAgICAgICAgICAgICAgIHBhLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzICYmIE9iamVjdC5rZXlzKHBhLnZhbHVlLnB1Ymxpc2hpbmdBY3Rpdml0aWVzKTtcbiAgICAgICAgICAgIHhsc0luZGljYXRvck1vdW50ZWQudmFsdWUgPSB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCd4bHNGYWlsZWRNZXNzYWdlJywgeGxzRmFpbGVkTWVzc2FnZSk7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgnYWN0aXZpdHlMZW5ndGgnLCBhY3Rpdml0eUxlbmd0aCk7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgneGxzSW5kaWNhdG9yTW91bnRlZCcsIHhsc0luZGljYXRvck1vdW50ZWQpO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ2Rvd25sb2FkaW5nJywgZG93bmxvYWRpbmcpO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ3hsc0Rvd25sb2FkU3RhdHVzJywgeGxzRG93bmxvYWRTdGF0dXMpO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ2Rvd25sb2FkQXBpVXJsJywgZG93bmxvYWRBcGlVcmwpO1xuICAgICAgICAoMCwgdnVlXzIucHJvdmlkZSkoJ2FjdGl2aXRpZXMnLCBwdWJsaXNoaW5nQWN0aXZpdGllcyk7XG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgnZmlsZUNvdW50JywgZmlsZUNvdW50KTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgeGxzSW5kaWNhdG9yTW91bnRlZDogeGxzSW5kaWNhdG9yTW91bnRlZCwgeGxzRmFpbGVkTWVzc2FnZTogeGxzRmFpbGVkTWVzc2FnZSwgdXBsb2FkVHlwZTogdXBsb2FkVHlwZSwgc2hvd0Rvd25sb2FkRHJvcGRvd246IHNob3dEb3dubG9hZERyb3Bkb3duLCBhY3Rpdml0eU5hbWU6IGFjdGl2aXR5TmFtZSwgZmlsZUNvdW50OiBmaWxlQ291bnQsIHhsc0Rvd25sb2FkU3RhdHVzOiB4bHNEb3dubG9hZFN0YXR1cywgZG93bmxvYWRDb21wbGV0ZWQ6IGRvd25sb2FkQ29tcGxldGVkLCBwdWJsaXNoaW5nQWN0aXZpdGllczogcHVibGlzaGluZ0FjdGl2aXRpZXMsIHRvYXN0TWVzc2FnZTogdG9hc3RNZXNzYWdlLCB0b2FzdFR5cGU6IHRvYXN0VHlwZSwgc2hvd0Rvd25sb2FkQ29kZTogc2hvd0Rvd25sb2FkQ29kZSwgaXNFbXB0eTogaXNFbXB0eSwgeGxzRmFpbGVkOiB4bHNGYWlsZWQsIGN1cnJlbnRBY3Rpdml0eTogY3VycmVudEFjdGl2aXR5LCB0b2FzdFZpc2liaWxpdHk6IHRvYXN0VmlzaWJpbGl0eSwgeGxzRGF0YTogeGxzRGF0YSwgc2hvd0NhbmNlbE1vZGVsOiBzaG93Q2FuY2VsTW9kZWwsIGFjdGl2aXRpZXM6IGFjdGl2aXRpZXMsIHNlbGVjdEFsbFZhbHVlOiBzZWxlY3RBbGxWYWx1ZSwgdXBsb2FkQ29tcGxldGU6IHVwbG9hZENvbXBsZXRlLCB0b3RhbENvdW50OiB0b3RhbENvdW50LCBwcm9jZXNzZWRDb3VudDogcHJvY2Vzc2VkQ291bnQsIGZpbGU6IGZpbGUsIGVycm9yOiBlcnJvciwgbG9hZGVyOiBsb2FkZXIsIGxvYWRlclRleHQ6IGxvYWRlclRleHQsIHN0b3JlOiBzdG9yZSwgc2VhcmNoVmFsdWU6IHNlYXJjaFZhbHVlLCBkaXJlY3Rpb246IGRpcmVjdGlvbiwgcHJvY2Vzc2luZzogcHJvY2Vzc2luZywgc29ydGluZ0RpcmVjdGlvbjogc29ydGluZ0RpcmVjdGlvbiwgZG93bmxvYWRBcGlVcmw6IGRvd25sb2FkQXBpVXJsLCBkb3dubG9hZGluZzogZG93bmxvYWRpbmcsIHBhOiBwYSwgbWFwQWN0aXZpdHlOYW1lOiBtYXBBY3Rpdml0eU5hbWUsIGFjdGl2aXR5TGVuZ3RoOiBhY3Rpdml0eUxlbmd0aCwgY2hlY2tEb3dubG9hZFN0YXR1czogY2hlY2tEb3dubG9hZFN0YXR1cywgZG93bmxvYWRDb2RlOiBkb3dubG9hZENvZGUsIGltcG9ydEFueXdheTogaW1wb3J0QW55d2F5LCBzZWxlY3RBbGw6IHNlbGVjdEFsbCwgdXBsb2FkRmlsZTogdXBsb2FkRmlsZSwgZmV0Y2hBY3Rpdml0aWVzOiBmZXRjaEFjdGl2aXRpZXMsIGNhbmNlbEltcG9ydDogY2FuY2VsSW1wb3J0LCBwb2xsaW5nRm9yWGxzU3RhdHVzOiBwb2xsaW5nRm9yWGxzU3RhdHVzLCBjaGVja1hsc3N0YXR1czogY2hlY2tYbHNzdGF0dXMsIEJ0bkNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQsIEhvdmVyVGV4dDogSG92ZXJUZXh0X3Z1ZV8xLmRlZmF1bHQsIExvYWRlcjogUHJvZ3Jlc3NMb2FkZXJfdnVlXzEuZGVmYXVsdCwgWGxzVXBsb2FkSW5kaWNhdG9yOiBYbHNVcGxvYWRJbmRpY2F0b3JfdnVlXzEuZGVmYXVsdCwgTW9kYWw6IFBvcHVwTW9kYWxfdnVlXzEuZGVmYXVsdCwgVG9hc3Q6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0LCBkYXRlRm9ybWF0OiBkYXRlRm9ybWF0XzEuZGVmYXVsdCwgUGFnaW5hdGlvbjogVGFibGVQYWdpbmF0aW9uX3Z1ZV8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBCdXR0b25Db21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZVwiKSk7XG52YXIgUHJvZ3Jlc3NMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvUHJvZ3Jlc3NMb2FkZXIudnVlXCIpKTtcbnZhciBJbXBvcnRQbGFjZWhvbGRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9JbXBvcnRQbGFjZWhvbGRlci52dWVcIikpO1xudmFyIExpc3RFbGVtZW50X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL0xpc3RFbGVtZW50LnZ1ZVwiKSk7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0ltcG9ydExpc3QnLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgYWN0aXZpdGllcyA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe30pO1xuICAgICAgICB2YXIgc2VsZWN0ZWRBY3Rpdml0aWVzID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKShbXSk7XG4gICAgICAgIHZhciBzZWxlY3RlZENvdW50ID0gKDAsIHZ1ZV8yLnJlZikoMCk7XG4gICAgICAgIHZhciBhY3Rpdml0aWVzTGVuZ3RoID0gKDAsIHZ1ZV8yLnJlZikoMCk7XG4gICAgICAgIHZhciBsb2FkZXIgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzZWxlY3RBbGwgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBsb2FkZXJUZXh0ID0gKDAsIHZ1ZV8yLnJlZikobGFuZ3VhZ2UuY29tbW9uX2xhbmcucGxlYXNlX3dhaXQpO1xuICAgICAgICB2YXIgdGFibGVSb3cgPSAoMCwgdnVlXzIucmVmKSh7fSk7XG4gICAgICAgIHZhciB0YWJsZVdpZHRoID0gKDAsIHZ1ZV8yLnJlZikoe30pO1xuICAgICAgICB2YXIgdGltZXI7XG4gICAgICAgIHZhciBnZXREaW1lbnNpb25zID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gWzQgLyp5aWVsZCovLCAoMCwgdnVlXzIubmV4dFRpY2spKCldO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWJsZVdpZHRoLnZhbHVlID0gdGFibGVSb3cgPT09IG51bGwgfHwgdGFibGVSb3cgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRhYmxlUm93LnZhbHVlWycwJ10uY2xpZW50V2lkdGg7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9O1xuICAgICAgICAoMCwgdnVlXzIub25Vbm1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBnZXREaW1lbnNpb25zKTtcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBnZXREaW1lbnNpb25zKTtcbiAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBsb2FkZXJUZXh0LnZhbHVlID0gbGFuZ3VhZ2UuY29tbW9uX2xhbmcucGxlYXNlX3dhaXQ7XG4gICAgICAgICAgICB2YXIgY291bnQgPSAwO1xuICAgICAgICAgICAgdGltZXIgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgIC5nZXQoJy9pbXBvcnQvY2hlY2tfc3RhdHVzJylcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGFjdGl2aXRpZXMsIHJlcy5kYXRhLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICBhY3Rpdml0aWVzTGVuZ3RoLnZhbHVlID0gcmVzLmRhdGEuZGF0YS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnN0YXR1cyA9PT0gJ2Vycm9yJyB8fCAoIXJlcy5kYXRhLmRhdGEgJiYgY291bnQgPj0gNDApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9hY3Rpdml0aWVzJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb3VudCsrO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGdldERpbWVuc2lvbnMsIDIwMCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9hY3Rpdml0aWVzJztcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sIDMwMDApO1xuICAgICAgICB9KTtcbiAgICAgICAgZnVuY3Rpb24gdXBkYXRlU2VsZWN0ZWRBY3Rpdml0aWVzKGFjdGl2aXR5X2lkKSB7XG4gICAgICAgICAgICB2YXIgaW5kZXggPSBzZWxlY3RlZEFjdGl2aXRpZXMuaW5kZXhPZihhY3Rpdml0eV9pZCk7XG4gICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMoYWN0aXZpdGllc1thY3Rpdml0eV9pZF1bJ2Vycm9ycyddKS5pbmRleE9mKCdjcml0aWNhbCcpID09PSAtMSkge1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQWN0aXZpdGllcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZENvdW50LnZhbHVlID0gc2VsZWN0ZWRDb3VudC52YWx1ZSAtIDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEFjdGl2aXRpZXMucHVzaChhY3Rpdml0eV9pZCk7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQ291bnQudmFsdWUgPSBzZWxlY3RlZENvdW50LnZhbHVlICsgMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gc2VsZWN0QWxsQWN0aXZpdGllcygpIHtcbiAgICAgICAgICAgIHNlbGVjdEFsbC52YWx1ZSA9ICFzZWxlY3RBbGwudmFsdWU7XG4gICAgICAgICAgICBzZWxlY3RlZENvdW50LnZhbHVlID0gMDtcbiAgICAgICAgICAgIHNlbGVjdGVkQWN0aXZpdGllcy5sZW5ndGggPSAwO1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoYWN0aXZpdGllcykuZm9yRWFjaChmdW5jdGlvbiAoYWN0aXZpdHlfaWQpIHtcbiAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSBzZWxlY3RlZEFjdGl2aXRpZXMuaW5kZXhPZihhY3Rpdml0eV9pZCk7XG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGFjdGl2aXRpZXNbYWN0aXZpdHlfaWRdWydlcnJvcnMnXSkuaW5kZXhPZignY3JpdGljYWwnKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdEFsbC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRBY3Rpdml0aWVzLnB1c2goYWN0aXZpdHlfaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudC52YWx1ZSA9IHNlbGVjdGVkQ291bnQudmFsdWUgKyAxO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRBY3Rpdml0aWVzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmICghc2VsZWN0QWxsLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudC52YWx1ZSA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gaW1wb3J0QWN0aXZpdGllcygpIHtcbiAgICAgICAgICAgIGxvYWRlclRleHQudmFsdWUgPSBsYW5ndWFnZS5jb21tb25fbGFuZy5pbXBvcnRpbmdfY3N2X3htbF9maWxlO1xuICAgICAgICAgICAgbG9hZGVyLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wb3N0KCcvaW1wb3J0L2FjdGl2aXR5Jywge1xuICAgICAgICAgICAgICAgIGFjdGl2aXRpZXM6IHNlbGVjdGVkQWN0aXZpdGllcyxcbiAgICAgICAgICAgICAgICBmaWxldHlwZTogJ2NzdicsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvYWN0aXZpdGllcyc7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2FjdGl2aXRpZXMnO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgbGFuZ3VhZ2U6IGxhbmd1YWdlLCBhY3Rpdml0aWVzOiBhY3Rpdml0aWVzLCBzZWxlY3RlZEFjdGl2aXRpZXM6IHNlbGVjdGVkQWN0aXZpdGllcywgc2VsZWN0ZWRDb3VudDogc2VsZWN0ZWRDb3VudCwgYWN0aXZpdGllc0xlbmd0aDogYWN0aXZpdGllc0xlbmd0aCwgbG9hZGVyOiBsb2FkZXIsIHNlbGVjdEFsbDogc2VsZWN0QWxsLCBsb2FkZXJUZXh0OiBsb2FkZXJUZXh0LCB0YWJsZVJvdzogdGFibGVSb3csIHRhYmxlV2lkdGg6IHRhYmxlV2lkdGgsIHRpbWVyOiB0aW1lciwgZ2V0RGltZW5zaW9uczogZ2V0RGltZW5zaW9ucywgdXBkYXRlU2VsZWN0ZWRBY3Rpdml0aWVzOiB1cGRhdGVTZWxlY3RlZEFjdGl2aXRpZXMsIHNlbGVjdEFsbEFjdGl2aXRpZXM6IHNlbGVjdEFsbEFjdGl2aXRpZXMsIGltcG9ydEFjdGl2aXRpZXM6IGltcG9ydEFjdGl2aXRpZXMsIEJ0bkNvbXBvbmVudDogQnV0dG9uQ29tcG9uZW50X3Z1ZV8xLmRlZmF1bHQsIExvYWRlcjogUHJvZ3Jlc3NMb2FkZXJfdnVlXzEuZGVmYXVsdCwgUGxhY2Vob2xkZXI6IEltcG9ydFBsYWNlaG9sZGVyX3Z1ZV8xLmRlZmF1bHQsIExpc3RFbGVtZW50OiBMaXN0RWxlbWVudF92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBTaGltbWVyTG9hZGluZ192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9TaGltbWVyTG9hZGluZy52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0ltcG9ydFBsYWNlaG9sZGVyJyxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBTaGltbWVyOiBTaGltbWVyTG9hZGluZ192dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnTGlzdEVsZW1lbnQnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGFjdGl2aXR5OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgaW5kZXg6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB3aWR0aDogeyB0eXBlOiBOdW1iZXIsIHJlcXVpcmVkOiBmYWxzZSwgZGVmYXVsdDogMCB9LFxuICAgICAgICBzZWxlY3RlZEFjdGl2aXRpZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgZW1pdHM6IFsnc2VsZWN0RWxlbWVudCddLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZSwgZW1pdCA9IF9hLmVtaXQ7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIGFjdGl2ZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNob3dDcml0aWNhbCA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNob3dFcnJvciA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNob3dXYXJuaW5nID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgYWN0aXZpdGllcyA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoW10pO1xuICAgICAgICB2YXIgY3JpdGljYWxUb2dnbGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBlcnJvclRvZ2dsZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHdhcm5pbmdUb2dnbGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIGZ1bmN0aW9uIHRvZ2dsZUVycm9yKCkge1xuICAgICAgICAgICAgYWN0aXZlLnZhbHVlID0gIWFjdGl2ZS52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc2VsZWN0RWxlbWVudCA9IGZ1bmN0aW9uIChpbmRleCkge1xuICAgICAgICAgICAgZW1pdCgnc2VsZWN0RWxlbWVudCcsIGluZGV4KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNvdW50RXJyb3JzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGNvdW50ID0gMDtcbiAgICAgICAgICAgIGZvciAodmFyIHR5cGUgaW4gcHJvcHMuYWN0aXZpdHlbJ2Vycm9ycyddKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaW5kZXggaW4gcHJvcHMuYWN0aXZpdHlbJ2Vycm9ycyddW3R5cGVdKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ICs9IE9iamVjdC5rZXlzKHByb3BzLmFjdGl2aXR5WydlcnJvcnMnXVt0eXBlXVtpbmRleF0pLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY291bnQ7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjcml0aWNhbEFjY29yZGlvblRvZ2dsZSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBzaG93Q3JpdGljYWwudmFsdWUgPSAhc2hvd0NyaXRpY2FsLnZhbHVlO1xuICAgICAgICAgICAgdmFyIGN1cnJlbnRUYXJnZXQgPSBlLmN1cnJlbnRUYXJnZXQ7XG4gICAgICAgICAgICB2YXIgdGFyZ2V0ID0gY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jcml0aWNhbC1kcm9wZG93bi1jb250YWluZXInKTtcbiAgICAgICAgICAgIHZhciBlbEhlaWdodCA9IChfYSA9IHRhcmdldCA9PT0gbnVsbCB8fCB0YXJnZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRhcmdldC5xdWVyeVNlbGVjdG9yKCcuY3JpdGljYWwtZHJvcGRvd24nKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNsaWVudEhlaWdodDtcbiAgICAgICAgICAgIGlmIChjcml0aWNhbFRvZ2dsZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBcIi5jb25jYXQoZWxIZWlnaHQsIFwicHg7XCIpO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgICAgICAgICAgICAgY3JpdGljYWxUb2dnbGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiaGVpZ2h0OiBhdXRvO1wiO1xuICAgICAgICAgICAgICAgICAgICB9LCA2MDApO1xuICAgICAgICAgICAgICAgICAgICBjcml0aWNhbFRvZ2dsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgZXJyb3JBY2NvcmRpb25Ub2dnbGUgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgc2hvd0Vycm9yLnZhbHVlID0gIXNob3dFcnJvci52YWx1ZTtcbiAgICAgICAgICAgIHZhciBjdXJyZW50VGFyZ2V0ID0gZS5jdXJyZW50VGFyZ2V0O1xuICAgICAgICAgICAgdmFyIHRhcmdldCA9IGN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuZXJyb3ItZHJvcGRvd24tY29udGFpbmVyJyk7XG4gICAgICAgICAgICB2YXIgZWxIZWlnaHQgPSAoX2EgPSB0YXJnZXQgPT09IG51bGwgfHwgdGFyZ2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0YXJnZXQucXVlcnlTZWxlY3RvcignLmVycm9yLWRyb3Bkb3duJykpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jbGllbnRIZWlnaHQ7XG4gICAgICAgICAgICBpZiAoZXJyb3JUb2dnbGUudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogXCIuY29uY2F0KGVsSGVpZ2h0LCBcInB4O1wiKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yVG9nZ2xlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IFwiLmNvbmNhdChlbEhlaWdodCwgXCJweDtcIik7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogYXV0bztcIjtcbiAgICAgICAgICAgICAgICAgICAgfSwgNjAwKTtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JUb2dnbGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGVycm9yTGVuZ3RoID0gZnVuY3Rpb24gKGN1cnJlbnRFcnJvcikge1xuICAgICAgICAgICAgdmFyIGNvdW50ID0gMDtcbiAgICAgICAgICAgIC8vIGlmIChPYmplY3Qua2V5cyhwcm9wcy5hY3Rpdml0eSkuaW5kZXhPZignZXJyb3JzJykgIT09IC0xKSB7XG4gICAgICAgICAgICBPYmplY3QudmFsdWVzKHByb3BzLmFjdGl2aXR5WydlcnJvcnMnXVtjdXJyZW50RXJyb3JdKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICBjb3VudCArPSBPYmplY3Qua2V5cyhpdGVtKS5sZW5ndGg7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgIHJldHVybiBjb3VudDtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHdhcm5pbmdBY2NvcmRpb25Ub2dnbGUgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgc2hvd1dhcm5pbmcudmFsdWUgPSAhc2hvd1dhcm5pbmcudmFsdWU7XG4gICAgICAgICAgICB2YXIgY3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldDtcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSBjdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignLndhcm5pbmctZHJvcGRvd24tY29udGFpbmVyJyk7XG4gICAgICAgICAgICB2YXIgZWxIZWlnaHQgPSAoX2EgPSB0YXJnZXQgPT09IG51bGwgfHwgdGFyZ2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0YXJnZXQucXVlcnlTZWxlY3RvcignLndhcm5pbmctZHJvcGRvd24nKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNsaWVudEhlaWdodDtcbiAgICAgICAgICAgIGlmICh3YXJuaW5nVG9nZ2xlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IFwiLmNvbmNhdChlbEhlaWdodCwgXCJweDtcIik7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgICAgICAgICB3YXJuaW5nVG9nZ2xlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IFwiLmNvbmNhdChlbEhlaWdodCwgXCJweDtcIik7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBcImhlaWdodDogYXV0bztcIjtcbiAgICAgICAgICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgICAgICAgICAgICAgd2FybmluZ1RvZ2dsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHByb3BzLnNlbGVjdGVkQWN0aXZpdGllczsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHNlbGVjdGVkRGF0YSA9IEpTT04ucGFyc2UocHJvcHMuc2VsZWN0ZWRBY3Rpdml0aWVzKTtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZERhdGEubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihhY3Rpdml0aWVzLCBzZWxlY3RlZERhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYWN0aXZpdGllcy5sZW5ndGggPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgbGFuZ3VhZ2U6IGxhbmd1YWdlLCBwcm9wczogcHJvcHMsIGVtaXQ6IGVtaXQsIGFjdGl2ZTogYWN0aXZlLCBzaG93Q3JpdGljYWw6IHNob3dDcml0aWNhbCwgc2hvd0Vycm9yOiBzaG93RXJyb3IsIHNob3dXYXJuaW5nOiBzaG93V2FybmluZywgYWN0aXZpdGllczogYWN0aXZpdGllcywgY3JpdGljYWxUb2dnbGU6IGNyaXRpY2FsVG9nZ2xlLCBlcnJvclRvZ2dsZTogZXJyb3JUb2dnbGUsIHdhcm5pbmdUb2dnbGU6IHdhcm5pbmdUb2dnbGUsIHRvZ2dsZUVycm9yOiB0b2dnbGVFcnJvciwgc2VsZWN0RWxlbWVudDogc2VsZWN0RWxlbWVudCwgY291bnRFcnJvcnM6IGNvdW50RXJyb3JzLCBjcml0aWNhbEFjY29yZGlvblRvZ2dsZTogY3JpdGljYWxBY2NvcmRpb25Ub2dnbGUsIGVycm9yQWNjb3JkaW9uVG9nZ2xlOiBlcnJvckFjY29yZGlvblRvZ2dsZSwgZXJyb3JMZW5ndGg6IGVycm9yTGVuZ3RoLCB3YXJuaW5nQWNjb3JkaW9uVG9nZ2xlOiB3YXJuaW5nQWNjb3JkaW9uVG9nZ2xlIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBYbHNMaXN0RXJyb3JfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvWGxzTGlzdEVycm9yLnZ1ZVwiKSk7XG52YXIgUG9wdXBNb2RhbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZVwiKSk7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIFRvYXN0TWVzc2FnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlXCIpKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgUHJvZ3Jlc3NMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvUHJvZ3Jlc3NMb2FkZXIudnVlXCIpKTtcbnZhciBCdXR0b25Db21wb25lbnRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvQnV0dG9uQ29tcG9uZW50LnZ1ZVwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnWGxzTGlzdCcsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgc3RhdHVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgLy8gTnVtYmVyIHdpdGggYSBkZWZhdWx0IHZhbHVlXG4gICAgICAgIGltcG9ydERhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBnbG9iYWxFcnJvcjoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yQ291bnQ6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIHNlbGVjdEFsbCA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNvcnRPcmRlciA9ICgwLCB2dWVfMi5yZWYpKCdhc2NlZGluZycpO1xuICAgICAgICB2YXIgdGFibGVSb3cgPSAoMCwgdnVlXzIucmVmKSh7fSk7XG4gICAgICAgIHZhciBzaG93Q3JpdGljYWxFcnJvck1vZGVsID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd0lkZW50aWZpZXJFcnJvck1vZGVsID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgbG9hZGVyID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpLCBsb2FkZXJUZXh0ID0gKDAsIHZ1ZV8yLnJlZikoJ0FkZGluZyBhY3Rpdml0aWVzJyk7XG4gICAgICAgIHZhciBzaG93Q3JpdGljYWxFcnJvck1lc3NhZ2UgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzaG93R0xvYmFsRXJyb3IgPSAoMCwgdnVlXzIucmVmKSh0cnVlKTtcbiAgICAgICAgdmFyIHNlbGVjdGVkQ291bnQgPSAoMCwgdnVlXzIucmVmKSgwKTtcbiAgICAgICAgdmFyIGFjdGl2aXRpZXNMZW5ndGggPSAoMCwgdnVlXzIucmVmKSgwKTtcbiAgICAgICAgdmFyIHNlbGVjdGVkQWN0aXZpdGllcyA9ICgwLCB2dWVfMi5yZWYpKFtdKTtcbiAgICAgICAgdmFyIHRhYmxlV2lkdGggPSAoMCwgdnVlXzIucmVmKSh7fSk7XG4gICAgICAgIHZhciB0b2FzdE1lc3NhZ2UgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciB0b2FzdFR5cGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB0b2FzdFZpc2liaWxpdHkgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBnZXREaW1lbnNpb25zID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYikge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoX2IubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gWzQgLyp5aWVsZCovLCAoMCwgdnVlXzIubmV4dFRpY2spKCldO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICBfYi5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWJsZVdpZHRoLnZhbHVlID0gKF9hID0gdGFibGVSb3cgPT09IG51bGwgfHwgdGFibGVSb3cgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRhYmxlUm93LnZhbHVlWycwJ10pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jbGllbnRXaWR0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH07XG4gICAgICAgIHZhciBzb3J0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc29ydE9yZGVyLnZhbHVlID09PSAnYXNjZW5kaW5nJ1xuICAgICAgICAgICAgICAgID8gKHNvcnRPcmRlci52YWx1ZSA9ICdkZXNjZW5kaW5nJylcbiAgICAgICAgICAgICAgICA6IChzb3J0T3JkZXIudmFsdWUgPSAnYXNjZW5kaW5nJyk7XG4gICAgICAgICAgICB2YXIgc29ydGVkRGF0YSA9IHByb3BzLmltcG9ydERhdGE7XG4gICAgICAgICAgICBzd2l0Y2ggKHByb3BzLnN0YXR1c1sndGVtcGxhdGUnXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2FjdGl2aXR5JzpcbiAgICAgICAgICAgICAgICAgICAgc29ydGVkRGF0YS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5kYXRhLnRpdGxlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPCBiLmRhdGEudGl0bGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiLmRhdGEudGl0bGVbMF0ubmFycmF0aXZlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogLTE7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdyZXN1bHQnOlxuICAgICAgICAgICAgICAgICAgICBzb3J0ZWREYXRhLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhLmRhdGEudGl0bGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLmRhdGEudGl0bGVbMF0ubmFycmF0aXZlWzBdWyduYXJyYXRpdmUnXS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiLmRhdGEudGl0bGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiLmRhdGEudGl0bGVbMF0ubmFycmF0aXZlWzBdWyduYXJyYXRpdmUnXS50b1N0cmluZygpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IC0xO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAncGVyaW9kJzpcbiAgICAgICAgICAgICAgICAgICAgc29ydGVkRGF0YS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5kYXRhLnRpdGxlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZVswXVsnbmFycmF0aXZlJ10udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpIDxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYi5kYXRhLnRpdGxlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYi5kYXRhLnRpdGxlWzBdLm5hcnJhdGl2ZVswXVsnbmFycmF0aXZlJ10udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAtMTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2luZGljYXRvcic6XG4gICAgICAgICAgICAgICAgICAgIHNvcnRlZERhdGEuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEuZGF0YS50aXRsZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuZGF0YS50aXRsZVswXS5uYXJyYXRpdmVbMF1bJ25hcnJhdGl2ZSddLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIuZGF0YS50aXRsZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIuZGF0YS50aXRsZVswXS5uYXJyYXRpdmVbMF1bJ25hcnJhdGl2ZSddLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogLTE7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLm9uVW5tb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgZ2V0RGltZW5zaW9ucyk7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBnZXREaW1lbnNpb25zKCk7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgZ2V0RGltZW5zaW9ucyk7XG4gICAgICAgICAgICBjaGVja0NyaXRpY2FsRXJyb3IoKTtcbiAgICAgICAgICAgIGlmIChwcm9wcy5nbG9iYWxFcnJvcikge1xuICAgICAgICAgICAgICAgIHNob3dJZGVudGlmaWVyRXJyb3JNb2RlbC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhY3Rpdml0aWVzTGVuZ3RoLnZhbHVlID0gcHJvcHMuaW1wb3J0RGF0YS5sZW5ndGg7XG4gICAgICAgICAgICBsb2FkZXJUZXh0LnZhbHVlID0gXCJBZGRpbmcgXCIuY29uY2F0KHByb3BzLnN0YXR1cy50ZW1wbGF0ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgY2FuY2VsSW1wb3J0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hvd0NyaXRpY2FsRXJyb3JNb2RlbC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgc2hvd0dMb2JhbEVycm9yLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZGVsZXRlKFwiL2ltcG9ydC94bHNcIikudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgdG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuICh0b2FzdFZpc2liaWxpdHkudmFsdWUgPSBmYWxzZSk7IH0sIDE1MDAwKTtcbiAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2UudmFsdWUgPSByZXNwb25zZS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRvYXN0VHlwZS52YWx1ZSA9IHJlc3BvbnNlLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9pbXBvcnQveGxzJztcbiAgICAgICAgICAgICAgICB9LCAyMDAwKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZG93bmxvYWRJZGVudGlmaWVyRXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdGV4dDtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgcHJvcHMuZ2xvYmFsRXJyb3IgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgdGV4dCA9IE9iamVjdC52YWx1ZXMocHJvcHMuZ2xvYmFsRXJyb3IpLmpvaW4oJ1xcbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGZpbGUgPSBuZXcgRmlsZShbJ1xcdWZlZmYnICsgdGV4dF0sICdpZGVudGlmaWVyLWVycm9ycy50eHQnLCB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQvcGxhaW46Y2hhcnNldD1VVEYtOCcsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHZhciB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKTtcbiAgICAgICAgICAgIHZhciBhbmNob3JUYWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgICAgICBhbmNob3JUYWcuaHJlZiA9IHVybDtcbiAgICAgICAgICAgIGFuY2hvclRhZy5kb3dubG9hZCA9IGZpbGUubmFtZTtcbiAgICAgICAgICAgIGFuY2hvclRhZy5jbGljaygpO1xuICAgICAgICAgICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNoZWNrQ3JpdGljYWxFcnJvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHZhciBjcml0aWNhbEFycnkgPSBwcm9wcy5pbXBvcnREYXRhICYmXG4gICAgICAgICAgICAgICAgcHJvcHMuaW1wb3J0RGF0YS5tYXAoZnVuY3Rpb24gKGRhdGEsIGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvckxlbmd0aCgnY3JpdGljYWwnLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB2YXIgdG90YWxDcmlyaWNhbEVycm9yQ291bnQgPSAwO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjcml0aWNhbEFycnkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICB0b3RhbENyaXJpY2FsRXJyb3JDb3VudCArPSBjcml0aWNhbEFycnlbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodG90YWxDcmlyaWNhbEVycm9yQ291bnQgPiAwKSB7XG4gICAgICAgICAgICAgICAgc2hvd0NyaXRpY2FsRXJyb3JNZXNzYWdlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0b3RhbENyaXJpY2FsRXJyb3JDb3VudCA+IDAgfHwgKChfYSA9IHByb3BzLmdsb2JhbEVycm9yKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSA+IDApIHtcbiAgICAgICAgICAgICAgICBzaG93Q3JpdGljYWxFcnJvck1vZGVsLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNvdW50RXJyb3JzID0gZnVuY3Rpb24gKGFjdGl2aXR5SW5kZXgpIHtcbiAgICAgICAgICAgIHZhciBjb3VudCA9IDA7XG4gICAgICAgICAgICBmb3IgKHZhciB0eXBlIGluIHByb3BzLmltcG9ydERhdGFbYWN0aXZpdHlJbmRleF1bJ2Vycm9ycyddKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaW5kZXggaW4gcHJvcHMuaW1wb3J0RGF0YVthY3Rpdml0eUluZGV4XVsnZXJyb3JzJ11bdHlwZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgY291bnQgKz0gT2JqZWN0LmtleXMocHJvcHMuaW1wb3J0RGF0YVthY3Rpdml0eUluZGV4XVsnZXJyb3JzJ11bdHlwZV1baW5kZXhdKS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvdW50O1xuICAgICAgICB9O1xuICAgICAgICB2YXIgYWRkQWN0aXZpdGllcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZEFjdGl2aXRpZXMudmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGxvYWRlci52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgIC5wb3N0KFwiL2ltcG9ydC94bHMvYWN0aXZpdHlcIiwgeyBhY3Rpdml0aWVzOiBzZWxlY3RlZEFjdGl2aXRpZXMudmFsdWUgfSlcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvYWN0aXZpdGllcyc7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBlcnJvckxlbmd0aCA9IGZ1bmN0aW9uIChlcnJvclR5cGUsIGFjdGl2aXR5SW5kZXgpIHtcbiAgICAgICAgICAgIHZhciBjb3VudCA9IDA7XG4gICAgICAgICAgICBmb3IgKHZhciBpbmRleCBpbiBwcm9wcy5pbXBvcnREYXRhW2FjdGl2aXR5SW5kZXhdWydlcnJvcnMnXVtlcnJvclR5cGVdKSB7XG4gICAgICAgICAgICAgICAgY291bnQgKz0gT2JqZWN0LmtleXMocHJvcHMuaW1wb3J0RGF0YVthY3Rpdml0eUluZGV4XVsnZXJyb3JzJ11bZXJyb3JUeXBlXVtpbmRleF0pLmxlbmd0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb3VudDtcbiAgICAgICAgfTtcbiAgICAgICAgZnVuY3Rpb24gc2VsZWN0QWxsQWN0aXZpdGllcygpIHtcbiAgICAgICAgICAgIHNlbGVjdEFsbC52YWx1ZSA9ICFzZWxlY3RBbGwudmFsdWU7XG4gICAgICAgICAgICBzZWxlY3RlZENvdW50LnZhbHVlID0gMDtcbiAgICAgICAgICAgIHNlbGVjdGVkQWN0aXZpdGllcy52YWx1ZS5sZW5ndGggPSAwO1xuICAgICAgICAgICAgT2JqZWN0LmtleXMocHJvcHMuaW1wb3J0RGF0YSkuZm9yRWFjaChmdW5jdGlvbiAoYWN0aXZpdHlfaWQpIHtcbiAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSBzZWxlY3RlZEFjdGl2aXRpZXMudmFsdWUuaW5kZXhPZihhY3Rpdml0eV9pZCk7XG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKHByb3BzLmltcG9ydERhdGFbYWN0aXZpdHlfaWRdWydlcnJvcnMnXSkuaW5kZXhPZignY3JpdGljYWwnKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdEFsbC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRBY3Rpdml0aWVzLnZhbHVlLnB1c2goYWN0aXZpdHlfaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudC52YWx1ZSA9IHNlbGVjdGVkQ291bnQudmFsdWUgKyAxO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRBY3Rpdml0aWVzLnZhbHVlLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmICghc2VsZWN0QWxsLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudC52YWx1ZSA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgc2VsZWN0QWxsOiBzZWxlY3RBbGwsIHNvcnRPcmRlcjogc29ydE9yZGVyLCB0YWJsZVJvdzogdGFibGVSb3csIHNob3dDcml0aWNhbEVycm9yTW9kZWw6IHNob3dDcml0aWNhbEVycm9yTW9kZWwsIHNob3dJZGVudGlmaWVyRXJyb3JNb2RlbDogc2hvd0lkZW50aWZpZXJFcnJvck1vZGVsLCBsb2FkZXI6IGxvYWRlciwgbG9hZGVyVGV4dDogbG9hZGVyVGV4dCwgc2hvd0NyaXRpY2FsRXJyb3JNZXNzYWdlOiBzaG93Q3JpdGljYWxFcnJvck1lc3NhZ2UsIHNob3dHTG9iYWxFcnJvcjogc2hvd0dMb2JhbEVycm9yLCBzZWxlY3RlZENvdW50OiBzZWxlY3RlZENvdW50LCBhY3Rpdml0aWVzTGVuZ3RoOiBhY3Rpdml0aWVzTGVuZ3RoLCBzZWxlY3RlZEFjdGl2aXRpZXM6IHNlbGVjdGVkQWN0aXZpdGllcywgdGFibGVXaWR0aDogdGFibGVXaWR0aCwgdG9hc3RNZXNzYWdlOiB0b2FzdE1lc3NhZ2UsIHRvYXN0VHlwZTogdG9hc3RUeXBlLCB0b2FzdFZpc2liaWxpdHk6IHRvYXN0VmlzaWJpbGl0eSwgcHJvcHM6IHByb3BzLCBnZXREaW1lbnNpb25zOiBnZXREaW1lbnNpb25zLCBzb3J0OiBzb3J0LCBjYW5jZWxJbXBvcnQ6IGNhbmNlbEltcG9ydCwgZG93bmxvYWRJZGVudGlmaWVyRXJyb3I6IGRvd25sb2FkSWRlbnRpZmllckVycm9yLCBjaGVja0NyaXRpY2FsRXJyb3I6IGNoZWNrQ3JpdGljYWxFcnJvciwgY291bnRFcnJvcnM6IGNvdW50RXJyb3JzLCBhZGRBY3Rpdml0aWVzOiBhZGRBY3Rpdml0aWVzLCBlcnJvckxlbmd0aDogZXJyb3JMZW5ndGgsIHNlbGVjdEFsbEFjdGl2aXRpZXM6IHNlbGVjdEFsbEFjdGl2aXRpZXMsIFhsc0xpc3RFcnJvcjogWGxzTGlzdEVycm9yX3Z1ZV8xLmRlZmF1bHQsIE1vZGFsOiBQb3B1cE1vZGFsX3Z1ZV8xLmRlZmF1bHQsIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCwgTG9hZGVyOiBQcm9ncmVzc0xvYWRlcl92dWVfMS5kZWZhdWx0LCBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBIb3ZlclRleHRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uLy4uL2NvbXBvbmVudHMvSG92ZXJUZXh0LnZ1ZVwiKSk7XG52YXIgUmFkaWFsUHJvZ3Jlc3NCYXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uLy4uL2NvbXBvbmVudHMvUmFkaWFsUHJvZ3Jlc3NCYXIudnVlXCIpKTtcbnZhciBPcmdhbmlzYXRpb25FbGVtZW50c192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9PcmdhbmlzYXRpb25FbGVtZW50cy52dWVcIikpO1xudmFyIE9yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL09yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xudmFyIE9yZ2FuaXphdGlvblB1Ymxpc2hVbnB1Ymxpc2hCdXR0b25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvc2VjdGlvbnMvT3JnYW5pemF0aW9uUHVibGlzaFVucHVibGlzaEJ1dHRvbi52dWVcIikpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgY29yZV8yID0gcmVxdWlyZShcIkB2dWV1c2UvY29yZVwiKTtcbnZhciBFcnJvclBvcFVwX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0Vycm9yUG9wVXAudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBuYW1lOiAnT3JnYW5pc2F0aW9uRGF0YScsXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBIb3ZlclRleHQ6IEhvdmVyVGV4dF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBSYWRpYWxQcm9ncmVzc0JhcjogUmFkaWFsUHJvZ3Jlc3NCYXJfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgT3JnYW5pc2F0aW9uRWxlbWVudHM6IE9yZ2FuaXNhdGlvbkVsZW1lbnRzX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIE9yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsOiBPcmdhbmlzYXRpb25FbGVtZW50c0RldGFpbF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBUb2FzdDogVG9hc3RNZXNzYWdlX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIFB1Ymxpc2hVbnB1Ymxpc2g6IE9yZ2FuaXphdGlvblB1Ymxpc2hVbnB1Ymxpc2hCdXR0b25fdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgRXJyb3JQb3BVcDogRXJyb3JQb3BVcF92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZWxlbWVudHM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBncm91cHM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBvcmdhbml6YXRpb246IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBwcm9ncmVzczoge1xuICAgICAgICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRvYXN0OiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBtYW5kYXRvcnlDb21wbGV0ZWQ6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RhdHVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdXNlclJvbGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIHRvYXN0RGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICAgIHR5cGU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZXJyb3JEYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBzaG93U2lkZWJhciA9ICgwLCB2dWVfMS5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNjcmVlbldpZHRoID0gKDAsIHZ1ZV8xLnJlZikoMCk7XG4gICAgICAgIHZhciBfYSA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBwdWJsaXNoVmFsdWUgPSBfYVswXSwgcHVibGlzaFRvZ2dsZSA9IF9hWzFdO1xuICAgICAgICB2YXIgX2IgPSAoMCwgY29yZV8xLnVzZVRvZ2dsZSkoKSwgdW5wdWJsaXNoVmFsdWUgPSBfYlswXSwgdW5wdWJsaXNoVG9nZ2xlID0gX2JbMV07XG4gICAgICAgIHZhciBfYyA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBkZWxldGVWYWx1ZSA9IF9jWzBdLCBkZWxldGVUb2dnbGUgPSBfY1sxXTtcbiAgICAgICAgdmFyIF9kID0gKDAsIGNvcmVfMS51c2VUb2dnbGUpKCksIGRvd25sb2FkVmFsdWUgPSBfZFswXSwgZG93bmxvYWRUb2dnbGUgPSBfZFsxXTtcbiAgICAgICAgdmFyIHBvc2l0aW9uWSA9ICgwLCB2dWVfMS5yZWYpKDApO1xuICAgICAgICB2YXIgdG9nZ2xlU2lkZWJhciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNob3dTaWRlYmFyLnZhbHVlID0gIXNob3dTaWRlYmFyLnZhbHVlO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzEub25Vbm1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpO1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNhbGNXaWR0aCk7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgY2FsY1dpZHRoKTtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpO1xuICAgICAgICAgICAgaWYgKHByb3BzLnRvYXN0Lm1lc3NhZ2UgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSBwcm9wcy50b2FzdC50eXBlID09PSAnc3VjY2VzcycgPyB0cnVlIDogZmFsc2U7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcHJvcHMudG9hc3QubWVzc2FnZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBjYWxjV2lkdGggPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIHNjcmVlbldpZHRoLnZhbHVlID0gZXZlbnQudGFyZ2V0LmlubmVyV2lkdGg7XG4gICAgICAgICAgICBpZiAoc2NyZWVuV2lkdGgudmFsdWUgPiAxMDI0KSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc2hvd1NpZGViYXIudmFsdWUgJiZcbiAgICAgICAgICAgICAgICAgICAgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGhhbmRsZVNjcm9sbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHBvc2l0aW9uWS52YWx1ZSA9IHdpbmRvdy5zY3JvbGxZO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgaXN0b3BWaXNpYmxlID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gcG9zaXRpb25ZLnZhbHVlID09PSAwO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGlnbm9yZVVwZGF0ZXMgPSAoMCwgY29yZV8yLndhdGNoSWdub3JhYmxlKSh0b2FzdERhdGEsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSwge1xuICAgICAgICAgICAgZmx1c2g6ICdzeW5jJyxcbiAgICAgICAgfSkuaWdub3JlVXBkYXRlcztcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzaG93U2lkZWJhci52YWx1ZTsgfSwgZnVuY3Rpb24gKHNpZGViYXIpIHtcbiAgICAgICAgICAgIGlmIChzaWRlYmFyKSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiB0b2FzdERhdGEudmlzaWJpbGl0eTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZ25vcmVUb2FzdFVwZGF0ZSgpO1xuICAgICAgICAgICAgfSwgMTAwMDApO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGlnbm9yZVRvYXN0VXBkYXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWdub3JlVXBkYXRlcyhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSAnJztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICAvKipcbiAgICAgICAgICogR3JvdXBpbmcgYWxsIHRoZSBkYXRhJ3MgZm9yIHNjcm9sbCBmdW5jdGlvblxuICAgICAgICAgKlxuICAgICAgICAgKiB0aGlzIGRhdGEgaXMgY3JlYXRlZCB1c2luZyBwcm9wcy5ncm91cHMgYW5kIHByb3BzLmFjdGl2aXR5XG4gICAgICAgICAqL1xuICAgICAgICB2YXIgX2UgPSAoMCwgdnVlXzEudG9SZWZzKShwcm9wcyksIGdyb3VwcyA9IF9lLmdyb3Vwcywgb3JnYW5pemF0aW9uID0gX2Uub3JnYW5pemF0aW9uLCBlbGVtZW50cyA9IF9lLmVsZW1lbnRzLCBncm91cGVkRGF0YSA9IGdyb3Vwcy52YWx1ZSwgb3JnYW5pemF0aW9uUHJvcHMgPSBvcmdhbml6YXRpb24udmFsdWUsIG9yZ2FuaXphdGlvbkRhdGEgPSBncm91cHMudmFsdWUsIGVsZW1lbnRQcm9wcyA9IGVsZW1lbnRzLnZhbHVlO1xuICAgICAgICAvLyBnZW5lcmF0aW5nIGF2YWlsYWJsZSBlbGVtZW50c1xuICAgICAgICBPYmplY3Qua2V5cyhvcmdhbml6YXRpb25EYXRhKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgdmFyIGZsYWcgPSBmYWxzZTtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKG9yZ2FuaXphdGlvbkRhdGFba2V5XVsnZWxlbWVudHMnXSkubWFwKGZ1bmN0aW9uIChrKSB7XG4gICAgICAgICAgICAgICAgaWYgKG9yZ2FuaXphdGlvblByb3BzW2tdIHx8IHR5cGVvZiBvcmdhbml6YXRpb25Qcm9wc1trXSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgb3JnYW5pemF0aW9uRGF0YVtrZXldWydlbGVtZW50cyddW2tdWydjb250ZW50J10gPVxuICAgICAgICAgICAgICAgICAgICAgICAgb3JnYW5pemF0aW9uUHJvcHNba107XG4gICAgICAgICAgICAgICAgICAgIGZsYWcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50UHJvcHNba11bJ2hhc19kYXRhJ10gPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG9yZ2FuaXphdGlvbkRhdGFba2V5XVtrXTtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudFByb3BzW2tdWydoYXNfZGF0YSddID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsZW1lbnRQcm9wc1trXVsnY29yZSddID1cbiAgICAgICAgICAgICAgICAgICAgb3JnYW5pemF0aW9uRGF0YVtrZXldWydlbGVtZW50cyddW2tdWydtYW5kYXRvcnknXTtcbiAgICAgICAgICAgICAgICBlbGVtZW50UHJvcHNba11bJ2NvbXBsZXRlZCddID1cbiAgICAgICAgICAgICAgICAgICAgayA9PT0gJ29yZ2FuaXNhdGlvbl9pZGVudGlmaWVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBvcmdhbml6YXRpb25Qcm9wc1snZWxlbWVudF9zdGF0dXMnXVsnaWRlbnRpZmllciddXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG9yZ2FuaXphdGlvblByb3BzWydlbGVtZW50X3N0YXR1cyddW2tdO1xuICAgICAgICAgICAgICAgIGVsZW1lbnRQcm9wc1trXVsnbm90X2NvbXBsZXRlZCddID0gIWVsZW1lbnRQcm9wc1trXVsnY29tcGxldGVkJ107XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChmbGFnID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBvcmdhbml6YXRpb25EYXRhW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBnZW5lcmF0aW5nIGF2YWlsYWJsZSBjYXRlZ29yaWVzIG9mIGVsZW1lbnRzXG4gICAgICAgIE9iamVjdC5rZXlzKGdyb3VwZWREYXRhKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvcmdhbml6YXRpb25EYXRhLCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgZ3JvdXBlZERhdGFba2V5XVsnc3RhdHVzJ10gPSAnZW5hYmxlZCc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBncm91cGVkRGF0YVtrZXldWydzdGF0dXMnXSA9ICdkaXNhYmxlZCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgcHVibGlzaE1lc3NhZ2UgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgcHVibGlzaFN0YXR1cyA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgaXNfcHVibGlzaGVkOiBvcmdhbml6YXRpb25Qcm9wcy5pc19wdWJsaXNoZWQsXG4gICAgICAgICAgICBzdGF0dXM6IG9yZ2FuaXphdGlvblByb3BzLnN0YXR1cyxcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgncHVibGlzaE1lc3NhZ2UnLCBwdWJsaXNoTWVzc2FnZSk7XG4gICAgICAgICgwLCB2dWVfMS5wcm92aWRlKSgnbWFuZGF0b3J5Q29tcGxldGVkJywgcHJvcHMubWFuZGF0b3J5Q29tcGxldGVkKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCd0b2FzdERhdGEnLCB0b2FzdERhdGEpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3B1Ymxpc2hTdGF0dXMnLCBwdWJsaXNoU3RhdHVzKTtcbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCdlcnJvckRhdGEnLCBlcnJvckRhdGEpO1xuICAgICAgICAoMCwgdnVlXzEucHJvdmlkZSkoJ3VzZXJSb2xlJywgcHJvcHMudXNlclJvbGUpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ3JvdXBlZERhdGE6IGdyb3VwZWREYXRhLFxuICAgICAgICAgICAgb3JnYW5pemF0aW9uRGF0YTogb3JnYW5pemF0aW9uRGF0YSxcbiAgICAgICAgICAgIHB1Ymxpc2hWYWx1ZTogcHVibGlzaFZhbHVlLFxuICAgICAgICAgICAgcHVibGlzaFRvZ2dsZTogcHVibGlzaFRvZ2dsZSxcbiAgICAgICAgICAgIHVucHVibGlzaFZhbHVlOiB1bnB1Ymxpc2hWYWx1ZSxcbiAgICAgICAgICAgIHVucHVibGlzaFRvZ2dsZTogdW5wdWJsaXNoVG9nZ2xlLFxuICAgICAgICAgICAgZGVsZXRlVmFsdWU6IGRlbGV0ZVZhbHVlLFxuICAgICAgICAgICAgZGVsZXRlVG9nZ2xlOiBkZWxldGVUb2dnbGUsXG4gICAgICAgICAgICBkb3dubG9hZFZhbHVlOiBkb3dubG9hZFZhbHVlLFxuICAgICAgICAgICAgZG93bmxvYWRUb2dnbGU6IGRvd25sb2FkVG9nZ2xlLFxuICAgICAgICAgICAgZWxlbWVudFByb3BzOiBlbGVtZW50UHJvcHMsXG4gICAgICAgICAgICB0b2FzdERhdGE6IHRvYXN0RGF0YSxcbiAgICAgICAgICAgIHB1Ymxpc2hTdGF0dXM6IHB1Ymxpc2hTdGF0dXMsXG4gICAgICAgICAgICBlcnJvckRhdGE6IGVycm9yRGF0YSxcbiAgICAgICAgICAgIHRvZ2dsZVNpZGViYXI6IHRvZ2dsZVNpZGViYXIsXG4gICAgICAgICAgICBzaG93U2lkZWJhcjogc2hvd1NpZGViYXIsXG4gICAgICAgICAgICBpc3RvcFZpc2libGU6IGlzdG9wVmlzaWJsZSxcbiAgICAgICAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgY29yZUVsZW1lbnRzXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS9jb3JlRWxlbWVudHNcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnT3JnYW5pc2F0aW9uRWxlbWVudHMnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBzdGF0dXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjb21wbGV0ZWQ6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBtYW5kYXRvcnk6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIHByb3BzID0gX19wcm9wcztcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciBfYiA9ICgwLCBjb3JlXzEudXNlVG9nZ2xlKSgpLCBzZWFyY2hCdG5WYWx1ZSA9IF9iWzBdLCBzZWFyY2hCdG5Ub2dnbGUgPSBfYlsxXTtcbiAgICAgICAgdmFyIGRyb3Bkb3duID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIGRyb3Bkb3duQnRuID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIHVzZXJSb2xlID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3VzZXJSb2xlJyk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTZWFyY2ggZnVuY3Rpb25hbGl0eVxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIGVsZW1lbnRzID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBzZWFyY2g6ICcnLFxuICAgICAgICAgICAgc3RhdHVzOiAnJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBlbGVtZW50SWNvbnMgPSB7XG4gICAgICAgICAgICBjb21wbGV0ZWQ6ICdkb3VibGUtdGljaycsXG4gICAgICAgICAgICBub3RfY29tcGxldGVkOiAncmVkLWNyb3NzJyxcbiAgICAgICAgICAgIGNvcmU6ICdjb3JlJyxcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGFzQXJyYXlEYXRhID0gT2JqZWN0LmVudHJpZXMocHJvcHMuZGF0YSk7XG4gICAgICAgIHZhciBmaWx0ZXJlZEVsZW1lbnRzID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZmlsdGVyZWQgPSBhc0FycmF5RGF0YS5maWx0ZXIoZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgdmFyIGtleSA9IF9hWzBdLCB2YWx1ZSA9IF9hWzFdO1xuICAgICAgICAgICAgICAgIGlmICghZWxlbWVudHMuc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBsYW5ndWFnZS5lbGVtZW50c19jb21tb25fbGFuZ1trZXldXG4gICAgICAgICAgICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmluY2x1ZGVzKGVsZW1lbnRzLnNlYXJjaC50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL18vZywgJyAnKS5yZXBsYWNlKC8tL2csICdfJykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlW2VsZW1lbnRzLnN0YXR1c10pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBrZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5pbmNsdWRlcyhlbGVtZW50cy5zZWFyY2gudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9fL2csICcgJykucmVwbGFjZSgvLS9nLCAnXycpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdmFyIGp1c3RTdHJpbmdzID0gT2JqZWN0LmZyb21FbnRyaWVzKGZpbHRlcmVkKTtcbiAgICAgICAgICAgIHJldHVybiBqdXN0U3RyaW5ncztcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMi5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFkcm9wZG93bkJ0bi52YWx1ZS5jb250YWlucyhlLnRhcmdldCkgJiZcbiAgICAgICAgICAgICAgICAgICAgIWRyb3Bkb3duLnZhbHVlLmNvbnRhaW5zKGUudGFyZ2V0KSAmJlxuICAgICAgICAgICAgICAgICAgICBzZWFyY2hCdG5WYWx1ZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBzZWFyY2hCdG5Ub2dnbGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBkcm9wZG93bkZpbHRlciA9IGZ1bmN0aW9uIChzKSB7XG4gICAgICAgICAgICBlbGVtZW50cy5zdGF0dXMgPSBzO1xuICAgICAgICAgICAgc2VhcmNoQnRuVG9nZ2xlKCk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGxhbmd1YWdlOiBsYW5ndWFnZSwgcHJvcHM6IHByb3BzLCBzZWFyY2hCdG5WYWx1ZTogc2VhcmNoQnRuVmFsdWUsIHNlYXJjaEJ0blRvZ2dsZTogc2VhcmNoQnRuVG9nZ2xlLCBkcm9wZG93bjogZHJvcGRvd24sIGRyb3Bkb3duQnRuOiBkcm9wZG93bkJ0biwgdXNlclJvbGU6IHVzZXJSb2xlLCBlbGVtZW50czogZWxlbWVudHMsIGVsZW1lbnRJY29uczogZWxlbWVudEljb25zLCBhc0FycmF5RGF0YTogYXNBcnJheURhdGEsIGZpbHRlcmVkRWxlbWVudHM6IGZpbHRlcmVkRWxlbWVudHMsIGRyb3Bkb3duRmlsdGVyOiBkcm9wZG93bkZpbHRlciwgb3JnTWFuZGF0b3J5RWxlbWVudHM6IGNvcmVFbGVtZW50c18xLm9yZ01hbmRhdG9yeUVsZW1lbnRzIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgSG92ZXJUZXh0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0hvdmVyVGV4dC52dWVcIikpO1xudmFyIGNvcmVFbGVtZW50c18xID0gcmVxdWlyZShcIkNvbXBvc2FibGUvY29yZUVsZW1lbnRzXCIpO1xudmFyIEluZGV4XzEgPSByZXF1aXJlKFwiT3JnYW5pc2F0aW9uL2VsZW1lbnRzL0luZGV4XCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ09yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsJyxcbiAgICBwcm9wczoge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdGl0bGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB0b29sdGlwOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0IHx8IEFycmF5LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGxhbmd1YWdlOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBkZWZhdWx0OiAnZW4nLFxuICAgICAgICB9LFxuICAgICAgICB3aWR0aDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGVzOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RhdHVzOiB7XG4gICAgICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgdHJhbnNsYXRpb24gPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIHVzZXJSb2xlID0gKDAsIHZ1ZV8yLmluamVjdCkoJ3VzZXJSb2xlJyk7XG4gICAgICAgIHZhciBsYXlvdXQgPSAnYmFzaXMtNi8xMic7XG4gICAgICAgIGlmIChwcm9wcy53aWR0aCA9PT0gJ2Z1bGwnKSB7XG4gICAgICAgICAgICBsYXlvdXQgPSAnYmFzaXMtZnVsbCc7XG4gICAgICAgIH1cbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCdvcmdUeXBlcycsIHByb3BzLnR5cGVzKTtcbiAgICAgICAgdmFyIHJlcGxhY2VVbmRlcnNjb3JlID0gZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgdmFyIHJlZ2V4ID0gL18vZztcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBzdHJpbmcucmVwbGFjZShyZWdleCwgJy0nKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IHRyYW5zbGF0aW9uOiB0cmFuc2xhdGlvbiwgcHJvcHM6IHByb3BzLCB1c2VyUm9sZTogdXNlclJvbGUsIGxheW91dDogbGF5b3V0LCByZXBsYWNlVW5kZXJzY29yZTogcmVwbGFjZVVuZGVyc2NvcmUsIEhvdmVyVGV4dDogSG92ZXJUZXh0X3Z1ZV8xLmRlZmF1bHQsIG9yZ01hbmRhdG9yeUVsZW1lbnRzOiBjb3JlRWxlbWVudHNfMS5vcmdNYW5kYXRvcnlFbGVtZW50cywgUmVwb3J0aW5nT3JnYW5pc2F0aW9uOiBJbmRleF8xLlJlcG9ydGluZ09yZ2FuaXNhdGlvbiwgVG90YWxCdWRnZXQ6IEluZGV4XzEuVG90YWxCdWRnZXQsIFJlcG9ydGluZ09yZ0J1ZGdldDogSW5kZXhfMS5SZXBvcnRpbmdPcmdCdWRnZXQsIFJlcG9ydGluZ1JlZ2lvbkJ1ZGdldDogSW5kZXhfMS5SZXBvcnRpbmdSZWdpb25CdWRnZXQsIFJlY2lwaWVudENvdW50cnlCdWRnZXQ6IEluZGV4XzEuUmVjaXBpZW50Q291bnRyeUJ1ZGdldCwgVG90YWxFeHBlbmRpdHVyZTogSW5kZXhfMS5Ub3RhbEV4cGVuZGl0dXJlLCBEb2N1bWVudExpbms6IEluZGV4XzEuRG9jdW1lbnRMaW5rIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgbW9tZW50XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1vbWVudFwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnRG9jdW1lbnRMaW5rJyxcbiAgICBwcm9wczoge1xuICAgICAgICBjb250ZW50OiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzIuaW5qZWN0KSgnb3JnVHlwZXMnKTtcbiAgICAgICAgZnVuY3Rpb24gZm9ybWF0RGF0ZShkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0ZSA/ICgwLCBtb21lbnRfMS5kZWZhdWx0KShkYXRlKS5mb3JtYXQoJ0xMJykgOiAnRGF0ZSBNaXNzaW5nJztcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBsYW5ndWFnZTogbGFuZ3VhZ2UsIHR5cGVzOiB0eXBlcywgZm9ybWF0RGF0ZTogZm9ybWF0RGF0ZSB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIG1vbWVudF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJtb21lbnRcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1JlY2lwaWVudENvdW50cnlCdWRnZXQnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGNvbnRlbnQ6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMi5pbmplY3QpKCdvcmdUeXBlcycpO1xuICAgICAgICBmdW5jdGlvbiBmb3JtYXREYXRlKGRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRlID8gKDAsIG1vbWVudF8xLmRlZmF1bHQpKGRhdGUpLmZvcm1hdCgnTEwnKSA6IGxhbmd1YWdlLmNvbW1vbl9sYW5nLm1pc3NpbmcuZGF0ZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBsYW5ndWFnZTogbGFuZ3VhZ2UsIHR5cGVzOiB0eXBlcywgZm9ybWF0RGF0ZTogZm9ybWF0RGF0ZSB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIG1vbWVudF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJtb21lbnRcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1JlcG9ydGluZ09yZ0J1ZGdldCcsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgY29udGVudDogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIHR5cGVzID0gKDAsIHZ1ZV8yLmluamVjdCkoJ29yZ1R5cGVzJyk7XG4gICAgICAgIGZ1bmN0aW9uIGZvcm1hdERhdGUoZGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGUgPyAoMCwgbW9tZW50XzEuZGVmYXVsdCkoZGF0ZSkuZm9ybWF0KCdMTCcpIDogbGFuZ3VhZ2UuY29tbW9uX2xhbmcubWlzc2luZy5kYXRlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGxhbmd1YWdlOiBsYW5ndWFnZSwgdHlwZXM6IHR5cGVzLCBmb3JtYXREYXRlOiBmb3JtYXREYXRlIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnUmVwb3J0aW5nT3JnYW5pc2F0aW9uJyxcbiAgICBwcm9wczoge1xuICAgICAgICBjb250ZW50OiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciB0cmFuc2xhdGlvbiA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzIuaW5qZWN0KSgnb3JnVHlwZXMnKTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHJhbnNsYXRpb246IHRyYW5zbGF0aW9uLCB0eXBlczogdHlwZXMgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBtb21lbnRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwibW9tZW50XCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdSZXBvcnRpbmdSZWdpb25CdWRnZXQnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGNvbnRlbnQ6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciB0eXBlcyA9ICgwLCB2dWVfMi5pbmplY3QpKCdvcmdUeXBlcycpO1xuICAgICAgICBmdW5jdGlvbiBmb3JtYXREYXRlKGRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRlID8gKDAsIG1vbWVudF8xLmRlZmF1bHQpKGRhdGUpLmZvcm1hdCgnTEwnKSA6IGxhbmd1YWdlLmNvbW1vbl9sYW5nLm1pc3NpbmcuZGF0ZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBsYW5ndWFnZTogbGFuZ3VhZ2UsIHR5cGVzOiB0eXBlcywgZm9ybWF0RGF0ZTogZm9ybWF0RGF0ZSB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIG1vbWVudF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJtb21lbnRcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1RvdGFsQnVkZ2V0JyxcbiAgICBwcm9wczoge1xuICAgICAgICBjb250ZW50OiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzIuaW5qZWN0KSgnb3JnVHlwZXMnKTtcbiAgICAgICAgZnVuY3Rpb24gZm9ybWF0RGF0ZShkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0ZSA/ICgwLCBtb21lbnRfMS5kZWZhdWx0KShkYXRlKS5mb3JtYXQoJ0xMJykgOiBsYW5ndWFnZS5jb21tb25fbGFuZy5taXNzaW5nLmRhdGU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgbGFuZ3VhZ2U6IGxhbmd1YWdlLCB0eXBlczogdHlwZXMsIGZvcm1hdERhdGU6IGZvcm1hdERhdGUgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZV8yID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBtb21lbnRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwibW9tZW50XCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdUb3RhbEV4cGVuZGl0dXJlJyxcbiAgICBwcm9wczoge1xuICAgICAgICBjb250ZW50OiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgdHlwZXMgPSAoMCwgdnVlXzIuaW5qZWN0KSgnb3JnVHlwZXMnKTtcbiAgICAgICAgZnVuY3Rpb24gZm9ybWF0RGF0ZShkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0ZSA/ICgwLCBtb21lbnRfMS5kZWZhdWx0KShkYXRlKS5mb3JtYXQoJ0xMJykgOiBsYW5ndWFnZS5jb21tb25fbGFuZy5taXNzaW5nLmRhdGU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgbGFuZ3VhZ2U6IGxhbmd1YWdlLCB0eXBlczogdHlwZXMsIGZvcm1hdERhdGU6IGZvcm1hdERhdGUgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1Bhc3N3b3JkUmVjb3ZlcnknLFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBsYW5ndWFnZTogbGFuZ3VhZ2UgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIExvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi4vLi4vY29tcG9uZW50cy9Mb2FkZXIudnVlXCIpKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBMb2FkZXI6IExvYWRlcl92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciBmb3JtRGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgZW1haWw6ICcnLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGVtYWlsRXJyb3IgPSAoMCwgdnVlXzEucmVmKSgnJyk7XG4gICAgICAgIHZhciBsb2FkZXJWaXNpYmlsaXR5ID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICBmdW5jdGlvbiByZXNldCgpIHtcbiAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHkudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBvc3QoJy9wYXNzd29yZC9lbWFpbCcsIGZvcm1EYXRhKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzLnJlcXVlc3QucmVzcG9uc2VVUkwuaW5jbHVkZXMoJ2FjdGl2aXRpZXMnKSkge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvYWN0aXZpdGllcyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIHZhciBlcnJvcnMgPSAhcmVzcG9uc2Uuc3VjY2VzcyB8fCAnZXJyb3JzJyBpbiByZXNwb25zZSA/IHJlc3BvbnNlLmVycm9ycyA6IFtdO1xuICAgICAgICAgICAgICAgIGVtYWlsRXJyb3IudmFsdWUgPSBlcnJvcnMuZW1haWwgPyBlcnJvcnMuZW1haWxbMF0gOiAnJztcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvcGFzc3dvcmQvY29uZmlybSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHkudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHZhciBlcnJvcnMgPSBlcnJvci5yZXNwb25zZS5kYXRhLmVycm9ycztcbiAgICAgICAgICAgICAgICBlbWFpbEVycm9yLnZhbHVlID0gZXJyb3JzLmVtYWlsID8gZXJyb3JzLmVtYWlsWzBdIDogJyc7XG4gICAgICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZvcm1EYXRhOiBmb3JtRGF0YSxcbiAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHk6IGxvYWRlclZpc2liaWxpdHksXG4gICAgICAgICAgICBlbWFpbEVycm9yOiBlbWFpbEVycm9yLFxuICAgICAgICAgICAgcmVzZXQ6IHJlc2V0LFxuICAgICAgICAgICAgbGFuZ3VhZ2U6IGxhbmd1YWdlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0xvYWRlci52dWVcIikpO1xudmFyIGVuY3J5cHRpb25fMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS9lbmNyeXB0aW9uXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIExvYWRlcjogTG9hZGVyX3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBlbWFpbDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRva2VuOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciBsb2FkZXJWaXNpYmlsaXR5ID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgZm9ybURhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIGVtYWlsOiBwcm9wcy5lbWFpbCxcbiAgICAgICAgICAgIHRva2VuOiBwcm9wcy50b2tlbixcbiAgICAgICAgICAgIHBhc3N3b3JkOiAnJyxcbiAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZXJyb3JEYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBlbWFpbDogJycsXG4gICAgICAgICAgICBwYXNzd29yZDogJycsXG4gICAgICAgICAgICBwYXNzd29yZF9jb25maXJtYXRpb246ICcnLFxuICAgICAgICB9KTtcbiAgICAgICAgZnVuY3Rpb24gcmVzZXQoKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB2YXIgZm9ybSA9IHtcbiAgICAgICAgICAgICAgICBlbWFpbDogZm9ybURhdGEuZW1haWwsXG4gICAgICAgICAgICAgICAgdG9rZW46IHByb3BzLnRva2VuLFxuICAgICAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogKDAsIGVuY3J5cHRpb25fMS5kZWZhdWx0KShmb3JtRGF0YS5wYXNzd29yZF9jb25maXJtYXRpb24sIChfYSA9IHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJycpLFxuICAgICAgICAgICAgICAgIHBhc3N3b3JkOiAoMCwgZW5jcnlwdGlvbl8xLmRlZmF1bHQpKGZvcm1EYXRhLnBhc3N3b3JkLCAoX2IgPSBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6ICcnKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucG9zdCgnL3Jlc2V0JywgZm9ybSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5yZXF1ZXN0LnJlc3BvbnNlVVJMLmluY2x1ZGVzKCdhY3Rpdml0aWVzJykpIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2FjdGl2aXRpZXMnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB2YXIgZXJyb3JzID0gJ2Vycm9ycycgaW4gcmVzcG9uc2UgPyByZXNwb25zZS5lcnJvcnMgOiBbXTtcbiAgICAgICAgICAgICAgICBlcnJvckRhdGEucGFzc3dvcmQgPSBlcnJvcnMucGFzc3dvcmQgPyBlcnJvcnMucGFzc3dvcmRbMF0gOiAnJztcbiAgICAgICAgICAgICAgICBlcnJvckRhdGEuZW1haWwgPSBlcnJvcnMuZW1haWwgPyBlcnJvcnMuZW1haWxbMF0gOiAnJztcbiAgICAgICAgICAgICAgICBlcnJvckRhdGEucGFzc3dvcmRfY29uZmlybWF0aW9uID0gZXJyb3JzLnBhc3N3b3JkX2NvbmZpcm1hdGlvblxuICAgICAgICAgICAgICAgICAgICA/IGVycm9ycy5wYXNzd29yZF9jb25maXJtYXRpb25bMF1cbiAgICAgICAgICAgICAgICAgICAgOiAnJztcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvYWN0aXZpdGllcyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHkudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHZhciBlcnJvcnMgPSBlcnJvci5yZXNwb25zZS5kYXRhLmVycm9ycztcbiAgICAgICAgICAgICAgICBlcnJvckRhdGEucGFzc3dvcmQgPSBlcnJvcnMucGFzc3dvcmQgPyBlcnJvcnMucGFzc3dvcmRbMF0gOiAnJztcbiAgICAgICAgICAgICAgICBlcnJvckRhdGEuZW1haWwgPSBlcnJvcnMuZW1haWwgPyBlcnJvcnMuZW1haWxbMF0gOiAnJztcbiAgICAgICAgICAgICAgICBlcnJvckRhdGEucGFzc3dvcmRfY29uZmlybWF0aW9uID0gZXJyb3JzLnBhc3N3b3JkX2NvbmZpcm1hdGlvblxuICAgICAgICAgICAgICAgICAgICA/IGVycm9ycy5wYXNzd29yZF9jb25maXJtYXRpb25bMF1cbiAgICAgICAgICAgICAgICAgICAgOiAnJztcbiAgICAgICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJvcHM6IHByb3BzLFxuICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eTogbG9hZGVyVmlzaWJpbGl0eSxcbiAgICAgICAgICAgIGZvcm1EYXRhOiBmb3JtRGF0YSxcbiAgICAgICAgICAgIGVycm9yRGF0YTogZXJyb3JEYXRhLFxuICAgICAgICAgICAgcmVzZXQ6IHJlc2V0LFxuICAgICAgICAgICAgbGFuZ3VhZ2U6IGxhbmd1YWdlLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBtdWx0aXNlbGVjdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJAdnVlZm9ybS9tdWx0aXNlbGVjdFwiKSk7XG52YXIgc3RvcmVfMSA9IHJlcXVpcmUoXCIuLi8uLi9zdG9yZVwiKTtcbnZhciBhY3Rpb25zXzEgPSByZXF1aXJlKFwiLi4vLi4vc3RvcmUvc2V0dGluZy9hY3Rpb25zXCIpO1xudmFyIEhvdmVyVGV4dF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi8uLi8uLi9jb21wb25lbnRzL0hvdmVyVGV4dC52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgTXVsdGlzZWxlY3Q6IG11bHRpc2VsZWN0XzEuZGVmYXVsdCxcbiAgICAgICAgSG92ZXJUZXh0OiBIb3ZlclRleHRfdnVlXzEuZGVmYXVsdCxcbiAgICB9LFxuICAgIHByb3BzOiB7XG4gICAgICAgIGN1cnJlbmNpZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgbGFuZ3VhZ2VzOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGh1bWFuaXRhcmlhbjoge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBidWRnZXROb3RQcm92aWRlZDoge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0Q29sbGFib3JhdGlvblR5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdEZsb3dUeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRGaW5hbmNlVHlwZToge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0QWlkVHlwZToge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0VGllZFN0YXR1czoge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIHVzZXJSb2xlID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3VzZXJSb2xlJyk7XG4gICAgICAgIHZhciBzdG9yZSA9ICgwLCBzdG9yZV8xLnVzZVN0b3JlKSgpO1xuICAgICAgICB2YXIgZGVmYXVsdEZvcm0gPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBzdG9yZS5zdGF0ZS5kZWZhdWx0Rm9ybTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBkZWZhdWx0RXJyb3IgPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBzdG9yZS5zdGF0ZS5kZWZhdWx0RXJyb3I7XG4gICAgICAgIH0pO1xuICAgICAgICBmdW5jdGlvbiB1cGRhdGVTdG9yZShrZXkpIHtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKGFjdGlvbnNfMS5BY3Rpb25UeXBlcy5VUERBVEVfREVGQVVMVF9WQUxVRVMsIHtcbiAgICAgICAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogZGVmYXVsdEZvcm0udmFsdWVba2V5XSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcm9wczogcHJvcHMsXG4gICAgICAgICAgICB1c2VyUm9sZTogdXNlclJvbGUsXG4gICAgICAgICAgICBkZWZhdWx0Rm9ybTogZGVmYXVsdEZvcm0sXG4gICAgICAgICAgICBkZWZhdWx0RXJyb3I6IGRlZmF1bHRFcnJvcixcbiAgICAgICAgICAgIHVwZGF0ZVN0b3JlOiB1cGRhdGVTdG9yZSxcbiAgICAgICAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHN0b3JlXzEgPSByZXF1aXJlKFwiLi4vLi4vc3RvcmVcIik7XG52YXIgYWN0aW9uc18xID0gcmVxdWlyZShcIi4uLy4uL3N0b3JlL3NldHRpbmcvYWN0aW9uc1wiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgU2V0dGluZ0RlZmF1bHRGb3JtX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL1NldHRpbmdEZWZhdWx0Rm9ybS52dWVcIikpO1xudmFyIFNldHRpbmdQdWJsaXNoaW5nRm9ybV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9TZXR0aW5nUHVibGlzaGluZ0Zvcm0udnVlXCIpKTtcbnZhciBMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uLy4uL2NvbXBvbmVudHMvTG9hZGVyLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgU2V0dGluZ0RlZmF1bHRGb3JtOiBTZXR0aW5nRGVmYXVsdEZvcm1fdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgU2V0dGluZ1B1Ymxpc2hpbmdGb3JtOiBTZXR0aW5nUHVibGlzaGluZ0Zvcm1fdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgTG9hZGVyOiBMb2FkZXJfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgVG9hc3Q6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgY3VycmVuY2llczoge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBsYW5ndWFnZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgaHVtYW5pdGFyaWFuOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIG9yZ2FuaXphdGlvbjoge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBidWRnZXROb3RQcm92aWRlZDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHVzZXJSb2xlOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdENvbGxhYm9yYXRpb25UeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRGbG93VHlwZToge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0RmluYW5jZVR5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdEFpZFR5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdFRpZWRTdGF0dXM6IHtcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciB0YWIgPSAoMCwgdnVlXzEucmVmKSgncHVibGlzaCcpO1xuICAgICAgICB2YXIgc3RvcmUgPSAoMCwgc3RvcmVfMS51c2VTdG9yZSkoKTtcbiAgICAgICAgdmFyIGxvYWRlclZpc2liaWxpdHkgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB0b2FzdFZpc2liaWxpdHkgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB0b2FzdE1lc3NhZ2UgPSAoMCwgdnVlXzEucmVmKSgnJyk7XG4gICAgICAgIHZhciB0b2FzdFR5cGUgPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBwdWJsaXNoaW5nRm9ybSA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUucHVibGlzaGluZ0Zvcm07IH0pO1xuICAgICAgICB2YXIgcHVibGlzaGluZ0luZm8gPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLnB1Ymxpc2hpbmdJbmZvOyB9KTtcbiAgICAgICAgdmFyIHB1Ymxpc2hpbmdFcnJvciA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUucHVibGlzaGluZ0Vycm9yOyB9KTtcbiAgICAgICAgdmFyIGRlZmF1bHRGb3JtID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5zdGF0ZS5kZWZhdWx0Rm9ybTsgfSk7XG4gICAgICAgIHZhciBkZWZhdWx0RXJyb3IgPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLmRlZmF1bHRFcnJvcjsgfSk7XG4gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZVN0b3JlKG5hbWUsIGtleSwgdmFsdWUpIHtcbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKGFjdGlvbnNfMS5BY3Rpb25UeXBlc1tuYW1lXSwge1xuICAgICAgICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgICgwLCB2dWVfMS5vbk1vdW50ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBkYXRhLCBzZXR0aW5nRGF0YSwgZGVmYXVsdFZhbHVlcywgcHVibGlzaGVySW5mbywgYWN0aXZpdHlWYWx1ZXMsIGtleSwga2V5LCBrZXk7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6IHJldHVybiBbNCAvKnlpZWxkKi8sIGF4aW9zXzEuZGVmYXVsdC5nZXQoJy9zZXR0aW5nL2RhdGEnKV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSAoX2Euc2VudCgpKS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ0RhdGEgPSBkYXRhLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ0RhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWVzID0gc2V0dGluZ0RhdGEuZGVmYXVsdF92YWx1ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzZXR0aW5nRGF0YS5kZWZhdWx0X3ZhbHVlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hlckluZm8gPSBzZXR0aW5nRGF0YS5wdWJsaXNoaW5nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzZXR0aW5nRGF0YS5wdWJsaXNoaW5nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpdml0eVZhbHVlcyA9IHNldHRpbmdEYXRhLmFjdGl2aXR5X2RlZmF1bHRfdmFsdWVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gc2V0dGluZ0RhdGEuYWN0aXZpdHlfZGVmYXVsdF92YWx1ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHVibGlzaGVySW5mbykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGtleSBpbiBwdWJsaXNoZXJJbmZvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdG9yZSh0eXBlb2YgcHVibGlzaGVySW5mb1trZXldID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ1VQREFURV9QVUJMSVNISU5HX0ZPUk0nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnVVBEQVRFX1BVQkxJU0hFUl9JTkZPJywga2V5LCBwdWJsaXNoZXJJbmZvW2tleV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwdWJsaXNoZXJJbmZvLmFwaV90b2tlbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RvcmUoJ1VQREFURV9QVUJMSVNIRVJfSU5GTycsICdpc1ZlcmlmaWNhdGlvblJlcXVlc3RlZCcsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWZhdWx0VmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoa2V5IGluIGRlZmF1bHRWYWx1ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0b3JlKCdVUERBVEVfREVGQVVMVF9WQUxVRVMnLCBrZXksIGRlZmF1bHRWYWx1ZXNba2V5XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGl2aXR5VmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoa2V5IGluIGFjdGl2aXR5VmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdG9yZSgnVVBEQVRFX0RFRkFVTFRfVkFMVUVTJywga2V5LCBhY3Rpdml0eVZhbHVlc1trZXldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH0pO1xuICAgICAgICBmdW5jdGlvbiB0b2dnbGVUYWIocGFnZSkge1xuICAgICAgICAgICAgdG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB0YWIudmFsdWUgPSBwYWdlO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHN1Ym1pdERlZmF1bHQoKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBkYXRhIGluIGRlZmF1bHRFcnJvci52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHVwZGF0ZVN0b3JlKCdVUERBVEVfREVGQVVMVF9FUlJPUicsIGRhdGEsICcnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHkudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBvc3QoJy9zZXR0aW5nL3N0b3JlL2RlZmF1bHQnLCBkZWZhdWx0Rm9ybS52YWx1ZSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHJldHVybiAodG9hc3RWaXNpYmlsaXR5LnZhbHVlID0gZmFsc2UpOyB9LCA1MDAwKTtcbiAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2UudmFsdWUgPSByZXNwb25zZS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRvYXN0VHlwZS52YWx1ZSA9IHJlc3BvbnNlLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RvcmUoJ1VQREFURV9QVUJMSVNIRVJfSU5GTycsIHJlc3BvbnNlLmRhdGEuaGllcmFyY2hpYWwsICcnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbG9hZGVyVmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdmFyIGVycm9ycyA9IGVycm9yLnJlc3BvbnNlLmRhdGEuZXJyb3JzO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGUgaW4gZXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0b3JlKCdVUERBVEVfREVGQVVMVF9FUlJPUicsIGUsIGVycm9yc1tlXVswXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHkudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHN1Ym1pdFB1Ymxpc2hpbmcodXJsKSB7XG4gICAgICAgICAgICBsb2FkZXJWaXNpYmlsaXR5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGZvciAodmFyIGRhdGEgaW4gcHVibGlzaGluZ0Vycm9yLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdXBkYXRlU3RvcmUoJ1VQREFURV9QVUJMSVNISU5HX0VSUk9SJywgZGF0YSwgJycpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBvc3QodXJsLCBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgcHVibGlzaGluZ0luZm8udmFsdWUpLCBwdWJsaXNoaW5nRm9ybS52YWx1ZSkpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0b3JlKCdVUERBVEVfUFVCTElTSEVSX0lORk8nLCAncHVibGlzaGVyX3ZlcmlmaWNhdGlvbicsIHJlc3BvbnNlLmRhdGEucHVibGlzaGVyX3ZlcmlmaWNhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0b3JlKCdVUERBVEVfUFVCTElTSEVSX0lORk8nLCAndG9rZW5fdmVyaWZpY2F0aW9uJywgcmVzcG9uc2UuZGF0YS50b2tlbl92ZXJpZmljYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdG9yZSgnVVBEQVRFX1BVQkxJU0hFUl9JTkZPJywgJ2lzVmVyaWZpY2F0aW9uUmVxdWVzdGVkJywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHkudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0b2FzdFZpc2liaWxpdHkudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gKHRvYXN0VmlzaWJpbGl0eS52YWx1ZSA9IGZhbHNlKTsgfSwgNTAwMCk7XG4gICAgICAgICAgICAgICAgdG9hc3RNZXNzYWdlLnZhbHVlID0gcmVzcG9uc2UubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdFR5cGUudmFsdWUgPSByZXNwb25zZS5zdWNjZXNzO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdmFyIGVycm9ycyA9IGVycm9yLnJlc3BvbnNlLmRhdGEuZXJyb3JzO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGUgaW4gZXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0b3JlKCdVUERBVEVfUFVCTElTSElOR19FUlJPUicsIGUsIGVycm9yc1tlXVswXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHkudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHN1Ym1pdEZvcm0odXJsKSB7XG4gICAgICAgICAgICBpZiAodXJsID09PSB2b2lkIDApIHsgdXJsID0gJ3NldHRpbmcvdmVyaWZ5JzsgfVxuICAgICAgICAgICAgaWYgKHByb3BzLnVzZXJSb2xlID09PSAnYWRtaW4nKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhYi52YWx1ZSA9PT0gJ3B1Ymxpc2gnKVxuICAgICAgICAgICAgICAgICAgICBzdWJtaXRQdWJsaXNoaW5nKHVybCk7XG4gICAgICAgICAgICAgICAgaWYgKHRhYi52YWx1ZSA9PT0gJ2RlZmF1bHQnKVxuICAgICAgICAgICAgICAgICAgICBzdWJtaXREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgKDAsIHZ1ZV8xLnByb3ZpZGUpKCd1c2VyUm9sZScsIHByb3BzLnVzZXJSb2xlKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByb3BzOiBwcm9wcyxcbiAgICAgICAgICAgIHRhYjogdGFiLFxuICAgICAgICAgICAgZGVmYXVsdEVycm9yOiBkZWZhdWx0RXJyb3IsXG4gICAgICAgICAgICBwdWJsaXNoaW5nRXJyb3I6IHB1Ymxpc2hpbmdFcnJvcixcbiAgICAgICAgICAgIHN0b3JlOiBzdG9yZSxcbiAgICAgICAgICAgIGxvYWRlclZpc2liaWxpdHk6IGxvYWRlclZpc2liaWxpdHksXG4gICAgICAgICAgICB0b2FzdFZpc2liaWxpdHk6IHRvYXN0VmlzaWJpbGl0eSxcbiAgICAgICAgICAgIHRvYXN0TWVzc2FnZTogdG9hc3RNZXNzYWdlLFxuICAgICAgICAgICAgdG9hc3RUeXBlOiB0b2FzdFR5cGUsXG4gICAgICAgICAgICB0b2dnbGVUYWI6IHRvZ2dsZVRhYixcbiAgICAgICAgICAgIHN1Ym1pdEZvcm06IHN1Ym1pdEZvcm0sXG4gICAgICAgICAgICBsYW5ndWFnZTogbGFuZ3VhZ2UsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHN0b3JlXzEgPSByZXF1aXJlKFwiLi4vLi4vc3RvcmVcIik7XG52YXIgYWN0aW9uc18xID0gcmVxdWlyZShcIi4uLy4uL3N0b3JlL3NldHRpbmcvYWN0aW9uc1wiKTtcbnZhciBIb3ZlclRleHRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vLi4vLi4vY29tcG9uZW50cy9Ib3ZlclRleHQudnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEhvdmVyVGV4dDogSG92ZXJUZXh0X3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBvcmdhbml6YXRpb246IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgZW1pdHM6IFsnc3VibWl0UHVibGlzaGluZyddLFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBlbWl0ID0gX2EuZW1pdDtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciB0YWIgPSAoMCwgdnVlXzEucmVmKSgncHVibGlzaCcpO1xuICAgICAgICB2YXIgc3RvcmUgPSAoMCwgc3RvcmVfMS51c2VTdG9yZSkoKTtcbiAgICAgICAgdmFyIHVzZXJSb2xlID0gKDAsIHZ1ZV8xLmluamVjdCkoJ3VzZXJSb2xlJyk7XG4gICAgICAgIHZhciBwdWJsaXNoaW5nRm9ybSA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUucHVibGlzaGluZ0Zvcm07IH0pO1xuICAgICAgICB2YXIgcHVibGlzaGluZ0luZm8gPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLnN0YXRlLnB1Ymxpc2hpbmdJbmZvOyB9KTtcbiAgICAgICAgdmFyIHB1Ymxpc2hpbmdFcnJvciA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuc3RhdGUucHVibGlzaGluZ0Vycm9yOyB9KTtcbiAgICAgICAgZnVuY3Rpb24gc3VibWl0UHVibGlzaGluZygpIHtcbiAgICAgICAgICAgIGlmICh1c2VyUm9sZSA9PT0gJ2FkbWluJykge1xuICAgICAgICAgICAgICAgIGVtaXQoJ3N1Ym1pdFB1Ymxpc2hpbmcnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBhdXRvVmVyaWZ5KCkge1xuICAgICAgICAgICAgZW1pdCgnc3VibWl0UHVibGlzaGluZycpO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZVN0b3JlKGtleSkge1xuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goYWN0aW9uc18xLkFjdGlvblR5cGVzLlVQREFURV9QVUJMSVNISU5HX0ZPUk0sIHtcbiAgICAgICAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogcHVibGlzaGluZ0Zvcm0udmFsdWVba2V5XSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHRvZ2dsZVRhYigpIHtcbiAgICAgICAgICAgIHRhYi52YWx1ZSA9IHRhYi52YWx1ZSA9PT0gJ3B1Ymxpc2gnID8gJ2RlZmF1bHQnIDogJ3B1Ymxpc2gnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0YWI6IHRhYixcbiAgICAgICAgICAgIHB1Ymxpc2hpbmdGb3JtOiBwdWJsaXNoaW5nRm9ybSxcbiAgICAgICAgICAgIHB1Ymxpc2hpbmdJbmZvOiBwdWJsaXNoaW5nSW5mbyxcbiAgICAgICAgICAgIHB1Ymxpc2hpbmdFcnJvcjogcHVibGlzaGluZ0Vycm9yLFxuICAgICAgICAgICAgc3RvcmU6IHN0b3JlLFxuICAgICAgICAgICAgcHJvcHM6IHByb3BzLFxuICAgICAgICAgICAgdXNlclJvbGU6IHVzZXJSb2xlLFxuICAgICAgICAgICAgc3VibWl0UHVibGlzaGluZzogc3VibWl0UHVibGlzaGluZyxcbiAgICAgICAgICAgIHRvZ2dsZVRhYjogdG9nZ2xlVGFiLFxuICAgICAgICAgICAgdXBkYXRlU3RvcmU6IHVwZGF0ZVN0b3JlLFxuICAgICAgICAgICAgYXV0b1ZlcmlmeTogYXV0b1ZlcmlmeSxcbiAgICAgICAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xuLy8gQ29tcG9uZW50c1xudmFyIFByb2dyZXNzTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL3NlY3Rpb25zL1Byb2dyZXNzTG9hZGVyLnZ1ZVwiKSk7XG52YXIgVG9hc3RNZXNzYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIikpO1xudmFyIFRhYmxlTGlzdF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9jb21wb25lbnRzL1RhYmxlTGlzdC52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ09yZ2FuaXNhdGlvbkxpc3QnLFxuICAgIHByb3BzOiB7XG4gICAgICAgIGNvdW50cmllczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHNldHVwQ29tcGxldGVuZXNzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgcmVnaXN0cmF0aW9uVHlwZXM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBwdWJsaXNoZXJUeXBlczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIGRhdGFMaWNlbnNlczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIG9sZGVzdERhdGVzOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICAvLyByZWZcbiAgICAgICAgdmFyIGxvYWRlciA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgc3RhdHVzOiBmYWxzZSxcbiAgICAgICAgICAgIHRleHQ6IGxhbmd1YWdlLmNvbW1vbl9sYW5nLnBsZWFzZV93YWl0LFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHRvYXN0TWVzc2FnZSA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICAgIHR5cGU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBwcm92aWRlXG4gICAgICAgICgwLCB2dWVfMi5wcm92aWRlKSgnbG9hZGVyJywgbG9hZGVyKTtcbiAgICAgICAgKDAsIHZ1ZV8yLnByb3ZpZGUpKCd0b2FzdERhdGEnLCB0b2FzdE1lc3NhZ2UpO1xuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBsYW5ndWFnZTogbGFuZ3VhZ2UsIHByb3BzOiBwcm9wcywgbG9hZGVyOiBsb2FkZXIsIHRvYXN0TWVzc2FnZTogdG9hc3RNZXNzYWdlLCBMb2FkZXI6IFByb2dyZXNzTG9hZGVyX3Z1ZV8xLmRlZmF1bHQsIFRvYXN0OiBUb2FzdE1lc3NhZ2VfdnVlXzEuZGVmYXVsdCwgVGFibGVMaXN0OiBUYWJsZUxpc3RfdnVlXzEuZGVmYXVsdCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgbGFuZ18xID0gcmVxdWlyZShcImxvZGFzaC9sYW5nXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1N5c3RlbVZlcnNpb24nLFxuICAgIHByb3BzOiB7XG4gICAgICAgIHBocERlcGVuZGVuY2llczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIG5vZGVEZXBlbmRlbmNpZXM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBwYWNrYWdlTWFuYWdlclZlcnNpb246IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBsYXRlc3RNYW5hZ2VyVmVyc2lvbjogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICAvKiBTZXRzIFVwZGF0ZSBzdGF0dXMgY2xhc3MgKi9cbiAgICAgICAgdmFyIGdldFN0YXR1c0NsYXNzID0gZnVuY3Rpb24gKHVwZGF0ZVN0YXR1cykge1xuICAgICAgICAgICAgaWYgKHVwZGF0ZVN0YXR1cyA9PSAnc2VtdmVyLXNhZmUtdXBkYXRlJykge1xuICAgICAgICAgICAgICAgIHJldHVybiAncm91bmRlZC1mdWxsIGJnLXNwcmluZy01MCBib3JkZXIgYm9yZGVyLXNwcmluZy01MCBweC01IHB5LTEgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMSB0ZXh0LXNtIGxlYWRpbmctbm9ybWFsIHRleHQtd2hpdGUnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICdyb3VuZGVkLWZ1bGwgYmctc2FsbW9uLTUwIGJvcmRlciBib3JkZXItc2FsbW9uLTUwIHB4LTUgcHktMSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0xIHRleHQtc20gbGVhZGluZy1ub3JtYWwgdGV4dC13aGl0ZSc7XG4gICAgICAgIH07XG4gICAgICAgIC8qIFJldHVybnMgVXBkYXRlIHN0YXR1cyAqL1xuICAgICAgICB2YXIgZ2V0U3RhdHVzTWVzc2FnZSA9IGZ1bmN0aW9uICh1cGRhdGVTdGF0dXMpIHtcbiAgICAgICAgICAgIGlmICh1cGRhdGVTdGF0dXMgPT0gJ3NlbXZlci1zYWZlLXVwZGF0ZScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1NhZmUgdXBkYXRlJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAnTWF5IGJyZWFrIHN5c3RlbSc7XG4gICAgICAgIH07XG4gICAgICAgIC8qIFJldHVybnMgTGF0ZXN0IHZlcnNpb24gb2YgcGFja2FnZSBtYW5hZ2VyICovXG4gICAgICAgIHZhciByZXNvbHZlTGF0ZXN0VmVyc2lvbiA9IGZ1bmN0aW9uIChsYXRlc3RNYW5hZ2VyVmVyc2lvbiwga2V5KSB7XG4gICAgICAgICAgICBpZiAoa2V5IGluIGxhdGVzdE1hbmFnZXJWZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxhdGVzdE1hbmFnZXJWZXJzaW9uW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChrZXkgPT0gJ2NvbXBvc2VyJykge1xuICAgICAgICAgICAgICAgIHJldHVybiAnMi41LjQnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICdOQSc7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBnZXRJbmRleCA9IGZ1bmN0aW9uIChpbmRleCkge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGluZGV4LnRvU3RyaW5nKCkpICsgMTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgZ2V0U3RhdHVzQ2xhc3M6IGdldFN0YXR1c0NsYXNzLCBnZXRTdGF0dXNNZXNzYWdlOiBnZXRTdGF0dXNNZXNzYWdlLCByZXNvbHZlTGF0ZXN0VmVyc2lvbjogcmVzb2x2ZUxhdGVzdFZlcnNpb24sIGdldEluZGV4OiBnZXRJbmRleCwgaXNFbXB0eTogbGFuZ18xLmlzRW1wdHkgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0FkbWluQmFyJyxcbiAgICBwcm9wczoge1xuICAgICAgICBuYW1lOiB7IHR5cGU6IFN0cmluZywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgb3JnYW5pemF0aW9uTmFtZTogeyB0eXBlOiBTdHJpbmcsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFN3aXRjaCBCYWNrXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgc3dpdGNoQmFjayA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKCcvbGlzdC1vcmdhbmlzYXRpb25zJyk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGxhbmd1YWdlOiBsYW5ndWFnZSwgc3dpdGNoQmFjazogc3dpdGNoQmFjayB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIE11bHRpU2VsZWN0V2l0aFNlYXJjaF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9NdWx0aVNlbGVjdFdpdGhTZWFyY2gudnVlXCIpKTtcbnZhciBkYXRlRm9ybWF0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZGF0ZUZvcm1hdFwiKSk7XG52YXIgdXRpbHNfMSA9IHJlcXVpcmUoXCJDb21wb3NhYmxlL3V0aWxzXCIpO1xudmFyIEJ1dHRvbkNvbXBvbmVudF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCIpKTtcbnZhciBUYWJsZVBhZ2luYXRpb25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVGFibGVQYWdpbmF0aW9uLnZ1ZVwiKSk7XG52YXIgbXVsdGlzZWxlY3RfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQHZ1ZWZvcm0vbXVsdGlzZWxlY3RcIikpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgRGF0ZVJhbmdlV2lkZ2V0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0RhdGVSYW5nZVdpZGdldC52dWVcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIG5hbWU6ICdUYWJsZUxpc3QnLFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgQnRuQ29tcG9uZW50OiBCdXR0b25Db21wb25lbnRfdnVlXzEuZGVmYXVsdCxcbiAgICAgICAgUGFnaW5hdGlvbjogVGFibGVQYWdpbmF0aW9uX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIE11bHRpc2VsZWN0OiBtdWx0aXNlbGVjdF8xLmRlZmF1bHQsXG4gICAgICAgIERhdGVSYW5nZVdpZGdldDogRGF0ZVJhbmdlV2lkZ2V0X3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBjb3VudHJpZXM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBzZXR1cENvbXBsZXRlbmVzczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHJlZ2lzdHJhdGlvblR5cGVzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgcHVibGlzaGVyVHlwZXM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBkYXRhTGljZW5zZXM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBvbGRlc3REYXRlczoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgdmFyIHRvYXN0TWVzc2FnZSA9ICgwLCB2dWVfMS5pbmplY3QpKCd0b2FzdERhdGEnKTtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHZhciBsb2FkZXIgPSAoMCwgdnVlXzEuaW5qZWN0KSgnbG9hZGVyJyk7XG4gICAgICAgIHZhciBkYXRlRHJvcGRvd24gPSAoMCwgdnVlXzEucmVmKSgpO1xuICAgICAgICB2YXIgY2xlYXJEYXRlID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgZGF0ZVR5cGUgPSAoMCwgdnVlXzEucmVmKSgnQWxsIFRpbWUnKTtcbiAgICAgICAgdmFyIGdldENvdW50cmllc1dpdGhQcmVmaXggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgcmV0dXJuVmFsdWVGb3JDb3VudHJpZXMgPSB7fTtcbiAgICAgICAgICAgIHZhciBjb3VudHJ5Q29kZXMgPSBPYmplY3Qua2V5cyhwcm9wcy5jb3VudHJpZXMpO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudHJ5Q29kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZUZvckNvdW50cmllc1tjb3VudHJ5Q29kZXNbaV1dID0gXCJcIi5jb25jYXQoY291bnRyeUNvZGVzW2ldLCBcIiAtIFwiKS5jb25jYXQocHJvcHMuY291bnRyaWVzW2NvdW50cnlDb2Rlc1tpXV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlRm9yQ291bnRyaWVzO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgY291bnRyaWVzV2l0aFByZWZpeCA9IGdldENvdW50cmllc1dpdGhQcmVmaXgoKTtcbiAgICAgICAgLy8gcmVhY3Rpdml0eVxuICAgICAgICB2YXIgb3JnYW5pc2F0aW9uRGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgZGF0YToge30sXG4gICAgICAgICAgICBzdGF0dXM6ICdmZXRjaGluZycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgbXVsdGlzZWxlY3RTdHlsZSA9ICgwLCB2dWVfMS5yZWYpKHt9KTtcbiAgICAgICAgdmFyIGZpbHRlciA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgcHVibGlzaGVyX3R5cGU6IFtdLFxuICAgICAgICAgICAgZGF0YV9saWNlbnNlOiBbXSxcbiAgICAgICAgICAgIGNvdW50cnk6IFtdLFxuICAgICAgICAgICAgY29tcGxldGVuZXNzOiAnJyxcbiAgICAgICAgICAgIHJlZ2lzdHJhdGlvbl90eXBlOiAnJyxcbiAgICAgICAgICAgIHN0YXJ0X2RhdGU6ICcnLFxuICAgICAgICAgICAgZW5kX2RhdGU6ICcnLFxuICAgICAgICAgICAgZGF0ZV90eXBlOiAnY3JlYXRlZF9hdCcsXG4gICAgICAgICAgICBzZWxlY3RlZF9kYXRlX2ZpbHRlcjogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgcmVzZXRQYWdpbmF0aW9uID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgdG90YWxPcmdhbmlzYXRpb24gPSAoMCwgdnVlXzEucmVmKSgwKTtcbiAgICAgICAgdmFyIHJlZ2lzdHJ5QXBpS2V5U3RhdHVzID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKShbXSk7XG4gICAgICAgIHZhciBkZWZhdWx0VmFsdWVTdGF0dXMgPSAoMCwgdnVlXzEucmVhY3RpdmUpKFtdKTtcbiAgICAgICAgdmFyIHNob3dNdWx0aVNlbGVjdFdpdGhTZWFyY2ggPSAoMCwgdnVlXzEucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBkcm9wZG93blJhbmdlID0ge1xuICAgICAgICAgICAgY3JlYXRlZF9hdDogJ1JlZ2lzdGVyZWQgZGF0ZSByYW5nZScsXG4gICAgICAgICAgICBsYXN0X2xvZ2dlZF9pbjogJ0xhc3QgbG9naW4gZGF0ZSByYW5nZScsXG4gICAgICAgIH07XG4gICAgICAgIHZhciBzb3J0UGFyYW1zID0gKDAsIHZ1ZV8xLnJlZikoeyBvcmRlckJ5OiAnJywgZGlyZWN0aW9uOiAnJyB9KTtcbiAgICAgICAgdmFyIGlnbm9yZVVwZGF0ZXMgPSAoMCwgY29yZV8xLndhdGNoSWdub3JhYmxlKShmaWx0ZXIsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSkuaWdub3JlVXBkYXRlcztcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBzaG93TXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZhbHVlOyB9LCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJvdGF0ZUNsYXNzLnZhbHVlID0gJ3JvdGF0ZS0xODAnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcm90YXRlQ2xhc3MudmFsdWUgPSAncm90YXRlLTAnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjbG9zZVB1Ymxpc2hlck1vZGVsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY2xvc2VQdWJsaXNoZXJNb2RlbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgY2xlYXJEYXRlRmlsdGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZmlsdGVyLnN0YXJ0X2RhdGUgPSAnJztcbiAgICAgICAgICAgIGZpbHRlci5lbmRfZGF0ZSA9ICcnO1xuICAgICAgICAgICAgZmlsdGVyLnNlbGVjdGVkX2RhdGVfZmlsdGVyID0gJyc7XG4gICAgICAgICAgICBjbGVhckRhdGUudmFsdWUgPSB0cnVlO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgY2xvc2VQdWJsaXNoZXJNb2RlbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNob3dNdWx0aVNlbGVjdFdpdGhTZWFyY2gudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGdlbmVyYXRlTGFiZWwgPSBmdW5jdGlvbiAobGFiZWwpIHtcbiAgICAgICAgICAgIHJldHVybiB7ICctLWxhYmVsJzogXCInXCIuY29uY2F0KGxhYmVsLCBcIidcIikgfTtcbiAgICAgICAgfTtcbiAgICAgICAgLy9saWZlY3ljbGVcbiAgICAgICAgKDAsIHZ1ZV8xLm9uTW91bnRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGZpbHRlclBhcmFtcyA9IGdldEZpbHRlclBhcmFtc0Zyb21QcmV2aW91c1BhZ2UoKTtcbiAgICAgICAgICAgIGlmIChmaWx0ZXJQYXJhbXMpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZpbHRlclBhcmFtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICB2YXIga2V5ID0gKDAsIHV0aWxzXzEua2ViYWJDYXNlVG9TbmFrZWNhc2UpKGZpbHRlclBhcmFtc1tpXVswXSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IGZpbHRlclBhcmFtc1tpXVsxXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFsncHVibGlzaGVyX3R5cGUnLCAnZGF0YV9saWNlbnNlJywgJ2NvdW50cnknXS5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJba2V5XS5wdXNoKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChrZXkgPT09ICdkYXRlX3R5cGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRlVHlwZS52YWx1ZSA9IHZhbHVlLnNwbGl0KCctJykuam9pbignICcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZldGNoT3JnYW5pc2F0aW9uKDEpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGdldEZpbHRlclBhcmFtc0Zyb21QcmV2aW91c1BhZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICB2YXIgcXVlcnlTdHJpbmcgPSAoX2EgPSB3aW5kb3cubG9jYXRpb24uaHJlZikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICBpZiAocXVlcnlTdHJpbmcpIHtcbiAgICAgICAgICAgICAgICBxdWVyeVN0cmluZyA9IHF1ZXJ5U3RyaW5nLnNwbGl0KCc/JylbMV07XG4gICAgICAgICAgICAgICAgdmFyIHF1ZXJ5UGFyYW1zSW5LZXlWYWwgPSBbXTtcbiAgICAgICAgICAgICAgICB2YXIgcXVlcnlQYXJhbXMgPSBxdWVyeVN0cmluZyA9PT0gbnVsbCB8fCBxdWVyeVN0cmluZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcXVlcnlTdHJpbmcuc3BsaXQoJyYnKTtcbiAgICAgICAgICAgICAgICBpZiAocXVlcnlQYXJhbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWVyeVBhcmFtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9iID0gcXVlcnlQYXJhbXNbaV0uc3BsaXQoJz0nKSwga2V5ID0gX2JbMF0sIHZhbHVlID0gX2JbMV07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlQYXJhbXNJbktleVZhbC5wdXNoKFtrZXksIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB2b2lkIDAgPyB2YWx1ZSA6ICcnXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5UGFyYW1zSW5LZXlWYWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGZXRjaGluZyBvcmdhbml6YXRpb24gbGlzdFxuICAgICAgICAgKlxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIGN1cnJlbnRVUkwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgICAgICAgdmFyIGZldGNoT3JnYW5pc2F0aW9uID0gZnVuY3Rpb24gKGFjdGl2ZV9wYWdlKSB7XG4gICAgICAgICAgICBpZiAoYWN0aXZlX3BhZ2UgPT09IHZvaWQgMCkgeyBhY3RpdmVfcGFnZSA9IDE7IH1cbiAgICAgICAgICAgIG9yZ2FuaXNhdGlvbkRhdGEuc3RhdHVzID0gJ2ZldGNoaW5nJztcbiAgICAgICAgICAgIHZhciBxdWVyeVN0cmluZyA9ICcnO1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRVUkwuaW5jbHVkZXMoJz8nKSkge1xuICAgICAgICAgICAgICAgIHF1ZXJ5U3RyaW5nID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFjdGl2ZV9wYWdlID0gYWN0aXZlX3BhZ2UgIT09IG51bGwgJiYgYWN0aXZlX3BhZ2UgIT09IHZvaWQgMCA/IGFjdGl2ZV9wYWdlIDogMTtcbiAgICAgICAgICAgIHZhciBlbmRwb2ludCA9IFwiL2xpc3Qtb3JnYW5pc2F0aW9ucy9wYWdlL1wiLmNvbmNhdChhY3RpdmVfcGFnZSkuY29uY2F0KHF1ZXJ5U3RyaW5nKTtcbiAgICAgICAgICAgIGlmIChzb3J0UGFyYW1zLnZhbHVlLm9yZGVyQnkpIHtcbiAgICAgICAgICAgICAgICB1cmxQYXJhbXMuYXBwZW5kKCdvcmRlckJ5Jywgc29ydFBhcmFtcy52YWx1ZS5vcmRlckJ5KTtcbiAgICAgICAgICAgICAgICB1cmxQYXJhbXMuYXBwZW5kKCdkaXJlY3Rpb24nLCBzb3J0UGFyYW1zLnZhbHVlLmRpcmVjdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNGaWx0ZXJBcHBsaWVkLnZhbHVlIHx8XG4gICAgICAgICAgICAgICAgQm9vbGVhbihzb3J0UGFyYW1zLnZhbHVlLm9yZGVyQnkgJiYgc29ydFBhcmFtcy52YWx1ZS5kaXJlY3Rpb24pKSB7XG4gICAgICAgICAgICAgICAgcXVlcnlTdHJpbmcgPSBxdWVyeVN0cmluZyAhPT0gbnVsbCAmJiBxdWVyeVN0cmluZyAhPT0gdm9pZCAwID8gcXVlcnlTdHJpbmcgOiAnJnE9JztcbiAgICAgICAgICAgICAgICBlbmRwb2ludCA9IHF1ZXJ5U3RyaW5nICE9PSAnJyA/IGVuZHBvaW50IDogXCJcIi5jb25jYXQoZW5kcG9pbnQpO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGZpbHRlcktleSBpbiBmaWx0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlcltmaWx0ZXJLZXldICYmIGZpbHRlcltmaWx0ZXJLZXldLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybFBhcmFtcy5hcHBlbmQoZmlsdGVyS2V5LCBmaWx0ZXJbZmlsdGVyS2V5XSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAuZ2V0KGVuZHBvaW50LCB7XG4gICAgICAgICAgICAgICAgcGFyYW1zOiBpc0ZpbHRlckFwcGxpZWQudmFsdWUgfHxcbiAgICAgICAgICAgICAgICAgICAgQm9vbGVhbihzb3J0UGFyYW1zLnZhbHVlLm9yZGVyQnkgJiYgc29ydFBhcmFtcy52YWx1ZS5kaXJlY3Rpb24pXG4gICAgICAgICAgICAgICAgICAgID8gdXJsUGFyYW1zXG4gICAgICAgICAgICAgICAgICAgIDogJycsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgdG90YWxPcmdhbmlzYXRpb24udmFsdWUgPSAoX2EgPSByZXNwb25zZS5kYXRhKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudG90YWw7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEuZGF0YS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yZ2FuaXNhdGlvbkRhdGEuc3RhdHVzID0gJ2VtcHR5JztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yZ2FuaXNhdGlvbkRhdGEuc3RhdHVzID0gJ3N1Y2Nlc3MnO1xuICAgICAgICAgICAgICAgICAgICAgICAgb3JnYW5pc2F0aW9uRGF0YS5kYXRhID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hTdGF0dXNBcnJheXMob3JnYW5pc2F0aW9uRGF0YS5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgb3JnYW5pc2F0aW9uRGF0YS5zdGF0dXMgPSAnZmFpbGVkIHRvIHJldHJpZXZlIGRhdGEnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdXJsUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhxdWVyeVN0cmluZyk7XG4gICAgICAgIH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQcm94eSBVc2VyXG4gICAgICAgICAqL1xuICAgICAgICAvLyBkaXNwbGF5L2hpZGUgdmFsaWRhdG9yIGxvYWRlclxuICAgICAgICB2YXIgcHJveHlVc2VyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICAgICAgICBsb2FkZXIuc3RhdHVzID0gdHJ1ZTtcbiAgICAgICAgICAgIGxvYWRlci50ZXh0ID0gbGFuZ3VhZ2UuYnV0dG9uX2xhbmcucHJveHlfbG9naW47XG4gICAgICAgICAgICB2YXIgZW5kcG9pbnQgPSBcIi9wcm94eS1vcmdhbmlzYXRpb24vXCIuY29uY2F0KGlkKTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdC5nZXQoZW5kcG9pbnQpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlcGxhY2UoJy9hY3Rpdml0aWVzJyk7XG4gICAgICAgICAgICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVyLnN0YXR1cyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2UubWVzc2FnZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0TWVzc2FnZS50eXBlID0gcmVzcG9uc2Uuc3VjY2VzcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNvcnRpbmcgQnkgdXBkYXRlIG9uXG4gICAgICAgICAqL1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgIHZhciBxdWVyeSA9ICcnLCBkZWZhdWx0U29ydERpcmVjdGlvbiA9ICdkZXNjZW5kaW5nJywgXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgc29ydERpcmVjdGlvbiA9ICdkZXNjJztcbiAgICAgICAgdmFyIHF1ZXJ5U3RyaW5nID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaDtcbiAgICAgICAgdmFyIHVybFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMocXVlcnlTdHJpbmcpO1xuICAgICAgICB2YXIgb3JkZXJUeXBlID0gKDAsIHZ1ZV8xLnJlZikoJycpO1xuICAgICAgICBvcmRlclR5cGUudmFsdWUgPSAoX2EgPSB1cmxQYXJhbXMuZ2V0KCdvcmRlckJ5JykpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgIHZhciByYW5nZSA9ICcnO1xuICAgICAgICB2YXIgc29ydGluZ0RpcmVjdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBzb3J0UGFyYW1zLnZhbHVlLmRpcmVjdGlvbiA9PT0gJ2FzYycgPyAnZGVzY2VuZGluZycgOiAnYXNjZW5kaW5nJztcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHNvcnRCeSA9IGZ1bmN0aW9uIChvcmRlcikgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHN0YXJ0RGF0ZSwgZW5kRGF0ZTtcbiAgICAgICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfZCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoX2QubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRQYWdpbmF0aW9uLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRQYXJhbXMudmFsdWUub3JkZXJCeSA9IG9yZGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgc29ydFBhcmFtcy52YWx1ZS5kaXJlY3Rpb24gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRQYXJhbXMudmFsdWUuZGlyZWN0aW9uID09PSAnZGVzYycgPyAnYXNjJyA6ICdkZXNjJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50VVJMLmluY2x1ZGVzKCc/JykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeSA9IChfYSA9IHVybFBhcmFtcy5nZXQoJ3EnKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydERpcmVjdGlvbiA9IHVybFBhcmFtcy5nZXQoJ2RpcmVjdGlvbicpID09PSAnZGVzYycgPyAnYXNjJyA6ICdkZXNjJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydERhdGUgPSAoX2IgPSB1cmxQYXJhbXMuZ2V0KCdzdGFydF9kYXRlJykpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZERhdGUgPSAoX2MgPSB1cmxQYXJhbXMuZ2V0KCdlbmRfZGF0ZScpKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnREYXRlICYmIGVuZERhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2UgPSBcIiZzdGFydF9kYXRlPVwiLmNvbmNhdChzdGFydERhdGUsIFwiJmVuZF9kYXRlPVwiKS5jb25jYXQoZW5kRGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgZmV0Y2hPcmdhbmlzYXRpb24oMSldO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICBfZC5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNldFBhZ2luYXRpb24udmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH07XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gW1xuICAgICAgICAgICAgZmlsdGVyLmNvdW50cnksXG4gICAgICAgICAgICBmaWx0ZXIuY29tcGxldGVuZXNzLFxuICAgICAgICAgICAgZmlsdGVyLnJlZ2lzdHJhdGlvbl90eXBlLFxuICAgICAgICAgICAgZmlsdGVyLnB1Ymxpc2hlcl90eXBlLFxuICAgICAgICAgICAgZmlsdGVyLmRhdGFfbGljZW5zZSxcbiAgICAgICAgICAgIGZpbHRlci5zdGFydF9kYXRlLFxuICAgICAgICAgICAgZmlsdGVyLmVuZF9kYXRlLFxuICAgICAgICAgICAgZmlsdGVyLmRhdGVfdHlwZSxcbiAgICAgICAgXTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZmV0Y2hPcmdhbmlzYXRpb24oKTtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICB2YXIgcmVzZXRBbGxGaWx0ZXJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWdub3JlVXBkYXRlcyhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgZmlsdGVyLmNvdW50cnkgPSBbXTtcbiAgICAgICAgICAgICAgICBmaWx0ZXIucHVibGlzaGVyX3R5cGUgPSBbXTtcbiAgICAgICAgICAgICAgICBmaWx0ZXIuZGF0YV9saWNlbnNlID0gW107XG4gICAgICAgICAgICAgICAgZmlsdGVyLmNvbXBsZXRlbmVzcyA9ICcnO1xuICAgICAgICAgICAgICAgIGZpbHRlci5yZWdpc3RyYXRpb25fdHlwZSA9ICcnO1xuICAgICAgICAgICAgICAgIGZpbHRlci5zdGFydF9kYXRlID0gJyc7XG4gICAgICAgICAgICAgICAgZmlsdGVyLmVuZF9kYXRlID0gJyc7XG4gICAgICAgICAgICAgICAgZmlsdGVyLmRhdGVfdHlwZSA9ICdjcmVhdGVkX2F0JztcbiAgICAgICAgICAgICAgICBmaWx0ZXIuc2VsZWN0ZWRfZGF0ZV9maWx0ZXIgPSAnJztcbiAgICAgICAgICAgICAgICBjbGVhckRhdGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBpc0ZpbHRlckFwcGxpZWQgPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiAoZmlsdGVyLmNvdW50cnkubGVuZ3RoICtcbiAgICAgICAgICAgICAgICBmaWx0ZXIucHVibGlzaGVyX3R5cGUubGVuZ3RoICtcbiAgICAgICAgICAgICAgICBmaWx0ZXIuZGF0YV9saWNlbnNlLmxlbmd0aCAhPVxuICAgICAgICAgICAgICAgIDAgfHxcbiAgICAgICAgICAgICAgICBmaWx0ZXIuY29tcGxldGVuZXNzICE9PSAnJyB8fFxuICAgICAgICAgICAgICAgIGZpbHRlci5yZWdpc3RyYXRpb25fdHlwZSAhPT0gJycgfHxcbiAgICAgICAgICAgICAgICAoZmlsdGVyLnN0YXJ0X2RhdGUgIT09ICcnICYmIGZpbHRlci5lbmRfZGF0ZSAhPT0gJycpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciByZWZyZXNoU3RhdHVzQXJyYXlzID0gZnVuY3Rpb24gKG9yZ0RhdGEpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICAgICAgZm9yICh2YXIgX2kgPSAwLCBfZCA9IG9yZ0RhdGEuZGF0YTsgX2kgPCBfZC5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgb3JnRGF0dW0gPSBfZFtfaV07XG4gICAgICAgICAgICAgICAgcmVnaXN0cnlBcGlLZXlTdGF0dXNbb3JnRGF0dW0uaWRdID1cbiAgICAgICAgICAgICAgICAgICAgKF9jID0gKF9iID0gKF9hID0gb3JnRGF0dW0gPT09IG51bGwgfHwgb3JnRGF0dW0gPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9yZ0RhdHVtLnNldHRpbmdzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucHVibGlzaGluZ19pbmZvKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IudG9rZW5fdmVyaWZpY2F0aW9uKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiBmYWxzZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWVTdGF0dXNbb3JnRGF0dW0uaWRdID0gY2hlY2tJZkRlZmF1bHRWYWx1ZXNBcmVWYWxpZChvcmdEYXR1bSA/IG9yZ0RhdHVtLnNldHRpbmdzIDogZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgY2hlY2tJZkRlZmF1bHRWYWx1ZXNBcmVWYWxpZCA9IGZ1bmN0aW9uIChzZXR0aW5ncykge1xuICAgICAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kO1xuICAgICAgICAgICAgaWYgKHNldHRpbmdzKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRlZmF1bHRWYWx1ZXMgPSBzZXR0aW5ncy5kZWZhdWx0X3ZhbHVlcztcbiAgICAgICAgICAgICAgICB2YXIgYWN0aXZpdHlEZWZhdWx0VmFsdWVzID0gc2V0dGluZ3MuYWN0aXZpdHlfZGVmYXVsdF92YWx1ZXM7XG4gICAgICAgICAgICAgICAgcmV0dXJuICEhKCgoX2EgPSBkZWZhdWx0VmFsdWVzID09PSBudWxsIHx8IGRlZmF1bHRWYWx1ZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGRlZmF1bHRWYWx1ZXMuZGVmYXVsdF9jdXJyZW5jeSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogZmFsc2UpICYmXG4gICAgICAgICAgICAgICAgICAgICgoX2IgPSBkZWZhdWx0VmFsdWVzID09PSBudWxsIHx8IGRlZmF1bHRWYWx1ZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGRlZmF1bHRWYWx1ZXMuZGVmYXVsdF9sYW5ndWFnZSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogZmFsc2UpICYmXG4gICAgICAgICAgICAgICAgICAgICgoX2MgPSBhY3Rpdml0eURlZmF1bHRWYWx1ZXMgPT09IG51bGwgfHwgYWN0aXZpdHlEZWZhdWx0VmFsdWVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhY3Rpdml0eURlZmF1bHRWYWx1ZXMuaGllcmFyY2h5KSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiBmYWxzZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgKChfZCA9IGFjdGl2aXR5RGVmYXVsdFZhbHVlcyA9PT0gbnVsbCB8fCBhY3Rpdml0eURlZmF1bHRWYWx1ZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFjdGl2aXR5RGVmYXVsdFZhbHVlcy5idWRnZXRfbm90X3Byb3ZpZGVkKSAhPT0gbnVsbCAmJiBfZCAhPT0gdm9pZCAwID8gX2QgOiBmYWxzZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgKChhY3Rpdml0eURlZmF1bHRWYWx1ZXMgPT09IG51bGwgfHwgYWN0aXZpdHlEZWZhdWx0VmFsdWVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhY3Rpdml0eURlZmF1bHRWYWx1ZXMuaHVtYW5pdGFyaWFuKSAhPSBudWxsIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAoYWN0aXZpdHlEZWZhdWx0VmFsdWVzID09PSBudWxsIHx8IGFjdGl2aXR5RGVmYXVsdFZhbHVlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogYWN0aXZpdHlEZWZhdWx0VmFsdWVzLmh1bWFuaXRhcmlhbikgIT0gJycgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIChhY3Rpdml0eURlZmF1bHRWYWx1ZXMgPT09IG51bGwgfHwgYWN0aXZpdHlEZWZhdWx0VmFsdWVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhY3Rpdml0eURlZmF1bHRWYWx1ZXMuaHVtYW5pdGFyaWFuKSAhPSBmYWxzZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgc2V0RGF0ZVJhbmdlRGF0ZSA9IGZ1bmN0aW9uIChzdGFydERhdGUsIGVuZERhdGUsIHNlbGVjdGVkRGF0ZUZpbHRlcikge1xuICAgICAgICAgICAgaWYgKHNlbGVjdGVkRGF0ZUZpbHRlciA9PT0gdm9pZCAwKSB7IHNlbGVjdGVkRGF0ZUZpbHRlciA9ICcnOyB9XG4gICAgICAgICAgICBmaWx0ZXIuc3RhcnRfZGF0ZSA9IHN0YXJ0RGF0ZTtcbiAgICAgICAgICAgIGZpbHRlci5lbmRfZGF0ZSA9IGVuZERhdGU7XG4gICAgICAgICAgICBmaWx0ZXIuc2VsZWN0ZWRfZGF0ZV9maWx0ZXIgPSBzZWxlY3RlZERhdGVGaWx0ZXI7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzZXREYXRlVHlwZSA9IGZ1bmN0aW9uIChkYXRlVHlwZSkge1xuICAgICAgICAgICAgZmlsdGVyLmRhdGVfdHlwZSA9IGRhdGVUeXBlO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgcm90YXRlQ2xhc3MgPSAoMCwgdnVlXzEucmVmKSgnJyk7XG4gICAgICAgIHZhciB0b2dnbGVTaG93TXVsdGlTZWxlY3QgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgdmFyIHJlY3QgPSBldmVudC50YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICBtdWx0aXNlbGVjdFN0eWxlLnZhbHVlID0ge1xuICAgICAgICAgICAgICAgIHRvcDogTnVtYmVyKHJlY3QudG9wKSA8IDEwMCA/IDIxMCArICdweCcgOiBOdW1iZXIocmVjdC50b3ApICsgNTAgKyAncHgnLFxuICAgICAgICAgICAgICAgIGxlZnQ6IE51bWJlcihyZWN0LmxlZnQpICsgJ3B4JyxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBzaG93TXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZhbHVlID0gIXNob3dNdWx0aVNlbGVjdFdpdGhTZWFyY2gudmFsdWU7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzZXRTZWxlY3RlZFB1Ymxpc2hlciA9IGZ1bmN0aW9uIChwdWJsaXNoZXJUeXBlcykge1xuICAgICAgICAgICAgZmlsdGVyLnB1Ymxpc2hlcl90eXBlID0gcHVibGlzaGVyVHlwZXM7XG4gICAgICAgIH07XG4gICAgICAgIC8qXG4gICAgICAgICAqIEZvciBtYXBwaW5nIGNvdW50cnksIHB1Ymxpc2hlcl90eXBlIGFuZCBkYXRhIGxpY2Vuc2VcbiAgICAgICAgICovXG4gICAgICAgIHZhciBzaG93TWFwcGVkRGF0YSA9IGZ1bmN0aW9uIChrZXksIGRhdGEsIG1hcCkge1xuICAgICAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgICAgICBpZiAoa2V5ID09ICdkYXRhX2xpY2Vuc2UnKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBsaWNlbnNlID0gZGF0YVtrZXldO1xuICAgICAgICAgICAgICAgICAgICBsaWNlbnNlID0gbGljZW5zZSA9PT0gbnVsbCB8fCBsaWNlbnNlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBsaWNlbnNlLnRyaW0oKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxpY2Vuc2UgPyBtYXBbbGljZW5zZV0gOiBsYW5ndWFnZS5jb21tb25fbGFuZy5taXNzaW5nLm5vdF9hdmFpbGFibGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhW2tleV0gPyBtYXBbZGF0YVtrZXldXSA6IGxhbmd1YWdlLmNvbW1vbl9sYW5nLm1pc3Npbmcubm90X2F2YWlsYWJsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBsYW5ndWFnZS5jb21tb25fbGFuZy5taXNzaW5nLm5vdF9hdmFpbGFibGU7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBCdG5Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudF92dWVfMS5kZWZhdWx0LFxuICAgICAgICAgICAgTXVsdGlzZWxlY3Q6IG11bHRpc2VsZWN0XzEuZGVmYXVsdCxcbiAgICAgICAgICAgIERhdGVSYW5nZVdpZGdldDogRGF0ZVJhbmdlV2lkZ2V0X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgICAgICBNdWx0aVNlbGVjdFdpdGhTZWFyY2g6IE11bHRpU2VsZWN0V2l0aFNlYXJjaF92dWVfMS5kZWZhdWx0LFxuICAgICAgICAgICAgb3JnYW5pc2F0aW9uRGF0YTogb3JnYW5pc2F0aW9uRGF0YSxcbiAgICAgICAgICAgIGRyb3Bkb3duUmFuZ2U6IGRyb3Bkb3duUmFuZ2UsXG4gICAgICAgICAgICBzZXRTZWxlY3RlZFB1Ymxpc2hlcjogc2V0U2VsZWN0ZWRQdWJsaXNoZXIsXG4gICAgICAgICAgICB0b2dnbGVTaG93TXVsdGlTZWxlY3Q6IHRvZ2dsZVNob3dNdWx0aVNlbGVjdCxcbiAgICAgICAgICAgIHNldERhdGVUeXBlOiBzZXREYXRlVHlwZSxcbiAgICAgICAgICAgIHNldERhdGVSYW5nZURhdGU6IHNldERhdGVSYW5nZURhdGUsXG4gICAgICAgICAgICBzb3J0Qnk6IHNvcnRCeSxcbiAgICAgICAgICAgIHJlc2V0QWxsRmlsdGVyczogcmVzZXRBbGxGaWx0ZXJzLFxuICAgICAgICAgICAgc29ydGluZ0RpcmVjdGlvbjogc29ydGluZ0RpcmVjdGlvbixcbiAgICAgICAgICAgIGRlZmF1bHRTb3J0RGlyZWN0aW9uOiBkZWZhdWx0U29ydERpcmVjdGlvbixcbiAgICAgICAgICAgIHByb3h5VXNlcjogcHJveHlVc2VyLFxuICAgICAgICAgICAgZGF0ZUZvcm1hdDogZGF0ZUZvcm1hdF8xLmRlZmF1bHQsXG4gICAgICAgICAgICBmZXRjaE9yZ2FuaXNhdGlvbjogZmV0Y2hPcmdhbmlzYXRpb24sXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWVTdGF0dXM6IGRlZmF1bHRWYWx1ZVN0YXR1cyxcbiAgICAgICAgICAgIHJlZ2lzdHJ5QXBpS2V5U3RhdHVzOiByZWdpc3RyeUFwaUtleVN0YXR1cyxcbiAgICAgICAgICAgIG9yZGVyVHlwZTogb3JkZXJUeXBlLFxuICAgICAgICAgICAgY2xlYXJEYXRlOiBjbGVhckRhdGUsXG4gICAgICAgICAgICBmaWx0ZXI6IGZpbHRlcixcbiAgICAgICAgICAgIHNuYWtlQ2FzZVRvU2VudGVuY2VDYXNlOiB1dGlsc18xLnNuYWtlQ2FzZVRvU2VudGVuY2VDYXNlLFxuICAgICAgICAgICAgaXNGaWx0ZXJBcHBsaWVkOiBpc0ZpbHRlckFwcGxpZWQsXG4gICAgICAgICAgICBwcm9wczogcHJvcHMsXG4gICAgICAgICAgICBzaG93TXVsdGlTZWxlY3RXaXRoU2VhcmNoOiBzaG93TXVsdGlTZWxlY3RXaXRoU2VhcmNoLFxuICAgICAgICAgICAgZGF0ZVR5cGU6IGRhdGVUeXBlLFxuICAgICAgICAgICAgcm90YXRlQ2xhc3M6IHJvdGF0ZUNsYXNzLFxuICAgICAgICAgICAgbXVsdGlzZWxlY3RTdHlsZTogbXVsdGlzZWxlY3RTdHlsZSxcbiAgICAgICAgICAgIGNsZWFyRGF0ZUZpbHRlcjogY2xlYXJEYXRlRmlsdGVyLFxuICAgICAgICAgICAgZGF0ZURyb3Bkb3duOiBkYXRlRHJvcGRvd24sXG4gICAgICAgICAgICBzb3J0UGFyYW1zOiBzb3J0UGFyYW1zLFxuICAgICAgICAgICAgcmVzZXRQYWdpbmF0aW9uOiByZXNldFBhZ2luYXRpb24sXG4gICAgICAgICAgICBzaG93TWFwcGVkRGF0YTogc2hvd01hcHBlZERhdGEsXG4gICAgICAgICAgICB0b3RhbE9yZ2FuaXNhdGlvbjogdG90YWxPcmdhbmlzYXRpb24sXG4gICAgICAgICAgICBjb3VudHJpZXNXaXRoUHJlZml4OiBjb3VudHJpZXNXaXRoUHJlZml4LFxuICAgICAgICAgICAgZ2VuZXJhdGVMYWJlbDogZ2VuZXJhdGVMYWJlbCxcbiAgICAgICAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZVxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgdnVlXzIgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIExvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi4vLi4vY29tcG9uZW50cy9Mb2FkZXIudnVlXCIpKTtcbnZhciBUb2FzdE1lc3NhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvVG9hc3RNZXNzYWdlLnZ1ZVwiKSk7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIFBvcHVwTW9kYWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvbmVudHMvUG9wdXBNb2RhbC52dWVcIikpO1xudmFyIGVuY3J5cHRpb25fMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS9lbmNyeXB0aW9uXCIpKTtcbnZhciBtdWx0aXNlbGVjdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJAdnVlZm9ybS9tdWx0aXNlbGVjdFwiKSk7XG52YXIgbW9tZW50XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1vbWVudFwiKSk7XG52YXIgVGFibGVQYWdpbmF0aW9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL1RhYmxlUGFnaW5hdGlvbi52dWVcIikpO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCJAdnVldXNlL2NvcmVcIik7XG52YXIgRGF0ZVJhbmdlV2lkZ2V0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb25lbnRzL0RhdGVSYW5nZVdpZGdldC52dWVcIikpO1xudmFyIHV0aWxzXzEgPSByZXF1aXJlKFwiQ29tcG9zYWJsZS91dGlsc1wiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdVc2VyTGlzdGluZycsXG4gICAgcHJvcHM6IHtcbiAgICAgICAgb3JnYW5pemF0aW9uczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHN0YXR1czogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHJvbGVzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgdXNlclJvbGU6IHsgdHlwZTogU3RyaW5nLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBvbGRlc3REYXRlczogeyB0eXBlOiBTdHJpbmcsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgcHJvcHMgPSBfX3Byb3BzO1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIHRvYXN0RGF0YSA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICAgIHR5cGU6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGZpbHRlciA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgb3JnYW5pemF0aW9uOiBbXSxcbiAgICAgICAgICAgIHJvbGVzOiBbXSxcbiAgICAgICAgICAgIHN0YXR1czogJycsXG4gICAgICAgICAgICBvcmRlckJ5OiAnJyxcbiAgICAgICAgICAgIGRpcmVjdGlvbjogJycsXG4gICAgICAgICAgICBxOiAnJyxcbiAgICAgICAgICAgIHN0YXJ0X2RhdGU6ICcnLFxuICAgICAgICAgICAgZW5kX2RhdGU6ICcnLFxuICAgICAgICAgICAgZGF0ZV90eXBlOiAnY3JlYXRlZF9hdCcsXG4gICAgICAgICAgICBzZWxlY3RlZF9kYXRlX2ZpbHRlcjogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaXNMb2FkZXJWaXNpYmxlID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgYWRkVXNlckZvcm0gPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBlZGl0VXNlckZvcm0gPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB1c2Vyc0RhdGEgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHsgZGF0YTogW10gfSk7XG4gICAgICAgIHZhciBpc0VtcHR5ID0gKDAsIHZ1ZV8yLnJlZikodHJ1ZSk7XG4gICAgICAgIHZhciBhbGxTZWxlY3RlZCA9ICgwLCB2dWVfMi5yZWYpKFtdKTtcbiAgICAgICAgdmFyIGRlbGV0ZU1vZGFsID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgZGVsZXRlSWQgPSAoMCwgdnVlXzIucmVmKSgpO1xuICAgICAgICB2YXIgdG90YWxVc2VyID0gKDAsIHZ1ZV8yLnJlZikoMCk7XG4gICAgICAgIHZhciBzdGF0dXNJZCA9ICgwLCB2dWVfMi5yZWYpKCk7XG4gICAgICAgIHZhciBzdGF0dXNNb2RhbCA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHN0YXR1c1ZhbHVlID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIHN0YXR1c1VzZXJuYW1lID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIGRlbGV0ZVVzZXJuYW1lID0gKDAsIHZ1ZV8yLnJlZikoKTtcbiAgICAgICAgdmFyIGxvYWRlciA9ICgwLCB2dWVfMi5yZWYpKHRydWUpO1xuICAgICAgICB2YXIgZmV0Y2hpbmdUYWJsZURhdGEgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBzZWxlY3RlZElkcyA9ICgwLCB2dWVfMi5yZWYpKHt9KTtcbiAgICAgICAgdmFyIGNoZWNrbGlzdCA9ICgwLCB2dWVfMi5yZWYpKFtdKTtcbiAgICAgICAgdmFyIGN1cnJlbnRwYWdlRGF0YSA9ICgwLCB2dWVfMi5yZWYpKFtdKTtcbiAgICAgICAgdmFyIGNsZWFyRGF0ZSA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIGVkaXRVc2VySWQgPSAoMCwgdnVlXzIucmVmKSgnJyk7XG4gICAgICAgIHZhciBkYXRlVHlwZSA9ICgwLCB2dWVfMi5yZWYpKCdBbGwgVGltZScpO1xuICAgICAgICB2YXIgZHJvcGRvd25SYW5nZSA9IHtcbiAgICAgICAgICAgIGNyZWF0ZWRfYXQ6ICdVc2VyIGNyZWF0ZWQgZGF0ZScsXG4gICAgICAgICAgICBsYXN0X2xvZ2dlZF9pbjogJ0xhc3QgbG9naW4gZGF0ZScsXG4gICAgICAgIH07XG4gICAgICAgIHZhciBmb3JtRGF0YSA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdXNlcm5hbWU6ICcnLFxuICAgICAgICAgICAgZnVsbF9uYW1lOiAnJyxcbiAgICAgICAgICAgIGVtYWlsOiAnJyxcbiAgICAgICAgICAgIHN0YXR1czogJzEnLFxuICAgICAgICAgICAgcm9sZV9pZDogJycsXG4gICAgICAgICAgICBwYXNzd29yZDogJycsXG4gICAgICAgICAgICBwYXNzd29yZF9jb25maXJtYXRpb246ICcnLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGZvcm1FcnJvciA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgdXNlcm5hbWU6ICcnLFxuICAgICAgICAgICAgZnVsbF9uYW1lOiAnJyxcbiAgICAgICAgICAgIGVtYWlsOiAnJyxcbiAgICAgICAgICAgIHN0YXR1czogJycsXG4gICAgICAgICAgICByb2xlX2lkOiAnJyxcbiAgICAgICAgICAgIHBhc3N3b3JkOiAnJyxcbiAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaXNGaWx0ZXJBcHBsaWVkID0gKDAsIHZ1ZV8yLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gKGZpbHRlci5vcmdhbml6YXRpb24ubGVuZ3RoICsgZmlsdGVyLnJvbGVzLmxlbmd0aCAhPSAwIHx8XG4gICAgICAgICAgICAgICAgZmlsdGVyLnN0YXR1cyAhPSAnJyB8fFxuICAgICAgICAgICAgICAgIChmaWx0ZXIuc3RhcnRfZGF0ZSAmJiBmaWx0ZXIuZW5kX2RhdGUpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBpZ25vcmVVcGRhdGVzID0gKDAsIGNvcmVfMS53YXRjaElnbm9yYWJsZSkodG9hc3REYXRhLCBmdW5jdGlvbiAoKSB7IHJldHVybiB1bmRlZmluZWQ7IH0sIHtcbiAgICAgICAgICAgIGZsdXNoOiAnc3luYycsXG4gICAgICAgIH0pLmlnbm9yZVVwZGF0ZXM7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gdG9hc3REYXRhLnZpc2liaWxpdHk7IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWdub3JlVG9hc3RVcGRhdGUoKTtcbiAgICAgICAgICAgIH0sIDIwMDApO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGlnbm9yZVRvYXN0VXBkYXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWdub3JlVXBkYXRlcyhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSAnJztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgY2xlYXJEYXRlRmlsdGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZmlsdGVyLnNlbGVjdGVkX2RhdGVfZmlsdGVyID0gJyc7XG4gICAgICAgICAgICBjbGVhckRhdGVSYW5nZUZpbHRlcigpO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZmlsdGVyUGFyYW1zID0gZ2V0RmlsdGVyUGFyYW1zRnJvbVByZXZpb3VzUGFnZSgpO1xuICAgICAgICAgICAgaWYgKGZpbHRlclBhcmFtcykge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmlsdGVyUGFyYW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBrZXkgPSAoMCwgdXRpbHNfMS5rZWJhYkNhc2VUb1NuYWtlY2FzZSkoZmlsdGVyUGFyYW1zW2ldWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gZmlsdGVyUGFyYW1zW2ldWzFdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoWydyb2xlcycsICdvcmdhbml6YXRpb24nXS5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJba2V5XS5wdXNoKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChrZXkgPT09ICdkYXRlX3R5cGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRlVHlwZS52YWx1ZSA9IHZhbHVlLnNwbGl0KCctJykuam9pbignICcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBnZXRGaWx0ZXJQYXJhbXNGcm9tUHJldmlvdXNQYWdlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgdmFyIHF1ZXJ5U3RyaW5nID0gKF9hID0gd2luZG93LmxvY2F0aW9uLmhyZWYpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50b1N0cmluZygpO1xuICAgICAgICAgICAgaWYgKHF1ZXJ5U3RyaW5nKSB7XG4gICAgICAgICAgICAgICAgcXVlcnlTdHJpbmcgPSBxdWVyeVN0cmluZy5zcGxpdCgnPycpWzFdO1xuICAgICAgICAgICAgICAgIHZhciBxdWVyeVBhcmFtc0luS2V5VmFsID0gW107XG4gICAgICAgICAgICAgICAgdmFyIHF1ZXJ5UGFyYW1zID0gcXVlcnlTdHJpbmcgPT09IG51bGwgfHwgcXVlcnlTdHJpbmcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHF1ZXJ5U3RyaW5nLnNwbGl0KCcmJyk7XG4gICAgICAgICAgICAgICAgaWYgKHF1ZXJ5UGFyYW1zKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcXVlcnlQYXJhbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfYiA9IHF1ZXJ5UGFyYW1zW2ldLnNwbGl0KCc9JyksIGtleSA9IF9iWzBdLCB2YWx1ZSA9IF9iWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zSW5LZXlWYWwucHVzaChba2V5LCB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdm9pZCAwID8gdmFsdWUgOiAnJ10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBxdWVyeVBhcmFtc0luS2V5VmFsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldChcIi91c2Vycy9wYWdlLzFcIikudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3BvbnNlLmRhdGEuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZGF0YS5kYXRhW2ldLnJvbGUgPSByZXNwb25zZS5kYXRhLmRhdGFbaV0ucm9sZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zcGxpdCgnXycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmpvaW4oJyAnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHVzZXJzRGF0YSwgcmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIGlzRW1wdHkudmFsdWUgPSByZXNwb25zZS5kYXRhLmRhdGEubGVuZ3RoID8gZmFsc2UgOiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBsb2FkZXIudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9LCA1MDAwKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH0pO1xuICAgICAgICB2YXIgdGV4dEJ1YmJsZWRhdGEgPSBmdW5jdGlvbiAoaWQsIGZpZWxkKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGZpZWxkKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnb3JnJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzLm9yZ2FuaXphdGlvbnNbK2lkXTtcbiAgICAgICAgICAgICAgICBjYXNlICdyb2xlcyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5yb2xlc1sraWRdO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3N0YXR1cyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5zdGF0dXNbK2lkXTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjbGVhckZpbHRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZpbHRlci5vcmdhbml6YXRpb24gPSBbXTtcbiAgICAgICAgICAgIGZpbHRlci5yb2xlcyA9IFtdO1xuICAgICAgICAgICAgZmlsdGVyLnN0YXR1cyA9ICcnO1xuICAgICAgICAgICAgZmlsdGVyLmRpcmVjdGlvbiA9ICcnO1xuICAgICAgICAgICAgZmlsdGVyLm9yZGVyQnkgPSAnJztcbiAgICAgICAgICAgIGZpbHRlci5xID0gJyc7XG4gICAgICAgICAgICBmaWx0ZXIuc2VsZWN0ZWRfZGF0ZV9maWx0ZXIgPSAnJztcbiAgICAgICAgICAgIGNsZWFyRGF0ZVJhbmdlRmlsdGVyKCk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjbGVhckRhdGVSYW5nZUZpbHRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGNsZWFyRGF0ZS52YWx1ZSA9IHRydWU7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzZXREYXRlUmFuZ2VEYXRlID0gZnVuY3Rpb24gKHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgc2VsZWN0ZWREYXRlKSB7XG4gICAgICAgICAgICBmaWx0ZXIuc3RhcnRfZGF0ZSA9IHN0YXJ0RGF0ZTtcbiAgICAgICAgICAgIGZpbHRlci5lbmRfZGF0ZSA9IGVuZERhdGU7XG4gICAgICAgICAgICBmaWx0ZXIuc2VsZWN0ZWRfZGF0ZV9maWx0ZXIgPSBzZWxlY3RlZERhdGU7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzZXREYXRlVHlwZSA9IGZ1bmN0aW9uIChkYXRlVHlwZSkge1xuICAgICAgICAgICAgZmlsdGVyLmRhdGVfdHlwZSA9IGRhdGVUeXBlO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgY3JlYXRlVXNlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgdmFyIHBhc3N3b3JkRGF0YSA9IHtcbiAgICAgICAgICAgICAgICBwYXNzd29yZDogKDAsIGVuY3J5cHRpb25fMS5kZWZhdWx0KShmb3JtRGF0YS5wYXNzd29yZCwgKF9hID0gcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJyksXG4gICAgICAgICAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAoMCwgZW5jcnlwdGlvbl8xLmRlZmF1bHQpKGZvcm1EYXRhLnBhc3N3b3JkX2NvbmZpcm1hdGlvbiwgKF9iID0gcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAnJyksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBvc3QoJy91c2VyJywgX19hc3NpZ24oX19hc3NpZ24oe30sIGZvcm1EYXRhKSwgcGFzc3dvcmREYXRhKSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcmVzLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHJlcy5kYXRhLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgc2V0Rm9ybUVycm9yKCk7XG4gICAgICAgICAgICAgICAgc2V0Rm9ybUVycm9yKHJlcy5kYXRhLmVycm9ycyk7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJGaWx0ZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgZmV0Y2hVc2Vyc0xpc3QodXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGFkZFVzZXJGb3JtLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGVtcHR5Rm9ybURhdGEoKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0Rm9ybUVycm9yKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gZXJyb3IuZGF0YS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgYWRkVXNlckZvcm0udmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmZpbmFsbHkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBlZGl0VXNlciA9IGZ1bmN0aW9uICh1c2VyKSB7XG4gICAgICAgICAgICBmb3JtRGF0YS51c2VybmFtZSA9IHVzZXIudXNlcm5hbWU7XG4gICAgICAgICAgICBmb3JtRGF0YS5mdWxsX25hbWUgPSB1c2VyLmZ1bGxfbmFtZTtcbiAgICAgICAgICAgIGZvcm1EYXRhLmVtYWlsID0gdXNlci5lbWFpbDtcbiAgICAgICAgICAgIGZvcm1EYXRhLnJvbGVfaWQgPSB1c2VyLnJvbGVfaWQ7XG4gICAgICAgICAgICBlZGl0VXNlcklkLnZhbHVlID0gdXNlci5pZDtcbiAgICAgICAgICAgIGVkaXRVc2VyRm9ybS52YWx1ZSA9IHRydWU7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBlbXB0eUZvcm1EYXRhID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGZvcm1EYXRhKSB7XG4gICAgICAgICAgICAgICAgZm9ybURhdGFba2V5XSA9IGtleSA9PT0gJ3N0YXR1cycgPyAxIDogJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzZXRGb3JtRXJyb3IgPSBmdW5jdGlvbiAoZXJyb3JzKSB7XG4gICAgICAgICAgICBpZiAoZXJyb3JzID09PSB2b2lkIDApIHsgZXJyb3JzID0ge307IH1cbiAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhlcnJvcnMpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBlcnJvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybUVycm9yW2tleV0gPSBlcnJvcnNba2V5XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gZm9ybUVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1FcnJvcltrZXldID0gJyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgb3BlblN0YXR1c01vZGVsID0gZnVuY3Rpb24gKHVzZXIpIHtcbiAgICAgICAgICAgIHN0YXR1c0lkLnZhbHVlID0gdXNlci5pZDtcbiAgICAgICAgICAgIHN0YXR1c1ZhbHVlLnZhbHVlID0gdXNlci5zdGF0dXM7XG4gICAgICAgICAgICBzdGF0dXNNb2RhbC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBzdGF0dXNVc2VybmFtZS52YWx1ZSA9IHVzZXIudXNlcm5hbWU7XG4gICAgICAgIH07XG4gICAgICAgIHZhciB1cGRhdGVVc2VyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB2YXIgcGFzc3dvcmREYXRhID0ge1xuICAgICAgICAgICAgICAgIHBhc3N3b3JkOiAoMCwgZW5jcnlwdGlvbl8xLmRlZmF1bHQpKGZvcm1EYXRhLnBhc3N3b3JkLCAoX2EgPSBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnKSxcbiAgICAgICAgICAgICAgICBwYXNzd29yZF9jb25maXJtYXRpb246ICgwLCBlbmNyeXB0aW9uXzEuZGVmYXVsdCkoZm9ybURhdGEucGFzc3dvcmRfY29uZmlybWF0aW9uLCAoX2IgPSBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6ICcnKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucGF0Y2goXCIvdXNlci9cIi5jb25jYXQoZWRpdFVzZXJJZC52YWx1ZSksIF9fYXNzaWduKF9fYXNzaWduKHt9LCBmb3JtRGF0YSksIHBhc3N3b3JkRGF0YSkpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHJlcy5kYXRhLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSByZXMuZGF0YS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHNldEZvcm1FcnJvcigpO1xuICAgICAgICAgICAgICAgIHNldEZvcm1FcnJvcihyZXMuZGF0YS5lcnJvcnMpO1xuICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIGVkaXRVc2VyRm9ybS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBmZXRjaFVzZXJzTGlzdCh1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddKTtcbiAgICAgICAgICAgICAgICAgICAgZWRpdFVzZXJJZC52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgICAgICAgICBlbXB0eUZvcm1EYXRhKCk7XG4gICAgICAgICAgICAgICAgICAgIHNldEZvcm1FcnJvcigpO1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgZWRpdFVzZXJJZC52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IGVycm9yLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZmluYWxseShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgKDAsIHZ1ZV8yLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBbXG4gICAgICAgICAgICBmaWx0ZXIub3JnYW5pemF0aW9uLFxuICAgICAgICAgICAgZmlsdGVyLnJvbGVzLFxuICAgICAgICAgICAgZmlsdGVyLnEsXG4gICAgICAgICAgICBmaWx0ZXIuc3RhdHVzLFxuICAgICAgICAgICAgZmlsdGVyLnN0YXJ0X2RhdGUsXG4gICAgICAgICAgICBmaWx0ZXIuZW5kX2RhdGUsXG4gICAgICAgICAgICBmaWx0ZXIuZGF0ZV90eXBlLFxuICAgICAgICBdOyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBmZXRjaFVzZXJzTGlzdCh1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddLCB0cnVlKTtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICBmdW5jdGlvbiBmZXRjaFVzZXJzTGlzdChhY3RpdmVfcGFnZSwgZmlsdGVyZWQpIHtcbiAgICAgICAgICAgIGlmIChmaWx0ZXJlZCA9PT0gdm9pZCAwKSB7IGZpbHRlcmVkID0gZmFsc2U7IH1cbiAgICAgICAgICAgIHZhciByb3V0ZSA9IFwiL3VzZXJzL3BhZ2UvXCIuY29uY2F0KGZpbHRlcmVkID8gJzEnIDogYWN0aXZlX3BhZ2UpO1xuICAgICAgICAgICAgZmV0Y2hpbmdUYWJsZURhdGEudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgdmFyIHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICAgICAgICAgIGZvciAodmFyIGZpbHRlcl9rZXkgaW4gZmlsdGVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZpbHRlcltmaWx0ZXJfa2V5XSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyW2ZpbHRlcl9rZXldLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoZmlsdGVyX2tleSwgZmlsdGVyW2ZpbHRlcl9rZXldKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5nZXQocm91dGUsIHsgcGFyYW1zOiBwYXJhbXMgfSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih1c2Vyc0RhdGEsIHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgIGlzRW1wdHkudmFsdWUgPSByZXNwb25zZS5kYXRhID8gZmFsc2UgOiB0cnVlO1xuICAgICAgICAgICAgICAgIHRvdGFsVXNlci52YWx1ZSA9IHJlc3BvbnNlLmRhdGEudG90YWw7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5maW5hbGx5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBmZXRjaGluZ1RhYmxlRGF0YS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG9wZW5EZWxldGVtb2RlbCA9IGZ1bmN0aW9uICh1c2VyKSB7XG4gICAgICAgICAgICBkZWxldGVNb2RhbC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBkZWxldGVJZC52YWx1ZSA9IHVzZXIuaWQ7XG4gICAgICAgICAgICBkZWxldGVVc2VybmFtZS52YWx1ZSA9IHVzZXIudXNlcm5hbWU7XG4gICAgICAgIH07XG4gICAgICAgIGZ1bmN0aW9uIGRlbGV0ZVVzZXIoaWQpIHtcbiAgICAgICAgICAgIGRlbGV0ZU1vZGFsLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHQuZGVsZXRlKFwiL3VzZXIvXCIuY29uY2F0KGlkKSkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLm1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHJlcy5kYXRhLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gcmVzLmRhdGEuc3VjY2VzcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgZmV0Y2hVc2Vyc0xpc3QodXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHNvcnQgPSBmdW5jdGlvbiAocGFyYW0pIHtcbiAgICAgICAgICAgIGZpbHRlci5kaXJlY3Rpb24gPVxuICAgICAgICAgICAgICAgIGZpbHRlci5kaXJlY3Rpb24gPT09ICdhc2MnICYmIGZpbHRlci5vcmRlckJ5ID09PSBwYXJhbSA/ICdkZXNjJyA6ICdhc2MnO1xuICAgICAgICAgICAgZmlsdGVyLm9yZGVyQnkgPSBwYXJhbTtcbiAgICAgICAgICAgIGZldGNoVXNlcnNMaXN0KDEpO1xuICAgICAgICB9O1xuICAgICAgICBmdW5jdGlvbiB0b2dnbGVVc2VyU3RhdHVzKGlkKSB7XG4gICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG4gICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgc3RhdHVzTW9kYWwudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wYXRjaChcIi91c2VyL3N0YXR1cy9cIi5jb25jYXQoaWQpKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzLnN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcmVzLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSByZXMuZGF0YS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgICAgICBmZXRjaFVzZXJzTGlzdCh1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5maW5hbGx5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGZvcm1hdERhdGUoZGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuICgwLCBtb21lbnRfMS5kZWZhdWx0KShkYXRlKS5mb3JtYXQoJ0xMJyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRvZ2dsZVNlbGVjdGFsbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGN1cnJlbnRwYWdlRGF0YS52YWx1ZSA9IHVzZXJzRGF0YS5kYXRhLm1hcChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVbJ2lkJ107XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdXNlcnNEYXRhLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoIWNoZWNrbGlzdC52YWx1ZS5pbmNsdWRlcyh1c2Vyc0RhdGEuZGF0YVtpXVsnaWQnXSkpXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrbGlzdC52YWx1ZVtjaGVja2xpc3QudmFsdWUubGVuZ3RoICsgaV0gPSB1c2Vyc0RhdGEuZGF0YVtpXVsnaWQnXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGVjdGVkSWRzLnZhbHVlW3VzZXJzRGF0YVsnY3VycmVudF9wYWdlJ11dID0gY2hlY2tsaXN0LnZhbHVlO1xuICAgICAgICAgICAgaWYgKGFsbFNlbGVjdGVkLnZhbHVlW3VzZXJzRGF0YVsnY3VycmVudF9wYWdlJ11dKSB7XG4gICAgICAgICAgICAgICAgY2hlY2tsaXN0LnZhbHVlID0gY2hlY2tsaXN0LnZhbHVlLmZpbHRlcihmdW5jdGlvbiAobikgeyByZXR1cm4gIU9iamVjdC52YWx1ZXMoY3VycmVudHBhZ2VEYXRhLnZhbHVlKS5pbmNsdWRlcyhuKTsgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjaGVja2xpc3QudmFsdWUgPSBjaGVja2xpc3QudmFsdWUuZmlsdGVyKGZ1bmN0aW9uIChlbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlbCAhPSBudWxsO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBhbGxTZWxlY3RlZC52YWx1ZVt1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddXSA9XG4gICAgICAgICAgICAgICAgIWFsbFNlbGVjdGVkLnZhbHVlW3VzZXJzRGF0YVsnY3VycmVudF9wYWdlJ11dO1xuICAgICAgICB9O1xuICAgICAgICAoMCwgdnVlXzIud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGNoZWNrbGlzdC52YWx1ZTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2VsZWN0ZWRJZHMudmFsdWVbdXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXV0gPSBbXTtcbiAgICAgICAgICAgIGN1cnJlbnRwYWdlRGF0YS52YWx1ZSA9IHVzZXJzRGF0YS5kYXRhLm1hcChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVbJ2lkJ107XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hlY2tsaXN0LnZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRwYWdlRGF0YS52YWx1ZS5pbmNsdWRlcyhjaGVja2xpc3QudmFsdWVbaV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSWRzLnZhbHVlW3VzZXJzRGF0YVsnY3VycmVudF9wYWdlJ11dW2ldID0gY2hlY2tsaXN0LnZhbHVlW2ldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGVjdGVkSWRzLnZhbHVlW3VzZXJzRGF0YVsnY3VycmVudF9wYWdlJ11dID0gc2VsZWN0ZWRJZHMudmFsdWVbdXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXV0uZmlsdGVyKGZ1bmN0aW9uIChlbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlbCAhPSBudWxsO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZ2VuZXJhdGVMYWJlbCA9IGZ1bmN0aW9uIChsYWJlbCkge1xuICAgICAgICAgICAgcmV0dXJuIHsgJy0tbGFiZWwnOiBcIidcIi5jb25jYXQobGFiZWwsIFwiJ1wiKSB9O1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZG93bmxvYWRBbGwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgcm91dGUgPSBcIi91c2Vycy9kb3dubG9hZC9cIjtcbiAgICAgICAgICAgIHZhciBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgICAgICAgICB2YXIgYWxsUGFnZVNlbGVjdGVkO1xuICAgICAgICAgICAgYWxsUGFnZVNlbGVjdGVkID0gT2JqZWN0LnZhbHVlcyhzZWxlY3RlZElkcy52YWx1ZSkuZmxhdCgpO1xuICAgICAgICAgICAgaWYgKGNoZWNrbGlzdC52YWx1ZS5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGZpbHRlcl9rZXkgaW4gZmlsdGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJbZmlsdGVyX2tleV0ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZChmaWx0ZXJfa2V5LCBmaWx0ZXJbZmlsdGVyX2tleV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgndXNlcnMnLCBhbGxQYWdlU2VsZWN0ZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0LmdldChyb3V0ZSwgeyBwYXJhbXM6IHBhcmFtcyB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFtyZXNwb25zZV0sIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL2NzdicsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgICAgICAgICAgbGluay5ocmVmID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICAgICAgICAgICAgbGluay5kb3dubG9hZCA9IHJlcy5oZWFkZXJzWydjb250ZW50LWRpc3Bvc2l0aW9uJ10uc3BsaXQoJz0nKVsxXTtcbiAgICAgICAgICAgICAgICBsaW5rLmNsaWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgbGFuZ3VhZ2U6IGxhbmd1YWdlLCBwcm9wczogcHJvcHMsIHRvYXN0RGF0YTogdG9hc3REYXRhLCBmaWx0ZXI6IGZpbHRlciwgaXNMb2FkZXJWaXNpYmxlOiBpc0xvYWRlclZpc2libGUsIGFkZFVzZXJGb3JtOiBhZGRVc2VyRm9ybSwgZWRpdFVzZXJGb3JtOiBlZGl0VXNlckZvcm0sIHVzZXJzRGF0YTogdXNlcnNEYXRhLCBpc0VtcHR5OiBpc0VtcHR5LCBhbGxTZWxlY3RlZDogYWxsU2VsZWN0ZWQsIGRlbGV0ZU1vZGFsOiBkZWxldGVNb2RhbCwgZGVsZXRlSWQ6IGRlbGV0ZUlkLCB0b3RhbFVzZXI6IHRvdGFsVXNlciwgc3RhdHVzSWQ6IHN0YXR1c0lkLCBzdGF0dXNNb2RhbDogc3RhdHVzTW9kYWwsIHN0YXR1c1ZhbHVlOiBzdGF0dXNWYWx1ZSwgc3RhdHVzVXNlcm5hbWU6IHN0YXR1c1VzZXJuYW1lLCBkZWxldGVVc2VybmFtZTogZGVsZXRlVXNlcm5hbWUsIGxvYWRlcjogbG9hZGVyLCBmZXRjaGluZ1RhYmxlRGF0YTogZmV0Y2hpbmdUYWJsZURhdGEsIHNlbGVjdGVkSWRzOiBzZWxlY3RlZElkcywgY2hlY2tsaXN0OiBjaGVja2xpc3QsIGN1cnJlbnRwYWdlRGF0YTogY3VycmVudHBhZ2VEYXRhLCBjbGVhckRhdGU6IGNsZWFyRGF0ZSwgZWRpdFVzZXJJZDogZWRpdFVzZXJJZCwgZGF0ZVR5cGU6IGRhdGVUeXBlLCBkcm9wZG93blJhbmdlOiBkcm9wZG93blJhbmdlLCBmb3JtRGF0YTogZm9ybURhdGEsIGZvcm1FcnJvcjogZm9ybUVycm9yLCBpc0ZpbHRlckFwcGxpZWQ6IGlzRmlsdGVyQXBwbGllZCwgaWdub3JlVXBkYXRlczogaWdub3JlVXBkYXRlcywgaWdub3JlVG9hc3RVcGRhdGU6IGlnbm9yZVRvYXN0VXBkYXRlLCBjbGVhckRhdGVGaWx0ZXI6IGNsZWFyRGF0ZUZpbHRlciwgZ2V0RmlsdGVyUGFyYW1zRnJvbVByZXZpb3VzUGFnZTogZ2V0RmlsdGVyUGFyYW1zRnJvbVByZXZpb3VzUGFnZSwgdGV4dEJ1YmJsZWRhdGE6IHRleHRCdWJibGVkYXRhLCBjbGVhckZpbHRlcjogY2xlYXJGaWx0ZXIsIGNsZWFyRGF0ZVJhbmdlRmlsdGVyOiBjbGVhckRhdGVSYW5nZUZpbHRlciwgc2V0RGF0ZVJhbmdlRGF0ZTogc2V0RGF0ZVJhbmdlRGF0ZSwgc2V0RGF0ZVR5cGU6IHNldERhdGVUeXBlLCBjcmVhdGVVc2VyOiBjcmVhdGVVc2VyLCBlZGl0VXNlcjogZWRpdFVzZXIsIGVtcHR5Rm9ybURhdGE6IGVtcHR5Rm9ybURhdGEsIHNldEZvcm1FcnJvcjogc2V0Rm9ybUVycm9yLCBvcGVuU3RhdHVzTW9kZWw6IG9wZW5TdGF0dXNNb2RlbCwgdXBkYXRlVXNlcjogdXBkYXRlVXNlciwgZmV0Y2hVc2Vyc0xpc3Q6IGZldGNoVXNlcnNMaXN0LCBvcGVuRGVsZXRlbW9kZWw6IG9wZW5EZWxldGVtb2RlbCwgZGVsZXRlVXNlcjogZGVsZXRlVXNlciwgc29ydDogc29ydCwgdG9nZ2xlVXNlclN0YXR1czogdG9nZ2xlVXNlclN0YXR1cywgZm9ybWF0RGF0ZTogZm9ybWF0RGF0ZSwgdG9nZ2xlU2VsZWN0YWxsOiB0b2dnbGVTZWxlY3RhbGwsIGdlbmVyYXRlTGFiZWw6IGdlbmVyYXRlTGFiZWwsIGRvd25sb2FkQWxsOiBkb3dubG9hZEFsbCwgTG9hZGVyOiBMb2FkZXJfdnVlXzEuZGVmYXVsdCwgVG9hc3Q6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0LCBQb3B1cE1vZGFsOiBQb3B1cE1vZGFsX3Z1ZV8xLmRlZmF1bHQsIE11bHRpc2VsZWN0OiBtdWx0aXNlbGVjdF8xLmRlZmF1bHQsIFBhZ2luYXRpb246IFRhYmxlUGFnaW5hdGlvbl92dWVfMS5kZWZhdWx0LCBEYXRlUmFuZ2VXaWRnZXQ6IERhdGVSYW5nZVdpZGdldF92dWVfMS5kZWZhdWx0IH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciB2dWVfMiA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi9jb21wb25lbnRzL0xvYWRlci52dWVcIikpO1xudmFyIFRvYXN0TWVzc2FnZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlXCIpKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgUG9wdXBNb2RhbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZVwiKSk7XG52YXIgZW5jcnlwdGlvbl8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2VuY3J5cHRpb25cIikpO1xudmFyIG11bHRpc2VsZWN0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkB2dWVmb3JtL211bHRpc2VsZWN0XCIpKTtcbnZhciBjb3JlXzEgPSByZXF1aXJlKFwiQHZ1ZXVzZS9jb3JlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1VzZXJQcm9maWxlJyxcbiAgICBwcm9wczoge1xuICAgICAgICB1c2VyOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgbGFuZ3VhZ2VQcmVmZXJlbmNlOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAoX19wcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIGV4cG9zZSA9IF9hLmV4cG9zZTtcbiAgICAgICAgZXhwb3NlKCk7XG4gICAgICAgIHZhciBwcm9wcyA9IF9fcHJvcHM7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xuICAgICAgICB2YXIgdG9hc3REYXRhID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgdHlwZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBpc0xvYWRlclZpc2libGUgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBlZGl0UHJvZmlsZUZvcm0gPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciBlZGl0UGFzc3dvcmRGb3JtID0gKDAsIHZ1ZV8yLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgc2hvd0N1cnJlbnRQYXNzd29yZCA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNob3dOZXdQYXNzd29yZCA9ICgwLCB2dWVfMi5yZWYpKGZhbHNlKTtcbiAgICAgICAgdmFyIHNob3dDb25maXJtUGFzc3dvcmQgPSAoMCwgdnVlXzIucmVmKShmYWxzZSk7XG4gICAgICAgIHZhciB1c2VyRGF0YSA9ICgwLCB2dWVfMi5yZWFjdGl2ZSkoeyB1c2VyX3JvbGU6ICcnIH0pO1xuICAgICAgICAoMCwgdnVlXzIub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHVzZXJEYXRhLCBwcm9wcy51c2VyKTtcbiAgICAgICAgICAgIHVzZXJEYXRhLnVzZXJfcm9sZSA9IHVzZXJEYXRhLnVzZXJfcm9sZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGZvcm1EYXRhID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB1c2VybmFtZTogcHJvcHMudXNlci51c2VybmFtZSxcbiAgICAgICAgICAgIGZ1bGxfbmFtZTogcHJvcHMudXNlci5mdWxsX25hbWUsXG4gICAgICAgICAgICBlbWFpbDogcHJvcHMudXNlci5lbWFpbCxcbiAgICAgICAgICAgIGxhbmd1YWdlX3ByZWZlcmVuY2U6IHByb3BzLnVzZXIubGFuZ3VhZ2VfcHJlZmVyZW5jZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBlcnJvckZvcm1EYXRhID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB1c2VybmFtZTogJycsXG4gICAgICAgICAgICBmdWxsX25hbWU6ICcnLFxuICAgICAgICAgICAgZW1haWw6ICcnLFxuICAgICAgICAgICAgbGFuZ3VhZ2VfcHJlZmVyZW5jZTogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgcGFzc3dvcmREYXRhID0gKDAsIHZ1ZV8yLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICBjdXJyZW50X3Bhc3N3b3JkOiAnJyxcbiAgICAgICAgICAgIHBhc3N3b3JkOiAnJyxcbiAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZXJyb3JQYXNzd29yZERhdGEgPSAoMCwgdnVlXzIucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIGN1cnJlbnRfcGFzc3dvcmQ6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmQ6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAnJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBpZ25vcmVVcGRhdGVzID0gKDAsIGNvcmVfMS53YXRjaElnbm9yYWJsZSkodG9hc3REYXRhLCBmdW5jdGlvbiAoKSB7IHJldHVybiB1bmRlZmluZWQ7IH0sIHtcbiAgICAgICAgICAgIGZsdXNoOiAnc3luYycsXG4gICAgICAgIH0pLmlnbm9yZVVwZGF0ZXM7XG4gICAgICAgICgwLCB2dWVfMi53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gdG9hc3REYXRhLnZpc2liaWxpdHk7IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWdub3JlVG9hc3RVcGRhdGUoKTtcbiAgICAgICAgICAgIH0sIDEwMDAwKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBpZ25vcmVUb2FzdFVwZGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlnbm9yZVVwZGF0ZXMoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gJyc7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHJlc2VuZFZlcmlmaWNhdGlvbkVtYWlsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wb3N0KCcvdXNlci92ZXJpZmljYXRpb24vZW1haWwnKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gKF9hID0gcmVzLmRhdGEubWVzc2FnZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJyc7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSByZXMuZGF0YS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IChfYSA9IGVycm9yLmRhdGEubWVzc2FnZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJyc7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgdXBkYXRlUGFzc3dvcmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB2YXIgcGFzc3dvcmRGb3JtRGF0YSA9IHtcbiAgICAgICAgICAgICAgICBjdXJyZW50X3Bhc3N3b3JkOiAoMCwgZW5jcnlwdGlvbl8xLmRlZmF1bHQpKHBhc3N3b3JkRGF0YS5jdXJyZW50X3Bhc3N3b3JkLCAoX2EgPSBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnKSxcbiAgICAgICAgICAgICAgICBwYXNzd29yZDogKDAsIGVuY3J5cHRpb25fMS5kZWZhdWx0KShwYXNzd29yZERhdGEucGFzc3dvcmQsIChfYiA9IHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogJycpLFxuICAgICAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogKDAsIGVuY3J5cHRpb25fMS5kZWZhdWx0KShwYXNzd29yZERhdGEucGFzc3dvcmRfY29uZmlybWF0aW9uLCAoX2MgPSBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6ICcnKSxcbiAgICAgICAgICAgICAgICBmb3JtX3R5cGU6ICdwYXNzd29yZCcsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBvc3QoJy91cGRhdGUvcGFzc3dvcmQnLCBwYXNzd29yZEZvcm1EYXRhKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSByZXMuZGF0YS5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS50eXBlID0gcmVzLmRhdGEuc3VjY2VzcztcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBlZGl0UGFzc3dvcmRGb3JtLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBlcnJvclBhc3N3b3JkRGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JQYXNzd29yZERhdGFba2V5XSA9ICcnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gcmVzLmRhdGEuZXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvclBhc3N3b3JkRGF0YVtrZXldID0gcmVzLmRhdGEuZXJyb3JzW2tleV1bMF07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgPSBlcnJvci5kYXRhLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnR5cGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmZpbmFsbHkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciB1cGRhdGVQcm9maWxlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wb3N0KCcvdXBkYXRlL3Byb2ZpbGUnLCBmb3JtRGF0YSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcmVzLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IHJlcy5kYXRhLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgZWRpdFByb2ZpbGVGb3JtLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBlcnJvckZvcm1EYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvckZvcm1EYXRhW2tleV0gPSAnJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gZm9ybURhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJEYXRhW2tleV0gPSBmb3JtRGF0YVtrZXldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gcmVzLmRhdGEuZXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvckZvcm1EYXRhW2tleV0gPSByZXMuZGF0YS5lcnJvcnNba2V5XVswXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSA9IGVycm9yLmRhdGEubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0b2FzdERhdGEudHlwZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZmluYWxseShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgbGFuZ3VhZ2U6IGxhbmd1YWdlLCBwcm9wczogcHJvcHMsIHRvYXN0RGF0YTogdG9hc3REYXRhLCBpc0xvYWRlclZpc2libGU6IGlzTG9hZGVyVmlzaWJsZSwgZWRpdFByb2ZpbGVGb3JtOiBlZGl0UHJvZmlsZUZvcm0sIGVkaXRQYXNzd29yZEZvcm06IGVkaXRQYXNzd29yZEZvcm0sIHNob3dDdXJyZW50UGFzc3dvcmQ6IHNob3dDdXJyZW50UGFzc3dvcmQsIHNob3dOZXdQYXNzd29yZDogc2hvd05ld1Bhc3N3b3JkLCBzaG93Q29uZmlybVBhc3N3b3JkOiBzaG93Q29uZmlybVBhc3N3b3JkLCB1c2VyRGF0YTogdXNlckRhdGEsIGZvcm1EYXRhOiBmb3JtRGF0YSwgZXJyb3JGb3JtRGF0YTogZXJyb3JGb3JtRGF0YSwgcGFzc3dvcmREYXRhOiBwYXNzd29yZERhdGEsIGVycm9yUGFzc3dvcmREYXRhOiBlcnJvclBhc3N3b3JkRGF0YSwgaWdub3JlVXBkYXRlczogaWdub3JlVXBkYXRlcywgaWdub3JlVG9hc3RVcGRhdGU6IGlnbm9yZVRvYXN0VXBkYXRlLCByZXNlbmRWZXJpZmljYXRpb25FbWFpbDogcmVzZW5kVmVyaWZpY2F0aW9uRW1haWwsIHVwZGF0ZVBhc3N3b3JkOiB1cGRhdGVQYXNzd29yZCwgdXBkYXRlUHJvZmlsZTogdXBkYXRlUHJvZmlsZSwgY2FwaXRhbGl6ZTogdnVlXzIuY2FwaXRhbGl6ZSwgTG9hZGVyOiBMb2FkZXJfdnVlXzEuZGVmYXVsdCwgVG9hc3Q6IFRvYXN0TWVzc2FnZV92dWVfMS5kZWZhdWx0LCBQb3B1cE1vZGFsOiBQb3B1cE1vZGFsX3Z1ZV8xLmRlZmF1bHQsIE11bHRpc2VsZWN0OiBtdWx0aXNlbGVjdF8xLmRlZmF1bHQgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fcmV0dXJuZWRfXywgJ19faXNTY3JpcHRTZXR1cCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gX19yZXR1cm5lZF9fO1xuICAgIH1cbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIHByb3BzOiB7XG4gICAgICAgIGVtYWlsOiB7IHR5cGU6IFN0cmluZywgZGVmYXVsdDogJycgfSxcbiAgICB9LFxuICAgIHNldHVwOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcm9wczogcHJvcHMsXG4gICAgICAgICAgICBsYW5ndWFnZTogbGFuZ3VhZ2UsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG52YXIgRW1haWxWZXJpZmljYXRpb25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vRW1haWxWZXJpZmljYXRpb24udnVlXCIpKTtcbnZhciBIb3ZlclRleHRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vLi4vLi4vY29tcG9uZW50cy9Ib3ZlclRleHQudnVlXCIpKTtcbnZhciBtdWx0aXNlbGVjdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJAdnVlZm9ybS9tdWx0aXNlbGVjdFwiKSk7XG52YXIgTG9hZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi8uLi9jb21wb25lbnRzL0xvYWRlci52dWVcIikpO1xudmFyIGVuY3J5cHRpb25fMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9zYWJsZS9lbmNyeXB0aW9uXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEVtYWlsVmVyaWZpY2F0aW9uOiBFbWFpbFZlcmlmaWNhdGlvbl92dWVfMS5kZWZhdWx0LFxuICAgICAgICBIb3ZlclRleHQ6IEhvdmVyVGV4dF92dWVfMS5kZWZhdWx0LFxuICAgICAgICBNdWx0aXNlbGVjdDogbXVsdGlzZWxlY3RfMS5kZWZhdWx0LFxuICAgICAgICBMb2FkZXI6IExvYWRlcl92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgdHlwZXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIHN0ZXAgPSAoMCwgdnVlXzEucmVmKSgxKTtcbiAgICAgICAgdmFyIHB1Ymxpc2hlckV4aXN0cyA9ICgwLCB2dWVfMS5yZWYpKHRydWUpO1xuICAgICAgICB2YXIgaXNMb2FkZXJWaXNpYmxlID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgdGV4dGFyZWEgPSAoMCwgdnVlXzEucmVmKShudWxsKTtcbiAgICAgICAgdmFyIGVycm9yRGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgcHVibGlzaGVyX25hbWU6ICcnLFxuICAgICAgICAgICAgcHVibGlzaGVyX2lkOiAnJyxcbiAgICAgICAgICAgIGNvdW50cnk6ICcnLFxuICAgICAgICAgICAgcmVnaXN0cmF0aW9uX2FnZW5jeTogJycsXG4gICAgICAgICAgICByZWdpc3RyYXRpb25fbnVtYmVyOiAnJyxcbiAgICAgICAgICAgIGlkZW50aWZpZXI6ICcnLFxuICAgICAgICAgICAgcHVibGlzaGVyX3R5cGU6ICcnLFxuICAgICAgICAgICAgbGljZW5zZV9pZDogJycsXG4gICAgICAgICAgICBpbWFnZV91cmw6ICcnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICcnLFxuICAgICAgICAgICAgY29udGFjdF9lbWFpbDogJycsXG4gICAgICAgICAgICB3ZWJzaXRlOiAnJyxcbiAgICAgICAgICAgIGFkZHJlc3M6ICcnLFxuICAgICAgICAgICAgc291cmNlOiAnJyxcbiAgICAgICAgICAgIHJlY29yZF9leGNsdXNpb25zOiAnJyxcbiAgICAgICAgICAgIHVzZXJuYW1lOiAnJyxcbiAgICAgICAgICAgIGZ1bGxfbmFtZTogJycsXG4gICAgICAgICAgICBlbWFpbDogJycsXG4gICAgICAgICAgICBwYXNzd29yZDogJycsXG4gICAgICAgICAgICBwYXNzd29yZF9jb25maXJtYXRpb246ICcnLFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGlhdGlFcnJvciA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe30pO1xuICAgICAgICB2YXIgZm9ybURhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHB1Ymxpc2hlcl9uYW1lOiAnJyxcbiAgICAgICAgICAgIHB1Ymxpc2hlcl9pZDogJycsXG4gICAgICAgICAgICBjb3VudHJ5OiAnJyxcbiAgICAgICAgICAgIHJlZ2lzdHJhdGlvbl9hZ2VuY3k6ICcnLFxuICAgICAgICAgICAgcmVnaXN0cmF0aW9uX251bWJlcjogJycsXG4gICAgICAgICAgICBpZGVudGlmaWVyOiAnJyxcbiAgICAgICAgICAgIHB1Ymxpc2hlcl90eXBlOiAnJyxcbiAgICAgICAgICAgIGxpY2Vuc2VfaWQ6ICcnLFxuICAgICAgICAgICAgaW1hZ2VfdXJsOiAnJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnJyxcbiAgICAgICAgICAgIGNvbnRhY3RfZW1haWw6ICcnLFxuICAgICAgICAgICAgd2Vic2l0ZTogJycsXG4gICAgICAgICAgICBhZGRyZXNzOiAnJyxcbiAgICAgICAgICAgIHNvdXJjZTogJycsXG4gICAgICAgICAgICByZWNvcmRfZXhjbHVzaW9uczogJycsXG4gICAgICAgICAgICB1c2VybmFtZTogJycsXG4gICAgICAgICAgICBmdWxsX25hbWU6ICcnLFxuICAgICAgICAgICAgZW1haWw6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmQ6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAnJyxcbiAgICAgICAgICAgIHN0ZXA6ICcxJyxcbiAgICAgICAgfSk7XG4gICAgICAgICgwLCB2dWVfMS53YXRjaCkoZnVuY3Rpb24gKCkgeyByZXR1cm4gZm9ybURhdGEuY291bnRyeTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZm9ybURhdGEucmVnaXN0cmF0aW9uX2FnZW5jeSA9ICcnO1xuICAgICAgICB9KTtcbiAgICAgICAgZnVuY3Rpb24gcmVzaXplKGV2ZW50KSB7XG4gICAgICAgICAgICBldmVudC50YXJnZXQuc3R5bGUuaGVpZ2h0ID0gJ2F1dG8nO1xuICAgICAgICAgICAgZXZlbnQudGFyZ2V0LnN0eWxlLmhlaWdodCA9IFwiXCIuY29uY2F0KGV2ZW50LnRhcmdldC5zY3JvbGxIZWlnaHQsIFwicHhcIik7XG4gICAgICAgIH1cbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBbZm9ybURhdGEucmVnaXN0cmF0aW9uX2FnZW5jeSwgZm9ybURhdGEucmVnaXN0cmF0aW9uX251bWJlcl07IH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZvcm1EYXRhLmlkZW50aWZpZXIgPSBmb3JtRGF0YS5yZWdpc3RyYXRpb25fYWdlbmN5XG4gICAgICAgICAgICAgICAgPyBmb3JtRGF0YS5yZWdpc3RyYXRpb25fYWdlbmN5ICsgJy0nICsgZm9ybURhdGEucmVnaXN0cmF0aW9uX251bWJlclxuICAgICAgICAgICAgICAgIDogZm9ybURhdGEucmVnaXN0cmF0aW9uX251bWJlcjtcbiAgICAgICAgfSwgeyBkZWVwOiB0cnVlIH0pO1xuICAgICAgICB2YXIgcmVnaXN0cmF0aW9uX2FnZW5jeSA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGFnZW5jaWVzID0gcHJvcHMudHlwZXMucmVnaXN0cmF0aW9uQWdlbmN5O1xuICAgICAgICAgICAgaWYgKGZvcm1EYXRhLmNvdW50cnkpIHtcbiAgICAgICAgICAgICAgICB2YXIgdW5jYXRlZ29yaXplZF8xID0gWydYSScsICdYUiddO1xuICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMoYWdlbmNpZXMpLmZpbHRlcihmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGtleSA9IF9hWzBdO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ga2V5LnN0YXJ0c1dpdGgoZm9ybURhdGEuY291bnRyeSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuY2F0ZWdvcml6ZWRfMS5zb21lKGZ1bmN0aW9uIChrKSB7IHJldHVybiBrZXkuc3RhcnRzV2l0aChrKTsgfSk7XG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFnZW5jaWVzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGlzVGV4dEZpZWxkID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGZpZWxkVHlwZSwgZmllbGROYW1lKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICgoZmllbGRUeXBlID09PSAndGV4dCcgfHxcbiAgICAgICAgICAgICAgICAgICAgZmllbGRUeXBlID09PSAncGFzc3dvcmQnIHx8XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkVHlwZSA9PT0gJ2VtYWlsJykgJiZcbiAgICAgICAgICAgICAgICAgICAgZmllbGROYW1lICE9ICdpZGVudGlmaWVyJyk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGNoZWNrU3RlcCA9ICgwLCB2dWVfMS5jb21wdXRlZCkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChmb3JtU3RlcCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUludChmb3JtU3RlcC50b1N0cmluZygpKSA9PT0gc3RlcC52YWx1ZTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgICAvKipcbiAgICAgICAgICogb2JqZWN0IHdpdGggbXVsdGktc3RlcCBmb3JtIGluZm9ybWF0aW9uXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgcmVnaXN0ZXJGb3JtID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICAxOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcucHVibGlzaGVyX2luZm9ybWF0aW9uLmxhYmVsLFxuICAgICAgICAgICAgICAgIGlzX2NvbXBsZXRlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5wdWJsaXNoZXJfaW5mb3JtYXRpb24uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5wdWJsaXNoZXJfaW5mb3JtYXRpb24uaG92ZXJfdGV4dCxcbiAgICAgICAgICAgICAgICBmaWVsZHM6IHtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaGVyX25hbWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLnB1Ymxpc2hlcl9uYW1lLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3B1Ymxpc2hlcl9uYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLnB1Ymxpc2hlcl9uYW1lLnBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdwdWJsaXNoZXItbmFtZScsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcucHVibGlzaGVyX25hbWUuaG92ZXJfdGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnY29sLXNwYW4tMiBtYi00IGxnOm1iLTInLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaGVyX2lkOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5wdWJsaXNoZXJfaWQubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncHVibGlzaGVyX2lkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLnB1Ymxpc2hlcl9pZC5wbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAncHVibGlzaGVyLWlkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5wdWJsaXNoZXJfaWQuaG92ZXJfdGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi0yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGNvdW50cnk6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLmNvdW50cnkubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnY291bnRyeScsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5jb3VudHJ5LnBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdjb3VudHJ5X3NlbGVjdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcuY291bnRyeS5ob3Zlcl90ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHMudHlwZXMuY291bnRyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi0yIHJlbGF0aXZlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHJlZ2lzdHJhdGlvbl9hZ2VuY3k6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLm9yZ19yZWdpc3RyYXRpb25fYWdlbmN5LmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3JlZ2lzdHJhdGlvbl9hZ2VuY3knLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcub3JnX3JlZ2lzdHJhdGlvbl9hZ2VuY3kucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3JlZ2lzdHJhdGlvbi1hZ2VuY3knLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLm9yZ19yZWdpc3RyYXRpb25fYWdlbmN5LmhvdmVyX3RleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHJlZ2lzdHJhdGlvbl9hZ2VuY3ksXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItMiByZWxhdGl2ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICByZWdpc3RyYXRpb25fbnVtYmVyOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5yZWdpc3RyYXRpb25fbnVtYmVyLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3JlZ2lzdHJhdGlvbl9udW1iZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcucmVnaXN0cmF0aW9uX251bWJlci5wbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAncmVnaXN0cmF0aW9uLW51bWJlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcucmVnaXN0cmF0aW9uX251bWJlci5ob3Zlcl90ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTInLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiBcIlwiLmNvbmNhdChsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLmZvcl9lZywgXCIgMTIzNDU2XCIpLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5pYXRpX29yZ19pZGVudGlmaWVyLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2lkZW50aWZpZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdpZGVudGlmaWVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5pYXRpX29yZ19pZGVudGlmaWVyLmhvdmVyX3RleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItNicsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcuaWF0aV9vcmdfaWRlbnRpZmllci5oZWxwX3RleHQsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hlcl90eXBlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5wdWJsaXNoZXJfdHlwZS5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdwdWJsaXNoZXJfdHlwZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5wdWJsaXNoZXJfdHlwZS5wbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAncHVibGlzaGVyLXR5cGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLnB1Ymxpc2hlcl90eXBlLmhvdmVyX3RleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzLnR5cGVzLnB1Ymxpc2hlclR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItMiByZWxhdGl2ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBsaWNlbnNlX2lkOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5kYXRhX2xpY2Vuc2UubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnbGljZW5zZV9pZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5kYXRhX2xpY2Vuc2UucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2RhdGEtbGljZW5zZScsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcuZGF0YV9saWNlbnNlLmhvdmVyX3RleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzLnR5cGVzLmRhdGFMaWNlbnNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTIgcmVsYXRpdmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VfdXJsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5wdWJsaXNoZXJfbG9nb191cmwubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnaW1hZ2VfdXJsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBcIlwiLmNvbmNhdChsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLmZvcl9lZywgXCIgaHR0cDovL215bG9nby5jb20gXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdwdWJsaXNoZXItbG9nby11cmwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5wdWJsaXNoZXJfbG9nb191cmwuaG92ZXJfdGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi0yIHJlbGF0aXZlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5vcmdhbmlzYXRpb25fZGVzYy5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdkZXNjcmlwdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5vcmdhbmlzYXRpb25fZGVzYy5wbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnb3JnYW5pemF0aW9uLWRlc2NyaXB0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcub3JnYW5pc2F0aW9uX2Rlc2MuaG92ZXJfdGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgY29sLXNwYW4tMiBsZzptYi0yIHJlbGF0aXZlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAyOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcuY29udGFjdF9pbmZvLnRpdGxlLFxuICAgICAgICAgICAgICAgIGlzX2NvbXBsZXRlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5wdWJsaXNoZXJfaW5mb3JtYXRpb24uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgZmllbGRzOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRhY3RfZW1haWw6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLmNvbnRhY3QubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnY29udGFjdF9lbWFpbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2NvbnRhY3QtZW1haWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLmNvbnRhY3QuaG92ZXJfdGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCAgbGc6bWItNicsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHdlYnNpdGU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLndlYnNpdGUubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnd2Vic2l0ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogXCJcIi5jb25jYXQobGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5mb3JfZWcsIFwiIGh0dHA6Ly9teXdlYnNpdGUuY29tXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICd3ZWJzaXRlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcud2Vic2l0ZS5ob3Zlcl90ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTYnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5hZGRyZXNzLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2FkZHJlc3MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcuYWRkcmVzcy5wbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnYWRkcmVzcycsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLmFkZHJlc3MuaG92ZXJfdGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgY29sLXNwYW4tMiBsZzptYi02JyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIDM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5wdWJsaXNoaW5nX2FkZGl0aW9uYWxfaW5mby50aXRsZSxcbiAgICAgICAgICAgICAgICBpc19jb21wbGV0ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcucHVibGlzaGluZ19hZGRpdGlvbmFsX2luZm8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgZmllbGRzOiB7XG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcuc291cmNlLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3NvdXJjZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5zb3VyY2UucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2NvbnRhY3QtZW1haWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLnNvdXJjZS5ob3Zlcl90ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcy50eXBlcy5zb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItNicsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZF9leGNsdXNpb25zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5yZWNvcmRfZXhjbHVzaW9ucy5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdyZWNvcmRfZXhjbHVzaW9ucycsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5yZWNvcmRfZXhjbHVzaW9ucy5wbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAncmVjb3JkLWV4Y2x1c2lvbnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5yZWNvcmRfZXhjbHVzaW9ucy5ob3Zlcl90ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCAgY29sLXNwYW4tMiBsZzptYi02JyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIDQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5hZG1pbmlzdHJhdG9yX2luZm9ybWF0aW9uLmxhYmVsLFxuICAgICAgICAgICAgICAgIGlzX2NvbXBsZXRlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5hZG1pbmlzdHJhdG9yX2luZm9ybWF0aW9uXG4gICAgICAgICAgICAgICAgICAgIC5pYXRpX3JlZ2lzdGVyX2Rlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIGZpZWxkczoge1xuICAgICAgICAgICAgICAgICAgICB1c2VybmFtZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcudXNlcm5hbWUubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndXNlcm5hbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcudXNlcm5hbWUucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3VzZXJuYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy51c2VybmFtZS5ob3Zlcl90ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTInLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZnVsbF9uYW1lOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5mdWxsbmFtZS5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdmdWxsX25hbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcuZnVsbG5hbWUucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2Z1bGwtbmFtZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdjb2wtc3RhcnQtMSBtYi00IGxnOm1iLTInLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBlbWFpbDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcuZW1haWxfYWRkcmVzcy5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdlbWFpbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5lbWFpbF9hZGRyZXNzLnBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdlbWFpbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi0yJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLnBhc3N3b3JkLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3Bhc3N3b3JkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLnBhc3N3b3JkLnBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdwYXNzd29yZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dDogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5wYXNzd29yZC5oZWxwX3RleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAncGFzc3dvcmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTInLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBwYXNzd29yZF9jb25maXJtYXRpb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLnBhc3N3b3JkLmNvbmZpcm0sXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncGFzc3dvcmRfY29uZmlybWF0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLnBhc3N3b3JkLnBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdwYXNzd29yZC1jb25maXJtYXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcucGFzc3dvcmQuY29uZmlybV9oZWxwLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3Bhc3N3b3JkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi02JyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIDU6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5lbWFpbF92ZXJpZmljYXRpb24udGl0bGUsXG4gICAgICAgICAgICAgICAgaXNfY29tcGxldGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLmVtYWlsX3ZlcmlmaWNhdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICAvKipcbiAgICAgICAgICogVXBkYXRlIFZhbGlkYXRpb24gZXJyb3JzIGZyb20gYXBpIGludG8gZXJyb3JEYXRhIGFycmF5XG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiB1cGRhdGVWYWxpZGF0aW9uRXJyb3JzKGVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgICAgIGNsZWFuVmFsaWRhdGlvbkVycm9ycygpO1xuICAgICAgICAgICAgZm9yICh2YXIgZmllbGQgaW4gZXJyb3JEYXRhKSB7XG4gICAgICAgICAgICAgICAgZXJyb3JEYXRhW2ZpZWxkXSA9IGVycm9yUmVzcG9uc2VbZmllbGRdID8gZXJyb3JSZXNwb25zZVtmaWVsZF1bMF0gOiAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogVXBkYXRlIFZhbGlkYXRpb24gZXJyb3JzIGZyb20gYXBpIGludG8gZXJyb3JEYXRhIGFycmF5XG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBjbGVhblZhbGlkYXRpb25FcnJvcnMoKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBmaWVsZCBpbiBlcnJvckRhdGEpIHtcbiAgICAgICAgICAgICAgICBlcnJvckRhdGFbZmllbGRdID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFVwZGF0ZSBJQVRJIGFuZCBzeXN0ZW0gRXJyb3JcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZUVycm9ycyhlcnJvclJlc3BvbnNlKSB7XG4gICAgICAgICAgICBpZiAoT2JqZWN0LnZhbHVlcyhlcnJvckRhdGEpLmV2ZXJ5KGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPT09ICcnOyB9KSB8fFxuICAgICAgICAgICAgICAgIHN0ZXAudmFsdWUgPT09IDQpIHtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGlhdGlFcnJvciwgdHlwZW9mIGVycm9yUmVzcG9uc2UgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8geyBlcnJvcjogZXJyb3JSZXNwb25zZSB9XG4gICAgICAgICAgICAgICAgICAgIDogZXJyb3JSZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNsZWFuSWF0aUVycm9ycygpO1xuICAgICAgICAgICAgICAgIH0sIDM1MDAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBjbGVhbklhdGlFcnJvcnMoKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBlcnIgaW4gaWF0aUVycm9yKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGlhdGlFcnJvcltlcnJdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBWZXJpZmllcyBwdWJsaXNoZXJcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIHZlcmlmeVB1Ymxpc2hlcigpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgZm9ybURhdGEuaWRlbnRpZmllciA9IFwiXCIuY29uY2F0KGZvcm1EYXRhLnJlZ2lzdHJhdGlvbl9hZ2VuY3ksIFwiLVwiKS5jb25jYXQoZm9ybURhdGEucmVnaXN0cmF0aW9uX251bWJlcik7XG4gICAgICAgICAgICBmb3JtRGF0YS5zdGVwID0gJzEnO1xuICAgICAgICAgICAgdmFyIGZvcm0gPSB7XG4gICAgICAgICAgICAgICAgcGFzc3dvcmQ6ICgwLCBlbmNyeXB0aW9uXzEuZGVmYXVsdCkoZm9ybURhdGEucGFzc3dvcmQsIChfYSA9IHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJycpLFxuICAgICAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogKDAsIGVuY3J5cHRpb25fMS5kZWZhdWx0KShmb3JtRGF0YS5wYXNzd29yZF9jb25maXJtYXRpb24sIChfYiA9IHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogJycpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wb3N0KCcvaWF0aS9yZWdpc3Rlci9wdWJsaXNoZXInLCBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZm9ybURhdGEpLCBmb3JtKSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5yZXF1ZXN0LnJlc3BvbnNlVVJMLmluY2x1ZGVzKCdhY3Rpdml0aWVzJykpIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2FjdGl2aXRpZXMnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBwdWJsaXNoZXJFeGlzdHMudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHZhciBlcnJvcnMgPSAhcmVzcG9uc2Uuc3VjY2VzcyB8fCAnZXJyb3JzJyBpbiByZXNwb25zZSA/IHJlc3BvbnNlLmVycm9ycyA6IFtdO1xuICAgICAgICAgICAgICAgIHJlZ2lzdGVyRm9ybVsnMSddLmlzX2NvbXBsZXRlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKCdwdWJsaXNoZXJfZXJyb3InIGluIHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hlckV4aXN0cy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBjbGVhblZhbGlkYXRpb25FcnJvcnMoKTtcbiAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJGb3JtWycxJ10uaXNfY29tcGxldGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGVwKDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlVmFsaWRhdGlvbkVycm9ycyhlcnJvcnMpO1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVFcnJvcnMoZXJyb3JzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgdXBkYXRlRXJyb3JzKGVycik7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogU3VibWl0cyByZWdpc3RyYXRpb24gRm9ybVxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gdmVyaWZ5Q29udGFjdEluZm9ybWF0aW9uKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBmb3JtRGF0YS5zdGVwID0gJzInO1xuICAgICAgICAgICAgdmFyIGZvcm0gPSB7XG4gICAgICAgICAgICAgICAgcGFzc3dvcmQ6ICgwLCBlbmNyeXB0aW9uXzEuZGVmYXVsdCkoZm9ybURhdGEucGFzc3dvcmQsIChfYSA9IHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJycpLFxuICAgICAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogKDAsIGVuY3J5cHRpb25fMS5kZWZhdWx0KShmb3JtRGF0YS5wYXNzd29yZF9jb25maXJtYXRpb24sIChfYiA9IHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogJycpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wb3N0KCcvaWF0aS9yZWdpc3Rlci9jb250YWN0JywgX19hc3NpZ24oX19hc3NpZ24oe30sIGZvcm1EYXRhKSwgZm9ybSkpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIGlmIChyZXMucmVxdWVzdC5yZXNwb25zZVVSTC5pbmNsdWRlcygnYWN0aXZpdGllcycpKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9hY3Rpdml0aWVzJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgdmFyIGVycm9ycyA9ICFyZXNwb25zZS5zdWNjZXNzIHx8ICdlcnJvcnMnIGluIHJlc3BvbnNlID8gcmVzcG9uc2UuZXJyb3JzIDogW107XG4gICAgICAgICAgICAgICAgdXBkYXRlVmFsaWRhdGlvbkVycm9ycyhlcnJvcnMpO1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHJlZ2lzdGVyRm9ybVsnMiddLmlzX2NvbXBsZXRlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYW5WYWxpZGF0aW9uRXJyb3JzKCk7XG4gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyRm9ybVsnMiddLmlzX2NvbXBsZXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RlcCgyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUVycm9ycyhlcnJvcnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHVwZGF0ZUVycm9ycyhlcnJvcik7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogU3VibWl0cyByZWdpc3RyYXRpb24gRm9ybVxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gdmVyaWZ5QWRkaXRpb25hbEluZm9ybWF0aW9uKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICBmb3JtRGF0YS5zdGVwID0gJzMnO1xuICAgICAgICAgICAgdmFyIGZvcm0gPSB7XG4gICAgICAgICAgICAgICAgcGFzc3dvcmQ6ICgwLCBlbmNyeXB0aW9uXzEuZGVmYXVsdCkoZm9ybURhdGEucGFzc3dvcmQsIChfYSA9IHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJycpLFxuICAgICAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogKDAsIGVuY3J5cHRpb25fMS5kZWZhdWx0KShmb3JtRGF0YS5wYXNzd29yZF9jb25maXJtYXRpb24sIChfYiA9IHByb2Nlc3MuZW52Lk1JWF9FTkNSWVBUSU9OX0tFWSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogJycpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgIC5wb3N0KCcvaWF0aS9yZWdpc3Rlci9hZGRpdGlvbmFsJywgX19hc3NpZ24oX19hc3NpZ24oe30sIGZvcm1EYXRhKSwgZm9ybSkpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIGlmIChyZXMucmVxdWVzdC5yZXNwb25zZVVSTC5pbmNsdWRlcygnYWN0aXZpdGllcycpKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9hY3Rpdml0aWVzJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgdmFyIGVycm9ycyA9ICFyZXNwb25zZS5zdWNjZXNzIHx8ICdlcnJvcnMnIGluIHJlc3BvbnNlID8gcmVzcG9uc2UuZXJyb3JzIDogW107XG4gICAgICAgICAgICAgICAgdXBkYXRlVmFsaWRhdGlvbkVycm9ycyhlcnJvcnMpO1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHJlZ2lzdGVyRm9ybVsnMyddLmlzX2NvbXBsZXRlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYW5WYWxpZGF0aW9uRXJyb3JzKCk7XG4gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyRm9ybVsnMyddLmlzX2NvbXBsZXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RlcCgzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUVycm9ycyhlcnJvcnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHVwZGF0ZUVycm9ycyhlcnJvcik7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogU3VibWl0cyByZWdpc3RyYXRpb24gRm9ybVxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gc3VibWl0Rm9ybSgpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgZm9ybURhdGEuc3RlcCA9ICc0JztcbiAgICAgICAgICAgIHZhciBmb3JtID0ge1xuICAgICAgICAgICAgICAgIHBhc3N3b3JkOiAoMCwgZW5jcnlwdGlvbl8xLmRlZmF1bHQpKGZvcm1EYXRhLnBhc3N3b3JkLCAoX2EgPSBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnKSxcbiAgICAgICAgICAgICAgICBwYXNzd29yZF9jb25maXJtYXRpb246ICgwLCBlbmNyeXB0aW9uXzEuZGVmYXVsdCkoZm9ybURhdGEucGFzc3dvcmRfY29uZmlybWF0aW9uLCAoX2IgPSBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6ICcnKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucG9zdCgnL2lhdGkvcmVnaXN0ZXInLCBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZm9ybURhdGEpLCBmb3JtKSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5yZXF1ZXN0LnJlc3BvbnNlVVJMLmluY2x1ZGVzKCdhY3Rpdml0aWVzJykpIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2FjdGl2aXRpZXMnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB2YXIgZXJyb3JzID0gIXJlc3BvbnNlLnN1Y2Nlc3MgfHwgJ2Vycm9ycycgaW4gcmVzcG9uc2UgPyByZXNwb25zZS5lcnJvcnMgOiBbXTtcbiAgICAgICAgICAgICAgICB1cGRhdGVWYWxpZGF0aW9uRXJyb3JzKGVycm9ycyk7XG4gICAgICAgICAgICAgICAgY2xlYW5JYXRpRXJyb3JzKCk7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihpYXRpRXJyb3IsIGVycm9ycyk7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmVnaXN0ZXJGb3JtWyc0J10uaXNfY29tcGxldGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBjbGVhblZhbGlkYXRpb25FcnJvcnMoKTtcbiAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJGb3JtWyc0J10uaXNfY29tcGxldGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGVwKDQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHVwZGF0ZUVycm9ycyhlcnJvcik7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBnZXRDdXJyZW50U3RlcCgpIHtcbiAgICAgICAgICAgIHJldHVybiBzdGVwLnZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gdXBkYXRlU3RlcChjdXJyZW50X3N0ZXApIHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50X3N0ZXAgPT09IHN0ZXAudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBzdGVwLnZhbHVlICs9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLyoqXG4gICAgICAgICAqIGNhbGxzIHN1Ym1pdCBmdW5jdGlvbiBiYXNlZCBvbiBjdXJyZW50IHN0ZXAgdmFsdWVcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIGdvVG9OZXh0Rm9ybSgpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoc3RlcC52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgdmVyaWZ5UHVibGlzaGVyKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgdmVyaWZ5Q29udGFjdEluZm9ybWF0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgdmVyaWZ5QWRkaXRpb25hbEluZm9ybWF0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgc3VibWl0Rm9ybSgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBnb1RvUHJldmlvdXNGb3JtKCkge1xuICAgICAgICAgICAgY2xlYW5JYXRpRXJyb3JzKCk7XG4gICAgICAgICAgICBzdGVwLnZhbHVlIC09IDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlZ2lzdGVyRm9ybTogcmVnaXN0ZXJGb3JtLFxuICAgICAgICAgICAgZm9ybURhdGE6IGZvcm1EYXRhLFxuICAgICAgICAgICAgZXJyb3JEYXRhOiBlcnJvckRhdGEsXG4gICAgICAgICAgICBwdWJsaXNoZXJFeGlzdHM6IHB1Ymxpc2hlckV4aXN0cyxcbiAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZTogaXNMb2FkZXJWaXNpYmxlLFxuICAgICAgICAgICAgZ29Ub05leHRGb3JtOiBnb1RvTmV4dEZvcm0sXG4gICAgICAgICAgICBnb1RvUHJldmlvdXNGb3JtOiBnb1RvUHJldmlvdXNGb3JtLFxuICAgICAgICAgICAgZ2V0Q3VycmVudFN0ZXA6IGdldEN1cnJlbnRTdGVwLFxuICAgICAgICAgICAgY2hlY2tTdGVwOiBjaGVja1N0ZXAsXG4gICAgICAgICAgICBpYXRpRXJyb3I6IGlhdGlFcnJvcixcbiAgICAgICAgICAgIGlzVGV4dEZpZWxkOiBpc1RleHRGaWVsZCxcbiAgICAgICAgICAgIHByb3BzOiBwcm9wcyxcbiAgICAgICAgICAgIHN0ZXA6IHN0ZXAsXG4gICAgICAgICAgICByZXNpemU6IHJlc2l6ZSxcbiAgICAgICAgICAgIHRleHRhcmVhOiB0ZXh0YXJlYSxcbiAgICAgICAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ0lhdGlTdGFuZGFyZCcsXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIGZ1bmN0aW9uIGRvd25sb2FkTWFudWFsKHR5cGUpIHtcbiAgICAgICAgICAgIHZhciBmaWxlTmFtZSA9IHtcbiAgICAgICAgICAgICAgICBhY3Rpdml0eTogJ0lBVElfUHVibGlzaGVyX0FjdGl2aXR5X1N0YW5kYXJkLnBkZicsXG4gICAgICAgICAgICAgICAgb3JnYW5pemF0aW9uOiAnSUFUSV9QdWJsaXNoZXJfT3JnYW5pc2F0aW9uX1N0YW5kYXJkLnBkZicsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdmFyIHVybCA9IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyBcIi9EYXRhL01hbnVhbHMvXCIuY29uY2F0KGZpbGVOYW1lW3R5cGVdKTtcbiAgICAgICAgICAgICgwLCBheGlvc18xLmRlZmF1bHQpKHtcbiAgICAgICAgICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJyxcbiAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbcmVzcG9uc2UuZGF0YV0sIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL3BkZicsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgICAgICAgICAgbGluay5ocmVmID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICAgICAgICAgICAgbGluay5kb3dubG9hZCA9IGZpbGVOYW1lW3R5cGVdO1xuICAgICAgICAgICAgICAgIGxpbmsuY2xpY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfX3JldHVybmVkX18gPSB7IGxhbmd1YWdlOiBsYW5ndWFnZSwgZG93bmxvYWRNYW51YWw6IGRvd25sb2FkTWFudWFsIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBfX25hbWU6ICdQdWJsaXNoaW5nQ2hlY2tsaXN0JyxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICBmdW5jdGlvbiB0cmlnZ2VyTW9kZWwoKSB7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnb3BlbkFkZE1vZGVsJywgJ3RydWUnKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgdHJpZ2dlck1vZGVsOiB0cmlnZ2VyTW9kZWwsIGxhbmd1YWdlOiBsYW5ndWFnZSB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIGF4aW9zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImF4aW9zXCIpKTtcbnZhciBFbWFpbFZlcmlmaWNhdGlvbl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9FbWFpbFZlcmlmaWNhdGlvbi52dWVcIikpO1xudmFyIEhvdmVyVGV4dF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi8uLi8uLi9jb21wb25lbnRzL0hvdmVyVGV4dC52dWVcIikpO1xudmFyIG11bHRpc2VsZWN0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkB2dWVmb3JtL211bHRpc2VsZWN0XCIpKTtcbnZhciBMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uLy4uL2NvbXBvbmVudHMvTG9hZGVyLnZ1ZVwiKSk7XG52YXIgZW5jcnlwdGlvbl8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJDb21wb3NhYmxlL2VuY3J5cHRpb25cIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgRW1haWxWZXJpZmljYXRpb246IEVtYWlsVmVyaWZpY2F0aW9uX3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIEhvdmVyVGV4dDogSG92ZXJUZXh0X3Z1ZV8xLmRlZmF1bHQsXG4gICAgICAgIE11bHRpc2VsZWN0OiBtdWx0aXNlbGVjdF8xLmRlZmF1bHQsXG4gICAgICAgIExvYWRlcjogTG9hZGVyX3Z1ZV8xLmRlZmF1bHQsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgICBjb3VudHJ5OiB7XG4gICAgICAgICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGFnZW5jeToge1xuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIHN0ZXAgPSAoMCwgdnVlXzEucmVmKSgxKTtcbiAgICAgICAgdmFyIHB1Ymxpc2hlckV4aXN0cyA9ICgwLCB2dWVfMS5yZWYpKHRydWUpO1xuICAgICAgICB2YXIgaXNMb2FkZXJWaXNpYmxlID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICB2YXIgYWdlbmN5ID0gKDAsIHZ1ZV8xLnRvUmVmcykocHJvcHMpLmFnZW5jeTtcbiAgICAgICAgdmFyIGVycm9yRGF0YSA9ICgwLCB2dWVfMS5yZWFjdGl2ZSkoe1xuICAgICAgICAgICAgcHVibGlzaGVyX25hbWU6ICcnLFxuICAgICAgICAgICAgcHVibGlzaGVyX2lkOiAnJyxcbiAgICAgICAgICAgIGNvdW50cnk6ICcnLFxuICAgICAgICAgICAgcmVnaXN0cmF0aW9uX2FnZW5jeTogJycsXG4gICAgICAgICAgICByZWdpc3RyYXRpb25fbnVtYmVyOiAnJyxcbiAgICAgICAgICAgIGlkZW50aWZpZXI6ICcnLFxuICAgICAgICAgICAgdXNlcm5hbWU6ICcnLFxuICAgICAgICAgICAgZnVsbF9uYW1lOiAnJyxcbiAgICAgICAgICAgIGVtYWlsOiAnJyxcbiAgICAgICAgICAgIHBhc3N3b3JkOiAnJyxcbiAgICAgICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZm9ybURhdGEgPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIHB1Ymxpc2hlcl9uYW1lOiAnJyxcbiAgICAgICAgICAgIHB1Ymxpc2hlcl9pZDogJycsXG4gICAgICAgICAgICBjb3VudHJ5OiAnJyxcbiAgICAgICAgICAgIHJlZ2lzdHJhdGlvbl9hZ2VuY3k6ICcnLFxuICAgICAgICAgICAgcmVnaXN0cmF0aW9uX251bWJlcjogJycsXG4gICAgICAgICAgICBpZGVudGlmaWVyOiAnJyxcbiAgICAgICAgICAgIHVzZXJuYW1lOiAnJyxcbiAgICAgICAgICAgIGZ1bGxfbmFtZTogJycsXG4gICAgICAgICAgICBlbWFpbDogJycsXG4gICAgICAgICAgICBwYXNzd29yZDogJycsXG4gICAgICAgICAgICBwYXNzd29yZF9jb25maXJtYXRpb246ICcnLFxuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLndhdGNoKShmdW5jdGlvbiAoKSB7IHJldHVybiBmb3JtRGF0YS5jb3VudHJ5OyB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBmb3JtRGF0YS5yZWdpc3RyYXRpb25fYWdlbmN5ID0gJyc7XG4gICAgICAgIH0pO1xuICAgICAgICAoMCwgdnVlXzEud2F0Y2gpKGZ1bmN0aW9uICgpIHsgcmV0dXJuIFtmb3JtRGF0YS5yZWdpc3RyYXRpb25fYWdlbmN5LCBmb3JtRGF0YS5yZWdpc3RyYXRpb25fbnVtYmVyXTsgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZm9ybURhdGEuaWRlbnRpZmllciA9IGZvcm1EYXRhLnJlZ2lzdHJhdGlvbl9hZ2VuY3lcbiAgICAgICAgICAgICAgICA/IGZvcm1EYXRhLnJlZ2lzdHJhdGlvbl9hZ2VuY3kgKyAnLScgKyBmb3JtRGF0YS5yZWdpc3RyYXRpb25fbnVtYmVyXG4gICAgICAgICAgICAgICAgOiBmb3JtRGF0YS5yZWdpc3RyYXRpb25fbnVtYmVyO1xuICAgICAgICB9LCB7IGRlZXA6IHRydWUgfSk7XG4gICAgICAgIHZhciByZWdpc3RyYXRpb25fYWdlbmN5ID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgYWdlbmNpZXMgPSBhZ2VuY3kudmFsdWU7XG4gICAgICAgICAgICBpZiAoZm9ybURhdGEuY291bnRyeSkge1xuICAgICAgICAgICAgICAgIHZhciB1bmNhdGVnb3JpemVkXzEgPSBbJ1hJJywgJ1hSJ107XG4gICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhhZ2VuY2llcykuZmlsdGVyKGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIga2V5ID0gX2FbMF07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBrZXkuc3RhcnRzV2l0aChmb3JtRGF0YS5jb3VudHJ5KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5jYXRlZ29yaXplZF8xLnNvbWUoZnVuY3Rpb24gKGspIHsgcmV0dXJuIGtleS5zdGFydHNXaXRoKGspOyB9KTtcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWdlbmNpZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaXNUZXh0RmllbGQgPSAoMCwgdnVlXzEuY29tcHV0ZWQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoZmllbGRUeXBlLCBmaWVsZE5hbWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKChmaWVsZFR5cGUgPT09ICd0ZXh0JyB8fFxuICAgICAgICAgICAgICAgICAgICBmaWVsZFR5cGUgPT09ICdwYXNzd29yZCcgfHxcbiAgICAgICAgICAgICAgICAgICAgZmllbGRUeXBlID09PSAnZW1haWwnKSAmJlxuICAgICAgICAgICAgICAgICAgICBmaWVsZE5hbWUgIT0gJ2lkZW50aWZpZXInKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgY2hlY2tTdGVwID0gKDAsIHZ1ZV8xLmNvbXB1dGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGZvcm1TdGVwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGZvcm1TdGVwLnRvU3RyaW5nKCkpID09PSBzdGVwLnZhbHVlO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciByZWdpc3RlckZvcm0gPSAoMCwgdnVlXzEucmVhY3RpdmUpKHtcbiAgICAgICAgICAgIDE6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5wdWJsaXNoZXJfaW5mb3JtYXRpb24ubGFiZWwsXG4gICAgICAgICAgICAgICAgaXNfY29tcGxldGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLnB1Ymxpc2hlcl9pbmZvcm1hdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLnB1Ymxpc2hlcl9pbmZvcm1hdGlvbi5ob3Zlcl90ZXh0LFxuICAgICAgICAgICAgICAgIGZpZWxkczoge1xuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoZXJfbmFtZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcucHVibGlzaGVyX25hbWUubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncHVibGlzaGVyX25hbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcucHVibGlzaGVyX25hbWUucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3B1Ymxpc2hlci1uYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5wdWJsaXNoZXJfbmFtZS5ob3Zlcl90ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdjb2wtc3Bhbi0yIG1iLTQgbGc6bWItMicsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoZXJfaWQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLnB1Ymxpc2hlcl9pZC5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdwdWJsaXNoZXJfaWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcucHVibGlzaGVyX2lkLnBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdwdWJsaXNoZXItaWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLnB1Ymxpc2hlcl9pZC5ob3Zlcl90ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTInLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgY291bnRyeToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcuY291bnRyeS5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdjb3VudHJ5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLmNvdW50cnkucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2NvdW50cnlfc2VsZWN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5jb3VudHJ5LmhvdmVyX3RleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcy5jb3VudHJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTIgcmVsYXRpdmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgb3JnYW5pemF0aW9uX3JlZ2lzdHJhdGlvbl9hZ2VuY3k6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLm9yZ19yZWdpc3RyYXRpb25fYWdlbmN5LmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3JlZ2lzdHJhdGlvbl9hZ2VuY3knLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcub3JnX3JlZ2lzdHJhdGlvbl9hZ2VuY3kucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3JlZ2lzdHJhdGlvbi1hZ2VuY3knLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLm9yZ19yZWdpc3RyYXRpb25fYWdlbmN5LmhvdmVyX3RleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHJlZ2lzdHJhdGlvbl9hZ2VuY3ksXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogJ21iLTQgbGc6bWItMiByZWxhdGl2ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBvcmdhbml6YXRpb25fcmVnaXN0cmF0aW9uX25vOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5vcmdfcmVnaXN0cmF0aW9uX25vLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3JlZ2lzdHJhdGlvbl9udW1iZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcub3JnX3JlZ2lzdHJhdGlvbl9uby5wbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAncmVnaXN0cmF0aW9uLW51bWJlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcub3JnX3JlZ2lzdHJhdGlvbl9uby5ob3Zlcl90ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTInLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiBcIlwiLmNvbmNhdChsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLmZvcl9lZywgXCIgMTIzNDU2XCIpLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBpYXRpX29yZ2FuaXphdGlvbmFsX2lkZW50aWZpZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLmlhdGlfb3JnX2lkZW50aWZpZXIubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnaWRlbnRpZmllcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2lkZW50aWZpZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLmlhdGlfb3JnX2lkZW50aWZpZXIuaG92ZXJfdGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi02JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBfdGV4dDogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5pYXRpX29yZ19pZGVudGlmaWVyLmhlbHBfdGV4dCxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIDI6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5hZG1pbmlzdHJhdG9yX2luZm9ybWF0aW9uLmxhYmVsLFxuICAgICAgICAgICAgICAgIGlzX2NvbXBsZXRlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5hZG1pbmlzdHJhdG9yX2luZm9ybWF0aW9uLnJlZ2lzdGVyX2Rlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcuYWRtaW5pc3RyYXRvcl9pbmZvcm1hdGlvbi5ob3Zlcl90ZXh0LFxuICAgICAgICAgICAgICAgIGZpZWxkczoge1xuICAgICAgICAgICAgICAgICAgICB1c2VybmFtZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcudXNlcm5hbWUubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndXNlcm5hbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcudXNlcm5hbWUucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3VzZXJuYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJfdGV4dDogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy51c2VybmFtZS5ob3Zlcl90ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdtYi00IGxnOm1iLTInLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZnVsbF9uYW1lOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5mdWxsbmFtZS5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdmdWxsX25hbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcuZnVsbG5hbWUucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2Z1bGwtbmFtZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlcl90ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdjb2wtc3RhcnQtMSBtYi00IGxnOm1iLTInLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBlbWFpbDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcuZW1haWxfYWRkcmVzcy5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdlbWFpbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5lbWFpbF9hZGRyZXNzLnBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdlbWFpbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi0yJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLnBhc3N3b3JkLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3Bhc3N3b3JkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLnBhc3N3b3JkLnBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdwYXNzd29yZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3Bhc3N3b3JkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi0yJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlybV9wYXNzd29yZDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcucGFzc3dvcmQuY29uZmlybSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdwYXNzd29yZF9jb25maXJtYXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcucGFzc3dvcmQucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3Bhc3N3b3JkLWNvbmZpcm1hdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyX3RleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3Bhc3N3b3JkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAnbWItNCBsZzptYi02JyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIDM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5lbWFpbF92ZXJpZmljYXRpb24udGl0bGUsXG4gICAgICAgICAgICAgICAgaXNfY29tcGxldGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLmVtYWlsX3ZlcmlmaWNhdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgdXBkYXRlRm9ybUVycm9ycyA9IGZ1bmN0aW9uIChlcnJvcnMpIHtcbiAgICAgICAgICAgIGlmIChlcnJvcnMgPT09IHZvaWQgMCkgeyBlcnJvcnMgPSBbXTsgfVxuICAgICAgICAgICAgdmFyIGVycm9yTGVuZ3RoID0gT2JqZWN0LmtleXMoZXJyb3JzKS5sZW5ndGg7XG4gICAgICAgICAgICBpZiAoZXJyb3JMZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBlcnJLZXkgaW4gZXJyb3JEYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yRGF0YVtlcnJLZXldID0gJyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVycm9yTGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGVycktleSBpbiBlcnJvckRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JEYXRhW2VycktleV0gPSBlcnJLZXkgaW4gZXJyb3JzID8gZXJyb3JzW2VycktleV1bMF0gOiAnJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGZ1bmN0aW9uIHZlcmlmeVB1Ymxpc2hlcigpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgZm9ybURhdGEuaWRlbnRpZmllciA9IFwiXCIuY29uY2F0KGZvcm1EYXRhLnJlZ2lzdHJhdGlvbl9hZ2VuY3ksIFwiLVwiKS5jb25jYXQoZm9ybURhdGEucmVnaXN0cmF0aW9uX251bWJlcik7XG4gICAgICAgICAgICB2YXIgZm9ybSA9IHtcbiAgICAgICAgICAgICAgICBwYXNzd29yZDogKDAsIGVuY3J5cHRpb25fMS5kZWZhdWx0KShmb3JtRGF0YS5wYXNzd29yZCwgKF9hID0gcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJyksXG4gICAgICAgICAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiAoMCwgZW5jcnlwdGlvbl8xLmRlZmF1bHQpKGZvcm1EYXRhLnBhc3N3b3JkX2NvbmZpcm1hdGlvbiwgKF9iID0gcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAnJyksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYXhpb3NfMS5kZWZhdWx0XG4gICAgICAgICAgICAgICAgLnBvc3QoJy92ZXJpZnlQdWJsaXNoZXInLCBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZm9ybURhdGEpLCBmb3JtKSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5yZXF1ZXN0LnJlc3BvbnNlVVJMLmluY2x1ZGVzKCdhY3Rpdml0aWVzJykpIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2FjdGl2aXRpZXMnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICBwdWJsaXNoZXJFeGlzdHMudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHZhciBlcnJvcnMgPSAhcmVzcG9uc2Uuc3VjY2VzcyB8fCAnZXJyb3JzJyBpbiByZXNwb25zZSA/IHJlc3BvbnNlLmVycm9ycyA6IFtdO1xuICAgICAgICAgICAgICAgIHVwZGF0ZUZvcm1FcnJvcnMoZXJyb3JzKTtcbiAgICAgICAgICAgICAgICBpZiAoJ3B1Ymxpc2hlcl9lcnJvcicgaW4gcmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaGVyRXhpc3RzLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyRm9ybVsnMSddLmlzX2NvbXBsZXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC52YWx1ZSArPSAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpc0xvYWRlclZpc2libGUudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHN1Ym1pdEZvcm0oKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIHZhciBmb3JtID0ge1xuICAgICAgICAgICAgICAgIHBhc3N3b3JkOiAoMCwgZW5jcnlwdGlvbl8xLmRlZmF1bHQpKGZvcm1EYXRhLnBhc3N3b3JkLCAoX2EgPSBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnKSxcbiAgICAgICAgICAgICAgICBwYXNzd29yZF9jb25maXJtYXRpb246ICgwLCBlbmNyeXB0aW9uXzEuZGVmYXVsdCkoZm9ybURhdGEucGFzc3dvcmRfY29uZmlybWF0aW9uLCAoX2IgPSBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6ICcnKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBheGlvc18xLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAucG9zdCgnL3JlZ2lzdGVyJywgX19hc3NpZ24oX19hc3NpZ24oe30sIGZvcm1EYXRhKSwgZm9ybSkpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIGlmIChyZXMucmVxdWVzdC5yZXNwb25zZVVSTC5pbmNsdWRlcygnYWN0aXZpdGllcycpKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9hY3Rpdml0aWVzJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgdmFyIGVycm9ycyA9ICFyZXNwb25zZS5zdWNjZXNzIHx8ICdlcnJvcnMnIGluIHJlc3BvbnNlID8gcmVzcG9uc2UuZXJyb3JzIDogW107XG4gICAgICAgICAgICAgICAgdXBkYXRlRm9ybUVycm9ycyhlcnJvcnMpO1xuICAgICAgICAgICAgICAgIGVycm9yRGF0YS5wYXNzd29yZF9jb25maXJtYXRpb24gPSBlcnJvcnMucGFzc3dvcmRfY29uZmlybWF0aW9uXG4gICAgICAgICAgICAgICAgICAgID8gZXJyb3JzLnBhc3N3b3JkX2NvbmZpcm1hdGlvblswXVxuICAgICAgICAgICAgICAgICAgICA6IGVycm9ycy5wYXNzd29yZFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBlcnJvcnMucGFzc3dvcmRbMF1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogJyc7XG4gICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJGb3JtWycyJ10uaXNfY29tcGxldGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBzdGVwLnZhbHVlICs9IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdmFyIGVycm9ycyA9IGVycm9yLnJlc3BvbnNlLmRhdGEuZXJyb3JzO1xuICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHVwZGF0ZUZvcm1FcnJvcnMoZXJyb3JzKTtcbiAgICAgICAgICAgICAgICBlcnJvckRhdGEucGFzc3dvcmRfY29uZmlybWF0aW9uID0gZXJyb3JzLnBhc3N3b3JkX2NvbmZpcm1hdGlvblxuICAgICAgICAgICAgICAgICAgICA/IGVycm9ycy5wYXNzd29yZF9jb25maXJtYXRpb25bMF1cbiAgICAgICAgICAgICAgICAgICAgOiBlcnJvcnMucGFzc3dvcmRcbiAgICAgICAgICAgICAgICAgICAgICAgID8gZXJyb3JzLnBhc3N3b3JkWzBdXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICcnO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gZ2V0Q3VycmVudFN0ZXAoKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RlcC52YWx1ZS50b1N0cmluZygpO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGdvVG9OZXh0Rm9ybSgpIHtcbiAgICAgICAgICAgIGlmIChzdGVwLnZhbHVlID09PSAxKVxuICAgICAgICAgICAgICAgIHZlcmlmeVB1Ymxpc2hlcigpO1xuICAgICAgICAgICAgaWYgKHN0ZXAudmFsdWUgPT09IDIpXG4gICAgICAgICAgICAgICAgc3VibWl0Rm9ybSgpO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGdvVG9QcmV2aW91c0Zvcm0oKSB7XG4gICAgICAgICAgICBzdGVwLnZhbHVlIC09IDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlZ2lzdGVyRm9ybTogcmVnaXN0ZXJGb3JtLFxuICAgICAgICAgICAgZm9ybURhdGE6IGZvcm1EYXRhLFxuICAgICAgICAgICAgZXJyb3JEYXRhOiBlcnJvckRhdGEsXG4gICAgICAgICAgICBwdWJsaXNoZXJFeGlzdHM6IHB1Ymxpc2hlckV4aXN0cyxcbiAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZTogaXNMb2FkZXJWaXNpYmxlLFxuICAgICAgICAgICAgZ29Ub05leHRGb3JtOiBnb1RvTmV4dEZvcm0sXG4gICAgICAgICAgICBnb1RvUHJldmlvdXNGb3JtOiBnb1RvUHJldmlvdXNGb3JtLFxuICAgICAgICAgICAgZ2V0Q3VycmVudFN0ZXA6IGdldEN1cnJlbnRTdGVwLFxuICAgICAgICAgICAgY2hlY2tTdGVwOiBjaGVja1N0ZXAsXG4gICAgICAgICAgICBpc1RleHRGaWVsZDogaXNUZXh0RmllbGQsXG4gICAgICAgICAgICBwcm9wczogcHJvcHMsXG4gICAgICAgICAgICBsYW5ndWFnZTogbGFuZ3VhZ2UsXG4gICAgICAgIH07XG4gICAgfSxcbn0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1N1cHBvcnRQYWdlJyxcbiAgICBzZXR1cDogZnVuY3Rpb24gKF9fcHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBleHBvc2UgPSBfYS5leHBvc2U7XG4gICAgICAgIGV4cG9zZSgpO1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIF9fcmV0dXJuZWRfXyA9IHsgbGFuZ3VhZ2U6IGxhbmd1YWdlIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3JldHVybmVkX18sICdfX2lzU2NyaXB0U2V0dXAnLCB7IGVudW1lcmFibGU6IGZhbHNlLCB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIF9fcmV0dXJuZWRfXztcbiAgICB9XG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHZ1ZV8xID0gcmVxdWlyZShcInZ1ZVwiKTtcbnZhciBheGlvc18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJheGlvc1wiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgX19uYW1lOiAnQWRtaW5Gb290ZXInLFxuICAgIHByb3BzOiB7XG4gICAgICAgIHN1cGVyQWRtaW46IHsgdHlwZTogQm9vbGVhbiwgcmVxdWlyZWQ6IGZhbHNlLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgIH0sXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIGZ1bmN0aW9uIGRvd25sb2FkTWFudWFsKHR5cGUpIHtcbiAgICAgICAgICAgIHZhciBmaWxlTmFtZSA9IHtcbiAgICAgICAgICAgICAgICB1c2VyOiAnSUFUSV9QdWJsaXNoZXItVXNlcl9NYW51YWxfdjEuMC5wZGYnLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHZhciB1cmwgPSB3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgXCIvRGF0YS9NYW51YWxzL1wiLmNvbmNhdChmaWxlTmFtZVt0eXBlXSk7XG4gICAgICAgICAgICAoMCwgYXhpb3NfMS5kZWZhdWx0KSh7XG4gICAgICAgICAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcicsXG4gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHZhciBibG9iID0gbmV3IEJsb2IoW3Jlc3BvbnNlLmRhdGFdLCB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi9wZGYnLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgICAgIGxpbmsuaHJlZiA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgICAgICAgICAgIGxpbmsuZG93bmxvYWQgPSBmaWxlTmFtZVt0eXBlXTtcbiAgICAgICAgICAgICAgICBsaW5rLmNsaWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBsYW5ndWFnZTogbGFuZ3VhZ2UsIGRvd25sb2FkTWFudWFsOiBkb3dubG9hZE1hbnVhbCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgcHJvcHM6IHtcbiAgICAgICAgbWVzc2FnZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xudmFyIExvYWRlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQ29tcG9uZW50cy9Mb2FkZXIudnVlXCIpKTtcbnZhciBlbmNyeXB0aW9uXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkNvbXBvc2FibGUvZW5jcnlwdGlvblwiKSk7XG5leHBvcnRzLmRlZmF1bHQgPSAoMCwgdnVlXzEuZGVmaW5lQ29tcG9uZW50KSh7XG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBMb2FkZXI6IExvYWRlcl92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgbWVzc2FnZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgICAgIGludGVudDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICAgICAgdmFyIGZvcm1EYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB1c2VybmFtZTogJycsXG4gICAgICAgICAgICBwYXNzd29yZDogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZXJyb3JEYXRhID0gKDAsIHZ1ZV8xLnJlYWN0aXZlKSh7XG4gICAgICAgICAgICB1c2VybmFtZTogJycsXG4gICAgICAgICAgICBwYXNzd29yZDogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaXNMb2FkZXJWaXNpYmxlID0gKDAsIHZ1ZV8xLnJlZikoZmFsc2UpO1xuICAgICAgICBmdW5jdGlvbiBsb2dpbigpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgZm9ybTtcbiAgICAgICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9iKSB7XG4gICAgICAgICAgICAgICAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGZvcm0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VybmFtZTogZm9ybURhdGEudXNlcm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXNzd29yZDogKDAsIGVuY3J5cHRpb25fMS5kZWZhdWx0KShmb3JtRGF0YS5wYXNzd29yZCwgKF9hID0gcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJyksXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIGF4aW9zXzEuZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgLnBvc3QoJy9sb2dpbicsIGZvcm0pXG4gICAgICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yRGF0YS51c2VybmFtZSA9ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JEYXRhLnBhc3N3b3JkID0gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoISgnZXJyb3JzJyBpbiByZXNwb25zZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZXJyb3JzID0gZXJyb3IucmVzcG9uc2UuZGF0YS5lcnJvcnM7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvckRhdGEudXNlcm5hbWUgPSBlcnJvcnMudXNlcm5hbWUgPyBlcnJvcnMudXNlcm5hbWVbMF0gOiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yRGF0YS5wYXNzd29yZCA9IGVycm9ycy5wYXNzd29yZCA/IGVycm9ycy5wYXNzd29yZFswXSA6ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZm9ybURhdGE6IGZvcm1EYXRhLFxuICAgICAgICAgICAgZXJyb3JEYXRhOiBlcnJvckRhdGEsXG4gICAgICAgICAgICBpc0xvYWRlclZpc2libGU6IGlzTG9hZGVyVmlzaWJsZSxcbiAgICAgICAgICAgIGxvZ2luOiBsb2dpbixcbiAgICAgICAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgYXhpb3NfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYXhpb3NcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKDAsIHZ1ZV8xLmRlZmluZUNvbXBvbmVudCkoe1xuICAgIF9fbmFtZTogJ1dlYkZvb3RlcicsXG4gICAgc2V0dXA6IGZ1bmN0aW9uIChfX3Byb3BzLCBfYSkge1xuICAgICAgICB2YXIgZXhwb3NlID0gX2EuZXhwb3NlO1xuICAgICAgICBleHBvc2UoKTtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIGZ1bmN0aW9uIGRvd25sb2FkTWFudWFsKHR5cGUpIHtcbiAgICAgICAgICAgIHZhciBmaWxlTmFtZSA9IHtcbiAgICAgICAgICAgICAgICB1c2VyOiAnSUFUSV9QdWJsaXNoZXItVXNlcl9NYW51YWxfdjEuMC5wZGYnLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHZhciB1cmwgPSB3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgXCIvRGF0YS9NYW51YWxzL1wiLmNvbmNhdChmaWxlTmFtZVt0eXBlXSk7XG4gICAgICAgICAgICAoMCwgYXhpb3NfMS5kZWZhdWx0KSh7XG4gICAgICAgICAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcicsXG4gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHZhciBibG9iID0gbmV3IEJsb2IoW3Jlc3BvbnNlLmRhdGFdLCB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi9wZGYnLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgICAgIGxpbmsuaHJlZiA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgICAgICAgICAgIGxpbmsuZG93bmxvYWQgPSBmaWxlTmFtZVt0eXBlXTtcbiAgICAgICAgICAgICAgICBsaW5rLmNsaWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX19yZXR1cm5lZF9fID0geyBsYW5ndWFnZTogbGFuZ3VhZ2UsIGRvd25sb2FkTWFudWFsOiBkb3dubG9hZE1hbnVhbCB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX19yZXR1cm5lZF9fLCAnX19pc1NjcmlwdFNldHVwJywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiBfX3JldHVybmVkX187XG4gICAgfVxufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2dWVfMSA9IHJlcXVpcmUoXCJ2dWVcIik7XG52YXIgTmF2RHJvcGRvd25fdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4uLy4uLy4uL2NvbXBvbmVudHMvTmF2RHJvcGRvd24udnVlXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9ICgwLCB2dWVfMS5kZWZpbmVDb21wb25lbnQpKHtcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIE5hdkRyb3Bkb3duOiBOYXZEcm9wZG93bl92dWVfMS5kZWZhdWx0LFxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgdGl0bGU6IHsgdHlwZTogU3RyaW5nLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBhdXRoOiB7IHR5cGU6IFN0cmluZywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgc3VwZXJBZG1pbjogeyB0eXBlOiBCb29sZWFuLCByZXF1aXJlZDogZmFsc2UsIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgfSxcbiAgICBzZXR1cDogZnVuY3Rpb24gKCkge1xuICAgICAgICAoMCwgdnVlXzEub25Nb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ25vLW5hdicpO1xuICAgICAgICB9KTtcbiAgICAgICAgKDAsIHZ1ZV8xLm9uVW5tb3VudGVkKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ25vLW5hdicpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgICAgIHJldHVybiB7IGxhbmd1YWdlOiBsYW5ndWFnZSB9O1xuICAgIH0sXG59KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLyoqXG4gKiBGaXJzdCB3ZSB3aWxsIGxvYWQgYWxsIG9mIHRoaXMgcHJvamVjdCdzIEphdmFTY3JpcHQgZGVwZW5kZW5jaWVzIHdoaWNoXG4gKiBpbmNsdWRlcyBWdWUgYW5kIG90aGVyIGxpYnJhcmllcy4gSXQgaXMgYSBncmVhdCBzdGFydGluZyBwb2ludCB3aGVuXG4gKiBidWlsZGluZyByb2J1c3QsIHBvd2VyZnVsIHdlYiBhcHBsaWNhdGlvbnMgdXNpbmcgVnVlIGFuZCBMYXJhdmVsLlxuICovXG52YXIgdnVlXzEgPSByZXF1aXJlKFwidnVlXCIpO1xudmFyIHZ1ZTNfc21vb3RoX3Njcm9sbF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJ2dWUzLXNtb290aC1zY3JvbGxcIikpO1xudmFyIHN2Z192dWUzXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcInN2Zy12dWUzXCIpKTtcbnZhciBXZWJIZWFkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3Mvd2ViL3BhcnRpYWxzL1dlYkhlYWRlci52dWVcIikpO1xudmFyIFdlYkZvb3Rlcl92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy93ZWIvcGFydGlhbHMvV2ViRm9vdGVyLnZ1ZVwiKSk7XG52YXIgQWRtaW5Gb290ZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3Mvd2ViL3BhcnRpYWxzL0FkbWluRm9vdGVyLnZ1ZVwiKSk7XG52YXIgV2VsY29tZVBhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3Mvd2ViL1dlbGNvbWVQYWdlLnZ1ZVwiKSk7XG52YXIgUmVnaXN0ZXJQYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL3dlYi9SZWdpc3RlclBhZ2UudnVlXCIpKTtcbnZhciBBYm91dFBhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3Mvd2ViL0Fib3V0UGFnZS52dWVcIikpO1xudmFyIFN1cHBvcnRQYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL3dlYi9TdXBwb3J0UGFnZS52dWVcIikpO1xudmFyIElhdGlTdGFuZGFyZF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy93ZWIvSWF0aVN0YW5kYXJkLnZ1ZVwiKSk7XG52YXIgUHVibGlzaGluZ0NoZWNrbGlzdF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy93ZWIvUHVibGlzaGluZ0NoZWNrbGlzdC52dWVcIikpO1xudmFyIElhdGlSZWdpc3RlclBhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3Mvd2ViL0lhdGlSZWdpc3RlclBhZ2UudnVlXCIpKTtcbi8qKlxuICogVnVlIGNvbXBvbmVudHMgZm9yIEFjdGl2aXRpZXMgTGlzdGluZ1xuICovXG52YXIgUmVzdWx0RGV0YWlsX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvUmVzdWx0RGV0YWlsLnZ1ZVwiKSk7XG52YXIgUmVzdWx0TGlzdF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL1Jlc3VsdExpc3QudnVlXCIpKTtcbnZhciBJbmRpY2F0b3JEZXRhaWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9JbmRpY2F0b3JEZXRhaWwudnVlXCIpKTtcbnZhciBJbmRpY2F0b3JMaXN0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvSW5kaWNhdG9yTGlzdC52dWVcIikpO1xudmFyIFBlcmlvZHNEZXRhaWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvYWN0aXZpdHkvcGVyaW9kcy9QZXJpb2RzRGV0YWlsLnZ1ZVwiKSk7XG52YXIgUGVyaW9kc0xpc3RfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvYWN0aXZpdHkvcGVyaW9kcy9QZXJpb2RzTGlzdC52dWVcIikpO1xudmFyIFRyYW5zYWN0aW9uTGlzdF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvVHJhbnNhY3Rpb25MaXN0LnZ1ZVwiKSk7XG52YXIgVHJhbnNhY3Rpb25EZXRhaWxfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL1RyYW5zYWN0aW9uRGV0YWlsLnZ1ZVwiKSk7XG52YXIgRGVzY3JpcHRpb25Gb3JtX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL2NvbXBvbmVudHMvRGVzY3JpcHRpb25Gb3JtLnZ1ZVwiKSk7XG52YXIgRWxlbWVudHNOb3RlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0VsZW1lbnRzTm90ZS52dWVcIikpO1xudmFyIEFjdGl2aXR5SW5kZXhfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvYWN0aXZpdHkvQWN0aXZpdHlJbmRleC52dWVcIikpO1xudmFyIEFkbWluSGVhZGVyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL2NvbXBvbmVudHMvQWRtaW5IZWFkZXIudnVlXCIpKTtcbnZhciBBY3Rpdml0eURldGFpbF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9hY3Rpdml0eS9BY3Rpdml0eURldGFpbC52dWVcIikpO1xudmFyIFNpZGViYXJIZWxwQmxvY2tfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvU2lkZWJhckhlbHBCbG9jay52dWVcIikpO1xudmFyIEFjdGl2aXR5VXBsb2FkX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL2ltcG9ydC9BY3Rpdml0eVVwbG9hZC52dWVcIikpO1xudmFyIEFjdGl2aXR5WGxzVXBsb2FkX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL2ltcG9ydC9BY3Rpdml0eVhsc1VwbG9hZC52dWVcIikpO1xudmFyIERhc2hib2FyZFBhZ2VfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvZGFzaGJvYXJkL0Rhc2hib2FyZFBhZ2UudnVlXCIpKTtcbnZhciBJbXBvcnRMaXN0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL2ltcG9ydC9JbXBvcnRMaXN0LnZ1ZVwiKSk7XG52YXIgWGxzTGlzdF92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9pbXBvcnQvWGxzTGlzdC52dWVcIikpO1xuLyoqXG4gKiBTZXR0aW5nIHBhZ2VcbiAqL1xudmFyIFNldHRpbmdQYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL3NldHRpbmcvU2V0dGluZ1BhZ2UudnVlXCIpKTtcbi8vQWN0aXZpdHkgRGVmYXVsdCBWYWx1ZXNcbnZhciBBY3Rpdml0eURlZmF1bHRWYWx1ZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9hY3Rpdml0eS9BY3Rpdml0eURlZmF1bHRWYWx1ZS52dWVcIikpO1xuLyoqXG4gKiB2dWUgY29tcG9uZW50IGZvciBwYXNzd29yZCByZXNldFxuICovXG52YXIgUmVzZXRQYWdlX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL3Jlc2V0L1Jlc2V0UGFnZS52dWVcIikpO1xudmFyIFBhc3N3b3JkUmVjb3ZlcnlfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvcmVzZXQvUGFzc3dvcmRSZWNvdmVyeS52dWVcIikpO1xudmFyIFJlc2V0UGFzc3dvcmRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvcmVzZXQvUmVzZXRQYXNzd29yZC52dWVcIikpO1xuLyoqXG4gKiBPcmdhbmlzYXRpb24gZGF0YVxuICovXG52YXIgT3JnYW5pc2F0aW9uRGF0YV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9vcmdhbmlzYXRpb24vT3JnYW5pc2F0aW9uRGF0YS52dWVcIikpO1xuLyoqXG4gKiBPcmdhbmlzYXRpb24gTGlzdCAvIFByb3h5XG4gKi9cbnZhciBPcmdhbmlzYXRpb25MaXN0X3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL3N1cGVyYWRtaW4vT3JnYW5pc2F0aW9uTGlzdC52dWVcIikpO1xudmFyIEFkbWluQmFyX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL3N1cGVyYWRtaW4vY29tcG9uZW50cy9BZG1pbkJhci52dWVcIikpO1xuLyoqXG4gKiBVc2VyIE1vZHVsZSBjb21wb25lbnRzXG4gKi9cbnZhciBVc2VyUHJvZmlsZV92dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy91c2VyL1VzZXJQcm9maWxlLnZ1ZVwiKSk7XG52YXIgVXNlckxpc3RpbmdfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdmlld3MvdXNlci9Vc2VyTGlzdGluZy52dWVcIikpO1xuLyoqXG4gKiBBdWRpdCBjb21wb25lbnRcbiAqL1xudmFyIEF1ZGl0TGlzdGluZ192dWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi92aWV3cy9hdWRpdC9BdWRpdExpc3RpbmcudnVlXCIpKTtcbi8qKlxuICogQWRkaXRpb25hbCBDb21wb25lbnRzXG4gKi9cbnZhciBIb3ZlclRleHRfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vY29tcG9uZW50cy9Ib3ZlclRleHQudnVlXCIpKTtcbnZhciBQYWdlVGl0bGVfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vY29tcG9uZW50cy9zZWN0aW9ucy9QYWdlVGl0bGUudnVlXCIpKTtcbnZhciBMb2FkZXJfdnVlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vY29tcG9uZW50cy9Mb2FkZXIudnVlXCIpKTtcbnZhciBTeXN0ZW1WZXJzaW9uX3Z1ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3ZpZXdzL3N1cGVyYWRtaW4vU3lzdGVtVmVyc2lvbi52dWVcIikpO1xudmFyIHZ1ZTNfYXBleGNoYXJ0c18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJ2dWUzLWFwZXhjaGFydHNcIikpO1xudmFyIGFwcCA9ICgwLCB2dWVfMS5jcmVhdGVBcHApKHt9KTtcbmFwcC51c2UodnVlM19hcGV4Y2hhcnRzXzEuZGVmYXVsdCk7XG4vKipcbiAqIEdsb2JhbCBDb21wb25lbnRzXG4gKi9cbmFwcFxuICAgIC5jb21wb25lbnQoJ1dlYkhlYWRlcicsIFdlYkhlYWRlcl92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ1dlYkZvb3RlcicsIFdlYkZvb3Rlcl92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ0FkbWluRm9vdGVyJywgQWRtaW5Gb290ZXJfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdXZWxjb21lU2lnbmluJywgV2VsY29tZVBhZ2VfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdSZWdpc3RlckZvcm0nLCBSZWdpc3RlclBhZ2VfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdJYXRpUmVnaXN0ZXJGb3JtJywgSWF0aVJlZ2lzdGVyUGFnZV92dWVfMS5kZWZhdWx0KTtcbi8qKlxuICogcmVnaXN0ZXJpbmcgd2ViIHBvcnRhbCBwYWdlc1xuICovXG5hcHBcbiAgICAuY29tcG9uZW50KCdBYm91dFBhZ2UnLCBBYm91dFBhZ2VfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdTdXBwb3J0UGFnZScsIFN1cHBvcnRQYWdlX3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnSWF0aVN0YW5kYXJkJywgSWF0aVN0YW5kYXJkX3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnUHVibGlzaGluZ0NoZWNrbGlzdCcsIFB1Ymxpc2hpbmdDaGVja2xpc3RfdnVlXzEuZGVmYXVsdCk7XG4vKipcbiAqIFJlZ2lzdGVyaW5nIHZ1ZSBjb21wb25lbnQgZm9yIGFjdGl2aXR5IGxpc3RpbmdcbiAqL1xuYXBwXG4gICAgLmNvbXBvbmVudCgnQWN0aXZpdHlUZW1wbGF0ZScsIEFjdGl2aXR5SW5kZXhfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdMb2dnZWRpbkhlYWRlcicsIEFkbWluSGVhZGVyX3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnQWN0aXZpdGllc0RldGFpbCcsIEFjdGl2aXR5RGV0YWlsX3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnRGVzY3JpcHRpb25Gb3JtJywgRGVzY3JpcHRpb25Gb3JtX3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnRWxlbWVudHNOb3RlJywgRWxlbWVudHNOb3RlX3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnUmVzdWx0RGV0YWlsJywgUmVzdWx0RGV0YWlsX3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnUmVzdWx0TGlzdCcsIFJlc3VsdExpc3RfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdJbmRpY2F0b3JEZXRhaWwnLCBJbmRpY2F0b3JEZXRhaWxfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdJbmRpY2F0b3JMaXN0JywgSW5kaWNhdG9yTGlzdF92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ1BlcmlvZHNEZXRhaWwnLCBQZXJpb2RzRGV0YWlsX3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnUGVyaW9kc0xpc3QnLCBQZXJpb2RzTGlzdF92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ1RyYW5zYWN0aW9uTGlzdCcsIFRyYW5zYWN0aW9uTGlzdF92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ1RyYW5zYWN0aW9uRGV0YWlsJywgVHJhbnNhY3Rpb25EZXRhaWxfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdTaWRlYmFySGVscEJsb2NrJywgU2lkZWJhckhlbHBCbG9ja192dWVfMS5kZWZhdWx0KTtcbi8qXG4gKiBJbXBvcnQgcGFnZVxuICovXG5hcHBcbiAgICAuY29tcG9uZW50KCdBY3Rpdml0eVVwbG9hZCcsIEFjdGl2aXR5VXBsb2FkX3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnQWN0aXZpdHlYbHNVcGxvYWQnLCBBY3Rpdml0eVhsc1VwbG9hZF92dWVfMS5kZWZhdWx0KVxuICAgIC5jb21wb25lbnQoJ0ltcG9ydExpc3QnLCBJbXBvcnRMaXN0X3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnWGxzTGlzdCcsIFhsc0xpc3RfdnVlXzEuZGVmYXVsdCk7XG4vLyBkYXNoYm9hcmQgcGFnZVxuYXBwLmNvbXBvbmVudCgnRGFzaGJvYXJkUGFnZScsIERhc2hib2FyZFBhZ2VfdnVlXzEuZGVmYXVsdCk7XG4vKlxuICogU2V0dGluZyBwYWdlXG4gKi9cbmFwcC5jb21wb25lbnQoJ1NldHRpbmdQYWdlJywgU2V0dGluZ1BhZ2VfdnVlXzEuZGVmYXVsdCk7XG5hcHAuY29tcG9uZW50KCdTeXN0ZW1WZXJzaW9uJywgU3lzdGVtVmVyc2lvbl92dWVfMS5kZWZhdWx0KTtcbmFwcC5jb21wb25lbnQoJ0FjdGl2aXR5RGVmYXVsdFZhbHVlcycsIEFjdGl2aXR5RGVmYXVsdFZhbHVlX3Z1ZV8xLmRlZmF1bHQpO1xuLypcblJlZ2lzdGVyaW5nIHZ1ZSBjb21wb25lbnQgZm9yIHBhc3N3b3JkIHJlc2V0XG4qL1xuYXBwXG4gICAgLmNvbXBvbmVudCgnUmVzZXRQYWdlJywgUmVzZXRQYWdlX3Z1ZV8xLmRlZmF1bHQpXG4gICAgLmNvbXBvbmVudCgnUGFzc3dvcmRSZWNvdmVyeScsIFBhc3N3b3JkUmVjb3ZlcnlfdnVlXzEuZGVmYXVsdClcbiAgICAuY29tcG9uZW50KCdSZXNldFBhc3N3b3JkJywgUmVzZXRQYXNzd29yZF92dWVfMS5kZWZhdWx0KTtcbi8qKlxuICogUmVnaXN0ZXJpbmcgdXNlciBtb2R1bGUgcmVsYXRlZCB2dWUgY29tcG9uZW50c1xuICovXG5hcHAuY29tcG9uZW50KCdVc2VyUHJvZmlsZScsIFVzZXJQcm9maWxlX3Z1ZV8xLmRlZmF1bHQpLmNvbXBvbmVudCgnVXNlckxpc3RpbmcnLCBVc2VyTGlzdGluZ192dWVfMS5kZWZhdWx0KTtcbi8qKlxuICogUmVnaXN0ZXJpbmcgQWRkaXRpb25hbCBDb21wb25lbnRzXG4gKi9cbmFwcC5jb21wb25lbnQoJ0hvdmVyVGV4dCcsIEhvdmVyVGV4dF92dWVfMS5kZWZhdWx0KTtcbmFwcC5jb21wb25lbnQoJ1BhZ2VUaXRsZScsIFBhZ2VUaXRsZV92dWVfMS5kZWZhdWx0KTtcbmFwcC5jb21wb25lbnQoJ0xvYWRpbmdTdGF0ZScsIExvYWRlcl92dWVfMS5kZWZhdWx0KTtcbi8qKlxuICogT3JnYW5pc2F0aW9uIGRhdGFcbiAqL1xuYXBwLmNvbXBvbmVudCgnT3JnYW5pc2F0aW9uRGF0YScsIE9yZ2FuaXNhdGlvbkRhdGFfdnVlXzEuZGVmYXVsdCk7XG4vKipcbiAqIFByb3h5XG4gKi9cbmFwcC5jb21wb25lbnQoJ09yZ2FuaXNhdGlvbkxpc3QnLCBPcmdhbmlzYXRpb25MaXN0X3Z1ZV8xLmRlZmF1bHQpO1xuYXBwLmNvbXBvbmVudCgnQWRtaW5CYXInLCBBZG1pbkJhcl92dWVfMS5kZWZhdWx0KTtcbi8qKlxuICogQXVkaXRcbiAqL1xuYXBwLmNvbXBvbmVudCgnQXVkaXRMaXN0aW5nJywgQXVkaXRMaXN0aW5nX3Z1ZV8xLmRlZmF1bHQpO1xuLyoqXG4gKiBFeHRlbnNpb24gdG8gaW5saW5lIFNWRyBmaWxlcyB3aXRoIFZ1ZS5qcyBhbmQgb3B0aW1pemUgdGhlbSBhdXRvbWF0aWNhbGx5IHdpdGggU1ZHT1xuICovXG5hcHAudXNlKHN2Z192dWUzXzEuZGVmYXVsdCk7XG5hcHAudXNlKHZ1ZTNfc21vb3RoX3Njcm9sbF8xLmRlZmF1bHQpO1xuLy8gZGV0ZWN0IHNjcm9sbCB1cCBvciBkb3duXG52YXIgbGFzdFNjcm9sbFRvcCA9IDAsIGFmZml4VHlwZSA9ICdzdGlja3ktbm9uZSc7XG52YXIgc3RpY2t5U2lkZWJhciA9IGZ1bmN0aW9uIChlbCwgcGFyZW50V3JhcHBlcikge1xuICAgIC8vc3RpY2t5IGVsZW1lbnQvY2hpbGQgZGF0YVxuICAgIHZhciBzdGlja3lFbGVtZW50ID0gZWwuZmlyc3RDaGlsZCwgZWxIZWlnaHQgPSBzdGlja3lFbGVtZW50Lm9mZnNldEhlaWdodCwgc3RpY2t5Q3VycmVudFRvcCA9IHN0aWNreUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wLCBzdGlja3lDdXJyZW50Qm90dG9tID0gc3RpY2t5RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b207XG4gICAgLy9zdGlja3kgZWxlbWVudCdzIHBhcmVudC93cmFwcGVyIGRhdGFcbiAgICB2YXIgZWxXaWR0aCA9IGVsLm9mZnNldFdpZHRoLCBlbFNjcm9sbExlZnQgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0LCBlbFNjcm9sbFRvcCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCwgZWxTY3JvbGxCb3R0b20gPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b20sIHZpZXdwb3J0SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xuICAgIC8vIHdpbmRvdy9kb2N1bWVudCBkYXRhXG4gICAgdmFyIGN1cnJlbnRXaW5kb3dzU2Nyb2xsUG9zaXRpb24gPSB3aW5kb3cucGFnZVlPZmZzZXQsIHRhcmdldFNjcm9sbFBvc2l0aW9uID0gZWxTY3JvbGxCb3R0b20gKyBjdXJyZW50V2luZG93c1Njcm9sbFBvc2l0aW9uIC0gdmlld3BvcnRIZWlnaHQ7XG4gICAgLy8gcGFyZW50IHdyYXBwZXIgLyBzdGlja3kgYm91bmRhcnlcbiAgICB2YXIgZWxQYXJlbnQgPSBzdGlja3lFbGVtZW50LmNsb3Nlc3QocGFyZW50V3JhcHBlciksIGVsUGFyZW50Qm90dG9tID0gZWxQYXJlbnQgPT09IG51bGwgfHwgZWxQYXJlbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGVsUGFyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbTtcbiAgICAvLyBzY3JvbGwgYmVoYXZpb3VyXG4gICAgdmFyIGlzU2Nyb2xsRG93biA9IGN1cnJlbnRXaW5kb3dzU2Nyb2xsUG9zaXRpb24gPiBsYXN0U2Nyb2xsVG9wID8gdHJ1ZSA6IGZhbHNlO1xuICAgIHZhciBpc1Njcm9sbFVwID0gIWlzU2Nyb2xsRG93bjtcbiAgICBsYXN0U2Nyb2xsVG9wID1cbiAgICAgICAgY3VycmVudFdpbmRvd3NTY3JvbGxQb3NpdGlvbiA8PSAwID8gMCA6IGN1cnJlbnRXaW5kb3dzU2Nyb2xsUG9zaXRpb247XG4gICAgZnVuY3Rpb24gc2Nyb2xsRG93blN0aWNreUJvdHRvbSgpIHtcbiAgICAgICAgc3RpY2t5RWxlbWVudC5zdHlsZS5jc3NUZXh0ID0gXCJwb3NpdGlvbiA6IGFic29sdXRlOyAgd2lkdGg6MjgwcHg7IGJvdHRvbTogMTZweFwiO1xuICAgICAgICBhZmZpeFR5cGUgPSAnc3RpY2t5LWJvdW5kJztcbiAgICB9XG4gICAgZnVuY3Rpb24gc2Nyb2xsRG93blN0aWNreVRvcCgpIHtcbiAgICAgICAgc3RpY2t5RWxlbWVudC5zdHlsZS5jc3NUZXh0ID0gXCJwb3NpdGlvbjogcmVsYXRpdmU7IHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgXCIuY29uY2F0KHN0aWNreUN1cnJlbnRUb3AgLSBlbFNjcm9sbFRvcCwgXCJweCwgMCk7XCIpO1xuICAgICAgICBhZmZpeFR5cGUgPSAnc3RpY2t5LXRyYW5zbGF0ZSc7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNjcm9sbERvd25TdGlja3lUcmFuc2xhdGUoKSB7XG4gICAgICAgIHtcbiAgICAgICAgICAgICh3aW5kb3cuc2Nyb2xsWSxcbiAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsWSArXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgK1xuICAgICAgICAgICAgICAgICAgICA0NzYgLVxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsSGVpZ2h0ID5cbiAgICAgICAgICAgICAgICAgICAgMClcbiAgICAgICAgICAgICAgICA/IHdpbmRvdy5zY3JvbGxZICtcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCArXG4gICAgICAgICAgICAgICAgICAgIDQ3NiAtXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHRcbiAgICAgICAgICAgICAgICA6IDE2O1xuICAgICAgICB9XG4gICAgICAgIHN0aWNreUVsZW1lbnQuc3R5bGUuY3NzVGV4dCA9IFwicG9zaXRpb246IGZpeGVkOyB0b3A6IGF1dG87IGxlZnQ6IFwiLmNvbmNhdChlbFNjcm9sbExlZnQsIFwiOyBib3R0b206XCIpLmNvbmNhdCgod2luZG93LnNjcm9sbFksXG4gICAgICAgICAgICB3aW5kb3cuc2Nyb2xsWSArXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCArXG4gICAgICAgICAgICAgICAgNDc2IC1cbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsSGVpZ2h0ID5cbiAgICAgICAgICAgICAgICAxNilcbiAgICAgICAgICAgID8gd2luZG93LnNjcm9sbFkgK1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgK1xuICAgICAgICAgICAgICAgIDQ3NiAtXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbEhlaWdodFxuICAgICAgICAgICAgOiAxNiwgXCJweDsgd2lkdGg6IFwiKS5jb25jYXQoZWxXaWR0aCwgXCJweFwiKTtcbiAgICAgICAgYWZmaXhUeXBlID0gJ3N0aWNreS1ib3R0b20nO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzY3JvbGxEb3duRml4ZWRUb3AoKSB7XG4gICAgICAgIGVsLnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOiBmaXhlZDsgdG9wOjBweFwiO1xuICAgICAgICBhZmZpeFR5cGUgPSAnc3RpY2t5LXRyYW5zbGF0ZSc7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNjcm9sbERvd25TdGlja3lOb25lKCkge1xuICAgICAgICBpZiAodGFyZ2V0U2Nyb2xsUG9zaXRpb24gPD0gY3VycmVudFdpbmRvd3NTY3JvbGxQb3NpdGlvbikge1xuICAgICAgICAgICAgaWYgKHZpZXdwb3J0SGVpZ2h0ICsgd2luZG93LnNjcm9sbFkgKyA0NTAgPj0gZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICBlbC5zdHlsZS5jc3NUZXh0ID0gXCJwb3NpdGlvbjogc3RpY2t5OyB0b3A6MHB4XCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzdGlja3lFbGVtZW50LnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOiBmaXhlZDsgdG9wOiBhdXRvOyBsZWZ0OiBcIi5jb25jYXQoZWxTY3JvbGxMZWZ0LCBcIjsgYm90dG9tOiAwOyB3aWR0aDogXCIpLmNvbmNhdChlbFdpZHRoLCBcInB4XCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWZmaXhUeXBlID0gJ3N0aWNreS1ib3R0b20nO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNjcm9sbERvd25TdGlja3lCb3VuZCgpIHtcbiAgICAgICAgaWYgKGVsUGFyZW50Qm90dG9tICYmIGVsUGFyZW50Qm90dG9tIDwgc3RpY2t5Q3VycmVudEJvdHRvbSkge1xuICAgICAgICAgICAgc3RpY2t5RWxlbWVudC5zdHlsZS5jc3NUZXh0ID0gXCJwb3NpdGlvbiA6IGFic29sdXRlOyAgd2lkdGg6MjgwcHg7IGJvdHRvbTogMTZweFwiO1xuICAgICAgICAgICAgYWZmaXhUeXBlID0gJ3N0aWNreS1ib3VuZCc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlU2Nyb2xsRG93bigpIHtcbiAgICAgICAgc3dpdGNoIChhZmZpeFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3N0aWNreS10b3AnOlxuICAgICAgICAgICAgICAgIHNjcm9sbERvd25TdGlja3lUb3AoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3N0aWNreS1ib3R0b20nOlxuICAgICAgICAgICAgICAgIGlmIChlbFBhcmVudEJvdHRvbSAmJiBlbFBhcmVudEJvdHRvbSA8IHN0aWNreUN1cnJlbnRCb3R0b20pIHtcbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsRG93blN0aWNreUJvdHRvbSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3N0aWNreS10cmFuc2xhdGUnOlxuICAgICAgICAgICAgICAgIGlmIChzdGlja3lDdXJyZW50Qm90dG9tIDw9IHZpZXdwb3J0SGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbERvd25TdGlja3lUcmFuc2xhdGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdmaXhlZC10b3AnOlxuICAgICAgICAgICAgICAgIHNjcm9sbERvd25GaXhlZFRvcCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc3RpY2t5LW5vbmUnOlxuICAgICAgICAgICAgICAgIHNjcm9sbERvd25TdGlja3lOb25lKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzdGlja3ktYm91bmQnOlxuICAgICAgICAgICAgICAgIHNjcm9sbERvd25TdGlja3lCb3VuZCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNjcm9sbFVwU3RpY2t5VG9wKCkge1xuICAgICAgICBpZiAoZWxTY3JvbGxUb3AgPj0gMCkge1xuICAgICAgICAgICAgc3RpY2t5RWxlbWVudC5zdHlsZS5jc3NUZXh0ID0gXCJwb3NpdGlvbjogcmVsYXRpdmU7ICBcIjtcbiAgICAgICAgICAgIGFmZml4VHlwZSA9ICdzdGlja3ktbm9uZSc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzdGlja3lFbGVtZW50LnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOiBmaXhlZDsgdG9wOiBhdXRvOyBib3R0b206XCIuY29uY2F0KCh3aW5kb3cuc2Nyb2xsWSxcbiAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsWSArXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgK1xuICAgICAgICAgICAgICAgICAgICA0NzYgLVxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsSGVpZ2h0ID5cbiAgICAgICAgICAgICAgICAgICAgMTYpXG4gICAgICAgICAgICAgICAgPyB3aW5kb3cuc2Nyb2xsWSArXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgK1xuICAgICAgICAgICAgICAgICAgICA0NzYgLVxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsSGVpZ2h0XG4gICAgICAgICAgICAgICAgOiAxNiwgXCJweDsgbGVmdDogXCIpLmNvbmNhdChlbFNjcm9sbExlZnQsIFwiOyB3aWR0aDogXCIpLmNvbmNhdChlbFdpZHRoLCBcInB4IFwiKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBzY3JvbGxVcFN0aWNreUJvdHRvbSgpIHtcbiAgICAgICAgc3RpY2t5RWxlbWVudC5zdHlsZS5jc3NUZXh0ID0gXCJwb3NpdGlvbjogZml4ZWQ7IHRvcDogMHB4OyBsZWZ0OiBcIi5jb25jYXQoZWxTY3JvbGxMZWZ0LCBcIjsgd2lkdGg6IFwiKS5jb25jYXQoZWxXaWR0aCwgXCJweCBcIik7XG4gICAgICAgIGFmZml4VHlwZSA9ICdzdGlja3ktYm91bmQnO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzY3JvbGxVcEZpeGVkVG9wKCkge1xuICAgICAgICBlbC5zdHlsZS5jc3NUZXh0ID0gXCJwb3NpdGlvbjogZml4ZWQ7IHRvcDowcHhcIjtcbiAgICAgICAgYWZmaXhUeXBlID0gJ3N0aWNreS10cmFuc2xhdGUnO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzY3JvbGxVcFN0aWNreVRyYW5zbGF0ZSgpIHtcbiAgICAgICAgaWYgKHN0aWNreUN1cnJlbnRUb3AgPj0gMCkge1xuICAgICAgICAgICAgc3RpY2t5RWxlbWVudC5zdHlsZS5jc3NUZXh0ID0gXCJwb3NpdGlvbjogZml4ZWQ7IHRvcDogMHB4OyBsZWZ0OiBcIi5jb25jYXQoZWxTY3JvbGxMZWZ0LCBcIjsgd2lkdGg6IFwiKS5jb25jYXQoZWxXaWR0aCwgXCJweFwiKTtcbiAgICAgICAgICAgIGFmZml4VHlwZSA9ICdzdGlja3ktdG9wJztcbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBzY3JvbGxVcFN0aWNreUJvdW5kKCkge1xuICAgICAgICBpZiAoc3RpY2t5Q3VycmVudFRvcCA+PSAwICYmIGN1cnJlbnRXaW5kb3dzU2Nyb2xsUG9zaXRpb24gIT0gMCkge1xuICAgICAgICAgICAgc3RpY2t5RWxlbWVudC5zdHlsZS5jc3NUZXh0ID0gXCJwb3NpdGlvbjpmaXhlZDsgdG9wOiAwOyBsZWZ0OiBcIi5jb25jYXQoZWxTY3JvbGxMZWZ0LCBcIjsgd2lkdGg6IFwiKS5jb25jYXQoZWxXaWR0aCwgXCJweFwiKTtcbiAgICAgICAgICAgIGFmZml4VHlwZSA9ICdzdGlja3ktdG9wJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RpY2t5Q3VycmVudFRvcCA+PSAwICYmIGN1cnJlbnRXaW5kb3dzU2Nyb2xsUG9zaXRpb24gPT0gMCkge1xuICAgICAgICAgICAgc3RpY2t5RWxlbWVudC5zdHlsZS5jc3NUZXh0ID0gXCIgdG9wOiAwOyBsZWZ0OiBcIi5jb25jYXQoZWxTY3JvbGxMZWZ0LCBcIjsgd2lkdGg6IFwiKS5jb25jYXQoZWxXaWR0aCwgXCJweFwiKTtcbiAgICAgICAgICAgIGFmZml4VHlwZSA9ICdzdGlja3ktdG9wJztcbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVTY3JvbGxVcCgpIHtcbiAgICAgICAgc3dpdGNoIChhZmZpeFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3N0aWNreS10b3AnOlxuICAgICAgICAgICAgICAgIHNjcm9sbFVwU3RpY2t5VG9wKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzdGlja3ktYm90dG9tJzpcbiAgICAgICAgICAgICAgICBzY3JvbGxVcFN0aWNreUJvdHRvbSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZml4ZWQtdG9wJzpcbiAgICAgICAgICAgICAgICBzY3JvbGxVcEZpeGVkVG9wKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzdGlja3ktdHJhbnNsYXRlJzpcbiAgICAgICAgICAgICAgICBzY3JvbGxVcFN0aWNreVRyYW5zbGF0ZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc3RpY2t5LW5vbmUnOlxuICAgICAgICAgICAgICAgIC8vbm90aGluZyB0byBkbyBoZXJlXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzdGlja3ktYm91bmQnOlxuICAgICAgICAgICAgICAgIHNjcm9sbFVwU3RpY2t5Qm91bmQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoZWxIZWlnaHQgPCB2aWV3cG9ydEhlaWdodCkge1xuICAgICAgICBlbC5zdHlsZS5jc3NUZXh0ID0gXCJwb3NpdGlvbjogc3RpY2t5OyB0b3A6MHB4XCI7XG4gICAgICAgIHN0aWNreUVsZW1lbnQuc3R5bGUuY3NzVGV4dCA9IFwiXCI7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBlbC5zdHlsZS5jc3NUZXh0ID0gXCJoZWlnaHQ6IFwiLmNvbmNhdChlbEhlaWdodCwgXCJweDtcIik7XG4gICAgICAgIGlmIChpc1Njcm9sbERvd24gJiYgY3VycmVudFdpbmRvd3NTY3JvbGxQb3NpdGlvbiAhPSAwKSB7XG4gICAgICAgICAgICBoYW5kbGVTY3JvbGxEb3duKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNTY3JvbGxVcCAmJiBjdXJyZW50V2luZG93c1Njcm9sbFBvc2l0aW9uICE9IDApIHtcbiAgICAgICAgICAgIGhhbmRsZVNjcm9sbFVwKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBlbC5zdHlsZS5jc3NUZXh0ID0gXCJwb3NpdGlvbjogc3RpY2t5OyB0b3A6MHB4XCI7XG4gICAgICAgICAgICBzdGlja3lFbGVtZW50LnN0eWxlLmNzc1RleHQgPSBcIlwiO1xuICAgICAgICB9XG4gICAgfVxufTtcbndpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgLy9jaGVjayBjb25zdGFudGx5IGluIGEgaW50ZXIgZm9yIHdoZW4gc3VwcG9ydCBidXR0b24gZW50ZXJzIHRoZSBkb21cbiAgICB2YXIgY2hlY2tTdXBwb3J0QnV0dG9uID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgc3VwcG9ydEJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNsYXVuY2hlcicpO1xuICAgICAgICBpZiAoc3VwcG9ydEJ1dHRvbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgc3VwcG9ydEJ1dHRvbi5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcbiAgICAgICAgICAgIHN1cHBvcnRCdXR0b24uc3R5bGUuYm9yZGVyID0gJzJweCBzb2xpZCByZ2IoMjEsIDgzLCAxMDIpJztcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tTdXBwb3J0QnV0dG9uKTtcbiAgICAgICAgfVxuICAgIH0sIDEwKTtcbn07XG4vLyBjdXN0b20gZGlyZWN0aXZlXG5hcHAuZGlyZWN0aXZlKCdzdGlja3ktY29tcG9uZW50Jywge1xuICAgIG1vdW50ZWQ6IGZ1bmN0aW9uIChlbCwgYmluZGluZykge1xuICAgICAgICB2YXIgYm91bmRhcnkgPSAoYmluZGluZy52YWx1ZSB8fCB7fSkuYm91bmRhcnk7XG4gICAgICAgIGJvdW5kYXJ5ID0gYm91bmRhcnkgfHwgJ2JvZHknO1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RpY2t5U2lkZWJhcihlbCwgYm91bmRhcnkpOyB9KTtcbiAgICB9LFxuICAgIHVubW91bnRlZDogZnVuY3Rpb24gKGVsLCBiaW5kaW5nKSB7XG4gICAgICAgIHZhciBwYXJlbnQgPSBiaW5kaW5nLnZhbHVlLmJvdW5kYXJ5O1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RpY2t5U2lkZWJhcihlbCwgcGFyZW50KTsgfSk7XG4gICAgfSxcbn0pO1xuLyoqXG4gKiBOZXh0LCB3ZSB3aWxsIGNyZWF0ZSBhIGZyZXNoIFZ1ZSBhcHBsaWNhdGlvbiBpbnN0YW5jZSBhbmQgYXR0YWNoIGl0IHRvXG4gKiB0aGUgcGFnZS4gVGhlbiwgeW91IG1heSBiZWdpbiBhZGRpbmcgY29tcG9uZW50cyB0byB0aGlzIGFwcGxpY2F0aW9uXG4gKiBvciBjdXN0b21pemUgdGhlIEphdmFTY3JpcHQgc2NhZmZvbGRpbmcgdG8gZml0IHlvdXIgdW5pcXVlIG5lZWRzLlxuICovXG5hcHAubW91bnQoJyNhcHAnKTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5vcmdNYW5kYXRvcnlFbGVtZW50cyA9IGV4cG9ydHMuYWN0aXZpdHlDb3JlRWxlbWVudHMgPSB2b2lkIDA7XG5mdW5jdGlvbiBhY3Rpdml0eUNvcmVFbGVtZW50cygpIHtcbiAgICB2YXIgZWxlbWVudHMgPSBbXG4gICAgICAgICdyZXBvcnRpbmdfb3JnJyxcbiAgICAgICAgJ2lhdGlfaWRlbnRpZmllcicsXG4gICAgICAgICd0aXRsZScsXG4gICAgICAgICdkZXNjcmlwdGlvbicsXG4gICAgICAgICdwYXJ0aWNpcGF0aW5nX29yZycsXG4gICAgICAgICdhY3Rpdml0eV9zdGF0dXMnLFxuICAgICAgICAnYWN0aXZpdHlfZGF0ZScsXG4gICAgICAgICdyZWNpcGllbnRfY291bnRyeScsXG4gICAgICAgICdyZWNpcGllbnRfcmVnaW9uJyxcbiAgICAgICAgJ3NlY3RvcicsXG4gICAgICAgICdjb2xsYWJvcmF0aW9uX3R5cGUnLFxuICAgICAgICAnZGVmYXVsdF9mbG93X3R5cGUnLFxuICAgICAgICAnZGVmYXVsdF9maW5hbmNlX3R5cGUnLFxuICAgICAgICAnZGVmYXVsdF9haWRfdHlwZScsXG4gICAgICAgICdidWRnZXQnLFxuICAgICAgICAndHJhbnNhY3Rpb25zJyxcbiAgICBdO1xuICAgIHJldHVybiBlbGVtZW50cztcbn1cbmV4cG9ydHMuYWN0aXZpdHlDb3JlRWxlbWVudHMgPSBhY3Rpdml0eUNvcmVFbGVtZW50cztcbmZ1bmN0aW9uIG9yZ01hbmRhdG9yeUVsZW1lbnRzKCkge1xuICAgIHZhciBlbGVtZW50cyA9IFsncmVwb3J0aW5nX29yZycsICduYW1lJ107XG4gICAgcmV0dXJuIGVsZW1lbnRzO1xufVxuZXhwb3J0cy5vcmdNYW5kYXRvcnlFbGVtZW50cyA9IG9yZ01hbmRhdG9yeUVsZW1lbnRzO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgbW9tZW50XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1vbWVudFwiKSk7XG5mdW5jdGlvbiBkYXRlRm9ybWF0KGRhdGUsIGZvcm1hdCkge1xuICAgIGlmIChmb3JtYXQgPT09IHZvaWQgMCkgeyBmb3JtYXQgPSAnTU1NTSBERCwgWVlZWSc7IH1cbiAgICB2YXIgZm9ybWF0X2RhdGU7XG4gICAgc3dpdGNoIChmb3JtYXQpIHtcbiAgICAgICAgY2FzZSAnZnJvbU5vdyc6XG4gICAgICAgICAgICBmb3JtYXRfZGF0ZSA9IGRhdGUgPyAoMCwgbW9tZW50XzEuZGVmYXVsdCkoZGF0ZSkuZnJvbU5vdygpIDogJyc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGZvcm1hdF9kYXRlID0gZGF0ZSA/ICgwLCBtb21lbnRfMS5kZWZhdWx0KShkYXRlKS5mb3JtYXQoZm9ybWF0KSA6ICcnO1xuICAgIH1cbiAgICByZXR1cm4gZm9ybWF0X2RhdGU7XG59XG5leHBvcnRzLmRlZmF1bHQgPSBkYXRlRm9ybWF0O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgY3J5cHRvX2pzXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImNyeXB0by1qc1wiKSk7XG5mdW5jdGlvbiBlbmNyeXB0KHN0cmluZywga2V5KSB7XG4gICAgdmFyIGl2ID0gY3J5cHRvX2pzXzEuZGVmYXVsdC5saWIuV29yZEFycmF5LnJhbmRvbSgxNik7XG4gICAgdmFyIHNhbHQgPSBjcnlwdG9fanNfMS5kZWZhdWx0LmxpYi5Xb3JkQXJyYXkucmFuZG9tKDI1Nik7XG4gICAgdmFyIGl0ZXJhdGlvbnMgPSA5OTk7XG4gICAgdmFyIGVuY3J5cHRNZXRob2RMZW5ndGggPSAyNTYgLyA0O1xuICAgIHZhciBoYXNoS2V5ID0gY3J5cHRvX2pzXzEuZGVmYXVsdC5QQktERjIoa2V5LCBzYWx0LCB7XG4gICAgICAgIGhhc2hlcjogY3J5cHRvX2pzXzEuZGVmYXVsdC5hbGdvLlNIQTUxMixcbiAgICAgICAga2V5U2l6ZTogZW5jcnlwdE1ldGhvZExlbmd0aCAvIDgsXG4gICAgICAgIGl0ZXJhdGlvbnM6IGl0ZXJhdGlvbnMsXG4gICAgfSk7XG4gICAgdmFyIGVuY3J5cHRlZCA9IGNyeXB0b19qc18xLmRlZmF1bHQuQUVTLmVuY3J5cHQoc3RyaW5nLCBoYXNoS2V5LCB7XG4gICAgICAgIG1vZGU6IGNyeXB0b19qc18xLmRlZmF1bHQubW9kZS5DQkMsXG4gICAgICAgIGl2OiBpdixcbiAgICB9KTtcbiAgICB2YXIgZW5jcnlwdGVkU3RyaW5nID0gY3J5cHRvX2pzXzEuZGVmYXVsdC5lbmMuQmFzZTY0LnN0cmluZ2lmeShlbmNyeXB0ZWQuY2lwaGVydGV4dCk7XG4gICAgdmFyIG91dHB1dCA9IHtcbiAgICAgICAgY2lwaGVydGV4dDogZW5jcnlwdGVkU3RyaW5nLFxuICAgICAgICBpdjogY3J5cHRvX2pzXzEuZGVmYXVsdC5lbmMuSGV4LnN0cmluZ2lmeShpdiksXG4gICAgICAgIHNhbHQ6IGNyeXB0b19qc18xLmRlZmF1bHQuZW5jLkhleC5zdHJpbmdpZnkoc2FsdCksXG4gICAgICAgIGl0ZXJhdGlvbnM6IGl0ZXJhdGlvbnMsXG4gICAgfTtcbiAgICByZXR1cm4gY3J5cHRvX2pzXzEuZGVmYXVsdC5lbmMuQmFzZTY0LnN0cmluZ2lmeShjcnlwdG9fanNfMS5kZWZhdWx0LmVuYy5VdGY4LnBhcnNlKEpTT04uc3RyaW5naWZ5KG91dHB1dCkpKTtcbn1cbmV4cG9ydHMuZGVmYXVsdCA9IGVuY3J5cHQ7XG4iLCJcInVzZSBzdHJpY3RcIjtcbi8qKlxuICogR2V0IGN1cnJlbnQgYWN0aXZpdHkgdGl0bGVcbiAqXG4gKiBAcmV0dXJuIHRpdGxlIHRleHRcbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZnVuY3Rpb24gZ2V0QWN0aXZpdHlUaXRsZShkYXRhLCBsYW5ndWFnZSkge1xuICAgIHZhciB0aXRsZSA9ICdVbnRpdGxlZCc7XG4gICAgLy8gdGl0bGUgcmV0dXJuIGlmIGxhbmd1YWdlIGV4aXN0IGluIGRhdGFcbiAgICBpZiAoZGF0YSkge1xuICAgICAgICBmb3IgKHZhciBfaSA9IDAsIGRhdGFfMSA9IGRhdGE7IF9pIDwgZGF0YV8xLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgdmFyIHQgPSBkYXRhXzFbX2ldO1xuICAgICAgICAgICAgaWYgKHQubGFuZ3VhZ2UgJiYgdC5sYW5ndWFnZSA9PT0gbGFuZ3VhZ2UpIHtcbiAgICAgICAgICAgICAgICB0aXRsZSA9IHQubmFycmF0aXZlICYmIHQubmFycmF0aXZlICE9PSAnJyA/IHQubmFycmF0aXZlIDogJ1VudGl0bGVkJztcbiAgICAgICAgICAgICAgICByZXR1cm4gdGl0bGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gZGVmYXVsdCB0aXRsZSByZXR1cm4gaWYgbGFuZ3VhZ2UgZG9lcyBub3QgZXhpc3RzIGluIGRhdGFcbiAgICAgICAgdGl0bGUgPVxuICAgICAgICAgICAgZGF0YVsnMCddLm5hcnJhdGl2ZSAmJiBkYXRhWycwJ10ubmFycmF0aXZlICE9PSAnJ1xuICAgICAgICAgICAgICAgID8gZGF0YVsnMCddLm5hcnJhdGl2ZVxuICAgICAgICAgICAgICAgIDogJ1VudGl0bGVkJztcbiAgICB9XG4gICAgcmV0dXJuIHRpdGxlO1xufVxuZXhwb3J0cy5kZWZhdWx0ID0gZ2V0QWN0aXZpdHlUaXRsZTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5jcmVhdGVDYXBpdGFsaXplZFNlbnRlbmNlID0gZXhwb3J0cy50cnVuY2F0ZVRleHQgPSBleHBvcnRzLmtlYmFiQ2FzZVRvU25ha2VjYXNlID0gZXhwb3J0cy5zbmFrZUNhc2VUb1NlbnRlbmNlQ2FzZSA9IGV4cG9ydHMuc2VudGVuY2VDYXNlVG9LZWJhYkNhc2UgPSBleHBvcnRzLmlzSnNvbiA9IGV4cG9ydHMucmVkdWNlRG9jdW1lbnRMaW5rID0gZXhwb3J0cy5jb3VudERvY3VtZW50TGluayA9IGV4cG9ydHMuZ2V0TG9jYXRpb24gPSB2b2lkIDA7XG5mdW5jdGlvbiBnZXRMb2NhdGlvbihkYXRhKSB7XG4gICAgdmFyIGxvY2F0aW9ucyA9IFtdO1xuICAgIGxvY2F0aW9ucyA9IGRhdGEubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIHJldHVybiBpdGVtLnJlZmVyZW5jZTtcbiAgICB9KTtcbiAgICB2YXIgbGFzdExvY2F0aW9uID0gbG9jYXRpb25zLnNsaWNlKC0xKVswXTtcbiAgICBsb2NhdGlvbnMgPSBsb2NhdGlvbnMuc2xpY2UoMCwgLTEpO1xuICAgIGlmIChsb2NhdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gbG9jYXRpb25zLmpvaW4oJywgJykgKyAnICcgKyAnYW5kJyArICcgJyArIGxhc3RMb2NhdGlvbjtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiBsYXN0TG9jYXRpb247XG4gICAgfVxufVxuZXhwb3J0cy5nZXRMb2NhdGlvbiA9IGdldExvY2F0aW9uO1xuZnVuY3Rpb24gY291bnREb2N1bWVudExpbmsoZG9jdW1lbnRfbGluaykge1xuICAgIHZhciBkb2N1bWVudENvdW50ID0gMDtcbiAgICBmb3IgKHZhciBkb2N1bWVudF8xIGluIGRvY3VtZW50X2xpbmspIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHJlZHVjZURvY3VtZW50TGluayhkb2N1bWVudF9saW5rW2RvY3VtZW50XzFdLCBbXSk7XG4gICAgICAgIGlmICghcmVzdWx0LmV2ZXJ5KGZ1bmN0aW9uIChpdGVtKSB7IHJldHVybiBpdGVtID09PSBudWxsOyB9KSkge1xuICAgICAgICAgICAgZG9jdW1lbnRDb3VudCsrO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkb2N1bWVudENvdW50O1xufVxuZXhwb3J0cy5jb3VudERvY3VtZW50TGluayA9IGNvdW50RG9jdW1lbnRMaW5rO1xuZnVuY3Rpb24gcmVkdWNlRG9jdW1lbnRMaW5rKGRvY3VtZW50X2xpbmssIHZhbHVlcykge1xuICAgIGlmICh0eXBlb2YgZG9jdW1lbnRfbGluayA9PT0gJ29iamVjdCcgJiYgZG9jdW1lbnRfbGluaykge1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gZG9jdW1lbnRfbGluaykge1xuICAgICAgICAgICAgdmFsdWVzLmNvbmNhdChyZWR1Y2VEb2N1bWVudExpbmsoZG9jdW1lbnRfbGlua1trZXldLCB2YWx1ZXMpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdmFsdWVzLnB1c2goZG9jdW1lbnRfbGluayk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZXM7XG59XG5leHBvcnRzLnJlZHVjZURvY3VtZW50TGluayA9IHJlZHVjZURvY3VtZW50TGluaztcbmZ1bmN0aW9uIGlzSnNvbihzdHIpIHtcbiAgICB0cnkge1xuICAgICAgICBKU09OLnBhcnNlKHN0cik7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5leHBvcnRzLmlzSnNvbiA9IGlzSnNvbjtcbmZ1bmN0aW9uIHNlbnRlbmNlQ2FzZVRvS2ViYWJDYXNlKHN0cikge1xuICAgIHJldHVybiBzdHIuc3BsaXQoJyAnKS5qb2luKCctJyk7XG59XG5leHBvcnRzLnNlbnRlbmNlQ2FzZVRvS2ViYWJDYXNlID0gc2VudGVuY2VDYXNlVG9LZWJhYkNhc2U7XG5mdW5jdGlvbiBzbmFrZUNhc2VUb1NlbnRlbmNlQ2FzZShzdHIpIHtcbiAgICB2YXIgd29yZHMgPSBzdHIuc3BsaXQoJ18nKTtcbiAgICB2YXIgc2VudGVuY2UgPSB3b3Jkc1swXS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHdvcmRzWzBdLnNsaWNlKDEpLnRvTG93ZXJDYXNlKCk7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCB3b3Jkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBzZW50ZW5jZSArPSAnICcgKyB3b3Jkc1tpXS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbiAgICByZXR1cm4gc2VudGVuY2U7XG59XG5leHBvcnRzLnNuYWtlQ2FzZVRvU2VudGVuY2VDYXNlID0gc25ha2VDYXNlVG9TZW50ZW5jZUNhc2U7XG5mdW5jdGlvbiBrZWJhYkNhc2VUb1NuYWtlY2FzZShzdHIpIHtcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoLy0vZywgJ18nKTtcbn1cbmV4cG9ydHMua2ViYWJDYXNlVG9TbmFrZWNhc2UgPSBrZWJhYkNhc2VUb1NuYWtlY2FzZTtcbmZ1bmN0aW9uIHRydW5jYXRlVGV4dCh0ZXh0LCBtYXhMZW5ndGgpIHtcbiAgICBpZiAodGV4dC5sZW5ndGggPiBtYXhMZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHRleHQuc3Vic3RyaW5nKDAsIG1heExlbmd0aCkgKyAnLi4uJztcbiAgICB9XG4gICAgcmV0dXJuIHRleHQ7XG59XG5leHBvcnRzLnRydW5jYXRlVGV4dCA9IHRydW5jYXRlVGV4dDtcbmZ1bmN0aW9uIGNyZWF0ZUNhcGl0YWxpemVkU2VudGVuY2UoKSB7XG4gICAgdmFyIHdvcmRzID0gW107XG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgd29yZHNbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICB9XG4gICAgdmFyIGNhcGl0YWxpemVkRmlyc3RXb3JkID0gd29yZHNbMF0uY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB3b3Jkc1swXS5zbGljZSgxKTtcbiAgICB2YXIgY29uY2F0ZW5hdGVkV29yZHMgPSB3b3Jkcy5zbGljZSgxKS5qb2luKCcgJyk7XG4gICAgcmV0dXJuIFwiXCIuY29uY2F0KGNhcGl0YWxpemVkRmlyc3RXb3JkLCBcIiBcIikuY29uY2F0KGNvbmNhdGVuYXRlZFdvcmRzKTtcbn1cbmV4cG9ydHMuY3JlYXRlQ2FwaXRhbGl6ZWRTZW50ZW5jZSA9IGNyZWF0ZUNhcGl0YWxpemVkU2VudGVuY2U7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMudXNlU3RvcmUgPSB2b2lkIDA7XG52YXIgdnVleF8xID0gcmVxdWlyZShcInZ1ZXhcIik7XG52YXIgc3RhdGUgPSB7XG4gICAgc2VsZWN0ZWRBY3Rpdml0aWVzOiBbXSxcbiAgICBidWxrUHVibGlzaExlbmd0aDogMCxcbiAgICBjYW5jZWxVcGxvYWQ6IGZhbHNlLFxuICAgIHN0YXJ0QnVsa1B1Ymxpc2g6IGZhbHNlLFxuICAgIG1heGltaXplWGxzOiB0cnVlLFxuICAgIHN0YXJ0WGxzRG93bmxvYWQ6IGZhbHNlLFxuICAgIGNvbXBsZXRlWGxzRG93bmxvYWQ6IGZhbHNlLFxuICAgIGNhbmNlbERvd25sb2FkOiBmYWxzZSxcbiAgICBjbG9zZVhsc01vZGVsOiBmYWxzZSxcbiAgICBidWxrcHVibGlzaEFjdGl2aXRpZXM6IHtcbiAgICAgICAgcHVibGlzaGluZ0FjdGl2aXRpZXM6IHtcbiAgICAgICAgICAgIGFjdGl2aXRpZXM6IHsgYWN0aXZpdHlfaWQ6IDAsIGFjdGl2aXR5X3RpdGxlOiAnJywgc3RhdHVzOiAnJyB9LFxuICAgICAgICAgICAgb3JnYW5pemF0aW9uX2lkOiAwLFxuICAgICAgICAgICAgam9iX2JhdGNoX3V1aWQ6ICcnLFxuICAgICAgICAgICAgc3RhdHVzOiAnJyxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICB9LFxuICAgIH0sXG59O1xudmFyIG11dGF0aW9ucyA9IHtcbiAgICBtdXRhdGVTZWxlY3RlZEFjdGl2aXRpZXM6IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5zZWxlY3RlZEFjdGl2aXRpZXMgPSBwYXlsb2FkO1xuICAgIH0sXG4gICAgbXV0YXRlQ2xvc2VYbHNNb2RlbDogZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLmNsb3NlWGxzTW9kZWwgPSBwYXlsb2FkO1xuICAgIH0sXG4gICAgbXV0YXRlQnVsa1B1Ymxpc2hMZW5ndGg6IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5idWxrUHVibGlzaExlbmd0aCA9IHBheWxvYWQ7XG4gICAgfSxcbiAgICBtdXRhdGVDYW5jZWxVcGxvYWQ6IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5jYW5jZWxVcGxvYWQgPSBwYXlsb2FkO1xuICAgIH0sXG4gICAgbXV0YXRlTWF4aW1pemVYbHM6IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5tYXhpbWl6ZVhscyA9IHBheWxvYWQ7XG4gICAgfSxcbiAgICBtdXRhdGVTdGFydFhsc0Rvd25sb2FkOiBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUuc3RhcnRYbHNEb3dubG9hZCA9IHBheWxvYWQ7XG4gICAgfSxcbiAgICBtdXRhdGVDb21wbGV0ZVhsc0Rvd25sb2FkOiBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUuY29tcGxldGVYbHNEb3dubG9hZCA9IHBheWxvYWQ7XG4gICAgfSxcbiAgICBtdXRhdGVDYW5jZWxEb3dubG9hZDogZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLmNhbmNlbERvd25sb2FkID0gcGF5bG9hZDtcbiAgICB9LFxuICAgIG11dGF0ZUJ1bGtwdWJsaXNoQWN0aXZpdGllczogZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLmJ1bGtwdWJsaXNoQWN0aXZpdGllcyA9IHBheWxvYWQ7XG4gICAgfSxcbiAgICBtdXRhdGVTdGFydEJ1bGtQdWJsaXNoOiBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUuc3RhcnRCdWxrUHVibGlzaCA9IHBheWxvYWQ7XG4gICAgfSxcbn07XG52YXIgYWN0aW9ucyA9IHtcbiAgICB1cGRhdGVTZWxlY3RlZEFjdGl2aXRpZXM6IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQoJ211dGF0ZVNlbGVjdGVkQWN0aXZpdGllcycsIHBheWxvYWQpO1xuICAgIH0sXG4gICAgdXBkYXRlQ2xvc2VYbHNNb2RlbDogZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdCgnbXV0YXRlQ2xvc2VYbHNNb2RlbCcsIHBheWxvYWQpO1xuICAgIH0sXG4gICAgdXBkYXRlQnVsa1B1Ymxpc2hMZW5ndGg6IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQoJ211dGF0ZUJ1bGtQdWJsaXNoTGVuZ3RoJywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICB1cGRhdGVDYW5jZWxVcGxvYWQ6IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQoJ211dGF0ZUNhbmNlbFVwbG9hZCcsIHBheWxvYWQpO1xuICAgIH0sXG4gICAgdXBkYXRlTWF4aW1pemVYbHM6IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQoJ211dGF0ZU1heGltaXplWGxzJywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICB1cGRhdGVTdGFydFhsc0Rvd25sb2FkOiBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KCdtdXRhdGVTdGFydFhsc0Rvd25sb2FkJywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICB1cGRhdGVDb21wbGV0ZVhsc0Rvd25sb2FkOiBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KCdtdXRhdGVDb21wbGV0ZVhsc0Rvd25sb2FkJywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICB1cGRhdGVDYW5jZWxEb3dubG9hZDogZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdCgnbXV0YXRlQ2FuY2VsRG93bmxvYWQnLCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIHVwZGF0ZUJ1bGtwdWJsaXNoQWN0aXZpdGllczogZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdCgnbXV0YXRlQnVsa3B1Ymxpc2hBY3Rpdml0aWVzJywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICB1cGRhdGVTdGFydEJ1bGtQdWJsaXNoOiBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KCdtdXRhdGVTdGFydEJ1bGtQdWJsaXNoJywgcGF5bG9hZCk7XG4gICAgfSxcbn07XG52YXIgYWN0aXZpdHlMaXN0U3RvcmUgPSAoMCwgdnVleF8xLmNyZWF0ZVN0b3JlKSh7XG4gICAgc3RhdGU6IHN0YXRlLFxuICAgIG11dGF0aW9uczogbXV0YXRpb25zLFxuICAgIGFjdGlvbnM6IGFjdGlvbnMsXG59KTtcbmZ1bmN0aW9uIHVzZVN0b3JlKCkge1xuICAgIHJldHVybiBhY3Rpdml0eUxpc3RTdG9yZTtcbn1cbmV4cG9ydHMudXNlU3RvcmUgPSB1c2VTdG9yZTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5kZXRhaWxTdG9yZSA9IHZvaWQgMDtcbnZhciB2dWV4XzEgPSByZXF1aXJlKFwidnVleFwiKTtcbnZhciBzdGF0ZSA9IHtcbiAgICB1blB1Ymxpc2hlZDogZmFsc2UsXG4gICAgc2hvd1B1Ymxpc2hlZDogZmFsc2UsXG4gICAgcHVibGlzaEVycm9yczogW10sXG4gICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICBidWxrcHVibGlzaExlbmd0aDogMCxcbn07XG52YXIgbXV0YXRpb25zID0ge1xuICAgIG11dGF0ZVVuUHVibGlzaGVkOiBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUudW5QdWJsaXNoZWQgPSBwYXlsb2FkO1xuICAgIH0sXG4gICAgbXV0YXRlU2hvd1B1Ymxpc2hlZDogZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLnNob3dQdWJsaXNoZWQgPSBwYXlsb2FkO1xuICAgIH0sXG4gICAgbXV0YXRlUHVibGlzaEVycm9yczogZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLnB1Ymxpc2hFcnJvcnMgPSBwYXlsb2FkO1xuICAgIH0sXG4gICAgbXV0YXRlSXNMb2FkaW5nOiBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUuaXNMb2FkaW5nID0gcGF5bG9hZDtcbiAgICB9LFxuICAgIG11dGF0ZUJ1bGtwdWJsaXNoTGVuZ3RoOiBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUuYnVsa3B1Ymxpc2hMZW5ndGggPSBwYXlsb2FkO1xuICAgIH0sXG59O1xudmFyIGFjdGlvbnMgPSB7XG4gICAgdXBkYXRlVW5QdWJsaXNoZWQ6IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQoJ211dGF0ZVVuUHVibGlzaGVkJywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICB1cGRhdGVTaG93UHVibGlzaGVkOiBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KCdtdXRhdGVTaG93UHVibGlzaGVkJywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICB1cGRhdGVQdWJsaXNoRXJyb3JzOiBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KCdtdXRhdGVQdWJsaXNoRXJyb3JzJywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICB1cGRhdGVJc0xvYWRpbmc6IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQoJ211dGF0ZUlzTG9hZGluZycsIHBheWxvYWQpO1xuICAgIH0sXG4gICAgdXBkYXRlQnVsa3B1Ymxpc2hMZW5ndGg6IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQoJ211dGF0ZUJ1bGtwdWJsaXNoTGVuZ3RoJywgcGF5bG9hZCk7XG4gICAgfSxcbn07XG52YXIgYWN0aXZpdHlEZXRhaWxTdG9yZSA9ICgwLCB2dWV4XzEuY3JlYXRlU3RvcmUpKHtcbiAgICBzdGF0ZTogc3RhdGUsXG4gICAgbXV0YXRpb25zOiBtdXRhdGlvbnMsXG4gICAgYWN0aW9uczogYWN0aW9ucyxcbn0pO1xuZnVuY3Rpb24gZGV0YWlsU3RvcmUoKSB7XG4gICAgcmV0dXJuIGFjdGl2aXR5RGV0YWlsU3RvcmU7XG59XG5leHBvcnRzLmRldGFpbFN0b3JlID0gZGV0YWlsU3RvcmU7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMudXNlU3RvcmUgPSBleHBvcnRzLnN0b3JlID0gdm9pZCAwO1xudmFyIHZ1ZXhfMSA9IHJlcXVpcmUoXCJ2dWV4XCIpO1xudmFyIHN0YXRlXzEgPSByZXF1aXJlKFwiLi9zZXR0aW5nL3N0YXRlXCIpO1xudmFyIG11dGF0aW9uXzEgPSByZXF1aXJlKFwiLi9zZXR0aW5nL211dGF0aW9uXCIpO1xudmFyIGFjdGlvbnNfMSA9IHJlcXVpcmUoXCIuL3NldHRpbmcvYWN0aW9uc1wiKTtcbmV4cG9ydHMuc3RvcmUgPSAoMCwgdnVleF8xLmNyZWF0ZVN0b3JlKSh7XG4gICAgc3RhdGU6IHN0YXRlXzEuc3RhdGUsXG4gICAgbXV0YXRpb25zOiBtdXRhdGlvbl8xLm11dGF0aW9ucyxcbiAgICBhY3Rpb25zOiBhY3Rpb25zXzEuYWN0aW9ucyxcbn0pO1xuZnVuY3Rpb24gdXNlU3RvcmUoKSB7XG4gICAgcmV0dXJuIGV4cG9ydHMuc3RvcmU7XG59XG5leHBvcnRzLnVzZVN0b3JlID0gdXNlU3RvcmU7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfYTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuYWN0aW9ucyA9IGV4cG9ydHMuQWN0aW9uVHlwZXMgPSB2b2lkIDA7XG52YXIgbXV0YXRpb25fMSA9IHJlcXVpcmUoXCIuL211dGF0aW9uXCIpO1xudmFyIEFjdGlvblR5cGVzO1xuKGZ1bmN0aW9uIChBY3Rpb25UeXBlcykge1xuICAgIEFjdGlvblR5cGVzW1wiVVBEQVRFX1BVQkxJU0hJTkdfRk9STVwiXSA9IFwiVVBEQVRFX1BVQkxJU0hJTkdfRk9STVwiO1xuICAgIEFjdGlvblR5cGVzW1wiVVBEQVRFX1BVQkxJU0hFUl9JTkZPXCJdID0gXCJVUERBVEVfUFVCTElTSEVSX0lORk9cIjtcbiAgICBBY3Rpb25UeXBlc1tcIlVQREFURV9QVUJMSVNISU5HX0VSUk9SXCJdID0gXCJVUERBVEVfUFVCTElTSElOR19FUlJPUlwiO1xuICAgIEFjdGlvblR5cGVzW1wiVVBEQVRFX0RFRkFVTFRfVkFMVUVTXCJdID0gXCJVUERBVEVfREVGQVVMVF9WQUxVRVNcIjtcbiAgICBBY3Rpb25UeXBlc1tcIlVQREFURV9ERUZBVUxUX0VSUk9SXCJdID0gXCJVUERBVEVfREVGQVVMVF9FUlJPUlwiO1xuICAgIEFjdGlvblR5cGVzW1wiVVBEQVRFX0lTX0xPQURJTkdcIl0gPSBcIlVQREFURV9JU19MT0FESU5HXCI7XG4gICAgQWN0aW9uVHlwZXNbXCJVUERBVEVfQlVMS1BVQkxJU0hfTEVOR1RIXCJdID0gXCJVUERBVEVfQlVMS1BVQkxJU0hfTEVOR1RIXCI7XG59KShBY3Rpb25UeXBlcyA9IGV4cG9ydHMuQWN0aW9uVHlwZXMgfHwgKGV4cG9ydHMuQWN0aW9uVHlwZXMgPSB7fSkpO1xuZXhwb3J0cy5hY3Rpb25zID0gKF9hID0ge30sXG4gICAgX2FbQWN0aW9uVHlwZXMuVVBEQVRFX1BVQkxJU0hJTkdfRk9STV0gPSBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KG11dGF0aW9uXzEuTXV0YXRpb25UeXBlcy5VUERBVEVfUFVCTElTSElOR19GT1JNLCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIF9hW0FjdGlvblR5cGVzLlVQREFURV9QVUJMSVNIRVJfSU5GT10gPSBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KG11dGF0aW9uXzEuTXV0YXRpb25UeXBlcy5VUERBVEVfUFVCTElTSEVSX0lORk8sIHBheWxvYWQpO1xuICAgIH0sXG4gICAgX2FbQWN0aW9uVHlwZXMuVVBEQVRFX1BVQkxJU0hJTkdfRVJST1JdID0gZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdChtdXRhdGlvbl8xLk11dGF0aW9uVHlwZXMuVVBEQVRFX1BVQkxJU0hJTkdfRVJST1IsIHBheWxvYWQpO1xuICAgIH0sXG4gICAgX2FbQWN0aW9uVHlwZXMuVVBEQVRFX0RFRkFVTFRfVkFMVUVTXSA9IGZ1bmN0aW9uIChfYSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgY29tbWl0ID0gX2EuY29tbWl0O1xuICAgICAgICBjb21taXQobXV0YXRpb25fMS5NdXRhdGlvblR5cGVzLlVQREFURV9ERUZBVUxUX1ZBTFVFUywgcGF5bG9hZCk7XG4gICAgfSxcbiAgICBfYVtBY3Rpb25UeXBlcy5VUERBVEVfREVGQVVMVF9FUlJPUl0gPSBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KG11dGF0aW9uXzEuTXV0YXRpb25UeXBlcy5VUERBVEVfREVGQVVMVF9FUlJPUiwgcGF5bG9hZCk7XG4gICAgfSxcbiAgICBfYVtBY3Rpb25UeXBlcy5VUERBVEVfSVNfTE9BRElOR10gPSBmdW5jdGlvbiAoX2EsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGNvbW1pdCA9IF9hLmNvbW1pdDtcbiAgICAgICAgY29tbWl0KG11dGF0aW9uXzEuTXV0YXRpb25UeXBlcy5JU19MT0FESU5HLCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIF9hW0FjdGlvblR5cGVzLlVQREFURV9CVUxLUFVCTElTSF9MRU5HVEhdID0gZnVuY3Rpb24gKF9hLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBjb21taXQgPSBfYS5jb21taXQ7XG4gICAgICAgIGNvbW1pdChtdXRhdGlvbl8xLk11dGF0aW9uVHlwZXMuQlVMS1BVQkxJU0hfTEVOR1RILCBwYXlsb2FkKTtcbiAgICB9LFxuICAgIF9hKTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9hO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5tdXRhdGlvbnMgPSBleHBvcnRzLk11dGF0aW9uVHlwZXMgPSB2b2lkIDA7XG52YXIgTXV0YXRpb25UeXBlcztcbihmdW5jdGlvbiAoTXV0YXRpb25UeXBlcykge1xuICAgIE11dGF0aW9uVHlwZXNbXCJVUERBVEVfUFVCTElTSElOR19GT1JNXCJdID0gXCJVUERBVEVfUFVCTElTSElOR19GT1JNXCI7XG4gICAgTXV0YXRpb25UeXBlc1tcIlVQREFURV9QVUJMSVNIRVJfSU5GT1wiXSA9IFwiVVBEQVRFX1BVQkxJU0hFUl9JTkZPXCI7XG4gICAgTXV0YXRpb25UeXBlc1tcIlVQREFURV9QVUJMSVNISU5HX0VSUk9SXCJdID0gXCJVUERBVEVfUFVCTElTSElOR19FUlJPUlwiO1xuICAgIE11dGF0aW9uVHlwZXNbXCJVUERBVEVfREVGQVVMVF9WQUxVRVNcIl0gPSBcIlVQREFURV9ERUZBVUxUX1ZBTFVFU1wiO1xuICAgIE11dGF0aW9uVHlwZXNbXCJVUERBVEVfREVGQVVMVF9FUlJPUlwiXSA9IFwiVVBEQVRFX0RFRkFVTFRfRVJST1JcIjtcbiAgICBNdXRhdGlvblR5cGVzW1wiSVNfTE9BRElOR1wiXSA9IFwiSVNfTE9BRElOR1wiO1xuICAgIE11dGF0aW9uVHlwZXNbXCJCVUxLUFVCTElTSF9MRU5HVEhcIl0gPSBcIkJVTEtQVUJMSVNIX0xFTkdUSFwiO1xufSkoTXV0YXRpb25UeXBlcyA9IGV4cG9ydHMuTXV0YXRpb25UeXBlcyB8fCAoZXhwb3J0cy5NdXRhdGlvblR5cGVzID0ge30pKTtcbmV4cG9ydHMubXV0YXRpb25zID0gKF9hID0ge30sXG4gICAgX2FbTXV0YXRpb25UeXBlcy5VUERBVEVfUFVCTElTSElOR19GT1JNXSA9IGZ1bmN0aW9uIChzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5wdWJsaXNoaW5nRm9ybVtwYXlsb2FkLmtleV0gPSBwYXlsb2FkLnZhbHVlO1xuICAgIH0sXG4gICAgX2FbTXV0YXRpb25UeXBlcy5VUERBVEVfUFVCTElTSEVSX0lORk9dID0gZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLnB1Ymxpc2hpbmdJbmZvW3BheWxvYWQua2V5XSA9IHBheWxvYWQudmFsdWU7XG4gICAgfSxcbiAgICBfYVtNdXRhdGlvblR5cGVzLlVQREFURV9ERUZBVUxUX1ZBTFVFU10gPSBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUuZGVmYXVsdEZvcm1bcGF5bG9hZC5rZXldID0gcGF5bG9hZC52YWx1ZTtcbiAgICB9LFxuICAgIF9hW011dGF0aW9uVHlwZXMuVVBEQVRFX1BVQkxJU0hJTkdfRVJST1JdID0gZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLnB1Ymxpc2hpbmdFcnJvcltwYXlsb2FkLmtleV0gPSBwYXlsb2FkLnZhbHVlO1xuICAgIH0sXG4gICAgX2FbTXV0YXRpb25UeXBlcy5VUERBVEVfREVGQVVMVF9FUlJPUl0gPSBmdW5jdGlvbiAoc3RhdGUsIHBheWxvYWQpIHtcbiAgICAgICAgc3RhdGUuZGVmYXVsdEVycm9yW3BheWxvYWQua2V5XSA9IHBheWxvYWQudmFsdWU7XG4gICAgfSxcbiAgICBfYVtNdXRhdGlvblR5cGVzLklTX0xPQURJTkddID0gZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLmRlZmF1bHRFcnJvcltwYXlsb2FkLmtleV0gPSBwYXlsb2FkLnZhbHVlO1xuICAgIH0sXG4gICAgX2FbTXV0YXRpb25UeXBlcy5CVUxLUFVCTElTSF9MRU5HVEhdID0gZnVuY3Rpb24gKHN0YXRlLCBwYXlsb2FkKSB7XG4gICAgICAgIHN0YXRlLmRlZmF1bHRFcnJvcltwYXlsb2FkLmtleV0gPSBwYXlsb2FkLnZhbHVlO1xuICAgIH0sXG4gICAgX2EpO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnN0YXRlID0gdm9pZCAwO1xuZXhwb3J0cy5zdGF0ZSA9IHtcbiAgICBwdWJsaXNoaW5nRm9ybToge1xuICAgICAgICBwdWJsaXNoZXJfaWQ6ICcnLFxuICAgICAgICBhcGlfdG9rZW46ICcnLFxuICAgIH0sXG4gICAgcHVibGlzaGluZ0luZm86IHtcbiAgICAgICAgcHVibGlzaGVyX3ZlcmlmaWNhdGlvbjogZmFsc2UsXG4gICAgICAgIHRva2VuX3ZlcmlmaWNhdGlvbjogZmFsc2UsXG4gICAgICAgIGlzVmVyaWZpY2F0aW9uUmVxdWVzdGVkOiBmYWxzZSxcbiAgICB9LFxuICAgIGRlZmF1bHRGb3JtOiB7XG4gICAgICAgIGRlZmF1bHRfY3VycmVuY3k6ICcnLFxuICAgICAgICBkZWZhdWx0X2xhbmd1YWdlOiAnJyxcbiAgICAgICAgaGllcmFyY2h5OiAnJyxcbiAgICAgICAgbGlua2VkX2RhdGFfdXJpOiAnJyxcbiAgICAgICAgaHVtYW5pdGFyaWFuOiAnJyxcbiAgICAgICAgYnVkZ2V0X25vdF9wcm92aWRlZDogJycsXG4gICAgICAgIGRlZmF1bHRfY29sbGFib3JhdGlvbl90eXBlOiAnJyxcbiAgICAgICAgZGVmYXVsdF9mbG93X3R5cGU6ICcnLFxuICAgICAgICBkZWZhdWx0X2ZpbmFuY2VfdHlwZTogJycsXG4gICAgICAgIGRlZmF1bHRfYWlkX3R5cGU6ICcnLFxuICAgICAgICBkZWZhdWx0X3RpZWRfc3RhdHVzOiAnJyxcbiAgICB9LFxuICAgIHB1Ymxpc2hpbmdFcnJvcjoge1xuICAgICAgICBhcGlfdG9rZW46ICcnLFxuICAgIH0sXG4gICAgZGVmYXVsdEVycm9yOiB7XG4gICAgICAgIGRlZmF1bHRfY3VycmVuY3k6ICcnLFxuICAgICAgICBkZWZhdWx0X2xhbmd1YWdlOiAnJyxcbiAgICAgICAgaGllcmFyY2h5OiAnJyxcbiAgICAgICAgbGlua2VkX2RhdGFfdXJpOiAnJyxcbiAgICAgICAgaHVtYW5pdGFyaWFuOiAnJyxcbiAgICAgICAgYnVkZ2V0X25vdF9wcm92aWRlZDogJycsXG4gICAgICAgIGRlZmF1bHRfY29sbGFib3JhdGlvbl90eXBlOiAnJyxcbiAgICAgICAgZGVmYXVsdF9mbG93X3R5cGU6ICcnLFxuICAgICAgICBkZWZhdWx0X2ZpbmFuY2VfdHlwZTogJycsXG4gICAgICAgIGRlZmF1bHRfYWlkX3R5cGU6ICcnLFxuICAgICAgICBkZWZhdWx0X3RpZWRfc3RhdHVzOiAnJyxcbiAgICB9LFxuICAgIGlzTG9hZGluZzoge30sXG59O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlJlcG9ydGluZ09yZ2FuaXphdGlvbiA9IGV4cG9ydHMuUGxhbm5lZERpc2J1cnNlbWVudCA9IGV4cG9ydHMuSHVtYW5pdGFyaWFuU2NvcGUgPSBleHBvcnRzLlRhZyA9IGV4cG9ydHMuUG9saWN5TWFya2VyID0gZXhwb3J0cy5SZWxhdGVkQWN0aXZpdHkgPSBleHBvcnRzLkNvbmRpdGlvbnMgPSBleHBvcnRzLkxlZ2FjeURhdGEgPSBleHBvcnRzLlNlY3RvciA9IGV4cG9ydHMuTG9jYXRpb24gPSBleHBvcnRzLlRyYW5zYWN0aW9ucyA9IGV4cG9ydHMuUmVjaXBpZW50UmVnaW9uID0gZXhwb3J0cy5SZWNpcGllbnRDb3VudHJ5ID0gZXhwb3J0cy5QYXJ0aWNpcGF0aW5nT3JnID0gZXhwb3J0cy5Db250YWN0SW5mbyA9IGV4cG9ydHMuQWN0aXZpdHlEYXRlID0gZXhwb3J0cy5EZXNjcmlwdGlvbiA9IGV4cG9ydHMuVGl0bGVFbGVtZW50ID0gZXhwb3J0cy5PdGhlcklkZW50aWZpZXIgPSBleHBvcnRzLklhdGlJZGVudGlmaWVyID0gZXhwb3J0cy5SZXN1bHQgPSB2b2lkIDA7XG4vLyBQcm94eSBleHBvcnQgYWxsIHJlbGF0ZWQgY29tcG9uZW50cy5cbnZhciBSZXN1bHRfdnVlXzEgPSByZXF1aXJlKFwiLi9SZXN1bHQudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUmVzdWx0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoUmVzdWx0X3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIElhdGlJZGVudGlmaWVyX3Z1ZV8xID0gcmVxdWlyZShcIi4vSWF0aUlkZW50aWZpZXIudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiSWF0aUlkZW50aWZpZXJcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChJYXRpSWRlbnRpZmllcl92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBPdGhlcklkZW50aWZpZXJfdnVlXzEgPSByZXF1aXJlKFwiLi9PdGhlcklkZW50aWZpZXIudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiT3RoZXJJZGVudGlmaWVyXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoT3RoZXJJZGVudGlmaWVyX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFRpdGxlX3Z1ZV8xID0gcmVxdWlyZShcIi4vVGl0bGUudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiVGl0bGVFbGVtZW50XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoVGl0bGVfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgRGVzY3JpcHRpb25fdnVlXzEgPSByZXF1aXJlKFwiLi9EZXNjcmlwdGlvbi52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJEZXNjcmlwdGlvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KERlc2NyaXB0aW9uX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIEFjdGl2aXR5RGF0ZV92dWVfMSA9IHJlcXVpcmUoXCIuL0FjdGl2aXR5RGF0ZS52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJBY3Rpdml0eURhdGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChBY3Rpdml0eURhdGVfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgQ29udGFjdEluZm9fdnVlXzEgPSByZXF1aXJlKFwiLi9Db250YWN0SW5mby52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJDb250YWN0SW5mb1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KENvbnRhY3RJbmZvX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFBhcnRpY2lwYXRpbmdPcmdfdnVlXzEgPSByZXF1aXJlKFwiLi9QYXJ0aWNpcGF0aW5nT3JnLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlBhcnRpY2lwYXRpbmdPcmdcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChQYXJ0aWNpcGF0aW5nT3JnX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFJlY2lwaWVudENvdW50cnlfdnVlXzEgPSByZXF1aXJlKFwiLi9SZWNpcGllbnRDb3VudHJ5LnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlJlY2lwaWVudENvdW50cnlcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChSZWNpcGllbnRDb3VudHJ5X3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFJlY2lwaWVudFJlZ2lvbl92dWVfMSA9IHJlcXVpcmUoXCIuL1JlY2lwaWVudFJlZ2lvbi52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJSZWNpcGllbnRSZWdpb25cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChSZWNpcGllbnRSZWdpb25fdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgVHJhbnNhY3Rpb25zX3Z1ZV8xID0gcmVxdWlyZShcIi4vVHJhbnNhY3Rpb25zLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRyYW5zYWN0aW9uc1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFRyYW5zYWN0aW9uc192dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBMb2NhdGlvbl92dWVfMSA9IHJlcXVpcmUoXCIuL0xvY2F0aW9uLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkxvY2F0aW9uXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoTG9jYXRpb25fdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgU2VjdG9yX3Z1ZV8xID0gcmVxdWlyZShcIi4vU2VjdG9yLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlNlY3RvclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFNlY3Rvcl92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBMZWdhY3lEYXRhX3Z1ZV8xID0gcmVxdWlyZShcIi4vTGVnYWN5RGF0YS52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJMZWdhY3lEYXRhXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoTGVnYWN5RGF0YV92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBDb25kaXRpb25zX3Z1ZV8xID0gcmVxdWlyZShcIi4vQ29uZGl0aW9ucy52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJDb25kaXRpb25zXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoQ29uZGl0aW9uc192dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBSZWxhdGVkQWN0aXZpdHlfdnVlXzEgPSByZXF1aXJlKFwiLi9SZWxhdGVkQWN0aXZpdHkudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUmVsYXRlZEFjdGl2aXR5XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoUmVsYXRlZEFjdGl2aXR5X3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFBvbGljeU1hcmtlcl92dWVfMSA9IHJlcXVpcmUoXCIuL1BvbGljeU1hcmtlci52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJQb2xpY3lNYXJrZXJcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChQb2xpY3lNYXJrZXJfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgVGFnX3Z1ZV8xID0gcmVxdWlyZShcIi4vVGFnLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRhZ1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFRhZ192dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBIdW1hbml0YXJpYW5TY29wZV92dWVfMSA9IHJlcXVpcmUoXCIuL0h1bWFuaXRhcmlhblNjb3BlLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkh1bWFuaXRhcmlhblNjb3BlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoSHVtYW5pdGFyaWFuU2NvcGVfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgUGxhbm5lZERpc2J1cnNlbWVudF92dWVfMSA9IHJlcXVpcmUoXCIuL1BsYW5uZWREaXNidXJzZW1lbnQudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUGxhbm5lZERpc2J1cnNlbWVudFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFBsYW5uZWREaXNidXJzZW1lbnRfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgUmVwb3J0aW5nT3JnYW5pemF0aW9uX3Z1ZV8xID0gcmVxdWlyZShcIi4vUmVwb3J0aW5nT3JnYW5pemF0aW9uLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlJlcG9ydGluZ09yZ2FuaXphdGlvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFJlcG9ydGluZ09yZ2FuaXphdGlvbl92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5QZXJpb2QgPSBleHBvcnRzLkJhc2VsaW5lID0gZXhwb3J0cy5Eb2N1bWVudExpbmsgPSBleHBvcnRzLlJlZmVyZW5jZSA9IGV4cG9ydHMuRGVzY3JpcHRpb24gPSBleHBvcnRzLkFnZ3JlZ2F0aW9uU3RhdHVzID0gZXhwb3J0cy5Bc2NlbmRpbmcgPSBleHBvcnRzLk1lYXN1cmUgPSBleHBvcnRzLlRpdGxlRWxlbWVudCA9IHZvaWQgMDtcbi8vIFByb3h5IGV4cG9ydCBhbGwgcmVsYXRlZCBjb21wb25lbnRzLlxudmFyIFRpdGxlX3Z1ZV8xID0gcmVxdWlyZShcIi4vVGl0bGUudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiVGl0bGVFbGVtZW50XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoVGl0bGVfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgTWVhc3VyZV92dWVfMSA9IHJlcXVpcmUoXCIuL01lYXN1cmUudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiTWVhc3VyZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KE1lYXN1cmVfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgSW5kaWNhdG9yQXNjZW5kaW5nX3Z1ZV8xID0gcmVxdWlyZShcIi4vSW5kaWNhdG9yQXNjZW5kaW5nLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkFzY2VuZGluZ1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KEluZGljYXRvckFzY2VuZGluZ192dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBBZ2dyZWdhdGlvblN0YXR1c192dWVfMSA9IHJlcXVpcmUoXCIuL0FnZ3JlZ2F0aW9uU3RhdHVzLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkFnZ3JlZ2F0aW9uU3RhdHVzXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoQWdncmVnYXRpb25TdGF0dXNfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgRGVzY3JpcHRpb25fdnVlXzEgPSByZXF1aXJlKFwiLi9EZXNjcmlwdGlvbi52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJEZXNjcmlwdGlvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KERlc2NyaXB0aW9uX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFJlZmVyZW5jZV92dWVfMSA9IHJlcXVpcmUoXCIuL1JlZmVyZW5jZS52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJSZWZlcmVuY2VcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChSZWZlcmVuY2VfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgRG9jdW1lbnRMaW5rX3Z1ZV8xID0gcmVxdWlyZShcIi4vRG9jdW1lbnRMaW5rLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkRvY3VtZW50TGlua1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KERvY3VtZW50TGlua192dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBCYXNlbGluZV92dWVfMSA9IHJlcXVpcmUoXCIuL0Jhc2VsaW5lLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkJhc2VsaW5lXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoQmFzZWxpbmVfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgUGVyaW9kX3Z1ZV8xID0gcmVxdWlyZShcIi4vUGVyaW9kLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlBlcmlvZFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFBlcmlvZF92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5BY3R1YWxWYWx1ZSA9IGV4cG9ydHMuVGFyZ2V0VmFsdWUgPSB2b2lkIDA7XG52YXIgVGFyZ2V0VmFsdWVfdnVlXzEgPSByZXF1aXJlKFwiLi9UYXJnZXRWYWx1ZS52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUYXJnZXRWYWx1ZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFRhcmdldFZhbHVlX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIEFjdHVhbFZhbHVlX3Z1ZV8xID0gcmVxdWlyZShcIi4vQWN0dWFsVmFsdWUudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQWN0dWFsVmFsdWVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChBY3R1YWxWYWx1ZV92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5JbmRpY2F0b3IgPSBleHBvcnRzLlJlc3VsdFR5cGUgPSBleHBvcnRzLlJlZmVyZW5jZSA9IGV4cG9ydHMuRG9jdW1lbnRMaW5rID0gZXhwb3J0cy5UaXRsZURlc2NyaXB0aW9uID0gdm9pZCAwO1xuLy8gUHJveHkgZXhwb3J0IGFsbCByZWxhdGVkIGNvbXBvbmVudHMuXG52YXIgVGl0bGVEZXNjcmlwdGlvbl92dWVfMSA9IHJlcXVpcmUoXCIuL1RpdGxlRGVzY3JpcHRpb24udnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiVGl0bGVEZXNjcmlwdGlvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFRpdGxlRGVzY3JpcHRpb25fdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgRG9jdW1lbnRMaW5rX3Z1ZV8xID0gcmVxdWlyZShcIi4vRG9jdW1lbnRMaW5rLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkRvY3VtZW50TGlua1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KERvY3VtZW50TGlua192dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBSZWZlcmVuY2VfdnVlXzEgPSByZXF1aXJlKFwiLi9SZWZlcmVuY2UudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUmVmZXJlbmNlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoUmVmZXJlbmNlX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFJlc3VsdFR5cGVfdnVlXzEgPSByZXF1aXJlKFwiLi9SZXN1bHRUeXBlLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlJlc3VsdFR5cGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChSZXN1bHRUeXBlX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIEluZGljYXRvcl92dWVfMSA9IHJlcXVpcmUoXCIuL0luZGljYXRvci52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJJbmRpY2F0b3JcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChJbmRpY2F0b3JfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuVGllZFN0YXR1cyA9IGV4cG9ydHMuRmluYW5jZVR5cGUgPSBleHBvcnRzLkZsb3dUeXBlID0gZXhwb3J0cy5SZWNpcGllbnRSZWdpb24gPSBleHBvcnRzLlJlY2lwaWVudENvdW50cnkgPSBleHBvcnRzLlNlY3RvciA9IGV4cG9ydHMuRGlzYnVyc2VtZW50Q2hhbm5lbCA9IGV4cG9ydHMuUmVjZWl2ZXJPcmdhbml6YXRpb24gPSBleHBvcnRzLlByb3ZpZGVyT3JnYW5pemF0aW9uID0gZXhwb3J0cy5WYWx1ZSA9IGV4cG9ydHMuVHJhbnNhY3Rpb25EYXRlID0gZXhwb3J0cy5UcmFuc2FjdGlvblR5cGUgPSBleHBvcnRzLkFpZFR5cGUgPSBleHBvcnRzLkRlc2NyaXB0aW9uID0gdm9pZCAwO1xuLy8gUHJveHkgZXhwb3J0IGFsbCByZWxhdGVkIGNvbXBvbmVudHMuXG52YXIgRGVzY3JpcHRpb25fdnVlXzEgPSByZXF1aXJlKFwiLi9EZXNjcmlwdGlvbi52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJEZXNjcmlwdGlvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KERlc2NyaXB0aW9uX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIEFpZFR5cGVfdnVlXzEgPSByZXF1aXJlKFwiLi9BaWRUeXBlLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkFpZFR5cGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChBaWRUeXBlX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFRyYW5zYWN0aW9uVHlwZV92dWVfMSA9IHJlcXVpcmUoXCIuL1RyYW5zYWN0aW9uVHlwZS52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUcmFuc2FjdGlvblR5cGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChUcmFuc2FjdGlvblR5cGVfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgVHJhbnNhY3Rpb25EYXRlX3Z1ZV8xID0gcmVxdWlyZShcIi4vVHJhbnNhY3Rpb25EYXRlLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRyYW5zYWN0aW9uRGF0ZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFRyYW5zYWN0aW9uRGF0ZV92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBWYWx1ZV92dWVfMSA9IHJlcXVpcmUoXCIuL1ZhbHVlLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlZhbHVlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoVmFsdWVfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgUHJvdmlkZXJPcmdhbml6YXRpb25fdnVlXzEgPSByZXF1aXJlKFwiLi9Qcm92aWRlck9yZ2FuaXphdGlvbi52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJQcm92aWRlck9yZ2FuaXphdGlvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFByb3ZpZGVyT3JnYW5pemF0aW9uX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFJlY2VpdmVyT3JnYW5pemF0aW9uX3Z1ZV8xID0gcmVxdWlyZShcIi4vUmVjZWl2ZXJPcmdhbml6YXRpb24udnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUmVjZWl2ZXJPcmdhbml6YXRpb25cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChSZWNlaXZlck9yZ2FuaXphdGlvbl92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBEaXNidXJzZW1lbnRDaGFubmVsX3Z1ZV8xID0gcmVxdWlyZShcIi4vRGlzYnVyc2VtZW50Q2hhbm5lbC52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJEaXNidXJzZW1lbnRDaGFubmVsXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoRGlzYnVyc2VtZW50Q2hhbm5lbF92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBTZWN0b3JfdnVlXzEgPSByZXF1aXJlKFwiLi9TZWN0b3IudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiU2VjdG9yXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoU2VjdG9yX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFJlY2lwaWVudENvdW50cnlfdnVlXzEgPSByZXF1aXJlKFwiLi9SZWNpcGllbnRDb3VudHJ5LnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlJlY2lwaWVudENvdW50cnlcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChSZWNpcGllbnRDb3VudHJ5X3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFJlY2lwaWVudFJlZ2lvbl92dWVfMSA9IHJlcXVpcmUoXCIuL1JlY2lwaWVudFJlZ2lvbi52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJSZWNpcGllbnRSZWdpb25cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChSZWNpcGllbnRSZWdpb25fdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgRmxvd1R5cGVfdnVlXzEgPSByZXF1aXJlKFwiLi9GbG93VHlwZS52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJGbG93VHlwZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KEZsb3dUeXBlX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIEZpbmFuY2VUeXBlX3Z1ZV8xID0gcmVxdWlyZShcIi4vRmluYW5jZVR5cGUudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiRmluYW5jZVR5cGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChGaW5hbmNlVHlwZV92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBUaWVkU3RhdHVzX3Z1ZV8xID0gcmVxdWlyZShcIi4vVGllZFN0YXR1cy52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUaWVkU3RhdHVzXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoVGllZFN0YXR1c192dWVfMSkuZGVmYXVsdDsgfSB9KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Eb2N1bWVudExpbmsgPSBleHBvcnRzLlRvdGFsRXhwZW5kaXR1cmUgPSBleHBvcnRzLlJlY2lwaWVudENvdW50cnlCdWRnZXQgPSBleHBvcnRzLlJlcG9ydGluZ1JlZ2lvbkJ1ZGdldCA9IGV4cG9ydHMuUmVwb3J0aW5nT3JnQnVkZ2V0ID0gZXhwb3J0cy5Ub3RhbEJ1ZGdldCA9IGV4cG9ydHMuUmVwb3J0aW5nT3JnYW5pc2F0aW9uID0gdm9pZCAwO1xuLy8gUHJveHkgZXhwb3J0IGFsbCByZWxhdGVkIGNvbXBvbmVudHMuXG52YXIgUmVwb3J0aW5nT3JnYW5pc2F0aW9uX3Z1ZV8xID0gcmVxdWlyZShcIi4vUmVwb3J0aW5nT3JnYW5pc2F0aW9uLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlJlcG9ydGluZ09yZ2FuaXNhdGlvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFJlcG9ydGluZ09yZ2FuaXNhdGlvbl92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBUb3RhbEJ1ZGdldF92dWVfMSA9IHJlcXVpcmUoXCIuL1RvdGFsQnVkZ2V0LnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRvdGFsQnVkZ2V0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoVG90YWxCdWRnZXRfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG52YXIgUmVwb3J0aW5nT3JnQnVkZ2V0X3Z1ZV8xID0gcmVxdWlyZShcIi4vUmVwb3J0aW5nT3JnQnVkZ2V0LnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlJlcG9ydGluZ09yZ0J1ZGdldFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gX19pbXBvcnREZWZhdWx0KFJlcG9ydGluZ09yZ0J1ZGdldF92dWVfMSkuZGVmYXVsdDsgfSB9KTtcbnZhciBSZXBvcnRpbmdSZWdpb25CdWRnZXRfdnVlXzEgPSByZXF1aXJlKFwiLi9SZXBvcnRpbmdSZWdpb25CdWRnZXQudnVlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUmVwb3J0aW5nUmVnaW9uQnVkZ2V0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2ltcG9ydERlZmF1bHQoUmVwb3J0aW5nUmVnaW9uQnVkZ2V0X3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFJlY2lwaWVudENvdW50cnlCdWRnZXRfdnVlXzEgPSByZXF1aXJlKFwiLi9SZWNpcGllbnRDb3VudHJ5QnVkZ2V0LnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlJlY2lwaWVudENvdW50cnlCdWRnZXRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChSZWNpcGllbnRDb3VudHJ5QnVkZ2V0X3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIFRvdGFsRXhwZW5kaXR1cmVfdnVlXzEgPSByZXF1aXJlKFwiLi9Ub3RhbEV4cGVuZGl0dXJlLnZ1ZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRvdGFsRXhwZW5kaXR1cmVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChUb3RhbEV4cGVuZGl0dXJlX3Z1ZV8xKS5kZWZhdWx0OyB9IH0pO1xudmFyIERvY3VtZW50TGlua192dWVfMSA9IHJlcXVpcmUoXCIuL0RvY3VtZW50TGluay52dWVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJEb2N1bWVudExpbmtcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9faW1wb3J0RGVmYXVsdChEb2N1bWVudExpbmtfdnVlXzEpLmRlZmF1bHQ7IH0gfSk7XG4iLCI8IS0tIGVzbGludC1kaXNhYmxlIC0tPlxuPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwic21vb3RoIC1tYi03IHB4LTUgcHktNyBzbTpweC0xMCBzbTpweS0xNCBtZDotbWItMjBcIj5cbiAgICA8ZGl2IGNsYXNzPVwibXgtYXV0byBtYXgtdy1bNzAwcHhdXCI+XG4gICAgICA8c2VjdGlvbiBjbGFzcz1cInJvdW5kZWQgYmctd2hpdGUgcHktNCBzaGFkb3ctdGV4dGJveCBzbTpweS04XCI+XG4gICAgICAgIDxhcnRpY2xlIGNsYXNzPVwicHktNCBweC02IHNtOnB5LTYgc206cHgtMTJcIj5cbiAgICAgICAgICA8aDMgY2xhc3M9XCJteS0yIHRleHQtMnhsIGZvbnQtYm9sZCB0ZXh0LWJsdWVjb3JhbFwiPlxuICAgICAgICAgICAge3sgbGFuZ3VhZ2UuYWJvdXQud2hhdF9pc19pYXRpX3B1Ymxpc2hlcl9oZWFkZXIgfX1cbiAgICAgICAgICA8L2gzPlxuICAgICAgICAgIDxwIGNsYXNzPVwibXQtNCB0ZXh0LWJhc2VcIj5cbiAgICAgICAgICAgIHt7IGxhbmd1YWdlLmFib3V0LndoYXRfaXNfaWF0aV9wdWJsaXNoZXJfZGVzY3JpcHRpb24ub25lIH19XG4gICAgICAgICAgPC9wPlxuICAgICAgICA8L2FydGljbGU+XG4gICAgICAgIDxhcnRpY2xlIGNsYXNzPVwicHktNCBweC02IHNtOnB5LTYgc206cHgtMTJcIj5cbiAgICAgICAgICA8aDMgY2xhc3M9XCJteS0yIHRleHQtMnhsIGZvbnQtYm9sZCB0ZXh0LWJsdWVjb3JhbFwiPlxuICAgICAgICAgICAge3sgbGFuZ3VhZ2UuYWJvdXQudXNlX2lhdGlfcHVibGlzaGVyX3RvX2hlYWRlciB9fVxuICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgPHVsIGNsYXNzPVwibXQtNCBtbC00IGxpc3QtZGlzYyB0ZXh0LWJhc2UgdGV4dC1ibHVlY29yYWxcIj5cbiAgICAgICAgICAgIDxsaSBjbGFzcz1cInRleHQtYmFzZVwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtYmxhY2tcIj57e1xuICAgICAgICAgICAgICAgIGxhbmd1YWdlLmFib3V0LnVzZV9pYXRpX3B1Ymxpc2hlcl90b19kZXNjcmlwdGlvbi5vbmUubGlzdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgLm9uZVxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LWJhc2VcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWJsYWNrXCI+e3tcbiAgICAgICAgICAgICAgICBsYW5ndWFnZS5hYm91dC51c2VfaWF0aV9wdWJsaXNoZXJfdG9fZGVzY3JpcHRpb24ub25lLmxpc3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgIC50d29cbiAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1iYXNlXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1ibGFja1wiPnt7XG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2UuYWJvdXQudXNlX2lhdGlfcHVibGlzaGVyX3RvX2Rlc2NyaXB0aW9uLm9uZS5saXN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAudGhyZWVcbiAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPGxpIGNsYXNzPVwidGV4dC1iYXNlXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1ibGFja1wiPnt7XG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2UuYWJvdXQudXNlX2lhdGlfcHVibGlzaGVyX3RvX2Rlc2NyaXB0aW9uLm9uZS5saXN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAuZm91clxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LWJhc2VcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWJsYWNrXCI+e3tcbiAgICAgICAgICAgICAgICBsYW5ndWFnZS5hYm91dC51c2VfaWF0aV9wdWJsaXNoZXJfdG9fZGVzY3JpcHRpb24ub25lLmxpc3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgIC5maXZlXG4gICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDxwIGNsYXNzPVwibXQtNCB0ZXh0LWJhc2VcIj5cbiAgICAgICAgICAgIHt7IGxhbmd1YWdlLmFib3V0LnVzZV9pYXRpX3B1Ymxpc2hlcl90b19kZXNjcmlwdGlvbi50d28gfX1cbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgPHAgY2xhc3M9XCJtdC00IHRleHQtYmFzZVwiPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgdi1odG1sPVwibGFuZ3VhZ2UuYWJvdXQudXNlX2lhdGlfcHVibGlzaGVyX3RvX2Rlc2NyaXB0aW9uLnRocmVlXCJcbiAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgPC9wPlxuICAgICAgICA8L2FydGljbGU+XG4gICAgICAgIDxhcnRpY2xlIGNsYXNzPVwib3VuZGVkIHB5LTQgcHgtNiBzbTpweS02IHNtOnB4LTEyXCI+XG4gICAgICAgICAgPGgzIGNsYXNzPVwibXktMiB0ZXh0LTJ4bCBmb250LWJvbGQgdGV4dC1ibHVlY29yYWxcIj5cbiAgICAgICAgICAgIHt7IGxhbmd1YWdlLmFib3V0LmRldmVsb3BtZW50X29mX2lhdGlfaGVhZGVyIH19XG4gICAgICAgICAgPC9oMz5cbiAgICAgICAgICA8cCBjbGFzcz1cIm10LTQgdGV4dC1iYXNlXCI+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICB2LWh0bWw9XCJsYW5ndWFnZS5hYm91dC5kZXZlbG9wbWVudF9vZl9pYXRpX2Rlc2NyaXB0aW9uLm9uZVwiXG4gICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgPC9zZWN0aW9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG48c2NyaXB0IGxhbmc9XCJ0c1wiPjwvc2NyaXB0PlxuPHNjcmlwdD5cbmltcG9ydCB7IGRlZmluZUNvbXBvbmVudCB9IGZyb20gJ3Z1ZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIHNldHVwKCkge1xuICAgIGNvbnN0IGxhbmd1YWdlID0gd2luZG93WydnbG9iYWxMYW5nJ107XG4gICAgcmV0dXJuIHsgbGFuZ3VhZ2UgfTtcbiAgfSxcbn0pO1xuPC9zY3JpcHQ+XG4iLCI8dGVtcGxhdGU+XG4gIDxzZWN0aW9uIGNsYXNzPVwibWFpbiBtdC0xMCBzbTpteC0xMCB4bDpteC0yNCB4bDpweC0xXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJtYWluX19jb250YWluZXIgcm91bmRlZC1sZyBiZy1ibHVlY29yYWwgcGItOCBzbTptYi0xMCBtZDptYi0yMCBtZDpmbGV4IG1kOmJnLW5vbmUgbWQ6cGItMFwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImxlZnQgZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctYmx1ZWNvcmFsIHB4LTMgcHQtNSBwYi03MiB0ZXh0LXdoaXRlIHNtOnJvdW5kZWQtci1sZyBzbTpyb3VuZGVkLWwtbGcgc206cHgtNSBzbTpwdC0xMCBtZDpiYXNpcy0yLzQgbWQ6cm91bmRlZC1yLW5vbmUgbWQ6cGItMTYgbGc6cHQtNDQgbGc6cGItNDQgeGw6cHgtMjRcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdF9fY29udGFpbmVyIHJvdW5kZWQtbGcgcC01IHNtOnAtMTBcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImxlZnRfX3RpdGxlIGZvbnQtYm9sZFwiPnt7XG4gICAgICAgICAgICBsYW5ndWFnZS5ob21lLmlhdGlfcHVibGlzaGluZ190b29sX2hlYWRlclxuICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgIDxwIGNsYXNzPVwicHQtMiBzbTpwdC02IHNtOnBiLThcIj5cbiAgICAgICAgICAgIHt7IGxhbmd1YWdlLmhvbWUuaWF0aV9wdWJsaXNoaW5nX3Rvb2xfc2VjdGlvbi53ZWxjb21lX3RleHQgfX1cbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJsb2NrXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZsZXggZmxleC13cmFwXCI+XG4gICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgcGFnZUNvbnRlbnQgPT09IGxhbmd1YWdlLndlYl9sYW5nLmpvaW5fbm93XG4gICAgICAgICAgICAgICAgICA/IGxhbmd1YWdlLmhvbWUuaWF0aV9wdWJsaXNoaW5nX3Rvb2xfc2VjdGlvblxuICAgICAgICAgICAgICAgICAgICAgIC5oYXZlbnRfcmVnaXN0ZXJlZF9sYWJlbFxuICAgICAgICAgICAgICAgICAgOiBsYW5ndWFnZS5ob21lLmlhdGlfcHVibGlzaGluZ190b29sX3NlY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAuYWxyZWFkeV9oYXZlX2FjY291bnRfbGFiZWxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWwtMSBib3JkZXItYi0yIGJvcmRlci1iLXRyYW5zcGFyZW50IHRleHQtYmFzZSB0ZXh0LXR1cnF1b2lzZSBob3Zlcjpib3JkZXItYi0yIGhvdmVyOmJvcmRlci1iLXR1cnF1b2lzZVwiXG4gICAgICAgICAgICAgICAgQGNsaWNrPVwidG9nZ2xlUGFnZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBwYWdlQ29udGVudCB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPFNpZ25JblxuICAgICAgICB2LWlmPVwicGFnZUNvbnRlbnQgPT09IGxhbmd1YWdlLndlYl9sYW5nLmpvaW5fbm93XCJcbiAgICAgICAgOm1lc3NhZ2U9XCJtZXNzYWdlXCJcbiAgICAgICAgOmludGVudD1cImludGVudFwiXG4gICAgICAvPlxuICAgICAgPEpvaW5Ob3cgdi1lbHNlIC8+XG4gICAgPC9kaXY+XG4gIDwvc2VjdGlvbj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgeyBkZWZpbmVDb21wb25lbnQsIHJlZiB9IGZyb20gJ3Z1ZSc7XG5pbXBvcnQgU2lnbkluIGZyb20gJy4vcGFydGlhbHMvU2lnbkluLnZ1ZSc7XG5pbXBvcnQgSm9pbk5vdyBmcm9tICcuL3BhcnRpYWxzL0pvaW5Ob3cudnVlJztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcbiAgY29tcG9uZW50czoge1xuICAgIEpvaW5Ob3csXG4gICAgU2lnbkluLFxuICB9LFxuICBwcm9wczoge1xuICAgIHBhZ2U6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIGRlZmF1bHQ6ICdzaWduaW4nLFxuICAgIH0sXG4gICAgbWVzc2FnZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSxcbiAgICBpbnRlbnQ6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIH0sXG4gIH0sXG4gIHNldHVwKHByb3BzKSB7XG4gICAgY29uc3QgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcbiAgICBjb25zdCBwYWdlQ29udGVudCA9IHJlZihcbiAgICAgIHByb3BzLnBhZ2UgPT09ICdzaWduaW4nXG4gICAgICAgID8gbGFuZ3VhZ2Uud2ViX2xhbmcuam9pbl9ub3dcbiAgICAgICAgOiBsYW5ndWFnZS53ZWJfbGFuZy5zaWduX2luXG4gICAgKTtcbiAgICBmdW5jdGlvbiB0b2dnbGVQYWdlKCkge1xuICAgICAgcGFnZUNvbnRlbnQudmFsdWUgPVxuICAgICAgICBwYWdlQ29udGVudC52YWx1ZSA9PT0gbGFuZ3VhZ2Uud2ViX2xhbmcuam9pbl9ub3dcbiAgICAgICAgICA/IGxhbmd1YWdlLndlYl9sYW5nLnNpZ25faW5cbiAgICAgICAgICA6IGxhbmd1YWdlLndlYl9sYW5nLmpvaW5fbm93O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBwYWdlQ29udGVudCxcbiAgICAgIHRvZ2dsZVBhZ2UsXG4gICAgICBsYW5ndWFnZSxcbiAgICB9O1xuICB9LFxufSk7XG48L3NjcmlwdD5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cInNoaW1tZXJfX2Jsb2NrXCIgc3R5bGU9XCJtYXgtd2lkdGg6IDUxNXB4XCI+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+XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiXFxuQGtleWZyYW1lcyBzcGlubmVyLTVkODRhMWQ4IHtcXG4wJSB7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTUwJSwgLTUwJSwgMCkgcm90YXRlKDBkZWcpO1xcbn1cXG4xMDAlIHtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNTAlLCAtNTAlLCAwKSByb3RhdGUoMzYwZGVnKTtcXG59XFxufVxcbi5zcGluW2RhdGEtdi01ZDg0YTFkOF06OmJlZm9yZSB7XFxuICBhbmltYXRpb246IDEuNXMgbGluZWFyIGluZmluaXRlIHNwaW5uZXItNWQ4NGExZDg7XFxuICBhbmltYXRpb24tcGxheS1zdGF0ZTogaW5oZXJpdDtcXG4gIGJvcmRlcjogc29saWQgM3B4ICNjZmQwZDE7XFxuICBib3JkZXItYm90dG9tLWNvbG9yOiBncmV5O1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgY29udGVudDogJyc7XFxuICBoZWlnaHQ6IDIwcHg7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDUwJTtcXG4gIGxlZnQ6IDUwJTtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTUwJSwgLTUwJSwgMCk7XFxuICB3aWR0aDogMjBweDtcXG4gIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XFxufVxcbi5zcGluW2RhdGEtdi01ZDg0YTFkOF0ge1xcbiAgaGVpZ2h0OiA0MHB4O1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBtYXJnaW46IGF1dG87XFxufVxcblwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvVGFibGVMYXlvdXQudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCI7QUFnUUE7QUFDRTtJQUNFLGtEQUFrRDtBQUNwRDtBQUNBO0lBQ0Usb0RBQW9EO0FBQ3REO0FBQ0Y7QUFFQTtFQUNFLGdEQUF1QztFQUN2Qyw2QkFBNkI7RUFDN0IseUJBQXlCO0VBQ3pCLHlCQUF5QjtFQUN6QixrQkFBa0I7RUFDbEIsV0FBVztFQUNYLFlBQVk7RUFDWixrQkFBa0I7RUFDbEIsUUFBUTtFQUNSLFNBQVM7RUFDVCxxQ0FBcUM7RUFDckMsV0FBVztFQUNYLHNCQUFzQjtBQUN4QjtBQUNBO0VBQ0UsWUFBWTtFQUNaLGtCQUFrQjtFQUNsQixXQUFXO0VBQ1gsWUFBWTtBQUNkXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIjx0ZW1wbGF0ZT5cXG4gIDxkaXYgY2xhc3M9XFxcImlhdGktbGlzdC10YWJsZSBtYi0xMFxcXCI+XFxuICAgIDx0YWJsZT5cXG4gICAgICA8dGhlYWQ+XFxuICAgICAgICA8dHIgY2xhc3M9XFxcImJnLW4tMTBcXFwiPlxcbiAgICAgICAgICA8dGggaWQ9XFxcInRpdGxlXFxcIiBzY29wZT1cXFwiY29sXFxcIj5cXG4gICAgICAgICAgICA8c3Bhbj57eyBsYW5ndWFnZS5jb21tb25fbGFuZy5hY3Rpdml0eV90aXRsZSB9fTwvc3Bhbj5cXG4gICAgICAgICAgPC90aD5cXG4gICAgICAgICAgPHRoIGlkPVxcXCJwdWJsaXNoaW5nLXByb2dyZXNzXFxcIiBzY29wZT1cXFwiY29sXFxcIiBjbGFzcz1cXFwicHJvZ3Jlc3MtYmFyLWhlYWRlclxcXCI+XFxuICAgICAgICAgICAgPGFcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJmbGV4IGp1c3RpZnktZW5kIHRleHQtbi01MCB0cmFuc2l0aW9uIGR1cmF0aW9uLTUwMCBob3Zlcjp0ZXh0LXNwcmluZy01MFxcXCJcXG4gICAgICAgICAgICAgIDpocmVmPVxcXCJzb3J0QnlQdWJsaXNoaW5nUHJvZ3Jlc3MoKVxcXCJcXG4gICAgICAgICAgICA+XFxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwic29ydGluZy1pbmRpY2F0b3JcXFwiIDpjbGFzcz1cXFwic29ydGluZ0RpcmVjdGlvbigpXFxcIj5cXG4gICAgICAgICAgICAgICAgPHN2Zy12dWUgOmljb249XFxcImAke3NvcnRpbmdEaXJlY3Rpb24oKX0tYXJyb3dgXFxcIiAvPlxcbiAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcIlxcXCI+e3tcXG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2UuY29tbW9uX2xhbmcucHVibGlzaGluZ19wcm9ncmVzc1xcbiAgICAgICAgICAgICAgfX08L3NwYW4+XFxuICAgICAgICAgICAgPC9hPlxcbiAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICA8dGggaWQ9XFxcImRhdGVcXFwiIHNjb3BlPVxcXCJjb2xcXFwiPlxcbiAgICAgICAgICAgIDxhXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwidGV4dC1uLTUwIHRyYW5zaXRpb24gZHVyYXRpb24tNTAwIGhvdmVyOnRleHQtc3ByaW5nLTUwXFxcIlxcbiAgICAgICAgICAgICAgOmhyZWY9XFxcInNvcnRCeURhdGVVcmwoKVxcXCJcXG4gICAgICAgICAgICA+XFxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwic29ydGluZy1pbmRpY2F0b3JcXFwiIDpjbGFzcz1cXFwic29ydGluZ0RpcmVjdGlvbigpXFxcIj5cXG4gICAgICAgICAgICAgICAgPHN2Zy12dWUgOmljb249XFxcImAke3NvcnRpbmdEaXJlY3Rpb24oKX0tYXJyb3dgXFxcIiAvPlxcbiAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgPHNwYW4+e3sgbGFuZ3VhZ2UuY29tbW9uX2xhbmcudXBkYXRlZF9vbiB9fTwvc3Bhbj5cXG4gICAgICAgICAgICA8L2E+XFxuICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgIDx0aCBpZD1cXFwic3RhdHVzXFxcIiBzY29wZT1cXFwiY29sXFxcIj5cXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiaGlkZGVuXFxcIj57eyBsYW5ndWFnZS5jb21tb25fbGFuZy5zdGF0dXMgfX08L3NwYW4+XFxuICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgIDx0aCBpZD1cXFwicHVibGlzaFxcXCIgc2NvcGU9XFxcImNvbFxcXCI+XFxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcImhpZGRlblxcXCI+e3sgbGFuZ3VhZ2UuY29tbW9uX2xhbmcucHVibGlzaCB9fTwvc3Bhbj5cXG4gICAgICAgICAgPC90aD5cXG4gICAgICAgICAgPHRoIGlkPVxcXCJjYlxcXCIgc2NvcGU9XFxcImNvbFxcXCI+XFxuICAgICAgICAgICAgPHNwYW5cXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJjdXJzb3ItcG9pbnRlclxcXCJcXG4gICAgICAgICAgICAgIEBjbGljaz1cXFwidG9nZ2xlU2VsZWN0QWxsKGRhdGEuZGF0YSwgc2VsZWN0QWxsVmFsdWUpXFxcIlxcbiAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgIDxzdmctdnVlIGljb249XFxcImNoZWNrYm94XFxcIiAvPlxcbiAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgPC90aD5cXG4gICAgICAgIDwvdHI+XFxuICAgICAgPC90aGVhZD5cXG4gICAgICA8dGJvZHkgdi1pZj1cXFwiZGF0YS50b3RhbCA+IDBcXFwiPlxcbiAgICAgICAgPHRyXFxuICAgICAgICAgIHYtZm9yPVxcXCJkYXR1bSBpbiBkYXRhLmRhdGFcXFwiXFxuICAgICAgICAgIDprZXk9XFxcImRhdHVtWydpZCddXFxcIlxcbiAgICAgICAgICA6Y2xhc3M9XFxcIntcXG4gICAgICAgICAgICAnYWxyZWFkeS1wdWJsaXNoZWQnOlxcbiAgICAgICAgICAgICAgZGF0dW1bJ2xpbmtlZF90b19pYXRpJ10gJiYgZGF0dW1bJ3N0YXR1cyddID09PSAnZHJhZnQnLFxcbiAgICAgICAgICB9XFxcIlxcbiAgICAgICAgPlxcbiAgICAgICAgICA8dGQgY2xhc3M9XFxcInRpdGxlXFxcIj5cXG4gICAgICAgICAgICA8ZGl2XFxuICAgICAgICAgICAgICBjbGFzcz1cXFwiZmxleCBpdGVtcy1zdGFydCB0cmFuc2l0aW9uIGR1cmF0aW9uLTUwMCBob3Zlcjp0ZXh0LXNwcmluZy01MFxcXCJcXG4gICAgICAgICAgICA+XFxuICAgICAgICAgICAgICA8UHJldmlvdXNseVB1Ymxpc2hlZFxcbiAgICAgICAgICAgICAgICB2LWlmPVxcXCJkYXR1bVsnbGlua2VkX3RvX2lhdGknXSAmJiBkYXR1bVsnc3RhdHVzJ10gPT09ICdkcmFmdCdcXFwiXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJhYnNvbHV0ZSB0b3AtMCBsZWZ0LTBcXFwiXFxuICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZWxsaXBzaXMgcmVsYXRpdmUgdy1mdWxsXFxcIj5cXG4gICAgICAgICAgICAgICAgPGFcXG4gICAgICAgICAgICAgICAgICA6aHJlZj1cXFwiJy9hY3Rpdml0eS8nICsgZGF0dW1bJ2lkJ11cXFwiXFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcImVsbGlwc2lzIHctZnVsbCAhbWF4LXctZnVsbCBvdmVyZmxvdy1oaWRkZW4gdGV4dC1uLTUwXFxcIlxcbiAgICAgICAgICAgICAgICAgID57e1xcbiAgICAgICAgICAgICAgICAgICAgZGF0dW1bJ2RlZmF1bHRfdGl0bGVfbmFycmF0aXZlJ10gJiZcXG4gICAgICAgICAgICAgICAgICAgIGRhdHVtWydkZWZhdWx0X3RpdGxlX25hcnJhdGl2ZSddICE9PSAnJ1xcbiAgICAgICAgICAgICAgICAgICAgICA/IGRhdHVtWydkZWZhdWx0X3RpdGxlX25hcnJhdGl2ZSddXFxuICAgICAgICAgICAgICAgICAgICAgIDogbGFuZ3VhZ2UuY29tbW9uX2xhbmcudW50aXRsZWRcXG4gICAgICAgICAgICAgICAgICB9fTwvYVxcbiAgICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInctNTJcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJlbGxpcHNpc19fdGl0bGUtLWhvdmVyXFxcIj57e1xcbiAgICAgICAgICAgICAgICAgICAgZGF0dW1bJ2RlZmF1bHRfdGl0bGVfbmFycmF0aXZlJ10gJiZcXG4gICAgICAgICAgICAgICAgICAgIGRhdHVtWydkZWZhdWx0X3RpdGxlX25hcnJhdGl2ZSddICE9PSAnJ1xcbiAgICAgICAgICAgICAgICAgICAgICA/IGRhdHVtWydkZWZhdWx0X3RpdGxlX25hcnJhdGl2ZSddXFxuICAgICAgICAgICAgICAgICAgICAgIDogbGFuZ3VhZ2UuY29tbW9uX2xhbmcudW50aXRsZWRcXG4gICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPC90ZD5cXG5cXG4gICAgICAgICAgPHRkIGNsYXNzPVxcXCJ0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInByb2dyZXNzLWJhci1wYXJlbnRcXFwiPlxcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwicHJvZ3Jlc3MtYmFyLXdyYXBwZXJcXFwiPlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJwcm9ncmVzcy1iYXItY29udGFpbmVyIGJnLXNwcmluZy0xMFxcXCI+XFxuICAgICAgICAgICAgICAgICAgPGRpdlxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcInByb2dyZXNzLWJhci1maWxsIGJnLXNwcmluZy01MFxcXCJcXG4gICAgICAgICAgICAgICAgICAgIDpzdHlsZT1cXFwieyB3aWR0aDogZGF0dW1bJ2NvbXBsZXRlX3BlcmNlbnRhZ2UnXSArICclJyB9XFxcIlxcbiAgICAgICAgICAgICAgICAgID48L2Rpdj5cXG4gICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInByb2dyZXNzLWJhci1udW1iZXJcXFwiPlxcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwidGV4dC14cyBmb250LXNlbWlib2xkIHRleHQtc3ByaW5nLTUwXFxcIlxcbiAgICAgICAgICAgICAgICAgID57eyBkYXR1bVsnY29tcGxldGVfcGVyY2VudGFnZSddIH19JTwvc3BhblxcbiAgICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPC90ZD5cXG5cXG4gICAgICAgICAgPHRkIGNsYXNzPVxcXCJ0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgICAgIHt7IGZvcm1hdERhdGUoZGF0dW0udXBkYXRlZF9hdCkgfX1cXG4gICAgICAgICAgPC90ZD5cXG5cXG4gICAgICAgICAgPHRkPlxcbiAgICAgICAgICAgIDxidXR0b25cXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgdHJhbnNpdGlvbiBkdXJhdGlvbi01MDAgaG92ZXI6dGV4dC1zcHJpbmctNTBcXFwiXFxuICAgICAgICAgICAgICA6Y2xhc3M9XFxcIntcXG4gICAgICAgICAgICAgICAgJ3RleHQtbi00MCc6IGRhdHVtWydzdGF0dXMnXSA9PT0gJ2RyYWZ0JyxcXG4gICAgICAgICAgICAgICAgJ3RleHQtc3ByaW5nLTUwJzogZGF0dW1bJ3N0YXR1cyddID09PSAncHVibGlzaGVkJyxcXG4gICAgICAgICAgICAgIH1cXFwiXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcIm1yLTEgdGV4dC1iYXNlXFxcIj5cXG4gICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICA6aWNvbj1cXFwiXFxuICAgICAgICAgICAgICAgICAgICBkYXR1bVsnc3RhdHVzJ10gPT09ICdkcmFmdCcgPyAnZG9jdW1lbnQtd3JpdGUnIDogJ3RpY2snXFxuICAgICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInRleHQtc20gbGVhZGluZy1yZWxheGVkXFxcIj57e1xcbiAgICAgICAgICAgICAgICBsYW5ndWFnZS5hY3Rpdml0aWVzX2xhbmcuc3RhdHVzX2xhYmVsc1tkYXR1bVsnc3RhdHVzJ11dXFxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cXG4gICAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgPC90ZD5cXG5cXG4gICAgICAgICAgPHRkPlxcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImZsZXggZmxleC13cmFwIGdhcC0yXFxcIj5cXG4gICAgICAgICAgICAgIDxVblB1Ymxpc2hcXG4gICAgICAgICAgICAgICAgdi1pZj1cXFwiZGF0dW0ubGlua2VkX3RvX2lhdGlcXFwiXFxuICAgICAgICAgICAgICAgIHR5cGU9XFxcIm91dGxpbmVcXFwiXFxuICAgICAgICAgICAgICAgIDphY3Rpdml0eS1pZD1cXFwiZGF0dW1bJ2lkJ11cXFwiXFxuICAgICAgICAgICAgICAvPlxcblxcbiAgICAgICAgICAgICAgPFB1Ymxpc2hcXG4gICAgICAgICAgICAgICAgdi1pZj1cXFwiZGF0dW1bJ3N0YXR1cyddICE9PSAncHVibGlzaGVkJ1xcXCJcXG4gICAgICAgICAgICAgICAgOmxpbmtlZC10by1pYXRpPVxcXCJkYXR1bS5saW5rZWRfdG9faWF0aVxcXCJcXG4gICAgICAgICAgICAgICAgOnN0YXR1cz1cXFwiZGF0dW0uc3RhdHVzXFxcIlxcbiAgICAgICAgICAgICAgICA6Y29yZS1jb21wbGV0ZWQ9XFxcImRhdHVtLmNvcmVDb21wbGV0ZWRcXFwiXFxuICAgICAgICAgICAgICAgIHR5cGU9XFxcIm91dGxpbmVcXFwiXFxuICAgICAgICAgICAgICAgIDphY3Rpdml0eS1pZD1cXFwiZGF0dW1bJ2lkJ11cXFwiXFxuICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8L3RkPlxcblxcbiAgICAgICAgICA8dGhcXG4gICAgICAgICAgICBjbGFzcz1cXFwiY2hlY2stY29sdW1uXFxcIlxcbiAgICAgICAgICAgIEBjbGljaz1cXFwiKGV2ZW50OiBFdmVudCkgPT4gZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcXFwiXFxuICAgICAgICAgID5cXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XFxcInNyLW9ubHlcXFwiIGZvcj1cXFwiXFxcIj5cXG4gICAgICAgICAgICAgIHt7IGxhbmd1YWdlLmNvbW1vbl9sYW5nLnNlbGVjdCB9fSBcXFwie3tcXG4gICAgICAgICAgICAgICAgZGF0dW1bJ2RlZmF1bHRfdGl0bGVfbmFycmF0aXZlJ11cXG4gICAgICAgICAgICAgIH19XFxcIlxcbiAgICAgICAgICAgIDwvbGFiZWw+XFxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVxcXCJjaGVja2JveFxcXCI+XFxuICAgICAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICAgICAgdi1tb2RlbD1cXFwic3RvcmUuc3RhdGUuc2VsZWN0ZWRBY3Rpdml0aWVzXFxcIlxcbiAgICAgICAgICAgICAgICA6dmFsdWU9XFxcImRhdHVtLmlkXFxcIlxcbiAgICAgICAgICAgICAgICB0eXBlPVxcXCJjaGVja2JveFxcXCJcXG4gICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiY2hlY2ttYXJrXFxcIiAvPlxcbiAgICAgICAgICAgIDwvbGFiZWw+XFxuICAgICAgICAgIDwvdGg+XFxuICAgICAgICA8L3RyPlxcbiAgICAgIDwvdGJvZHk+XFxuICAgICAgPHRib2R5IHYtZWxzZT5cXG4gICAgICAgIDx0ZCB2LWlmPVxcXCJsb2FkZXJcXFwiIGNvbHNwYW49XFxcIjVcXFwiIGNsYXNzPVxcXCJ0ZXh0LWNlbnRlclxcXCI+XFxuICAgICAgICAgIDxkaXYgY29sc3Bhbj1cXFwiNVxcXCIgY2xhc3M9XFxcInNwaW5cXFwiPjwvZGl2PlxcbiAgICAgICAgPC90ZD5cXG4gICAgICAgIDx0ZCB2LWVsc2UgY29sc3Bhbj1cXFwiNVxcXCIgY2xhc3M9XFxcInRleHQtY2VudGVyXFxcIj5cXG4gICAgICAgICAge3sgbGFuZ3VhZ2UuY29tbW9uX2xhbmcuYWN0aXZpdGllc19ub3RfZm91bmQgfX1cXG4gICAgICAgIDwvdGQ+XFxuICAgICAgPC90Ym9keT5cXG4gICAgPC90YWJsZT5cXG4gIDwvZGl2PlxcbjwvdGVtcGxhdGU+XFxuXFxuPHNjcmlwdCBzZXR1cCBsYW5nPVxcXCJ0c1xcXCI+XFxuaW1wb3J0IHsgZGVmaW5lUHJvcHMgfSBmcm9tICd2dWUnO1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcXG5pbXBvcnQgeyB1c2VUb2dnbGUgfSBmcm9tICdAdnVldXNlL2NvcmUnO1xcblxcbi8vIFZ1ZXggU3RvcmVcXG5pbXBvcnQgeyB1c2VTdG9yZSB9IGZyb20gJ1N0b3JlL2FjdGl2aXRpZXMvaW5kZXgnO1xcblxcbmltcG9ydCBQcmV2aW91c2x5UHVibGlzaGVkIGZyb20gJ0NvbXBvbmVudHMvc3RhdHVzL1ByZXZpb3VzbHlQdWJsaXNoZWQudnVlJztcXG5pbXBvcnQgUHVibGlzaCBmcm9tICdDb21wb25lbnRzL2J1dHRvbnMvUHVibGlzaEJ1dHRvbi52dWUnO1xcbmltcG9ydCBVblB1Ymxpc2ggZnJvbSAnQ29tcG9uZW50cy9idXR0b25zL1VuUHVibGlzaEJ1dHRvbi52dWUnO1xcbi8vIGltcG9ydCBTaGltbWVyIGZyb20gXFxcIkNvbXBvbmVudHMvU2hpbW1lckxvYWRpbmcudnVlXFxcIjtcXG5jb25zdCBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xcbmNvbnN0IFtzZWxlY3RBbGxWYWx1ZSwgc2VsZWN0QWxsVG9nZ2xlXSA9IHVzZVRvZ2dsZSgpO1xcblxcbmRlZmluZVByb3BzKHtcXG4gIGRhdGE6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxcbiAgbG9hZGVyOiB7IHR5cGU6IEJvb2xlYW4sIHJlcXVpcmVkOiBmYWxzZSB9LFxcbn0pO1xcblxcbmNvbnN0IHN0b3JlID0gdXNlU3RvcmUoKTtcXG5cXG5mdW5jdGlvbiBmb3JtYXREYXRlKGRhdGU6IERhdGUpIHtcXG4gIHJldHVybiBtb21lbnQoZGF0ZSkuZnJvbU5vdygpO1xcbn1cXG5cXG5mdW5jdGlvbiB0b2dnbGVTZWxlY3RBbGwoXFxuICBhY3Rpdml0aWVzOiB7IFt4OiBzdHJpbmddOiB7IGlkOiBudW1iZXIgfSB9LFxcbiAgc2VsZWN0QWxsVmFsdWU6IGJvb2xlYW5cXG4pIHtcXG4gIGlmICghc2VsZWN0QWxsVmFsdWUpIHtcXG4gICAgbGV0IGlkcyA9IFtdIGFzIG51bWJlcltdO1xcbiAgICBmb3IgKGNvbnN0IGRhdHVtIGluIGFjdGl2aXRpZXMpIHtcXG4gICAgICBpZHMucHVzaChhY3Rpdml0aWVzW2RhdHVtXS5pZCk7XFxuICAgIH1cXG4gICAgc3RvcmUuZGlzcGF0Y2goJ3VwZGF0ZVNlbGVjdGVkQWN0aXZpdGllcycsIGlkcyk7XFxuICB9IGVsc2Uge1xcbiAgICBzdG9yZS5kaXNwYXRjaCgndXBkYXRlU2VsZWN0ZWRBY3Rpdml0aWVzJywgW10pO1xcbiAgfVxcbiAgc2VsZWN0QWxsVG9nZ2xlKCk7XFxufVxcblxcbi8vU29ydGluZyBieSB1cGRhdGVfYXRcXG5jb25zdCBjdXJyZW50VVJMID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XFxubGV0IHF1ZXJ5ID0gJycsXFxuICBkaXJlY3Rpb24gPSAnYXNjJztcXG5cXG5jb25zdCBzb3J0aW5nRGlyZWN0aW9uID0gKCkgPT4ge1xcbiAgcmV0dXJuIGRpcmVjdGlvbiA9PT0gJ2FzYycgPyAnZGVzY2VuZGluZycgOiAnYXNjZW5kaW5nJztcXG59O1xcblxcbmNvbnN0IHNvcnRCeVB1Ymxpc2hpbmdQcm9ncmVzcyA9ICgpID0+IHtcXG4gIGlmIChjdXJyZW50VVJMLmluY2x1ZGVzKCc/JykpIHtcXG4gICAgY29uc3QgcXVlcnlTdHJpbmcgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoLFxcbiAgICAgIHVybFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMocXVlcnlTdHJpbmcpO1xcbiAgICBxdWVyeSA9IHVybFBhcmFtcy5nZXQoJ3EnKSA/PyAnJztcXG4gICAgZGlyZWN0aW9uID0gdXJsUGFyYW1zLmdldCgnZGlyZWN0aW9uJykgPT09ICdkZXNjJyA/ICdhc2MnIDogJ2Rlc2MnO1xcbiAgfVxcblxcbiAgcmV0dXJuIGA/cT0ke3F1ZXJ5fSZvcmRlckJ5PWNvbXBsZXRlX3BlcmNlbnRhZ2UmZGlyZWN0aW9uPSR7ZGlyZWN0aW9ufWA7XFxufTtcXG5cXG5jb25zdCBzb3J0QnlEYXRlVXJsID0gKCkgPT4ge1xcbiAgaWYgKGN1cnJlbnRVUkwuaW5jbHVkZXMoJz8nKSkge1xcbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gsXFxuICAgICAgdXJsUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhxdWVyeVN0cmluZyk7XFxuICAgIHF1ZXJ5ID0gdXJsUGFyYW1zLmdldCgncScpID8/ICcnO1xcbiAgICBkaXJlY3Rpb24gPSB1cmxQYXJhbXMuZ2V0KCdkaXJlY3Rpb24nKSA9PT0gJ2Rlc2MnID8gJ2FzYycgOiAnZGVzYyc7XFxuICB9XFxuXFxuICByZXR1cm4gYD9xPSR7cXVlcnl9Jm9yZGVyQnk9dXBkYXRlZF9hdCZkaXJlY3Rpb249JHtkaXJlY3Rpb259YDtcXG59O1xcbjwvc2NyaXB0PlxcbjxzdHlsZSBzY29wZWQ+XFxuQGtleWZyYW1lcyBzcGlubmVyIHtcXG4gIDAlIHtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNTAlLCAtNTAlLCAwKSByb3RhdGUoMGRlZyk7XFxuICB9XFxuICAxMDAlIHtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNTAlLCAtNTAlLCAwKSByb3RhdGUoMzYwZGVnKTtcXG4gIH1cXG59XFxuXFxuLnNwaW46OmJlZm9yZSB7XFxuICBhbmltYXRpb246IDEuNXMgbGluZWFyIGluZmluaXRlIHNwaW5uZXI7XFxuICBhbmltYXRpb24tcGxheS1zdGF0ZTogaW5oZXJpdDtcXG4gIGJvcmRlcjogc29saWQgM3B4ICNjZmQwZDE7XFxuICBib3JkZXItYm90dG9tLWNvbG9yOiBncmV5O1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgY29udGVudDogJyc7XFxuICBoZWlnaHQ6IDIwcHg7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDUwJTtcXG4gIGxlZnQ6IDUwJTtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTUwJSwgLTUwJSwgMCk7XFxuICB3aWR0aDogMjBweDtcXG4gIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XFxufVxcbi5zcGluIHtcXG4gIGhlaWdodDogNDBweDtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgbWFyZ2luOiBhdXRvO1xcbn1cXG48L3N0eWxlPlxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIlxcbi5jcml0aWNhbC1jb250YWluZXJbZGF0YS12LTlhNjA4NDMyXSB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjZmMGZmO1xcbiAgei1pbmRleDogMTtcXG59XFxuLmNyaXRpY2FsLWNvbnRhaW5lcltkYXRhLXYtOWE2MDg0MzJdOjphZnRlciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBjb250ZW50OiAnICc7XFxuICB6LWluZGV4OiAxMDtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNhNjZlZTk7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMnB4O1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG59XFxuLmVycm9yLWRyb3Bkb3duLWNvbnRhaW5lcltkYXRhLXYtOWE2MDg0MzJdLCBcXG4ud2FybmluZy1kcm9wZG93bi1jb250YWluZXJbZGF0YS12LTlhNjA4NDMyXSwgXFxuLmNyaXRpY2FsLWRyb3Bkb3duLWNvbnRhaW5lcltkYXRhLXYtOWE2MDg0MzJdIHtcXG4gIGhlaWdodDogMHB4O1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IGFsbDtcXG4gIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogNTAwbXM7XFxufVxcbi53YXJuaW5nLWNvbnRhaW5lcltkYXRhLXYtOWE2MDg0MzJdIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHotaW5kZXg6IDE7XFxufVxcbi5lcnJvci1jb250YWluZXJbZGF0YS12LTlhNjA4NDMyXTo6YWZ0ZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgY29udGVudDogJyAnO1xcbiAgei1pbmRleDogMTA7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWNyaW1zb24tNDApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMnB4O1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG59XFxuLmVycm9yLWNvbnRhaW5lcltkYXRhLXYtOWE2MDg0MzJdIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHotaW5kZXg6IDE7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXJvc2UpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxufVxcbi53YXJuaW5nLWNvbnRhaW5lcltkYXRhLXYtOWE2MDg0MzJdOjphZnRlciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBjb250ZW50OiAnICc7XFxuICB6LWluZGV4OiAxMDtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tY2FtZWwtNDApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMnB4O1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG59XFxuLmVycm9yLWhlbHBbZGF0YS12LTlhNjA4NDMyXSB7XFxuICBmb250LXNpemU6IDEycHg7XFxuICBwYWRkaW5nLWxlZnQ6IDMwcHg7XFxuICBmb250LXN0eWxlOiBpdGFsaWM7XFxuICBmb250LXdlaWdodDogNDAwO1xcbiAgbWFyZ2luLWJvdHRvbTogMThweDtcXG4gIGJhY2tncm91bmQtY29sb3I6IG5vbmU7XFxufVxcbi5lcnJvci1kcm9wZG93bi1jb250YWluZXIgcFtkYXRhLXYtOWE2MDg0MzJdIHtcXG4gIGNvbG9yOiBibGFjaztcXG59XFxuXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvTGlzdEVsZW1lbnQudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCI7QUFxWUE7RUFDRSxrQkFBa0I7RUFDbEIseUJBQXlCO0VBQ3pCLFVBQVU7QUFDWjtBQUVBO0VBQ0Usa0JBQWtCO0VBQ2xCLFlBQVk7RUFDWixXQUFXO0VBQ1gseUJBQXlCO0VBQ3pCLFlBQVk7RUFDWixVQUFVO0VBQ1YsT0FBTztFQUNQLE1BQU07QUFDUjtBQUtFOzs7RUFBQSxXQUFzRDtFQUF0RCxnQkFBc0Q7RUFBdEQsd0JBQXNEO0VBQXRELHdEQUFzRDtFQUF0RCwwQkFBQTtBQUFzRDtBQUd4RDtFQUNFLGtCQUFrQjtFQUNsQixVQUFVO0FBQ1o7QUFFQTtFQUNFLGtCQUFrQjtFQUNsQixZQUFZO0VBQ1osV0FBVztFQUNYLGtCQUFvQjtFQUFwQiwrREFBb0I7RUFDcEIsWUFBWTtFQUNaLFVBQVU7RUFDVixPQUFPO0VBQ1AsTUFBTTtBQUNSO0FBRUE7RUFDRSxrQkFBa0I7RUFDbEIsVUFBVTtFQUVWLGtCQUFjO0VBQWQseURBQWM7QUFDaEI7QUFFQTtFQUNFLGtCQUFrQjtFQUNsQixZQUFZO0VBQ1osV0FBVztFQUNYLGtCQUFrQjtFQUFsQiw2REFBa0I7RUFDbEIsWUFBWTtFQUNaLFVBQVU7RUFDVixPQUFPO0VBQ1AsTUFBTTtBQUNSO0FBRUE7RUFDRSxlQUFlO0VBQ2Ysa0JBQWtCO0VBQ2xCLGtCQUFrQjtFQUNsQixnQkFBZ0I7RUFDaEIsbUJBQW1CO0VBQ25CLHNCQUFzQjtBQUN4QjtBQUNBO0VBQ0UsWUFBWTtBQUNkXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIjx0ZW1wbGF0ZT5cXG4gIDx0ZCBjbGFzcz1cXFwidGl0bGVcXFwiPlxcbiAgICA8c3BhbiBjbGFzcz1cXFwiZmxleFxcXCI+XFxuICAgICAgPHNwYW5cXG4gICAgICAgIGNsYXNzPVxcXCJlbGxpcHNpcyAhaW5saW5lLWJsb2NrIHctWzQwMHB4XSBvdmVyZmxvdy14LWhpZGRlbiB0ZXh0LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwIGZvbnQtbm9ybWFsXFxcIlxcbiAgICAgICAgPnt7XFxuICAgICAgICAgIGFjdGl2aXR5WydkYXRhJ11bJ3RpdGxlJ11bMF1bJ25hcnJhdGl2ZSddXFxuICAgICAgICAgICAgPyBhY3Rpdml0eVsnZGF0YSddWyd0aXRsZSddWzBdWyduYXJyYXRpdmUnXVxcbiAgICAgICAgICAgIDogbGFuZ3VhZ2UuY29tbW9uX2xhbmcubWlzc2luZy5kZWZhdWx0XFxuICAgICAgICB9fTwvc3BhblxcbiAgICAgID5cXG5cXG4gICAgICA8c3BhblxcbiAgICAgICAgdi1pZj1cXFwiT2JqZWN0LmtleXMoYWN0aXZpdHlbJ2Vycm9ycyddKS5sZW5ndGggPiAwXFxcIlxcbiAgICAgICAgY2xhc3M9XFxcIm1iLTQgbWwtNCBpbmxpbmUtZmxleCBjdXJzb3ItcG9pbnRlciBpdGVtcy1jZW50ZXIgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWNyaW1zb24tNTBcXFwiXFxuICAgICAgICBAY2xpY2s9XFxcInRvZ2dsZUVycm9yXFxcIlxcbiAgICAgID5cXG4gICAgICAgIDxzcGFuIGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTJcXFwiPlxcbiAgICAgICAgICA8c3ZnLXZ1ZSBjbGFzcz1cXFwidGV4dC1jcmltc29uLTQwXFxcIiBpY29uPVxcXCJhbGVydFxcXCIgLz5cXG4gICAgICAgICAgPHNwYW4+XFxuICAgICAgICAgICAge3sgbGFuZ3VhZ2UuY29tbW9uX2xhbmcuc2hvdyB9fSB7eyBjb3VudEVycm9ycygpIH19XFxuICAgICAgICAgICAge3sgbGFuZ3VhZ2UuYnV0dG9uX2xhbmcuaXNzdWVzIH19PC9zcGFuXFxuICAgICAgICAgID5cXG4gICAgICAgIDwvc3Bhbj5cXG5cXG4gICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgIGljb249XFxcImRyb3Bkb3duLWFycm93XFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwibWwtMSB0ZXh0LVs0cHhdIGR1cmF0aW9uLTIwMFxcXCJcXG4gICAgICAgICAgOmNsYXNzPVxcXCJ7ICdyb3RhdGUtMTgwJzogYWN0aXZlLCAnJzogIWFjdGl2ZSB9XFxcIlxcbiAgICAgICAgLz4gPC9zcGFuXFxuICAgID48L3NwYW4+XFxuXFxuICAgIDxkaXZcXG4gICAgICA6c3R5bGU9XFxcImB3aWR0aDogJHt3aWR0aCAtIDQwfXB4O2BcXFwiXFxuICAgICAgY2xhc3M9XFxcInVwbG9hZC1lcnJvci1jb250ZW50IGgtW2F1dG9dICFtYXgtaC1bYXV0b10gZHVyYXRpb24tMjAwXFxcIlxcbiAgICAgIDpjbGFzcz1cXFwieyBjbG9zZWQ6ICFhY3RpdmUgfVxcXCJcXG4gICAgPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcInB5LTRcXFwiPlxcbiAgICAgICAgPGRpdlxcbiAgICAgICAgICB2LWlmPVxcXCJPYmplY3Qua2V5cyhhY3Rpdml0eVsnZXJyb3JzJ10pLmluZGV4T2YoJ2NyaXRpY2FsJykgIT09IC0xXFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwiY3JpdGljYWwtY29udGFpbmVyIG10LTIgY3Vyc29yLXBvaW50ZXJcXFwiXFxuICAgICAgICAgIDpzdHlsZT1cXFwiYHdpZHRoOiAke3dpZHRoIC0gNDB9cHg7YFxcXCJcXG4gICAgICAgICAgQGNsaWNrPVxcXCJjcml0aWNhbEFjY29yZGlvblRvZ2dsZVxcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAgPGRpdlxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gYm9yZGVyIGJvcmRlci1ub25lIHAtMyBwYi0wLjVcXFwiXFxuICAgICAgICAgID5cXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0yXFxcIj5cXG4gICAgICAgICAgICAgIDxzdmctdnVlIGNsYXNzPVxcXCJ0ZXh0LWNyaW1zb24tNDBcXFwiIGljb249XFxcImFsZXJ0XFxcIiAvPlxcbiAgICAgICAgICAgICAgPHNwYW4+XFxuICAgICAgICAgICAgICAgIHt7IGVycm9yTGVuZ3RoKCdjcml0aWNhbCcpIH19XFxuICAgICAgICAgICAgICAgIHt7IGxhbmd1YWdlLmNvbW1vbl9sYW5nLnN0aWNreS5jb21tb24uY3JpdGljYWwgfX1cXG4gICAgICAgICAgICAgICAge3sgbGFuZ3VhZ2UuY29tbW9uX2xhbmcuc3RpY2t5LmNvbW1vbi5lcnJvcnMgfX08L3NwYW5cXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICA8L3NwYW4+XFxuXFxuICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgIGljb249XFxcImRyb3Bkb3duLWFycm93XFxcIlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcIm1sLTEgY3Vyc29yLXBvaW50ZXIgdGV4dC1bNHB4XSBkdXJhdGlvbi0yMDBcXFwiXFxuICAgICAgICAgICAgICA6Y2xhc3M9XFxcInsgJ3JvdGF0ZS0xODAnOiBzaG93Q3JpdGljYWwsICcnOiAhc2hvd0NyaXRpY2FsIH1cXFwiXFxuICAgICAgICAgICAgLz5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImVycm9yLWhlbHBcXFwiPlxcbiAgICAgICAgICAgICh7eyBsYW5ndWFnZS5jb21tb25fbGFuZy5hY3Rpdml0eV9jb250YWluc19jcml0aWNhbF9lcnJvcnMgfX0pXFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjcml0aWNhbC1kcm9wZG93bi1jb250YWluZXJcXFwiPlxcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImNyaXRpY2FsLWRyb3Bkb3duXFxcIj5cXG4gICAgICAgICAgICAgIDxkaXZcXG4gICAgICAgICAgICAgICAgdi1mb3I9XFxcIihlbGVfZXJyLCBpKSBpbiBhY3Rpdml0eVsnZXJyb3JzJ11bJ2NyaXRpY2FsJ11cXFwiXFxuICAgICAgICAgICAgICAgIDprZXk9XFxcImlcXFwiXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJwLTRcXFwiXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVxcXCJtYi0yIGZvbnQtc2VtaWJvbGQgY2FwaXRhbGl6ZVxcXCI+XFxuICAgICAgICAgICAgICAgICAge3sgaSB9fVxcbiAgICAgICAgICAgICAgICA8L3A+XFxuXFxuICAgICAgICAgICAgICAgIDxwXFxuICAgICAgICAgICAgICAgICAgdi1mb3I9XFxcIml0ZW0gaW4gT2JqZWN0LmtleXMoZWxlX2VycilcXFwiXFxuICAgICAgICAgICAgICAgICAgOmtleT1cXFwiKGl0ZW0gYXMgc3RyaW5nKVxcXCJcXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cXFwiZXJyb3ItbGlzdCBtYi0yIHRleHQtc20gZm9udC1tZWRpdW1cXFwiXFxuICAgICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgICB7eyBpdGVtLnRvU3RyaW5nKCkucmVwbGFjZSgvXy9nLCAnICcpLnJlcGxhY2UoL1xcXFwuL2csICcgPiAnKSB9fVxcbiAgICAgICAgICAgICAgICAgIDxiciAvPlxcbiAgICAgICAgICAgICAgICAgIHt7IGVsZV9lcnJbaXRlbV0gfX1cXG4gICAgICAgICAgICAgICAgPC9wPlxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgPC9kaXY+XFxuXFxuICAgICAgICA8ZGl2XFxuICAgICAgICAgIHYtaWY9XFxcIk9iamVjdC5rZXlzKGFjdGl2aXR5WydlcnJvcnMnXSkuaW5kZXhPZignZXJyb3InKSAhPT0gLTFcXFwiXFxuICAgICAgICAgIGNsYXNzPVxcXCJlcnJvci1jb250YWluZXIgbXQtMiBjdXJzb3ItcG9pbnRlclxcXCJcXG4gICAgICAgICAgOnN0eWxlPVxcXCJgd2lkdGg6ICR7d2lkdGggLSA0MH1weDtgXFxcIlxcbiAgICAgICAgICBAY2xpY2s9XFxcImVycm9yQWNjb3JkaW9uVG9nZ2xlXFxcIlxcbiAgICAgICAgPlxcbiAgICAgICAgICA8ZGl2XFxuICAgICAgICAgICAgY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBib3JkZXIgYm9yZGVyLW5vbmUgYmctcm9zZSBwLTMgcGItMC41XFxcIlxcbiAgICAgICAgICA+XFxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMlxcXCI+XFxuICAgICAgICAgICAgICA8c3ZnLXZ1ZSBjbGFzcz1cXFwidGV4dC1jcmltc29uLTQwXFxcIiBpY29uPVxcXCJhbGVydFxcXCIgLz5cXG4gICAgICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgICAgID57eyBlcnJvckxlbmd0aCgnZXJyb3InKSB9fVxcbiAgICAgICAgICAgICAgICB7eyBsYW5ndWFnZS5jb21tb25fbGFuZy5zdGlja3kuY29tbW9uLmVycm9ycyB9fTwvc3BhblxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgaWNvbj1cXFwiZHJvcGRvd24tYXJyb3dcXFwiXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwibWwtMSBjdXJzb3ItcG9pbnRlciB0ZXh0LVs0cHhdIGR1cmF0aW9uLTIwMFxcXCJcXG4gICAgICAgICAgICAgIDpjbGFzcz1cXFwieyAncm90YXRlLTE4MCc6IHNob3dFcnJvciwgJyc6ICFzaG93RXJyb3IgfVxcXCJcXG4gICAgICAgICAgICAvPlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZXJyb3ItaGVscFxcXCI+XFxuICAgICAgICAgICAgKHt7IGxhbmd1YWdlLmNvbW1vbl9sYW5nLmFjdGl2aXRpZXNfd2l0aF9lcnJvcl93aWxsX2JlX3VwbG9hZGVkIH19KVxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZXJyb3ItZHJvcGRvd24tY29udGFpbmVyXFxcIj5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJlcnJvci1kcm9wZG93blxcXCI+XFxuICAgICAgICAgICAgICA8ZGl2XFxuICAgICAgICAgICAgICAgIHYtZm9yPVxcXCIoZWxlX2VyciwgaSkgaW4gYWN0aXZpdHlbJ2Vycm9ycyddWydlcnJvciddXFxcIlxcbiAgICAgICAgICAgICAgICA6a2V5PVxcXCJpXFxcIlxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwidGV4dC1wcmltYXJ5LWJsYWNrIGJnLXJvc2UgcC00XFxcIlxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cXFwibWItMiBmb250LXNlbWlib2xkIGNhcGl0YWxpemVcXFwiPlxcbiAgICAgICAgICAgICAgICAgIHt7IGkgfX1cXG4gICAgICAgICAgICAgICAgPC9wPlxcblxcbiAgICAgICAgICAgICAgICA8cFxcbiAgICAgICAgICAgICAgICAgIHYtZm9yPVxcXCJpdGVtIGluIE9iamVjdC5rZXlzKGVsZV9lcnIpXFxcIlxcbiAgICAgICAgICAgICAgICAgIDprZXk9XFxcIihpdGVtIGFzIHN0cmluZylcXFwiXFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcImVycm9yLWxpc3QgbWItMiB0ZXh0LXNtIGZvbnQtbWVkaXVtXFxcIlxcbiAgICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgICAge3sgaXRlbS50b1N0cmluZygpLnJlcGxhY2UoL18vZywgJyAnKS5yZXBsYWNlKC9cXFxcLi9nLCAnID4gJykgfX1cXG4gICAgICAgICAgICAgICAgICA8YnIgLz5cXG4gICAgICAgICAgICAgICAgICB7eyBlbGVfZXJyW2l0ZW1dIH19XFxuICAgICAgICAgICAgICAgIDwvcD5cXG4gICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICAgPGRpdlxcbiAgICAgICAgICB2LWlmPVxcXCJPYmplY3Qua2V5cyhhY3Rpdml0eVsnZXJyb3JzJ10pLmluZGV4T2YoJ3dhcm5pbmcnKSAhPT0gLTFcXFwiXFxuICAgICAgICAgIGNsYXNzPVxcXCJ3YXJuaW5nLWNvbnRhaW5lciBteS0yIGN1cnNvci1wb2ludGVyIGJvcmRlci1ub25lIGJnLWVnZ3NoZWxsXFxcIlxcbiAgICAgICAgICA6c3R5bGU9XFxcImB3aWR0aDogJHt3aWR0aCAtIDQwfXB4O2BcXFwiXFxuICAgICAgICAgIEBjbGljaz1cXFwid2FybmluZ0FjY29yZGlvblRvZ2dsZVxcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGJnLWVnZ3NoZWxsIHAtMyBwYi0wLjVcXFwiPlxcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTJcXFwiPlxcbiAgICAgICAgICAgICAgPHN2Zy12dWUgaWNvbj1cXFwiYWxlcnRcXFwiIGNsYXNzPVxcXCJ0ZXh0LWNhbWVsLTQwXFxcIiAvPjxzcGFuPlxcbiAgICAgICAgICAgICAgICB7eyBlcnJvckxlbmd0aCgnd2FybmluZycpIH19XFxuICAgICAgICAgICAgICAgIHt7IGxhbmd1YWdlLmNvbW1vbl9sYW5nLnN0aWNreS5jb21tb24ud2FybmluZ3MgfX08L3NwYW5cXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgIGljb249XFxcImRyb3Bkb3duLWFycm93XFxcIlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcIm1sLTEgY3Vyc29yLXBvaW50ZXIgdGV4dC1bNHB4XSBkdXJhdGlvbi0yMDBcXFwiXFxuICAgICAgICAgICAgICA6Y2xhc3M9XFxcInsgJ3JvdGF0ZS0xODAnOiBzaG93V2FybmluZywgJyc6ICFzaG93V2FybmluZyB9XFxcIlxcbiAgICAgICAgICAgIC8+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJlcnJvci1oZWxwIGJnLWVnZ3NoZWxsXFxcIj5cXG4gICAgICAgICAgICAoe3sgbGFuZ3VhZ2UuY29tbW9uX2xhbmcuZmllbGRfd2l0aF93YXJuaW5nX3dpbGxfYmVfdXBsb2FkZWQgfX0pXFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ3YXJuaW5nLWRyb3Bkb3duLWNvbnRhaW5lclxcXCI+XFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwid2FybmluZy1kcm9wZG93blxcXCI+XFxuICAgICAgICAgICAgICA8ZGl2XFxuICAgICAgICAgICAgICAgIHYtZm9yPVxcXCIoZWxlX2VyciwgaSkgaW4gYWN0aXZpdHlbJ2Vycm9ycyddWyd3YXJuaW5nJ11cXFwiXFxuICAgICAgICAgICAgICAgIDprZXk9XFxcImlcXFwiXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJiZy1lZ2dzaGVsbCBwLTRcXFwiXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVxcXCJtYi0yIGZvbnQtc2VtaWJvbGQgY2FwaXRhbGl6ZVxcXCI+XFxuICAgICAgICAgICAgICAgICAge3sgaSB9fVxcbiAgICAgICAgICAgICAgICA8L3A+XFxuXFxuICAgICAgICAgICAgICAgIDxwXFxuICAgICAgICAgICAgICAgICAgdi1mb3I9XFxcIml0ZW0gaW4gT2JqZWN0LmtleXMoZWxlX2VycilcXFwiXFxuICAgICAgICAgICAgICAgICAgOmtleT1cXFwiKGl0ZW0gYXMgc3RyaW5nKVxcXCJcXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cXFwiZXJyb3ItbGlzdCBtYi0yIHRleHQtc20gZm9udC1tZWRpdW1cXFwiXFxuICAgICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgICB7eyBpdGVtLnRvU3RyaW5nKCkucmVwbGFjZSgvXy9nLCAnICcpLnJlcGxhY2UoL1xcXFwuL2csICcgPiAnKSB9fVxcbiAgICAgICAgICAgICAgICAgIDxiciAvPlxcbiAgICAgICAgICAgICAgICAgIHt7IGVsZV9lcnJbaXRlbV0gfX1cXG4gICAgICAgICAgICAgICAgPC9wPlxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+XFxuICAgICAgPCEtLSA8ZGl2IHYtZm9yPVxcXCIoZWxlX2VyciwgaSkgaW4gYWN0aXZpdHlbJ2Vycm9ycyddXFxcIiA6a2V5PVxcXCJpXFxcIj5cXG4gICAgICAgIDx1bD5cXG4gICAgICAgICAgPGxpIHYtZm9yPVxcXCIoZXJyLCBrZXksIGopIGluIGVsZV9lcnJcXFwiIDprZXk9XFxcImpcXFwiPlxcbiAgICAgICAgICAgIDxwIGNsYXNzPVxcXCJtYi0yIGZvbnQtc2VtaWJvbGQgY2FwaXRhbGl6ZVxcXCI+XFxuICAgICAgICAgICAgICB7eyBrZXkudG9TdHJpbmcoKS5yZXBsYWNlKC9fL2csICcgJykucmVwbGFjZSgvXFxcXC4vZywgJyA+ICcpIH19XFxuICAgICAgICAgICAgPC9wPlxcbiAgICAgICAgICAgIDxwXFxuICAgICAgICAgICAgICB2LWZvcj1cXFwiaXRlbSBpbiBPYmplY3QudmFsdWVzKGVycilcXFwiXFxuICAgICAgICAgICAgICA6a2V5PVxcXCIoaXRlbSBhcyBzdHJpbmcpXFxcIlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcImVycm9yLWxpc3QgbWItMlxcXCJcXG4gICAgICAgICAgICA+XFxuICAgICAgICAgICAgICB7eyBpdGVtIH19XFxuICAgICAgICAgICAgPC9wPlxcbiAgICAgICAgICA8L2xpPlxcbiAgICAgICAgPC91bD5cXG4gICAgICA8L2Rpdj4gLS0+XFxuICAgIDwvZGl2PlxcbiAgPC90ZD5cXG5cXG4gIDx0ZD5cXG4gICAgPHNwYW4gY2xhc3M9XFxcInRleHQtc20gbGVhZGluZy1yZWxheGVkXFxcIj57e1xcbiAgICAgICFhY3Rpdml0eVsnZXhpc3RlbmNlJ11cXG4gICAgICAgID8gbGFuZ3VhZ2UuY29tbW9uX2xhbmcubmV3XFxuICAgICAgICA6IGxhbmd1YWdlLmNvbW1vbl9sYW5nLmV4aXN0aW5nXFxuICAgIH19PC9zcGFuPlxcbiAgPC90ZD5cXG5cXG4gIDx0ZCBjbGFzcz1cXFwiY2hlY2stY29sdW1uXFxcIiBAY2xpY2s9XFxcIihldmVudDogRXZlbnQpID0+IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXFxcIj5cXG4gICAgPGxhYmVsIGNsYXNzPVxcXCJzci1vbmx5XFxcIiBmb3I9XFxcIlxcXCI+IHt7IGxhbmd1YWdlLmNvbW1vbl9sYW5nLnNlbGVjdCB9fSA8L2xhYmVsPlxcbiAgICA8bGFiZWxcXG4gICAgICB2LWlmPVxcXCJPYmplY3Qua2V5cyhhY3Rpdml0eVsnZXJyb3JzJ10pLmluZGV4T2YoJ2NyaXRpY2FsJykgPT09IC0xXFxcIlxcbiAgICAgIGNsYXNzPVxcXCJjaGVja2JveFxcXCJcXG4gICAgPlxcbiAgICAgIDxpbnB1dFxcbiAgICAgICAgdi1tb2RlbD1cXFwiYWN0aXZpdGllc1xcXCJcXG4gICAgICAgIHR5cGU9XFxcImNoZWNrYm94XFxcIlxcbiAgICAgICAgOnZhbHVlPVxcXCJpbmRleFxcXCJcXG4gICAgICAgIEBjbGljaz1cXFwic2VsZWN0RWxlbWVudChpbmRleClcXFwiXFxuICAgICAgLz5cXG4gICAgICA8c3BhbiBjbGFzcz1cXFwiY2hlY2ttYXJrXFxcIiAvPlxcbiAgICA8L2xhYmVsPlxcbiAgICA8bGFiZWwgdi1lbHNlIGNsYXNzPVxcXCJjaGVja2JveFxcXCI+XFxuICAgICAgPHNwYW4gY2xhc3M9XFxcImNoZWNrbWFya1xcXCIgLz5cXG4gICAgPC9sYWJlbD5cXG4gIDwvdGQ+XFxuPC90ZW1wbGF0ZT5cXG5cXG48c2NyaXB0IHNldHVwIGxhbmc9XFxcInRzXFxcIj5cXG5pbXBvcnQgeyBkZWZpbmVQcm9wcywgZGVmaW5lRW1pdHMsIHJlZiwgd2F0Y2gsIHJlYWN0aXZlIH0gZnJvbSAndnVlJztcXG5cXG5jb25zdCBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xcbmNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHMoe1xcbiAgYWN0aXZpdHk6IHtcXG4gICAgdHlwZTogT2JqZWN0LFxcbiAgICByZXF1aXJlZDogdHJ1ZSxcXG4gIH0sXFxuICBpbmRleDoge1xcbiAgICB0eXBlOiBTdHJpbmcsXFxuICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgfSxcXG4gIHdpZHRoOiB7IHR5cGU6IE51bWJlciwgcmVxdWlyZWQ6IGZhbHNlLCBkZWZhdWx0OiAwIH0sXFxuICBzZWxlY3RlZEFjdGl2aXRpZXM6IHtcXG4gICAgdHlwZTogU3RyaW5nLFxcbiAgICByZXF1aXJlZDogdHJ1ZSxcXG4gIH0sXFxufSk7XFxuXFxuY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFsnc2VsZWN0RWxlbWVudCddKTtcXG5cXG5jb25zdCBhY3RpdmUgPSByZWYoZmFsc2UpO1xcbmNvbnN0IHNob3dDcml0aWNhbCA9IHJlZihmYWxzZSk7XFxuY29uc3Qgc2hvd0Vycm9yID0gcmVmKGZhbHNlKTtcXG5jb25zdCBzaG93V2FybmluZyA9IHJlZihmYWxzZSk7XFxubGV0IGFjdGl2aXRpZXMgPSByZWFjdGl2ZShbXSk7XFxuY29uc3QgY3JpdGljYWxUb2dnbGUgPSByZWYoZmFsc2UpO1xcbmNvbnN0IGVycm9yVG9nZ2xlID0gcmVmKGZhbHNlKTtcXG5jb25zdCB3YXJuaW5nVG9nZ2xlID0gcmVmKGZhbHNlKTtcXG5cXG5mdW5jdGlvbiB0b2dnbGVFcnJvcigpIHtcXG4gIGFjdGl2ZS52YWx1ZSA9ICFhY3RpdmUudmFsdWU7XFxufVxcblxcbmNvbnN0IHNlbGVjdEVsZW1lbnQgPSAoaW5kZXgpID0+IHtcXG4gIGVtaXQoJ3NlbGVjdEVsZW1lbnQnLCBpbmRleCk7XFxufTtcXG5cXG5jb25zdCBjb3VudEVycm9ycyA9ICgpID0+IHtcXG4gIGxldCBjb3VudCA9IDA7XFxuXFxuICBmb3IgKGNvbnN0IHR5cGUgaW4gcHJvcHMuYWN0aXZpdHlbJ2Vycm9ycyddKSB7XFxuICAgIGZvciAoY29uc3QgaW5kZXggaW4gcHJvcHMuYWN0aXZpdHlbJ2Vycm9ycyddW3R5cGVdKSB7XFxuICAgICAgY291bnQgKz0gT2JqZWN0LmtleXMocHJvcHMuYWN0aXZpdHlbJ2Vycm9ycyddW3R5cGVdW2luZGV4XSkubGVuZ3RoO1xcbiAgICB9XFxuICB9XFxuXFxuICByZXR1cm4gY291bnQ7XFxufTtcXG5cXG5jb25zdCBjcml0aWNhbEFjY29yZGlvblRvZ2dsZSA9IChlOiBFdmVudCkgPT4ge1xcbiAgc2hvd0NyaXRpY2FsLnZhbHVlID0gIXNob3dDcml0aWNhbC52YWx1ZTtcXG4gIGNvbnN0IGN1cnJlbnRUYXJnZXQgPSBlLmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQ7XFxuICBjb25zdCB0YXJnZXQgPSAoXFxuICAgIGN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudCBhcyBIVE1MRWxlbWVudFxcbiAgKS5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignLmNyaXRpY2FsLWRyb3Bkb3duLWNvbnRhaW5lcicpO1xcbiAgY29uc3QgZWxIZWlnaHQgPSB0YXJnZXQ/LnF1ZXJ5U2VsZWN0b3IoJy5jcml0aWNhbC1kcm9wZG93bicpPy5jbGllbnRIZWlnaHQ7XFxuXFxuICBpZiAoY3JpdGljYWxUb2dnbGUudmFsdWUpIHtcXG4gICAgaWYgKHRhcmdldCAhPSBudWxsKSB7XFxuICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgaGVpZ2h0OiAke2VsSGVpZ2h0fXB4O2A7XFxuICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XFxuICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IGBgO1xcbiAgICAgIH0sIDEwMCk7XFxuICAgICAgY3JpdGljYWxUb2dnbGUudmFsdWUgPSBmYWxzZTtcXG4gICAgfVxcbiAgfSBlbHNlIHtcXG4gICAgaWYgKHRhcmdldCAhPSBudWxsKSB7XFxuICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgaGVpZ2h0OiAke2VsSGVpZ2h0fXB4O2A7XFxuXFxuICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XFxuICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IGBoZWlnaHQ6IGF1dG87YDtcXG4gICAgICB9LCA2MDApO1xcblxcbiAgICAgIGNyaXRpY2FsVG9nZ2xlLnZhbHVlID0gdHJ1ZTtcXG4gICAgfVxcbiAgfVxcbn07XFxuY29uc3QgZXJyb3JBY2NvcmRpb25Ub2dnbGUgPSAoZTogRXZlbnQpID0+IHtcXG4gIHNob3dFcnJvci52YWx1ZSA9ICFzaG93RXJyb3IudmFsdWU7XFxuICBjb25zdCBjdXJyZW50VGFyZ2V0ID0gZS5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xcbiAgY29uc3QgdGFyZ2V0ID0gKFxcbiAgICBjdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQgYXMgSFRNTEVsZW1lbnRcXG4gICkucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJy5lcnJvci1kcm9wZG93bi1jb250YWluZXInKTtcXG4gIGNvbnN0IGVsSGVpZ2h0ID0gdGFyZ2V0Py5xdWVyeVNlbGVjdG9yKCcuZXJyb3ItZHJvcGRvd24nKT8uY2xpZW50SGVpZ2h0O1xcbiAgaWYgKGVycm9yVG9nZ2xlLnZhbHVlKSB7XFxuICAgIGlmICh0YXJnZXQgIT0gbnVsbCkge1xcbiAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gYGhlaWdodDogJHtlbEhlaWdodH1weDtgO1xcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xcbiAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgYDtcXG4gICAgICB9LCAxMDApO1xcbiAgICAgIGVycm9yVG9nZ2xlLnZhbHVlID0gZmFsc2U7XFxuICAgIH1cXG4gIH0gZWxzZSB7XFxuICAgIGlmICh0YXJnZXQgIT0gbnVsbCkge1xcbiAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gYGhlaWdodDogJHtlbEhlaWdodH1weDtgO1xcblxcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xcbiAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgaGVpZ2h0OiBhdXRvO2A7XFxuICAgICAgfSwgNjAwKTtcXG5cXG4gICAgICBlcnJvclRvZ2dsZS52YWx1ZSA9IHRydWU7XFxuICAgIH1cXG4gIH1cXG59O1xcbmNvbnN0IGVycm9yTGVuZ3RoID0gKGN1cnJlbnRFcnJvcikgPT4ge1xcbiAgbGV0IGNvdW50ID0gMDtcXG5cXG4gIC8vIGlmIChPYmplY3Qua2V5cyhwcm9wcy5hY3Rpdml0eSkuaW5kZXhPZignZXJyb3JzJykgIT09IC0xKSB7XFxuICBPYmplY3QudmFsdWVzKHByb3BzLmFjdGl2aXR5WydlcnJvcnMnXVtjdXJyZW50RXJyb3JdKS5tYXAoKGl0ZW0pID0+IHtcXG4gICAgY291bnQgKz0gT2JqZWN0LmtleXMoaXRlbSBhcyBvYmplY3QpLmxlbmd0aDtcXG4gIH0pO1xcbiAgLy8gfVxcblxcbiAgcmV0dXJuIGNvdW50O1xcbn07XFxuY29uc3Qgd2FybmluZ0FjY29yZGlvblRvZ2dsZSA9IChlOiBFdmVudCkgPT4ge1xcbiAgc2hvd1dhcm5pbmcudmFsdWUgPSAhc2hvd1dhcm5pbmcudmFsdWU7XFxuICBjb25zdCBjdXJyZW50VGFyZ2V0ID0gZS5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xcbiAgY29uc3QgdGFyZ2V0ID0gKFxcbiAgICBjdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQgYXMgSFRNTEVsZW1lbnRcXG4gICkucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJy53YXJuaW5nLWRyb3Bkb3duLWNvbnRhaW5lcicpO1xcbiAgY29uc3QgZWxIZWlnaHQgPSB0YXJnZXQ/LnF1ZXJ5U2VsZWN0b3IoJy53YXJuaW5nLWRyb3Bkb3duJyk/LmNsaWVudEhlaWdodDtcXG4gIGlmICh3YXJuaW5nVG9nZ2xlLnZhbHVlKSB7XFxuICAgIGlmICh0YXJnZXQgIT0gbnVsbCkge1xcbiAgICAgIHRhcmdldC5zdHlsZS5jc3NUZXh0ID0gYGhlaWdodDogJHtlbEhlaWdodH1weDtgO1xcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xcbiAgICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgYDtcXG4gICAgICB9LCAxMDApO1xcbiAgICAgIHdhcm5pbmdUb2dnbGUudmFsdWUgPSBmYWxzZTtcXG4gICAgfVxcbiAgfSBlbHNlIHtcXG4gICAgaWYgKHRhcmdldCAhPSBudWxsKSB7XFxuICAgICAgdGFyZ2V0LnN0eWxlLmNzc1RleHQgPSBgaGVpZ2h0OiAke2VsSGVpZ2h0fXB4O2A7XFxuICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XFxuICAgICAgICB0YXJnZXQuc3R5bGUuY3NzVGV4dCA9IGBoZWlnaHQ6IGF1dG87YDtcXG4gICAgICB9LCAxMDApO1xcblxcbiAgICAgIHdhcm5pbmdUb2dnbGUudmFsdWUgPSB0cnVlO1xcbiAgICB9XFxuICB9XFxufTtcXG53YXRjaChcXG4gICgpID0+IHByb3BzLnNlbGVjdGVkQWN0aXZpdGllcyxcXG4gICgpID0+IHtcXG4gICAgbGV0IHNlbGVjdGVkRGF0YSA9IEpTT04ucGFyc2UocHJvcHMuc2VsZWN0ZWRBY3Rpdml0aWVzKTtcXG4gICAgaWYgKHNlbGVjdGVkRGF0YS5sZW5ndGgpIHtcXG4gICAgICBPYmplY3QuYXNzaWduKGFjdGl2aXRpZXMsIHNlbGVjdGVkRGF0YSk7XFxuICAgIH0gZWxzZSB7XFxuICAgICAgYWN0aXZpdGllcy5sZW5ndGggPSAwO1xcbiAgICB9XFxuICB9XFxuKTtcXG48L3NjcmlwdD5cXG48c3R5bGUgc2NvcGVkPlxcbi5jcml0aWNhbC1jb250YWluZXIge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y2ZjBmZjtcXG4gIHotaW5kZXg6IDE7XFxufVxcblxcbi5jcml0aWNhbC1jb250YWluZXI6OmFmdGVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGNvbnRlbnQ6ICcgJztcXG4gIHotaW5kZXg6IDEwO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2E2NmVlOTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHdpZHRoOiAycHg7XFxuICBsZWZ0OiAwO1xcbiAgdG9wOiAwO1xcbn1cXG5cXG4uZXJyb3ItZHJvcGRvd24tY29udGFpbmVyLFxcbi53YXJuaW5nLWRyb3Bkb3duLWNvbnRhaW5lcixcXG4uY3JpdGljYWwtZHJvcGRvd24tY29udGFpbmVyIHtcXG4gIEBhcHBseSBoLTAgb3ZlcmZsb3ctaGlkZGVuIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMDtcXG59XFxuXFxuLndhcm5pbmctY29udGFpbmVyIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHotaW5kZXg6IDE7XFxufVxcblxcbi5lcnJvci1jb250YWluZXI6OmFmdGVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGNvbnRlbnQ6ICcgJztcXG4gIHotaW5kZXg6IDEwO1xcbiAgQGFwcGx5IGJnLWNyaW1zb24tNDA7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMnB4O1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG59XFxuXFxuLmVycm9yLWNvbnRhaW5lciB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB6LWluZGV4OiAxO1xcblxcbiAgQGFwcGx5IGJnLXJvc2U7XFxufVxcblxcbi53YXJuaW5nLWNvbnRhaW5lcjo6YWZ0ZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgY29udGVudDogJyAnO1xcbiAgei1pbmRleDogMTA7XFxuICBAYXBwbHkgYmctY2FtZWwtNDA7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMnB4O1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG59XFxuXFxuLmVycm9yLWhlbHAge1xcbiAgZm9udC1zaXplOiAxMnB4O1xcbiAgcGFkZGluZy1sZWZ0OiAzMHB4O1xcbiAgZm9udC1zdHlsZTogaXRhbGljO1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gIG1hcmdpbi1ib3R0b206IDE4cHg7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiBub25lO1xcbn1cXG4uZXJyb3ItZHJvcGRvd24tY29udGFpbmVyIHAge1xcbiAgY29sb3I6IGJsYWNrO1xcbn1cXG48L3N0eWxlPlxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIlxcbi54bHMtZXJyb3JbZGF0YS12LTVmNTAwOGI0XSB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoI2ZmZjFmMCA2MHB4LCAjZmZmZmZmIDAlKTtcXG59XFxuXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvWGxzTGlzdC52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIjtBQXlmQTtFQUNFLDJEQUEyRDtBQUM3RFwiLFwic291cmNlc0NvbnRlbnRcIjpbXCI8dGVtcGxhdGU+XFxuICA8ZGl2IGNsYXNzPVxcXCJweS04IHB4LTEwXFxcIj5cXG4gICAgPGRpdiBjbGFzcz1cXFwiZmxleCBmbGV4LXdyYXAganVzdGlmeS1iZXR3ZWVuXFxcIj5cXG4gICAgICA8aDYgY2xhc3M9XFxcInRleHQtM3hsIGZvbnQtYm9sZCB0ZXh0LW4tNTBcXFwiPlxcbiAgICAgICAgQWRkL1VwZGF0ZSBBbGwgPHNwYW4gY2xhc3M9XFxcImNhcGl0YWxpemVcXFwiPnt7IHN0YXR1cy50ZW1wbGF0ZSB9fTwvc3Bhbj5cXG4gICAgICA8L2g2PlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImZsZXggZmxleC13cmFwIGp1c3RpZnktZW5kIGdhcC0zXFxcIj5cXG4gICAgICAgIDxUb2FzdFxcbiAgICAgICAgICB2LWlmPVxcXCJ0b2FzdFZpc2liaWxpdHlcXFwiXFxuICAgICAgICAgIGNsYXNzPVxcXCJ0b2FzdCAtYm90dG9tLTI0XFxcIlxcbiAgICAgICAgICA6bWVzc2FnZT1cXFwidG9hc3RNZXNzYWdlXFxcIlxcbiAgICAgICAgICA6dHlwZT1cXFwidG9hc3RUeXBlXFxcIlxcbiAgICAgICAgLz5cXG4gICAgICAgIDxidXR0b25cXG4gICAgICAgICAgY2xhc3M9XFxcInJvdW5kZWQgYmctbi0wIHB4LTQgcHktMyB0ZXh0LXhzIGZvbnQtYm9sZCB1cHBlcmNhc2UgdGV4dC1ibHVlY29yYWwgc2hhZG93LW1kXFxcIlxcbiAgICAgICAgICBAY2xpY2s9XFxcImNhbmNlbEltcG9ydFxcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAgPHNwYW4+PHN2Zy12dWUgY2xhc3M9XFxcInB0LTEuNSB0ZXh0LTJ4bFxcXCIgaWNvbj1cXFwiY3Jvc3NcXFwiIC8+PC9zcGFuPlxcbiAgICAgICAgICA8c3Bhbj5jYW5jZWwgdGhpcyBpbXBvcnQ8L3NwYW4+XFxuICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgIDxidXR0b25cXG4gICAgICAgICAgOmNsYXNzPVxcXCJzZWxlY3RlZEFjdGl2aXRpZXMubGVuZ3RoID09PSAwICYmICcgY3Vyc29yLW5vdC1hbGxvd2VkJ1xcXCJcXG4gICAgICAgICAgY2xhc3M9XFxcInJvdW5kZWQgYmctYmx1ZWNvcmFsIHB4LTQgcHktMyB0ZXh0LXhzIGZvbnQtYm9sZCB1cHBlcmNhc2UgdGV4dC1uLTBcXFwiXFxuICAgICAgICAgIEBjbGljaz1cXFwiYWRkQWN0aXZpdGllc1xcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAgPHN2Zy12dWUgY2xhc3M9XFxcIm1yLTIgdGV4dC1zbVxcXCIgaWNvbj1cXFwidXAtYXJyb3ctb3V0bGluZVxcXCIgLz5cXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XFxcIm1yLTJcXFwiPmFkZCA8L3NwYW4+ICh7eyBzZWxlY3RlZEFjdGl2aXRpZXMubGVuZ3RoIH19IC9cXG4gICAgICAgICAge3sgYWN0aXZpdGllc0xlbmd0aCA/PyAwIH19KVxcbiAgICAgICAgPC9idXR0b24+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gc3BhY2UteC00XFxcIj5cXG4gICAgICA8cCBjbGFzcz1cXFwibXQtNCB0ZXh0LXNtIHRleHQtbi00MFxcXCI+XFxuICAgICAgICBTZWxlY3QgZnJvbSB0aGUgbGlzdCBiZWxvdyB0byBhZGQge3sgc3RhdHVzLnRlbXBsYXRlIH19IHRvIHRoZVxcbiAgICAgICAgcHVibGlzaGVyLiBNYWtlIHlvdXIgc2VsZWN0aW9uIGFuZCBmb2xsb3cgdGhlIG9uLXNjcmVlbiBwcm9tcHRzIHRvXFxuICAgICAgICBzdWNjZXNzZnVsbHkgYWRkL3VwZGF0ZSB5b3VyIHNlbGVjdGVkIHt7IHN0YXR1cy50ZW1wbGF0ZSB9fVxcbiAgICAgICAgPGI+XFxuICAgICAgICAgIFBsZWFzZSBub3RlIHRoYXQgeW91IG11c3QgcmUtdXBsb2FkIGFueSB1bnNlbGVjdGVkXFxuICAgICAgICAgIHt7IHN0YXR1cy50ZW1wbGF0ZSB9fSwgYW5kIGlmIHRoZSBpbXBvcnQgaXMgY2FuY2VsZWQsIHlvdSB3aWxsIG5lZWQgdG9cXG4gICAgICAgICAgdXBsb2FkIHRoZW0gYWdhaW4uPC9iXFxuICAgICAgICA+XFxuICAgICAgPC9wPlxcbiAgICAgIDwhLS0gPGRpdiB2LWlmPVxcXCJnbG9iYWxFcnJvclxcXCIgY2xhc3M9XFxcInJlbGF0aXZlIG10LTRcXFwiPlxcbiAgICAgICAgPGRpdlxcbiAgICAgICAgICB2LWlmPVxcXCIhc2hvd0dMb2JhbEVycm9yXFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwiZmxleCB3LVsyNTBweF0ganVzdGlmeS1iZXR3ZWVuIHJvdW5kZWQtbC1sZyBib3JkZXIgYm9yZGVyLWNyaW1zb24tMjAgYmctY3JpbXNvbi0xMCBwLTRcXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImZsZXhcXFwiPlxcbiAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwibXItMSAtbXQtMS41IHRleHQtMnhsIHRleHQtY3JpbXNvbi01MFxcXCJcXG4gICAgICAgICAgICAgIGljb249XFxcIndhcm5pbmctZmlsbFxcXCJcXG4gICAgICAgICAgICAvPlxcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJ0ZXh0LXNtIGZvbnQtYm9sZFxcXCI+XFxuICAgICAgICAgICAgICB7eyBnbG9iYWxFcnJvci5sZW5ndGggfX0gZ2xvYmFsIGVycm9ycyBmb3VuZFxcbiAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgIDxidXR0b25cXG4gICAgICAgICAgICBjbGFzcz1cXFwiY3Vyc29yLXBvaW50ZXIgdGV4dC14cyB1cHBlcmNhc2UgdGV4dC1ibHVlY29yYWxcXFwiXFxuICAgICAgICAgICAgQGNsaWNrPVxcXCJzaG93R0xvYmFsRXJyb3IgPSB0cnVlXFxcIlxcbiAgICAgICAgICA+XFxuICAgICAgICAgICAgc2hvd1xcbiAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICAgPGRpdlxcbiAgICAgICAgICB2LWVsc2VcXG4gICAgICAgICAgY2xhc3M9XFxcImFic29sdXRlIC10b3AtNCByaWdodC0wIHotWzEwMF0gdy1bNDUwcHhdIHJvdW5kZWQtbC1sZyBiZy13aGl0ZSBwLTRcXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIDxkaXYgY2xhc3M9XFxcIm1iLTQgZmxleCBqdXN0aWZ5LWJldHdlZW5cXFwiPlxcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImZsZXhcXFwiPlxcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwidGV4dC1zbSBmb250LWJvbGRcXFwiPlxcbiAgICAgICAgICAgICAgICB7eyBnbG9iYWxFcnJvci5sZW5ndGggfX0gZ2xvYmFsIGVycm9ycyBmb3VuZFxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPC9kaXY+XFxuXFxuICAgICAgICAgICAgPGJ1dHRvblxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcImN1cnNvci1wb2ludGVyIHRleHQteHMgdXBwZXJjYXNlIHRleHQtYmx1ZWNvcmFsXFxcIlxcbiAgICAgICAgICAgICAgQGNsaWNrPVxcXCJzaG93R0xvYmFsRXJyb3IgPSBmYWxzZVxcXCJcXG4gICAgICAgICAgICA+XFxuICAgICAgICAgICAgICBoaWRlXFxuICAgICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJib3JkZXItbCBib3JkZXItY3JpbXNvbi00MCBiZy1yb3NlIHAtNFxcXCI+XFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwibXktMiBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cXFwiPlxcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXJcXFwiPlxcbiAgICAgICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJtci0xIC1tdC0xLjUgdGV4dC0yeGwgdGV4dC1jcmltc29uLTUwXFxcIlxcbiAgICAgICAgICAgICAgICAgIGljb249XFxcImFsZXJ0XFxcIlxcbiAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ0ZXh0LXNtIGZvbnQtYm9sZCBjYXBpdGFsaXplXFxcIj5cXG4gICAgICAgICAgICAgICAgICB7eyBnbG9iYWxFcnJvci5sZW5ndGggfX0gZ2xvYmFsIGVycm9yc1xcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcIm1yLTEgLW10LTEuNSBjdXJzb3ItcG9pbnRlciB0ZXh0LVs3cHhdIGR1cmF0aW9uLTIwMFxcXCJcXG4gICAgICAgICAgICAgICAgaWNvbj1cXFwiZHJvcGRvd24tYXJyb3dcXFwiXFxuICAgICAgICAgICAgICAgIDpjbGFzcz1cXFwic2hvd0dsb2JhbEVycm9yTGlzdCAmJiAnIHJvdGF0ZS0xODAnXFxcIlxcbiAgICAgICAgICAgICAgICBAY2xpY2s9XFxcInNob3dHbG9iYWxFcnJvckxpc3QgPSAhc2hvd0dsb2JhbEVycm9yTGlzdFxcXCJcXG4gICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPHVsIHYtaWY9XFxcInNob3dHbG9iYWxFcnJvckxpc3RcXFwiPlxcbiAgICAgICAgICAgICAgPGxpXFxuICAgICAgICAgICAgICAgIHYtZm9yPVxcXCJlcnJvciBpbiBnbG9iYWxFcnJvclxcXCJcXG4gICAgICAgICAgICAgICAgOmtleT1cXFwiZXJyb3JcXFwiXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJib3JkZXItYiBib3JkZXItbi0yMCBwLTQgdGV4dC1zbVxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAge3sgZXJyb3IgfX1cXG4gICAgICAgICAgICAgIDwvbGk+XFxuICAgICAgICAgICAgPC91bD5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj4gLS0+XFxuICAgIDwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJpYXRpLWxpc3QtdGFibGUgdXBsb2FkLWxpc3QtdGFibGUgbXQtNFxcXCI+XFxuICAgICAgPHRhYmxlPlxcbiAgICAgICAgPHRoZWFkPlxcbiAgICAgICAgICA8dHIgY2xhc3M9XFxcImJnLW4tMTBcXFwiPlxcbiAgICAgICAgICAgIDx0aCBpZD1cXFwidGl0bGVcXFwiIGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTFcXFwiIHNjb3BlPVxcXCJjb2xcXFwiPlxcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcImN1cnNvci1wb2ludGVyXFxcIiBAY2xpY2s9XFxcInNvcnRcXFwiPlxcbiAgICAgICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgICAgIDpjbGFzcz1cXFwic29ydE9yZGVyID09PSAnZGVzY2VuZGluZycgPyAnIHJvdGF0ZS0xODAnIDogJydcXFwiXFxuICAgICAgICAgICAgICAgICAgaWNvbj1cXFwic29ydC1pY29uXFxcIlxcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJwdC0xIHRleHQtWzVweF1cXFwiXFxuICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICA8c3Bhbj57eyBzdGF0dXMudGVtcGxhdGUgfX0gVGl0bGU8L3NwYW4+XFxuICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICA8dGggaWQ9XFxcInN0YXR1c1xcXCIgc2NvcGU9XFxcImNvbFxcXCI+XFxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiYmxvY2sgdGV4dC1sZWZ0XFxcIj5TdGF0dXM8L3NwYW4+XFxuICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICA8dGggaWQ9XFxcImNiXFxcIiBzY29wZT1cXFwiY29sXFxcIj5cXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJjdXJzb3ItcG9pbnRlclxcXCI+XFxuICAgICAgICAgICAgICAgIDxzdmctdnVlIGljb249XFxcImNoZWNrYm94XFxcIiBAY2xpY2s9XFxcInNlbGVjdEFsbEFjdGl2aXRpZXMoKVxcXCIgLz5cXG4gICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICA8L3RyPlxcbiAgICAgICAgPC90aGVhZD5cXG4gICAgICAgIDx0Ym9keT5cXG4gICAgICAgICAgPHRyIHYtaWY9XFxcIiFpbXBvcnREYXRhLmxlbmd0aFxcXCI+XFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwicC00IHRleHQtY2VudGVyXFxcIj5ObyBkYXRhIGZvdW5kIGZvciBpbXBvcnQ8L2Rpdj5cXG4gICAgICAgICAgPC90cj5cXG4gICAgICAgICAgPHRyXFxuICAgICAgICAgICAgdi1mb3I9XFxcIihhY3Rpdml0eSwgaW5kZXgpIGluIGltcG9ydERhdGFcXFwiXFxuICAgICAgICAgICAgdi1lbHNlXFxuICAgICAgICAgICAgcmVmPVxcXCJ0YWJsZVJvd1xcXCJcXG4gICAgICAgICAgICA6a2V5PVxcXCJpbmRleFxcXCJcXG4gICAgICAgICAgICA6Y2xhc3M9XFxcIntcXG4gICAgICAgICAgICAgICd1cGxvYWQtZXJyb3InOlxcbiAgICAgICAgICAgICAgICBhY3Rpdml0eSAmJlxcbiAgICAgICAgICAgICAgICBhY3Rpdml0eVsnZXJyb3JzJ10gJiZcXG4gICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoYWN0aXZpdHlbJ2Vycm9ycyddKS5sZW5ndGggPiAwLFxcbiAgICAgICAgICAgIH1cXFwiXFxuICAgICAgICAgID5cXG4gICAgICAgICAgICA8dGQgY2xhc3M9XFxcInRpdGxlXFxcIiA6Y2xhc3M9XFxcImNvdW50RXJyb3JzKGluZGV4KSA+IDAgJiYgJ3hscy1lcnJvcidcXFwiPlxcbiAgICAgICAgICAgICAgPFhsc0xpc3RFcnJvclxcbiAgICAgICAgICAgICAgICA6d2lkdGg9XFxcInRhYmxlV2lkdGhcXFwiXFxuICAgICAgICAgICAgICAgIDphY3Rpdml0eT1cXFwiYWN0aXZpdHlcXFwiXFxuICAgICAgICAgICAgICAgIDppbmRleD1cXFwiaW5kZXhcXFwiXFxuICAgICAgICAgICAgICAgIDppbXBvcnQtZGF0YT1cXFwiaW1wb3J0RGF0YVxcXCJcXG4gICAgICAgICAgICAgICAgOnN0YXR1cz1cXFwic3RhdHVzXFxcIlxcbiAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgIDx0ZCA6Y2xhc3M9XFxcImNvdW50RXJyb3JzKGluZGV4KSA+IDAgJiYgJyB4bHMtZXJyb3InXFxcIj5cXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJ0ZXh0LXNtIHRleHQtbi00MFxcXCI+e3tcXG4gICAgICAgICAgICAgICAgYWN0aXZpdHkuZXhpc3RpbmcgPyAnRXhpc3RpbmcnIDogJ05ldydcXG4gICAgICAgICAgICAgIH19PC9zcGFuPlxcbiAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgPHRkXFxuICAgICAgICAgICAgICA6Y2xhc3M9XFxcImNvdW50RXJyb3JzKGluZGV4KSA+IDAgJiYgJyB4bHMtZXJyb3InXFxcIlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcImNoZWNrLWNvbHVtblxcXCJcXG4gICAgICAgICAgICAgIEBjbGljaz1cXFwiKGV2ZW50OiBFdmVudCkgPT4gZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcXFwiXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgICAgIHYtaWY9XFxcImVycm9yTGVuZ3RoKCdjcml0aWNhbCcsIGluZGV4KSA9PT0gMFxcXCJcXG4gICAgICAgICAgICAgICAgdi1tb2RlbD1cXFwic2VsZWN0ZWRBY3Rpdml0aWVzXFxcIlxcbiAgICAgICAgICAgICAgICB0eXBlPVxcXCJjaGVja2JveFxcXCJcXG4gICAgICAgICAgICAgICAgOnZhbHVlPVxcXCJpbmRleFxcXCJcXG4gICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgICA8IS0tIDx0ZD57eyBhY3Rpdml0eVtpbmRleF0uZGF0YS50aXRsZVswXSB9fTwvdGQ+IC0tPlxcbiAgICAgICAgICA8L3RyPlxcbiAgICAgICAgPC90Ym9keT5cXG4gICAgICA8L3RhYmxlPlxcbiAgICA8L2Rpdj5cXG4gIDwvZGl2PlxcbiAgPExvYWRlclxcbiAgICB2LWlmPVxcXCJsb2FkZXJcXFwiXFxuICAgIDp0ZXh0PVxcXCJsb2FkZXJUZXh0XFxcIlxcbiAgICA6Y2xhc3M9XFxcInsgJ2FuaW1hdGUtbG9hZGVyJzogbG9hZGVyIH1cXFwiXFxuICAvPlxcbiAgPE1vZGFsXFxuICAgIDptb2RhbC1hY3RpdmU9XFxcInNob3dJZGVudGlmaWVyRXJyb3JNb2RlbCAmJiBzaG93R0xvYmFsRXJyb3JcXFwiXFxuICAgIHdpZHRoPVxcXCI1ODNcXFwiXFxuICA+XFxuICAgIDxkaXYgY2xhc3M9XFxcIm1iLTUgZmxleCBzcGFjZS14LTIuNVxcXCI+XFxuICAgICAgPHN2Zy12dWUgY2xhc3M9XFxcInRleHQtNHhsIHRleHQtY3JpbXNvbi00MFxcXCIgaWNvbj1cXFwid2FybmluZy1maWxsXFxcIiAvPlxcbiAgICAgIDxkaXY+XFxuICAgICAgICA8aDYgY2xhc3M9XFxcInRleHQtYmFzZSBmb250LWJvbGRcXFwiPkVycm9ycyBEZXRlY3RlZDwvaDY+XFxuICAgICAgICA8cCBjbGFzcz1cXFwidGV4dC1zbSB0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgICBXZSBkZXRlY3RlZCBzb21lIGVycm9ycyBpbiB0aGUgdXBsb2FkZWQgZmlsZS5cXG4gICAgICAgIDwvcD5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuXFxuICAgIDxkaXZcXG4gICAgICBjbGFzcz1cXFwibWItNiByb3VuZGVkLXNtIGJvcmRlci1jcmltc29uLTIwIGJnLXJvc2UgcC00IHRleHQtc20gdGV4dC1uLTUwXFxcIlxcbiAgICA+XFxuICAgICAgPGg2IGNsYXNzPVxcXCJtYi0yIHRleHQtc20gZm9udC1ib2xkXFxcIj5JZGVudGlmaWVyIEVycm9yczwvaDY+XFxuICAgICAgPHAgY2xhc3M9XFxcInRleHQtc20gdGV4dC1uLTQwXFxcIj5cXG4gICAgICAgIFdlIGhhdmUgZm91bmQgc29tZSBpZGVudGlmaWVyIGVycm9ycyBpbiB0aGUgaW1wb3J0ZWQgZmlsZS4gWW91IGNhbm5vdFxcbiAgICAgICAgaW1wb3J0IGRhdGEgdW50aWwgYWxsIHRoZSBpZGVudGlmaWVyIGVycm9ycyBhcmUgcmVzb2x2ZWQuXFxuICAgICAgPC9wPlxcbiAgICAgIDx1bCBjbGFzcz1cXFwibWF4LWgtWzI1MHB4XSBvdmVyZmxvdy15LXNjcm9sbFxcXCI+XFxuICAgICAgICA8bGlcXG4gICAgICAgICAgdi1mb3I9XFxcImVycm9yIGluIHByb3BzLmdsb2JhbEVycm9yXFxcIlxcbiAgICAgICAgICA6a2V5PVxcXCJlcnJvclxcXCJcXG4gICAgICAgICAgY2xhc3M9XFxcImJvcmRlci1iIGJvcmRlci1uLTIwIHAtNCB0ZXh0LXNtXFxcIlxcbiAgICAgICAgPlxcbiAgICAgICAgICB7eyBlcnJvciB9fVxcbiAgICAgICAgPC9saT5cXG4gICAgICA8L3VsPlxcbiAgICA8L2Rpdj5cXG4gICAgPHBcXG4gICAgICB2LWlmPVxcXCJlcnJvckNvdW50LmNyaXRpY2FsICsgZXJyb3JDb3VudC5lcnJvciArIGVycm9yQ291bnQud2FybmluZyA+IDBcXFwiXFxuICAgICAgY2xhc3M9XFxcInRleHQtc20gdGV4dC1uLTQwXFxcIlxcbiAgICA+XFxuICAgICAgQWRkaXRpb25hbGx5LCB0aGVyZSBhcmUge3sgZXJyb3JDb3VudC5jcml0aWNhbCB9fSBjcml0aWNhbCBlcnJvcixcXG4gICAgICB7eyBlcnJvckNvdW50LmVycm9yIH19IGVycm9ycyBhbmQge3sgZXJyb3JDb3VudC53YXJuaW5nIH19IHdhcm5pbmcgaW4gdGhlXFxuICAgICAgZmlsZVxcbiAgICA8L3A+XFxuICAgIDxkaXYgY2xhc3M9XFxcImZsZXgganVzdGlmeS1lbmQgc3BhY2UteC0zXFxcIj5cXG4gICAgICA8YnV0dG9uIGNsYXNzPVxcXCJnaG9zdC1idG5cXFwiIEBjbGljaz1cXFwiY2FuY2VsSW1wb3J0XFxcIj5DYW5jZWwgSW1wb3J0PC9idXR0b24+XFxuICAgICAgPEJ0bkNvbXBvbmVudFxcbiAgICAgICAgY2xhc3M9XFxcIlxcXCJcXG4gICAgICAgIHRleHQ9XFxcImRvd25sb2FkIGlkZW50aWZpZXIgZXJyb3JzXFxcIlxcbiAgICAgICAgdHlwZT1cXFwicHJpbWFyeVxcXCJcXG4gICAgICAgIGljb249XFxcImRvd25sb2FkXFxcIlxcbiAgICAgICAgQGNsaWNrPVxcXCJkb3dubG9hZElkZW50aWZpZXJFcnJvclxcXCJcXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIDwvTW9kYWw+XFxuICA8TW9kYWxcXG4gICAgOm1vZGFsLWFjdGl2ZT1cXFwic2hvd0NyaXRpY2FsRXJyb3JNb2RlbCAmJiAhc2hvd0lkZW50aWZpZXJFcnJvck1vZGVsXFxcIlxcbiAgICB3aWR0aD1cXFwiNTgzXFxcIlxcbiAgPlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJtYi01IGZsZXggc3BhY2UteC0yLjVcXFwiPlxcbiAgICAgIDxzdmctdnVlIGNsYXNzPVxcXCJ0ZXh0LTR4bCB0ZXh0LWNyaW1zb24tNDBcXFwiIGljb249XFxcIndhcm5pbmctZmlsbFxcXCIgLz5cXG4gICAgICA8ZGl2PlxcbiAgICAgICAgPGg2IGNsYXNzPVxcXCJ0ZXh0LWJhc2UgZm9udC1ib2xkXFxcIj5FcnJvcnMgRGV0ZWN0ZWQ8L2g2PlxcbiAgICAgICAgPHAgY2xhc3M9XFxcInRleHQtc20gdGV4dC1uLTQwXFxcIj5cXG4gICAgICAgICAgV2UgZGV0ZWN0ZWQgc29tZSBlcnJvcnMgaW4gdGhlIHVwbG9hZGVkIGZpbGUuXFxuICAgICAgICA8L3A+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgICA8ZGl2XFxuICAgICAgY2xhc3M9XFxcIm1iLTYgcm91bmRlZC1zbSBib3JkZXIgYm9yZGVyLWNyaW1zb24tMjAgYmctcm9zZSBwLTQgdGV4dC1zbSB0ZXh0LW4tNTBcXFwiXFxuICAgID5cXG4gICAgICA8ZGl2IHYtaWY9XFxcInNob3dDcml0aWNhbEVycm9yTWVzc2FnZVxcXCIgY2xhc3M9XFxcIm1iLTZcXFwiPlxcbiAgICAgICAgPGg2IGNsYXNzPVxcXCJtYi0yIHRleHQtc20gZm9udC1ib2xkXFxcIj5Dcml0aWNhbCBFcnJvcnM8L2g2PlxcbiAgICAgICAgPHAgY2xhc3M9XFxcInRleHQtc20gdGV4dC1uLTQwXFxcIj5cXG4gICAgICAgICAgU29tZSBvZiB0aGUge3sgc3RhdHVzLnRlbXBsYXRlIH19IGNvbnRhaW4gY3JpdGljYWwgZXJyb3JzIGFuZCB0aHVzLFxcbiAgICAgICAgICBjYW5ub3QgYmUgdXBsb2FkZWQgdG8gSUFUSSBQdWJsaXNoZXIuIFBsZWFzZSByZXZpZXcgdGhlIGVycm9ycyBhbmRcXG4gICAgICAgICAgZm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgcHJvdmlkZWQgaW4gdGhlIHVzZXIgbWFudWFsLlxcbiAgICAgICAgPC9wPlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwiZmxleCBqdXN0aWZ5LWVuZCBzcGFjZS14LTNcXFwiPlxcbiAgICAgIDxidXR0b24gY2xhc3M9XFxcImdob3N0LWJ0blxcXCIgQGNsaWNrPVxcXCJjYW5jZWxJbXBvcnRcXFwiPkNhbmNlbCBJbXBvcnQ8L2J1dHRvbj5cXG4gICAgICA8QnRuQ29tcG9uZW50XFxuICAgICAgICB0ZXh0PVxcXCJSZXZpZXcgZXJyb3JzXFxcIlxcbiAgICAgICAgdHlwZT1cXFwicHJpbWFyeVxcXCJcXG4gICAgICAgIEBjbGljaz1cXFwic2hvd0NyaXRpY2FsRXJyb3JNb2RlbCA9IGZhbHNlXFxcIlxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgPC9Nb2RhbD5cXG48L3RlbXBsYXRlPlxcbjxzY3JpcHQgc2V0dXAgbGFuZz1cXFwidHNcXFwiPlxcbmltcG9ydCBYbHNMaXN0RXJyb3IgZnJvbSAnQ29tcG9uZW50cy9YbHNMaXN0RXJyb3IudnVlJztcXG5pbXBvcnQgTW9kYWwgZnJvbSAnQ29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZSc7XFxuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcXG5pbXBvcnQgVG9hc3QgZnJvbSAnQ29tcG9uZW50cy9Ub2FzdE1lc3NhZ2UudnVlJztcXG5pbXBvcnQgeyBkZWZpbmVQcm9wcywgb25Nb3VudGVkLCByZWYsIG5leHRUaWNrLCBvblVubW91bnRlZCB9IGZyb20gJ3Z1ZSc7XFxuaW1wb3J0IExvYWRlciBmcm9tICdDb21wb25lbnRzL3NlY3Rpb25zL1Byb2dyZXNzTG9hZGVyLnZ1ZSc7XFxuaW1wb3J0IEJ0bkNvbXBvbmVudCBmcm9tICdDb21wb25lbnRzL0J1dHRvbkNvbXBvbmVudC52dWUnO1xcblxcbmNvbnN0IHNlbGVjdEFsbCA9IHJlZihmYWxzZSk7XFxuY29uc3Qgc29ydE9yZGVyID0gcmVmKCdhc2NlZGluZycpO1xcblxcbmNvbnN0IHRhYmxlUm93ID0gcmVmKHt9KTtcXG5jb25zdCBzaG93Q3JpdGljYWxFcnJvck1vZGVsID0gcmVmKGZhbHNlKTtcXG5jb25zdCBzaG93SWRlbnRpZmllckVycm9yTW9kZWwgPSByZWYoZmFsc2UpO1xcblxcbmNvbnN0IGxvYWRlciA9IHJlZihmYWxzZSksXFxuICBsb2FkZXJUZXh0ID0gcmVmKCdBZGRpbmcgYWN0aXZpdGllcycpO1xcbmNvbnN0IHNob3dDcml0aWNhbEVycm9yTWVzc2FnZSA9IHJlZihmYWxzZSk7XFxuY29uc3Qgc2hvd0dMb2JhbEVycm9yID0gcmVmKHRydWUpO1xcbmNvbnN0IHNlbGVjdGVkQ291bnQgPSByZWYoMCk7XFxuY29uc3QgYWN0aXZpdGllc0xlbmd0aCA9IHJlZigwKTtcXG5jb25zdCBzZWxlY3RlZEFjdGl2aXRpZXMgPSByZWY8c3RyaW5nW10+KFtdKTtcXG5jb25zdCB0YWJsZVdpZHRoID0gcmVmKHt9KTtcXG5jb25zdCB0b2FzdE1lc3NhZ2UgPSByZWYoJycpO1xcbmNvbnN0IHRvYXN0VHlwZSA9IHJlZihmYWxzZSk7XFxuY29uc3QgdG9hc3RWaXNpYmlsaXR5ID0gcmVmKGZhbHNlKTtcXG5cXG5jb25zdCBwcm9wcyA9IGRlZmluZVByb3BzKHtcXG4gIHN0YXR1czoge1xcbiAgICB0eXBlOiBPYmplY3QsXFxuICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgfSxcXG4gIC8vIE51bWJlciB3aXRoIGEgZGVmYXVsdCB2YWx1ZVxcbiAgaW1wb3J0RGF0YToge1xcbiAgICB0eXBlOiBPYmplY3QsXFxuICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgfSxcXG4gIGdsb2JhbEVycm9yOiB7XFxuICAgIHR5cGU6IE9iamVjdCxcXG4gICAgcmVxdWlyZWQ6IHRydWUsXFxuICB9LFxcbiAgZXJyb3JDb3VudDoge1xcbiAgICB0eXBlOiBPYmplY3QsXFxuICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgfSxcXG59KTtcXG5jb25zdCBnZXREaW1lbnNpb25zID0gYXN5bmMgKCkgPT4ge1xcbiAgYXdhaXQgbmV4dFRpY2soKTtcXG4gIHRhYmxlV2lkdGgudmFsdWUgPSB0YWJsZVJvdz8udmFsdWVbJzAnXT8uY2xpZW50V2lkdGg7XFxufTtcXG5cXG5jb25zdCBzb3J0ID0gKCkgPT4ge1xcbiAgc29ydE9yZGVyLnZhbHVlID09PSAnYXNjZW5kaW5nJ1xcbiAgICA/IChzb3J0T3JkZXIudmFsdWUgPSAnZGVzY2VuZGluZycpXFxuICAgIDogKHNvcnRPcmRlci52YWx1ZSA9ICdhc2NlbmRpbmcnKTtcXG5cXG4gIGxldCBzb3J0ZWREYXRhID0gcHJvcHMuaW1wb3J0RGF0YTtcXG4gIHN3aXRjaCAocHJvcHMuc3RhdHVzWyd0ZW1wbGF0ZSddKSB7XFxuICAgIGNhc2UgJ2FjdGl2aXR5JzpcXG4gICAgICBzb3J0ZWREYXRhLnNvcnQoKGEsIGIpID0+XFxuICAgICAgICBhLmRhdGEudGl0bGUgJiZcXG4gICAgICAgIGEuZGF0YS50aXRsZVswXS5uYXJyYXRpdmUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpIDwgYi5kYXRhLnRpdGxlICYmXFxuICAgICAgICBiLmRhdGEudGl0bGVbMF0ubmFycmF0aXZlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKVxcbiAgICAgICAgICA/IDFcXG4gICAgICAgICAgOiAtMVxcbiAgICAgICk7XFxuICAgICAgYnJlYWs7XFxuXFxuICAgIGNhc2UgJ3Jlc3VsdCc6XFxuICAgICAgc29ydGVkRGF0YS5zb3J0KChhLCBiKSA9PlxcbiAgICAgICAgYS5kYXRhLnRpdGxlICYmXFxuICAgICAgICBhLmRhdGEudGl0bGVbMF0ubmFycmF0aXZlWzBdWyduYXJyYXRpdmUnXS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPFxcbiAgICAgICAgICBiLmRhdGEudGl0bGUgJiZcXG4gICAgICAgIGIuZGF0YS50aXRsZVswXS5uYXJyYXRpdmVbMF1bJ25hcnJhdGl2ZSddLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKVxcbiAgICAgICAgICA/IDFcXG4gICAgICAgICAgOiAtMVxcbiAgICAgICk7XFxuXFxuICAgICAgYnJlYWs7XFxuICAgIGNhc2UgJ3BlcmlvZCc6XFxuICAgICAgc29ydGVkRGF0YS5zb3J0KChhLCBiKSA9PlxcbiAgICAgICAgYS5kYXRhLnRpdGxlICYmXFxuICAgICAgICBhLmRhdGEudGl0bGVbMF0ubmFycmF0aXZlWzBdWyduYXJyYXRpdmUnXS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPFxcbiAgICAgICAgICBiLmRhdGEudGl0bGUgJiZcXG4gICAgICAgIGIuZGF0YS50aXRsZVswXS5uYXJyYXRpdmVbMF1bJ25hcnJhdGl2ZSddLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKVxcbiAgICAgICAgICA/IDFcXG4gICAgICAgICAgOiAtMVxcbiAgICAgICk7XFxuXFxuICAgICAgYnJlYWs7XFxuICAgIGNhc2UgJ2luZGljYXRvcic6XFxuICAgICAgc29ydGVkRGF0YS5zb3J0KChhLCBiKSA9PlxcbiAgICAgICAgYS5kYXRhLnRpdGxlICYmXFxuICAgICAgICBhLmRhdGEudGl0bGVbMF0ubmFycmF0aXZlWzBdWyduYXJyYXRpdmUnXS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPFxcbiAgICAgICAgICBiLmRhdGEudGl0bGUgJiZcXG4gICAgICAgIGIuZGF0YS50aXRsZVswXS5uYXJyYXRpdmVbMF1bJ25hcnJhdGl2ZSddLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKVxcbiAgICAgICAgICA/IDFcXG4gICAgICAgICAgOiAtMVxcbiAgICAgICk7XFxuXFxuICAgICAgYnJlYWs7XFxuICAgIGRlZmF1bHQ6XFxuICAgICAgYnJlYWs7XFxuICB9XFxufTtcXG5cXG5vblVubW91bnRlZCgoKSA9PiB7XFxuICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgZ2V0RGltZW5zaW9ucyk7XFxufSk7XFxuXFxub25Nb3VudGVkKCgpID0+IHtcXG4gIGdldERpbWVuc2lvbnMoKTtcXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBnZXREaW1lbnNpb25zKTtcXG4gIGNoZWNrQ3JpdGljYWxFcnJvcigpO1xcblxcbiAgaWYgKHByb3BzLmdsb2JhbEVycm9yKSB7XFxuICAgIHNob3dJZGVudGlmaWVyRXJyb3JNb2RlbC52YWx1ZSA9IHRydWU7XFxuICB9XFxuICBhY3Rpdml0aWVzTGVuZ3RoLnZhbHVlID0gcHJvcHMuaW1wb3J0RGF0YS5sZW5ndGg7XFxuICBsb2FkZXJUZXh0LnZhbHVlID0gYEFkZGluZyAke3Byb3BzLnN0YXR1cy50ZW1wbGF0ZX1gO1xcbn0pO1xcblxcbmNvbnN0IGNhbmNlbEltcG9ydCA9ICgpID0+IHtcXG4gIHNob3dDcml0aWNhbEVycm9yTW9kZWwudmFsdWUgPSBmYWxzZTtcXG4gIHNob3dHTG9iYWxFcnJvci52YWx1ZSA9IGZhbHNlO1xcbiAgYXhpb3MuZGVsZXRlKGAvaW1wb3J0L3hsc2ApLnRoZW4oKHJlcykgPT4ge1xcbiAgICBjb25zdCByZXNwb25zZSA9IHJlcy5kYXRhO1xcbiAgICB0b2FzdFZpc2liaWxpdHkudmFsdWUgPSB0cnVlO1xcbiAgICBzZXRUaW1lb3V0KCgpID0+ICh0b2FzdFZpc2liaWxpdHkudmFsdWUgPSBmYWxzZSksIDE1MDAwKTtcXG4gICAgdG9hc3RNZXNzYWdlLnZhbHVlID0gcmVzcG9uc2UubWVzc2FnZTtcXG4gICAgdG9hc3RUeXBlLnZhbHVlID0gcmVzcG9uc2Uuc3VjY2VzcztcXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XFxuICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2ltcG9ydC94bHMnO1xcbiAgICB9LCAyMDAwKTtcXG4gIH0pO1xcbn07XFxuY29uc3QgZG93bmxvYWRJZGVudGlmaWVyRXJyb3IgPSAoKSA9PiB7XFxuICBsZXQgdGV4dDtcXG4gIGlmICh0eXBlb2YgcHJvcHMuZ2xvYmFsRXJyb3IgPT09ICdvYmplY3QnKSB7XFxuICAgIHRleHQgPSBPYmplY3QudmFsdWVzKHByb3BzLmdsb2JhbEVycm9yKS5qb2luKCdcXFxcbicpO1xcbiAgfVxcbiAgbGV0IGZpbGUgPSBuZXcgRmlsZShbJ1xcXFx1ZmVmZicgKyB0ZXh0XSwgJ2lkZW50aWZpZXItZXJyb3JzLnR4dCcsIHtcXG4gICAgdHlwZTogJ3RleHQvcGxhaW46Y2hhcnNldD1VVEYtOCcsXFxuICB9KTtcXG4gIGxldCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKTtcXG4gIGxldCBhbmNob3JUYWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XFxuICBhbmNob3JUYWcuaHJlZiA9IHVybDtcXG4gIGFuY2hvclRhZy5kb3dubG9hZCA9IGZpbGUubmFtZTtcXG4gIGFuY2hvclRhZy5jbGljaygpO1xcbiAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcXG59O1xcblxcbmNvbnN0IGNoZWNrQ3JpdGljYWxFcnJvciA9ICgpID0+IHtcXG4gIGNvbnN0IGNyaXRpY2FsQXJyeSA9XFxuICAgIHByb3BzLmltcG9ydERhdGEgJiZcXG4gICAgcHJvcHMuaW1wb3J0RGF0YS5tYXAoKGRhdGEsIGluZGV4KSA9PiB7XFxuICAgICAgcmV0dXJuIGVycm9yTGVuZ3RoKCdjcml0aWNhbCcsIGluZGV4KTtcXG4gICAgfSk7XFxuICBsZXQgdG90YWxDcmlyaWNhbEVycm9yQ291bnQgPSAwO1xcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjcml0aWNhbEFycnkubGVuZ3RoOyBpKyspIHtcXG4gICAgdG90YWxDcmlyaWNhbEVycm9yQ291bnQgKz0gY3JpdGljYWxBcnJ5W2ldO1xcbiAgfVxcbiAgaWYgKHRvdGFsQ3JpcmljYWxFcnJvckNvdW50ID4gMCkge1xcbiAgICBzaG93Q3JpdGljYWxFcnJvck1lc3NhZ2UudmFsdWUgPSB0cnVlO1xcbiAgfVxcbiAgaWYgKHRvdGFsQ3JpcmljYWxFcnJvckNvdW50ID4gMCB8fCBwcm9wcy5nbG9iYWxFcnJvcj8ubGVuZ3RoID4gMCkge1xcbiAgICBzaG93Q3JpdGljYWxFcnJvck1vZGVsLnZhbHVlID0gdHJ1ZTtcXG4gIH1cXG59O1xcbmNvbnN0IGNvdW50RXJyb3JzID0gKGFjdGl2aXR5SW5kZXgpID0+IHtcXG4gIGxldCBjb3VudCA9IDA7XFxuICBmb3IgKGNvbnN0IHR5cGUgaW4gcHJvcHMuaW1wb3J0RGF0YVthY3Rpdml0eUluZGV4XVsnZXJyb3JzJ10pIHtcXG4gICAgZm9yIChjb25zdCBpbmRleCBpbiBwcm9wcy5pbXBvcnREYXRhW2FjdGl2aXR5SW5kZXhdWydlcnJvcnMnXVt0eXBlXSkge1xcbiAgICAgIGNvdW50ICs9IE9iamVjdC5rZXlzKFxcbiAgICAgICAgcHJvcHMuaW1wb3J0RGF0YVthY3Rpdml0eUluZGV4XVsnZXJyb3JzJ11bdHlwZV1baW5kZXhdXFxuICAgICAgKS5sZW5ndGg7XFxuICAgIH1cXG4gIH1cXG5cXG4gIHJldHVybiBjb3VudDtcXG59O1xcbmNvbnN0IGFkZEFjdGl2aXRpZXMgPSAoKSA9PiB7XFxuICBpZiAoc2VsZWN0ZWRBY3Rpdml0aWVzLnZhbHVlLmxlbmd0aCA+IDApIHtcXG4gICAgbG9hZGVyLnZhbHVlID0gdHJ1ZTtcXG5cXG4gICAgYXhpb3NcXG4gICAgICAucG9zdChgL2ltcG9ydC94bHMvYWN0aXZpdHlgLCB7IGFjdGl2aXRpZXM6IHNlbGVjdGVkQWN0aXZpdGllcy52YWx1ZSB9KVxcbiAgICAgIC50aGVuKCgpID0+IHtcXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9hY3Rpdml0aWVzJztcXG4gICAgICB9KTtcXG4gIH1cXG59O1xcbmNvbnN0IGVycm9yTGVuZ3RoID0gKGVycm9yVHlwZSwgYWN0aXZpdHlJbmRleCkgPT4ge1xcbiAgbGV0IGNvdW50ID0gMDtcXG5cXG4gIGZvciAoY29uc3QgaW5kZXggaW4gcHJvcHMuaW1wb3J0RGF0YVthY3Rpdml0eUluZGV4XVsnZXJyb3JzJ11bZXJyb3JUeXBlXSkge1xcbiAgICBjb3VudCArPSBPYmplY3Qua2V5cyhcXG4gICAgICBwcm9wcy5pbXBvcnREYXRhW2FjdGl2aXR5SW5kZXhdWydlcnJvcnMnXVtlcnJvclR5cGVdW2luZGV4XVxcbiAgICApLmxlbmd0aDtcXG4gIH1cXG5cXG4gIHJldHVybiBjb3VudDtcXG59O1xcblxcbmZ1bmN0aW9uIHNlbGVjdEFsbEFjdGl2aXRpZXMoKSB7XFxuICBzZWxlY3RBbGwudmFsdWUgPSAhc2VsZWN0QWxsLnZhbHVlO1xcbiAgc2VsZWN0ZWRDb3VudC52YWx1ZSA9IDA7XFxuICBzZWxlY3RlZEFjdGl2aXRpZXMudmFsdWUubGVuZ3RoID0gMDtcXG4gIE9iamVjdC5rZXlzKHByb3BzLmltcG9ydERhdGEpLmZvckVhY2goKGFjdGl2aXR5X2lkKSA9PiB7XFxuICAgIGxldCBpbmRleCA9IHNlbGVjdGVkQWN0aXZpdGllcy52YWx1ZS5pbmRleE9mKGFjdGl2aXR5X2lkKTtcXG4gICAgaWYgKFxcbiAgICAgIE9iamVjdC5rZXlzKHByb3BzLmltcG9ydERhdGFbYWN0aXZpdHlfaWRdWydlcnJvcnMnXSkuaW5kZXhPZihcXG4gICAgICAgICdjcml0aWNhbCdcXG4gICAgICApID09PSAtMVxcbiAgICApIHtcXG4gICAgICBpZiAoc2VsZWN0QWxsLnZhbHVlKSB7XFxuICAgICAgICBzZWxlY3RlZEFjdGl2aXRpZXMudmFsdWUucHVzaChhY3Rpdml0eV9pZCk7XFxuICAgICAgICBzZWxlY3RlZENvdW50LnZhbHVlID0gc2VsZWN0ZWRDb3VudC52YWx1ZSArIDE7XFxuICAgICAgfSBlbHNlIHtcXG4gICAgICAgIHNlbGVjdGVkQWN0aXZpdGllcy52YWx1ZS5zcGxpY2UoaW5kZXgsIDEpO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfSk7XFxuICBpZiAoIXNlbGVjdEFsbC52YWx1ZSkge1xcbiAgICBzZWxlY3RlZENvdW50LnZhbHVlID0gMDtcXG4gIH1cXG59XFxuPC9zY3JpcHQ+XFxuPHN0eWxlIHNjb3BlZD5cXG4ueGxzLWVycm9yIHtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgjZmZmMWYwIDYwcHgsICNmZmZmZmYgMCUpO1xcbn1cXG48L3N0eWxlPlxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIlxcbi5tdWx0aXNlbGVjdC13cmFwcGVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHotaW5kZXg6IDU7XFxuICB3aWR0aDogNDI0cHg7XFxuICBoZWlnaHQ6IC1tb3otZml0LWNvbnRlbnQ7XFxuICBoZWlnaHQ6IGZpdC1jb250ZW50O1xcbiAgYmFja2dyb3VuZDogd2hpdGU7XFxuICBvdmVyZmxvdy15OiBhdXRvO1xcbn1cXG4ubXVsdGlzZWxlY3QtbG9va2FsaWtlIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XFxuICBib3JkZXI6IDFweCBzb2xpZCAjZDFkNWRiO1xcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xcbiAgd2lkdGg6IDE2MHB4ICFpbXBvcnRhbnQ7XFxuICBoZWlnaHQ6IDQwcHg7XFxuICBwYWRkaW5nOiAxMnB4O1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbn1cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3N1cGVyYWRtaW4vY29tcG9uZW50cy9UYWJsZUxpc3QudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCI7QUE0bENBO0VBQ0Usa0JBQWtCO0VBQ2xCLFVBQVU7RUFDVixZQUFZO0VBQ1osd0JBQW1CO0VBQW5CLG1CQUFtQjtFQUNuQixpQkFBaUI7RUFDakIsZ0JBQWdCO0FBQ2xCO0FBQ0E7RUFDRSxrQkFBa0I7RUFDbEIsbUJBQW1CO0VBQ25CLGlDQUFpQztFQUNqQyx5QkFBeUI7RUFDekIsa0JBQWtCO0VBQ2xCLHVCQUF1QjtFQUN2QixZQUFZO0VBQ1osYUFBYTtFQUNiLGVBQWU7QUFDakJcIixcInNvdXJjZXNDb250ZW50XCI6W1wiPHRlbXBsYXRlPlxcbiAgPGRpdiBjbGFzcz1cXFwiZmlsdGVycyBtYi00IGZsZXggZmxleC13cmFwIGp1c3RpZnktYmV0d2VlbiBnYXAtMlxcXCI+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+e3sgbGFuZ3VhZ2UuY29tbW9uX2xhbmcuYWN0aXZpdGllcyB9fTwvc3Bhbj5cXG4gICAgICAgICAgICAgIDwvYT5cXG4gICAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICAgIDx0aCBpZD1cXFwicHVibGlzaGVyX3R5cGVcXFwiIHNjb3BlPVxcXCJjb2xcXFwiIHN0eWxlPVxcXCJ3aWR0aDogMTczcHhcXFwiPlxcbiAgICAgICAgICAgICAgPGFcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcImN1cnNvci1wb2ludGVyIHRleHQtbi01MCB0cmFuc2l0aW9uIGR1cmF0aW9uLTUwMCBob3Zlcjp0ZXh0LXNwcmluZy01MFxcXCJcXG4gICAgICAgICAgICAgICAgOmNsYXNzPVxcXCJcXG4gICAgICAgICAgICAgICAgICBzb3J0UGFyYW1zLm9yZGVyQnkgPT09ICdwdWJsaXNoZXJfdHlwZSdcXG4gICAgICAgICAgICAgICAgICAgID8gc29ydGluZ0RpcmVjdGlvbigpXFxuICAgICAgICAgICAgICAgICAgICA6IGRlZmF1bHRTb3J0RGlyZWN0aW9uXFxuICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgQGNsaWNrPVxcXCJzb3J0QnkoJ3B1Ymxpc2hlcl90eXBlJylcXFwiXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJzb3J0aW5nLWluZGljYXRvclxcXCI+XFxuICAgICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICAgIDppY29uPVxcXCJgJHtcXG4gICAgICAgICAgICAgICAgICAgICAgc29ydFBhcmFtcy5vcmRlckJ5ID09PSAncHVibGlzaGVyX3R5cGUnXFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzb3J0aW5nRGlyZWN0aW9uKClcXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGRlZmF1bHRTb3J0RGlyZWN0aW9uXFxuICAgICAgICAgICAgICAgICAgICB9LWFycm93YFxcXCJcXG4gICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgIDxzcGFuPlB1Ymxpc2hlciBUeXBlPC9zcGFuPlxcbiAgICAgICAgICAgICAgPC9hPlxcbiAgICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgICAgPHRoIGlkPVxcXCJkYXRhX2xpY2VuY2VcXFwiIHNjb3BlPVxcXCJjb2xcXFwiIHN0eWxlPVxcXCJ3aWR0aDogMTczcHhcXFwiPlxcbiAgICAgICAgICAgICAgPGFcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcImN1cnNvci1wb2ludGVyIHRleHQtbi01MCB0cmFuc2l0aW9uIGR1cmF0aW9uLTUwMCBob3Zlcjp0ZXh0LXNwcmluZy01MFxcXCJcXG4gICAgICAgICAgICAgICAgOmNsYXNzPVxcXCJcXG4gICAgICAgICAgICAgICAgICBzb3J0UGFyYW1zLm9yZGVyQnkgPT09ICdkYXRhX2xpY2Vuc2UnXFxuICAgICAgICAgICAgICAgICAgICA/IHNvcnRpbmdEaXJlY3Rpb24oKVxcbiAgICAgICAgICAgICAgICAgICAgOiBkZWZhdWx0U29ydERpcmVjdGlvblxcbiAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgIEBjbGljaz1cXFwic29ydEJ5KCdkYXRhX2xpY2Vuc2UnKVxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInNvcnRpbmctaW5kaWNhdG9yXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgICAgICAgOmljb249XFxcImAke1xcbiAgICAgICAgICAgICAgICAgICAgICBzb3J0UGFyYW1zLm9yZGVyQnkgPT09ICdkYXRhX2xpY2Vuc2UnXFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzb3J0aW5nRGlyZWN0aW9uKClcXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGRlZmF1bHRTb3J0RGlyZWN0aW9uXFxuICAgICAgICAgICAgICAgICAgICB9LWFycm93YFxcXCJcXG4gICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgIDxzcGFuPkRhdGEgbGljZW5jZSA8L3NwYW4+XFxuICAgICAgICAgICAgICA8L2E+XFxuICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICA8dGggaWQ9XFxcInByb3h5XFxcIiBzY29wZT1cXFwiY29sXFxcIiBzdHlsZT1cXFwid2lkdGg6IDE1OHB4XFxcIj5cXG4gICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cXG4gICAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICA8L3RyPlxcbiAgICAgICAgPC90aGVhZD5cXG4gICAgICAgIDx0Ym9keT5cXG4gICAgICAgICAgPHRyIHYtaWY9XFxcIm9yZ2FuaXNhdGlvbkRhdGEuc3RhdHVzID09PSAnZmV0Y2hpbmcnXFxcIj5cXG4gICAgICAgICAgICA8dGQgY29sc3Bhbj1cXFwiNFxcXCI+e3sgbGFuZ3VhZ2UuY29tbW9uX2xhbmcuZmV0Y2hpbmdfZGF0YSB9fTwvdGQ+XFxuICAgICAgICAgIDwvdHI+XFxuICAgICAgICAgIDx0ciB2LWVsc2UtaWY9XFxcIm9yZ2FuaXNhdGlvbkRhdGEuc3RhdHVzID09PSAnZmFpbGVkIHRvIHJldHJpZXZlIGRhdGEnXFxcIj5cXG4gICAgICAgICAgICA8dGQgY29sc3Bhbj1cXFwiNFxcXCI+RmFpbGVkIHRvIHJldHJpZXZlIGRhdGEuLi48L3RkPlxcbiAgICAgICAgICA8L3RyPlxcbiAgICAgICAgICA8dHIgdi1lbHNlLWlmPVxcXCJvcmdhbmlzYXRpb25EYXRhLnN0YXR1cyA9PT0gJ2VtcHR5J1xcXCI+XFxuICAgICAgICAgICAgPHRkIGNvbHNwYW49XFxcIjRcXFwiPk5vIERhdGEgQXZhaWxhYmxlPC90ZD5cXG4gICAgICAgICAgPC90cj5cXG4gICAgICAgICAgPHRyIHYtZm9yPVxcXCJkYXRhIGluIG9yZ2FuaXNhdGlvbkRhdGEuZGF0YS5kYXRhXFxcIiB2LWVsc2UgOmtleT1cXFwiZGF0YS5pZFxcXCI+XFxuICAgICAgICAgICAgPHRkPlxcbiAgICAgICAgICAgICAgPGRpdj5cXG4gICAgICAgICAgICAgICAgPGRpdiB2LWlmPVxcXCJkYXRhLm5hbWVcXFwiIGNsYXNzPVxcXCJlbGxpcHNpcyByZWxhdGl2ZVxcXCI+XFxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcImVsbGlwc2lzIG92ZXJmbG93LWhpZGRlblxcXCI+XFxuICAgICAgICAgICAgICAgICAgICB7eyBkYXRhPy5uYW1lWzBdPy5uYXJyYXRpdmUgPz8gbGFuZ3VhZ2UuY29tbW9uX2xhbmcubWlzc2luZy5uYW1lIH19XFxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG5cXG4gICAgICAgICAgICAgICAgPGRpdiB2LWVsc2U+e3tsYW5ndWFnZS5jb21tb25fbGFuZy5taXNzaW5nLm5hbWV9fTwvZGl2PlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJncm91cCByZWxhdGl2ZVxcXCI+XFxuICAgICAgICAgICAgICAgICAgPGRpdlxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcInctZnVsbCBvdmVyZmxvdy14LWhpZGRlbiB0ZXh0LWVsbGlwc2lzIHRleHQtYmx1ZS00MFxcXCJcXG4gICAgICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgICAgICB7eyBkYXRhPy51c2VyPy5lbWFpbCB9fVxcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgICAgIDxkaXZcXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJhYnNvbHV0ZSB0b3AtZnVsbCBsZWZ0LTAgaGlkZGVuIHJvdW5kZWQgYmctZWdnc2hlbGwgcC0yIHNoYWRvdy1zbSBncm91cC1ob3ZlcjpibG9ja1xcXCJcXG4gICAgICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgICAgICB7eyBkYXRhPy51c2VyPy5lbWFpbCB9fVxcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZmxleFxcXCI+XFxuICAgICAgICAgICAgICAgICAgPHNwYW5cXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJmbGV4IHctZml0XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgOmNsYXNzPVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgcmVnaXN0cnlBcGlLZXlTdGF0dXNbZGF0YS5pZF1cXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICd0ZXh0LXNwcmluZy01MCdcXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICd0ZXh0LWNyaW1zb24tNTAnXFxuICAgICAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcInRleHQtbWQgbXQtMSBjdXJzb3ItcG9pbnRlclxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgOmljb249XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdHJ5QXBpS2V5U3RhdHVzW2RhdGEuaWRdXFxuICAgICAgICAgICAgICAgICAgICAgICAgICA/ICd0aWNrJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnY2lyY2xlLXJlZC1jcm9zcydcXG4gICAgICAgICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgPjwvc3ZnLXZ1ZT5cXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJweC0xXFxcIj4gUmVnaXN0cnkgQVBJIEtleSA8L3NwYW4+XFxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwibXgtMiBmbGV4IHctZml0XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgOmNsYXNzPVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlU3RhdHVzW2RhdGEuaWRdXFxuICAgICAgICAgICAgICAgICAgICAgICAgPyAndGV4dC1zcHJpbmctNTAnXFxuICAgICAgICAgICAgICAgICAgICAgICAgOiAndGV4dC1jcmltc29uLTUwJ1xcbiAgICAgICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJ0ZXh0LW1kIG10LTEgY3Vyc29yLXBvaW50ZXJcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIDppY29uPVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWVTdGF0dXNbZGF0YS5pZF1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3RpY2snXFxuICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdjaXJjbGUtcmVkLWNyb3NzJ1xcbiAgICAgICAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgICAgICA+PC9zdmctdnVlPlxcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInB4LTFcXFwiPiBEZWZhdWx0IFZhbHVlcyA8L3NwYW4+XFxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgPHRkIGNsYXNzPVxcXCJ0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgICAgICAgPGRpdj5cXG4gICAgICAgICAgICAgICAge3sgY291bnRyaWVzV2l0aFByZWZpeFtkYXRhWydjb3VudHJ5J11dIH19XFxuICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cXFwidGV4dC1uLTQwXFxcIj5cXG4gICAgICAgICAgICAgIDxkaXY+XFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInBiLTFcXFwiPlxcbiAgICAgICAgICAgICAgICAgIHt7IGRhdGVGb3JtYXQoZGF0YVsnY3JlYXRlZF9hdCddLCAnTU1NTSwgREQsIFlZWVknKSB9fVxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwidGV4dC14c1xcXCI+XFxuICAgICAgICAgICAgICAgICAgUHJldmlvdXNseVxcbiAgICAgICAgICAgICAgICAgIHt7XFxuICAgICAgICAgICAgICAgICAgICBkYXRhWydyZWdpc3RyYXRpb25fdHlwZSddICE9PSAnZXhpc3Rpbmdfb3JnJyA/ICdub3QnIDogJydcXG4gICAgICAgICAgICAgICAgICB9fVxcbiAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyZWQgaW4gSUFUSSBwbGF0Zm9ybVxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgPHRkIGNsYXNzPVxcXCJ0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgICAgICAgPGRpdj5cXG4gICAgICAgICAgICAgICAge3tcXG4gICAgICAgICAgICAgICAgICBkYXRhLmxhc3RfbG9nZ2VkX2luXFxuICAgICAgICAgICAgICAgICAgICA/IGRhdGVGb3JtYXQoZGF0YS5sYXN0X2xvZ2dlZF9pbiwgJ01NTU0sIERELFlZWVknKVxcbiAgICAgICAgICAgICAgICAgICAgOiBsYW5ndWFnZS5jb21tb25fbGFuZy5taXNzaW5nLm5vdF9hdmFpbGFibGVcXG4gICAgICAgICAgICAgICAgfX1cXG4gICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgPHRkIGNsYXNzPVxcXCJ0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgICAgICAgPGRpdj5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwicHgtMVxcXCI+XFxuICAgICAgICAgICAgICAgICAge3sgZGF0YS5hbGxfYWN0aXZpdGllc19jb3VudCB9fVxcbiAgICAgICAgICAgICAgICAgIHt7IGxhbmd1YWdlLmNvbW1vbl9sYW5nLmFjdGl2aXRpZXNfbm9jYXNlIH19XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ0ZXh0LXhzXFxcIj5cXG4gICAgICAgICAgICAgICAgICB7e1xcbiAgICAgICAgICAgICAgICAgICAgZGF0YVsnbGF0ZXN0X3VwZGF0ZWRfYWN0aXZpdHknXVxcbiAgICAgICAgICAgICAgICAgICAgICA/ICdMYXN0IHVwZGF0ZWQgb246JyArXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZUZvcm1hdChcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbJ2xhdGVzdF91cGRhdGVkX2FjdGl2aXR5J10udXBkYXRlZF9hdCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdNTU1NLCBERCwgWVlZWSdcXG4gICAgICAgICAgICAgICAgICAgICAgICApXFxuICAgICAgICAgICAgICAgICAgICAgIDogbGFuZ3VhZ2UuY29tbW9uX2xhbmcubWlzc2luZy5ub3RfYXZhaWxhYmxlXFxuICAgICAgICAgICAgICAgICAgfX1cXG4gICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cXFwidGV4dC1uLTQwXFxcIj5cXG4gICAgICAgICAgICAgIDxkaXY+XFxuICAgICAgICAgICAgICAgIHt7IHNob3dNYXBwZWREYXRhKCdwdWJsaXNoZXJfdHlwZScsIGRhdGEsIHB1Ymxpc2hlclR5cGVzKSB9fVxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgICA8dGQgY2xhc3M9XFxcInRleHQtbi00MFxcXCI+XFxuICAgICAgICAgICAgICA8ZGl2PlxcbiAgICAgICAgICAgICAgICB7eyBzaG93TWFwcGVkRGF0YSgnZGF0YV9saWNlbnNlJywgZGF0YSwgZGF0YUxpY2Vuc2VzKSB9fVxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgICA8dGQ+XFxuICAgICAgICAgICAgICA8ZGl2PlxcbiAgICAgICAgICAgICAgICA8QnRuQ29tcG9uZW50XFxuICAgICAgICAgICAgICAgICAgdGV4dD1cXFwicHJveHlcXFwiXFxuICAgICAgICAgICAgICAgICAgdHlwZT1cXFwib3V0bGluZVxcXCJcXG4gICAgICAgICAgICAgICAgICBpY29uPVxcXCJzbWlsZVxcXCJcXG4gICAgICAgICAgICAgICAgICBAY2xpY2s9XFxcInByb3h5VXNlcig8bnVtYmVyPmRhdGE/LnVzZXI/LmlkKVxcXCJcXG4gICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgIDwvdHI+XFxuICAgICAgICA8L3Rib2R5PlxcbiAgICAgIDwvdGFibGU+XFxuICAgIDwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJtdC02XFxcIj5cXG4gICAgICA8UGFnaW5hdGlvblxcbiAgICAgICAgdi1pZj1cXFwib3JnYW5pc2F0aW9uRGF0YS5kYXRhICYmIG9yZ2FuaXNhdGlvbkRhdGEuZGF0YS5sYXN0X3BhZ2UgPiAxXFxcIlxcbiAgICAgICAgOmRhdGE9XFxcIm9yZ2FuaXNhdGlvbkRhdGEuZGF0YVxcXCJcXG4gICAgICAgIDpyZXNldD1cXFwicmVzZXRQYWdpbmF0aW9uXFxcIlxcbiAgICAgICAgQGZldGNoLWFjdGl2aXRpZXM9XFxcIihuKSA9PiBmZXRjaE9yZ2FuaXNhdGlvbihuKVxcXCJcXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gICAgPGRpdj48L2Rpdj5cXG4gIDwvZGl2PlxcbjwvdGVtcGxhdGU+XFxuPHNjcmlwdCBsYW5nPVxcXCJ0c1xcXCI+XFxuaW1wb3J0IHtcXG4gIHJlYWN0aXZlLFxcbiAgb25Nb3VudGVkLFxcbiAgaW5qZWN0LFxcbiAgcmVmLFxcbiAgd2F0Y2gsXFxuICBjb21wdXRlZCxcXG4gIGRlZmluZUNvbXBvbmVudCxcXG59IGZyb20gJ3Z1ZSc7XFxuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcXG5pbXBvcnQgTXVsdGlTZWxlY3RXaXRoU2VhcmNoIGZyb20gJ0NvbXBvbmVudHMvTXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZ1ZSc7XFxuXFxuaW1wb3J0IGRhdGVGb3JtYXQgZnJvbSAnQ29tcG9zYWJsZS9kYXRlRm9ybWF0JztcXG5pbXBvcnQge1xcbiAga2ViYWJDYXNlVG9TbmFrZWNhc2UsXFxuICBzbmFrZUNhc2VUb1NlbnRlbmNlQ2FzZSxcXG59IGZyb20gJ0NvbXBvc2FibGUvdXRpbHMnO1xcblxcbmltcG9ydCBCdG5Db21wb25lbnQgZnJvbSAnQ29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlJztcXG5pbXBvcnQgUGFnaW5hdGlvbiBmcm9tICdDb21wb25lbnRzL1RhYmxlUGFnaW5hdGlvbi52dWUnO1xcbmltcG9ydCBNdWx0aXNlbGVjdCBmcm9tICdAdnVlZm9ybS9tdWx0aXNlbGVjdCc7XFxuaW1wb3J0IHsgd2F0Y2hJZ25vcmFibGUgfSBmcm9tICdAdnVldXNlL2NvcmUnO1xcbmltcG9ydCBEYXRlUmFuZ2VXaWRnZXQgZnJvbSAnQ29tcG9uZW50cy9EYXRlUmFuZ2VXaWRnZXQudnVlJztcXG5cXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xcbiAgbmFtZTogJ1RhYmxlTGlzdCcsXFxuICBjb21wb25lbnRzOiB7XFxuICAgIEJ0bkNvbXBvbmVudDogQnRuQ29tcG9uZW50LFxcbiAgICBQYWdpbmF0aW9uOiBQYWdpbmF0aW9uLFxcbiAgICBNdWx0aXNlbGVjdDogTXVsdGlzZWxlY3QsXFxuICAgIERhdGVSYW5nZVdpZGdldDogRGF0ZVJhbmdlV2lkZ2V0LFxcbiAgfSxcXG4gIHByb3BzOiB7XFxuICAgIGNvdW50cmllczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXFxuICAgIHNldHVwQ29tcGxldGVuZXNzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcXG4gICAgcmVnaXN0cmF0aW9uVHlwZXM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxcbiAgICBwdWJsaXNoZXJUeXBlczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXFxuICAgIGRhdGFMaWNlbnNlczogeyB0eXBlOiBPYmplY3QsIHJlcXVpcmVkOiB0cnVlIH0sXFxuICAgIG9sZGVzdERhdGVzOiB7XFxuICAgICAgdHlwZTogU3RyaW5nLFxcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxcbiAgICB9LFxcbiAgfSxcXG5cXG4gIHNldHVwKHByb3BzKSB7XFxuICAgIC8vIGluamVjdFxcbiAgICBpbnRlcmZhY2UgVG9hc3RJbnRlcmZhY2Uge1xcbiAgICAgIHZpc2liaWxpdHk6IGJvb2xlYW47XFxuICAgICAgbWVzc2FnZTogc3RyaW5nO1xcbiAgICAgIHR5cGU6IGJvb2xlYW47XFxuICAgIH1cXG4gICAgY29uc3QgdG9hc3RNZXNzYWdlID0gaW5qZWN0KCd0b2FzdERhdGEnKSBhcyBUb2FzdEludGVyZmFjZTtcXG5cXG4gICAgaW50ZXJmYWNlIExvYWRlckludGVyZmFjZSB7XFxuICAgICAgc3RhdHVzOiBib29sZWFuO1xcbiAgICAgIHRleHQ6IHN0cmluZztcXG4gICAgfVxcblxcbiAgICBjb25zdCBsYW5ndWFnZSA9IHdpbmRvd1snZ2xvYmFsTGFuZyddO1xcbiAgICBjb25zdCBsb2FkZXIgPSBpbmplY3QoJ2xvYWRlcicpIGFzIExvYWRlckludGVyZmFjZTtcXG4gICAgY29uc3QgZGF0ZURyb3Bkb3duID0gcmVmKCk7XFxuICAgIGNvbnN0IGNsZWFyRGF0ZSA9IHJlZihmYWxzZSk7XFxuICAgIGNvbnN0IGRhdGVUeXBlID0gcmVmKCdBbGwgVGltZScpO1xcblxcbiAgICAvL3R5cGVmYWNlXFxuICAgIGludGVyZmFjZSBvcmdhbml6YXRpb25JbnRlcmZhY2Uge1xcbiAgICAgIGRhdGE6IG9EYXRhSW50ZXJmYWNlO1xcbiAgICAgIHN0YXR1czogc3RyaW5nO1xcbiAgICB9XFxuXFxuICAgIGludGVyZmFjZSBvRGF0YUludGVyZmFjZSB7XFxuICAgICAgZGF0YToge1xcbiAgICAgICAgdG90YWw6IG51bWJlcjtcXG5cXG4gICAgICAgIGlkOiBudW1iZXI7XFxuICAgICAgICBuYW1lOiB7XFxuICAgICAgICAgIG5hcnJhdGl2ZTogc3RyaW5nO1xcbiAgICAgICAgfVtdO1xcbiAgICAgICAgb3JnYW5pemF0aW9uX3VybDogc3RyaW5nO1xcbiAgICAgICAgdXNlcjoge1xcbiAgICAgICAgICBlbWFpbDogc3RyaW5nO1xcbiAgICAgICAgICBpZDogbnVtYmVyO1xcbiAgICAgICAgfTtcXG4gICAgICAgIHVwZGF0ZWRfYXQ6IERhdGU7XFxuICAgICAgICBjb3VudHJ5OiBzdHJpbmc7XFxuICAgICAgICBjcmVhdGVkX2F0OiBEYXRlO1xcbiAgICAgICAgbGFzdF9sb2dnZWRfaW46IERhdGU7XFxuICAgICAgICBhbGxfYWN0aXZpdGllc19jb3VudDogbnVtYmVyO1xcbiAgICAgICAgcHVibGlzaGVyX3R5cGU6IHN0cmluZyB8IG51bWJlcjtcXG4gICAgICAgIGRhdGFfbGljZW5zZTogc3RyaW5nO1xcbiAgICAgIH1bXTtcXG4gICAgICBsYXN0X3BhZ2U6IG51bWJlcjtcXG4gICAgICBjdXJyZW50X3BhZ2U6IG51bWJlcjtcXG4gICAgfVxcblxcbiAgICBjb25zdCBnZXRDb3VudHJpZXNXaXRoUHJlZml4ID0gKCkgPT4ge1xcbiAgICAgIGNvbnN0IHJldHVyblZhbHVlRm9yQ291bnRyaWVzID0ge307XFxuICAgICAgY29uc3QgY291bnRyeUNvZGVzID0gT2JqZWN0LmtleXMocHJvcHMuY291bnRyaWVzKTtcXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50cnlDb2Rlcy5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgcmV0dXJuVmFsdWVGb3JDb3VudHJpZXNbY291bnRyeUNvZGVzW2ldXSA9IGAke2NvdW50cnlDb2Rlc1tpXX0gLSAke1xcbiAgICAgICAgICBwcm9wcy5jb3VudHJpZXNbY291bnRyeUNvZGVzW2ldXVxcbiAgICAgICAgfWA7XFxuICAgICAgfVxcbiAgICAgIHJldHVybiByZXR1cm5WYWx1ZUZvckNvdW50cmllcztcXG4gICAgfTtcXG5cXG4gICAgY29uc3QgY291bnRyaWVzV2l0aFByZWZpeCA9IGdldENvdW50cmllc1dpdGhQcmVmaXgoKTtcXG5cXG4gICAgLy8gcmVhY3Rpdml0eVxcbiAgICBsZXQgb3JnYW5pc2F0aW9uRGF0YTogb3JnYW5pemF0aW9uSW50ZXJmYWNlID0gcmVhY3RpdmUoe1xcbiAgICAgIGRhdGE6IHt9IGFzIG9EYXRhSW50ZXJmYWNlLFxcbiAgICAgIHN0YXR1czogJ2ZldGNoaW5nJyxcXG4gICAgfSk7XFxuXFxuICAgIGxldCBtdWx0aXNlbGVjdFN0eWxlID0gcmVmKHt9KTtcXG5cXG4gICAgbGV0IGZpbHRlciA9IHJlYWN0aXZlKHtcXG4gICAgICBwdWJsaXNoZXJfdHlwZTogW10sXFxuICAgICAgZGF0YV9saWNlbnNlOiBbXSxcXG4gICAgICBjb3VudHJ5OiBbXSxcXG4gICAgICBjb21wbGV0ZW5lc3M6ICcnLFxcbiAgICAgIHJlZ2lzdHJhdGlvbl90eXBlOiAnJyxcXG4gICAgICBzdGFydF9kYXRlOiAnJyxcXG4gICAgICBlbmRfZGF0ZTogJycsXFxuICAgICAgZGF0ZV90eXBlOiAnY3JlYXRlZF9hdCcsXFxuICAgICAgc2VsZWN0ZWRfZGF0ZV9maWx0ZXI6ICcnLFxcbiAgICB9KTtcXG4gICAgY29uc3QgcmVzZXRQYWdpbmF0aW9uID0gcmVmKGZhbHNlKTtcXG4gICAgY29uc3QgdG90YWxPcmdhbmlzYXRpb24gPSByZWYoMCk7XFxuICAgIGxldCByZWdpc3RyeUFwaUtleVN0YXR1czogYm9vbGVhbltdID0gcmVhY3RpdmUoW10pO1xcbiAgICBsZXQgZGVmYXVsdFZhbHVlU3RhdHVzOiBib29sZWFuW10gPSByZWFjdGl2ZShbXSk7XFxuICAgIGNvbnN0IHNob3dNdWx0aVNlbGVjdFdpdGhTZWFyY2ggPSByZWYoZmFsc2UpO1xcbiAgICBsZXQgZHJvcGRvd25SYW5nZSA9IHtcXG4gICAgICBjcmVhdGVkX2F0OiAnUmVnaXN0ZXJlZCBkYXRlIHJhbmdlJyxcXG4gICAgICBsYXN0X2xvZ2dlZF9pbjogJ0xhc3QgbG9naW4gZGF0ZSByYW5nZScsXFxuICAgIH07XFxuICAgIGNvbnN0IHNvcnRQYXJhbXMgPSByZWYoeyBvcmRlckJ5OiAnJywgZGlyZWN0aW9uOiAnJyB9KTtcXG5cXG4gICAgY29uc3QgeyBpZ25vcmVVcGRhdGVzIH0gPSB3YXRjaElnbm9yYWJsZShmaWx0ZXIsICgpID0+IHVuZGVmaW5lZCk7XFxuICAgIHdhdGNoKFxcbiAgICAgICgpID0+IHNob3dNdWx0aVNlbGVjdFdpdGhTZWFyY2gudmFsdWUsXFxuICAgICAgKHZhbHVlKSA9PiB7XFxuICAgICAgICBpZiAodmFsdWUpIHtcXG4gICAgICAgICAgcm90YXRlQ2xhc3MudmFsdWUgPSAncm90YXRlLTE4MCc7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICByb3RhdGVDbGFzcy52YWx1ZSA9ICdyb3RhdGUtMCc7XFxuICAgICAgICB9XFxuICAgICAgICBpZiAodmFsdWUpIHtcXG4gICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjbG9zZVB1Ymxpc2hlck1vZGVsKTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY2xvc2VQdWJsaXNoZXJNb2RlbCk7XFxuICAgICAgICB9XFxuICAgICAgfVxcbiAgICApO1xcblxcbiAgICBjb25zdCBjbGVhckRhdGVGaWx0ZXIgPSAoKSA9PiB7XFxuICAgICAgZmlsdGVyLnN0YXJ0X2RhdGUgPSAnJztcXG4gICAgICBmaWx0ZXIuZW5kX2RhdGUgPSAnJztcXG4gICAgICBmaWx0ZXIuc2VsZWN0ZWRfZGF0ZV9maWx0ZXIgPSAnJztcXG4gICAgICBjbGVhckRhdGUudmFsdWUgPSB0cnVlO1xcbiAgICB9O1xcblxcbiAgICBjb25zdCBjbG9zZVB1Ymxpc2hlck1vZGVsID0gKCkgPT4ge1xcbiAgICAgIHNob3dNdWx0aVNlbGVjdFdpdGhTZWFyY2gudmFsdWUgPSBmYWxzZTtcXG4gICAgfTtcXG4gICAgY29uc3QgZ2VuZXJhdGVMYWJlbCA9IChsYWJlbCkgPT4ge1xcbiAgICAgIHJldHVybiB7ICctLWxhYmVsJzogYCcke2xhYmVsfSdgIH07XFxuICAgIH07XFxuXFxuICAgIC8vbGlmZWN5Y2xlXFxuICAgIG9uTW91bnRlZCgoKSA9PiB7XFxuICAgICAgbGV0IGZpbHRlclBhcmFtcyA9IGdldEZpbHRlclBhcmFtc0Zyb21QcmV2aW91c1BhZ2UoKTtcXG5cXG4gICAgICBpZiAoZmlsdGVyUGFyYW1zKSB7XFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpbHRlclBhcmFtcy5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICBsZXQga2V5ID0ga2ViYWJDYXNlVG9TbmFrZWNhc2UoZmlsdGVyUGFyYW1zW2ldWzBdKTtcXG4gICAgICAgICAgbGV0IHZhbHVlID0gZmlsdGVyUGFyYW1zW2ldWzFdO1xcblxcbiAgICAgICAgICBpZiAoWydwdWJsaXNoZXJfdHlwZScsICdkYXRhX2xpY2Vuc2UnLCAnY291bnRyeSddLmluY2x1ZGVzKGtleSkpIHtcXG4gICAgICAgICAgICBmaWx0ZXJba2V5XS5wdXNoKHZhbHVlKTtcXG4gICAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdkYXRlX3R5cGUnKSB7XFxuICAgICAgICAgICAgZGF0ZVR5cGUudmFsdWUgPSB2YWx1ZS5zcGxpdCgnLScpLmpvaW4oJyAnKTtcXG4gICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBmaWx0ZXJba2V5XSA9IHZhbHVlO1xcbiAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgfVxcblxcbiAgICAgIGZldGNoT3JnYW5pc2F0aW9uKDEpO1xcbiAgICB9KTtcXG5cXG4gICAgY29uc3QgZ2V0RmlsdGVyUGFyYW1zRnJvbVByZXZpb3VzUGFnZSA9ICgpID0+IHtcXG4gICAgICBsZXQgcXVlcnlTdHJpbmcgPSB3aW5kb3cubG9jYXRpb24uaHJlZj8udG9TdHJpbmcoKTtcXG5cXG4gICAgICBpZiAocXVlcnlTdHJpbmcpIHtcXG4gICAgICAgIHF1ZXJ5U3RyaW5nID0gcXVlcnlTdHJpbmcuc3BsaXQoJz8nKVsxXTtcXG5cXG4gICAgICAgIGxldCBxdWVyeVBhcmFtc0luS2V5VmFsOiBvYmplY3RbXSA9IFtdO1xcbiAgICAgICAgY29uc3QgcXVlcnlQYXJhbXMgPSBxdWVyeVN0cmluZz8uc3BsaXQoJyYnKTtcXG5cXG4gICAgICAgIGlmIChxdWVyeVBhcmFtcykge1xcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHF1ZXJ5UGFyYW1zLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgbGV0IFtrZXksIHZhbHVlXSA9IHF1ZXJ5UGFyYW1zW2ldLnNwbGl0KCc9Jyk7XFxuICAgICAgICAgICAgaWYgKGtleSkge1xcbiAgICAgICAgICAgICAgcXVlcnlQYXJhbXNJbktleVZhbC5wdXNoKFtrZXksIHZhbHVlID8/ICcnXSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICB9XFxuICAgICAgICB9XFxuXFxuICAgICAgICByZXR1cm4gcXVlcnlQYXJhbXNJbktleVZhbDtcXG4gICAgICB9XFxuXFxuICAgICAgcmV0dXJuIGZhbHNlO1xcbiAgICB9O1xcblxcbiAgICAvKipcXG4gICAgICogRmV0Y2hpbmcgb3JnYW5pemF0aW9uIGxpc3RcXG4gICAgICpcXG4gICAgICovXFxuICAgIGNvbnN0IGN1cnJlbnRVUkwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcXG4gICAgY29uc3QgZmV0Y2hPcmdhbmlzYXRpb24gPSAoYWN0aXZlX3BhZ2UgPSAxKSA9PiB7XFxuICAgICAgb3JnYW5pc2F0aW9uRGF0YS5zdGF0dXMgPSAnZmV0Y2hpbmcnO1xcbiAgICAgIGxldCBxdWVyeVN0cmluZyA9ICcnO1xcbiAgICAgIGlmIChjdXJyZW50VVJMLmluY2x1ZGVzKCc/JykpIHtcXG4gICAgICAgIHF1ZXJ5U3RyaW5nID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaDtcXG4gICAgICB9XFxuXFxuICAgICAgYWN0aXZlX3BhZ2UgPSBhY3RpdmVfcGFnZSA/PyAxO1xcbiAgICAgIGxldCBlbmRwb2ludCA9IGAvbGlzdC1vcmdhbmlzYXRpb25zL3BhZ2UvJHthY3RpdmVfcGFnZX0ke3F1ZXJ5U3RyaW5nfWA7XFxuXFxuICAgICAgaWYgKHNvcnRQYXJhbXMudmFsdWUub3JkZXJCeSkge1xcbiAgICAgICAgdXJsUGFyYW1zLmFwcGVuZCgnb3JkZXJCeScsIHNvcnRQYXJhbXMudmFsdWUub3JkZXJCeSk7XFxuICAgICAgICB1cmxQYXJhbXMuYXBwZW5kKCdkaXJlY3Rpb24nLCBzb3J0UGFyYW1zLnZhbHVlLmRpcmVjdGlvbik7XFxuICAgICAgfVxcblxcbiAgICAgIGlmIChcXG4gICAgICAgIGlzRmlsdGVyQXBwbGllZC52YWx1ZSB8fFxcbiAgICAgICAgQm9vbGVhbihzb3J0UGFyYW1zLnZhbHVlLm9yZGVyQnkgJiYgc29ydFBhcmFtcy52YWx1ZS5kaXJlY3Rpb24pXFxuICAgICAgKSB7XFxuICAgICAgICBxdWVyeVN0cmluZyA9IHF1ZXJ5U3RyaW5nID8/ICcmcT0nO1xcbiAgICAgICAgZW5kcG9pbnQgPSBxdWVyeVN0cmluZyAhPT0gJycgPyBlbmRwb2ludCA6IGAke2VuZHBvaW50fWA7XFxuICAgICAgICBmb3IgKGNvbnN0IGZpbHRlcktleSBpbiBmaWx0ZXIpIHtcXG4gICAgICAgICAgaWYgKGZpbHRlcltmaWx0ZXJLZXldICYmIGZpbHRlcltmaWx0ZXJLZXldLmxlbmd0aCA+IDApIHtcXG4gICAgICAgICAgICB1cmxQYXJhbXMuYXBwZW5kKGZpbHRlcktleSwgZmlsdGVyW2ZpbHRlcktleV0pO1xcbiAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgfVxcblxcbiAgICAgIGF4aW9zXFxuICAgICAgICAuZ2V0KGVuZHBvaW50LCB7XFxuICAgICAgICAgIHBhcmFtczpcXG4gICAgICAgICAgICBpc0ZpbHRlckFwcGxpZWQudmFsdWUgfHxcXG4gICAgICAgICAgICBCb29sZWFuKHNvcnRQYXJhbXMudmFsdWUub3JkZXJCeSAmJiBzb3J0UGFyYW1zLnZhbHVlLmRpcmVjdGlvbilcXG4gICAgICAgICAgICAgID8gdXJsUGFyYW1zXFxuICAgICAgICAgICAgICA6ICcnLFxcbiAgICAgICAgfSlcXG4gICAgICAgIC50aGVuKChyZXMpID0+IHtcXG4gICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSByZXMuZGF0YTtcXG4gICAgICAgICAgdG90YWxPcmdhbmlzYXRpb24udmFsdWUgPSByZXNwb25zZS5kYXRhPy50b3RhbDtcXG5cXG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcXG4gICAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YS5kYXRhLmxlbmd0aCA9PT0gMCkge1xcbiAgICAgICAgICAgICAgb3JnYW5pc2F0aW9uRGF0YS5zdGF0dXMgPSAnZW1wdHknO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICBvcmdhbmlzYXRpb25EYXRhLnN0YXR1cyA9ICdzdWNjZXNzJztcXG4gICAgICAgICAgICAgIG9yZ2FuaXNhdGlvbkRhdGEuZGF0YSA9IHJlc3BvbnNlLmRhdGE7XFxuXFxuICAgICAgICAgICAgICByZWZyZXNoU3RhdHVzQXJyYXlzKG9yZ2FuaXNhdGlvbkRhdGEuZGF0YSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIG9yZ2FuaXNhdGlvbkRhdGEuc3RhdHVzID0gJ2ZhaWxlZCB0byByZXRyaWV2ZSBkYXRhJztcXG4gICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgICAgdXJsUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhxdWVyeVN0cmluZyk7XFxuICAgIH07XFxuXFxuLyoqXFxuICogUHJveHkgVXNlclxcbiAqL1xcbi8vIGRpc3BsYXkvaGlkZSB2YWxpZGF0b3IgbG9hZGVyXFxuY29uc3QgcHJveHlVc2VyID0gKGlkOiBudW1iZXIpID0+IHtcXG4gIGxvYWRlci5zdGF0dXMgPSB0cnVlO1xcbiAgbG9hZGVyLnRleHQgPSBsYW5ndWFnZS5idXR0b25fbGFuZy5wcm94eV9sb2dpbjtcXG4gIGNvbnN0IGVuZHBvaW50ID0gYC9wcm94eS1vcmdhbmlzYXRpb24vJHtpZH1gO1xcblxcbiAgICAgIGF4aW9zLmdldChlbmRwb2ludCkudGhlbigocmVzKSA9PiB7XFxuICAgICAgICBjb25zdCByZXNwb25zZSA9IHJlcy5kYXRhO1xcblxcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XFxuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlcGxhY2UoJy9hY3Rpdml0aWVzJyk7XFxuICAgICAgICAgIH0sIDEwMDApO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgbG9hZGVyLnN0YXR1cyA9IGZhbHNlO1xcbiAgICAgICAgICB0b2FzdE1lc3NhZ2UubWVzc2FnZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XFxuICAgICAgICAgIHRvYXN0TWVzc2FnZS50eXBlID0gcmVzcG9uc2Uuc3VjY2VzcztcXG4gICAgICAgIH1cXG4gICAgICB9KTtcXG4gICAgfTtcXG5cXG4gICAgLyoqXFxuICAgICAqIFNvcnRpbmcgQnkgdXBkYXRlIG9uXFxuICAgICAqL1xcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXFxuICAgIGxldCBxdWVyeSA9ICcnLFxcbiAgICAgIGRlZmF1bHRTb3J0RGlyZWN0aW9uID0gJ2Rlc2NlbmRpbmcnLFxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcXG4gICAgICBzb3J0RGlyZWN0aW9uID0gJ2Rlc2MnO1xcblxcbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2g7XFxuXFxuICAgIGxldCB1cmxQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHF1ZXJ5U3RyaW5nKTtcXG4gICAgbGV0IG9yZGVyVHlwZSA9IHJlZignJyk7XFxuICAgIG9yZGVyVHlwZS52YWx1ZSA9IHVybFBhcmFtcy5nZXQoJ29yZGVyQnknKSA/PyAnJztcXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xcbiAgICBsZXQgcmFuZ2UgPSAnJztcXG5cXG4gICAgY29uc3Qgc29ydGluZ0RpcmVjdGlvbiA9ICgpID0+IHtcXG4gICAgICByZXR1cm4gc29ydFBhcmFtcy52YWx1ZS5kaXJlY3Rpb24gPT09ICdhc2MnID8gJ2Rlc2NlbmRpbmcnIDogJ2FzY2VuZGluZyc7XFxuICAgIH07XFxuXFxuICAgIGNvbnN0IHNvcnRCeSA9IGFzeW5jIChvcmRlcikgPT4ge1xcbiAgICAgIHJlc2V0UGFnaW5hdGlvbi52YWx1ZSA9IHRydWU7XFxuICAgICAgc29ydFBhcmFtcy52YWx1ZS5vcmRlckJ5ID0gb3JkZXI7XFxuICAgICAgc29ydFBhcmFtcy52YWx1ZS5kaXJlY3Rpb24gPVxcbiAgICAgICAgc29ydFBhcmFtcy52YWx1ZS5kaXJlY3Rpb24gPT09ICdkZXNjJyA/ICdhc2MnIDogJ2Rlc2MnO1xcblxcbiAgICAgIGlmIChjdXJyZW50VVJMLmluY2x1ZGVzKCc/JykpIHtcXG4gICAgICAgIHF1ZXJ5ID0gdXJsUGFyYW1zLmdldCgncScpID8/ICcnO1xcbiAgICAgICAgc29ydERpcmVjdGlvbiA9IHVybFBhcmFtcy5nZXQoJ2RpcmVjdGlvbicpID09PSAnZGVzYycgPyAnYXNjJyA6ICdkZXNjJztcXG5cXG4gICAgICAgIGxldCBzdGFydERhdGUgPSB1cmxQYXJhbXMuZ2V0KCdzdGFydF9kYXRlJykgPz8gZmFsc2U7XFxuICAgICAgICBsZXQgZW5kRGF0ZSA9IHVybFBhcmFtcy5nZXQoJ2VuZF9kYXRlJykgPz8gZmFsc2U7XFxuXFxuICAgICAgICBpZiAoc3RhcnREYXRlICYmIGVuZERhdGUpIHtcXG4gICAgICAgICAgcmFuZ2UgPSBgJnN0YXJ0X2RhdGU9JHtzdGFydERhdGV9JmVuZF9kYXRlPSR7ZW5kRGF0ZX1gO1xcbiAgICAgICAgfVxcbiAgICAgIH1cXG5cXG4gICAgICBhd2FpdCBmZXRjaE9yZ2FuaXNhdGlvbigxKTtcXG4gICAgICByZXNldFBhZ2luYXRpb24udmFsdWUgPSBmYWxzZTtcXG4gICAgfTtcXG5cXG4gICAgd2F0Y2goXFxuICAgICAgKCkgPT4gW1xcbiAgICAgICAgZmlsdGVyLmNvdW50cnksXFxuICAgICAgICBmaWx0ZXIuY29tcGxldGVuZXNzLFxcbiAgICAgICAgZmlsdGVyLnJlZ2lzdHJhdGlvbl90eXBlLFxcbiAgICAgICAgZmlsdGVyLnB1Ymxpc2hlcl90eXBlLFxcbiAgICAgICAgZmlsdGVyLmRhdGFfbGljZW5zZSxcXG4gICAgICAgIGZpbHRlci5zdGFydF9kYXRlLFxcbiAgICAgICAgZmlsdGVyLmVuZF9kYXRlLFxcbiAgICAgICAgZmlsdGVyLmRhdGVfdHlwZSxcXG4gICAgICBdLFxcbiAgICAgICgpID0+IHtcXG4gICAgICAgIGZldGNoT3JnYW5pc2F0aW9uKCk7XFxuICAgICAgfSxcXG4gICAgICB7IGRlZXA6IHRydWUgfVxcbiAgICApO1xcblxcbiAgICBjb25zdCByZXNldEFsbEZpbHRlcnMgPSAoKSA9PiB7XFxuICAgICAgaWdub3JlVXBkYXRlcygoKSA9PiB7XFxuICAgICAgICBmaWx0ZXIuY291bnRyeSA9IFtdO1xcbiAgICAgICAgZmlsdGVyLnB1Ymxpc2hlcl90eXBlID0gW107XFxuICAgICAgICBmaWx0ZXIuZGF0YV9saWNlbnNlID0gW107XFxuICAgICAgICBmaWx0ZXIuY29tcGxldGVuZXNzID0gJyc7XFxuICAgICAgICBmaWx0ZXIucmVnaXN0cmF0aW9uX3R5cGUgPSAnJztcXG4gICAgICAgIGZpbHRlci5zdGFydF9kYXRlID0gJyc7XFxuICAgICAgICBmaWx0ZXIuZW5kX2RhdGUgPSAnJztcXG4gICAgICAgIGZpbHRlci5kYXRlX3R5cGUgPSAnY3JlYXRlZF9hdCc7XFxuICAgICAgICBmaWx0ZXIuc2VsZWN0ZWRfZGF0ZV9maWx0ZXIgPSAnJztcXG4gICAgICAgIGNsZWFyRGF0ZS52YWx1ZSA9IHRydWU7XFxuICAgICAgfSk7XFxuICAgIH07XFxuXFxuICAgIGNvbnN0IGlzRmlsdGVyQXBwbGllZCA9IGNvbXB1dGVkKCgpID0+IHtcXG4gICAgICByZXR1cm4gKFxcbiAgICAgICAgZmlsdGVyLmNvdW50cnkubGVuZ3RoICtcXG4gICAgICAgICAgZmlsdGVyLnB1Ymxpc2hlcl90eXBlLmxlbmd0aCArXFxuICAgICAgICAgIGZpbHRlci5kYXRhX2xpY2Vuc2UubGVuZ3RoICE9XFxuICAgICAgICAgIDAgfHxcXG4gICAgICAgIGZpbHRlci5jb21wbGV0ZW5lc3MgIT09ICcnIHx8XFxuICAgICAgICBmaWx0ZXIucmVnaXN0cmF0aW9uX3R5cGUgIT09ICcnIHx8XFxuICAgICAgICAoZmlsdGVyLnN0YXJ0X2RhdGUgIT09ICcnICYmIGZpbHRlci5lbmRfZGF0ZSAhPT0gJycpXFxuICAgICAgKTtcXG4gICAgfSk7XFxuXFxuICAgIGNvbnN0IHJlZnJlc2hTdGF0dXNBcnJheXMgPSAob3JnRGF0YSkgPT4ge1xcbiAgICAgIGZvciAobGV0IG9yZ0RhdHVtIG9mIG9yZ0RhdGEuZGF0YSkge1xcbiAgICAgICAgcmVnaXN0cnlBcGlLZXlTdGF0dXNbb3JnRGF0dW0uaWRdID1cXG4gICAgICAgICAgb3JnRGF0dW0/LnNldHRpbmdzPy5wdWJsaXNoaW5nX2luZm8/LnRva2VuX3ZlcmlmaWNhdGlvbiA/PyBmYWxzZTtcXG4gICAgICAgIGRlZmF1bHRWYWx1ZVN0YXR1c1tvcmdEYXR1bS5pZF0gPSBjaGVja0lmRGVmYXVsdFZhbHVlc0FyZVZhbGlkKFxcbiAgICAgICAgICBvcmdEYXR1bSA/IG9yZ0RhdHVtLnNldHRpbmdzIDogZmFsc2VcXG4gICAgICAgICk7XFxuICAgICAgfVxcbiAgICB9O1xcblxcbiAgICBjb25zdCBjaGVja0lmRGVmYXVsdFZhbHVlc0FyZVZhbGlkID0gKHNldHRpbmdzKSA9PiB7XFxuICAgICAgaWYgKHNldHRpbmdzKSB7XFxuICAgICAgICBsZXQgZGVmYXVsdFZhbHVlcyA9IHNldHRpbmdzLmRlZmF1bHRfdmFsdWVzO1xcbiAgICAgICAgbGV0IGFjdGl2aXR5RGVmYXVsdFZhbHVlcyA9IHNldHRpbmdzLmFjdGl2aXR5X2RlZmF1bHRfdmFsdWVzO1xcbiAgICAgICAgcmV0dXJuICEhKFxcbiAgICAgICAgICAoZGVmYXVsdFZhbHVlcz8uZGVmYXVsdF9jdXJyZW5jeSA/PyBmYWxzZSkgJiZcXG4gICAgICAgICAgKGRlZmF1bHRWYWx1ZXM/LmRlZmF1bHRfbGFuZ3VhZ2UgPz8gZmFsc2UpICYmXFxuICAgICAgICAgIChhY3Rpdml0eURlZmF1bHRWYWx1ZXM/LmhpZXJhcmNoeSA/PyBmYWxzZSkgJiZcXG4gICAgICAgICAgKGFjdGl2aXR5RGVmYXVsdFZhbHVlcz8uYnVkZ2V0X25vdF9wcm92aWRlZCA/PyBmYWxzZSkgJiZcXG4gICAgICAgICAgKGFjdGl2aXR5RGVmYXVsdFZhbHVlcz8uaHVtYW5pdGFyaWFuICE9IG51bGwgfHxcXG4gICAgICAgICAgICBhY3Rpdml0eURlZmF1bHRWYWx1ZXM/Lmh1bWFuaXRhcmlhbiAhPSAnJyB8fFxcbiAgICAgICAgICAgIGFjdGl2aXR5RGVmYXVsdFZhbHVlcz8uaHVtYW5pdGFyaWFuICE9IGZhbHNlKVxcbiAgICAgICAgKTtcXG4gICAgICB9XFxuXFxuICAgICAgcmV0dXJuIGZhbHNlO1xcbiAgICB9O1xcblxcbiAgICBjb25zdCBzZXREYXRlUmFuZ2VEYXRlID0gKHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgc2VsZWN0ZWREYXRlRmlsdGVyID0gJycpID0+IHtcXG4gICAgICBmaWx0ZXIuc3RhcnRfZGF0ZSA9IHN0YXJ0RGF0ZTtcXG4gICAgICBmaWx0ZXIuZW5kX2RhdGUgPSBlbmREYXRlO1xcbiAgICAgIGZpbHRlci5zZWxlY3RlZF9kYXRlX2ZpbHRlciA9IHNlbGVjdGVkRGF0ZUZpbHRlcjtcXG4gICAgfTtcXG5cXG4gICAgY29uc3Qgc2V0RGF0ZVR5cGUgPSAoZGF0ZVR5cGUpID0+IHtcXG4gICAgICBmaWx0ZXIuZGF0ZV90eXBlID0gZGF0ZVR5cGU7XFxuICAgIH07XFxuXFxuICAgIGNvbnN0IHJvdGF0ZUNsYXNzID0gcmVmKCcnKTtcXG5cXG4gICAgY29uc3QgdG9nZ2xlU2hvd011bHRpU2VsZWN0ID0gKGV2ZW50KSA9PiB7XFxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XFxuICAgICAgY29uc3QgcmVjdCA9IGV2ZW50LnRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcXG4gICAgICBtdWx0aXNlbGVjdFN0eWxlLnZhbHVlID0ge1xcbiAgICAgICAgdG9wOiBOdW1iZXIocmVjdC50b3ApIDwgMTAwID8gMjEwICsgJ3B4JyA6IE51bWJlcihyZWN0LnRvcCkgKyA1MCArICdweCcsXFxuICAgICAgICBsZWZ0OiBOdW1iZXIocmVjdC5sZWZ0KSArICdweCcsXFxuICAgICAgfTtcXG4gICAgICBzaG93TXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZhbHVlID0gIXNob3dNdWx0aVNlbGVjdFdpdGhTZWFyY2gudmFsdWU7XFxuICAgIH07XFxuXFxuICAgIGNvbnN0IHNldFNlbGVjdGVkUHVibGlzaGVyID0gKHB1Ymxpc2hlclR5cGVzKSA9PiB7XFxuICAgICAgZmlsdGVyLnB1Ymxpc2hlcl90eXBlID0gcHVibGlzaGVyVHlwZXM7XFxuICAgIH07XFxuXFxuICAgIC8qXFxuICAgICAqIEZvciBtYXBwaW5nIGNvdW50cnksIHB1Ymxpc2hlcl90eXBlIGFuZCBkYXRhIGxpY2Vuc2VcXG4gICAgICovXFxuICAgIGNvbnN0IHNob3dNYXBwZWREYXRhID0gKGtleSwgZGF0YSwgbWFwKSA9PiB7XFxuICAgICAgaWYgKGRhdGEpIHtcXG4gICAgICAgIGlmIChrZXkgPT0gJ2RhdGFfbGljZW5zZScpIHtcXG4gICAgICAgICAgbGV0IGxpY2Vuc2UgPSBkYXRhW2tleV07XFxuICAgICAgICAgIGxpY2Vuc2UgPSBsaWNlbnNlPy50cmltKCk7XFxuICAgICAgICAgIHJldHVybiBsaWNlbnNlID8gbWFwW2xpY2Vuc2VdIDogbGFuZ3VhZ2UuY29tbW9uX2xhbmcubWlzc2luZy5ub3RfYXZhaWxhYmxlO1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgcmV0dXJuIGRhdGFba2V5XSA/IG1hcFtkYXRhW2tleV1dIDogbGFuZ3VhZ2UuY29tbW9uX2xhbmcubWlzc2luZy5ub3RfYXZhaWxhYmxlO1xcbiAgICAgIH1cXG4gICAgICByZXR1cm4gbGFuZ3VhZ2UuY29tbW9uX2xhbmcubWlzc2luZy5ub3RfYXZhaWxhYmxlO1xcbiAgICB9O1xcblxcbiAgICByZXR1cm4ge1xcbiAgICAgIEJ0bkNvbXBvbmVudCxcXG4gICAgICBNdWx0aXNlbGVjdCxcXG4gICAgICBEYXRlUmFuZ2VXaWRnZXQsXFxuICAgICAgTXVsdGlTZWxlY3RXaXRoU2VhcmNoLFxcbiAgICAgIG9yZ2FuaXNhdGlvbkRhdGEsXFxuICAgICAgZHJvcGRvd25SYW5nZSxcXG4gICAgICBzZXRTZWxlY3RlZFB1Ymxpc2hlcixcXG4gICAgICB0b2dnbGVTaG93TXVsdGlTZWxlY3QsXFxuICAgICAgc2V0RGF0ZVR5cGUsXFxuICAgICAgc2V0RGF0ZVJhbmdlRGF0ZSxcXG4gICAgICBzb3J0QnksXFxuICAgICAgcmVzZXRBbGxGaWx0ZXJzLFxcbiAgICAgIHNvcnRpbmdEaXJlY3Rpb24sXFxuICAgICAgZGVmYXVsdFNvcnREaXJlY3Rpb24sXFxuICAgICAgcHJveHlVc2VyLFxcbiAgICAgIGRhdGVGb3JtYXQsXFxuICAgICAgZmV0Y2hPcmdhbmlzYXRpb24sXFxuICAgICAgZGVmYXVsdFZhbHVlU3RhdHVzLFxcbiAgICAgIHJlZ2lzdHJ5QXBpS2V5U3RhdHVzLFxcbiAgICAgIG9yZGVyVHlwZSxcXG4gICAgICBjbGVhckRhdGUsXFxuICAgICAgZmlsdGVyLFxcbiAgICAgIHNuYWtlQ2FzZVRvU2VudGVuY2VDYXNlLFxcbiAgICAgIGlzRmlsdGVyQXBwbGllZCxcXG4gICAgICBwcm9wcyxcXG4gICAgICBzaG93TXVsdGlTZWxlY3RXaXRoU2VhcmNoLFxcbiAgICAgIGRhdGVUeXBlLFxcbiAgICAgIHJvdGF0ZUNsYXNzLFxcbiAgICAgIG11bHRpc2VsZWN0U3R5bGUsXFxuICAgICAgY2xlYXJEYXRlRmlsdGVyLFxcbiAgICAgIGRhdGVEcm9wZG93bixcXG4gICAgICBzb3J0UGFyYW1zLFxcbiAgICAgIHJlc2V0UGFnaW5hdGlvbixcXG4gICAgICBzaG93TWFwcGVkRGF0YSxcXG4gICAgICB0b3RhbE9yZ2FuaXNhdGlvbixcXG4gICAgICBjb3VudHJpZXNXaXRoUHJlZml4LFxcbiAgICAgIGdlbmVyYXRlTGFiZWwsXFxuICAgICAgbGFuZ3VhZ2VcXG4gICAgfTtcXG4gIH0sXFxufSk7XFxuPC9zY3JpcHQ+XFxuXFxuPHN0eWxlPlxcbi5tdWx0aXNlbGVjdC13cmFwcGVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHotaW5kZXg6IDU7XFxuICB3aWR0aDogNDI0cHg7XFxuICBoZWlnaHQ6IGZpdC1jb250ZW50O1xcbiAgYmFja2dyb3VuZDogd2hpdGU7XFxuICBvdmVyZmxvdy15OiBhdXRvO1xcbn1cXG4ubXVsdGlzZWxlY3QtbG9va2FsaWtlIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XFxuICBib3JkZXI6IDFweCBzb2xpZCAjZDFkNWRiO1xcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xcbiAgd2lkdGg6IDE2MHB4ICFpbXBvcnRhbnQ7XFxuICBoZWlnaHQ6IDQwcHg7XFxuICBwYWRkaW5nOiAxMnB4O1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbn1cXG48L3N0eWxlPlxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIlxcbkBrZXlmcmFtZXMgc3Bpbm5lci0wNjExZDlmMCB7XFxuMCUge1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01MCUsIC01MCUsIDApIHJvdGF0ZSgwZGVnKTtcXG59XFxuMTAwJSB7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTUwJSwgLTUwJSwgMCkgcm90YXRlKDM2MGRlZyk7XFxufVxcbn1cXG4uc3BpbltkYXRhLXYtMDYxMWQ5ZjBdOjpiZWZvcmUge1xcbiAgYW5pbWF0aW9uOiAxLjVzIGxpbmVhciBpbmZpbml0ZSBzcGlubmVyLTA2MTFkOWYwO1xcbiAgYW5pbWF0aW9uLXBsYXktc3RhdGU6IGluaGVyaXQ7XFxuICBib3JkZXI6IHNvbGlkIDNweCAjY2ZkMGQxO1xcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogZ3JleTtcXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gIGNvbnRlbnQ6ICcnO1xcbiAgaGVpZ2h0OiAyMHB4O1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiA1MCU7XFxuICBsZWZ0OiA1MCU7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01MCUsIC01MCUsIDApO1xcbiAgd2lkdGg6IDIwcHg7XFxuICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xcbn1cXG4uc3BpbltkYXRhLXYtMDYxMWQ5ZjBdIHtcXG4gIGhlaWdodDogNDBweDtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgbWFyZ2luOiBhdXRvO1xcbn1cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3VzZXIvVXNlckxpc3RpbmcudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCI7QUEydUNBO0FBQ0U7SUFDRSxrREFBa0Q7QUFDcEQ7QUFDQTtJQUNFLG9EQUFvRDtBQUN0RDtBQUNGO0FBRUE7RUFDRSxnREFBdUM7RUFDdkMsNkJBQTZCO0VBQzdCLHlCQUF5QjtFQUN6Qix5QkFBeUI7RUFDekIsa0JBQWtCO0VBQ2xCLFdBQVc7RUFDWCxZQUFZO0VBQ1osa0JBQWtCO0VBQ2xCLFFBQVE7RUFDUixTQUFTO0VBQ1QscUNBQXFDO0VBQ3JDLFdBQVc7RUFDWCxzQkFBc0I7QUFDeEI7QUFDQTtFQUNFLFlBQVk7RUFDWixrQkFBa0I7RUFDbEIsV0FBVztFQUNYLFlBQVk7QUFDZFwiLFwic291cmNlc0NvbnRlbnRcIjpbXCI8dGVtcGxhdGU+XFxuICA8ZGl2IGNsYXNzPVxcXCJweC02IHB5LTQgbWQ6cHgtMTBcXFwiPlxcbiAgICA8TG9hZGVyIHYtaWY9XFxcImlzTG9hZGVyVmlzaWJsZVxcXCIgLz5cXG4gICAgPGRpdiBjbGFzcz1cXFwibXktNCBmbGV4IGp1c3RpZnktYmV0d2VlblxcXCI+XFxuICAgICAgPGg0IGNsYXNzPVxcXCJtci00IHRleHQtM3hsIGZvbnQtYm9sZCB4bDp0ZXh0LWhlYWRpbmctNFxcXCI+e3sgbGFuZ3VhZ2UudXNlcl9sYW5nLnVzZXJzIH19PC9oND5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJpbmxpbmUtZmxleCBmbGV4LWNvbCBpdGVtcy1lbmQganVzdGlmeS1lbmQgZ2FwLTIgbWQ6ZmxleC1yb3dcXFwiPlxcbiAgICAgICAgPFRvYXN0XFxuICAgICAgICAgIHYtaWY9XFxcIlxcbiAgICAgICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ICYmXFxuICAgICAgICAgICAgdG9hc3REYXRhLm1lc3NhZ2UgJiZcXG4gICAgICAgICAgICB0b2FzdERhdGEubWVzc2FnZSAhPT0gJydcXG4gICAgICAgICAgXFxcIlxcbiAgICAgICAgICA6bWVzc2FnZT1cXFwidG9hc3REYXRhLm1lc3NhZ2VcXFwiXFxuICAgICAgICAgIDp0eXBlPVxcXCJ0b2FzdERhdGEudHlwZVxcXCJcXG4gICAgICAgIC8+XFxuICAgICAgICA8YnV0dG9uXFxuICAgICAgICAgIHYtaWY9XFxcInVzZXJzRGF0YVsndG90YWwnXSA+IDBcXFwiXFxuICAgICAgICAgIHJlZj1cXFwiZHJvcGRvd25CdG5cXFwiXFxuICAgICAgICAgIGNsYXNzPVxcXCJidXR0b24gc2Vjb25kYXJ5LWJ0biB3aGl0ZXNwYWNlLW5vd3JhcCBmb250LWJvbGRcXFwiXFxuICAgICAgICAgIEBjbGljaz1cXFwiZG93bmxvYWRBbGxcXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIDxzdmctdnVlIGljb249XFxcImRvd25sb2FkLWZpbGVcXFwiIC8+XFxuICAgICAgICAgIHt7IGNoZWNrbGlzdC5sZW5ndGggPT09IDAgPyBsYW5ndWFnZS5idXR0b25fbGFuZy5kb3dubG9hZF9hbGwgOiAnJyB9fVxcbiAgICAgICAgPC9idXR0b24+XFxuICAgICAgICA8YnV0dG9uXFxuICAgICAgICAgIHYtaWY9XFxcInVzZXJSb2xlICE9PSAnZ2VuZXJhbF91c2VyJ1xcXCJcXG4gICAgICAgICAgY2xhc3M9XFxcInByaW1hcnktYnRuIHdoaXRlc3BhY2Utbm93cmFwXFxcIlxcbiAgICAgICAgICBAY2xpY2s9XFxcIlxcbiAgICAgICAgICAgICgpID0+IHtcXG4gICAgICAgICAgICAgIGVtcHR5Rm9ybURhdGEoKTtcXG4gICAgICAgICAgICAgIHNldEZvcm1FcnJvcigpO1xcbiAgICAgICAgICAgICAgYWRkVXNlckZvcm0gPSB0cnVlO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgXFxcIlxcbiAgICAgICAgPlxcbiAgICAgICAgICA8c3ZnLXZ1ZSBjbGFzcz1cXFwidGV4dC1iYXNlXFxcIiBpY29uPVxcXCJwbHVzLW91dGxpbmVkXFxcIiAvPnt7XFxuICAgICAgICAgICAgbGFuZ3VhZ2UuYnV0dG9uX2xhbmcuYWRkX2FfbmV3XFxuICAgICAgICAgIH19XFxuICAgICAgICAgIHt7XFxuICAgICAgICAgICAgdXNlclJvbGUgPT09ICdhZG1pbidcXG4gICAgICAgICAgICAgID8gbGFuZ3VhZ2UudXNlcl9sYW5nLnVzZXJzXFxuICAgICAgICAgICAgICA6IGxhbmd1YWdlLnVzZXJfbGFuZy51c2VyX3JvbGVzLmlhdGlfYWRtaW5cXG4gICAgICAgICAgfX1cXG4gICAgICAgIDwvYnV0dG9uPlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG5cXG4gICAgPGRpdj5cXG4gICAgICA8UG9wdXBNb2RhbFxcbiAgICAgICAgOm1vZGFsLWFjdGl2ZT1cXFwiYWRkVXNlckZvcm0gfHwgZWRpdFVzZXJGb3JtXFxcIlxcbiAgICAgICAgQGNsb3NlPVxcXCJcXG4gICAgICAgICAgKCkgPT4ge1xcbiAgICAgICAgICAgIGFkZFVzZXJGb3JtID0gZmFsc2U7XFxuICAgICAgICAgICAgZWRpdFVzZXJGb3JtID0gZmFsc2U7XFxuICAgICAgICAgIH1cXG4gICAgICAgIFxcXCJcXG4gICAgICA+XFxuICAgICAgICA8ZGl2XFxuICAgICAgICAgIGNsYXNzPVxcXCJwb3B1cC1tb2RlbFxcXCJcXG4gICAgICAgICAgQGtleXVwLmVudGVyPVxcXCJhZGRVc2VyRm9ybSA/IGNyZWF0ZVVzZXIoKSA6IHVwZGF0ZVVzZXIoKVxcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwibWItNSB0ZXh0LTJ4bCBmb250LWJvbGQgdGV4dC1ibHVlY29yYWxcXFwiPlxcbiAgICAgICAgICAgIHt7XFxuICAgICAgICAgICAgICBhZGRVc2VyRm9ybVxcbiAgICAgICAgICAgICAgICA/IGxhbmd1YWdlLmJ1dHRvbl9sYW5nLmFkZF9hX25ld1xcbiAgICAgICAgICAgICAgICA6IGxhbmd1YWdlLmJ1dHRvbl9sYW5nLmVkaXRcXG4gICAgICAgICAgICB9fVxcbiAgICAgICAgICAgIHt7XFxuICAgICAgICAgICAgICB1c2VyUm9sZSA9PT0gJ2FkbWluJ1xcbiAgICAgICAgICAgICAgICA/IGxhbmd1YWdlLnVzZXJfbGFuZy51c2Vyc1xcbiAgICAgICAgICAgICAgICA6IGxhbmd1YWdlLnVzZXJfbGFuZy51c2VyX3JvbGVzLmlhdGlfYWRtaW5cXG4gICAgICAgICAgICB9fVxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZ3JpZCBncmlkLWNvbHMtMiBnYXAtNlxcXCI+XFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLXNwYW4tMiBmbGV4IGZsZXgtY29sIGl0ZW1zLXN0YXJ0IGdhcC0yXFxcIj5cXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cXFwidGV4dC1zbSB0ZXh0LW4tNTBcXFwiPlxcbiAgICAgICAgICAgICAgICB7eyBsYW5ndWFnZS5yZWdpc3Rlcl9sYW5nLmZ1bGxuYW1lLmxhYmVsIH19XFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJ0ZXh0LWNyaW1zb24tNTBcXFwiPiAqIDwvc3Bhbj48L2xhYmVsXFxuICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICAgICAgaWQ9XFxcImZ1bGxfbmFtZVxcXCJcXG4gICAgICAgICAgICAgICAgdi1tb2RlbD1cXFwiZm9ybURhdGEuZnVsbF9uYW1lXFxcIlxcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XFxcIlxcbiAgICAgICAgICAgICAgICAgIGZvcm1FcnJvclsnZnVsbF9uYW1lJ10gPyAnYm9yZGVyLWNyaW1zb24tNTAnIDogJ2JvcmRlci1uLTMwJ1xcbiAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJ3LWZ1bGwgcm91bmRlZCBib3JkZXIgcC0zXFxcIlxcbiAgICAgICAgICAgICAgICB0eXBlPVxcXCJ0ZXh0XFxcIlxcbiAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgIDxzcGFuIHYtaWY9XFxcImZvcm1FcnJvclsnZnVsbF9uYW1lJ11cXFwiIGNsYXNzPVxcXCJlcnJvclxcXCI+e3tcXG4gICAgICAgICAgICAgICAgZm9ybUVycm9yWydmdWxsX25hbWUnXVswXVxcbiAgICAgICAgICAgICAgfX08L3NwYW4+XFxuICAgICAgICAgICAgPC9kaXY+XFxuXFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZmxleCBmbGV4LWNvbCBpdGVtcy1zdGFydCBnYXAtMlxcXCI+XFxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XFxcInRleHQtc20gdGV4dC1uLTUwXFxcIlxcbiAgICAgICAgICAgICAgICA+e3sgbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy51c2VybmFtZS5sYWJlbFxcbiAgICAgICAgICAgICAgICB9fTxzcGFuIGNsYXNzPVxcXCJ0ZXh0LWNyaW1zb24tNTBcXFwiPiAqPC9zcGFuPjwvbGFiZWxcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgIDxpbnB1dFxcbiAgICAgICAgICAgICAgICBpZD1cXFwidXNlcm5hbWVcXFwiXFxuICAgICAgICAgICAgICAgIHYtbW9kZWw9XFxcImZvcm1EYXRhLnVzZXJuYW1lXFxcIlxcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XFxcIlxcbiAgICAgICAgICAgICAgICAgIGZvcm1FcnJvclsndXNlcm5hbWUnXSA/ICdib3JkZXItY3JpbXNvbi01MCcgOiAnYm9yZGVyLW4tMzAnXFxuICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcInctZnVsbCByb3VuZGVkIGJvcmRlciBwLTNcXFwiXFxuICAgICAgICAgICAgICAgIHR5cGU9XFxcInRleHRcXFwiXFxuICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgPHNwYW4gdi1pZj1cXFwiZm9ybUVycm9yWyd1c2VybmFtZSddXFxcIiBjbGFzcz1cXFwiZXJyb3JcXFwiPnt7XFxuICAgICAgICAgICAgICAgIGZvcm1FcnJvclsndXNlcm5hbWUnXVswXVxcbiAgICAgICAgICAgICAgfX08L3NwYW4+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZmxleCBmbGV4LWNvbCBpdGVtcy1zdGFydCBnYXAtMlxcXCI+XFxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XFxcInRleHQtc20gdGV4dC1uLTUwXFxcIlxcbiAgICAgICAgICAgICAgICA+e3sgbGFuZ3VhZ2UudXNlcl9sYW5nLmVtYWlsXFxuICAgICAgICAgICAgICAgIH19PHNwYW4gY2xhc3M9XFxcInRleHQtY3JpbXNvbi01MFxcXCI+ICogPC9zcGFuPjwvbGFiZWxcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgIDxpbnB1dFxcbiAgICAgICAgICAgICAgICBpZD1cXFwiZW1haWxcXFwiXFxuICAgICAgICAgICAgICAgIHYtbW9kZWw9XFxcImZvcm1EYXRhLmVtYWlsXFxcIlxcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XFxcIlxcbiAgICAgICAgICAgICAgICAgIGZvcm1FcnJvclsnZW1haWwnXSA/ICdib3JkZXItY3JpbXNvbi01MCcgOiAnYm9yZGVyLW4tMzAnXFxuICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcInctZnVsbCByb3VuZGVkIGJvcmRlciBwLTNcXFwiXFxuICAgICAgICAgICAgICAgIHR5cGU9XFxcImVtYWlsXFxcIlxcbiAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgIDxzcGFuIHYtaWY9XFxcImZvcm1FcnJvclsnZW1haWwnXVxcXCIgY2xhc3M9XFxcImVycm9yXFxcIj57e1xcbiAgICAgICAgICAgICAgICBmb3JtRXJyb3JbJ2VtYWlsJ11bMF1cXG4gICAgICAgICAgICAgIH19PC9zcGFuPlxcbiAgICAgICAgICAgIDwvZGl2PlxcblxcbiAgICAgICAgICAgIDxkaXZcXG4gICAgICAgICAgICAgIHYtaWY9XFxcImFkZFVzZXJGb3JtXFxcIlxcbiAgICAgICAgICAgICAgOmNsYXNzPVxcXCJmb3JtRXJyb3JbJ3N0YXR1cyddICYmICdlcnJvcl9fbXVsdGlzZWxlY3QnXFxcIlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcImZsZXggZmxleC1jb2wgaXRlbXMtc3RhcnQgZ2FwLTJcXFwiXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVxcXCJ0ZXh0LXNtIHRleHQtbi01MFxcXCJcXG4gICAgICAgICAgICAgICAgPnt7IGxhbmd1YWdlLnVzZXJfbGFuZy5zdGF0dXNcXG4gICAgICAgICAgICAgICAgfX08c3BhbiBjbGFzcz1cXFwidGV4dC1jcmltc29uLTUwXFxcIj4gKiA8L3NwYW4+PC9sYWJlbFxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPE11bHRpc2VsZWN0XFxuICAgICAgICAgICAgICAgIGlkPVxcXCJzdGF0dXNcXFwiXFxuICAgICAgICAgICAgICAgIHYtbW9kZWw9XFxcImZvcm1EYXRhLnN0YXR1c1xcXCJcXG4gICAgICAgICAgICAgICAgOm9wdGlvbnM9XFxcInN0YXR1c1xcXCJcXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XFxcIlNlbGVjdCBzdGF0dXNcXFwiXFxuICAgICAgICAgICAgICAgIDpzZWFyY2hhYmxlPVxcXCJ0cnVlXFxcIlxcbiAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgIDxzcGFuIHYtaWY9XFxcImZvcm1FcnJvclsnc3RhdHVzJ11cXFwiIGNsYXNzPVxcXCJlcnJvclxcXCI+e3tcXG4gICAgICAgICAgICAgICAgZm9ybUVycm9yWydzdGF0dXMnXVswXVxcbiAgICAgICAgICAgICAgfX08L3NwYW4+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPGRpdlxcbiAgICAgICAgICAgICAgdi1pZj1cXFwidXNlclJvbGUgPT09ICdhZG1pbidcXFwiXFxuICAgICAgICAgICAgICA6Y2xhc3M9XFxcImZvcm1FcnJvclsncm9sZV9pZCddICYmICdlcnJvcl9fbXVsdGlzZWxlY3QnXFxcIlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcImZsZXggZmxleC1jb2wgaXRlbXMtc3RhcnQgZ2FwLTJcXFwiXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVxcXCJ0ZXh0LXNtIHRleHQtbi01MFxcXCJcXG4gICAgICAgICAgICAgICAgPnt7IGxhbmd1YWdlLnVzZXJfbGFuZy5yb2xlXFxuICAgICAgICAgICAgICAgIH19PHNwYW4gY2xhc3M9XFxcInRleHQtY3JpbXNvbi01MFxcXCI+ICogPC9zcGFuPjwvbGFiZWxcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgIDxNdWx0aXNlbGVjdFxcbiAgICAgICAgICAgICAgICBpZD1cXFwicm9sZVxcXCJcXG4gICAgICAgICAgICAgICAgdi1tb2RlbD1cXFwiZm9ybURhdGEucm9sZV9pZFxcXCJcXG4gICAgICAgICAgICAgICAgOm9wdGlvbnM9XFxcInJvbGVzXFxcIlxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cXFwiU2VsZWN0IHVzZXIgcm9sZVxcXCJcXG4gICAgICAgICAgICAgICAgOnNlYXJjaGFibGU9XFxcInRydWVcXFwiXFxuICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgPHNwYW4gdi1pZj1cXFwiZm9ybUVycm9yWydyb2xlX2lkJ11cXFwiIGNsYXNzPVxcXCJlcnJvclxcXCI+e3tcXG4gICAgICAgICAgICAgICAgZm9ybUVycm9yWydyb2xlX2lkJ11bMF1cXG4gICAgICAgICAgICAgIH19PC9zcGFuPlxcbiAgICAgICAgICAgIDwvZGl2PlxcblxcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImZsZXggZmxleC1jb2wgaXRlbXMtc3RhcnQgZ2FwLTJcXFwiPlxcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVxcXCJ0ZXh0LXNtIHRleHQtbi01MFxcXCJcXG4gICAgICAgICAgICAgICAgPnt7IGxhbmd1YWdlLnJlZ2lzdGVyX2xhbmcucGFzc3dvcmQubmV3XFxuICAgICAgICAgICAgICAgIH19PHNwYW4gdi1pZj1cXFwiIWVkaXRVc2VyRm9ybVxcXCIgY2xhc3M9XFxcInRleHQtY3JpbXNvbi01MFxcXCI+XFxuICAgICAgICAgICAgICAgICAgKlxcbiAgICAgICAgICAgICAgICA8L3NwYW4+PC9sYWJlbFxcbiAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgICAgIGlkPVxcXCJwYXNzd29yZFxcXCJcXG4gICAgICAgICAgICAgICAgdi1tb2RlbD1cXFwiZm9ybURhdGEucGFzc3dvcmRcXFwiXFxuICAgICAgICAgICAgICAgIDpjbGFzcz1cXFwiXFxuICAgICAgICAgICAgICAgICAgZm9ybUVycm9yWydwYXNzd29yZCddID8gJ2JvcmRlci1jcmltc29uLTUwJyA6ICdib3JkZXItbi0zMCdcXG4gICAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwidy1mdWxsIHJvdW5kZWQgYm9yZGVyIGJvcmRlci1uLTMwIHAtM1xcXCJcXG4gICAgICAgICAgICAgICAgdHlwZT1cXFwicGFzc3dvcmRcXFwiXFxuICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgPHNwYW4gdi1pZj1cXFwiZm9ybUVycm9yWydwYXNzd29yZCddXFxcIiBjbGFzcz1cXFwiZXJyb3JcXFwiPnt7XFxuICAgICAgICAgICAgICAgIGZvcm1FcnJvclsncGFzc3dvcmQnXVswXVxcbiAgICAgICAgICAgICAgfX08L3NwYW4+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZmxleCBmbGV4LWNvbCBpdGVtcy1zdGFydCBnYXAtMlxcXCI+XFxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XFxcInRleHQtc20gdGV4dC1uLTUwXFxcIj5cXG4gICAgICAgICAgICAgICAge3sgbGFuZ3VhZ2UucmVnaXN0ZXJfbGFuZy5wYXNzd29yZC5jb25maXJtIH19XFxuICAgICAgICAgICAgICAgIDxzcGFuIHYtaWY9XFxcIiFlZGl0VXNlckZvcm1cXFwiIGNsYXNzPVxcXCJ0ZXh0LWNyaW1zb24tNTBcXFwiPiAqIDwvc3Bhbj5cXG4gICAgICAgICAgICAgIDwvbGFiZWw+XFxuXFxuICAgICAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICAgICAgaWQ9XFxcInBhc3N3b3JkLWNvbmZpcm1hdGlvblxcXCJcXG4gICAgICAgICAgICAgICAgdi1tb2RlbD1cXFwiZm9ybURhdGEucGFzc3dvcmRfY29uZmlybWF0aW9uXFxcIlxcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XFxcIlxcbiAgICAgICAgICAgICAgICAgIGZvcm1FcnJvclsncGFzc3dvcmRfY29uZmlybWF0aW9uJ11cXG4gICAgICAgICAgICAgICAgICAgID8gJ2JvcmRlci1jcmltc29uLTUwJ1xcbiAgICAgICAgICAgICAgICAgICAgOiAnYm9yZGVyLW4tMzAnXFxuICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcInctZnVsbCByb3VuZGVkIGJvcmRlciBib3JkZXItbi0zMCBwLTNcXFwiXFxuICAgICAgICAgICAgICAgIHR5cGU9XFxcInBhc3N3b3JkXFxcIlxcbiAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgIDxzcGFuIHYtaWY9XFxcImZvcm1FcnJvclsncGFzc3dvcmRfY29uZmlybWF0aW9uJ11cXFwiIGNsYXNzPVxcXCJlcnJvclxcXCI+e3tcXG4gICAgICAgICAgICAgICAgZm9ybUVycm9yWydwYXNzd29yZF9jb25maXJtYXRpb24nXVswXVxcbiAgICAgICAgICAgICAgfX08L3NwYW4+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgIDwvZGl2PlxcblxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJtdC02IGZsZXgganVzdGlmeS1lbmQgc3BhY2UteC0yXFxcIj5cXG4gICAgICAgICAgICA8YnV0dG9uXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwic2Vjb25kYXJ5LWJ0biBmb250LWJvbGRcXFwiXFxuICAgICAgICAgICAgICBAY2xpY2s9XFxcIlxcbiAgICAgICAgICAgICAgICAoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgYWRkVXNlckZvcm0gPSBmYWxzZTtcXG4gICAgICAgICAgICAgICAgICBlZGl0VXNlckZvcm0gPSBmYWxzZTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgIHt7IGxhbmd1YWdlLmJ1dHRvbl9sYW5nLmNhbmNlbCB9fVxcbiAgICAgICAgICAgIDwvYnV0dG9uPlxcbiAgICAgICAgICAgIDxidXR0b25cXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJwcmltYXJ5LWJ0biAhcHgtMTBcXFwiXFxuICAgICAgICAgICAgICBAY2xpY2s9XFxcImFkZFVzZXJGb3JtID8gY3JlYXRlVXNlcigpIDogdXBkYXRlVXNlcigpXFxcIlxcbiAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgIHt7IGxhbmd1YWdlLmJ1dHRvbl9sYW5nLnNhdmUgfX1cXG4gICAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L1BvcHVwTW9kYWw+XFxuICAgICAgPFBvcHVwTW9kYWxcXG4gICAgICAgIDptb2RhbC1hY3RpdmU9XFxcImRlbGV0ZU1vZGFsXFxcIlxcbiAgICAgICAgQGNsb3NlPVxcXCJcXG4gICAgICAgICAgKCkgPT4ge1xcbiAgICAgICAgICAgIGRlbGV0ZU1vZGFsID0gZmFsc2U7XFxuICAgICAgICAgIH1cXG4gICAgICAgIFxcXCJcXG4gICAgICA+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ0aXRsZSBtYi02IGZsZXhcXFwiPlxcbiAgICAgICAgICA8c3ZnLXZ1ZSBjbGFzcz1cXFwibXItMSBtdC0wLjUgdGV4dC1sZyB0ZXh0LWNyaW1zb24tNDBcXFwiIGljb249XFxcImRlbGV0ZVxcXCIgLz5cXG4gICAgICAgICAgPGIgY2xhc3M9XFxcInVwcGVyY2FzZVxcXCI+e3tcXG4gICAgICAgICAgICBsYW5ndWFnZS5idXR0b25fbGFuZy5kZWxldGVfZWxlbWVudC5yZXBsYWNlKFxcbiAgICAgICAgICAgICAgJzplbGVtZW50JyxcXG4gICAgICAgICAgICAgIGxhbmd1YWdlLnVzZXJfbGFuZy51c2VyXFxuICAgICAgICAgICAgKVxcbiAgICAgICAgICB9fTwvYj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICAgPHAgY2xhc3M9XFxcInJvdW5kZWQtbGcgYmctcm9zZSBwLTRcXFwiPlxcbiAgICAgICAgICB7eyBsYW5ndWFnZS51c2VyX2xhbmcuZGVsZXRlX2NvbmZpcm1hdGlvbi5yZXBsYWNlKCc6ZWxlbWVudCcsICc6JylcXG4gICAgICAgICAgfX08Yj4ge3sgZGVsZXRlVXNlcm5hbWUgfX08L2JcXG4gICAgICAgICAgPiA/XFxuICAgICAgICA8L3A+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJtdC02IGZsZXgganVzdGlmeS1lbmQgc3BhY2UteC0yXFxcIj5cXG4gICAgICAgICAgPGJ1dHRvblxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJzZWNvbmRhcnktYnRuIGZvbnQtYm9sZFxcXCJcXG4gICAgICAgICAgICBAY2xpY2s9XFxcIlxcbiAgICAgICAgICAgICAgKCkgPT4ge1xcbiAgICAgICAgICAgICAgICBkZWxldGVNb2RhbCA9IGZhbHNlO1xcbiAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgPlxcbiAgICAgICAgICAgIHt7IGxhbmd1YWdlLmJ1dHRvbl9sYW5nLmNhbmNlbCB9fVxcbiAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cXFwicHJpbWFyeS1idG4gIXB4LTEwXFxcIiBAY2xpY2s9XFxcImRlbGV0ZVVzZXIoZGVsZXRlSWQpXFxcIj5cXG4gICAgICAgICAgICB7eyBsYW5ndWFnZS5idXR0b25fbGFuZy5kZWxldGUgfX1cXG4gICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L1BvcHVwTW9kYWw+XFxuXFxuICAgICAgPFBvcHVwTW9kYWxcXG4gICAgICAgIDptb2RhbC1hY3RpdmU9XFxcInN0YXR1c01vZGFsXFxcIlxcbiAgICAgICAgQGNsb3NlPVxcXCJcXG4gICAgICAgICAgKCkgPT4ge1xcbiAgICAgICAgICAgIHN0YXR1c01vZGFsID0gZmFsc2U7XFxuICAgICAgICAgIH1cXG4gICAgICAgIFxcXCJcXG4gICAgICA+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJ0aXRsZSBtYi02IGZsZXhcXFwiPlxcbiAgICAgICAgICA8YiBjbGFzcz1cXFwiZmlyc3QtbGV0dGVyOnVwcGVyY2FzZVxcXCI+XFxuICAgICAgICAgICAge3tcXG4gICAgICAgICAgICAgIGxhbmd1YWdlLmJ1dHRvbl9sYW5nLm1ha2VfZWxlbWVudC5yZXBsYWNlKFxcbiAgICAgICAgICAgICAgICAnOmVsZW1lbnQnLFxcbiAgICAgICAgICAgICAgICBsYW5ndWFnZS51c2VyX2xhbmcudXNlci50b0xvd2VyQ2FzZSgpXFxuICAgICAgICAgICAgICApXFxuICAgICAgICAgICAgfX1cXG4gICAgICAgICAgICB7e1xcbiAgICAgICAgICAgICAgc3RhdHVzVmFsdWVcXG4gICAgICAgICAgICAgICAgPyBsYW5ndWFnZS51c2VyX2xhbmcuaW5hY3RpdmVcXG4gICAgICAgICAgICAgICAgOiBsYW5ndWFnZS51c2VyX2xhbmcuYWN0aXZlXFxuICAgICAgICAgICAgfX1cXG4gICAgICAgICAgPC9iPlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgICA8cCBjbGFzcz1cXFwicm91bmRlZC1sZyBiZy1yb3NlIHAtNFxcXCI+XFxuICAgICAgICAgIHt7IGxhbmd1YWdlLmJ1dHRvbl9sYW5nLm1ha2VfY29uZmlybWF0aW9uLnJlcGxhY2UoJzplbGVtZW50JywgJyAnKSB9fVxcbiAgICAgICAgICA8Yj4ge3sgc3RhdHVzVXNlcm5hbWUgfX08L2I+XFxuICAgICAgICAgIHt7XFxuICAgICAgICAgICAgc3RhdHVzVmFsdWVcXG4gICAgICAgICAgICAgID8gbGFuZ3VhZ2UudXNlcl9sYW5nLmluYWN0aXZlXFxuICAgICAgICAgICAgICA6IGxhbmd1YWdlLnVzZXJfbGFuZy5hY3RpdmVcXG4gICAgICAgICAgfX1cXG4gICAgICAgICAgP1xcbiAgICAgICAgPC9wPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwibXQtNiBmbGV4IGp1c3RpZnktZW5kIHNwYWNlLXgtMlxcXCI+XFxuICAgICAgICAgIDxidXR0b25cXG4gICAgICAgICAgICBjbGFzcz1cXFwic2Vjb25kYXJ5LWJ0biBmb250LWJvbGRcXFwiXFxuICAgICAgICAgICAgQGNsaWNrPVxcXCJcXG4gICAgICAgICAgICAgICgpID0+IHtcXG4gICAgICAgICAgICAgICAgc3RhdHVzTW9kYWwgPSBmYWxzZTtcXG4gICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBcXFwiXFxuICAgICAgICAgID5cXG4gICAgICAgICAgICB7eyBsYW5ndWFnZS5idXR0b25fbGFuZy5jYW5jZWwgfX1cXG4gICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICAgIDxidXR0b25cXG4gICAgICAgICAgICBjbGFzcz1cXFwicHJpbWFyeS1idG4gIXB4LTEwXFxcIlxcbiAgICAgICAgICAgIEBjbGljaz1cXFwidG9nZ2xlVXNlclN0YXR1cyhzdGF0dXNJZClcXFwiXFxuICAgICAgICAgID5cXG4gICAgICAgICAgICB7eyBsYW5ndWFnZS5jb21tb25fbGFuZy55ZXMgfX1cXG4gICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L1BvcHVwTW9kYWw+XFxuXFxuICAgICAgPGRpdiBjbGFzcz1cXFwiZmlsdGVycyBtYi00IGZsZXggZmxleC13cmFwIGp1c3RpZnktYmV0d2VlbiBnYXAtMlxcXCI+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJzZWxlY3QgZmlsdGVycyBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0yXFxcIj5cXG4gICAgICAgICAgPHN2Zy12dWUgY2xhc3M9XFxcInctMTAgdGV4dC1sZ1xcXCIgaWNvbj1cXFwiZnVubmVsXFxcIiAvPlxcbiAgICAgICAgICA8c3BhblxcbiAgICAgICAgICAgIHYtaWY9XFxcInVzZXJSb2xlID09PSAnc3VwZXJhZG1pbicgfHwgdXNlclJvbGUgPT09ICdpYXRpX2FkbWluJ1xcXCJcXG4gICAgICAgICAgICBjbGFzcz1cXFwibXVsdGlzZWxlY3QtbGFiZWwtd3JhcHBlclxcXCJcXG4gICAgICAgICAgICA6c3R5bGU9XFxcImdlbmVyYXRlTGFiZWwoJ29yZ2FuaXNhdGlvbicpXFxcIlxcbiAgICAgICAgICAgID48TXVsdGlzZWxlY3RcXG4gICAgICAgICAgICAgIGlkPVxcXCJvcmdhbml6YXRpb24tZmlsdGVyXFxcIlxcbiAgICAgICAgICAgICAgdi1tb2RlbD1cXFwiZmlsdGVyLm9yZ2FuaXphdGlvblxcXCJcXG4gICAgICAgICAgICAgIDpvcHRpb25zPVxcXCJvcmdhbml6YXRpb25zXFxcIlxcbiAgICAgICAgICAgICAgOnBsYWNlaG9sZGVyPVxcXCJsYW5ndWFnZS5jb21tb25fbGFuZy5vcmdhbmlzYXRpb25cXFwiXFxuICAgICAgICAgICAgICA6c2VhcmNoYWJsZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgICAgIG1vZGU9XFxcIm11bHRpcGxlXFxcIlxcbiAgICAgICAgICAgICAgOnRhZ2dhYmxlPVxcXCJ0cnVlXFxcIlxcbiAgICAgICAgICAgICAgOmNsb3NlLW9uLXNlbGVjdD1cXFwiZmFsc2VcXFwiXFxuICAgICAgICAgICAgICA6Y2xlYXItb24tc2VsZWN0PVxcXCJmYWxzZVxcXCJcXG4gICAgICAgICAgICAgIDpoaWRlLXNlbGVjdGVkPVxcXCJmYWxzZVxcXCJcXG4gICAgICAgICAgICAgIGxhYmVsPVxcXCJuYW1lXFxcIlxcbiAgICAgICAgICAgIC8+XFxuICAgICAgICAgIDwvc3Bhbj5cXG5cXG4gICAgICAgICAgPHNwYW5cXG4gICAgICAgICAgICBjbGFzcz1cXFwibXVsdGlzZWxlY3QtbGFiZWwtd3JhcHBlclxcXCJcXG4gICAgICAgICAgICA6c3R5bGU9XFxcImdlbmVyYXRlTGFiZWwoJ3JvbGUnKVxcXCJcXG4gICAgICAgICAgPlxcbiAgICAgICAgICAgIDxNdWx0aXNlbGVjdFxcbiAgICAgICAgICAgICAgaWQ9XFxcInJvbGUtZmlsdGVyXFxcIlxcbiAgICAgICAgICAgICAgdi1tb2RlbD1cXFwiZmlsdGVyLnJvbGVzXFxcIlxcbiAgICAgICAgICAgICAgOm9wdGlvbnM9XFxcInJvbGVzXFxcIlxcbiAgICAgICAgICAgICAgOnBsYWNlaG9sZGVyPVxcXCJsYW5ndWFnZS51c2VyX2xhbmcucm9sZVxcXCJcXG4gICAgICAgICAgICAgIDpzZWFyY2hhYmxlPVxcXCJ0cnVlXFxcIlxcbiAgICAgICAgICAgICAgbW9kZT1cXFwibXVsdGlwbGVcXFwiXFxuICAgICAgICAgICAgICA6Y2xvc2Utb24tc2VsZWN0PVxcXCJmYWxzZVxcXCJcXG4gICAgICAgICAgICAgIDpjbGVhci1vbi1zZWxlY3Q9XFxcImZhbHNlXFxcIlxcbiAgICAgICAgICAgICAgOmhpZGUtc2VsZWN0ZWQ9XFxcImZhbHNlXFxcIlxcbiAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgPHNwYW4gdi1pZj1cXFwiZmlsdGVyLnJvbGVzLmxlbmd0aCA+IDBcXFwiIGNsYXNzPVxcXCJzdGF0dXNcXFwiPlxcbiAgICAgICAgICAgICAgPCEtLSBwbGFjZWhvbGRlciAtLT5cXG4gICAgICAgICAgICAgIDwhLS0gcm9sZSAtLT5cXG4gICAgICAgICAgICA8L3NwYW4+PC9zcGFuXFxuICAgICAgICAgID5cXG4gICAgICAgICAgPHNwYW5cXG4gICAgICAgICAgICBjbGFzcz1cXFwibXVsdGlzZWxlY3QtbGFiZWwtd3JhcHBlclxcXCJcXG4gICAgICAgICAgICA6c3R5bGU9XFxcImdlbmVyYXRlTGFiZWwoJ3N0YXR1cycpXFxcIlxcbiAgICAgICAgICAgID48TXVsdGlzZWxlY3RcXG4gICAgICAgICAgICAgIGlkPVxcXCJzdGF0dXMtZmlsdGVyXFxcIlxcbiAgICAgICAgICAgICAgdi1tb2RlbD1cXFwiZmlsdGVyLnN0YXR1c1xcXCJcXG4gICAgICAgICAgICAgIDpvcHRpb25zPVxcXCJzdGF0dXNcXFwiXFxuICAgICAgICAgICAgICA6cGxhY2Vob2xkZXI9XFxcImxhbmd1YWdlLnVzZXJfbGFuZy5zdGF0dXNcXFwiXFxuICAgICAgICAgICAgICA6c2VhcmNoYWJsZT1cXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgICAvPlxcbiAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICAgPGRpdlxcbiAgICAgICAgICBjbGFzcz1cXFwiZmxleCBoLVszOHB4XSB3LWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kIGdhcC0zIHNwYWNlLXgtMiBweC00IDJ4bDp3LWF1dG9cXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIDxzcGFuPlxcbiAgICAgICAgICAgIDxEYXRlUmFuZ2VXaWRnZXRcXG4gICAgICAgICAgICAgIDpkcm9wZG93bi1yYW5nZT1cXFwiZHJvcGRvd25SYW5nZVxcXCJcXG4gICAgICAgICAgICAgIDpmaXJzdC1kYXRlPVxcXCJvbGRlc3REYXRlc1xcXCJcXG4gICAgICAgICAgICAgIDpjbGVhci1kYXRlPVxcXCJjbGVhckRhdGVcXFwiXFxuICAgICAgICAgICAgICA6c3RhcnRpbmctZGF0ZT1cXFwiZmlsdGVyLnN0YXJ0X2RhdGVcXFwiXFxuICAgICAgICAgICAgICA6ZGF0ZS1uYW1lPVxcXCJkYXRlVHlwZVxcXCJcXG4gICAgICAgICAgICAgIDplbmRpbmctZGF0ZT1cXFwiZmlsdGVyLmVuZF9kYXRlXFxcIlxcbiAgICAgICAgICAgICAgQHRyaWdnZXItc2V0LWRhdGUtcmFuZ2U9XFxcInNldERhdGVSYW5nZURhdGVcXFwiXFxuICAgICAgICAgICAgICBAdHJpZ2dlci1zZXQtZGF0ZS10eXBlPVxcXCJzZXREYXRlVHlwZVxcXCJcXG4gICAgICAgICAgICAgIEBkYXRlLWNsZWFyZWQ9XFxcImNsZWFyRGF0ZSA9IGZhbHNlXFxcIlxcbiAgICAgICAgICAgIC8+XFxuICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwib3Blbi10ZXh0IGgtWzM4cHhdXFxcIj5cXG4gICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcImFic29sdXRlIHRvcC0xLzIgbGVmdC0yIHctMTAgLXRyYW5zbGF0ZS15LTEvMiB0ZXh0LWJhc2VcXFwiXFxuICAgICAgICAgICAgICBpY29uPVxcXCJtYWduaWZ5aW5nLWdsYXNzXFxcIlxcbiAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgICB2LW1vZGVsPVxcXCJmaWx0ZXIucVxcXCJcXG4gICAgICAgICAgICAgIHR5cGU9XFxcInRleHRcXFwiXFxuICAgICAgICAgICAgICA6cGxhY2Vob2xkZXI9XFxcImxhbmd1YWdlLnVzZXJfbGFuZy5zZWFyY2hfZm9yX3VzZXJzXFxcIlxcbiAgICAgICAgICAgIC8+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+XFxuXFxuICAgICAgPGRpdlxcbiAgICAgICAgdi1pZj1cXFwiaXNGaWx0ZXJBcHBsaWVkXFxcIlxcbiAgICAgICAgY2xhc3M9XFxcIm1iLTQgZmxleCBtYXgtdy1mdWxsIGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLTJcXFwiXFxuICAgICAgPlxcbiAgICAgICAgPHNwYW4gY2xhc3M9XFxcInRleHQtc20gZm9udC1ib2xkIHVwcGVyY2FzZSB0ZXh0LW4tNDBcXFwiPlxcbiAgICAgICAgICB7eyBsYW5ndWFnZS51c2VyX2xhbmcuZmlsdGVyZWRfYnkgfX06XFxuICAgICAgICA8L3NwYW4+XFxuXFxuICAgICAgICA8c3BhblxcbiAgICAgICAgICB2LWlmPVxcXCJmaWx0ZXIub3JnYW5pemF0aW9uLmxlbmd0aFxcXCJcXG4gICAgICAgICAgY2xhc3M9XFxcImlubGluZS1mbGV4IGZsZXgtd3JhcCBnYXAtMlxcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAgPHNwYW5cXG4gICAgICAgICAgICB2LWZvcj1cXFwiKGl0ZW0sIGluZGV4KSBpbiBmaWx0ZXIub3JnYW5pemF0aW9uXFxcIlxcbiAgICAgICAgICAgIDprZXk9XFxcImluZGV4XFxcIlxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTEgcm91bmRlZC1mdWxsIGJvcmRlciBib3JkZXItbi0zMCBweS0xIHB4LTIgdGV4dC14c1xcXCJcXG4gICAgICAgICAgPlxcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJ0ZXh0LW4tNDBcXFwiPnt7IGxhbmd1YWdlLmNvbW1vbl9sYW5nLm9yZyB9fTo8L3NwYW5cXG4gICAgICAgICAgICA+PHNwYW5cXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJtYXgtdy1bNTAwcHhdIG92ZXJmbG93LXgtaGlkZGVuIHRleHQtZWxsaXBzaXMgd2hpdGVzcGFjZS1ub3dyYXBcXFwiXFxuICAgICAgICAgICAgICA+e3sgdGV4dEJ1YmJsZWRhdGEoaXRlbSwgJ29yZycpIH19PC9zcGFuXFxuICAgICAgICAgICAgPlxcbiAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwibXgtMiBtdC0xIGN1cnNvci1wb2ludGVyIHRleHQteHNcXFwiXFxuICAgICAgICAgICAgICBpY29uPVxcXCJjcm9zc1xcXCJcXG4gICAgICAgICAgICAgIEBjbGljaz1cXFwiZmlsdGVyLm9yZ2FuaXphdGlvbi5zcGxpY2UoaW5kZXgsIDEpXFxcIlxcbiAgICAgICAgICAgIC8+XFxuICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgIDwvc3Bhbj5cXG4gICAgICAgIDxzcGFuIHYtaWY9XFxcImZpbHRlci5yb2xlcy5sZW5ndGhcXFwiIGNsYXNzPVxcXCJpbmxpbmUtZmxleCBmbGV4LXdyYXAgZ2FwLTJcXFwiPlxcbiAgICAgICAgICA8c3BhblxcbiAgICAgICAgICAgIHYtZm9yPVxcXCIoaXRlbSwgaW5kZXgpIGluIGZpbHRlci5yb2xlc1xcXCJcXG4gICAgICAgICAgICA6a2V5PVxcXCJpbmRleFxcXCJcXG4gICAgICAgICAgICBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0xIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLW4tMzAgcHgtMiBweS0xIHRleHQteHNcXFwiXFxuICAgICAgICAgID5cXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwidGV4dC1uLTQwXFxcIj57eyBsYW5ndWFnZS51c2VyX2xhbmcucm9sZXMgfX06PC9zcGFuXFxuICAgICAgICAgICAgPjxzcGFuPnt7IHRleHRCdWJibGVkYXRhKGl0ZW0sICdyb2xlcycpIH19PC9zcGFuPlxcbiAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwibXgtMiBtdC0xIGN1cnNvci1wb2ludGVyIHRleHQteHNcXFwiXFxuICAgICAgICAgICAgICBpY29uPVxcXCJjcm9zc1xcXCJcXG4gICAgICAgICAgICAgIEBjbGljaz1cXFwiZmlsdGVyLnJvbGVzLnNwbGljZShpbmRleCwgMSlcXFwiXFxuICAgICAgICAgICAgLz5cXG4gICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgPHNwYW4gdi1pZj1cXFwiZmlsdGVyLnN0YXR1cy5sZW5ndGhcXFwiIGNsYXNzPVxcXCJpbmxpbmUtZmxleCBmbGV4LXdyYXAgZ2FwLTJcXFwiPlxcbiAgICAgICAgICA8c3BhblxcbiAgICAgICAgICAgIHYtZm9yPVxcXCIoaXRlbSwgaW5kZXgpIGluIGZpbHRlci5zdGF0dXNcXFwiXFxuICAgICAgICAgICAgOmtleT1cXFwiaW5kZXhcXFwiXFxuICAgICAgICAgICAgY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMSByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci1uLTMwIHB5LTEgcHgtMiB0ZXh0LXhzXFxcIlxcbiAgICAgICAgICA+XFxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInRleHQtbi00MFxcXCI+e3sgbGFuZ3VhZ2UudXNlcl9sYW5nLnN0YXR1cyB9fTo8L3NwYW5cXG4gICAgICAgICAgICA+PHNwYW4+e3sgdGV4dEJ1YmJsZWRhdGEoaXRlbSwgJ3N0YXR1cycpIH19PC9zcGFuPlxcbiAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwibXgtMiBtdC0xIGN1cnNvci1wb2ludGVyIHRleHQteHNcXFwiXFxuICAgICAgICAgICAgICBpY29uPVxcXCJjcm9zc1xcXCJcXG4gICAgICAgICAgICAgIEBjbGljaz1cXFwiXFxuICAgICAgICAgICAgICAgICgpID0+IHtcXG4gICAgICAgICAgICAgICAgICBmaWx0ZXIuc3RhdHVzID0gJyc7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAvPlxcbiAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICA8L3NwYW4+XFxuICAgICAgICA8c3BhblxcbiAgICAgICAgICB2LWlmPVxcXCJmaWx0ZXIuc3RhcnRfZGF0ZSAmJiBmaWx0ZXIuZW5kX2RhdGVcXFwiXFxuICAgICAgICAgIGNsYXNzPVxcXCJpbmxpbmUtZmxleCBmbGV4LXdyYXAgZ2FwLTJcXFwiXFxuICAgICAgICA+XFxuICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgY2xhc3M9XFxcImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMSByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci1uLTMwIHB5LTEgcHgtMiB0ZXh0LXhzXFxcIlxcbiAgICAgICAgICA+XFxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInRleHQtbi00MFxcXCI+RGF0ZTo8L3NwYW5cXG4gICAgICAgICAgICA+PHNwYW4+e3tcXG4gICAgICAgICAgICAgIHRleHRCdWJibGVkYXRhKFxcbiAgICAgICAgICAgICAgICBmaWx0ZXIuc2VsZWN0ZWRfZGF0ZV9maWx0ZXIsXFxuICAgICAgICAgICAgICAgIGZpbHRlci5zZWxlY3RlZF9kYXRlX2ZpbHRlclxcbiAgICAgICAgICAgICAgKVxcbiAgICAgICAgICAgIH19PC9zcGFuPlxcbiAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwibXgtMiBtdC0xIGN1cnNvci1wb2ludGVyIHRleHQteHNcXFwiXFxuICAgICAgICAgICAgICBpY29uPVxcXCJjcm9zc1xcXCJcXG4gICAgICAgICAgICAgIEBjbGljaz1cXFwiXFxuICAgICAgICAgICAgICAgICgpID0+IHtcXG4gICAgICAgICAgICAgICAgICBjbGVhckRhdGVGaWx0ZXIoKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgXFxcIlxcbiAgICAgICAgICAgIC8+XFxuICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgIDwvc3Bhbj5cXG4gICAgICAgIDxidXR0b25cXG4gICAgICAgICAgY2xhc3M9XFxcImZvbnQtYm9sZCB1cHBlcmNhc2UgdGV4dC1ibHVlY29yYWxcXFwiXFxuICAgICAgICAgIEBjbGljaz1cXFwiXFxuICAgICAgICAgICAgKCkgPT4ge1xcbiAgICAgICAgICAgICAgY2xlYXJGaWx0ZXIoKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgIFxcXCJcXG4gICAgICAgID5cXG4gICAgICAgICAge3sgbGFuZ3VhZ2UudXNlcl9sYW5nLmNsZWFyX2ZpbHRlciB9fVxcbiAgICAgICAgPC9idXR0b24+XFxuICAgICAgPC9kaXY+XFxuICAgICAgPHAgY2xhc3M9XFxcInB5LTFcXFwiPlRvdGFsIE51bWJlciBvZiBVc2Vyczoge3sgdG90YWxVc2VyIH19PC9wPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImlhdGktbGlzdC10YWJsZSB1c2VyLWxpc3QtdGFibGUgdGV4dC1uLTQwXFxcIj5cXG4gICAgICAgIDx0YWJsZT5cXG4gICAgICAgICAgPHRoZWFkPlxcbiAgICAgICAgICAgIDx0ciBjbGFzcz1cXFwiYmctbi0xMFxcXCI+XFxuICAgICAgICAgICAgICA8dGggaWQ9XFxcInRpdGxlXFxcIiBzY29wZT1cXFwiY29sXFxcIj5cXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlclxcXCI+XFxuICAgICAgICAgICAgICAgICAgPHNwYW5cXG4gICAgICAgICAgICAgICAgICAgIHYtaWY9XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIuZGlyZWN0aW9uID09PSAnZGVzYycgJiZcXG4gICAgICAgICAgICAgICAgICAgICAgZmlsdGVyLm9yZGVyQnkgPT09ICd1c2VybmFtZSdcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwibXgtMiBoLTMgdy0yIGN1cnNvci1wb2ludGVyXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBpY29uPVxcXCJzb3J0LWRlc2NlbmRpbmdcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIEBjbGljaz1cXFwic29ydCgndXNlcm5hbWUnKVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgICAgIDxzcGFuIHYtZWxzZT5cXG4gICAgICAgICAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJteC0yIGgtMyB3LTIgY3Vyc29yLXBvaW50ZXJcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIGljb249XFxcInNvcnQtYXNjZW5kaW5nXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XFxcInNvcnQoJ3VzZXJuYW1lJylcXFwiXFxuICAgICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG5cXG4gICAgICAgICAgICAgICAgICA8c3Bhbj57eyBsYW5ndWFnZS51c2VyX2xhbmcudXNlcnMgfX08L3NwYW4+XFxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgICAgICA8dGggaWQ9XFxcIm1lYXN1cmVcXFwiIHNjb3BlPVxcXCJjb2xcXFwiIHN0eWxlPVxcXCJ3aWR0aDogMjEwcHhcXFwiPlxcbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBsYW5ndWFnZS51c2VyX2xhbmcuZW1haWwgfX08L3NwYW4+XFxuICAgICAgICAgICAgICA8L3RoPlxcblxcbiAgICAgICAgICAgICAgPHRoIGlkPVxcXCJ0aXRsZVxcXCIgc2NvcGU9XFxcImNvbFxcXCI+XFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXJcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgICAgICAgICB2LWlmPVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgZmlsdGVyLmRpcmVjdGlvbiA9PT0gJ2Rlc2MnICYmXFxuICAgICAgICAgICAgICAgICAgICAgIGZpbHRlci5vcmRlckJ5ID09PSAncHVibGlzaGVyX25hbWUnXFxuICAgICAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcIm14LTIgaC0zIHctMiBjdXJzb3ItcG9pbnRlclxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgaWNvbj1cXFwic29ydC1kZXNjZW5kaW5nXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XFxcInNvcnQoJ3B1Ymxpc2hlcl9uYW1lJylcXFwiXFxuICAgICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgICA8c3BhbiB2LWVsc2U+XFxuICAgICAgICAgICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwibXgtMiBoLTMgdy0yIGN1cnNvci1wb2ludGVyXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBpY29uPVxcXCJzb3J0LWFzY2VuZGluZ1xcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVxcXCJzb3J0KCdwdWJsaXNoZXJfbmFtZScpXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XFxuXFxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3tsYW5ndWFnZS5jb21tb25fbGFuZy5vcmdhbmlzYXRpb25fbmFtZX19PC9zcGFuPlxcbiAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICA8L3RoPlxcblxcbiAgICAgICAgICAgICAgPHRoIGlkPVxcXCJ0aXRsZVxcXCIgc2NvcGU9XFxcImNvbFxcXCI+XFxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IGxhbmd1YWdlLnVzZXJfbGFuZy51c2VyX3JvbGUgfX08L3NwYW4+XFxuICAgICAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICAgICAgPHRoPlxcbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBsYW5ndWFnZS51c2VyX2xhbmcuc3RhdHVzIH19PC9zcGFuPlxcbiAgICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICAgIDx0aFxcbiAgICAgICAgICAgICAgICBpZD1cXFwiYWdncmVnYXRpb25fc3RhdHVzXFxcIlxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwiZmxleCBpdGVtcy1jZW50ZXJcXFwiXFxuICAgICAgICAgICAgICAgIHNjb3BlPVxcXCJjb2xcXFwiXFxuICAgICAgICAgICAgICAgIHdpZHRoPVxcXCIyMDhweFxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgPHNwYW5cXG4gICAgICAgICAgICAgICAgICB2LWlmPVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlci5kaXJlY3Rpb24gPT09ICdkZXNjJyAmJlxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyLm9yZGVyQnkgPT09ICdjcmVhdGVkX2F0J1xcbiAgICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cXFwiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyXFxcIlxcbiAgICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJteC0yIGgtMyB3LTIgY3Vyc29yLXBvaW50ZXJcXFwiXFxuICAgICAgICAgICAgICAgICAgICBpY29uPVxcXCJzb3J0LWRlc2NlbmRpbmdcXFwiXFxuICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XFxcInNvcnQoJ2NyZWF0ZWRfYXQnKVxcXCJcXG4gICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgIDxzcGFuIHYtZWxzZT5cXG4gICAgICAgICAgICAgICAgICA8c3ZnLXZ1ZVxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcIm14LTIgaC0zIHctMiBjdXJzb3ItcG9pbnRlclxcXCJcXG4gICAgICAgICAgICAgICAgICAgIGljb249XFxcInNvcnQtYXNjZW5kaW5nXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVxcXCJzb3J0KCdsYXN0X2xvZ2dlZF9pbicpXFxcIlxcbiAgICAgICAgICAgICAgICAgIC8+XFxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcIndoaXRlc3BhY2Utbm93cmFwXFxcIj5MYXN0IExvZ2luPC9zcGFuPlxcbiAgICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICAgIDx0aFxcbiAgICAgICAgICAgICAgICB2LWlmPVxcXCJ1c2VyUm9sZSAhPT0gJ2dlbmVyYWxfdXNlcidcXFwiXFxuICAgICAgICAgICAgICAgIGlkPVxcXCJhY3Rpb25cXFwiXFxuICAgICAgICAgICAgICAgIHNjb3BlPVxcXCJjb2xcXFwiXFxuICAgICAgICAgICAgICAgIHdpZHRoPVxcXCIxOTBweFxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgbGFuZ3VhZ2UudXNlcl9sYW5nLmFjdGlvbiB9fTwvc3Bhbj5cXG4gICAgICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgICAgICA8dGggaWQ9XFxcImNiXFxcIiBzY29wZT1cXFwiY29sXFxcIj5cXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcImN1cnNvci1wb2ludGVyXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8c3ZnLXZ1ZSBpY29uPVxcXCJjaGVja2JveFxcXCIgQGNsaWNrPVxcXCJ0b2dnbGVTZWxlY3RhbGxcXFwiIC8+XFxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgICAgPC90cj5cXG4gICAgICAgICAgPC90aGVhZD5cXG4gICAgICAgICAgPHRib2R5IHYtaWY9XFxcInVzZXJzRGF0YT8uZGF0YS5sZW5ndGggPiAwIHx8IGZldGNoaW5nVGFibGVEYXRhXFxcIj5cXG4gICAgICAgICAgICA8dHIgdi1pZj1cXFwiZmV0Y2hpbmdUYWJsZURhdGFcXFwiPlxcbiAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XFxcIjRcXFwiPkZldGNoaW5nIERhdGEuLi48L3RkPlxcbiAgICAgICAgICAgIDwvdHI+XFxuICAgICAgICAgICAgPHRyIHYtZm9yPVxcXCIodXNlciwgaW5kZXgpIGluIHVzZXJzRGF0YT8uZGF0YVxcXCIgdi1lbHNlIDprZXk9XFxcImluZGV4XFxcIj5cXG4gICAgICAgICAgICAgIDx0ZD5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZWxsaXBzaXMgcmVsYXRpdmVcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxwXFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwidy0zMiBvdmVyZmxvdy14LWhpZGRlbiBvdmVyZmxvdy1lbGxpcHNpcyB3aGl0ZXNwYWNlLW5vd3JhcCB0ZXh0LXNtIGNhcGl0YWxpemUgdGV4dC1uLTUwXFxcIlxcbiAgICAgICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgICAgIHt7IHVzZXJbJ2Z1bGxfbmFtZSddIH19XFxuICAgICAgICAgICAgICAgICAgPC9wPlxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiZWxsaXBzaXMgcmVsYXRpdmVcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxwXFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwidy0zMiBvdmVyZmxvdy14LWhpZGRlbiBvdmVyZmxvdy1lbGxpcHNpcyB3aGl0ZXNwYWNlLW5vd3JhcFxcXCJcXG4gICAgICAgICAgICAgICAgICA+XFxuICAgICAgICAgICAgICAgICAgICB7eyB1c2VyWyd1c2VybmFtZSddIH19XFxuICAgICAgICAgICAgICAgICAgPC9wPlxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XFxcImZsZXggc3BhY2UteC0yXFxcIj5cXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcIm1zLTFcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxzdmctdnVlXFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwibXQtMSBjdXJzb3ItcG9pbnRlciB0ZXh0LWJhc2VcXFwiXFxuICAgICAgICAgICAgICAgICAgICA6aWNvbj1cXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIHVzZXJbJ2VtYWlsX3ZlcmlmaWVkX2F0J11cXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICd0aWNrLW91dGxpbmUnXFxuICAgICAgICAgICAgICAgICAgICAgICAgOiAnYWxlcnQtb3V0bGluZSdcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJcXG4gICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCIuLi4gdHJ1bmNhdGVcXFwiPlxcbiAgICAgICAgICAgICAgICAgIHt7IHVzZXJbJ2VtYWlsJ10gfX1cXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgICAgIDx0ZCB2LWlmPVxcXCJ1c2VyUm9sZSA9PT0gJ3N1cGVyYWRtaW4nIHx8IHVzZXJSb2xlID09PSAnaWF0aV9hZG1pbidcXFwiPlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJlbGxpcHNpcyByZWxhdGl2ZVxcXCI+XFxuICAgICAgICAgICAgICAgICAgPHBcXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJ3LTMyIG92ZXJmbG93LXgtaGlkZGVuIG92ZXJmbG93LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwXFxcIlxcbiAgICAgICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgICAgIHt7IHVzZXJbJ25hbWUnXSB9fVxcbiAgICAgICAgICAgICAgICAgICAge3tcXG4gICAgICAgICAgICAgICAgICAgICAgdXNlclsncHVibGlzaGVyX25hbWUnXSA/IHVzZXJbJ3B1Ymxpc2hlcl9uYW1lJ10gOiAnLSAtJ1xcbiAgICAgICAgICAgICAgICAgICAgfX1cXG4gICAgICAgICAgICAgICAgICA8L3A+XFxuXFxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwidy01MlxcXCI+XFxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwiZWxsaXBzaXNfX3RpdGxlLS1ob3ZlclxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgPnt7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdXNlclsncHVibGlzaGVyX25hbWUnXSA/IHVzZXJbJ3B1Ymxpc2hlcl9uYW1lJ10gOiAnLSAtJ1xcbiAgICAgICAgICAgICAgICAgICAgICB9fVxcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XFxcImNhcGl0YWxpemVcXFwiPlxcbiAgICAgICAgICAgICAgICB7eyByb2xlc1t1c2VyWydyb2xlX2lkJ11dIH19XFxuICAgICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgICAgPHRkIDpjbGFzcz1cXFwidXNlclsnc3RhdHVzJ10gPyAndGV4dC1zcHJpbmctNTAnIDogJ3RleHQtbi00MCdcXFwiPlxcbiAgICAgICAgICAgICAgICB7e1xcbiAgICAgICAgICAgICAgICAgIHVzZXJbJ3N0YXR1cyddXFxuICAgICAgICAgICAgICAgICAgICA/IGxhbmd1YWdlLnVzZXJfbGFuZy5hY3RpdmVcXG4gICAgICAgICAgICAgICAgICAgIDogbGFuZ3VhZ2UudXNlcl9sYW5nLmluYWN0aXZlXFxuICAgICAgICAgICAgICAgIH19XFxuICAgICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgICAgPHRkPlxcbiAgICAgICAgICAgICAgICB7e1xcbiAgICAgICAgICAgICAgICAgIHVzZXJbJ2xhc3RfbG9nZ2VkX2luJ11cXG4gICAgICAgICAgICAgICAgICAgID8gZm9ybWF0RGF0ZSh1c2VyWydsYXN0X2xvZ2dlZF9pbiddKVxcbiAgICAgICAgICAgICAgICAgICAgOiBsYW5ndWFnZS5jb21tb25fbGFuZy5taXNzaW5nLm5vdF9hdmFpbGFibGVcXG4gICAgICAgICAgICAgICAgfX1cXG4gICAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgICA8dGRcXG4gICAgICAgICAgICAgICAgdi1pZj1cXFwidXNlclJvbGUgIT09ICdnZW5lcmFsX3VzZXInXFxcIlxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwiZmxleCBoLWZ1bGwgaXRlbXMtY2VudGVyIHNwYWNlLXgtNlxcXCJcXG4gICAgICAgICAgICAgID5cXG4gICAgICAgICAgICAgICAgPHAgQGNsaWNrPVxcXCJlZGl0VXNlcih1c2VyKVxcXCI+XFxuICAgICAgICAgICAgICAgICAgPHN2Zy12dWVcXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJjdXJzb3ItcG9pbnRlciB0ZXh0LWJhc2VcXFwiXFxuICAgICAgICAgICAgICAgICAgICBpY29uPVxcXCJlZGl0LWFjdGlvblxcXCJcXG4gICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICA8L3A+XFxuICAgICAgICAgICAgICAgIDwhLS0gPHAgQGNsaWNrPVxcXCJkZWxldGVVc2VyKHVzZXJbJ2lkJ10pXFxcIj4gLS0+XFxuICAgICAgICAgICAgICAgIDxwIEBjbGljaz1cXFwib3BlbkRlbGV0ZW1vZGVsKHVzZXIpXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8c3ZnLXZ1ZSBjbGFzcz1cXFwiY3Vyc29yLXBvaW50ZXIgdGV4dC1iYXNlXFxcIiBpY29uPVxcXCJkZWxldGVcXFwiIC8+XFxuICAgICAgICAgICAgICAgIDwvcD5cXG5cXG4gICAgICAgICAgICAgICAgPHAgQGNsaWNrPVxcXCJvcGVuU3RhdHVzTW9kZWwodXNlcilcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgICAgICAgICA6Y2xhc3M9XFxcInVzZXJbJ3N0YXR1cyddID8gJ2JnLXNwcmluZy01MCcgOiAnYmctbi00MCdcXFwiXFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwicmVsYXRpdmUgYmxvY2sgaC00IHctNyBjdXJzb3ItcG9pbnRlciByb3VuZGVkLWZ1bGxcXFwiXFxuICAgICAgICAgICAgICAgICAgPlxcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cXG4gICAgICAgICAgICAgICAgICAgICAgOmNsYXNzPVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VyWydzdGF0dXMnXSA/ICd0cmFuc2xhdGUteC0wJyA6ICd0cmFuc2xhdGUteC1mdWxsJ1xcbiAgICAgICAgICAgICAgICAgICAgICBcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJhYnNvbHV0ZSB0b3AtMS8yIGxlZnQtWzJweF0gYmxvY2sgaC0zIHctMyAtdHJhbnNsYXRlLXktMS8yIHJvdW5kZWQtZnVsbCBiZy13aGl0ZSBkdXJhdGlvbi0yMDBcXFwiXFxuICAgICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgPC9wPlxcbiAgICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgICAgIDx0ZD5cXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInJlbGF0aXZlIGgtNSB3LTVcXFwiXFxuICAgICAgICAgICAgICAgICAgPjxpbnB1dFxcbiAgICAgICAgICAgICAgICAgICAgdi1tb2RlbD1cXFwiY2hlY2tsaXN0XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcInVzZXItY2hlY2tsaXN0XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgOnZhbHVlPVxcXCJ1c2VyWydpZCddXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cXFwiY2hlY2tib3hcXFwiXFxuICAgICAgICAgICAgICAgICAgLz5cXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwicHNldWRvLWNoZWNrYm94XFxcIiAvPlxcbiAgICAgICAgICAgICAgICAgIDxzdmctdnVlIGNsYXNzPVxcXCJ0aWNrZWQtc3ZnIHRleHQtc3ByaW5nLTUwXFxcIiBpY29uPVxcXCJ0aWNrZWRcXFwiIC8+XFxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgPC90cj5cXG4gICAgICAgICAgPC90Ym9keT5cXG4gICAgICAgICAgPHRib2R5IHYtZWxzZT5cXG4gICAgICAgICAgICA8dGQgdi1pZj1cXFwibG9hZGVyXFxcIiBjb2xzcGFuPVxcXCI1XFxcIiBjbGFzcz1cXFwidGV4dC1jZW50ZXJcXFwiPlxcbiAgICAgICAgICAgICAgPGRpdiBjb2xzcGFuPVxcXCI1XFxcIiBjbGFzcz1cXFwic3BpblxcXCI+PC9kaXY+XFxuICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgICA8dGQgdi1lbHNlIGNvbHNwYW49XFxcIjhcXFwiIGNsYXNzPVxcXCJ0ZXh0LWNlbnRlclxcXCI+XFxuICAgICAgICAgICAgICB7eyBsYW5ndWFnZS51c2VyX2xhbmcudXNlcl9ub3RfZm91bmQgfX1cXG4gICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICA8L3Rib2R5PlxcbiAgICAgICAgPC90YWJsZT5cXG4gICAgICA8L2Rpdj5cXG5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJtdC02XFxcIj5cXG4gICAgICAgIDxQYWdpbmF0aW9uXFxuICAgICAgICAgIHYtaWY9XFxcInVzZXJzRGF0YSAmJiB1c2Vyc0RhdGFbJ2xhc3RfcGFnZSddID4gMVxcXCJcXG4gICAgICAgICAgOmRhdGE9XFxcInVzZXJzRGF0YVxcXCJcXG4gICAgICAgICAgQGZldGNoLWFjdGl2aXRpZXM9XFxcImZldGNoVXNlcnNMaXN0XFxcIlxcbiAgICAgICAgLz5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICA8L2Rpdj5cXG48L3RlbXBsYXRlPlxcbjxzY3JpcHQgc2V0dXAgbGFuZz1cXFwidHNcXFwiPlxcbmltcG9ydCB7IGRlZmluZVByb3BzLCByZWFjdGl2ZSwgcmVmLCBjb21wdXRlZCwgd2F0Y2gsIG9uTW91bnRlZCB9IGZyb20gJ3Z1ZSc7XFxuaW1wb3J0IExvYWRlciBmcm9tICcuLi8uLi9jb21wb25lbnRzL0xvYWRlci52dWUnO1xcbmltcG9ydCBUb2FzdCBmcm9tICdDb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWUnO1xcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XFxuaW1wb3J0IFBvcHVwTW9kYWwgZnJvbSAnQ29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZSc7XFxuaW1wb3J0IGVuY3J5cHQgZnJvbSAnQ29tcG9zYWJsZS9lbmNyeXB0aW9uJztcXG5pbXBvcnQgTXVsdGlzZWxlY3QgZnJvbSAnQHZ1ZWZvcm0vbXVsdGlzZWxlY3QnO1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcXG5pbXBvcnQgUGFnaW5hdGlvbiBmcm9tICdDb21wb25lbnRzL1RhYmxlUGFnaW5hdGlvbi52dWUnO1xcbmltcG9ydCB7IHdhdGNoSWdub3JhYmxlIH0gZnJvbSAnQHZ1ZXVzZS9jb3JlJztcXG5pbXBvcnQgRGF0ZVJhbmdlV2lkZ2V0IGZyb20gJ0NvbXBvbmVudHMvRGF0ZVJhbmdlV2lkZ2V0LnZ1ZSc7XFxuXFxuY29uc3QgbGFuZ3VhZ2UgPSB3aW5kb3dbJ2dsb2JhbExhbmcnXTtcXG5jb25zdCBwcm9wcyA9IGRlZmluZVByb3BzKHtcXG4gIG9yZ2FuaXphdGlvbnM6IHsgdHlwZTogT2JqZWN0LCByZXF1aXJlZDogdHJ1ZSB9LFxcbiAgc3RhdHVzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcXG4gIHJvbGVzOiB7IHR5cGU6IE9iamVjdCwgcmVxdWlyZWQ6IHRydWUgfSxcXG4gIHVzZXJSb2xlOiB7IHR5cGU6IFN0cmluZywgcmVxdWlyZWQ6IHRydWUgfSxcXG4gIG9sZGVzdERhdGVzOiB7IHR5cGU6IFN0cmluZywgcmVxdWlyZWQ6IHRydWUgfSxcXG59KTtcXG5cXG5jb25zdCB0b2FzdERhdGEgPSByZWFjdGl2ZSh7XFxuICB2aXNpYmlsaXR5OiBmYWxzZSxcXG4gIG1lc3NhZ2U6ICcnLFxcbiAgdHlwZTogZmFsc2UsXFxufSk7XFxuXFxuY29uc3QgZmlsdGVyID0gcmVhY3RpdmUoe1xcbiAgb3JnYW5pemF0aW9uOiBbXSxcXG4gIHJvbGVzOiBbXSxcXG4gIHN0YXR1czogJycsXFxuICBvcmRlckJ5OiAnJyxcXG4gIGRpcmVjdGlvbjogJycsXFxuICBxOiAnJyxcXG4gIHN0YXJ0X2RhdGU6ICcnLFxcbiAgZW5kX2RhdGU6ICcnLFxcbiAgZGF0ZV90eXBlOiAnY3JlYXRlZF9hdCcsXFxuICBzZWxlY3RlZF9kYXRlX2ZpbHRlcjogJycsXFxufSk7XFxuXFxuY29uc3QgaXNMb2FkZXJWaXNpYmxlID0gcmVmKGZhbHNlKTtcXG5jb25zdCBhZGRVc2VyRm9ybSA9IHJlZihmYWxzZSk7XFxuY29uc3QgZWRpdFVzZXJGb3JtID0gcmVmKGZhbHNlKTtcXG5jb25zdCB1c2Vyc0RhdGEgPSByZWFjdGl2ZSh7IGRhdGE6IFtdIH0pO1xcbmNvbnN0IGlzRW1wdHkgPSByZWYodHJ1ZSk7XFxuY29uc3QgYWxsU2VsZWN0ZWQgPSByZWY8Ym9vbGVhbltdPihbXSk7XFxuY29uc3QgZGVsZXRlTW9kYWwgPSByZWYoZmFsc2UpO1xcbmNvbnN0IGRlbGV0ZUlkID0gcmVmKCk7XFxuY29uc3QgdG90YWxVc2VyID0gcmVmKDApO1xcbmNvbnN0IHN0YXR1c0lkID0gcmVmKCk7XFxuY29uc3Qgc3RhdHVzTW9kYWwgPSByZWYoZmFsc2UpO1xcbmNvbnN0IHN0YXR1c1ZhbHVlID0gcmVmKCk7XFxuY29uc3Qgc3RhdHVzVXNlcm5hbWUgPSByZWYoKTtcXG5jb25zdCBkZWxldGVVc2VybmFtZSA9IHJlZigpO1xcbmNvbnN0IGxvYWRlciA9IHJlZih0cnVlKTtcXG5jb25zdCBmZXRjaGluZ1RhYmxlRGF0YSA9IHJlZihmYWxzZSk7XFxuY29uc3Qgc2VsZWN0ZWRJZHMgPSByZWYoe30pO1xcbmNvbnN0IGNoZWNrbGlzdCA9IHJlZihbXSk7XFxuY29uc3QgY3VycmVudHBhZ2VEYXRhID0gcmVmKFtdKTtcXG5jb25zdCBjbGVhckRhdGUgPSByZWYoZmFsc2UpO1xcbmNvbnN0IGVkaXRVc2VySWQgPSByZWYoJycpO1xcbmNvbnN0IGRhdGVUeXBlID0gcmVmKCdBbGwgVGltZScpO1xcblxcbmNvbnN0IGRyb3Bkb3duUmFuZ2UgPSB7XFxuICBjcmVhdGVkX2F0OiAnVXNlciBjcmVhdGVkIGRhdGUnLFxcbiAgbGFzdF9sb2dnZWRfaW46ICdMYXN0IGxvZ2luIGRhdGUnLFxcbn07XFxuXFxuY29uc3QgZm9ybURhdGEgPSByZWFjdGl2ZSh7XFxuICB1c2VybmFtZTogJycsXFxuICBmdWxsX25hbWU6ICcnLFxcbiAgZW1haWw6ICcnLFxcbiAgc3RhdHVzOiAnMScsXFxuICByb2xlX2lkOiAnJyxcXG4gIHBhc3N3b3JkOiAnJyxcXG4gIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogJycsXFxufSk7XFxuXFxuY29uc3QgZm9ybUVycm9yID0gcmVhY3RpdmUoe1xcbiAgdXNlcm5hbWU6ICcnLFxcbiAgZnVsbF9uYW1lOiAnJyxcXG4gIGVtYWlsOiAnJyxcXG4gIHN0YXR1czogJycsXFxuICByb2xlX2lkOiAnJyxcXG4gIHBhc3N3b3JkOiAnJyxcXG4gIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogJycsXFxufSk7XFxuaW1wb3J0IHsga2ViYWJDYXNlVG9TbmFrZWNhc2UgfSBmcm9tICdDb21wb3NhYmxlL3V0aWxzJztcXG5cXG5jb25zdCBpc0ZpbHRlckFwcGxpZWQgPSBjb21wdXRlZCgoKSA9PiB7XFxuICByZXR1cm4gKFxcbiAgICBmaWx0ZXIub3JnYW5pemF0aW9uLmxlbmd0aCArIGZpbHRlci5yb2xlcy5sZW5ndGggIT0gMCB8fFxcbiAgICBmaWx0ZXIuc3RhdHVzICE9ICcnIHx8XFxuICAgIChmaWx0ZXIuc3RhcnRfZGF0ZSAmJiBmaWx0ZXIuZW5kX2RhdGUpXFxuICApO1xcbn0pO1xcblxcbmNvbnN0IHsgaWdub3JlVXBkYXRlcyB9ID0gd2F0Y2hJZ25vcmFibGUodG9hc3REYXRhLCAoKSA9PiB1bmRlZmluZWQsIHtcXG4gIGZsdXNoOiAnc3luYycsXFxufSk7XFxuXFxud2F0Y2goXFxuICAoKSA9PiB0b2FzdERhdGEudmlzaWJpbGl0eSxcXG4gICgpID0+IHtcXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XFxuICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSBmYWxzZTtcXG4gICAgICBpZ25vcmVUb2FzdFVwZGF0ZSgpO1xcbiAgICB9LCAyMDAwKTtcXG4gIH1cXG4pO1xcblxcbmNvbnN0IGlnbm9yZVRvYXN0VXBkYXRlID0gKCkgPT4ge1xcbiAgaWdub3JlVXBkYXRlcygoKSA9PiB7XFxuICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gJyc7XFxuICB9KTtcXG59O1xcblxcbmNvbnN0IGNsZWFyRGF0ZUZpbHRlciA9ICgpID0+IHtcXG4gIGZpbHRlci5zZWxlY3RlZF9kYXRlX2ZpbHRlciA9ICcnO1xcbiAgY2xlYXJEYXRlUmFuZ2VGaWx0ZXIoKTtcXG59O1xcblxcbm9uTW91bnRlZCgoKSA9PiB7XFxuICBsZXQgZmlsdGVyUGFyYW1zID0gZ2V0RmlsdGVyUGFyYW1zRnJvbVByZXZpb3VzUGFnZSgpO1xcbiAgaWYgKGZpbHRlclBhcmFtcykge1xcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpbHRlclBhcmFtcy5sZW5ndGg7IGkrKykge1xcbiAgICAgIGxldCBrZXkgPSBrZWJhYkNhc2VUb1NuYWtlY2FzZShmaWx0ZXJQYXJhbXNbaV1bMF0pO1xcbiAgICAgIGxldCB2YWx1ZSA9IGZpbHRlclBhcmFtc1tpXVsxXTtcXG4gICAgICBpZiAoWydyb2xlcycsICdvcmdhbml6YXRpb24nXS5pbmNsdWRlcyhrZXkpKSB7XFxuICAgICAgICBmaWx0ZXJba2V5XS5wdXNoKHZhbHVlKTtcXG4gICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2RhdGVfdHlwZScpIHtcXG4gICAgICAgIGRhdGVUeXBlLnZhbHVlID0gdmFsdWUuc3BsaXQoJy0nKS5qb2luKCcgJyk7XFxuICAgICAgfSBlbHNlIHtcXG4gICAgICAgIGZpbHRlcltrZXldID0gdmFsdWU7XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxufSk7XFxuY29uc3QgZ2V0RmlsdGVyUGFyYW1zRnJvbVByZXZpb3VzUGFnZSA9ICgpID0+IHtcXG4gIGxldCBxdWVyeVN0cmluZyA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmPy50b1N0cmluZygpO1xcblxcbiAgaWYgKHF1ZXJ5U3RyaW5nKSB7XFxuICAgIHF1ZXJ5U3RyaW5nID0gcXVlcnlTdHJpbmcuc3BsaXQoJz8nKVsxXTtcXG5cXG4gICAgbGV0IHF1ZXJ5UGFyYW1zSW5LZXlWYWw6IG9iamVjdFtdID0gW107XFxuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gcXVlcnlTdHJpbmc/LnNwbGl0KCcmJyk7XFxuXFxuICAgIGlmIChxdWVyeVBhcmFtcykge1xcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcXVlcnlQYXJhbXMubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgIGxldCBba2V5LCB2YWx1ZV0gPSBxdWVyeVBhcmFtc1tpXS5zcGxpdCgnPScpO1xcbiAgICAgICAgaWYgKGtleSkge1xcbiAgICAgICAgICBxdWVyeVBhcmFtc0luS2V5VmFsLnB1c2goW2tleSwgdmFsdWUgPz8gJyddKTtcXG4gICAgICAgIH1cXG4gICAgICB9XFxuICAgIH1cXG5cXG4gICAgcmV0dXJuIHF1ZXJ5UGFyYW1zSW5LZXlWYWw7XFxuICB9XFxuXFxuICByZXR1cm4gZmFsc2U7XFxufTtcXG5cXG5vbk1vdW50ZWQoYXN5bmMgKCkgPT4ge1xcbiAgYXhpb3MuZ2V0KGAvdXNlcnMvcGFnZS8xYCkudGhlbigocmVzKSA9PiB7XFxuICAgIGNvbnN0IHJlc3BvbnNlID0gcmVzLmRhdGE7XFxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzcG9uc2UuZGF0YS5kYXRhLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgcmVzcG9uc2UuZGF0YS5kYXRhW2ldLnJvbGUgPSByZXNwb25zZS5kYXRhLmRhdGFbaV0ucm9sZVxcbiAgICAgICAgLnNwbGl0KCdfJylcXG4gICAgICAgIC5qb2luKCcgJyk7XFxuICAgIH1cXG4gICAgT2JqZWN0LmFzc2lnbih1c2Vyc0RhdGEsIHJlc3BvbnNlLmRhdGEpO1xcbiAgICBpc0VtcHR5LnZhbHVlID0gcmVzcG9uc2UuZGF0YS5kYXRhLmxlbmd0aCA/IGZhbHNlIDogdHJ1ZTtcXG4gICAgbG9hZGVyLnZhbHVlID0gZmFsc2U7XFxuICB9KTtcXG5cXG4gIHNldFRpbWVvdXQoKCkgPT4ge1xcbiAgICB0b2FzdERhdGEudmlzaWJpbGl0eSA9IGZhbHNlO1xcbiAgfSwgNTAwMCk7XFxufSk7XFxuXFxuY29uc3QgdGV4dEJ1YmJsZWRhdGEgPSAoaWQsIGZpZWxkKSA9PiB7XFxuICBzd2l0Y2ggKGZpZWxkKSB7XFxuICAgIGNhc2UgJ29yZyc6XFxuICAgICAgcmV0dXJuIHByb3BzLm9yZ2FuaXphdGlvbnNbK2lkXTtcXG4gICAgY2FzZSAncm9sZXMnOlxcbiAgICAgIHJldHVybiBwcm9wcy5yb2xlc1sraWRdO1xcbiAgICBjYXNlICdzdGF0dXMnOlxcbiAgICAgIHJldHVybiBwcm9wcy5zdGF0dXNbK2lkXTtcXG4gICAgZGVmYXVsdDpcXG4gICAgICByZXR1cm4gZmllbGQ7XFxuICB9XFxufTtcXG5cXG5jb25zdCBjbGVhckZpbHRlciA9ICgpID0+IHtcXG4gIGZpbHRlci5vcmdhbml6YXRpb24gPSBbXTtcXG4gIGZpbHRlci5yb2xlcyA9IFtdO1xcbiAgZmlsdGVyLnN0YXR1cyA9ICcnO1xcbiAgZmlsdGVyLmRpcmVjdGlvbiA9ICcnO1xcbiAgZmlsdGVyLm9yZGVyQnkgPSAnJztcXG4gIGZpbHRlci5xID0gJyc7XFxuICBmaWx0ZXIuc2VsZWN0ZWRfZGF0ZV9maWx0ZXIgPSAnJztcXG4gIGNsZWFyRGF0ZVJhbmdlRmlsdGVyKCk7XFxufTtcXG5cXG5jb25zdCBjbGVhckRhdGVSYW5nZUZpbHRlciA9ICgpID0+IHtcXG4gIGNsZWFyRGF0ZS52YWx1ZSA9IHRydWU7XFxufTtcXG5cXG5jb25zdCBzZXREYXRlUmFuZ2VEYXRlID0gKHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgc2VsZWN0ZWREYXRlKSA9PiB7XFxuICBmaWx0ZXIuc3RhcnRfZGF0ZSA9IHN0YXJ0RGF0ZTtcXG4gIGZpbHRlci5lbmRfZGF0ZSA9IGVuZERhdGU7XFxuICBmaWx0ZXIuc2VsZWN0ZWRfZGF0ZV9maWx0ZXIgPSBzZWxlY3RlZERhdGU7XFxufTtcXG5jb25zdCBzZXREYXRlVHlwZSA9IChkYXRlVHlwZSkgPT4ge1xcbiAgZmlsdGVyLmRhdGVfdHlwZSA9IGRhdGVUeXBlO1xcbn07XFxuXFxuY29uc3QgY3JlYXRlVXNlciA9ICgpID0+IHtcXG4gIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XFxuICBsZXQgcGFzc3dvcmREYXRhID0ge1xcbiAgICBwYXNzd29yZDogZW5jcnlwdChmb3JtRGF0YS5wYXNzd29yZCwgcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZID8/ICcnKSxcXG4gICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiBlbmNyeXB0KFxcbiAgICAgIGZvcm1EYXRhLnBhc3N3b3JkX2NvbmZpcm1hdGlvbixcXG4gICAgICBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkgPz8gJydcXG4gICAgKSxcXG4gIH07XFxuXFxuICBheGlvc1xcbiAgICAucG9zdCgnL3VzZXInLCB7IC4uLmZvcm1EYXRhLCAuLi5wYXNzd29yZERhdGEgfSlcXG4gICAgLnRoZW4oKHJlcykgPT4ge1xcbiAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcXG4gICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHJlcy5kYXRhLm1lc3NhZ2U7XFxuICAgICAgdG9hc3REYXRhLnR5cGUgPSByZXMuZGF0YS5zdWNjZXNzO1xcbiAgICAgIHNldEZvcm1FcnJvcigpO1xcbiAgICAgIHNldEZvcm1FcnJvcihyZXMuZGF0YS5lcnJvcnMpO1xcblxcbiAgICAgIGlmIChyZXMuZGF0YS5zdWNjZXNzKSB7XFxuICAgICAgICBjbGVhckZpbHRlcigpO1xcbiAgICAgICAgZmV0Y2hVc2Vyc0xpc3QodXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXSwgdHJ1ZSk7XFxuICAgICAgICBhZGRVc2VyRm9ybS52YWx1ZSA9IGZhbHNlO1xcbiAgICAgICAgZW1wdHlGb3JtRGF0YSgpO1xcbiAgICAgICAgc2V0Rm9ybUVycm9yKCk7XFxuICAgICAgfVxcbiAgICB9KVxcbiAgICAuY2F0Y2goKGVycm9yKSA9PiB7XFxuICAgICAgdG9hc3REYXRhLnZpc2liaWxpdHkgPSB0cnVlO1xcbiAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gZXJyb3IuZGF0YS5tZXNzYWdlO1xcbiAgICAgIHRvYXN0RGF0YS50eXBlID0gZmFsc2U7XFxuICAgICAgYWRkVXNlckZvcm0udmFsdWUgPSBmYWxzZTtcXG4gICAgfSlcXG4gICAgLmZpbmFsbHkoKCkgPT4ge1xcbiAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xcbiAgICB9KTtcXG59O1xcblxcbmNvbnN0IGVkaXRVc2VyID0gKHVzZXIpID0+IHtcXG4gIGZvcm1EYXRhLnVzZXJuYW1lID0gdXNlci51c2VybmFtZTtcXG4gIGZvcm1EYXRhLmZ1bGxfbmFtZSA9IHVzZXIuZnVsbF9uYW1lO1xcbiAgZm9ybURhdGEuZW1haWwgPSB1c2VyLmVtYWlsO1xcbiAgZm9ybURhdGEucm9sZV9pZCA9IHVzZXIucm9sZV9pZDtcXG4gIGVkaXRVc2VySWQudmFsdWUgPSB1c2VyLmlkO1xcbiAgZWRpdFVzZXJGb3JtLnZhbHVlID0gdHJ1ZTtcXG59O1xcblxcbmNvbnN0IGVtcHR5Rm9ybURhdGEgPSAoKSA9PiB7XFxuICBmb3IgKGNvbnN0IGtleSBpbiBmb3JtRGF0YSkge1xcbiAgICBmb3JtRGF0YVtrZXldID0ga2V5ID09PSAnc3RhdHVzJyA/IDEgOiAnJztcXG4gIH1cXG59O1xcbmNvbnN0IHNldEZvcm1FcnJvciA9IChlcnJvcnMgPSB7fSkgPT4ge1xcbiAgaWYgKE9iamVjdC5rZXlzKGVycm9ycykubGVuZ3RoKSB7XFxuICAgIGZvciAoY29uc3Qga2V5IGluIGVycm9ycykge1xcbiAgICAgIGZvcm1FcnJvcltrZXldID0gZXJyb3JzW2tleV07XFxuICAgIH1cXG4gIH0gZWxzZSB7XFxuICAgIGZvciAoY29uc3Qga2V5IGluIGZvcm1FcnJvcikge1xcbiAgICAgIGZvcm1FcnJvcltrZXldID0gJyc7XFxuICAgIH1cXG4gIH1cXG59O1xcblxcbmNvbnN0IG9wZW5TdGF0dXNNb2RlbCA9ICh1c2VyKSA9PiB7XFxuICBzdGF0dXNJZC52YWx1ZSA9IHVzZXIuaWQ7XFxuICBzdGF0dXNWYWx1ZS52YWx1ZSA9IHVzZXIuc3RhdHVzO1xcbiAgc3RhdHVzTW9kYWwudmFsdWUgPSB0cnVlO1xcbiAgc3RhdHVzVXNlcm5hbWUudmFsdWUgPSB1c2VyLnVzZXJuYW1lO1xcbn07XFxuXFxuY29uc3QgdXBkYXRlVXNlciA9ICgpID0+IHtcXG4gIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XFxuICBsZXQgcGFzc3dvcmREYXRhID0ge1xcbiAgICBwYXNzd29yZDogZW5jcnlwdChmb3JtRGF0YS5wYXNzd29yZCwgcHJvY2Vzcy5lbnYuTUlYX0VOQ1JZUFRJT05fS0VZID8/ICcnKSxcXG4gICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiBlbmNyeXB0KFxcbiAgICAgIGZvcm1EYXRhLnBhc3N3b3JkX2NvbmZpcm1hdGlvbixcXG4gICAgICBwcm9jZXNzLmVudi5NSVhfRU5DUllQVElPTl9LRVkgPz8gJydcXG4gICAgKSxcXG4gIH07XFxuXFxuICBheGlvc1xcbiAgICAucGF0Y2goYC91c2VyLyR7ZWRpdFVzZXJJZC52YWx1ZX1gLCB7IC4uLmZvcm1EYXRhLCAuLi5wYXNzd29yZERhdGEgfSlcXG4gICAgLnRoZW4oKHJlcykgPT4ge1xcbiAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcXG4gICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHJlcy5kYXRhLm1lc3NhZ2U7XFxuICAgICAgdG9hc3REYXRhLnR5cGUgPSByZXMuZGF0YS5zdWNjZXNzO1xcbiAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xcbiAgICAgIHNldEZvcm1FcnJvcigpO1xcbiAgICAgIHNldEZvcm1FcnJvcihyZXMuZGF0YS5lcnJvcnMpO1xcblxcbiAgICAgIGlmIChyZXMuZGF0YS5zdWNjZXNzKSB7XFxuICAgICAgICBlZGl0VXNlckZvcm0udmFsdWUgPSBmYWxzZTtcXG4gICAgICAgIGZldGNoVXNlcnNMaXN0KHVzZXJzRGF0YVsnY3VycmVudF9wYWdlJ10pO1xcbiAgICAgICAgZWRpdFVzZXJJZC52YWx1ZSA9ICcnO1xcbiAgICAgICAgZW1wdHlGb3JtRGF0YSgpO1xcbiAgICAgICAgc2V0Rm9ybUVycm9yKCk7XFxuICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XFxuICAgICAgfVxcbiAgICB9KVxcbiAgICAuY2F0Y2goKGVycm9yKSA9PiB7XFxuICAgICAgZWRpdFVzZXJJZC52YWx1ZSA9ICcnO1xcbiAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcXG4gICAgICB0b2FzdERhdGEubWVzc2FnZSA9IGVycm9yLmRhdGEubWVzc2FnZTtcXG4gICAgICB0b2FzdERhdGEudHlwZSA9IGZhbHNlO1xcbiAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xcbiAgICB9KVxcbiAgICAuZmluYWxseSgoKSA9PiB7XFxuICAgICAgaXNMb2FkZXJWaXNpYmxlLnZhbHVlID0gZmFsc2U7XFxuICAgIH0pO1xcbn07XFxuXFxud2F0Y2goXFxuICAoKSA9PiBbXFxuICAgIGZpbHRlci5vcmdhbml6YXRpb24sXFxuICAgIGZpbHRlci5yb2xlcyxcXG4gICAgZmlsdGVyLnEsXFxuICAgIGZpbHRlci5zdGF0dXMsXFxuICAgIGZpbHRlci5zdGFydF9kYXRlLFxcbiAgICBmaWx0ZXIuZW5kX2RhdGUsXFxuICAgIGZpbHRlci5kYXRlX3R5cGUsXFxuICBdLFxcbiAgKCkgPT4ge1xcbiAgICBmZXRjaFVzZXJzTGlzdCh1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddLCB0cnVlKTtcXG4gIH0sXFxuICB7IGRlZXA6IHRydWUgfVxcbik7XFxuXFxuZnVuY3Rpb24gZmV0Y2hVc2Vyc0xpc3QoYWN0aXZlX3BhZ2U6IG51bWJlciwgZmlsdGVyZWQgPSBmYWxzZSkge1xcbiAgbGV0IHJvdXRlID0gYC91c2Vycy9wYWdlLyR7ZmlsdGVyZWQgPyAnMScgOiBhY3RpdmVfcGFnZX1gO1xcbiAgZmV0Y2hpbmdUYWJsZURhdGEudmFsdWUgPSB0cnVlO1xcbiAgbGV0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcXG5cXG4gIGZvciAoY29uc3QgZmlsdGVyX2tleSBpbiBmaWx0ZXIpIHtcXG4gICAgaWYgKGZpbHRlcltmaWx0ZXJfa2V5XSkge1xcbiAgICAgIGlmIChmaWx0ZXJbZmlsdGVyX2tleV0ubGVuZ3RoID4gMCkge1xcbiAgICAgICAgcGFyYW1zLmFwcGVuZChmaWx0ZXJfa2V5LCBmaWx0ZXJbZmlsdGVyX2tleV0pO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcblxcbiAgYXhpb3NcXG4gICAgLmdldChyb3V0ZSwgeyBwYXJhbXM6IHBhcmFtcyB9KVxcbiAgICAudGhlbigocmVzKSA9PiB7XFxuICAgICAgY29uc3QgcmVzcG9uc2UgPSByZXMuZGF0YTtcXG4gICAgICBPYmplY3QuYXNzaWduKHVzZXJzRGF0YSwgcmVzcG9uc2UuZGF0YSk7XFxuICAgICAgaXNFbXB0eS52YWx1ZSA9IHJlc3BvbnNlLmRhdGEgPyBmYWxzZSA6IHRydWU7XFxuICAgICAgdG90YWxVc2VyLnZhbHVlID0gcmVzcG9uc2UuZGF0YS50b3RhbDtcXG4gICAgfSlcXG4gICAgLmZpbmFsbHkoKCkgPT4ge1xcbiAgICAgIGZldGNoaW5nVGFibGVEYXRhLnZhbHVlID0gZmFsc2U7XFxuICAgIH0pO1xcbn1cXG5cXG5jb25zdCBvcGVuRGVsZXRlbW9kZWwgPSAodXNlcikgPT4ge1xcbiAgZGVsZXRlTW9kYWwudmFsdWUgPSB0cnVlO1xcbiAgZGVsZXRlSWQudmFsdWUgPSB1c2VyLmlkO1xcbiAgZGVsZXRlVXNlcm5hbWUudmFsdWUgPSB1c2VyLnVzZXJuYW1lO1xcbn07XFxuXFxuZnVuY3Rpb24gZGVsZXRlVXNlcihpZDogbnVtYmVyKSB7XFxuICBkZWxldGVNb2RhbC52YWx1ZSA9IGZhbHNlO1xcbiAgd2luZG93LnNjcm9sbFRvKDAsIDApO1xcblxcbiAgYXhpb3MuZGVsZXRlKGAvdXNlci8ke2lkfWApLnRoZW4oKHJlcykgPT4ge1xcbiAgICBpZiAocmVzLmRhdGEubWVzc2FnZSkge1xcbiAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcXG4gICAgICB0b2FzdERhdGEubWVzc2FnZSA9IHJlcy5kYXRhLm1lc3NhZ2U7XFxuICAgICAgdG9hc3REYXRhLnR5cGUgPSByZXMuZGF0YS5zdWNjZXNzO1xcbiAgICB9XFxuXFxuICAgIGlmIChyZXMuZGF0YS5zdWNjZXNzKSB7XFxuICAgICAgZmV0Y2hVc2Vyc0xpc3QodXNlcnNEYXRhWydjdXJyZW50X3BhZ2UnXSk7XFxuICAgIH1cXG4gIH0pO1xcbn1cXG5cXG5jb25zdCBzb3J0ID0gKHBhcmFtKSA9PiB7XFxuICBmaWx0ZXIuZGlyZWN0aW9uID1cXG4gICAgZmlsdGVyLmRpcmVjdGlvbiA9PT0gJ2FzYycgJiYgZmlsdGVyLm9yZGVyQnkgPT09IHBhcmFtID8gJ2Rlc2MnIDogJ2FzYyc7XFxuICBmaWx0ZXIub3JkZXJCeSA9IHBhcmFtO1xcblxcbiAgZmV0Y2hVc2Vyc0xpc3QoMSk7XFxufTtcXG5cXG5mdW5jdGlvbiB0b2dnbGVVc2VyU3RhdHVzKGlkOiBudW1iZXIpIHtcXG4gIHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcXG4gIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IHRydWU7XFxuICBzdGF0dXNNb2RhbC52YWx1ZSA9IGZhbHNlO1xcblxcbiAgYXhpb3NcXG4gICAgLnBhdGNoKGAvdXNlci9zdGF0dXMvJHtpZH1gKVxcbiAgICAudGhlbigocmVzKSA9PiB7XFxuICAgICAgaWYgKHJlcy5zdGF0dXMpIHtcXG4gICAgICAgIHRvYXN0RGF0YS52aXNpYmlsaXR5ID0gdHJ1ZTtcXG4gICAgICAgIHRvYXN0RGF0YS5tZXNzYWdlID0gcmVzLmRhdGEubWVzc2FnZTtcXG4gICAgICAgIHRvYXN0RGF0YS50eXBlID0gcmVzLmRhdGEuc3VjY2VzcztcXG5cXG4gICAgICAgIGZldGNoVXNlcnNMaXN0KHVzZXJzRGF0YVsnY3VycmVudF9wYWdlJ10pO1xcbiAgICAgIH1cXG4gICAgfSlcXG4gICAgLmZpbmFsbHkoKCkgPT4ge1xcbiAgICAgIGlzTG9hZGVyVmlzaWJsZS52YWx1ZSA9IGZhbHNlO1xcbiAgICB9KTtcXG59XFxuXFxuZnVuY3Rpb24gZm9ybWF0RGF0ZShkYXRlOiBEYXRlKSB7XFxuICByZXR1cm4gbW9tZW50KGRhdGUpLmZvcm1hdCgnTEwnKTtcXG59XFxuXFxuY29uc3QgdG9nZ2xlU2VsZWN0YWxsID0gKCkgPT4ge1xcbiAgY3VycmVudHBhZ2VEYXRhLnZhbHVlID0gdXNlcnNEYXRhLmRhdGEubWFwKCh2YWx1ZSkgPT4ge1xcbiAgICByZXR1cm4gdmFsdWVbJ2lkJ107XFxuICB9KTtcXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdXNlcnNEYXRhLmRhdGEubGVuZ3RoOyBpKyspIHtcXG4gICAgaWYgKCFjaGVja2xpc3QudmFsdWUuaW5jbHVkZXModXNlcnNEYXRhLmRhdGFbaV1bJ2lkJ10pKVxcbiAgICAgIGNoZWNrbGlzdC52YWx1ZVtjaGVja2xpc3QudmFsdWUubGVuZ3RoICsgaV0gPSB1c2Vyc0RhdGEuZGF0YVtpXVsnaWQnXTtcXG4gIH1cXG4gIHNlbGVjdGVkSWRzLnZhbHVlW3VzZXJzRGF0YVsnY3VycmVudF9wYWdlJ11dID0gY2hlY2tsaXN0LnZhbHVlO1xcbiAgaWYgKGFsbFNlbGVjdGVkLnZhbHVlW3VzZXJzRGF0YVsnY3VycmVudF9wYWdlJ11dKSB7XFxuICAgIGNoZWNrbGlzdC52YWx1ZSA9IGNoZWNrbGlzdC52YWx1ZS5maWx0ZXIoXFxuICAgICAgKG4pID0+ICFPYmplY3QudmFsdWVzKGN1cnJlbnRwYWdlRGF0YS52YWx1ZSkuaW5jbHVkZXMobilcXG4gICAgKTtcXG4gIH1cXG4gIGNoZWNrbGlzdC52YWx1ZSA9IGNoZWNrbGlzdC52YWx1ZS5maWx0ZXIoZnVuY3Rpb24gKGVsKSB7XFxuICAgIHJldHVybiBlbCAhPSBudWxsO1xcbiAgfSk7XFxuICBhbGxTZWxlY3RlZC52YWx1ZVt1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddXSA9XFxuICAgICFhbGxTZWxlY3RlZC52YWx1ZVt1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddXTtcXG59O1xcbndhdGNoKFxcbiAgKCkgPT4gY2hlY2tsaXN0LnZhbHVlLFxcbiAgKCkgPT4ge1xcbiAgICBzZWxlY3RlZElkcy52YWx1ZVt1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddXSA9IFtdO1xcblxcbiAgICBjdXJyZW50cGFnZURhdGEudmFsdWUgPSB1c2Vyc0RhdGEuZGF0YS5tYXAoKHZhbHVlKSA9PiB7XFxuICAgICAgcmV0dXJuIHZhbHVlWydpZCddO1xcbiAgICB9KTtcXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGVja2xpc3QudmFsdWUubGVuZ3RoOyBpKyspIHtcXG4gICAgICBpZiAoY3VycmVudHBhZ2VEYXRhLnZhbHVlLmluY2x1ZGVzKGNoZWNrbGlzdC52YWx1ZVtpXSkpIHtcXG4gICAgICAgIHNlbGVjdGVkSWRzLnZhbHVlW3VzZXJzRGF0YVsnY3VycmVudF9wYWdlJ11dW2ldID0gY2hlY2tsaXN0LnZhbHVlW2ldO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgICBzZWxlY3RlZElkcy52YWx1ZVt1c2Vyc0RhdGFbJ2N1cnJlbnRfcGFnZSddXSA9IHNlbGVjdGVkSWRzLnZhbHVlW1xcbiAgICAgIHVzZXJzRGF0YVsnY3VycmVudF9wYWdlJ11cXG4gICAgXS5maWx0ZXIoZnVuY3Rpb24gKGVsKSB7XFxuICAgICAgcmV0dXJuIGVsICE9IG51bGw7XFxuICAgIH0pO1xcbiAgfVxcbik7XFxuXFxuY29uc3QgZ2VuZXJhdGVMYWJlbCA9IChsYWJlbCkgPT4ge1xcbiAgcmV0dXJuIHsgJy0tbGFiZWwnOiBgJyR7bGFiZWx9J2AgfTtcXG59O1xcblxcbmNvbnN0IGRvd25sb2FkQWxsID0gKCkgPT4ge1xcbiAgbGV0IHJvdXRlID0gYC91c2Vycy9kb3dubG9hZC9gO1xcbiAgbGV0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcXG4gIGxldCBhbGxQYWdlU2VsZWN0ZWQ7XFxuICBhbGxQYWdlU2VsZWN0ZWQgPSBPYmplY3QudmFsdWVzKHNlbGVjdGVkSWRzLnZhbHVlKS5mbGF0KCk7XFxuXFxuICBpZiAoY2hlY2tsaXN0LnZhbHVlLmxlbmd0aCA9PSAwKSB7XFxuICAgIGZvciAoY29uc3QgZmlsdGVyX2tleSBpbiBmaWx0ZXIpIHtcXG4gICAgICBpZiAoZmlsdGVyW2ZpbHRlcl9rZXldLmxlbmd0aCA+IDApIHtcXG4gICAgICAgIHBhcmFtcy5hcHBlbmQoZmlsdGVyX2tleSwgZmlsdGVyW2ZpbHRlcl9rZXldKTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH0gZWxzZSB7XFxuICAgIHBhcmFtcy5hcHBlbmQoJ3VzZXJzJywgYWxsUGFnZVNlbGVjdGVkKTtcXG4gIH1cXG5cXG4gIGF4aW9zLmdldChyb3V0ZSwgeyBwYXJhbXM6IHBhcmFtcyB9KS50aGVuKChyZXMpID0+IHtcXG4gICAgY29uc3QgcmVzcG9uc2UgPSByZXMuZGF0YTtcXG4gICAgbGV0IGJsb2IgPSBuZXcgQmxvYihbcmVzcG9uc2VdLCB7XFxuICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL2NzdicsXFxuICAgIH0pO1xcbiAgICBsZXQgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcXG4gICAgbGluay5ocmVmID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XFxuICAgIGxpbmsuZG93bmxvYWQgPSByZXMuaGVhZGVyc1snY29udGVudC1kaXNwb3NpdGlvbiddLnNwbGl0KCc9JylbMV07XFxuICAgIGxpbmsuY2xpY2soKTtcXG4gIH0pO1xcbn07XFxuPC9zY3JpcHQ+XFxuPHN0eWxlIHNjb3BlZD5cXG5Aa2V5ZnJhbWVzIHNwaW5uZXIge1xcbiAgMCUge1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01MCUsIC01MCUsIDApIHJvdGF0ZSgwZGVnKTtcXG4gIH1cXG4gIDEwMCUge1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01MCUsIC01MCUsIDApIHJvdGF0ZSgzNjBkZWcpO1xcbiAgfVxcbn1cXG5cXG4uc3Bpbjo6YmVmb3JlIHtcXG4gIGFuaW1hdGlvbjogMS41cyBsaW5lYXIgaW5maW5pdGUgc3Bpbm5lcjtcXG4gIGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBpbmhlcml0O1xcbiAgYm9yZGVyOiBzb2xpZCAzcHggI2NmZDBkMTtcXG4gIGJvcmRlci1ib3R0b20tY29sb3I6IGdyZXk7XFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICBjb250ZW50OiAnJztcXG4gIGhlaWdodDogMjBweDtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogNTAlO1xcbiAgbGVmdDogNTAlO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNTAlLCAtNTAlLCAwKTtcXG4gIHdpZHRoOiAyMHB4O1xcbiAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcXG59XFxuLnNwaW4ge1xcbiAgaGVpZ2h0OiA0MHB4O1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBtYXJnaW46IGF1dG87XFxufVxcbjwvc3R5bGU+XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmFkZC1pbXBvcnQtc2lkZWJhci1kcm9wZG93bltkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIHBhZGRpbmc6IDhweDtcXG59XFxuQG1lZGlhIChtaW4td2lkdGg6IDE0MjBweCkge1xcbi5hZGQtaW1wb3J0LXNpZGViYXItZHJvcGRvd25bZGF0YS12LTZmZTU5MDU1XSB7XFxuICAgIGRpc3BsYXk6IG5vbmU7XFxufVxcbn1cXG4uYWN0aXZpdHlfX2hlYWRlcltkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIHRvcDogMHB4O1xcbiAgei1pbmRleDogMTAwO1xcbn1cXG4uYWN0aXZpdHlfX2hlYWRlciBuYXZbZGF0YS12LTZmZTU5MDU1XSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgd2lkdGg6IDEwMCU7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDE0MjBweCkge1xcbi5hY3Rpdml0eV9faGVhZGVyIG5hdltkYXRhLXYtNmZlNTkwNTVdIHtcXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxufVxcbn1cXG4uYWN0aXZpdHlfX2hlYWRlciBuYXYgYVtkYXRhLXYtNmZlNTkwNTVdOmhvdmVyIHtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0td2hpdGUpLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG59XFxuLmFjdGl2aXR5X19oZWFkZXIgbmF2IHVsW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgZGlzcGxheTogZmxleDtcXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMzc1cHgpIHtcXG4uYWN0aXZpdHlfX2hlYWRlciAuYWRkLWJ0bltkYXRhLXYtNmZlNTkwNTVdIHtcXG4gICAgZGlzcGxheTogbm9uZTtcXG59XFxufVxcbi5hY3Rpdml0eV9faGVhZGVyIC51c2VyLW5hdltkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbn1cXG4udG9hc3RbZGF0YS12LTZmZTU5MDU1XSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBsZWZ0OiA1MCU7XFxuICB6LWluZGV4OiA1MDtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xcbn1cXG4ucHJvZmlsZV9fZHJvcGRvd25bZGF0YS12LTZmZTU5MDU1XSB7XFxuICB2aXNpYmlsaXR5OiBoaWRkZW47XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICByaWdodDogMC43NXJlbTtcXG4gIHotaW5kZXg6IDIwO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS13aGl0ZSksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIHRleHQtYWxpZ246IGxlZnQ7XFxuICBmb250LXNpemU6IDAuODc1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDEuMjVyZW07XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLWJsdWVjb3JhbCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbiAgb3BhY2l0eTogMDtcXG4gIC0tdHctc2hhZG93OiAwcHggNHB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xcbiAgLS10dy1zaGFkb3ctY29sb3JlZDogMHB4IDRweCA0MHB4IHZhcigtLXR3LXNoYWRvdy1jb2xvcik7XFxuICBib3gtc2hhZG93OiB2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3csIDAgMCAjMDAwMCksIHZhcigtLXR3LXJpbmctc2hhZG93LCAwIDAgIzAwMDApLCB2YXIoLS10dy1zaGFkb3cpO1xcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMzAwbXM7XFxufVxcbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xcbi5wcm9maWxlX19kcm9wZG93bltkYXRhLXYtNmZlNTkwNTVdIHtcXG4gICAgcmlnaHQ6IDIuNXJlbTtcXG59XFxufVxcbi5wcm9maWxlX19kcm9wZG93bltkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIHRvcDogNTBweDtcXG4gIHdpZHRoOiAyNjVweDtcXG4gIGJveC1zaGFkb3c6IDRweCA0cHggNDBweCByZ2JhKDAsIDUwLCA3NiwgMC4yKTtcXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjQwcHgpIHtcXG4ucHJvZmlsZV9fZHJvcGRvd25bZGF0YS12LTZmZTU5MDU1XSB7XFxuICAgIHdpZHRoOiAyMjBweDtcXG59XFxufVxcbi5wcm9maWxlX19kcm9wZG93biBsaVtkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbn1cXG4ucHJvZmlsZV9fZHJvcGRvd24gbGlbZGF0YS12LTZmZTU5MDU1XSA+IDpub3QoW2hpZGRlbl0pIH4gOm5vdChbaGlkZGVuXSkge1xcbiAgLS10dy1zcGFjZS14LXJldmVyc2U6IDA7XFxuICBtYXJnaW4tcmlnaHQ6IGNhbGMoMC43NXJlbSAqIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpO1xcbiAgbWFyZ2luLWxlZnQ6IGNhbGMoMC43NXJlbSAqIGNhbGMoMSAtIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpKTtcXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duIGxpW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgcGFkZGluZzogMC43NXJlbTtcXG59XFxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7XFxuLnByb2ZpbGVfX2Ryb3Bkb3duIGxpW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgICBwYWRkaW5nOiAxcmVtO1xcbn1cXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duIGxpIGFbZGF0YS12LTZmZTU5MDU1XTpob3ZlciB7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLWJsdWVjb3JhbCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cXG4ucHJvZmlsZV9fZHJvcGRvd24gbGkgLnVzZXItcHJvZmlsZVtkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIGZvbnQtc2l6ZTogMjZweDtcXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duIC5kcm9wZG93bl9fbGlzdFtkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tbi0xMCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duIC5kcm9wZG93bl9fbGlzdFtkYXRhLXYtNmZlNTkwNTVdOmhvdmVyIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tbi0yMCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tYmx1ZWNvcmFsKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxufVxcbi5wcm9maWxlX19kcm9wZG93biAuZHJvcGRvd25fX2xpc3QgYVtkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xcbn1cXG4ucHJvZmlsZV9fZHJvcGRvd24tLXRvdWNoW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgcmlnaHQ6IDIuNXJlbTtcXG4gIHotaW5kZXg6IDIwO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS13aGl0ZSksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIHRleHQtYWxpZ246IGxlZnQ7XFxuICBmb250LXNpemU6IDAuODc1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDEuMjVyZW07XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLWJsdWVjb3JhbCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbiAgLS10dy1zaGFkb3c6IDBweCA0cHggNDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7XFxuICAtLXR3LXNoYWRvdy1jb2xvcmVkOiAwcHggNHB4IDQwcHggdmFyKC0tdHctc2hhZG93LWNvbG9yKTtcXG4gIGJveC1zaGFkb3c6IHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdywgMCAwICMwMDAwKSwgdmFyKC0tdHctcmluZy1zaGFkb3csIDAgMCAjMDAwMCksIHZhcigtLXR3LXNoYWRvdyk7XFxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAzMDBtcztcXG4gIHRvcDogNTBweDtcXG4gIHdpZHRoOiAyNjVweDtcXG4gIGJveC1zaGFkb3c6IDRweCA0cHggNDBweCByZ2JhKDAsIDUwLCA3NiwgMC4yKTtcXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjQwcHgpIHtcXG4ucHJvZmlsZV9fZHJvcGRvd24tLXRvdWNoW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgICB3aWR0aDogMjIwcHg7XFxufVxcbn1cXG4ucHJvZmlsZV9fZHJvcGRvd24tLXRvdWNoIGxpW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxufVxcbi5wcm9maWxlX19kcm9wZG93bi0tdG91Y2ggbGlbZGF0YS12LTZmZTU5MDU1XSA+IDpub3QoW2hpZGRlbl0pIH4gOm5vdChbaGlkZGVuXSkge1xcbiAgLS10dy1zcGFjZS14LXJldmVyc2U6IDA7XFxuICBtYXJnaW4tcmlnaHQ6IGNhbGMoMC43NXJlbSAqIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpO1xcbiAgbWFyZ2luLWxlZnQ6IGNhbGMoMC43NXJlbSAqIGNhbGMoMSAtIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpKTtcXG59XFxuLnByb2ZpbGVfX2Ryb3Bkb3duLS10b3VjaCBsaVtkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIHBhZGRpbmc6IDAuNzVyZW07XFxufVxcbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xcbi5wcm9maWxlX19kcm9wZG93bi0tdG91Y2ggbGlbZGF0YS12LTZmZTU5MDU1XSB7XFxuICAgIHBhZGRpbmc6IDFyZW07XFxufVxcbn1cXG4ucHJvZmlsZV9fZHJvcGRvd24tLXRvdWNoIGxpIGFbZGF0YS12LTZmZTU5MDU1XTpob3ZlciB7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLWJsdWVjb3JhbCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cXG4ucHJvZmlsZV9fZHJvcGRvd24tLXRvdWNoIGxpIC51c2VyLXByb2ZpbGVbZGF0YS12LTZmZTU5MDU1XSB7XFxuICBmb250LXNpemU6IDI2cHg7XFxufVxcbi5wcm9maWxlX19kcm9wZG93bi0tdG91Y2ggLmRyb3Bkb3duX19saXN0W2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1uLTEwKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbn1cXG4ucHJvZmlsZV9fZHJvcGRvd24tLXRvdWNoIC5kcm9wZG93bl9fbGlzdFtkYXRhLXYtNmZlNTkwNTVdOmhvdmVyIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tbi0yMCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tYmx1ZWNvcmFsKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxufVxcbi5wcm9maWxlX19kcm9wZG93bi0tdG91Y2ggLmRyb3Bkb3duX19saXN0IGFbZGF0YS12LTZmZTU5MDU1XSB7XFxuICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcXG59XFxuLmRyb3Bkb3duLWJ0bjpob3ZlciAucHJvZmlsZV9fZHJvcGRvd25bZGF0YS12LTZmZTU5MDU1XSwgXFxuLmRyb3Bkb3duLWJ0bjphY3RpdmUgLnByb2ZpbGVfX2Ryb3Bkb3duW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcXG4gIG9wYWNpdHk6IDE7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTBweCk7XFxufVxcbi5kcm9wZG93bi1idG46aG92ZXIgLmRyb3Bkb3duX19hcnJvd1tkYXRhLXYtNmZlNTkwNTVdLFxcbi5kcm9wZG93bi1idG46YWN0aXZlIC5kcm9wZG93bl9fYXJyb3dbZGF0YS12LTZmZTU5MDU1XSB7XFxuICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xcbn1cXG4uYWRkLWltcG9ydFtkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG59XFxuLmFkZC1pbXBvcnQtZHJvcGRvd25bZGF0YS12LTZmZTU5MDU1XSB7XFxuICB2aXNpYmlsaXR5OiBoaWRkZW47XFxuICBvcGFjaXR5OiAwO1xcbn1cXG4uZHJvcGRvd24tdHJpZ2dlci1jb250YWluZXJbZGF0YS12LTZmZTU5MDU1XSB7XFxuICBkaXNwbGF5OiBibG9jaztcXG59XFxuQG1lZGlhIChtaW4td2lkdGg6IDE0MjBweCkge1xcbi5kcm9wZG93bi10cmlnZ2VyLWNvbnRhaW5lcltkYXRhLXYtNmZlNTkwNTVdIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG59XFxuLmFkZC1pbXBvcnQ6aG92ZXIgLmFkZC1pbXBvcnQtZHJvcGRvd25bZGF0YS12LTZmZTU5MDU1XSB7XFxuICAgIHZpc2liaWxpdHk6IHZpc2libGUgIWltcG9ydGFudDtcXG4gICAgb3BhY2l0eTogMSAhaW1wb3J0YW50O1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XFxufVxcbn1cXG4uc3Bpbm5lcltkYXRhLXYtNmZlNTkwNTVdIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMC43NXJlbTtcXG4gIHJpZ2h0OiAxLjc1cmVtO1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbn1cXG5Aa2V5ZnJhbWVzIHNwaW4tNmZlNTkwNTUge1xcbnRvIHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcXG59XFxufVxcbi5zcGlubmVyW2RhdGEtdi02ZmU1OTA1NV0ge1xcbiAgYW5pbWF0aW9uOiBzcGluLTZmZTU5MDU1IDFzIGxpbmVhciBpbmZpbml0ZTtcXG4gIGJvcmRlci1yYWRpdXM6IDk5OTlweDtcXG4gIGJvcmRlci13aWR0aDogMnB4O1xcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLW4tMTApLCB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpO1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMC4wNTtcXG4gIHdpZHRoOiAxNXB4O1xcbiAgaGVpZ2h0OiAxNXB4O1xcbiAgYm9yZGVyLXRvcC1jb2xvcjogd2hpdGU7XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9BZG1pbkhlYWRlci52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQ0E7RUFDRSxZQUFBO0FBQUY7QUFDRTtBQUZGO0lBR0ksYUFBQTtBQUVGO0FBQ0Y7QUFBQTtFQUNFLFFBQUE7RUFDQSxZQUFBO0FBR0Y7QUFERTtFQUNFLGFBQUE7RUFDQSxXQUFBO0VBQ0EsOEJBQUE7QUFHSjtBQURJO0FBTEY7SUFNSSxzQkFBQTtJQUNBLHVCQUFBO0FBSUo7QUFDRjtBQURNO0VBQUEsb0JBQUE7RUFBQSxpREFBQTtBQUFBO0FBR0E7RUFBQSxhQUFBO0FBQUE7QUFJRjtBQURGO0lBRUksYUFBQTtBQUdKO0FBQ0Y7QUFBSTtFQUFBLGFBQUE7RUFBQSxtQkFBQTtBQUFBO0FBSUY7RUFBQSxrQkFBQTtFQUFBLFNBQUE7RUFBQSxXQUFBO0VBQ0EsZ0NBQUE7QUFEQTtBQUlBO0VBQUEsa0JBQUE7RUFBQSxrQkFBQTtFQUFBLGNBQUE7RUFBQSxXQUFBO0VBQUEsa0JBQUE7RUFBQSwwREFBQTtFQUFBLGdCQUFBO0VBQUEsbUJBQUE7RUFBQSxvQkFBQTtFQUFBLG9CQUFBO0VBQUEscURBQUE7RUFBQSxVQUFBO0VBQUEsNENBQUE7RUFBQSx3REFBQTtFQUFBLHVHQUFBO0VBQUEsMEJBQUE7QUFBQTtBQUFBO0FBQUE7SUFBQSxhQUFBO0FBQUE7QUFBQTtBQURGO0VBRUUsU0FBQTtFQUNBLFlBQUE7RUFDQSw2Q0FBQTtBQUlGO0FBRkU7QUFORjtJQU9JLFlBQUE7QUFLRjtBQUNGO0FBRkk7RUFBQSxhQUFBO0VBQUEsbUJBQUE7QUFBQTtBQUFBO0VBQUEsdUJBQUE7RUFBQSx1REFBQTtFQUFBLGdFQUFBO0FBQUE7QUFBQTtFQUFBLGdCQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUEsYUFBQTtBQUFBO0FBQUE7QUFFRTtFQUFBLG9CQUFBO0VBQUEscURBQUE7QUFBQTtBQUVGO0VBQ0UsZUFBQTtBQU1OO0FBRkk7RUFBQSxrQkFBQTtFQUFBLHlEQUFBO0FBQUE7QUFBQTtFQUFBLGtCQUFBO0VBQUEseURBQUE7RUFBQSxvQkFBQTtFQUFBLHFEQUFBO0FBQUE7QUFFRTtFQUFBLDBCQUFBO0FBQUE7QUFLSjtFQUFBLGtCQUFBO0VBQUEsYUFBQTtFQUFBLFdBQUE7RUFBQSxrQkFBQTtFQUFBLDBEQUFBO0VBQUEsZ0JBQUE7RUFBQSxtQkFBQTtFQUFBLG9CQUFBO0VBQUEsb0JBQUE7RUFBQSxxREFBQTtFQUFBLDRDQUFBO0VBQUEsd0RBQUE7RUFBQSx1R0FBQTtFQUFBLDBCQUFBO0VBQ0EsU0FBQTtFQUNBLFlBQUE7RUFDQSw2Q0FBQTtBQUhBO0FBS0E7QUFORjtJQU9JLFlBQUE7QUFNRjtBQUNGO0FBSEk7RUFBQSxhQUFBO0VBQUEsbUJBQUE7QUFBQTtBQUFBO0VBQUEsdUJBQUE7RUFBQSx1REFBQTtFQUFBLGdFQUFBO0FBQUE7QUFBQTtFQUFBLGdCQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUEsYUFBQTtBQUFBO0FBQUE7QUFFRTtFQUFBLG9CQUFBO0VBQUEscURBQUE7QUFBQTtBQUVGO0VBQ0UsZUFBQTtBQU9OO0FBSEk7RUFBQSxrQkFBQTtFQUFBLHlEQUFBO0FBQUE7QUFBQTtFQUFBLGtCQUFBO0VBQUEseURBQUE7RUFBQSxvQkFBQTtFQUFBLHFEQUFBO0FBQUE7QUFFRTtFQUFBLDBCQUFBO0FBQUE7QUFPRjs7RUFBQSxtQkFBQTtFQUFBLFVBQUE7RUFDQSwyQkFBQTtBQURBO0FBR0Y7O0VBQ0UseUJBQUE7QUFNSjtBQUhBO0VBQ0UsZUFBQTtBQU1GO0FBSkE7RUFDRSxrQkFBQTtFQUNBLFVBQUE7QUFPRjtBQUxBO0VBQ0UsY0FBQTtBQVFGO0FBUEU7QUFGRjtJQUdJLGFBQUE7QUFVRjtBQVBGO0lBRUksOEJBQUE7SUFDQSxxQkFBQTtJQUNBLHdCQUFBO0FBV0Y7QUFQRjtBQUNFO0VBQUEsa0JBQUE7RUFBQSxZQUFBO0VBQUEsY0FBQTtFQUFBLHFCQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUEseUJBQUE7QUFBQTtBQUFBO0FBQUE7RUFBQSwyQ0FBQTtFQUFBLHFCQUFBO0VBQUEsaUJBQUE7RUFBQSx5REFBQTtFQUFBLHlCQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSx1QkFBQTtBQUhBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5hZGQtaW1wb3J0LXNpZGViYXItZHJvcGRvd24ge1xcbiAgcGFkZGluZzogOHB4O1xcbiAgQG1lZGlhIChtaW4td2lkdGg6IDE0MjBweCkge1xcbiAgICBkaXNwbGF5OiBub25lO1xcbiAgfVxcbn1cXG4uYWN0aXZpdHlfX2hlYWRlciB7XFxuICB0b3A6IDBweDtcXG4gIHotaW5kZXg6IDEwMDtcXG5cXG4gIG5hdiB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxuXFxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDE0MjBweCkge1xcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICAgIH1cXG5cXG4gICAgYTpob3ZlciB7XFxuICAgICAgQGFwcGx5IHRleHQtd2hpdGU7XFxuICAgIH1cXG4gICAgdWwge1xcbiAgICAgIEBhcHBseSBmbGV4O1xcbiAgICB9XFxuICB9XFxuICAuYWRkLWJ0biB7XFxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDM3NXB4KSB7XFxuICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgfVxcbiAgfVxcbiAgLnVzZXItbmF2IHtcXG4gICAgQGFwcGx5IGZsZXggaXRlbXMtY2VudGVyO1xcbiAgfVxcbn1cXG4udG9hc3Qge1xcbiAgQGFwcGx5IGFic29sdXRlICBsZWZ0LTIvNCB6LTUwO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XFxufVxcbi5wcm9maWxlX19kcm9wZG93biB7XFxuICBAYXBwbHkgaW52aXNpYmxlIGFic29sdXRlIHJpZ2h0LTMgei0yMCBiZy13aGl0ZSB0ZXh0LWxlZnQgdGV4dC1zbSB0ZXh0LWJsdWVjb3JhbCBvcGFjaXR5LTAgc2hhZG93LWRyb3Bkb3duIGR1cmF0aW9uLTMwMCBzbTpyaWdodC0xMDtcXG4gIHRvcDogNTBweDtcXG4gIHdpZHRoOiAyNjVweDtcXG4gIGJveC1zaGFkb3c6IDRweCA0cHggNDBweCByZ2JhKDAsIDUwLCA3NiwgMC4yKTtcXG5cXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDY0MHB4KSB7XFxuICAgIHdpZHRoOiAyMjBweDtcXG4gIH1cXG5cXG4gIGxpIHtcXG4gICAgQGFwcGx5IGZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMyBwLTMgc206cC00O1xcbiAgICBhOmhvdmVyIHtcXG4gICAgICBAYXBwbHkgdGV4dC1ibHVlY29yYWw7XFxuICAgIH1cXG4gICAgLnVzZXItcHJvZmlsZSB7XFxuICAgICAgZm9udC1zaXplOiAyNnB4O1xcbiAgICB9XFxuICB9XFxuICAuZHJvcGRvd25fX2xpc3Qge1xcbiAgICBAYXBwbHkgYmctbi0xMCBob3ZlcjpiZy1uLTIwIGhvdmVyOnRleHQtYmx1ZWNvcmFsO1xcbiAgICBhIHtcXG4gICAgICBAYXBwbHkgY2FwaXRhbGl6ZTtcXG4gICAgfVxcbiAgfVxcbn1cXG4ucHJvZmlsZV9fZHJvcGRvd24tLXRvdWNoIHtcXG4gIEBhcHBseSBhYnNvbHV0ZSAgcmlnaHQtMTAgei0yMCBiZy13aGl0ZSB0ZXh0LWxlZnQgdGV4dC1zbSB0ZXh0LWJsdWVjb3JhbCBzaGFkb3ctZHJvcGRvd24gIGR1cmF0aW9uLTMwMDtcXG4gIHRvcDogNTBweDtcXG4gIHdpZHRoOiAyNjVweDtcXG4gIGJveC1zaGFkb3c6IDRweCA0cHggNDBweCByZ2JhKDAsIDUwLCA3NiwgMC4yKTtcXG5cXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDY0MHB4KSB7XFxuICAgIHdpZHRoOiAyMjBweDtcXG4gIH1cXG5cXG4gIGxpIHtcXG4gICAgQGFwcGx5IGZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMyBwLTMgc206cC00O1xcbiAgICBhOmhvdmVyIHtcXG4gICAgICBAYXBwbHkgdGV4dC1ibHVlY29yYWw7XFxuICAgIH1cXG4gICAgLnVzZXItcHJvZmlsZSB7XFxuICAgICAgZm9udC1zaXplOiAyNnB4O1xcbiAgICB9XFxuICB9XFxuICAuZHJvcGRvd25fX2xpc3Qge1xcbiAgICBAYXBwbHkgYmctbi0xMCBob3ZlcjpiZy1uLTIwIGhvdmVyOnRleHQtYmx1ZWNvcmFsO1xcbiAgICBhIHtcXG4gICAgICBAYXBwbHkgY2FwaXRhbGl6ZTtcXG4gICAgfVxcbiAgfVxcbn1cXG4uZHJvcGRvd24tYnRuOmhvdmVyLFxcbi5kcm9wZG93bi1idG46YWN0aXZlIHtcXG4gIC5wcm9maWxlX19kcm9wZG93biB7XFxuICAgIEBhcHBseSB2aXNpYmxlIG9wYWNpdHktMTAwO1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTBweCk7XFxuICB9XFxuICAuZHJvcGRvd25fX2Fycm93IHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcXG4gIH1cXG59XFxuLmFkZC1pbXBvcnQge1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbn1cXG4uYWRkLWltcG9ydC1kcm9wZG93biB7XFxuICB2aXNpYmlsaXR5OiBoaWRkZW47XFxuICBvcGFjaXR5OiAwO1xcbn1cXG4uZHJvcGRvd24tdHJpZ2dlci1jb250YWluZXIge1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICBAbWVkaWEgKG1pbi13aWR0aDogMTQyMHB4KSB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICB9XFxufVxcbi5hZGQtaW1wb3J0OmhvdmVyIC5hZGQtaW1wb3J0LWRyb3Bkb3duIHtcXG4gIEBtZWRpYSAobWluLXdpZHRoOiAxNDIwcHgpIHtcXG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50O1xcbiAgICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcXG4gIH1cXG59XFxuXFxuLnNwaW5uZXIge1xcbiAgQGFwcGx5IGFic29sdXRlIHRvcC0zIHJpZ2h0LTcgaW5saW5lLWJsb2NrIGFuaW1hdGUtc3BpbiByb3VuZGVkLWZ1bGwgYm9yZGVyLTIgYm9yZGVyLW4tMTAgYm9yZGVyLW9wYWNpdHktNTtcXG4gIHdpZHRoOiAxNXB4O1xcbiAgaGVpZ2h0OiAxNXB4O1xcbiAgYm9yZGVyLXRvcC1jb2xvcjogd2hpdGU7XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5taW51c1tkYXRhLXYtMjQ0M2RmNTNdIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBoZWlnaHQ6IDAuNzVyZW07XFxuICB3aWR0aDogMC43NXJlbTtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxufVxcbi5taW51c1tkYXRhLXYtMjQ0M2RmNTNdOmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgaGVpZ2h0OiAwLjEyNXJlbTtcXG4gIHdpZHRoOiAwLjc1cmVtO1xcbiAgYm9yZGVyLXJhZGl1czogMC43NXJlbTtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tYmx1ZWNvcmFsLTUwKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbn1cXG4jcHVibGlzaGluZ19hY3Rpdml0aWVzW2RhdGEtdi0yNDQzZGY1M10ge1xcbiAgcG9zaXRpb246IGZpeGVkO1xcbiAgYm90dG9tOiAwcHg7XFxuICByaWdodDogMHB4O1xcbiAgZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggNHB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjEpKTtcXG59XFxuLnJvbGxpbmdbZGF0YS12LTI0NDNkZjUzXSB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxufVxcbkBrZXlmcmFtZXMgc3Bpbi0yNDQzZGY1MyB7XFxudG8ge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcbn1cXG59XFxuLnJvbGxpbmdbZGF0YS12LTI0NDNkZjUzXSB7XFxuICBhbmltYXRpb246IHNwaW4tMjQ0M2RmNTMgMXMgbGluZWFyIGluZmluaXRlO1xcbiAgYm9yZGVyLXJhZGl1czogOTk5OXB4O1xcbiAgYm9yZGVyLXdpZHRoOiAycHg7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLW4tMjApLCB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpO1xcbiAgd2lkdGg6IDIwcHg7XFxuICBoZWlnaHQ6IDIwcHg7XFxuICBib3JkZXItdG9wLWNvbG9yOiB3aGl0ZTtcXG59XFxuLmFjdGl2aXR5LXRpdGxlW2RhdGEtdi0yNDQzZGY1M10ge1xcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0J1bGtwdWJsaXNoV2l0aFhscy52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBRUU7RUFBQSxhQUFBO0VBQUEsZUFBQTtFQUFBLGNBQUE7RUFBQSxtQkFBQTtBQUFBO0FBQ0E7RUFDRSxXQUFBO0VBQ0EsY0FBQTtFQUFBLGdCQUFBO0VBQUEsY0FBQTtFQUFBLHNCQUFBO0VBQUEsa0JBQUE7RUFBQSxpRUFBQTtBQUNKO0FBSUU7RUFBQSxlQUFBO0VBQUEsV0FBQTtFQUFBLFVBQUE7RUFDQSxvREFBQTtBQURBO0FBS0E7RUFBQSxxQkFBQTtBQUFBO0FBQUE7QUFBQTtJQUFBLHlCQUFBO0FBQUE7QUFBQTtBQUFBO0VBQUEsMkNBQUE7RUFBQSxxQkFBQTtFQUFBLGlCQUFBO0VBQUEsc0JBQUE7RUFBQSx5REFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsdUJBQUE7QUFIQTtBQU1GO0VBQ0UsbUJBQUE7RUFDQSxnQkFBQTtFQUNBLHVCQUFBO0FBQUZcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLm1pbnVzIHtcXG4gIEBhcHBseSBmbGV4IGgtMyB3LTMgaXRlbXMtY2VudGVyO1xcbiAgJjpiZWZvcmUge1xcbiAgICBjb250ZW50OiAnJztcXG4gICAgQGFwcGx5IGJsb2NrIGgtMC41IHctMyByb3VuZGVkLXhsIGJnLWJsdWUtNTA7XFxuICB9XFxufVxcblxcbiNwdWJsaXNoaW5nX2FjdGl2aXRpZXMge1xcbiAgQGFwcGx5IGZpeGVkIGJvdHRvbS0wIHJpZ2h0LTA7XFxuICBmaWx0ZXI6IGRyb3Atc2hhZG93KDBweCA0cHggNDBweCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xcbn1cXG5cXG4ucm9sbGluZyB7XFxuICBAYXBwbHkgaW5saW5lLWJsb2NrIGFuaW1hdGUtc3BpbiByb3VuZGVkLWZ1bGwgYm9yZGVyLTIgYm9yZGVyLW4tMjA7XFxuICB3aWR0aDogMjBweDtcXG4gIGhlaWdodDogMjBweDtcXG4gIGJvcmRlci10b3AtY29sb3I6IHdoaXRlO1xcbn1cXG5cXG4uYWN0aXZpdHktdGl0bGUge1xcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmFsZXJ0W2RhdGEtdi1iNzdiMTFkNF0ge1xcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tY2FtZWwtMTApLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBwYWRkaW5nOiAxcmVtO1xcbiAgcGFkZGluZy1yaWdodDogMS41cmVtO1xcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjI1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDEuNjI1O1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1uLTUwKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSlcXG59XFxuLmFsZXJ0X19jb250YWluZXJbZGF0YS12LWI3N2IxMWQ0XSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIGxpbmUtaGVpZ2h0OiAxLjVyZW1cXG59XFxuLmFsZXJ0X19jb250ZW50W2RhdGEtdi1iNzdiMTFkNF0ge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXJcXG59XFxuLmFsZXJ0X19jb250ZW50W2RhdGEtdi1iNzdiMTFkNF0gPiA6bm90KFtoaWRkZW5dKSB+IDpub3QoW2hpZGRlbl0pIHtcXG4gIC0tdHctc3BhY2UteC1yZXZlcnNlOiAwO1xcbiAgbWFyZ2luLXJpZ2h0OiBjYWxjKDFyZW0gKiB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKTtcXG4gIG1hcmdpbi1sZWZ0OiBjYWxjKDFyZW0gKiBjYWxjKDEgLSB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKSlcXG59XFxuLmFsZXJ0X19jb250ZW50IHNwYW5bZGF0YS12LWI3N2IxMWQ0XSB7XFxuICBmb250LXNpemU6IDAuODc1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDEuMjVyZW07XFxuICBmb250LXdlaWdodDogNzAwO1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1uLTUwKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSlcXG59XFxuLmFsZXJ0X19tZXNzYWdlW2RhdGEtdi1iNzdiMTFkNF0ge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXJcXG59XFxuLmFsZXJ0X19tZXNzYWdlW2RhdGEtdi1iNzdiMTFkNF0gPiA6bm90KFtoaWRkZW5dKSB+IDpub3QoW2hpZGRlbl0pIHtcXG4gIC0tdHctc3BhY2UteC1yZXZlcnNlOiAwO1xcbiAgbWFyZ2luLXJpZ2h0OiBjYWxjKDAuMjVyZW0gKiB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKTtcXG4gIG1hcmdpbi1sZWZ0OiBjYWxjKDAuMjVyZW0gKiBjYWxjKDEgLSB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKSlcXG59XFxuLnRleHQtc2hvd1tkYXRhLXYtYjc3YjExZDRdIHtcXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyXFxufVxcbi50ZXh0LXNob3dbZGF0YS12LWI3N2IxMWQ0XSA+IDpub3QoW2hpZGRlbl0pIH4gOm5vdChbaGlkZGVuXSkge1xcbiAgLS10dy1zcGFjZS14LXJldmVyc2U6IDA7XFxuICBtYXJnaW4tcmlnaHQ6IGNhbGMoMC41cmVtICogdmFyKC0tdHctc3BhY2UteC1yZXZlcnNlKSk7XFxuICBtYXJnaW4tbGVmdDogY2FsYygwLjVyZW0gKiBjYWxjKDEgLSB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKSlcXG59XFxuLnRleHQtc2hvd1tkYXRhLXYtYjc3YjExZDRdIHtcXG4gIG9wYWNpdHk6IDA7XFxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAzMDBtcztcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MHB4LCAzMHB4KVxcbn1cXG4udGV4dC1oaWRlW2RhdGEtdi1iNzdiMTFkNF0ge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIC0tdHctdHJhbnNsYXRlLXk6IC0wcHg7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSh2YXIoLS10dy10cmFuc2xhdGUteCksIHZhcigtLXR3LXRyYW5zbGF0ZS15KSkgcm90YXRlKHZhcigtLXR3LXJvdGF0ZSkpIHNrZXdYKHZhcigtLXR3LXNrZXcteCkpIHNrZXdZKHZhcigtLXR3LXNrZXcteSkpIHNjYWxlWCh2YXIoLS10dy1zY2FsZS14KSkgc2NhbGVZKHZhcigtLXR3LXNjYWxlLXkpKTtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXJcXG59XFxuLnRleHQtaGlkZVtkYXRhLXYtYjc3YjExZDRdID4gOm5vdChbaGlkZGVuXSkgfiA6bm90KFtoaWRkZW5dKSB7XFxuICAtLXR3LXNwYWNlLXgtcmV2ZXJzZTogMDtcXG4gIG1hcmdpbi1yaWdodDogY2FsYygwLjVyZW0gKiB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKTtcXG4gIG1hcmdpbi1sZWZ0OiBjYWxjKDAuNXJlbSAqIGNhbGMoMSAtIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpKVxcbn1cXG4udGV4dC1oaWRlW2RhdGEtdi1iNzdiMTFkNF0ge1xcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMzAwbXNcXG59XFxuLmJvcmRlci1oaWRlW2RhdGEtdi1iNzdiMTFkNF06OmJlZm9yZSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBsZWZ0OiAwcHg7XFxuICB0b3A6IDBweDtcXG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXNhbG1vbi01MCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDMwMG1zO1xcbiAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO1xcbiAgd2lkdGg6IDJweDtcXG4gIGhlaWdodDogMTAwJTtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKVxcbn1cXG4uYm9yZGVyLXNob3dbZGF0YS12LWI3N2IxMWQ0XTo6YmVmb3JlIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDBweDtcXG4gIHRvcDogMHB4O1xcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tc2FsbW9uLTUwKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMzAwbXM7XFxuICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XFxuICB3aWR0aDogMnB4O1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpXFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9FcnJvck1lc3NhZ2UudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUVFO0VBQUEsc0JBQUE7RUFBQSxrQkFBQTtFQUFBLDZEQUFBO0VBQUEsYUFBQTtFQUFBLHFCQUFBO0VBQUEsbUJBQUE7RUFBQSxvQkFBQTtFQUFBLGtCQUFBO0VBQUEsb0JBQUE7RUFBQTtBQUFBO0FBR0U7RUFBQSxhQUFBO0VBQUEsc0JBQUE7RUFBQTtBQUFBO0FBR0E7RUFBQSxhQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUEsdUJBQUE7RUFBQSxvREFBQTtFQUFBO0FBQUE7QUFHRTtFQUFBLG1CQUFBO0VBQUEsb0JBQUE7RUFBQSxnQkFBQTtFQUFBLG9CQUFBO0VBQUE7QUFBQTtBQUlGO0VBQUEsYUFBQTtFQUFBO0FBQUE7QUFBQTtFQUFBLHVCQUFBO0VBQUEsdURBQUE7RUFBQTtBQUFBO0FBSUY7RUFBQSxrQkFBQTtFQUFBLGFBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQSx1QkFBQTtFQUFBLHNEQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUEsVUFBQTtFQUFBLDBCQUFBO0VBQ0E7QUFEQTtBQUlBO0VBQUEsYUFBQTtFQUFBLHNCQUFBO0VBQUEsK0xBQUE7RUFBQTtBQUFBO0FBQUE7RUFBQSx1QkFBQTtFQUFBLHNEQUFBO0VBQUE7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUdBO0VBQUEsa0JBQUE7RUFBQSxTQUFBO0VBQUEsUUFBQTtFQUFBLHNCQUFBO0VBQUEsa0JBQUE7RUFBQSw4REFBQTtFQUFBLDBCQUFBO0VBQUEsc0RBQUE7RUFDQSxVQUFBO0VBQ0EsWUFBQTtFQUNBLFdBQUE7RUFDQTtBQUpBO0FBT0E7RUFBQSxrQkFBQTtFQUFBLFNBQUE7RUFBQSxRQUFBO0VBQUEsc0JBQUE7RUFBQSxrQkFBQTtFQUFBLDhEQUFBO0VBQUEsMEJBQUE7RUFBQSxzREFBQTtFQUNBLFVBQUE7RUFDQSxZQUFBO0VBQ0EsV0FBQTtFQUNBO0FBSkFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLmFsZXJ0IHtcXG4gIEBhcHBseSByb3VuZGVkIGJnLWNhbWVsLTEwIHAtNCBwci02IHRleHQtc20gbGVhZGluZy1yZWxheGVkIHRleHQtbi01MDtcXG5cXG4gICZfX2NvbnRhaW5lciB7XFxuICAgIEBhcHBseSBmbGV4IGZsZXgtY29sIGxlYWRpbmctNjtcXG4gIH1cXG4gICZfX2NvbnRlbnQge1xcbiAgICBAYXBwbHkgZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC00O1xcblxcbiAgICBzcGFuIHtcXG4gICAgICBAYXBwbHkgdGV4dC1zbSBmb250LWJvbGQgdGV4dC1uLTUwO1xcbiAgICB9XFxuICB9XFxuICAmX19tZXNzYWdlIHtcXG4gICAgQGFwcGx5IGZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMTtcXG4gIH1cXG59XFxuLnRleHQtc2hvdyB7XFxuICBAYXBwbHkgaW52aXNpYmxlIGZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMiBvcGFjaXR5LTAgZHVyYXRpb24tMzAwO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwcHgsIDMwcHgpO1xcbn1cXG4udGV4dC1oaWRlIHtcXG4gIEBhcHBseSBmbGV4IC10cmFuc2xhdGUteS0wIGl0ZW1zLWNlbnRlciBzcGFjZS14LTIgZHVyYXRpb24tMzAwO1xcbn1cXG4uYm9yZGVyLWhpZGU6OmJlZm9yZSB7XFxuICBAYXBwbHkgYWJzb2x1dGUgbGVmdC0wIHRvcC0wIHJvdW5kZWQgYmctc2FsbW9uLTUwIGR1cmF0aW9uLTMwMCBlYXNlLW91dDtcXG4gIHdpZHRoOiAycHg7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBjb250ZW50OiAnJztcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSk7XFxufVxcbi5ib3JkZXItc2hvdzo6YmVmb3JlIHtcXG4gIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTAgdG9wLTAgcm91bmRlZCBiZy1zYWxtb24tNTAgZHVyYXRpb24tMzAwIGVhc2Utb3V0O1xcbiAgd2lkdGg6IDJweDtcXG4gIGhlaWdodDogMTAwJTtcXG4gIGNvbnRlbnQ6ICcnO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTtcXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmhlbHAge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbn1cXG4uaGVscF9fdGV4dCB7XFxuICB2aXNpYmlsaXR5OiBoaWRkZW47XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDFyZW07XFxuICB6LWluZGV4OiAyMDtcXG59XFxuLmhlbHBfX3RleHQgPiA6bm90KFtoaWRkZW5dKSB+IDpub3QoW2hpZGRlbl0pIHtcXG4gIC0tdHctc3BhY2UteS1yZXZlcnNlOiAwO1xcbiAgbWFyZ2luLXRvcDogY2FsYygwLjM3NXJlbSAqIGNhbGMoMSAtIHZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpKTtcXG4gIG1hcmdpbi1ib3R0b206IGNhbGMoMC4zNzVyZW0gKiB2YXIoLS10dy1zcGFjZS15LXJldmVyc2UpKTtcXG59XFxuLmhlbHBfX3RleHQge1xcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tZWdnc2hlbGwpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBwYWRkaW5nOiAxcmVtO1xcbiAgdGV4dC1hbGlnbjogbGVmdDtcXG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxcmVtO1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1uLTQwKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxuICBvcGFjaXR5OiAwO1xcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMjAwbXM7XFxuICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dDtcXG4gIGJveC1zaGFkb3c6IDBweCA0cHggNDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7XFxufVxcbi5oZWxwX190ZXh0IHAgYSB7XFxuICBmb250LXdlaWdodDogNzAwO1xcbn1cXG4uaGVscDpob3ZlciAuaGVscF9fdGV4dCB7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSg1MCUsIDVweCk7XFxuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xcbiAgb3BhY2l0eTogMTtcXG59XFxuQG1lZGlhIChtYXgtd2lkdGg6IDEwMjRweCkge1xcbi5oZWxwOmhvdmVyIC5oZWxwX190ZXh0IHtcXG4gICAgd2lkdGg6IDIwMHB4O1xcbn1cXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0hvdmVyVGV4dC52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBRUU7RUFBQSxrQkFBQTtBQUFBO0FBR0U7RUFBQSxrQkFBQTtFQUFBLGtCQUFBO0VBQUEsU0FBQTtFQUFBLFdBQUE7QUFBQTtBQUFBO0VBQUEsdUJBQUE7RUFBQSxnRUFBQTtFQUFBLHlEQUFBO0FBQUE7QUFBQTtFQUFBLHNCQUFBO0VBQUEsa0JBQUE7RUFBQSw2REFBQTtFQUFBLGFBQUE7RUFBQSxnQkFBQTtFQUFBLGtCQUFBO0VBQUEsaUJBQUE7RUFBQSxvQkFBQTtFQUFBLGdEQUFBO0VBQUEsVUFBQTtFQUFBLDBCQUFBO0VBQ0EsNkJBQUE7RUFDQSwyQ0FBQTtBQUZBO0FBSUE7RUFDRSxnQkFBQTtBQUFOO0FBTUU7RUFDRSw4QkFBQTtFQUNBLG1CQUFBO0VBQ0EsVUFBQTtBQUhKO0FBSUk7QUFKRjtJQUtJLFlBQUE7QUFESjtBQUNGXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5oZWxwIHtcXG4gIEBhcHBseSByZWxhdGl2ZTtcXG5cXG4gICZfX3RleHQge1xcbiAgICBAYXBwbHkgaW52aXNpYmxlIGFic29sdXRlIHRvcC00IHotMjAgc3BhY2UteS0xLjUgcm91bmRlZCBiZy1lZ2dzaGVsbCBwLTQgdGV4dC1sZWZ0IHRleHQteHMgdGV4dC1uLTQwIG9wYWNpdHktMCBkdXJhdGlvbi0yMDA7XFxuICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0O1xcbiAgICBib3gtc2hhZG93OiAwcHggNHB4IDQwcHggcmdiKDAgMCAwIC8gMTAlKTtcXG5cXG4gICAgcCBhIHtcXG4gICAgICBmb250LXdlaWdodDogNzAwO1xcbiAgICB9XFxuICB9XFxufVxcblxcbi5oZWxwOmhvdmVyIHtcXG4gIC5oZWxwX190ZXh0IHtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoNTAlLCA1cHgpO1xcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xcbiAgICBvcGFjaXR5OiAxO1xcbiAgICBAbWVkaWEgKG1heC13aWR0aDogMTAyNHB4KSB7XFxuICAgICAgd2lkdGg6IDIwMHB4O1xcbiAgICB9XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5vdmVybGF5IHtcXG4gIHBvc2l0aW9uOiBmaXhlZDtcXG4gIGxlZnQ6IDBweDtcXG4gIHRvcDogMHB4O1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDEwMCU7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWJsYWNrKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgb3BhY2l0eTogMC43O1xcbiAgei1pbmRleDogMTAwMFxcbn1cXG4ub3ZlcmxheV9faW5uZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgbGVmdDogMHB4O1xcbiAgdG9wOiAwcHg7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMTAwJVxcbn1cXG4ub3ZlcmxheV9fY29udGVudCB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBsZWZ0OiA1MCU7XFxuICB0b3A6IDUwJTtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpXFxufVxcbi5vdmVybGF5X19jb250ZW50IC5zcGlubmVyIHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9ja1xcbn1cXG5Aa2V5ZnJhbWVzIHNwaW4ge1xcbnRvIHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKVxcbn1cXG59XFxuLm92ZXJsYXlfX2NvbnRlbnQgLnNwaW5uZXIge1xcbiAgYW5pbWF0aW9uOiBzcGluIDFzIGxpbmVhciBpbmZpbml0ZTtcXG4gIGJvcmRlci1yYWRpdXM6IDk5OTlweDtcXG4gIGJvcmRlci13aWR0aDogMnB4O1xcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLW4tMTApLCB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpO1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMC4wNTtcXG4gIHdpZHRoOiA3NXB4O1xcbiAgaGVpZ2h0OiA3NXB4O1xcbiAgYm9yZGVyLXRvcC1jb2xvcjogd2hpdGVcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0xvYWRlci52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBRUU7RUFBQSxlQUFBO0VBQUEsU0FBQTtFQUFBLFFBQUE7RUFBQSxZQUFBO0VBQUEsV0FBQTtFQUFBLGtCQUFBO0VBQUEsMERBQUE7RUFDQSxZQUFBO0VBQ0E7QUFGQTtBQUtFO0VBQUEsa0JBQUE7RUFBQSxTQUFBO0VBQUEsUUFBQTtFQUFBLFlBQUE7RUFBQTtBQUFBO0FBSUE7RUFBQSxrQkFBQTtFQUFBLFNBQUE7RUFBQSxRQUFBO0VBQ0E7QUFEQTtBQUlFO0VBQUE7QUFBQTtBQUFBO0FBQUE7SUFBQTtBQUFBO0FBQUE7QUFBQTtFQUFBLGtDQUFBO0VBQUEscUJBQUE7RUFBQSxpQkFBQTtFQUFBLHlEQUFBO0VBQUEseUJBQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBO0FBSEFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLm92ZXJsYXkge1xcbiAgQGFwcGx5IGZpeGVkIGxlZnQtMCAgdG9wLTAgIGgtZnVsbCB3LWZ1bGwgYmctYmxhY2s7XFxuICBvcGFjaXR5OiAwLjc7XFxuICB6LWluZGV4OiAxMDAwO1xcblxcbiAgJl9faW5uZXIge1xcbiAgICBAYXBwbHkgYWJzb2x1dGUgbGVmdC0wIHRvcC0wIGgtZnVsbCB3LWZ1bGw7XFxuICB9XFxuXFxuICAmX19jb250ZW50IHtcXG4gICAgQGFwcGx5IGFic29sdXRlIGxlZnQtMi80IHRvcC0yLzQ7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xcblxcbiAgICAuc3Bpbm5lciB7XFxuICAgICAgQGFwcGx5IGlubGluZS1ibG9jayBhbmltYXRlLXNwaW4gcm91bmRlZC1mdWxsIGJvcmRlci0yIGJvcmRlci1uLTEwIGJvcmRlci1vcGFjaXR5LTU7XFxuICAgICAgd2lkdGg6IDc1cHg7XFxuICAgICAgaGVpZ2h0OiA3NXB4O1xcbiAgICAgIGJvcmRlci10b3AtY29sb3I6IHdoaXRlO1xcbiAgICB9XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5tb2RhbC1hbmltYXRpb24tZW50ZXItYWN0aXZlW2RhdGEtdi01YTJiZGE1OF0sXFxuLm1vZGFsLWFuaW1hdGlvbi1sZWF2ZS1hY3RpdmVbZGF0YS12LTVhMmJkYTU4XSB7XFxuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuNXMgY3ViaWMtYmV6aWVyKDAuNTIsIDAuMDIsIDAuMTksIDEuMDIpO1xcbn1cXG4ubW9kYWwtYW5pbWF0aW9uLWVudGVyLWZyb21bZGF0YS12LTVhMmJkYTU4XSxcXG4ubW9kYWwtYW5pbWF0aW9uLWxlYXZlLXRvW2RhdGEtdi01YTJiZGE1OF0ge1xcbiAgb3BhY2l0eTogMDtcXG59XFxuLm1vZGFsLWFuaW1hdGlvbi1pbm5lci1lbnRlci1hY3RpdmVbZGF0YS12LTVhMmJkYTU4XSB7XFxuICB0cmFuc2l0aW9uOiBhbGwgMC41cyBjdWJpYy1iZXppZXIoMC41MiwgMC4wMiwgMC4xOSwgMS4wMikgMC4xNXM7XFxufVxcbi5tb2RhbC1hbmltYXRpb24taW5uZXItbGVhdmUtYWN0aXZlW2RhdGEtdi01YTJiZGE1OF0ge1xcbiAgdHJhbnNpdGlvbjogYWxsIDAuMXMgY3ViaWMtYmV6aWVyKDAuNTIsIDAuMDIsIDAuMTksIDEuMDIpO1xcbn1cXG4ubW9kYWwtYW5pbWF0aW9uLWlubmVyLWVudGVyLWZyb21bZGF0YS12LTVhMmJkYTU4XSB7XFxuICBvcGFjaXR5OiAwO1xcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLjgpO1xcbn1cXG4ubW9kYWwtYW5pbWF0aW9uLWlubmVyLWxlYXZlLXRvW2RhdGEtdi01YTJiZGE1OF0ge1xcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLjgpO1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvUG9wdXBNb2RhbC52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQ0E7O0VBRUUsNkRBQUE7QUFBRjtBQUdBOztFQUVFLFVBQUE7QUFBRjtBQUdBO0VBQ0UsK0RBQUE7QUFBRjtBQUdBO0VBQ0UseURBQUE7QUFBRjtBQUdBO0VBQ0UsVUFBQTtFQUNBLHFCQUFBO0FBQUY7QUFHQTtFQUNFLHFCQUFBO0FBQUZcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLm1vZGFsLWFuaW1hdGlvbi1lbnRlci1hY3RpdmUsXFxuLm1vZGFsLWFuaW1hdGlvbi1sZWF2ZS1hY3RpdmUge1xcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzIGN1YmljLWJlemllcigwLjUyLCAwLjAyLCAwLjE5LCAxLjAyKTtcXG59XFxuXFxuLm1vZGFsLWFuaW1hdGlvbi1lbnRlci1mcm9tLFxcbi5tb2RhbC1hbmltYXRpb24tbGVhdmUtdG8ge1xcbiAgb3BhY2l0eTogMDtcXG59XFxuXFxuLm1vZGFsLWFuaW1hdGlvbi1pbm5lci1lbnRlci1hY3RpdmUge1xcbiAgdHJhbnNpdGlvbjogYWxsIDAuNXMgY3ViaWMtYmV6aWVyKDAuNTIsIDAuMDIsIDAuMTksIDEuMDIpIDAuMTVzO1xcbn1cXG5cXG4ubW9kYWwtYW5pbWF0aW9uLWlubmVyLWxlYXZlLWFjdGl2ZSB7XFxuICB0cmFuc2l0aW9uOiBhbGwgMC4xcyBjdWJpYy1iZXppZXIoMC41MiwgMC4wMiwgMC4xOSwgMS4wMik7XFxufVxcblxcbi5tb2RhbC1hbmltYXRpb24taW5uZXItZW50ZXItZnJvbSB7XFxuICBvcGFjaXR5OiAwO1xcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLjgpO1xcbn1cXG5cXG4ubW9kYWwtYW5pbWF0aW9uLWlubmVyLWxlYXZlLXRvIHtcXG4gIHRyYW5zZm9ybTogc2NhbGUoMC44KTtcXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLnNoaW1tZXJfX2Jsb2NrW2RhdGEtdi03NDM1NjE3Ml0ge1xcbiAgYW5pbWF0aW9uLWR1cmF0aW9uOiAycztcXG4gIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xcbiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XFxuICBhbmltYXRpb24tbmFtZTogcGxhY2VIb2xkZXJTaGltbWVyLTc0MzU2MTcyO1xcbiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xcbiAgYW5pbWF0aW9uLWRlbGF5OiAwLjVzO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VkZWRlZDtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgI2VkZWRlZCAxNC4zNiUsICNkN2Q2ZDYgNTYuMjklLCAjZWRlZGVkIDEwMCUpO1xcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcXG4gIGJhY2tncm91bmQtc2l6ZTogMjQ0cHggMTA0cHg7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBoZWlnaHQ6IDE5cHg7XFxuICBib3JkZXItcmFkaXVzOiAxMHB4O1xcbiAgd2lkdGg6IDEwMCU7XFxuICBtYXJnaW46IDNweCA2cHggM3B4IDBweDtcXG59XFxuQGtleWZyYW1lcyBwbGFjZUhvbGRlclNoaW1tZXItNzQzNTYxNzIge1xcbjAlIHtcXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2FsYygwJSAtIDMwMHB4KSAwO1xcbn1cXG4yMCUge1xcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjYWxjKDAlIC0gMzAwcHgpIDA7XFxufVxcbjgwJSB7XFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNhbGMoMTAwJSArIDMwMHB4KSAwO1xcbn1cXG4xMDAlIHtcXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2FsYygxMDAlICsgMzAwcHgpIDA7XFxufVxcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvU2hpbW1lckxvYWRpbmcudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUNBO0VBQ0Usc0JBQUE7RUFDQSw2QkFBQTtFQUNBLG1DQUFBO0VBQ0EsMkNBQUE7RUFDQSxpQ0FBQTtFQUNBLHFCQUFBO0VBQ0EseUJBQUE7RUFDQSxzRkFBQTtFQU1BLDRCQUFBO0VBQ0EsNEJBQUE7RUFDQSxrQkFBQTtFQUNBLFlBQUE7RUFDQSxtQkFBQTtFQUNBLFdBQUE7RUFDQSx1QkFBQTtBQUxGO0FBUUE7QUFDRTtJQUNFLHVDQUFBO0FBTEY7QUFRQTtJQUNFLHVDQUFBO0FBTkY7QUFTQTtJQUNFLHlDQUFBO0FBUEY7QUFVQTtJQUNFLHlDQUFBO0FBUkY7QUFDRlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4uc2hpbW1lcl9fYmxvY2sge1xcbiAgYW5pbWF0aW9uLWR1cmF0aW9uOiAycztcXG4gIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xcbiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XFxuICBhbmltYXRpb24tbmFtZTogcGxhY2VIb2xkZXJTaGltbWVyO1xcbiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xcbiAgYW5pbWF0aW9uLWRlbGF5OiAwLjVzO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VkZWRlZDtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChcXG4gICAgOTBkZWcsXFxuICAgICNlZGVkZWQgMTQuMzYlLFxcbiAgICAjZDdkNmQ2IDU2LjI5JSxcXG4gICAgI2VkZWRlZCAxMDAlXFxuICApO1xcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcXG4gIGJhY2tncm91bmQtc2l6ZTogMjQ0cHggMTA0cHg7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBoZWlnaHQ6IDE5cHg7XFxuICBib3JkZXItcmFkaXVzOiAxMHB4O1xcbiAgd2lkdGg6IDEwMCU7XFxuICBtYXJnaW46IDNweCA2cHggM3B4IDBweDtcXG59XFxuXFxuQGtleWZyYW1lcyBwbGFjZUhvbGRlclNoaW1tZXIge1xcbiAgMCUge1xcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjYWxjKDAlIC0gMzAwcHgpIDA7XFxuICB9XFxuXFxuICAyMCUge1xcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjYWxjKDAlIC0gMzAwcHgpIDA7XFxuICB9XFxuXFxuICA4MCUge1xcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjYWxjKDEwMCUgKyAzMDBweCkgMDtcXG4gIH1cXG5cXG4gIDEwMCUge1xcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjYWxjKDEwMCUgKyAzMDBweCkgMDtcXG4gIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmVycm9yc1tkYXRhLXYtZjY3YzdlNzJdIHtcXG4gICAgYm9yZGVyLWxlZnQtd2lkdGg6IDJweFxcbn1cXG4uZXJyb3JzX19oZWFkW2RhdGEtdi1mNjdjN2U3Ml0ge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxuICAgIHBhZGRpbmc6IDFyZW1cXG59XFxuLmVycm9yc19faGVhZC0tdGl0bGVbZGF0YS12LWY2N2M3ZTcyXSB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGZsZXgtZ3JvdzogMTtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTtcXG4gICAgbGluZS1oZWlnaHQ6IDEuMjVyZW07XFxuICAgIGxpbmUtaGVpZ2h0OiAxLjYyNVxcbn1cXG4uZXJyb3JzX19saXN0W2RhdGEtdi1mNjdjN2U3Ml0ge1xcbiAgICBoZWlnaHQ6IDBweDtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gICAgcGFkZGluZy1sZWZ0OiAxcmVtO1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxcmVtO1xcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBhbGw7XFxuICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xcbiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiA1MDBtc1xcbn1cXG4uZXJyb3JzX19saXN0IHVsW2RhdGEtdi1mNjdjN2U3Ml0ge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDEuNXJlbTtcXG4gICAgcGFkZGluZy1yaWdodDogMS41cmVtXFxufVxcbi5lcnJvcnNfX2l0ZW1bZGF0YS12LWY2N2M3ZTcyXSB7XFxuICAgIHBhZGRpbmctdG9wOiAxcmVtO1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMXJlbTtcXG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTtcXG4gICAgbGluZS1oZWlnaHQ6IDEuMjVyZW07XFxuICAgIGxpbmUtaGVpZ2h0OiAxLjVcXG59XFxuLmVycm9yc19faXRlbVtkYXRhLXYtZjY3YzdlNzJdOm5vdCg6bGFzdC1jaGlsZCkge1xcbiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7XFxuICAgIC0tdHctYm9yZGVyLW9wYWNpdHk6IDE7XFxuICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1uLTIwKSwgdmFyKC0tdHctYm9yZGVyLW9wYWNpdHkpKVxcbn1cXG4uZXJyb3JzX19lbGVtZW50W2RhdGEtdi1mNjdjN2U3Ml0ge1xcbiAgICBsaXN0LXN0eWxlLXR5cGU6IGRpc2M7XFxuICAgIHBhZGRpbmctbGVmdDogMXJlbTtcXG4gICAgcGFkZGluZy1yaWdodDogMXJlbTtcXG4gICAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICAgIGNvbG9yOiByZ2JhKHZhcigtLWJsdWVjb3JhbC01MCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpXFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9FcnJvckxpc3RzLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFFRTtJQUFBO0FBQUE7QUFHRTtJQUFBLGFBQUE7SUFBQSw4QkFBQTtJQUFBO0FBQUE7QUFHRTtJQUFBLGFBQUE7SUFBQSxZQUFBO0lBQUEsbUJBQUE7SUFBQSxtQkFBQTtJQUFBLG9CQUFBO0lBQUE7QUFBQTtBQUtGO0lBQUEsV0FBQTtJQUFBLGdCQUFBO0lBQUEsa0JBQUE7SUFBQSxtQkFBQTtJQUFBLHdCQUFBO0lBQUEsd0RBQUE7SUFBQTtBQUFBO0FBR0U7SUFBQSxvQkFBQTtJQUFBO0FBQUE7QUFLRjtJQUFBLGlCQUFBO0lBQUEsb0JBQUE7SUFBQSxtQkFBQTtJQUFBLG9CQUFBO0lBQUE7QUFBQTtBQUlBO0lBQUEsd0JBQUE7SUFBQSxzQkFBQTtJQUFBO0FBQUE7QUFJQTtJQUFBLHFCQUFBO0lBQUEsa0JBQUE7SUFBQSxtQkFBQTtJQUFBLG9CQUFBO0lBQUE7QUFBQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4uZXJyb3JzIHtcXG4gIEBhcHBseSBib3JkZXItbC0yO1xcblxcbiAgJl9faGVhZCB7XFxuICAgIEBhcHBseSBmbGV4IGp1c3RpZnktYmV0d2VlbiBwLTQ7XFxuXFxuICAgICYtLXRpdGxlIHtcXG4gICAgICBAYXBwbHkgZmxleCBncm93IGl0ZW1zLWNlbnRlciB0ZXh0LXNtIGxlYWRpbmctcmVsYXhlZDtcXG4gICAgfVxcbiAgfVxcblxcbiAgJl9fbGlzdCB7XFxuICAgIEBhcHBseSBoLTAgb3ZlcmZsb3ctaGlkZGVuIHB4LTQgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNTAwO1xcblxcbiAgICB1bCB7XFxuICAgICAgQGFwcGx5IHB4LTY7XFxuICAgIH1cXG4gIH1cXG5cXG4gICZfX2l0ZW0ge1xcbiAgICBAYXBwbHkgcHktNCB0ZXh0LXNtIGxlYWRpbmctbm9ybWFsO1xcbiAgfVxcblxcbiAgJl9faXRlbTpub3QoOmxhc3QtY2hpbGQpIHtcXG4gICAgQGFwcGx5IGJvcmRlci1iIGJvcmRlci1uLTIwO1xcbiAgfVxcblxcbiAgJl9fZWxlbWVudCB7XFxuICAgIEBhcHBseSBsaXN0LWRpc2MgcHgtNCB0ZXh0LWJsdWUtNTA7XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5wcm9ncmVzc19iYXJbZGF0YS12LTVjMzJiZjBjXSB7XFxuICBwb3NpdGlvbjogZml4ZWQ7XFxuICBsZWZ0OiAwcHg7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgd2lkdGg6IDEwMCU7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXdoaXRlKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgdG9wOiAwICFpbXBvcnRhbnQ7XFxuICB6LWluZGV4OiA5OTk5OTk7XFxuICBoZWlnaHQ6IDEwMHZoO1xcbn1cXG4ucHJvZ3Jlc3NfYmFyX193cmFwcGVyW2RhdGEtdi01YzMyYmYwY10ge1xcbiAgd2lkdGg6IDI1MHB4O1xcbiAgYm9yZGVyLXJhZGl1czogMXJlbTtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNjNGM0YzQ7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbn1cXG4ucHJvZ3Jlc3NfYmFyX192aWV3ZXJbZGF0YS12LTVjMzJiZjBjXSB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXNwcmluZy01MCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIGJvcmRlci1yYWRpdXM6IDRweDtcXG4gIGhlaWdodDogNHB4O1xcbiAgdHJhbnNmb3JtOiBzY2FsZVgoMCk7XFxuICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDA7XFxufVxcbi5wcm9ncmVzc19iYXIuYW5pbWF0ZS1sb2FkZXIgLnByb2dyZXNzX2Jhcl9fdmlld2VyW2RhdGEtdi01YzMyYmYwY10ge1xcbiAgYW5pbWF0aW9uOiBGaWxsQW5pbWF0aW9uLTVjMzJiZjBjIDZzIGxpbmVhciBmb3J3YXJkcztcXG59XFxuLnByb2dyZXNzX2Jhci5hbmltYXRlLWxvYWRlciAucHJvZ3Jlc3NfYmFyX19zdGF0ZVtkYXRhLXYtNWMzMmJmMGNdOjpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICBhbmltYXRpb246IFRleHRDaGFuZ2UtNWMzMmJmMGMgNnMgbGluZWFyIGZvcndhcmRzO1xcbn1cXG4ucHJvZ3Jlc3NfYmFyX19jb250ZW50W2RhdGEtdi01YzMyYmYwY10ge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxufVxcbi5wcm9ncmVzc19iYXJfX3N0YXRlW2RhdGEtdi01YzMyYmYwY10ge1xcbiAgbWFyZ2luLXRvcDogMS41cmVtO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjI1cmVtO1xcbiAgZm9udC13ZWlnaHQ6IDcwMDtcXG4gIGxpbmUtaGVpZ2h0OiAxLjU7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLWJsdWVjb3JhbC01MCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cXG5Aa2V5ZnJhbWVzIEZpbGxBbmltYXRpb24tNWMzMmJmMGMge1xcbjAlIHtcXG4gICAgdHJhbnNmb3JtOiBzY2FsZVgoMCk7XFxufVxcbjEwMCUge1xcbiAgICB0cmFuc2Zvcm06IHNjYWxlWCgxKTtcXG59XFxufVxcbkBrZXlmcmFtZXMgVGV4dENoYW5nZS01YzMyYmYwYyB7XFxuMCUge1xcbiAgICBjb250ZW50OiBhdHRyKGRhdGEtc3RhcnQpO1xcbn1cXG45NSUge1xcbiAgICBjb250ZW50OiBhdHRyKGRhdGEtc3RhcnQpO1xcbn1cXG4xMDAlIHtcXG4gICAgY29udGVudDogYXR0cihkYXRhLWVuZCk7XFxufVxcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvUHJvZ3Jlc3NMb2FkZXIudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUVFO0VBQUEsZUFBQTtFQUFBLFNBQUE7RUFBQSxhQUFBO0VBQUEsV0FBQTtFQUFBLG1CQUFBO0VBQUEsdUJBQUE7RUFBQSxrQkFBQTtFQUFBLDBEQUFBO0VBQ0EsaUJBQUE7RUFDQSxlQUFBO0VBQ0EsYUFBQTtBQUhBO0FBTUU7RUFBQSxZQUFBO0VBQUEsbUJBQUE7RUFDQSx5QkFBQTtFQUNBLGdCQUFBO0FBRkE7QUFNQTtFQUFBLGtCQUFBO0VBQUEsOERBQUE7RUFDQSxrQkFBQTtFQUNBLFdBQUE7RUFDQSxvQkFBQTtFQUNBLHFCQUFBO0FBSkE7QUFPRjtFQUNFLG9EQUFBO0FBRko7QUFLRTtFQUNFLFdBQUE7RUFDQSxpREFBQTtBQUhKO0FBT0k7RUFBQSxhQUFBO0VBQUEsc0JBQUE7QUFBQTtBQUlBO0VBQUEsa0JBQUE7RUFBQSxrQkFBQTtFQUFBLG1CQUFBO0VBQUEsb0JBQUE7RUFBQSxnQkFBQTtFQUFBLGdCQUFBO0VBQUEsb0JBQUE7RUFBQSx3REFBQTtBQUFBO0FBSUo7QUFDRTtJQUNFLG9CQUFBO0FBTkY7QUFRQTtJQUNFLG9CQUFBO0FBTkY7QUFDRjtBQVNBO0FBQ0U7SUFDRSx5QkFBQTtBQVBGO0FBVUE7SUFDRSx5QkFBQTtBQVJGO0FBV0E7SUFDRSx1QkFBQTtBQVRGO0FBQ0ZcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLnByb2dyZXNzX2JhciB7XFxuICBAYXBwbHkgZml4ZWQgIGxlZnQtMCBmbGV4IHctZnVsbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctd2hpdGU7XFxuICB0b3A6IDAgIWltcG9ydGFudDtcXG4gIHotaW5kZXg6IDk5OTk5OTtcXG4gIGhlaWdodDogMTAwdmg7XFxuXFxuICAmX193cmFwcGVyIHtcXG4gICAgQGFwcGx5IHctWzI1MHB4XSBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC0yeGw7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNjNGM0YzQ7XFxuICAgIG92ZXJmbG93OiBoaWRkZW47XFxuICB9XFxuXFxuICAmX192aWV3ZXIge1xcbiAgICBAYXBwbHkgYmctc3ByaW5nLTUwO1xcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XFxuICAgIGhlaWdodDogNHB4O1xcbiAgICB0cmFuc2Zvcm06IHNjYWxlWCgwKTtcXG4gICAgdHJhbnNmb3JtLW9yaWdpbjogMCAwO1xcbiAgfVxcblxcbiAgJi5hbmltYXRlLWxvYWRlciAmX192aWV3ZXIge1xcbiAgICBhbmltYXRpb246IEZpbGxBbmltYXRpb24gNnMgbGluZWFyIGZvcndhcmRzO1xcbiAgfVxcblxcbiAgJi5hbmltYXRlLWxvYWRlciAmX19zdGF0ZTo6YmVmb3JlIHtcXG4gICAgY29udGVudDogJyc7XFxuICAgIGFuaW1hdGlvbjogVGV4dENoYW5nZSA2cyBsaW5lYXIgZm9yd2FyZHM7XFxuICB9XFxuXFxuICAmX19jb250ZW50IHtcXG4gICAgQGFwcGx5IGZsZXggZmxleC1jb2w7XFxuICB9XFxuXFxuICAmX19zdGF0ZSB7XFxuICAgIEBhcHBseSBtdC02IHRleHQtY2VudGVyIHRleHQtc20gZm9udC1ib2xkIGxlYWRpbmctbm9ybWFsIHRleHQtYmx1ZS01MDtcXG4gIH1cXG59XFxuXFxuQGtleWZyYW1lcyBGaWxsQW5pbWF0aW9uIHtcXG4gIDAlIHtcXG4gICAgdHJhbnNmb3JtOiBzY2FsZVgoMCk7XFxuICB9XFxuICAxMDAlIHtcXG4gICAgdHJhbnNmb3JtOiBzY2FsZVgoMSk7XFxuICB9XFxufVxcblxcbkBrZXlmcmFtZXMgVGV4dENoYW5nZSB7XFxuICAwJSB7XFxuICAgIGNvbnRlbnQ6IGF0dHIoZGF0YS1zdGFydCk7XFxuICB9XFxuXFxuICA5NSUge1xcbiAgICBjb250ZW50OiBhdHRyKGRhdGEtc3RhcnQpO1xcbiAgfVxcblxcbiAgMTAwJSB7XFxuICAgIGNvbnRlbnQ6IGF0dHIoZGF0YS1lbmQpO1xcbiAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIudmFsaWRhdGlvbltkYXRhLXYtMWUzOGQxMGVdIHtcXG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAuNXJlbTtcXG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAuNXJlbTtcXG4gIGJvcmRlci13aWR0aDogMXB4O1xcbiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogYWxsO1xcbiAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XFxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiA1MDBtcztcXG4gIGJveC1zaGFkb3c6IDBweCA0cHggNDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7XFxufVxcbi52YWxpZGF0aW9uX19lcnJvckhlYWRbZGF0YS12LTFlMzhkMTBlXSB7XFxuICB3aWR0aDogMjEycHg7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNyaW1zb24tMjApLCB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1jcmltc29uLTEwKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgYm94LXNoYWRvdzogMHB4IDRweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcXG59XFxuLnZhbGlkYXRpb25fX2Vycm9yc1tkYXRhLXYtMWUzOGQxMGVdIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMHB4O1xcbiAgcmlnaHQ6IDBweDtcXG4gIHotaW5kZXg6IDEwO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIHdpZHRoOiA1OTVweDtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS13aGl0ZSksIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5KSk7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXdoaXRlKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIDYwcHgpO1xcbn1cXG4udmFsaWRhdGlvbl9faGVhZGluZ1tkYXRhLXYtMWUzOGQxMGVdIHtcXG4gIHBhZGRpbmctbGVmdDogMXJlbTtcXG4gIHBhZGRpbmctcmlnaHQ6IDFyZW07XFxuICBwYWRkaW5nLXRvcDogMC43NXJlbTtcXG4gIHBhZGRpbmctYm90dG9tOiAwLjc1cmVtO1xcbn1cXG4udmFsaWRhdGlvbl9fZXJyb3JzLWxpc3RbZGF0YS12LTFlMzhkMTBlXSB7XFxuICBmbGV4LWdyb3c6IDE7XFxuICBvdmVyZmxvdy15OiBhdXRvO1xcbiAgcGFkZGluZy1sZWZ0OiAxcmVtO1xcbiAgcGFkZGluZy1yaWdodDogMXJlbTtcXG4gIHBhZGRpbmctdG9wOiAwLjc1cmVtO1xcbiAgcGFkZGluZy1ib3R0b206IDAuNzVyZW07XFxufVxcbi52YWxpZGF0aW9uX190b2dnbGVbZGF0YS12LTFlMzhkMTBlXSB7XFxuICBmb250LXNpemU6IDAuNzVyZW07XFxuICBsaW5lLWhlaWdodDogMXJlbTtcXG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XFxuICBsaW5lLWhlaWdodDogMS41O1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1ibHVlY29yYWwtNTApLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG59XFxuLmFjdGl2ZVtkYXRhLXYtMWUzOGQxMGVdOjphZnRlciB7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGhlaWdodDogMnB4O1xcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzA2ZGJlNDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgdG9wOiBjYWxjKDEwMCUgKyAzcHgpO1xcbiAgbGVmdDogMDtcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1N0aWNreUVycm9ycy52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBRUU7RUFBQSw4QkFBQTtFQUFBLGlDQUFBO0VBQUEsaUJBQUE7RUFBQSx3QkFBQTtFQUFBLHdEQUFBO0VBQUEsMEJBQUE7RUFDQSwyQ0FBQTtBQURBO0FBSUU7RUFBQSxZQUFBO0VBQUEsc0JBQUE7RUFBQSwrREFBQTtFQUFBLGtCQUFBO0VBQUEsK0RBQUE7RUFDQSwyQ0FBQTtBQURBO0FBS0E7RUFBQSxrQkFBQTtFQUFBLFFBQUE7RUFBQSxVQUFBO0VBQUEsV0FBQTtFQUFBLGFBQUE7RUFBQSxZQUFBO0VBQUEsc0JBQUE7RUFBQSxnQkFBQTtFQUFBLHNCQUFBO0VBQUEsMERBQUE7RUFBQSxrQkFBQTtFQUFBLDBEQUFBO0VBQ0EsOEJBQUE7QUFEQTtBQUtBO0VBQUEsa0JBQUE7RUFBQSxtQkFBQTtFQUFBLG9CQUFBO0VBQUEsdUJBQUE7QUFBQTtBQUlBO0VBQUEsWUFBQTtFQUFBLGdCQUFBO0VBQUEsa0JBQUE7RUFBQSxtQkFBQTtFQUFBLG9CQUFBO0VBQUEsdUJBQUE7QUFBQTtBQUlBO0VBQUEsa0JBQUE7RUFBQSxpQkFBQTtFQUFBLHlCQUFBO0VBQUEsZ0JBQUE7RUFBQSxvQkFBQTtFQUFBLHdEQUFBO0FBQUE7QUFJRjtFQUNFLFdBQUE7RUFDQSxrQkFBQTtFQUNBLFdBQUE7RUFDQSxrQkFBQTtFQUNBLHlCQUFBO0VBQ0EsV0FBQTtFQUNBLHFCQUFBO0VBQ0EsT0FBQTtBQUxKXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi52YWxpZGF0aW9uIHtcXG4gIEBhcHBseSByb3VuZGVkLXRsLWxnIHJvdW5kZWQtYmwtbGcgYm9yZGVyIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMDtcXG4gIGJveC1zaGFkb3c6IDBweCA0cHggNDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7XFxuXFxuICAmX19lcnJvckhlYWQge1xcbiAgICBAYXBwbHkgdy1bMjEycHhdIGJvcmRlci1jcmltc29uLTIwIGJnLWNyaW1zb24tMTA7XFxuICAgIGJveC1zaGFkb3c6IDBweCA0cHggNDBweCByZ2JhKDAsIDAsIDAsIDAuMSk7XFxuICB9XFxuXFxuICAmX19lcnJvcnMge1xcbiAgICBAYXBwbHkgYWJzb2x1dGUgdG9wLTAgcmlnaHQtMCB6LTEwIGZsZXggdy1bNTk1cHhdIGZsZXgtY29sIG92ZXJmbG93LWhpZGRlbiBib3JkZXItd2hpdGUgYmctd2hpdGU7XFxuICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSA2MHB4KTtcXG4gIH1cXG5cXG4gICZfX2hlYWRpbmcge1xcbiAgICBAYXBwbHkgcHgtNCBweS0zO1xcbiAgfVxcblxcbiAgJl9fZXJyb3JzLWxpc3Qge1xcbiAgICBAYXBwbHkgZ3JvdyBvdmVyZmxvdy15LWF1dG8gcHgtNCBweS0zO1xcbiAgfVxcblxcbiAgJl9fdG9nZ2xlIHtcXG4gICAgQGFwcGx5IHRleHQteHMgdXBwZXJjYXNlIGxlYWRpbmctbm9ybWFsIHRleHQtYmx1ZS01MDtcXG4gIH1cXG59XFxuLmFjdGl2ZSB7XFxuICAmOjphZnRlciB7XFxuICAgIGNvbnRlbnQ6ICcnO1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIGhlaWdodDogMnB4O1xcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICMwNmRiZTQ7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICB0b3A6IGNhbGMoMTAwJSArIDNweCk7XFxuICAgIGxlZnQ6IDA7XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5lcnJvci1ib3JkZXJbZGF0YS12LTZmMTdlYzQ1XTo6YWZ0ZXIge1xcbiAgY29udGVudDogXFxcIiBcXFwiO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHdpZHRoOiAycHg7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTM0ZDViO1xcbn1cXG4ud2FybmluZy1ib3JkZXJbZGF0YS12LTZmMTdlYzQ1XTo6YWZ0ZXIge1xcbiAgY29udGVudDogXFxcIiBcXFwiO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHdpZHRoOiAycHg7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjRiNzg0O1xcbn1cXG4uZXJyb3ItY29udGFpbmVyW2RhdGEtdi02ZjE3ZWM0NV0ge1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHRyYW5zaXRpb246IGhlaWdodCAwLjNzIGVhc2Utb3V0O1xcbiAgaGVpZ2h0OiBhdXRvO1xcbn1cXG4ubGlzdC1pbmRleFtkYXRhLXYtNmYxN2VjNDVdIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHBhZGRpbmctbGVmdDogMjRweDtcXG59XFxuLmxpc3QtaW5kZXhbZGF0YS12LTZmMTdlYzQ1XTphZnRlciB7XFxuICBjb250ZW50OiBcXFwiIFxcXCI7XFxuICB6LWluZGV4OiAxMDtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGhlaWdodDogNHB4O1xcbiAgd2lkdGg6IDRweDtcXG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XFxuICBsZWZ0OiA4cHg7XFxuICB0b3A6IDUwJTtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcXG4gIGJhY2tncm91bmQ6ICMyYTJmMzA7XFxufVxcbi5jb250YWluZXJbZGF0YS12LTZmMTdlYzQ1XSB7XFxuICBoZWlnaHQ6IDBweDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBwYWRkaW5nLWxlZnQ6IDFyZW07XFxuICBwYWRkaW5nLXJpZ2h0OiAxcmVtO1xcbiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogYWxsO1xcbiAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XFxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiA1MDBtcztcXG59XFxuLmVycm9yLWVsZW1lbnRbZGF0YS12LTZmMTdlYzQ1XTpub3QoOmxhc3Qtb2YtdHlwZSkge1xcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkNWRjZGU7XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9VcGxvYWRlZEVycm9ycy52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBRUU7RUFDRSxZQUFBO0VBQ0Esa0JBQUE7RUFDQSxPQUFBO0VBQ0EsTUFBQTtFQUNBLFlBQUE7RUFDQSxVQUFBO0VBQ0EseUJBQUE7QUFESjtBQUtFO0VBQ0UsWUFBQTtFQUNBLGtCQUFBO0VBQ0EsT0FBQTtFQUNBLE1BQUE7RUFDQSxZQUFBO0VBQ0EsVUFBQTtFQUNBLHlCQUFBO0FBRko7QUFLQTtFQUNFLGdCQUFBO0VBQ0EsZ0NBQUE7RUFDQSxZQUFBO0FBRkY7QUFLQTtFQUNFLGtCQUFBO0VBQ0Esa0JBQUE7QUFGRjtBQUlFO0VBQ0UsWUFBQTtFQUNBLFdBQUE7RUFDQSxrQkFBQTtFQUNBLFdBQUE7RUFDQSxVQUFBO0VBQ0EsbUJBQUE7RUFDQSxTQUFBO0VBQ0EsUUFBQTtFQUNBLDJCQUFBO0VBQ0EsbUJBQUE7QUFGSjtBQU1FO0VBQUEsV0FBQTtFQUFBLGdCQUFBO0VBQUEsa0JBQUE7RUFBQSxtQkFBQTtFQUFBLHdCQUFBO0VBQUEsd0RBQUE7RUFBQSwwQkFBQTtBQUFBO0FBRUY7RUFDRSxnQ0FBQTtBQURGXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5lcnJvci1ib3JkZXIge1xcbiAgJjo6YWZ0ZXIge1xcbiAgICBjb250ZW50OiAnICc7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgbGVmdDogMDtcXG4gICAgdG9wOiAwO1xcbiAgICBoZWlnaHQ6IDEwMCU7XFxuICAgIHdpZHRoOiAycHg7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNlMzRkNWI7XFxuICB9XFxufVxcbi53YXJuaW5nLWJvcmRlciB7XFxuICAmOjphZnRlciB7XFxuICAgIGNvbnRlbnQ6ICcgJztcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICBsZWZ0OiAwO1xcbiAgICB0b3A6IDA7XFxuICAgIGhlaWdodDogMTAwJTtcXG4gICAgd2lkdGg6IDJweDtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y0Yjc4NDtcXG4gIH1cXG59XFxuLmVycm9yLWNvbnRhaW5lciB7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgdHJhbnNpdGlvbjogaGVpZ2h0IDAuM3MgZWFzZS1vdXQ7XFxuICBoZWlnaHQ6IGF1dG87XFxufVxcblxcbi5saXN0LWluZGV4IHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHBhZGRpbmctbGVmdDogMjRweDtcXG5cXG4gICY6YWZ0ZXIge1xcbiAgICBjb250ZW50OiAnICc7XFxuICAgIHotaW5kZXg6IDEwO1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIGhlaWdodDogNHB4O1xcbiAgICB3aWR0aDogNHB4O1xcbiAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xcbiAgICBsZWZ0OiA4cHg7XFxuICAgIHRvcDogNTAlO1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XFxuICAgIGJhY2tncm91bmQ6ICMyYTJmMzA7XFxuICB9XFxufVxcbi5jb250YWluZXIge1xcbiAgQGFwcGx5IGgtMCBvdmVyZmxvdy1oaWRkZW4gcHgtNCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi01MDA7XFxufVxcbi5lcnJvci1lbGVtZW50Om5vdCg6bGFzdC1vZi10eXBlKSB7XFxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2Q1ZGNkZTtcXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLnBhZ2UtaGVpZ2h0IHtcXG4gIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggLSA2MHB4KTtcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9BY3Rpdml0eUluZGV4LnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFDQTtFQUNFLDhCQUFBO0FBQUZcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLnBhZ2UtaGVpZ2h0IHtcXG4gIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggLSA2MHB4KTtcXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmZvcm0tZ3JvdXBbZGF0YS12LWM3Y2EyOGI4XSB7XFxuICBib3JkZXItcmFkaXVzOiAwLjVyZW07XFxuICBib3JkZXItd2lkdGg6IDFweDtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDE7XFxuICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tbi0yMCksIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5KSk7XFxuICBwYWRkaW5nOiAxLjI1cmVtO1xcbn1cXG4uZm9ybS1ncm91cFtkYXRhLXYtYzdjYTI4YjhdOmxhc3QtY2hpbGQge1xcbiAgbWFyZ2luLWJvdHRvbTogMDtcXG59XFxuLmZvcm0tZ3JvdXAgLmZvcm1fX2NvbnRlbnRbZGF0YS12LWM3Y2EyOGI4XSB7XFxuICBtYXJnaW4tdG9wOiAwO1xcbiAgZ2FwOiAyNXB4O1xcbn1cXG4uZm9ybS1ncm91cCAuZm9ybV9fY29udGVudCAubGFiZWwtZmllbGRbZGF0YS12LWM3Y2EyOGI4XSB7XFxuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG59XFxuLmZvcm0tZ3JvdXAtdGl0bGUtY29udGFpbmVyW2RhdGEtdi1jN2NhMjhiOF0ge1xcbiAgbWFyZ2luLWJvdHRvbTogMC4zNzVyZW07XFxuICBkaXNwbGF5OiBmbGV4O1xcbn1cXG4uZm9ybS1ncm91cC10aXRsZS1jb250YWluZXJbZGF0YS12LWM3Y2EyOGI4XSA+IDpub3QoW2hpZGRlbl0pIH4gOm5vdChbaGlkZGVuXSkge1xcbiAgLS10dy1zcGFjZS14LXJldmVyc2U6IDA7XFxuICBtYXJnaW4tcmlnaHQ6IGNhbGMoMC4yNXJlbSAqIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpO1xcbiAgbWFyZ2luLWxlZnQ6IGNhbGMoMC4yNXJlbSAqIGNhbGMoMSAtIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpKTtcXG59XFxuLmZvcm0tZ3JvdXAtdGl0bGVbZGF0YS12LWM3Y2EyOGI4XSB7XFxuICBmb250LXNpemU6IDAuNzVyZW07XFxuICBsaW5lLWhlaWdodDogMXJlbTtcXG4gIGZvbnQtd2VpZ2h0OiA3MDA7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLWJsdWVjb3JhbCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0NyZWF0ZU1vZGFsLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFFRTtFQUFBLHFCQUFBO0VBQUEsaUJBQUE7RUFBQSxzQkFBQTtFQUFBLHlEQUFBO0VBQUEsZ0JBQUE7QUFBQTtBQUVBO0VBQ0UsZ0JBQUE7QUFBSjtBQUdFO0VBQ0UsYUFBQTtFQUNBLFNBQUE7QUFESjtBQUlNO0VBQUEscUJBQUE7RUFBQSxhQUFBO0VBQUEsbUJBQUE7RUFBQSw4QkFBQTtBQUFBO0FBS0o7RUFBQSx1QkFBQTtFQUFBLGFBQUE7QUFBQTtBQUFBO0VBQUEsdUJBQUE7RUFBQSx1REFBQTtFQUFBLGdFQUFBO0FBQUE7QUFHQTtFQUFBLGtCQUFBO0VBQUEsaUJBQUE7RUFBQSxnQkFBQTtFQUFBLG9CQUFBO0VBQUEscURBQUE7QUFBQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4uZm9ybS1ncm91cCB7XFxuICBAYXBwbHkgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLW4tMjAgcC01O1xcblxcbiAgJjpsYXN0LWNoaWxkIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMDtcXG4gIH1cXG5cXG4gIC5mb3JtX19jb250ZW50IHtcXG4gICAgbWFyZ2luLXRvcDogMDtcXG4gICAgZ2FwOiAyNXB4O1xcblxcbiAgICAubGFiZWwtZmllbGQge1xcbiAgICAgIEBhcHBseSBtYi0yIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbjtcXG4gICAgfVxcbiAgfVxcbn1cXG4uZm9ybS1ncm91cC10aXRsZS1jb250YWluZXIge1xcbiAgQGFwcGx5IG1iLTEuNSBmbGV4IHNwYWNlLXgtMTtcXG59XFxuLmZvcm0tZ3JvdXAtdGl0bGUge1xcbiAgQGFwcGx5IHRleHQteHMgZm9udC1ib2xkIHRleHQtYmx1ZWNvcmFsO1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIuYWNjb3JkaW9uLWNvbnRlbnRbZGF0YS12LTA2M2NiZDg2XSB7XFxuICBoZWlnaHQ6IDBweDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB0cmFuc2l0aW9uLXByb3BlcnR5OiBhbGw7XFxuICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDUwMG1zO1xcbn1cXG4uYWNjb3JkaW9uLWNvbnRlbnQgZGl2W2RhdGEtdi0wNjNjYmQ4Nl0ge1xcbiAgbWFyZ2luLXRvcDogMXJlbTtcXG4gIGJvcmRlci10b3Atd2lkdGg6IDFweDtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDE7XFxuICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tbi0yMCksIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5KSk7XFxuICBwYWRkaW5nLXRvcDogMC43NXJlbTtcXG4gIHBhZGRpbmctYm90dG9tOiAwLjc1cmVtO1xcbn1cXG4uYWN0aXZpdHktdGl0bGVbZGF0YS12LTA2M2NiZDg2XSB7XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9FcnJvckl0ZW0udnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUVFO0VBQUEsV0FBQTtFQUFBLGdCQUFBO0VBQUEsd0JBQUE7RUFBQSx3REFBQTtFQUFBLDBCQUFBO0FBQUE7QUFFRTtFQUFBLGdCQUFBO0VBQUEscUJBQUE7RUFBQSxzQkFBQTtFQUFBLHlEQUFBO0VBQUEsb0JBQUE7RUFBQSx1QkFBQTtBQUFBO0FBSUo7RUFDRSxtQkFBQTtFQUNBLGdCQUFBO0VBQ0EsdUJBQUE7QUFBRlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4uYWNjb3JkaW9uLWNvbnRlbnQge1xcbiAgQGFwcGx5IGgtMCBvdmVyZmxvdy1oaWRkZW4gdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNTAwO1xcbiAgZGl2IHtcXG4gICAgQGFwcGx5IG10LTQgYm9yZGVyLXQgYm9yZGVyLW4tMjAgcHktMztcXG4gIH1cXG59XFxuXFxuLmFjdGl2aXR5LXRpdGxlIHtcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5hY3Rpdml0aWVzIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG59XFxuLmFjdGl2aXRpZXMgLmVsZW1lbnRzIHtcXG4gIGJvcmRlci1yYWRpdXM6IDBweCA4cHggOHB4IDBweDtcXG4gIHdpZHRoOiAxMjVweDtcXG4gIG1pbi1oZWlnaHQ6IDE3NHB4O1xcbn1cXG4uYWN0aXZpdGllcyAuZWxlbWVudHNfX3BhbmVsIHtcXG4gIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcXG4gIHBhZGRpbmc6IDFyZW07XFxuICAtLXR3LXNoYWRvdzogMHB4IDRweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcXG4gIC0tdHctc2hhZG93LWNvbG9yZWQ6IDBweCA0cHggNDBweCB2YXIoLS10dy1zaGFkb3ctY29sb3IpO1xcbiAgYm94LXNoYWRvdzogdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93LCAwIDAgIzAwMDApLCB2YXIoLS10dy1yaW5nLXNoYWRvdywgMCAwICMwMDAwKSwgdmFyKC0tdHctc2hhZG93KTtcXG59XFxuLmFjdGl2aXRpZXMgLmVsZW1lbnRzX19wYW5lbCAucGFuZWxfX2lucHV0OmZvY3VzLCBcXG4uYWN0aXZpdGllcyAuZWxlbWVudHNfX3BhbmVsIC5wYW5lbF9fc2VhcmNoOmZvY3VzIHtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tbi00MCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cXG4uYWN0aXZpdGllcyAuaG92ZXJfX3RleHQge1xcbiAgbWFyZ2luLWxlZnQ6IDAuMjVyZW07XFxufVxcbi5hY3Rpdml0aWVzIC5idXR0b25fX2Ryb3Bkb3duIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHJpZ2h0OiAwcHg7XFxuICB0b3A6IDEwMCU7XFxuICB6LWluZGV4OiAxMDtcXG4gIHRleHQtYWxpZ246IGxlZnQ7XFxuICAtLXR3LXNoYWRvdzogMHB4IDRweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcXG4gIC0tdHctc2hhZG93LWNvbG9yZWQ6IDBweCA0cHggNDBweCB2YXIoLS10dy1zaGFkb3ctY29sb3IpO1xcbiAgYm94LXNoYWRvdzogdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93LCAwIDAgIzAwMDApLCB2YXIoLS10dy1yaW5nLXNoYWRvdywgMCAwICMwMDAwKSwgdmFyKC0tdHctc2hhZG93KTtcXG4gIG1pbi13aWR0aDogMTUwcHg7XFxufVxcbi5hY3Rpdml0aWVzIC5idXR0b25fX2Ryb3Bkb3duIGxpIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBwYWRkaW5nLXRvcDogMC4zNzVyZW07XFxuICBwYWRkaW5nLWJvdHRvbTogMC4zNzVyZW07XFxuICBwYWRkaW5nLWxlZnQ6IDAuODc1cmVtO1xcbiAgcGFkZGluZy1yaWdodDogMC44NzVyZW07XFxufVxcbi5hY3Rpdml0aWVzIC5idXR0b25fX2Ryb3Bkb3duIGxpOmhvdmVyIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0td2hpdGUpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxufVxcbi5hY3Rpdml0aWVzIC5idXR0b25fX2Ryb3Bkb3duIGxpIHN2ZyB7XFxuICBtYXJnaW4tcmlnaHQ6IDAuMjVyZW07XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvQWN0aXZpdGllc0VsZW1lbnRzLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFDQTtFQUNFLGtCQUFBO0FBQUY7QUFDRTtFQUNFLDhCQUFBO0VBQ0EsWUFBQTtFQUNBLGlCQUFBO0FBQ0o7QUFHSTtFQUFBLHFCQUFBO0VBQUEsYUFBQTtFQUFBLDRDQUFBO0VBQUEsd0RBQUE7RUFBQSx1R0FBQTtBQUFBO0FBSUU7O0VBQUEsb0JBQUE7RUFBQSxnREFBQTtBQUFBO0FBS0Y7RUFBQSxvQkFBQTtBQUFBO0FBR0E7RUFBQSxrQkFBQTtFQUFBLFVBQUE7RUFBQSxTQUFBO0VBQUEsV0FBQTtFQUFBLGdCQUFBO0VBQUEsNENBQUE7RUFBQSx3REFBQTtFQUFBLHVHQUFBO0VBQ0EsZ0JBQUE7QUFEQTtBQUlFO0VBQUEsYUFBQTtFQUFBLHFCQUFBO0VBQUEsd0JBQUE7RUFBQSxzQkFBQTtFQUFBLHVCQUFBO0FBQUE7QUFBQTtFQUFBLGtCQUFBO0VBQUEsMERBQUE7QUFBQTtBQUdFO0VBQUEscUJBQUE7QUFBQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4uYWN0aXZpdGllcyB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAuZWxlbWVudHMge1xcbiAgICBib3JkZXItcmFkaXVzOiAwcHggOHB4IDhweCAwcHg7XFxuICAgIHdpZHRoOiAxMjVweDtcXG4gICAgbWluLWhlaWdodDogMTc0cHg7XFxuICB9XFxuXFxuICAuZWxlbWVudHNfX3BhbmVsIHtcXG4gICAgQGFwcGx5IHJvdW5kZWQtbGcgcC00IHNoYWRvdy1kcm9wZG93bjtcXG5cXG4gICAgLnBhbmVsX19pbnB1dDpmb2N1cyxcXG4gICAgLnBhbmVsX19zZWFyY2g6Zm9jdXMge1xcbiAgICAgIEBhcHBseSB0ZXh0LW4tNDA7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5ob3Zlcl9fdGV4dCB7XFxuICAgIEBhcHBseSBtbC0xO1xcbiAgfVxcbiAgLmJ1dHRvbl9fZHJvcGRvd24ge1xcbiAgICBAYXBwbHkgYWJzb2x1dGUgcmlnaHQtMCB0b3AtZnVsbCB6LTEwIHRleHQtbGVmdCBzaGFkb3ctZHJvcGRvd247XFxuICAgIG1pbi13aWR0aDogMTUwcHg7XFxuXFxuICAgIGxpIHtcXG4gICAgICBAYXBwbHkgZmxleCBweS0xLjUgcHgtMy41IGhvdmVyOmJnLXdoaXRlO1xcblxcbiAgICAgIHN2ZyB7XFxuICAgICAgICBAYXBwbHkgbXItMTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLnNwaW5uZXJbZGF0YS12LTY2MWU2ZjhlXSB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2tcXG59XFxuQGtleWZyYW1lcyBzcGluLTY2MWU2ZjhlIHtcXG50byB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZylcXG59XFxufVxcbi5zcGlubmVyW2RhdGEtdi02NjFlNmY4ZV0ge1xcbiAgYW5pbWF0aW9uOiBzcGluLTY2MWU2ZjhlIDFzIGxpbmVhciBpbmZpbml0ZTtcXG4gIGJvcmRlci1yYWRpdXM6IDk5OTlweDtcXG4gIGJvcmRlci13aWR0aDogMnB4O1xcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLW4tMTApLCB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpO1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMC4wNTtcXG4gIHdpZHRoOiA3NXB4O1xcbiAgaGVpZ2h0OiA3NXB4O1xcbiAgYm9yZGVyLXRvcC1jb2xvcjogd2hpdGVcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9Eb3dubG9hZEFjdGl2aXR5QnV0dG9uLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFFRTtFQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUE7QUFBQTtBQUFBO0FBQUE7RUFBQSwyQ0FBQTtFQUFBLHFCQUFBO0VBQUEsaUJBQUE7RUFBQSx5REFBQTtFQUFBLHlCQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQTtBQUhBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5zcGlubmVyIHtcXG4gIEBhcHBseSBpbmxpbmUtYmxvY2sgIGFuaW1hdGUtc3BpbiByb3VuZGVkLWZ1bGwgYm9yZGVyLTIgYm9yZGVyLW4tMTAgYm9yZGVyLW9wYWNpdHktNTtcXG4gIHdpZHRoOiA3NXB4O1xcbiAgaGVpZ2h0OiA3NXB4O1xcbiAgYm9yZGVyLXRvcC1jb2xvcjogd2hpdGU7XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5hY3RpdmVOYXYge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tYmx1ZWNvcmFsKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS13aGl0ZSksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cXG4ubmF2bGlzdC13aWR0aCB7XFxuICB3aWR0aDogMTAwcHg7XFxufVxcbi50ZXh0LXNlbWktZGFyayB7XFxuICBjb2xvcjogIzJhMmYzMCAhaW1wb3J0YW50O1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2Rhc2hib2FyZC9EYXNoYm9hcmRMaXN0U2VjdGlvbi52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBRUU7RUFBQSxrQkFBQTtFQUFBLHNCQUFBO0VBQUEsa0JBQUE7RUFBQSw4REFBQTtFQUFBLG9CQUFBO0VBQUEsaURBQUE7QUFBQTtBQUdGO0VBQ0UsWUFBQTtBQUFGO0FBR0E7RUFDRSx5QkFBQTtBQUFGXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi5hY3RpdmVOYXYge1xcbiAgQGFwcGx5IHJlbGF0aXZlICByb3VuZGVkIGJnLWJsdWVjb3JhbCB0ZXh0LXdoaXRlO1xcbn1cXG5cXG4ubmF2bGlzdC13aWR0aCB7XFxuICB3aWR0aDogMTAwcHg7XFxufVxcblxcbi50ZXh0LXNlbWktZGFyayB7XFxuICBjb2xvcjogIzJhMmYzMCAhaW1wb3J0YW50O1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIudXBsb2FkLWVycm9yW2RhdGEtdi00MGQ3ODcwYV0ge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDApICFpbXBvcnRhbnQ7XFxuICB6LWluZGV4OiAxO1xcbn1cXG4udXBsb2FkLWVycm9yW2RhdGEtdi00MGQ3ODcwYV06OmFmdGVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgaGVpZ2h0OiA2OHB4O1xcbiAgd2lkdGg6IDEwMCU7XFxuICBib3JkZXItbGVmdDogMnB4IHNvbGlkICNkMTAwMWU7XFxuICBsZWZ0OiAwO1xcbiAgdG9wOiAwO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjFmMDtcXG4gIHotaW5kZXg6IC0xO1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9JbXBvcnRMaXN0LnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFDQTtFQUNFLDZCQUFBO0VBQ0EsdUNBQUE7RUFDQSxVQUFBO0FBQUY7QUFFRTtFQUNFLGtCQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSxXQUFBO0VBQ0EsOEJBQUE7RUFDQSxPQUFBO0VBQ0EsTUFBQTtFQUNBLHlCQUFBO0VBQ0EsV0FBQTtBQUFKXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbi51cGxvYWQtZXJyb3Ige1xcbiAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDApICFpbXBvcnRhbnQ7XFxuICB6LWluZGV4OiAxO1xcblxcbiAgJjo6YWZ0ZXIge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIGNvbnRlbnQ6ICcnO1xcbiAgICBoZWlnaHQ6IDY4cHg7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBib3JkZXItbGVmdDogMnB4IHNvbGlkICNkMTAwMWU7XFxuICAgIGxlZnQ6IDA7XFxuICAgIHRvcDogMDtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjFmMDtcXG4gICAgei1pbmRleDogLTE7XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5tYW5kYXRvcnk6OmFmdGVyIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgd2lkdGg6IDAuNXB4O1xcbiAgaGVpZ2h0OiAxNDBweDtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMC4yNXJlbTtcXG4gIHJpZ2h0OiAtMS41cmVtO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1uLTIwKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbn1cXG4uZWxlbWVudCB7XFxuICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtO1xcbiAgbWFyZ2luLWxlZnQ6IDAuNXJlbTtcXG59XFxuLmVsZW1lbnRfX2lubmVyIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxufVxcbi5lbGVtZW50X19pbm5lciA+IDpub3QoW2hpZGRlbl0pIH4gOm5vdChbaGlkZGVuXSkge1xcbiAgLS10dy1zcGFjZS14LXJldmVyc2U6IDA7XFxuICBtYXJnaW4tcmlnaHQ6IGNhbGMoMC42MjVyZW0gKiB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKTtcXG4gIG1hcmdpbi1sZWZ0OiBjYWxjKDAuNjI1cmVtICogY2FsYygxIC0gdmFyKC0tdHctc3BhY2UteC1yZXZlcnNlKSkpO1xcbn1cXG4uZWxlbWVudF9fbm90ZXMge1xcbiAgaGVpZ2h0OiAxcmVtO1xcbiAgd2lkdGg6IDJyZW07XFxuICBib3JkZXItcmFkaXVzOiAwLjEyNXJlbTtcXG4gIGJvcmRlci13aWR0aDogMXB4O1xcbn1cXG4uZWxlbWVudF9fc2VhcmNoIHtcXG4gIG1hcmdpbi10b3A6IDFyZW07XFxuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xcbiAgaGVpZ2h0OiAyLjVyZW07XFxuICB3aWR0aDogMTAwJTtcXG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XFxuICBib3JkZXItd2lkdGg6IDFweDtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDE7XFxuICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tbi0zMCksIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5KSk7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXdoaXRlKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgcGFkZGluZy10b3A6IDAuNzVyZW07XFxuICBwYWRkaW5nLWJvdHRvbTogMC43NXJlbTtcXG4gIHBhZGRpbmctcmlnaHQ6IDAuNzVyZW07XFxuICBwYWRkaW5nLWxlZnQ6IDIuNXJlbTtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tbi00MCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbiAgb3V0bGluZTogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xcbiAgb3V0bGluZS1vZmZzZXQ6IDJweDtcXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDMwMG1zO1xcbn1cXG4uZWxlbWVudF9fc2VhcmNoOjotbW96LXBsYWNlaG9sZGVyIHtcXG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XFxuICBsaW5lLWhlaWdodDogMS4yNXJlbTtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tbi0zMCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMzAwbXM7XFxuICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcXG59XFxuLmVsZW1lbnRfX3NlYXJjaDo6cGxhY2Vob2xkZXIge1xcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjI1cmVtO1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1uLTMwKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAzMDBtcztcXG4gIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xcbn1cXG4uZWxlbWVudF9fc2VhcmNoOmZvY3VzOjotbW96LXBsYWNlaG9sZGVyIHtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tbi00MCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cXG4uZWxlbWVudF9fc2VhcmNoOmZvY3VzOjpwbGFjZWhvbGRlciB7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLW4tNDApLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG59XFxuLnRhYl9fbGlua3Mge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgcGFkZGluZy1sZWZ0OiAwLjVyZW07XFxuICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW07XFxuICBwYWRkaW5nLWJvdHRvbTogMS41cmVtO1xcbn1cXG4udGFiX19saW5rczo6YWZ0ZXIge1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBib3R0b206IDBweDtcXG4gIGxlZnQ6IDBweDtcXG4gIGhlaWdodDogMC4yNXJlbTtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgLS10dy1zY2FsZS14OiAwO1xcbiAgLS10dy1zY2FsZS15OiAwO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUodmFyKC0tdHctdHJhbnNsYXRlLXgpLCB2YXIoLS10dy10cmFuc2xhdGUteSkpIHJvdGF0ZSh2YXIoLS10dy1yb3RhdGUpKSBza2V3WCh2YXIoLS10dy1za2V3LXgpKSBza2V3WSh2YXIoLS10dy1za2V3LXkpKSBzY2FsZVgodmFyKC0tdHctc2NhbGUteCkpIHNjYWxlWSh2YXIoLS10dy1zY2FsZS15KSk7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWJsdWVjb3JhbCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDMwMG1zO1xcbn1cXG4udGFiX19saW5rczpob3Zlcjo6YWZ0ZXIge1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xcbiAgLS10dy1zY2FsZS14OiAxO1xcbiAgLS10dy1zY2FsZS15OiAxO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUodmFyKC0tdHctdHJhbnNsYXRlLXgpLCB2YXIoLS10dy10cmFuc2xhdGUteSkpIHJvdGF0ZSh2YXIoLS10dy1yb3RhdGUpKSBza2V3WCh2YXIoLS10dy1za2V3LXgpKSBza2V3WSh2YXIoLS10dy1za2V3LXkpKSBzY2FsZVgodmFyKC0tdHctc2NhbGUteCkpIHNjYWxlWSh2YXIoLS10dy1zY2FsZS15KSk7XFxufVxcbi50YWJfX2xpbmtzLS1hY3RpdmUge1xcbiAgZm9udC13ZWlnaHQ6IDcwMDtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tYmx1ZWNvcmFsKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxufVxcbi50YWJfX2xpbmtzLS1hY3RpdmU6OmFmdGVyIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgYm90dG9tOiAwcHg7XFxuICBsZWZ0OiAwcHg7XFxuICBoZWlnaHQ6IDAuMjVyZW07XFxuICB3aWR0aDogMTAwJTtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tYmx1ZWNvcmFsKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMzAwbXM7XFxufVxcbi5zZXBhcmF0b3Ige1xcbiAgbWFyZ2luLWxlZnQ6IDFyZW07XFxuICBtYXJnaW4tcmlnaHQ6IDFyZW07XFxufVxcbi5sYXN0IHtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tbi0zMCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9PcmdhbmlzYXRpb25EYXRhLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFDQTtFQUNFLFdBQUE7RUFDQSxZQUFBO0VBQ0EsYUFBQTtFQUNBLGtCQUFBO0VBQUEsWUFBQTtFQUFBLGNBQUE7RUFBQSxrQkFBQTtFQUFBLHlEQUFBO0FBQUY7QUFJRTtFQUFBLHNCQUFBO0VBQUEsbUJBQUE7QUFBQTtBQUdFO0VBQUEsYUFBQTtBQUFBO0FBQUE7RUFBQSx1QkFBQTtFQUFBLHdEQUFBO0VBQUEsaUVBQUE7QUFBQTtBQUlBO0VBQUEsWUFBQTtFQUFBLFdBQUE7RUFBQSx1QkFBQTtFQUFBLGlCQUFBO0FBQUE7QUFLRjtFQUFBLGdCQUFBO0VBQUEsbUJBQUE7RUFBQSxjQUFBO0VBQUEsV0FBQTtFQUFBLHNCQUFBO0VBQUEsaUJBQUE7RUFBQSxzQkFBQTtFQUFBLHlEQUFBO0VBQUEsa0JBQUE7RUFBQSwwREFBQTtFQUFBLG9CQUFBO0VBQUEsdUJBQUE7RUFBQSxzQkFBQTtFQUFBLG9CQUFBO0VBQUEsb0JBQUE7RUFBQSxnREFBQTtFQUFBLDhCQUFBO0VBQUEsbUJBQUE7RUFBQSwwQkFBQTtBQUFBO0FBR0U7RUFBQSxtQkFBQTtFQUFBLG9CQUFBO0VBQUEsb0JBQUE7RUFBQSxnREFBQTtFQUFBLDBCQUFBO0VBQ0EsdUJBQUE7QUFEQTtBQUFBO0VBQUEsbUJBQUE7RUFBQSxvQkFBQTtFQUFBLG9CQUFBO0VBQUEsZ0RBQUE7RUFBQSwwQkFBQTtFQUNBLHVCQUFBO0FBREE7QUFLQTtFQUFBLG9CQUFBO0VBQUEsZ0RBQUE7QUFBQTtBQUFBO0VBQUEsb0JBQUE7RUFBQSxnREFBQTtBQUFBO0FBS0Y7RUFBQSxrQkFBQTtFQUFBLGVBQUE7RUFBQSxvQkFBQTtFQUFBLHFCQUFBO0VBQUEsc0JBQUE7QUFBQTtBQUVBO0VBQ0UsV0FBQTtFQUNBLGtCQUFBO0VBQUEsV0FBQTtFQUFBLFNBQUE7RUFBQSxlQUFBO0VBQUEsV0FBQTtFQUFBLGVBQUE7RUFBQSxlQUFBO0VBQUEsK0xBQUE7RUFBQSxrQkFBQTtFQUFBLDhEQUFBO0VBQUEsMEJBQUE7QUFKSjtBQU9FO0VBQ0UsV0FBQTtFQUNBLG1CQUFBO0VBQUEsZUFBQTtFQUFBLGVBQUE7RUFBQSwrTEFBQTtBQUxKO0FBU0k7RUFBQSxnQkFBQTtFQUFBLG9CQUFBO0VBQUEscURBQUE7QUFBQTtBQUlKO0VBQ0UsV0FBQTtFQUNBLGtCQUFBO0VBQUEsV0FBQTtFQUFBLFNBQUE7RUFBQSxlQUFBO0VBQUEsV0FBQTtFQUFBLGtCQUFBO0VBQUEsOERBQUE7RUFBQSwwQkFBQTtBQVBGO0FBV0U7RUFBQSxpQkFBQTtFQUFBLGtCQUFBO0FBQUE7QUFJQTtFQUFBLG9CQUFBO0VBQUEsZ0RBQUE7QUFBQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4ubWFuZGF0b3J5OjphZnRlciB7XFxuICBjb250ZW50OiAnJztcXG4gIHdpZHRoOiAwLjVweDtcXG4gIGhlaWdodDogMTQwcHg7XFxuICBAYXBwbHkgYWJzb2x1dGUgdG9wLTEgLXJpZ2h0LTYgYmctbi0yMDtcXG59XFxuXFxuLmVsZW1lbnQge1xcbiAgQGFwcGx5IG1iLTMgbWwtMjtcXG5cXG4gICZfX2lubmVyIHtcXG4gICAgQGFwcGx5IGZsZXggc3BhY2UteC0yLjU7XFxuICB9XFxuXFxuICAmX19ub3RlcyB7XFxuICAgIEBhcHBseSBoLTQgdy04IHJvdW5kZWQtc20gYm9yZGVyO1xcbiAgfVxcbn1cXG5cXG4uZWxlbWVudF9fc2VhcmNoIHtcXG4gIEBhcHBseSBteS00IGgtMTAgdy1mdWxsIHJvdW5kZWQgYm9yZGVyIGJvcmRlci1uLTMwIGJnLXdoaXRlIHB5LTMgcHItMyBwbC0xMCB0ZXh0LW4tNDAgb3V0bGluZS1ub25lIGR1cmF0aW9uLTMwMDtcXG5cXG4gICY6OnBsYWNlaG9sZGVyIHtcXG4gICAgQGFwcGx5IHRleHQtc20gdGV4dC1uLTMwIGR1cmF0aW9uLTMwMDtcXG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XFxuICB9XFxuXFxuICAmOmZvY3VzOjpwbGFjZWhvbGRlciB7XFxuICAgIEBhcHBseSB0ZXh0LW4tNDA7XFxuICB9XFxufVxcblxcbi50YWJfX2xpbmtzIHtcXG4gIEBhcHBseSByZWxhdGl2ZSBjdXJzb3ItcG9pbnRlciBweC0yIHBiLTY7XFxuXFxuICAmOjphZnRlciB7XFxuICAgIGNvbnRlbnQ6ICcnO1xcbiAgICBAYXBwbHkgYWJzb2x1dGUgYm90dG9tLTAgbGVmdC0wIGgtMSB3LWZ1bGwgc2NhbGUtMCBiZy1ibHVlY29yYWwgZHVyYXRpb24tMzAwO1xcbiAgfVxcblxcbiAgJjpob3Zlcjo6YWZ0ZXIge1xcbiAgICBjb250ZW50OiAnJztcXG4gICAgQGFwcGx5IHZpc2libGUgc2NhbGUtMTAwO1xcbiAgfVxcblxcbiAgJi0tYWN0aXZlIHtcXG4gICAgQGFwcGx5IGZvbnQtYm9sZCB0ZXh0LWJsdWVjb3JhbDtcXG4gIH1cXG59XFxuXFxuLnRhYl9fbGlua3MtLWFjdGl2ZTo6YWZ0ZXIge1xcbiAgY29udGVudDogJyc7XFxuICBAYXBwbHkgYWJzb2x1dGUgYm90dG9tLTAgbGVmdC0wIGgtMSB3LWZ1bGwgYmctYmx1ZWNvcmFsIGR1cmF0aW9uLTMwMDtcXG59XFxuXFxuLnNlcGFyYXRvciB7XFxuICBAYXBwbHkgbXgtNDtcXG59XFxuXFxuLmxhc3Qge1xcbiAgQGFwcGx5IHRleHQtbi0zMDtcXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLnJlc2V0IHtcXG4gIGJveC1zaGFkb3c6IDBweCAyMHB4IDQwcHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xcbiAgbWFyZ2luLWxlZnQ6IDAuNzVyZW07XFxuICBtYXJnaW4tcmlnaHQ6IDAuNzVyZW07XFxuICBib3JkZXItcmFkaXVzOiAwLjVyZW07XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXdoaXRlKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgcGFkZGluZzogMS4yNXJlbTtcXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDQwcHgpIHtcXG4ucmVzZXQge1xcbiAgICBwYWRkaW5nOiAyLjVyZW07XFxufVxcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xcbi5yZXNldCB7XFxuICAgIHdpZHRoOiA1ODNweDtcXG4gICAgbWFyZ2luOiBhdXRvO1xcbiAgICBwYWRkaW5nOiA2cmVtO1xcbn1cXG59XFxuLnJlc2V0X19jb250ZW50IHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbn1cXG4ucmVzZXRfX2NvbnRlbnQgLmlucHV0IHtcXG4gIG1hcmdpbi10b3A6IDAuNXJlbTtcXG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcXG4gIHBhZGRpbmctdG9wOiAxLjI1cmVtO1xcbiAgcGFkZGluZy1ib3R0b206IDEuMjVyZW07XFxufVxcbi5yZXNldF9fY29udGVudCAubG9jay1pY29uIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDEuNXJlbTtcXG4gIGZvbnQtc2l6ZTogMS4xMjVyZW07XFxuICBsaW5lLWhlaWdodDogMS43NXJlbTtcXG4gIHRvcDogNDdweDtcXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4ucmVzZXRfX2NvbnRlbnQgLmxvY2staWNvbiB7XFxuICAgIHRvcDogNTBweDtcXG4gICAgZm9udC1zaXplOiAyMHB4O1xcbn1cXG59XFxuLnJlc2V0X19jb250ZW50IC5tYWlsLWljb24ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgbGVmdDogMS41cmVtO1xcbiAgdG9wOiA0N3B4O1xcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xcbi5yZXNldF9fY29udGVudCAubWFpbC1pY29uIHtcXG4gICAgdG9wOiA1MXB4O1xcbn1cXG59XFxuLnJlc2V0IGgyIHtcXG4gIGZvbnQtc2l6ZTogMjRweDtcXG4gIGZvbnQtd2VpZ2h0OiA3MDA7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2JhKHZhcigtLW4tNTApLCB2YXIoLS10dy10ZXh0LW9wYWNpdHkpKTtcXG59XFxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7XFxuLnJlc2V0IGgyIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xcbn1cXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4ucmVzZXQgaDIge1xcbiAgICBmb250LXNpemU6IDQwcHg7XFxuICAgIGxpbmUtaGVpZ2h0OiA2MHB4O1xcbn1cXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDQwcHgpIHtcXG4ucmVzZXQgaDIge1xcbiAgICBmb250LXNpemU6IDMycHg7XFxuICAgIGxpbmUtaGVpZ2h0OiA1MHB4O1xcbn1cXG59XFxuLnJlc2V0IHAge1xcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjI1cmVtO1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1uLTQwKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxufVxcbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xcbi5yZXNldCBwIHtcXG4gICAgZm9udC1zaXplOiAxcmVtO1xcbiAgICBsaW5lLWhlaWdodDogMS41cmVtO1xcbn1cXG59XFxuLnJlc2V0IC5yZXNldC1idG4ge1xcbiAgbWFyZ2luLXRvcDogMC43NXJlbTtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDFyZW07XFxuICBwYWRkaW5nOiAxNHB4O1xcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xcbi5yZXNldCAucmVzZXQtYnRuIHtcXG4gICAgcGFkZGluZzogMThweCA5NHB4O1xcbiAgICBmb250LXNpemU6IDE0cHg7XFxufVxcbn1cXG4ucmVzZXQgLnZlcmlmaWNhdGlvbiB7XFxuICBmb250LXNpemU6IDE1MHB4O1xcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xcbi5yZXNldCAudmVyaWZpY2F0aW9uIHtcXG4gICAgZm9udC1zaXplOiAxOTBweDtcXG59XFxufVxcbi5yZXNldF9fcGFzc3dvcmQge1xcbiAgaGVpZ2h0OiA2MTBweDtcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9yZXNldC9SZXNldFBhZ2UudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUNBO0VBV0Usa0RBQUE7RUFDQSxvQkFBQTtFQUFBLHFCQUFBO0VBQUEscUJBQUE7RUFBQSxrQkFBQTtFQUFBLDBEQUFBO0VBQUEsZ0JBQUE7QUFWRjtBQURFO0FBQ0U7SUFBQSxlQUFBO0FBQUE7QUFLSjtBQUZFO0FBTEY7SUFNSSxZQUFBO0lBQ0EsWUFBQTtJQUVBLGFBQUE7QUFJRjtBQUNGO0FBQ0k7RUFBQSxrQkFBQTtFQUFBLGFBQUE7RUFBQSxzQkFBQTtBQUFBO0FBR0U7RUFBQSxrQkFBQTtFQUFBLHFCQUFBO0VBQUEsb0JBQUE7RUFBQSx1QkFBQTtBQUFBO0FBSUE7RUFBQSxrQkFBQTtFQUFBLFlBQUE7RUFBQSxtQkFBQTtFQUFBLG9CQUFBO0VBQ0EsU0FBQTtBQURBO0FBR0E7QUFKRjtJQUtJLFNBQUE7SUFDQSxlQUFBO0FBRU47QUFDRjtBQUVNO0VBQUEsa0JBQUE7RUFBQSxZQUFBO0VBQ0EsU0FBQTtBQURBO0FBR0E7QUFKRjtJQUtJLFNBQUE7QUFFTjtBQUNGO0FBV0k7RUFBQSxlQUFBO0VBQUEsZ0JBQUE7RUFBQSxvQkFBQTtFQUFBLGdEQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUEscUJBQUE7QUFBQTtBQUFBO0FBVEE7QUFDRTtJQUFBLGVBQUE7SUFDQSxpQkFBQTtBQURBO0FBTU47QUFGSTtBQUNFO0lBQUEsZUFBQTtJQUNBLGlCQUFBO0FBREE7QUFPTjtBQURJO0VBQUEsbUJBQUE7RUFBQSxvQkFBQTtFQUFBLG9CQUFBO0VBQUEsZ0RBQUE7QUFBQTtBQUFBO0FBQUE7SUFBQSxlQUFBO0lBQUEsbUJBQUE7QUFBQTtBQUFBO0FBR0E7RUFBQSxtQkFBQTtFQUFBLFdBQUE7RUFBQSxrQkFBQTtFQUFBLGlCQUFBO0VBQ0EsYUFBQTtBQURBO0FBR0E7QUFKRjtJQUtJLGtCQUFBO0lBQ0EsZUFBQTtBQUtKO0FBQ0Y7QUFIRTtFQUNFLGdCQUFBO0FBS0o7QUFISTtBQUhGO0lBSUksZ0JBQUE7QUFNSjtBQUNGO0FBSEE7RUFDRSxhQUFBO0FBTUZcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLnJlc2V0IHtcXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQ0MHB4KSB7XFxuICAgIEBhcHBseSBwLTEwO1xcbiAgfVxcblxcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4gICAgd2lkdGg6IDU4M3B4O1xcbiAgICBtYXJnaW46IGF1dG87XFxuXFxuICAgIEBhcHBseSBwLTI0O1xcbiAgfVxcbiAgYm94LXNoYWRvdzogMHB4IDIwcHggNDBweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XFxuICBAYXBwbHkgbXgtMyByb3VuZGVkLWxnIGJnLXdoaXRlIHAtNTtcXG5cXG4gICZfX2NvbnRlbnQge1xcbiAgICBAYXBwbHkgcmVsYXRpdmUgZmxleCBmbGV4LWNvbDtcXG5cXG4gICAgLmlucHV0IHtcXG4gICAgICBAYXBwbHkgbXktMiBweS01O1xcbiAgICB9XFxuXFxuICAgIC5sb2NrLWljb24ge1xcbiAgICAgIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTYgdGV4dC1sZztcXG4gICAgICB0b3A6IDQ3cHg7XFxuXFxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4gICAgICAgIHRvcDogNTBweDtcXG4gICAgICAgIGZvbnQtc2l6ZTogMjBweDtcXG4gICAgICB9XFxuICAgIH1cXG5cXG4gICAgLm1haWwtaWNvbiB7XFxuICAgICAgQGFwcGx5IGFic29sdXRlIGxlZnQtNjtcXG4gICAgICB0b3A6IDQ3cHg7XFxuXFxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4gICAgICAgIHRvcDogNTFweDtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG4gIGgyIHtcXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4gICAgICBAYXBwbHkgdGV4dC1oZWFkaW5nLTM7XFxuICAgICAgbGluZS1oZWlnaHQ6IDYwcHg7XFxuICAgIH1cXG5cXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDQwcHgpIHtcXG4gICAgICBAYXBwbHkgdGV4dC1oZWFkaW5nLTQ7XFxuICAgICAgbGluZS1oZWlnaHQ6IDUwcHg7XFxuICAgIH1cXG4gICAgQGFwcGx5IHRleHQtaGVhZGluZy01IGZvbnQtYm9sZCB0ZXh0LW4tNTAgc206bWItMjtcXG4gIH1cXG4gIHAge1xcbiAgICBAYXBwbHkgdGV4dC1zbSB0ZXh0LW4tNDAgc206dGV4dC1iYXNlO1xcbiAgfVxcbiAgLnJlc2V0LWJ0biB7XFxuICAgIEBhcHBseSBtdC0zIHctZnVsbCB0ZXh0LXhzO1xcbiAgICBwYWRkaW5nOiAxNHB4O1xcblxcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xcbiAgICAgIHBhZGRpbmc6IDE4cHggOTRweDtcXG4gICAgICBmb250LXNpemU6IDE0cHg7XFxuICAgIH1cXG4gIH1cXG4gIC52ZXJpZmljYXRpb24ge1xcbiAgICBmb250LXNpemU6IDE1MHB4O1xcblxcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xcbiAgICAgIGZvbnQtc2l6ZTogMTkwcHg7XFxuICAgIH1cXG4gIH1cXG59XFxuLnJlc2V0X19wYXNzd29yZCB7XFxuICBoZWlnaHQ6IDYxMHB4O1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIubGFiZWwge1xcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjI1cmVtO1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tbi01MCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIHtcXG4gIG1heC13aWR0aDogODY1cHg7XFxuICBtYXJnaW46IGF1dG87XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyODBweCkge1xcbi5zZWN0aW9uX19jb250YWluZXIge1xcbiAgICBtYXgtd2lkdGg6IDEyMDZweDtcXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAuZmVlZGJhY2sge1xcbiAgICB3aWR0aDogNzAycHg7XFxufVxcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5mZWVkYmFjayBwIHtcXG4gIGxpbmUtaGVpZ2h0OiAyMnB4O1xcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5zZWN0aW9uX193cmFwcGVyIHtcXG4gIGJveC1zaGFkb3c6IDBweCAyMHB4IDQwcHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5zZWN0aW9uX193cmFwcGVyIC52ZXJpZmljYXRpb24ge1xcbiAgZm9udC1zaXplOiAxOTBweDtcXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAuc2VjdGlvbl9fdGl0bGUge1xcbiAgbWFyZ2luLXRvcDogMS43NXJlbTtcXG4gIG1hcmdpbi1ib3R0b206IDEuNzVyZW07XFxuICBtYXJnaW4tbGVmdDogMC43NXJlbTtcXG4gIG1hcmdpbi1yaWdodDogMC43NXJlbTtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIGxpbmUtaGVpZ2h0OiAxLjc1cmVtO1xcbn1cXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4uc2VjdGlvbl9fY29udGFpbmVyIC5zZWN0aW9uX190aXRsZSB7XFxuICAgIGxpbmUtaGVpZ2h0OiAyLjVyZW07XFxufVxcbn1cXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAuc2VjdGlvbl9fdGl0bGUge1xcbiAgICBtYXJnaW4tYm90dG9tOiAyLjVyZW07XFxuICAgIG1hcmdpbi10b3A6IDMuNXJlbTtcXG59XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQ0MHB4KSB7XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAuc2VjdGlvbl9fdGl0bGUge1xcbiAgICBsaW5lLWhlaWdodDogMi4yNXJlbTtcXG59XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLnNlY3Rpb25fX3RpdGxlIHAge1xcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcXG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XFxuICBsaW5lLWhlaWdodDogMS4yNXJlbTtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYmEodmFyKC0tbi00MCksIHZhcigtLXR3LXRleHQtb3BhY2l0eSkpO1xcbn1cXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4uc2VjdGlvbl9fY29udGFpbmVyIC5zZWN0aW9uX190aXRsZSBwIHtcXG4gICAgZm9udC1zaXplOiAxcmVtO1xcbiAgICBsaW5lLWhlaWdodDogMS41cmVtO1xcbn1cXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAucmVnaXN0ZXJfX3NpZGViYXIge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1lZ2dzaGVsbCksIHZhcigtLXR3LWJnLW9wYWNpdHkpKTtcXG4gIHBhZGRpbmc6IDk2cHggMzJweCA0MHB4O1xcbiAgd2lkdGg6IDM0NHB4O1xcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5yZWdpc3Rlcl9fc2lkZWJhciB1bCB7XFxuICB3aWR0aDogMjUzcHg7XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLnJlZ2lzdGVyX19zaWRlYmFyIHVsOjpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICB3aWR0aDogNHB4O1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1uLTIwKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgbGVmdDogMHB4O1xcbiAgdG9wOiAwcHg7XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLnJlZ2lzdGVyX19zaWRlYmFyIC5kZXRhaWwge1xcbiAgbWFyZ2luLWxlZnQ6IDQ1cHg7XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLnJlZ2lzdGVyX19zaWRlYmFyIC5saXN0X19hY3RpdmU6OmFmdGVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMDtcXG4gIGxlZnQ6IC0xcHg7XFxuICB3aWR0aDogNnB4O1xcbiAgaGVpZ2h0OiA4NXB4O1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS10dXJxdW9pc2UpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gIHotaW5kZXg6IDU7XFxufVxcbi5mb3JtIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0td2hpdGUpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBwYWRkaW5nOiAxLjI1cmVtO1xcbn1cXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4uZm9ybSB7XFxuICAgIHBhZGRpbmctbGVmdDogMi41cmVtO1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAyLjVyZW07XFxuICAgIHBhZGRpbmctdG9wOiAyLjVyZW07XFxuICAgIHBhZGRpbmctYm90dG9tOiAyLjVyZW07XFxufVxcbn1cXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XFxuLmZvcm0ge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDVyZW07XFxuICAgIHBhZGRpbmctcmlnaHQ6IDVyZW07XFxufVxcbn1cXG4uZm9ybSB7XFxuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA4cHg7XFxuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA4cHg7XFxuICB3aWR0aDogODYycHg7XFxufVxcbi5mb3JtX19jb250YWluZXIge1xcbiAgYm9yZGVyLWJvdHRvbS13aWR0aDogMnB4O1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1ib3R0b20tY29sb3I6IHJnYmEodmFyKC0tbi0xMCksIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5KSk7XFxuICBtYXJnaW4tYm90dG9tOiAyNHB4O1xcbn1cXG4uZm9ybV9fY29udGFpbmVyIC5lcnJvcl9faW5wdXQge1xcbiAgYm9yZGVyLXdpZHRoOiAxcHg7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNyaW1zb24tNTApLCB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpO1xcbn1cXG4uZm9ybV9fY29udGVudCB7XFxuICBtYXJnaW4tdG9wOiAyNHB4O1xcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI0cHgpIHtcXG4uZm9ybV9fY29udGVudCB7XFxuICAgIGRpc3BsYXk6IGdyaWQ7XFxuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XFxuICAgIGdhcDogMTZweDtcXG59XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL0lhdGlSZWdpc3RlclBhZ2UudnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUVFO0VBQUEsbUJBQUE7RUFBQSxvQkFBQTtFQUFBLGdCQUFBO0VBQUEsb0JBQUE7RUFBQSxnREFBQTtBQUFBO0FBSUE7RUFJRSxnQkFBQTtFQUNBLFlBQUE7QUFKSjtBQUFJO0FBREY7SUFFSSxpQkFBQTtBQUdKO0FBRUU7SUFFSSxZQUFBO0FBQ047QUFKRjtBQU1NO0VBQ0UsaUJBQUE7QUFDUjtBQUdJO0VBQ0Usa0RBQUE7QUFETjtBQUdNO0VBQ0UsZ0JBQUE7QUFEUjtBQVVNO0VBQUEsbUJBQUE7RUFBQSxzQkFBQTtFQUFBLG9CQUFBO0VBQUEscUJBQUE7RUFBQSxrQkFBQTtFQUFBLG9CQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUEsbUJBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtJQUFBLHFCQUFBO0lBQUEsa0JBQUE7QUFBQTtBQUFBO0FBSkE7QUFDRTtJQUFBLG9CQUFBO0FBQUE7QUFDUjtBQUlNO0VBQ0UsbUJBQUE7RUFDQSxrQkFBQTtFQUNBLG1CQUFBO0VBQUEsb0JBQUE7RUFBQSxvQkFBQTtFQUFBLGdEQUFBO0FBRlI7QUFFUTtBQUFBO0lBQUEsZUFBQTtJQUFBLG1CQUFBO0FBQUE7QUFBQTtBQUtGO0VBQUEsa0JBQUE7RUFBQSw2REFBQTtFQUNBLHVCQUFBO0VBQ0EsWUFBQTtBQUZBO0FBSUE7RUFDRSxZQUFBO0FBSlI7QUFPTTtFQUNFLFdBQUE7RUFDQSxVQUFBO0VBQ0EsWUFBQTtFQUNBLGtCQUFBO0VBQUEseURBQUE7RUFDQSxrQkFBQTtFQUNBLGtCQUFBO0VBQ0EsU0FBQTtFQUNBLFFBQUE7QUFMUjtBQVFNO0VBQ0UsaUJBQUE7QUFOUjtBQVNNO0VBQ0Usa0JBQUE7RUFDQSxNQUFBO0VBQ0EsVUFBQTtFQUNBLFVBQUE7RUFDQSxZQUFBO0VBQ0Esa0JBQUE7RUFBQSw4REFBQTtFQUNBLFdBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7QUFQUjtBQWNFO0VBQUEsa0JBQUE7RUFBQSwwREFBQTtFQUFBLGdCQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUEsb0JBQUE7SUFBQSxxQkFBQTtJQUFBLG1CQUFBO0lBQUEsc0JBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtJQUFBLGtCQUFBO0lBQUEsbUJBQUE7QUFBQTtBQUFBO0FBREY7RUFFRSwyQkFBQTtFQUNBLDhCQUFBO0VBQ0EsWUFBQTtBQVZGO0FBYUk7RUFBQSx3QkFBQTtFQUFBLHNCQUFBO0VBQUEsZ0VBQUE7RUFDQSxtQkFBQTtBQURBO0FBSUU7RUFBQSxpQkFBQTtFQUFBLHNCQUFBO0VBQUEsK0RBQUE7QUFBQTtBQUlKO0VBQ0UsZ0JBQUE7QUFaSjtBQWdCQTtBQUNFO0lBQ0UsYUFBQTtJQUNBLHFDQUFBO0lBQ0EsU0FBQTtBQWJGO0FBQ0ZcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuLmxhYmVsIHtcXG4gIEBhcHBseSB0ZXh0LXNtIGZvbnQtbm9ybWFsIHRleHQtbi01MDtcXG59XFxuXFxuLnNlY3Rpb24ge1xcbiAgJl9fY29udGFpbmVyIHtcXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTI4MHB4KSB7XFxuICAgICAgbWF4LXdpZHRoOiAxMjA2cHg7XFxuICAgIH1cXG4gICAgbWF4LXdpZHRoOiA4NjVweDtcXG4gICAgbWFyZ2luOiBhdXRvO1xcblxcbiAgICAuZmVlZGJhY2sge1xcbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyODBweCkge1xcbiAgICAgICAgd2lkdGg6IDcwMnB4O1xcbiAgICAgIH1cXG5cXG4gICAgICBwIHtcXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAyMnB4O1xcbiAgICAgIH1cXG4gICAgfVxcblxcbiAgICAuc2VjdGlvbl9fd3JhcHBlciB7XFxuICAgICAgYm94LXNoYWRvdzogMHB4IDIwcHggNDBweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XFxuXFxuICAgICAgLnZlcmlmaWNhdGlvbiB7XFxuICAgICAgICBmb250LXNpemU6IDE5MHB4O1xcbiAgICAgIH1cXG4gICAgfVxcblxcbiAgICAuc2VjdGlvbl9fdGl0bGUge1xcbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQ0MHB4KSB7XFxuICAgICAgICBAYXBwbHkgbGVhZGluZy05O1xcbiAgICAgIH1cXG5cXG4gICAgICBAYXBwbHkgbXktNyBteC0zIHRleHQtY2VudGVyIGxlYWRpbmctNyBzbTpsZWFkaW5nLTEwIGxnOm1iLTEwIGxnOm10LTE0O1xcblxcbiAgICAgIHAge1xcbiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcXG4gICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcXG4gICAgICAgIEBhcHBseSB0ZXh0LXNtIHRleHQtbi00MCBzbTp0ZXh0LWJhc2U7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgIC5yZWdpc3Rlcl9fc2lkZWJhciB7XFxuICAgICAgQGFwcGx5IGJnLWVnZ3NoZWxsO1xcbiAgICAgIHBhZGRpbmc6IDk2cHggMzJweCA0MHB4O1xcbiAgICAgIHdpZHRoOiAzNDRweDtcXG5cXG4gICAgICB1bCB7XFxuICAgICAgICB3aWR0aDogMjUzcHg7XFxuICAgICAgfVxcblxcbiAgICAgIHVsOjpiZWZvcmUge1xcbiAgICAgICAgY29udGVudDogJyc7XFxuICAgICAgICB3aWR0aDogNHB4O1xcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xcbiAgICAgICAgQGFwcGx5IGJnLW4tMjA7XFxuICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7XFxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgICAgICBsZWZ0OiAwcHg7XFxuICAgICAgICB0b3A6IDBweDtcXG4gICAgICB9XFxuXFxuICAgICAgLmRldGFpbCB7XFxuICAgICAgICBtYXJnaW4tbGVmdDogNDVweDtcXG4gICAgICB9XFxuXFxuICAgICAgLmxpc3RfX2FjdGl2ZTo6YWZ0ZXIge1xcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgICAgdG9wOiAwO1xcbiAgICAgICAgbGVmdDogLTFweDtcXG4gICAgICAgIHdpZHRoOiA2cHg7XFxuICAgICAgICBoZWlnaHQ6IDg1cHg7XFxuICAgICAgICBAYXBwbHkgYmctdHVycXVvaXNlO1xcbiAgICAgICAgY29udGVudDogJyc7XFxuICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7XFxuICAgICAgICB6LWluZGV4OiA1O1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcbn1cXG5cXG4uZm9ybSB7XFxuICBAYXBwbHkgYmctd2hpdGUgcC01IHNtOnB4LTEwIHNtOnB5LTEwIGxnOnB4LTIwO1xcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogOHB4O1xcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogOHB4O1xcbiAgd2lkdGg6IDg2MnB4O1xcblxcbiAgJl9fY29udGFpbmVyIHtcXG4gICAgQGFwcGx5IGJvcmRlci1iLTIgYm9yZGVyLWItbi0xMDtcXG4gICAgbWFyZ2luLWJvdHRvbTogMjRweDtcXG5cXG4gICAgLmVycm9yX19pbnB1dCB7XFxuICAgICAgQGFwcGx5IGJvcmRlciBib3JkZXItY3JpbXNvbi01MDtcXG4gICAgfVxcbiAgfVxcblxcbiAgJl9fY29udGVudCB7XFxuICAgIG1hcmdpbi10b3A6IDI0cHg7XFxuICB9XFxufVxcblxcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMjRweCkge1xcbiAgLmZvcm1fX2NvbnRlbnQge1xcbiAgICBkaXNwbGF5OiBncmlkO1xcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xcbiAgICBnYXA6IDE2cHg7XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5sYWJlbCB7XFxuICBmb250LXNpemU6IDAuODc1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDEuMjVyZW07XFxuICBmb250LXdlaWdodDogNDAwO1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1uLTUwKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIge1xcbiAgbWF4LXdpZHRoOiA4NjVweDtcXG4gIG1hcmdpbjogYXV0bztcXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTI4MHB4KSB7XFxuLnNlY3Rpb25fX2NvbnRhaW5lciB7XFxuICAgIG1heC13aWR0aDogMTIwNnB4O1xcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5mZWVkYmFjayB7XFxuICAgIHdpZHRoOiA3MDJweDtcXG59XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLmZlZWRiYWNrIHAge1xcbiAgbGluZS1oZWlnaHQ6IDIycHg7XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLnNlY3Rpb25fX3dyYXBwZXIge1xcbiAgYm94LXNoYWRvdzogMHB4IDIwcHggNDBweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLnNlY3Rpb25fX3dyYXBwZXIgLnZlcmlmaWNhdGlvbiB7XFxuICBmb250LXNpemU6IDE5MHB4O1xcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5zZWN0aW9uX190aXRsZSB7XFxuICBtYXJnaW4tdG9wOiAxLjc1cmVtO1xcbiAgbWFyZ2luLWJvdHRvbTogMS43NXJlbTtcXG4gIG1hcmdpbi1sZWZ0OiAwLjc1cmVtO1xcbiAgbWFyZ2luLXJpZ2h0OiAwLjc1cmVtO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgbGluZS1oZWlnaHQ6IDEuNzVyZW07XFxufVxcbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xcbi5zZWN0aW9uX19jb250YWluZXIgLnNlY3Rpb25fX3RpdGxlIHtcXG4gICAgbGluZS1oZWlnaHQ6IDIuNXJlbTtcXG59XFxufVxcbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHtcXG4uc2VjdGlvbl9fY29udGFpbmVyIC5zZWN0aW9uX190aXRsZSB7XFxuICAgIG1hcmdpbi1ib3R0b206IDIuNXJlbTtcXG4gICAgbWFyZ2luLXRvcDogMy41cmVtO1xcbn1cXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDQwcHgpIHtcXG4uc2VjdGlvbl9fY29udGFpbmVyIC5zZWN0aW9uX190aXRsZSB7XFxuICAgIGxpbmUtaGVpZ2h0OiAyLjI1cmVtO1xcbn1cXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAuc2VjdGlvbl9fdGl0bGUgcCB7XFxuICBmb250LXdlaWdodDogbm9ybWFsO1xcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjI1cmVtO1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiYSh2YXIoLS1uLTQwKSwgdmFyKC0tdHctdGV4dC1vcGFjaXR5KSk7XFxufVxcbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xcbi5zZWN0aW9uX19jb250YWluZXIgLnNlY3Rpb25fX3RpdGxlIHAge1xcbiAgICBmb250LXNpemU6IDFyZW07XFxuICAgIGxpbmUtaGVpZ2h0OiAxLjVyZW07XFxufVxcbn1cXG4uc2VjdGlvbl9fY29udGFpbmVyIC5yZWdpc3Rlcl9fc2lkZWJhciB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWVnZ3NoZWxsKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgcGFkZGluZzogOTZweCAzMnB4IDQwcHg7XFxuICB3aWR0aDogMzQ0cHg7XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLnJlZ2lzdGVyX19zaWRlYmFyIHVsIHtcXG4gIHdpZHRoOiAyNTNweDtcXG59XFxuLnNlY3Rpb25fX2NvbnRhaW5lciAucmVnaXN0ZXJfX3NpZGViYXIgdWw6OmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIHdpZHRoOiA0cHg7XFxuICBoZWlnaHQ6IDE3NXB4O1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1uLTIwKSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgbGVmdDogMHB4O1xcbiAgdG9wOiAwcHg7XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLnJlZ2lzdGVyX19zaWRlYmFyIC5kZXRhaWwge1xcbiAgbWFyZ2luLWxlZnQ6IDQ1cHg7XFxufVxcbi5zZWN0aW9uX19jb250YWluZXIgLnJlZ2lzdGVyX19zaWRlYmFyIC5saXN0X19hY3RpdmU6OmFmdGVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMDtcXG4gIGxlZnQ6IC0xcHg7XFxuICB3aWR0aDogNnB4O1xcbiAgaGVpZ2h0OiA4NXB4O1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS10dXJxdW9pc2UpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gIHotaW5kZXg6IDU7XFxufVxcbi5mb3JtIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0td2hpdGUpLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XFxuICBwYWRkaW5nOiAxLjI1cmVtO1xcbn1cXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4uZm9ybSB7XFxuICAgIHBhZGRpbmctbGVmdDogMi41cmVtO1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAyLjVyZW07XFxuICAgIHBhZGRpbmctdG9wOiAyLjVyZW07XFxuICAgIHBhZGRpbmctYm90dG9tOiAyLjVyZW07XFxufVxcbn1cXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XFxuLmZvcm0ge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDVyZW07XFxuICAgIHBhZGRpbmctcmlnaHQ6IDVyZW07XFxufVxcbn1cXG4uZm9ybSB7XFxuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA4cHg7XFxuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA4cHg7XFxuICB3aWR0aDogODYycHg7XFxufVxcbi5mb3JtX19jb250YWluZXIge1xcbiAgYm9yZGVyLWJvdHRvbS13aWR0aDogMnB4O1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1ib3R0b20tY29sb3I6IHJnYmEodmFyKC0tbi0xMCksIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5KSk7XFxuICBtYXJnaW4tYm90dG9tOiAyNHB4O1xcbn1cXG4uZm9ybV9fY29udGFpbmVyIC5lcnJvcl9faW5wdXQge1xcbiAgYm9yZGVyLXdpZHRoOiAxcHg7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNyaW1zb24tNTApLCB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpO1xcbn1cXG4uZm9ybV9fY29udGVudCB7XFxuICBtYXJnaW4tdG9wOiAyNHB4O1xcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI0cHgpIHtcXG4uZm9ybV9fY29udGVudCB7XFxuICAgIGRpc3BsYXk6IGdyaWQ7XFxuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XFxuICAgIGdhcDogMTZweDtcXG59XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3Jlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1JlZ2lzdGVyUGFnZS52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBRUU7RUFBQSxtQkFBQTtFQUFBLG9CQUFBO0VBQUEsZ0JBQUE7RUFBQSxvQkFBQTtFQUFBLGdEQUFBO0FBQUE7QUFJQTtFQUlFLGdCQUFBO0VBQ0EsWUFBQTtBQUpKO0FBQUk7QUFERjtJQUVJLGlCQUFBO0FBR0o7QUFFRTtJQUVJLFlBQUE7QUFDTjtBQUpGO0FBTU07RUFDRSxpQkFBQTtBQUNSO0FBR0k7RUFDRSxrREFBQTtBQUROO0FBR007RUFDRSxnQkFBQTtBQURSO0FBVU07RUFBQSxtQkFBQTtFQUFBLHNCQUFBO0VBQUEsb0JBQUE7RUFBQSxxQkFBQTtFQUFBLGtCQUFBO0VBQUEsb0JBQUE7QUFBQTtBQUFBO0FBQUE7SUFBQSxtQkFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUEscUJBQUE7SUFBQSxrQkFBQTtBQUFBO0FBQUE7QUFKQTtBQUNFO0lBQUEsb0JBQUE7QUFBQTtBQUNSO0FBSU07RUFDRSxtQkFBQTtFQUNBLGtCQUFBO0VBQ0EsbUJBQUE7RUFBQSxvQkFBQTtFQUFBLG9CQUFBO0VBQUEsZ0RBQUE7QUFGUjtBQUVRO0FBQUE7SUFBQSxlQUFBO0lBQUEsbUJBQUE7QUFBQTtBQUFBO0FBS0Y7RUFBQSxrQkFBQTtFQUFBLDZEQUFBO0VBQ0EsdUJBQUE7RUFDQSxZQUFBO0FBRkE7QUFJQTtFQUNFLFlBQUE7QUFKUjtBQU9NO0VBQ0UsV0FBQTtFQUNBLFVBQUE7RUFDQSxhQUFBO0VBQ0Esa0JBQUE7RUFBQSx5REFBQTtFQUNBLGtCQUFBO0VBQ0Esa0JBQUE7RUFDQSxTQUFBO0VBQ0EsUUFBQTtBQUxSO0FBUU07RUFDRSxpQkFBQTtBQU5SO0FBU007RUFDRSxrQkFBQTtFQUNBLE1BQUE7RUFDQSxVQUFBO0VBQ0EsVUFBQTtFQUNBLFlBQUE7RUFDQSxrQkFBQTtFQUFBLDhEQUFBO0VBQ0EsV0FBQTtFQUNBLGtCQUFBO0VBQ0EsVUFBQTtBQVBSO0FBY0U7RUFBQSxrQkFBQTtFQUFBLDBEQUFBO0VBQUEsZ0JBQUE7QUFBQTtBQUFBO0FBQUE7SUFBQSxvQkFBQTtJQUFBLHFCQUFBO0lBQUEsbUJBQUE7SUFBQSxzQkFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0lBQUEsa0JBQUE7SUFBQSxtQkFBQTtBQUFBO0FBQUE7QUFERjtFQUVFLDJCQUFBO0VBQ0EsOEJBQUE7RUFDQSxZQUFBO0FBVkY7QUFhSTtFQUFBLHdCQUFBO0VBQUEsc0JBQUE7RUFBQSxnRUFBQTtFQUNBLG1CQUFBO0FBREE7QUFJRTtFQUFBLGlCQUFBO0VBQUEsc0JBQUE7RUFBQSwrREFBQTtBQUFBO0FBSUo7RUFDRSxnQkFBQTtBQVpKO0FBZ0JBO0FBQ0U7SUFDRSxhQUFBO0lBQ0EscUNBQUE7SUFDQSxTQUFBO0FBYkY7QUFDRlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJcXG4ubGFiZWwge1xcbiAgQGFwcGx5IHRleHQtc20gZm9udC1ub3JtYWwgdGV4dC1uLTUwO1xcbn1cXG5cXG4uc2VjdGlvbiB7XFxuICAmX19jb250YWluZXIge1xcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMjgwcHgpIHtcXG4gICAgICBtYXgtd2lkdGg6IDEyMDZweDtcXG4gICAgfVxcbiAgICBtYXgtd2lkdGg6IDg2NXB4O1xcbiAgICBtYXJnaW46IGF1dG87XFxuXFxuICAgIC5mZWVkYmFjayB7XFxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTI4MHB4KSB7XFxuICAgICAgICB3aWR0aDogNzAycHg7XFxuICAgICAgfVxcblxcbiAgICAgIHAge1xcbiAgICAgICAgbGluZS1oZWlnaHQ6IDIycHg7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgIC5zZWN0aW9uX193cmFwcGVyIHtcXG4gICAgICBib3gtc2hhZG93OiAwcHggMjBweCA0MHB4IDIwcHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcXG5cXG4gICAgICAudmVyaWZpY2F0aW9uIHtcXG4gICAgICAgIGZvbnQtc2l6ZTogMTkwcHg7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgIC5zZWN0aW9uX190aXRsZSB7XFxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDQwcHgpIHtcXG4gICAgICAgIEBhcHBseSBsZWFkaW5nLTk7XFxuICAgICAgfVxcblxcbiAgICAgIEBhcHBseSBteS03IG14LTMgdGV4dC1jZW50ZXIgbGVhZGluZy03IHNtOmxlYWRpbmctMTAgbGc6bWItMTAgbGc6bXQtMTQ7XFxuXFxuICAgICAgcCB7XFxuICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xcbiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xcbiAgICAgICAgQGFwcGx5IHRleHQtc20gdGV4dC1uLTQwIHNtOnRleHQtYmFzZTtcXG4gICAgICB9XFxuICAgIH1cXG5cXG4gICAgLnJlZ2lzdGVyX19zaWRlYmFyIHtcXG4gICAgICBAYXBwbHkgYmctZWdnc2hlbGw7XFxuICAgICAgcGFkZGluZzogOTZweCAzMnB4IDQwcHg7XFxuICAgICAgd2lkdGg6IDM0NHB4O1xcblxcbiAgICAgIHVsIHtcXG4gICAgICAgIHdpZHRoOiAyNTNweDtcXG4gICAgICB9XFxuXFxuICAgICAgdWw6OmJlZm9yZSB7XFxuICAgICAgICBjb250ZW50OiAnJztcXG4gICAgICAgIHdpZHRoOiA0cHg7XFxuICAgICAgICBoZWlnaHQ6IDE3NXB4O1xcbiAgICAgICAgQGFwcGx5IGJnLW4tMjA7XFxuICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7XFxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgICAgICBsZWZ0OiAwcHg7XFxuICAgICAgICB0b3A6IDBweDtcXG4gICAgICB9XFxuXFxuICAgICAgLmRldGFpbCB7XFxuICAgICAgICBtYXJnaW4tbGVmdDogNDVweDtcXG4gICAgICB9XFxuXFxuICAgICAgLmxpc3RfX2FjdGl2ZTo6YWZ0ZXIge1xcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgICAgdG9wOiAwO1xcbiAgICAgICAgbGVmdDogLTFweDtcXG4gICAgICAgIHdpZHRoOiA2cHg7XFxuICAgICAgICBoZWlnaHQ6IDg1cHg7XFxuICAgICAgICBAYXBwbHkgYmctdHVycXVvaXNlO1xcbiAgICAgICAgY29udGVudDogJyc7XFxuICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7XFxuICAgICAgICB6LWluZGV4OiA1O1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcbn1cXG5cXG4uZm9ybSB7XFxuICBAYXBwbHkgYmctd2hpdGUgcC01IHNtOnB4LTEwIHNtOnB5LTEwIGxnOnB4LTIwO1xcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogOHB4O1xcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogOHB4O1xcbiAgd2lkdGg6IDg2MnB4O1xcblxcbiAgJl9fY29udGFpbmVyIHtcXG4gICAgQGFwcGx5IGJvcmRlci1iLTIgYm9yZGVyLWItbi0xMDtcXG4gICAgbWFyZ2luLWJvdHRvbTogMjRweDtcXG5cXG4gICAgLmVycm9yX19pbnB1dCB7XFxuICAgICAgQGFwcGx5IGJvcmRlciBib3JkZXItY3JpbXNvbi01MDtcXG4gICAgfVxcbiAgfVxcblxcbiAgJl9fY29udGVudCB7XFxuICAgIG1hcmdpbi10b3A6IDI0cHg7XFxuICB9XFxufVxcblxcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMjRweCkge1xcbiAgLmZvcm1fX2NvbnRlbnQge1xcbiAgICBkaXNwbGF5OiBncmlkO1xcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xcbiAgICBnYXA6IDE2cHg7XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIiNidG5bZGF0YS12LWExODYxZjNlXSB7XFxuICBwYWRkaW5nOiAxM3B4IDA7XFxufVxcbiNidG4gc3ZnW2RhdGEtdi1hMTg2MWYzZV0ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgcmlnaHQ6IDEuNzVyZW07XFxuICBmb250LXNpemU6IDEuNXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAycmVtO1xcbiAgdHJhbnNpdGlvbjogMC40cztcXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcXG4jYnRuW2RhdGEtdi1hMTg2MWYzZV0ge1xcbiAgICBwYWRkaW5nOiAxOHB4IDA7XFxufVxcbn1cXG4udXNlcm5hbWVbZGF0YS12LWExODYxZjNlXSB7XFxuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XFxufVxcbi5wYXNzd29yZFtkYXRhLXYtYTE4NjFmM2VdIHtcXG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcXG59XFxubGFiZWxbZGF0YS12LWExODYxZjNlXSB7XFxuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XFxuICBmb250LXdlaWdodDogNzAwO1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9TaWduSW4udnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUNBO0VBQ0UsZUFBQTtBQUFGO0FBR0k7RUFBQSxrQkFBQTtFQUFBLGNBQUE7RUFBQSxpQkFBQTtFQUFBLGlCQUFBO0VBQ0EsZ0JBQUE7QUFEQTtBQUlKO0FBQ0U7SUFDRSxlQUFBO0FBQUY7QUFDRjtBQUdFO0VBQUEscUJBQUE7QUFBQTtBQUdBO0VBQUEscUJBQUE7QUFBQTtBQUdBO0VBQUEscUJBQUE7RUFBQSxnQkFBQTtBQUFBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcbiNidG4ge1xcbiAgcGFkZGluZzogMTNweCAwO1xcblxcbiAgc3ZnIHtcXG4gICAgQGFwcGx5IGFic29sdXRlIHJpZ2h0LTcgdGV4dC0yeGw7XFxuICAgIHRyYW5zaXRpb246IDAuNHM7XFxuICB9XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XFxuICAjYnRuIHtcXG4gICAgcGFkZGluZzogMThweCAwO1xcbiAgfVxcbn1cXG4udXNlcm5hbWUge1xcbiAgQGFwcGx5IG1iLTI7XFxufVxcbi5wYXNzd29yZCB7XFxuICBAYXBwbHkgbWItMjtcXG59XFxubGFiZWwge1xcbiAgQGFwcGx5IG1iLTIgZm9udC1ib2xkO1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5leHBvcnQge307IiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5leHBvcnQge307IiwidmFyIG1hcCA9IHtcblx0XCIuL2FmXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hZi5qc1wiLFxuXHRcIi4vYWYuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FmLmpzXCIsXG5cdFwiLi9hclwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXIuanNcIixcblx0XCIuL2FyLWR6XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1kei5qc1wiLFxuXHRcIi4vYXItZHouanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLWR6LmpzXCIsXG5cdFwiLi9hci1rd1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXIta3cuanNcIixcblx0XCIuL2FyLWt3LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1rdy5qc1wiLFxuXHRcIi4vYXItbHlcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLWx5LmpzXCIsXG5cdFwiLi9hci1seS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItbHkuanNcIixcblx0XCIuL2FyLW1hXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1tYS5qc1wiLFxuXHRcIi4vYXItbWEuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLW1hLmpzXCIsXG5cdFwiLi9hci1zYVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItc2EuanNcIixcblx0XCIuL2FyLXNhLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1zYS5qc1wiLFxuXHRcIi4vYXItdG5cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLXRuLmpzXCIsXG5cdFwiLi9hci10bi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItdG4uanNcIixcblx0XCIuL2FyLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci5qc1wiLFxuXHRcIi4vYXpcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2F6LmpzXCIsXG5cdFwiLi9hei5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXouanNcIixcblx0XCIuL2JlXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9iZS5qc1wiLFxuXHRcIi4vYmUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JlLmpzXCIsXG5cdFwiLi9iZ1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYmcuanNcIixcblx0XCIuL2JnLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9iZy5qc1wiLFxuXHRcIi4vYm1cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JtLmpzXCIsXG5cdFwiLi9ibS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYm0uanNcIixcblx0XCIuL2JuXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ibi5qc1wiLFxuXHRcIi4vYm4tYmRcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JuLWJkLmpzXCIsXG5cdFwiLi9ibi1iZC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYm4tYmQuanNcIixcblx0XCIuL2JuLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ibi5qc1wiLFxuXHRcIi4vYm9cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JvLmpzXCIsXG5cdFwiLi9iby5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYm8uanNcIixcblx0XCIuL2JyXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ici5qc1wiLFxuXHRcIi4vYnIuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JyLmpzXCIsXG5cdFwiLi9ic1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYnMuanNcIixcblx0XCIuL2JzLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9icy5qc1wiLFxuXHRcIi4vY2FcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2NhLmpzXCIsXG5cdFwiLi9jYS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvY2EuanNcIixcblx0XCIuL2NzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9jcy5qc1wiLFxuXHRcIi4vY3MuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2NzLmpzXCIsXG5cdFwiLi9jdlwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvY3YuanNcIixcblx0XCIuL2N2LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9jdi5qc1wiLFxuXHRcIi4vY3lcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2N5LmpzXCIsXG5cdFwiLi9jeS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvY3kuanNcIixcblx0XCIuL2RhXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kYS5qc1wiLFxuXHRcIi4vZGEuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RhLmpzXCIsXG5cdFwiLi9kZVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZGUuanNcIixcblx0XCIuL2RlLWF0XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kZS1hdC5qc1wiLFxuXHRcIi4vZGUtYXQuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RlLWF0LmpzXCIsXG5cdFwiLi9kZS1jaFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZGUtY2guanNcIixcblx0XCIuL2RlLWNoLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kZS1jaC5qc1wiLFxuXHRcIi4vZGUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RlLmpzXCIsXG5cdFwiLi9kdlwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZHYuanNcIixcblx0XCIuL2R2LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kdi5qc1wiLFxuXHRcIi4vZWxcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VsLmpzXCIsXG5cdFwiLi9lbC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZWwuanNcIixcblx0XCIuL2VuLWF1XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1hdS5qc1wiLFxuXHRcIi4vZW4tYXUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWF1LmpzXCIsXG5cdFwiLi9lbi1jYVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tY2EuanNcIixcblx0XCIuL2VuLWNhLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1jYS5qc1wiLFxuXHRcIi4vZW4tZ2JcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWdiLmpzXCIsXG5cdFwiLi9lbi1nYi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tZ2IuanNcIixcblx0XCIuL2VuLWllXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1pZS5qc1wiLFxuXHRcIi4vZW4taWUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWllLmpzXCIsXG5cdFwiLi9lbi1pbFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4taWwuanNcIixcblx0XCIuL2VuLWlsLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1pbC5qc1wiLFxuXHRcIi4vZW4taW5cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWluLmpzXCIsXG5cdFwiLi9lbi1pbi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4taW4uanNcIixcblx0XCIuL2VuLW56XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1uei5qc1wiLFxuXHRcIi4vZW4tbnouanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLW56LmpzXCIsXG5cdFwiLi9lbi1zZ1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tc2cuanNcIixcblx0XCIuL2VuLXNnLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1zZy5qc1wiLFxuXHRcIi4vZW9cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VvLmpzXCIsXG5cdFwiLi9lby5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW8uanNcIixcblx0XCIuL2VzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lcy5qc1wiLFxuXHRcIi4vZXMtZG9cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VzLWRvLmpzXCIsXG5cdFwiLi9lcy1kby5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXMtZG8uanNcIixcblx0XCIuL2VzLW14XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lcy1teC5qc1wiLFxuXHRcIi4vZXMtbXguanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VzLW14LmpzXCIsXG5cdFwiLi9lcy11c1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXMtdXMuanNcIixcblx0XCIuL2VzLXVzLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lcy11cy5qc1wiLFxuXHRcIi4vZXMuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VzLmpzXCIsXG5cdFwiLi9ldFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXQuanNcIixcblx0XCIuL2V0LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ldC5qc1wiLFxuXHRcIi4vZXVcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2V1LmpzXCIsXG5cdFwiLi9ldS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXUuanNcIixcblx0XCIuL2ZhXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mYS5qc1wiLFxuXHRcIi4vZmEuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZhLmpzXCIsXG5cdFwiLi9maVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZmkuanNcIixcblx0XCIuL2ZpLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9maS5qc1wiLFxuXHRcIi4vZmlsXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9maWwuanNcIixcblx0XCIuL2ZpbC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZmlsLmpzXCIsXG5cdFwiLi9mb1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZm8uanNcIixcblx0XCIuL2ZvLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mby5qc1wiLFxuXHRcIi4vZnJcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZyLmpzXCIsXG5cdFwiLi9mci1jYVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnItY2EuanNcIixcblx0XCIuL2ZyLWNhLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mci1jYS5qc1wiLFxuXHRcIi4vZnItY2hcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZyLWNoLmpzXCIsXG5cdFwiLi9mci1jaC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnItY2guanNcIixcblx0XCIuL2ZyLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mci5qc1wiLFxuXHRcIi4vZnlcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2Z5LmpzXCIsXG5cdFwiLi9meS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnkuanNcIixcblx0XCIuL2dhXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nYS5qc1wiLFxuXHRcIi4vZ2EuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dhLmpzXCIsXG5cdFwiLi9nZFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ2QuanNcIixcblx0XCIuL2dkLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nZC5qc1wiLFxuXHRcIi4vZ2xcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dsLmpzXCIsXG5cdFwiLi9nbC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ2wuanNcIixcblx0XCIuL2dvbS1kZXZhXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nb20tZGV2YS5qc1wiLFxuXHRcIi4vZ29tLWRldmEuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dvbS1kZXZhLmpzXCIsXG5cdFwiLi9nb20tbGF0blwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ29tLWxhdG4uanNcIixcblx0XCIuL2dvbS1sYXRuLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nb20tbGF0bi5qc1wiLFxuXHRcIi4vZ3VcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2d1LmpzXCIsXG5cdFwiLi9ndS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ3UuanNcIixcblx0XCIuL2hlXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9oZS5qc1wiLFxuXHRcIi4vaGUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2hlLmpzXCIsXG5cdFwiLi9oaVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaGkuanNcIixcblx0XCIuL2hpLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9oaS5qc1wiLFxuXHRcIi4vaHJcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2hyLmpzXCIsXG5cdFwiLi9oci5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaHIuanNcIixcblx0XCIuL2h1XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9odS5qc1wiLFxuXHRcIi4vaHUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2h1LmpzXCIsXG5cdFwiLi9oeS1hbVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaHktYW0uanNcIixcblx0XCIuL2h5LWFtLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9oeS1hbS5qc1wiLFxuXHRcIi4vaWRcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2lkLmpzXCIsXG5cdFwiLi9pZC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaWQuanNcIixcblx0XCIuL2lzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9pcy5qc1wiLFxuXHRcIi4vaXMuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2lzLmpzXCIsXG5cdFwiLi9pdFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaXQuanNcIixcblx0XCIuL2l0LWNoXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9pdC1jaC5qc1wiLFxuXHRcIi4vaXQtY2guanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2l0LWNoLmpzXCIsXG5cdFwiLi9pdC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaXQuanNcIixcblx0XCIuL2phXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9qYS5qc1wiLFxuXHRcIi4vamEuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2phLmpzXCIsXG5cdFwiLi9qdlwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvanYuanNcIixcblx0XCIuL2p2LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9qdi5qc1wiLFxuXHRcIi4va2FcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2thLmpzXCIsXG5cdFwiLi9rYS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva2EuanNcIixcblx0XCIuL2trXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ray5qc1wiLFxuXHRcIi4va2suanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2trLmpzXCIsXG5cdFwiLi9rbVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva20uanNcIixcblx0XCIuL2ttLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rbS5qc1wiLFxuXHRcIi4va25cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2tuLmpzXCIsXG5cdFwiLi9rbi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva24uanNcIixcblx0XCIuL2tvXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rby5qc1wiLFxuXHRcIi4va28uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2tvLmpzXCIsXG5cdFwiLi9rdVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva3UuanNcIixcblx0XCIuL2t1LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rdS5qc1wiLFxuXHRcIi4va3lcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2t5LmpzXCIsXG5cdFwiLi9reS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva3kuanNcIixcblx0XCIuL2xiXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9sYi5qc1wiLFxuXHRcIi4vbGIuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2xiLmpzXCIsXG5cdFwiLi9sb1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbG8uanNcIixcblx0XCIuL2xvLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9sby5qc1wiLFxuXHRcIi4vbHRcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2x0LmpzXCIsXG5cdFwiLi9sdC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbHQuanNcIixcblx0XCIuL2x2XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9sdi5qc1wiLFxuXHRcIi4vbHYuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2x2LmpzXCIsXG5cdFwiLi9tZVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWUuanNcIixcblx0XCIuL21lLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tZS5qc1wiLFxuXHRcIi4vbWlcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21pLmpzXCIsXG5cdFwiLi9taS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWkuanNcIixcblx0XCIuL21rXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tay5qc1wiLFxuXHRcIi4vbWsuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21rLmpzXCIsXG5cdFwiLi9tbFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWwuanNcIixcblx0XCIuL21sLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tbC5qc1wiLFxuXHRcIi4vbW5cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21uLmpzXCIsXG5cdFwiLi9tbi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbW4uanNcIixcblx0XCIuL21yXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tci5qc1wiLFxuXHRcIi4vbXIuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21yLmpzXCIsXG5cdFwiLi9tc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXMuanNcIixcblx0XCIuL21zLW15XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tcy1teS5qc1wiLFxuXHRcIi4vbXMtbXkuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21zLW15LmpzXCIsXG5cdFwiLi9tcy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXMuanNcIixcblx0XCIuL210XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tdC5qc1wiLFxuXHRcIi4vbXQuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL210LmpzXCIsXG5cdFwiLi9teVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXkuanNcIixcblx0XCIuL215LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9teS5qc1wiLFxuXHRcIi4vbmJcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25iLmpzXCIsXG5cdFwiLi9uYi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmIuanNcIixcblx0XCIuL25lXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9uZS5qc1wiLFxuXHRcIi4vbmUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25lLmpzXCIsXG5cdFwiLi9ubFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmwuanNcIixcblx0XCIuL25sLWJlXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ubC1iZS5qc1wiLFxuXHRcIi4vbmwtYmUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25sLWJlLmpzXCIsXG5cdFwiLi9ubC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmwuanNcIixcblx0XCIuL25uXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ubi5qc1wiLFxuXHRcIi4vbm4uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25uLmpzXCIsXG5cdFwiLi9vYy1sbmNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL29jLWxuYy5qc1wiLFxuXHRcIi4vb2MtbG5jLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9vYy1sbmMuanNcIixcblx0XCIuL3BhLWluXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9wYS1pbi5qc1wiLFxuXHRcIi4vcGEtaW4uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3BhLWluLmpzXCIsXG5cdFwiLi9wbFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcGwuanNcIixcblx0XCIuL3BsLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9wbC5qc1wiLFxuXHRcIi4vcHRcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3B0LmpzXCIsXG5cdFwiLi9wdC1iclwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcHQtYnIuanNcIixcblx0XCIuL3B0LWJyLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9wdC1ici5qc1wiLFxuXHRcIi4vcHQuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3B0LmpzXCIsXG5cdFwiLi9yb1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcm8uanNcIixcblx0XCIuL3JvLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9yby5qc1wiLFxuXHRcIi4vcnVcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3J1LmpzXCIsXG5cdFwiLi9ydS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcnUuanNcIixcblx0XCIuL3NkXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zZC5qc1wiLFxuXHRcIi4vc2QuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NkLmpzXCIsXG5cdFwiLi9zZVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2UuanNcIixcblx0XCIuL3NlLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zZS5qc1wiLFxuXHRcIi4vc2lcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NpLmpzXCIsXG5cdFwiLi9zaS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2kuanNcIixcblx0XCIuL3NrXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zay5qc1wiLFxuXHRcIi4vc2suanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NrLmpzXCIsXG5cdFwiLi9zbFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2wuanNcIixcblx0XCIuL3NsLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zbC5qc1wiLFxuXHRcIi4vc3FcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NxLmpzXCIsXG5cdFwiLi9zcS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3EuanNcIixcblx0XCIuL3NyXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zci5qc1wiLFxuXHRcIi4vc3ItY3lybFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3ItY3lybC5qc1wiLFxuXHRcIi4vc3ItY3lybC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3ItY3lybC5qc1wiLFxuXHRcIi4vc3IuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NyLmpzXCIsXG5cdFwiLi9zc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3MuanNcIixcblx0XCIuL3NzLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zcy5qc1wiLFxuXHRcIi4vc3ZcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3N2LmpzXCIsXG5cdFwiLi9zdi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3YuanNcIixcblx0XCIuL3N3XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zdy5qc1wiLFxuXHRcIi4vc3cuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3N3LmpzXCIsXG5cdFwiLi90YVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGEuanNcIixcblx0XCIuL3RhLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90YS5qc1wiLFxuXHRcIi4vdGVcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RlLmpzXCIsXG5cdFwiLi90ZS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGUuanNcIixcblx0XCIuL3RldFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGV0LmpzXCIsXG5cdFwiLi90ZXQuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RldC5qc1wiLFxuXHRcIi4vdGdcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RnLmpzXCIsXG5cdFwiLi90Zy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGcuanNcIixcblx0XCIuL3RoXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90aC5qc1wiLFxuXHRcIi4vdGguanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RoLmpzXCIsXG5cdFwiLi90a1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGsuanNcIixcblx0XCIuL3RrLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90ay5qc1wiLFxuXHRcIi4vdGwtcGhcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RsLXBoLmpzXCIsXG5cdFwiLi90bC1waC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGwtcGguanNcIixcblx0XCIuL3RsaFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGxoLmpzXCIsXG5cdFwiLi90bGguanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RsaC5qc1wiLFxuXHRcIi4vdHJcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RyLmpzXCIsXG5cdFwiLi90ci5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdHIuanNcIixcblx0XCIuL3R6bFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdHpsLmpzXCIsXG5cdFwiLi90emwuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3R6bC5qc1wiLFxuXHRcIi4vdHptXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90em0uanNcIixcblx0XCIuL3R6bS1sYXRuXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90em0tbGF0bi5qc1wiLFxuXHRcIi4vdHptLWxhdG4uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3R6bS1sYXRuLmpzXCIsXG5cdFwiLi90em0uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3R6bS5qc1wiLFxuXHRcIi4vdWctY25cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3VnLWNuLmpzXCIsXG5cdFwiLi91Zy1jbi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdWctY24uanNcIixcblx0XCIuL3VrXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91ay5qc1wiLFxuXHRcIi4vdWsuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3VrLmpzXCIsXG5cdFwiLi91clwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdXIuanNcIixcblx0XCIuL3VyLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91ci5qc1wiLFxuXHRcIi4vdXpcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3V6LmpzXCIsXG5cdFwiLi91ei1sYXRuXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91ei1sYXRuLmpzXCIsXG5cdFwiLi91ei1sYXRuLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91ei1sYXRuLmpzXCIsXG5cdFwiLi91ei5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdXouanNcIixcblx0XCIuL3ZpXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS92aS5qc1wiLFxuXHRcIi4vdmkuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3ZpLmpzXCIsXG5cdFwiLi94LXBzZXVkb1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUveC1wc2V1ZG8uanNcIixcblx0XCIuL3gtcHNldWRvLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS94LXBzZXVkby5qc1wiLFxuXHRcIi4veW9cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3lvLmpzXCIsXG5cdFwiLi95by5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUveW8uanNcIixcblx0XCIuL3poLWNuXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS96aC1jbi5qc1wiLFxuXHRcIi4vemgtY24uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3poLWNuLmpzXCIsXG5cdFwiLi96aC1oa1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvemgtaGsuanNcIixcblx0XCIuL3poLWhrLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS96aC1oay5qc1wiLFxuXHRcIi4vemgtbW9cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3poLW1vLmpzXCIsXG5cdFwiLi96aC1tby5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvemgtbW8uanNcIixcblx0XCIuL3poLXR3XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS96aC10dy5qc1wiLFxuXHRcIi4vemgtdHcuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3poLXR3LmpzXCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUgc3luYyByZWN1cnNpdmUgXlxcXFwuXFxcXC8uKiRcIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMi42NjcgMi42NjZoLTEuMzMzVjJBLjY2Ni42NjYgMCAxIDAgMTAgMnYuNjY2SDZWMmEuNjY3LjY2NyAwIDAgMC0xLjMzMyAwdi42NjZIMy4zMzRhMiAyIDAgMCAwLTIgMnY4YTIgMiAwIDAgMCAyIDJoOS4zMzNhMiAyIDAgMCAwIDItMnYtOGEyIDIgMCAwIDAtMi0yWm0uNjY3IDEwYS42NjYuNjY2IDAgMCAxLS42NjcuNjY3SDMuMzMzYS42NjYuNjY2IDAgMCAxLS42NjYtLjY2N1Y4aDEwLjY2NnY0LjY2NlptMC02SDIuNjY3di0yQS42NjcuNjY3IDAgMCAxIDMuMzM0IDRoMS4zMzN2LjY2NmEuNjY3LjY2NyAwIDAgMCAxLjMzMyAwVjRoNHYuNjY2YS42NjcuNjY3IDAgMSAwIDEuMzM0IDBWNGgxLjMzM2EuNjY3LjY2NyAwIDAgMSAuNjY3LjY2NnYyWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTQgMTMuMzMzSDIuNjY3VjEyaDJhLjY2Ny42NjcgMCAwIDAgMC0xLjMzNGgtMlY5LjMzM2g0LjY2N2EuNjY3LjY2NyAwIDAgMCAwLTEuMzMzSDIuNjY3VjYuNjY2SDEwYS42NjcuNjY3IDAgMCAwIDAtMS4zMzNIMi42NjdWNGgxMGEuNjY3LjY2NyAwIDEgMCAwLTEuMzM0aC0xMFYyYS42NjcuNjY3IDAgMCAwLTEuMzMzIDB2MTJhLjY2Ny42NjcgMCAwIDAgLjY2Ni42NjZoMTJhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTggNGEuNjY3LjY2NyAwIDAgMC0uNjY3LjY2NnY2LjY2N2EuNjY3LjY2NyAwIDEgMCAxLjMzNCAwVjQuNjY2QS42NjcuNjY3IDAgMCAwIDggNFpNNC42NjcgOEEuNjY3LjY2NyAwIDAgMCA0IDguNjY2djIuNjY3YS42NjcuNjY3IDAgMSAwIDEuMzMzIDBWOC42NjZBLjY2Ny42NjcgMCAwIDAgNC42NjcgOFptNi42NjctMS4zMzRhLjY2Ny42NjcgMCAwIDAtLjY2Ny42Njd2NGEuNjY3LjY2NyAwIDAgMCAxLjMzMyAwdi00YS42NjcuNjY3IDAgMCAwLS42NjYtLjY2N1ptMS4zMzMtNS4zMzNIMy4zMzNhMiAyIDAgMCAwLTIgMnY5LjMzM2EyIDIgMCAwIDAgMiAyaDkuMzM0YTIgMiAwIDAgMCAyLTJWMy4zMzNhMiAyIDAgMCAwLTItMlptLjY2NyAxMS4zMzNhLjY2Ni42NjYgMCAwIDEtLjY2Ny42NjdIMy4zMzNhLjY2Ni42NjYgMCAwIDEtLjY2Ni0uNjY3VjMuMzMzYS42NjcuNjY3IDAgMCAxIC42NjctLjY2N2g5LjMzM2EuNjY3LjY2NyAwIDAgMSAuNjY3LjY2N3Y5LjMzM1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTUuMzM0IDcuMzM0aDUuMzMzYS42NjcuNjY3IDAgMCAwIC41MTMtLjI0Ny42NjYuNjY2IDAgMCAwIC4xNTQtLjU1M0wxMC42NjcgMy4yQS42NjcuNjY3IDAgMCAwIDEwIDIuNjY3SDZhLjY2Ny42NjcgMCAwIDAtLjY2Ni41MzNsLS42NjcgMy4zMzRhLjY2Ny42NjcgMCAwIDAgLjE0LjU1My42NjcuNjY3IDAgMCAwIC41MjcuMjQ3Wk02LjU0NyA0aDIuOTA3bC40IDJINi4xNDdsLjQtMlptOC4xMiA1LjJBLjY2Ny42NjcgMCAwIDAgMTQgOC42NjdoLTRhLjY2Ny42NjcgMCAwIDAtLjY2Ni41MzNsLS42NjcgMy4zMzRhLjY2Ny42NjcgMCAwIDAgLjE0LjU1My42NjYuNjY2IDAgMCAwIC41MjcuMjQ3aDUuMzMzYS42NjcuNjY3IDAgMCAwIC41MTMtLjI0Ny42NjYuNjY2IDAgMCAwIC4xNTQtLjU1M0wxNC42NjcgOS4yWm0tNC41MiAyLjguNC0yaDIuOTA2bC40IDJoLTMuNzA2Wk02IDguNjY4SDJhLjY2Ny42NjcgMCAwIDAtLjY2Ni41MzNsLS42NjcgMy4zMzRhLjY2Ny42NjcgMCAwIDAgLjE0LjU1My42NjYuNjY2IDAgMCAwIC41MjcuMjQ3aDUuMzMzYS42NjcuNjY3IDAgMCAwIC41MTMtLjI0Ny42NjYuNjY2IDAgMCAwIC4xNTQtLjU1M0w2LjY2NyA5LjJBLjY2Ny42NjcgMCAwIDAgNiA4LjY2N1ptLTMuODUzIDMuMzM0LjQtMmgyLjkwN2wuNCAySDIuMTQ3WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNOS4zMzQgNS4zMzNIMTBBLjY2Ny42NjcgMCAwIDAgMTAgNGgtLjY2NmEuNjY3LjY2NyAwIDAgMCAwIDEuMzMzWm0wIDIuNjY3SDEwYS42NjcuNjY3IDAgMCAwIDAtMS4zMzRoLS42NjZhLjY2Ny42NjcgMCAwIDAgMCAxLjMzNFpNNiA1LjMzM2guNjY3YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNINmEuNjY3LjY2NyAwIDEgMCAwIDEuMzMzWk02IDhoLjY2N2EuNjY3LjY2NyAwIDEgMCAwLTEuMzM0SDZBLjY2Ny42NjcgMCAwIDAgNiA4Wm04IDUuMzMzaC0uNjY2VjJhLjY2Ni42NjYgMCAwIDAtLjY2Ny0uNjY3SDMuMzMzQS42NjcuNjY3IDAgMCAwIDIuNjY3IDJ2MTEuMzMzSDJhLjY2Ni42NjYgMCAxIDAgMCAxLjMzM2gxMmEuNjY3LjY2NyAwIDAgMCAwLTEuMzMzWm0tNS4zMzMgMEg3LjMzNHYtMi42NjdoMS4zMzN2Mi42NjdabTMuMzMzIDBoLTJWMTBhLjY2Ny42NjcgMCAwIDAtLjY2Ni0uNjY3SDYuNjY3QS42NjcuNjY3IDAgMCAwIDYgMTB2My4zMzNINFYyLjY2Nmg4djEwLjY2N1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTcuMzM0IDZIMTBhLjY2Ny42NjcgMCAxIDAgMC0xLjMzM0g4LjY2N1Y0YS42NjcuNjY3IDAgMSAwLTEuMzMzIDB2LjY2N2EyIDIgMCAwIDAgMCA0aDEuMzMzYS42NjcuNjY3IDAgMCAxIDAgMS4zMzNINmEuNjY3LjY2NyAwIDAgMCAwIDEuMzM0aDEuMzM0VjEyYS42NjcuNjY3IDAgMSAwIDEuMzMzIDB2LS42NjZhMiAyIDAgMCAwIDAtNEg3LjMzNGEuNjY3LjY2NyAwIDAgMSAwLTEuMzM0Wk04IC42NjdhNy4zMzMgNy4zMzMgMCAxIDAgMCAxNC42NjdBNy4zMzMgNy4zMzMgMCAwIDAgOCAuNjY3Wk04IDE0QTYgNiAwIDEgMSA4IDJhNiA2IDAgMCAxIDAgMTJaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMy4xMiA0LjU4N2EyLjkzMyAyLjkzMyAwIDAgMC0yLjIwNi0uMjEzIDIuOTEzIDIuOTEzIDAgMCAwLTUuODIgMCAyLjk4NyAyLjk4NyAwIDAgMC0yLjIwNy4xOTNBMi45MTMgMi45MTMgMCAwIDAgMy4yOTQgOS45YTIuOTMzIDIuOTMzIDAgMCAwLS41MzQgMS42NjdjLjAwMy4xNjguMDE5LjMzNS4wNDcuNWEyLjg5MyAyLjg5MyAwIDAgMCAyLjg2IDIuNDJjLjE0Mi4wMS4yODUuMDEuNDI3IDBBMi45NDcgMi45NDcgMCAwIDAgOCAxMy4zMzRhMi45NDcgMi45NDcgMCAwIDAgMS45MDcgMS4xMjZjLjE0Mi4wMS4yODUuMDEuNDI3IDBhMi45MDcgMi45MDcgMCAwIDAgMi4zNzMtNC41OCAyLjkwNyAyLjkwNyAwIDAgMCAuNDEzLTUuMzMzdi4wNFpNNi44OTQgMy4yOTRhMS42IDEuNiAwIDAgMSAyLjIxMyAwIDEuNjIgMS42MiAwIDAgMSAuMzQ3IDEuNzczbC0uMTc0LjM5My0uNDQuMzg3QTIuNzEzIDIuNzEzIDAgMCAwIDggNS43Yy0uMzcgMC0uNzM1LjA3OC0xLjA3My4yMjdsLS4zNzMtLjg2YTEuNTkzIDEuNTkzIDAgMCAxIC4zNC0xLjc3M1ptLTQuMDY3IDQuNTZBMS41OCAxLjU4IDAgMCAxIDUuMjk0IDZsLjMyNi4yODcuMjM0LjUzM2EyLjYxMyAyLjYxMyAwIDAgMC0uNTIgMS41NDcgMS45IDEuOSAwIDAgMCAwIC4zaC0uMzY3bC0uNTYuMDUzYTEuNTggMS41OCAwIDAgMS0xLjU4LS44NjZabTQuNCA0LjA1M2ExLjU4NyAxLjU4NyAwIDAgMS0zLjEwNy0uMDUzIDIuMDQ3IDIuMDQ3IDAgMCAxIDAtLjI4IDEuNTUzIDEuNTUzIDAgMCAxIC43OC0xLjMzNGwuMzQtLjI0LjYwNy0uMDY2Yy4zODIuNTMyLjk0Ny45MDQgMS41ODcgMS4wNDZsLS4yMDcuOTI3Wk04IDkuN2ExLjMzMyAxLjMzMyAwIDEgMSAwLTIuNjY2QTEuMzMzIDEuMzMzIDAgMCAxIDggOS43Wm0zLjg4IDIuMTQ3YTEuNTczIDEuNTczIDAgMCAxLTEuNzg2IDEuMjkzIDEuNTkzIDEuNTkzIDAgMCAxLTEuMzM0LTEuMjMzbC0uMDkzLS40LjE0LS42MTNhMi42NjcgMi42NjcgMCAwIDAgMS40NjctMS4xNzRsLjMzMy4yaC4wNmwuNDQuMjZhMS41ODcgMS41ODcgMCAwIDEgLjc3MyAxLjY2N1ptMS4yOTQtNGExLjU5NCAxLjU5NCAwIDAgMS0xLjQyLjg4N2gtLjE2bC0uNDI3LS4wNjctLjUtLjI3M2MwLS42NDktLjIzOC0xLjI3NC0uNjY3LTEuNzZsLjI4Ny0uMjQ3LjQyLS4zODdhMS41OCAxLjU4IDAgMCAxIDIuNDY3IDEuODh2LS4wMzNaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMy4zMzQgNS45NmEuODguODggMCAwIDAtLjA0LS4xOHYtLjA2YS43MTYuNzE2IDAgMCAwLS4xMjctLjE4N2wtNC00YS43MTMuNzEzIDAgMCAwLS4xODctLjEyN2gtLjA2YS41ODcuNTg3IDAgMCAwLS4yMi0uMDczSDQuNjY3YTIgMiAwIDAgMC0yIDJ2OS4zMzNhMiAyIDAgMCAwIDIgMmg2LjY2N2EyIDIgMCAwIDAgMi0yVjUuOTZabS00LTIuMzU0IDEuNzI2IDEuNzI3SDEwYS42NjcuNjY3IDAgMCAxLS42NjYtLjY2N3YtMS4wNlpNMTIgMTIuNjY2YS42NjcuNjY3IDAgMCAxLS42NjYuNjY3SDQuNjY3QS42NjYuNjY2IDAgMCAxIDQgMTIuNjY2VjMuMzMzYS42NjcuNjY3IDAgMCAxIC42NjctLjY2N0g4djJhMiAyIDAgMCAwIDIgMmgydjZaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMi45NiA4LjY2NmMtLjE0NyAwLS4zLS4wNDYtLjQ0Ny0uMDhhNi4yOSA2LjI5IDAgMCAxLS44NzMtLjI2IDEuMzMzIDEuMzMzIDAgMCAwLTEuNjUzLjY2N2wtLjE0Ny4zQTguMTIgOC4xMiAwIDAgMSA4LjA2NyA3Ljk2YTguMTIgOC4xMiAwIDAgMS0xLjMzNC0xLjc3NEw3LjAxMyA2YTEuMzMzIDEuMzMzIDAgMCAwIC42NjctMS42NTQgNi44ODcgNi44ODcgMCAwIDEtLjI2LS44NzNjLS4wMzMtLjE0Ny0uMDYtLjMtLjA4LS40NTNhMiAyIDAgMCAwLTItMS42NmgtMmEyIDIgMCAwIDAtMiAyLjI3MyAxMi42NjcgMTIuNjY3IDAgMCAwIDExLjAxMyAxMC45NzNoLjI1NGEyIDIgMCAwIDAgMS44MjctMS4xODUgMiAyIDAgMCAwIC4xNzMtLjgyMXYtMmEyIDIgMCAwIDAtMS42NDctMS45MzRabS4zMzMgNGEuNjY2LjY2NiAwIDAgMS0uNDgyLjY0MS43MDcuNzA3IDAgMCAxLS4yOS4wMjZBMTEuMzMzIDExLjMzMyAwIDAgMSAyLjcxMiAzLjQ4YS43MjcuNzI3IDAgMCAxIC4xNjctLjU0Ny42NjcuNjY3IDAgMCAxIC41LS4yMjdoMmEuNjY3LjY2NyAwIDAgMSAuNjY3LjUyNyA3LjQxNCA3LjQxNCAwIDAgMCAuNDA3IDEuNTczbC0uOTM0LjQzNGEuNjY3LjY2NyAwIDAgMC0uMzI3Ljg4NiA5LjY2IDkuNjYgMCAwIDAgNC42NjcgNC42NjcuNjY2LjY2NiAwIDAgMCAuNTA3IDAgLjY2NS42NjUgMCAwIDAgLjM4LS4zNDdsLjQxMy0uOTMzYy4zNDUuMTIzLjY5Ny4yMjYgMS4wNTMuMzA3LjE3OC4wNC4zNTguMDczLjU0LjFhLjY2Ny42NjcgMCAwIDEgLjUyNy42NjZsLjAxMyAyLjA4WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTQuMTQ2IDhhMiAyIDAgMCAwIC41Mi0xLjMzMyAyIDIgMCAwIDAtMi0ySDkuMjEzQTIgMiAwIDAgMCA3LjMzMyAyaC00YTIgMiAwIDAgMC0yIDIgMiAyIDAgMCAwIC41MiAxLjMzMyAyIDIgMCAwIDAgMCAyLjY2NyAyIDIgMCAwIDAgMCAyLjY2N0EyIDIgMCAwIDAgMS4zMzMgMTJhMiAyIDAgMCAwIDIgMmg5LjMzM2EyIDIgMCAwIDAgMS40OC0zLjMzMyAyIDIgMCAwIDAgMC0yLjY2N1ptLTYuODEzIDQuNjY3aC00YS42NjcuNjY3IDAgMCAxIDAtMS4zMzRoNGEuNjY3LjY2NyAwIDAgMSAwIDEuMzM0Wm0wLTIuNjY3aC00YS42NjcuNjY3IDAgMCAxIDAtMS4zMzNoNGEuNjY3LjY2NyAwIDAgMSAwIDEuMzMzWm0wLTIuNjY3aC00YS42NjcuNjY3IDAgMSAxIDAtMS4zMzNoNGEuNjY3LjY2NyAwIDAgMSAwIDEuMzMzWm0wLTIuNjY2aC00YS42NjcuNjY3IDAgMCAxIDAtMS4zMzRoNGEuNjY3LjY2NyAwIDEgMSAwIDEuMzM0Wm01Ljc5MyA3LjgwNmEuNjIuNjIgMCAwIDEtLjQ2LjE5NEg5LjIxM2MuMTYtLjQzLjE2LS45MDQgMC0xLjMzNGgzLjQ1M2EuNjY3LjY2NyAwIDAgMSAuNjY3LjY2Ny42NjYuNjY2IDAgMCAxLS4yMDcuNDczWm0wLTIuNjY2YS42Mi42MiAwIDAgMS0uNDYuMTkzSDkuMjEzYy4xNi0uNDMuMTYtLjkwMyAwLTEuMzMzaDMuNDUzYS42NjYuNjY2IDAgMCAxIC42NjcuNjY2LjY2Ni42NjYgMCAwIDEtLjIwNy40NzRabTAtMi42NjdhLjYyLjYyIDAgMCAxLS40Ni4xOTNIOS4yMTNjLjE2LS40My4xNi0uOTAzIDAtMS4zMzNoMy40NTNhLjY2Ni42NjYgMCAwIDEgLjY2Ny42NjcuNjY2LjY2NiAwIDAgMS0uMjA3LjQ3M1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTkuMzMzIDUuMzMzSDEwQS42NjcuNjY3IDAgMSAwIDEwIDRoLS42NjdhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM1ptMCAyLjY2N0gxMGEuNjY3LjY2NyAwIDEgMCAwLTEuMzM0aC0uNjY3YS42NjcuNjY3IDAgMCAwIDAgMS4zMzRaTTYgNS4zMzNoLjY2NmEuNjY3LjY2NyAwIDAgMCAwLTEuMzMzSDZhLjY2Ny42NjcgMCAxIDAgMCAxLjMzM1pNNiA4aC42NjZhLjY2Ny42NjcgMCAxIDAgMC0xLjMzNEg2QS42NjcuNjY3IDAgMCAwIDYgOFptOCA1LjMzM2gtLjY2N1YyYS42NjYuNjY2IDAgMCAwLS42NjctLjY2N0gzLjMzM0EuNjY3LjY2NyAwIDAgMCAyLjY2NiAydjExLjMzM0gyYS42NjYuNjY2IDAgMSAwIDAgMS4zMzNoMTJhLjY2Ny42NjcgMCAxIDAgMC0xLjMzM1ptLTUuMzM0IDBINy4zMzN2LTIuNjY3aDEuMzMzdjIuNjY3Wm0zLjMzNCAwaC0yVjEwYS42NjcuNjY3IDAgMCAwLS42NjctLjY2N0g2LjY2NkEuNjY3LjY2NyAwIDAgMCA2IDEwdjMuMzMzSDRWMi42NjZoOHYxMC42NjdaXFxcIiBmaWxsPVxcXCIjQTZCNUJBXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTMuMzM0LjY2N0gyLjY2N2EyIDIgMCAwIDAtMiAydjEwLjY2N2EyIDIgMCAwIDAgMiAyaDEwLjY2N2EyIDIgMCAwIDAgMi0yVjIuNjY3YTIgMiAwIDAgMC0yLTJaTTUuMzM0IDE0SDIuNjY3QS42NjcuNjY3IDAgMCAxIDIgMTMuMzM0di0uNzg3YTIgMiAwIDAgMCAuNjY3LjEyaDIuNjY3VjE0Wm0wLTIuNjY2SDIuNjY3QS42NjcuNjY3IDAgMCAxIDIgMTAuNjY3VjkuODhhMiAyIDAgMCAwIC42NjcuMTJoMi42Njd2MS4zMzRabTAtMi42NjdIMi42NjdBLjY2Ny42NjcgMCAwIDEgMiA4VjIuNjY3QS42NjcuNjY3IDAgMCAxIDIuNjY3IDJoMi42Njd2Ni42NjdabTQgNS4zMzNINi42Njd2LTRoMi42Njd2NFptMC01LjMzM0g2LjY2N1YyaDIuNjY3djYuNjY3Wk0xNCAxMy4zMzRhLjY2Ny42NjcgMCAwIDEtLjY2Ni42NjZoLTIuNjY3di0xLjMzM2gyLjY2N2EyIDIgMCAwIDAgLjY2Ni0uMTJ2Ljc4N1ptMC0yLjY2N2EuNjY3LjY2NyAwIDAgMS0uNjY2LjY2N2gtMi42NjdWMTBoMi42NjdBMiAyIDAgMCAwIDE0IDkuODh2Ljc4N1pNMTQgOGEuNjY3LjY2NyAwIDAgMS0uNjY2LjY2N2gtMi42NjdWMmgyLjY2N2EuNjY3LjY2NyAwIDAgMSAuNjY2LjY2N1Y4Wm0tMi0zLjMzM2EuNjY3LjY2NyAwIDEgMCAwIDEuMzM0LjY2Ny42NjcgMCAwIDAgMC0xLjMzNFpNNCA2YS42NjcuNjY3IDAgMSAwIDAtMS4zMzNBLjY2Ny42NjcgMCAwIDAgNCA2WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNNCA3LjMzM2EuNjY3LjY2NyAwIDEgMCAwIDEuMzMzLjY2Ny42NjcgMCAwIDAgMC0xLjMzM1ptOCAwYS42NjcuNjY3IDAgMSAwIDAgMS4zMzQuNjY3LjY2NyAwIDAgMCAwLTEuMzM0Wm0xLjMzNC00SDIuNjY3YTIgMiAwIDAgMC0yIDJ2NS4zMzNhMiAyIDAgMCAwIDIgMmgxMC42NjdhMiAyIDAgMCAwIDItMlY1LjMzM2EyIDIgMCAwIDAtMi0yWk0xNCAxMC42NjZhLjY2Ny42NjcgMCAwIDEtLjY2Ni42NjdIMi42NjdBLjY2Ni42NjYgMCAwIDEgMiAxMC42NjZWNS4zMzNhLjY2Ny42NjcgMCAwIDEgLjY2Ny0uNjY3aDEwLjY2N2EuNjY3LjY2NyAwIDAgMSAuNjY2LjY2N3Y1LjMzM1pNOCA2YTIgMiAwIDEgMCAwIDQgMiAyIDAgMCAwIDAtNFptMCAyLjY2NmEuNjY3LjY2NyAwIDEgMSAwLTEuMzMzLjY2Ny42NjcgMCAwIDEgMCAxLjMzM1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTExLjMzMyA0YS42NjcuNjY3IDAgMCAwLS42NjcuNjY2djUuMDZMNS4xNCA0LjE5M2EuNjcuNjcgMCAwIDAtLjk0Ny45NDdsNS41MzMgNS41MjZoLTUuMDZhLjY2Ny42NjcgMCAxIDAgMCAxLjMzNGg2LjY2N2EuNjY3LjY2NyAwIDAgMCAuNjY3LS42NjdWNC42NjZBLjY2Ni42NjYgMCAwIDAgMTEuMzMzIDRaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk02IDYuNjY2aC42NjdhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM0g2YS42NjcuNjY3IDAgMCAwIDAgMS4zMzNaTTYgOGEuNjY3LjY2NyAwIDAgMCAwIDEuMzMzaDRBLjY2Ny42NjcgMCAwIDAgMTAgOEg2Wm03LjMzMy0yLjA0YS44OC44OCAwIDAgMC0uMDQtLjE4di0uMDZhLjcxNC43MTQgMCAwIDAtLjEyNy0uMTg3bC00LTRhLjcxMy43MTMgMCAwIDAtLjE4Ni0uMTI3LjIxMy4yMTMgMCAwIDAtLjA2IDAgLjU4Ny41ODcgMCAwIDAtLjIyLS4wNzNINC42NjdhMiAyIDAgMCAwLTIgMnY5LjMzM2EyIDIgMCAwIDAgMiAyaDYuNjY2YTIgMiAwIDAgMCAyLTJWNS45NlptLTQtMi4zNTQgMS43MjcgMS43MjdIMTBhLjY2Ny42NjcgMCAwIDEtLjY2Ny0uNjY3di0xLjA2Wk0xMiAxMi42NjZhLjY2Ny42NjcgMCAwIDEtLjY2Ny42NjdINC42NjZBLjY2Ni42NjYgMCAwIDEgNCAxMi42NjZWMy4zMzNhLjY2Ny42NjcgMCAwIDEgLjY2Ny0uNjY3SDh2MmEyIDIgMCAwIDAgMiAyaDJ2NlptLTItMkg2QS42NjcuNjY3IDAgMCAwIDYgMTJoNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzM0WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJtNi42NjYgMTEuNy0xLjE4IDEuMTQ3YTEuNjUgMS42NSAwIDAgMS0yLjMzMy0yLjMzM0w2LjE4IDcuNDhhMS42NCAxLjY0IDAgMCAxIDIuMjYtLjA2bC4wOC4wNjdhLjY2Ny42NjcgMCAwIDAgLjkzMy0uOTUzIDEuODM2IDEuODM2IDAgMCAwLS4xMi0uMTQgMi45NzMgMi45NzMgMCAwIDAtNC4wNi4xNDZMMi4yMDYgOS41NzRhMi45ODcgMi45ODcgMCAwIDAgNC4yMiA0LjIybDEuMTU0LTEuMTI3YS42NjcuNjY3IDAgMCAwLS45MTQtLjk2N1ptNy4xMjctOS40OTNhMi45OTMgMi45OTMgMCAwIDAtNC4yMiAwTDguNDIgMy4zMzRhLjY2Ny42NjcgMCAwIDAgLjkxMy45NjZsMS4xNTMtMS4xNDZhMS42NSAxLjY1IDAgMCAxIDIuMzM0IDIuMzMzTDkuNzkzIDguNTJhMS42NCAxLjY0IDAgMCAxLTIuMjYuMDZsLS4wOC0uMDY2YS42NjcuNjY3IDAgMCAwLS45MzMuOTUzIDIuOTggMi45OCAwIDAgMCA0LjIxMy0uMDA3bDMuMDMzLTMuMDMzYTIuOTkzIDIuOTkzIDAgMCAwIC4wMjctNC4yMlpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTkuMzMzIDcuMzM0aC0uNjY2di0uNjY3YS42NjcuNjY3IDAgMSAwLTEuMzM0IDB2LjY2N2gtLjY2NmEuNjY3LjY2NyAwIDAgMCAwIDEuMzMzaC42NjZ2LjY2N2EuNjY3LjY2NyAwIDAgMCAxLjMzNCAwdi0uNjY3aC42NjZhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM1ptNC4xMDctNEE0LjE5NCA0LjE5NCAwIDAgMCA4IDIuOTRhNC4xOCA0LjE4IDAgMCAwLTUuNDQgNi4zMmw0IDQuMDM0YTIgMiAwIDAgMCAyLjgyNyAwbDQtNC4wMzRhNC4xOCA0LjE4IDAgMCAwIC4wNTMtNS45MjZabS0uOTQgNC45NzMtNCA0YS42NjYuNjY2IDAgMCAxLS45NDcgMGwtNC00YTIuODYgMi44NiAwIDAgMSAwLTQgMi44NDcgMi44NDcgMCAwIDEgNCAwIC42NjcuNjY3IDAgMCAwIC45NDcgMCAyLjg0NyAyLjg0NyAwIDAgMSA0IDAgMi44NiAyLjg2IDAgMCAxIDAgNC4wMTN2LS4wMTNaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0zLjMzMyA1LjMzM2g5LjMzNGEuNjY3LjY2NyAwIDEgMCAwLTEuMzMzSDMuMzMzYS42NjcuNjY3IDAgMCAwIDAgMS4zMzNabTEwLjY2NyAySDJhLjY2Ny42NjcgMCAxIDAgMCAxLjMzNGgxMmEuNjY3LjY2NyAwIDAgMCAwLTEuMzM0Wm0tMS4zMzMgMy4zMzRIMy4zMzNhLjY2Ny42NjcgMCAxIDAgMCAxLjMzM2g5LjMzNGEuNjY2LjY2NiAwIDEgMCAwLTEuMzMzWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTAuNjY3IDkuMzMzSDUuMzMzYS42NjcuNjY3IDAgMCAwIDAgMS4zMzNoNS4zMzRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM1ptMC0yLjY2N2gtNGEuNjY3LjY2NyAwIDAgMCAwIDEuMzM0aDRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzNFptMi42NjYtNGgtMlYyQS42NjcuNjY3IDAgMSAwIDEwIDJ2LjY2Nkg4LjY2N1YyYS42NjcuNjY3IDAgMSAwLTEuMzM0IDB2LjY2Nkg2VjJhLjY2Ny42NjcgMCAwIDAtMS4zMzMgMHYuNjY2aC0yQS42NjcuNjY3IDAgMCAwIDIgMy4zMzN2OS4zMzNhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWMy4zMzNhLjY2Ni42NjYgMCAwIDAtLjY2Ny0uNjY3Wm0tLjY2NiAxMGEuNjY3LjY2NyAwIDAgMS0uNjY3LjY2N0g0YS42NjYuNjY2IDAgMCAxLS42NjctLjY2N1Y0aDEuMzM0di42NjZhLjY2Ny42NjcgMCAxIDAgMS4zMzMgMFY0aDEuMzMzdi42NjZhLjY2Ny42NjcgMCAwIDAgMS4zMzQgMFY0SDEwdi42NjZhLjY2Ni42NjYgMCAxIDAgMS4zMzMgMFY0aDEuMzM0djguNjY2WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTMuMDg3IDIuNDMzYS42NjcuNjY3IDAgMCAwLS41Ni0uMTMzIDUuMzMzIDUuMzMzIDAgMCAxLTQuMTQ3LS44NDcuNjY3LjY2NyAwIDAgMC0uNzYgMCA1LjMzMyA1LjMzMyAwIDAgMS00LjE0Ni44NDcuNjY3LjY2NyAwIDAgMC0uODA3LjY1M1Y3LjkyYTYgNiAwIDAgMCAyLjUxMyA0Ljg4NmwyLjQzNCAxLjczNGEuNjY3LjY2NyAwIDAgMCAuNzczIDBsMi40MzMtMS43MzRhNiA2IDAgMCAwIDIuNTE0LTQuODg2VjIuOTUzYS42NjcuNjY3IDAgMCAwLS4yNDctLjUyWk0xMiA3LjkyYTQuNjY2IDQuNjY2IDAgMCAxLTEuOTUzIDMuOEw4IDEzLjE4bC0yLjA0Ni0xLjQ2QTQuNjY3IDQuNjY3IDAgMCAxIDQgNy45MnYtNC4yYTYuNjY3IDYuNjY3IDAgMCAwIDQtLjkyNyA2LjY2NyA2LjY2NyAwIDAgMCA0IC45Mjd2NC4yWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNNy4zMzMgNy45MzN2My40YS42NjcuNjY3IDAgMSAwIDEuMzM0IDB2LTMuNGEzLjMzMyAzLjMzMyAwIDEgMC0xLjMzNCAwWk04IDIuNjY3YTIgMiAwIDEgMSAwIDQgMiAyIDAgMCAxIDAtNFptMi44MDcgNi45NDZhLjY4MS42ODEgMCAwIDAtLjI4IDEuMzM0YzEuNTEzLjMgMi4xNC44NCAyLjE0IDEuMDUzIDAgLjM4Ny0xLjYzNCAxLjMzMy00LjY2NyAxLjMzM1MzLjMzMyAxMi4zODcgMy4zMzMgMTJjMC0uMjEzLjYyNy0uNzUzIDIuMTQtMS4wOGEuNjgxLjY4MSAwIDAgMC0uMjgtMS4zMzNDMy4xNjcgMTAuMDUzIDIgMTAuOTI3IDIgMTJjMCAxLjc1MyAzLjAyIDIuNjY3IDYgMi42NjdzNi0uOTE0IDYtMi42NjdjMC0xLjA3My0xLjE2Ny0xLjk0Ny0zLjE5My0yLjM4N1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTIgMy4zMzNoMTJjLjQgMCAuNjY3LS4yNjYuNjY3LS42NjZTMTQuNCAyIDE0IDJIMmMtLjQgMC0uNjY3LjI2Ny0uNjY3LjY2N3MuMjY3LjY2Ni42NjcuNjY2Wm0xMiA5LjMzNEg3LjMzM2MtLjQgMC0uNjY2LjI2Ni0uNjY2LjY2NnMuMjY3LjY2Ny42NjcuNjY3SDE0Yy40IDAgLjY2Ny0uMjY3LjY2Ny0uNjY3cy0uMjY3LS42NjYtLjY2Ny0uNjY2Wm0wLTUuMzM0SDJjLS40IDAtLjY2Ny4yNjctLjY2Ny42NjdzLjI2Ny42NjcuNjY3LjY2N2gxMmMuNCAwIC42NjctLjI2Ny42NjctLjY2N1MxNC40IDcuMzMzIDE0IDcuMzMzWk0xNCAxMEgyYy0uNCAwLS42NjcuMjY3LS42NjcuNjY3cy4yNjcuNjY2LjY2Ny42NjZoMTJjLjQgMCAuNjY3LS4yNjYuNjY3LS42NjZTMTQuNCAxMCAxNCAxMFptMC01LjMzM0gyYy0uNCAwLS42NjcuMjY2LS42NjcuNjY2UzEuNiA2IDIgNmgxMmMuNCAwIC42NjctLjI2Ny42NjctLjY2N1MxNC40IDQuNjY3IDE0IDQuNjY3WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJtMTMuMzMzIDUuMzMzLTQtMy41MDZhMiAyIDAgMCAwLTIuNjY2IDBsLTQgMy41MDZBMiAyIDAgMCAwIDIgNi44NHY1LjgyN2EyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlY2LjgzM2EyIDIgMCAwIDAtLjY2Ny0xLjVabS00IDhINi42NjdWMTBhLjY2Ny42NjcgMCAwIDEgLjY2Ni0uNjY3aDEuMzM0YS42NjcuNjY3IDAgMCAxIC42NjYuNjY3djMuMzMzWm0zLjMzNC0uNjY2YS42NjcuNjY3IDAgMCAxLS42NjcuNjY2aC0xLjMzM1YxMGEyIDIgMCAwIDAtMi0ySDcuMzMzYTIgMiAwIDAgMC0yIDJ2My4zMzNINGEuNjY3LjY2NyAwIDAgMS0uNjY3LS42NjZWNi44MzNhLjY2Ny42NjcgMCAwIDEgLjIyNy0uNWw0LTMuNWEuNjY3LjY2NyAwIDAgMSAuODggMGw0IDMuNWEuNjY3LjY2NyAwIDAgMSAuMjI3LjV2NS44MzRaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMC42NjcgOS4zMzNINS4zMzNhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM2g1LjMzNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzMzWm0wLTIuNjY3aC00YS42NjcuNjY3IDAgMCAwIDAgMS4zMzRoNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzM0Wm0yLjY2Ni00aC0yVjJBLjY2Ny42NjcgMCAxIDAgMTAgMnYuNjY2SDguNjY3VjJhLjY2Ny42NjcgMCAxIDAtMS4zMzQgMHYuNjY2SDZWMmEuNjY3LjY2NyAwIDAgMC0xLjMzMyAwdi42NjZoLTJBLjY2Ny42NjcgMCAwIDAgMiAzLjMzM3Y5LjMzM2EyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYzLjMzM2EuNjY2LjY2NiAwIDAgMC0uNjY3LS42NjdabS0uNjY2IDEwYS42NjcuNjY3IDAgMCAxLS42NjcuNjY3SDRhLjY2Ni42NjYgMCAwIDEtLjY2Ny0uNjY3VjRoMS4zMzR2LjY2NmEuNjY3LjY2NyAwIDEgMCAxLjMzMyAwVjRoMS4zMzN2LjY2NmEuNjY3LjY2NyAwIDAgMCAxLjMzNCAwVjRIMTB2LjY2NmEuNjY2LjY2NiAwIDEgMCAxLjMzMyAwVjRoMS4zMzR2OC42NjZaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE3XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk04IDguNWEyIDIgMCAxIDAgMCA0IDIgMiAwIDAgMCAwLTRabTAgMi42NjZhLjY2Ny42NjcgMCAxIDEgMC0xLjMzNC42NjcuNjY3IDAgMCAxIDAgMS4zMzRabS0uNDczLTQuMTkzYy4wNjMuMDYuMTM4LjEwOC4yMi4xNGEuNjI3LjYyNyAwIDAgMCAuNTA3IDAgLjY2Ny42NjcgMCAwIDAgLjIyLS4xNEwxMCA1LjQ3M2EuNjg4LjY4OCAwIDEgMC0uOTczLS45NzNsLS4zNi4zOTNWMi41YS42NjcuNjY3IDAgMCAwLTEuMzMzIDB2Mi4zOTNsLS4zNi0uMzkzQS42ODguNjg4IDAgMCAwIDYgNS40NzNsMS41MjcgMS41Wm01LjE0IDMuNTI3YS42NjYuNjY2IDAgMSAwLTEuMzMyIDAgLjY2Ni42NjYgMCAwIDAgMS4zMzIgMFptLjY2Ny00LjY2N2gtMmEuNjY2LjY2NiAwIDEgMCAwIDEuMzMzaDJhLjY2Ny42NjcgMCAwIDEgLjY2Ni42Njd2NS4zMzNhLjY2Ny42NjcgMCAwIDEtLjY2Ni42NjdIMi42NjdBLjY2Ni42NjYgMCAwIDEgMiAxMy4xNjZWNy44MzNhLjY2Ny42NjcgMCAwIDEgLjY2Ny0uNjY3aDJhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM2gtMmEyIDIgMCAwIDAtMiAydjUuMzMzYTIgMiAwIDAgMCAyIDJoMTAuNjY3YTIgMiAwIDAgMCAyLTJWNy44MzNhMiAyIDAgMCAwLTItMlptLTEwIDQuNjY3YS42NjcuNjY3IDAgMSAwIDEuMzM0IDAgLjY2Ny42NjcgMCAwIDAtMS4zMzQgMFpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTYgNi42NjZoLjY2N2EuNjY3LjY2NyAwIDAgMCAwLTEuMzMzSDZhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM1pNMTAgOEg2YS42NjcuNjY3IDAgMSAwIDAgMS4zMzNoNEEuNjY3LjY2NyAwIDEgMCAxMCA4Wm0wIDIuNjY2SDZBLjY2Ny42NjcgMCAwIDAgNiAxMmg0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzRabTMuMTQgMi44NmExLjA4NSAxLjA4NSAwIDAgMC0uMS0uMDguNTA3LjUwNyAwIDAgMC0uMTItLjA2bC0uMTItLjA1M2EuNjY3LjY2NyAwIDAgMC0uMzg2LjA0LjU5OS41OTkgMCAwIDAtLjM2LjM2QS41Ni41NiAwIDAgMCAxMiAxNGEuNjY4LjY2OCAwIDEgMCAxLjI4LS4yNTQuNzY2Ljc2NiAwIDAgMC0uMTQtLjIyWm0uMTk0LTcuNTY2YS44OC44OCAwIDAgMC0uMDQtLjE4di0uMDZhLjcxNi43MTYgMCAwIDAtLjEyNy0uMTg3bC00LTRhLjcxMy43MTMgMCAwIDAtLjE4Ny0uMTI3LjIxMy4yMTMgMCAwIDAtLjA2IDAgLjU4Ny41ODcgMCAwIDAtLjIyLS4wNzNINC42NjdhMiAyIDAgMCAwLTIgMnY5LjMzM2EyIDIgMCAwIDAgMiAySDEwYS42NjcuNjY3IDAgMSAwIDAtMS4zMzNINC42NjdBLjY2Ni42NjYgMCAwIDEgNCAxMi42NjZWMy4zMzNhLjY2Ny42NjcgMCAwIDEgLjY2Ny0uNjY3SDh2MmEyIDIgMCAwIDAgMiAyaDJWOGEuNjY3LjY2NyAwIDAgMCAxLjMzNCAwVjUuOTZaTTEwIDUuMzMzYS42NjcuNjY3IDAgMCAxLS42NjYtLjY2N3YtMS4wNmwxLjcyNiAxLjcyN0gxMFpNMTIuNjY3IDEwYS42NjcuNjY3IDAgMCAwLS42NjcuNjY2VjEyYS42NjcuNjY3IDAgMCAwIDEuMzM0IDB2LTEuMzM0YS42NjcuNjY3IDAgMCAwLS42NjctLjY2NlpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwibTE0LjIxMyAzLjM2Ny00LTEuMzMzaC0uMDQ2YS40NjYuNDY2IDAgMCAwLS4wOTQgMGgtLjI4Nkw2IDMuMzM0bC0zLjc4Ny0xLjNhLjY2Ny42NjcgMCAwIDAtLjYuMDkzLjY2Ny42NjcgMCAwIDAtLjI4LjU0VjEyYS42NjYuNjY2IDAgMCAwIC40NTQuNjMzbDQgMS4zMzRhLjY2Ny42NjcgMCAwIDAgLjQxMyAwTDEwIDEyLjdsMy43ODcgMS4zYy4wNy4wMS4xNDIuMDEuMjEzIDBhLjYyNi42MjYgMCAwIDAgLjM4Ny0uMTI3LjY2Ni42NjYgMCAwIDAgLjI4LS41NFY0YS42NjcuNjY3IDAgMCAwLS40NTQtLjYzM1ptLTguODggOS4wNC0yLjY2Ni0uODg3VjMuNTk0bDIuNjY3Ljg4NnY3LjkyN1ptNC0uODg3LTIuNjY2Ljg4N1Y0LjQ4bDIuNjY3LS44ODZ2Ny45MjZabTQgLjg4Ny0yLjY2Ni0uODg3VjMuNTk0bDIuNjY3Ljg4NnY3LjkyN1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEzLjY0IDYuNDJhNS42NjYgNS42NjYgMCAwIDAtOC43NzMtNC4xOEE1LjcwNyA1LjcwNyAwIDAgMCAyLjM2IDYuNDIgNS42NCA1LjY0IDAgMCAwIDQgMTAuOTczbDMuNTMzIDMuNTRhLjY2Ni42NjYgMCAwIDAgLjk0NyAwbDMuNTItMy41NGE1LjYzOCA1LjYzOCAwIDAgMCAxLjY0LTQuNTUzWm0tMi41NzMgMy42MTNMOCAxMy4xbC0zLjA2Ny0zLjA2N2E0LjMyNyA0LjMyNyAwIDAgMS0xLjI0Ni0zLjQ4IDQuMzggNC4zOCAwIDAgMSAxLjkyNi0zLjIyQTQuMzEzIDQuMzEzIDAgMCAxIDExLjcxIDQuNzJjLjMzNC41NTUuNTQgMS4xNzYuNjA0IDEuODJhNC4zMjYgNC4zMjYgMCAwIDEtMS4yNDYgMy40OTNaTTggNGEzIDMgMCAxIDAgMyAzIDMuMDA3IDMuMDA3IDAgMCAwLTMtM1ptMCA0LjY2NmExLjY2NyAxLjY2NyAwIDEgMSAwLTMuMzMzIDEuNjY3IDEuNjY3IDAgMCAxIDAgMy4zMzNaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk00LjY2NyAxMC42NjZhMSAxIDAgMCAwIDEtMSAuNTE0LjUxNCAwIDAgMCAwLS4xbDEuODYtMS44NmguMzA2TDguOTA3IDguNzh2LjA1M2ExIDEgMCAxIDAgMiAwVjguNzhsMi40MjYtMi40NDdhMSAxIDAgMSAwLTEtMSAuNTIyLjUyMiAwIDAgMCAwIC4xTDkuOTI3IDcuODRIOS44Mkw4LjY2NyA2LjY2NmExIDEgMCAwIDAtMiAwbC0yIDJhMSAxIDAgMCAwIDAgMlptOSAyLjY2N0gyLjMzM1YyQS42NjcuNjY3IDAgMSAwIDEgMnYxMmEuNjY3LjY2NyAwIDAgMCAuNjY3LjY2NmgxMmEuNjY3LjY2NyAwIDAgMCAwLTEuMzMzWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDEyIDE1XFxcIj48cGF0aCBkPVxcXCJtNi4xNCAxMC43NDIuMDIuMDU4LjAwNy4wMXYuMDM2YS4wNi4wNiAwIDAgMS0uMDA2LjAyN2wtLjAxLjAyMi0uMDA4LjAyMWEuMS4xIDAgMCAxLS4wNi4wNmwtLjAyMi4wMDgtLjAyMS4wMWEuMDYuMDYgMCAwIDEtLjAyNy4wMDZoLS4wMDZhLjE2Ni4xNjYgMCAwIDEtLjEwNi0uMDQuMjY2LjI2NiAwIDAgMS0uMDQtLjA2NmwtLjAwNC0uMDEtLjAwNS0uMDFhLjA2LjA2IDAgMCAxLS4wMDUtLjAyOHYtLjAyM2wtLjAwMS0uMDIzLS4wMDEtLjAxOC4wMDMtLjAwNy4wMTItLjAzM2EuNTc2LjU3NiAwIDAgMSAuMDIzLS4wMy4xNjYuMTY2IDAgMCAxIC4wNDQtLjAyNmwuMDE0LS4wMDVhLjE2Ny4xNjcgMCAwIDEgLjA5Ni0uMDFsLjA5NC0uNDkxLS4wOTQuNDlhLjE2Ni4xNjYgMCAwIDEgLjA3Ny4wMzhjLjAwOS4wMS4wMTguMDIyLjAyNi4wMzRabS42OTMtOS4zMzUgMy45NjMgMy45NjMuMDIzLjA3YS4zNy4zNyAwIDAgMSAuMDE0LjA1NHY2LjY3M2ExLjUgMS41IDAgMCAxLTEuNSAxLjVIMi42NjdhMS41IDEuNSAwIDAgMS0xLjA2MS0uNDRsLS4zNDguMzQ4LjM0OC0uMzQ4YTEuNSAxLjUgMCAwIDEtLjQ0LTEuMDZWMi44MzNhMS41IDEuNSAwIDAgMSAxLjUtMS41aDMuOTlsLjAxNS4wMDcuMTE2LjA2N2guMDQ2Wm0uODU0IDEuMzQ2TDYuODMzIDEuOXYyLjI2N0ExLjE2NyAxLjE2NyAwIDAgMCA4IDUuMzMzaDIuMjY3bC0uODUzLS44NTMtMS43MjctMS43MjdaTTYuNSAyLjE2N3YtLjVIMi42NjdBMS4xNjcgMS4xNjcgMCAwIDAgMS41IDIuODMzdjkuMzM0YTEuMTY3IDEuMTY3IDAgMCAwIDEuMTY3IDEuMTY2aDYuNjY2YTEuMTY3IDEuMTY3IDAgMCAwIDEuMTY3LTEuMTY2di02LjVIOGExLjUgMS41IDAgMCAxLTEuNS0xLjV2LTJabS0uNjE4IDUuMjE1YS4xNjcuMTY3IDAgMCAxIC4yODUuMTE4djEuMzMzYS4xNjcuMTY3IDAgMCAxLS4zMzQgMFY3LjVjMC0uMDQ0LjAxOC0uMDg3LjA1LS4xMThaXFxcIiBmaWxsPVxcXCJDdXJyZW50Q29sb3JcXFwiIHN0cm9rZT1cXFwiQ3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTMuMDg3IDIuNDMzYS42NjcuNjY3IDAgMCAwLS41Ni0uMTMzIDUuMzMzIDUuMzMzIDAgMCAxLTQuMTQ3LS44NDcuNjY3LjY2NyAwIDAgMC0uNzYgMCA1LjMzMyA1LjMzMyAwIDAgMS00LjE0Ni44NDcuNjY3LjY2NyAwIDAgMC0uODA3LjY1M1Y3LjkyYTYgNiAwIDAgMCAyLjUxMyA0Ljg4NmwyLjQzNCAxLjczNGEuNjY3LjY2NyAwIDAgMCAuNzczIDBsMi40MzMtMS43MzRhNiA2IDAgMCAwIDIuNTE0LTQuODg2VjIuOTUzYS42NjcuNjY3IDAgMCAwLS4yNDctLjUyWk0xMiA3LjkyYTQuNjY2IDQuNjY2IDAgMCAxLTEuOTUzIDMuOEw4IDEzLjE4bC0yLjA0Ni0xLjQ2QTQuNjY3IDQuNjY3IDAgMCAxIDQgNy45MnYtNC4yYTYuNjY3IDYuNjY3IDAgMCAwIDQtLjkyNyA2LjY2NyA2LjY2NyAwIDAgMCA0IC45Mjd2NC4yWk05LjAyNyA2LjM5M2wtMS43OTMgMS44LS41OTQtLjZhLjY3LjY3IDAgMCAwLS45NDYuOTQ3TDYuNzYgOS42MDZhLjY2Ny42NjcgMCAwIDAgLjk0NyAwTDEwIDcuMzMzYS42Ny42NyAwIDEgMC0uOTQ2LS45NDdsLS4wMjcuMDA3WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAyMCAyMFxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMy42MzQgMTcuOWEuNS41IDAgMCAxLS41MjQuMDQ3bC0uMTQ5LjI5Ny4xNDktLjI5N2EuNS41IDAgMCAxLS4yMDItLjE4NGwtLjI4My4xNzQuMjgzLS4xNzRhLjUuNSAwIDAgMS0uMDc1LS4yNjN2LTE1YS41LjUgMCAwIDEgLjUtLjVoMTMuMzM0YS41LjUgMCAwIDEgLjUuNXYxNC45OTlhLjUuNSAwIDAgMS0uMjc1LjQ0NWgtLjAwMWEuNS41IDAgMCAxLS41MjUtLjA0NWwtMS43MjQtMS4yOS0uMi0uMTUtLjIuMTUtMS43MTcgMS4yOTFhLjUuNSAwIDAgMS0uNiAwTDEwLjIgMTYuNjA4bC0uMi0uMTUtLjIuMTVMOC4wNzUgMTcuOWEuNS41IDAgMCAxLS42IDBsLTEuNzE2LTEuMjkxLS4yLS4xNS0uMi4xNS0xLjcyNSAxLjI5Wm0xMi0xLjguNTMzLjM5OVYzSDMuODMzdjEzLjQ5OWwuNTMzLS4zOTkuODkyLS42NjZhLjUuNSAwIDAgMSAuNiAwbDEuNzE3IDEuMjkuMi4xNTEuMi0uMTVMOS43IDE1LjQzM2EuNS41IDAgMCAxIC42IDBsMS43MjUgMS4yOTIuMi4xNS4yLS4xNSAxLjcxNy0xLjI5MmEuNS41IDAgMCAxIC42IDBsLjg5Mi42NjdabS0yLjMtOS43NjdoLTVhLjUuNSAwIDAgMSAwLTFoNWEuNS41IDAgMCAxIDAgMVptMCAzLjMzNEg2LjY2NmEuNS41IDAgMCAxIDAtMWg2LjY2NmEuNS41IDAgMCAxIDAgMVptMCAzLjMzM0g2LjY2NmEuNS41IDAgMCAxIDAtMWg2LjY2NmEuNS41IDAgMSAxIDAgMVpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjY2N1xcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTggNy4yYTEuMzMzIDEuMzMzIDAgMSAwIDAtMi42NjdBMS4zMzMgMS4zMzMgMCAwIDAgOCA3LjJabS0uNDczIDQuNjA2YS42NjYuNjY2IDAgMCAwIC45NDYgMEwxMS4yIDkuMDczYTQuNTI3IDQuNTI3IDAgMSAwLTYuNCAwbDIuNzI3IDIuNzMzWk00LjgyIDUuNTZhMy4yMDcgMy4yMDcgMCAwIDEgMS40Mi0yLjM2NyAzLjIwNyAzLjIwNyAwIDAgMSAzLjUyIDAgMy4yMTMgMy4yMTMgMCAwIDEgLjUgNC45NEw4IDEwLjM5M2wtMi4yNi0yLjI2YTMuMTggMy4xOCAwIDAgMS0uOTItMi41NzNabTcuODQ2IDcuNzczSDMuMzMzYS42NjcuNjY3IDAgMSAwIDAgMS4zMzNoOS4zMzRhLjY2Ni42NjYgMCAxIDAgMC0xLjMzM1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTQuNjY2IDRhLjY2Ny42NjcgMCAxIDAgMCAxLjMzMy42NjcuNjY3IDAgMCAwIDAtMS4zMzNabTkuODA3IDMuODUzLTYuMzItNi4zMDdhLjY2Ny42NjcgMCAwIDAtLjQ4Ny0uMjEzaC00YS42NjcuNjY3IDAgMCAwLS40NzMuMTkzbC0xLjY2NyAxLjY2YS42NjcuNjY3IDAgMCAwLS4xOTMuNDc0djRhLjcuNyAwIDAgMCAuMTkzLjQ3M2w2LjMyNyA2LjMzM2EuNy43IDAgMCAwIC40NzMuMTk0LjY2Ni42NjYgMCAwIDAgLjQ3NC0uMTk0bDUuNjczLTUuNjczYS42NjcuNjY3IDAgMCAwIDAtLjk0Wk04LjMyNiAxMy4wNmwtNS42Ni01LjY2N3YtMy40NmwxLjI2Ny0xLjI2N2gzLjQ1M2w1LjY2NyA1LjY2LTQuNzI3IDQuNzM0WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTAuNjY3IDkuMzMzSDUuMzMzYS42NjcuNjY3IDAgMCAwIDAgMS4zMzNoNS4zMzRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM1ptMC0yLjY2N2gtNGEuNjY3LjY2NyAwIDAgMCAwIDEuMzM0aDRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzNFptMi42NjYtNGgtMlYyQS42NjcuNjY3IDAgMSAwIDEwIDJ2LjY2Nkg4LjY2N1YyYS42NjcuNjY3IDAgMSAwLTEuMzM0IDB2LjY2Nkg2VjJhLjY2Ny42NjcgMCAwIDAtMS4zMzMgMHYuNjY2aC0yQS42NjcuNjY3IDAgMCAwIDIgMy4zMzN2OS4zMzNhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWMy4zMzNhLjY2Ni42NjYgMCAwIDAtLjY2Ny0uNjY3Wm0tLjY2NiAxMGEuNjY3LjY2NyAwIDAgMS0uNjY3LjY2N0g0YS42NjYuNjY2IDAgMCAxLS42NjctLjY2N1Y0aDEuMzM0di42NjZhLjY2Ny42NjcgMCAxIDAgMS4zMzMgMFY0aDEuMzMzdi42NjZhLjY2Ny42NjcgMCAwIDAgMS4zMzQgMFY0SDEwdi42NjZhLjY2Ni42NjYgMCAxIDAgMS4zMzMgMFY0aDEuMzM0djguNjY2WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNNi42NjcgNS4zMzNoNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzMzaC00YS42NjcuNjY3IDAgMCAwIDAgMS4zMzNaTTUuMzMzIDhoNS4zMzRhLjY2Ny42NjcgMCAwIDAgMC0xLjMzNEg1LjMzM2EuNjY3LjY2NyAwIDAgMCAwIDEuMzM0Wm0wIDIuNjY2aDUuMzM0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNINS4zMzNhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM1ptOC05LjMzM0gyLjY2N0EuNjY3LjY2NyAwIDAgMCAyIDJ2MTJhLjY2Ny42NjcgMCAwIDAgMS4wNjcuNTMzbDEuMzgtMS4wMzMgMS4zNzMgMS4wMzNhLjY2Ni42NjYgMCAwIDAgLjggMEw4IDEzLjVsMS4zOCAxLjAzM2EuNjY2LjY2NiAwIDAgMCAuOCAwbDEuMzczLTEuMDMzIDEuMzggMS4wMzNBLjY2Ny42NjcgMCAwIDAgMTQgMTRWMmEuNjY2LjY2NiAwIDAgMC0uNjY3LS42NjdabS0uNjY2IDExLjMzMy0uNzE0LS41MzNhLjY2Ny42NjcgMCAwIDAtLjggMEw5Ljc4IDEzLjE2NiA4LjQgMTIuMTMzYS42NjcuNjY3IDAgMCAwLS44IDBsLTEuMzggMS4wMzMtMS4zNzMtMS4wMzNhLjY2Ny42NjcgMCAwIDAtLjggMGwtLjcxNC41MzN2LTEwaDkuMzM0djEwWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxOCAxOFxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cmVjdCB3aWR0aD1cXFwiMThcXFwiIGhlaWdodD1cXFwiMThcXFwiIHJ4PVxcXCI5XFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48cGF0aCBkPVxcXCJNMiA5YTcgNyAwIDEgMSAxNCAwQTcgNyAwIDEgMSAyIDlaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48cGF0aCBkPVxcXCJNMTMuMDgzIDguNDE2aC0zLjV2LTMuNWEuNTgzLjU4MyAwIDAgMC0xLjE2NyAwdjMuNWgtMy41YS41ODMuNTgzIDAgMCAwIDAgMS4xNjdoMy41djMuNWEuNTgzLjU4MyAwIDAgMCAxLjE2NyAwdi0zLjVoMy41YS41ODMuNTgzIDAgMCAwIDAtMS4xNjdaXFxcIiBmaWxsPVxcXCIjZmZmXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNyAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTIuOTM1IDcuMzMzaC00di00YS42NjcuNjY3IDAgMSAwLTEuMzMzIDB2NGgtNGEuNjY3LjY2NyAwIDAgMCAwIDEuMzM0aDR2NGEuNjY3LjY2NyAwIDEgMCAxLjMzNCAwdi00aDRhLjY2Ny42NjcgMCAxIDAgMC0xLjMzNFpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMjAgMjBcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEwIDVhMSAxIDAgMCAwLTEgMXY0YTEgMSAwIDEgMCAyIDBWNmExIDEgMCAwIDAtMS0xWm0uOTIgOC42MmEuNzU4Ljc1OCAwIDAgMC0uMDktLjE4bC0uMTItLjE1YS45OTkuOTk5IDAgMCAwLTEuMDktLjIxIDEuMTUgMS4xNSAwIDAgMC0uMzMuMjEgMSAxIDAgMCAwLS4yMSAxLjA5LjkuOSAwIDAgMCAuNTQuNTQuOTQuOTQgMCAwIDAgLjc2IDAgLjkuOSAwIDAgMCAuNTQtLjU0Yy4wNTEtLjEyLjA3OC0uMjUuMDgtLjM4YTEuMzYyIDEuMzYyIDAgMCAwIDAtLjIuNjM5LjYzOSAwIDAgMC0uMDgtLjE4Wk0xMCAwYTEwIDEwIDAgMSAwIDAgMjAgMTAgMTAgMCAwIDAgMC0yMFptMCAxOGE4IDggMCAxIDEgMC0xNiA4IDggMCAwIDEgMCAxNlpcXFwiIGZpbGw9XFxcIiNGNkMzOThcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDIxIDIwXFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMC40NjQgMS42NjdDNS44OCAxLjY2NyAyLjEzIDUuNDE3IDIuMTMgMTBjMCA0LjU4NCAzLjc1IDguMzM0IDguMzMzIDguMzM0czguMzMzLTMuNzUgOC4zMzMtOC4zMzRjMC00LjU4My0zLjc1LTguMzMzLTguMzMzLTguMzMzWm0wIDEyLjVjLS41IDAtLjgzMy0uMzMzLS44MzMtLjgzMyAwLS41LjMzMy0uODM0LjgzMy0uODM0LjUgMCAuODMzLjMzNC44MzMuODM0IDAgLjUtLjMzMy44MzMtLjgzMy44MzNaTTExLjI5NyAxMGMwIC41LS4zMzMuODM0LS44MzMuODM0LS41IDAtLjgzMy0uMzM0LS44MzMtLjgzNFY2LjY2N2MwLS41LjMzMy0uODMzLjgzMy0uODMzLjUgMCAuODMzLjMzMy44MzMuODMzVjEwWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMy4zMzMgNS4zMzNoOS4zMzRhLjY2Ny42NjcgMCAxIDAgMC0xLjMzM0gzLjMzM2EuNjY3LjY2NyAwIDAgMCAwIDEuMzMzWm0xMC42NjcgMkgyYS42NjcuNjY3IDAgMSAwIDAgMS4zMzRoMTJhLjY2Ny42NjcgMCAwIDAgMC0xLjMzNFptLTEuMzMzIDMuMzM0SDMuMzMzYS42NjcuNjY3IDAgMSAwIDAgMS4zMzNoOS4zMzRhLjY2Ni42NjYgMCAxIDAgMC0xLjMzM1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTIgMy4zMzNoMTJjLjQgMCAuNjY3LS4yNjYuNjY3LS42NjZTMTQuNCAyIDE0IDJIMmMtLjQgMC0uNjY3LjI2Ny0uNjY3LjY2N3MuMjY3LjY2Ni42NjcuNjY2Wm0xMiA5LjMzNEg3LjMzM2MtLjQgMC0uNjY2LjI2Ni0uNjY2LjY2NnMuMjY3LjY2Ny42NjcuNjY3SDE0Yy40IDAgLjY2Ny0uMjY3LjY2Ny0uNjY3cy0uMjY3LS42NjYtLjY2Ny0uNjY2Wm0wLTUuMzM0SDJjLS40IDAtLjY2Ny4yNjctLjY2Ny42NjdzLjI2Ny42NjcuNjY3LjY2N2gxMmMuNCAwIC42NjctLjI2Ny42NjctLjY2N1MxNC40IDcuMzMzIDE0IDcuMzMzWk0xNCAxMEgyYy0uNCAwLS42NjcuMjY3LS42NjcuNjY3cy4yNjcuNjY2LjY2Ny42NjZoMTJjLjQgMCAuNjY3LS4yNjYuNjY3LS42NjZTMTQuNCAxMCAxNCAxMFptMC01LjMzM0gyYy0uNCAwLS42NjcuMjY2LS42NjcuNjY2UzEuNiA2IDIgNmgxMmMuNCAwIC42NjctLjI2Ny42NjctLjY2N1MxNC40IDQuNjY3IDE0IDQuNjY3WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIj48cGF0aCBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIGQ9XFxcIm05LjUyNyA5LjQ2LTIuMTk0IDIuMTk0LS44Ni0uODZhLjY2OC42NjggMCAxIDAtLjk0Ni45NGwxLjMzMyAxLjMzM2EuNjY2LjY2NiAwIDAgMCAuOTQ3IDBsMi42NjYtMi42NjdhLjY2Ny42NjcgMCAxIDAtLjk0Ni0uOTRabTIuNzUzLTMuOTEzYTQuNjY3IDQuNjY3IDAgMCAwLTguOTA3IDEuMjY3IDIuNjY3IDIuNjY3IDAgMCAwLS4yNTMgNS4xLjY2OC42NjggMCAxIDAgLjQyNy0xLjI0NyAxLjMzMyAxLjMzMyAwIDAgMS0uODgtMS4yNjdBMS4zMzMgMS4zMzMgMCAwIDEgNCA4LjA2N2EuNjY3LjY2NyAwIDAgMCAuNjY3LS42NjcgMy4zMzMgMy4zMzMgMCAwIDEgNi40ODYtMS4wNjYuNjY4LjY2OCAwIDAgMCAuNTIuNDQgMiAyIDAgMCAxIC4xNiAzLjg5M0EuNjcyLjY3MiAwIDEgMCAxMiAxMmguMTY3YTMuMzMzIDMuMzMzIDAgMCAwIC4xMTMtNi40MTN2LS4wNFpcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDIwIDIwXFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xNC4xNjcgNy42NGEuODM0LjgzNCAwIDAgMC0xLjE3NSAwTDEwIDEwLjU5IDcuMDUgNy42NGEuODMzLjgzMyAwIDEgMC0xLjE3NSAxLjE4NGwzLjUzNCAzLjUzM2EuODMzLjgzMyAwIDAgMCAxLjE4MyAwbDMuNTc1LTMuNTMzYS44MzMuODMzIDAgMCAwIDAtMS4xODNaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDggMTJcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTggMS4wNTQgNi44MDUgMCAwIDZsNi44MDUgNkw4IDEwLjk0NyAyLjM5IDYgOCAxLjA1NFpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgOCAxMlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMCAxLjA1NCAxLjE5NSAwIDggNmwtNi44MDUgNkwwIDEwLjk0NyA1LjYxIDYgMCAxLjA1NFpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAxOFxcXCI+PHBhdGggZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIiBkPVxcXCJNNC4zMTEgNy40MyAzLjc0IDhoMTAuOTI2YTEgMSAwIDAgMSAwIDJIMy43NGwuNTcxLjU2OSA0LjQgNC4zODdhLjk5OS45OTkgMCAwIDEgMCAxLjQybC0uMDAxLjAwMmExLjAwMSAxLjAwMSAwIDAgMS0xLjQyIDBoLS4wMDFMLjYyNSA5LjcxMmExIDEgMCAwIDEtLjIwOC0uMzI3TC40MTUgOS4zOGExIDEgMCAwIDEgMC0uNzZsLjAwMi0uMDA3YTEgMSAwIDAgMSAuMjA4LS4zMjdsNi42NjQtNi42NjRBMS4wMDUgMS4wMDUgMCAxIDEgOC43MSAzLjA0NEw0LjMxIDcuNDNaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE3IDE2XFxcIj48cGF0aCBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIGQ9XFxcIk01Ljk1NSAxMC4zMzNoNC42N2wtMi4zMzYgMi4yNTMtMi4zMzQtMi4yNTNabTEuODQ0IDMuMTk0Yy4yNy4yNi43MDQuMjYuOTc0IDBsMy4xNy0zLjA2Yy40MzYtLjQxNC4xMzItMS4xMzQtLjQ4My0xLjEzNEg1LjEyNmMtLjYxNSAwLS45MjYuNzItLjQ5IDEuMTRsMy4xNjMgMy4wNTNabS0yLjY4LTYuODZoNi4zNDFjLjYxNSAwIC45MjYtLjcyLjQ5LTEuMTRsLTMuMTctMy4wNmEuNzA2LjcwNiAwIDAgMC0uOTc0IDBsLTMuMTcgMy4wNmMtLjQzNi40Mi0uMTMyIDEuMTQuNDgzIDEuMTRaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAyMCAyMFxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMy42MzQgMTcuOWEuNS41IDAgMCAxLS41MjQuMDQ3bC0uMTQ5LjI5Ny4xNDktLjI5N2EuNS41IDAgMCAxLS4yMDItLjE4NGwtLjI4My4xNzQuMjgzLS4xNzRhLjUuNSAwIDAgMS0uMDc1LS4yNjN2LTE1YS41LjUgMCAwIDEgLjUtLjVoMTMuMzM0YS41LjUgMCAwIDEgLjUuNXYxNC45OTlhLjUuNSAwIDAgMS0uMjc1LjQ0NWgtLjAwMWEuNS41IDAgMCAxLS41MjUtLjA0NWwtMS43MjQtMS4yOS0uMi0uMTUtLjIuMTUtMS43MTcgMS4yOTFhLjUuNSAwIDAgMS0uNiAwTDEwLjIgMTYuNjA4bC0uMi0uMTUtLjIuMTVMOC4wNzUgMTcuOWEuNS41IDAgMCAxLS42IDBsLTEuNzE2LTEuMjkxLS4yLS4xNS0uMi4xNS0xLjcyNSAxLjI5Wm0xMi0xLjguNTMzLjM5OVYzSDMuODMzdjEzLjQ5OWwuNTMzLS4zOTkuODkyLS42NjZhLjUuNSAwIDAgMSAuNiAwbDEuNzE3IDEuMjkuMi4xNTEuMi0uMTVMOS43IDE1LjQzM2EuNS41IDAgMCAxIC42IDBsMS43MjUgMS4yOTIuMi4xNS4yLS4xNSAxLjcxNy0xLjI5MmEuNS41IDAgMCAxIC42IDBsLjg5Mi42NjdabS0yLjMtOS43NjdoLTVhLjUuNSAwIDAgMSAwLTFoNWEuNS41IDAgMCAxIDAgMVptMCAzLjMzNEg2LjY2NmEuNS41IDAgMCAxIDAtMWg2LjY2NmEuNS41IDAgMCAxIDAgMVptMCAzLjMzM0g2LjY2NmEuNS41IDAgMCAxIDAtMWg2LjY2NmEuNS41IDAgMSAxIDAgMVpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjY2N1xcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEzLjY0NyA0LjkxM1Y0Ljg2bC0uMDQtLjFhLjQ2Ni40NjYgMCAwIDAtLjA0Ny0uMDYuNjIzLjYyMyAwIDAgMC0uMDYtLjA4bC0uMDYtLjA0Ny0uMTA3LS4wNTMtNS0zLjA4N2EuNjY3LjY2NyAwIDAgMC0uNzA2IDBMMi42NjcgNC41MmwtLjA2LjA1My0uMDYuMDQ3YS42MjcuNjI3IDAgMCAwLS4wNi4wOC40NzMuNDczIDAgMCAwLS4wNDcuMDZsLS4wNC4xdi4wNTNhLjc2Ny43NjcgMCAwIDAgMCAuMTc0djUuODI2YS42NjcuNjY3IDAgMCAwIC4zMTMuNTY3bDUgMy4wODdjLjAzMS4wMTkuMDY1LjAzMi4xLjA0aC4wNTRhLjU3NC41NzQgMCAwIDAgLjM0NiAwaC4wNTRhLjMxNC4zMTQgMCAwIDAgLjEtLjA0bDQuOTY2LTMuMDg3YS42NjguNjY4IDAgMCAwIC4zMTQtLjU2N1Y1LjA4N2EuNzYxLjc2MSAwIDAgMCAwLS4xNzRabS02LjMxNCA3Ljg5NEwzLjY2NyAxMC41NFY2LjI4N2wzLjY2NiAyLjI2djQuMjZaTTggNy4zOTMgNC4yNjcgNS4wODcgOCAyLjc4N2wzLjczMyAyLjNMOCA3LjM5M1ptNC4zMzMgMy4xNDctMy42NjYgMi4yNjd2LTQuMjZsMy42NjYtMi4yNnY0LjI1M1pcXFwiIGZpbGw9XFxcIiNBNjZFRTlcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk01LjMzNCA3LjMzNGg1LjMzM2EuNjY3LjY2NyAwIDAgMCAuNTEzLS4yNDcuNjY2LjY2NiAwIDAgMCAuMTU0LS41NTNMMTAuNjY3IDMuMkEuNjY3LjY2NyAwIDAgMCAxMCAyLjY2N0g2YS42NjcuNjY3IDAgMCAwLS42NjYuNTMzbC0uNjY3IDMuMzM0YS42NjcuNjY3IDAgMCAwIC4xNC41NTMuNjY3LjY2NyAwIDAgMCAuNTI3LjI0N1pNNi41NDcgNGgyLjkwN2wuNCAySDYuMTQ3bC40LTJabTguMTIgNS4yQS42NjcuNjY3IDAgMCAwIDE0IDguNjY3aC00YS42NjcuNjY3IDAgMCAwLS42NjYuNTMzbC0uNjY3IDMuMzM0YS42NjcuNjY3IDAgMCAwIC4xNC41NTMuNjY2LjY2NiAwIDAgMCAuNTI3LjI0N2g1LjMzM2EuNjY3LjY2NyAwIDAgMCAuNTEzLS4yNDcuNjY2LjY2NiAwIDAgMCAuMTU0LS41NTNMMTQuNjY3IDkuMlptLTQuNTIgMi44LjQtMmgyLjkwNmwuNCAyaC0zLjcwNlpNNiA4LjY2OEgyYS42NjcuNjY3IDAgMCAwLS42NjYuNTMzbC0uNjY3IDMuMzM0YS42NjcuNjY3IDAgMCAwIC4xNC41NTMuNjY2LjY2NiAwIDAgMCAuNTI3LjI0N2g1LjMzM2EuNjY3LjY2NyAwIDAgMCAuNTEzLS4yNDcuNjY2LjY2NiAwIDAgMCAuMTU0LS41NTNMNi42NjcgOS4yQS42NjcuNjY3IDAgMCAwIDYgOC42NjdabS0zLjg1MyAzLjMzNC40LTJoMi45MDdsLjQgMkgyLjE0N1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTkuMzM0IDUuMzMzSDEwQS42NjcuNjY3IDAgMCAwIDEwIDRoLS42NjZhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM1ptMCAyLjY2N0gxMGEuNjY3LjY2NyAwIDAgMCAwLTEuMzM0aC0uNjY2YS42NjcuNjY3IDAgMCAwIDAgMS4zMzRaTTYgNS4zMzNoLjY2N2EuNjY3LjY2NyAwIDAgMCAwLTEuMzMzSDZhLjY2Ny42NjcgMCAxIDAgMCAxLjMzM1pNNiA4aC42NjdhLjY2Ny42NjcgMCAxIDAgMC0xLjMzNEg2QS42NjcuNjY3IDAgMCAwIDYgOFptOCA1LjMzM2gtLjY2NlYyYS42NjYuNjY2IDAgMCAwLS42NjctLjY2N0gzLjMzM0EuNjY3LjY2NyAwIDAgMCAyLjY2NyAydjExLjMzM0gyYS42NjYuNjY2IDAgMSAwIDAgMS4zMzNoMTJhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM1ptLTUuMzMzIDBINy4zMzR2LTIuNjY3aDEuMzMzdjIuNjY3Wm0zLjMzMyAwaC0yVjEwYS42NjcuNjY3IDAgMCAwLS42NjYtLjY2N0g2LjY2N0EuNjY3LjY2NyAwIDAgMCA2IDEwdjMuMzMzSDRWMi42NjZoOHYxMC42NjdaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTcgMTZcXFwiPjxwYXRoIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIGQ9XFxcIm0xMi4zMjIgNS42OC4wOTIuMjEyLjIyMS4wNjdhMi44MzQgMi44MzQgMCAwIDEtLjA5NCA1LjQ1LjE2OC4xNjggMCAwIDEtLjA4My0uMzI1bC4wMDgtLjAwMmEyLjUgMi41IDAgMCAwLS4yLTQuODY2bC0uMDA4LS4wMDJhLjE2Ny4xNjcgMCAwIDEtLjEzLS4xMTJsLS4wMDItLjAwNGEzLjgzNCAzLjgzNCAwIDAgMC03LjQ2IDEuMjM1LjE2Ny4xNjcgMCAwIDEtLjE2Ni4xNjcgMS44MzMgMS44MzMgMCAxIDAgMCAzLjY2Ny4xNjcuMTY3IDAgMCAxIDAgLjMzM2gtLjAwMWEyLjE2NyAyLjE2NyAwIDAgMS0uNTEtNC4yNzNsLjMzNi0uMDguMDQ0LS4zNDJhNC4xNjcgNC4xNjcgMCAwIDEgNy45NTMtMS4xMjVabS0yLjM3IDQuMTk5LjAwMi4wMDNhLjE2Ny4xNjcgMCAwIDEgMCAuMjM3bC0uODY2Ljg2LS4zNTguMzU1LjM1OC4zNTQuODY2Ljg2YS4xNjcuMTY3IDAgMCAxIDAgLjIzN2wtLjAwMi4wMDNhLjE2Ni4xNjYgMCAwIDEtLjE4My4wMzcuMTY2LjE2NiAwIDAgMS0uMDU0LS4wMzdsLS44Ni0uODY3LS4zNTUtLjM1Ny0uMzU1LjM1Ny0uODYuODY3YS4xNjYuMTY2IDAgMCAxLS4xODMuMDM3LjE2Ni4xNjYgMCAwIDEtLjA1NC0uMDM3bC0uMDAzLS4wMDNhLjE2Ny4xNjcgMCAwIDEgMC0uMjM2bC44NjctLjg2LjM1OC0uMzU1LS4zNTgtLjM1NS0uODY1LS44NTlhLjE3LjE3IDAgMCAxIC4yNC0uMjRsLjg1OC44NjYuMzU1LjM1Ny4zNTUtLjM1Ny44Ni0uODY3YS4xNjcuMTY3IDAgMCAxIC4yMzcgMFpcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTQgMTRcXFwiPjxwYXRoIGZpbGw9XFxcIiMyQTJGMzBcXFwiIGQ9XFxcIm04LjQxIDcgNC4zLTQuMjlhMS4wMDQgMS4wMDQgMCAwIDAtMS40Mi0xLjQyTDcgNS41OWwtNC4yOS00LjNhMS4wMDQgMS4wMDQgMCAxIDAtMS40MiAxLjQyTDUuNTkgN2wtNC4zIDQuMjlhLjk5OS45OTkgMCAwIDAgMCAxLjQyIDEgMSAwIDAgMCAxLjQyIDBMNyA4LjQxbDQuMjkgNC4zYTEuMDAxIDEuMDAxIDAgMCAwIDEuNjM5LS4zMjUgMSAxIDAgMCAwLS4yMi0xLjA5NUw4LjQxIDdaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDE0IDE0XFxcIj48cGF0aCBkPVxcXCJNNyAuMzMyYy0zLjY2NyAwLTYuNjY3IDMtNi42NjcgNi42NjcgMCAzLjY2NiAzIDYuNjY2IDYuNjY3IDYuNjY2IDMuNjY2IDAgNi42NjYtMyA2LjY2Ni02LjY2NiAwLTMuNjY3LTMtNi42NjctNi42NjYtNi42NjdabTIuOCA1LjUzMy0zLjIgMy4yYS42NDQuNjQ0IDAgMCAxLS45MzQgMEw0LjIgNy42YS42NDQuNjQ0IDAgMCAxIDAtLjkzNC42NDQuNjQ0IDAgMCAxIC45MzMgMGwxIDEgMi43MzMtMi43MzNhLjY0NC42NDQgMCAwIDEgLjkzNCAwIC42NDUuNjQ1IDAgMCAxIDAgLjkzM1pcXFwiIGZpbGw9XFxcIiMxNzk5N0JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjAgMjBcXFwiPjxwYXRoIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIGQ9XFxcIk0xNy4xNjcgMy4zMzR2LS41aC0xMXYxMWgxMXYtMTAuNVpNOC4yMDQgOC43NWwuNDYzLS40NjYgMS4zNyAxLjM3Ni4zNTUuMzU3LjM1NC0uMzU3IDMuOTItMy45NS40NjMuNDY1LTQuNzM3IDQuNzhMOC4yMDQgOC43NVptLTUuMzcgNy45MTZ2LjVIMTQuNXYuNjY3SDMuMzMzYy0uNjQgMC0xLjE2Ni0uNTI2LTEuMTY2LTEuMTY3VjUuNWguNjY2djExLjE2N1ptMy44MzMtMTQuNWgxMGMuNjQgMCAxLjE2Ni41MjYgMS4xNjYgMS4xNjd2MTBjMCAuNjQtLjUyNiAxLjE2Ni0xLjE2NiAxLjE2NmgtMTBjLS42NCAwLTEuMTY3LS41MjYtMS4xNjctMS4xNjZ2LTEwYzAtLjY0LjUyNi0xLjE2NyAxLjE2Ny0xLjE2N1pcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTIgMTBcXFwiPjxwYXRoIGQ9XFxcIm0uNzUgNS4yNSAzLjUgMy41IDctNy41XFxcIiBzdHJva2U9XFxcIiMxNTUzNjZcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS41XFxcIiBzdHJva2UtbGluZWNhcD1cXFwicm91bmRcXFwiIHN0cm9rZS1saW5lam9pbj1cXFwicm91bmRcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlLWxpbmVjYXA9XFxcInJvdW5kXFxcIiBzdHJva2UtbGluZWpvaW49XFxcInJvdW5kXFxcIiBzdHJva2Utd2lkdGg9XFxcIjJcXFwiIGNsYXNzPVxcXCJjaGV2cm9uX3N2Z19fZmVhdGhlciBjaGV2cm9uX3N2Z19fZmVhdGhlci1jaGV2cm9ucy1yaWdodFxcXCIgdmlld0JveD1cXFwiMCAwIDI0IDI0XFxcIj48cGF0aCBkPVxcXCJtMTMgMTcgNS01LTUtNU02IDE3bDUtNS01LTVcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDEwIDExXFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk01IC41Yy0yLjc1IDAtNSAyLjI1LTUgNXMyLjI1IDUgNSA1IDUtMi4yNSA1LTUtMi4yNS01LTUtNVptMS44NSA2LjE1Yy4yLjIuMi41IDAgLjctLjIuMi0uNS4yLS43IDBMNSA2LjIgMy44NSA3LjM1Yy0uMi4yLS41LjItLjcgMC0uMi0uMi0uMi0uNSAwLS43TDQuMyA1LjUgMy4xNSA0LjM1Yy0uMi0uMi0uMi0uNSAwLS43LjItLjIuNS0uMi43IDBMNSA0LjhsMS4xNS0xLjE1Yy4yLS4yLjUtLjIuNyAwIC4yLjIuMi41IDAgLjdMNS43IDUuNWwxLjE1IDEuMTVaXFxcIiBmaWxsPVxcXCIjRTM0RDVCXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxOCAxOVxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNOSAyLjQzNGMtNC4xMjUgMC03LjUgMy4zNzUtNy41IDcuNXMzLjM3NSA3LjUgNy41IDcuNSA3LjUtMy4zNzUgNy41LTcuNS0zLjM3NS03LjUtNy41LTcuNVptMi43NzUgOS4yMjVjLjMuMy4zLjc1IDAgMS4wNS0uMy4zLS43NS4zLTEuMDUgMEw5IDEwLjk4NGwtMS43MjUgMS43MjVjLS4zLjMtLjc1LjMtMS4wNSAwLS4zLS4zLS4zLS43NSAwLTEuMDVMNy45NSA5LjkzNCA2LjIyNSA4LjIwOWMtLjMtLjMtLjMtLjc1IDAtMS4wNS4zLS4zLjc1LS4zIDEuMDUgMEw5IDguODg0bDEuNzI1LTEuNzI1Yy4zLS4zLjc1LS4zIDEuMDUgMCAuMy4zLjMuNzUgMCAxLjA1TDEwLjA1IDkuOTM0bDEuNzI1IDEuNzI1WlxcXCIgZmlsbD1cXFwiI0UzNEQ1QlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCI+PHBhdGggZD1cXFwiTTguNzUgNS40NTdoLTEuNUExLjA4MyAxLjA4MyAwIDAgMCA2LjE2NyA2LjU0djNhMS4wODMgMS4wODMgMCAwIDAgMS4wODMgMS4wODNoMS41QTEuMDg0IDEuMDg0IDAgMCAwIDkuODMzIDkuNTRhLjQxNy40MTcgMCAwIDEgLjgzNCAwIDEuOTE3IDEuOTE3IDAgMCAxLTEuOTE3IDEuOTE3aC0xLjVBMS45MTYgMS45MTYgMCAwIDEgNS4zMzMgOS41NHYtM0ExLjkxNyAxLjkxNyAwIDAgMSA3LjI1IDQuNjIzaDEuNWExLjkxNyAxLjkxNyAwIDAgMSAxLjkxNyAxLjkxNy40MTYuNDE2IDAgMSAxLS44MzQgMEExLjA4MyAxLjA4MyAwIDAgMCA4Ljc1IDUuNDU3Wk00LjAxOCAyLjA4QTcuMTY3IDcuMTY3IDAgMSAxIDExLjk4MiAxNCA3LjE2NyA3LjE2NyAwIDAgMSA0LjAxOCAyLjA4Wm0uNDYzIDExLjIyNUE2LjMzNCA2LjMzNCAwIDEgMCAxMS41MiAyLjc3NGE2LjMzNCA2LjMzNCAwIDAgMC03LjA0IDEwLjUzMlpcXFwiIGZpbGw9XFxcIiNBNkI1QkFcXFwiIHN0cm9rZT1cXFwiI0E2QjVCQVxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNCAxNFxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNOS45MTcgNC4wODNhNC41MTUgNC41MTUgMCAxIDAtNS44MzQgNS44MzQgNC41MTUgNC41MTUgMCAxIDAgNS44MzQtNS44MzRabS0uOTM0LjkzNGEzLjQ1MyAzLjQ1MyAwIDAgMS0uMDMgMS40NDdMNy41MzIgNS4wNTFjLjI1Ni0uMDYxLjUxOC0uMDkzLjc4MS0uMDk0LjIyNCAwIC40NDYuMDIyLjY2NS4wNjRsLjAwNi0uMDA1Wm0tLjU0OCAyLjU2NmEzLjUgMy41IDAgMCAxLS44NTIuODUyTDUuNTY1IDYuNDE3YTMuNSAzLjUgMCAwIDEgLjg1Mi0uODUybDIuMDE4IDIuMDE4Wm0tNC42NjcuODUyYTMuMzU0IDMuMzU0IDAgMSAxIDQuNjY3LTQuNjY3aC0uMTQ2YTQuNTI3IDQuNTI3IDAgMCAwLTQuNDk3IDQuNTQ0YzAgLjA0Ny4wMDUuMS4wMDUuMTQ2bC0uMDI5LS4wMjNabTEuMjI1LjUxOWEzLjU3IDMuNTcgMCAwIDEtLjA2NC0uNjY1Yy4wMDEtLjI2My4wMzMtLjUyNi4wOTMtLjc4Mkw2LjQ0IDguOTI1Yy0uMjU2LjA2LS41MTkuMDkyLS43ODIuMDkzYTMuNTcgMy41NyAwIDAgMS0uNjM2LS4wNGwtLjAyOS0uMDI0Wm0zLjMyIDIuNzEyYTMuMzY1IDMuMzY1IDAgMCAxLTIuNzcxLTEuNDY0aC4xNDVhNC41MjcgNC41MjcgMCAwIDAgNC41MjEtNC41MTV2LS4xNDVhMy4zNTQgMy4zNTQgMCAwIDEtMS44OTYgNi4xMjRaXFxcIiBmaWxsPVxcXCIjRjRCNzg0XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIj48cGF0aCBmaWxsPVxcXCIjNjg3OTdFXFxcIiBkPVxcXCJNMTAuNzgzIDUuMjE4YS43NS43NSAwIDAgMC0xLjA2NSAwTDggNi45NDIgNi4yODMgNS4yMThhLjc1My43NTMgMCAxIDAtMS4wNjUgMS4wNjRMNi45NDMgOCA1LjIxOCA5LjcxN2EuNzUuNzUgMCAwIDAgMCAxLjA2Ni43NS43NSAwIDAgMCAxLjA2NSAwTDggOS4wNTZsMS43MTggMS43MjZhLjc1Ljc1IDAgMCAwIDEuMjI5LS4yNDUuNzUuNzUgMCAwIDAtLjE2NC0uODJMOS4wNTggOGwxLjcyNS0xLjcxOGEuNzQ4Ljc0OCAwIDAgMCAwLTEuMDY0Wm0yLjUyLTIuNTJBNy41MDEgNy41MDEgMCAxIDAgMi42OTggMTMuMzAxIDcuNTAxIDcuNTAxIDAgMSAwIDEzLjMwMyAyLjY5OVptLTEuMDU4IDkuNTQ3QTYgNiAwIDEgMSAxNCA4YTUuOTY1IDUuOTY1IDAgMCAxLTEuNzU1IDQuMjQ1WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxMiAxNFxcXCIgZmlsbD1cXFwibm9uZVxcXCI+PHBhdGggZmlsbD1cXFwiIzJBMkYzMFxcXCIgZD1cXFwiTTQuNTg4IDMuNSA3LjIxMi44OGEuNDE4LjQxOCAwIDAgMC0uNTkxLS41OTJMNCAyLjkxMyAxLjM4LjI4OGEuNDE4LjQxOCAwIDEgMC0uNTkzLjU5MUwzLjQxMyAzLjUuNzg3IDYuMTJhLjQxNy40MTcgMCAwIDAgLjEzNi42ODQuNDE3LjQxNyAwIDAgMCAuNDU2LS4wOTFMNCA0LjA4OGwyLjYyIDIuNjI1YS40MTcuNDE3IDAgMCAwIC42ODQtLjEzNi40MTcuNDE3IDAgMCAwLS4wOTItLjQ1Nkw0LjU4OCAzLjVaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDUyIDUyXFxcIj48Y2lyY2xlIGN4PVxcXCIyNlxcXCIgY3k9XFxcIjI2XFxcIiByPVxcXCIyNS4yNVxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS41XFxcIi8+PHBhdGggZD1cXFwiTTM3LjQgMzcuODJjLS4wNTEtLjYwOS0uMDUtNS4zODMtLjAzNi04LjMxOGEuNi42IDAgMCAwLS41OTgtLjYwNGgtLjAwM2EuNi42IDAgMCAwLS42LjU5OGMwIC4wMjItLjAxIDIuMTItLjAxIDQuMjA0LjAwMiAyLjExMi4wMDQgMy4yMjQuMDI5IDMuODM0bC05Ljg0OSAyLjk2M2EuNTk3LjU5NyAwIDAgMCAuMDU0LS4yNDh2LTcuODk3YS42LjYgMCAxIDAtMS4yMDIgMHY3Ljg5N2MwIC4wNTUuMDA5LjEwOC4wMjIuMTU5bC05LjU2LTIuOTA4LS4wMDgtNy45YS42LjYgMCAwIDAtLjYtLjYwMWgtLjAwMWEuNi42IDAgMCAwLS42LjZsLjAwNyA4LjM0N2EuNi42IDAgMCAwIC40MjUuNTc0bDEwLjg2OCAzLjMwNGEuNTkyLjU5MiAwIDAgMCAuMzQ4IDBsMTAuOTAzLTMuMjhhLjYuNiAwIDAgMCAuNDEtLjcyNFptLS40NzItLjQ0WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcIiMxOEFDQjJcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjNcXFwiLz48cGF0aCBkPVxcXCJtNDAuMDQgMjMuNzQ2LTMuMzY1LTEuOTAyLS4wMTMtLjAwNmExMi4wMDQgMTIuMDA0IDAgMCAwLTIuMzMxLTMuMjU5LjYuNiAwIDEgMC0uODQ3Ljg1MiAxMC43NzggMTAuNzc4IDAgMCAxIDIuNjI0IDQuMjE3bC0xLjU4Mi40MzNjLTEuMjU4LTMuNjMzLTQuNzMzLTYuMTMyLTguNjEzLTYuMTMyYTkuMTE1IDkuMTE1IDAgMCAwLTQuNTcyIDEuMjI4LjYwMS42MDEgMCAwIDAgLjYwMyAxLjAzOSA3LjkwOCA3LjkwOCAwIDAgMSAzLjk2OS0xLjA2NiA3Ljk1IDcuOTUgMCAwIDEgNy40NSA1LjI1bC0xLjU4My40MzNhNi4zMTIgNi4zMTIgMCAwIDAtNS44NjctNC4wNDcgNi4yOTUgNi4yOTUgMCAwIDAtNS44NzkgNC4wNzVsLTEuNTg2LS40MjVhNy45NCA3Ljk0IDAgMCAxIDEuODcxLTIuOTcuNi42IDAgMSAwLS44NS0uODQ5IDkuMTQ4IDkuMTQ4IDAgMCAwLTIuMTg0IDMuNTA2bC0xLjU4My0uNDI1Yy4xMDItLjMxLjIxOC0uNjEzLjM0Ni0uOTA5YS42MDcuNjA3IDAgMCAwIC4xNzItLjM3NiAxMC43NzYgMTAuNzc2IDAgMCAxIDkuNjkzLTYuMWMxLjg5IDAgMy43NDkuNDk3IDUuMzc1IDEuNDM5YS42MDEuNjAxIDAgMCAwIC42MDItMS4wNCAxMS45NDkgMTEuOTQ5IDAgMCAwLTUuOTc3LTEuNiAxMS45OCAxMS45OCAwIDAgMC0xMC44MTQgNi44NmwtMy4xMzkgMS43NzRhLjYuNiAwIDAgMCAuMzU4IDEuMTJsMS4zMi0uMTM2LTEuNDczIDEuODdhLjU5OS41OTkgMCAwIDAgLjMwMS45NDdsMTEuMzYxIDMuMzc4YS42MDEuNjAxIDAgMCAwIC42OTEtLjI3NGwxLjQwOS0yLjQxOCAxLjMxIDIuMTc3YS42LjYgMCAwIDAgLjY3My4yN2wxMS40NDctMy4xMjlhLjYwMi42MDIgMCAwIDAgLjMxMy0uOTUxbC0xLjQ4Ny0xLjg4OSAxLjQ5OS4xNTZhLjYuNiAwIDAgMCAuMzU4LTEuMTJabS0xNC4xMjctMS43NThhNS4xMDQgNS4xMDQgMCAwIDEgNC43MDIgMy4xNjVsLTQuNzAzIDEuMjg4LTQuNzEtMS4yNjVhNS4wOSA1LjA5IDAgMCAxIDQuNzExLTMuMTg4Wm0tMi4xOTYgNy42NTItMTAuMDYxLTIuOTkyIDEuNDYtMS44NTVMMjUgMjcuNDM5bC0xLjI4MiAyLjIwMVptNC4zMTUtLjI0LTEuMTg0LTEuOTY0IDkuODctMi42NDMgMS40NDggMS44MzgtMTAuMTM0IDIuNzdabS02LjQ0Ny0xNS45N2EuNjAxLjYwMSAwIDAgMCAxLjE1NS0uMzNsLS44LTIuODAzYS42MDEuNjAxIDAgMCAwLTEuMTU2LjMzbC44MDEgMi44MDRabTcuNzU1LjQ3OWEuNjAxLjYwMSAwIDAgMCAuNzQyLS40MTJsLjgtMi44MDRhLjYuNiAwIDEgMC0xLjE1NS0uMzNsLS44IDIuODA0YS42LjYgMCAwIDAgLjQxMi43NDJabTYuNTcgMy42NzdhLjYwMS42MDEgMCAwIDAgLjQyLS4xN2wyLjA1My0yLjAwM2EuNi42IDAgMSAwLS44MzktLjg2bC0yLjA1MiAyLjAwMmEuNi42IDAgMCAwIC40MTkgMS4wM1ptLTIwLjU0LS4yMjFhLjYwMi42MDIgMCAwIDAgLjg0LS44NmwtMi4wMDMtMS45NTJhLjYuNiAwIDEgMC0uODM4Ljg2bDIuMDAxIDEuOTUyWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcIiMxOEFDQjJcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjNcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgNTIgNTJcXFwiPjxjaXJjbGUgY3g9XFxcIjI2XFxcIiBjeT1cXFwiMjZcXFwiIHI9XFxcIjI1LjI1XFxcIiBzdHJva2U9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIxLjVcXFwiLz48cGF0aCBkPVxcXCJNMjAuODcxIDE3LjIwOEExMC4xNjcgMTAuMTY3IDAgMCAxIDI2IDE1LjgyM2ExMC4xMSAxMC4xMSAwIDAgMSA3LjE5NiAyLjk4LjU2Ni41NjYgMCAwIDAgLjgwNCAwQS41Ny41NyAwIDAgMCAzNCAxOGExMS4yNCAxMS4yNCAwIDAgMC04LTMuMzEzYy0yLjAwOCAwLTMuOTguNTMyLTUuNzAzIDEuNTRhLjU2OC41NjggMCAxIDAgLjU3NC45ODJaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZT1cXFwiIzE4QUNCMlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuM1xcXCIvPjxwYXRoIGQ9XFxcIk0yNiAxMmMtMy43OCAwLTcuMzIxIDEuNDgyLTkuOTc0IDQuMTc1YS41Ny41NyAwIDAgMCAuODEuNzk4QTEyLjc3IDEyLjc3IDAgMCAxIDI2IDEzLjEzN2M3LjA5MiAwIDEyLjg2MyA1Ljc3IDEyLjg2MyAxMi44NjMgMCAyLjE4NC0uNTQ4IDQuMjQ0LTEuNTEzIDYuMDQ3bC0xLjc3LTIuNzA3YTQuMzgxIDQuMzgxIDAgMCAwIDEuNzM0LTMuNDkgNC4zOTIgNC4zOTIgMCAwIDAtNC4zODgtNC4zODggNC4zNCA0LjM0IDAgMCAwLTIuMzg5LjcwNyA1LjkzIDUuOTMgMCAwIDAtOS4xMjMuMDYgNC4zNzcgNC4zNzcgMCAwIDAtMi40NzktLjc2NyA0LjM5MiA0LjM5MiAwIDAgMC00LjM4NyA0LjM4N2MwIDEuNDE1LjY3NCAyLjY3NCAxLjcxNiAzLjQ3N2wtMS42MzUgMi42ODFhMTIuODYgMTIuODYgMCAwIDEgLjIwNC0xMi4zOTMuNTY5LjU2OSAwIDEgMC0uOTg3LS41NjVBMTQgMTQgMCAwIDAgMTIgMjZjMCA1LjA5NSAyLjczNiA5LjU2NCA2LjgxNyAxMi4wMTNhLjU2Ni41NjYgMCAwIDAgLjMyNS4xODlBMTMuOTExIDEzLjkxMSAwIDAgMCAyNiA0MGM3LjcxOSAwIDE0LTYuMjggMTQtMTRzLTYuMjgxLTE0LTE0LTE0Wm02LjkyNSAxMC41OTlhMy4yNTMgMy4yNTMgMCAwIDEgMy4yNSAzLjI1IDMuMjUzIDMuMjUzIDAgMCAxLTMuMjUgMy4yNWMtLjU3NiAwLTEuMTI3LS4xNS0xLjYxOC0uNDM0QTUuOTA2IDUuOTA2IDAgMCAwIDMxLjk0IDI2YTUuOTAzIDUuOTAzIDAgMCAwLS43NTctMi44OTYgMy4yMTcgMy4yMTcgMCAwIDEgMS43NC0uNTA1Wk0yNiAyMS4xOTZBNC44MSA0LjgxIDAgMCAxIDMwLjgwMyAyNiA0LjgxIDQuODEgMCAwIDEgMjYgMzAuODA0IDQuODEgNC44MSAwIDAgMSAyMS4xOTUgMjYgNC44MSA0LjgxIDAgMCAxIDI2IDIxLjE5NlptLTEwLjMxNiA0LjY1M2EzLjI1MyAzLjI1MyAwIDAgMSA1LjA5Mi0yLjY3OEE1LjkwNSA1LjkwNSAwIDAgMCAyMC4wNTggMjZjMCAuOTMzLjIxNyAxLjgxNi42MDEgMi42MDNhMy4yNTMgMy4yNTMgMCAwIDEtNC45NzYtMi43NTRabTMuMzgxIDEwLjk4MWExMi45NjIgMTIuOTYyIDAgMCAxLTMuNzc5LTMuNzE5bDEuOTU5LTMuMjEzYy41Mi4yMTggMS4wOS4zMzkgMS42ODkuMzM5LjgzMiAwIDEuNjI3LS4yMyAyLjMyMS0uNjY1YTYgNiAwIDAgMCAxLjMgMS4yNjVsLTMuNDkgNS45OTNaTTI2IDM4Ljg2NGMtMi4xNDYgMC00LjE3LS41My01Ljk1MS0xLjQ2M2wzLjQ5LTUuOTk1YTUuOSA1LjkgMCAwIDAgMi40Ni41MzVjLjg2MSAwIDEuNjgtLjE4NSAyLjQxOC0uNTE2bDMuNDk1IDUuOTk3QTEyLjc4NCAxMi43ODQgMCAwIDEgMjYgMzguODY0Wm02Ljg5Ny0yLjAxLTMuNDktNS45OWMuNDktLjM0NS45MjYtLjc2MiAxLjI5Mi0xLjIzNWE0LjM0OSA0LjM0OSAwIDAgMCAyLjIyNi42MDdjLjU5IDAgMS4xNTItLjExOCAxLjY2Ni0uMzNsMi4xMSAzLjIyNGExMi45NzMgMTIuOTczIDAgMCAxLTMuODA0IDMuNzIzWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcIiMxOEFDQjJcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjNcXFwiLz48cGF0aCBkPVxcXCJNMjYgMjkuODAzYTMuODIzIDMuODIzIDAgMCAwIDMuMDQ4LTEuNTI4LjU2OS41NjkgMCAwIDAtLjkxLS42OCAyLjY2OCAyLjY2OCAwIDAgMS00LjMzNy0uMDg2LjU2OS41NjkgMCAwIDAtLjkzOC42NDNBMy44MDQgMy44MDQgMCAwIDAgMjYgMjkuODAzWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcIiMxOEFDQjJcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjNcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTIgMTRcXFwiPjxwYXRoIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIGQ9XFxcIk04LjE2NyAzdi41aDMuMTY2YS4xNjcuMTY3IDAgMCAxIDAgLjMzM2gtMS4xNjZ2Ny44MzNhMS41IDEuNSAwIDAgMS0xLjUgMS41SDMuMzMzYTEuNSAxLjUgMCAwIDEtMS4wNi0uNDM5bC0uMzU0LjM1NC4zNTQtLjM1NGExLjUgMS41IDAgMCAxLS40NC0xLjA2VjMuODMySC42NjdhLjE2Ny4xNjcgMCAxIDEgMC0uMzMzaDMuMTY2VjIuMzMzYTEuNSAxLjUgMCAwIDEgMS41LTEuNWgxLjMzNGExLjUgMS41IDAgMCAxIDEuNSAxLjVWM1ptLS44MzQuNWguNVYyLjMzM2ExLjE2NyAxLjE2NyAwIDAgMC0xLjE2Ni0xLjE2N0g1LjMzM2ExLjE2NyAxLjE2NyAwIDAgMC0xLjE2NiAxLjE2N1YzLjVoMy4xNjZabS00LjY2Ni4zMzNoLS41djcuODMzYTEuMTY3IDEuMTY3IDAgMCAwIDEuMTY2IDEuMTY3aDUuMzM0YTEuMTY3IDEuMTY3IDAgMCAwIDEuMTY2LTEuMTY3VjMuODMzSDIuNjY3Wm0yLjExOCA2LjYxOGEuMTY3LjE2NyAwIDAgMS0uMjg1LS4xMTh2LTRhLjE2Ny4xNjcgMCAxIDEgLjMzMyAwdjRhLjE2Ny4xNjcgMCAwIDEtLjA0OC4xMThabTIuNjY2IDBhLjE2Ny4xNjcgMCAwIDEtLjI4NC0uMTE4di00YS4xNjcuMTY3IDAgMCAxIC4zMzMgMHY0YS4xNjcuMTY3IDAgMCAxLS4wNDkuMTE4WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNyAxNlxcXCI+PHBhdGggZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBkPVxcXCJNMTAuNjI0IDUuNjY3aC00LjY3TDguMjkgMy40MTRsMi4zMzUgMi4yNTNaTTguNzggMi40NzRhLjcwNi43MDYgMCAwIDAtLjk3NCAwbC0zLjE3IDMuMDZjLS40MzYuNDEzLS4xMzIgMS4xMzMuNDgzIDEuMTMzaDYuMzM0Yy42MTUgMCAuOTI2LS43Mi40OS0xLjE0TDguNzggMi40NzRabTIuNjggNi44Nkg1LjExOWMtLjYxNSAwLS45MjYuNzItLjQ5IDEuMTRsMy4xNyAzLjA2Yy4yNy4yNi43MDQuMjYuOTc0IDBsMy4xNy0zLjA2Yy40MzYtLjQyLjEzMi0xLjE0LS40ODMtMS4xNFpcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiPjxwYXRoIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgZD1cXFwibTEzLjgwNyAxMS4xNC0xLjYxNC0xLjYxNGEuNjY2LjY2NiAwIDAgMC0uOTQ2IDBMOC44NiAxMS45MTNhLjY2Ny42NjcgMCAwIDAtLjE5My40NzNWMTRhLjY2Ny42NjcgMCAwIDAgLjY2Ni42NjZoMS42MTRhLjY2OC42NjggMCAwIDAgLjQ3My0uMTkzbDIuMzg3LTIuMzg3YS42NjcuNjY3IDAgMCAwIDAtLjk0NlptLTMuMTQgMi4xOTNIMTB2LS42NjdsMS43Mi0xLjcyLjY2Ny42NjctMS43MiAxLjcyWm0tNCAwSDRhLjY2Ni42NjYgMCAwIDEtLjY2Ny0uNjY3VjMuMzMzQS42NjcuNjY3IDAgMCAxIDQgMi42NjZoMy4zMzN2MmEyIDIgMCAwIDAgMiAyaDJ2LjY2N2EuNjY3LjY2NyAwIDAgMCAxLjMzNCAwVjUuOTZhLjg4Ljg4IDAgMCAwLS4wNC0uMTh2LS4wNmEuNzE0LjcxNCAwIDAgMC0uMTI3LS4xODdsLTQtNGEuNzEzLjcxMyAwIDAgMC0uMTg3LS4xMjcuMjEzLjIxMyAwIDAgMC0uMDYgMGwtLjIxMy0uMDczSDRhMiAyIDAgMCAwLTIgMnY5LjMzM2EyIDIgMCAwIDAgMiAyaDIuNjY3YS42NjcuNjY3IDAgMSAwIDAtMS4zMzNabTItOS43MjcgMS43MjYgMS43MjdoLTEuMDZhLjY2Ny42NjcgMCAwIDEtLjY2Ni0uNjY3di0xLjA2Wk01LjMzMyA5LjMzM2g0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNoLTRhLjY2Ny42NjcgMCAxIDAgMCAxLjMzM1ptMC0yLjY2N0g2YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNoLS42NjdhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM1ptMS4zMzQgNEg1LjMzM2EuNjY3LjY2NyAwIDAgMCAwIDEuMzM0aDEuMzM0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzRaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNCAxNFxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48ZyBjbGlwLXBhdGg9XFxcInVybCgjZG91YmxlLXRpY2tfc3ZnX19hKVxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIj48cGF0aCBkPVxcXCJNOS44NDUgMy43MDZhLjY0Ny42NDcgMCAwIDAtLjk0NyAwbC01LjA3IDUuMTRMMS43MzMgNi43MmEuNjQ3LjY0NyAwIDAgMC0uOTQ3IDAgLjY2OS42NjkgMCAwIDAgMCAuOTZsMi41NyAyLjYwNGEuNjEuNjEgMCAwIDAgLjQ3Mi4yMDYuNjEuNjEgMCAwIDAgLjQ3NC0uMjA2bDUuNTQzLTUuNjJhLjY2OS42NjkgMCAwIDAgMC0uOTZaXFxcIi8+PHBhdGggZD1cXFwiTTEzLjYzMiAzLjM2YTEuMjM0IDEuMjM0IDAgMCAwLTEuNzgzIDBMNy4xOTcgOC4wNzhsLTEuNjc3LTEuN2ExLjIzNCAxLjIzNCAwIDAgMC0xLjc4MyAwIDEuMjU2IDEuMjU2IDAgMCAwIDAgMS43ODRsMi41NyAyLjYwNGMuMTAxLjEwMy4yMjcuMjA1LjM4Ny4yNzcuMTY0LjA3NC4zMzMuMTA0LjUwMy4xMDQuMTcxIDAgLjM0LS4wMy41MDQtLjEwNC4xNi0uMDcyLjI4Ni0uMTc0LjM4OC0uMjc3bDUuNTQzLTUuNjJhMS4yNTYgMS4yNTYgMCAwIDAgMC0xLjc4NFpcXFwiIHN0cm9rZT1cXFwiI2ZmZlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIxLjE3NVxcXCIvPjwvZz48ZGVmcz48Y2xpcFBhdGggaWQ9XFxcImRvdWJsZS10aWNrX3N2Z19fYVxcXCI+PHBhdGggZmlsbD1cXFwiI2ZmZlxcXCIgZD1cXFwiTTAgMGgxNHYxNEgwelxcXCIvPjwvY2xpcFBhdGg+PC9kZWZzPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHdpZHRoPVxcXCIxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCI+PHBhdGggZmlsbD1cXFwiIzE1NTM2NlxcXCIgc3Ryb2tlPVxcXCIjMTU1MzY2XFxcIiBkPVxcXCJNOC4xNjcgOS43MzN2MS4yMDhsLjg1My0uODU0Ljg2Ny0uODY3QS4xNi4xNiAwIDAgMSAxMCA5LjE2N2MuMDMgMCAuMDcuMDEuMTEzLjA1M2EuMTYuMTYgMCAwIDEgLjA1NC4xMTQuMTYuMTYgMCAwIDEtLjA1NC4xMTNsLTIgMmMtLjAzNy4wMzctLjA1NC4wNDUtLjA1OC4wNDZBLjEzNi4xMzYgMCAwIDEgOCAxMS41YS4xMzYuMTM2IDAgMCAxLS4wNTUtLjAwNy4yMDUuMjA1IDAgMCAxLS4wNTgtLjA0NmwtMi0yYS4xNi4xNiAwIDAgMS0uMDU0LS4xMTMuMTYuMTYgMCAwIDEgLjA1NC0uMTE0QS4xNi4xNiAwIDAgMSA2IDkuMTY3Yy4wMyAwIC4wNy4wMS4xMTMuMDUzbC44NjcuODY3Ljg1My44NTRWMmMwLS4wODYuMDI3LS4xMi4wMzctLjEzLjAxLS4wMS4wNDQtLjAzNy4xMy0uMDM3LjA4NiAwIC4xMi4wMjcuMTMuMDM3LjAxLjAxLjAzNy4wNDQuMDM3LjEzdjcuNzMzWm0yLjUtMy4yMzNIMTJjLjg1NyAwIDEuNS42NDMgMS41IDEuNXY0LjY2N2MwIC44NTctLjY0MyAxLjUtMS41IDEuNUg0Yy0uODU3IDAtMS41LS42NDMtMS41LTEuNVY4YzAtLjg1Ny42NDMtMS41IDEuNS0xLjVoMS4zMzNjLjA4NyAwIC4xMi4wMjcuMTMuMDM3LjAxLjAxLjAzNy4wNDMuMDM3LjEzIDAgLjA4Ni0uMDI3LjEyLS4wMzcuMTMtLjAxLjAxLS4wNDMuMDM3LS4xMy4wMzdINGMtLjMxNCAwLS42MTQuMTA2LS44MzcuMzMtLjIyMy4yMjItLjMzLjUyMy0uMzMuODM2djQuNjY3YzAgLjMxMy4xMDcuNjE0LjMzLjgzNy4yMjMuMjIzLjUyMy4zMy44MzcuMzNoOGMuMzE0IDAgLjYxNC0uMTA3LjgzNy0uMzMuMjIzLS4yMjMuMzMtLjUyNC4zMy0uODM3VjhjMC0uMzEzLS4xMDctLjYxNC0uMzMtLjgzN2ExLjE2NiAxLjE2NiAwIDAgMC0uODM3LS4zM2gtMS4zMzNjLS4wODcgMC0uMTItLjAyNi0uMTMtLjAzNi0uMDEtLjAxLS4wMzctLjA0NC0uMDM3LS4xMyAwLS4wODcuMDI3LS4xMi4wMzctLjEzLjAxLS4wMS4wNDMtLjAzNy4xMy0uMDM3WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCI+PHBhdGggZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcImN1cnJlbnRDb2xvclxcXCIgZD1cXFwibTEyLjc5NiA1Ljg3LjAyMy4wN2EuMzA1LjMwNSAwIDAgMSAuMDE0LjA1NHY2LjY3MmExLjUgMS41IDAgMCAxLTEuNSAxLjVINC42NjdhMS41IDEuNSAwIDAgMS0xLjUtMS41VjMuMzMzYTEuNSAxLjUgMCAwIDEgMS41LTEuNWgzLjk3OGEuMjMzLjIzMyAwIDAgMSAuMDMzLjAxNGwuMTEuMDZoLjA0NWwzLjk2MyAzLjk2MlptLTMuMTEtMi42MTctLjg1My0uODU0djIuMjY3QTEuMTY3IDEuMTY3IDAgMCAwIDEwIDUuODMzaDIuMjY3bC0uODUzLS44NTQtMS43MjctMS43MjZaTTguNSAyLjY2NnYtLjVINC42NjdBMS4xNjcgMS4xNjcgMCAwIDAgMy41IDMuMzMzdjkuMzMzYTEuMTY3IDEuMTY3IDAgMCAwIDEuMTY3IDEuMTY3aDYuNjY2YTEuMTY3IDEuMTY3IDAgMCAwIDEuMTY3LTEuMTY3di02LjVIMTBhMS41IDEuNSAwIDAgMS0xLjUtMS41di0yWm0tLjMzMyA3LjA2djEuMjM3bC44Ni0uODkuMTg5LS4xOTVhLjE3LjE3IDAgMCAxIC4yMzcuMjQybC0xLjMyOCAxLjMyOGEuMTY3LjE2NyAwIDAgMS0uMDUyLjAzMmwtLjAxMS4wMDQtLjAxLjAwNWEuMTI3LjEyNyAwIDAgMS0uMTAzIDBsLS4wMS0uMDA1LS4wMTItLjAwNGEuMTY3LjE2NyAwIDAgMS0uMDUyLS4wMzJsLTEuMzI4LTEuMzI5YS4xNy4xNyAwIDAgMSAuMjM3LS4yNDFsLjE5LjE5Ni44Ni44ODlWOGEuMTY3LjE2NyAwIDAgMSAuMzMzIDB2MS43MjZaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJtMi42MjYgMTMuMzc0LjIzNi0uMjM2LS4yMzYuMjM2YTEgMSAwIDAgMCAuNzA3LjI5M2g5LjMzNGExIDEgMCAwIDAgLjcwNy0uMjkzbC0uMjM2LS4yMzYuMjM2LjIzNmExIDEgMCAwIDAgLjI5My0uNzA3VjEwYS4zMzMuMzMzIDAgMCAxIC41NjktLjIzNmwuMjM1LS4yMzUtLjIzNS4yMzVhLjMzMy4zMzMgMCAwIDEgLjA5Ny4yMzZ2Mi42NjdhMS42NjcgMS42NjcgMCAwIDEtMS42NjYgMS42NjZIMy4zMzNhMS42NjcgMS42NjcgMCAwIDEtMS42NjYtMS42NjZWMTBjMC0uMDg4LjAzNS0uMTczLjA5Ny0uMjM2TDEuNTMgOS41M2wuMjM1LjIzNWEuMzMzLjMzMyAwIDAgMSAuNDcyIDBsLjIzNS0uMjM1LS4yMzUuMjM1YS4zMzMuMzMzIDAgMCAxIC4wOTcuMjM2djIuNjY3YTEgMSAwIDAgMCAuMjkzLjcwN1ptNS4yNTUtMy4wNjYtLjAwNy0uMDAzLS4wMDctLjAwMmEuMzMzLjMzMyAwIDAgMS0uMTA4LS4wNjhMNS4wOTYgNy41N2EuMzM2LjMzNiAwIDAgMSAuMzY2LS41NDhsLjEyOC0uMzA4LS4xMjguMzA4Yy4wNC4wMTcuMDc4LjA0MS4xMDkuMDcyTDcuMDk3IDguNjNsLjU3LjU3MlYyYS4zMzMuMzMzIDAgMSAxIC42NjYgMHY3LjIwMWwuNTctLjU3MiAxLjUyNi0xLjUzM2EuMzM2LjMzNiAwIDAgMSAuNDc1LjQ3NWwtMi42NjMgMi42NjRhLjMzMy4zMzMgMCAwIDEtLjEwOC4wNjhsLS4wMDcuMDAyLS4wMDcuMDAzYS4yOTIuMjkyIDAgMCAxLS4yMzggMFpcXFwiIGZpbGw9XFxcImN1cnJlbnRjb2xvclxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Y29sb3JcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjY2N1xcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxMCA2XFxcIj48cGF0aCBkPVxcXCJNOC45MzIuODc4YS41LjUgMCAwIDEgMCAuNzFMNS4zNTcgNS4xMjFsLS4wMDIuMDAzYS41LjUgMCAwIDEtLjcxIDB2LS4wMDFMMS4xMSAxLjU4OWEuNS41IDAgMCAxIDAtLjcxVi44NzdhLjUuNSAwIDAgMSAuNzA1IDBsMi45NSAyLjk1LjIzMy4yMzMuMjM2LS4yMzJMOC4yMjYuODc5Vi44NzhhLjUuNSAwIDAgMSAuNzA2IDBaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2Utd2lkdGg9XFxcIi42NjdcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDIwIDIwXFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xNy41IDEwYS44MzMuODMzIDAgMCAwLS44MzMuODMzdjVhLjgzMy44MzMgMCAwIDEtLjgzNC44MzRINC4xNjdhLjgzMy44MzMgMCAwIDEtLjgzNC0uODM0VjQuMTY3YS44MzMuODMzIDAgMCAxIC44MzQtLjgzNGg1YS44MzMuODMzIDAgMSAwIDAtMS42NjZoLTVhMi41IDIuNSAwIDAgMC0yLjUgMi41djExLjY2NmEyLjUgMi41IDAgMCAwIDIuNSAyLjVoMTEuNjY2YTIuNSAyLjUgMCAwIDAgMi41LTIuNXYtNUEuODMzLjgzMyAwIDAgMCAxNy41IDEwWk01IDEwLjYzM3YzLjUzNGEuODMzLjgzMyAwIDAgMCAuODMzLjgzM2gzLjUzNGEuODMzLjgzMyAwIDAgMCAuNTkxLS4yNDJsNS43NjctNS43NzUgMi4zNjctMi4zMTZhLjgzMy44MzMgMCAwIDAgMC0xLjE4NGwtMy41MzQtMy41NzVhLjgzNC44MzQgMCAwIDAtMS4xODMgMGwtMi4zNSAyLjM1OS01Ljc4MyA1Ljc3NWEuODM0LjgzNCAwIDAgMC0uMjQyLjU5MVptOC45NjctNi45NTggMi4zNTggMi4zNTgtMS4xODMgMS4xODQtMi4zNTktMi4zNTkgMS4xODQtMS4xODNabS03LjMgNy4zIDQuOTQxLTQuOTQyIDIuMzU5IDIuMzU5LTQuOTQyIDQuOTQxSDYuNjY3di0yLjM1OFpcXFwiIGZpbGw9XFxcIiM2ODc5N0VcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE3IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0zLjcxOCAxMmgyLjgyN2EuNjY2LjY2NiAwIDAgMCAuNDczLS4xOTRsNC42MTQtNC42MiAxLjg5My0xLjg1M2EuNjY4LjY2OCAwIDAgMCAwLS45NDdsLTIuODI3LTIuODZhLjY2Ny42NjcgMCAwIDAtLjk0NiAwbC0xLjg4IDEuODg3LTQuNjI3IDQuNjJhLjY2Ny42NjcgMCAwIDAtLjE5My40NzN2Mi44MjdhLjY2Ny42NjcgMCAwIDAgLjY2Ni42NjdabTYuNTA3LTkuMDYgMS44ODcgMS44ODYtLjk0Ny45NDctMS44ODctMS44ODcuOTQ3LS45NDZabS01Ljg0IDUuODQgMy45NTMtMy45NTQgMS44ODcgMS44ODctMy45NTMgMy45NTNINC4zODVWOC43OFptMTAgNC41NTNoLTEyYS42NjcuNjY3IDAgMSAwIDAgMS4zMzNoMTJhLjY2Ni42NjYgMCAxIDAgMC0xLjMzM1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBjbGFzcz1cXFwiZXhjbGFtYXRpb24td2FybmluZ19zdmdfX2VsZW1lbnRzLXN2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDE4IDE4XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk05IDQuNzk1YS44MzMuODMzIDAgMCAwLS44MzQuODM0djMuMzMzYS44MzMuODMzIDAgMCAwIDEuNjY3IDBWNS42MjlhLjgzMy44MzMgMCAwIDAtLjgzNC0uODM0Wm0uNzY2IDcuMTg0YS42MzIuNjMyIDAgMCAwLS4wNzUtLjE1bC0uMS0uMTI1YS44MzMuODMzIDAgMCAwLS45MDgtLjE3NS45NTguOTU4IDAgMCAwLS4yNzUuMTc1LjgzMy44MzMgMCAwIDAtLjE3NS45MDguNzUuNzUgMCAwIDAgLjQ1LjQ1Ljc4My43ODMgMCAwIDAgLjYzMyAwIC43NS43NSAwIDAgMCAuNDUtLjQ1LjgzNC44MzQgMCAwIDAgLjA2Ny0uMzE3IDEuMTMzIDEuMTMzIDAgMCAwIDAtLjE2Ni41MzIuNTMyIDAgMCAwLS4wNjctLjE1Wk04Ljk5OS42MjlhOC4zMzMgOC4zMzMgMCAxIDAgMCAxNi42NjZBOC4zMzMgOC4zMzMgMCAwIDAgOSAuNjNabTAgMTVBNi42NjYgNi42NjYgMCAxIDEgOSAyLjI5NiA2LjY2NiA2LjY2NiAwIDAgMSA5IDE1LjYzWlxcXCIgZmlsbD1cXFwiI0Y0Qjc4NFxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAyMSAyMFxcXCI+PG1hc2sgaWQ9XFxcImV4cG9ydF9zdmdfX2FcXFwiIHdpZHRoPVxcXCIyMVxcXCIgaGVpZ2h0PVxcXCIyMFxcXCIgeD1cXFwiMFxcXCIgeT1cXFwiMFxcXCIgbWFza1VuaXRzPVxcXCJ1c2VyU3BhY2VPblVzZVxcXCIgc3R5bGU9XFxcIm1hc2stdHlwZTphbHBoYVxcXCI+PHBhdGggZmlsbD1cXFwiI0Q5RDlEOVxcXCIgZD1cXFwiTS41IDBoMjB2MjBILjV6XFxcIi8+PC9tYXNrPjxnIG1hc2s9XFxcInVybCgjZXhwb3J0X3N2Z19fYSlcXFwiPjxwYXRoIGZpbGw9XFxcIiMxNTUzNjZcXFwiIGQ9XFxcIk00LjY2NyAxNy41Yy0uNDU5IDAtLjg1MS0uMTYzLTEuMTc3LS40OUExLjYwNSAxLjYwNSAwIDAgMSAzIDE1LjgzM1Y0LjE2N2MwLS40NTkuMTYzLS44NTEuNDktMS4xNzcuMzI2LS4zMjcuNzE4LS40OSAxLjE3Ny0uNDlIMTAuNXYxLjY2N0g0LjY2N3YxMS42NjZoMTEuNjY2VjEwSDE4djUuODMzYzAgLjQ1OS0uMTYzLjg1MS0uNDkgMS4xNzctLjMyNi4zMjctLjcxOC40OS0xLjE3Ny40OUg0LjY2N1ptMy45MTYtNC40MTctMS4xNjYtMS4xNjYgNy43NS03Ljc1aC0zVjIuNUgxOHY1LjgzM2gtMS42Njd2LTNsLTcuNzUgNy43NVpcXFwiLz48L2c+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNyAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTIuNzUxIDcuMjEzYS43MzIuNzMyIDAgMCAwLS41LjE5NS42NDcuNjQ3IDAgMCAwLS4yMDguNDcydjQuNzg2YS42NDcuNjQ3IDAgMCAxLS4yMDcuNDcyLjczMS43MzEgMCAwIDEtLjUwMS4xOTVIMy41NDNhLjczMS43MzEgMCAwIDEtLjUtLjE5NS42NDcuNjQ3IDAgMCAxLS4yMDgtLjQ3MlY1LjMzM2MwLS4xNzcuMDc0LS4zNDYuMjA3LS40NzFhLjczMS43MzEgMCAwIDEgLjUwMS0uMTk2aDUuMDg2Yy4xODggMCAuMzY4LS4wNy41LS4xOTVBLjY0Ny42NDcgMCAwIDAgOS4zMzggNGEuNjQ3LjY0NyAwIDAgMC0uMjA3LS40NzIuNzMxLjczMSAwIDAgMC0uNTAxLS4xOTVIMy41NDNjLS41NjQgMC0xLjEwNC4yMS0xLjUwMy41ODZhMS45NDIgMS45NDIgMCAwIDAtLjYyMiAxLjQxNHY3LjMzM2MwIC41My4yMjQgMS4wNC42MjIgMS40MTUuMzk5LjM3NS45NC41ODUgMS41MDMuNTg1aDcuNzkyYy41NjMgMCAxLjEwNC0uMjEgMS41MDItLjU4NS4zOTktLjM3NS42MjMtLjg4NC42MjMtMS40MTVWNy44OGEuNjQ3LjY0NyAwIDAgMC0uMjA4LS40NzIuNzMyLjczMiAwIDAgMC0uNS0uMTk1Wm0yLjc3Ny01LjQ2N2EuNjkuNjkgMCAwIDAtLjM4My0uMzYuNzQ3Ljc0NyAwIDAgMC0uMjY5LS4wNTNoLTQuMjVhLjczMi43MzIgMCAwIDAtLjUuMTk1LjY0Ny42NDcgMCAwIDAtLjIwOC40NzJjMCAuMTc2LjA3NS4zNDYuMjA3LjQ3MWEuNzMyLjczMiAwIDAgMCAuNTAxLjE5NWgyLjU0M2wtNy4yOTYgNi44NmEuNjY2LjY2NiAwIDAgMC0uMTU1LjIxNy42MzMuNjMzIDAgMCAwIC4xNTUuNzMuNzQ2Ljc0NiAwIDAgMCAxLjAwNiAwbDcuMjg5LTYuODY3VjZjMCAuMTc2LjA3NS4zNDYuMjA3LjQ3MWEuNzMyLjczMiAwIDAgMCAuNTAxLjE5NWMuMTg4IDAgLjM2OC0uMDcuNTAxLS4xOTVBLjY0Ny42NDcgMCAwIDAgMTUuNTg1IDZWMmEuNjMzLjYzMyAwIDAgMC0uMDU3LS4yNTRaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE3XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xNC42MTMgNy45OEMxMy4yNjcgNC44NTMgMTAuNzMzIDIuOTEzIDggMi45MTNjLTIuNzMzIDAtNS4yNjcgMS45NC02LjYxMyA1LjA2N2EuNjY3LjY2NyAwIDAgMCAwIC41MzNDMi43MzMgMTEuNjQgNS4yNjcgMTMuNTggOCAxMy41OGMyLjczMyAwIDUuMjY3LTEuOTQgNi42MTMtNS4wNjdhLjY2Ny42NjcgMCAwIDAgMC0uNTMzWk04IDEyLjI0NmMtMi4xMTMgMC00LjExMy0xLjUyNi01LjI2Ny00IDEuMTU0LTIuNDczIDMuMTU0LTQgNS4yNjctNCAyLjExMyAwIDQuMTEzIDEuNTI3IDUuMjY3IDQtMS4xNTQgMi40NzQtMy4xNTQgNC01LjI2NyA0Wk04IDUuNThhMi42NjcgMi42NjcgMCAxIDAgMCA1LjMzM0EyLjY2NyAyLjY2NyAwIDAgMCA4IDUuNThabTAgNGExLjMzMyAxLjMzMyAwIDEgMSAwLTIuNjY3QTEuMzMzIDEuMzMzIDAgMCAxIDggOS41OFpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTUwIDE1MFxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48Y2lyY2xlIGN4PVxcXCI3NVxcXCIgY3k9XFxcIjc1XFxcIiByPVxcXCI3NVxcXCIgZmlsbD1cXFwidXJsKCNmb2xkZXJfc3ZnX19hKVxcXCIvPjxwYXRoIGQ9XFxcIk00NS41NDggNTQuMjJjMC0yLjM4IDAtMy41Ny40Ny00LjQ3NWE0LjE3OCA0LjE3OCAwIDAgMSAxLjc4Mi0xLjc4MWMuOTA2LS40NyAyLjA5NS0uNDcgNC40NzUtLjQ3aDE3LjU1N2MxLjAxMiAwIDEuNTE4IDAgMS45OTUuMTEzLjQwNi4wOTYuNzk1LjI1MyAxLjE1NC40NjUuNDIzLjI1Ljc4OC42IDEuNTE3IDEuMzAybC40My40MTZjLjczLjcwMiAxLjA5NCAxLjA1MyAxLjUxNyAxLjMwMi4zNi4yMTIuNzQ4LjM2OSAxLjE1NC40NjUuNDc3LjExNC45ODMuMTE0IDEuOTk2LjExNGgxNy43MThjMi4zNzkgMCAzLjU2OCAwIDQuNDc0LjQ3YTQuMTgyIDQuMTgyIDAgMCAxIDEuNzgyIDEuNzgyYy40Ny45MDYuNDcgMi4wOTUuNDcgNC40NzR2NDAuMDQ2YzAgMS4xOSAwIDEuNzg0LS4yMzUgMi4yMzdhMi4wODMgMi4wODMgMCAwIDEtLjg5MS44OTFjLS40NTMuMjM1LTEuMDQ4LjIzNS0yLjIzNy4yMzVINTEuNjAyYy0yLjE0MSAwLTMuMjEyIDAtNC4wMjctLjQyM2EzLjc2MyAzLjc2MyAwIDAgMS0xLjYwNC0xLjYwNGMtLjQyMy0uODE1LS40MjMtMS44ODUtLjQyMy00LjAyN1Y1NC4yMlpcXFwiIGZpbGw9XFxcInVybCgjZm9sZGVyX3N2Z19fYilcXFwiLz48cGF0aCBkPVxcXCJNNjYuNjU2IDYyLjMxMWgzOC41MzFjMS42NzIgMCAyLjkwNCAwIDMuODMuMTMzLjkyLjEzMyAxLjQ5OS4zOSAxLjg5NC44NzcuMzk0LjQ4Ni41MjggMS4xMDYuNDY3IDIuMDM0LS4wNjEuOTMzLS4zMTQgMi4xNC0uNjU4IDMuNzc1bC01Ljg5NCAyNy45OTJjLS4yMzUgMS4xMTctLjQwOCAxLjkzOC0uNjIxIDIuNTYyLS4yMTEuNjE5LS40NTUgMS4wMjMtLjgxOSAxLjMxOC0uMzYzLjI5NS0uODA4LjQ1LTEuNDU4LjUyOS0uNjU0LjA4LTEuNDkzLjA4MS0yLjYzNC4wODFINTAuMTU3Yy45Mi0xLjEwMSAxLjQyMi0yLjI0NSAxLjkxNy0zLjg2MS4yMjUtLjczNC40NS0xLjU2OC43MTItMi41NDJsLjE2OC0uNjIyYy4zMzctMS4yNDguNzQyLTIuNzE0IDEuMjgtNC40NzQgMS41NTItNS4wNiA1LjEwNS0xNy4yNDMgNi45ODgtMjMuNzIyLjI5Ny0xLjAyMS41MTUtMS43Ny43NTUtMi4zMzkuMjM4LS41NjMuNDktLjkzLjg0Mi0xLjE5NC4zNTItLjI2NS43NzQtLjQwNCAxLjM4Mi0uNDc1LjYxMi0uMDcyIDEuMzkyLS4wNzIgMi40NTUtLjA3MlpcXFwiIGZpbGw9XFxcIiNCOURERkZcXFwiIHN0cm9rZT1cXFwidXJsKCNmb2xkZXJfc3ZnX19jKVxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuMzlcXFwiLz48cGF0aCBkPVxcXCJNNjYuNjU2IDYyLjMxMWgzOC41MzFjMS42NzIgMCAyLjkwNCAwIDMuODMuMTMzLjkyLjEzMyAxLjQ5OS4zOSAxLjg5NC44NzcuMzk0LjQ4Ni41MjggMS4xMDYuNDY3IDIuMDM0LS4wNjEuOTMzLS4zMTQgMi4xNC0uNjU4IDMuNzc1bC01Ljg5NCAyNy45OTJjLS4yMzUgMS4xMTctLjQwOCAxLjkzOC0uNjIxIDIuNTYyLS4yMTEuNjE5LS40NTUgMS4wMjMtLjgxOSAxLjMxOC0uMzYzLjI5NS0uODA4LjQ1LTEuNDU4LjUyOS0uNjU0LjA4LTEuNDkzLjA4MS0yLjYzNC4wODFINTAuMTU3Yy45Mi0xLjEwMSAxLjQyMi0yLjI0NSAxLjkxNy0zLjg2MS4yMjUtLjczNC40NS0xLjU2OC43MTItMi41NDJsLjE2OC0uNjIyYy4zMzctMS4yNDguNzQyLTIuNzE0IDEuMjgtNC40NzQgMS41NTItNS4wNiA1LjEwNS0xNy4yNDMgNi45ODgtMjMuNzIyLjI5Ny0xLjAyMS41MTUtMS43Ny43NTUtMi4zMzkuMjM4LS41NjMuNDktLjkzLjg0Mi0xLjE5NC4zNTItLjI2NS43NzQtLjQwNCAxLjM4Mi0uNDc1LjYxMi0uMDcyIDEuMzkyLS4wNzIgMi40NTUtLjA3MlpcXFwiIGZpbGw9XFxcInVybCgjZm9sZGVyX3N2Z19fZClcXFwiIGZpbGwtb3BhY2l0eT1cXFwiLjhcXFwiIHN0cm9rZT1cXFwidXJsKCNmb2xkZXJfc3ZnX19lKVxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuMzlcXFwiLz48cGF0aCBkPVxcXCJNNTUuOTkzIDUxLjgyOGg4LjM1NmExLjkzMyAxLjkzMyAwIDAgMSAwIDMuODY2aC04LjM1NmExLjkzMyAxLjkzMyAwIDEgMSAwLTMuODY2WlxcXCIgZmlsbD1cXFwidXJsKCNmb2xkZXJfc3ZnX19mKVxcXCIgZmlsbC1vcGFjaXR5PVxcXCIuOVxcXCIgc3Ryb2tlPVxcXCJ1cmwoI2ZvbGRlcl9zdmdfX2cpXFxcIiBzdHJva2Utd2lkdGg9XFxcIi4zMTJcXFwiLz48ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XFxcImZvbGRlcl9zdmdfX2FcXFwiIHgxPVxcXCI3NVxcXCIgeTE9XFxcIjBcXFwiIHgyPVxcXCI3NVxcXCIgeTI9XFxcIjE1MFxcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIHN0b3AtY29sb3I9XFxcIiNFM0VDRkFcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIjFcXFwiIHN0b3AtY29sb3I9XFxcIiNEQUU3RkZcXFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cXFwiZm9sZGVyX3N2Z19fYlxcXCIgeDE9XFxcIjYyLjQyXFxcIiB5MT1cXFwiNTkuMzc0XFxcIiB4Mj1cXFwiMTA2LjU1NFxcXCIgeTI9XFxcIjc1LjcxOVxcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIHN0b3AtY29sb3I9XFxcIiM3RkMwRkJcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIjFcXFwiIHN0b3AtY29sb3I9XFxcIiM0MDg4RjRcXFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cXFwiZm9sZGVyX3N2Z19fY1xcXCIgeDE9XFxcIjQ2LjU5M1xcXCIgeTE9XFxcIjY0Ljk1MVxcXCIgeDI9XFxcIjY4Ljc0NlxcXCIgeTI9XFxcIjExOC4zNzJcXFwiIGdyYWRpZW50VW5pdHM9XFxcInVzZXJTcGFjZU9uVXNlXFxcIj48c3RvcCBzdG9wLWNvbG9yPVxcXCIjZmZmXFxcIi8+PHN0b3Agb2Zmc2V0PVxcXCIuNzY2XFxcIiBzdG9wLWNvbG9yPVxcXCIjZmZmXFxcIiBzdG9wLW9wYWNpdHk9XFxcIjBcXFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cXFwiZm9sZGVyX3N2Z19fZFxcXCIgeDE9XFxcIjEwOC41XFxcIiB5MT1cXFwiOThcXFwiIHgyPVxcXCI0MVxcXCIgeTI9XFxcIjk5LjVcXFwiIGdyYWRpZW50VW5pdHM9XFxcInVzZXJTcGFjZU9uVXNlXFxcIj48c3RvcCBzdG9wLWNvbG9yPVxcXCIjQjRENEY3XFxcIi8+PHN0b3Agb2Zmc2V0PVxcXCIuMTI4XFxcIiBzdG9wLWNvbG9yPVxcXCIjOEJCREZCXFxcIi8+PHN0b3Agb2Zmc2V0PVxcXCIuMjYyXFxcIiBzdG9wLWNvbG9yPVxcXCIjOTFDMkZCXFxcIi8+PHN0b3Agb2Zmc2V0PVxcXCIuNzU5XFxcIiBzdG9wLWNvbG9yPVxcXCIjOUZDRkZEXFxcIi8+PHN0b3Agb2Zmc2V0PVxcXCIxXFxcIiBzdG9wLWNvbG9yPVxcXCIjOUVDRUZEXFxcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XFxcImZvbGRlcl9zdmdfX2VcXFwiIHgxPVxcXCI0Ni41OTNcXFwiIHkxPVxcXCI2NC45NTFcXFwiIHgyPVxcXCI2OC43NDZcXFwiIHkyPVxcXCIxMTguMzcyXFxcIiBncmFkaWVudFVuaXRzPVxcXCJ1c2VyU3BhY2VPblVzZVxcXCI+PHN0b3Agc3RvcC1jb2xvcj1cXFwiI2ZmZlxcXCIvPjxzdG9wIG9mZnNldD1cXFwiLjc2NlxcXCIgc3RvcC1jb2xvcj1cXFwiI2ZmZlxcXCIgc3RvcC1vcGFjaXR5PVxcXCIwXFxcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XFxcImZvbGRlcl9zdmdfX2ZcXFwiIHgxPVxcXCI1Mi45NTJcXFwiIHkxPVxcXCI1MS4zOTNcXFwiIHgyPVxcXCI3MC4xMDZcXFwiIHkyPVxcXCI1Ni40NjFcXFwiIGdyYWRpZW50VW5pdHM9XFxcInVzZXJTcGFjZU9uVXNlXFxcIj48c3RvcCBzdG9wLWNvbG9yPVxcXCIjZmZmXFxcIi8+PHN0b3Agb2Zmc2V0PVxcXCIxXFxcIiBzdG9wLWNvbG9yPVxcXCIjZmZmXFxcIiBzdG9wLW9wYWNpdHk9XFxcIjBcXFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cXFwiZm9sZGVyX3N2Z19fZ1xcXCIgeDE9XFxcIjUxLjc4MlxcXCIgeTE9XFxcIjUyLjU2MlxcXCIgeDI9XFxcIjYwLjE3MVxcXCIgeTI9XFxcIjU1Ljg1XFxcIiBncmFkaWVudFVuaXRzPVxcXCJ1c2VyU3BhY2VPblVzZVxcXCI+PHN0b3Agc3RvcC1jb2xvcj1cXFwiI2ZmZlxcXCIvPjxzdG9wIG9mZnNldD1cXFwiMVxcXCIgc3RvcC1jb2xvcj1cXFwiI2ZmZlxcXCIgc3RvcC1vcGFjaXR5PVxcXCIwXFxcIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDI2NiA2M1xcXCI+PHBhdGggZD1cXFwiTS44MyA1OC45MVYyOC43aDguNzI1djMwLjIxSC44M1ptMzUuMDE3LTIuOTNjLTEuOTgzIDIuNDE2LTQuODM1IDMuNzc3LTguNjE1IDMuNzc3LTYuMDc2IDAtMTAuOTcxLTMuNzc4LTEwLjk3MS05LjYwMyAwLTUuNzYzIDQuODk4LTguNjEgMTEuNzc3LTguOTg1IDUuMjctLjMxIDYuOTQzLS44NjggNi45NDMtMi42NjMgMC0xLjczNi0xLjYxMS0yLjkxMy00LjQ2My0yLjkxMy0zLjQ3IDAtNC45NiAxLjczNi01LjE0NSAzLjU5NGgtOC40OTRjLjQzNC02LjYyOCA1LjM5Mi0xMS4yMTQgMTMuNzAxLTExLjIxNCA4LjEyMiAwIDEzLjMzIDQuMzk4IDEzLjMzIDEyLjYzN3YxOC40NjNoLTcuMjU0bC0uODA5LTMuMDk0Wm0tMTAuNzg2LTYuMTk1YzAgMS43MzYgMS41NSAyLjc4OCA0LjAzIDIuNzg4IDMuMzQ4IDAgNi4wMTItMS44NTggNi4wMTItNS42MzhWNDUuODJzLTEuNjExLjc0My00Ljk2LjkzYy0zLjY1OC4xODUtNS4wODIgMS4zNjItNS4wODIgMy4wMzVabTM4LjMwNyA5LjQxNmMtNi42MzIgMC0xMC40NzctMy44NC0xMC40NzctMTAuNTMzVjM2LjgzNmgtNS4wODN2LTguMTE3aDUuMDgzdi00LjQ2MWw4LjgwMi03LjQzNFYyOC43Mmg3LjYyNnY4LjExN2gtNy42MjZWNDcuNDNjMCAyLjkxMiAxLjkyMiAzLjU5MyAzLjcyIDMuNTkzYTkuNTM5IDkuNTM5IDAgMCAwIDMuNzIxLS44MDV2Ny45OTJjMCAuMDAyLTIuMzU1Ljk5Mi01Ljc2Ni45OTJaTS4wOCAxOS42MzRjMC0yLjg1IDIuMjMtNS4xNDIgNS4wODItNS4xNDJhNS4xMyA1LjEzIDAgMCAxIDUuMTQ1IDUuMTQyYzAgMi43ODgtMi4yOTMgNS4wOC01LjE0NSA1LjA4YTUuMDYzIDUuMDYzIDAgMCAxLTUuMDgyLTUuMDhaTTc1LjgwOSA1OC45MVYyOC43aDguNzI2djMwLjIxaC04LjcyNlptMjAuMTU0LTM5LjIwMmMwLTEuNC0uMTktMi43Ni0uNTM3LTQuMDUzYTE1LjUxIDE1LjUxIDAgMCAwLTEuNTY5LTMuNzcyIDE1LjY2NSAxNS42NjUgMCAwIDAtMi40ODktMy4yNDEgMTUuNzMyIDE1LjczMiAwIDAgMC03LjAxOC00LjA1IDE1LjY1OCAxNS42NTggMCAwIDAtNC4wNTItLjUzM2gtLjAwNmExNS43NSAxNS43NSAwIDAgMC00LjA0OS41M2MtMS4zNC4zNTctMi42MDUuODg4LTMuNzc3IDEuNTY1QTE1LjY3IDE1LjY3IDAgMCAwIDY5LjIyIDguNjRhMTUuNzcgMTUuNzcgMCAwIDAtMi40OTIgMy4yNDIgMTUuNjQ4IDE1LjY0OCAwIDAgMC0xLjU3MiAzLjc3NGwyLjI0Mi42MDJhMTMuNDI3IDEzLjQyNyAwIDAgMSAzLjQ2Mi01Ljk3OCAxMy40MjYgMTMuNDI2IDAgMCAxIDUuOTg0LTMuNDUgMTMuNDI2IDEzLjQyNiAwIDAgMSAzLjQ0OC0uNDVoLjAwNmMxLjE5NSAwIDIuMzUuMTU4IDMuNDU0LjQ1M2ExMy40MTIgMTMuNDEyIDAgMCAxIDUuOTggMy40NDljLjgxOS44MiAxLjUzMSAxLjc1IDIuMTE5IDIuNzZhMTMuMyAxMy4zIDAgMCAxIDEuNzkzIDYuNjY0di4wMTJhMTMuMzggMTMuMzggMCAwIDEtLjQ1MSAzLjQ0MyAxMy4yMTcgMTMuMjE3IDAgMCAxLTEuMzM0IDMuMjE5bDIuMDEgMS4xNmExNS41MzkgMTUuNTM5IDAgMCAwIDEuNTY2LTMuNzc4IDE1LjcgMTUuNyAwIDAgMCAuNTMtNC4wNDFsLS4wMDItLjAxMlpcXFwiIGZpbGw9XFxcIiNmZmZcXFwiLz48cGF0aCBkPVxcXCJNMTAwLjAyMyAxOS43MDhhMTkuNjU1IDE5LjY1NSAwIDAgMC0yLjY0NC05Ljg1NSAxOS44MSAxOS44MSAwIDAgMC03LjIyLTcuMjEzQTE5LjYxMiAxOS42MTIgMCAwIDAgODUuNDAzLjY3IDE5LjgxIDE5LjgxIDAgMCAwIDgwLjI5OCAwaC0uMDA2Yy0xLjc2NSAwLTMuNDczLjIzMy01LjEwMi42NjZhMTkuNTEzIDE5LjUxMyAwIDAgMC00Ljc1OSAxLjk2OSAxOS44MjQgMTkuODI0IDAgMCAwLTQuMDg2IDMuMTM0bDEuMjMxIDEuMjNhMTguMTA2IDE4LjEwNiAwIDAgMSAzLjcyNi0yLjg1NSAxNy44MDMgMTcuODAzIDAgMCAxIDQuMzQtMS43OTMgMTguMDg0IDE4LjA4NCAwIDAgMSA0LjY0OC0uNjA3aC4wMDVhMTcuOTUgMTcuOTUgMCAwIDEgMTIuNzEzIDUuMjYxIDE3LjkzMyAxNy45MzMgMCAwIDEgNS4yNzMgMTIuNzAzdi4wMTFhMTguMDMgMTguMDMgMCAwIDEtLjYwNyA0LjY0MyAxNy42NzUgMTcuNjc1IDAgMCAxLTEuNzk3IDQuMzM3IDE4LjAyMyAxOC4wMjMgMCAwIDEtMi44NTcgMy43MjNsMS4yMzEgMS4yMzFhMTkuNzQzIDE5Ljc0MyAwIDAgMCAzLjEzNi00LjA4NCAxOS42IDE5LjYgMCAwIDAgMS45Ny00Ljc1NmMuNDM0LTEuNjI1LjY2Ni0zLjMzMi42NjYtNS4wOTR2LS4wMVpcXFwiIGZpbGw9XFxcIiNmZmZcXFwiLz48cGF0aCBkPVxcXCJNOTAuOTQ1IDE2Ljg1NWExMC45NDggMTAuOTQ4IDAgMCAwLTEuMTA0LTIuNjU1IDExLjE1NSAxMS4xNTUgMCAwIDAtMS43NS0yLjI4IDExLjA0OCAxMS4wNDggMCAwIDAtMi4yODItMS43NDdBMTAuOTY0IDEwLjk2NCAwIDAgMCA4MC4zIDguNjk1aC0uMDA2Yy0uOTg3IDAtMS45NC4xMy0yLjg0OS4zNzJhMTAuOTEgMTAuOTEgMCAwIDAtMi42NiAxLjEgMTAuOTk0IDEwLjk5NCAwIDAgMC00LjAzNyA0LjAyNyAxMSAxMSAwIDAgMC0xLjQ4NCA1LjUxdi4wMTJhMTAuOTI0IDEwLjkyNCAwIDAgMCAxLjQ3NiA1LjUwNWwzLjAxMy0xLjczOGE3LjUzNSA3LjUzNSAwIDAgMS0xLjAxLTMuNzd2LS4wMWE3LjU1MyA3LjU1MyAwIDAgMSA3LjU0OC03LjUzM2guMDA2YTcuNTI0IDcuNTI0IDAgMCAxIDMuNzY5IDEuMDEyIDcuNTUgNy41NSAwIDAgMSAzLjUxMyA0LjU3MmMuMTY3LjYyLjI1OCAxLjI3Ni4yNTggMS45NTFoMy40NzljLjAwMy0uOTg0LS4xMjgtMS45NC0uMzcyLTIuODVaXFxcIiBmaWxsPVxcXCIjZmZmXFxcIi8+PHBhdGggZD1cXFwiTTg3LjU4NSAxNy43NjVhNy41NDIgNy41NDIgMCAwIDAtMS45NTUtMy4zOGwtMS42NCAxLjYzOWE1LjI2NCA1LjI2NCAwIDAgMSAxLjM1NCAyLjM0MyA1LjE4NCA1LjE4NCAwIDAgMSAwIDIuNzA1IDUuMjM5IDUuMjM5IDAgMCAxLTMuNjk4IDMuNjk1IDUuMTk1IDUuMTk1IDAgMCAxLTIuNzA3IDAgNS4yOTYgNS4yOTYgMCAwIDEtMS4yNi0uNTIxbC0xLjE2IDIuMDA4YTcuNTI4IDcuNTI4IDAgMCAwIDMuNzc0IDEuMDFjLjY3NyAwIDEuMzMtLjA5MSAxLjk1NC0uMjU2YTcuNTUzIDcuNTUzIDAgMCAwIDQuNTg0LTMuNTE3IDcuNTQ0IDcuNTQ0IDAgMCAwIDEuMDEzLTMuNzcxIDcuNSA3LjUgMCAwIDAtLjI1OS0xLjk1NVpcXFwiIGZpbGw9XFxcIiMxNTUzNjZcXFwiLz48cGF0aCBkPVxcXCJNOTEuODUzIDEzLjA0NmExMy40MzUgMTMuNDM1IDAgMCAwLTIuMTItMi43NjUgMTMuMzQzIDEzLjM0MyAwIDAgMC0yLjc2Ni0yLjExOCAxMy4yODcgMTMuMjg3IDAgMCAwLTYuNjc1LTEuNzljLTEuMTk3IDAtMi4zNTIuMTU5LTMuNDU2LjQ1NC0xLjE0MS4zMDMtMi4yMi43NTctMy4yMTggMS4zMzZhMTMuNDM2IDEzLjQzNiAwIDAgMC0yLjc2NyAyLjExOCAxMy4zMzQgMTMuMzM0IDAgMCAwLTIuMTIgMi43NjUgMTMuMjcyIDEzLjI3MiAwIDAgMC0xLjc5IDYuNjdoMi4zMmMwLS45ODYuMTMxLTEuOTQyLjM3NS0yLjg1MmExMS4wODggMTEuMDg4IDAgMCAxIDIuODU1LTQuOTQgMTEuMDAyIDExLjAwMiAwIDAgMSAyLjI4NC0xLjc1IDExLjAzIDExLjAzIDAgMCAxIDIuNjYtMS4xMDQgMTEuMDIgMTEuMDIgMCAwIDEgMi44NTQtLjM3NGMuOTg4IDAgMS45NDQuMTMgMi44NTUuMzc0YTExLjA5OSAxMS4wOTkgMCAwIDEgNC45NDMgMi44NTMgMTAuOTkgMTAuOTkgMCAwIDEgMS43NTEgMi4yODNjLjQ3Ny44MjYuODUyIDEuNzE2IDEuMTA0IDIuNjU4bDIuMjQyLS42MDJhMTMuMTk0IDEzLjE5NCAwIDAgMC0xLjMzLTMuMjE2WlxcXCIgZmlsbD1cXFwiIzE1NTM2NlxcXCIvPjxwYXRoIGQ9XFxcIk05Ny42NzQgMTUuMDYzYTE3Ljc5MSAxNy43OTEgMCAwIDAtMS44LTQuMzM2IDE4LjA0MyAxOC4wNDMgMCAwIDAtNi41ODYtNi41ODMgMTcuOTMgMTcuOTMgMCAwIDAtOC45OTYtMi40MDhjLTEuNjEyIDAtMy4xNzIuMjEzLTQuNjU3LjYxYTE3LjgxNyAxNy44MTcgMCAwIDAtNC4zMzkgMS43OTggMTguMDMyIDE4LjAzMiAwIDAgMC02LjU4NiA2LjU4M2wyLjAxMiAxLjE2M2ExNS42NzYgMTUuNjc2IDAgMCAxIDIuNDg5LTMuMjQ1Yy45NjUtLjk2NCAyLjA1Ny0xLjggMy4yNDYtMi40ODdhMTUuNzA2IDE1LjcwNiAwIDAgMSAzLjc3Ny0xLjU2OSAxNS42OCAxNS42OCAwIDAgMSA4LjExIDBjMS4zNC4zNTggMi42MDYuODkxIDMuNzc4IDEuNTY5YTE1LjY4NSAxNS42ODUgMCAwIDEgMy4yNDYgMi40ODcgMTUuNjc2IDE1LjY3NiAwIDAgMSAyLjQ4OSAzLjI0NSAxNS42ODQgMTUuNjg0IDAgMCAxIDEuNTY5IDMuNzc0IDE1LjY1NCAxNS42NTQgMCAwIDEgMCA4LjEwNmwyLjI0NS42MDFjLjM5Ny0xLjQ4My42MS0zLjA0My42MS00LjY1NGExNy44NzUgMTcuODc1IDAgMCAwLS42MDgtNC42NTRaXFxcIiBmaWxsPVxcXCIjMTU1MzY2XFxcIi8+PHBhdGggZD1cXFwiTTgwLjI5MyAyNC45NDRjMi44ODggMCA1LjIzLTIuMzQgNS4yMy01LjIyN2E1LjIyOSA1LjIyOSAwIDAgMC01LjIzLTUuMjI3IDUuMjI4IDUuMjI4IDAgMCAwLTUuMjMgNS4yMjcgNS4yMjggNS4yMjggMCAwIDAgNS4yMyA1LjIyN1ptMjAuNjE1IDE1LjQzNlYyOS41NDNoMi4zMDRWNDAuMzhoLTIuMzA0Wm02LjYxOC0zLjc4N3YzLjc4N2gtMi4xOTZ2LTcuNTc2aDIuMTY1di41MjVhMi41MzkgMi41MzkgMCAwIDEgMS43OTMtLjcxMmMxLjg1NiAwIDMuMDc5IDEuMjA2IDMuMDc5IDMuMzU1djQuNDA1aC0yLjE5NnYtNC4yMzVjMC0uODAyLS4zNzItMS40ODMtMS4yNTQtMS40ODMtMS4wMzMuMDAzLTEuMzkxLjc3NC0xLjM5MSAxLjkzNFptOS42NjYgMy44MTdjLTEuNjU1IDAtMi42MTQtLjk1OC0yLjYxNC0yLjYyOHYtMi45NTNoLTEuMjY4di0yLjAyNWgxLjI2OHYtMS4xMTFsMi4xOTYtMS44NTV2Mi45N2gxLjkwMnYyLjAyNGgtMS45MDJ2Mi42NDNjMCAuNzI3LjQ4Ljg5Ny45MjguODk3LjUxMSAwIC45MjgtLjIwMi45MjgtLjIwMnYxLjk5NHMtLjU4Ny4yNDctMS40MzguMjQ3Wm0xMC4xOTMtMy4yM2gtNS4zNTJjLjEyNS43NzUuNzU3IDEuMzYyIDEuNyAxLjM2Mi42MzUgMCAxLjAwNC0uMjY0IDEuMjM3LS42NWgyLjM2N2MtLjUxMSAxLjY0LTEuNjg2IDIuNjYtMy41NzMgMi42Ni0yLjE5NyAwLTMuOTU5LTEuNTMtMy45NTktMy45MSAwLTIuMjg5IDEuNjA5LTQuMDE5IDMuODM3LTQuMDE5IDIuNDg5IDAgMy43NTcgMS45NjMgMy43NTcgMy45ODggMCAuMTk4LS4wMTQuNTctLjAxNC41N1ptLTMuNzE1LTIuNjI4Yy0uODM0IDAtMS4zOTMuNTEtMS41MzIgMS4xNmgyLjk0Yy0uMDQ2LS42NjQtLjYxOS0xLjE2LTEuNDA4LTEuMTZabTEwLjIzOS0xLjMxNXYyLjE2NHMtLjU3My0uNTg3LTEuNDM5LS41ODdjLS42NjQgMC0xLjQwNy4zNTQtMS40MDcgMS40Njl2NC4wOTVoLTIuMTk3di03LjU3NWgyLjE2NXYuNjM1Yy0uMDE0IDAgLjQzNS0uNzQzIDEuNTE2LS43NDMuOTI4IDAgMS4zNjIuNTQyIDEuMzYyLjU0MlptMy40MDMgMy4zNTZ2My43ODdoLTIuMTk3di03LjU3NmgyLjE2NXYuNTI1YTIuNTQzIDIuNTQzIDAgMCAxIDEuNzk0LS43MTJjMS44NTYgMCAzLjA3OSAxLjIwNiAzLjA3OSAzLjM1NXY0LjQwNWgtMi4xOTd2LTQuMjM1YzAtLjgwMi0uMzcxLTEuNDgzLTEuMjU0LTEuNDgzLTEuMDM2LjAwMy0xLjM5Ljc3NC0xLjM5IDEuOTM0Wm0xMS4xNjYgMy4wMTVjLS40OTYuNjA0LTEuMjA2Ljk0NS0yLjE1MS45NDUtMS41MTUgMC0yLjczOC0uOTQ1LTIuNzM4LTIuMzk3IDAtMS40MzggMS4yMi0yLjE1IDIuOTM3LTIuMjQgMS4zMTQtLjA3NyAxLjczNC0uMjE2IDEuNzM0LS42NjQgMC0uNDM0LS40MDMtLjcyNi0xLjExMy0uNzI2LS44NjUgMC0xLjIzNy40MzQtMS4yODUuODk2aC0yLjEyYy4xMDgtMS42NTMgMS4zNDUtMi43OTkgMy40Mi0yLjc5OSAyLjAyNiAwIDMuMzI2IDEuMDk4IDMuMzI2IDMuMTU0djQuNjA2aC0xLjgxMWwtLjE5OS0uNzc1Wm0tMi42OTMtMS41NDVjMCAuNDM0LjM4Ni42OTQgMS4wMDUuNjk0LjgzNCAwIDEuNTAxLS40NjIgMS41MDEtMS40MDZ2LS4yNzhzLS40MDMuMTg0LTEuMjM3LjIzMmMtLjkxNC4wNDYtMS4yNjkuMzQtMS4yNjkuNzU4Wm05LjU1OCAyLjM0N2MtMS42NTUgMC0yLjYxNC0uOTU4LTIuNjE0LTIuNjI4di0yLjk1M2gtMS4yNjl2LTIuMDI1aDEuMjY5di0xLjExMWwyLjE5Ni0xLjg1NXYyLjk3aDEuOTAydjIuMDI0aC0xLjkwMnYyLjY0M2MwIC43MjcuNDguODk3LjkyOC44OTcuNTExIDAgLjkyOC0uMjAyLjkyOC0uMjAydjEuOTk0cy0uNTkuMjQ3LTEuNDM4LjI0N1ptMi45NTEtOS43NTNjMC0uNzEyLjU1Ni0xLjI4MiAxLjI2OC0xLjI4Mi43MTMgMCAxLjI4Ni41NzMgMS4yODYgMS4yODIgMCAuNjk1LS41NzMgMS4yNjgtMS4yODYgMS4yNjhhMS4yNjQgMS4yNjQgMCAwIDEtMS4yNjgtMS4yNjhabS4xNyA5LjcyMnYtNy41NzVoMi4xOTd2Ny41NzVoLTIuMTk3Wm0zLjc4OS0zLjc4NmMwLTIuMjcyIDEuNzQ4LTMuOTc0IDQuMDM4LTMuOTc0czQuMDM1IDEuNzAyIDQuMDM1IDMuOTc0YzAgMi4yNzEtMS43NDggMy45NTYtNC4wMzUgMy45NTYtMi4yOSAwLTQuMDM4LTEuNjg1LTQuMDM4LTMuOTU2Wm0yLjI0NSAwYzAgMS4xMTEuNzU3IDEuOTE3IDEuNzkzIDEuOTE3czEuNzk0LS44MDMgMS43OTQtMS45MTdjMC0xLjExMi0uNzU4LTEuOTE4LTEuNzk0LTEuOTE4cy0xLjc5My44MDMtMS43OTMgMS45MThabTkuNTQgMHYzLjc4N2gtMi4xOTZ2LTcuNTc2aDIuMTY1di41MjVhMi41NCAyLjU0IDAgMCAxIDEuNzkzLS43MTJjMS44NTYgMCAzLjA3OSAxLjIwNiAzLjA3OSAzLjM1NXY0LjQwNWgtMi4xOTZ2LTQuMjM1YzAtLjgwMi0uMzcyLTEuNDgzLTEuMjU0LTEuNDgzLTEuMDM2LjAwMy0xLjM5MS43NzQtMS4zOTEgMS45MzRabTExLjE2NyAzLjAxNWMtLjQ5Ny42MDQtMS4yMDYuOTQ1LTIuMTUxLjk0NS0xLjUxNiAwLTIuNzM5LS45NDUtMi43MzktMi4zOTcgMC0xLjQzOCAxLjIyMS0yLjE1IDIuOTM3LTIuMjQgMS4zMTQtLjA3NyAxLjczNC0uMjE2IDEuNzM0LS42NjQgMC0uNDM0LS40MDMtLjcyNi0xLjExMi0uNzI2LS44NjYgMC0xLjIzNy40MzQtMS4yODYuODk2aC0yLjExOWMuMTA3LTEuNjUzIDEuMzQ1LTIuNzk5IDMuNDE5LTIuNzk5IDIuMDI2IDAgMy4zMjYgMS4wOTggMy4zMjYgMy4xNTR2NC42MDZoLTEuODFsLS4xOTktLjc3NVptLTIuNjkzLTEuNTQ1YzAgLjQzNC4zODYuNjk0IDEuMDA0LjY5NC44MzUgMCAxLjUwMi0uNDYyIDEuNTAyLTEuNDA2di0uMjc4cy0uNDAzLjE4NC0xLjIzOC4yMzJjLS45MTEuMDQ2LTEuMjY4LjM0LTEuMjY4Ljc1OFptNi41MjQgMi4zMTdWMjkuNTQzaDIuMTk2VjQwLjM4aC0yLjE5NlptMTQuMDg5LTEwLjgzNyA0LjI0IDEwLjgzN2gtMi4zODFsLS44NjYtMi4xMzNoLTQuMTkxbC0uODUxIDIuMTMzaC0yLjM4MWw0LjIzOS0xMC44MzdoMi4xOTFabS0xLjA5OCAzLjEyMy0xLjM0NSAzLjUzOWgyLjY5bC0xLjM0NS0zLjU0Wm02LjM4NS0yLjAwOWMwLS43MTIuNTU2LTEuMjgyIDEuMjY5LTEuMjgyLjcxMiAwIDEuMjg1LjU3MyAxLjI4NSAxLjI4MiAwIC42OTUtLjU3MyAxLjI2OC0xLjI4NSAxLjI2OGExLjI2NCAxLjI2NCAwIDAgMS0xLjI2OS0xLjI2OFptLjE3IDkuNzIydi03LjU3NWgyLjE5N3Y3LjU3NWgtMi4xOTdabTMuNzg5LTMuNzg2YzAtMi4zOTYgMS43MTYtMy45NzMgMy44MTktMy45NzMuODY2IDAgMS41OTIuMzIzIDEuOTgxLjY2NHYtMy43NDFoMi4xOTZWNDAuMzhoLTIuMTY1di0uNTQyYy0uNC4zODYtMS4xNi43MTItMi4wMDkuNzEyLTIuMTA2IDAtMy44MjItMS41MTUtMy44MjItMy45NTZabTUuODMxIDBjMC0xLjE3NC0uNzcyLTEuOTgtMS43OTMtMS45OC0xLjAyMiAwLTEuNzk0LjgwMy0xLjc5NCAxLjk4IDAgMS4xNzUuNzcyIDEuOTggMS43OTQgMS45OCAxLjAyMSAwIDEuNzkzLS44MDUgMS43OTMtMS45OFpNMTAwLjE5NiA0OC4wOWg4LjUyMnYyLjExOGgtMy4xMXY4LjcxOWgtMi4zMDR2LTguNzE5aC0zLjExMVY0OC4wOWguMDAzWm0xMy44ODggMy42OTJ2Mi4xNjRzLS41NzMtLjU4Ny0xLjQzOS0uNTg3Yy0uNjY0IDAtMS40MDcuMzU0LTEuNDA3IDEuNDY5djQuMDk1aC0yLjE5NnYtNy41NzVoMi4xNjV2LjYzNWMtLjAxNCAwIC40MzQtLjc0MyAxLjUxNS0uNzQzLjkzMS4wMDMgMS4zNjIuNTQyIDEuMzYyLjU0MlptNS44OTEgNi4zNzFjLS40OTYuNjA0LTEuMjA2Ljk0NS0yLjE1MS45NDUtMS41MTUgMC0yLjczOC0uOTQ1LTIuNzM4LTIuMzk3IDAtMS40MzggMS4yMi0yLjE1IDIuOTM3LTIuMjQgMS4zMTQtLjA3NyAxLjczNC0uMjE2IDEuNzM0LS42NjQgMC0uNDM0LS40MDMtLjcyNi0xLjExMi0uNzI2LS44NjYgMC0xLjIzOC40MzQtMS4yODYuODk2aC0yLjEyYy4xMDgtMS42NTMgMS4zNDUtMi43OTkgMy40Mi0yLjc5OSAyLjAyNiAwIDMuMzI2IDEuMDk4IDMuMzI2IDMuMTU0djQuNjA1aC0xLjgxMWwtLjE5OS0uNzc0Wm0tMi42OS0xLjU0NWMwIC40MzQuMzg2LjY5NSAxLjAwNS42OTUuODM0IDAgMS41MDEtLjQ2MyAxLjUwMS0xLjQwN3YtLjI3OHMtLjQwMy4xODQtMS4yMzcuMjMyYy0uOTE0LjA0Ni0xLjI2OS4zNC0xLjI2OS43NThabTguNzIxLTEuNDd2My43ODdoLTIuMTk3di03LjU3NmgyLjE2NXYuNTI1YTIuNTQgMi41NCAwIDAgMSAxLjc5NC0uNzEyYzEuODU2IDAgMy4wNzkgMS4yMDUgMy4wNzkgMy4zNTV2NC40MDVoLTIuMTk3di00LjIzNWMwLS44MDItLjM3MS0xLjQ4My0xLjI1NC0xLjQ4My0xLjAzMy4wMDMtMS4zOS43NzQtMS4zOSAxLjkzNFptMTAuNzk1IDEuNjA3YzAtLjIzMi0uMTM5LS40MTYtLjc0NC0uNTQxbC0xLjE0My0uMjMzYy0xLjcxNy0uMzQtMi40NDQtMS4xNi0yLjQ0NC0yLjI4OCAwLTEuMzMgMS4wMDUtMi41MTkgMy4wOTQtMi41MTkgMi4xMDIgMCAzLjA0NyAxLjE3NCAzLjIwMSAyLjQ5aC0yLjA4OWMtLjEyNS0uNDE3LS40OC0uNjY0LTEuMTI5LS42NjQtLjYxOSAwLS45Ni4yMTYtLjk2LjUyNSAwIC4yMzMuMTg1LjM3Mi43NTguNDhsMS4xNDQuMjMyYzEuNjIzLjMyMyAyLjQyOSAxLjA4MyAyLjQyOSAyLjM4IDAgMS40NjktMS4wNjcgMi40OS0zLjE4NyAyLjQ5LTIuMTY1IDAtMy4zMjYtMS4wMjEtMy41NDItMi41OThoMi4yMTRjLjEyNS41MjQuNTExLjgwMiAxLjMyOC44MDIuNzQ2IDAgMS4wNy0uMjE1IDEuMDctLjU1NlptMTEuNTUyLTEuNjA4YzAgMi4zOTctMS43MTcgMy45NTctMy44MTkgMy45NTctLjg2NiAwLTEuNTkyLS4zMS0xLjk4MS0uNjV2My40NzdoLTIuMTk3VjUxLjM0OGgyLjE2NnYuNTQyYy40MDMtLjM4NiAxLjE2LS43MjYgMi4wMTItLjcyNiAyLjEwMiAwIDMuODE5IDEuNTE3IDMuODE5IDMuOTczWm0tNS44MzEgMGMwIDEuMTc1Ljc3NCAxLjk4IDEuNzkzIDEuOTggMS4wMjIgMCAxLjc5NC0uODAzIDEuNzk0LTEuOTggMC0xLjE3NC0uNzcyLTEuOTgtMS43OTQtMS45OC0xLjAxOS4wMDQtMS43OTMuODA2LTEuNzkzIDEuOThabTExLjg3OSAzLjAxNmMtLjQ5Ny42MDQtMS4yMDYuOTQ1LTIuMTUxLjk0NS0xLjUxNiAwLTIuNzM5LS45NDUtMi43MzktMi4zOTcgMC0xLjQzOCAxLjIyLTIuMTUgMi45MzctMi4yNCAxLjMxNC0uMDc3IDEuNzM0LS4yMTYgMS43MzQtLjY2NCAwLS40MzQtLjQwMy0uNzI2LTEuMTEyLS43MjYtLjg2NiAwLTEuMjM3LjQzNC0xLjI4Ni44OTZoLTIuMTJjLjEwOC0xLjY1MyAxLjM0Ni0yLjc5OSAzLjQyLTIuNzk5IDIuMDI2IDAgMy4zMjYgMS4wOTggMy4zMjYgMy4xNTR2NC42MDVoLTEuODExbC0uMTk4LS43NzRabS0yLjY5My0xLjU0NWMwIC40MzQuMzg2LjY5NSAxLjAwNC42OTUuODM1IDAgMS41MDEtLjQ2MyAxLjUwMS0xLjQwN3YtLjI3OHMtLjQwMy4xODQtMS4yMzcuMjMyYy0uOTExLjA0Ni0xLjI2OC4zNC0xLjI2OC43NThabTExLjU2Ni00LjgyNnYyLjE2NHMtLjU3My0uNTg3LTEuNDM5LS41ODdjLS42NjQgMC0xLjQwNy4zNTQtMS40MDcgMS40Njl2NC4wOTVoLTIuMTk3di03LjU3NWgyLjE2NnYuNjM1Yy0uMDE1IDAgLjQzNC0uNzQzIDEuNTE1LS43NDMuOTI4LjAwMyAxLjM2Mi41NDIgMS4zNjIuNTQyWm04LjQyOCAzLjk0NGgtNS4zNTJjLjEyNS43NzQuNzU4IDEuMzYgMS43MDMgMS4zNi42MzYgMCAxLjAwNS0uMjYzIDEuMjM3LS42NDloMi4zNjdjLS41MTEgMS42NC0xLjY4NiAyLjY2LTMuNTczIDIuNjYtMi4xOTYgMC0zLjk1OS0xLjUzLTMuOTU5LTMuOTEgMC0yLjI4OSAxLjYxLTQuMDE5IDMuODM3LTQuMDE5IDIuNDg5IDAgMy43NTcgMS45NjMgMy43NTcgMy45ODggMCAuMi0uMDE3LjU3LS4wMTcuNTdabS0zLjcxMS0yLjYyN2MtLjgzNSAwLTEuMzk0LjUxLTEuNTMzIDEuMTZoMi45NGMtLjA0NS0uNjY2LS42MTktMS4xNi0xLjQwNy0xLjE2Wm03LjM5MiAyLjAzOXYzLjc4N2gtMi4xOTZ2LTcuNTc2aDIuMTY1di41MjVhMi41MzggMi41MzggMCAwIDEgMS43OTMtLjcxMmMxLjg1NiAwIDMuMDc5IDEuMjA1IDMuMDc5IDMuMzU1djQuNDA1aC0yLjE5NnYtNC4yMzVjMC0uODAyLS4zNzItMS40ODMtMS4yNTQtMS40ODMtMS4wMzYuMDAzLTEuMzkxLjc3NC0xLjM5MSAxLjkzNFptMTEuNTY3LjgzN2gyLjQxMmMtLjM1NyAxLjg0LTEuNzQ4IDMuMTIzLTMuNzkxIDMuMTIzLTIuMjkgMC0zLjk5LTEuNjg1LTMuOTktMy45NTcgMC0yLjI3MSAxLjcwMy0zLjk3MyAzLjk5LTMuOTczIDEuOTk1IDAgMy4zODggMS4yMzYgMy42NjYgMy4wMjloLTIuNDE1Yy0uMTctLjU3My0uNjY0LS45NTktMS4zMjgtLjk1OS0uOTI4IDAtMS42NzEuNzg5LTEuNjcxIDEuOSAwIDEuMTEyLjc0MyAxLjkgMS43MDMgMS45LjcxMi4wMDQgMS4yNC0uNDE2IDEuNDI0LTEuMDYzWm01LjEwMiA2LjAyN2MtLjk5IDAtMS40ODQtLjI2NC0xLjQ4NC0uMjY0di0yLjAxcy40NDguMjMyLjkyOC4yMzJjLjQ5NiAwIDEuMTQzLS4xODQgMS4yOTktMS4wMzVsLTIuOTU0LTcuNTc1aDIuNDQ0bDEuNzE3IDQuNjk5IDEuNzQ4LTQuN2gyLjM0OWwtMy4wNzkgNy43Yy0uODAzIDIuMDI2LTEuNDUzIDIuOTUzLTIuOTY4IDIuOTUzWm0xMS41OTgtMy4wNzVWNDguMDloMi4zMDV2MTAuODM3aC0yLjMwNVptNi42MTgtMy43ODl2My43ODdoLTIuMTk3di03LjU3NmgyLjE2NnYuNTI1YTIuNTM4IDIuNTM4IDAgMCAxIDEuNzkzLS43MTJjMS44NTYgMCAzLjA3OSAxLjIwNSAzLjA3OSAzLjM1NXY0LjQwNWgtMi4xOTZ2LTQuMjM1YzAtLjgwMi0uMzcyLTEuNDgzLTEuMjU1LTEuNDgzLTEuMDMzLjAwMy0xLjM5Ljc3NC0xLjM5IDEuOTM0Wm02LjU0MS01LjkzNmMwLS43MTIuNTU2LTEuMjgyIDEuMjY4LTEuMjgyczEuMjg2LjU3MyAxLjI4NiAxLjI4MmExLjI4IDEuMjggMCAwIDEtMS4yODYgMS4yNjggMS4yNjQgMS4yNjQgMCAwIDEtMS4yNjgtMS4yNjhabS4xNyA5LjcyNXYtNy41NzVoMi4xOTZ2Ny41NzVoLTIuMTk2Wm03LjI1NC4wMjljLTEuNjU1IDAtMi42MTQtLjk1OS0yLjYxNC0yLjYzdi0yLjk1MmgtMS4yNjhWNTEuMzVoMS4yNjh2LTEuMTExbDIuMTk2LTEuODU1djIuOTdoMS45MDJ2Mi4wMjRoLTEuOTAydjIuNjQzYzAgLjcyNi40OC44OTcuOTI4Ljg5Ny41MTEgMCAuOTI4LS4yMDIuOTI4LS4yMDJ2MS45OTRzLS41ODcuMjQ3LTEuNDM4LjI0N1ptMi45NTQtOS43NTRjMC0uNzEyLjU1Ni0xLjI4MiAxLjI2OC0xLjI4MnMxLjI4Ni41NzMgMS4yODYgMS4yODJhMS4yOCAxLjI4IDAgMCAxLTEuMjg2IDEuMjY4IDEuMjY0IDEuMjY0IDAgMCAxLTEuMjY4LTEuMjY4Wm0uMTcgOS43MjV2LTcuNTc1aDIuMTk2djcuNTc1aC0yLjE5NlptOC43NTQtLjc3NGMtLjQ5Ni42MDQtMS4yMDYuOTQ1LTIuMTUxLjk0NS0xLjUxNSAwLTIuNzM4LS45NDUtMi43MzgtMi4zOTcgMC0xLjQzOCAxLjIyLTIuMTUgMi45MzctMi4yNCAxLjMxNC0uMDc3IDEuNzM0LS4yMTYgMS43MzQtLjY2NCAwLS40MzQtLjQwMy0uNzI2LTEuMTEzLS43MjYtLjg2NSAwLTEuMjM3LjQzNC0xLjI4NS44OTZoLTIuMTJjLjEwOC0xLjY1MyAxLjM0NS0yLjc5OSAzLjQxOS0yLjc5OSAyLjAyNyAwIDMuMzI2IDEuMDk4IDMuMzI2IDMuMTU0djQuNjA1aC0xLjgxbC0uMTk5LS43NzRabS0yLjY5My0xLjU0NWMwIC40MzQuMzg2LjY5NSAxLjAwNS42OTUuODM0IDAgMS41MDEtLjQ2MyAxLjUwMS0xLjQwN3YtLjI3OHMtLjQwMy4xODQtMS4yMzcuMjMyYy0uOTE0LjA0Ni0xLjI2OS4zNC0xLjI2OS43NThabTkuNTU4IDIuMzQ4Yy0xLjY1NSAwLTIuNjE0LS45NTktMi42MTQtMi42M3YtMi45NTJoLTEuMjY4VjUxLjM1aDEuMjY4di0xLjExMWwyLjE5Ny0xLjg1NXYyLjk3aDEuOTAxdjIuMDI0aC0xLjkwMXYyLjY0M2MwIC43MjYuNDc5Ljg5Ny45MjguODk3LjUxIDAgLjkyOC0uMjAyLjkyOC0uMjAydjEuOTk0cy0uNTg4LjI0Ny0xLjQzOS4yNDdabTIuOTUxLTkuNzU0YzAtLjcxMi41NTYtMS4yODIgMS4yNjktMS4yODIuNzEyIDAgMS4yODUuNTczIDEuMjg1IDEuMjgyIDAgLjY5NS0uNTczIDEuMjY4LTEuMjg1IDEuMjY4YTEuMjY0IDEuMjY0IDAgMCAxLTEuMjY5LTEuMjY4Wm0uMTcgOS43MjV2LTcuNTc1aDIuMTk3djcuNTc1aC0yLjE5N1ptMTAuOTgzLTcuNTc1LTIuNjkxIDcuNTc1aC0yLjI1OGwtMi42OTEtNy41NzVoMi4zMzZsMS40ODQgNC42ODUgMS40ODQtNC42ODVoMi4zMzZabTcuOTggNC4zNzRoLTUuMzUyYy4xMjUuNzc0Ljc1NyAxLjM2IDEuNzAyIDEuMzYuNjM2IDAgMS4wMDUtLjI2MyAxLjIzOC0uNjQ5aDIuMzY2Yy0uNTEgMS42NC0xLjY4NSAyLjY2LTMuNTcyIDIuNjYtMi4xOTcgMC0zLjk1OS0xLjUzLTMuOTU5LTMuOTEgMC0yLjI4OSAxLjYwOS00LjAxOSAzLjgzNy00LjAxOSAyLjQ4OCAwIDMuNzYgMS45NjMgMy43NiAzLjk4OC0uMDA2LjItLjAyLjU3LS4wMi41N1ptLTMuNzEyLTIuNjI3Yy0uODM0IDAtMS4zOTMuNTEtMS41MzIgMS4xNmgyLjk0Yy0uMDQ5LS42NjYtLjYxOS0xLjE2LTEuNDA4LTEuMTZaXFxcIiBmaWxsPVxcXCIjZmZmXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIj48cGF0aCBmaWxsPVxcXCIjZmZmXFxcIiBzdHJva2U9XFxcIiMxNTUzNjZcXFwiIGQ9XFxcIm03LjMzMyAxMi4zNjEtLjIyMy4xMTIuMjIzLjQ0N2guNXYtLjI1bC44MzQtLjQxNy0xLjMzNC4xMDhabTAgMFY5LjMzM3YzLjAyOFptLTUuNS04LjI0OHYtLjc4YTEuNSAxLjUgMCAwIDEgMS41LTEuNWg5LjMzNGExLjUgMS41IDAgMCAxIDEuNSAxLjV2Ljc3MmExLjQ5OSAxLjQ5OSAwIDAgMS0uMTQ1LjU5M2wtLjA0OS4xMDJ2LjA0YTEuMzcxIDEuMzcxIDAgMCAxLS4yNDYuMzMydi4wMDFsLTQuMDggNC4wOEw5LjUgOS40djMuMjY2YzAgLjAzLS4wMDkuMDYtLjAyNS4wODZsLjQyNS4yNjMtLjQyNS0uMjYzYS4xNjcuMTY3IDAgMCAxLS4wNjYuMDYxbC0yLjY2NiAxLjMzMy0uMDA0LjAwMmEuMTY3LjE2NyAwIDAgMS0uMDc1LjAxOS4xNjcuMTY3IDAgMCAxLS4wODctLjAyNS4xNjYuMTY2IDAgMCAxLS4wNzctLjE0MVY5LjM5OWwtLjE0OC0uMTQ3LTQuMTA2LTQuMDhBMS4zNzMgMS4zNzMgMCAwIDEgMiA0Ljg0di0uMDNsLS4wNDItLjA5N2ExLjUgMS41IDAgMCAxLS4xMjUtLjZaTTYgOS42MDdWMTRhLjY2Ni42NjYgMCAwIDAgLjY2Ny42NjcuNjY2LjY2NiAwIDAgMCAuMy0uMDc0TDYgOS42MDdabTMuMTY3LS4yNzRWOS4zM2EuMTY3LjE2NyAwIDAgMSAuMDQ4LS4xMThsMy41MzEtMy41MjUuODU2LS44NTRIMi4zOTdsLjg1Ni44NTQgMy41MzIgMy41MjVhLjE2Ny4xNjcgMCAwIDEgLjA0OC4xMTh2NC4zOTlsLjcyNC0uMzYyTDguODkgMTIuN2wuMjc3LS4xMzhWOS4zMzNaTTEzLjMzMyA0LjVoLjVWMy4zMzNhMS4xNjcgMS4xNjcgMCAwIDAtMS4xNjYtMS4xNjZIMy4zMzNhMS4xNjcgMS4xNjcgMCAwIDAtMS4xNjYgMS4xNjZWNC41aDExLjE2NlpcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgOTUwIDI5MlxcXCI+PGcgb3BhY2l0eT1cXFwiLjNcXFwiPjxwYXRoIG9wYWNpdHk9XFxcIi40XFxcIiBkPVxcXCJNMzkzLjM4MyA1MzcuNTkyYTIxMy4wNTggMjEzLjA1OCAwIDAgMS01NS4xMzMtNy4yNDhjLTE4LjE5Ni00Ljg2LTM1LjQxOS0xMi4wOS01MS4zNDctMjEuMzE2LTE2LjE2Ni05LjM0NS0zMS4wMDMtMjAuNzAzLTQ0LjExNy0zMy44MTctMTMuMTEzLTEzLjExMy0yNC40NzEtMjcuOTY3LTMzLjgxNi00NC4xMTZhMjExLjgyNiAyMTEuODI2IDAgMCAxLTIxLjMxNy01MS4zNDcgMjEyLjkwNiAyMTIuOTA2IDAgMCAxLTcuMjQ3LTU1LjEzMyAyMTMuMDkgMjEzLjA5IDAgMCAxIDcuMjQ3LTU1LjEzM2M0Ljg2MS0xOC4xOTYgMTIuMDkxLTM1LjQyIDIxLjMxNy01MS4zNDhsNTYuNjg1IDMyLjcyNWExNDcuMjAzIDE0Ny4yMDMgMCAwIDAtMTQuNzY4IDM1LjU3MyAxNDcuNTMxIDE0Ny41MzEgMCAwIDAtNS4wMTQgMzguMTgzIDE0Ny41MyAxNDcuNTMgMCAwIDAgNS4wMTQgMzguMTgyIDE0Ni41MjcgMTQ2LjUyNyAwIDAgMCAxNC43NjggMzUuNTczYzYuNDggMTEuMTg3IDE0LjM0MSAyMS40NyAyMy40MzEgMzAuNTU5IDkuMDg5IDkuMDg5IDE5LjM3MiAxNi45NTEgMzAuNTU5IDIzLjQzMWExNDcuMjAzIDE0Ny4yMDMgMCAwIDAgMzUuNTczIDE0Ljc2OCAxNDcuNjI3IDE0Ny42MjcgMCAwIDAgMzguMTgyIDUuMDE0YzEzLjIgMCAyNi4wMDYtMS43NTcgMzguMTgyLTUuMDE0YTE0Ni40OTQgMTQ2LjQ5NCAwIDAgMCAzNS41NzMtMTQuNzY4YzExLjE4Ny02LjQ4IDIxLjQ3LTE0LjM0MiAzMC41Ni0yMy40MzFsNDYuMjgyIDQ2LjI4MmMtMTMuMTE0IDEzLjExNC0yNy45NjcgMjQuNDcyLTQ0LjExNyAzMy44MTdhMjExLjc1IDIxMS43NSAwIDAgMS01MS4zNDcgMjEuMzE2IDIxMy4yOCAyMTMuMjggMCAwIDEtNTUuMTUgNy4yNDhaTTU4MS42NjggNjUwLjc0YzI4LjU4MS0xNi41MjQgNTQuODI2LTM2LjYxMyA3OC4wMTgtNTkuODA1IDIzLjE5Mi0yMy4xOTMgNDMuMjgxLTQ5LjQ1NSA1OS44MDYtNzguMDE5IDE2LjMwMy0yOC4xNzIgMjkuMDc1LTU4LjYyOSAzNy42ODctOTAuODA4YTM3Ni41OTIgMzc2LjU5MiAwIDAgMCAxMi44MDctOTcuNDc2IDM3Ny4yMyAzNzcuMjMgMCAwIDAtMTIuODA3LTk3LjQ3N2MtOC41OTUtMzIuMTc5LTIxLjM4NC02Mi42MzYtMzcuNjg3LTkwLjgwOC0xNi41NDItMjguNTgxLTM2LjYxNC01NC44MjYtNTkuODA2LTc4LjAxOC0yMy4xOTItMjMuMTkzLTQ5LjQ1NC00My4yODEtNzguMDE4LTU5LjgwNi0yOC4xNzItMTYuMzAzLTU4LjYyOS0yOS4wOTMtOTAuODA5LTM3LjY4N2EzNzYuNTkyIDM3Ni41OTIgMCAwIDAtOTcuNDc2LTEyLjgwN3Y2NS40NWMyNy44NjUgMCA1NC44NDMgMy43MTcgODAuNTQzIDEwLjU5IDI2LjU4NSA3LjExMSA1MS43MzkgMTcuNjY3IDc1LjAxNyAzMS4xMzkgMjMuNjAxIDEzLjY2IDQ1LjMxIDMwLjI1MiA2NC40NjEgNDkuNDIgMTkuMTY3IDE5LjE2OCAzNS43NiA0MC44NiA0OS40MiA2NC40NjEgMTMuNDcyIDIzLjI3OCAyNC4wMjggNDguNDMxIDMxLjEzOSA3NS4wMTdhMzExLjI2NiAzMTEuMjY2IDAgMCAxIDEwLjU5IDgwLjU0M2MwIDI3Ljg2NS0zLjcxNyA1NC44NDMtMTAuNTkgODAuNTQyLTcuMTExIDI2LjU4Ni0xNy42NjcgNTEuNzM5LTMxLjEzOSA3NS4wMTctMTMuNjYgMjMuNjAyLTMwLjI1MyA0NS4zMS00OS40MiA2NC40NjEtMTkuMTUxIDE5LjE1MS00MC44NiAzNS43NjEtNjQuNDYxIDQ5LjQyLTIzLjI3OCAxMy40NzItNDguNDMyIDI0LjAyOC03NS4wMTcgMzEuMTM5bDE2LjkzMyA2My4yMzRjMzIuMTk3LTguNjQ2IDYyLjYzNy0yMS40MTkgOTAuODA5LTM3LjcyMlptLTU2LjkwNyAxNjQuMTg4YTUwNC4zMTIgNTA0LjMxMiAwIDAgMCAxMjIuNDI1LTUwLjczMyA1MTAuNCA1MTAuNCAwIDAgMCAxMDUuMDgyLTgwLjcxM0E1MDkuMjI2IDUwOS4yMjYgMCAwIDAgODMyLjk4MSA1NzguNGE1MDQuNzMgNTA0LjczIDAgMCAwIDUwLjczMy0xMjIuNDI1YzExLjIwNC00MS45MTYgMTcuMjA3LTg1Ljk0OCAxNy4yMDctMTMxLjM3NyAwLTQ1LjQ0Ny02LjAwMy04OS40NzktMTcuMjA3LTEzMS4zNzhhNTA0LjM0MyA1MDQuMzQzIDAgMCAwLTUwLjczMy0xMjIuNDI1QzgxMC43MDkgMzIuMjg4IDc4My41MDktMy4wMyA3NTIuMjY4LTM0LjI4N0E1MDkuMjE3IDUwOS4yMTcgMCAwIDAgNjQ3LjE4Ni0xMTVsLTMyLjc5MyA1Ni43ODdjMzMuNTQzIDE5LjQwNyA2NC4zNTkgNDIuOTkxIDkxLjU5MiA3MC4yMDggMjcuMjE3IDI3LjIxNyA1MC44MDIgNTguMDUgNzAuMjA5IDkxLjU3NiAxOS4xMzMgMzMuMDY2IDM0LjE0IDY4LjgxIDQ0LjIzNiAxMDYuNTgyIDkuNzU0IDM2LjUxMSAxNS4wNDEgNzQuODQ3IDE1LjA0MSAxMTQuNDI4IDAgMzkuNTgtNS4yNyA3Ny45MTYtMTUuMDQxIDExNC40MjYtMTAuMDk2IDM3Ljc3My0yNS4xMDMgNzMuNTE3LTQ0LjIzNiAxMDYuNTgzLTE5LjQwNyAzMy41NDQtNDIuOTkyIDY0LjM1OS03MC4yMDkgOTEuNTc2LTI3LjIxNiAyNy4yMTctNTguMDQ5IDUwLjgwMS05MS41OTIgNzAuMjA4LTMzLjA2NiAxOS4xMzQtNjguODEgMzQuMTQtMTA2LjU4MyA0NC4yMzYtMzYuNTExIDkuNzU0LTc0Ljg0NiAxNS4wNDEtMTE0LjQyNyAxNS4wNDEtMzkuNTggMC03Ny45MTYtNS4yODctMTE0LjQyNy0xNS4wNDFsLTE2Ljk1MSA2My4yODRjNDEuOSAxMS4yMDQgODUuOTMxIDE3LjIwNyAxMzEuMzc4IDE3LjIwNyA0NS40NDcuMDM0IDg5LjQ3OC01Ljk2OSAxMzEuMzc4LTE3LjE3M1pcXFwiIGZpbGw9XFxcInVybCgjZ3JvdXBfc3ZnX19hKVxcXCIvPjxwYXRoIGQ9XFxcIk0zOTMuMzgzIDc2Ni42ODZhNDQyLjQ4OSA0NDIuNDg5IDAgMCAxLTExNC4xMDMtMTQuOTM4Yy0zNy43NzMtMTAuMDYyLTczLjUxNi0yNS4wNTItMTA2LjU5OS00NC4xNTFsMzIuNzI1LTU2LjY4NWMyOC4xODkgMTYuMjY5IDU4LjY0NiAyOS4wMjQgOTAuODI1IDM3LjYwMmEzNzcuMTI2IDM3Ny4xMjYgMCAwIDAgOTcuMTUyIDEyLjcyMmguMzA3YTM3Ni45NTggMzc2Ljk1OCAwIDAgMCA5Ny40MjUtMTIuODc1YzMyLjE0Ni04LjYxMiA2Mi41NjgtMjEuNDAyIDkwLjcyMy0zNy43MDUgMjguNTQ3LTE2LjUyNCA1NC43NzUtMzYuNjEzIDc3LjkzMy01OS43ODggMjMuMTU5LTIzLjE3NiA0My4yMy00OS40MDQgNTkuNzU1LTc3Ljk1MSAxNi4yODYtMjguMTU0IDI5LjA1OS01OC41NiAzNy42Ny05MC43MjNhMzc2LjU3NSAzNzYuNTc1IDAgMCAwIDEyLjgyNC05Ny4zOXYtLjE4OGMwLTMzLjYyOS00LjQ2Ny02Ni4yMDEtMTIuNzM4LTk3LjIzNy04LjU3OC0zMi4xNjMtMjEuMzM0LTYyLjYwMy0zNy42MDMtOTAuNzc1LTE2LjUwNy0yOC41ODEtMzYuNTYyLTU0Ljg0My01OS43Mi03OC4wMzUtMjMuMTc1LTIzLjIxLTQ5LjQwMy00My4zMzItNzcuOTUtNTkuODkxLTI4LjE3Mi0xNi4zMzctNTguNjEyLTI5LjE0NC05MC43NzQtMzcuNzczbDE2LjkzMy02My4yMzNjMzcuNzczIDEwLjEzIDczLjUgMjUuMTUzIDEwNi41NjYgNDQuMzIxIDMzLjUyNyAxOS40MjQgNjQuMzA4IDQzLjA0MiA5MS41MDcgNzAuMjc2IDI3LjE4MyAyNy4yMzQgNTAuNzUxIDU4LjA2NyA3MC4xMjMgOTEuNjEgMTkuMSAzMy4wNjYgMzQuMDcyIDY4Ljc5MyA0NC4xNTEgMTA2LjU2NmE0NDIuMjggNDQyLjI4IDAgMCAxIDE0Ljk3MyAxMTQuMTcxdi4xODhhNDQyLjc4NCA0NDIuNzg0IDAgMCAxLTE1LjA1OCAxMTQuMzQxYy0xMC4wOTYgMzcuNzM5LTI1LjA4NiA3My40NDgtNDQuMjE5IDEwNi40OTctMTkuMzkgMzMuNTEtNDIuOTU3IDY0LjMwOC03MC4xNCA5MS41MjUtMjcuMiAyNy4yLTU3Ljk4MSA1MC43ODQtOTEuNDkxIDcwLjE5MS0zMy4wMzIgMTkuMTM0LTY4Ljc1OCAzNC4xNDEtMTA2LjQ5NyA0NC4yNTNhNDQyLjA1MiA0NDIuMDUyIDAgMCAxLTExNC4zNTkgMTUuMDkyYy0uMTM2LS4wMTctLjIzOC0uMDE3LS4zNDEtLjAxN1ptLjMwNyAxMTQuNTQ3YzQ5LjgxMy0uMDM1IDk4LjA5LTYuNjM0IDE0NC4wMzItMTguOTI5YTU1My4zMTYgNTUzLjMxNiAwIDAgMCAxMzQuMTc0LTU1LjY2MiA1NTcuODg3IDU1Ny44ODcgMCAwIDAgMTE1LjE0My04OC41MDYgNTU4LjkzOCA1NTguOTM4IDAgMCAwIDg4LjQ1NS0xMTUuMTc4IDU1Mi44NjMgNTUyLjg2MyAwIDAgMCA1NS42MTEtMTM0LjE3NEM5NDMuNCA0MjIuODQyIDk0OS45ODMgMzc0LjU4MiA5NTAgMzI0Ljc4NnYtLjE4N2MwLTQ5Ljc0NC02LjU2Ni05Ny45NTQtMTguODEtMTQzLjg0NGE1NTMuNDU0IDU1My40NTQgMCAwIDAtNTUuNTQyLTEzNC4yNDNDODUxLjI0NSA0LjI3MiA4MjEuNDUzLTM0LjQ1NiA3ODcuMjEtNjguNzVsLTM0LjcyIDM0LjcyYTUwOC45MDggNTA4LjkwOCAwIDAgMSA4MC42MjcgMTA1LjA5OSA1MDQuNDY1IDUwNC40NjUgMCAwIDEgNTAuNjMxIDEyMi4zOTFjMTEuMTUzIDQxLjgzMSAxNy4xMzkgODUuNzc3IDE3LjEzOSAxMzEuMTM5di4xODdjLS4wMTcgNDUuNDEzLTYuMDIgODkuNDEtMTcuMjI0IDEzMS4yOTNhNTA0LjkwMiA1MDQuOTAyIDAgMCAxLTUwLjY5OSAxMjIuMzIzIDUwOS43MTUgNTA5LjcxNSAwIDAgMS04MC42NjIgMTA1LjAxMyA1MDkuMjc4IDUwOS4yNzggMCAwIDEtMTA0Ljk5NiA4MC42OTYgNTA0LjMyIDUwNC4zMiAwIDAgMS0xMjIuMzIzIDUwLjc1Yy00MS44ODMgMTEuMjIxLTg1Ljg5NyAxNy4yNDEtMTMxLjMyNyAxNy4yNzVoLS4zMDdjLTQ1LjMyNyAwLTg5LjIzOS01Ljk2OC0xMzEuMDU0LTE3LjEyMWE1MDQuODk5IDUwNC44OTkgMCAwIDEtMTIyLjQ0Mi01MC42MzFBNTA5LjI4NCA1MDkuMjg0IDAgMCAxIDM0LjcyIDY4My43MjJMMCA3MTguNDQzYTU1OS4yMjIgNTU5LjIyMiAwIDAgMCAxMTUuMjk3IDg4LjQ3MiA1NTMuNTYzIDU1My41NjMgMCAwIDAgMTM0LjI5NCA1NS41NDJjNDUuODU2IDEyLjIyNyA5NC4wMzEgMTguNzc2IDE0My43NTggMTguNzc2aC4zNDFabTgwLjQ3NC0yNTYuMTA2YTMwOS4yOCAzMDkuMjggMCAwIDAgNzQuOTMyLTMxLjE1NmMyMy41NjgtMTMuNjU5IDQ1LjI0Mi0zMC4yNTIgNjQuMzc2LTQ5LjM4NiAxOS4xMzQtMTkuMTUxIDM1LjcwOS00MC44MDggNDkuMzUyLTY0LjM5MyAxMy40NTUtMjMuMjQzIDI0LjAxMS00OC4zOCAzMS4xMDUtNzQuOTMxYTMxMS4zOTYgMzExLjM5NiAwIDAgMCAxMC42MDctODAuNDU3di0uMTg4YzAtMjcuNzgtMy42ODMtNTQuNjczLTEwLjUwNS04MC4yODctNy4wNzctMjYuNTY4LTE3LjYxNi01MS43MjItMzEuMDU0LTc1LTEzLjYyNS0yMy42MTgtMzAuMjAxLTQ1LjMxLTQ5LjMzNC02NC40NzgtMTkuMTM0LTE5LjE4NS00MC44MDktMzUuODExLTY0LjM5My00OS40ODgtMjMuMjYxLTEzLjQ5LTQ4LjQxNC0yNC4wOC03NS0zMS4yMjVhMzExLjQ1MSAzMTEuNDUxIDAgMCAwLTgwLjU2LTEwLjY3NWgtLjMwN2EzMTAuOTk3IDMxMC45OTcgMCAwIDAtODAuMzAzIDEwLjUyMmMtMjYuNjIgNy4wOTQtNTEuODA4IDE3LjY1LTc1LjEyIDMxLjEyMmw0OS4wOTcgODUuMDI3YTIxMS42NzggMjExLjY3OCAwIDAgMSA1MS40MzItMjEuMjk5IDIxMy4zMTQgMjEzLjMxNCAwIDAgMSA1NC44OTQtNy4xOGguMzA3YTIxMy4yIDIxMy4yIDAgMCAxIDU1LjE1IDcuMzMzIDIxMS4yNDUgMjExLjI0NSAwIDAgMSA1MS4zMzEgMjEuNDAyYzE2LjEzMiA5LjM3OSAzMC45NTEgMjAuNzcxIDQ0LjA0OCAzMy45MDIgMTMuMDggMTMuMTMxIDI0LjQyIDI3Ljk4NCAzMy43NDggNDQuMTM0YTIxMS40MDggMjExLjQwOCAwIDAgMSAyMS4yMzEgNTEuMzMgMjEzLjI3NiAyMTMuMjc2IDAgMCAxIDcuMTggNTQuODc3di4xODhhMjEyLjkxMSAyMTIuOTExIDAgMCAxLTcuMjY1IDU1LjAzYy00Ljg2IDE4LjE2Mi0xMi4wOTEgMzUuMzUyLTIxLjI4MiA1MS4yNjItOS4zMjggMTYuMTMzLTIwLjY2OSAzMC45NTItMzMuNzY2IDQ0LjA0OS0xMy4wNzkgMTMuMDk2LTI3Ljg5OSAyNC40NTQtNDQuMDMxIDMzLjc5OS0xNS45MTEgOS4yMjYtMzMuMSAxNi40NTYtNTEuMjYyIDIxLjMzNGEyMTIuNDk1IDIxMi40OTUgMCAwIDEtNTUuMDY1IDcuMjk4djk4LjE3NmEzMTIuMDkgMzEyLjA5IDAgMCAwIDgwLjQ1Ny0xMC42NDJabTY2Ljc0Ny0zMDAuNTExYzAtODEuNDgtNjYuMDQ3LTE0Ny41MjctMTQ3LjUyOC0xNDcuNTI3LTgxLjQ4IDAtMTQ3LjUyNyA2Ni4wNDctMTQ3LjUyNyAxNDcuNTI3IDAgODEuNDggNjYuMDQ3IDE0Ny41MjcgMTQ3LjUyNyAxNDcuNTI3IDgxLjQ4MSAwIDE0Ny41MjgtNjYuMDY0IDE0Ny41MjgtMTQ3LjUyN1pcXFwiIGZpbGw9XFxcInVybCgjZ3JvdXBfc3ZnX19iKVxcXCIvPjwvZz48ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XFxcImdyb3VwX3N2Z19fYVxcXCIgeDE9XFxcIjEyNy44OTVcXFwiIHkxPVxcXCI1ODIuNjQ3XFxcIiB4Mj1cXFwiODc4LjM0MlxcXCIgeTI9XFxcIjE0OS4zNzdcXFwiIGdyYWRpZW50VW5pdHM9XFxcInVzZXJTcGFjZU9uVXNlXFxcIj48c3RvcCBvZmZzZXQ9XFxcIi42XFxcIiBzdG9wLWNvbG9yPVxcXCIjZmZmXFxcIi8+PHN0b3Agb2Zmc2V0PVxcXCIxXFxcIiBzdG9wLWNvbG9yPVxcXCIjZmZmXFxcIiBzdG9wLW9wYWNpdHk9XFxcIjBcXFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cXFwiZ3JvdXBfc3ZnX19iXFxcIiB4MT1cXFwiLTExLjA3MVxcXCIgeTE9XFxcIjY5OS4xOTNcXFwiIHgyPVxcXCI5MzYuNTg5XFxcIiB5Mj1cXFwiMTUyLjA2MVxcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIG9mZnNldD1cXFwiLjZcXFwiIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIjFcXFwiIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiIHN0b3Atb3BhY2l0eT1cXFwiMFxcXCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCA5MzQgMjIwXFxcIj48ZyBmaWxsPVxcXCJub25lXFxcIj48cGF0aCBmaWxsPVxcXCIjMTg1NTY4XFxcIiBkPVxcXCJNMi42IDIwOC43VjEwMi4yaDMwLjh2MTA2LjV6TTEyNiAxOTguNGMtNyA4LjUtMTcgMTMuMy0zMC40IDEzLjMtMjEuNCAwLTM4LjctMTMuMy0zOC43LTMzLjkgMC0yMC4zIDE3LjMtMzAuNCA0MS41LTMxLjcgMTguNi0xLjEgMjQuNS0zLjEgMjQuNS05LjQgMC02LjEtNS43LTEwLjMtMTUuNy0xMC4zLTEyLjIgMC0xNy41IDYuMS0xOC4xIDEyLjdINTkuMmMxLjUtMjMuNCAxOS0zOS41IDQ4LjMtMzkuNSAyOC42IDAgNDcgMTUuNSA0NyA0NC42djY1LjFoLTI1LjZsLTIuOS0xMC45em0tMzgtMjEuOWMwIDYuMSA1LjUgOS44IDE0LjIgOS44IDExLjggMCAyMS4yLTYuNiAyMS4yLTE5Ljl2LTMuOXMtNS43IDIuNi0xNy41IDMuM2MtMTIuOC43LTE3LjkgNC44LTE3LjkgMTAuN3ptMTM1IDMzLjJjLTIzLjQgMC0zNi45LTEzLjUtMzYuOS0zNy4xdi00MS43aC0xNy45di0yOC42aDE3LjlWODYuNWwzMS0yNi4ydjQxLjlIMjQ0djI4LjZoLTI2Ljl2MzcuNGMwIDEwLjMgNi44IDEyLjcgMTMuMSAxMi43IDcuMiAwIDEzLjEtMi44IDEzLjEtMi44djI4LjJzLTguMyAzLjQtMjAuMyAzLjR6TTAgNzAuMmMwLTEwIDcuOS0xOC4xIDE3LjktMTguMSAxMCAwIDE4LjEgOC4xIDE4LjEgMTguMSAwIDkuOC04LjEgMTcuOS0xOC4xIDE3LjktMTAgMC0xNy45LTgtMTcuOS0xNy45em0yNjYuOSAxMzguNVYxMDIuMmgzMC44djEwNi41elxcXCIvPjxnIHRyYW5zZm9ybT1cXFwidHJhbnNsYXRlKDIyNylcXFwiPjxwYXRoIGZpbGw9XFxcIiMxODU1NjhcXFwiIGQ9XFxcIk0xMTAuOSA3MC41YzAtNC45LS43LTkuNy0xLjktMTQuMy0xLjMtNC43LTMuMS05LjItNS41LTEzLjMtMi40LTQuMi01LjQtOC04LjgtMTEuNC0zLjQtMy40LTcuMi02LjMtMTEuNC04LjgtNC4xLTIuNC04LjYtNC4zLTEzLjMtNS41LTQuNi0xLjItOS4zLTEuOS0xNC4zLTEuOS00LjkgMC05LjcuNy0xNC4zIDEuOS00LjcgMS4zLTkuMiAzLjEtMTMuMyA1LjUtNC4yIDIuNC04IDUuNC0xMS40IDguOC0zLjQgMy40LTYuNCA3LjItOC44IDExLjQtMi40IDQuMS00LjMgOC42LTUuNSAxMy4zbDcuOSAyLjFjMS4xLTQgMi43LTcuOCA0LjctMTEuMyAyLjEtMy42IDQuNi02LjggNy41LTkuNyAyLjktMi45IDYuMi01LjQgOS43LTcuNSAzLjUtMiA3LjMtMy42IDExLjMtNC43IDMuOS0xIDcuOS0xLjYgMTIuMS0xLjYgNC4yIDAgOC4zLjYgMTIuMiAxLjYgNCAxLjEgNy44IDIuNyAxMS4zIDQuNyAzLjYgMi4xIDYuOCA0LjYgOS43IDcuNSAyLjkgMi45IDUuNCA2LjIgNy41IDkuNyAyIDMuNSAzLjYgNy4zIDQuNyAxMS4zIDEgMy45IDEuNiA4IDEuNiAxMi4yIDAgNC4yLS42IDguMy0xLjYgMTIuMS0xLjEgNC0yLjcgNy44LTQuNyAxMS4zbDcuMSA0LjFjMi40LTQuMSA0LjMtOC42IDUuNS0xMy4zIDEuMy00LjUgMi05LjIgMi0xNC4yWlxcXCIvPjxwYXRoIGZpbGw9XFxcIiMxODU1NjhcXFwiIGQ9XFxcIk0xMjUuMiA3MC41YzAtNi4yLS44LTEyLjMtMi40LTE4LTEuNi01LjktMy45LTExLjYtNy0xNi44LTMuMS01LjMtNi44LTEwLjEtMTEuMS0xNC40LTQuMy00LjMtOS4xLTgtMTQuNC0xMS4xLTUuMi0zLTEwLjgtNS40LTE2LjgtNi45QzY3LjggMS44IDYxLjcuOSA1NS41LjljLTYuMiAwLTEyLjIuOC0xOCAyLjMtNS45IDEuNi0xMS42IDMuOS0xNi44IDYuOS01LjMgMy0xMC4xIDYuOC0xNC40IDExbDQuMyA0LjNjMy45LTMuOSA4LjMtNy4zIDEzLjEtMTAuMSA0LjctMi43IDkuOS00LjkgMTUuMy02LjMgNS4yLTEuNCAxMC43LTIuMSAxNi40LTIuMSA1LjcgMCAxMS4yLjggMTYuNCAyLjIgNS40IDEuNCAxMC41IDMuNiAxNS4zIDYuM2E2NC40NjYgNjQuNDY2IDAgMCAxIDIzLjIgMjMuMmMyLjcgNC43IDQuOSA5LjkgNi4zIDE1LjMgMS40IDUuMiAyLjIgMTAuNyAyLjIgMTYuNCAwIDUuNy0uNyAxMS4xLTIuMSAxNi40LTEuNCA1LjQtMy42IDEwLjYtNi4zIDE1LjMtMi44IDQuOC02LjIgOS4yLTEwLjEgMTMuMWw0LjMgNC4zYzQuMy00LjMgOC05LjEgMTEuMS0xNC40IDMtNS4yIDUuNC0xMC44IDYuOS0xNi44IDEuOC01LjQgMi42LTExLjUgMi42LTE3LjdaXFxcIi8+PHBhdGggZmlsbD1cXFwiIzE4NTU2OFxcXCIgZD1cXFwiTTkzLjIgNjAuNGMtLjktMy4zLTIuMi02LjUtMy45LTkuNC0xLjctMi45LTMuOC01LjctNi4yLTgtMi40LTIuNC01LjEtNC41LTgtNi4yLTIuOS0xLjctNi0zLTkuNC0zLjktMy4yLS45LTYuNi0xLjMtMTAtMS4zLTMuNSAwLTYuOC41LTEwIDEuMy0zLjMuOS02LjUgMi4yLTkuNCAzLjktMi45IDEuNy01LjcgMy44LTguMSA2LjItMi40IDIuNC00LjUgNS4xLTYuMiA4LTEuNyAyLjktMyA2LTMuOSA5LjQtLjkgMy4yLTEuMyA2LjYtMS4zIDEwLjFzLjUgNi44IDEuMyAxMGMuOSAzLjMgMi4yIDYuNSAzLjkgOS40bDEwLjYtNi4xYy0xLjItMi0yLjEtNC4xLTIuNy02LjQtLjYtMi4yLS45LTQuNS0uOS02LjkgMC0yLjQuMy00LjcuOS02LjkuNi0yLjMgMS41LTQuNCAyLjctNi40IDEuMi0yIDIuNi0zLjkgNC4yLTUuNXMzLjUtMy4xIDUuNS00LjIgNC4xLTIgNi40LTIuN2MyLjItLjYgNC41LS45IDYuOS0uOSAyLjQgMCA0LjcuMyA2LjkuOSAyLjMuNiA0LjQgMS41IDYuNCAyLjcgMiAxLjIgMy45IDIuNiA1LjUgNC4yczMuMSAzLjUgNC4yIDUuNWMxLjIgMiAyLjEgNC4xIDIuNyA2LjQuNiAyLjIuOSA0LjUuOSA2LjloMTIuM2MwLTMuNS0uNC02LjktMS4zLTEwLjFaXFxcIi8+PGcgZmlsbD1cXFwiI0E3RUJFRlxcXCI+PHBhdGggZD1cXFwiTTgxLjQgNjMuNmMtLjYtMi4zLTEuNS00LjQtMi43LTYuNC0xLjItMi0yLjYtMy45LTQuMi01LjVsLTUuOCA1LjhjMS4xIDEuMSAyLjEgMi40IDIuOSAzLjguOCAxLjQgMS40IDIuOSAxLjggNC40LjQgMS41LjYgMy4xLjYgNC44IDAgMS43LS4yIDMuMi0uNiA0LjgtLjQgMS42LTEgMy4xLTEuOCA0LjQtLjggMS40LTEuOCAyLjctMi45IDMuOC0xLjEgMS4xLTIuNCAyLjEtMy44IDIuOS0xLjQuOC0yLjkgMS40LTQuNCAxLjgtMS41LjQtMy4xLjYtNC44LjYtMS43IDAtMy4yLS4yLTQuOC0uNi0xLjYtLjQtMy4xLTEtNC40LTEuOGwtNC4xIDcuMWMyIDEuMiA0LjEgMi4xIDYuNCAyLjcgMi4yLjYgNC41LjkgNi45LjkgMi40IDAgNC43LS4zIDYuOS0uOSAyLjMtLjYgNC40LTEuNSA2LjQtMi43IDItMS4yIDMuOS0yLjYgNS41LTQuMnMzLjEtMy41IDQuMi01LjVjMS4yLTIgMi4xLTQuMSAyLjctNi40LjYtMi4yLjktNC41LjktNi45IDAtMi40LS4zLTQuNy0uOS02LjlaXFxcIi8+PHBhdGggZD1cXFwiTTk2LjQgNDdjLTIuMS0zLjYtNC42LTYuOC03LjUtOS43LTIuOS0yLjktNi4yLTUuNC05LjctNy41LTMuNS0yLTcuMy0zLjYtMTEuMy00LjctMy45LTEtOC0xLjYtMTIuMi0xLjYtNC4yIDAtOC4zLjYtMTIuMiAxLjYtNCAxLjEtNy44IDIuNy0xMS4zIDQuNy0zLjYgMi4xLTYuOCA0LjYtOS43IDcuNS0yLjkgMi45LTUuNCA2LjItNy41IDkuNy0yIDMuNS0zLjYgNy4zLTQuNyAxMS4zLTEgMy45LTEuNiA4LTEuNiAxMi4yaDguMmMwLTMuNS41LTYuOSAxLjMtMTAuMS45LTMuMyAyLjItNi41IDMuOS05LjQgMS43LTIuOSAzLjgtNS43IDYuMi04LjEgMi40LTIuNCA1LjEtNC41IDguMS02LjIgMi45LTEuNyA2LjEtMyA5LjQtMy45IDMuMi0uOSA2LjYtMS4zIDEwLjEtMS4zczYuOS41IDEwLjEgMS4zYzMuMy45IDYuNSAyLjIgOS40IDMuOSAyLjkgMS43IDUuNyAzLjggOC4xIDYuMiAyLjQgMi40IDQuNSA1LjEgNi4yIDguMSAxLjcgMi45IDMgNi4xIDMuOSA5LjRsNy45LTIuMWMtMS41LTQtMy4xLTcuOC01LjEtMTEuM1pcXFwiLz48cGF0aCBkPVxcXCJNMTE2LjkgNTQuMWMtMS40LTUuNC0zLjYtMTAuNS02LjMtMTUuM2E2NC40NjYgNjQuNDY2IDAgMCAwLTIzLjItMjMuMmMtNC43LTIuNy05LjktNC45LTE1LjMtNi4zLTUuMi0xLjQtMTAuNy0yLjEtMTYuNC0yLjEtNS43IDAtMTEuMi44LTE2LjQgMi4xLTUuNCAxLjQtMTAuNSAzLjYtMTUuMyA2LjNBNjQuNDY2IDY0LjQ2NiAwIDAgMCAuOCAzOC44bDcuMSA0LjFjMi40LTQuMiA1LjQtOCA4LjgtMTEuNCAzLjQtMy40IDcuMy02LjMgMTEuNC04LjggNC4xLTIuNCA4LjYtNC4zIDEzLjMtNS41IDQuNi0xLjIgOS4zLTEuOSAxNC4zLTEuOXM5LjcuNyAxNC4zIDEuOWM0LjcgMS4zIDkuMiAzLjEgMTMuMyA1LjUgNC4yIDIuNCA4IDUuNCAxMS40IDguOCAzLjQgMy40IDYuMyA3LjMgOC44IDExLjQgMi40IDQuMSA0LjMgOC42IDUuNSAxMy4zIDEuMiA0LjYgMS45IDkuMyAxLjkgMTQuMyAwIDQuOS0uNyA5LjctMS45IDE0LjNsNy45IDIuMWMxLjQtNS4yIDIuMS0xMC43IDIuMS0xNi40LjEtNS42LS43LTExLjEtMi4xLTE2LjRaXFxcIi8+PC9nPjxjaXJjbGUgY3g9XFxcIjU1LjdcXFwiIGN5PVxcXCI3MC41XFxcIiByPVxcXCIxOC40XFxcIiBmaWxsPVxcXCIjMTg1NTY4XFxcIi8+PC9nPjxwYXRoIGQ9XFxcIk0zNTUuMyAxNDMuNHYtMzguMmg4LjF2MzguMnptMjMuMy0xMy40djEzLjRoLTcuN3YtMjYuN2g3LjZ2MS45YzEuNS0xLjQgMy42LTIuNSA2LjMtMi41IDYuNSAwIDEwLjggNC4zIDEwLjggMTEuOHYxNS41SDM4OHYtMTQuOWMwLTIuOC0xLjMtNS4yLTQuNC01LjItMy43LS4xLTUgMi42LTUgNi43em0zNC4xIDEzLjVjLTUuOCAwLTkuMi0zLjQtOS4yLTkuM3YtMTAuNEgzOTl2LTcuMWg0LjV2LTMuOWw3LjctNi41djEwLjVoNi43djcuMWgtNi43djkuM2MwIDIuNiAxLjcgMy4yIDMuMyAzLjIgMS44IDAgMy4zLS43IDMuMy0uN3Y3YzAtLjEtMi4xLjgtNS4xLjh6bTM1LjktMTEuNGgtMTguOWMuNCAyLjcgMi43IDQuOCA2IDQuOCAyLjIgMCAzLjUtLjkgNC40LTIuM2g4LjNjLTEuOCA1LjgtNS45IDkuNC0xMi42IDkuNC03LjcgMC0xNC01LjQtMTQtMTMuOCAwLTguMSA1LjctMTQuMiAxMy41LTE0LjIgOC44IDAgMTMuMiA2LjkgMTMuMiAxNC4xLjIuNy4xIDIgLjEgMnptLTEzLjEtOS4zYy0yLjkgMC00LjkgMS44LTUuNCA0LjFoMTAuNGMtLjItMi4zLTIuMi00LjEtNS00LjF6bTM2LjEtNC42djcuNnMtMi0yLjEtNS4xLTIuMWMtMi4zIDAtNSAxLjMtNSA1LjJ2MTQuNGgtNy43di0yNi43aDcuNnYyLjJjLS4xIDAgMS41LTIuNiA1LjMtMi42IDMuNC4xIDQuOSAyIDQuOSAyem0xMiAxMS44djEzLjRoLTcuN3YtMjYuN2g3LjZ2MS45YzEuNS0xLjQgMy42LTIuNSA2LjMtMi41IDYuNSAwIDEwLjggNC4zIDEwLjggMTEuOHYxNS41aC03Ljd2LTE0LjljMC0yLjgtMS4zLTUuMi00LjQtNS4yLTMuNy0uMS00LjkgMi42LTQuOSA2Ljd6bTM5LjMgMTAuN2MtMS43IDIuMS00LjMgMy4zLTcuNiAzLjMtNS4zIDAtOS42LTMuMy05LjYtOC40IDAtNS4xIDQuMy03LjYgMTAuNC03LjkgNC42LS4zIDYuMS0uOCA2LjEtMi4zIDAtMS41LTEuNC0yLjYtMy45LTIuNi0zLjEgMC00LjQgMS41LTQuNSAzLjJoLTcuNWMuNC01LjggNC43LTkuOSAxMi05LjkgNy4xIDAgMTEuNyAzLjkgMTEuNyAxMS4xdjE2LjJoLTYuNGwtLjctMi43em0tOS40LTUuNWMwIDEuNSAxLjQgMi41IDMuNSAyLjUgMi45IDAgNS4zLTEuNiA1LjMtNXYtMXMtMS40LjctNC40LjhjLTMuMi4yLTQuNCAxLjItNC40IDIuN3ptMzMuNiA4LjNjLTUuOCAwLTkuMi0zLjQtOS4yLTkuM3YtMTAuNGgtNC41di03LjFoNC41di0zLjlsNy43LTYuNXYxMC41aDYuN3Y3LjFoLTYuN3Y5LjNjMCAyLjYgMS43IDMuMiAzLjMgMy4yIDEuOCAwIDMuMy0uNyAzLjMtLjd2N2MwLS4xLTIuMS44LTUuMS44em0xMC40LTM0LjRjMC0yLjUgMi00LjUgNC41LTQuNXM0LjUgMiA0LjUgNC41LTIgNC41LTQuNSA0LjUtNC41LTIuMS00LjUtNC41em0uNiAzNC4zdi0yNi43aDcuN3YyNi43aC03Ljd6bTEzLjQtMTMuNGMwLTggNi4yLTE0IDE0LjItMTQgOC4xIDAgMTQuMiA2IDE0LjIgMTRzLTYuMiAxNC0xNC4yIDE0Yy04LjEgMC0xNC4yLTYtMTQuMi0xNHptNy45IDBjMCAzLjkgMi43IDYuOCA2LjMgNi44IDMuNyAwIDYuMy0yLjggNi4zLTYuOCAwLTMuOS0yLjctNi44LTYuMy02LjgtMy42LjEtNi4zIDIuOS02LjMgNi44em0zMy42IDB2MTMuNGgtNy43di0yNi43aDcuNnYxLjljMS41LTEuNCAzLjYtMi41IDYuMy0yLjUgNi41IDAgMTAuOCA0LjMgMTAuOCAxMS44djE1LjVoLTcuN3YtMTQuOWMwLTIuOC0xLjMtNS4yLTQuNC01LjItMy42LS4xLTQuOSAyLjYtNC45IDYuN3ptMzkuNCAxMC43Yy0xLjcgMi4xLTQuMyAzLjMtNy42IDMuMy01LjMgMC05LjYtMy4zLTkuNi04LjQgMC01LjEgNC4zLTcuNiAxMC40LTcuOSA0LjYtLjMgNi4xLS44IDYuMS0yLjMgMC0xLjUtMS40LTIuNi0zLjktMi42LTMuMSAwLTQuNCAxLjUtNC41IDMuMmgtNy41Yy40LTUuOCA0LjctOS45IDEyLTkuOSA3LjEgMCAxMS43IDMuOSAxMS43IDExLjF2MTYuMmgtNi40bC0uNy0yLjd6bS05LjUtNS41YzAgMS41IDEuNCAyLjUgMy41IDIuNSAyLjkgMCA1LjMtMS42IDUuMy01di0xcy0xLjQuNy00LjQuOGMtMy4yLjItNC40IDEuMi00LjQgMi43em0yMyA4LjJ2LTM4LjJoNy43djM4LjJ6bTQ5LjYtMzguMiAxNC45IDM4LjJINzIybC0zLjEtNy41aC0xNC44bC0zIDcuNWgtOC40bDE0LjktMzguMmg3Ljl6bS0zLjkgMTEtNC43IDEyLjVoOS41bC00LjgtMTIuNXptMjIuNS03LjFjMC0yLjUgMi00LjUgNC41LTQuNXM0LjUgMiA0LjUgNC41LTIgNC41LTQuNSA0LjUtNC41LTIuMS00LjUtNC41em0uNiAzNC4zdi0yNi43aDcuN3YyNi43aC03Ljd6bTEzLjQtMTMuNGMwLTguNCA2LjEtMTQgMTMuNS0xNCAzLjEgMCA1LjYgMS4xIDcgMi4zdi0xMy4yaDcuN3YzOC4yaC03LjZ2LTEuOWMtMS40IDEuNC00LjEgMi41LTcuMSAyLjUtNy41LjEtMTMuNS01LjMtMTMuNS0xMy45em0yMC41IDBjMC00LjEtMi43LTctNi4zLTctMy42IDAtNi4zIDIuOC02LjMgNyAwIDQuMSAyLjcgNyA2LjMgNyAzLjYgMCA2LjMtMi44IDYuMy03em0tNDE1LjggNDAuNmgzMHY3LjVoLTExdjMwLjdoLTguMVYxNzhoLTExdi03LjR6bTQ4LjkgMTN2Ny42cy0yLTIuMS01LjEtMi4xYy0yLjMgMC01IDEuMy01IDUuMnYxNC40SDM4NFYxODJoNy42djIuMmMtLjEgMCAxLjUtMi42IDUuMy0yLjYgMy4zLjEgNC44IDIgNC44IDJ6bTIwLjggMjIuNGMtMS43IDIuMS00LjMgMy4zLTcuNiAzLjMtNS4zIDAtOS42LTMuMy05LjYtOC40IDAtNS4xIDQuMy03LjYgMTAuNC03LjkgNC42LS4zIDYuMS0uOCA2LjEtMi4zIDAtMS41LTEuNC0yLjYtMy45LTIuNi0zLjEgMC00LjQgMS41LTQuNSAzLjJoLTcuNWMuNC01LjggNC43LTkuOSAxMi05LjkgNy4xIDAgMTEuNyAzLjkgMTEuNyAxMS4xdjE2LjJoLTYuNGwtLjctMi43em0tOS41LTUuNGMwIDEuNSAxLjQgMi41IDMuNSAyLjUgMi45IDAgNS4zLTEuNiA1LjMtNXYtMXMtMS40LjctNC40LjhjLTMuMS4yLTQuNCAxLjItNC40IDIuN3ptMzAuOC01LjJ2MTMuNEg0MzZ2LTI2LjdoNy42djEuOWMxLjUtMS40IDMuNi0yLjUgNi4zLTIuNSA2LjUgMCAxMC44IDQuMyAxMC44IDExLjh2MTUuNUg0NTN2LTE0LjljMC0yLjgtMS4zLTUuMi00LjQtNS4yLTMuNi0uMS00LjggMi42LTQuOCA2Ljd6bTM4IDUuN2MwLS44LS41LTEuNS0yLjYtMS45bC00LS44Yy02LjEtMS4yLTguNi00LjEtOC42LTguMSAwLTQuNyAzLjUtOC45IDEwLjktOC45czEwLjcgNC4xIDExLjMgOC44aC03LjRjLS40LTEuNS0xLjctMi4zLTQtMi4zLTIuMiAwLTMuNC44LTMuNCAxLjkgMCAuOC43IDEuMyAyLjcgMS43bDQgLjhjNS43IDEuMSA4LjYgMy44IDguNiA4LjQgMCA1LjItMy44IDguOC0xMS4yIDguOC03LjYgMC0xMS43LTMuNi0xMi41LTkuMmg3LjhjLjQgMS45IDEuOCAyLjggNC43IDIuOCAyLjUtLjEgMy43LS44IDMuNy0yem00MC43LTUuN2MwIDguNC02LjEgMTQtMTMuNSAxNC0zLjEgMC01LjYtMS4xLTctMi4zdjEyLjNoLTcuN3YtMzcuM2g3LjZ2MS45YzEuNC0xLjQgNC4xLTIuNiA3LjEtMi42IDcuNSAwIDEzLjUgNS40IDEzLjUgMTR6bS0yMC41IDBjMCA0LjEgMi43IDcgNi4zIDcgMy42IDAgNi4zLTIuOCA2LjMtNyAwLTQuMS0yLjctNy02LjMtNy0zLjYgMC02LjMgMi45LTYuMyA3em00MS44IDEwLjZjLTEuNyAyLjEtNC4zIDMuMy03LjYgMy4zLTUuMyAwLTkuNi0zLjMtOS42LTguNCAwLTUuMSA0LjMtNy42IDEwLjQtNy45IDQuNi0uMyA2LjEtLjggNi4xLTIuMyAwLTEuNS0xLjQtMi42LTMuOS0yLjYtMy4xIDAtNC40IDEuNS00LjUgMy4yaC03LjVjLjQtNS44IDQuNy05LjkgMTItOS45IDcuMSAwIDExLjcgMy45IDExLjcgMTEuMXYxNi4yaC02LjRsLS43LTIuN3ptLTkuNS01LjRjMCAxLjUgMS40IDIuNSAzLjUgMi41IDIuOSAwIDUuMy0xLjYgNS4zLTV2LTFzLTEuNC43LTQuNC44Yy0zLjEuMi00LjQgMS4yLTQuNCAyLjd6bTQwLjgtMTd2Ny42cy0yLTIuMS01LjEtMi4xYy0yLjMgMC01IDEuMy01IDUuMnYxNC40aC03LjdWMTgyaDcuNnYyLjJjLS4xIDAgMS41LTIuNiA1LjMtMi42IDMuNC4xIDQuOSAyIDQuOSAyem0yOS43IDEzLjloLTE4LjljLjQgMi43IDIuNyA0LjggNiA0LjggMi4yIDAgMy41LS45IDQuNC0yLjNoOC4zYy0xLjggNS44LTUuOSA5LjQtMTIuNiA5LjQtNy43IDAtMTQtNS40LTE0LTEzLjggMC04LjEgNS43LTE0LjIgMTMuNS0xNC4yIDguOCAwIDEzLjIgNi45IDEzLjIgMTQuMS4xLjcuMSAyIC4xIDJ6bS0xMy4xLTkuM2MtMi45IDAtNC45IDEuOC01LjQgNC4xaDEwLjRjLS4yLTIuMy0yLjItNC4xLTUtNC4xem0yNi4xIDcuMnYxMy40SDYxMHYtMjYuN2g3LjZ2MS45YzEuNS0xLjQgMy42LTIuNSA2LjMtMi41IDYuNSAwIDEwLjggNC4zIDEwLjggMTEuOHYxNS41SDYyN3YtMTQuOWMwLTIuOC0xLjMtNS4yLTQuNC01LjItMy42LS4xLTQuOCAyLjYtNC44IDYuN3ptNDAuNyAzaDguNWMtMS4zIDYuNS02LjIgMTEtMTMuNCAxMS04LjEgMC0xNC4xLTUuOS0xNC4xLTE0IDAtOCA2LTE0IDE0LjEtMTQgNyAwIDExLjkgNC40IDEyLjkgMTAuN0g2NThjLS42LTItMi4zLTMuNC00LjctMy40LTMuMyAwLTUuOSAyLjgtNS45IDYuNyAwIDMuOSAyLjYgNi43IDYgNi43IDIuNiAwIDQuNS0xLjQgNS4xLTMuN3ptMTggMjEuMmMtMy41IDAtNS4yLS45LTUuMi0uOXYtNy4xczEuNi44IDMuMy44YzEuNyAwIDQtLjcgNC42LTMuN0w2NjguOCAxODJoOC42bDYuMSAxNi42IDYuMi0xNi42aDguM2wtMTEgMjcuMmMtMi45IDcuMS01LjIgMTAuNC0xMC41IDEwLjR6bTQwLjktMTAuOHYtMzguMmg4LjF2MzguMnptMjMuMy0xMy40djEzLjRINzMzdi0yNi43aDcuNnYxLjljMS41LTEuNCAzLjYtMi41IDYuMy0yLjUgNi41IDAgMTAuOCA0LjMgMTAuOCAxMS44djE1LjVINzUwdi0xNC45YzAtMi44LTEuMy01LjItNC40LTUuMi0zLjctLjEtNC45IDIuNi00LjkgNi43em0yMy0yMC45YzAtMi41IDItNC41IDQuNS00LjVzNC41IDIgNC41IDQuNS0yIDQuNS00LjUgNC41LTQuNS0yLjEtNC41LTQuNXptLjYgMzQuM3YtMjYuN2g3Ljd2MjYuN2gtNy43em0yNS42LjFjLTUuOCAwLTkuMi0zLjQtOS4yLTkuM3YtMTAuNGgtNC41di03LjFoNC41di0zLjlsNy43LTYuNXYxMC41aDYuN3Y3LjFoLTYuN3Y5LjNjMCAyLjYgMS43IDMuMiAzLjMgMy4yIDEuOCAwIDMuMy0uNyAzLjMtLjd2N2MwLS4xLTIuMS44LTUuMS44em0xMC40LTM0LjRjMC0yLjUgMi00LjUgNC41LTQuNXM0LjUgMiA0LjUgNC41LTIgNC41LTQuNSA0LjUtNC41LTIuMS00LjUtNC41em0uNiAzNC4zdi0yNi43aDcuN3YyNi43aC03Ljd6bTMwLjgtMi44Yy0xLjcgMi4xLTQuMyAzLjMtNy42IDMuMy01LjMgMC05LjYtMy4zLTkuNi04LjQgMC01LjEgNC4zLTcuNiAxMC40LTcuOSA0LjYtLjMgNi4xLS44IDYuMS0yLjMgMC0xLjUtMS40LTIuNi0zLjktMi42LTMuMSAwLTQuNCAxLjUtNC41IDMuMmgtNy41Yy40LTUuOCA0LjctOS45IDEyLTkuOSA3LjEgMCAxMS43IDMuOSAxMS43IDExLjF2MTYuMmgtNi40bC0uNy0yLjd6bS05LjQtNS40YzAgMS41IDEuNCAyLjUgMy41IDIuNSAyLjkgMCA1LjMtMS42IDUuMy01di0xcy0xLjQuNy00LjQuOGMtMy4yLjItNC40IDEuMi00LjQgMi43em0zMy42IDguM2MtNS44IDAtOS4yLTMuNC05LjItOS4zdi0xMC40aC00LjV2LTcuMWg0LjV2LTMuOWw3LjctNi41djEwLjVoNi43djcuMWgtNi43djkuM2MwIDIuNiAxLjcgMy4yIDMuMyAzLjIgMS44IDAgMy4zLS43IDMuMy0uN3Y3YzAtLjEtMi4xLjgtNS4xLjh6bTEwLjQtMzQuNGMwLTIuNSAyLTQuNSA0LjUtNC41czQuNSAyIDQuNSA0LjUtMiA0LjUtNC41IDQuNS00LjUtMi4xLTQuNS00LjV6bS42IDM0LjN2LTI2LjdoNy43djI2LjdoLTcuN3ptMzguNy0yNi43LTkuNSAyNi43aC04bC05LjUtMjYuN2g4LjJsNS4yIDE2LjUgNS4yLTE2LjV6bTI4LjIgMTUuNGgtMTguOWMuNCAyLjcgMi43IDQuOCA2IDQuOCAyLjIgMCAzLjUtLjkgNC40LTIuM2g4LjNjLTEuOCA1LjgtNS45IDkuNC0xMi42IDkuNC03LjcgMC0xNC01LjQtMTQtMTMuOCAwLTguMSA1LjctMTQuMiAxMy41LTE0LjIgOC44IDAgMTMuMiA2LjkgMTMuMiAxNC4xLjEuNy4xIDIgLjEgMlptLTEzLjEtOS4zYy0yLjkgMC00LjkgMS44LTUuNCA0LjFoMTAuNGMtLjItMi4zLTIuMi00LjEtNS00LjFaXFxcIiBmaWxsPVxcXCIjMTg1NTY4XFxcIi8+PC9nPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNSAyNFxcXCI+PHBhdGggZD1cXFwiTTIwLjgzNCAxMS4yM1Y4Ljk1N2E4LjMzMyA4LjMzMyAwIDAgMC0xNi42NjcgMHYyLjI3MWEzLjEyNSAzLjEyNSAwIDAgMC0yLjA4MyAyLjkzOHYyLjA4M2EzLjEyNSAzLjEyNSAwIDAgMCAzLjEyNCAzLjEyNWgzLjEyNmExLjA0MSAxLjA0MSAwIDAgMCAxLjA0MS0xLjA0MnYtNi4yNWExLjA0MiAxLjA0MiAwIDAgMC0xLjA0MS0xLjA0MUg2LjI1VjguOTU4YTYuMjUgNi4yNSAwIDEgMSAxMi41IDB2Mi4wODRoLTIuMDgzYTEuMDQxIDEuMDQxIDAgMCAwLTEuMDQyIDEuMDQxdjYuMjVhMS4wNDEgMS4wNDEgMCAwIDAgMS4wNDIgMS4wNDJoMy4xMjVhMy4xMjUgMy4xMjUgMCAwIDAgMy4xMjUtMy4xMjV2LTIuMDgzYTMuMTI1IDMuMTI1IDAgMCAwLTIuMDg0LTIuOTM4Wk03LjI5MiAxMy4xMjR2NC4xNjdINS4yMDlhMS4wNDIgMS4wNDIgMCAwIDEtMS4wNDItMS4wNDJ2LTIuMDgzYTEuMDQyIDEuMDQyIDAgMCAxIDEuMDQyLTEuMDQyaDIuMDgzWm0xMy41NDIgMy4xMjVhMS4wNDIgMS4wNDIgMCAwIDEtMS4wNDIgMS4wNDJoLTIuMDg0di00LjE2N2gyLjA4NGExLjA0MiAxLjA0MiAwIDAgMSAxLjA0MSAxLjA0MnYyLjA4M1pcXFwiIGZpbGw9XFxcIiNmZmZcXFwiLz48cGF0aCBkPVxcXCJNMTguMzg0IDIxLjYxNkE0LjYzIDQuNjMgMCAwIDEgMTUuMTIgMjNsLS4wMS0xLjE1OGEzLjQ3MiAzLjQ3MiAwIDAgMCAzLjQ0NS0zLjVsMS4xNTctLjAwOWE0LjYzIDQuNjMgMCAwIDEtMS4zMyAzLjI4NFpcXFwiIGZpbGw9XFxcIiNmZmZcXFwiIHN0cm9rZT1cXFwiI2ZmZlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIxLjA0MlxcXCIvPjxyZWN0IHg9XFxcIjExLjI1XFxcIiB5PVxcXCIyMC40MTZcXFwiIHdpZHRoPVxcXCI0LjY4OFxcXCIgaGVpZ2h0PVxcXCIzLjEyNVxcXCIgcng9XFxcIjEuNTYzXFxcIiBmaWxsPVxcXCIjZmZmXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDE1IDE0XFxcIj48cGF0aCBkPVxcXCJNNy4zODUgNC42NjdhMS4xIDEuMSAwIDAgMC0uNTE4LjEyOGMtLjE2LjA4NS0uMjk1LjIwOS0uMzkuMzYybC0uMDA0LjAwNi0uMDAzLjAwN2EuMzQ2LjM0NiAwIDAgMS0uMDkzLjEwNS40MzguNDM4IDAgMCAxLS40NTUuMDMzLjM3LjM3IDAgMCAxLS4xMTMtLjA5My4zMTMuMzEzIDAgMCAxLS4wNi0uMTE3LjI4Ny4yODcgMCAwIDEtLjAwNS0uMTI0bC0uMzI5LS4wNTguMzI5LjA1OGEuMzA1LjMwNSAwIDAgMSAuMDQ5LS4xMmwuMDA0LS4wMDUuMDA0LS4wMDZhMS43NSAxLjc1IDAgMCAxIC42NjMtLjYxNSAxLjkyIDEuOTIgMCAwIDEgMi4wOTIuMTc2Yy4zMjQuMjU2LjUzNy42MDUuNjA3Ljk4NS4wNy4zNzgtLjAwNS43Ny0uMjE1IDEuMTA1LS4yMTEuMzM3LS41NDYuNi0uOTUyLjczN2wtLjIyNy4wNzZ2LjM2YS4zMS4zMSAwIDAgMS0uMTA0LjIyNy40MTQuNDE0IDAgMCAxLS4yOC4xMDZjLS4xMSAwLS4yMS0uMDQtLjI4MS0uMTA2QS4zMS4zMSAwIDAgMSA3IDcuNjY3VjdhLjMxLjMxIDAgMCAxIC4xMDQtLjIyNy40MTQuNDE0IDAgMCAxIC4yOC0uMTA2Yy4yNzIgMCAuNTM2LS4xLjczNS0uMjg1YS45NzcuOTc3IDAgMCAwIC4zMTctLjcxNS45NzcuOTc3IDAgMCAwLS4zMTctLjcxNiAxLjA4IDEuMDggMCAwIDAtLjczNC0uMjg0Wm0wIDBWNXYtLjMzM1ptLS4zNjkgNC45MDYuMDEyLS4wMjEuMDA5LS4wMjNhLjE2LjE2IDAgMCAxIC4wMi0uMDM3LjczNi43MzYgMCAwIDEgLjA1LS4wNi4zOTEuMzkxIDAgMCAxIC4xMjItLjA3NC40MzMuNDMzIDAgMCAxIC4zMTEgMGwuMTItLjMxLS4xMi4zMWEuMzkuMzkgMCAwIDEgLjEyNy4wNzljLjAzNC4wMzIuMDYuMDcuMDc3LjEwOGEuMy4zIDAgMCAxIC4wMjUuMTJ2LjAxNWEuMjkuMjkgMCAwIDEtLjAyLjExOC4yNjMuMjYzIDAgMCAxLS4wNjcuMDk4bC4yMjcuMjQ0LS4yMjctLjI0NGEuMzIxLjMyMSAwIDAgMS0uMTE2LjA2OGwtLjAxLjAwMy0uMDEuMDA1YS4zODYuMzg2IDAgMCAxLS4yOTMgMGwtLjAxLS4wMDUtLjAxLS4wMDNhLjMyMS4zMjEgMCAwIDEtLjExNy0uMDY4bC0uMjI3LjI0NC4yMjctLjI0NGEuMjYzLjI2MyAwIDAgMS0uMDY3LS4wOTdsLS4wMDYtLjAxNS0uMDA3LS4wMTVhLjE5My4xOTMgMCAwIDEtLjAyMi0uMDkzVjkuNjRhLjUxLjUxIDAgMCAxLS4wMDItLjA1Ny4wNzguMDc4IDAgMCAxIC4wMDQtLjAxWk0zLjU3MiAxLjc0QTcuMjQ1IDcuMjQ1IDAgMCAxIDcuMzg1LjY2N2MuOTAyIDAgMS43OTUuMTY1IDIuNjI3LjQ4NS44MzMuMzIgMS41ODguNzg5IDIuMjIyIDEuMzc4YTYuMzIzIDYuMzIzIDAgMCAxIDEuNDggMi4wNTVjLjM0MS43NjYuNTE3IDEuNTg3LjUxNyAyLjQxNWE2IDYgMCAwIDEtMS4xNDcgMy41MSA2Ljc2IDYuNzYgMCAwIDEtMy4wNzIgMi4zMzggNy4zNjIgNy4zNjIgMCAwIDEtMy45NjguMzYzIDcuMDMzIDcuMDMzIDAgMCAxLTMuNTEtMS43NDFBNi4yMDEgNi4yMDEgMCAwIDEgLjY3IDguMjNhNS44OTIgNS44OTIgMCAwIDEgLjM4Ny0zLjY0NUE2LjQ2NyA2LjQ2NyAwIDAgMSAzLjU3MiAxLjc0Wm0uNDQ2IDkuOTc4YTYuMzkgNi4zOSAwIDAgMCAzLjM2Ny45NDljMS42MDQgMCAzLjE0Ni0uNTkyIDQuMjg4LTEuNjUyQzEyLjgxNSA5Ljk1NSAxMy40NiA4LjUxMSAxMy40NiA3YTUuNCA1LjQgMCAwIDAtMS4wMy0zLjE1OCA2LjAwNyA2LjAwNyAwIDAgMC0yLjcyOS0yLjA4IDYuNDg4IDYuNDg4IDAgMCAwLTMuNDk4LS4zMiA2LjIyNiA2LjIyNiAwIDAgMC0zLjEwOCAxLjU0MiA1LjU2IDUuNTYgMCAwIDAtMS42NyAyLjkwNiA1LjMxNCA1LjMxNCAwIDAgMCAuMzQ4IDMuMjg3IDUuNzczIDUuNzczIDAgMCAwIDIuMjQ0IDIuNTRaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2Utd2lkdGg9XFxcIi42NjdcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjAgMjBcXFwiPjxwYXRoIGZpbGw9XFxcIiM2ODc5N0VcXFwiIHN0cm9rZT1cXFwiIzY4Nzk3RVxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIiBkPVxcXCJtMTIuMzMgMTQuNjAyLS41OS4xMzJhOC4wNzUgOC4wNzUgMCAwIDEtMS43NC4xODNsMi4zMy0uMzE1Wm0wIDAtLjQyNy0uNDI5bS40MjcuNDMtLjQyNy0uNDNtMCAwLTEuOS0xLjkwOC0uMDgzLS4wODRtMS45ODMgMS45OTJMOS45MiAxMi4xODFtMCAwLS4xMTgtLjAxMm0uMTE4LjAxMi0uMTE4LS4wMTJtMCAwYTIuMjIgMi4yMiAwIDAgMS0xLjk3LTEuOTcxbC0uMDEzLS4xMTdtMS45ODMgMi4wODhMNy44MiAxMC4wOG0wIDAtLjA4My0uMDgzbS4wODMuMDgzLS4wODMtLjA4M20wIDBMNC45MDMgNy4xNTZsLS4yMTktLjIxOW0zLjA1MiAzLjA2MS0zLjA1Mi0zLjA2bTAgMC0uMjM0LjJtLjIzNC0uMi0uMjM0LjJtMCAwYTguNTQ0IDguNTQ0IDAgMCAwLTIuMDc2IDIuNjcuNDMyLjQzMiAwIDAgMCAwIC4zODUgOC41MTggOC41MTggMCAwIDAgMy4xMTkgMy40MzRNNC40NSA3LjEzOWwxLjA0MyA2LjQ4OE0xOC44MDggMTBDMTcuMzg0IDYuNTI5IDEzLjk3OCA0LjA4MyAxMCA0LjA4M2E5LjU0NSA5LjU0NSAwIDAgMC0zLjMyMi41OTZsLjc4Mi43NzdBOC45NzMgOC45NzMgMCAwIDEgMTAgNS4wODNMMTguODA4IDEwWm0wIDBhOS40OTIgOS40OTIgMCAwIDEtMi45NDMgMy44ODNsLS43MDQtLjcwOWE4LjU1MSA4LjU1MSAwIDAgMCAyLjQ2Ni0yLjk4MS40MzIuNDMyIDAgMCAwIDAtLjM4NUE4LjUxNyA4LjUxNyAwIDAgMCAxMCA1LjA4M0wxOC44MDggMTBaTTUuNDkzIDEzLjYyN0E4LjUxOCA4LjUxOCAwIDAgMCAxMCAxNC45MTdsLTQuNTA3LTEuMjlabTcuNzg0IDEuOTA0LS4xNDUtLjE0NS0uMTk1LjA2NGE5LjMxMiA5LjMxMiAwIDAgMS0yLjkzNy40NjdjLTMuOTc4IDAtNy4zODQtMi40NDYtOC44MDctNS45MTdhOS40NjQgOS40NjQgMCAwIDEgMi41MTktMy41MzNsLjI2Ny0uMjM1LS4yNTEtLjI1MS0xLjI5Mi0xLjI5MmEuNDE4LjQxOCAwIDEgMSAuNTkxLS41OWwxMi44NzUgMTIuODc0YS40MTguNDE4IDAgMCAxLS41OTEuNTkxbC0yLjAzNC0yLjAzM1pNMTAgNy44MzNBMi4xNjcgMi4xNjcgMCAwIDEgMTIuMTY3IDEwYzAgLjA1NS0uMDAyLjExLS4wMDYuMTY0TDkuODM2IDcuODRjLjA1NC0uMDA0LjEwOS0uMDA2LjE2NC0uMDA2WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCI+PHBhdGggZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBkPVxcXCJNMTEuMzMzIDIuMmMtMi42LTEuNDY3LTUuOC0xLTcuOTMzIDFWMmMwLS40LS4yNjctLjY2Ny0uNjY3LS42NjdTMi4wNjcgMS42IDIuMDY3IDJ2M2MwIC40LjI2Ni42NjYuNjY2LjY2NmgzYy40IDAgLjY2Ny0uMjY2LjY2Ny0uNjY2cy0uMjY3LS42NjctLjY2Ny0uNjY3aC0xLjZjMS0xLjA2NyAyLjQtMS42NjcgMy44NjctMS42NjcgMi45MzMgMCA1LjMzMyAyLjQgNS4zMzMgNS4zMzQgMCAyLjkzMy0yLjQgNS4zMzMtNS4zMzMgNS4zMzMtMi45MzMgMC01LjMzMy0yLjQtNS4zMzMtNS4zMzMgMC0uNC0uMjY3LS42NjctLjY2Ny0uNjY3UzEuMzMzIDcuNiAxLjMzMyA4YzAgMy42NjYgMyA2LjY2NiA2LjY2NyA2LjY2NiAyLjQgMCA0LjYtMS4yNjYgNS44LTMuMzMzIDEuOC0zLjIuNzMzLTcuMjY3LTIuNDY3LTkuMTMzWk04IDUuMzMzYy0uNCAwLS42NjcuMjY3LS42NjcuNjY3djJjMCAuNC4yNjcuNjY2LjY2Ny42NjZoMS4zMzNjLjQgMCAuNjY3LS4yNjYuNjY3LS42NjZzLS4yNjctLjY2Ny0uNjY3LS42NjdoLS42NjZWNmMwLS40LS4yNjctLjY2Ny0uNjY3LS42NjdaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxOTAgMTkwXFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxjaXJjbGUgY3g9XFxcIjk1XFxcIiBjeT1cXFwiOTVcXFwiIHI9XFxcIjg1XFxcIiBmaWxsPVxcXCIjZmZmXFxcIi8+PGNpcmNsZSBjeD1cXFwiOTVcXFwiIGN5PVxcXCI5NVxcXCIgcj1cXFwiOTVcXFwiIGZpbGw9XFxcIiNDREY4RkFcXFwiLz48cGF0aCBkPVxcXCJNNTEuMTcyIDc5LjYzNmMwLTEuODQ4IDAtMi43NzIuMjQyLTMuNjIyYTYuMzMxIDYuMzMxIDAgMCAxIC45ODEtMi4wMDdjLjUyMy0uNzEzIDEuMjUyLTEuMjggMi43MS0yLjQxNmwzNC4xMTYtMjYuNTM3Yy45MjgtLjcyMyAxLjM5Mi0xLjA4NCAxLjktMS4zNDlhNi4zMjkgNi4zMjkgMCAwIDEgMi4wNDctLjY1NWMuNTY3LS4wOCAxLjE1NS0uMDU2IDIuMzMtLjAwOCAxLjAyNy4wNDIgMS41NC4wNjMgMi4wMzMuMTYzLjYyMi4xMjYgMS4yMi4zNDQgMS43NzcuNjQ4LjQ0Mi4yNDEuODQ4LjU1NSAxLjY2MSAxLjE4NGwzNC42ODggMjYuODI0YzEuNDY3IDEuMTM0IDIuMiAxLjcwMiAyLjcyNiAyLjQxNi40NDYuNjA2Ljc4IDEuMjg4Ljk4NyAyLjAxMi4yNDQuODUyLjI0NCAxLjc4LjI0NCAzLjYzNHY1Mi4xMDFjMCAxLjgwMiAwIDIuNzA0LS4zNTYgMy4zOWEzLjE2NyAzLjE2NyAwIDAgMS0xLjM1IDEuMzQ5Yy0uNjg2LjM1Ny0xLjU4Ny4zNTctMy4zOS4zNTdINjAuMzQ1Yy0zLjI0NSAwLTQuODY3IDAtNi4xMDItLjY0MmE1LjY5NyA1LjY5NyAwIDAgMS0yLjQzLTIuNDI5Yy0uNjQxLTEuMjM1LS42NDEtMi44NTctLjY0MS02LjEwMlY3OS42MzZaXFxcIiBmaWxsPVxcXCJ1cmwoI2ljLXZlcmlmaWNhdGlvbl9zdmdfX2EpXFxcIi8+PHBhdGggZD1cXFwiTTU5Ljc3NSA3MS45MjRjMS4yODYgMCAxLjg5LjAwMiAyLjQ2LjExNC43NC4xNDYgMS40NDYuNDI5IDIuMDgxLjgzNC40OS4zMTMuOTI4LjczIDEuODU4IDEuNjE4bDI2Ljc2IDI1LjU2MmE1LjM2IDUuMzYgMCAwIDEgLjAxMiA3LjczOGwtMjYuMTM0IDI1LjExM2MtMS44MzIgMS43Ni0yLjY5MyAyLjU4MS0zLjc2NiAzLjAxMy0xLjA3Mi40MzEtMi4yNjIuNDM2LTQuODAyLjQzNmgtLjc0MmMtMS41IDAtMi41OTYgMC0zLjQzNC0uMTEzLS44MjktLjExMS0xLjM2MS0uMzI4LTEuNzYtLjcyNy0uNC0uNC0uNjE2LS45MzItLjcyOC0xLjc2MS0uMTEyLS44MzgtLjExMy0xLjkzMy0uMTEzLTMuNDM0VjgwLjIzMmMwLTEuMzU4IDAtMi4zNjIuMDU2LTMuMTYuMDU1LS43OTQuMTY0LTEuMzYzLjM3Mi0xLjg1M2E1LjQwMiA1LjQwMiAwIDAgMSAyLjg2Ny0yLjg2N2MuNDktLjIwOCAxLjA1OC0uMzE3IDEuODUzLS4zNzIuNzk4LS4wNTYgMS44MDItLjA1NiAzLjE2LS4wNTZaXFxcIiBmaWxsPVxcXCIjQjlEREZGXFxcIiBmaWxsLW9wYWNpdHk9XFxcIi42XFxcIiBzdHJva2U9XFxcInVybCgjaWMtdmVyaWZpY2F0aW9uX3N2Z19fYilcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjU5MVxcXCIvPjxwYXRoIGQ9XFxcIk0xMzEuNzggNzEuOTI0Yy0xLjI4NiAwLTEuODkuMDAyLTIuNDYxLjExNGE2LjA0MSA2LjA0MSAwIDAgMC0yLjA4MS44MzRjLS40OS4zMTMtLjkyNy43My0xLjg1NyAxLjYxOGwtMjYuNzYgMjUuNTYyYTUuMzYgNS4zNiAwIDAgMC0uMDEyIDcuNzM4bDI2LjEzNCAyNS4xMTNjMS44MzIgMS43NiAyLjY5MyAyLjU4MSAzLjc2NSAzLjAxMyAxLjA3My40MzEgMi4yNjMuNDM2IDQuODAzLjQzNmguNzQyYzEuNSAwIDIuNTk2IDAgMy40MzMtLjExMy44My0uMTExIDEuMzYyLS4zMjggMS43NjEtLjcyNy40LS40LjYxNi0uOTMyLjcyNy0xLjc2MS4xMTMtLjgzOC4xMTQtMS45MzMuMTE0LTMuNDM0VjgwLjIzMmMwLTEuMzU4IDAtMi4zNjItLjA1Ni0zLjE2LS4wNTUtLjc5NC0uMTY1LTEuMzYzLS4zNzItMS44NTNhNS40MDIgNS40MDIgMCAwIDAtMi44NjgtMi44NjdjLS40ODktLjIwOC0xLjA1OC0uMzE3LTEuODUzLS4zNzItLjc5Ny0uMDU2LTEuODAxLS4wNTYtMy4xNTktLjA1NlpcXFwiIGZpbGw9XFxcIiNCOURERkZcXFwiIGZpbGwtb3BhY2l0eT1cXFwiLjZcXFwiIHN0cm9rZT1cXFwidXJsKCNpYy12ZXJpZmljYXRpb25fc3ZnX19jKVxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNTkxXFxcIi8+PHBhdGggZD1cXFwiTTUwLjcxIDEyOS40NjVjMC0xLjMxLjAwMi0xLjkyNS4xMTUtMi40OTdhNi4wMzYgNi4wMzYgMCAwIDEgMS4zODItMi44MDhjLjM4NC0uNDM5Ljg3LS44MTUgMS45MDktMS42MTVsMzUuMjczLTI3LjE2OGMuOTU2LS43MzYgMS40MDQtMS4wOCAxLjg5My0xLjMzYTYuMDM0IDYuMDM0IDAgMCAxIDEuODkyLS42MDJjLjU0My0uMDc3IDEuMTA5LS4wNTUgMi4zMTQtLjAwNiAxLjA1LjA0MyAxLjU0NC4wNjQgMi4wMTYuMTZhNi4wMzQgNi4wMzQgMCAwIDEgMS42NC41OTVjLjQyNS4yMjcuODE3LjUyNyAxLjY1MyAxLjE2NmwzNC41NTMgMjYuNDUxYzIuMzQ5IDEuNzk4IDMuNDQ1IDIuNjQ1IDQuMDU4IDMuODI0LjAzOC4wNzMuMDc1LjE0Ny4xMS4yMjIuNTYzIDEuMjAzLjU3IDIuNTg5LjU3IDUuNTQ3IDAgMS40MzEtLjAwMSAyLjQ3Ni0uMTA0IDMuMjc4LS4xMDIuNzk1LS4zIDEuMzA5LS42NjYgMS43MDJhMi43MzUgMi43MzUgMCAwIDEtLjE0My4xNDJjLS4zOTMuMzY2LS45MDcuNTY1LTEuNzAyLjY2Ny0uODAyLjEwMy0xLjg0Ny4xMDQtMy4yNzguMTA0SDU4LjU0MmMtMi4yODYgMC0zLjM1NC0uMDA0LTQuMjA1LS4zYTUuNDAzIDUuNDAzIDAgMCAxLTMuMzI2LTMuMzI3Yy0uMjk2LS44NS0uMy0xLjkxOC0uMy00LjIwNVpcXFwiIGZpbGw9XFxcIiNCOURERkZcXFwiIHN0cm9rZT1cXFwidXJsKCNpYy12ZXJpZmljYXRpb25fc3ZnX19kKVxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNTkxXFxcIi8+PHBhdGggZD1cXFwiTTUwLjcxIDEyOS40NjVjMC0xLjMxLjAwMi0xLjkyNS4xMTUtMi40OTdhNi4wMzYgNi4wMzYgMCAwIDEgMS4zODItMi44MDhjLjM4NC0uNDM5Ljg3LS44MTUgMS45MDktMS42MTVsMzUuMjczLTI3LjE2OGMuOTU2LS43MzYgMS40MDQtMS4wOCAxLjg5My0xLjMzYTYuMDM0IDYuMDM0IDAgMCAxIDEuODkyLS42MDJjLjU0My0uMDc3IDEuMTA5LS4wNTUgMi4zMTQtLjAwNiAxLjA1LjA0MyAxLjU0NC4wNjQgMi4wMTYuMTZhNi4wMzQgNi4wMzQgMCAwIDEgMS42NC41OTVjLjQyNS4yMjcuODE3LjUyNyAxLjY1MyAxLjE2NmwzNC41NTMgMjYuNDUxYzIuMzQ5IDEuNzk4IDMuNDQ1IDIuNjQ1IDQuMDU4IDMuODI0bC4yNjItLjEzNy0uMjYyLjEzN2MuMDM4LjA3My4wNzUuMTQ3LjExLjIyMmwuMjY3LS4xMjUtLjI2Ny4xMjVjLjU2MyAxLjIwMy41NyAyLjU4OS41NyA1LjU0NyAwIDEuNDMxLS4wMDEgMi40NzYtLjEwNCAzLjI3OC0uMTAyLjc5NS0uMyAxLjMwOS0uNjY2IDEuNzAyYTMuMjE0IDMuMjE0IDAgMCAxLS4xNDMuMTQzYy0uMzkzLjM2NS0uOTA3LjU2NC0xLjcwMi42NjYtLjgwMi4xMDMtMS44NDcuMTA0LTMuMjc4LjEwNEg1OC41NDJjLTIuMjg2IDAtMy4zNTQtLjAwNC00LjIwNS0uM2E1LjQwMyA1LjQwMyAwIDAgMS0zLjMyNi0zLjMyN2MtLjI5Ni0uODUtLjMtMS45MTgtLjMtNC4yMDVaXFxcIiBmaWxsPVxcXCJ1cmwoI2ljLXZlcmlmaWNhdGlvbl9zdmdfX2UpXFxcIiBzdHJva2U9XFxcInVybCgjaWMtdmVyaWZpY2F0aW9uX3N2Z19fZilcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjU5MVxcXCIvPjxjaXJjbGUgY3g9XFxcIjEzMy43MzNcXFwiIGN5PVxcXCIxMzIuMjEzXFxcIiByPVxcXCIyMS4yMTNcXFwiIGZpbGw9XFxcIiNGMUY3RjlcXFwiLz48bWFzayBpZD1cXFwiaWMtdmVyaWZpY2F0aW9uX3N2Z19faVxcXCIgZmlsbD1cXFwiI2ZmZlxcXCI+PHBhdGggZmlsbC1ydWxlPVxcXCJldmVub2RkXFxcIiBjbGlwLXJ1bGU9XFxcImV2ZW5vZGRcXFwiIGQ9XFxcIk0xNDYuNTQxIDEyNy4zNjRhMy4wMDEgMy4wMDEgMCAwIDAtNC4yNDMtNC4yNDNsLTEyLjEzMSAxMi4xMzEtNC4yODMtNC4yODNhMyAzIDAgMSAwLTQuMjQzIDQuMjQzbDYuMzY0IDYuMzY0YTMuMDAxIDMuMDAxIDAgMCAwIDMuNDYuNTY0Yy4zMzktLjE0Ni42NTctLjM1Ny45MzQtLjYzNGwxNC4xNDItMTQuMTQyWlxcXCIvPjwvbWFzaz48cGF0aCBmaWxsLXJ1bGU9XFxcImV2ZW5vZGRcXFwiIGNsaXAtcnVsZT1cXFwiZXZlbm9kZFxcXCIgZD1cXFwiTTE0Ni41NDEgMTI3LjM2NGEzLjAwMSAzLjAwMSAwIDAgMC00LjI0My00LjI0M2wtMTIuMTMxIDEyLjEzMS00LjI4My00LjI4M2EzIDMgMCAxIDAtNC4yNDMgNC4yNDNsNi4zNjQgNi4zNjRhMy4wMDEgMy4wMDEgMCAwIDAgMy40Ni41NjRjLjMzOS0uMTQ2LjY1Ny0uMzU3LjkzNC0uNjM0bDE0LjE0Mi0xNC4xNDJaXFxcIiBmaWxsPVxcXCJ1cmwoI2ljLXZlcmlmaWNhdGlvbl9zdmdfX2cpXFxcIiBmaWxsLW9wYWNpdHk9XFxcIi45XFxcIi8+PHBhdGggZD1cXFwibTE0Ni41NDEgMTIzLjEyMS0uMTczLjE3My4xNzMtLjE3M1ptMCA0LjI0My0uMTczLS4xNzQuMTczLjE3NFptLTQuMjQzLTQuMjQzLS4xNzMtLjE3My4xNzMuMTczWm0tMTIuMTMxIDEyLjEzMS0uMTczLjE3My4xNzMuMTc0LjE3My0uMTc0LS4xNzMtLjE3M1ptLTQuMjgzLTQuMjgzLjE3My0uMTczLS4xNzMuMTczWm0tNC4yNDMgNC4yNDMuMTc0LS4xNzQtLjE3NC4xNzRabTYuMzY0IDYuMzY0LS4xNzMuMTczLjE3My0uMTczWm0zLjQ2LjU2NC0uMDk3LS4yMjUtLjAxMi4wMDYuMTA5LjIxOVptLjkzNC0uNjM0LS4xNzQtLjE3NC4xNzQuMTc0Wm0xMy45NjktMTguMjEyYTIuNzU2IDIuNzU2IDAgMCAxIDAgMy44OTZsLjM0Ni4zNDdhMy4yNDUgMy4yNDUgMCAwIDAgMC00LjU4OWwtLjM0Ni4zNDZabS0zLjg5NyAwYTIuNzU2IDIuNzU2IDAgMCAxIDMuODk3IDBsLjM0Ni0uMzQ2YTMuMjQzIDMuMjQzIDAgMCAwLTQuNTg5IDBsLjM0Ni4zNDZabS0xMi4xMzEgMTIuMTMxIDEyLjEzMS0xMi4xMzEtLjM0Ni0uMzQ2LTEyLjEzMSAxMi4xMzEuMzQ2LjM0NlptLTQuNjI5LTQuMjgzIDQuMjgzIDQuMjgzLjM0Ni0uMzQ2LTQuMjgzLTQuMjgzLS4zNDYuMzQ2Wm0tMy44OTYgMGEyLjc1NSAyLjc1NSAwIDAgMSAzLjg5NiAwbC4zNDYtLjM0NmEzLjI0MyAzLjI0MyAwIDAgMC00LjU4OSAwbC4zNDcuMzQ2Wm0wIDMuODk2YTIuNzU1IDIuNzU1IDAgMCAxIDAtMy44OTZsLS4zNDctLjM0NmEzLjI0NSAzLjI0NSAwIDAgMCAwIDQuNTg5bC4zNDctLjM0N1ptNi4zNjQgNi4zNjQtNi4zNjQtNi4zNjQtLjM0Ny4zNDcgNi4zNjQgNi4zNjQuMzQ3LS4zNDdabTMuMTc3LjUxOWEyLjc1NSAyLjc1NSAwIDAgMS0zLjE3Ny0uNTE5bC0uMzQ3LjM0N2EzLjI0NCAzLjI0NCAwIDAgMCAzLjc0Mi42MWwtLjIxOC0uNDM4Wm0uODY5LS41ODlhMi43MzUgMi43MzUgMCAwIDEtLjg1Ny41ODNsLjE5NC40NWEzLjIzNyAzLjIzNyAwIDAgMCAxLjAxLS42ODZsLS4zNDctLjM0N1ptMTQuMTQzLTE0LjE0Mi0xNC4xNDMgMTQuMTQyLjM0Ny4zNDcgMTQuMTQyLTE0LjE0Mi0uMzQ2LS4zNDdaXFxcIiBmaWxsPVxcXCJ1cmwoI2ljLXZlcmlmaWNhdGlvbl9zdmdfX2gpXFxcIiBtYXNrPVxcXCJ1cmwoI2ljLXZlcmlmaWNhdGlvbl9zdmdfX2kpXFxcIi8+PG1hc2sgaWQ9XFxcImljLXZlcmlmaWNhdGlvbl9zdmdfX2xcXFwiIGZpbGw9XFxcIiNmZmZcXFwiPjxwYXRoIGZpbGwtcnVsZT1cXFwiZXZlbm9kZFxcXCIgY2xpcC1ydWxlPVxcXCJldmVub2RkXFxcIiBkPVxcXCJNMTQ2LjU0MSAxMjcuMzY0YTMuMDAxIDMuMDAxIDAgMCAwLTQuMjQzLTQuMjQzbC0xMi4xMzEgMTIuMTMxLTQuMjgzLTQuMjgzYTMgMyAwIDEgMC00LjI0MyA0LjI0M2w2LjM2NCA2LjM2NGEzLjAwMSAzLjAwMSAwIDAgMCAzLjQ2LjU2NGMuMzM5LS4xNDYuNjU3LS4zNTcuOTM0LS42MzRsMTQuMTQyLTE0LjE0MlpcXFwiLz48L21hc2s+PHBhdGggZmlsbC1ydWxlPVxcXCJldmVub2RkXFxcIiBjbGlwLXJ1bGU9XFxcImV2ZW5vZGRcXFwiIGQ9XFxcIk0xNDYuNTQxIDEyNy4zNjRhMy4wMDEgMy4wMDEgMCAwIDAtNC4yNDMtNC4yNDNsLTEyLjEzMSAxMi4xMzEtNC4yODMtNC4yODNhMyAzIDAgMSAwLTQuMjQzIDQuMjQzbDYuMzY0IDYuMzY0YTMuMDAxIDMuMDAxIDAgMCAwIDMuNDYuNTY0Yy4zMzktLjE0Ni42NTctLjM1Ny45MzQtLjYzNGwxNC4xNDItMTQuMTQyWlxcXCIgZmlsbD1cXFwidXJsKCNpYy12ZXJpZmljYXRpb25fc3ZnX19qKVxcXCIgZmlsbC1vcGFjaXR5PVxcXCIuNzVcXFwiLz48cGF0aCBkPVxcXCJtMTQ2LjU0MSAxMjMuMTIxLS4xNzMuMTczLjE3My0uMTczWm0wIDQuMjQzLS4xNzMtLjE3NC4xNzMuMTc0Wm0tNC4yNDMtNC4yNDMtLjE3My0uMTczLjE3My4xNzNabS0xMi4xMzEgMTIuMTMxLS4xNzMuMTczLjE3My4xNzQuMTczLS4xNzQtLjE3My0uMTczWm0tNC4yODMtNC4yODMuMTczLS4xNzMtLjE3My4xNzNabS00LjI0MyA0LjI0My4xNzQtLjE3NC0uMTc0LjE3NFptNi4zNjQgNi4zNjQtLjE3My4xNzMuMTczLS4xNzNabTMuNDYuNTY0LS4wOTctLjIyNS0uMDEyLjAwNi4xMDkuMjE5Wm0uOTM0LS42MzQtLjE3NC0uMTc0LjE3NC4xNzRabTEzLjk2OS0xOC4yMTJhMi43NTYgMi43NTYgMCAwIDEgMCAzLjg5NmwuMzQ2LjM0N2EzLjI0NSAzLjI0NSAwIDAgMCAwLTQuNTg5bC0uMzQ2LjM0NlptLTMuODk3IDBhMi43NTYgMi43NTYgMCAwIDEgMy44OTcgMGwuMzQ2LS4zNDZhMy4yNDMgMy4yNDMgMCAwIDAtNC41ODkgMGwuMzQ2LjM0NlptLTEyLjEzMSAxMi4xMzEgMTIuMTMxLTEyLjEzMS0uMzQ2LS4zNDYtMTIuMTMxIDEyLjEzMS4zNDYuMzQ2Wm0tNC42MjktNC4yODMgNC4yODMgNC4yODMuMzQ2LS4zNDYtNC4yODMtNC4yODMtLjM0Ni4zNDZabS0zLjg5NiAwYTIuNzU1IDIuNzU1IDAgMCAxIDMuODk2IDBsLjM0Ni0uMzQ2YTMuMjQzIDMuMjQzIDAgMCAwLTQuNTg5IDBsLjM0Ny4zNDZabTAgMy44OTZhMi43NTUgMi43NTUgMCAwIDEgMC0zLjg5NmwtLjM0Ny0uMzQ2YTMuMjQ1IDMuMjQ1IDAgMCAwIDAgNC41ODlsLjM0Ny0uMzQ3Wm02LjM2NCA2LjM2NC02LjM2NC02LjM2NC0uMzQ3LjM0NyA2LjM2NCA2LjM2NC4zNDctLjM0N1ptMy4xNzcuNTE5YTIuNzU1IDIuNzU1IDAgMCAxLTMuMTc3LS41MTlsLS4zNDcuMzQ3YTMuMjQ0IDMuMjQ0IDAgMCAwIDMuNzQyLjYxbC0uMjE4LS40MzhabS44NjktLjU4OWEyLjczNSAyLjczNSAwIDAgMS0uODU3LjU4M2wuMTk0LjQ1YTMuMjM3IDMuMjM3IDAgMCAwIDEuMDEtLjY4NmwtLjM0Ny0uMzQ3Wm0xNC4xNDMtMTQuMTQyLTE0LjE0MyAxNC4xNDIuMzQ3LjM0NyAxNC4xNDItMTQuMTQyLS4zNDYtLjM0N1pcXFwiIGZpbGw9XFxcInVybCgjaWMtdmVyaWZpY2F0aW9uX3N2Z19faylcXFwiIGZpbGwtb3BhY2l0eT1cXFwiLjFcXFwiIG1hc2s9XFxcInVybCgjaWMtdmVyaWZpY2F0aW9uX3N2Z19fbClcXFwiLz48ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XFxcImljLXZlcmlmaWNhdGlvbl9zdmdfX2FcXFwiIHgxPVxcXCI3Ni42ODRcXFwiIHkxPVxcXCI4Ni41NjhcXFwiIHgyPVxcXCIxNDMuNDE3XFxcIiB5Mj1cXFwiMTExLjI4M1xcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIHN0b3AtY29sb3I9XFxcIiM3RkMwRkJcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIjFcXFwiIHN0b3AtY29sb3I9XFxcIiM0MDg4RjRcXFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cXFwiaWMtdmVyaWZpY2F0aW9uX3N2Z19fYlxcXCIgeDE9XFxcIjkxLjg4OVxcXCIgeTE9XFxcIjY4LjM3OFxcXCIgeDI9XFxcIjM0LjAwOFxcXCIgeTI9XFxcIjkzLjkzN1xcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIi43NjZcXFwiIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiIHN0b3Atb3BhY2l0eT1cXFwiMFxcXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVxcXCJpYy12ZXJpZmljYXRpb25fc3ZnX19jXFxcIiB4MT1cXFwiOTkuNjY1XFxcIiB5MT1cXFwiNjguMzc4XFxcIiB4Mj1cXFwiMTU3LjU0N1xcXCIgeTI9XFxcIjkzLjkzN1xcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIi43NjZcXFwiIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiIHN0b3Atb3BhY2l0eT1cXFwiMFxcXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVxcXCJpYy12ZXJpZmljYXRpb25fc3ZnX19kXFxcIiB4MT1cXFwiNDUuOTE3XFxcIiB5MT1cXFwiOTYuMTg1XFxcIiB4Mj1cXFwiNjYuNTY5XFxcIiB5Mj1cXFwiMTU5LjgyMlxcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIi43NjZcXFwiIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiIHN0b3Atb3BhY2l0eT1cXFwiMFxcXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVxcXCJpYy12ZXJpZmljYXRpb25fc3ZnX19lXFxcIiB4MT1cXFwiOTUuNFxcXCIgeTE9XFxcIjkzXFxcIiB4Mj1cXFwiOTUuNFxcXCIgeTI9XFxcIjEzNy41OTJcXFwiIGdyYWRpZW50VW5pdHM9XFxcInVzZXJTcGFjZU9uVXNlXFxcIj48c3RvcCBzdG9wLWNvbG9yPVxcXCIjQTdEMkZEXFxcIiBzdG9wLW9wYWNpdHk9XFxcIi4yNVxcXCIvPjxzdG9wIG9mZnNldD1cXFwiMVxcXCIgc3RvcC1jb2xvcj1cXFwiIzk3QzhGQ1xcXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVxcXCJpYy12ZXJpZmljYXRpb25fc3ZnX19mXFxcIiB4MT1cXFwiNDUuOTE3XFxcIiB5MT1cXFwiOTYuMTg1XFxcIiB4Mj1cXFwiNjYuNTY5XFxcIiB5Mj1cXFwiMTU5LjgyMlxcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIi43NjZcXFwiIHN0b3AtY29sb3I9XFxcIiNmZmZcXFwiIHN0b3Atb3BhY2l0eT1cXFwiMFxcXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVxcXCJpYy12ZXJpZmljYXRpb25fc3ZnX19nXFxcIiB4MT1cXFwiMTUwLjM0M1xcXCIgeTE9XFxcIjEyNC4xMjhcXFwiIHgyPVxcXCIxMTcuMzIyXFxcIiB5Mj1cXFwiMTM3LjM5NVxcXCIgZ3JhZGllbnRVbml0cz1cXFwidXNlclNwYWNlT25Vc2VcXFwiPjxzdG9wIHN0b3AtY29sb3I9XFxcIiMxNzk5N0JcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIjFcXFwiIHN0b3AtY29sb3I9XFxcIiMxNzk5N0JcXFwiIHN0b3Atb3BhY2l0eT1cXFwiMFxcXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVxcXCJpYy12ZXJpZmljYXRpb25fc3ZnX19oXFxcIiB4MT1cXFwiMTUwLjg3MVxcXCIgeTE9XFxcIjEyMS4yMjVcXFwiIHgyPVxcXCIxMzQuMDM1XFxcIiB5Mj1cXFwiMTI1Ljg5XFxcIiBncmFkaWVudFVuaXRzPVxcXCJ1c2VyU3BhY2VPblVzZVxcXCI+PHN0b3Agc3RvcC1jb2xvcj1cXFwiIzE3OTk3QlxcXCIvPjxzdG9wIG9mZnNldD1cXFwiMVxcXCIgc3RvcC1jb2xvcj1cXFwiIzE3OTk3QlxcXCIgc3RvcC1vcGFjaXR5PVxcXCIwXFxcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XFxcImljLXZlcmlmaWNhdGlvbl9zdmdfX2pcXFwiIHgxPVxcXCIxNTAuMzQzXFxcIiB5MT1cXFwiMTI0LjEyOFxcXCIgeDI9XFxcIjExNy4zMjJcXFwiIHkyPVxcXCIxMzcuMzk1XFxcIiBncmFkaWVudFVuaXRzPVxcXCJ1c2VyU3BhY2VPblVzZVxcXCI+PHN0b3Agc3RvcC1jb2xvcj1cXFwiIzE3OTk3QlxcXCIgc3RvcC1vcGFjaXR5PVxcXCIwXFxcIi8+PHN0b3Agb2Zmc2V0PVxcXCIxXFxcIiBzdG9wLWNvbG9yPVxcXCIjMTc5OTdCXFxcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XFxcImljLXZlcmlmaWNhdGlvbl9zdmdfX2tcXFwiIHgxPVxcXCIxNTAuODcxXFxcIiB5MT1cXFwiMTIxLjIyNVxcXCIgeDI9XFxcIjEzNC4wMzVcXFwiIHkyPVxcXCIxMjUuODlcXFwiIGdyYWRpZW50VW5pdHM9XFxcInVzZXJTcGFjZU9uVXNlXFxcIj48c3RvcCBzdG9wLWNvbG9yPVxcXCIjMTc5OTdCXFxcIiBzdG9wLW9wYWNpdHk9XFxcIjBcXFwiLz48c3RvcCBvZmZzZXQ9XFxcIjFcXFwiIHN0b3AtY29sb3I9XFxcIiMxNzk5N0JcXFwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTYgMTlcXFwiPjxwYXRoIGZpbGw9XFxcIiNmZmZcXFwiIHN0cm9rZT1cXFwiIzE1NTM2NlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIiBkPVxcXCJNMTEgNS42NjdWNmgyLjMzM2EuMzMzLjMzMyAwIDAgMSAuMzM0LjMzM3Y5LjMzNEExLjY2NyAxLjY2NyAwIDAgMSAxMiAxNy4zMzNINGExLjY2NyAxLjY2NyAwIDAgMS0xLjY2Ny0xLjY2NlY2LjMzM0EuMzMzLjMzMyAwIDAgMSAyLjY2NyA2SDVWNWEuMzMzLjMzMyAwIDEgMSAuNjY3IDB2MWgyVjVhLjMzMy4zMzMgMCAxIDEgLjY2NiAwdjFoMlY1YzAtLjA4OC4wMzUtLjE3My4wOTgtLjIzNmwtLjIzNi0uMjM1LjIzNi4yMzVBLjMzMy4zMzMgMCAwIDEgMTEgNXYuNjY3Wk0zLjI5MyAxNi4zNzRsLjIzNi0uMjM2LS4yMzYuMjM2YTEgMSAwIDAgMCAuNzA3LjI5M2g4YTEgMSAwIDAgMCAxLTF2LTloLTJ2MWEuMzMzLjMzMyAwIDEgMS0uNjY3IDB2LTFoLTJ2MWEuMzMzLjMzMyAwIDAgMS0uNjY2IDB2LTFoLTJ2MWEuMzMzLjMzMyAwIDAgMS0uNjY3IDB2LTFIM3Y5YTEgMSAwIDAgMCAuMjkzLjcwN1ptMi4wNC0zLjcwN2g1LjMzNGEuMzMzLjMzMyAwIDEgMSAwIC42NjZINS4zMzNhLjMzMy4zMzMgMCAwIDEtLjIzNS0uMDk3bC0uMjM2LjIzNS4yMzYtLjIzNWEuMzMzLjMzMyAwIDAgMSAwLS40NzJsLS4yMzYtLjIzNi4yMzYuMjM2YS4zMzMuMzMzIDAgMCAxIC4yMzUtLjA5N1ptMS4wOTgtMi41N0EuMzMzLjMzMyAwIDAgMSA2LjY2NyAxMGg0YS4zMzMuMzMzIDAgMSAxIDAgLjY2N2gtNGEuMzMzLjMzMyAwIDAgMS0uMjM2LS41N1pcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjAgMjBcXFwiPjxwYXRoIGZpbGw9XFxcIiMxNTUzNjZcXFwiIGQ9XFxcIm0xNy41IDMuNjY3LjU4My0uNTg0YS44MDYuODA2IDAgMCAwIDAtMS4xNjYuODA2LjgwNiAwIDAgMC0xLjE2NiAwbC04Ljc1IDguNzVBNC40OCA0LjQ4IDAgMCAwIDUuODMyIDEwYTQuMTI2IDQuMTI2IDAgMCAwLTQuMTY3IDQuMTY3IDQuMTI2IDQuMTI2IDAgMCAwIDQuMTY3IDQuMTY2QTQuMTI2IDQuMTI2IDAgMCAwIDEwIDE0LjE2N2E0LjQ4IDQuNDggMCAwIDAtLjY2Ny0yLjMzNEwxNCA3LjE2N2wxLjc1IDEuNzVhLjgwNi44MDYgMCAwIDAgMS4xNjYgMCAuODA2LjgwNiAwIDAgMCAwLTEuMTY3TDE1LjE2NiA2bDEuMTY3LTEuMTY3LjU4NC41ODRhLjgwNi44MDYgMCAwIDAgMS4xNjYgMCAuODA2LjgwNiAwIDAgMCAwLTEuMTY3bC0uNTgzLS41ODNabS0xMS42NjcgMTNjLTEuNDE3IDAtMi41LTEuMDg0LTIuNS0yLjUgMC0xLjQxNyAxLjA4My0yLjUgMi41LTIuNXMyLjUgMS4wODMgMi41IDIuNWMwIDEuNDE2LTEuMDgzIDIuNS0yLjUgMi41WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAxOFxcXCI+PHBhdGggZD1cXFwiTTQuMzExIDcuNDMgMy43NCA4aDEwLjkyNmExIDEgMCAxIDEgMCAySDMuNzRsLjU3MS41NyA0LjQgNC4zODZhMSAxIDAgMCAxIDAgMS40MmwtLjAwMS4wMDNhMSAxIDAgMCAxLTEuNDIgMGwtLjAwMS0uMDAxTC42MjUgOS43MTRhMSAxIDAgMCAxLS4yMDgtLjMyOEwuNDE1IDkuMzhhMSAxIDAgMCAxIDAtLjc2bC4wMDItLjAwNmExIDEgMCAwIDEgLjIwOC0uMzI4bDYuNjY0LTYuNjY0LS4yMzYtLjIzNS4yMzYuMjM1QTEuMDA1IDEuMDA1IDAgMSAxIDguNzEgMy4wNDRsLTQuNCA0LjM4N1pcXFwiIGZpbGw9XFxcIiMxNTUzNjZcXFwiIHN0cm9rZT1cXFwiIzE1NTM2NlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDI2NiA2M1xcXCI+PHBhdGggZD1cXFwiTS44MyA1OC45MVYyOC43aDguNzI1djMwLjIxSC44M1ptMzUuMDE3LTIuOTNjLTEuOTgzIDIuNDE2LTQuODM1IDMuNzc3LTguNjE1IDMuNzc3LTYuMDc2IDAtMTAuOTcxLTMuNzc4LTEwLjk3MS05LjYwMyAwLTUuNzYzIDQuODk4LTguNjEgMTEuNzc3LTguOTg1IDUuMjctLjMxIDYuOTQzLS44NjggNi45NDMtMi42NjMgMC0xLjczNi0xLjYxMS0yLjkxMy00LjQ2My0yLjkxMy0zLjQ3IDAtNC45NiAxLjczNi01LjE0NSAzLjU5NGgtOC40OTRjLjQzNC02LjYyOCA1LjM5Mi0xMS4yMTQgMTMuNzAxLTExLjIxNCA4LjEyMiAwIDEzLjMzIDQuMzk4IDEzLjMzIDEyLjYzN3YxOC40NjNoLTcuMjU0bC0uODA5LTMuMDk0Wm0tMTAuNzg2LTYuMTk1YzAgMS43MzYgMS41NSAyLjc4OCA0LjAzIDIuNzg4IDMuMzQ4IDAgNi4wMTItMS44NTggNi4wMTItNS42MzhWNDUuODJzLTEuNjExLjc0My00Ljk2LjkzYy0zLjY1OC4xODUtNS4wODIgMS4zNjItNS4wODIgMy4wMzVabTM4LjMwNyA5LjQxNmMtNi42MzIgMC0xMC40NzctMy44NC0xMC40NzctMTAuNTMzVjM2LjgzNmgtNS4wODN2LTguMTE3aDUuMDgzdi00LjQ2MWw4LjgwMi03LjQzNFYyOC43Mmg3LjYyNnY4LjExN2gtNy42MjZWNDcuNDNjMCAyLjkxMiAxLjkyMiAzLjU5MyAzLjcyIDMuNTkzYTkuNTM5IDkuNTM5IDAgMCAwIDMuNzIxLS44MDV2Ny45OTJjMCAuMDAyLTIuMzU1Ljk5Mi01Ljc2Ni45OTJaTS4wOCAxOS42MzRjMC0yLjg1IDIuMjMtNS4xNDIgNS4wODItNS4xNDJhNS4xMyA1LjEzIDAgMCAxIDUuMTQ1IDUuMTQyYzAgMi43ODgtMi4yOTMgNS4wOC01LjE0NSA1LjA4YTUuMDYzIDUuMDYzIDAgMCAxLTUuMDgyLTUuMDhaTTc1LjgwOSA1OC45MVYyOC43aDguNzI2djMwLjIxaC04LjcyNlptMjAuMTU0LTM5LjIwMmMwLTEuNC0uMTktMi43Ni0uNTM3LTQuMDUzYTE1LjUxIDE1LjUxIDAgMCAwLTEuNTY5LTMuNzcyIDE1LjY2NSAxNS42NjUgMCAwIDAtMi40ODktMy4yNDEgMTUuNzMyIDE1LjczMiAwIDAgMC03LjAxOC00LjA1IDE1LjY1OCAxNS42NTggMCAwIDAtNC4wNTItLjUzM2gtLjAwNmExNS43NSAxNS43NSAwIDAgMC00LjA0OS41M2MtMS4zNC4zNTctMi42MDUuODg4LTMuNzc3IDEuNTY1QTE1LjY3IDE1LjY3IDAgMCAwIDY5LjIyIDguNjRhMTUuNzcgMTUuNzcgMCAwIDAtMi40OTIgMy4yNDIgMTUuNjQ4IDE1LjY0OCAwIDAgMC0xLjU3MiAzLjc3NGwyLjI0Mi42MDJhMTMuNDI3IDEzLjQyNyAwIDAgMSAzLjQ2Mi01Ljk3OCAxMy40MjYgMTMuNDI2IDAgMCAxIDUuOTg0LTMuNDUgMTMuNDI2IDEzLjQyNiAwIDAgMSAzLjQ0OC0uNDVoLjAwNmMxLjE5NSAwIDIuMzUuMTU4IDMuNDU0LjQ1M2ExMy40MTIgMTMuNDEyIDAgMCAxIDUuOTggMy40NDljLjgxOS44MiAxLjUzMSAxLjc1IDIuMTE5IDIuNzZhMTMuMyAxMy4zIDAgMCAxIDEuNzkzIDYuNjY0di4wMTJhMTMuMzggMTMuMzggMCAwIDEtLjQ1MSAzLjQ0MyAxMy4yMTcgMTMuMjE3IDAgMCAxLTEuMzM0IDMuMjE5bDIuMDEgMS4xNmExNS41MzkgMTUuNTM5IDAgMCAwIDEuNTY2LTMuNzc4IDE1LjcgMTUuNyAwIDAgMCAuNTMtNC4wNDFsLS4wMDItLjAxMlpcXFwiIGZpbGw9XFxcIiNmZmZcXFwiLz48cGF0aCBkPVxcXCJNMTAwLjAyMyAxOS43MDhhMTkuNjU1IDE5LjY1NSAwIDAgMC0yLjY0NC05Ljg1NSAxOS44MSAxOS44MSAwIDAgMC03LjIyLTcuMjEzQTE5LjYxMiAxOS42MTIgMCAwIDAgODUuNDAzLjY3IDE5LjgxIDE5LjgxIDAgMCAwIDgwLjI5OCAwaC0uMDA2Yy0xLjc2NSAwLTMuNDczLjIzMy01LjEwMi42NjZhMTkuNTEzIDE5LjUxMyAwIDAgMC00Ljc1OSAxLjk2OSAxOS44MjQgMTkuODI0IDAgMCAwLTQuMDg2IDMuMTM0bDEuMjMxIDEuMjNhMTguMTA2IDE4LjEwNiAwIDAgMSAzLjcyNi0yLjg1NSAxNy44MDMgMTcuODAzIDAgMCAxIDQuMzQtMS43OTMgMTguMDg0IDE4LjA4NCAwIDAgMSA0LjY0OC0uNjA3aC4wMDVhMTcuOTUgMTcuOTUgMCAwIDEgMTIuNzEzIDUuMjYxIDE3LjkzMyAxNy45MzMgMCAwIDEgNS4yNzMgMTIuNzAzdi4wMTFhMTguMDMgMTguMDMgMCAwIDEtLjYwNyA0LjY0MyAxNy42NzUgMTcuNjc1IDAgMCAxLTEuNzk3IDQuMzM3IDE4LjAyMyAxOC4wMjMgMCAwIDEtMi44NTcgMy43MjNsMS4yMzEgMS4yMzFhMTkuNzQzIDE5Ljc0MyAwIDAgMCAzLjEzNi00LjA4NCAxOS42IDE5LjYgMCAwIDAgMS45Ny00Ljc1NmMuNDM0LTEuNjI1LjY2Ni0zLjMzMi42NjYtNS4wOTR2LS4wMVpcXFwiIGZpbGw9XFxcIiNmZmZcXFwiLz48cGF0aCBkPVxcXCJNOTAuOTQ1IDE2Ljg1NWExMC45NDggMTAuOTQ4IDAgMCAwLTEuMTA0LTIuNjU1IDExLjE1NSAxMS4xNTUgMCAwIDAtMS43NS0yLjI4IDExLjA0OCAxMS4wNDggMCAwIDAtMi4yODItMS43NDdBMTAuOTY0IDEwLjk2NCAwIDAgMCA4MC4zIDguNjk1aC0uMDA2Yy0uOTg3IDAtMS45NC4xMy0yLjg0OS4zNzJhMTAuOTEgMTAuOTEgMCAwIDAtMi42NiAxLjEgMTAuOTk0IDEwLjk5NCAwIDAgMC00LjAzNyA0LjAyNyAxMSAxMSAwIDAgMC0xLjQ4NCA1LjUxdi4wMTJhMTAuOTI0IDEwLjkyNCAwIDAgMCAxLjQ3NiA1LjUwNWwzLjAxMy0xLjczOGE3LjUzNSA3LjUzNSAwIDAgMS0xLjAxLTMuNzd2LS4wMWE3LjU1MyA3LjU1MyAwIDAgMSA3LjU0OC03LjUzM2guMDA2YTcuNTI0IDcuNTI0IDAgMCAxIDMuNzY5IDEuMDEyIDcuNTUgNy41NSAwIDAgMSAzLjUxMyA0LjU3MmMuMTY3LjYyLjI1OCAxLjI3Ni4yNTggMS45NTFoMy40NzljLjAwMy0uOTg0LS4xMjgtMS45NC0uMzcyLTIuODVaXFxcIiBmaWxsPVxcXCIjZmZmXFxcIi8+PHBhdGggZD1cXFwiTTg3LjU4NSAxNy43NjVhNy41NDIgNy41NDIgMCAwIDAtMS45NTUtMy4zOGwtMS42NCAxLjYzOWE1LjI2NCA1LjI2NCAwIDAgMSAxLjM1NCAyLjM0MyA1LjE4NCA1LjE4NCAwIDAgMSAwIDIuNzA1IDUuMjM5IDUuMjM5IDAgMCAxLTMuNjk4IDMuNjk1IDUuMTk1IDUuMTk1IDAgMCAxLTIuNzA3IDAgNS4yOTYgNS4yOTYgMCAwIDEtMS4yNi0uNTIxbC0xLjE2IDIuMDA4YTcuNTI4IDcuNTI4IDAgMCAwIDMuNzc0IDEuMDFjLjY3NyAwIDEuMzMtLjA5MSAxLjk1NC0uMjU2YTcuNTUzIDcuNTUzIDAgMCAwIDQuNTg0LTMuNTE3IDcuNTQ0IDcuNTQ0IDAgMCAwIDEuMDEzLTMuNzcxIDcuNSA3LjUgMCAwIDAtLjI1OS0xLjk1NVpcXFwiIGZpbGw9XFxcIiMxNTUzNjZcXFwiLz48cGF0aCBkPVxcXCJNOTEuODUzIDEzLjA0NmExMy40MzUgMTMuNDM1IDAgMCAwLTIuMTItMi43NjUgMTMuMzQzIDEzLjM0MyAwIDAgMC0yLjc2Ni0yLjExOCAxMy4yODcgMTMuMjg3IDAgMCAwLTYuNjc1LTEuNzljLTEuMTk3IDAtMi4zNTIuMTU5LTMuNDU2LjQ1NC0xLjE0MS4zMDMtMi4yMi43NTctMy4yMTggMS4zMzZhMTMuNDM2IDEzLjQzNiAwIDAgMC0yLjc2NyAyLjExOCAxMy4zMzQgMTMuMzM0IDAgMCAwLTIuMTIgMi43NjUgMTMuMjcyIDEzLjI3MiAwIDAgMC0xLjc5IDYuNjdoMi4zMmMwLS45ODYuMTMxLTEuOTQyLjM3NS0yLjg1MmExMS4wODggMTEuMDg4IDAgMCAxIDIuODU1LTQuOTQgMTEuMDAyIDExLjAwMiAwIDAgMSAyLjI4NC0xLjc1IDExLjAzIDExLjAzIDAgMCAxIDIuNjYtMS4xMDQgMTEuMDIgMTEuMDIgMCAwIDEgMi44NTQtLjM3NGMuOTg4IDAgMS45NDQuMTMgMi44NTUuMzc0YTExLjA5OSAxMS4wOTkgMCAwIDEgNC45NDMgMi44NTMgMTAuOTkgMTAuOTkgMCAwIDEgMS43NTEgMi4yODNjLjQ3Ny44MjYuODUyIDEuNzE2IDEuMTA0IDIuNjU4bDIuMjQyLS42MDJhMTMuMTk0IDEzLjE5NCAwIDAgMC0xLjMzLTMuMjE2WlxcXCIgZmlsbD1cXFwiIzE1NTM2NlxcXCIvPjxwYXRoIGQ9XFxcIk05Ny42NzQgMTUuMDYzYTE3Ljc5MSAxNy43OTEgMCAwIDAtMS44LTQuMzM2IDE4LjA0MyAxOC4wNDMgMCAwIDAtNi41ODYtNi41ODMgMTcuOTMgMTcuOTMgMCAwIDAtOC45OTYtMi40MDhjLTEuNjEyIDAtMy4xNzIuMjEzLTQuNjU3LjYxYTE3LjgxNyAxNy44MTcgMCAwIDAtNC4zMzkgMS43OTggMTguMDMyIDE4LjAzMiAwIDAgMC02LjU4NiA2LjU4M2wyLjAxMiAxLjE2M2ExNS42NzYgMTUuNjc2IDAgMCAxIDIuNDg5LTMuMjQ1Yy45NjUtLjk2NCAyLjA1Ny0xLjggMy4yNDYtMi40ODdhMTUuNzA2IDE1LjcwNiAwIDAgMSAzLjc3Ny0xLjU2OSAxNS42OCAxNS42OCAwIDAgMSA4LjExIDBjMS4zNC4zNTggMi42MDYuODkxIDMuNzc4IDEuNTY5YTE1LjY4NSAxNS42ODUgMCAwIDEgMy4yNDYgMi40ODcgMTUuNjc2IDE1LjY3NiAwIDAgMSAyLjQ4OSAzLjI0NSAxNS42ODQgMTUuNjg0IDAgMCAxIDEuNTY5IDMuNzc0IDE1LjY1NCAxNS42NTQgMCAwIDEgMCA4LjEwNmwyLjI0NS42MDFjLjM5Ny0xLjQ4My42MS0zLjA0My42MS00LjY1NGExNy44NzUgMTcuODc1IDAgMCAwLS42MDgtNC42NTRaXFxcIiBmaWxsPVxcXCIjMTU1MzY2XFxcIi8+PHBhdGggZD1cXFwiTTgwLjI5MyAyNC45NDRjMi44ODggMCA1LjIzLTIuMzQgNS4yMy01LjIyN2E1LjIyOSA1LjIyOSAwIDAgMC01LjIzLTUuMjI3IDUuMjI4IDUuMjI4IDAgMCAwLTUuMjMgNS4yMjcgNS4yMjggNS4yMjggMCAwIDAgNS4yMyA1LjIyN1ptMjAuNjE1IDE1LjQzNlYyOS41NDNoMi4zMDRWNDAuMzhoLTIuMzA0Wm02LjYxOC0zLjc4N3YzLjc4N2gtMi4xOTZ2LTcuNTc2aDIuMTY1di41MjVhMi41MzkgMi41MzkgMCAwIDEgMS43OTMtLjcxMmMxLjg1NiAwIDMuMDc5IDEuMjA2IDMuMDc5IDMuMzU1djQuNDA1aC0yLjE5NnYtNC4yMzVjMC0uODAyLS4zNzItMS40ODMtMS4yNTQtMS40ODMtMS4wMzMuMDAzLTEuMzkxLjc3NC0xLjM5MSAxLjkzNFptOS42NjYgMy44MTdjLTEuNjU1IDAtMi42MTQtLjk1OC0yLjYxNC0yLjYyOHYtMi45NTNoLTEuMjY4di0yLjAyNWgxLjI2OHYtMS4xMTFsMi4xOTYtMS44NTV2Mi45N2gxLjkwMnYyLjAyNGgtMS45MDJ2Mi42NDNjMCAuNzI3LjQ4Ljg5Ny45MjguODk3LjUxMSAwIC45MjgtLjIwMi45MjgtLjIwMnYxLjk5NHMtLjU4Ny4yNDctMS40MzguMjQ3Wm0xMC4xOTMtMy4yM2gtNS4zNTJjLjEyNS43NzUuNzU3IDEuMzYyIDEuNyAxLjM2Mi42MzUgMCAxLjAwNC0uMjY0IDEuMjM3LS42NWgyLjM2N2MtLjUxMSAxLjY0LTEuNjg2IDIuNjYtMy41NzMgMi42Ni0yLjE5NyAwLTMuOTU5LTEuNTMtMy45NTktMy45MSAwLTIuMjg5IDEuNjA5LTQuMDE5IDMuODM3LTQuMDE5IDIuNDg5IDAgMy43NTcgMS45NjMgMy43NTcgMy45ODggMCAuMTk4LS4wMTQuNTctLjAxNC41N1ptLTMuNzE1LTIuNjI4Yy0uODM0IDAtMS4zOTMuNTEtMS41MzIgMS4xNmgyLjk0Yy0uMDQ2LS42NjQtLjYxOS0xLjE2LTEuNDA4LTEuMTZabTEwLjIzOS0xLjMxNXYyLjE2NHMtLjU3My0uNTg3LTEuNDM5LS41ODdjLS42NjQgMC0xLjQwNy4zNTQtMS40MDcgMS40Njl2NC4wOTVoLTIuMTk3di03LjU3NWgyLjE2NXYuNjM1Yy0uMDE0IDAgLjQzNS0uNzQzIDEuNTE2LS43NDMuOTI4IDAgMS4zNjIuNTQyIDEuMzYyLjU0MlptMy40MDMgMy4zNTZ2My43ODdoLTIuMTk3di03LjU3NmgyLjE2NXYuNTI1YTIuNTQzIDIuNTQzIDAgMCAxIDEuNzk0LS43MTJjMS44NTYgMCAzLjA3OSAxLjIwNiAzLjA3OSAzLjM1NXY0LjQwNWgtMi4xOTd2LTQuMjM1YzAtLjgwMi0uMzcxLTEuNDgzLTEuMjU0LTEuNDgzLTEuMDM2LjAwMy0xLjM5Ljc3NC0xLjM5IDEuOTM0Wm0xMS4xNjYgMy4wMTVjLS40OTYuNjA0LTEuMjA2Ljk0NS0yLjE1MS45NDUtMS41MTUgMC0yLjczOC0uOTQ1LTIuNzM4LTIuMzk3IDAtMS40MzggMS4yMi0yLjE1IDIuOTM3LTIuMjQgMS4zMTQtLjA3NyAxLjczNC0uMjE2IDEuNzM0LS42NjQgMC0uNDM0LS40MDMtLjcyNi0xLjExMy0uNzI2LS44NjUgMC0xLjIzNy40MzQtMS4yODUuODk2aC0yLjEyYy4xMDgtMS42NTMgMS4zNDUtMi43OTkgMy40Mi0yLjc5OSAyLjAyNiAwIDMuMzI2IDEuMDk4IDMuMzI2IDMuMTU0djQuNjA2aC0xLjgxMWwtLjE5OS0uNzc1Wm0tMi42OTMtMS41NDVjMCAuNDM0LjM4Ni42OTQgMS4wMDUuNjk0LjgzNCAwIDEuNTAxLS40NjIgMS41MDEtMS40MDZ2LS4yNzhzLS40MDMuMTg0LTEuMjM3LjIzMmMtLjkxNC4wNDYtMS4yNjkuMzQtMS4yNjkuNzU4Wm05LjU1OCAyLjM0N2MtMS42NTUgMC0yLjYxNC0uOTU4LTIuNjE0LTIuNjI4di0yLjk1M2gtMS4yNjl2LTIuMDI1aDEuMjY5di0xLjExMWwyLjE5Ni0xLjg1NXYyLjk3aDEuOTAydjIuMDI0aC0xLjkwMnYyLjY0M2MwIC43MjcuNDguODk3LjkyOC44OTcuNTExIDAgLjkyOC0uMjAyLjkyOC0uMjAydjEuOTk0cy0uNTkuMjQ3LTEuNDM4LjI0N1ptMi45NTEtOS43NTNjMC0uNzEyLjU1Ni0xLjI4MiAxLjI2OC0xLjI4Mi43MTMgMCAxLjI4Ni41NzMgMS4yODYgMS4yODIgMCAuNjk1LS41NzMgMS4yNjgtMS4yODYgMS4yNjhhMS4yNjQgMS4yNjQgMCAwIDEtMS4yNjgtMS4yNjhabS4xNyA5LjcyMnYtNy41NzVoMi4xOTd2Ny41NzVoLTIuMTk3Wm0zLjc4OS0zLjc4NmMwLTIuMjcyIDEuNzQ4LTMuOTc0IDQuMDM4LTMuOTc0czQuMDM1IDEuNzAyIDQuMDM1IDMuOTc0YzAgMi4yNzEtMS43NDggMy45NTYtNC4wMzUgMy45NTYtMi4yOSAwLTQuMDM4LTEuNjg1LTQuMDM4LTMuOTU2Wm0yLjI0NSAwYzAgMS4xMTEuNzU3IDEuOTE3IDEuNzkzIDEuOTE3czEuNzk0LS44MDMgMS43OTQtMS45MTdjMC0xLjExMi0uNzU4LTEuOTE4LTEuNzk0LTEuOTE4cy0xLjc5My44MDMtMS43OTMgMS45MThabTkuNTQgMHYzLjc4N2gtMi4xOTZ2LTcuNTc2aDIuMTY1di41MjVhMi41NCAyLjU0IDAgMCAxIDEuNzkzLS43MTJjMS44NTYgMCAzLjA3OSAxLjIwNiAzLjA3OSAzLjM1NXY0LjQwNWgtMi4xOTZ2LTQuMjM1YzAtLjgwMi0uMzcyLTEuNDgzLTEuMjU0LTEuNDgzLTEuMDM2LjAwMy0xLjM5MS43NzQtMS4zOTEgMS45MzRabTExLjE2NyAzLjAxNWMtLjQ5Ny42MDQtMS4yMDYuOTQ1LTIuMTUxLjk0NS0xLjUxNiAwLTIuNzM5LS45NDUtMi43MzktMi4zOTcgMC0xLjQzOCAxLjIyMS0yLjE1IDIuOTM3LTIuMjQgMS4zMTQtLjA3NyAxLjczNC0uMjE2IDEuNzM0LS42NjQgMC0uNDM0LS40MDMtLjcyNi0xLjExMi0uNzI2LS44NjYgMC0xLjIzNy40MzQtMS4yODYuODk2aC0yLjExOWMuMTA3LTEuNjUzIDEuMzQ1LTIuNzk5IDMuNDE5LTIuNzk5IDIuMDI2IDAgMy4zMjYgMS4wOTggMy4zMjYgMy4xNTR2NC42MDZoLTEuODFsLS4xOTktLjc3NVptLTIuNjkzLTEuNTQ1YzAgLjQzNC4zODYuNjk0IDEuMDA0LjY5NC44MzUgMCAxLjUwMi0uNDYyIDEuNTAyLTEuNDA2di0uMjc4cy0uNDAzLjE4NC0xLjIzOC4yMzJjLS45MTEuMDQ2LTEuMjY4LjM0LTEuMjY4Ljc1OFptNi41MjQgMi4zMTdWMjkuNTQzaDIuMTk2VjQwLjM4aC0yLjE5NlptMTQuMDg5LTEwLjgzNyA0LjI0IDEwLjgzN2gtMi4zODFsLS44NjYtMi4xMzNoLTQuMTkxbC0uODUxIDIuMTMzaC0yLjM4MWw0LjIzOS0xMC44MzdoMi4xOTFabS0xLjA5OCAzLjEyMy0xLjM0NSAzLjUzOWgyLjY5bC0xLjM0NS0zLjU0Wm02LjM4NS0yLjAwOWMwLS43MTIuNTU2LTEuMjgyIDEuMjY5LTEuMjgyLjcxMiAwIDEuMjg1LjU3MyAxLjI4NSAxLjI4MiAwIC42OTUtLjU3MyAxLjI2OC0xLjI4NSAxLjI2OGExLjI2NCAxLjI2NCAwIDAgMS0xLjI2OS0xLjI2OFptLjE3IDkuNzIydi03LjU3NWgyLjE5N3Y3LjU3NWgtMi4xOTdabTMuNzg5LTMuNzg2YzAtMi4zOTYgMS43MTYtMy45NzMgMy44MTktMy45NzMuODY2IDAgMS41OTIuMzIzIDEuOTgxLjY2NHYtMy43NDFoMi4xOTZWNDAuMzhoLTIuMTY1di0uNTQyYy0uNC4zODYtMS4xNi43MTItMi4wMDkuNzEyLTIuMTA2IDAtMy44MjItMS41MTUtMy44MjItMy45NTZabTUuODMxIDBjMC0xLjE3NC0uNzcyLTEuOTgtMS43OTMtMS45OC0xLjAyMiAwLTEuNzk0LjgwMy0xLjc5NCAxLjk4IDAgMS4xNzUuNzcyIDEuOTggMS43OTQgMS45OCAxLjAyMSAwIDEuNzkzLS44MDUgMS43OTMtMS45OFpNMTAwLjE5NiA0OC4wOWg4LjUyMnYyLjExOGgtMy4xMXY4LjcxOWgtMi4zMDR2LTguNzE5aC0zLjExMVY0OC4wOWguMDAzWm0xMy44ODggMy42OTJ2Mi4xNjRzLS41NzMtLjU4Ny0xLjQzOS0uNTg3Yy0uNjY0IDAtMS40MDcuMzU0LTEuNDA3IDEuNDY5djQuMDk1aC0yLjE5NnYtNy41NzVoMi4xNjV2LjYzNWMtLjAxNCAwIC40MzQtLjc0MyAxLjUxNS0uNzQzLjkzMS4wMDMgMS4zNjIuNTQyIDEuMzYyLjU0MlptNS44OTEgNi4zNzFjLS40OTYuNjA0LTEuMjA2Ljk0NS0yLjE1MS45NDUtMS41MTUgMC0yLjczOC0uOTQ1LTIuNzM4LTIuMzk3IDAtMS40MzggMS4yMi0yLjE1IDIuOTM3LTIuMjQgMS4zMTQtLjA3NyAxLjczNC0uMjE2IDEuNzM0LS42NjQgMC0uNDM0LS40MDMtLjcyNi0xLjExMi0uNzI2LS44NjYgMC0xLjIzOC40MzQtMS4yODYuODk2aC0yLjEyYy4xMDgtMS42NTMgMS4zNDUtMi43OTkgMy40Mi0yLjc5OSAyLjAyNiAwIDMuMzI2IDEuMDk4IDMuMzI2IDMuMTU0djQuNjA1aC0xLjgxMWwtLjE5OS0uNzc0Wm0tMi42OS0xLjU0NWMwIC40MzQuMzg2LjY5NSAxLjAwNS42OTUuODM0IDAgMS41MDEtLjQ2MyAxLjUwMS0xLjQwN3YtLjI3OHMtLjQwMy4xODQtMS4yMzcuMjMyYy0uOTE0LjA0Ni0xLjI2OS4zNC0xLjI2OS43NThabTguNzIxLTEuNDd2My43ODdoLTIuMTk3di03LjU3NmgyLjE2NXYuNTI1YTIuNTQgMi41NCAwIDAgMSAxLjc5NC0uNzEyYzEuODU2IDAgMy4wNzkgMS4yMDUgMy4wNzkgMy4zNTV2NC40MDVoLTIuMTk3di00LjIzNWMwLS44MDItLjM3MS0xLjQ4My0xLjI1NC0xLjQ4My0xLjAzMy4wMDMtMS4zOS43NzQtMS4zOSAxLjkzNFptMTAuNzk1IDEuNjA3YzAtLjIzMi0uMTM5LS40MTYtLjc0NC0uNTQxbC0xLjE0My0uMjMzYy0xLjcxNy0uMzQtMi40NDQtMS4xNi0yLjQ0NC0yLjI4OCAwLTEuMzMgMS4wMDUtMi41MTkgMy4wOTQtMi41MTkgMi4xMDIgMCAzLjA0NyAxLjE3NCAzLjIwMSAyLjQ5aC0yLjA4OWMtLjEyNS0uNDE3LS40OC0uNjY0LTEuMTI5LS42NjQtLjYxOSAwLS45Ni4yMTYtLjk2LjUyNSAwIC4yMzMuMTg1LjM3Mi43NTguNDhsMS4xNDQuMjMyYzEuNjIzLjMyMyAyLjQyOSAxLjA4MyAyLjQyOSAyLjM4IDAgMS40NjktMS4wNjcgMi40OS0zLjE4NyAyLjQ5LTIuMTY1IDAtMy4zMjYtMS4wMjEtMy41NDItMi41OThoMi4yMTRjLjEyNS41MjQuNTExLjgwMiAxLjMyOC44MDIuNzQ2IDAgMS4wNy0uMjE1IDEuMDctLjU1NlptMTEuNTUyLTEuNjA4YzAgMi4zOTctMS43MTcgMy45NTctMy44MTkgMy45NTctLjg2NiAwLTEuNTkyLS4zMS0xLjk4MS0uNjV2My40NzdoLTIuMTk3VjUxLjM0OGgyLjE2NnYuNTQyYy40MDMtLjM4NiAxLjE2LS43MjYgMi4wMTItLjcyNiAyLjEwMiAwIDMuODE5IDEuNTE3IDMuODE5IDMuOTczWm0tNS44MzEgMGMwIDEuMTc1Ljc3NCAxLjk4IDEuNzkzIDEuOTggMS4wMjIgMCAxLjc5NC0uODAzIDEuNzk0LTEuOTggMC0xLjE3NC0uNzcyLTEuOTgtMS43OTQtMS45OC0xLjAxOS4wMDQtMS43OTMuODA2LTEuNzkzIDEuOThabTExLjg3OSAzLjAxNmMtLjQ5Ny42MDQtMS4yMDYuOTQ1LTIuMTUxLjk0NS0xLjUxNiAwLTIuNzM5LS45NDUtMi43MzktMi4zOTcgMC0xLjQzOCAxLjIyLTIuMTUgMi45MzctMi4yNCAxLjMxNC0uMDc3IDEuNzM0LS4yMTYgMS43MzQtLjY2NCAwLS40MzQtLjQwMy0uNzI2LTEuMTEyLS43MjYtLjg2NiAwLTEuMjM3LjQzNC0xLjI4Ni44OTZoLTIuMTJjLjEwOC0xLjY1MyAxLjM0Ni0yLjc5OSAzLjQyLTIuNzk5IDIuMDI2IDAgMy4zMjYgMS4wOTggMy4zMjYgMy4xNTR2NC42MDVoLTEuODExbC0uMTk4LS43NzRabS0yLjY5My0xLjU0NWMwIC40MzQuMzg2LjY5NSAxLjAwNC42OTUuODM1IDAgMS41MDEtLjQ2MyAxLjUwMS0xLjQwN3YtLjI3OHMtLjQwMy4xODQtMS4yMzcuMjMyYy0uOTExLjA0Ni0xLjI2OC4zNC0xLjI2OC43NThabTExLjU2Ni00LjgyNnYyLjE2NHMtLjU3My0uNTg3LTEuNDM5LS41ODdjLS42NjQgMC0xLjQwNy4zNTQtMS40MDcgMS40Njl2NC4wOTVoLTIuMTk3di03LjU3NWgyLjE2NnYuNjM1Yy0uMDE1IDAgLjQzNC0uNzQzIDEuNTE1LS43NDMuOTI4LjAwMyAxLjM2Mi41NDIgMS4zNjIuNTQyWm04LjQyOCAzLjk0NGgtNS4zNTJjLjEyNS43NzQuNzU4IDEuMzYgMS43MDMgMS4zNi42MzYgMCAxLjAwNS0uMjYzIDEuMjM3LS42NDloMi4zNjdjLS41MTEgMS42NC0xLjY4NiAyLjY2LTMuNTczIDIuNjYtMi4xOTYgMC0zLjk1OS0xLjUzLTMuOTU5LTMuOTEgMC0yLjI4OSAxLjYxLTQuMDE5IDMuODM3LTQuMDE5IDIuNDg5IDAgMy43NTcgMS45NjMgMy43NTcgMy45ODggMCAuMi0uMDE3LjU3LS4wMTcuNTdabS0zLjcxMS0yLjYyN2MtLjgzNSAwLTEuMzk0LjUxLTEuNTMzIDEuMTZoMi45NGMtLjA0NS0uNjY2LS42MTktMS4xNi0xLjQwNy0xLjE2Wm03LjM5MiAyLjAzOXYzLjc4N2gtMi4xOTZ2LTcuNTc2aDIuMTY1di41MjVhMi41MzggMi41MzggMCAwIDEgMS43OTMtLjcxMmMxLjg1NiAwIDMuMDc5IDEuMjA1IDMuMDc5IDMuMzU1djQuNDA1aC0yLjE5NnYtNC4yMzVjMC0uODAyLS4zNzItMS40ODMtMS4yNTQtMS40ODMtMS4wMzYuMDAzLTEuMzkxLjc3NC0xLjM5MSAxLjkzNFptMTEuNTY3LjgzN2gyLjQxMmMtLjM1NyAxLjg0LTEuNzQ4IDMuMTIzLTMuNzkxIDMuMTIzLTIuMjkgMC0zLjk5LTEuNjg1LTMuOTktMy45NTcgMC0yLjI3MSAxLjcwMy0zLjk3MyAzLjk5LTMuOTczIDEuOTk1IDAgMy4zODggMS4yMzYgMy42NjYgMy4wMjloLTIuNDE1Yy0uMTctLjU3My0uNjY0LS45NTktMS4zMjgtLjk1OS0uOTI4IDAtMS42NzEuNzg5LTEuNjcxIDEuOSAwIDEuMTEyLjc0MyAxLjkgMS43MDMgMS45LjcxMi4wMDQgMS4yNC0uNDE2IDEuNDI0LTEuMDYzWm01LjEwMiA2LjAyN2MtLjk5IDAtMS40ODQtLjI2NC0xLjQ4NC0uMjY0di0yLjAxcy40NDguMjMyLjkyOC4yMzJjLjQ5NiAwIDEuMTQzLS4xODQgMS4yOTktMS4wMzVsLTIuOTU0LTcuNTc1aDIuNDQ0bDEuNzE3IDQuNjk5IDEuNzQ4LTQuN2gyLjM0OWwtMy4wNzkgNy43Yy0uODAzIDIuMDI2LTEuNDUzIDIuOTUzLTIuOTY4IDIuOTUzWm0xMS41OTgtMy4wNzVWNDguMDloMi4zMDV2MTAuODM3aC0yLjMwNVptNi42MTgtMy43ODl2My43ODdoLTIuMTk3di03LjU3NmgyLjE2NnYuNTI1YTIuNTM4IDIuNTM4IDAgMCAxIDEuNzkzLS43MTJjMS44NTYgMCAzLjA3OSAxLjIwNSAzLjA3OSAzLjM1NXY0LjQwNWgtMi4xOTZ2LTQuMjM1YzAtLjgwMi0uMzcyLTEuNDgzLTEuMjU1LTEuNDgzLTEuMDMzLjAwMy0xLjM5Ljc3NC0xLjM5IDEuOTM0Wm02LjU0MS01LjkzNmMwLS43MTIuNTU2LTEuMjgyIDEuMjY4LTEuMjgyczEuMjg2LjU3MyAxLjI4NiAxLjI4MmExLjI4IDEuMjggMCAwIDEtMS4yODYgMS4yNjggMS4yNjQgMS4yNjQgMCAwIDEtMS4yNjgtMS4yNjhabS4xNyA5LjcyNXYtNy41NzVoMi4xOTZ2Ny41NzVoLTIuMTk2Wm03LjI1NC4wMjljLTEuNjU1IDAtMi42MTQtLjk1OS0yLjYxNC0yLjYzdi0yLjk1MmgtMS4yNjhWNTEuMzVoMS4yNjh2LTEuMTExbDIuMTk2LTEuODU1djIuOTdoMS45MDJ2Mi4wMjRoLTEuOTAydjIuNjQzYzAgLjcyNi40OC44OTcuOTI4Ljg5Ny41MTEgMCAuOTI4LS4yMDIuOTI4LS4yMDJ2MS45OTRzLS41ODcuMjQ3LTEuNDM4LjI0N1ptMi45NTQtOS43NTRjMC0uNzEyLjU1Ni0xLjI4MiAxLjI2OC0xLjI4MnMxLjI4Ni41NzMgMS4yODYgMS4yODJhMS4yOCAxLjI4IDAgMCAxLTEuMjg2IDEuMjY4IDEuMjY0IDEuMjY0IDAgMCAxLTEuMjY4LTEuMjY4Wm0uMTcgOS43MjV2LTcuNTc1aDIuMTk2djcuNTc1aC0yLjE5NlptOC43NTQtLjc3NGMtLjQ5Ni42MDQtMS4yMDYuOTQ1LTIuMTUxLjk0NS0xLjUxNSAwLTIuNzM4LS45NDUtMi43MzgtMi4zOTcgMC0xLjQzOCAxLjIyLTIuMTUgMi45MzctMi4yNCAxLjMxNC0uMDc3IDEuNzM0LS4yMTYgMS43MzQtLjY2NCAwLS40MzQtLjQwMy0uNzI2LTEuMTEzLS43MjYtLjg2NSAwLTEuMjM3LjQzNC0xLjI4NS44OTZoLTIuMTJjLjEwOC0xLjY1MyAxLjM0NS0yLjc5OSAzLjQxOS0yLjc5OSAyLjAyNyAwIDMuMzI2IDEuMDk4IDMuMzI2IDMuMTU0djQuNjA1aC0xLjgxbC0uMTk5LS43NzRabS0yLjY5My0xLjU0NWMwIC40MzQuMzg2LjY5NSAxLjAwNS42OTUuODM0IDAgMS41MDEtLjQ2MyAxLjUwMS0xLjQwN3YtLjI3OHMtLjQwMy4xODQtMS4yMzcuMjMyYy0uOTE0LjA0Ni0xLjI2OS4zNC0xLjI2OS43NThabTkuNTU4IDIuMzQ4Yy0xLjY1NSAwLTIuNjE0LS45NTktMi42MTQtMi42M3YtMi45NTJoLTEuMjY4VjUxLjM1aDEuMjY4di0xLjExMWwyLjE5Ny0xLjg1NXYyLjk3aDEuOTAxdjIuMDI0aC0xLjkwMXYyLjY0M2MwIC43MjYuNDc5Ljg5Ny45MjguODk3LjUxIDAgLjkyOC0uMjAyLjkyOC0uMjAydjEuOTk0cy0uNTg4LjI0Ny0xLjQzOS4yNDdabTIuOTUxLTkuNzU0YzAtLjcxMi41NTYtMS4yODIgMS4yNjktMS4yODIuNzEyIDAgMS4yODUuNTczIDEuMjg1IDEuMjgyIDAgLjY5NS0uNTczIDEuMjY4LTEuMjg1IDEuMjY4YTEuMjY0IDEuMjY0IDAgMCAxLTEuMjY5LTEuMjY4Wm0uMTcgOS43MjV2LTcuNTc1aDIuMTk3djcuNTc1aC0yLjE5N1ptMTAuOTgzLTcuNTc1LTIuNjkxIDcuNTc1aC0yLjI1OGwtMi42OTEtNy41NzVoMi4zMzZsMS40ODQgNC42ODUgMS40ODQtNC42ODVoMi4zMzZabTcuOTggNC4zNzRoLTUuMzUyYy4xMjUuNzc0Ljc1NyAxLjM2IDEuNzAyIDEuMzYuNjM2IDAgMS4wMDUtLjI2MyAxLjIzOC0uNjQ5aDIuMzY2Yy0uNTEgMS42NC0xLjY4NSAyLjY2LTMuNTcyIDIuNjYtMi4xOTcgMC0zLjk1OS0xLjUzLTMuOTU5LTMuOTEgMC0yLjI4OSAxLjYwOS00LjAxOSAzLjgzNy00LjAxOSAyLjQ4OCAwIDMuNzYgMS45NjMgMy43NiAzLjk4OC0uMDA2LjItLjAyLjU3LS4wMi41N1ptLTMuNzEyLTIuNjI3Yy0uODM0IDAtMS4zOTMuNTEtMS41MzIgMS4xNmgyLjk0Yy0uMDQ5LS42NjYtLjYxOS0xLjE2LTEuNDA4LTEuMTZaXFxcIiBmaWxsPVxcXCIjZmZmXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxMjIgMzZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgeG1sbnM6eGxpbms9XFxcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcXFwiPjxwYXRoIGQ9XFxcIk00NC4wMTkgMjdWMTYuOTc5aDMuMjQ3YzEuMjMgMCAyLjAzMi4wNSAyLjQwNi4xNS41NzQuMTUgMS4wNTUuNDc4IDEuNDQyLjk4NC4zODguNTAyLjU4MSAxLjE1MS41ODEgMS45NDggMCAuNjE2LS4xMTEgMS4xMzMtLjMzNSAxLjU1Mi0uMjIzLjQyLS41MDguNzUtLjg1NC45OTItLjM0Mi4yMzYtLjY5LjM5NC0xLjA0Ni40NzEtLjQ4My4wOTYtMS4xODMuMTQ0LTIuMDk5LjE0NGgtMS4zMTlWMjdoLTIuMDIzWm0yLjAyMy04LjMyNnYyLjg0NGgxLjEwN2MuNzk4IDAgMS4zMzEtLjA1MyAxLjYtLjE1OGExLjMzMyAxLjMzMyAwIDAgMCAuODYxLTEuMjcxYzAtLjM2NS0uMTA3LS42NjUtLjMyLS45MDJhMS4zOTkgMS4zOTkgMCAwIDAtLjgxNC0uNDQ1Yy0uMjQyLS4wNDUtLjcyNy0uMDY4LTEuNDU2LS4wNjhoLS45NzhabTcuMDItMS42OTVoMi4wMjR2NS40MjdjMCAuODYyLjAyNSAxLjQyLjA3NSAxLjY3NS4wODcuNDEuMjkyLjc0LjYxNi45OTEuMzI4LjI0Ni43NzQuMzcgMS4zNC4zNy41NzQgMCAxLjAwNy0uMTE3IDEuMjk4LS4zNS4yOTItLjIzNi40NjctLjUyNi41MjctLjg2Ny4wNTktLjM0Mi4wODktLjkxLjA4OS0xLjcwM1YxNi45OGgyLjAyM3Y1LjI2M2MwIDEuMjAzLS4wNTUgMi4wNTMtLjE2NCAyLjU1LS4xMS40OTctLjMxMi45MTYtLjYwOCAxLjI1OC0uMjkyLjM0Mi0uNjg0LjYxNS0xLjE3Ni44Mi0uNDkyLjItMS4xMzUuMy0xLjkyOC4zLS45NTcgMC0xLjY4NC0uMTA5LTIuMTgtLjMyNy0uNDkzLS4yMjQtLjg4My0uNTEtMS4xNy0uODYyYTIuNzg4IDIuNzg4IDAgMCAxLS41NjctMS4xMTRjLS4xMzItLjU3NC0uMTk4LTEuNDIyLS4xOTgtMi41NDN2LTUuMzQ2Wm05Ljg1OCAwaDQuMDA2Yy43OTMgMCAxLjM4My4wMzQgMS43Ny4xMDIuMzkzLjA2NC43NDEuMiAxLjA0Ny40MS4zMS4yMS41NjcuNDkuNzcyLjg0MS4yMDUuMzQ2LjMwOC43MzYuMzA4IDEuMTY5IDAgLjQ3LS4xMjguOS0uMzgzIDEuMjkyYTIuMzMgMi4zMyAwIDAgMS0xLjAyNS44ODJjLjYxLjE3NyAxLjA4LjQ4IDEuNDA4LjkwOS4zMjguNDI4LjQ5Mi45MzIuNDkyIDEuNTEgMCAuNDU2LS4xMDcuOS0uMzIxIDEuMzM0LS4yMS40MjgtLjUuNzcyLS44NjggMS4wMzItLjM2NS4yNTUtLjgxNi40MTItMS4zNTQuNDcyLS4zMzcuMDM2LTEuMTUuMDU5LTIuNDQuMDY4SDYyLjkyVjE2Ljk3OVptMi4wMjQgMS42Njh2Mi4zMTdoMS4zMjZjLjc4OCAwIDEuMjc4LS4wMTEgMS40Ny0uMDM0LjM0Ni0uMDQxLjYxNy0uMTYuODEzLS4zNTYuMi0uMi4zMDEtLjQ2Mi4zMDEtLjc4NiAwLS4zMS0uMDg3LS41Ni0uMjYtLjc1Mi0uMTY4LS4xOTYtLjQyMS0uMzE0LS43NTgtLjM1NS0uMjAxLS4wMjMtLjc3OC0uMDM1LTEuNzMtLjAzNWgtMS4xNjJabTAgMy45ODV2Mi42OGgxLjg3M2MuNzMgMCAxLjE5Mi0uMDIxIDEuMzg4LS4wNjIuMy0uMDU1LjU0NC0uMTg3LjczMS0uMzk2LjE5MS0uMjE1LjI4Ny0uNS4yODctLjg1NSAwLS4zLS4wNzMtLjU1Ni0uMjE5LS43NjZhMS4yMzcgMS4yMzcgMCAwIDAtLjYzNS0uNDU4Yy0uMjc0LS4wOTUtLjg3LS4xNDMtMS43OTEtLjE0M2gtMS42MzRaTTcyLjgwNSAyN3YtOS45NGgyLjAyNHY4LjI1Mmg1LjAzMVYyN2gtNy4wNTVabTguMTYzIDBWMTYuOTc5aDIuMDIzVjI3aC0yLjAyM1ptMy4xNjUtMy4yNiAxLjk2OS0uMTkyYy4xMTguNjYuMzU4IDEuMTQ2LjcxOCAxLjQ1Ni4zNjQuMzEuODU0LjQ2NSAxLjQ3LjQ2NS42NTEgMCAxLjE0MS0uMTM3IDEuNDctLjQxLjMzMi0uMjc4LjQ5OC0uNjAyLjQ5OC0uOTcxYS44OS44OSAwIDAgMC0uMjEyLS42MDJjLS4xMzYtLjE2OC0uMzc4LS4zMTQtLjcyNC0uNDM3LS4yMzctLjA4Mi0uNzc3LS4yMjgtMS42Mi0uNDM4LTEuMDg1LS4yNjktMS44NDYtLjU5OS0yLjI4NC0uOTktLjYxNS0uNTUyLS45MjItMS4yMjQtLjkyMi0yLjAxNyAwLS41MS4xNDMtLjk4Ny40My0xLjQzLjI5Mi0uNDQ2LjcwOS0uNzg1IDEuMjUxLTEuMDE4LjU0Ny0uMjMyIDEuMjA2LS4zNDggMS45NzYtLjM0OCAxLjI1NyAwIDIuMjAzLjI3NSAyLjgzNy44MjcuNjM4LjU1MS45NzMgMS4yODcgMS4wMDUgMi4yMDhsLTIuMDI0LjA4OWMtLjA4Ny0uNTE1LS4yNzMtLjg4NC0uNTYtMS4xMDgtLjI4My0uMjI4LS43MS0uMzQyLTEuMjc5LS4zNDItLjU4OCAwLTEuMDQ4LjEyMS0xLjM4LjM2M2EuNzMuNzMgMCAwIDAtLjMyMi42MjJjMCAuMjM3LjEuNDQuMy42MDguMjU2LjIxNC44NzYuNDM4IDEuODYuNjcuOTg1LjIzMiAxLjcxMi40NzQgMi4xOC43MjUuNDc1LjI0Ni44NDQuNTg1IDEuMTA4IDEuMDE4LjI3LjQyOS40MDQuOTYuNDA0IDEuNTkzIDAgLjU3NC0uMTYgMS4xMTItLjQ3OSAxLjYxMy0uMzE5LjUwMi0uNzcuODc1LTEuMzUzIDEuMTIxLS41ODQuMjQyLTEuMzEuMzYzLTIuMTgxLjM2My0xLjI2NyAwLTIuMjQtLjI5Mi0yLjkxOS0uODc1LS42NzktLjU4OC0xLjA4NS0xLjQ0My0xLjIxNy0yLjU2NFpNOTMuNzExIDI3VjE2Ljk3OWgyLjAyM3YzLjk0NEg5OS43di0zLjk0NGgyLjAyM1YyN2gtMi4wMjN2LTQuMzgyaC0zLjk2NVYyN2gtMi4wMjNabTkuODMgMFYxNi45NzloNy40MzF2MS42OTVoLTUuNDA4djIuMjIxaDUuMDMydjEuNjg5aC01LjAzMnYyLjcyN2g1LjU5OVYyN2gtNy42MjJabTkuMDY1IDBWMTYuOTc5aDQuMjU4YzEuMDcxIDAgMS44NDguMDkgMi4zMzIuMjczYTIuMjggMi4yOCAwIDAgMSAxLjE2OC45NTdjLjI5Mi40Ni40MzguOTg3LjQzOCAxLjU4IDAgLjc1MS0uMjIxIDEuMzczLS42NjMgMS44NjUtLjQ0Mi40ODgtMS4xMDMuNzk2LTEuOTgzLjkyMy40MzguMjU1Ljc5OC41MzYgMS4wODEuODQxLjI4Ny4zMDUuNjcyLjg0OCAxLjE1NSAxLjYyN0wxMjEuNjE1IDI3aC0yLjQxOWwtMS40NjMtMi4xOGMtLjUyLS43OC0uODc1LTEuMjctMS4wNjctMS40N2ExLjUwMyAxLjUwMyAwIDAgMC0uNjA4LS40MTdjLS4yMTQtLjA3OC0uNTU0LS4xMTctMS4wMTktLjExN2gtLjQxVjI3aC0yLjAyM1ptMi4wMjMtNS43ODNoMS40OTdjLjk3MSAwIDEuNTc3LS4wNDEgMS44MTktLjEyMy4yNDEtLjA4Mi40My0uMjI0LjU2Ny0uNDI0LjEzNy0uMi4yMDUtLjQ1MS4yMDUtLjc1MiAwLS4zMzctLjA5MS0uNjA4LS4yNzMtLjgxMy0uMTc4LS4yMS0uNDMxLS4zNDItLjc1OS0uMzk3LS4xNjQtLjAyMy0uNjU2LS4wMzQtMS40NzctLjAzNGgtMS41Nzl2Mi41NDNaXFxcIiBmaWxsPVxcXCIjZmZmXFxcIi8+PHBhdGggZmlsbD1cXFwidXJsKCNsb2dvX3N2Z19fYSlcXFwiIGQ9XFxcIk0wIDBoNDF2MzZIMHpcXFwiLz48ZGVmcz48cGF0dGVybiBpZD1cXFwibG9nb19zdmdfX2FcXFwiIHBhdHRlcm5Db250ZW50VW5pdHM9XFxcIm9iamVjdEJvdW5kaW5nQm94XFxcIiB3aWR0aD1cXFwiMVxcXCIgaGVpZ2h0PVxcXCIxXFxcIj48dXNlIHhsaW5rOmhyZWY9XFxcIiNsb2dvX3N2Z19fYlxcXCIgdHJhbnNmb3JtPVxcXCJtYXRyaXgoLjAwMDkzIDAgMCAuMDAxMDYgLS4xMjIgLS4wMDcpXFxcIi8+PC9wYXR0ZXJuPjxpbWFnZSBpZD1cXFwibG9nb19zdmdfX2JcXFwiIHdpZHRoPVxcXCIyMjM1XFxcIiBoZWlnaHQ9XFxcIjk1OVxcXCIgeGxpbms6aHJlZj1cXFwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUNMc0FBQU8vQ0FZQUFBQXRLbGFrQUFBQUNYQklXWE1BQUNFM0FBQWhOd0V6V0o5NkFBQWdBRWxFUVZSNDJ1emRQWWhkNlowbThPY2RPakRzRFdwaFlDb3diRFd1b0lPQnZnM09YR0Fwc3BMRjNiU1NpVlJpY2FUQXJVaFIwMm9jS2VxZVFKR0RMa1dUcUxITUp0V1JOU0REQkF0ekd5YVlvSXhyWVlKYUdKZ2FxSVVKQnQ0TjNsdXJzdHdmK3JqM1BlZmMrL3RCY1V0cSs1NnY5MVNwZEI0OS93UUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEb29EZ0ZBQUFBTUU2MTFwMGs4ei83WWI2VXA4NE9BQUFBQU50SzJBVUFBQUJXck5hNmwyUnYrY3Q1a3AzbDUvL3R5dTluK2Z2ek5lekMweGQrdlVqeTc4dlBUNWNmU2JJb3BaeTdZZ0FBQUFCTWliQUxBQUFBdktKYTYyV0E1ZHJ5dDM2NmZMMGFiSm1TMCtYSGVaS3ZsNitMSktlbGxGTlhIQUFBQUlBeEVYWUJBQUNBYjNCbGhOQThyWkZsbnRiS3NyZUZwMk9SRm9ENSt5eURNVVlwQVFBQUFEQVVZUmNBQUFDMjNyS3BaUzh0MFBMVFRMZWhwYmZUdENETTEybWprelRCQUFBQUFMQjJ3aTRBQUFCc2xXVmp5N1VJdHF6TGVWcnc1VElBc3lpbG5Ec3RBQUFBQUt5S3NBc0FBQUFiYmRuYWNobHN1WmJ0SEVNMHRFV3VCR0MwdndBQUFBRHdKb1JkQUFBQTJDaTExcjIwVU12UGw2OWFXOGJuTkMzODh0dTA4SXZtRndBQUFBQmVtckFMQUFBQWszWmxMTkZsdUdYUFdabWN5K2FYMzVaU25qb2RBQUFBQUh3WFlSY0FBQUFtWjluZThuNmVCMXpZSE9kNTN2cnlST3NMQUFBQUFDOFNkZ0VBQUdBU2FxM3pKTGZTUWk1N3pzaldXQ1I1bEJaOE9YVTZBQUFBQUJCMkFRQUFZTFFFWEhpQjRBc0FBQUFBd2k0QUFBQ01pNEFMTDBud0JRQUFBR0JMQ2JzQUFBQXd1RnJyWGxxNDVaY1JjT0hWUGMzejRNdTUwd0VBQUFDdzJZUmRBQUFBR0V5dDlUREp6OU9DTHJBS1Iwa2VsVktlT2hVQUFBQUFtMG5ZQlFBQWdLNldMUzYvVEhLWVpNY1pZVTFPMDlwZWpvdzVBZ0FBQU5nc3dpNEFBQUIwc1d4eHVaWGttck5CWjBmUjlnSUFBQUN3TVlSZEFBQUFXSnRsaTh0aFdwT0xGaGVHZHByazB5UlBTaW5uVGdjQUFBREFOQW03QUFBQXNISzExbXRwTFM2SHpnWWpkSjdXOXZLM1Jod0JBQUFBVEkrd0N3QUFBQ3RUYTMwL3JjWGxtclB4VWhiZjhIc25TZjd2Szd6SGo1TE1Ydmk5V1pKOXAvZWxITVdJSXdBQUFJQkpFWFlCQUFEZ2pkVmFENU44a21SdnkwL0ZSVnBZSlVtK1hyNmVMVCt5L0c4WEErelg3dklqYVNHWVdaTC9rdWVCbUxsVm5LZEpQaFY2QVFBQUFCZy9ZUmNBQUFCZTI1YUdYQzdESzVjTkxJdjhhY2hseXVaNTNncnpWMmtCbWN0d3pMWjRtdGIwY3VRT0J3QUFBQmduWVJjQUFBQmVTYTExSjhsSGFlT0tkamI0VUM4RExDZEovcEFXY0ZsczZXVy9ETURzcDQxTjJzM210OEdjcGpXOUhMbnJBUUFBQU1aRjJBVUFBSUNYVm11OW44ME51U3pTUmc5ZEJsek9YUEh2ZFRVQU04L3pzVWliNURSQ0x3QUFBQUNqSXV3Q0FBREE5OXJBY1VXWExTMS9XTDZldU1vck0xOStYQVpnTm1VRTBpTEozVkxLVTVjWUFBQUFZRmpDTGdBQUFIeXJEUXE1WENSNWx0YmNzb2pXbHA3MjAwSXY3Mll6d2k5UDA1cGVucnEwQUFBQUFNTVFkZ0VBQU9EUDFGcXZwWVZjcmszNE1CWkpmaC9OTFdOejJmenlrMHg3N05HVHRLYVhVNWNVQUFBQW9DOWhGd0FBQVA2L1d1dGVraTh5elpETDVXaWl5NERMaFNzNmVyTWtCMm5CbDZtMnZueWUxdlJ5N25JQ0FBQUE5Q0hzQWdBQVFHcXRPMmxOTGg5TmJOZlAwc1lUZlJYdExadmdNdmh5a0drRlg4N1RBaStmdTRRQUFBQUE2eWZzQWdBQXNPVnFyUitsQlYxMkpyTExBaTdiWVlyQmw5TWt0MHNwVDEwK0FBQUFnUFVSZGdFQUFOaFN0ZFpyU1Q1TEd4OHpkaGRKamlQZ3NxMm1Gbng1a3VSdUtlWFVwUU1BQUFCWVBXRVhBQUNBTGJNY1dmUlprc01KN081eGt0K25OYm5BTEMzdzhyT01QNlIxbnVSdlN5bjNYVFlBQUFDQTFSSjJBUUFBMkNLMTFzTzBvTXVZUnhhZHBEVzRIS2MxdXNBMzJVMXlJeTM0c2p2aS9WeWt0Ync4ZGNrQUFBQUFWa1BZQlFBQVlBdlVXdmVTZkpIazJvaDM4empKbHpHbWlGZDMyZlp5TU9KOS9EekpwNldVYzVjTEFBQUE0TTBJdXdBQUFHeTRXdXRIU1Q3Sk9OdGN6dElDTGxwY1dJWGRKQittTmI3TVJyaC81MGx1bDFLZXVGUUFBQUFBcjAvWUJRQUFZRVBWV3VkcGJTN3pFZTdlSWkzazhzeVZZZzFtYVMwdnR6TE9FVWRQMGtJdldsNEFBQUFBWG9Pd0N3QUF3QWFxdGQ1UGEzTVpHNk9LNk8wZ3JlMWxiS0V2TFM4QUFBQUFyMG5ZQlFBQVlJUFVXdmZTMmx5dWpXelhqcE04U2h0YkJFT1lwNFZlRGthMlgxcGVBQUFBQUY2UnNBc0FBTUNHcUxWK2xOYm1zak9TWGJwSWEzRjV2UHdjeG1BM2JielJqUkh0MDJsYTRPV3B5d01BQUFEdy9ZUmRBQUFBSnE3V3VwUFc1dkwrU0haSnlJVXBHR1BvNWZOU3lsMlhCZ0FBQU9DN0Nic0FBQUJNV0szMVdwTGZaQnh0TGtJdVROSFlRaStMSkIrVVVrNWRHZ0FBQUlCdkp1d0NBQUF3VWJYVysybGppOGJnT01uRENMa3dYYnRKN2lXWmoyQmZ6cFBjTGFVY3VTd0FBQUFBZjA3WUJRQUFZR0pxclh0cGJTNWplQ2gvbk9SUmtqTlhoZzB4VDJ0NkdjUDlkWlFXZWpsM1dRQUFBQUNlRTNZQkFBQ1lrQkdOTFZxa2hWd1dyc3JhekpMc2Y4ODFZSDBPa3R4SmEzd1orbDY3WFVweHZRRUFBQUNXaEYwQUFBQW1ZaVJqaTg3U3hoVTljMFZleXRYQXl0V21rSGV2Zkw2YjFRWXFUdktuNDZTK1hyNWVMUDliSWlqektnNlRmTGk4bGtNNVR3dThQSEU1QUFBQUFJUmRBQUFBUnEvV3VwUFc1bkp0d04yNFNQSmwybGdWL3RSK1doQmludVMvTEgrOTZnREx1bHdHWTc3Tzh6RE1XWXlsZXRFc3JlWGx4c0Q3OFhrcDVhN0xBUUFBQUd3N1lSY0FBSUFScTdYTzA0SXVld1B1eHJPME5wZHREMEJjQmxqbVNYNjAvSHgvZzQ5M3Niem1mMGdMd2J6WUdMT041bW1obHlHdis5TWtINVJTem4yRkJBQUFBTGFWc0FzQUFNQkkxVm9QazN5V1pHZWdYVGhMOGlEYk9mTG1jdnpRWmJCbG5tSEgySXpGV1ZybzVldmw2N2FPUTdxWjVOYUFhK0kwTGZCaUhCVUFBQUN3bFlSZEFBQUFScWpXZWovSkp3UHV3cU5zMThpaXl6RkU3eTVmOTYzQ2w3WklDNzhzc2wzdEw3TWs5NUljRExUOTh5UjNTeWxIbGlBQUFBQ3diWVJkQUFBQVJxVFd1cFBXNW5JNDBDNHMwa1lXbld6NHFSWnVXZThhdWd5L2JFUHp5RHd0OUxJNzBQWS9MYVhjdCt3QUFBQ0FiU0xzQWdBQU1CTExvTXZ2MGg2ZTkzYVIxdWJ5ZUlOUDhXNWFDOGRQQmpySDIrZ2lMZkR5K3lUUHNybXRMN08wc1VZM0I5citVU25sdHVVR0FBQUFiQXRoRndBQWdCR290YzdUZ2k0N0EyeCtrZVJCa3JNTlBMWDdTWDZXRm5MWnRkSUdkNUxrcTdUZ3l5YXV0eUZiWGhaSnJwZFN6aTB6QUFBQVlOTUp1d0FBQUF5czFub3R5Vy9TUCtpeXFXMHVBaTdUc0tuQmx5RmJYaFpKYnBkU0ZwWVhBQUFBc01tRVhRQUFBQVpVYXoxTThzVUFtejVKOG5FMkoyU3dtK1REQ0xoTTFXWHc1VGliTStwb251UlhhZUdYbnM3VEdsNEVYZ0FBQUlDTkpld0NBQUF3a0ZyclIwaytHMkRUajVJY2JjQXBuS1dGV3o1TWEzTmhNenhMOHZ1MDRNc21yTkY3eTNYYTAzbGF3OHNUeXdrQUFBRFlSTUl1QUFBQUE2aTFmcEhrc1BObXo1SThTQnQxTW1YenRERkZONnlralhhUkZuajVNdE52SUxxUjVFNzZ0N3pjTHFVY1dVb0FBQURBcGhGMkFRQUE2R3lnb011enRLRExWRWZFWExhNDNJb3hSZHRva2VkampxWnFQNjNscFhjTGtjQUxBQUFBc0hHRVhRQUFBRHFwdGU2a2pTMDY3THpwaDBrZVQvUzA3YWFOS2JxUi9xMFlqTTlaV3VqbGNhWVozSnFsTmJ6MGJpWDZ0SlJ5My9JQkFBQUFOb1d3Q3dBQVFBZkxvTXZ2MGtidzlIS1c1T01rSnhNOFpmTzBrTXVCMWNNM3VFaHJLM3FVYVk0NEdtS3MwVkVwNWJhbEF3QUFBR3dDWVJjQUFJQTFHeWpvTXRXeFJRZHBJWmU1bGNOTE9rNXJlMWxNYkwrSEdHc2s4QUlBQUFCc0JHRVhBQUNBTlJvbzZQSW95ZEhFVHRXTkpMZlN4aGJCNjFnczEvNlVRaSt6dE1CTHp3WWpnUmNBQUFCZzhvUmRBQUFBMW1TQW9NdEZXcHZMc3dtZEppRVhWbTJLb1pmRDVYM1FpOEFMQUFBQU1HbkNMZ0FBQUd2U09leHlraFowT1puSTZUbEljaWRDTHF6UDFFSXZCMmt0TDdOTzJ4TjRBUUFBQUNaTDJBVUFBR0NOT2dWZUZraytUbXQyR2J0NVdvUEYzT3FnaytPMDBNdlpCUFoxUDhtdjBpOEVKdkFDQUFBQVRKS3dDd0FBd0pxdE9mQnluTmJvTW5hN2FhMFZRaTRNNVhGYTZHWHNvYkJaa3MvU2dpODlDTHdBQUFBQWt5UHNBZ0FBME1HYUFpOFAweDdnajlrc3JjbmxwbFhBQ0Z3aytUTEowUVQyOVY2U0c1MjJKZkFDQUFBQVRJcXdDd0FBUUNjckRMeGNwQVZkamtkK3lEZlRnaTR6VjUrUk9WdmVRODlHdnArSHkzdW9oODlMS1hjdERRQUFBR0FLaEYwQUFBQTZXa0hnNVNMSjNTUW5JejdNZVpJNzZUZUdCVjdYSW0wTTJObUk5L0ZHV3N0TEQ3ZExLVWVXQlFBQUFEQjJ3aTRBQUFDZHZVSGc1U3pKeHhsdjBHV1dGbks1NFNxL2xwTzBNTlByMm84V25kZjFLT01lYlhTUUZuanBjWDBGWGdBQUFJRFJFM1lCQUFBWXdHc0VYazdTR2wwdVJucElOOUtDTHNJV2Yrb2l6ME1zZjFqKzN1S0YvN1l1bDJ0cmx1Y3RPKysrOE45NDdpeXQ1V1V4MHYzYlQvSlpCRjRBQUFBQWhGMEFBQUNHOGdxQmx6RUhYWGJUR2llMlBUeHh0dno0K3Nybmk1SHY4MlVJWmovSlgxMzVmTnNEUzQvVG1sN0dlTC8xQ3J5Y0o3bGVTbGtFQUFBQVlJU0VYUUFBQUFiMEVvR1hNUWRkYmlhNWxlMExSMXdHV2Y2d3ZENmJGZ2k0RE1ITWsveG8rYnFOMTNpc0xTLzdhUUd6L1RWdlIrQUZBQUFBR0MxaEZ3QUFnSUY5UitEbE9NbkRqQy9vc20xdExwZUJscStYcnhkYnVFeDNsOWY3M2VYcjdwWWM5MWhiWG1acERTL3JEcnljSm5tdmxITHVLelVBQUFBd0pzSXVBQUFBSS9BTmdaZmp0R2FKc2RtR05oZmhsdSszVGVHWHNiYTg5QXE4TE5JYVhnUmVBQUFBZ05FUWRnRUFBQmlKSzRHWHk0ZnJZekpMYTNNNTJORFQveXd0M1BKc2VmNTVOWmRqajM2VzlZY3Zodkk0cldscGJQZGxqOERMVVNubHRtVU9BQUFBaklXd0N3QUF3RWpVV3QvS09NTWs4eVMveW1hMXVWemtUd011Mmx0VzU3TDE1U2ZadkhEVVNaS1BNNjVBVksvQXkrZWxsTHVXTndBQUFEQUd3aTRBQUFBanNBeTZ6RE8rUU1saDJ0aWlUZkVzeVZmTFY5WnZsaFo0K1RDYjAvaHlrZGJ3Y2p5eTg5d2o4SEs3bEhKa1dRTUFBQUJERTNZQkFBQVkyRWlETHIwZW52ZHdrdVRMYUhBWjJtNlNHMm1qam5ZMzRIaU8wMEl2RjF0MHo1NG51VjVLV1ZqT0FBQUF3SkNFWFFBQUFBWldhLzNySkg4NW9sM2FoTEZGRjJsaGhDOHpycEV6UEY5alAwc0x2MHpaMk1ZYTlRcTh2RjFLT2JlTUFRQUFnS0VJdXdBQUFBeW8xdnBPeHRWeWNUUEpuUW1mMHNzV2wyT3JheEptYVlHWER6UGR0cGVMSkE4eW50RlkrMm1CbDNXRzFSYWxsUGNzWHdBQUFHQW93aTRBQUFBREdWblFaWmJrWHBLRGlaN080eVJmSlRGZVpib08wa0l2ODRudS82TWtSeVBabHg2Qmw2TlN5bTNMRmdBQUFCaUNzQXNBQU1BQWFxMzdTWDQ0a3QzWlRSdGJ0RCt4MDJoVTBXYmFUd3U5VEhIRTBiTzBscGVMa1p6SGRRZGVicGRTaml4WkFBQUFvRGRoRndBQWdNNXFyYnRKM2huSjd2UjRJTDVxRjJrQmw4Y1pSNmlBOWRoTmNpdlRDNzJjSlBrNDR3aGd6WmYzOTdxY0o3bGVTdEdvQkFBQUFIUWw3QUlBQU5EUnlJSXVOOUpHRjAyRmtNdDJtbUxvNVNMSjNiVGd5NmJmNTZkSjNpdWxuRnVxQUFBQVFDL0NMZ0FBQUozVVdtZEpmanlTM1RsTUN4Qk1nWkFMeWZSQ0x4ZEpIcWFOMmhyYXpTUjMxdmorVDBvcEgxaWlBQUFBUUMvQ0xnQUFBQjBzZ3k3ekpHK05ZSGZ1WlRxQmdjZEpIa1hJaGVkMjA0SWJCeFBaM3djWlIrQmwzZmY5M1ZMSzU1WW5BQUFBMElPd0N3QUF3SnJWV3Q5S0M3ck1CdDZWV1pKZkxmZGw3STdUUWk1blZoRGZZcDdXOURLVjlmeGdCUHZ4MlJyUDEzbVM2NldVaGFVSkFBQUFySnV3Q3dBQXdKclZXbitjY1FSZFBrdXlQL0xUZFpJMitzVURjMTdXamJUUXkrN0k5M01NZ1pkMWZ4MVlwQVZlemkxTEFBQUFZSjJFWFFBQUFOYW8xdnBPaG44SVA0V2d5MFZheU9YWXF1RTExL2pOdE5ETG1CMHYxL21RWTduMmwxOFAxaFhBKzd5VWN0ZVNCQUFBQU5aSjJBVUFBR0JOYXEyN1NkNFplRGYyMDBZWGpibjE0bkhheUtJTHE0WTN0SnZrWHNZOTJ1Z2t5ZDJCMS9zOExmQ3lMaCtVVXA1WWpnQUFBTUM2Q0xzQUFBQ3NRYTExSjhNL2NGOTNnOE9iTXJLSWRibVI1TTdJMS83UWdaZWJ5M08wRHVkSjNqYk9DQUFBQUZpWHYzQUtBQUFBVnF2VytvTWtmejN3Ym93OTZQSW95UzhpNk1KNkhDZjVteVRQUnJwL1k3Zy9IMmQ5WThOMmtueGhHUUlBQUFEcm90a0ZBQUJneFdxdFA4NndEN0hISEhRNVNmSmcrUW85SEtTTk5ocnIvVEJrdzh0cytiVmlmMDN2Zjd1VWNtUUpBZ0FBQUtzbTdBSUFBTEJDdGRaM2t1d091QXRqRHJvOFNuSzA1VXRrZC9reHkvT0F3WSt1WEsrcnYvOHFyamJrbkNYNVB5Lzgva21HSFprenRGbGE0T1ZnaFBzMmRPQmxOOG12MS9RMTR6ekplNldVVTk4ZEFBQUFnRlVTZGdFQUFGaVJXdXR1a25jRzNJV3hCbDNPa255YzdXcHptZWQ1c09YZHZINklaZFVXYWFHS1B5eXZ4OW1XWFpleHRyd01IWGc1U1BLck5iMzMwMUxLZGQ4aEFBQUFnRlVTZGdFQUFGaUJXdXNzTGVEdzFrQzdzTTUyaGpkeG5PUmhOcnRWWkgvNThlNlZ6NmRta1JhNCtNUHk4N01Odmw2N2FZR1grY2oyYStqQXk1MGtOOWYwM3NZWkFRQUFBQ3NsN0FJQUFQQ0dhcTF2cFQwNEh5cG9Na3RyZEJsVHlPSWlMZVJ5dklHWGZIOTV2ZDhkK0xxdjAxbGE2T1hyYkc3NDVUREpyWkh0MDdPMEZxU2gvSHBOWDBmT2s3eGRTam4zSFFNQUFBQllCV0VYQUFDQU4xUnIzVS95dzRFMlA4YWd5MG1TQjltYzhUaXp0REV2N3k1ZloxdTR6Qy9ETDc5UEMyUnNpbm5hK0o0eFhkUGo1ZjB6aEhVMlJEMHBwWHpnT3dZQUFBQ3dDc0l1QUFBQWI2RFcrcGRKL25xZ3pZOHg2TElwWTR0MjA0SXRQOHMweHhLdDI3TThENzVNL1ZxUDlUNGFLdkJ5a0JZQVdvY1BTaWxQM0Q0QUFBREFteEoyQVFBQWVFMjExaDhrK1hHU3R3YmFoWHRKYm96b2xEekl0TWNXelpiblU4RGwxV3hLOEdWczk5UERKSTgzN0Z5Y0publBPQ01BQUFEZ1RRbTdBQUFBdktaYTZ6ekp6a0NiSDlPRCtZc2tkelBkc1VVM2t2d2tyZEdDTjFzSHo1SjhsVGJ5YUtwcjRkNkk5bWVvQU5rc2JaelI3aHJlKzlOU3luMjNDd0FBQVBBbWhGMEFBQUJlUTYzMWh4bXUvV05NRCtSUGtueWM1R3hpbDNBM3lZZkxjem16b2xmdUxNbVhhVUdOcWJXOTdLZU5OUnJMdXZoRmhnbVM3YWNGWHRiaHZWTEt3bTBDQUFBQXZDNWhGd0FBZ0ZkVWE1MGxtV2VZOFVVSFNYNDFrbFB4TEsxNVlrcGhobmxheUVXTFN6L0hTUjVsV29HbzNlVjlOb1p4VmtNMkp4MG11YldHOTMxYVNybnUxZ0FBQUFCZWw3QUxBQURBSzZxMS9qakR0RDZNcVhIaU9DM29NaFUzMGg3YTcxckJnMW1raFY2bTB1Z3hXOTV2WXdpOG5LUUZYb1lJbHYxNlRlZmdkaW5seUcwQkFBQUF2QTVoRndBQWdGZFFhOTFMc2pmQXBtZHBENTNIRU5aNG1PVHhCQzdYTEszQlJjaGxYQlpKdmtvTFRFM0J2YlN3MU5DZXBZME02MjFkNDR4TzA4WVpuYnNsQUFBQWdGY2w3QUlBQVBDU2x1T0xmanpRNWo5TEc4RXp0QWVaUmtqaE1HMWMwY3pLSGEyenRLYVhLYXluc1FSZUhxZUZ6WWE0bjlZeHp1alRVc3A5dHdJQUFBRHdxb1JkQUFBQVhsS3RkWjVrWjRCTjMwbHljK0REdjBoN3lENzJZSUp4UmRNemxmRkdONWYzNHRDR0NweXRhNXpSMjZXVVU3Y0JBQUFBOENxRVhRQUFBRjVDcmZXSFdjK0QzdTl6STYxVllrZ1hTZTRtT1JueEpUcElDeUlJdVV6WElpMVFOZVoxdHMzMzR6eXRZV3JWamtvcHR5MS9BQUFBNEZVSXV3QUFBSHlQV3VzUDBzWVh2ZFY1MC90cEQ1ZUhITVV6OXFETGZscklaVzZsYm96anROREx4VWozYnd5Qmw1UGxmZG43SEsyclplcDZLZVdwcFE4QUFBQzhMR0VYQUFDQTcxRnIvZXNrZjlsNXM3TzBvTXYrZ0ljKzVxRExMRzFjMFUwcmRDTmRwSTAyZWp6Uy9SdEQ0T1Zaa284SHVPOStuZFUzS0QwdHBWeTM3QUVBQUlDWDlSZE9BUUFBd0xlcnRlNmtmOUFsYVEwS2dpN2Y3Q0RKMzBYUVpaUE5sdmZBcnpQTzFwN2pKQTlHY0IvY0hPRHJ3c00xdk8rMVd1djdsajBBQUFEd3NqUzdBQUFBZkl0YTYxdHA0NHQrMEhuVFE3ZEdqRFhvc3JzOEwwWVdiWi9IYVUwdll4dHROSWFHbDE4TWNLOSt0b2I3OExTVThyYWxEZ0FBQUx3TXpTNEFBQURmN29mcEgzVFpUV3UwR01wWWd5NDNNOTZXRDdiMytvK2g0ZVZlV2hOT1QrczQ1cjFhNjZHbERnQUFBTHdNelM0QUFBRGZvTmI2ZzdSV2w3YzZiL3JYR1haODBkMGtpeEZkQ20wdXZHaU1MUzlETjd3OHpuckdDMzJYd3lTM1Z2eWUybDBBQUFDQWw2TFpCUUFBNEp2OU1QMkRMb2NaTnVqeUlPTUt1aHhFbXd0LzdyTGxaWDlFKzNTOC9CanluQngwM3ViakpHY3Jmay90TGdBQUFNQkwwZXdDQUFEd0xXcXR1MmtQMUh1RVh1WkpQaHZ3Y0I5azJJZjFWODNTUmpuZHNBcjVIbytTSEkxb2YrNE51RzR2a3Z4TitqYmVyS1BSUnJzTEFBQUE4TDAwdXdBQUFIeUxVc3Baa245SWNycm1UYzB5L0FpVXNRUmQ5dE5DUDRJdXZJeGJ5L1V5RzhuK0RObU9OTVRYa2VNMUhLOTJGd0FBQU9CN0Nic0FBQUI4aDFMS2Y1WlNUdE5DTC8rNnBzM2NTckk3MENFZUozazRrdE45SXkyNHNHL2w4UXJtU2Y1dVJPdm00eVFuQTIzN0lQM0hHVDFhdzN0K1lsa0RBQUFBMzBYWUJRQUE0Q1dVVXY2amxQSlBhUzBHLzdIQ3Q1NG51VG5RWVoxa1BFR1hlOHVQbWRYR2E1Z2wrWFhHMFFoMGtSWjR1Ump3WHVwNUh5MlNQRnZ4ZTJwM0FRQUFBTDVUY1FvQUFBQmVYYTMxaDBuMmtyejFCbTl6K1lCK2lGYVhzeVMveUhBUDVLK2VBMjB1ck5KeDJqaWhvZTB2Nys4aFBFc0wzUFN5bTlhdXMwcW5wWlMzTFdjQUFBRGdtMmgyQVFBQWVBMmxsSDlKRzIzMEwyL3dOamN6VE5CbDZPYUpTNWRoQUVFWFZ1bkdjbDBOM1JKMGt1RkNONzNIR1oybGhZeFdTYnNMQUFBQThLMkVYUUFBQUY1VEtlVS9TeWtuU2Y1WGt2TlgvTC92SjdrMTBLNC9USHNRUDZSNVdxUExycFhFR3V4bkhJMUJ4MGtlRDdUdE8ra2IrSG0waHZmOHhGSUdBQUFBdm9td0N3QUF3QnNxcFZ5VVVoWkovaW5KZjd6ay8rM09RTHY3T0t0dllIaFZOOUtDQ0RPcmh6VWFTK0RsWVpMRkFOdmRUZDlBM1ZsV0gzalpxN1crYnlrREFBQUFMeEoyQVFBQVdKRlN5citXVXY0aHlXbVMvL3lPLytuTnRHYVQzaFpwRDk2SGREUEpQYXVGVG1acGdaZURnZmRqcUxGaE45TTM3UE40RGNmNVM4c1lBQUFBZUpHd0N3QUF3SXFWVWs2VC9FTmEwOEdMWmhsbWZORkYyZ1AzSWQzTGNJMDJiSzlaa2wrbE5Rb041U0xKM1lHMmZhZnpjWDY1NHZlOFZtdTlaaGtEQUFBQVZ3bTdBQUFBckVFcDVUOUxLZitjMXFaeWZ1VS8zY2t3NDN1R2FwYTRkQy9EaGcxZzZEVjRrbUdhbGVhZGozc2Q3UzYzTEY4QUFBRGdLbUVYQUFDQU5TcWxuSmRTRmtuK09XU0c5c0FBQUNBQVNVUkJWTWtQTTh6RDlrZHBvWnVoQ0xvd0ZrT3Z4Y2NEM1lzOVEzYnJhSGM1ckxYdVdiNEFBQURBSldFWEFBQ0FEa29wWjBuK3h3Q2JYaVE1R3ZEUUJWMFltNkhYNUJBdFM3TWtOenR1Ny9FYTN2UFEwZ1VBQUFBdUNic0FBQUIwVUdzOVRIS3Q4Mll2a2p3WThMQUZYUmlySWRmbVVQZmxyU1M3SFkveGVNWHYrVXZMRmdBQUFMZ2s3QUlBQU5ESEp3TnM4MkdTczRHT1Y5Q0ZzUnR5alQ3TGV0cFB2cytkanR0NnRPTDMyMW1HQmdFQUFBRHlsbE1BQUFDd1hyWFcrMG4yT20vMldWYmZyUEN5RGlQbzhyS2VKamxQOHZXVlgxODZMNlVzdm1OZFhidnl5NTBrOCtYblAzM2gxM3k3ZTh2WEllNlZSMGtPMHE5dEpjdnR6ZFBHbTYzYjJmSzhydkpyd1M4ejdGZzJBQUFBWUNTS1V3QUFBTEErdGRhZEpIOU1DeC8wY3BIa2I1YXZ2ZDNJOHdBQno1Mm1CUXkrVGd1MExFb3A1eDNXMzE1YXVHR2U1TjIwVVZvN0xzZWYzUzkzazV3TXNPMTVrczg2YjNPeFBONGU5cFA4ZXNYditkNTNoY0FBQUFDQTdTRHNBZ0FBc0ViTFZwZmVJNHcrVG10MjZVM1E1YmxGV3FqbDc1TTg3UkZzZVlVMXVaY1dldm5wOG5YUDVSbzA4SElueWMzTzI3eWJQdTB1U1F2enJMSmw2S2lVY3R1U0JRQUFnTzBtN0FJQUFMQW1BN1c2UEVzTHUvUzJuL1pRZTdiRmwveEprdCttaFZ0T0o3Uk81Mm1obDF2Wjd0RkhaMGwra2Y2TlNMTzA5cE9lNDR4T2xzZmF3MEdTWDYzdy9jNlR2RDJtQUJrQUFBRFEzMTg0QlFBQUFHdnpVZnFQTDNvNHdISHVabnVETGsrUzNFN3lYMHNwSDVSU2pxWVVkRW1TVXNxaWxQSjVLZVc5SkcrbmIrdkhtRnl1NDk0dWtqem92TTM5dENhbUhwNmxCWWxXWlNmSis3NjlBQUFBd0hZVGRnRUFBRmlEWmF2TEx6dHY5bEZXKzFENVpjelNXaHUyS2VoeW11VFR0SGFKeTRETFJyUk1sRkpPcndSZjNrdnllVnFUeHJiWXp6Q2p1QmJwUDNyc1ZzZHRmVG5oZlFjQUFBQkdTTmdGQUFCZ1BYcTN1cHdrZVR6QWNkNUpDd2hzZzZkSlBpaWx2RjFLdVQrMUJwZFh0V3g4dVp2VzluSTdMZVN6RFc0a3VUbkFkaCttN3dpbDNmUnJkemxlOGJGZHE3WHUrVFlEQUFBQTIwdllCUUFBWU1VR2FuVVpZbnpSemZSN1dENmtvN1FXbCt1bGxDZmJ0cDVMS2VmTDlwcTNrMXhQQy8xc3VqdEo1cDIzZVpiV3p0UlRyNGFVaTZ5K3VlYlFkeHNBQUFEWVhzSXVBQUFBcTllNzFlVTRiUXhLVC9PMFFNQW1PMG9MdWR6ZTlCYVhsMVZLZVZwS3VaN3RDTDBNTVo3cmNmcU9JdHROdjFDUFVVWUFBQURBeWdpN0FBQUFyTkFBclM0WDZkL3FNa3NMQW15cW93aTVmS2N0Q2IwTXRjNGZkTjVlcjlESXlmSmpWZlpxclhOM0l3QUFBR3duWVJjQUFJRFY2dDNxOG1WYTRLV25JUm92ZW5pYTVMcVF5OHU3RW5xNW5XUVR6OWs4L2NmbExOSzNxV21lNmJhNy9OSmRDQUFBQU50SjJBVUFBR0MxZW83V09FdHJJZW5wTVAwZWpQZHludVIyS2VWNktlV3BKZnpxU2lsSFNkNUw4dW1HM3RPOTEzenZkcGNQTzIzbldWWWJ6bnZmM1FjQUFBRGJTZGdGQUFCZ1JXcXRoMG4yT203eVVlZEQzRS9mTUU4UFIya2ppNDZzNERkVFNqa3ZwZHhQOG5ZMmI3VFJ2ZlJ0TXpwTGN0eHhld2RKZGp0czV5SXQ4TElxTzdWV2dSY0FBQURZUXNJdUFBQUFxOU56cEVidmgrR3p0QWYrbStJMHowY1duVnU2cTFOS09WMk9OcnFiMXBxekNYWUhXUDhQMDNkRVdhOGcyMWNyZnIrZnUrc0FBQUJnK3dpN0FBQUFyRUN0OVZyNmpqcnBQZWJrVmxxenl5WTRTdktla1VYclZVcjVQRzIwMGFhYzU0UGxSeThYU2I3c2ZIdzkybXNXYVdHOVZkSHNBZ0FBQUZ0STJBVUFBR0ExZW83M1dTdy9lcGtudWJrQjErZzh5UWZhWFBxNTB2THk2WVljVXU5eFJvL1RyOTFsbHVSR3AyMFpaUVFBQUFDOEVXRVhBQUNBTjFScjNVdHkySEdUanpvZjRpYU1MMXFrdGJrOHNXTDdLNlhjVDNJOTB4OXIxSHVjVis5Mmx3ODdiV2ZWeDJTVUVRQUFBR3daWVJjQUFJQTNkOWh4VzcxYlhRNlQ3RTc4K2h3bHVWNUtPYlZVaDdNY0cvVjI1L1c3RGdmcE83S3NaN3ZMYnFkak8wdHlzc0wzdStZT0F3QUFnTzBpN0FJQUFQRG1lbzR3NnRucXN0djUyTmJocnJGRjQxRktPUytsdkpjV1FKcXludU9NZXJlNy9LelRkcjVhNFh2dDFWcm43akFBQUFEWUhzSXVBQUFBYjZEVytuNlN2VTZiNjkzcU11WHhSZWRKUGlpbGZHNlZqazhwNVhhU3V4TStoTjBrTnp0dXIyZTd5NDMwQ2ZJOFcvSDczWEpuQVFBQXdQWVFkZ0VBQUhnelBSK3dmdFZ4VzcxSHRhelNlZHJZb2llVzUzZ3RnMGkzSjM3djl4cnhkWkhrdU9PeDNlaXdEYU9NQUFBQWdOY203QUlBQVBDYWFxMDdTZDd2dExtejlIdllQVXR5WjZLWDVUTG9zckJDeDYrVWNwVGtnK1YxbTZLZTdVYzlSeGw5MkdrN3F3end6V3V0ZSs0cUFBQUEyQTdDTGdBQUFLL3ZzT08ySG5YYzFzMzBhNnhZcFVXU3R3VmRwbVhad0hNOTB3eTh6Tk92QWFsbjRHMDN5WDZIN2F4NmxORTFkeFFBQUFCc0IyRVhBQUNBMTlkcmhORkZWdjlRK052TTBxL1ZZWlVXYVkwdTU1Ymw5Q3dEU3JlWGEzMXFlcllnOVd4MytWbUhiWnd0UDFibDUrNG1BQUFBMkE1dk9RWHdhcGExeUZjL0xyMmJaT2ZLcnhkSi92M0tyNThtU1NubHFiTUlBTEF4Znk3czFlaHduSDRoZ0R0cGdaY3AyWWlneTVXZk5YWmVXRnN2L3F4eG11Ui92M0Q4NTBrV1V6MEh0ZFozbHNkd044bG5FMXVEKzBsdXBFL3J5c255ZXZmNDJuTWp5Y01PMjNtVzFpYTFDdGQ4ZHdJQUFJRHRVSndDK0hhMTFubmFYNWE5bTlYV1U1K24vUVhsM3k5Zm4vb1hxQUFBay91ejR2MGtuM1RhM045a3RlMEgzMlkzeWQ5TjdGS2Nwd1ZkRmhOYlAxZC8xdGpMNmg3U1gvNnNzVWp5OWZKbmpkT1JuNHQzOHFkanMrWnBnWmNwT1Z2ZXB6M2NTSEt2MDdZK3p2cGJwVlo5dmQ4enlnd0FBQUEybjdBTFhGRnIzVW55ZmxyMThiWDg2YitlWExkRld2dkxiN1cvQUFCTTRzK09mOHlmTnYydHk3TzBCODQ5M0V0N2tENFZrd202RFB5enh1bVZueldlak95OHZCaDB1ZFF6MExFcUQ5S24zU1ZKL21mNnROOGNMNDlyU3NmemFTbmx2dTlTQUFBQXNObUVYZGg2TC95bDgvc2oyYTN6SkUrUy9LMS9rUVlBTU1vL1E4NlQvR09uemZWb1ZraW0yZW95NmdhSGtmNnNrZVhQR28rR0RyNThSOURsMHMyMHNWcFQwYlBkNVU1V04vcm51MXdrK2U4ZHRyUEtvTjNUVXNwMTM2a0FBQUJncy8yRlU4QzJxclhPYTYxZkpQbGpraTh5cnI5ODNrbHltT1FmYTYxL3JMVit0UHlMY2dBQXhxSFhueDNQMGlmb2tpUzNKbllOYm84MTZITGxaNDEvRytIUEdwZnI5emUxMW4rcnRYNVdhOTBiNEJ4OVg5QWxTUjZuWDFQS0t1eW1YelBTbDUyMk0wdHkwR0U3WDYvd3ZhNzVGZ1VBQUFDYlQ5aUZyVk5ydlZaci9WM2F2OFE5VE4vNjhOZXhsemEvL0krMTF2dEQvRVUwQUFCLzV1ZWR0dE1yNk5MeklmMHFmRjVLT1JyaHp4cnZ2L0N6eHRqdEpQbG8rYlBHRjdYV2E1M08wOHNFWFM0OVNCdjVPaFc5UW1ObkhjL0xUenBzWTdIaU5YWXRBQUFBd0VZVGRtRnJYQW01L0M3VC9KZGVPMGsrU2Z1TDZNODB2UUFBRFBibnlyMGs4MDZiNjlYZU1LVldsNmVsbExzai9GbmpqMGwrayttMlNod20rVjJ0OVhmTE1WM3JPbGV2RW5TNTlIRmF1R01LZWdiSHZ1cTBuUjdOTG1kSlRsYjRmbE85RHdFQUFJQ1hKT3pDeHF1MTd0VmFmNVBwaGx5K3llVy92cnp2Q2dNQWROZHJKTTFKK2p6Z24yVTZyUzduU1Q0WTBjOGFWd1AxZXh1eXZxK2xqVlA5WXRXdGtxOFpkRW1TaTdUQXkxVDBDbzg5VzU2YkhsOGo5anRzWjVYdExqLzFyUW9BQUFBMm03QUxHMjBaQnZuSDlIc2cwZE5Pa2s5cXJYOVUwUXdBLzQrOXV3ZVI1TXpUUmYrOGc0eUJJOWdjV0RneUZpYWJsWEU4bGVCNlowSFoxbzZuYXM0NjExSzJjYTFycU50YWErbHVqclZXdDR5MXE5cTYxOWhEbCtBYWM2ek9CaTJNc2RBbEdHT01YcFFEWS9RQndlWkNINUFoZUs4UlVlcFNUWDlVVlVaRVJtYitmdEQwaktUS3lQaEh2Rkh4OGNUL2hVRU5OWVhSVUYxZC9tNkxhbitybExJYXdYWEdwTlo2bE4wSzFGODBUeE42dWQ5UnphNGJkRG56SXNrL2JVbnRQc293M1o5ZVpiaXB6djUyZ0dWODIrRm51VVlHQUFDQUhTZnN3azZxdFI3VVdwK25tZlpuMTZmN21hWnBOMjVxSXdDQS9zOHpKeG51SWVwUUQ3SC8yNWFVLzBFcFpUR0NmZUF3eVhkcHdpQzc3aXhnLzN5ZHFZMDZDTHFjK2VkMDIvMmpUME4xZC9tWGdaWXpSSGpudE9PeGVoQUFBQUJnWndtN3NITnFyWGZTZEhQWnR4dGJkOUs4ZVRtekZ3QUE5R2FvYzYyaHBpZjVUWm9wU3NidXRKUnlmOFBYR1pOMmV0UW4yZjFBL1VVSHVXYVhsdzZETG1mK1lhQ3gwVVhOUHRxaFk4WEhBNnpQcXpRZGZMYnRlQTBBQUFCc2dMQUxPK1BjemVlSGUxeUdhWm91TC9mdEVRQUF2UmhxQ3FPaHVqVnNRMWVYVlpKYkc3N1dPTWp1VG85NkZmZHFyVTh2MjFHeWg2QkwwZ1FpL25GTDZqWFUrQnFxQzlTMmRYZjV4SzhzQUFBQTJGM0NMdXlFOXViejA3ajVmT1plcmZXSmFZMEFBRG8zRzJnNVF6eTgvcmo5TTNaZmxWS1dHN3pXbUtjSnVrenQvaitOZ2UvZU4wVk1UMEdYOCtQam15Mm8xVzhHV3M1UTRiZ2h3aVBmYnVIeEdnQUFBTmdBWVJlMjNybWdpL200Zis0d1RaY1hnUmNBZ0k2VVVtNGt1Wm5rVWJydFFIRGVVTk9TYkVOWGw0MU9YMVJyZlpqa3lKNy9aeVpwcGpXYXY2VnVmUVpkenZ4VHhqK2QwWWNaSnZBeTFESGpiNFlZOHgxKzF0VDFNQUFBQU93dVlSZTIycm0zTE4zQWVyT0RYT0t0U3dBQUxxK1VzaWlsM0MybGZKcmtWMm1tMkRsT3N1eG9FZDhPdENwL3N3WGx2cnZCYTQyakpIZnM4ZTkwVkd1OWM2RnVRd1Jka3VSbGtzZGJVS08vSFdnNVEzUzYrVEQ5ZDRONjFXN2JMcStKQVFBQWdCMGs3TUxXYW9NdTNySjh2MG1hRGk5dThnRUFkS3lVc2lxbG5KUlNicmRkWDI0a3VaM2tKTW5xbWg4N3hFUHIzNlI1Y0QxbXg2V1V4UWF1TXlhMTF1ZEo1dmJ3UzNuWUJvT0dETHFjK2Vja0wwWmVuNE9CYXZMdGdPdlR0eTY3dTh3TVVRQUFBTmhOd2k1c0pVR1hLeE40QVFBWVFDbGxXVW81THFYY0txWDhLc21uU1I0a1dWenlJMTZrMjY0R2IvTmZSMTdLVlRiUTFhV2Q4c1FVcVZjM3I3VSt5YkJCbHpQL3RBWDFHYUtMMGpjRHJjc25BeXpqMzdicyt3SUFBQUFiSU96QzFoRjB1VGFCRndDQWdaVlNUa3NwOTBzcE4wc3BKYzJVUjQveTlzNEZwd044clE4ei9pbU12aXFscklaY29LREwyZzZUL1AwR2xuczYwTGhaeDM4YllCbXZCcXJERU9PankyNDlVME1UQUFBQWRwT3dDMXVsRFdvOFZJbHJPd3U4VEpVQ0FHQjQ3WlJIZDBzcG55YjVWWm9wajQ2VExOdi81RjhHK0JwakQ3b3Mwd1NDaG5ZVVFaZDEvU2FibWY3cEgwZGVsNCtTZkR6QWNvYVl5dWpEOU4vQnA4dlFqakVOQUFBQU8wclloYTNSQmpTZXBnbHNjSDJUSkUvYU4xY0JBTmlRVXNxcW5mTG9kaW5sUnBvcGo0Ym96REQyS1l3ZWJLQ3J5MUdhemlTczc0czBvWmNodlV6eTI1SFg1Vzk3L3Z4Vmt2OTNvSFhacXU0dXRkYVpZUWtBQUFDN1I5aUZyZEFHTTU1RTBLVXJCMjA5QVFBWWoxY0RMR1BzVXhndFN5bkhBMTlyM01sbXVwSHNzci9QOEIwMUhtL0JOVmpYeDRzL0pmbDlrbS9hS2ROK215YjAwcmUvSG1BWnBqSUNBQUFBM2tuWWhXM3hNTm9QZDIxV2E3MnZEQUFBb3pGRXNIdnNVeGc5R0hKaGJjY0gwNlQyNDcrbi8rbHV6aHQ3ZDVlUDE2ekhqKzA2L2lISjcwb3AvMXBLZVZGSytiNlU4dU81LzI0eHdMb01jVzMrdnpyOHJLbmhDQUFBQUx0SDJJWFJxN1hPNDAzTHZ0elQwaGtBWUJUbnZCK2s2YnJTdHpGUFliUWFzcXRMTzAycWJvZjkrVEJONEdWSVkrL3VjdFd3MmZkcE9wejhheW5sbTFMS0gwb3BMMHNwUDd6alo1NE5zQjRmRDdDTUxxZDArOHh3QkFBQWdOMGo3TUtvdFRlZ3ZXblpyeWZ0TkZFQUFHek9VT2RqWSs2VytOWEF5enVLYVZMNzluR1MvM3ZBNWIxTXR5R0pybjN5bm4vL0tza3l5V2twWlZGSytYMHA1VStsbEt0TWNiYllrV09KYVl3QUFBQ0FkeEoyWWV6Y2dPN2ZwSzB6QUFDYlBTZnIyMEdHNlI1elhZK0dXbEE3bmVmTWJqZUl2OHV3SWFzeGQzZTUyTm5saHlSL1N2TDdKTiswVXhNdFN5bXI2eTZnbERKVTJLZnY3aTZ2Mmo5ZG1CcUdBQUFBc0h1RVhSaXRkdnFpbVVvTTRyRFdlcWdNQU1DSXpnVVBhcTM3Tk1YTUVDR1VNWGQxT1Y3bkFmOFY5NjFwa250RzJhRCtQc01GclU3VGRIZ1pxNE1rZjBqeXUxTEs3MG9wTDBvcDM1ZFNmdXh3R1lzQjF1TS9EN0NNRngyTyt3UERFQUFBQUhhTHNBdWoxRTZyWS9xaVlUMDBuUkVBTUpKendYbVNwOW12RG45RHJPc25JMTcvSWJ0eDZHbzR2SS9TZEhnWnl2OFljUzErWFVwNVdVcjVvY2RsUEJ0Z1BUNGVZQmxkVG1Ya1doY0FBQUIyakxBTFkzVXZia1lOYlpya2pqSUFBSnRVYTcyVFBadktzdFk2Vk1lTHNYWTJXSlpTRmdQVmVoN2RJemZsaXpTaGx5SDhkc1IxR0dML0cySXFveUdPSi85N3krb09BQUFBREVqWWhkRnAyNG9MWFd6R3ZiYitBQUNiT0E4OHluNTI5OXYzS1l5K0dtai8wajF5OC81K29PVzhTdkxOU0d0d01FQkh6ZE9CMXVXakxWcVB2ekQ4QUFBQVlMY0l1ekJHOTVSQS9RR0EvVkZybmRSYW55ZVo3MmtKOWozc2NqTFFjdTVFOThoTk94aHdYL3lmSTY5RGIwb3B5eVNyQWRhajc3RExxejA1QmdJQUFBRFhJT3pDcUxSZFJlWXFzVkZ6M1YwQWdBSFAvdzZTUE0xK1A0Z2NJdXp5eVVqWC9iUjlNTi8zZmpaSjhxVVJOd3BmRExTY2I5SnRXS0pMc3lIRzFnREw2UHU0L2NKd0FRQUFBTjVHMklXeDBWWEVkZ0FBOWtTdGRSWkJsMlNZYmlNZmozVGRIdyswSEYxZHhtUEk3aTVqbmNyb3N3R1dNVVRZNVQ4TnNJeVhIWDNPek5BREFBQ0EzU0xzd21qbzZqSXF1cnNBQUgyZis4M1RCRjBtZTE2SFh3NndtSTh6VFBlWTZ6Z1pvTWE2dW96UFVOMWR2aDNwK2c4Ujl2bmpRTWVXdnIwMFhBQUFBSUEzRVhaaFRPWktZSHNBQUx1djF2b3d5WkZLSkVtR0NMdDhOTkoxSDJRS28vYThWbGVYY1JtcXU4dFlPN3RNQm5pNVlJak9Ma01jV3pxYmlxcnRKZ1lBQUFEc0NHRVh4dVFMSlJnVmI3OENBSjJxdFU1cXJVL1NUQ2xEWTUrbk1GbzRyOTFyZnp2QU1sNWxtTkRIZGZRZDl0bVZzTXUvR1NvQUFBREFtd2k3TUFxMTFzTWtVNVVZbFVrN3ZRQUFRQmZuZTVNMDB4WWRxc2JQZkREQU1qNFo2YnAvN1RwanIvMG13MHl2dFpkVEdaVlNWa2xXQTZ6SFIxdTB6emtXQUFBQXdBNFJkbUVzUGxjQzJ3VUEyRTIxMW9NazMyV1lhVXUyelJBUCswZjVNTHFVc25BK3UvZCtNOEF5eHRyWjVaTWRXZmVQdG1nZHBvWWNBQUFBN0E1aEY4YkNHNzRqM1M3dFc5Z0FBTmZTZG9wN21tR202OWxHUTNSMkdXUFlaVEhBdmpkSk1yZUxqZG9RVXhtTk5ld3lIV0FaT3JzQUFBQUFPMHZZaFkxclc0dDcrREZlZ2tnQXdIWFA4KzRrT1hLdTkwNTlkM1laYXplZFo4NWpTZkp4aGdsTGpESHdNc1RZSEdJS3A3NjMzOHNPUCtzVFF3NEFBQUIyaDdBTFkvQ1pFdGcrQU1CdXFiVWVKWG1vRXUrczBSQmRYVDRjNmVvUEVUNHdoZEYyK0pzQmx2SHRTSThCMDU0WHNkcUIvYVBMc0l2Z0pRQUFBT3dRWVJmR3dCdVh0ZzhBc0NOcXJaTmE2L09ZUHVZeWhnaWlmRHpTZFI4aTdES3ppMjJGL3pyQU1sNk1kTjJuT3pET2RFc0JBQUFBTmtMWWhZMXEzMlNicXNTb1RXcXRCOG9BQUZ6aTNPNGd5Zk9NZCtxY2ZmU2ZSdmlkVnFXVVpjLzc0aXk2T0d5TElZNFhMMGU2N3E2Rmg5MStqZ2tBQUFDd1E0UmQyRFFQUXJiRFRBa0FnSGRwd3dWUDQrSHRWUXp4NEhXTW5WMTBkV0hvNjhLOTdPeFNTbG5zeVA3eGNrdjJNd0FBQUdCQXdpNXMybWRLWURzQkFOdXQxanBQRTNUeDFqeVhNVVRZeGZucmRqbllrZjN1cXY3Q3RnTUFBQUM0bmcrVWdBMXpZOHgyQWdDMldLMzFLTWxjSlp6SFhjRi9PSC9sZ2s4R1dNWXI0eE1BQUFCZ2QranN3cWE1dWJjZHBrb0FBSnhYYTUzVVdwOUUwR1VkKzlvSlo5SHp2am1OTGtQYlpvanB0djdOZU50YUx3d1JBQUFBNENKaEZ6YW0xanFKbTlEYnRMMW1xZ0FBdE9jRjB6VFRGaDJxeHFoOXVLZnJMVkMvbmZ0cTMvdXJ6aTdiZTZ6NTN4Mysvbko4QUFBQWdCMGg3TUltdWNtMFhRU1RBSUN6QjRYUG5jdHRoWS9IK0tWS0tRdlhHV3hnZngxamQ1Q0piYWZtQUFBQXdQVUl1N0JKYmpKdEZ3OE5BR0RQMVZybmFUcTZPSTlqekg2dEJGdnBZeVhveFVvSkFBQUFnRjBrN01JbUNVOEFBR3lKV3V2OUpFY1JkT25TUHRaeU9jQXlwbmF0cmRUM1ZEZ3Y5clN1MzlxMUFBQUFnRjBrN0FKYzFpZEtBQUQ3cWRaNmxPU2VTdENCNVFETEVNamFUdis1NTg5L05kTGpxNWRBQUFBQUFLN2hBeVVBTHNsREF3RFlNN1hXU1pwcGl6eU0zVTRIMXBzdDhwSHJMTjdpbFJJQUFBQUFGK25zd2licEZBSUFNRkp0dDRIbkVSd0FZTE5lS0FFQUFBQndrYkFMbStRTk5nQ0FFYXExenRKMGRKbXFCckJEWGlvQkFBQUF3RzRRZGdFQUFINVNhNTJuQ2JvSUp0T0hsUkt3UWNJdUFBQUFBRHZpQXlVQUFBQ1NwTlo2bEdTdUV2VG9XeVZnZzM2ZjhRV3VCTUFBQUFBQXJrSFlCUUFBOWx5dGRaTGtTWktaYWd5bmxMTG9lYnZhbnZCei8xQktXU29EQUFBQXdQWXpqUkdiNUEwMkFJQU5xN1ZPMDB4Yk5GTU5CdkNKRWdBQUFBQUE2eEoyWVpPME1BY0EyS0JhNjBHUzUwa09WSU9CVEpTQURmcEJDUUFBQUFCMmc3QUxjRmxMSlFDQTNWRnJuYWNKdWdnZkFQdEMyQVVBQUFCZ1J3aTdBSmYxUnlVQWdOMVFhNzJmNUVnbGR0N0tlZ003UVBjeEFBQUE0TThJdTdCSkN5VUFBQmhPclhWU2F6MUtjazgxOXNLcDlXYUxtT1lXQUFBQWdFdjdRQW5ZSUc5Y2JwZUZFZ0RBOXFxMVRwSThqVGZrMlN6N0g1djBveElBQUFBQTdBYWRYZGlZVW9vM0xyZUxjQklBYktsYTYwR1M1eEUwWVBNbUF5emptVEp2cFJjRFhJTysyc082Zm1iWEFnQUFBSGFSc0F1YnRsU0M3U0NjQkFEYnFkWjZtS2FqeTFRMUdNaysyWGZnUlVoN083MVNBdHNPQUFBQTRMS0VYZGcwQVlydHNGQUNBTmcrdGRaNWtpY1pwcHNHSTFOS0dlczVYTjhkaGx4anVEWjhFNEdNL3J6WW91KzZ0TGtBQUFCZ053aTdzR25mS3NGVzhNQUFBTFpNcmZVb3laRktNRUo5aDYrY3UyNmZsd01zNDBmamJXdjlkVmNmVkVwWkdtNEFBQUN3RzRSZDJMU0ZFbXlGWjBvQUFOdWgxanFwdFQ1Tk1sY05NczRwZlhydDdGSktXVVgzaG0welJFQnBYenU3SE96QU9ueG9pQUFBQUFBWENidXdVU051cmM3UDJVNEFzQVZxcmRNa1Q1UE1WSVBXR0x1Yy9OcjVLeGY4MndETCtFR1plMkY2S0FBQUFHQWpoRjBZZzRVU2pOcHArM1lzQURCaXRkYURKTSt6RzIveHM5dUcyRWRObDdwbDF4d0RMR1B2UWhsdEFMSnZMK3krQUFBQXdDWUl1ekFHWHl2QnFDMlVBQURHcmRZNlR4TjBtYWdHRjR4eE9zb2h3aTRuTnYzV2VKVmhBaFA3MklGa3VpUHI4YkZyV3dBQUFPQWlZUmZHd0kzb2NYdXNCQUF3WHJYV2gwbU9WSUl0MjI5N0RieVVVcFpKbGlxOUZiNFpZQmsvbEZKK1ZPcGV2QnhnR1I4cU13QUFBSENSc0FzYjE5NklQbFdKVVZxV1Vtd2JBQmloV3V1azFucVU1STVxOEE2TGtYNHYzVjA0TThTVVU2LzJ0TGF6QVpieHYrekNBQUFBd0NZSXV6QVd1b2ZZTGdEQUpkVmFKMG1lSnBtckJ1K3hHdW4zK3N5NUxLMGhPcnU4VXVhdDlYR0huK1ZGRGdBQUFOZ2h3aTZNaGJjdXgrbFlDUUJnWE5ycFg3N0xNSjB4MkhJajd0STNHMmpkbC9hQ1VmdHRoZ21pclBhMHZrT0V5dm8reG5RNWhkRi9HSElBQUFDd080UmRHSVYyS2lPQmwzRlp0TnNGQUJpSld1dGhtbzR1RTlYZ0NzWVllSm5XV3FjRExNYzF4cmo5eTBEWG0vc2FkdG1GM3hVZkdpWUFBQURBbXdpN01DWmZLWUh0QVFDOFdhMzFUcEluRVhUaDZwWWovVjR6NTdSNzdXV0dtY0pvdGNjMUhxSUQySXVlUDcvTGFZd1doaDBBQUFEc0RtRVhScU9Vc29nMjQyT3hMS1Y0Q3hZQVJxTFdlcFRrb1Vwd1RkK085SHYxUHNWSzI2bHdZUmNZcGY4NTBISyszOVBmRzlPQkZ2WEtyZ3dBQUFCc2dyQUxZL05BQ1d3SEFLQlJhNTNVV3A4bW1hc0dhMWlNOUhzZE9yZmRhLzg4MEhMMnRiUExkSUJsdkJoZ0daOTArRmxMd3c0QUFBQjJoN0FMbzFKS09ZNGJVSnUyYkxjREFMQkJ0ZGFESkU4enpGUXY3TGJUa1g2dlNidWY5MzJOc1hDTk1UcS96VEFkUVg0b3BleHI1NUVoZm5kc1ZXM2JUazhBQUFEQWpoQjJZWXk4ZWJsWmQ1VUFBRGJyWE5EbFFEVllWeWxsbGZHR1BiNXdqYkdYSGcrMG5PLzN1TWEvSG1BWlEweVIxdFh2d1pWaEJ3QUFBTHRGMklYUmFidUtMRlJpSXhhbGxCTmxBSUROcWJYT2t6eFBNbEVOdWp6UEcrbjNHbVFxSXgwa1IrVzNTVjRPdEt5WGUxem5BL1g5bVZORER3QUFBSGFMc0F0ajVjM0x6ZERWQlFBMnFOYjZNTW1SU3RDRGIwZjZ2YVpEVEdYVXVtMDMyTGhYR2E2cnl6NVBZWlRzUnRpbHkzWFEyUVVBQUFCMmpMQUxvMVJLV1NRNVZvbEJQU3FsZU5zTkFEYWcxanFwdFI0bHVhTWE5R1F4NHUvMjVZRFhHQXU3d2tiOWp3elhEV1J2cHpDcXRjNEdXdFNMbmovL3d3NC82MXZERHdBQUFIYUxzQXRqZGpmZXZocktNcnJwQU1CRzFGb25TWjRtbWFzR2ZXbER6V005dHo1c3g4RlExeGhzeHNzay96emc4djYweDdVZXFxdEwzNTF6UHU3d3M5eGJBQUFBZ0IwajdNSm9sVkpXMFdwOEtMZmJlZ01BQTJxbmIva3V3enlZaE1WSXY5Y2t5ZUZBMXhpbkVmTGVsSDlLLytHSU02dFN5Zzk3WE90UEJsakdFQjE2L3JyRHo5TEZGQUFBQUhhTXNBdWpWa281aWVtTSt2YWdiZWtPQUF5bzFqcFAwOUZsb2hvTTVObUl2OXVYQXk3clVack9oZ3pubS9iUFVGN3VlYjJIQ0ZBT01TM1FSeDErbGpFUEFBQUFPMGJZaFcxd045N0M2c3VpbEhKZkdRQmdXTFhXTzBtT0l1akNzRTVHL04wT2FxMnpJUmJVZGpTOFpYY1l6S3NrL3pqZzhuNG9wZXh0MktXZEVteUlzTXVMQVpieGNZZmpmbWtvQWdBQXdHNFJkbUgwemsxblpKcWRicm5KRHdBYlVHczlTdkpRSmRqQWVmVXk0KzV1OE1XQXRUQ2QwWEQrSWNOTlg1VG82akliYURsOWgxMCs3dkN6Rm9ZaEFBQUE3QjVoRjdaQ2V6UDZ0a3AwWnBYa1poc2tBZ0FHVUd1ZDFGcWZKNW1yQmhzMDV1NHU4MXJyZE1CcmpQdnhFTHh2anpOc2w4NGZrL3hwejJ2KzJRRExlSlgrUTBXbU1BSUFBQURlU2RpRnJWRktPWW5BUzFkdXR3RWlBR0FBdGRhREpFOHp6TlFTOEM1ZmovejczUnQ0ZWJmaVFYaGZUcE1jRDd6TVA1VlNmdHp6dXM4R1dNWldUV0dVNUkrR0l3QUFBT3dlWVJlMlNpbmxPTVBmTU4wMXQ5dmdFQUF3Z0ZyckxJSXVqT2Q4ZXBGeFR3ODZkSGVYczZrOWRUenMxb3MwMHhjTmFlKzd1dFJhSndQOXJ2bDJnR1Y4MHVGbmVkRURBQUFBZHBDd0MxdW5sSEk3QWkvWGRic05EQUVBQTZpMXp0TUVYU2Fxd1lpTVBmZzhhSGNYVTZaMjdsV1NmMnovSHBLdUxzTjBkVW1HNmV6UzVUUkd3aTRBQUFDd2c0UmQyRW9DTDljaTZBSUFBNnExUGt4eXBCS00wTmluTWhxMHUwdDdmV0hLMUc2OFNuSTN3NFFoenR2N3JpNnR6d1phVHQvaGtRL1RZZGlsbExLMGF3QUFBTUR1RVhaaGF3bThYSW1nQ3dBTXBOWTZxYlUrU1hKSE5SanBlZlJKK3N4YnZnQUFJQUJKUkVGVXhqOXR6OE1OMU9VNEFpL3IyRlRRSmRIVjVjemhBTXQ0a2Y2NzluUTVGZFBDYmdFQUFBQzdTZGlGcmRZR1h1NnF4RnV0a3R3VWRBR0FZZFJhSjJtbUxUcFVEVVp1N09lSGg3WFdnNkVYS3ZCeWJac011dndRWFYzU2RrT2FEckNvSWFZRStuakx2aThBQUFDd0FjSXViTDFTeXFNME42UlhxdkV6eXpSQmw0VlNBRUQvMmdmejM2WGJOOUtoTDQrMzREeDJJdytwQlY2dWJKTkJseVI1b2F0TGt1RkNsdDhPc0l4UHR1ejdBZ0FBQUJzZzdNSk9hRzlJMzB4elk1emtKTW1ubTNwQUFBRDdwdFk2VDlQUlphSWFiTW41OCtrSXo1MVhTZTZXVW01c09yQjlMdkFpVVA5dW13NjZyRW9wMzlzTVNaSXZCbHFPemk0QUFBREFLQWk3c0RQYUcvYWZwZ2w2N0xPN3BaUmJwUlEzNWdGZ0FMWFdPMG1PSXVqQzl2bHFSTi9sVVpJYmJkZkdzVnhmSEtjSjFEdXZmck1YU2Y3UGJDN29raVIvc0JsK21rTHZZS0J0L3FyblpYeWM1TU9PN3hNQUFBQUFPMGpZaFoxU1NsbVZVbTVsUDkvQ1BFM1R6ZVdSUFFFQWhsRnJQVXJ5VUNYWVVzY2orQTZMOWh6MjdoakQydTJEOGh2UkhlS2kzNmJwNlBKcWc5OWhXVXI1d2FaSU10d1VSdjlma3QrbENSbDluNlNQNmFPNkRPMHM3Qm9BQUFDd3U0UmQyRW50VzVqNzB1VmxsZVJCS2NXMFJRQXdrRnJycE5iNlBNbGNOZGppYytaVk5oZDRXU2E1VlVxNU9mWnoyRFpRLzJtYTdqUDc3bFdTZjJ6L2JETG84cXFVc3JRNWZ2TDVRTXQ1VmtyNW9aVHlzcFR5KzFMS04wbit0UjNQWFlYVi9yckQ3K3Y2R0FBQUFIWllVUUoyWGEzMU1NMGIxOU1kWEwyVE5OTVdMVzFwQUJqczNPSWd5Wk1kUGJjWW0wVXA1YVl5OUw0L1B4OXdrYXNrWDVWUzdtOXB2V1pwcGkzYngvSC9Jc2svSkhrNWd1L3lyNldVVjBid1QxTVkvZnNReXlxbGxFdDhuNzlNTTYzZkpOZWJqdWovU2ZKUlIxLzVWaW5seEY0Q0FBQUF1MGxuRjNaZUtlV2tsSElqVFp2dFhabmFhSkhrWmlubGxxQUxBQXluZmREOU5JSXU3TTY1OG1tR20rcmpPTTJVUmZlM3VGNkxOQjBrOTZuTHk2c2tqNVA4WHhsSDBPV0ZvTXZQRERXRjBja2x4OGozcFpRWHBaUi9UZkpObWltUFhpYTV6SlJUSDZXN29FdWlzd3NBQUFEc05HRVg5a1lwNVZHU0cwa2VaSHRETDRzMElaZWI3WTEyQUdBZ3RkWjVtcURMUkRYWU1ZOEhPb2U5dlF0QjdYWmFvN3RKYm1iM0g2Wi9reWJrY2p5UzcvTjlLZVZQaHV6UGZEblFjcjYreGxqNXNaM3k2QStsbE44bCtWMmFEa0hmSi9ueERUOXkwT0gzWFhveEJBQUFBSGFiYVl6WVcrMERxeS9UN1EyMXZoeW5hZmZ1elRRQTJOeTV3OU1rTTVVWWxHbU1odHUvdjB2M0hZdVdTUjZVVW81M3RHWWZKUGsvMG5UVytDTGRkcVRZdEJkSi9pbmpDdlA4a0diNm9oK04ySi8yd1dtUzd3WmEzSTJ1d3lQdEZFem4vL3ozSkgvVDFUVjBLZVcydlFRQUFBQjIxd2RLd0w1cWI3b2YxMW9QMG9SZURqT3VON1ZQazN5VjVLU1VzckxGQUFEbzBZTWtSeDEvM3FNZFA0LzlxeVMvVFBMYk5CMVEvaTdKMzJhN1F5OHYwM1Q2K2UwSXY5dnZCVjMrekh5b2E5TSt1cVMweDRkVjhsTjRyTXNYVVo3WlBRQUFBR0MzNmV3QzU5UmFENU44bGliNE10M0FWMWlrYVE5OW91VXlBSXp1UEVGbmx3MmNHK25zTXRqK1BVblRJV0xkOFBkSmtydTdmaTViYS8xbG1xNHViM3FCNURmWnZrNHZwMmxDTG1QdEpQbUhVc3BMSS9YUDlzTStPaks5eWQxMld1QSsxK1VneWZNT1AvSlRuVkVCQUFCZ3QrbnNBdWVVVWs3UzNxQnZXMExQMG9SZkR0TDlkRWVyTkRlVG42VjVrTE93QlFBQTJOQjU4S3JXK2xXU2U5ZjhpTk0wRDhUMzVaeDIrbzdyNmQrMmZ3N1NkSHI1elVqWDRWWDdQZjlIbW80dVkvVW5RWmMvMTc2b01SMW9jU2NETEdQVzViVzJvQXNBQUFEc1BwMWQ0QXJhdDgwbWVYMGo3cE5jN3UzWDB5VC9rV1RaL2prMU5SRUFiTjE1Z000dXc5UFpaZGg5L0RyZFhWWnBRaTdIZTFhbnF3VGhQMHp5TjBuK2EvdjNKcjFLTStYU3Y3Ui9qOTNMVXNvZmpNNDM3b2RQMG5RazdkdHBLZVhUTGZzZGUxeEt1VzB2QVFBQWdOMm1zd3Rjd2JtM3d4YXFBUURBanAzclhyVzd5Nk1rRC9Zd3hQM3hGZi83c3c0cXYyMy8vOStrQ2MwZlhPT3pydU0weWJkcHdpMHZ0cWpPcjdicyt3Nm03VUo2T05EaUhnK3dQdWRmS09uQ00zc0pBQUFBN0Q1aEZ3QUFBSklrcFpUN3RkWXY4dTdwVVJaSmJwZFNsdnRXbjFyclIyazZ0YXpqbS95OHE4cFo2T1UvdDM5LzFQNjVxaGRwQWlMZnBwbVc2RVcyTnl6eUtrMUhrUitOeWplYUQ3aXNJYVl3NmpxNHM3Q0xBQUFBd080VGRnRUFBT0M4QjBtTzN2RFBsMmxDTG90OUxFcXQ5WVAwMDRubHRQM3pKdStiTG1rWHU1OEl1cnpmbHdNdDUzU2dVTnRuSFg3V2NoK0RlQUFBQUxDUGhGMEFBQUQ0U1NubHVOWjZMNis3dTZ5U2ZGVkt1Yi9ucGZtckRWeERuKzVaalFWZDNxUFdPazh5R1doeGp3ZGFUcGVkWFU3c0pRQUFBTEFmZnFFRUFBQUFYSEM3L2ZzNHlZMTlEN3JVV24rWmQwL3R4UG9FWFM3bnl3R1hkVHpBMkRwTXQrR2RaM1lSQUFBQTJBODZ1d0FBQVBBenBaUkZyZldHNlVCKzhyRVM5RXJRNVJKcXJiTzhmMnFycnB5VVVsWURMT2Z6am85ZE9yc0FBQURBbmhCMkFRQUE0TThJdWpScXJaTWtmNmtTdlZrbCtiMmd5NlhjRzNCWnBqQUNBQUFBUmszWUJRQUFBTjd1dnloQmIxNldVdjZnRE8vWGRuV1pEYlM0NVJBZFVucVl3dWhyZXdvQUFBRHNEMkVYQUFBQWVJTmE2MThsK2FWSzlPSkZLZVZQeW5CcFh3NjRyS0c2dW56ZThlY3Q3Q1lBQUFDd1A0UmRBQUFBNElKYTZ3ZEpwaXJSdVIvVFRGdTBVb3BMNzR2VGREdmR6L3NjRDdTY0x0ZnAxTlJyQUFBQXNGK0VYUUFBQU9EUFRWMHpkKzVWbXFETEQwcHhKUThIWE5iSkVLR1JIcVl3ZW13M0FRQUFnUDNpeGgwQUFBQ2NVMnY5WlpLL1VvbE8vYW1VOGtJWnJyd3Z6akpzVjVldkJscE8xMU1ZbmRoYkFBQUFZTDhJdXdBQUFNRFAvUmNsNk13UFNmNWcycUpydXpmZ3NwYWxsRVhmQzZtMVRwTE1PL3hJVXhnQkFBREFIaEoyQVFBQWdGYXQ5Uy9UN2ZRcSsreGxraGVsbEIrVjRscjc0aXpKYk1CRlBoaG9PVjEzcWpHRkVRQUFBT3doWVJjQUFBQjQ3V01sV0p0dUx0MFlzcXZMS3NOTkJmUmx4NTluQ2lNQUFBRFlROEl1QUFBQWtLVFdPazN5UzVWWXl6TEpuM1J6V1h0Zm5HZllyaTVmRFJGT2FzZllRWWNmYVFvakFBQUEyRlBDTGdBQUFOQll0WDlNWTNSMTM2ZVpzdWdIcFZoUHJYV1NZYnU2Sk1tamdaYlRkVmNYVXhnQkFBREFuaEoyQVFBQWdDUnRaNHZUV3V0SFNhYlI1ZVV5VmttV3BpenExTkJocStNQnQ5Kzg0ODh6aFJFQUFBRHNxVjhvQVFBQUFMeFdTbmxaU3ZsZGtqOGswYW5relZacHBwQTVGWFRwZlA5Ykp2azB5WU8yem4xN01NUjZ0Vk16ZFJua1daakNDQUFBQVBhWHNBc0FBQUM4d1lYUXl5c1ZTU0xrTXRTK3R5cWwzRThUZXVtemU4bnhnSUdSTHpyK1BGTVlBUUFBd0I0clNnQUFBTzlYYTMyYVpLWVNnMXFVVW00cUF5TTZEa3lTZk5UKzJTYy9KdmsrelhSRk90MXNadCtiSlhtWTVLRGpqNzR4Uk5pbDFqcE44bDJISDdscXY3dkFGUUFBQU95cEQ1UUFBQUFBM3E5OXNMNnF0Uzd6T3ZUeXl4MWU1VmRKL3BUaysxTEtqL2FBamU1N2l5U2Z0bE1CUFV3MzB3RU4yZFhsWHNlZmR5TG9BZ0FBQVB0Tlp4Y0FBTGdFblYwMlFtY1h0dUhZOEdHYTBNdGZaamVDTHo4a2VabmtwUzR1bzkzbkprbnVaUDBBeVZCZFhTWnB1cnBNT3Z6WW0yMEFDQUFBQU5oVE9yc0FBQURBTlpWU1hpVjVrZVRGdWVETEpNbUhXN1FhcXpUVEZIMHY0TElWKzl3cXlmMWE2M0dTbzF3dmlEbGtWNWM3NlRib3NoUjBBUUFBQUlSZEFBQUFvQVBuZ2krcHRmNHl6UVArcytETG1NSXZxelJURksyU3JFeFJ0TFg3MnpMSnpWcnJMRTNvWlhxRkgzOHc0RmY5b3VQUCs4cldCd0FBQUlSZEFBQUFvR050aDVTWDdaL1VXajlJRTNpWnBKbnU2Q3dNMDdkVm1xbUpYaVY1MVhZRlliZjJ0VVdTRzdYV3M2bU4zcmRmUFJpcXEwdXRkWjZyaFhBdTQ5aFdCd0FBQUlvU0FBREErOVZhbitaNlUwVndmWXRTeWsxbFlNZVBMV2ZCbDdNd1RQSTZESE5acjVLY2RXYzVDN084MHJGbEwvZW5TWktIU2VaditVOVdTVzRNRlhxcXRYNlhic011eDZXVTI3WTBBQUFBb0xNTEFBQUFiRWpiQWVhSDl2OStyeUtzdVQrdGt0eXV0WDZWSnZReXUvQ2ZmRFZnMEdXVzdydTZQTGFWQVFBQWdDVDVoUklBQUFBQTdJNVN5bW5iR2V0V2ttWDdqNWVsbFBzRGZvMTdIWC9lYVR0bEV3QUFBSURPTGdBQUFBQzdxSlJ5a3VTazFuby95ZWxReTIyN3VzdzYvdGl2YkZFQUFBRGdqTEFMQUFBQXdBNGJ1S05MMG4xWGwxVXA1ZGlXQkFBQUFNNll4Z2dBQUFDQVR1anFBZ0FBQUF4QjJBVUFBQUNBcnR6cjRUTWZLU3NBQUFCd25yQUxBQUFBQUd2cnFhdkxjU2xscGJvQUFBREFlUjhvQVFCY1hYc2ovOHhCa3NtRi8rU3pqaGU1VFBMSEMvOXNjZjdmbDFLV3Rnd0FBQnZVUjFlWEI4b0tBQUFBWENUc0FnRG4xRnFuU2M3LytZczBZWmFrKzdkVTEzWHZ3bmMvKzUrblNWYnRuMi9idjArVHJFb3BwN1l5QUFBOW5FZlAwazlYbDZYcUFnQUFBQmNKdXdDd2QycXRrelFCbG9Na3YyNy9uclovZHNIQnVmOTllR0hkazlmaGwyV2FiakdMNkF3REFNQjYrdWpxOGxoWkFRQUFnRGNSZGdGZ3A5VmF6MEl0bitSMXdHV3k1MldaNU9kdjNkNXJhNVcwd1pjMEhXRk9TeWtMZXhFQUFPODU1NTZuKzY0dUMrZWlBQUFBd05zSXV3Q3dNOW9waUdaNUhXeVpxY3FWelM3VU5HbTZ3SndtZVpZbUFHTXFKQUFBenV1anE4c0RaUVVBQUFEZVJ0Z0ZnSzNWZG0yWkpmbXMvWHVpS3IwNDY0Z3piK3UrU3RNQjVsbWFOMjZGWHdBQTl2ZWMvSDY2bnc1VVZ4Y0FBQURnbllSZEFOZ2E1enEzZkI3aGxrMmFKRGxzLzV5RlgwN3lPdnl5VkNJQWdMMDRQNThrK2JLSGo5YlZCWUJOLzQ2YnBnbHp6dEpNOTd3VXhBUUFHQmRoRjhaOFFYRVFEN0tIdE5LZGdaRWVDMlpwd2kySDZmNk5VYm94U2RQMVpkNXVzOU0wblY4ZU82NEFNTEx6aWttYWJtVU1aeWtJdTlQdTlYRGR2ckd1TGgwY0kwNUxLU3U3QmNCV255OGV0ci9mRHQ3dzc4NWU5cm5yZU04ZWo1SFpkWDlXWUF5QXJoVWxZTVFuVFUvVEpPY1p4cUtVY2xNWkdNbjRQOHpyZ0l2UTIzWmJwdTM2VWtvNVVZNjlHY1AzMDl3Y0JEYnZRU25sdmpMOGRIeWFKWG1xRXZaQk9obFBCMG1lOS9EUk56Y1lkbG4zR0hIVFF4eUFyZjI5TmtseWxMYUw3WHVza3R4Mm40TTlIU3YxdWo5YlN2Rk1Fb0JPL1VJSkFCakpoZEpocmZWSmU4SDBKRTJYRUVHWDdUZE5jaWZKazFycnY5ZGFIN1lQUmdBQTJHNFBlL2pNaGJBSWw3aDJuS29DR1BjOWVKTExCVjJTNW43VmsvWmxMUUFBTmtUWUJZQ05xYlhPYXExSHRkWi96OVZ1S3JDZEptbUNMODlycmQvVld1KzdVUTBBc0pYbjhZZnBweFByWGRYbFBmdmUvVFNkRjREOStwM3p2T2RsM0wvbTc3VWo5elVBQURaSDJBV0FRZFZhcDIzSTRiczBMY0xuMGNGbEgwM1RUSFB6WGEzMWFhMTFyaVFBQUZ0eFBqOUpQMTFkamtzcHB5ck0yL2E3V3V0UlRKVUoremIyNzZSNU9XclM0ekltU2I2ODVvOVBISmNBQURaSDJBV0FRWnhOVTVUa3UvWkd3RlJWYU0zU3ZBMzE3N3E5QUFDTVhsL244ZytVbHJkY1MwN3kra1VKWUgvRy9sSDZDVmRlTk05NllScGRpZ0VBTmtUWUJZRGV0Ry9mblhWeE1VMFI3M1AyUnRSMzdmUldNeVVCQUJqVitmMUJtbWtwdS9hb2xMSlVZZDZ5enoxUGNxQWFzRGZqZmxKckhUTGc5dG1hUHo5eC93SUFZRE9FWFFEb1hEdFYwVkYwY2VINjVrbWV0bE1jQ1VrQkFJekRVUStmdVlxdUxyejV1dkl3VFVjWDE1T3dQK1Arb0IzM3N3RVgyOFVVU1FKNUFBQWJJT3dDUUdkcXJiTnpJWmQ1ZXB4VG1iMHhTL0trMXZwZHJYV3VIQUFBR3p2WHY1TitIdVo5VlVwWnFUQnYyTitldUthRXZScjNzelJCbDIwTWpqaFdBUUJzZ0xBTEFHdHJReTVQWXg1MStqTk5jaVQwQWdDd2tmUDlhWnFPalYxYmxsTHVxekFYOXJlakpBOVZBdlpxM00vVDNGUGExdERJcWEwSUFEQThZUmNBcnUxQ3lHV21JZ3hnbXRlaEYvc2NBTUF3anRMUEE4aTdTc3U1Njh0SmUzMDVWdzNZcTdIL01QMU1rM2RacHlQNURBQUFya2pZQllBcnE3Vk9oVnpZc0dtU3A3WFdwMEl2QUFDOW52dmY2ZW1jZjFGS09WRmgydjNzd1BVbDdOMjRuOVJhbnlTNXMrR3Y4dldhUDM5YVNsbmFvZ0FBd3hOMkFlRFMycERMVVpMdjRpWWs0ekJMRTNvNWF0dnJBd0RRNGZsLytwbStLRWx1cXpEdGZuWVdkRGxRRGRpYmNUOXB4LzNocHI5TEtXV1JaTEhHUnp5d1JRRUFOa1BZQllEM2F0KzJ1Wi9rZWJTVVpwem1TWjYzK3lrQUFOM29hL3FpQjk2Q3A3M1duTGZYbVJQVmdMMFo5d2RwWHFJYVU4RHRicExWTlg3dVdKY3lBSURORVhZQjRKMXFyWWRwYmo3ZWl4dVFqTnNreWIxYTYzZW1OZ0lBV1BzNjRINzY2ZWE0VFBKSWhhbTFQa3dUcUFMMlo5elAwM1IwR2RYOXBWTEthYTRlZUZtMFB3TUF3SVlJdXdEd1J1MlVSVStUUEVreVZSRzJ5RFN2cHpZUzBBSUF1UHExd0VINm03N29iaWxscGNwN3Y0L05rdHhSQ2RnN2ZYVU1XMXNwNVRqSnpieC9TcU5WbWc1bE4vMCtBd0RZckErVUFJQ0wycmM0djR4T0xteTNlWkxEV3V0dGJZVUJBQzU5TFRCSmY5MDJUcHlYQVRCV2JZZVhtMjBnNy9QOGZLcWxWWkpuYWFZdUVuSUJBQmdCWVJjQWZ0Syt3WG1VY2MyYkRPdVlKSGxTYXoxSmN0c05LUUNBOTNyWTAvWEFLcVo3QUdBTGxGSVdlWCtIRndBQU5zdzBSZ0FrK2FtYnkvTUl1ckNiRHBNOGI5L09BZ0RnemRjRWgybTY0L1hoUVNsbHFjb0FBQUJBRjRSZEFQWmNyZldnMXZvOHlUM1ZZTWROa3p4dGcxMEFBUHo4dW1DYS9xWXZXcFJTSHFreUFBQUEwQlZoRjRBOVZtdWRKM2thM1Z6WUwvZHFyYy9iQnpvQUFEU2VwSmtDc2crbUx3SUFBQUE2OVlFU0FPeWZXdXNrelZ1Ymg2ckJuanBJTTYzUnJYWXViZ0NBZmI0K09FcC9BZmdIcFpSVFZkN0lOZCtzM2E2ZjVNK0RUTXNrZjB4eW11VFVGRk9kMXY2Z3JmczB5YS9idnk4NlRmSWZ1MWIvZHI4N2Z5eFpqVzM4dDl0bjFtNmJOeDMzbmlWWnRkdGxzUVUxbjdicmNaRGtMOTV4TEQrL3p5MGRsM2ZxZUhPMkQ3enRlSE4ydkYrMisvWHBqdFZnZG01TVgxei9WWkp2dDJuZEwvd09lZGVZZnRiK3ZXakh0Ti9qQU93bFlSZUEvYndRZnZLV0MyRFlKNU0wMHhyZDFWWWZBTmpqNjRONWtubFBIMzlhU3JtdnlwZmFCdGU1UGx1V1VvNHZmTlpoa2k5eXhSY2JhcTNMSkNkSnZ1cmlnZGtsMXVuWGEzejg5QnBUa3g3MytTQ3dyZnZuYmQwdjB5RnA5b2I2TDVJOEhpSmdzY2JVcm0vYjU5NjY3clhXdE92MmRic2RWcGY4anRNMWprMC8yOTduUHV1TFM0eTEyWVh2ZnBMazY0dnJQWUpqeG1kWDJOL2V0TSt0em0yWGs4dHVsL2Q4cjluRjVXeDR2MTFjZGp5dGNSenUvZmh5NFh0TzJ1MytlVnZyeVRVK28vTnQzL2YrY2ZGY29yMjMrZVVseDhEaGhYVS9HZXBZZTQxdGVwWGYzV2UxdkhmaDk4alhwWlFUWjFjQTdJdWlCSXhWcmZWcG54ZEl2UEVDOEtZeTdQeTRtaWQ1bVA3YWs4TzJPazV5ZDZpYlBIdHdyTG1mOW9ZTHNIRVBQR2orMmZGcGxtWUtSK3lENUtlSFJVOTd1ajVZSmZsMG05NDA3dUFZY2ZNNkQ4L1d1UC94MDNWOCs5MlAwczFMRFl0MjdDN1dxT1hZN3VuYzdQckJadnVBOGs2YUI2NWRqcUZsa3E5eWhXRElOYjU3dmU2K3NlWSt0MnJYN2RINzFtM044WGl6bExKb3Q5RzlkanQxY1V5NzFIZnZhWnROMjMxdDNzTXhlOVZlRTY4VmRodmhkZUNsejBIV1BHYmQ3RHM0Y1M3Y01lL2g0OCtDam4ydnc3WDNqMUpLT1RjT0hxYWJUdFhMZGg4NTN1QTV4eGM5YmRObGtzZDlIYS9XK0IzeTA3WUVnSzc4UWdrQTlrT3Q5V0dhRzFHQ0x2RG41bW02dkJnZkFNQytYQjlNMG5SODdPdjg1NEdXK3NOc3gvWmE3Mm02Njk0NWE4K05Iem8vZm12Tjd5ZjVMczJEMjY1ck5FM3pNUGQ1KzhMS1dPOHZYR2VmT3d1ZlBHMGYzdmY1SFdkSm5xZWJvTXY1Ny82OC9leWh4L2gzN2JyME1TYlBnbHZmcmRIMWgzNjIvN1FONGp4UGYxM1lEdHN4K1hUSWZmc2F0WmkzZGVocVN2WnBrcU4ydmFjRGI5TW43VEcwcjIwNmJZOVgzNDMxOXdnQWRFWFlCV0QzTDR3bjdZWHhIZFdBZHpwSWMrUHlRQ2tBZ0QzUTU5U21DOU5FRG1LUzVtRlpYOWQ2ZHpKQUtHSExycTluYVI2MjloRnl1V2lhMXc5aUp5T3F3VkVIKzl4WlY2bStmSkZ1QTJBWHQ4dlRJVUloUFFSMkx1TmVyZFYxOGViSDJmbVEwMnlneGM3YWZmdG9iRUhIOXJqVDF3dDhzd3dVTHF5MTNrbTNnWjNMbkNjYzFWcWZDSzhDc0t1RVhRQjIrK0w0N0FiU1REWGdVcVp4UXg4QTJQM3JoSWM5WGlPc2t0eFM1VUVjdEgvNlhvYno0L3cwQlVkZkFZcDNtYVY1TzM4TTIyQ1c3am9SOVBuZ2RUNUFMZTYxRCtENzJ0L21HOXJmalB2Tkgydk83dVZ0NnFXMWVYdk1tWTJvTEgyUDZiTlF5THpIN1hxVXpVMHRmOWE5WjJxRUFiQnJoRjBBZHYvaTJNMEp1SnBKZXhOZ3JoUUF3QTVlSjh6VDd3TzAyNldVbFVydjVQbnh3UjZQbTZNMDNWdzJ1UTJldTBZWm5Ya2ZnWmQyT3grTllOenI4TEtaMzlGanVKZTNyL2RGZWdtOHRNZUpUZGZ5ckp1eERpOEE3QlJoRjREZHZqaDJBUVBYMC90YlBRQUFHN2hPbUtYZkI2aVBTaWtuS3IyejU4ZDdPUTNDU0I1U25uR05Najd6THJmSlNJSXU1K253TXR5eDVtemJqK2s0ZTlSbkI2T1JPdXB5bngvWjc1Q3pFSlA3eFFEc0RHRVhBQmZId051NW1Rd0E3TXAxd2tHU0p6MHU0alRKQTVYZWFkTTBVekRzMDdnWjAwUEs4OWNvd2dmajhyQ0w2VUhhN1RxMllNRmtoTjlwRjQ4MTh4SFhlYjZIZ1pkT3dwMjExanNqL0IxeWtNMTJLZ09BVGdtN0FMZzRCdDVONEFVQTJQYnJoTE9IbFgwRjRsY3hmZEcrbUxjZGd2WmgzTnpQK0I1U252Rm0vcmgwRlFoNU10TDFPMmpIQS8wY2F3NHovbnQ1OHoyN0x6TE5tbE0rdGdHNHNRWkU3K3pMNzNJQWRwK3dDOER1WEJ6UEkrZ0NmUkY0QVFDMjlUcGhrbWFLMHo0N1Fkd3RwWnlxOXQ2NHR3ZmpaamJ5OVp4a3ZNR0lmVFZiNStGeEd5YVpqbmo5dmhTdzZ1VllNOFp1UG05enRHY0JpWFgzK2JGdlY5MWRBTmdKd2k0QXUzRngvRENDTHRBM2dSY0FZQnM5VEw5QmwrTlN5ckV5NzVYWkxqL3diQjl1UHRtUzdlRDZaRnp1cmJIUGZUbnlkWnRrelU0WHZORzJUVVArWkk5Q1Q5ZmU1OXZma1dQL1BUblQzUVdBWFNEc0FyRGwycHRiYmpqQU1JN2FGc01BQU50d3JYQ1VmcWRoT1UxeVY2WDMwaGM3dkc3M3NqMFBueC9xdGpFcXMzYnFrcXM2M0pKOTdndWJ1TlBmMGZmVGJ4aTFENU9NZDJxZU1lM3oyekpXdmpRU0FkaDJIeWdCd0ZaZkdNK2pvd3NNN2FqV3V0U3FId0FZK2JYQ3cvUWJkRmtsdVZWS1dhbjJYanBNY25zSHg4MDAzYjVNY3ByazYvWi9MOU5NVS9NWGFkNzQ3K0loOTFubmdmdDJ5VkdOalVkWC9Ka3VIaml2a3B3a2VkYnVhK2NkSlBrazY0ZHFwclhXV1NsbFlUTjNjcXpaMXFEQnZOYjZlRS8yZ3l2djgyMEFzWXZ6citXNU1YM3hYR3QyYmt5dmRieXF0VTZjeXdHd3pZUmRBTGIzd25nZVFSZlloRW1TcDdYV213SXZBTUNJcnhYNjd2NTR1NVN5Vk8xUk9rM3l1UDE3V1VwWnRsTVZUTk84YlQ3cjRweTQxbnBZU2puWnNkcmQ2K2h6SHFTWjRtdjVqbkU2YlpjM1gzTlpYMGJZNVRMT3dpQmZKMW1WVWhidE5wZ20rYnpkRGwxMFYva2lWd2k3dEEvR0R6clkzeDY5NDRIMW9sM1czVFJkT2RiWjV6NC8renpXUHRaMDJjMW4yVzZYaTJHbmFWNkhJcVlkZi85Tjd3ZkxDMlA2dE5aNmNHRk1kK0dxKy95NnYyTlhTZTYrWjRySXhibmZJMC9XUEliTTJqb0N3RllTZGdIWVFvSXVzSEdUTkhOVmYrb05HQUJnRDY4Vkh1eGd5R0VYbkhYYldWejhGK2YrMlhFYmZEbksrZzgrUDh2Ykg1RGR6YnNmNUI3aytsTmhYR2Y2ck5OTGpKMXAxbjg0ZXBvbUNQYmU1YlZCbU51MTFzZHBIbFplOThIM3BOWTZmOCtEMGI2ZEQxZ2xyN3ZZVE52OVpKWnVIN1JmMVhHYWg4ZXJOMnlEWlpKRnJmVkJtZ2Y0NndZRkQ2N1lLV0cyNXZJK3ZleExHTzEzdWwxcnpScjcrc0Y3NnJ4NHo4OC9YV05kYjE3eHYxK085UGQwRjhlYTgrdjQ0QkxqLzI1NzdMK1hiZ0tQc3cxMytibGJTbm4waG4zOHREME9uYlJqK3FpRDliM3F6MysyNXZhOGVka3djUnRtdmRtT3Erc0dYdDcxdXh3QVJrL1lCV0RMdEc4cENMckE1azNUM0ZENFZDa0FnSkZjSzh3SHVGWTRLYVhjViszUldTVzVjWmtIN0cxSGkwK1RQTTk2QVlTRGR5emo5RDM3NmxycjJ0TUQxblduZ3poTjg1RHlTbUg0ZG51Y1BheThidURsOHpSQmc2R2Rwbm5vL0tidHNXei9QbTYzK1dHYUxqU3pnYi9qR3grS3YyRTdyTklFQXY2WTZ3ZXh6bytOeGJyajZKTHJkcDF1bzNkei9iREY3QjAxWE9ZOUFaTjF4djRPVFpzejcraHpIcFZTN2w2eGZvdGE2NTBPOXZHazZXSzBpVzF5NnpLQjIzWi92RmxyZmJMbThmMmc1Ly8rNHJvdHJ6Z3VWbTNYcHFjRHJSOEFqTW92bEFCZ2U3UkJsNmNxQWFOeFVHc1ZQZ01BeG5DdE1FLy9RWmZUSkxkVmU1U3VGTEk0Ni9DdzVqSm5PMWJETDlmNDJWV3VFWFE1dHoydTA2M212TU4yT3B3aEhaZFNQcjFzQUtHVWNsSkt1ZG11NTFEZE1VOHVFM1M1OEQwZlpmMEgrRmQ1ZUh6ZExoQ3JxNjdiaGZGLzdYVnNPNU53ZlY5MDhCbTNyeEowZWNNKzNzWHY4dmtHamp2WDZTeDNPMnQyK1dtNzR2UXgvaThlcjA2dnVVM1hPV1laendCc05XRVhnQzNSWGtDdTA5b1k2TWU4ZlRNS0FHQlQxd3J6OUI5ME9ac2l4eFNPNDNOOG5RZGs3Y094WStYNzZlSDlkSTJQdUx2dTJHaW5JVm11OFJHSEE1WnNVVXE1ZmMzMWZKU21PK2JwQU4venVnR2lkWU1BUTl5M09kbmdkNXc2YWx6N1dIUFFRZjBlckR0dFdmdnpYUVJlaGp6dUxLL1RXYTQ5Tmo4WWNMeGNkMnc5MjlCdWFUd0RzTlZNWXdTd1BaNjZBSUhSZWxoclhWejNMUndBZ0RWOU9jQXlibDYxdFQ2RCtXcU5uLzA2YTB5cFVXdWQ3Y2pVSXVzOHNGMnQrK0Q1bk1kSjdsM3paei9MY09HbHRSNlN0OGVTdnFlRFBiN3VNYXVVc3F5MW51YjZIUnF1MHEzbGJxNzNjSHk1eHJnOWlLbEx0dkZZa3lTblhVMGxXRW81cnJWK3Z1WjNHdks0czg3dnVwTTBVemRkTjRoeWtNc0h6RzVlZDl1dU1hYTlnQVhBM2hKMkFkZ0M3VFFwYmtUQXVEMnR0ZDd3dGpNQXNBRTMwNFRqKzdwbXVDM1VPMXJMZGJaTktlV2sxcXFLMTU5S0prbE9yempGeGJ1c2N5MHhHNmhXeDFzU2ZQdTZnNS92L1Q3TWtNZld0bVB3UE5jUFZMSFpZMDJ5M25SbmIvdThkY0l1c3dGcmQ3TEdPRnZWV2hjWm9CUE5rQUhRdGl1Wk1RM0FYaE4yQVJpNXRpWDVYQ1ZnOU02bUdydXBGQURBa05xSE9IMEZYaDUwMkxXQzdwMTA4Qm1MRFB2QWNveldHVGV6a2RSdk90Qnl2dDZTYmJybzRPZTM5Z0Z5RzJ3NWFLOVREOUtFTFBaOW5JL0JPdHRnMFhXUW91MWlkSnpyMzNlYzFscW5Bd1RnVGp0WXhyY1pkdHFscnNmMHREM09uLzNwYkV6dlVKYzJBUGFRc0F2QXVDOWtEcEljcVFSc2pWbXQ5WDVYYllVQkFDNnJwOERMc2ZPYTBmdTJnODlZS3VOdVRCbFl5SVNRQUFBZ0FFbEVRVlE4MEFQTGJlanl0T3lnNCtacXhOdjViQnFpYVpKZm45dC9KOUVWT0NQZmJ1dDQzTk5YVzJzNnUzYi82L3YzeUhJa245SGJzVHV2dzJtZjVQVjBTOU9ZMGg0QTNrbllCV0M4RnpwblhTS0E3WEt2MW5xaTFUOEFNTFNPQXkrTFVzcHRWUjI5WlFlZjhjYzl2L1lXRHJqYWNXYTVEK09pbEhJNmxpbSsybzRPaDBrK2orNHMyMnl5N3UvbG5zYjB1dFBaSGZUMTNjN1pxV0JuKzN2bmkzWTgreDBFQUd2NGhSSUFqTlpScFBkaFd6MXBBMnNBQUlOcXV4bmN6SHJkRjA2VDNGTE5yYkJTZ3JYdDBubjd6T2JjblhGUmE1M1hXcDhtK1M3SlE5dDM2MDNYMmFkN0Rwb3RIRU43SDgrVFd1dWRXdXQzU1o0bnVSTkJGd0JZbTdBTHdEZ3ZnTzVraStlUkJUTE5Gcy92RGdCc3R6VURMNmRKYm5Zd0JRakRiR3ZkQk9IUGZidk5YNzdXT21zZmlCOUZ3R1hYN2hOYzE3NGY2eGRiUHFibmVSMWFteG9LQU5BZFlSZUE4VjBBSGJRWFA4QjJ1OVBPdXd3QU1MaHJCbDVXU1c0SnVnQnNScTMxWVpxcDZLYXF3WUFFSi9zWno1TzJPOU5SZE1BQmdGNEl1d0NNejVFU3dPNk1aOU1aQVFDYmNzWEF5eXBOUjVlbHlnRU1xMzBvZmphMUNRek5mWXZ1eC9SQm1tNHVNOVVBZ1A0SXV3Q002MExvZnN6WENydGtHamNyQVlBTnVtVGc1U3pvNHMxdWdNMTRHdmVEZUx1K3d5aFRKZTVPclhYYWpta2hJZ0RvbWJBTHdIZ3VoQTZTM0ZNSjJEbjMydkVOQUxBUjd3bThDTG9BYkZBN2RaRnJ4dDIzenUvWnZ2ZVBxYzNUcVNjUmRBR0FRUWk3QUl5SDZZdGdkejFVQWdCZ2s5NFNlQkYwQWRpZ1d1c3N3M1lEWFNZNVRuS2krb05icmJtdkhQUzBEMDZ5WHRobGFkUCtySjczTTJ4NDdUVEpvNndYcGdLQXJmV0JFZ0RzNVlVUU1LeFpyWFZlU2psV0NnQmdVMG9wcTFycnpieWVMdU91b0F2R1JWblVXcS83NDh0U3lnMVZaQTFkZC9oZDVuWDRZSlhrMi9aL0w1S2N0c0hIcy90UWg4by9xSFYvMzM2UmZnSU5oeDNzYzd6MlpRLzd6ZXBjcmYvWS92L1RDMlA2cWRJRHNJK0VYUUEyckozSDlVdVZnSjEzcjlaNmNuWWpBZ0JnRTg0RlhtYWxGRy8yUTJPVjYwMDVNYTIxSGdpTmNSM3QvYUJaQi92dWNaS3ZTeWtMVlIzOTc5L3JIbXVTSnBSeXQ0ZXY5c1dhNjJXL2V6Mm01MWwvK3FKbG1zNUxqLzF1QVlEM000MFJ3T1k5akhsY1lSOU1NMng3YWdDQU55cWxyQVJkNEdmV2VhRG81Uld1YTkyT0dpZEpicFJTN2w0amNQQ0o4bS9FWW8yZm5iWmhpczYwMDJqTk5uVHMzRVdmcmZuekQwb3BaMlA2cXJXZEtqOEErMGpZQldDRDJvdEtiV05oZjN6WnpvY05BQUJjejdTSHozeTJ4cy9PMnc0ZGNGWHJCRTRXcFpSYmEzUU8zYnA5ZGtmRzJiTTFmLzVoVi9jVTJzODVXdk5qRm9ieHo4elcrTmtIcFpUN2EyeEx2NGNBMkV1bU1RTFlyQ01sZ0wweVNkUE42YlpTQUFEQXRVeHJyYk9PcDg0NFNYSnZqWjkva3VUVGRiNUErN0J5clU2UTEzMVF5dWIyNVRWKzl1NGErOW8weWNFVzFtdWVaTnYzOFpQMm5zQjFUWkk4WGZkNDAzcVk5UU1Tend6anpzYjBvelYrMW91VUFPd3RZUmVBRGFtMTNvblVQZXlqZWEzMVFTbGxxUlFBQU95cDFaby9meThkZGhRb3BaeldXcGRyWEtNZjFGcVBTaW5yaE5xUHN0NER5OU5zZnhDQUsreXphNDZmYmZSbHJmWFJHdDFzeHJEZGxyWFcwNndYTmpxb3RSNGx1WHZkV3JRL1AxOXpkWmFtUk96TVlzMzkrcDRTQXJDdlRHTUVzQUh0RzFzdVJHQi9HZjhBQU95dE5SL1VKOG1zMXZya2ZkT2ExRm9QMjRlNmwvRjR6ZTgwcjdVK3ZjNVVLKzEzWFBmTi9NZjJyUDF4M1NsOTJ1bTA1eHY4Nm9zMWZuYVM1R203RHU5YXg0TmE2OE5hNjFpNzEzelZ3V2ZNMjFvY1hIVy9xYlUrN1dnZmNNenB6c0VheHdJdlV3S3cxM1IyQWRpTU8rMUZPckNmZEhjQkFJRDFIQ1k1ckxVdTh1ZFRhWHlXNXVIaDJYWDNaVHF1SEdmOVVQb3N5Zk5hNjFkSjN0dUJvbjFvL3pEZFRDbHpiSmZZcjJ2S1hMR1RUeHVNZUxMbDYzMlFKdVJ4bWlZNDh4L24vdDBuN2IrZnR2Ly82NUd1dzlsVVJwTU9hdkc4MW5xYzVLdDNoUWpiYmY5bHVnMDZPZVowWjNLZDZmbHFyZk9zTnkwV0FHdzlZUmVBZ2JWZFhiNVVDZGg3OTNLNW0rNEFBTENMRm1uQ0lldWFkZkU1N2ZRaXgxbi9ZZkJaSjlkNzU0STR5L1pQMGp5Zy9uV2FzTTYwbzFvZWIvUFVMbHp2ZXJMV3VpeWxIRi9tUDI2N1A5ekw1bCs4ZXRiUnVEOUlOeUd4d1pWU1ZtMGdycXVPci9NMEw5UXMwMHhuOXUyNWYzY3hBTlNWWXkvdmRPNUpyZlhtWlRxZm5lc1lma2ZaQU5oM3dpNEF3eHZEelFWZzgzUjNBUUJnbjUybW00ZmVYWHFRYmpzZnpBWmF4d2QycDYyMGJ2RGpxTmI2UlpxdUhpY1gvMlhieldPVzVvV3I2WWpHL2Q0cnBkeHZ0MTJYMjJYYS9qbnMrZXV2a3R5MUZkOW9zY2FZbnVSMXA1N0hiK3J5MG5ZRCs3ejlQZVhlTWdBaytZVVNBQXlublZOWjZoNDRjMDhKQUFEWVU4L0c5b1hhSVBxMkJVZDBXTmhlWFFRL1ptazZRdFJhNjcvWFdwKzJmOWNrejlOTWNUSWQwVG92YlBhZmJHdW4xd2M2U2ZVNnB1ZHBwdXA2MDVoK211YStzcUFMQUxTRVhRQ0dOVmNDNEp6RHR2MHNBQURzbGJZVHhSZ2ZtRDdLOW5TZjBHRmh1eTA2L3J4Sm12RExaTVRqZnBYa3hLWlAyczRkajdadG55MmxQTEwxM3VyeHZvMXBBTmcwWVJlQWdiUVB0TDlVQ2VDY1NYUjdBZ0JnZngyUDdRdTFEK052WjV4Qm5JdHU2N0N3dmRwdGQ3eUhxLzdZMXYvSmcyeFh1TzZXVGZiT01YMmFaS2tTQURBY1lSZUE0V2d6Q2J6SkYwb0FBTUNlK2lvakRKVzBEeXpIM2pIbHVPMk93M1o3c0c4cjNPNjNwemI5VDRHbm14bC91RzZWNUtad25URU5BR01qN0FJd0hGMWRnRGVaMWxybnlnQUF3TDRwcFN6VEJGN0crTjJPMDNSNEdhTnRDT053K1RHd2o5UEMySDlmN3dOakQ3eWNCVjBFbEM3L3UwT3RBR0Fnd2k0QUEyZ2ZaT3ZxQXJ5TjdpNEFBT3lsVXNyOWpQVEI0RWdETDZmUllXSFhiTk5VTmwyTnJVWDJNK1R6dG5xY3BnbThMRWYyMVFSZHJtZGJwc0lEZ0swbjdBSXdqSHRLQUx6RHJOWTZWUVlBQVBiVXpZdzc4SElyNDNod0tlaXlnOXJ0dVltSDQ0c05yL2ZkSk1mMmdKL3FjWnJrMHhFZEM4K09ONEl1MTl1V20raGV0RkI5QVBhTnNBdEF6MnF0c3lSVGxRRGV3MVJuQUFEc3BYUFRlSXcxOEhLU3pUK0VQb21neXk2UGdiUE9Ia050MytOU3lzYW56aW1sM0k3QXk4K09oYVdVVDlOMCs5bWtSeEYwV1hkYkhtZll6bUMzTTk2cDl3Q2dOOEl1QVAwelBRbHdHWE1sQUFCZ1g1MEx2RHdhNmZkYnRnK2g3MmJZZ01BcXlkMVN5aTFCbDUwZkE2ZEpicVQvVU5XRE5tU1NOQ0dxVGEvMzdRMk1xN0h2Qy9mVEJPd1dBeTk2bVNia2N0ZnhwcFB0ZU54dXgyWFB2eU51bDFLT1N5bkxqRzhxTEFEb2xiQUxRSTlxclpONGdBMWN6cVRXZXFnTUFBRHNxN2Fyd2QwMER3ZTdlZ2kvNnZnN1Brb1RTSGlRL2gvT0h5ZTUwUzZUL1JrRG4vYTBmeTNUQkJudW4vdG56MGF5M21majZyakQ5VjV0K2I1dzJuYmZ1WlgrQTFETE5JR0pHNldVaFpIWTdYWnNmNmYxY1J4ZkpQbTBEZFdjLzJjQXNEZUVYUUQ2TlZjQzRBbytWd0lBQVBaZCs1RDNWcHFIMzNkejlZZDNwMmtlTE40cXBmeXFoKyszYWdNRFo5K3Z5d2ZSeXpSQmh4dWxsTnU2Syt6dEdEamJ2N29JdlN6VGRITjVVNUJoTWFKMVhyVmRYbTZrbVk3bDVJcnJ2a3dUbHJtZDVGZTdNZ1ZQS2VXa0RVRGRUTGRob0xRMXZ0WHVHOGRHWHEvNzl0MjhEblN0NnpSTk9PbG0yODNsdkdjcURzQmUvWjVWQXNhcTF2bzB5VXdsQnJObzN4YWcyLzM0dXlSVGxRQ3U0RmZiZmtPNzFuby95VDJiRWtiaHdZVzNkL2Y5M0d5VzVLbEsyQWZoTGNlSVNaS0ROVDdpOURybmNiWFdneVNUNnl5d2l6ZndhNjNUTmE1YlQ0YzhkejFYcTR2ZitUVE5BK0RWcGg1d3QzV2NKZm1zL2Z1eU5WMjEzLzlaa3BNaHZuLzcrekNiMnVjR0dJL0xOendBSHJKT25lK0hiUmZRejl1YVhLWXVwKzJmcjBzcEp4MnY1OURqL215OFg5d25sdTJmdGZmTGRZN0RROWZqM1A3d1dWdVBxMnkveGJuanpXSkQyM0VqTlI3RE1lWENkem04NHUrTDAzYjdQWDdYOGVXYTYzbWwrbTdEN3hBQTlvZXdDNk1sN0RJNFlaZnU5K0dESk05VllxK2MzV0E5VGZJZjUyNGt2UGNpOGkwWGltZi83Qy9hQzlWMWI3NnpIVzV2K3h0VndpNHdLb0lHZi83N1Z0akZQZ2d3NUgyQmR6MUFQOVc1aFRYT2FkN0l3K1M5M0IvZWQ3K28wN0FHZzI2LzFhNTBLUUtBUG55Z0JBQzkrVUlKZHRZeVRhRGwyelJobHJWdkdyemxadFRpTFJmQjB6UnZmY3lTL0RwWGUydVE4ZnM4M2JTMUJRQUFOc2dEU25yY3R4YXF3TG45WVpVUlRVbUY3UWNBUXhGMkFlalBvUkxzakxOV29ZTzNlWDNMUmZBeVRlRG1wd3ZoOWkyUVdab1dxSWNSZnRucVkwZXRkZUlOVHdBQUFBQUFnRGNUZGdIb1FUdDM3bFFsdHRwSlhzK1p2aHo3bDIyREVTZnRuN3R0OTVmRE5CMkdUSDIwZlE2anV3c0FBQUFBQU1BYi9VSUpBSHJ4dVJKc3BXV1N1MGx1bEZKdWxWSWViZXVjeHFXVVpmdjlQMDF5SThtakpEcUZPSVlBQUFBQUFBQnNQV0VYZ0g3TWxHQ3JIQ2U1V1VxNXNjMEJsN2RwZ3k5M1N5bS9Tbkk3VGFnSHh4QUFBQUFBQUlDdEpPd0MwTEZhNjBGTVliUXRqdE4wY2JsZFNsbnN3d3FYVW81TEtUY2k5REoyazFyclRCa0FBQUFBQUFEK25MQUxRUGUrVUlMUk84bnJrTXR5SHd0d0x2UnlONlkzR2l0VEdRRUFBQUFBQUx5QnNBdEE5MlpLTUZxbmFhWXJ1cld2SVplTFNpbVBrbnlhSmdDRVl3a0FBQUFBQU1Eb0Nic0FkS2pXT2sxeW9CS2o5S0NVOHVtK1RGZDBGYVdVWlNubFZwb3VMNHpIUVh0TUFRQUFBQUFBNEJ4aEY0QnV6WlJnZEpaSlBpMmwzRmVLZHp2WDVjVzBSbzRwQUFBQUFBQUFveVhzQXRDdHo1UmdWRTdTQkYxT2xlSnkybHJkU0RQbEU0NHBBQUFBQUFBQW95UHNBdEN0UXlVWWpRZWxsRnVsRkYxS3JxaXQyYzBJdkl6QlRBa0FBQUFBQUFCKzdnTWxBT2hHcmZVZ3lVUWxSdUYyS2VWWUdhNnZsTEtxdGQ1TThqVEpnWXBzekxUV09pMmxMTGZzZXg4bldlemc5bmhvUEF6dU5NbGRaVmpMVWdrQUFBQUFnRjBqN0FMUW5aa1NqSUtnUzBmYXdNdnROSUVYUWE3Tk9jaVdQYXh1d3puTFhkc1F0VmFkb29hM0txVXNsQUVBQUFBQWdQTk1Zd1RRblUrVVlPTUVYVHBXU2psTmNsc2xOdW96SlFBQUFBQUFBSGhOMkFXZ096TWwyS2k3Z2k3OUtLV2NKSG1rRWh0ajJod0FBQUFBQUlCemhGMEFPbEJyblNTWnFzVEdISmZ5LzdOM3IxZE9KTWtDZ0NQMzdQL1ZXckFhQzZheEFHRUJqUVdvTFlDMmdNWUNHQXRhV0VCakFSb0xSbU1CV2d0VzE0SzRQNVJhTkN6UWtySWtsYVR2TzZjUFR6MHFNaXZya1ZHUlJUTEdmcjJOQ0V1NEhNZElDQUFBQUFBQUFMNlM3QUxRalpFUUhNMnNsR0tablQwcnBTd2k0bFlramlNelZYY0JBQUFBQUFDb0pMc0FkTU5FOUhFc0l1S0ZNQnhHWFNacUxoTEdHQUFBQUFBQWdHT1M3QUxRalYrRjRDamVsbExtd25EWW1BdUJNUVlBQUFBQUFPQ1lKTHNBZEVQVmhjT2JsbExlQzhQQlBjU3lvZzdHR0FBQUFBQUFnS09RN0FMUUtETUhFVEVVaVlPN0ZZTERLNlVzWXBud3dtRkpkZ0VBQUFBQUFLZ2t1d0MwTXdsOWVKTlN5a3dZanVhVEVCemNvQ2JXQVFBQUFBQUFYRHpKTGdEdEpMc2MzbHNoT0txcEVCaHJBQUFBQUFBQWprV3lDMEE3MVJZT2ExSkttUXZEOGRTbGpGVFdPVHpKTGdBQUFBQUFBQ0haQmFBTFQ0WGdvSDRUZ2w2WUM4SEJTYXdEQUFBQUFBQUl5UzRBWFRBQmZUaXpVb3FLSXYzd3B4QWNuTVE2QUFBQUFBQ0FrT3dDMEFWTGl4eU9xaTVjTW9sMUFBQUFBQUFBSWRrRm9FbG1tbncrckFjaDZBMFZkZzVQWWgwQUFBQUFBRUJJZGdGb1pmTDVjS2FsbElVdzlJYTJPQUlKZGdBQUFBQUFBSkpkQUZxWmVENmNUMElBRXV3QUFBQUFBQUFrdXdDME1mRjhPRk1oNkpXaEVBQUFBQUFBQUhBTWtsMEFPQW1sbEprbzlNcFFDSTVpSkFRQUFBQUFBTUNsayt3QzBPWmZRbkFRVXlIb25YOElBUUFBQUFBQUFNY2cyUVdnelZBSURrSlZsLzZ4aE5keFNMQURBQUFBQUFBdW5tUVhBRTdCL3dsQjc0eUU0Q2lHUWdBQUFBQUFBRnc2eVM0QWJZWkNjQkJUSWVpUHpMd1dCUUFBQUFBQUFJN2w3MElBME9SR0NBN0NNa2I5OGx3SWptWW9CQUFBQUFBQXdLV1Q3QUxRb0pReUZRVXVTV1lPSW1Jc0VrY3pGQUlBQUFBQUFPRFNXY1lJQU5qR2F5RUFBQUFBQUFEZ21DUzdBQUFieWN5cmlIZ2pFZ0FBQUFBQUFCeVRaQmNBNEZGMSthSjdrZWhGV3d4RkFRQUFBQUFBdUdTU1hRQ0FUYnlMaUN0aDZJV2hFQUFBQUFBQUFKZE1zZ3NBOEZPWmVSOFJZNUVBQUFBQUFBQ2dEeVM3QUFEZmxaa0RpUzRBQUFBQUFBRDB6ZCtGQUFENFZtWmVSY1I5V0xvSUFBQUFBQUNBbmxIWkJRRDRpOHk4aTRnL1FxSUxBQUFBQUFBQVBhU3lDd0FRRVJHWk9ZNklOeEV4RkEwQUFBQUFBQUQ2U3JJTEFGdzRTUzRuUnpzQkFOQ1hhNGxoUkZ4SHhLOXI1Nm16aVBnekloNUtLUXRSQWdBQVlCOGt1d0RBQmNyTXE0aDRHUkhqaUJpSXlFa1pDZ0VBd0VtZGU0OGJ6dUdtcFpScEQ3ZHBFTXVFK2RmZitlZFIvZlZkWnY1V1NyblRsaEVSTVNtbHpNOXNtMDVGTDJNUEFBQzBrZXdDQUJlaUpyaU1ZcG5rY2lVaUFBQ3c5M1B3UVVTOGk5MFR6SjlHeExTSDIvUjVnMnVLUVVTOHljeW5FZkhpVEtxOHZJeXZ5VHpibWtiRS9NeTI2VlQwTmZZQUFFQUR5UzRBY0ticVRlaFJMRytRWDRlS0lBQUFjR2pYMFZaSmNaU1p3NzVVcGRnaTBlVXYyeEFSSHlQaW1lNEFBQUJBVnlTN0FNQ1p5TXhoTEc4ay8xcC9WYjBGQUFDTzYyVUg3L0VxSW01N3NqMnZkN3pPR0dYbXVKUXkwU1VBQUFEb2dtUVhBRGhCbVRtS1phV1dZU3dydDF4RjJ4T2pBQUJBdCtmc3craG1lWmh4OUNEWnBWWjFlZFh3Rm04aVlxSm5BQUFBMEFYSkxnRFFVL1htK0RDK0pySThqYThKTGdBQVFMKzk2dWg5QnBsNVhVcDVPUEwydEM3Sk5Nek1VU2xscW1zQUFBRFFTcklMQUJ4SnJjNFM4VFdCNVY5cnZ4K0tFQUFBbkxSeGgrLzFNaUtPbmV6U3hUWEtLQ0ttdWdZQUFBQ3RKTHNBUUljeWMzMDVvZlhmUDYyL0RtSzNOZTRCQUlEVHVTNFlSN2ZMakY1bjVyQ1VNai9pWmozVnNnQUFBUFNGWkJjQStNYmE4a0VyMy83NVg5LzhlU1JxQUFEQW11ZDdlTTl4Uk53SkxRQUFBRWgyQWVETWZaTzRNbHI3cC9XbkV0Zi9Ed0FBUU9zMXlQVWUzdnBsSERmWjVmZVE2QThBQUVCUFNIWUI0S1JsNWlqK3VqVFFLb2xsSkRvQUFNQVJqUGYwdnNQTXZDNmxQQnhwdTJZZHZNZUQ3Z0VBQUVBWEpMc0EwSHVaZVJYTHlpdFg4WFVKb2F0WUpya0FBQUQweWNzOXZ2ZnpPRkxDU0NubElUTVhEZGRoODFMS1RQY0FBQUNnQzVKZEFPaU56RnhWYUJuRk1xbmxLcjVXYkFFQUFPajdOYzExN0hlSjFIRm0zcFpTRmtmYXhMY1I4VzdIMTk3cUlRQUFBSFJGc2dzQVIvRk5Zc3V2OWZkRGtRRUFBRTdZeXdOOHhqZ2kzaDlqNDBvcDd6UHphVVJjYi9uU3lSR1hYd0lBQU9BTVNYWUI0Q0F5Y3hqTHhKYW5vV0lMQUFCd2Z0YzhnOWcrQ1dRWHIrSkl5UzdWVGYxMTAyMTlYMHBSMWFXL3VsNWFhdEI0dlQrdlAxMWFhR1lBQURnL2tsMEEySXR2a2x0R29Xb0xBQUJ3M3NZSCtweGhabDZWVW1iSDJNaTZoTktMekJ4SHhKdWZYT3ROSStKdEtXV3FhL1JYMTRsSW1UbUtpTThOYi9HaGxIS25aUUFBZ01kSWRnR2dNM1Y5K2xWSjY2R0lBQUFBRitUVmdUL3I1cGdiVzBxWlJNUWtNMWZMMHc3cVB5MGlZbnFzWkJ3QUFBQXVnMlFYQUhaV3E3ZXNKN2dBQUFCYzRyWFJLQTZiOEgrZG1iZTF5c3BSMWFRV2lTMEFBQUFjbEdRWEFMYXlsdUR5TXRyVzRRWUFBRGdYTHcvOGVZTjZYVFlSZWdBQUFDNlJaQmNBSGlYQkJRQUE0SWZYUzZ2RWswTjdGWkpkQUFBQXVGQ1NYUUQ0cnJVYnRpOWp1ZjQ2QUFBQS8rczZscFZXRHUwcU02L3FNa0lBQUFCd1VTUzdBUEFYZGEzNWx4RXhGZzBBQUlCSHZXcDQ3U0xhRW1WZVJvUmtsNTlmMzQ0aTR0ZUlHTWFQSzVYTzY4L3ZFVEV0cFV4Rmp5MzYyTlYzOXVOWlJNeEtLZk1EZnBlcjcvVDNuNDB2c3pvRy9WNS9QeTJsTEU2MEhhNGo0bW5kNXRFRysvbXNsUExROHpGckVJOC9mRGF0Mi9SbmJiL1pDYmJkVlN5VFJuK3Q3VGZjb0wrZXhEaGRIeVJjalJGUGE1dGVQWEpPTUR2MU5sM2I5aC90ajlPNkR5NE8vSjJHYS92WDFTTmo1R3E4bUszMXVaTWNIOWYyczVlUGJIZnZ4OGdOOXJIaFQ4YVFWZDliSDBlY1E4TVprT3dDd09yRWNCekxtN1JERVFFQUFOam9XbW8xYWJDcmgxamVwTi8xT213Y0ViY0gzTjV4TENkTGRuRjdpRW1GT3VuOVBMYXJ1RE9zUDZPSWVKT1ppOW8ydjVrSU9hdjk5Zk9PTDUyVlVtN1gzbWNZRVc4MjZXT1pPYXY5YUxMSE1lalZqdVBJYXV3YXJiM2ZOQ0krUk1URHZpWjJ1eHBINnIyczEvVzlobHZ1NTlHWC9YenRvYk5kcW9TTnZubXYxVFo5NkRvWnBQYTFkenUrL01QNlBsRDNvZkVXYmZkdGYzMlRtYXRqNktkOTdWODd4bW13dG0zYm5oOE12dE9tODdWK091L2grUGh0MjQ3cW1QU3o1UjNmckk4MysyeS9odlpZSHk5ZXI0L24reHdmZXpaR1JpeVh5L3pRcCtTeXhuMXN0WDlkNzJQTXJQMy9UZVBiN09WOHVYRU0vNTl6SVFBMlBNRktEdW16WG5lUis5a3dNKzh6OHo5MkFUZ1pkMFl2NXliT1QyRDNtMDkySzhjdDZIaGN1Vy9jUjBhWiticnhQY1lIM042N2xtM2Q4M2NiWithWGZaeVAxQW1DMXZQQjBZWHNFNk8rSGpkYXowa3pjNUNaNzNaOGp5OWQ5b0VhNTMxZW4veW43dStEUG80amRYLy9UOGY3K2ZBSSs4bysyL0R6SHZwYzAzNWQ5Nkg3VStxdk85eGp6Vk5wMDQ3R3gvVzIvZGg2bkQyUjl0aHJmK3Rvakx6ZXd4aDVkZVR6aTMzdlkxOWF6Nm5yZnRBYTkvczl4ZTlkNC9jYUIvVFUzNFFBNENKdnlJNHk4Mk5FZklsbEp2UkFWQUFBQUxaMjNmRGFlWDJLdExWTS9NdExib0I2ZmZzbEl1NWpQNVZLUnhIeGgrUzl5MVluTlQ5SGZjSi9COE9JK056QlJOcXdKdDk4anNlWHVHa3hpT1hUNlY5cXRhUytHTlQ3V2ZmUjdiMnNVZDNXdTBQMHBib04rMjdEVWUxekg0K1pCTEsyM2RmeDlUN2tQdnZyK0FqYmRyZkhiZnRlbTc3clE1dXViZjlWM2Y3cnh1MjY2bWovMm5kN3JQZTMxOUV2ZzVvczhYRVBZK1JSem9WV1NYSUgyTWVHRVhHZm1YL3NtbFJXSy82MG50ZnY2NWpiRXJzdXRndjJScklMd0FWWlBUVlNMNml2UlFRQUFHRG42NnR4dEUway9CWVJVWmNsYUxtQlBEcDBSWUtleEgrUW1lL3E5ZTBodHY5TjdIZGltdjVhSmJwMDhWVDdmVU9mSDBmRUh3ZnVoNE9JK0xpdko4MTNqTjgrNzJlOTJXZHlTQWRKQWJ1NGp1V2svREdyTXJ5TTdpZmZmOVJmNzJzVmlyMG5nOVRrc3oraWZkbVNiYjJPWmVMQlZRLzJ5WC9WOFhIUVFkdTk2MkQvT21SN0RDTGkzYUg2MnhaajVIalBZK1RCdG5mUFNYSS9jaFhMNUt1N2x2UDdsbjdWZFpKcGZiK1dOdHZyMGwzUVNySUx3QVg0SnNsbEpDSUFBQUROV2l1cXJDZTRmR3A4cjFjWGRvMTdGVzFWTm1BYlY5Rk5va3RMbjcrUDdxdVpiR05jbjNZLzlvVHVJVDcvT3BZVG5ZT08yM0ExYmcyT0ZMZGpMa015UFBEbmpXTFBDVDVyaVJYSGpPbm5IaVM4aktNSEZjUFhrZ0dIUi9qNHZmZTNubzJSbzMyTWtkKzA1NzRxMUd4anA4U2VVc29zSXVaSHZzYm8rdjErQytneHlTNEFaMHlTQ3dBQXdGNnV0WWFOMTFnUHRhSkxSRVNVVWlheExCRytxK3NMaXYxcXd2aEtUK1JDK3Z5K245VGYxRlVzSng0dndWVTBWT0g1eWJoMXpLU0FZeWU4SEdONy85akhza1k5YWM5TGJOTWZ0Y2U3THZkWGJiSHhHUGw1VCsyNXFxYldoK1BlS0haTDdHbE5Ecm51S3Btb3ZrL0xkY0tzSnZCQWIwbDJBVGpQay93clNTNEFBQUI3MDFwSjVYdVZYQ1lON3pmc3V1UjVYNjkxb3g4VGpIQ29Qdjg2K2pIaHR6S3FFOHVYNExwaEdZdjFOaHpFY2FzVHJGc3RTM1ZKWStoOWx3a3ZOZG0xVDhlaFZaTEZSUjRYYXpMZzY1NjF4Y1VrdkhSOVBGaExkT2xUREs5MjJNY21IWHh1VitmMXJlT2ZxaTcwbm1RWGdQTTZ3VitWK0R2MEdzNEFBQUNYWk56dzJrV3Q1UEt0RDQzZjZlVTVCN3lIRTR5dzd6NC9pb2crSnBhOHJ0L3RFcnpwWU9MNlRSeG5hWlVmR2NieHEyQWMybjJIQ1FoOVNWeGFON2pBTmwwdFhUVHVZVnRjVXZKUlo4ZURuaWE2ckd4VnlhYVVzb2oyaEpldWxpaHR1VDVZeEYrWFhZVmVrdXdDY0Q0bitIY1I4YVdISi9rQUFBRG5kTzExSFcwVFhkKzlhVnhMaExlVUNiK3VDU0huR1BNK1ZVYUFRN24zM1hwaDU0U2pPaWEvN3VFMlhWOVF3dEpLY3dKQ3ZmZmExNm9kMTVkUTRXMnRMVVk5SG9kVzV5ekd5TzJQSzMydWlyTnRKWnRQSFh6ZXNIRS91V3FNNlVOTjNJRmVrK3dDY0FZbjk1bjVSeXlmRkhIakR3QUFZTDlhSzZqOHJCeDRhM1dYOFpuRy9FMzBld0lFT2xVckZneDcvQldIWFM0TjAzT2poc1NRTnowZlZ5OUpVd0pDVFpSNTFmTnR2SWdseHRZU1lQcytidHhkeUw1MTFYbzhxTEU2aFdTdGpTdlpsRkllSW1KKzVQUDZmVjZ6UUc5SWRnRTQ0UlA3bWszYzEvSitBQUFBNTNZZE5veTJtL0d6V3NIbFJ5YU5YL0hsR2NaOEZQMnNqQUQ3OU1aMzdKVmRreHo2UEhrN090ZHFZSTlzODNqSDE3Nk8vajlrT0x5UWlqM3Y0alFlK0h4MVFmdll6dWVmdGZySW14UHJmNXM2OWhLbCs3eG1nZDZRN0FKd2d1cUZ5eC9oaGg4QUFNQWhqUnRmLzlPYjNyVlUrS1RoL2M5eG91dGV0K09TMUtWSWhoMi83U3dpcGhIUjVYSUV3d3RhQ21mclplSnFiQVlkdE52YmlMaU5pR2YxNTIwOVRzdzcySzVYRjdpTHZkdHhPYU91azBrWGRaK2NkL3krTDgrNThlcCtOVDZScnp1SXkwa0tiRW1lTzdXS1JOdFVzcGswZnRiT3g5a096aVZVZGVGay9GMElBRTdxaEg1MWtpekpCUUFBNFBCYUo1RW1HL3lmVDlFMmtmTXlsaE5vNTNBTlBJN3VKLzFYRTR4L3J2M2RQeUppRktxbWNoN2pUTlErL2lFaXBxV1UrWGYycmV1SWVCN3RrOGJQZXpiZXJIK1hVY2Z2ZlIwUjc3ZjQveTJmUDR1SUY5OXJ1L1Z0ckdOa1M1V0xVWS9hYmxaLy9yMzJkNy9XNzlobEZZOUJMTytyM20xeExCcDFjQ3hhSmJOKytGNjFoRnJkWWhUTEJLU1d6eHBIeE0wWmo0OWRKWThzSXVLaG5uUE5WMjFTMjJGWXg3YnJEdnJlT0RQZi9tQmZ2dlF4Y2pXR2pVNjBIejU2VGw5S21XZm1RN1JWV05uMXZQNTVCL3NIbkFTVlhRQk9SRDNaVnMwRkFBRGdPTmRrclU5SVB0VEtMVDlWU25tSXRpZTl4enMrdGQ1SFhUNFJQWTJJWjZXVWY1WlNYcFJTN3RaK2Jrc3BUeUxpbDFoV1RWam84ZXpRdjZiUlRaV0dVY05yRjdGTWtuaFdTcG44YUlLMWxQSlFTcm1KaUNleFRERFlWUitXNlpsRXhKT3k5R3p0cDBURWkrZ3VHZWZwbHYvLzF4MC9aMTdIcWtmN1VpbGxVc2V0WGNlc3F5TWZMeFoxelAybGxQS2tsSEx6emRqOG9wVHl6MWhXdEpsMitMbmJWclI1M2tFZi9hVWVhMlkvYU10WktlVjlLZVdYYUt3RzBiT0tTNHUxOFhIUndYWjFzVzJyUG5kVHg4TFpOKzJ3R2g5WDV3UjlPcGZaeHhqWlZWTEQ4eVBIWmg3TFpKdG5aVTF0eDV1T3g1QnRLcTU4YXZ5czZ4MzJsVUcwSmJOdWRNMENmU0haQmZmZjFSZ0FBQ0FBU1VSQlZPQUVaT2JyV0NhNkRFVURBQURnS0ZvbnV6NXM4WDliSng3R1ozQWRQT3JvR25nUnk0bVBaNldVNmMvK1l5bGxYa3E1aStYRWlDZGErWmw1TEplVytlV2JDY1JmNnVUYXMxaE91aTIyN1BkWHNYc2xnVlZmMzdqdjFrbmVsaW9Rd3lNbVM4eGpPWUY3ODVNRWdvZFN5clBvcHRMRmFNdi92MnRjdHBwa3JQLzNSY04ySGF1aTFVUGRmKzRlUyt3cHBVeHJPejZMYnBJUkIxc3NROUlhbzBudG85dTBhZXZFL0NpT2ExNzN1VjlxZ3VscWZQeG5SUHl6OXRmSkR1L2J1dXpXb280WmR4c21IeS9xT1VGcnZ6dFdFdkxxbVBEWUdQbWl0bGZydnJWVnYrdHd5YjVGUk56VzQrL3R0K2Q2OWR4dXNqYUd6RHVLNzhzTjkrZEpZMnkzSGE4aTJoTlJMV0hFU1pIc0F0QmptVG5Jekk5eGVtdFhBZ0FBbk5XMVdiUWxrQ3kybVlDTzlwdk1yODRnN0YwczVUS0w1V1RiZEpzWDFRbXVGN0ZNWm9CdnZhMlRhdTkvVWpsbFdrcTVqZTJyQmJWTXF2LzJvd25OUi9yN0xOcVN1NDZSTExHYXhKMXR1STJUYUU5NEdXVG04QURiTnRxaERhZTFEYWM3L0F5T3RBKzkyTFp5UU4zT1g2S3RHdEhLODMyMlNUV3ZpU3M3N2M4TjIvWnJITWQ2MHNGM0swdlY0K3VxY3NvL1k4UEtLZlU4N1BwUVk4WjMrbDNyK0hGOWhMWjR0dW41VHgwam04OTV0cXdxMU1WNTNyeHU1L3N0MnZKSlIyUElObTA2T2VCNDFYb2RNTnRsUDRGamt1d0MwRlAxYVo3UDBZK1NzQUFBQUpkczNQajZ5VGIvdVU0UXRkeG9IdFpyeWxQV2VpMjhtdWpaK1duYU9ubnlYdmRuelUxOTBuL1RQclRZc2xyUXNPRzd0ZlRWUDF2R215TzF3M3pML1hrUzdSV2JEckd0VjVuNWNkdkVtcG84OG15SG4wTlhzWHEvelQ3MHZYMHF1cW53Y3IxSnRZM0dpaHd0Q1N2VGh0Y2VzNHJJKzIzYXN2YUZUWklQeGgyTUdiT0dmdmNRYlFrTHp3L2NIcmZiYm04ZEl5ZU5uN3ZSdU5WQjh0S3F6ejNaWVR0WFk4aTg4Zk1IV3lUM3RDYXhYMjg2RnRWalIxUGlyRk05VHMzZmhRQ2dmK3FKMHNjalhad0FBQUR3VjYyVlVuN2I4VFgzamQvNTVoU0RYYStKVzYrSFg3UWt1cXlVVW01cjR0RElibkR4M3RmSndGMzYwU0lpWG1UbVk1Vjc1N0hiSlBlOHNiLy9xK0cxd3dPM3c3UWhRZU50dEUyd2pxSXRDV0ZUMTdHYzNIeUlaU0xTTkpaUDJ5OU9mQjlhVlR4cUhaY1htZmtpbGc4SlJtTjdQbXpRdjNkdDgybmpkOXZWTVpKZDMrNmFURkpLbVdYbXMwZjJ6YWRIR2pPK1BTOGJOK3pUaHpMZjlWaFZ4OGh4dzJjUER4aVBuUk9hNnhoeUc4djVsOVl4WkxyQjU4MHpjOXE0WDQ5anM2VFdsbXVXUlZqR2t4TWsyUVdnWitvYWpQY2lBUUFBMEl0cnRLdG9tOHlkYlZ1Qm9IcUk1WksydXlaOVhHZm03WWxPam80YVh6L1pkdW1pUjl4RXhCZDd3MFZieEliTGJmek1ZeFA5SFQxWnYrMFlONHIycWdtSDlLRWgvclBNbk1WaGtnRm1IWXhsMS9YblRXMnJXWDNmUCt1eFpYcGkrMUZuUzhPVlVxYVpPV25zdTAvamtZbmRtc0R4N01ENzVHRFY1anM2OU1PVDgyMHF1dndnem90SHhyN3JZNHdaM3hrLzVydWVFMmJtNkVENzdHOE4yemh2SENQL3NjVysxK0p0NjFJN3BaU0hsdmFzZnQyeUg3WWNFMTdHWnNrdUxmdkt3eGtrVlhLQkpMc0E5RWg5d3VlMVNBQUFBUFRHTWFxNnJKNDZmWWpkSi9KV0plSW5KeGp6NWttUUxyOU1uZnlaeEdrbEJOQ3RzNXNBcWtrdUwwK3dYN2MrZFQ2Tnd5UzcvTG1IOTd4YS8rNlpHYkZNZmxrbHdFeGJKNEQzYUxLSDc5WmFoZUtxWi92a3NCNjNYOFZ4bGdmcnhUSDNCMk5WaTE4ejg2NEhjUnJGWVNwRHRZNlJueHIyamFzdFlyR3JSWFMzeE9TenhuMXRzV1c3dENTeFgyWG04R2NKOUhWZmFka2VTeGh4a2lTN0FQVG5ndVkrM0RnREFBRG8wM1hhS21Ha1JjdWt3NGZHNjhSWGNackpMaTBUa0E4N1Z0SjV6Q2ZYN0JmdDB3bU9YVmZmN0ZPRFdDNVhOSXpUWFphcmk2VjgvdDN3Mm0yV2U1b2VjTHhjVDRDWjE4LyswTFBLTDUzdlF6VVI4YUhoT0QwNjhINjUyZytqL25vVnkwb1lxd3B5d3hQZEwvZmR6MXJqMHBjSFMvOTFnTTlZZEhBT2RJaUV1WlkyN1N6NXRNWnFmb2pHN3lDSmZYVmUvN01LV1M4Ymo2OTlUWmFFbjVMc0F0Q1BteEFTWFFBQUFQcm5PdHFXQTVpMDNKQ3Z5elRNWS9kSmdVZWZBdTJwbHBqL3ZvOHZWTXZkTCtMd3kwUFFEOU0rZnFuNkZQY29sa3NwRE9KMGsxZzIxY1ZZMWpLWnQvRllYQk14cGtkb2syRXM3ekdPNi9IanQ5WmpVVmRqNko3ZSt2ZG9UMHJ0Y3A5Y0pSLzlHcWVmeExKeFh6OUFuejRIaDlpT0xwSVZGbnZlUjFySHhFOG4zQWQraTdZNW9PdjRRYkpMQnduNnFycHdzaVM3QUJ6L0lraWlDd0FBUUQrMUxtSDA3dzV1NnMraWJZTGtzYWRBKzNhTmZOVkJ2UFpsRnVlZlRNQjM5R1VKbzdYSnJPZlJvd24rQS9yenhMN3YyeU9QR2NOWUxwdnhKak52U3ltVEkzMlBhVi9mT3pOSHJSVnc2bkhyVlczcjRZWHRrOU1EZk1iVE00blZJZnJHMlZmbTJHUGkzQ0crK3l3elo3RjdCY1BoVDhhc2xnVDlSYlF2ZndWSEk5a0Y0SWdrdWdBQUFQVDJldTB2UzBQczZFMzlPYVp4bkZDeVN6UldUdG56c2gyU1hUaldlRFNJNVZJY3IwSjFvWk5ScTNPMUxMUFQ1Ymg2bjVrdkkrTEZFWkszWm51TThTd3pqN1ZmanVzeGZxaTNzNEZEOUpQL080RTR0SnhIemMrZ0gzeG92TDU0R2Q5UE1tdFp3dWloTDBtOXNJdS9DUUhBY1VoMEFRQUE2TFdYWjdJZGd6b2hSN3YvRXdJT0xUTmZSOFNYV0U2cVMzUTVQVGZSbjJvTG80ajQwa0VGcllzZU96UHpLalAvaUlqN2tPZ0NoelEvZzIyWU5MNysranRqMGpEYWtvZ3NZY1JKayt3Q2NKeUxJb2t1QUFBQS9YWk8xMnd2TlNlY2xzd2NaT2JuV0M1REk4bmxSTlduNVo5RmZ4SmVCaEh4K1FnSkwrZXlYNDRqNG85b3Ivd0dYTzR4WWRJeWhuOG5pYjNsbW1WV1NwbHBHVTZaWkJlQXcxOFV2UXVKTGdBQUFIMitiaHZIZVUwdWorcFRuOEJwakVHRGlQZ2NsczA2Q3oxTmVMbXYvWXpOOTh2N1dGWnpBV2p4b2ZIMXo3LzVjMHRTdTZvdW5EekpMZ0NIdlNnYXgzS05aUUFBQVByckhDdWhqRFVyOU45YW9vdktFV2VrbExJb3BUeUppTGM5K1VwWGNiaDdsUDg0Zy8xeTdEZ0tSemM4aytQQk5OcVdaTHBlSmJIWEtsMjd4bVVSRVErNkZhZE9zZ3ZBNFM2S1JpSDdId0FBb08vWGJzTTR6Mm9LTHkray9mYVpJUERVSHNJQnZBbUpMbWVybEhJWEViOUUyeklXWFhsMW9Pb3VlK3ZQaDFpT3FYNkdlN3JRalduRGE0ZG5GSWZXNmk3WHEzRzg0VDBlYXVVeE9HbC9Gd0tBL2FzM1N6K0tCQUFBUU8rOU90UHRHbWJtZFNtbDEwOXdsbEttbWRueUZxUFkzMUloRWhEWXEzci82RkRWTm1iMTUvZFlQdDN0dnRYaHhybDVSTnhrNXR0WVZndDVHY2VaeEIzVXozKy81OCs1NnV0NzF3b0xqM2wzb1BhWXIrMlQwNGo0dzk3eTM3anNhaElSL3hiQ3N6cE85djVjZG91KythYmg5Uy9yMkgzZDhCNldNT0lzU0hZQjJQOEoyS0RlTUxBT0xnQUFRUDlkbi9HMnZZelRLRmUrYUxpR2ZocDdtTGpOekd2WDlSekFtdzdmYXhyTGlmUC9XL3R6Uk1TOEpsdXM5KytSMEI5ZWJZZTdpTGlyMVVPdTZ4aDJ5UFo0R2Z0UGRobnNjWUw2ZWVPeDVyR3gvNnJEOXBqWGZmTFArdWZaNmp0OEwrbW1NZkh6bkxRa3F5eHFOU1g2WTliQlBuL3l5UzZsbEhsbVBqUmNkMXhsNXJ1R2M5TlpLV1dtTzNJT0pMc0E3Tis3OFBRWEFBQkE3OVdFaHVFWmIrSjFaZzYvbmVqdW9WbnNQcm00cjIxOGJnL2hFUHRvQi92T2I2V1V5WmF2azhoMVpIWFNjYloyUEJyRjhuN2lyL1hYZmQxYnZNck13UUdXc3VoOGdycFdRcnB1M0Y4ZTAxcnRiUkhMNmdtVEV6ajI5dm1jb0dWTXZSWENYbzExaTh5Y041eHZYMmZtYlZkalZtWithVHozZjl1UVVQV2hjUXhycVFTbnFndG40MjlDQUxBLzlVYnBXQ1FBQUFCT3dzc0wyTVpUcUZ6VCtxUnBsOVV4VmhPcXJ1M1pxNXJjMEpKME1pbWxQTmtoMFNYQ1ExcTlVMHFabGxMZWwxSnVhcnVXaUhnV3k0bjdTWFM3WE5zaDJuOWN4OUl1dFk3MW04UncxUGorVDBvcGQ5c211dFJLNGJTZkV3eFZydXFsYWNOckI5SFJjbisxYnd5UDFUOXJ0YXZGRWVLL2lET29qZ01ya2wwQTlxUmV3TjJMQkFBQXdNbGN3MTFmd0thK09vSHYrSHZqNjhkMTZZbXV1TGJuRUVZTnI1MldVbTRhWHYrcjhQZmZ0d2t3RWZGTFJOekVjbm1jRm9kS3JPaHNMSzFqL1BnQXg1cGh3L3ZmTkZSekdlbngvKzMzODhZKy9rNFV6KzQ4NzAxSDUzbGRKRWRQRzE4L09VTDhIdzVRelFzT3hqSkdBUHU5Z0pPRkR3QUFjQnJHRjdLZHc4d2NsVkttUGY2T1hYeTNqNW41cFBWbWZtYmVoVWxIK3U5RFF4OGZ4R1VrK2gxRXJmSzg2eVRzZEp1eHVTWUJUQ0ppa3BuM0RjZXhxempNVS82anpMeHJXUEpqdmM5K2JQMHl0YXJDeno2blpleWYxcVdwZG1YcHZMOTZpTjJyZVZ4bDVuMWpRbUJrNXNmR3NmSnRhOTgvcy9ac1RYNXJPcy9yNlB4dTFrSFN5Ry9SVWFXYUxUOFR6b1prRjREOVhOaStEamZEQUFBQVRzbkxDOXZXYVYrL1hDbGxrWmtQMFRhcE5JeUl6NW41ckdFaVpCd2RMNGtFUC9Hdmh0Zk9HMTZyajNmcnFpR20vMm9ZbTIvak5KSTIzMlRtZk1mbHRsYUpMcCtqZmVtUjNpN2hZZW04Ny9vUWJRa0I0OHlNWFJOZTZyMys2M1B0Y3lkK25uZXpiV0paaCtkM0h6cUl4VHd6cDNHNHVhUlpZeUllOUk1a0Y0RDlYSkM0VWNBbG1MajRCZ0RnVEs3alJ0RStjVFk5NEZjZXhPNlZBeUtXa3o2M1BTOWgvaW5hSjVhdUl1S1BPaEV5M2FJL0RHSzU3SUhySFU3RjFTNWpVQjM3WGd0ZnAxb21FY2VaK1hhWHBXL3E1UEdweE9nK001OUd4RmJIb2RwZjd6czRYa2QwTUVuOWlKMitZMWRWYTg1TktXV1dtZlBHdGgvWCsvWmJMUzlWSzRDMDN1dWZTekQ0N2o3WXhYbmU1enB1dnQ5dy8zclQ0WEZ2MG1Fc1JnZUt1Nm91bkIzSkxnRGRleGVXTCtKOHplb0orS1RlU0JrTENRQUFaNkMxcXN1a3RUeitOdXJOK2krTjE1N2ppSGpmMXdZcHBVd3k4MDIwVDJvT1l6a1JNb21JMzM0MjJWVGpPbzdsUklqcmVnN3QzdzJ2ZlpXWmt4MFNCMHlxZDIvYStQcVB1MVNrYWwxeTV3aHhHa2ZFZFdhK3JjZlF4VSsyN1NvaVhrVjNDWWp6eDVZd3Fsb1NRb2VaK1hxVENmaHZqa0dmb3kyWjlaeTlqZmFsYjBZUjhhV2VFM3o0V1NMc1d2V1BZUWZmWFlMQi81N25QWFNRd0JUMWZPMWRacjZLWmZXY1Q5KzJheDBmbjljeHBLdnp1MGxYU2VQMW5QY1FjMHFMVUdHSU15VFpCYUJEOWNUSk9zZWNtMVdDeThNdVR4Y0JBRURQcitOV0NRNHRQaHp5TzYrVmYyLzUzaStqeDhrdWEzSHRxbkxxT0paUGRjOWpPYkg3YldMQjA3QWNNYWRyR011a3JoZVBYYmV2VlNRZUM5dmV4dWRaN0o2d3NIVkZxZzRTbDQ1VjVXdFZSZXRkWGNiajkyLysvVjkxWEI1Mi9MbHZOMnpMV1dPMW5IZDE2WnhOS2s2TXd3T1VqM25vTUVhcmM0S0lyOGxlODdXKzF1WDV3Q0s2cXdCeWJycElZRm8vRHI2T2lOY0hxbkwxZGcvOWU5L0g1WWVlVjNXRW5VaDJBZWpXdlJCd0JoYjFRdTlUUkV3bHVBQUFjT2JHamErZmI3TkVUb2QrYS96dVY1bDUxZk95K3U5am1aUXo3UEE5aDJHU24zNmFSbHR5MTFVc0t4WTh4REpwNE50OWV4UVJ2NGFIdEE3aFE3UlY1eGpHTW5scEhzc0owRDlqT1JHL2JyV2MzZlBHejRxZUhBZEdjWmlFdzNrcFpiTE4vMjg4QnEwcVRueUkvNjJnTTR4bG91VjFTSExacEo4dU12TTJ1ci8vdnU5Kzk1c0VneCsyNmFUdUg2ZFd6V2l5aC92bHJlZjFtMzRHbkIzSkxnQWR5Y3pYMGYyVEJuQW8wMWplREh1d2hpd0FBQmZtVmVQcmozTGp1RDV4UG8yMlNacFhFWEhUMTRaWm05aXkxQXBucjVReTdlaHA5T3VRMEhKc2sraG1PYlJoTENzVjdOT2xMV214N1RGdkd1MFQwTVBhSDk3WU5ackh5VWxtdm96VHFjUTJqLzVYMGV2RFB2bkhDWDNmUlhSZjFXVjFYdDlTRmV3eE0vZjhPVmQvRXdLQWRyWHN0UXNXVHNVOGxqY3piaVBpU1ZsNlZrcTVjOUlMQU1DRlhjdGRSZnREQzVNamJrTHI4a25YOVhxMnQwb3BEM0Y1azdGY0xuMzlETlFxRHBNVCticWZMcWhwM3U5UWllMkRIdDA3dDNHOHBiZTIvcTZxdWp3NlhzNWlEOGtqZS9SMmoxWFE5NWxBcjZvTFowdXlDMEEzWG9keWsvVFRQSlkzeTk1R3hMT0krR2NwNVpkU3lvdFN5bnZKTFFBQVhMaldxaTZUWTA1aTFLVVlXajUvRUtkUkFlSW1UbWRpQzFxWWpEb2ZiMDlnM0Zwc3VhVFBLZHRwUXIwbXg4eDE1LzZvOXpKdlQrQ3JQdFNFWFI1djA3czRqV1RQaDFMS1BpdjE3Q3NHaTVCTXl4bVQ3QUxRcUQ0Rjkwb2tPTEo1TEV1cnZxOFhmTTlxeFpaVllzdGRLV1hxYVFJQUFQakx0Vnhyb2tjZm5vaWZOTDcrWmQvYnFsN0hQQXNKTDV5NU9yRStGWW16YU10RjlIaVp1T3J0aFRUSElpSnVHdTZKdmRXamU3ZC9UYUxmeXdQTlRtRC83NXViR3JlTGJkTTlWZ1Y3TUNmQU9aUHNBdEJPVlJjT2VWSTlyUmR6cTBvdFQ5YVNXcDZWVW01cnhaYXBjQUVBd0U5ZE4xN0x6WHZ5eEc1ckpZaFJaZzc3M2xqMVNXNFRSMXlDV3lFNEQvVVlNZW5wMTV2dHVVSkJYeXhpK1VEWXJLRWRKeUVKclkvNzEyMVA5Ni9XNUtwTGJjOVZZdk9zcDIzNjRrQnR1bytsMDFTTjQ2ejlYUWdBbXFucVF1dko4bXp0OTMvVzM4L3JUMGhjQVFDQVhsN0xmZWpEUnBSUzVwazVqWWhSWXl4NlA4RmVTbm5JekdjUjhURThkTUtaS3FYTU12TW1JdTVGNHl6YTh5WXpJeUxHUGZwYWk0aDRjUUhoYjA1MFdmTWlJcjQ0OXZSeS8xckU4bUhVYyt0emw5aWVpM3FlOXpraXJucnl0ZWF4VEhTWkh5Z0cwOHljUjhTd283ZWM2WStjTzhrdUFBMHljK3dpaDdXTG1kbmFTZkMvdi9QMy96MXBGUzRBQURqcXRkd3cybStpVDNxMFNSK2lMZGxsSENkU1RhSk9BcXdTWG9aNk0rZW9sRExKektkeDJBU0o5N0dzZUdXLzZyNDkrNVR3c3BxTW41OTUyR2ZSNFFUMU41UHdnd051dzZlSWVHTXYrbW5iM0dibW54SHhMbzU3bjE2aVMwZjdXa1E4eWN6N0hveVpzOXFtaDY3UzgxdnR6MTI5RjV3MXlTNEFiVnhzWEpaWkxCTlovb3l2bFZmbUYzQ0RBQUFBemsxclZaZUhQbDBIMUlueGxrbWVRV2FPNjFJTnZWY3JYenlKWmVXTDZ3Tis5Q0k4OE1MaCt2bE5adjQ3RG5QdjZYMmRNQjVFdnlxUWFNOXV6V0s1dk1xNVQ4YS9qNGkzWFU5UTEyUFBvUkplWnJGYzBtVVk3ajl2ZWg0MGkyV0N3T2dJWDJFYWgxdm01cExHekUvMVhPOFk1MTV2U3lsM1I5cjhoK2dtMldWUjN3dk8ydCtFQUdBM21Ua0tUN3VjczJsRXZJM2xtdkJQeXRLVFVzcUxVc3BkS1dWU1NwbEtkQUVBZ0pNMGJuejloeDV1MDZUeDljOVBxUUZMS1l0U3lvdFlMaTJ4Nyt1eVJiMDI5SFFzaCs3bmQ3V1BML2JadDBzcHE4cE92NHY2M3R2elNTenZPUjNhK3poZTFZbHAvZng5bTlkdHZOMVgwa0dOM3k5N2JzT0h1aDJMK25rU0tEWnNtMUxLczNxOFBsVE1GaEZ4VzBwNUp0RmxMMjM2VVBlMzl3ZjgyR2tzNXdMdWpyamQ4K2dtU2VWQnYrUVNTSFlCMk4xTElUZ2JxeXpuMi9pYTJQSnNMYWxGK1VrQUFEZ1RIU3hITzY4MzMvdW1OUkhqdWk3dmRGSktLUStsbEY5aU9iazEzOE5IVENMaWwxT3Blc1A1MmVOazN6U1c5MERXKzdZbndQZmZucXNKK1dkeG1LU1gxUmgyZTh4Sno1cFF0YTlFbjNrc2s3WitPY1RTNFRVSjVka2VqanZ6V0ZZSCtiWkN5TlNlczFYN1RPcVllUnY3UzRaZHhQSWh5VjlLS2U5RmZlLzcyMjF0MDBuc0w1RnBWZm1xTDB0UmRaRllMMG1iaXlEWkJXQUh5cnFlaFZrc2J4UTlLYVg4czE1SXZwZllBZ0FBWjYrMWdra2ZxN3AwOVJUbzlhazJhbjFRNFpkWVZzR1lSTnRreUR5K1RtTGRlQ3FXSHZUdjljbSt0OUUyZ1R1SlpkV0laOTlXcTYxOTNYMlJ3N1RwdENaTVBJbmwvYWt1NHo2TDVVVC9hZ3liOTJTYloydmIzRHBPTDliNjhsRVNFdGVPT3pmUmxwQXlpNitWcGI5M0hGZHhhYmN4ODMySDV3VXIwOXBXdjlTSEpKMGZIUEE4dDVSeVU0K0ROOUZOY3VZOHZzNFBQT2xUWW5NZEMxckc3cGw1RGk1bWZCQUMraW96UDhkeDFsZThWS3NMTERicm4rTllyaGZKYVpuSDhzYjB4UEpEbmUwTEtRb0hkOHcxWTUyYk9EZHhmc0twNzhlamlQZ3NFbzVid0VXTis2T0krRFdXMVh5dTR2dFZmYWF4bkFUN3ZaNS9tQnpnRlByM1ZlM2ZUMnUvL3Q2MXlpcDVaYmJXdjAzTzlyZE5oM1djdXRwZzNGcHYzMFZFL0ZsL3Y1YzJianlQL3VGMTNUZmo5R3I3ZjdTZDg3cWR2UnluNjhPUjEzVmJyaHh6ZWoxdXJ2cmI2aWQrMEU1UjIybHYreGJOKzl6Vk4rZDZveC84OTNuOW1VWEV2MDloMzh2TS84VHUxU2h2VkNYa1V2eGRDQUIyWWdtajB6S0ppQStIS0dWNmdSZUlBQUFBdlZTdkFWMEhjcTc5ZTVYRVlnbU44Mm5UZVN3bll4OHVhSnZQWnB5dWlSQVRQZmtreGszT1o1ODd5M085ekx5TzNSTmRGbUZaUWk2SVpCZUE3VTgwaHVISi9sT3dpT1c2bEtxNDdNOUFDQUFBQUFBQW9ET3ZHbDc3b0FvUmwwU3lDOEQycm9XZzExWkpMdStkMUFFQUFBQUFBS2NnTThmUjlyRDFiNkxJSlpIc0FyQzlwMExRVzVPSWVLdVN5OEVNaFFBQUFBQUFBTnJVUkpmN2hyZVkxdVc2NEdMOFRRZ0F0anJaR0lUS0xuMDBqNGhucFpRYmlTNEhOUlFDQUFBQUFBRDRxOHk4eTh6N3pMeDY1UDhOTS9NKzJoSmRJaUkraURxWFJtVVhnTzJNaEtCM0poRnhhOG1pby9pSEVBQUFBQUFBd0hlTkkyS2NtWXVJbUViRW4ydi85bzlZempsZGRmQTU4MUxLUkxpNU5KSmRBTFpqQ2FOK3VYRUNkMVJYUWdBWVp3QUFBQURncDFhckJ1eHI1WUMzUXN3bGt1d0NzSjJSRVBUQ0lpSmVsRkttUW5GVVF5RUFEbkFqQUFBQUFBRDRQbFZkdUZoL0V3S0F6V1RtSUR4aDNnZUxpSGdtMGFVWGhrSUFIT2o0Q3dBQUFBRDhMMVZkdUZpU1hRQTJOeEtDWG5oV1Nwa0p3M0ZscHYwQk9CU0pwZ0FBQUFEd3YxUjE0YUpKZGdIWW5NbTI0N3VSNk5JYlF5RUFqRGNBQUFBQWNEUTNRc0Fsayt3Q3NMbW5RbkJVNzJVbzJ4K0FpL1NyRUFBQUFBREFYenlVVXFiQ3dDV1Q3QUt3T1pWZGptY2UxcDIwUHdER0d3QUFBQUJnSHFxNmdHUVhnRTFrNWlBaUJpSnhORGVsbElVdzlHcC9NUGtNSE1wSUNBQUFBQURndjE2WU13SEpMZ0NiTXJGL1BGT2wrSHBuSkFUQUlXV21jUWNBQUFBQWxnOEh6NFFCSkxzQWJFcXl5L0ZZdnFoL25nc0JjR0FqSVFBQUFBRGd3dDJVVWliQ0FFdVNYUUEyWXdtajQ1aXA2dEpMSXlFQURreVNIUUFBQUFDWGFoRVJ6eVM2d0Y5SmRnSFl6Rk1oT0lyZmhLQmZNdk1xSW9ZaUFSellWV1lhZXdBQUFBQTRGZk9PM3VkOVJQeml3V0Q0WDVKZEFPaXpCeUhvblpkQ0FCekpXQWdBQUFBQU9BVzFDc3N2RVhFYnk3bU8rUll2bjlYWC9WSkt1UzJsTEVRVS90ZmZoUUJnSTFkQ2NIQXpKM0M5TkJZQzRFaGVSc1NkTUFBQUFCeFdyU1pRUkFKZzYvRnpIc3ZLTE85WGY1ZVpvN1gvc3ZyOUlwWUpMcUdDQzJ4T3NndkFaZ1pDY0hCTzZIb21NNi90QzF3NENYakhOY3pNc2JXSkFRQUFBRGhWM3lTelRFVUVkbWNaSTRCSFpLYkovZVA0VXdoNnh4SkdHSmN3RGdFQUFBQUFjSFNTWFFBZVp3bWo0NWdMUVg5azVqQWlya1VDT0xKUlpvNkZBUUFBQUFEZ3NrbDJBYUN2WmtMUUsyK0VBREFlQVFBQUFBRFFCNUpkQU9pbFVzcENGUHFoTHVVMUZnbWdKNGFaZVNjTUFBQUFBQUNYUzdJTEFQQ1kxMElBRVJFaENhOC8zbVNtWlFZQkFBQUFBQzZVWkJlQXg0MkVnRXVWbWNPd1pBaXNXRjZ0WHo3V3lsTUFBQUFBQUZ3WXlTNEF3TTlJZEFINmFoZ1JINFVCQUFBQUFPRHlTSFlCQUw0ck0wY1JNUllKb01kR21Ya3ZEQUFBQUFBQWwwV3lDd0M5bEpsWG9uQjA3NFFBdmlxbFRFV2hsOFlTWGdBQUFBQUFMb3RrRndENmFpQUV4NU9aZHhFaDRRZzRGZVBNdk05TXg0N2xHRDdJektGSUFBQUFBQURuU3JJTEFIMDFFb0xqcUZWMTNvZ0VmTmRDQ0hwckhCR2ZMem5KSXpPSHRjck5sN0FNSFFBQUFBQnd4aVM3QU5CWHZ3ckI0ZFdxQ0pZRGdSK2JDVUd2WFVYRUg1bDVmVW5qZG1hT00vTnpmRTF5VWVFR0FBQUFBRGhyZnhjQ0FIcHFKQVJIOFM0c1h3U2N0a0ZFZk16TWg0aTRMYVhNejNFamEwTFA4NGk0RHNrdEFBQUFBTUNGVWRrRjRIRnpJVGlLUVYxT2h3UEp6TmRoMlF0NHpPOUNjREt1SStKTFp0N1ZxbFduUGtZUE12TTZNKzh6OHo4UjhURlVjUUVBQUFBQUxwUmtGNERIellYZ2FGNEp3V0hVQ2dIdlJBSTRRMjlpbWZSeW41bkRFeHVicnpMemRWMmlTSUlMQUFBQUFFQWwyUVdBUHJzK2g2ZngrNjVXMExrWENkaklWQWhPMGlDV1NTSmZNdk56Wm83N2VIeFpTMjc1V0t1My9CSExSTVNSSmdRQUFBQUErT3J2UWdCQWp3MGk0blZFM0FuRmZ0UkVsOCtoU2dCc2FpRUVKMjlVZis0emN4WVJueUppV2txWkhuajhIVVhFTUNKK2pZaXJrTkFDQUFBQUFMQXh5UzRBanpPeGVWeXZNdk45S1VVN2RFeWlDMnl2bERMTFRJRTRIMWYxNTAxdDExbjkrWGY5ZFJFUnMxMk9RWFdNSGRTZnE0ajRSLzExV0g4QUFBQUFBTmlSWkJlQVI1allQRHJWWGZaQW9nczBtWWRraFhPMVNuNzVkc3hjYi92NUQxNDcxQzhBQUFBQUFBNURzZ3NBcCtCTlpqNlVVbVpDMFM0enJ5UGlQaVM2d0s3bUlhbmhVZzIxUFFBQUFBREE4ZjFOQ0FBMk1oZUNvN3ZQVE1rWmpUSnpIQkVmUTZJTHRQaGRDQUFBQUFBQTRIZ2t1d0JzWmk0RVIzY1ZFZStFWVRlWk9jak0rMWhXZEFFY0V3QUFBQUFBNEdSWnhnaGdNM01oNklWeFprWXA1VVlvTnBlWlY3Rk1jcmtTRGVpRUpkVUFBQUFBQU9DSVZIWUIyTXkvaGFBM3hwbjVXaGcyVTJQMU9TUzZRR2RLS1pKZEFBQUFBQURnaUNTN0FHeG1MZ1M5OHE0dXljTVBaT1pWWm42TzVkSlBBeEdCemsyRkFBQUFBQUFBamtPeUM4Qm01a0xRTytQTS9KaVpFam5XWk9ZZ00rOGk0bytJR0lrSTdJM3FMZ0FBQUFBQWNDU1NYUUEyVUVxWmlrSXZYVWZFSDVrNUVvcUl6QnhIeEplSWVDTWFzSGQvQ2dFQUFBQUFBQnlIWkJlQXpjMkZvSmVHRWZFNU05OWRhcFdYekJ4bjVwZUl1QTlMRnNHaFRJVUFBQUFBQUFDT1E3SUx3T1lzV2RGdnJ5UGlTNjF1Y3ZaV3l4V3RKYmtNZFFFNG5GTEtQQ0lXSWdFQTBIUmRzMXFlZHQxLzZ0K05MelFtbzdyOS8va21McDlydkR6Z2NMNzd3YmR0ZnJIN0FRQUFiRUt5QzhEbUxGblJmNE9JdU0vTXMwMTZxVGMrN3lQaVA3RmNybWlvMmVGb3BrSUFBR2QzcnQxaUpJb2J4L29xTS8rSVplTCs5WGV1NjY3cnRkMGZtWGwxSVRFWlpPYm5pUGhjdC8vYnBKWlJqWmVsZk05M1AvaTJ6VmY3d1pkTDJROEFBR0Fia2wwQU5qY1ZncE14aks4M2hPNHljM2pLRzFOdmdMMnJWVncrUjhSWUUwTXYvQzRFQUFEYlg5L1U2NXBOSnUrdllybHM3ZFVGeE9STExCTmFOcm5lL2F6aXgwWHRCOE5ZSmpsZGl4d0FBSHdsMlFWZ2M1WXhPajNEV0ZZLytiSXEvM3NxSlovclU2V3JCSmMvWXJsTTAxQ1RRcTlNaFFBQVlLdnJuRUVzSi9pM3VTNGJ4REs1WTNpazcvejZBSlZVN3JlTVNjVHlBUS9WUHZiVDV1LzIyZVoxUC9pNFk1dTdMd0FBQUpWa0Y0QU5sVklXSWVIbGxGM0g4Z2JpZjJvcDdMdStsSDZ1NWFwSDlUdDl6c3lNNVExZ0NTN1E3K1BDTENMbUlnRUFzTEYzc2YwRWY5VFh2RG5DdGRwOS9jNzcvSXk3Mkt5NngvZmNrbkhiMlFBQUhrcEpSRUZVNjFLZFg1dC9yTmZpKzdUcmtzUURiUTRBQUYvOVhRZ0F0aktMM1c5QzBSOVg5ZWZOTXE4a1p2WG56L3JydkpReTM4Y0gxd1NiUWYzOFgrdXZRMDBDSjJzYWxoWURBTmprV21qUWVONDB6c3kzKzdwVys4NTMzWFNKbVZZdlc2NXRNM05VU3BucVlhZlI1aDNzQjZQTXZLcUo5d0FBY05Fa3V3QnM1L2N3cVhtT1Zza3YvMVdUWU9ieHRXckRMQ0wrYjh2M2ZWcC9IWVFrS1RoWG54d1hBQUEyY3QzUmU3emY1NWVzU3dQZEgrSWFybjdXc1BGdG5vZmxOYnRvaDIyWDE5clZxSVBQdVE2Vmh3RUFRTElMd0pZZVFzbllTektNcnpjZVI4SUJmTWRVQ0FBQU5yNithdld2Zlg3QldvbnpZeHdtNlNHaW00UWFEMWEwdGZrNGRsOWU2MWp0OWF1V0F3Q0FpTDhKQWNEbVNpbUw4UFFNQUg4OUxqeUlCQURBUWV3dHNhTW1QUnlxdXNmS1VKTWVUMmEranVVRFRZTVQrK29EclFjQUFKSmRBSFl4RlFJQTFud1NBZ0NBZzVqdjQwMHo4MTBjcDRyclFwTWVSMmJleDdLaUN3QUFjS0lrdXdCczc0TVFBTEJtS2dRQUFJL3FJckhqMzExK29jd2NaT2JIaUhoOXBKaDBVVGwycm10dDNlWi9STVQ0U0YraGkvYjZYVXNDQUlCa0Y0Q3RsVkptNGVrckFMNGVGK1loNFFVQTRERVBQWG1QaUZnbVBjUnkyYUxySTU1SFRxUDkvb0xFaDgzYi9LcTIrZFdKN3dldVBRQUFJQ1M3QU96cVFRZ0FXS1BxRndEQVQzU1FJRHl0RDU4MHEwa1BYK0s0U1E4ckxmY1g1cVdVaWQ2MVVadVA0dmlKTGxGS1dVVEVwTEhOcDFvVUFBQWt1d0RzNnBNUUFMQkdFaVFBd09OdWovVGEvOHJNY1N5VEhnWTlpc25pbURFNWR6MXM4N2NOYlg2alJRRUFZRW15QzhBT1Npa1BZU2tqQUw0ZUZ4WWg0UVVBNExGenBsbnNObGwvMDBWVmw4eDhIUkgzMFora2g5VjU1TFBZL2g3RCszcHZncCszK2J2YTVuM2FEK1lOKzhGVXF3SUF3SkprRjREZFRZUUFnRFdXTWdJQWVFUmRkdWRGYkpiY3NZaUlGMTBzMVZNVFhkNzFOQ2F6V0NhOHpEZU15VTBwUlZXWHg5djhYVVM4N21tYlA4VG1TVTZyTnA5b1ZRQUErRXF5QzhEdVRHb0M4Ri8xaHZWY0pBQUFOanB2K2lXV3k3bDg3L3hwWHYvdGx3NnJsd3g2SHBOWlJEeUo1ZEpFc3gvRTVIMUVQSkgwc0xHcm5yZjVkSXY5UUpzREFNQTMvaTRFQUxzcHBjd3ljeFk5djNrQ3dFRjlpSWczd2dBQThPZzE5U0lpN2lMaUxqTUhhOWZXcy9wdmx4cVQ5eEh4L3B1WXpPdlNOOWdQQUFDQVNySUxRSnZmb21kclB3TndWSk9RN0FJQXNKVTZxVDhWQ1RIUjV0b2NBQUEyWlJramdEWVBzZG42eWdCY2dQckU3VVFrQUFBQUFBQmdmeVM3QURTb1Q5MU1SQUtBTlIrRUFBQUFBQUFBOXNjeVJnRHRmb3VJMThJQVFFUkVLV1dhbWRPSUdJa0dBSEJNbVhrVkVZT0lHTmFmaUloWkxDdVVMa29wTTFGaWgzNDFpSWlyK3NmMTMwZXNMY05UU3BtS0ZqM3V4NnZydGZYeGNWSEh5SWlJZWEzY0NRQkFUMGwyQVdoVVNwbG41aVFpeHFJQlFQVTJKTHNBQUJ0WVMwaloxbmVUVlRKekhCSFA2N25JNEpIUGpsZ21KL3dlRVEvN1RuN0p6R0Y4blZUZTFrOG5udGNtcm4va1h3MWYvYXJHYXB0N0JkTU5ZL0p0c2tobk1lbTRqMTVIeE5QNlhYL1dyOTU4MDcvbXNVd2UrQlFSMHk2Lzd3WnRQdWhwbSs5bFAyanNTejhjVTQ0d3RtMFZ6eTMyczFVZkhtMGEvOHhjSmI4Y1pJd0VBR0E3a2wwQXV2RWhKTHNBVU5YcUx2UFkvU1kyQUhBNTNzVnVTYkxUaUhnVzhkK0ozTmNSOFNxMm4xd2UxWjgzbVRtTGlOOUtLWk05YmVzNDFwSWh0dlEySXU1Kzh1K2Y5OXhHVzU4U2J2ai9yaHErKzJNeDJWbE55QmhIeE12R2M5cGgvYm11N3p1TmlBOGQ5YkZUYmZPOTdBZWxsRVZtZm96ZEUwem1FZkZMaHpIOG8rRzFuWHlYbWhEMU1uYS9aemY0Wm95Y3g3TEM4NlF1YlE0QXdCSDlUUWdBMnRXblRhWWlBY0NhdDBJQUFPeGJuY3o5STVhVDU0UEd0N3VLaVB2TS9MSkIxUXpPc3o4Tk12TStJcjdVUGpYcytDTkdhMzNzV3NRNzk5RHcybUd0eHRKRlA3bys0blpFWm80eTgzTXNFNkxHSGNaM0dNdEVxQytaZVZjVERRRUFPQkxKTGdEZE1ha0p3SC9WcDFXVnVRWUE5aVl6WDhkeU1uZlk4VnNQSStKelpyNFQ1WXZxVCtOWUpybU1EL0J4dzRqNG1KbWZKUXgwNmxQajYxOTI5RDJlTjc3K3R4Mzc4S0JXdC9rYysxMVdkaERMWkxBL0pBWUNBQnlQWkJlQWpxanVBc0IzM0FvQkFMQW5vOWh0cVpWdHZKYU1jUDdXcXJuY1IzdDFvRjM2OFpldUtvcGN1bExLUTBTMExLL1RWYldkbHZlWmxWTG1PL1RqNjFnbWF4MnlZdEF3SkFZQ0FCeU5aQmVBYnQwSUFRQXJFaUVCZ0RNd2l1Vmtyb1NYTTFUYnRldWxYclkxcUgxTXdrczNKZzJ2SFdibXNMRlBYVWRiMHRTSEhUN3pkVVI4ak1NbmE2Mjh6c3lQeGtrQWdNT1M3QUxRb2Zya3lVUWtBRmhqbVRzQTROUmR4ZjZyeUhCZ2E0a3VmVWd5a2ZEU25RK05yMit0ak5LNmhOSERsdjM0dmlmajAzVklEQVFBT0NqSkxnRGRleHR0SldNQk9DTzF1c3RFSkFDQUV6ZXUxUk00SCsraUg0a3VLNE9JVUIyai9mcGpGaEh6aHJkNDJmZ1ZSZzJ2ZmRobUNhT2E2REx1VWZpdllya2NHQUFBQnlEWkJhQmo5YUw4TjVFQVlNMXRTSVFFQUU3Zkc0a0k1NkV1TlRQdTRWY2JSc1FiTGRTc3BickwxYTVMR2RYS1BNT0d6LzYweFdlTmU5cUhyek5USlN3QWdBT1E3QUt3QjZXVXUyaDdpZ2FBOHpvdUxNSnlSZ0RBNlJ1RTVZeE9YazFZNm5QMWlkZTdKbHZ3WDVQRzErKzZsRkZyVlppSERmdncxUW4wNFd2ZEVBQmd2eVM3QU96UGpSQUFzRkpLZVI4Uk01RUFBRTdjV0NMQ3lYc2R5OFNsUGxQZHBlM2FZOTU0N2ZGMHg5ZTFKSGc4MUljRWZxb21hMzA4Z1dhNFZ3a0xBR0MvSkxzQTdFa3BaUm9iUHBFQ3dNV1FDQWtBbklPeEVKeTBWNmZReHlSVk5XdFp5dWg2MjBTTkRwWXcydlQ3dm1uOG5FTVpoS1F0QUlDOWt1d0NzRjgzRWJFUUJnQWlJa29wczdDY0VRQncrbDRLd1duS3pIRjBWOVZsRnN2bGN0NnUvVXlqdS9zZ2xvRnBNemx3L0VjTm43VW9wVHhzMEgrSHNheE0xS1Y1N2JmVGp2dHZoQ1c1QUFEMjZ1OUNBTEEvcFpSRlp0N0VhWlJYQmVBd3g0YTd6SHdlRVZlaUFRRHN5U3lXazdiL3QvWjNUNk50TW5yZE1ET3ZhaUl2cCtWNTQrc1hFZkZiUkx6LzJaSXptVG1LWlZXTFVlTjNmYS9KZHI3dVdHVG1RK3llTlBROHRrdVlhVW1DMjdReWNsZVZVcWF4ckNUejNhV1RhcFdhbDdHc1l0V2FIUFltVlBnRUFOZ0x5UzRBZTFaS2VXaTh1UURBK2JtSmlEK0VBUURvMkNRaTNwWlM1dC83eDdvc3ladm9wakxDS0paSk5YM3hXUFc4bG1TZlNVVDgrMHo2eUtqaHRiT0llUGF6SkplVnVyVHpORFB2WS9kbHIwYU5iZjR5ZGwvdTVsemEvRlBzZmo5cTQ5ZlY2aVV0eWZ3Zk52eU1jV004RmhGeDgxZ1ZtWnJJTjh2TXR4RnhIMjMzOU1hWmVidkpmZ01Bd0hZa3V3QWN4azI5NkI4S0JRQ2xsRmxtM2tiRU85RUFBTHE2N2l5bFRCNDVCMWxFeEcxbS9obkxDZHdXVDZOSFZUZEtLWGMvKy9mTXZJdmRFejArMU9TTmsxYXJWZXhhcFdJUkd5YTZmTk11TjdYS3kzREg3eno2VWV3M2FQT25zZnQ5bUxObzgxaFdUTGx2NkRQWG15d3ZGRzNKSVBNTlkvMnFNUmFyUGp6Ym92OHVJdUpGWTlKVzFOZXFVZ1FBMExHL0NRSEEvdFdMWXlWTEFWZy9OcnlQemN0MUF3RDh6TzFqaVM3Zm5JZE1JdUsyOFRNdHlYaDZobzE5Yk5mS0ZCK085SjFkY3l6YmJOTHdGcHN1ZTNXSUpZeGFFbXEyVG5UNUpvNDMwVmJKNnFYZUNBRFFQY2t1QUFkU24xSjVLeElBckxtSmlMa3dBQUFOcGpXSmR0dHIxUGVONXlGRG9UODVMUWxLeDByUzFzL2FmV3A0N2FNSkpuVjV0SDB2WWRSYUxmbnRyb2t1YTFvU0JLOXFuQUFBNkpCbGpBQU9xSlJ5bDVtL1J0dlRLQUNjejNGaGtaa3ZJdUp6N0Y1U0hnQzRiTDgxdlBadHRDMXhjdFhCQkRLSE05M3hkWXVHcWk0Unl5V3ZPTjQxeDBObUxuYTgzaGhzc0pSUjZ4SkdtNHdoTHhzLzQzMEhjWnhtNWl4MlQreTVqcllxT3dBQWZFT3lDOERoM2NUeWFSUWxud0dJVXNvc00yK2pZYUlKQUxoWWkwY21vUi96MEhnT0lsbjN0TTQ3cDdGN3dzdE9Ndk11SWtZTmJ5RlJwaHNQRVRIZThiWFA0K2VWZlo0M2ZLOU5rL1g2VXBYb1U4TjMrVlUzQkFEb2xtUVhnQU9yVC9IZmhLZjRBZmg2YkpqVXlsK3ZSUU1BMk1LMGcrdlRsa29GOEJkMXFaWlJMSk5VcnNNeVJIM3hXK3llN0RKNnBMMWJLcnM4dEg2SFRWNmJtWjg3aW1OTGZ6Yk9BZ0IwVExJTHdCSFVwL2h2SXVLamFIREdKckg3elRTNHhHUERiYjFaYkw4QkFEYjFad2Z2c1JCR0hwT1p3MWhPOUEvaXI1UDIvNHF2Q1FBamtlcnR0Y1lzTStleFc3TEc4Q2RMbHJVa3VzeEtLZk1OK2w1cmtraGZra3pzSHdBQUhaUHNBbkFrZGMza203QnNCZWRwRmhHM3NieVJOaElPMk5odExHL0dldW9QQU5qRXRJUDMrTjA1Tyt1K3FjNXlwWCtjallmWXZaTGt5M3FkLzYyV1phWTJYY0pvY0U3N1ZpbEZnaUVBUUVmK0pnUUF4MU5LbVVURWU1SGd6TXdqNGxtOWdmTkpPR0NyNDhJaUlwN0Y5MjhrQXdEQTNtVG1kV1oraklqL3hMSVM3ZXVRNkhKT1BqUzg5bnJMdjkvRUlaWXc2aHNQTlFBQWRFaXlDOENSbFZKdVk3bmNDNXlEUlVTOFdIdFNhU29rc1BWeFFjSUxBTEFwNXdzMHEwa3VYMktaNEhJdEltZDduVEZyR0RPRzN5NG5sSm5Yc1h2VmxRY1ZUZ0FBYUNYWkJhQUhTaWszSWVHRjA3ZUlaVVdYMlZyZm50Vy9CN1k3TGtoNEFRQTJQV2VBbldUbUlETS94ekxKWlNnaUY2R2x1c3ZvbXo4L2IzZ3ZWV0FCQUdnbTJRV2dKMnJDeTROSWNNSmVyQ2U2ckprS0RleDBYSkR3QWdEQVh0UXFIVi9DTWtXWHB1VyswOHR2L3J4ckZhQkZ1UDhGQUVBSEpMc0E5TXRObU5Ua1JQdHVLV1g2ZzMvN1hYaGdOeEplQUFEb1drMTArUnk3TDBIRDZWNWZ6R1AzQjFLdU1uTzQxb2NzWVFRQXdGRkpkZ0hva2JWSnpZbG9jRUp1U2lrLzY3TlRJWUpPamcwU1hnQUFhSktaZzVEb2N1bGFsakphVlhONTJmQWVsakFDQUtBVGtsMEFlcWFVc3FoTEdrMUVneFB3V0tKTDFLV05QTFVGamNlR1dDYThURVVEQUlBRzkzSDRSQmRKMi8zU3hWSkdPeTloVkVxeGhCRUFBSjM0dXhBQTlGTXA1U1l6SXlMR29rRlBQWnJvc3VaQlg0Ym00OElpSXA1bDVyMzlDUUNBYldYbUtIWlBVdGpVTkpZUE8vd1p5eVNYYVVTc2xrMmlKOWNWbWZtd1kxKzRxdjFvdU9QSFQzYnNVMjhhK3VQYkhvVmY0aGNBUUlja3V3RDBXRTE0V1VURWE5R2dSeGF4VEhUWjVtbXMzOFBrUEhSNWJQZ3pJdDZKQmdBQVczalYwZnM4eERLWlpSckxTaDAvbmNDdkQvTFFMNTlpOThTbis0YlAzV1VKcFpaS3NjTlN5bFJ6QXdDY0o4c1lBZlJjS2VVMkltNUVncDVZUk1Tekhjb09UNFVPT2owMnZJL2xza2FXQ0FNQTJML0JtV3hIYTFXWHR4SHh6MUxLaTFMS1hTbGwrbGlpQzcyOW5wZzBYRXNNZDN6ZGZKZiswdGpIaHJVU0RRQUFaMGl5QzhBSnFEY2hUR3B5Ykt0RWwxMXVUczBqWWk2RTBPbXhZUm9SVDBJcGJBQ0FmYnM2OVEzb1lNTC9waWE0N0hKZlluU0NJUnRlUUw5K09QRG5mV2g0N2JUaHRXOENBSUN6WkJramdCTlJTcGxtNXJOWWxvdTlFaEVPYkJiTFJKZVdoS3RwV01vSXVqNDJ6Q1BpU1dhK0MwdmVBUURzeTY5bnNBMHQ5eEVtOVNHY1M0cmYwNGlZbkhtLy9uVGdhL1NXZVA0ZXV5ZE5qVEp6M05pSEl6TUhqZnRSV0ZJSkFLQmJrbDBBVGtncFpiYVc4SEl0SWh6SVF5eWY0bXV0TFBSN1NIYUJmUjBmYmpQejkzcDhHSWdJQUVDbnJqUHo2c1NYN0drNVIveDkxeGRtNWpDT2QvK2lKVUZpbkpsdmEzTDV1VjVEUEdUbVBBNVR4V2JXR011SGFLdlE4aTR6WjQzN2NPdTl1SWV3eERNQVFLY3NZd1J3WWtvcGkxTEtpNGk0RlEwTzRHMWRqNzJMSmJRZWhCUDJlbng0aUloZjdHc0FBSHZ4T1RNZnJlcVFtWVBNOUhES1YrOU8rTHQvck1rNm03VDVxVmJnUGRTMVE4c1NSbEdUVk9ZTmJ6R28rL0JvbHhkbjVsMjBKMjE5TWh3QUFIUkxzZ3ZBaVNxbHZJK0lKNDBYKy9Bamk0aDRVVXE1NjdEUExtSzVIQkt3djJQREtpSHlSZDJQQVFCWWFyMFdHVVRFSDVsNW41blhxeVNJekJ4bTVpZ3pYMmZteDRqNFQwUzhPclBZUGQzbFJaazVqdE91U250VjIveGRiZU5WbTEvVlA5OWw1dWZhNXFlNm5SOE85RGxkSk5YODFzRSsvTG51dzhNTisvQWdNKytqcmFwTTFHc3pEeVVBQUhSTXNndkFDYXRQdGp4eHdVekhaaEh4ckZhSjZOcFVlT0VneDRkVmxaZUphQUFBUkVSM2ljRGppUGdZRVY4eU15UGlTMFI4am1VRmszT3Q2REt1aVNzYnk4eDNzVnoyNVppNnVQNGNSTVRyMnNhck52K2ovdmxON0w1TVVsK3VHMW9ycG16aW9hUGxvQ1lkN2NmajJwYjNtVG4rTnZHbEpyaU1haC8rRXQwc3gvelFVY1ZjQUFEV1NIWUJPSEdlNHFkamsxZ211dXlyQXN2dlFnd0hQVDdjUk1TelVGVUpBSEJ1Tkwzd0VMUnUvMzJ0WkRMNDBYK29TUUxqelB3U3l3U1JZM01PdkpsOVYzZjUxTkUrdklqMjZpN3J4ckZNeVBxU2EySlpxZWR6N2NPRGpqN3JyVzRHQU5BOXlTNEFaNkkreGY4a1ZNNWdONnRsaTI3Mi9MU1IvZ21IUHo1TVN5bFBJdUkySkVVQ0FKZnRrcTlINWgyOHg1dUkrRTltZnE1TCs5elZuM2RyeS9uY1I4U3dKK2ZCaTdEMDh5WW1lMzcvTHF2R3ZqL0JOcDEwVk5rR0FJQnZTSFlCT0NPbGxIa3A1Vm1vOHNKMnBoSHh5NTZXTGZxMmp5N0MwM1Z3ckdQRSsxZ3ViZlRXTVFJQXVGQ2ZMblhENjJSN1Y5ZGlvMWhXdlhoVGYxNUhmNWZ6c2V6ellmdkd0eVpkUGxCVDMrdjJoTUo3YXQ4WEFPQ2tTSFlCT0VNMWFlR1gyUC9UT1p5MlJVVGNsbEtlSFhqdDZLblF3OUdPRDR0U3lsMDlScndYRVFEZ3dsejZOZktIQzl6bTMzVDdvL2FOemhQTTZqMnZVN21XZVh2Zyt5MEFBQmRGc2d2QW1hb1RtamNSOFN4VTB1Qi9QY1N5bXNzeGJoQjlFbjdveFRIaU5sUjZBUUF1N0J3b0xqdmhaWEpwNTMyMWFzbFU3OStvYjNSdHNhOEtzdlZhcHUvM3VoNk9kTThGQU9CaVNIWUJPSE9sbEdrcDVVbEUzSVRKVEpaclc3OG9wYnc0MXRORnBaU3Bab0RlSENQbWE1VmUzdFl4Z3RObnlUZ0ErTEdMVGZTdDE0Q1hXT25rUnJmZnFHOTBuWml5N3lXayt2eHcxMXkvQXdEWVA4a3VBQmVpbERJSlQvQmZza1Z0K3lmN2VySnFTMU5OQXIwNlJpeEtLWGVsbEY5aWVWTldvc1JwbXNReW9mR2ZQUm5yQWFDUDV6M3ppTGk5NE8yL3U3Unp2ZHJtYi9YK1IzVmRoZlhEbnR0MUVmMU1lRm5VYzNMMzNnQUE5a3l5QzhBRldVMW14akxwUlNuVnl6R0paWkxMWFk5dXR2eXVXYUMzeDRwSnJRajJKQzZ3MVAwSmVvaGxndEkvU3lrM2tsd0FZTFB6bmJqczVZeGVIT2tjYjNIRU5yKzc4RGJmOUx5eXF6YWFINktxYXc4VFhoWVI4YXlVNHVFQkFJQURrT3dDOFAvdDNkRnhHa2NBQnVEL1p2SWVwNExJRlZpdVFGSUZqaXB3cUNCREIzWUZjUW1vQTZXRGN3Zm5EbEFGd1JWY0huYlBNTEZrR1lIZ1RuemZEQU1qalJEc0x0emUzcis3SjZpR1h1WXBvWmVGRW5teDJwU1F5NnpPWkJ2YmF3UEdmYXpvNnZmSGJ5bGhDaUdLY1ZqVlkvZDFTc0RsdWdhVWhKSUFZTHUrenV4VXo0ZnIrZUZWRGhzK21ZM2dQSEN1VC92RGRySFByWXh1RC9tNmExai8ySk82dXBReEdFRVhBSUFERVhZQk9HRk4weXpyQUovdGpWNldObVVtMFdobkU5VVpYdG9iVE9kNHNXaWE1anFKNE12eHZ0ZUhyZWkrcmVBaTRBSUFPL2R4WmpuUjdXM3F1ZUpWa3VVei82dGhTNWRGanJ6Q1p3MUZYTWRLdHoreXI2Mk1ibzVRdi9NRHRlbjdmRW9aaDFscVFnQUFoeVBzQXNBUWV2bVFkZWpGeWZrMHRWbUhYTnFKdkY1Z1dzZUwxVDNCbDBXRTEvYXRTeGt3SDFadnVhcGIwWmtsQ2dENzc5OThTTm0rc1QzQjk5N1Y5LzVjNFkrdW5xUGVqdWtjY0NNVTRaejArN0xaeDFaRzNiSDZyWFVzNUcwT042RnJXZHY0WEJBZEFPRHdoRjBBMkJ3VVdOV0xhYTh6amlXRytUbUxKSzhuRkhJWmZGWjFNUGxqeG1KanE2TmhVTm14WXp1cnJGZHV1VW9KdDd5dEErWldid0dBdy9ScnVxWnBybXAvWnBHblh5UmZwZ1JINWhQcjArMDcvTEZLTXE5OW1tNnpuRE9Ta0hUVE5HMnQ4NnNkNjN3SUtTOWUwRWRpMTFVY2IwYlFwaitrVE9pYTUza21kSFZKWmszVHZKN1lPQXdBd0l2eWl5SUE0SUhCZ1VXU1JkLzM1MG4rU3ZKSGtsZEtaalNXS1FOSW55WjhJYlJWamZDaWpodGR5cUJ2a3FUdis4c2tsMGt1a3B3N2hpUXBGMUdHY3ZxU0k4NTZCZURCUHZiSEhmLytLVzV5M0NCNGU4RDMzQjdwZFc3VG41a2xtZFZ6NGN2YWg3bDQ0RSs2SkYvcmErdWVlRzYyUzd0cjkvamUyeVJ0My9kbkcyTUFaMXMrelcyU2YrcDR3a1BtV3o3djhwbnJ2SzNsT0t2OTEvTkg2dnp6UnRrL3RjNUgvVG1vN2ZGdWg3OGZ4WmFudFc0K0pmbFVQOC92NjJmNi9JbFAyYVZzODNTckR3OEFNQTZOSWdEZ1ovVjkvMmVTZHltRFhoekhiWktialdXZ3A5Nm0vbzBMNE52NldHZXB3ZFErNzJjcEE4dm5LUmNQenJMOUJaUXBhVk11enR3Tmo1dW1XV29KQU1CRSsyKy81dnVRd0xmZ2g5VXRtRmpidnN3NjJQVDdQZWNsUXo5K2xSSnEwcjRCQUVaSTJBV0Fwd3dLbktVRVh0N242VE5pK0hsZHltelAyNWQyb2JUdis3KzFvYTNkUERKVEVxYjJQWENaZGZEbFRjcUE4eFJXZ2xsdTNPNDJIbmUySGdJQUFBQUFlRjdDTGdEc1pDUDQ4aTVsT1ZqMlk1bjFLaTZXeHdWTzlSZ3poRjZHQUV4eS82emlYWTgvdy9aQ200WnRDWWJ2NU9Yd2MyRVdBQUFBQUlEakVuWUJZRy82dm4rVkVueTVxUGUycDlsT20vWCt6MHZGQVFBQUFBQUFBTjhUZGdIZzJkUVorWmV4NnN0RGxsa0hYRm9yQlFBQUFBQUFBTURqaEYwQU9KaU44TXRGeWhZVVp5ZFdCRjFLdU9WTFNyaGxxVlVBQUFBQUFBREFkb1JkQURpYXV1M1JFSUI1a3hKK09YOGhiNjlOV2JubFM1S3VhWnBXalFNQUFBQUFBTUR1aEYwQUdKMjZBc3haU3ZEbDkvcDR1STFKbDJSVjc3K21CbHlzMkFJQUFBQUFBQURQUjlnRmdFblpXQTBtOWY1VmZUeUVZalp0L3Y0eHkzcjcvOC91N3ZsOTF6VE5TbTBBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFjSHIrQTNMQmQ0YXc4VXlMQUFBQUFFbEZUa1N1UW1DQ1xcXCIvPjwvZGVmcz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTIgMTRcXFwiPjxwYXRoIGQ9XFxcIk0uNjY3IDdhLjY2Ny42NjcgMCAwIDAgLjY2Ni42NjZoNS4wNkw0Ljg2IDkuMTkzYS42NjcuNjY3IDAgMCAwIC4yMTcgMS4wOTMuNjY4LjY2OCAwIDAgMCAuNzMtLjE0NmwyLjY2Ni0yLjY2N2EuNjY3LjY2NyAwIDAgMCAuMTQtLjIyLjY2Ny42NjcgMCAwIDAgMC0uNTA3LjY2Ny42NjcgMCAwIDAtLjE0LS4yMkw1LjgwNyAzLjg2YS42Ny42NyAwIDAgMC0uOTQ3Ljk0NmwxLjUzMyAxLjUyN2gtNS4wNkEuNjY3LjY2NyAwIDAgMCAuNjY3IDdaTTkuMzMzLjMzM0gyLjY2N2EyIDIgMCAwIDAtMiAydjJhLjY2Ny42NjcgMCAxIDAgMS4zMzMgMHYtMmEuNjY3LjY2NyAwIDAgMSAuNjY3LS42NjdoNi42NjZhLjY2Ny42NjcgMCAwIDEgLjY2Ny42Njd2OS4zMzNhLjY2Ni42NjYgMCAwIDEtLjY2Ny42NjdIMi42NjdBLjY2Ni42NjYgMCAwIDEgMiAxMS42NjZ2LTJhLjY2Ny42NjcgMCAwIDAtMS4zMzMgMHYyYTIgMiAwIDAgMCAyIDJoNi42NjZhMiAyIDAgMCAwIDItMlYyLjMzM2EyIDIgMCAwIDAtMi0yWlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCI+PGcgY2xpcC1wYXRoPVxcXCJ1cmwoI21hZ25pZnlpbmctZ2xhc3Nfc3ZnX19hKVxcXCI+PHBhdGggZmlsbD1cXFwiI0E2QjVCQVxcXCIgZD1cXFwiTTEyLjkxNyAxMS42NjdoLS42NTlsLS4yMzMtLjIyNWE1LjQxNyA1LjQxNyAwIDAgMCAxLjIzMy00LjQ1Yy0uMzkxLTIuMzE3LTIuMzI1LTQuMTY3LTQuNjU4LTQuNDVBNS40MiA1LjQyIDAgMCAwIDIuNTQyIDguNmMuMjgzIDIuMzMzIDIuMTMzIDQuMjY3IDQuNDUgNC42NThhNS40MTcgNS40MTcgMCAwIDAgNC40NS0xLjIzM2wuMjI1LjIzM3YuNjU5bDMuNTQxIDMuNTQxYS44OC44OCAwIDAgMCAxLjI0MiAwIC44OC44OCAwIDAgMCAwLTEuMjQxbC0zLjUzMy0zLjU1Wm0tNSAwYTMuNzQ1IDMuNzQ1IDAgMCAxLTMuNzUtMy43NSAzLjc0NSAzLjc0NSAwIDAgMSAzLjc1LTMuNzUgMy43NDUgMy43NDUgMCAwIDEgMy43NSAzLjc1IDMuNzQ1IDMuNzQ1IDAgMCAxLTMuNzUgMy43NVpcXFwiLz48L2c+PGRlZnM+PGNsaXBQYXRoIGlkPVxcXCJtYWduaWZ5aW5nLWdsYXNzX3N2Z19fYVxcXCI+PHBhdGggZmlsbD1cXFwiI2ZmZlxcXCIgZD1cXFwiTTAgMGgyMHYyMEgwelxcXCIvPjwvY2xpcFBhdGg+PC9kZWZzPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyMCAxNlxcXCI+PHBhdGggZD1cXFwiTTE3IDBIM2EzIDMgMCAwIDAtMyAzdjEwYTMgMyAwIDAgMCAzIDNoMTRhMyAzIDAgMCAwIDMtM1YzYTMgMyAwIDAgMC0zLTNabS0uNDEgMi01Ljg4IDUuODhhMSAxIDAgMCAxLTEuNDIgMEwzLjQxIDJoMTMuMThaTTE4IDEzYTEgMSAwIDAgMS0xIDFIM2ExIDEgMCAwIDEtMS0xVjMuNDFsNS44OCA1Ljg4YTMgMyAwIDAgMCA0LjI0IDBMMTggMy40MVYxM1pcXFwiIGZpbGw9XFxcIiMxNTUzNjZcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDJcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEzLjk1OCAwSDEuOTk5QzEuMjQgMCAuNjY2LjI0LjY2NiAxcy41NzQgMSAxLjMzMyAxaDEyYy43NiAwIDEuMzM0LS4yNCAxLjMzNC0xcy0uNjE2LTEtMS4zNzUtMVpcXFwiIGZpbGw9XFxcIiMyQTJGMzBcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE1IDE0XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xMi44NDYgNy41ODNhLjU4My41ODMgMCAwIDAtLjYxMi0uMDgyIDQuNjk2IDQuNjk2IDAgMCAxLTEuOTY2LjQyNkE0Ljc1NCA0Ljc1NCAwIDAgMSA1LjUyIDMuMjAyYTUuMDEgNS4wMSAwIDAgMSAuMTQ1LTEuMTY2LjU4My41ODMgMCAwIDAtLjc3NS0uNjYgNS45MTUgNS45MTUgMCAxIDAgOC4xNjYgNi44Mi41ODMuNTgzIDAgMCAwLS4yMS0uNjEzWm0tNS41NDEgMy45MDNhNC43NDggNC43NDggMCAwIDEtMi45NTItOC40NDF2LjE1N2E1LjkyIDUuOTIgMCAwIDAgNy4xNCA1Ljc4NyA0LjczMSA0LjczMSAwIDAgMS00LjE4OCAyLjUydi0uMDIzWlxcXCIgZmlsbD1cXFwiI0E2NkVFOVxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEwLjY2NyA5LjMzM0g1LjMzM2EuNjY3LjY2NyAwIDAgMCAwIDEuMzMzaDUuMzM0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNabTAtMi42NjdoLTRhLjY2Ny42NjcgMCAwIDAgMCAxLjMzNGg0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzRabTIuNjY2LTRoLTJWMkEuNjY3LjY2NyAwIDEgMCAxMCAydi42NjZIOC42NjdWMmEuNjY3LjY2NyAwIDEgMC0xLjMzNCAwdi42NjZINlYyYS42NjcuNjY3IDAgMCAwLTEuMzMzIDB2LjY2NmgtMkEuNjY3LjY2NyAwIDAgMCAyIDMuMzMzdjkuMzMzYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjMuMzMzYS42NjYuNjY2IDAgMCAwLS42NjctLjY2N1ptLS42NjYgMTBhLjY2Ny42NjcgMCAwIDEtLjY2Ny42NjdINGEuNjY2LjY2NiAwIDAgMS0uNjY3LS42NjdWNGgxLjMzNHYuNjY2YS42NjcuNjY3IDAgMSAwIDEuMzMzIDBWNGgxLjMzM3YuNjY2YS42NjcuNjY3IDAgMCAwIDEuMzM0IDBWNEgxMHYuNjY2YS42NjYuNjY2IDAgMSAwIDEuMzMzIDBWNGgxLjMzNHY4LjY2NlpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTkuMzM0IDUuMzMzSDEwQS42NjcuNjY3IDAgMCAwIDEwIDRoLS42NjZhLjY2Ny42NjcgMCAwIDAgMCAxLjMzM1ptMCAyLjY2N0gxMGEuNjY3LjY2NyAwIDAgMCAwLTEuMzM0aC0uNjY2YS42NjcuNjY3IDAgMCAwIDAgMS4zMzRaTTYgNS4zMzNoLjY2N2EuNjY3LjY2NyAwIDAgMCAwLTEuMzMzSDZhLjY2Ny42NjcgMCAxIDAgMCAxLjMzM1pNNiA4aC42NjdhLjY2Ny42NjcgMCAxIDAgMC0xLjMzNEg2QS42NjcuNjY3IDAgMCAwIDYgOFptOCA1LjMzM2gtLjY2NlYyYS42NjYuNjY2IDAgMCAwLS42NjctLjY2N0gzLjMzM0EuNjY3LjY2NyAwIDAgMCAyLjY2NyAydjExLjMzM0gyYS42NjYuNjY2IDAgMSAwIDAgMS4zMzNoMTJhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM1ptLTUuMzMzIDBINy4zMzR2LTIuNjY3aDEuMzMzdjIuNjY3Wm0zLjMzMyAwaC0yVjEwYS42NjcuNjY3IDAgMCAwLS42NjYtLjY2N0g2LjY2N0EuNjY3LjY2NyAwIDAgMCA2IDEwdjMuMzMzSDRWMi42NjZoOHYxMC42NjdaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk02IDYuNjY2aC42NjdhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM0g2YS42NjcuNjY3IDAgMCAwIDAgMS4zMzNaTTYgOGEuNjY3LjY2NyAwIDAgMCAwIDEuMzMzaDRBLjY2Ny42NjcgMCAwIDAgMTAgOEg2Wm03LjMzMy0yLjA0YS44OC44OCAwIDAgMC0uMDQtLjE4di0uMDZhLjcxNC43MTQgMCAwIDAtLjEyNy0uMTg3bC00LTRhLjcxMy43MTMgMCAwIDAtLjE4Ni0uMTI3LjIxMy4yMTMgMCAwIDAtLjA2IDAgLjU4Ny41ODcgMCAwIDAtLjIyLS4wNzNINC42NjdhMiAyIDAgMCAwLTIgMnY5LjMzM2EyIDIgMCAwIDAgMiAyaDYuNjY2YTIgMiAwIDAgMCAyLTJWNS45NlptLTQtMi4zNTQgMS43MjcgMS43MjdIMTBhLjY2Ny42NjcgMCAwIDEtLjY2Ny0uNjY3di0xLjA2Wk0xMiAxMi42NjZhLjY2Ny42NjcgMCAwIDEtLjY2Ny42NjdINC42NjZBLjY2Ni42NjYgMCAwIDEgNCAxMi42NjZWMy4zMzNhLjY2Ny42NjcgMCAwIDEgLjY2Ny0uNjY3SDh2MmEyIDIgMCAwIDAgMiAyaDJ2NlptLTItMkg2QS42NjcuNjY3IDAgMCAwIDYgMTJoNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzM0WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDE0IDE1XFxcIj48cGF0aCBkPVxcXCJtMTEuNzkgNi44OTYuMDU2LjQzN0gxM2EuMTY2LjE2NiAwIDAgMSAuMTE4LjI4NWwuMzUzLjM1My0uMzUzLS4zNTNhLjE2Ni4xNjYgMCAwIDEtLjExOC4wNDloLTEuMTU0bC0uMDU1LjQzN2E0LjgzMyA0LjgzMyAwIDAgMS00LjE4NyA0LjE4N2wtLjQzNy4wNTVWMTMuNWEuMTY3LjE2NyAwIDAgMS0uMDUuMTE4bC4zNTQuMzUzLS4zNTMtLjM1M2EuMTY3LjE2NyAwIDAgMS0uMjg1LS4xMTh2LTEuMTUzbC0uNDM3LS4wNTZBNC44MzMgNC44MzMgMCAwIDEgMi4yMSA4LjEwNGwtLjA1NS0uNDM3SDFhLjE2Ny4xNjcgMCAxIDEgMC0uMzM0aDEuMTUzbC4wNTYtLjQzN0E0LjgzMyA0LjgzMyAwIDAgMSA2LjM5NiAyLjcxbC40MzctLjA1NVYxLjVhLjE2Ny4xNjcgMCAwIDEgLjMzNCAwdjEuMTUzbC40MzcuMDU2YTQuODM0IDQuODM0IDAgMCAxIDQuMTg3IDQuMTg3Wm0tLjM1NyAxLjM1NC4xLS41ODNoLTEuMmEuMTY2LjE2NiAwIDEgMSAwLS4zMzRoMS4xOTlsLS4xLS41ODNBNC41IDQuNSAwIDAgMCA3Ljc1IDMuMDY3bC0uNTgzLS4xdjEuMmEuMTY3LjE2NyAwIDAgMS0uMDUuMTE4bC4zMDQuMzAzLS4zMDMtLjMwM2EuMTY3LjE2NyAwIDAgMS0uMjg1LS4xMThWMi45NjhsLS41ODMuMUE0LjUgNC41IDAgMCAwIDIuNTY3IDYuNzVsLS4xLjU4M2gxLjJhLjE2Ny4xNjcgMCAwIDEgLjExOC4yODVsLjMwMy4zMDMtLjMwNC0uMzAzYS4xNjcuMTY3IDAgMCAxLS4xMTcuMDQ5SDIuNDY4bC4xLjU4M2E0LjUgNC41IDAgMCAwIDMuNjgyIDMuNjgzbC41ODMuMXYtMS4yYS4xNjYuMTY2IDAgMSAxIC4zMzQgMHYxLjE5OWwuNTgzLS4xYTQuNSA0LjUgMCAwIDAgMy42ODMtMy42ODJabS00LjUyNi0uODg5YS4xNjcuMTY3IDAgMSAxIC4xODYuMjc4LjE2Ny4xNjcgMCAwIDEtLjE4Ni0uMjc4WlxcXCIgZmlsbD1cXFwiQ3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcIkN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEwLjY2NyA5LjMzM0g1LjMzM2EuNjY3LjY2NyAwIDAgMCAwIDEuMzMzaDUuMzM0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNabTAtMi42NjdoLTRhLjY2Ny42NjcgMCAwIDAgMCAxLjMzNGg0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzRabTIuNjY2LTRoLTJWMkEuNjY3LjY2NyAwIDEgMCAxMCAydi42NjZIOC42NjdWMmEuNjY3LjY2NyAwIDEgMC0xLjMzNCAwdi42NjZINlYyYS42NjcuNjY3IDAgMCAwLTEuMzMzIDB2LjY2NmgtMkEuNjY3LjY2NyAwIDAgMCAyIDMuMzMzdjkuMzMzYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjMuMzMzYS42NjYuNjY2IDAgMCAwLS42NjctLjY2N1ptLS42NjYgMTBhLjY2Ny42NjcgMCAwIDEtLjY2Ny42NjdINGEuNjY2LjY2NiAwIDAgMS0uNjY3LS42NjdWNGgxLjMzNHYuNjY2YS42NjcuNjY3IDAgMSAwIDEuMzMzIDBWNGgxLjMzM3YuNjY2YS42NjcuNjY3IDAgMCAwIDEuMzM0IDBWNEgxMHYuNjY2YS42NjYuNjY2IDAgMSAwIDEuMzMzIDBWNGgxLjMzNHY4LjY2NlpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTggNGEuNjY3LjY2NyAwIDAgMC0uNjY3LjY2NnY2LjY2N2EuNjY3LjY2NyAwIDEgMCAxLjMzNCAwVjQuNjY2QS42NjcuNjY3IDAgMCAwIDggNFpNNC42NjcgOEEuNjY3LjY2NyAwIDAgMCA0IDguNjY2djIuNjY3YS42NjcuNjY3IDAgMSAwIDEuMzMzIDBWOC42NjZBLjY2Ny42NjcgMCAwIDAgNC42NjcgOFptNi42NjctMS4zMzRhLjY2Ny42NjcgMCAwIDAtLjY2Ny42Njd2NGEuNjY3LjY2NyAwIDAgMCAxLjMzMyAwdi00YS42NjcuNjY3IDAgMCAwLS42NjYtLjY2N1ptMS4zMzMtNS4zMzNIMy4zMzNhMiAyIDAgMCAwLTIgMnY5LjMzM2EyIDIgMCAwIDAgMiAyaDkuMzM0YTIgMiAwIDAgMCAyLTJWMy4zMzNhMiAyIDAgMCAwLTItMlptLjY2NyAxMS4zMzNhLjY2Ni42NjYgMCAwIDEtLjY2Ny42NjdIMy4zMzNhLjY2Ni42NjYgMCAwIDEtLjY2Ni0uNjY3VjMuMzMzYS42NjcuNjY3IDAgMCAxIC42NjctLjY2N2g5LjMzM2EuNjY3LjY2NyAwIDAgMSAuNjY3LjY2N3Y5LjMzM1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTggNGEuNjY3LjY2NyAwIDAgMC0uNjY3LjY2NnY2LjY2N2EuNjY3LjY2NyAwIDEgMCAxLjMzNCAwVjQuNjY2QS42NjcuNjY3IDAgMCAwIDggNFpNNC42NjcgOEEuNjY3LjY2NyAwIDAgMCA0IDguNjY2djIuNjY3YS42NjcuNjY3IDAgMSAwIDEuMzMzIDBWOC42NjZBLjY2Ny42NjcgMCAwIDAgNC42NjcgOFptNi42NjctMS4zMzRhLjY2Ny42NjcgMCAwIDAtLjY2Ny42Njd2NGEuNjY3LjY2NyAwIDAgMCAxLjMzMyAwdi00YS42NjcuNjY3IDAgMCAwLS42NjYtLjY2N1ptMS4zMzMtNS4zMzNIMy4zMzNhMiAyIDAgMCAwLTIgMnY5LjMzM2EyIDIgMCAwIDAgMiAyaDkuMzM0YTIgMiAwIDAgMCAyLTJWMy4zMzNhMiAyIDAgMCAwLTItMlptLjY2NyAxMS4zMzNhLjY2Ni42NjYgMCAwIDEtLjY2Ny42NjdIMy4zMzNhLjY2Ni42NjYgMCAwIDEtLjY2Ni0uNjY3VjMuMzMzYS42NjcuNjY3IDAgMCAxIC42NjctLjY2N2g5LjMzM2EuNjY3LjY2NyAwIDAgMSAuNjY3LjY2N3Y5LjMzM1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTggNGEuNjY3LjY2NyAwIDAgMC0uNjY3LjY2NnY2LjY2N2EuNjY3LjY2NyAwIDEgMCAxLjMzNCAwVjQuNjY2QS42NjcuNjY3IDAgMCAwIDggNFpNNC42NjcgOEEuNjY3LjY2NyAwIDAgMCA0IDguNjY2djIuNjY3YS42NjcuNjY3IDAgMSAwIDEuMzMzIDBWOC42NjZBLjY2Ny42NjcgMCAwIDAgNC42NjcgOFptNi42NjctMS4zMzRhLjY2Ny42NjcgMCAwIDAtLjY2Ny42Njd2NGEuNjY3LjY2NyAwIDAgMCAxLjMzMyAwdi00YS42NjcuNjY3IDAgMCAwLS42NjYtLjY2N1ptMS4zMzMtNS4zMzNIMy4zMzNhMiAyIDAgMCAwLTIgMnY5LjMzM2EyIDIgMCAwIDAgMiAyaDkuMzM0YTIgMiAwIDAgMCAyLTJWMy4zMzNhMiAyIDAgMCAwLTItMlptLjY2NyAxMS4zMzNhLjY2Ni42NjYgMCAwIDEtLjY2Ny42NjdIMy4zMzNhLjY2Ni42NjYgMCAwIDEtLjY2Ni0uNjY3VjMuMzMzYS42NjcuNjY3IDAgMCAxIC42NjctLjY2N2g5LjMzM2EuNjY3LjY2NyAwIDAgMSAuNjY3LjY2N3Y5LjMzM1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTQuNjY3IDEwLjY2NmExIDEgMCAwIDAgMS0xIC41MTQuNTE0IDAgMCAwIDAtLjFsMS44Ni0xLjg2aC4zMDZMOC45MDcgOC43OHYuMDUzYTEgMSAwIDEgMCAyIDBWOC43OGwyLjQyNi0yLjQ0N2ExIDEgMCAxIDAtMS0xIC41MjIuNTIyIDAgMCAwIDAgLjFMOS45MjcgNy44NEg5LjgyTDguNjY3IDYuNjY2YTEgMSAwIDAgMC0yIDBsLTIgMmExIDEgMCAwIDAgMCAyWm05IDIuNjY3SDIuMzMzVjJBLjY2Ny42NjcgMCAxIDAgMSAydjEyYS42NjcuNjY3IDAgMCAwIC42NjcuNjY2aDEyYS42NjcuNjY3IDAgMCAwIDAtMS4zMzNaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk02IDYuNjY2aC42NjdhLjY2Ny42NjcgMCAwIDAgMC0xLjMzM0g2YS42NjcuNjY3IDAgMCAwIDAgMS4zMzNaTTYgOGEuNjY3LjY2NyAwIDAgMCAwIDEuMzMzaDRBLjY2Ny42NjcgMCAwIDAgMTAgOEg2Wm03LjMzMy0yLjA0YS44OC44OCAwIDAgMC0uMDQtLjE4di0uMDZhLjcxNC43MTQgMCAwIDAtLjEyNy0uMTg3bC00LTRhLjcxMy43MTMgMCAwIDAtLjE4Ni0uMTI3LjIxMy4yMTMgMCAwIDAtLjA2IDAgLjU4Ny41ODcgMCAwIDAtLjIyLS4wNzNINC42NjdhMiAyIDAgMCAwLTIgMnY5LjMzM2EyIDIgMCAwIDAgMiAyaDYuNjY2YTIgMiAwIDAgMCAyLTJWNS45NlptLTQtMi4zNTQgMS43MjcgMS43MjdIMTBhLjY2Ny42NjcgMCAwIDEtLjY2Ny0uNjY3di0xLjA2Wk0xMiAxMi42NjZhLjY2Ny42NjcgMCAwIDEtLjY2Ny42NjdINC42NjZBLjY2Ni42NjYgMCAwIDEgNCAxMi42NjZWMy4zMzNhLjY2Ny42NjcgMCAwIDEgLjY2Ny0uNjY3SDh2MmEyIDIgMCAwIDAgMiAyaDJ2NlptLTItMkg2QS42NjcuNjY3IDAgMCAwIDYgMTJoNGEuNjY3LjY2NyAwIDAgMCAwLTEuMzM0WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDI0IDI0XFxcIj48cGF0aCBkPVxcXCJNMTIgMTRhMSAxIDAgMSAwLTEtMSAxIDEgMCAwIDAgMSAxWm01IDBhMSAxIDAgMSAwLTEtMSAxIDEgMCAwIDAgMSAxWm0tNSA0YTEgMSAwIDEgMC0xLTEgMSAxIDAgMCAwIDEgMVptNSAwYTEgMSAwIDEgMC0xLTEgMSAxIDAgMCAwIDEgMVpNNyAxNGExIDEgMCAxIDAtMS0xIDEgMSAwIDAgMCAxIDFaTTE5IDRoLTFWM2ExIDEgMCAwIDAtMiAwdjFIOFYzYTEgMSAwIDAgMC0yIDB2MUg1YTMgMyAwIDAgMC0zIDN2MTJhMyAzIDAgMCAwIDMgM2gxNGEzIDMgMCAwIDAgMy0zVjdhMyAzIDAgMCAwLTMtM1ptMSAxNWExIDEgMCAwIDEtMSAxSDVhMSAxIDAgMCAxLTEtMXYtOWgxNlptMC0xMUg0VjdhMSAxIDAgMCAxIDEtMWgxNGExIDEgMCAwIDEgMSAxWk03IDE4YTEgMSAwIDEgMC0xLTEgMSAxIDAgMCAwIDEgMVpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxMiAxNVxcXCI+PHBhdGggZD1cXFwibTYuMTQgMTAuNzQyLjAyLjA1OC4wMDcuMDF2LjAzNmEuMDYuMDYgMCAwIDEtLjAwNi4wMjdsLS4wMS4wMjItLjAwOC4wMjFhLjEuMSAwIDAgMS0uMDYuMDZsLS4wMjIuMDA4LS4wMjEuMDFhLjA2LjA2IDAgMCAxLS4wMjcuMDA2aC0uMDA2YS4xNjYuMTY2IDAgMCAxLS4xMDYtLjA0LjI2Ni4yNjYgMCAwIDEtLjA0LS4wNjZsLS4wMDQtLjAxLS4wMDUtLjAxYS4wNi4wNiAwIDAgMS0uMDA1LS4wMjh2LS4wMjNsLS4wMDEtLjAyMy0uMDAxLS4wMTguMDAzLS4wMDcuMDEyLS4wMzNhLjU3Ni41NzYgMCAwIDEgLjAyMy0uMDMuMTY2LjE2NiAwIDAgMSAuMDQ0LS4wMjZsLjAxNC0uMDA1YS4xNjcuMTY3IDAgMCAxIC4wOTYtLjAxbC4wOTQtLjQ5MS0uMDk0LjQ5YS4xNjYuMTY2IDAgMCAxIC4wNzcuMDM4Yy4wMDkuMDEuMDE4LjAyMi4wMjYuMDM0Wm0uNjkzLTkuMzM1IDMuOTYzIDMuOTYzLjAyMy4wN2EuMzcuMzcgMCAwIDEgLjAxNC4wNTR2Ni42NzNhMS41IDEuNSAwIDAgMS0xLjUgMS41SDIuNjY3YTEuNSAxLjUgMCAwIDEtMS4wNjEtLjQ0bC0uMzQ4LjM0OC4zNDgtLjM0OGExLjUgMS41IDAgMCAxLS40NC0xLjA2VjIuODMzYTEuNSAxLjUgMCAwIDEgMS41LTEuNWgzLjk5bC4wMTUuMDA3LjExNi4wNjdoLjA0NlptLjg1NCAxLjM0Nkw2LjgzMyAxLjl2Mi4yNjdBMS4xNjcgMS4xNjcgMCAwIDAgOCA1LjMzM2gyLjI2N2wtLjg1My0uODUzLTEuNzI3LTEuNzI3Wk02LjUgMi4xNjd2LS41SDIuNjY3QTEuMTY3IDEuMTY3IDAgMCAwIDEuNSAyLjgzM3Y5LjMzNGExLjE2NyAxLjE2NyAwIDAgMCAxLjE2NyAxLjE2Nmg2LjY2NmExLjE2NyAxLjE2NyAwIDAgMCAxLjE2Ny0xLjE2NnYtNi41SDhhMS41IDEuNSAwIDAgMS0xLjUtMS41di0yWm0tLjYxOCA1LjIxNWEuMTY3LjE2NyAwIDAgMSAuMjg1LjExOHYxLjMzM2EuMTY3LjE2NyAwIDAgMS0uMzM0IDBWNy41YzAtLjA0NC4wMTgtLjA4Ny4wNS0uMTE4WlxcXCIgZmlsbD1cXFwiQ3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcIkN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAxMiAxNVxcXCI+PHBhdGggZD1cXFwibTYuMTQgMTAuNzQyLjAyLjA1OC4wMDcuMDF2LjAzNmEuMDYuMDYgMCAwIDEtLjAwNi4wMjdsLS4wMS4wMjItLjAwOC4wMjFhLjEuMSAwIDAgMS0uMDYuMDZsLS4wMjIuMDA4LS4wMjEuMDFhLjA2LjA2IDAgMCAxLS4wMjcuMDA2aC0uMDA2YS4xNjYuMTY2IDAgMCAxLS4xMDYtLjA0LjI2Ni4yNjYgMCAwIDEtLjA0LS4wNjZsLS4wMDQtLjAxLS4wMDUtLjAxYS4wNi4wNiAwIDAgMS0uMDA1LS4wMjh2LS4wMjNsLS4wMDEtLjAyMy0uMDAxLS4wMTguMDAzLS4wMDcuMDEyLS4wMzNhLjU3Ni41NzYgMCAwIDEgLjAyMy0uMDMuMTY2LjE2NiAwIDAgMSAuMDQ0LS4wMjZsLjAxNC0uMDA1YS4xNjcuMTY3IDAgMCAxIC4wOTYtLjAxbC4wOTQtLjQ5MS0uMDk0LjQ5YS4xNjYuMTY2IDAgMCAxIC4wNzcuMDM4Yy4wMDkuMDEuMDE4LjAyMi4wMjYuMDM0Wm0uNjkzLTkuMzM1IDMuOTYzIDMuOTYzLjAyMy4wN2EuMzcuMzcgMCAwIDEgLjAxNC4wNTR2Ni42NzNhMS41IDEuNSAwIDAgMS0xLjUgMS41SDIuNjY3YTEuNSAxLjUgMCAwIDEtMS4wNjEtLjQ0bC0uMzQ4LjM0OC4zNDgtLjM0OGExLjUgMS41IDAgMCAxLS40NC0xLjA2VjIuODMzYTEuNSAxLjUgMCAwIDEgMS41LTEuNWgzLjk5bC4wMTUuMDA3LjExNi4wNjdoLjA0NlptLjg1NCAxLjM0Nkw2LjgzMyAxLjl2Mi4yNjdBMS4xNjcgMS4xNjcgMCAwIDAgOCA1LjMzM2gyLjI2N2wtLjg1My0uODUzLTEuNzI3LTEuNzI3Wk02LjUgMi4xNjd2LS41SDIuNjY3QTEuMTY3IDEuMTY3IDAgMCAwIDEuNSAyLjgzM3Y5LjMzNGExLjE2NyAxLjE2NyAwIDAgMCAxLjE2NyAxLjE2Nmg2LjY2NmExLjE2NyAxLjE2NyAwIDAgMCAxLjE2Ny0xLjE2NnYtNi41SDhhMS41IDEuNSAwIDAgMS0xLjUtMS41di0yWm0tLjYxOCA1LjIxNWEuMTY3LjE2NyAwIDAgMSAuMjg1LjExOHYxLjMzM2EuMTY3LjE2NyAwIDAgMS0uMzM0IDBWNy41YzAtLjA0NC4wMTgtLjA4Ny4wNS0uMTE4WlxcXCIgZmlsbD1cXFwiQ3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcIkN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEwLjY2NyA5LjMzM0g1LjMzM2EuNjY3LjY2NyAwIDAgMCAwIDEuMzMzaDUuMzM0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNabTAtMi42NjdoLTRhLjY2Ny42NjcgMCAwIDAgMCAxLjMzNGg0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzRabTIuNjY2LTRoLTJWMkEuNjY3LjY2NyAwIDEgMCAxMCAydi42NjZIOC42NjdWMmEuNjY3LjY2NyAwIDEgMC0xLjMzNCAwdi42NjZINlYyYS42NjcuNjY3IDAgMCAwLTEuMzMzIDB2LjY2NmgtMkEuNjY3LjY2NyAwIDAgMCAyIDMuMzMzdjkuMzMzYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjMuMzMzYS42NjYuNjY2IDAgMCAwLS42NjctLjY2N1ptLS42NjYgMTBhLjY2Ny42NjcgMCAwIDEtLjY2Ny42NjdINGEuNjY2LjY2NiAwIDAgMS0uNjY3LS42NjdWNGgxLjMzNHYuNjY2YS42NjcuNjY3IDAgMSAwIDEuMzMzIDBWNGgxLjMzM3YuNjY2YS42NjcuNjY3IDAgMCAwIDEuMzM0IDBWNEgxMHYuNjY2YS42NjYuNjY2IDAgMSAwIDEuMzMzIDBWNGgxLjMzNHY4LjY2NlpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEwLjY2NyA5LjMzM0g1LjMzM2EuNjY3LjY2NyAwIDAgMCAwIDEuMzMzaDUuMzM0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzNabTAtMi42NjdoLTRhLjY2Ny42NjcgMCAwIDAgMCAxLjMzNGg0YS42NjcuNjY3IDAgMCAwIDAtMS4zMzRabTIuNjY2LTRoLTJWMkEuNjY3LjY2NyAwIDEgMCAxMCAydi42NjZIOC42NjdWMmEuNjY3LjY2NyAwIDEgMC0xLjMzNCAwdi42NjZINlYyYS42NjcuNjY3IDAgMCAwLTEuMzMzIDB2LjY2NmgtMkEuNjY3LjY2NyAwIDAgMCAyIDMuMzMzdjkuMzMzYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjMuMzMzYS42NjYuNjY2IDAgMCAwLS42NjctLjY2N1ptLS42NjYgMTBhLjY2Ny42NjcgMCAwIDEtLjY2Ny42NjdINGEuNjY2LjY2NiAwIDAgMS0uNjY3LS42NjdWNGgxLjMzNHYuNjY2YS42NjcuNjY3IDAgMSAwIDEuMzMzIDBWNGgxLjMzM3YuNjY2YS42NjcuNjY3IDAgMCAwIDEuMzM0IDBWNEgxMHYuNjY2YS42NjYuNjY2IDAgMSAwIDEuMzMzIDBWNGgxLjMzNHY4LjY2NlpcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTEyLjk2IDguNjY2Yy0uMTQ3IDAtLjMtLjA0Ni0uNDQ3LS4wOGE2LjI5IDYuMjkgMCAwIDEtLjg3My0uMjYgMS4zMzMgMS4zMzMgMCAwIDAtMS42NTMuNjY3bC0uMTQ3LjNBOC4xMiA4LjEyIDAgMCAxIDguMDY3IDcuOTZhOC4xMiA4LjEyIDAgMCAxLTEuMzM0LTEuNzc0TDcuMDEzIDZhMS4zMzMgMS4zMzMgMCAwIDAgLjY2Ny0xLjY1NCA2Ljg4NyA2Ljg4NyAwIDAgMS0uMjYtLjg3M2MtLjAzMy0uMTQ3LS4wNi0uMy0uMDgtLjQ1M2EyIDIgMCAwIDAtMi0xLjY2aC0yYTIgMiAwIDAgMC0yIDIuMjczIDEyLjY2NyAxMi42NjcgMCAwIDAgMTEuMDEzIDEwLjk3M2guMjU0YTIgMiAwIDAgMCAxLjgyNy0xLjE4NSAyIDIgMCAwIDAgLjE3My0uODIxdi0yYTIgMiAwIDAgMC0xLjY0Ny0xLjkzNFptLjMzMyA0YS42NjYuNjY2IDAgMCAxLS40ODIuNjQxLjcwNy43MDcgMCAwIDEtLjI5LjAyNkExMS4zMzMgMTEuMzMzIDAgMCAxIDIuNzEyIDMuNDhhLjcyNy43MjcgMCAwIDEgLjE2Ny0uNTQ3LjY2Ny42NjcgMCAwIDEgLjUtLjIyN2gyYS42NjcuNjY3IDAgMCAxIC42NjcuNTI3IDcuNDE0IDcuNDE0IDAgMCAwIC40MDcgMS41NzNsLS45MzQuNDM0YS42NjcuNjY3IDAgMCAwLS4zMjcuODg2IDkuNjYgOS42NiAwIDAgMCA0LjY2NyA0LjY2Ny42NjYuNjY2IDAgMCAwIC41MDcgMCAuNjY1LjY2NSAwIDAgMCAuMzgtLjM0N2wuNDEzLS45MzNjLjM0NS4xMjMuNjk3LjIyNiAxLjA1My4zMDcuMTc4LjA0LjM1OC4wNzMuNTQuMWEuNjY3LjY2NyAwIDAgMSAuNTI3LjY2NmwuMDEzIDIuMDhaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTUgMTVcXFwiPjxwYXRoIGQ9XFxcIk0xMC45MTcgOS42NjZoLS42NTlsLS4yMzMtLjIyNWE1LjQxNyA1LjQxNyAwIDAgMCAxLjIzMy00LjQ1QzEwLjg2NyAyLjY3NSA4LjkzMy44MjUgNi42LjU0MUE1LjQyIDUuNDIgMCAwIDAgLjU0MiA2LjZjLjI4MyAyLjMzMyAyLjEzMyA0LjI2NiA0LjQ1IDQuNjU4YTUuNDE3IDUuNDE3IDAgMCAwIDQuNDUtMS4yMzNsLjIyNS4yMzN2LjY1OGwzLjU0MSAzLjU0MmEuODguODggMCAwIDAgMS4yNDIgMCAuODguODggMCAwIDAgMC0xLjI0MmwtMy41MzMtMy41NVptLTUgMGEzLjc0NSAzLjc0NSAwIDAgMS0zLjc1LTMuNzUgMy43NDUgMy43NDUgMCAwIDEgMy43NS0zLjc1IDMuNzQ1IDMuNzQ1IDAgMCAxIDMuNzUgMy43NSAzLjc0NSAzLjc0NSAwIDAgMS0zLjc1IDMuNzVaXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiPjxtYXNrIGlkPVxcXCJwZXJpb2QtaWNvbl9zdmdfX2FcXFwiIGZpbGw9XFxcIiNmZmZcXFwiPjxwYXRoIGQ9XFxcIk04IDkuMzMzQS42NjcuNjY3IDAgMSAwIDggOGEuNjY3LjY2NyAwIDAgMCAwIDEuMzMzWm0zLjMzMyAwYS42NjcuNjY3IDAgMSAwIDAtMS4zMzQuNjY3LjY2NyAwIDAgMCAwIDEuMzM0Wk04IDEyYS42NjcuNjY3IDAgMSAwIDAtMS4zMzRBLjY2Ny42NjcgMCAwIDAgOCAxMlptMy4zMzMgMGEuNjY3LjY2NyAwIDEgMCAwLTEuMzM1LjY2Ny42NjcgMCAwIDAgMCAxLjMzNVpNNC42NjcgOS4zMzNhLjY2Ny42NjcgMCAxIDAgMC0xLjMzMy42NjcuNjY3IDAgMCAwIDAgMS4zMzNabTgtNi42NjZIMTJWMmEuNjY3LjY2NyAwIDEgMC0xLjMzMyAwdi42NjdINS4zMzNWMkEuNjY3LjY2NyAwIDEgMCA0IDJ2LjY2N2gtLjY2N2EyIDIgMCAwIDAtMiAydjhhMiAyIDAgMCAwIDIgMmg5LjMzNGEyIDIgMCAwIDAgMi0ydi04YTIgMiAwIDAgMC0yLTJabS42NjYgMTBhLjY2Ny42NjcgMCAwIDEtLjY2Ni42NjZIMy4zMzNhLjY2Ny42NjcgMCAwIDEtLjY2Ni0uNjY2di02aDEwLjY2NnY2Wm0wLTcuMzM0SDIuNjY3di0uNjY2QS42NjcuNjY3IDAgMCAxIDMuMzMzIDRoOS4zMzRhLjY2Ny42NjcgMCAwIDEgLjY2Ni42Njd2LjY2NlpNNC42NjcgMTJhLjY2Ny42NjcgMCAxIDAgMC0xLjMzNC42NjcuNjY3IDAgMCAwIDAgMS4zMzRaXFxcIi8+PC9tYXNrPjxwYXRoIGZpbGw9XFxcIiNmZmZcXFwiIHN0cm9rZT1cXFwiIzE1NTM2NlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIxLjMzM1xcXCIgZD1cXFwiTTggOS4zMzNBLjY2Ny42NjcgMCAxIDAgOCA4YS42NjcuNjY3IDAgMCAwIDAgMS4zMzNabTMuMzMzIDBhLjY2Ny42NjcgMCAxIDAgMC0xLjMzNC42NjcuNjY3IDAgMCAwIDAgMS4zMzRaTTggMTJhLjY2Ny42NjcgMCAxIDAgMC0xLjMzNEEuNjY3LjY2NyAwIDAgMCA4IDEyWm0zLjMzMyAwYS42NjcuNjY3IDAgMSAwIDAtMS4zMzUuNjY3LjY2NyAwIDAgMCAwIDEuMzM1Wk00LjY2NyA5LjMzM2EuNjY3LjY2NyAwIDEgMCAwLTEuMzMzLjY2Ny42NjcgMCAwIDAgMCAxLjMzM1ptOC02LjY2NkgxMlYyYS42NjcuNjY3IDAgMSAwLTEuMzMzIDB2LjY2N0g1LjMzM1YyQS42NjcuNjY3IDAgMSAwIDQgMnYuNjY3aC0uNjY3YTIgMiAwIDAgMC0yIDJ2OGEyIDIgMCAwIDAgMiAyaDkuMzM0YTIgMiAwIDAgMCAyLTJ2LThhMiAyIDAgMCAwLTItMlptLjY2NiAxMGEuNjY3LjY2NyAwIDAgMS0uNjY2LjY2NkgzLjMzM2EuNjY3LjY2NyAwIDAgMS0uNjY2LS42NjZ2LTZoMTAuNjY2djZabTAtNy4zMzRIMi42Njd2LS42NjZBLjY2Ny42NjcgMCAwIDEgMy4zMzMgNGg5LjMzNGEuNjY3LjY2NyAwIDAgMSAuNjY2LjY2N3YuNjY2Wk00LjY2NyAxMmEuNjY3LjY2NyAwIDEgMCAwLTEuMzM0LjY2Ny42NjcgMCAwIDAgMCAxLjMzNFpcXFwiIG1hc2s9XFxcInVybCgjcGVyaW9kLWljb25fc3ZnX19hKVxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCI+PHBhdGggZmlsbD1cXFwiI2ZmZlxcXCIgc3Ryb2tlPVxcXCIjZmZmXFxcIiBzdHJva2Utd2lkdGg9XFxcIi42NjdcXFwiIGQ9XFxcIk04LjMzMyA3LjMzM3YuMzM0aDIuMzM0YS4zMzMuMzMzIDAgMSAxIDAgLjY2Nkg4LjMzM3YyLjMzNGEuMzMzLjMzMyAwIDEgMS0uNjY2IDBWOC4zMzNINS4zMzNhLjMzMy4zMzMgMCAwIDEgMC0uNjY2aDIuMzM0VjUuMzMzYS4zMzMuMzMzIDAgMCAxIC42NjYgMHYyWk00LjQ4MSAyLjczNGE2LjMzMyA2LjMzMyAwIDEgMSA3LjAzOCAxMC41MzJBNi4zMzMgNi4zMzMgMCAwIDEgNC40OCAyLjczNFptLjM3IDkuOTc4YTUuNjY2IDUuNjY2IDAgMSAwIDYuMjk3LTkuNDIzIDUuNjY2IDUuNjY2IDAgMCAwLTYuMjk2IDkuNDIzWlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCI+PHBhdGggZmlsbD1cXFwiI2ZmZlxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIGQ9XFxcIk04LjE2NyA3LjMzNHYuNWg0LjVhLjE2Ny4xNjcgMCAxIDEgMCAuMzMzaC00LjV2NC41YS4xNjYuMTY2IDAgMSAxLS4zMzQgMHYtNC41aC00LjVhLjE2Ny4xNjcgMCAwIDEgMC0uMzMzaDQuNXYtNC41YS4xNjcuMTY3IDAgMSAxIC4zMzQgMHY0WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNyAxNlxcXCI+PHBhdGggZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2U9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIiBkPVxcXCJNOC4xNjcgMy42di0uODA1bC0uNTcuNTY5LS44NjYuODY3YS4zMTIuMzEyIDAgMCAxLS40NjIgMCAuMzEyLjMxMiAwIDAgMSAwLS40NjJsMi0yLS4yMzQtLjIzNS4yMzQuMjM1YS4zMTIuMzEyIDAgMCAxIC40NjIgMGwuMjMzLS4yMzQtLjIzMy4yMzQgMiAyYS4zMTIuMzEyIDAgMCAxIDAgLjQ2Mi4zNjguMzY4IDAgMCAxLS4xMDguMDguMjkyLjI5MiAwIDAgMS0uMTIzLjAyMi4yOTIuMjkyIDAgMCAxLS4xMjMtLjAyMS4zNjguMzY4IDAgMCAxLS4xMDgtLjA4MWwtLjg2Ny0uODY3LS41NjktLjU3djguNTM5YzAgLjEyNC0uMDQuMjAyLS4wODUuMjQ4LS4wNDYuMDQ1LS4xMjQuMDg1LS4yNDguMDg1cy0uMjAyLS4wNC0uMjQ4LS4wODVjLS4wNDUtLjA0Ni0uMDg1LS4xMjQtLjA4NS0uMjQ4VjMuNlptMyAyLjczM0gxMi41Yy45NSAwIDEuNjY3LjcxNyAxLjY2NyAxLjY2N3Y0LjY2NmMwIC45NS0uNzE4IDEuNjY3LTEuNjY3IDEuNjY3aC04Yy0uOTUgMC0xLjY2Ny0uNzE3LTEuNjY3LTEuNjY3VjhjMC0uOTUuNzE4LTEuNjY3IDEuNjY3LTEuNjY3aDEuMzMzYy4xMjUgMCAuMjAyLjA0LjI0OC4wODYuMDQ2LjA0NS4wODYuMTIzLjA4Ni4yNDcgMCAuMTI1LS4wNC4yMDItLjA4Ni4yNDgtLjA0Ni4wNDYtLjEyMy4wODYtLjI0OC4wODZINC41YTEgMSAwIDAgMC0uNzE5LjI4QTEgMSAwIDAgMCAzLjUgOHY0LjY2NmExIDEgMCAwIDAgLjI4MS43MiAxIDEgMCAwIDAgLjcxOS4yOGg4YTEgMSAwIDAgMCAuNzE5LS4yOCAxIDEgMCAwIDAgLjI4MS0uNzJWOGExIDEgMCAwIDAtLjI4MS0uNzJBMSAxIDAgMCAwIDEyLjUgN2gtMS4zMzNjLS4xMjUgMC0uMjAyLS4wNC0uMjQ4LS4wODYtLjA0Ni0uMDQ2LS4wODYtLjEyMy0uMDg2LS4yNDggMC0uMTI0LjA0LS4yMDIuMDg2LS4yNDcuMDQ2LS4wNDYuMTIzLS4wODYuMjQ4LS4wODZaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDE2IDIwXFxcIj48cGF0aCBkPVxcXCJNMTIuNjY3IDd2LjMzM0gxM0EyLjY2NyAyLjY2NyAwIDAgMSAxNS42NjcgMTB2N0EyLjY2NyAyLjY2NyAwIDAgMSAxMyAxOS42NjdIM0EyLjY2NyAyLjY2NyAwIDAgMSAuMzMzIDE3di03QTIuNjY3IDIuNjY3IDAgMCAxIDMgNy4zMzNoLjMzM1Y1YTQuNjY3IDQuNjY3IDAgMCAxIDkuMzM0IDB2MlpNMTEgNy4zMzNoLjMzM1Y1YTMuMzMzIDMuMzMzIDAgMCAwLTYuNjY2IDB2Mi4zMzNIMTFabTIuOTQzIDEwLjYxYy4yNS0uMjUuMzktLjU5LjM5LS45NDN2LTdBMS4zMzMgMS4zMzMgMCAwIDAgMTMgOC42NjdIM0ExLjMzMyAxLjMzMyAwIDAgMCAxLjY2NyAxMHY3QTEuMzMzIDEuMzMzIDAgMCAwIDMgMTguMzMzaDEwYy4zNTQgMCAuNjkzLS4xNC45NDMtLjM5WlxcXCIgZmlsbD1cXFwiIzE1NTM2NlxcXCIgc3Ryb2tlPVxcXCIjMTU1MzY2XFxcIiBzdHJva2Utd2lkdGg9XFxcIi42NjdcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTUgMTRcXFwiPjxwYXRoIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjY2N1xcXCIgZD1cXFwiTTcuNSA0LjY2NmExIDEgMCAwIDAtLjg2OS41bC0uMDA2LjAxMmEuMzMzLjMzMyAwIDAgMS0uMjAzLjE2NmwuMDkzLjMyLS4wOTMtLjMyYS4zMzMuMzMzIDAgMCAxLS4zNi0uMTJsLS4yNjYuMi4yNjctLjJhLjMzMy4zMzMgMCAwIDEtLjAxNS0uMzc5bC4wMDQtLjAwNi4wMDMtLjAwNkExLjY2NyAxLjY2NyAwIDAgMSA3LjUgNGExLjY2NyAxLjY2NyAwIDAgMSAuNTU0IDMuMjMzbC0uMjIuMDh2LjM1M2EuMzMzLjMzMyAwIDEgMS0uNjY2IDBWN2EuMzMzLjMzMyAwIDAgMSAuMzMzLS4zMzQgMSAxIDAgMCAwIDAtMlptMCAwVjVsLjAwMS0uMzM0Wm0tLjMxNiA0Ljg5OC4wMS0uMDIuMDA4LS4wMjNhLjE3My4xNzMgMCAwIDEgLjAyLS4wMzkgMS4yIDEuMiAwIDAgMSAuMDQ2LS4wNi4zMzMuMzMzIDAgMCAxIC4xMDQtLjA2N2wtLjEyOC0uMzA4LjEyOC4zMDhhLjMzMy4zMzMgMCAwIDEgLjM2NS4wNzMuMzMzLjMzMyAwIDAgMSAuMDk2LjIzNnYuMDE1YS4zMzMuMzMzIDAgMCAxLS4wMi4xMjZ2LjAwMWEuMjY3LjI2NyAwIDAgMS0uMDYyLjA5OGwuMjM2LjIzNi0uMjM2LS4yMzZhLjI2Ny4yNjcgMCAwIDEtLjA5OC4wNjJsLS4wMS4wMDQtLjAxMS4wMDVhLjI5My4yOTMgMCAwIDEtLjIzNyAwbC0uMDEtLjAwNS0uMDEyLS4wMDRhLjI2Ny4yNjcgMCAwIDEtLjA5Ny0uMDYybC0uMjM2LjIzNi4yMzYtLjIzNmEuMjY3LjI2NyAwIDAgMS0uMDYzLS4wOThsLS4wMDUtLjAxNC0uMDA3LS4wMTVhLjIyNy4yMjcgMCAwIDEtLjAyMS0uMTAydi0uMDMzYS41NzMuNTczIDAgMCAxLS4wMDItLjA2NC4wOTQuMDk0IDAgMCAxIC4wMDYtLjAxNFpNMy45OCAxLjczNGE2LjMzMyA2LjMzMyAwIDEgMSA3LjAzOCAxMC41MzJBNi4zMzMgNi4zMzMgMCAwIDEgMy45OCAxLjczNFptLjM3IDkuOTc3YTUuNjY2IDUuNjY2IDAgMSAwIDYuMjk3LTkuNDIyIDUuNjY2IDUuNjY2IDAgMCAwLTYuMjk2IDkuNDIyWlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNCAxNFxcXCI+PHBhdGggZmlsbD1cXFwicmVkXFxcIiBkPVxcXCJtOC40MSA3IDQuMy00LjI5YTEuMDA0IDEuMDA0IDAgMCAwLTEuNDItMS40Mkw3IDUuNTlsLTQuMjktNC4zYTEuMDA0IDEuMDA0IDAgMSAwLTEuNDIgMS40Mkw1LjU5IDdsLTQuMyA0LjI5YS45OTkuOTk5IDAgMCAwIDAgMS40MiAxIDEgMCAwIDAgMS40MiAwTDcgOC40MWw0LjI5IDQuM2ExLjAwMSAxLjAwMSAwIDAgMCAxLjYzOS0uMzI1IDEgMSAwIDAgMC0uMjItMS4wOTVMOC40MSA3WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCA2IDZcXFwiPjxjaXJjbGUgY3g9XFxcIjNcXFwiIGN5PVxcXCIzXFxcIiByPVxcXCIzXFxcIiBmaWxsPVxcXCIjRkY3MjY0XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTMuOTk5IDcuMzMzYy0uNCAwLS42NjcuMjY3LS42NjcuNjY3IDAgMS45MzMtMSAzLjY2Ni0yLjY2NyA0LjYtMi41MzMgMS40NjYtNS44LjYtNy4yNjYtMS45MzQtMS40NjctMi41MzMtLjYtNS44IDEuOTMzLTcuMjY2YTUuMzM4IDUuMzM4IDAgMCAxIDYuNTMzLjkzM2gtMS42Yy0uNCAwLS42NjYuMjY3LS42NjYuNjY3cy4yNjYuNjY2LjY2Ni42NjZoM2MuNCAwIC42NjctLjI2Ni42NjctLjY2NlYyYzAtLjQtLjI2Ny0uNjY3LS42NjctLjY2N1MxMi42IDEuNiAxMi42IDJ2MS4yYy0xLjI2Ny0xLjItMi44NjctMS44NjctNC42LTEuODY3LTMuNjY3IDAtNi42NjcgMy02LjY2NyA2LjY2NyAwIDMuNjY2IDMgNi42NjYgNi42NjcgNi42NjYgMy42NjYgMCA2LjY2Ni0zIDYuNjY2LTYuNjY2IDAtLjQtLjI2Ni0uNjY3LS42NjYtLjY2N1pcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAxOVxcXCI+PHBhdGggZmlsbD1cXFwiI2ZmZlxcXCIgc3Ryb2tlPVxcXCIjMTU1MzY2XFxcIiBzdHJva2Utd2lkdGg9XFxcIi42NjdcXFwiIGQ9XFxcIm0xMyAxNi4zMzItLjUzMy0uMzk4LS43MTMtLjUzNGEuMzMzLjMzMyAwIDAgMC0uNCAwbDEuNjQ2LjkzMlptMCAwVjUuMzMzSDN2MTAuOTk5bC41MzMtLjM5OC43MTMtLjUzNGEuMzMzLjMzMyAwIDAgMSAuNCAwbDEuMzc0IDEuMDMzLjIuMTUuMi0uMTVMNy44IDE1LjRhLjMzMy4zMzMgMCAwIDEgLjQgMGwxLjM4IDEuMDMzLjIuMTUuMi0uMTUgMS4zNzMtMS4wMzMgMS42NDcuOTMyWm0tMTAuMTMzLjkzNGEuMzM0LjMzNCAwIDAgMS0uNDg0LS4wOWwtLjI4My4xNzQuMjgzLS4xNzVhLjMzNC4zMzQgMCAwIDEtLjA1LS4xNzVWNWEuMzMzLjMzMyAwIDAgMSAuMzM0LS4zMzNoMTAuNjY2YS4zMzMuMzMzIDAgMCAxIC4zMzQuMzMzdjExLjk5OWEuMzM0LjMzNCAwIDAgMS0uMDUuMTc0bC4yODMuMTc1LS4yODMtLjE3NWEuMzMzLjMzMyAwIDAgMS0uMzE0LjE1OGwtLjAyOC4zMzIuMDI4LS4zMzJhLjMzNC4zMzQgMCAwIDEtLjE3LS4wNjVsLTEuMzgtMS4wMzMtLjItLjE1LS4yLjE1LTEuMzczIDEuMDM0YS4zMzMuMzMzIDAgMCAxLS40IDBMOC4yIDE2LjIzMmwtLjItLjE1LS4yLjE1LTEuMzggMS4wMzNhLjMzMy4zMzMgMCAwIDEtLjQgMGwtMS4zNzMtMS4wMzItLjItLjE1LS4yLjE1LTEuMzggMS4wMzJabTIuMjMtNC4wMy0uMjM1LjIzNS4yMzYtLjIzNWEuMzMzLjMzMyAwIDAgMSAwLS40NzJsLS4yMzYtLjIzNi4yMzYuMjM2YS4zMzMuMzMzIDAgMCAxIC4yMzUtLjA5N2g1LjMzNGEuMzMzLjMzMyAwIDEgMSAwIC42NjZINS4zMzNhLjMzMy4zMzMgMCAwIDEtLjIzNS0uMDk3Wk0xMC42NjggOGgtNGEuMzMzLjMzMyAwIDAgMSAwLS42NjdoNGEuMzMzLjMzMyAwIDEgMSAwIC42NjdabTAgMi42NjdINS4zMzNhLjMzMy4zMzMgMCAxIDEgMC0uNjY3aDUuMzM0YS4zMzMuMzMzIDAgMSAxIDAgLjY2N1pcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjQgMjRcXFwiPjxwYXRoIGQ9XFxcIk0zIDEyaDE4bS01LTUgNSA1LTUgNVxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZS13aWR0aD1cXFwiMlxcXCIgc3Ryb2tlLWxpbmVjYXA9XFxcInJvdW5kXFxcIiBzdHJva2UtbGluZWpvaW49XFxcInJvdW5kXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIj48cGF0aCBkPVxcXCJtMTAuMTY1IDkuNjYyLjE2My4xNjQuMjEtLjA5NmExLjcyIDEuNzIgMCAwIDEgMS44OTUuMzE0bDEuMzc2IDEuNDA5LjIzOC0uMjMzLS4yMzMuMjM4YTEuNjY1IDEuNjY1IDAgMCAxIDAgMi4zODRsLS4wMDMuMDAyYTEuNjY3IDEuNjY3IDAgMCAxLTIuMzU1IDBsLTEuNDEyLTEuNDEyYTEuNjY3IDEuNjY3IDAgMCAxLS4yOTMtMS45MmwuMTEtLjIxNi0uMTcyLS4xNzItLjU5My0uNTkzLS4yMDQtLjIwNC0uMjMxLjE3M2E0LjMzMyA0LjMzMyAwIDEgMSAuODcyLS44NzNsLS4xNzMuMjMxLjIwNS4yMDQuNi42Wm0yLjg1MyAzLjg5OGExIDEgMCAwIDAgLjU0My0uNTQyLjk5OS45OTkgMCAwIDAtLjIxOS0xLjA5NGwtMS40MTItMS40MTJhMSAxIDAgMCAwLTEuNjM3LjMyMyAxIDEgMCAwIDAgLjIxOSAxLjA5NWwxLjQxMiAxLjQxMXYuMDAxYS45OTkuOTk5IDAgMCAwIDEuMDk0LjIxOFpNNi43NTIgOS42M2EzLjY2NyAzLjY2NyAwIDEgMC0xLjQyNC03LjE5NEEzLjY2NyAzLjY2NyAwIDAgMCA2Ljc1MiA5LjYzWlxcXCIgZmlsbD1cXFwiI0E2QjVCQVxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZS13aWR0aD1cXFwiLjY2N1xcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwibTE0LjIxMiA2LjM2Ni0xLjI2LS40Mi41OTMtMS4xODZBLjY2Ny42NjcgMCAwIDAgMTMuNDIgNGwtMS40Mi0xLjQyYS42NjcuNjY3IDAgMCAwLS43NjctLjEyN2wtMS4xODcuNTkzLS40Mi0xLjI2QS42NjcuNjY3IDAgMCAwIDkgMS4zMzNoLTJhLjY2Ny42NjcgMCAwIDAtLjYzNC40NTNsLS40MiAxLjI2LTEuMTg2LS41OTNhLjY2Ny42NjcgMCAwIDAtLjc2LjEyN0wyLjU3OSA0YS42NjcuNjY3IDAgMCAwLS4xMjcuNzY2bC41OTMgMS4xODctMS4yNi40MkEuNjY3LjY2NyAwIDAgMCAxLjMzMiA3djJhLjY2Ny42NjcgMCAwIDAgLjQ1My42MzNsMS4yNi40Mi0uNTkzIDEuMTg3YS42NjcuNjY3IDAgMCAwIC4xMjcuNzZsMS40MiAxLjQyYS42NjcuNjY3IDAgMCAwIC43NjYuMTI2bDEuMTg3LS41OTMuNDIgMS4yNmEuNjY3LjY2NyAwIDAgMCAuNjMzLjQ1M2gyYS42NjcuNjY3IDAgMCAwIC42MzQtLjQ1M2wuNDItMS4yNiAxLjE4Ni41OTNBLjY2Ni42NjYgMCAwIDAgMTIgMTMuNDJsMS40Mi0xLjQyYS42NjcuNjY3IDAgMCAwIC4xMjYtLjc2N2wtLjU5My0xLjE4NyAxLjI2LS40MkEuNjY3LjY2NyAwIDAgMCAxNC42NjUgOVY3YS42NjcuNjY3IDAgMCAwLS40NTMtLjYzNFptLS44OCAyLjE1NC0uOC4yNjZhMS4zMzQgMS4zMzQgMCAwIDAtLjc3MyAxLjg4bC4zOC43Ni0uNzM0LjczNC0uNzQtLjRhMS4zMzUgMS4zMzUgMCAwIDAtMS44Ni43NzNsLS4yNjYuOGgtMS4wNmwtLjI2Ny0uOGExLjMzMyAxLjMzMyAwIDAgMC0xLjg4LS43NzNsLS43Ni4zOC0uNzMzLS43MzQuNC0uNzRhMS4zMzMgMS4zMzMgMCAwIDAtLjc3NC0xLjg4bC0uOC0uMjY2VjcuNDhsLjgtLjI2N2ExLjMzMyAxLjMzMyAwIDAgMCAuNzc0LTEuODhsLS4zOC0uNzQuNzMzLS43MzMuNzQuMzhhMS4zMzMgMS4zMzMgMCAwIDAgMS44OC0uNzc0bC4yNjctLjhoMS4wNGwuMjY2LjhhMS4zMzMgMS4zMzMgMCAwIDAgMS44OC43NzRsLjc2LS4zOC43MzQuNzMzLS40Ljc0YTEuMzMzIDEuMzMzIDAgMCAwIC43NzMgMS44NmwuOC4yNjd2MS4wNlpNNy45OTkgNS4zMzNhMi42NjcgMi42NjcgMCAxIDAgMCA1LjMzMyAyLjY2NyAyLjY2NyAwIDAgMCAwLTUuMzMzWm0wIDRhMS4zMzMgMS4zMzMgMCAxIDEgMC0yLjY2NyAxLjMzMyAxLjMzMyAwIDAgMSAwIDIuNjY3WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxOCAxOFxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTQuNzIzIDIuNzM4YS43NS43NSAwIDAgMC0uNjMtLjE1IDYgNiAwIDAgMS00LjY2NS0uOTUzLjc1Ljc1IDAgMCAwLS44NTYgMCA2IDYgMCAwIDEtNC42NjQuOTUzLjc1Ljc1IDAgMCAwLS45MDguNzM1VjguOTFhNi43NSA2Ljc1IDAgMCAwIDIuODI3IDUuNDk4bDIuNzM4IDEuOTVhLjc1Ljc1IDAgMCAwIC44NyAwbDIuNzM3LTEuOTVBNi43NSA2Ljc1IDAgMCAwIDE1IDguOTFWMy4zMjNhLjc0OS43NDkgMCAwIDAtLjI3Ny0uNTg1Wk0xMy41IDguOTFhNS4yNDkgNS4yNDkgMCAwIDEtMi4xOTcgNC4yNzVMOSAxNC44MjhsLTIuMzAzLTEuNjQzQTUuMjUgNS4yNSAwIDAgMSA0LjUgOC45MVY0LjE4NUE3LjUgNy41IDAgMCAwIDkgMy4xNDNhNy41IDcuNSAwIDAgMCA0LjUgMS4wNDJWOC45MVptLTMuMzQ1LTEuNzE3TDguMTM3IDkuMjE4bC0uNjY3LS42NzVhLjc1My43NTMgMCAxIDAtMS4wNjUgMS4wNjVsMS4yIDEuMmEuNzUuNzUgMCAwIDAgMS4wNjUgMGwyLjU4LTIuNTU4YS43NTMuNzUzIDAgMCAwLTEuMDY1LTEuMDY1bC0uMDMuMDA4WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTQuMjczIDUuNzY3di0uMDRhNi42NjcgNi42NjcgMCAwIDAtMTIuNTItLjA0LjU2Ny41NjcgMCAwIDAtLjA1My4xNiA2LjY2NyA2LjY2NyAwIDEgMCAxMi41NzMtLjA4Wk04IDIuNjY3YTUuMzMzIDUuMzMzIDAgMCAxIDQuNjEzIDIuNjY2aC0uOGEyIDIgMCAwIDAtMy4wOC4xNDdBMi4xMTMgMi4xMTMgMCAwIDAgOCA1LjMzM2MtLjI1MS4wMDUtLjUuMDU1LS43MzMuMTQ3YTIgMiAwIDAgMC0zLjA4LS4xNDdoLS44QTUuMzMzIDUuMzMzIDAgMCAxIDggMi42NjdabTMgNGEuNjY3LjY2NyAwIDEgMS0xLjMzNCAwIC42NjcuNjY3IDAgMCAxIDEuMzM0IDBabS00LjY2NyAwYS42NjcuNjY3IDAgMSAxLTEuMzMzIDAgLjY2Ny42NjcgMCAwIDEgMS4zMzMgMFpNOCAxMy4zMzNBNS4zMzMgNS4zMzMgMCAwIDEgMi42NjcgOGMuMDAzLS40NS4wNi0uODk4LjE3My0xLjMzM2guODI3YTIgMiAwIDAgMCA0IC4xMi42NjcuNjY3IDAgMCAxIC42NjYgMCAyIDIgMCAxIDAgNC0uMTJoLjgyN2MuMTEyLjQzNS4xNy44ODMuMTczIDEuMzMzQTUuMzM0IDUuMzM0IDAgMCAxIDggMTMuMzMzWm0xLjU3My0zLjg0NmEyLjUwNyAyLjUwNyAwIDAgMS0zLjE0NiAwIC42NjcuNjY3IDAgMCAwLS44NTQgMS4wMjYgMy43ODcgMy43ODcgMCAwIDAgNC44NTQgMCAuNjY4LjY2OCAwIDAgMC0uODU0LTEuMDI2WlxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCA5IDEyXFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIk0xLjk1NSA4LjMzM2g0LjY3bC0yLjMzNiAyLjI1NC0yLjMzNC0yLjI1NFptMS44NDQgMy4xOTRjLjI3LjI2LjcwNC4yNi45NzQgMGwzLjE3LTMuMDZjLjQzNi0uNDE0LjEzMi0xLjEzNC0uNDgzLTEuMTM0SDEuMTI2Yy0uNjE1IDAtLjkyNi43Mi0uNDkgMS4xNGwzLjE2MyAzLjA1NFptLTIuNjgtNi44Nkg3LjQ2Yy42MTUgMCAuOTI2LS43Mi40OS0xLjE0TDQuNzguNDY3YS43MDYuNzA2IDAgMCAwLS45NzQgMGwtMy4xNyAzLjA2Yy0uNDM2LjQyLS4xMzIgMS4xNC40ODMgMS4xNFpcXFwiIGZpbGw9XFxcIiMxNTUzNjZcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiBmaWxsPVxcXCJub25lXFxcIiB2aWV3Qm94PVxcXCIwIDAgOSAxMlxcXCI+PHBhdGggZmlsbD1cXFwiIzE1NTM2NlxcXCIgZD1cXFwiTTYuNjI0IDMuNjY3aC00LjY3TDQuMjkgMS40MTNsMi4zMzUgMi4yNTRaTTQuNzguNDczYS43MDYuNzA2IDAgMCAwLS45NzQgMGwtMy4xNyAzLjA2Yy0uNDM2LjQxNC0uMTMyIDEuMTM0LjQ4MyAxLjEzNGg2LjMzNGMuNjE1IDAgLjkyNi0uNzIuNDktMS4xNEw0Ljc4LjQ3M1ptMi42OCA2Ljg2SDEuMTE5Yy0uNjE1IDAtLjkyNi43Mi0uNDkgMS4xNGwzLjE3IDMuMDZjLjI3LjI2LjcwNC4yNi45NzQgMGwzLjE3LTMuMDZjLjQzNi0uNDIuMTMyLTEuMTQtLjQ4My0xLjE0WlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHdpZHRoPVxcXCI5XFxcIiBmaWxsPVxcXCJub25lXFxcIj48cGF0aCBmaWxsPVxcXCIjMTU1MzY2XFxcIiBkPVxcXCJNNi42MjUgMy42NjdoLTQuNjdMNC4yOSAxLjQxNGwyLjMzNSAyLjI1M1pNNC43OC40NzRhLjcwNi43MDYgMCAwIDAtLjk3NCAwbC0zLjE3IDMuMDZjLS40MzUuNDEzLS4xMzEgMS4xMzMuNDgzIDEuMTMzaDYuMzM1Yy42MTUgMCAuOTI1LS43Mi40OS0xLjE0TDQuNzguNDc0Wm0yLjY4IDYuODZIMS4xMmMtLjYxNSAwLS45MjYuNzItLjQ5MSAxLjE0bDMuMTcgMy4wNmMuMjcuMjYuNzA1LjI2Ljk3NSAwbDMuMTctMy4wNmMuNDM1LS40Mi4xMzEtMS4xNC0uNDgzLTEuMTRaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHZpZXdCb3g9XFxcIjAgMCAxNyAxNlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cGF0aCBkPVxcXCJNMTQuODkgNi40NDdBLjY2Ni42NjYgMCAwIDAgMTQuMzE2IDZsLTMuNzkzLS41NTNMOC44MjMgMmEuNjY3LjY2NyAwIDAgMC0xLjIgMGwtMS43IDMuNDRMMi4xMyA2YS42NjcuNjY3IDAgMCAwLS41NC40NTMuNjY3LjY2NyAwIDAgMCAuMTY2LjY2N0w0LjUxIDkuNzg3bC0uNjY3IDMuNzg2YS42NjcuNjY3IDAgMCAwIC45NjcuNzE0bDMuNDEzLTEuNzggMy40IDEuNzg2Yy4wOTQuMDUzLjIuMDguMzA3LjA4YS42NjcuNjY3IDAgMCAwIC42MjQtLjQyLjY2Ni42NjYgMCAwIDAgLjAzNi0uMzczbC0uNjY3LTMuNzg3IDIuNzUzLTIuNjY2YS42NjcuNjY3IDAgMCAwIC4yMTQtLjY4Wm0tNC4xIDIuNjY2YS42NjYuNjY2IDAgMCAwLS4xOTQuNTk0bC40OCAyLjc5My0yLjUwNi0xLjMzM2EuNjY2LjY2NiAwIDAgMC0uNjI3IDBMNS40MzYgMTIuNWwuNDgtMi43OTNhLjY2Ny42NjcgMCAwIDAtLjE5My0uNTk0bC0yLTIgMi44MDctLjQwNmEuNjY3LjY2NyAwIDAgMCAuNTA2LS4zNjdMOC4yMjMgMy44bDEuMjUzIDIuNTQ3YS42NjcuNjY3IDAgMCAwIC41MDcuMzY2bDIuODA3LjQwNy0yIDEuOTkzWlxcXCIgZmlsbD1cXFwiIzA2REJFNFxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNCAxNFxcXCI+PHBhdGggZmlsbD1cXFwiIzE3OTk3QlxcXCIgc3Ryb2tlPVxcXCIjMTc5OTdCXFxcIiBzdHJva2Utd2lkdGg9XFxcIi42NjdcXFwiIGQ9XFxcIm01LjcxOCA3Ljk2Mi4yMzYuMjM2LjIzNS0uMjM2IDIuODYtMi44NjZhLjMzMy4zMzMgMCAwIDEgLjQ3IDAgLjMzMy4zMzMgMCAwIDEgMCAuNDc0bC0uMDAxLjAwMS0zLjMzMyAzLjMzMmEuMzMzLjMzMyAwIDAgMS0uNDcgMEw0LjE0OSA3LjMzMWwtLjAwOS0uMDA5LS4wMS0uMDA5YS4zMzMuMzMzIDAgMSAxIC40Ny0uNDdsLjAwOC4wMS4wMS4wMSAxLjEgMS4xWk0zLjQ4IDEuNzM0YTYuMzMzIDYuMzMzIDAgMSAxIDcuMDM4IDEwLjUzMkE2LjMzMyA2LjMzMyAwIDAgMSAzLjQ4IDEuNzM0Wm0uMzcgOS45NzhhNS42NjcgNS42NjcgMCAxIDAgNi4yOTctOS40MjUgNS42NjcgNS42NjcgMCAwIDAtNi4yOTYgOS40MjVaXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIj48cGF0aCBmaWxsPVxcXCIjZmZmXFxcIiBkPVxcXCJNNi44NzUgMTAuNzI5YS42NjUuNjY1IDAgMCAxLS40NzEtLjE5Nkw0LjUyOSA4LjY1OGEuNjY3LjY2NyAwIDAgMSAuOTQyLS45NDJsMS40MDQgMS40MDMgMy42NTQtMy42NTNhLjY2Ny42NjcgMCAwIDEgLjk0Mi45NDJsLTQuMTI1IDQuMTI1YS42NjQuNjY0IDAgMCAxLS40NzEuMTk2WlxcXCIgb3BhY2l0eT1cXFwiLjk5XFxcIi8+PHBhdGggZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIiBkPVxcXCJNOCAxLjMzM0E2LjY2NyA2LjY2NyAwIDEgMCAxNC42NjcgOCA2LjY3NCA2LjY3NCAwIDAgMCA4IDEuMzMzWm0zLjQ3MSA1LjA3Ni00LjEyNSA0LjEyNWEuNjY3LjY2NyAwIDAgMS0uOTQyIDBMNC41MjkgOC42NTlhLjY2Ny42NjcgMCAwIDEgLjk0Mi0uOTQzbDEuNDA0IDEuNDAzIDMuNjU0LTMuNjUzYS42NjcuNjY3IDAgMCAxIC45NDIuOTQzWlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCI+PHBhdGggc3Ryb2tlPVxcXCIjMTc5OTdCXFxcIiBmaWxsPVxcXCIjMTc5OTdCXFxcIiBkPVxcXCJNMjAuMjg1IDIgOSAxMy41NjcgMy43MTQgOC41NTYgMCAxMi4yNzIgOSAyMSAyNCA1LjcxNXpcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMTQgMTRcXFwiPjxwYXRoIGQ9XFxcIk03IC4zMzJjLTMuNjY3IDAtNi42NjcgMy02LjY2NyA2LjY2NyAwIDMuNjY2IDMgNi42NjYgNi42NjcgNi42NjYgMy42NjYgMCA2LjY2Ni0zIDYuNjY2LTYuNjY2IDAtMy42NjctMy02LjY2Ny02LjY2Ni02LjY2N1ptMi40NjYgOC4yYS42NDQuNjQ0IDAgMCAxIDAgLjkzMy42NDQuNjQ0IDAgMCAxLS45MzMgMEw3IDcuOTMyIDUuNDY2IDkuNDY1YS42NDQuNjQ0IDAgMCAxLS45MzMgMCAuNjQ0LjY0NCAwIDAgMSAwLS45MzNsMS41MzMtMS41MzMtMS41MzMtMS41MzRhLjY0NC42NDQgMCAwIDEgMC0uOTMzLjY0NC42NDQgMCAwIDEgLjkzMyAwTDcgNi4wNjVsMS41MzMtMS41MzNhLjY0NC42NDQgMCAwIDEgLjkzMyAwIC42NDQuNjQ0IDAgMCAxIDAgLjkzM0w3LjkzMyA3bDEuNTMzIDEuNTMzWlxcXCIgZmlsbD1cXFwiI0QxMDAxRVxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAzMiAzMlxcXCI+PGNpcmNsZSBjeD1cXFwiMTZcXFwiIGN5PVxcXCIxNlxcXCIgcj1cXFwiMTZcXFwiIGZpbGw9XFxcIiNGMUY3RjlcXFwiLz48cGF0aCBkPVxcXCJNMTAuNzAyIDE3LjY5YTIuNzQ5IDIuNzQ5IDAgMCAwIDIuMzUgMS40MTFsLjkzMy4wMTgtLjczNC41NzhhNi40OTggNi40OTggMCAwIDEtMy40MDEgMS4zNjIgOC4zNDIgOC4zNDIgMCAwIDAgMy4zNjcuNzA1aC4wMDRhOC4zNTggOC4zNTggMCAwIDAgOC40NDYtOC40MjR2LS41NjhsLjEzNC0uMWMuMjYzLS4xOTYuNTEtLjQxNC43MzctLjY1TDEwLjcwMiAxNy42OVptMCAwaC4wNTJjLjMxMS0uMDAzLjYyLS4wNS45MTgtLjE0MWwtLjAzMi0uNjQ2YTIuNzQxIDIuNzQxIDAgMCAxLTIuMTU4LTIuMTc3Yy4zMjIuMTEuNjYuMTcyIDEuMDA0LjE4MmwxLjE1Ni4wMzEtLjk2Mi0uNjQyYTIuNzM0IDIuNzM0IDAgMCAxLTEuMjE3LTIuMjhjMC0uMzIzLjA1Ni0uNjQyLjE2NC0uOTQzYTkuMDY0IDkuMDY0IDAgMCAwIDYuMjM2IDIuOTQxbC40NDUuMDIzLS4xMDQtLjQzNGEyLjc0MiAyLjc0MiAwIDAgMSA0LjY4LTIuNWwuMTI4LjEzNi4xODMtLjAzNmMuMzg0LS4wNzYuNzYtLjE4NiAxLjEyMi0uMzI5YTIuNzYzIDIuNzYzIDAgMCAxLS43NTguNjY4TDEwLjcwMiAxNy42OVpcXFwiIGZpbGw9XFxcIiMxNTUzNjZcXFwiIHN0cm9rZT1cXFwiIzE1NTM2NlxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIuNjY3XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIj48cGF0aCBmaWxsPVxcXCIjZmZmXFxcIiBzdHJva2U9XFxcIiNmZmZcXFwiIGQ9XFxcIm04LjA2MyA1Ljg1LjAxLjAwM2EuMTY2LjE2NiAwIDAgMSAuMDUyLjAzMkwxMC4xMiA3Ljg4di4wMDJhLjE2OC4xNjggMCAwIDEgLjAzNy4xODJsLjQ2Mi4xOTItLjQ2Mi0uMTkyYS4xNjguMTY4IDAgMCAxLS4wMzYuMDU0bC0uMDAzLjAwM2EuMTY3LjE2NyAwIDAgMS0uMTgyLjAzN2wtLjE5My40NjEuMTkzLS40NjFhLjE2Ny4xNjcgMCAwIDEtLjA1NS0uMDM3bC0uODYtLjg2Ny0uODU1LS44NjFWMTBhLjE2Ny4xNjcgMCAwIDEtLjMzMyAwVjYuMzkzbC0uODU1Ljg2MS0uODU5Ljg2NmEuMTcuMTcgMCAwIDEtLjI0LS4yNGwxLjk5Ni0xLjk5NWEuMTY2LjE2NiAwIDAgMSAuMDUyLS4wMzJsLjAxLS4wMDRhLjE2Ny4xNjcgMCAwIDEgLjEyNiAwWm0tMy40OS0yLjk3N2E2LjE2NyA2LjE2NyAwIDEgMSA2Ljg1MyAxMC4yNTRBNi4xNjcgNi4xNjcgMCAwIDEgNC41NzQgMi44NzNabS4xODYgOS45NzdhNS44MzQgNS44MzQgMCAxIDAgNi40ODEtOS43IDUuODM0IDUuODM0IDAgMCAwLTYuNDgyIDkuNzAxWlxcXCIvPjwvc3ZnPlwiOyIsImV4cG9ydCBkZWZhdWx0IFwiPHN2ZyB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBhdGggZD1cXFwiTTkuMjcgOS40OTFhLjE2Ny4xNjcgMCAwIDEtLjA1NC0uMDM1bC0uMTktLjE5Ny0uODYtLjg4OXYyLjk2M2EuMTY3LjE2NyAwIDAgMS0uMzMzIDBWOC4zN2wtLjg2Ljg5LS4xODkuMTk1YS4xNy4xNyAwIDAgMS0uMjM3LS4yNDFsMS4zMjgtMS4zMjlhLjE2Ni4xNjYgMCAwIDEgLjA1Mi0uMDMybC4wMS0uMDA0YS4xNjcuMTY3IDAgMCAxIC4xMjYgMGwuMDEuMDA0YS4xNTYuMTU2IDAgMCAxIC4wNTIuMDMybDEuMzI4IDEuMzI5LjAwMi4wMDFhLjE2Ny4xNjcgMCAwIDEgLjAzNi4xODJsLjQ2Mi4xOTMtLjQ2Mi0uMTkzYS4xNjcuMTY3IDAgMCAxLS4wMzYuMDU1bC0uMDAzLjAwM2EuMTY3LjE2NyAwIDAgMS0uMTgzLjAzNlptLS40MzctNy41ODQgMy45NjMgMy45NjMuMDIzLjA3YS4zMy4zMyAwIDAgMSAuMDE0LjA1NHY2LjY3M2ExLjUgMS41IDAgMCAxLTEuNSAxLjVINC42NjdhMS41IDEuNSAwIDAgMS0xLjA2MS0uNDRsLS4zNDguMzQ4LjM0OC0uMzQ4YTEuNSAxLjUgMCAwIDEtLjQ0LTEuMDZWMy4zMzNhMS41IDEuNSAwIDAgMSAxLjUtMS41aDMuOThhLjIzMy4yMzMgMCAwIDEgLjAzMi4wMTVsLjExLjA1OWguMDQ1Wm0uODU0IDEuMzQ2TDguODMzIDIuNHYyLjI2N0ExLjE2NyAxLjE2NyAwIDAgMCAxMCA1LjgzM2gyLjI2N2wtLjg1My0uODUzLTEuNzI3LTEuNzI3Wk04LjUgMi42Njd2LS41SDQuNjY3QTEuMTY3IDEuMTY3IDAgMCAwIDMuNSAzLjMzM3Y5LjMzNGExLjE2NyAxLjE2NyAwIDAgMCAxLjE2NyAxLjE2Nmg2LjY2NmExLjE2NyAxLjE2NyAwIDAgMCAxLjE2Ny0xLjE2NnYtNi41SDEwYTEuNSAxLjUgMCAwIDEtMS41LTEuNXYtMlpcXFwiIGZpbGw9XFxcImN1cnJlbnRjb2xvclxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Y29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiBmaWxsPVxcXCJub25lXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwYXRoIGQ9XFxcIm0zLjgzNyAxMS42NDMtLjEyOC4zMTQuMjQzLjIzNUE1LjgzMyA1LjgzMyAwIDAgMCA4IDEzLjgzM2guMDAyYTUuODMzIDUuODMzIDAgMCAwIDQuMDQ3LTEuNjRsLjI0My0uMjM2LS4xMjktLjMxNGE0LjUgNC41IDAgMCAwLTguMzI1IDBabTguMzM4LS43MjQuNDMuNzM2LjQzMy0uNzM2QTUuNzggNS43OCAwIDAgMCAxMy44MzMgOCA1LjgzMyA1LjgzMyAwIDAgMCAyLjE2NyA4YTUuNzggNS43OCAwIDAgMCAuNzk1IDIuOTJsLjQzMi43MzYuNDMtLjczN2E0LjgzMyA0LjgzMyAwIDAgMSAyLjM2My0yLjA0MmwuNjU1LS4yNjUtLjQ2Ny0uNTNhMi4xNjcgMi4xNjcgMCAxIDEgMy4yNSAwbC0uNDY3LjUzLjY1NS4yNjVhNC44MzMgNC44MzMgMCAwIDEgMi4zNjIgMi4wNDJaTTQuNjM1IDIuODRjMS0uNjU1IDIuMTctMS4wMDUgMy4zNjUtMS4wMDdhNi4xNjYgNi4xNjYgMCAwIDEgNC41MzIgMTAuMzM1IDYuMTY3IDYuMTY3IDAgMCAxLTkuMDY0IDBBNi4xNjcgNi4xNjcgMCAwIDEgNC42MzUgMi44NFptMS44NCAyLjgwOGExLjgzMyAxLjgzMyAwIDEgMCAzLjA1IDIuMDM3IDEuODMzIDEuODMzIDAgMCAwLTMuMDUtMi4wMzdaXFxcIiBmaWxsPVxcXCJ0cmFuc3BhcmVudFxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjAgMjJcXFwiPjxwYXRoIGQ9XFxcIm0xMy41MDQgMTEuNDQ4LS40NTUuMzU4LjUzOC4yMTRhOS42NjcgOS42NjcgMCAwIDEgNi4wNDIgNy45MTYuNjY3LjY2NyAwIDAgMS0uNTcuNzNoLS4wOTFhLjY2Ny42NjcgMCAwIDEtLjY2Ny0uNTkzIDguMzMzIDguMzMzIDAgMCAwLTE2LjU2MiAwQS42NzMuNjczIDAgMCAxIC40IDE5LjkyNmE5LjY2NyA5LjY2NyAwIDAgMSA2LjAxMy03LjkwN2wuNTM2LS4yMTQtLjQ1NC0uMzU3YTUuNjY3IDUuNjY3IDAgMSAxIDcuMDA4IDBabS01LjkxMS0uODQ1YTQuMzM0IDQuMzM0IDAgMSAwIDQuODE1LTcuMjA3IDQuMzM0IDQuMzM0IDAgMCAwLTQuODE1IDcuMjA3WlxcXCIgZmlsbD1cXFwiIzE1NTM2NlxcXCIgc3Ryb2tlPVxcXCIjMTU1MzY2XFxcIiBzdHJva2Utd2lkdGg9XFxcIi42NjdcXFwiLz48L3N2Zz5cIjsiLCJleHBvcnQgZGVmYXVsdCBcIjxzdmcgZmlsbD1cXFwibm9uZVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjAgMThcXFwiPjxwYXRoIGQ9XFxcIm0xOC45MTcgMTMuNTgzLTYuNzUtMTEuNjY2QzExLjUuNzUgOS45MTcuMzMzIDguNzUgMWMtLjQxNy4yNS0uNzUuNTgzLS45MTcuOTE3bC02Ljc1IDExLjY2NkMuNDE3IDE0Ljc1LjgzMyAxNi4zMzMgMiAxN2MuNDE3LjI1LjgzMy4zMzMgMS4yNS4zMzNoMTMuNDE3YzEuNDE2IDAgMi41LTEuMTY2IDIuNS0yLjUuMDgzLS41LS4wODQtLjkxNi0uMjUtMS4yNVpNMTAgMTRjLS41IDAtLjgzMy0uMzMzLS44MzMtLjgzMyAwLS41LjMzMy0uODM0LjgzMy0uODM0LjUgMCAuODMzLjMzNC44MzMuODM0IDAgLjUtLjMzMy44MzMtLjgzMy44MzNabS44MzMtNC4xNjdjMCAuNS0uMzMzLjgzNC0uODMzLjgzNC0uNSAwLS44MzMtLjMzNC0uODMzLS44MzRWNi41YzAtLjUuMzMzLS44MzMuODMzLS44MzMuNSAwIC44MzMuMzMzLjgzMy44MzN2My4zMzNaXFxcIiBmaWxsPVxcXCIjRkY3MjY0XFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgZmlsbD1cXFwibm9uZVxcXCIgdmlld0JveD1cXFwiMCAwIDE4IDE5XFxcIj48ZyBjbGlwLXBhdGg9XFxcInVybCgjd2FybmluZy1maWxsX3N2Z19fYSlcXFwiPjxwYXRoIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIgZD1cXFwibTE3LjAyIDEzLjk5Mi02LjA3My0xMC41Yy0uNi0xLjA1LTIuMDI1LTEuNDI1LTMuMDc0LS44MjUtLjM3NS4yMjUtLjY3NS41MjUtLjgyNS44MjVsLTYuMDczIDEwLjVjLS42IDEuMDUtLjIyNSAyLjQ3NS44MjQgMy4wNzUuMzc1LjIyNS43NS4zIDEuMTI1LjNoMTIuMDcxYzEuMjc1IDAgMi4yNS0xLjA1IDIuMjUtMi4yNS4wNzUtLjQ1LS4wNzUtLjgyNS0uMjI1LTEuMTI1Wm0tOC4wMjMuMzc1Yy0uNDUgMC0uNzUtLjMtLjc1LS43NXMuMy0uNzUuNzUtLjc1Ljc1LjMuNzUuNzUtLjMuNzUtLjc1Ljc1Wm0uNzUtMy43NWMwIC40NS0uMy43NS0uNzUuNzVzLS43NS0uMy0uNzUtLjc1di0zYzAtLjQ1LjMtLjc1Ljc1LS43NXMuNzUuMy43NS43NXYzWlxcXCIvPjwvZz48ZGVmcz48Y2xpcFBhdGggaWQ9XFxcIndhcm5pbmctZmlsbF9zdmdfX2FcXFwiPjxwYXRoIGZpbGw9XFxcIiNmZmZcXFwiIGQ9XFxcIk0wIDBoMTcuOTk1djE4SDB6XFxcIiB0cmFuc2Zvcm09XFxcInRyYW5zbGF0ZSgwIC44NjcpXFxcIi8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDIzIDIxXFxcIj48cGF0aCBkPVxcXCJNMTEuODg3IDE1YTEgMSAwIDEgMCAwIDIgMSAxIDAgMCAwIDAtMlptMTAuNjcgMS40Ny04LjA1LTE0YTMgMyAwIDAgMC01LjI0IDBsLTggMTRBMyAzIDAgMCAwIDMuODI3IDIxaDE2LjEyYTMgMyAwIDAgMCAyLjYxLTQuNTNabS0xLjczIDJhMSAxIDAgMCAxLS44OC41MUgzLjgyN2ExIDEgMCAwIDEtLjg4LS41MSAxIDEgMCAwIDEgMC0xbDgtMTRhMSAxIDAgMCAxIDEuNzggMGw4LjA1IDE0YTEgMSAwIDAgMSAuMDUgMS4wMnYtLjAyWk0xMS44ODcgN2ExIDEgMCAwIDAtMSAxdjRhMSAxIDAgMCAwIDIgMFY4YTEgMSAwIDAgMC0xLTFaXFxcIiBmaWxsPVxcXCIjRDEwMDFFXFxcIi8+PC9zdmc+XCI7IiwiZXhwb3J0IGRlZmF1bHQgXCI8c3ZnIGZpbGw9XFxcIm5vbmVcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDMyIDMyXFxcIj48Y2lyY2xlIGN4PVxcXCIxNlxcXCIgY3k9XFxcIjE2XFxcIiByPVxcXCIxNlxcXCIgZmlsbD1cXFwiI0YxRjdGOVxcXCIvPjxwYXRoIGQ9XFxcIk0yMy45MTcgMTQuMjd2LjAxMmMwIC40NjIgMCAyLjk3Ny0uMDMgMy4zODF2LjAyOGE3LjYgNy42IDAgMCAxLS4zNzQgMi40NDN2LjAwMWExLjUzNSAxLjUzNSAwIDAgMS0uMzc1LjYxNSAxLjgyNyAxLjgyNyAwIDAgMS0uOTU1LjQ5MWMtMi43MDIuMjA4LTQuOTkuMjQ1LTcuNjAzLjIwOGgtLjAxMmEzMy41NjIgMzMuNTYyIDAgMCAxLTQuODE3LS4yNDQgMS44MTEgMS44MTEgMCAwIDEtLjkyNy0uNDg1IDIuMDIyIDIuMDIyIDAgMCAxLS40NS0uODY4bC0uMDAxLS4wMDZhNi44MjggNi44MjggMCAwIDEtLjIxNS0xLjQzdi0uMDA5YTM1Ljg4NyAzNS44ODcgMCAwIDEgLjAwMy00Ljg1N2MuMDM3LS40NDIuMDc0LS44ODguMTc1LTEuMjk4LjEwNC0uNDI0LjI3LS43NzUuNTQtMS4wMjVsLjAwMy0uMDAzYy4yNTMtLjI0LjU3LS40MDEuOTExLS40NjZhNTguNTI3IDU4LjUyNyAwIDAgMSA2LjIwNC0uMjIzaC4wMTJhNTguNDI2IDU4LjQyNiAwIDAgMSA2LjIyNi4yM2MuNDEuMDc4Ljc4Mi4yOSAxLjA1Ni42MDUuNDQ3LjkuNjY0IDEuODk2LjYyOSAyLjlabS05Ljk0NSAzLjg2N3YuNTZsLjQ5Mi0uMjY3YTk4Ljk3IDk4Ljk3IDAgMCAxIDIuMjY0LTEuMTc1bC4wNjMtLjAzMmE3MC40NSA3MC40NSAwIDAgMCAyLjExNi0xLjEwNGwuNTQtLjMtLjU0Ny0uMjg3LTQuNDQtMi4zMzItLjQ4OC0uMjU3djUuMTk0WlxcXCIgZmlsbD1cXFwiIzE1NTM2NlxcXCIgc3Ryb2tlPVxcXCIjMTU1MzY2XFxcIiBzdHJva2Utd2lkdGg9XFxcIi42NjdcXFwiLz48L3N2Zz5cIjsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMV0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsyXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL011bHRpU2VsZWN0V2l0aFNlYXJjaC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD1kYzcwNWY0OCZsYW5nPWNzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsxXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzJdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vWGxzTGlzdEVycm9yLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTM3NjE3NzAyJnNjb3BlZD10cnVlJmxhbmc9Y3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzFdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMl0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9zcGlubmVyTG9hZGVyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTAwODkyZGY2Jmxhbmc9Y3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzFdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMl0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9UYWJsZUxheW91dC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD01ZDg0YTFkOCZzY29wZWQ9dHJ1ZSZsYW5nPWNzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vTGlzdEVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9OWE2MDg0MzImc2NvcGVkPXRydWUmbGFuZz1jc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMV0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsyXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1hsc0xpc3QudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NWY1MDA4YjQmc2NvcGVkPXRydWUmbGFuZz1jc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xMS51c2VbMV0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsyXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1RhYmxlTGlzdC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0wNWIyNjM0YiZsYW5nPWNzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTExLnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTEudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vVXNlckxpc3RpbmcudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MDYxMWQ5ZjAmc2NvcGVkPXRydWUmbGFuZz1jc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vQWRtaW5IZWFkZXIudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTEmaWQ9NmZlNTkwNTUmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0J1bGtwdWJsaXNoV2l0aFhscy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0yNDQzZGY1MyZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRXJyb3JNZXNzYWdlLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPWI3N2IxMWQ0Jmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9Ib3ZlclRleHQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NTUzOGQ3ZTImbGFuZz1zY3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0xvYWRlci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD04ZTM2ZjhlYyZsYW5nPXNjc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vUG9wdXBNb2RhbC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD01YTJiZGE1OCZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU2hpbW1lckxvYWRpbmcudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NzQzNTYxNzImbGFuZz1zY3NzJnNjb3BlZD10cnVlXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Vycm9yTGlzdHMudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9ZjY3YzdlNzImbGFuZz1zY3NzJnNjb3BlZD10cnVlXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1Byb2dyZXNzTG9hZGVyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTVjMzJiZjBjJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9TdGlja3lFcnJvcnMudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MWUzOGQxMGUmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1VwbG9hZGVkRXJyb3JzLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTZmMTdlYzQ1Jmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BY3Rpdml0eUluZGV4LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTBhNTcxZmQ2Jmxhbmc9c2Nzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9DcmVhdGVNb2RhbC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD1jN2NhMjhiOCZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vRXJyb3JJdGVtLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTA2M2NiZDg2Jmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BY3Rpdml0aWVzRWxlbWVudHMudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NWE0MGZjZjQmbGFuZz1zY3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Rvd25sb2FkQWN0aXZpdHlCdXR0b24udnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NjYxZTZmOGUmc2NvcGVkPXRydWUmbGFuZz1zY3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Rhc2hib2FyZExpc3RTZWN0aW9uLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTRmMjI1ZDNlJmxhbmc9c2Nzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9JbXBvcnRMaXN0LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTQwZDc4NzBhJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9PcmdhbmlzYXRpb25EYXRhLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTRhZGE1ZjM2Jmxhbmc9c2Nzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgICAgICAgIGltcG9ydCBjb250ZW50IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzJdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbM10hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9SZXNldFBhZ2UudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MzZiNzY0YmImbGFuZz1zY3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0lhdGlSZWdpc3RlclBhZ2UudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTEmaWQ9MTdlNjMyYTYmbGFuZz1zY3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3Qvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMl0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVszXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL1JlZ2lzdGVyUGFnZS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MSZpZD01MjI2NjIwMCZsYW5nPXNjc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/Y2xvbmVkUnVsZVNldC0xNC51c2VbMV0hLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9jbG9uZWRSdWxlU2V0LTE0LnVzZVsyXSEuLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P2Nsb25lZFJ1bGVTZXQtMTQudXNlWzNdIS4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvaW5kZXguanM/P3J1bGVTZXRbMF0udXNlWzBdIS4vU2lnbkluLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPWExODYxZjNlJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0FjdGl2aXR5RG93bmxvYWQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTMyNmFkNzZlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9BY3Rpdml0eURvd25sb2FkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FjdGl2aXR5RG93bmxvYWQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQWN0aXZpdHlEb3dubG9hZC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMzI2YWQ3NmVcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCczMjZhZDc2ZScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzMyNmFkNzZlJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9BY3Rpdml0eURvd25sb2FkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zMjZhZDc2ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzMyNmFkNzZlJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9BZG1pbkhlYWRlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NmZlNTkwNTUmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FkbWluSGVhZGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FkbWluSGVhZGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IFwiQHZ1ZWZvcm0vbXVsdGlzZWxlY3QvdGhlbWVzL2RlZmF1bHQuY3NzP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1jc3NcIlxuaW1wb3J0IFwiLi9BZG1pbkhlYWRlci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MSZpZD02ZmU1OTA1NSZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fc2NvcGVJZCcsXCJkYXRhLXYtNmZlNTkwNTVcIl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0FkbWluSGVhZGVyLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI2ZmU1OTA1NVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzZmZTU5MDU1JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNmZlNTkwNTUnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0FkbWluSGVhZGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02ZmU1OTA1NSZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzZmZTU5MDU1JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9CcmVhZENydW1iLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02NWQwZTNkYSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQnJlYWRDcnVtYi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vQnJlYWRDcnVtYi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvQnJlYWRDcnVtYi52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNjVkMGUzZGFcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc2NWQwZTNkYScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzY1ZDBlM2RhJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9CcmVhZENydW1iLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02NWQwZTNkYSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzY1ZDBlM2RhJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9CdWxrUHVibGlzaGluZ0Vycm9yUG9wdXAudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTE2MmNiZjQwJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9CdWxrUHVibGlzaGluZ0Vycm9yUG9wdXAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIlxuZXhwb3J0ICogZnJvbSBcIi4vQnVsa1B1Ymxpc2hpbmdFcnJvclBvcHVwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0J1bGtQdWJsaXNoaW5nRXJyb3JQb3B1cC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMTYyY2JmNDBcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcxNjJjYmY0MCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzE2MmNiZjQwJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9CdWxrUHVibGlzaGluZ0Vycm9yUG9wdXAudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTE2MmNiZjQwJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMTYyY2JmNDAnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0J1bGtwdWJsaXNoV2l0aFhscy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjQ0M2RmNTMmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0J1bGtwdWJsaXNoV2l0aFhscy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9CdWxrcHVibGlzaFdpdGhYbHMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL0J1bGtwdWJsaXNoV2l0aFhscy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0yNDQzZGY1MyZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fc2NvcGVJZCcsXCJkYXRhLXYtMjQ0M2RmNTNcIl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0J1bGtwdWJsaXNoV2l0aFhscy52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMjQ0M2RmNTNcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcyNDQzZGY1MycsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzI0NDNkZjUzJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9CdWxrcHVibGlzaFdpdGhYbHMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI0NDNkZjUzJnNjb3BlZD10cnVlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMjQ0M2RmNTMnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0J1dHRvbkNvbXBvbmVudC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9OWZmNWE4ZjgmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0J1dHRvbkNvbXBvbmVudC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vQnV0dG9uQ29tcG9uZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9CdXR0b25Db21wb25lbnQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjlmZjVhOGY4XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnOWZmNWE4ZjgnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc5ZmY1YThmOCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQnV0dG9uQ29tcG9uZW50LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD05ZmY1YThmOCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzlmZjVhOGY4JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9EYXRlUmFuZ2VXaWRnZXQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTM0NzdjNmVjJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9EYXRlUmFuZ2VXaWRnZXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIlxuZXhwb3J0ICogZnJvbSBcIi4vRGF0ZVJhbmdlV2lkZ2V0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0RhdGVSYW5nZVdpZGdldC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMzQ3N2M2ZWNcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCczNDc3YzZlYycsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzM0NzdjNmVjJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9EYXRlUmFuZ2VXaWRnZXQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTM0NzdjNmVjJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMzQ3N2M2ZWMnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0Rlc2NyaXB0aW9uRm9ybS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NmViZjQxZjkmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0Rlc2NyaXB0aW9uRm9ybS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vRGVzY3JpcHRpb25Gb3JtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9EZXNjcmlwdGlvbkZvcm0udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjZlYmY0MWY5XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNmViZjQxZjknLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc2ZWJmNDFmOScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRGVzY3JpcHRpb25Gb3JtLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02ZWJmNDFmOSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzZlYmY0MWY5JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9FcnJvck1lc3NhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWI3N2IxMWQ0JnNjb3BlZD10cnVlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9FcnJvck1lc3NhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vRXJyb3JNZXNzYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9FcnJvck1lc3NhZ2UudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9Yjc3YjExZDQmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX3Njb3BlSWQnLFwiZGF0YS12LWI3N2IxMWQ0XCJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9FcnJvck1lc3NhZ2UudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImI3N2IxMWQ0XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnYjc3YjExZDQnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdiNzdiMTFkNCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRXJyb3JNZXNzYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1iNzdiMTFkNCZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2I3N2IxMWQ0JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9FcnJvclBvcFVwLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wZjFkOGIxYiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRXJyb3JQb3BVcC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9FcnJvclBvcFVwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0Vycm9yUG9wVXAudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjBmMWQ4YjFiXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMGYxZDhiMWInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcwZjFkOGIxYicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRXJyb3JQb3BVcC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGYxZDhiMWImdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcwZjFkOGIxYicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vSG92ZXJUZXh0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01NTM4ZDdlMiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vSG92ZXJUZXh0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9Ib3ZlclRleHQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9Ib3ZlclRleHQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NTUzOGQ3ZTImbGFuZz1zY3NzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL0hvdmVyVGV4dC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNTUzOGQ3ZTJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc1NTM4ZDdlMicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzU1MzhkN2UyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9Ib3ZlclRleHQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTU1MzhkN2UyJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNTUzOGQ3ZTInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0xvYWRlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9OGUzNmY4ZWMmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0xvYWRlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vTG9hZGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBcIi4vTG9hZGVyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPThlMzZmOGVjJmxhbmc9c2Nzc1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Mb2FkZXIudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjhlMzZmOGVjXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnOGUzNmY4ZWMnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc4ZTM2ZjhlYycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vTG9hZGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD04ZTM2ZjhlYyZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzhlMzZmOGVjJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9NdWx0aVNlbGVjdFdpdGhTZWFyY2gudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWRjNzA1ZjQ4JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9NdWx0aVNlbGVjdFdpdGhTZWFyY2gudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIlxuZXhwb3J0ICogZnJvbSBcIi4vTXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCJcblxuaW1wb3J0IFwiLi9NdWx0aVNlbGVjdFdpdGhTZWFyY2gudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9ZGM3MDVmNDgmbGFuZz1jc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvTXVsdGlTZWxlY3RXaXRoU2VhcmNoLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJkYzcwNWY0OFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2RjNzA1ZjQ4JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnZGM3MDVmNDgnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL011bHRpU2VsZWN0V2l0aFNlYXJjaC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZGM3MDVmNDgmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdkYzcwNWY0OCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vTmF2RHJvcGRvd24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI2MTlhN2VkJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9OYXZEcm9wZG93bi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vTmF2RHJvcGRvd24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL05hdkRyb3Bkb3duLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIyNjE5YTdlZFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzI2MTlhN2VkJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMjYxOWE3ZWQnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL05hdkRyb3Bkb3duLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yNjE5YTdlZCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzI2MTlhN2VkJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9Qb3B1cE1vZGFsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01YTJiZGE1OCZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUG9wdXBNb2RhbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUG9wdXBNb2RhbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL1BvcHVwTW9kYWwudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NWEyYmRhNTgmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX3Njb3BlSWQnLFwiZGF0YS12LTVhMmJkYTU4XCJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9Qb3B1cE1vZGFsLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI1YTJiZGE1OFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzVhMmJkYTU4JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNWEyYmRhNTgnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1BvcHVwTW9kYWwudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTVhMmJkYTU4JnNjb3BlZD10cnVlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNWEyYmRhNTgnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1JhZGlhbFByb2dyZXNzQmFyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xNTczOGU2MCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUmFkaWFsUHJvZ3Jlc3NCYXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1JhZGlhbFByb2dyZXNzQmFyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9SYWRpYWxQcm9ncmVzc0Jhci52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMTU3MzhlNjBcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcxNTczOGU2MCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzE1NzM4ZTYwJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9SYWRpYWxQcm9ncmVzc0Jhci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MTU3MzhlNjAmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcxNTczOGU2MCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vU2hpbW1lckxvYWRpbmcudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTc0MzU2MTcyJnNjb3BlZD10cnVlXCJcbmNvbnN0IHNjcmlwdCA9IHt9XG5cbmltcG9ydCBcIi4vU2hpbW1lckxvYWRpbmcudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NzQzNTYxNzImbGFuZz1zY3NzJnNjb3BlZD10cnVlXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX3Njb3BlSWQnLFwiZGF0YS12LTc0MzU2MTcyXCJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9TaGltbWVyTG9hZGluZy52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNzQzNTYxNzJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc3NDM1NjE3MicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzc0MzU2MTcyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9TaGltbWVyTG9hZGluZy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzQzNTYxNzImc2NvcGVkPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNzQzNTYxNzInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1RhYmxlTG9hZGVyQ29tcG9uZW50LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03ZDUyMDU5YSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vVGFibGVMb2FkZXJDb21wb25lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVGFibGVMb2FkZXJDb21wb25lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvVGFibGVMb2FkZXJDb21wb25lbnQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjdkNTIwNTlhXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnN2Q1MjA1OWEnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc3ZDUyMDU5YScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVGFibGVMb2FkZXJDb21wb25lbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdkNTIwNTlhJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignN2Q1MjA1OWEnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1RhYmxlUGFnaW5hdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9OGM5N2E1YmUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1RhYmxlUGFnaW5hdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVGFibGVQYWdpbmF0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9UYWJsZVBhZ2luYXRpb24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjhjOTdhNWJlXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnOGM5N2E1YmUnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc4Yzk3YTViZScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVGFibGVQYWdpbmF0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD04Yzk3YTViZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzhjOTdhNWJlJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9Ub2FzdE1lc3NhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWQwMWQ4Y2QyJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Ub2FzdE1lc3NhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVG9hc3RNZXNzYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1RvYXN0TWVzc2FnZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiZDAxZDhjZDJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdkMDFkOGNkMicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2QwMWQ4Y2QyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9Ub2FzdE1lc3NhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWQwMWQ4Y2QyJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignZDAxZDhjZDInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1hsc0xpc3RFcnJvci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Mzc2MTc3MDImc2NvcGVkPXRydWUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1hsc0xpc3RFcnJvci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9YbHNMaXN0RXJyb3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL1hsc0xpc3RFcnJvci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0zNzYxNzcwMiZzY29wZWQ9dHJ1ZSZsYW5nPWNzc1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19zY29wZUlkJyxcImRhdGEtdi0zNzYxNzcwMlwiXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvWGxzTGlzdEVycm9yLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIzNzYxNzcwMlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzM3NjE3NzAyJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMzc2MTc3MDInLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1hsc0xpc3RFcnJvci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Mzc2MTc3MDImc2NvcGVkPXRydWUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCczNzYxNzcwMicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vWGxzTG9hZGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03ZWE0YjA2YSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vWGxzTG9hZGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1hsc0xvYWRlci52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9YbHNMb2FkZXIudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjdlYTRiMDZhXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnN2VhNGIwNmEnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc3ZWE0YjA2YScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vWGxzTG9hZGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03ZWE0YjA2YSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzdlYTRiMDZhJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9YbHNVcGxvYWRJbmRpY2F0b3IudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTAyYWMyYmY0JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9YbHNVcGxvYWRJbmRpY2F0b3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vWGxzVXBsb2FkSW5kaWNhdG9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL1hsc1VwbG9hZEluZGljYXRvci52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMDJhYzJiZjRcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcwMmFjMmJmNCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzAyYWMyYmY0JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9YbHNVcGxvYWRJbmRpY2F0b3IudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTAyYWMyYmY0JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMDJhYzJiZjQnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0RlbGV0ZUJ1dHRvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YTkzZDg0N2MmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0RlbGV0ZUJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9EZWxldGVCdXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvYnV0dG9ucy9EZWxldGVCdXR0b24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImE5M2Q4NDdjXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnYTkzZDg0N2MnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdhOTNkODQ3YycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRGVsZXRlQnV0dG9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1hOTNkODQ3YyZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2E5M2Q4NDdjJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9MaW5rLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1iZmU2NTEwMiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vTGluay52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vTGluay52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvYnV0dG9ucy9MaW5rLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJiZmU2NTEwMlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2JmZTY1MTAyJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnYmZlNjUxMDInLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0xpbmsudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWJmZTY1MTAyJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignYmZlNjUxMDInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1B1Ymxpc2hCdXR0b24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWVjYzUwODI4JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9QdWJsaXNoQnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1B1Ymxpc2hCdXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvYnV0dG9ucy9QdWJsaXNoQnV0dG9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJlY2M1MDgyOFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2VjYzUwODI4JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnZWNjNTA4MjgnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1B1Ymxpc2hCdXR0b24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWVjYzUwODI4JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignZWNjNTA4MjgnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1VuUHVibGlzaEJ1dHRvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDU5YzMxOTMmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1VuUHVibGlzaEJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9VblB1Ymxpc2hCdXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvYnV0dG9ucy9VblB1Ymxpc2hCdXR0b24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjQ1OWMzMTkzXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNDU5YzMxOTMnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc0NTljMzE5MycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVW5QdWJsaXNoQnV0dG9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00NTljMzE5MyZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzQ1OWMzMTkzJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9EZWxldGVBY3Rpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTU2YmNlOGNhJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9EZWxldGVBY3Rpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vRGVsZXRlQWN0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL0RlbGV0ZUFjdGlvbi52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNTZiY2U4Y2FcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc1NmJjZThjYScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzU2YmNlOGNhJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9EZWxldGVBY3Rpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTU2YmNlOGNhJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNTZiY2U4Y2EnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0Vycm9yTGlzdHMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWY2N2M3ZTcyJnNjb3BlZD10cnVlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9FcnJvckxpc3RzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0Vycm9yTGlzdHMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL0Vycm9yTGlzdHMudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9ZjY3YzdlNzImbGFuZz1zY3NzJnNjb3BlZD10cnVlXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX3Njb3BlSWQnLFwiZGF0YS12LWY2N2M3ZTcyXCJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9FcnJvckxpc3RzLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJmNjdjN2U3MlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2Y2N2M3ZTcyJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnZjY3YzdlNzInLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0Vycm9yTGlzdHMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWY2N2M3ZTcyJnNjb3BlZD10cnVlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignZjY3YzdlNzInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0hhdmVOb3RBZGRlZFlldC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MzkyNWVmNDkmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0hhdmVOb3RBZGRlZFlldC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vSGF2ZU5vdEFkZGVkWWV0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9IYXZlTm90QWRkZWRZZXQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjM5MjVlZjQ5XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMzkyNWVmNDknLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCczOTI1ZWY0OScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vSGF2ZU5vdEFkZGVkWWV0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zOTI1ZWY0OSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzM5MjVlZjQ5JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9Pcmdhbml6YXRpb25QdWJsaXNoVW5wdWJsaXNoQnV0dG9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yZmI4ZjQwNiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vT3JnYW5pemF0aW9uUHVibGlzaFVucHVibGlzaEJ1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9Pcmdhbml6YXRpb25QdWJsaXNoVW5wdWJsaXNoQnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL09yZ2FuaXphdGlvblB1Ymxpc2hVbnB1Ymxpc2hCdXR0b24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjJmYjhmNDA2XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMmZiOGY0MDYnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcyZmI4ZjQwNicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vT3JnYW5pemF0aW9uUHVibGlzaFVucHVibGlzaEJ1dHRvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MmZiOGY0MDYmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcyZmI4ZjQwNicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUGFnZVRpdGxlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xYjU0ZTA5ZiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUGFnZVRpdGxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9QYWdlVGl0bGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1BhZ2VUaXRsZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMWI1NGUwOWZcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcxYjU0ZTA5ZicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzFiNTRlMDlmJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9QYWdlVGl0bGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTFiNTRlMDlmJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMWI1NGUwOWYnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1Byb2dyZXNzTG9hZGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01YzMyYmYwYyZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUHJvZ3Jlc3NMb2FkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUHJvZ3Jlc3NMb2FkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL1Byb2dyZXNzTG9hZGVyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTVjMzJiZjBjJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19zY29wZUlkJyxcImRhdGEtdi01YzMyYmYwY1wiXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvUHJvZ3Jlc3NMb2FkZXIudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjVjMzJiZjBjXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNWMzMmJmMGMnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc1YzMyYmYwYycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUHJvZ3Jlc3NMb2FkZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTVjMzJiZjBjJnNjb3BlZD10cnVlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNWMzMmJmMGMnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1N0aWNreUVycm9ycy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MWUzOGQxMGUmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1N0aWNreUVycm9ycy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9TdGlja3lFcnJvcnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL1N0aWNreUVycm9ycy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0xZTM4ZDEwZSZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fc2NvcGVJZCcsXCJkYXRhLXYtMWUzOGQxMGVcIl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1N0aWNreUVycm9ycy52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMWUzOGQxMGVcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcxZTM4ZDEwZScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzFlMzhkMTBlJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9TdGlja3lFcnJvcnMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTFlMzhkMTBlJnNjb3BlZD10cnVlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMWUzOGQxMGUnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1VwbG9hZGVkRXJyb3JzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02ZjE3ZWM0NSZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vVXBsb2FkZWRFcnJvcnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVXBsb2FkZWRFcnJvcnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL1VwbG9hZGVkRXJyb3JzLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTZmMTdlYzQ1Jmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19zY29wZUlkJyxcImRhdGEtdi02ZjE3ZWM0NVwiXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvVXBsb2FkZWRFcnJvcnMudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjZmMTdlYzQ1XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNmYxN2VjNDUnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc2ZjE3ZWM0NScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVXBsb2FkZWRFcnJvcnMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTZmMTdlYzQ1JnNjb3BlZD10cnVlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNmYxN2VjNDUnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL3NwaW5uZXJMb2FkZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTAwODkyZGY2XCJcbmNvbnN0IHNjcmlwdCA9IHt9XG5cbmltcG9ydCBcIi4vc3Bpbm5lckxvYWRlci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0wMDg5MmRmNiZsYW5nPWNzc1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvY29tcG9uZW50cy9zcGlubmVyTG9hZGVyLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIwMDg5MmRmNlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzAwODkyZGY2JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMDA4OTJkZjYnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL3NwaW5uZXJMb2FkZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTAwODkyZGY2XCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzAwODkyZGY2JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9FbGVtZW50U3RhdHVzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xZWI4ZGViMCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRWxlbWVudFN0YXR1cy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9FbGVtZW50U3RhdHVzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy9jb21wb25lbnRzL3N0YXR1cy9FbGVtZW50U3RhdHVzLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIxZWI4ZGViMFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzFlYjhkZWIwJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMWViOGRlYjAnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0VsZW1lbnRTdGF0dXMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTFlYjhkZWIwJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMWViOGRlYjAnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1ByZXZpb3VzbHlQdWJsaXNoZWQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTFmMmY5YWI4JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9QcmV2aW91c2x5UHVibGlzaGVkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1ByZXZpb3VzbHlQdWJsaXNoZWQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL2NvbXBvbmVudHMvc3RhdHVzL1ByZXZpb3VzbHlQdWJsaXNoZWQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjFmMmY5YWI4XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMWYyZjlhYjgnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcxZjJmOWFiOCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUHJldmlvdXNseVB1Ymxpc2hlZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MWYyZjlhYjgmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcxZjJmOWFiOCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vQWN0aXZpdHlEZWZhdWx0VmFsdWUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTIzZWUzNzVjJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9BY3Rpdml0eURlZmF1bHRWYWx1ZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BY3Rpdml0eURlZmF1bHRWYWx1ZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvQWN0aXZpdHlEZWZhdWx0VmFsdWUudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjIzZWUzNzVjXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMjNlZTM3NWMnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcyM2VlMzc1YycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQWN0aXZpdHlEZWZhdWx0VmFsdWUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTIzZWUzNzVjJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMjNlZTM3NWMnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0FjdGl2aXR5RGV0YWlsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00ZTQwMmIwNiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQWN0aXZpdHlEZXRhaWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FjdGl2aXR5RGV0YWlsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvQWN0aXZpdHlEZXRhaWwudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjRlNDAyYjA2XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNGU0MDJiMDYnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc0ZTQwMmIwNicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQWN0aXZpdHlEZXRhaWwudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTRlNDAyYjA2JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNGU0MDJiMDYnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0FjdGl2aXR5SW5kZXgudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBhNTcxZmQ2JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9BY3Rpdml0eUluZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BY3Rpdml0eUluZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBcIi4vQWN0aXZpdHlJbmRleC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0wYTU3MWZkNiZsYW5nPXNjc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L0FjdGl2aXR5SW5kZXgudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjBhNTcxZmQ2XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMGE1NzFmZDYnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcwYTU3MWZkNicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQWN0aXZpdHlJbmRleC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGE1NzFmZDYmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcwYTU3MWZkNicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vQ3JlYXRlTW9kYWwudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWM3Y2EyOGI4JnNjb3BlZD10cnVlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9DcmVhdGVNb2RhbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vQ3JlYXRlTW9kYWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9DcmVhdGVNb2RhbC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD1jN2NhMjhiOCZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fc2NvcGVJZCcsXCJkYXRhLXYtYzdjYTI4YjhcIl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9DcmVhdGVNb2RhbC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiYzdjYTI4YjhcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdjN2NhMjhiOCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2M3Y2EyOGI4JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9DcmVhdGVNb2RhbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YzdjYTI4Yjgmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdjN2NhMjhiOCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vRXJyb3JJdGVtLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wNjNjYmQ4NiZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRXJyb3JJdGVtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0Vycm9ySXRlbS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBcIi4vRXJyb3JJdGVtLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTA2M2NiZDg2Jmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19zY29wZUlkJyxcImRhdGEtdi0wNjNjYmQ4NlwiXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9FcnJvckl0ZW0udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjA2M2NiZDg2XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMDYzY2JkODYnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcwNjNjYmQ4NicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRXJyb3JJdGVtLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wNjNjYmQ4NiZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzA2M2NiZDg2JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9QdWJsaXNoU2VsZWN0ZWQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTNmYjFlMWNjJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9QdWJsaXNoU2VsZWN0ZWQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUHVibGlzaFNlbGVjdGVkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9idWxrLXB1Ymxpc2gvUHVibGlzaFNlbGVjdGVkLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIzZmIxZTFjY1wiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzNmYjFlMWNjJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnM2ZiMWUxY2MnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1B1Ymxpc2hTZWxlY3RlZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9M2ZiMWUxY2MmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCczZmIxZTFjYycsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUmVmcmVzaFRvYXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00MDExODk3YSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUmVmcmVzaFRvYXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1JlZnJlc2hUb2FzdC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvYnVsay1wdWJsaXNoL1JlZnJlc2hUb2FzdC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNDAxMTg5N2FcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc0MDExODk3YScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzQwMTE4OTdhJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9SZWZyZXNoVG9hc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQwMTE4OTdhJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNDAxMTg5N2EnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1ZhbGlkYXRpb25FcnJvcnMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI1NzVkM2IyJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9WYWxpZGF0aW9uRXJyb3JzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1ZhbGlkYXRpb25FcnJvcnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2J1bGstcHVibGlzaC9WYWxpZGF0aW9uRXJyb3JzLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIyNTc1ZDNiMlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzI1NzVkM2IyJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMjU3NWQzYjInLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1ZhbGlkYXRpb25FcnJvcnMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI1NzVkM2IyJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMjU3NWQzYjInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0FjdGl2aXR5RGF0ZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDEzOGVhODgmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FjdGl2aXR5RGF0ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vQWN0aXZpdHlEYXRlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvQWN0aXZpdHlEYXRlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIwMTM4ZWE4OFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzAxMzhlYTg4JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMDEzOGVhODgnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0FjdGl2aXR5RGF0ZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDEzOGVhODgmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcwMTM4ZWE4OCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vQ29uZGl0aW9ucy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YmFmYjI1YmEmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0NvbmRpdGlvbnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0NvbmRpdGlvbnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9Db25kaXRpb25zLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJiYWZiMjViYVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2JhZmIyNWJhJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnYmFmYjI1YmEnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0NvbmRpdGlvbnMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWJhZmIyNWJhJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignYmFmYjI1YmEnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0NvbnRhY3RJbmZvLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yOWE3ZDMxMyZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQ29udGFjdEluZm8udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0NvbnRhY3RJbmZvLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvQ29udGFjdEluZm8udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjI5YTdkMzEzXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMjlhN2QzMTMnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcyOWE3ZDMxMycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQ29udGFjdEluZm8udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI5YTdkMzEzJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMjlhN2QzMTMnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0Rlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1jN2Q3OTliZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRGVzY3JpcHRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0Rlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvRGVzY3JpcHRpb24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImM3ZDc5OWJlXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnYzdkNzk5YmUnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdjN2Q3OTliZScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRGVzY3JpcHRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWM3ZDc5OWJlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignYzdkNzk5YmUnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0h1bWFuaXRhcmlhblNjb3BlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1jZGZiNzQ2OCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vSHVtYW5pdGFyaWFuU2NvcGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vSHVtYW5pdGFyaWFuU2NvcGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0h1bWFuaXRhcmlhblNjb3BlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJjZGZiNzQ2OFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2NkZmI3NDY4JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnY2RmYjc0NjgnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0h1bWFuaXRhcmlhblNjb3BlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1jZGZiNzQ2OCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2NkZmI3NDY4JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9JYXRpSWRlbnRpZmllci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTI2MWFmZmUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0lhdGlJZGVudGlmaWVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9JYXRpSWRlbnRpZmllci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0lhdGlJZGVudGlmaWVyLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI1MjYxYWZmZVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzUyNjFhZmZlJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNTI2MWFmZmUnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0lhdGlJZGVudGlmaWVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01MjYxYWZmZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzUyNjFhZmZlJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9MZWdhY3lEYXRhLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1jYjNlNDgwNCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vTGVnYWN5RGF0YS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vTGVnYWN5RGF0YS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL0xlZ2FjeURhdGEudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImNiM2U0ODA0XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnY2IzZTQ4MDQnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdjYjNlNDgwNCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vTGVnYWN5RGF0YS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Y2IzZTQ4MDQmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdjYjNlNDgwNCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vTG9jYXRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTEyYzJlODYwJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Mb2NhdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vTG9jYXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9Mb2NhdGlvbi52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMTJjMmU4NjBcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcxMmMyZTg2MCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzEyYzJlODYwJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9Mb2NhdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MTJjMmU4NjAmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcxMmMyZTg2MCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vT3RoZXJJZGVudGlmaWVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03OGI2NDQwNCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vT3RoZXJJZGVudGlmaWVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9PdGhlcklkZW50aWZpZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9PdGhlcklkZW50aWZpZXIudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjc4YjY0NDA0XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNzhiNjQ0MDQnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc3OGI2NDQwNCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vT3RoZXJJZGVudGlmaWVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03OGI2NDQwNCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzc4YjY0NDA0JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9QYXJ0aWNpcGF0aW5nT3JnLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03ZDRkYWI3NCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUGFydGljaXBhdGluZ09yZy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUGFydGljaXBhdGluZ09yZy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1BhcnRpY2lwYXRpbmdPcmcudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjdkNGRhYjc0XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnN2Q0ZGFiNzQnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc3ZDRkYWI3NCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUGFydGljaXBhdGluZ09yZy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2Q0ZGFiNzQmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc3ZDRkYWI3NCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUGxhbm5lZERpc2J1cnNlbWVudC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDE3MmMyYWMmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1BsYW5uZWREaXNidXJzZW1lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUGxhbm5lZERpc2J1cnNlbWVudC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUGxhbm5lZERpc2J1cnNlbWVudC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMDE3MmMyYWNcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcwMTcyYzJhYycsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzAxNzJjMmFjJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9QbGFubmVkRGlzYnVyc2VtZW50LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wMTcyYzJhYyZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzAxNzJjMmFjJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9Qb2xpY3lNYXJrZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWJkOTg4ODkyJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Qb2xpY3lNYXJrZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1BvbGljeU1hcmtlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1BvbGljeU1hcmtlci52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiYmQ5ODg4OTJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdiZDk4ODg5MicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2JkOTg4ODkyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9Qb2xpY3lNYXJrZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWJkOTg4ODkyJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignYmQ5ODg4OTInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1JlY2lwaWVudENvdW50cnkudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdmMThiZTMwJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SZWNpcGllbnRDb3VudHJ5LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SZWNpcGllbnRDb3VudHJ5LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVjaXBpZW50Q291bnRyeS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiN2YxOGJlMzBcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc3ZjE4YmUzMCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzdmMThiZTMwJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9SZWNpcGllbnRDb3VudHJ5LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03ZjE4YmUzMCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzdmMThiZTMwJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9SZWNpcGllbnRSZWdpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWViZDY2MmRjJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SZWNpcGllbnRSZWdpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUmVjaXBpZW50UmVnaW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9SZWNpcGllbnRSZWdpb24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImViZDY2MmRjXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnZWJkNjYyZGMnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdlYmQ2NjJkYycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUmVjaXBpZW50UmVnaW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lYmQ2NjJkYyZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2ViZDY2MmRjJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9SZWxhdGVkQWN0aXZpdHkudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTJjYTA0YzAyJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SZWxhdGVkQWN0aXZpdHkudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1JlbGF0ZWRBY3Rpdml0eS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1JlbGF0ZWRBY3Rpdml0eS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMmNhMDRjMDJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcyY2EwNGMwMicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzJjYTA0YzAyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9SZWxhdGVkQWN0aXZpdHkudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTJjYTA0YzAyJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMmNhMDRjMDInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1JlcG9ydGluZ09yZ2FuaXphdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDM4YjBhZTYmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1JlcG9ydGluZ09yZ2FuaXphdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SZXBvcnRpbmdPcmdhbml6YXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1JlcG9ydGluZ09yZ2FuaXphdGlvbi52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNDM4YjBhZTZcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc0MzhiMGFlNicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzQzOGIwYWU2JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9SZXBvcnRpbmdPcmdhbml6YXRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQzOGIwYWU2JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNDM4YjBhZTYnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1Jlc3VsdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Mjc3Y2I0ZjAmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1Jlc3VsdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUmVzdWx0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvUmVzdWx0LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIyNzdjYjRmMFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzI3N2NiNGYwJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMjc3Y2I0ZjAnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1Jlc3VsdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Mjc3Y2I0ZjAmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcyNzdjYjRmMCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vU2VjdG9yLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zMjk0Njg1MSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vU2VjdG9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9TZWN0b3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9lbGVtZW50cy9TZWN0b3IudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjMyOTQ2ODUxXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMzI5NDY4NTEnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCczMjk0Njg1MScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vU2VjdG9yLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zMjk0Njg1MSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzMyOTQ2ODUxJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9UYWcudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTAxMTk2NjgyJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9UYWcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1RhZy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2VsZW1lbnRzL1RhZy52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMDExOTY2ODJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcwMTE5NjY4MicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzAxMTk2NjgyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9UYWcudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTAxMTk2NjgyJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMDExOTY2ODInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1RpdGxlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00NzRhNzEzZCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vVGl0bGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1RpdGxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvVGl0bGUudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjQ3NGE3MTNkXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNDc0YTcxM2QnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc0NzRhNzEzZCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVGl0bGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ3NGE3MTNkJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNDc0YTcxM2QnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1RyYW5zYWN0aW9ucy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MmI4YWZmMDAmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1RyYW5zYWN0aW9ucy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVHJhbnNhY3Rpb25zLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvZWxlbWVudHMvVHJhbnNhY3Rpb25zLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIyYjhhZmYwMFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzJiOGFmZjAwJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMmI4YWZmMDAnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1RyYW5zYWN0aW9ucy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MmI4YWZmMDAmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcyYjhhZmYwMCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vSW5kaWNhdG9yRGV0YWlsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01ZmYxNzc3MiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vSW5kaWNhdG9yRGV0YWlsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9JbmRpY2F0b3JEZXRhaWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL0luZGljYXRvckRldGFpbC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNWZmMTc3NzJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc1ZmYxNzc3MicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzVmZjE3NzcyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9JbmRpY2F0b3JEZXRhaWwudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTVmZjE3NzcyJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNWZmMTc3NzInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0luZGljYXRvckxpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTZmNzhjZjdmJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9JbmRpY2F0b3JMaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9JbmRpY2F0b3JMaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9JbmRpY2F0b3JMaXN0LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI2Zjc4Y2Y3ZlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzZmNzhjZjdmJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNmY3OGNmN2YnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0luZGljYXRvckxpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTZmNzhjZjdmJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNmY3OGNmN2YnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0FnZ3JlZ2F0aW9uU3RhdHVzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kZDc2M2U0YyZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQWdncmVnYXRpb25TdGF0dXMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FnZ3JlZ2F0aW9uU3RhdHVzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9BZ2dyZWdhdGlvblN0YXR1cy52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiZGQ3NjNlNGNcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdkZDc2M2U0YycsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2RkNzYzZTRjJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9BZ2dyZWdhdGlvblN0YXR1cy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZGQ3NjNlNGMmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdkZDc2M2U0YycsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vQmFzZWxpbmUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTZhYTZkMDYyJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9CYXNlbGluZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vQmFzZWxpbmUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL0Jhc2VsaW5lLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI2YWE2ZDA2MlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzZhYTZkMDYyJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNmFhNmQwNjInLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0Jhc2VsaW5lLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02YWE2ZDA2MiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzZhYTZkMDYyJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9EZXNjcmlwdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Nzc1YjYxZTImdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0Rlc2NyaXB0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9EZXNjcmlwdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvRGVzY3JpcHRpb24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjc3NWI2MWUyXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNzc1YjYxZTInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc3NzViNjFlMicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRGVzY3JpcHRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTc3NWI2MWUyJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNzc1YjYxZTInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0RvY3VtZW50TGluay52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9M2NiMjYwM2YmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0RvY3VtZW50TGluay52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vRG9jdW1lbnRMaW5rLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9Eb2N1bWVudExpbmsudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjNjYjI2MDNmXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnM2NiMjYwM2YnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCczY2IyNjAzZicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRG9jdW1lbnRMaW5rLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zY2IyNjAzZiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzNjYjI2MDNmJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9JbmRpY2F0b3JBc2NlbmRpbmcudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWY3ZWQ2YWRhJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9JbmRpY2F0b3JBc2NlbmRpbmcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0luZGljYXRvckFzY2VuZGluZy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvSW5kaWNhdG9yQXNjZW5kaW5nLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJmN2VkNmFkYVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2Y3ZWQ2YWRhJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnZjdlZDZhZGEnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0luZGljYXRvckFzY2VuZGluZy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZjdlZDZhZGEmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdmN2VkNmFkYScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vTWVhc3VyZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2E2NGQ5NDQmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL01lYXN1cmUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL01lYXN1cmUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL01lYXN1cmUudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjdhNjRkOTQ0XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnN2E2NGQ5NDQnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc3YTY0ZDk0NCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vTWVhc3VyZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2E2NGQ5NDQmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc3YTY0ZDk0NCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUGVyaW9kLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01ODE2ODQ2YSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUGVyaW9kLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9QZXJpb2QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9pbmRpY2F0b3JzL2VsZW1lbnRzL1BlcmlvZC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNTgxNjg0NmFcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc1ODE2ODQ2YScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzU4MTY4NDZhJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9QZXJpb2QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTU4MTY4NDZhJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNTgxNjg0NmEnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1JlZmVyZW5jZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDg1YTRkOWUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1JlZmVyZW5jZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUmVmZXJlbmNlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvaW5kaWNhdG9ycy9lbGVtZW50cy9SZWZlcmVuY2UudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjQ4NWE0ZDllXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNDg1YTRkOWUnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc0ODVhNGQ5ZScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUmVmZXJlbmNlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00ODVhNGQ5ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzQ4NWE0ZDllJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9UaXRsZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9OGY2ZmY2ODQmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1RpdGxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9UaXRsZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L2luZGljYXRvcnMvZWxlbWVudHMvVGl0bGUudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjhmNmZmNjg0XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnOGY2ZmY2ODQnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc4ZjZmZjY4NCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVGl0bGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPThmNmZmNjg0JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignOGY2ZmY2ODQnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0FjdGl2aXRpZXNFbGVtZW50cy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWE0MGZjZjQmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FjdGl2aXRpZXNFbGVtZW50cy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BY3Rpdml0aWVzRWxlbWVudHMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL0FjdGl2aXRpZXNFbGVtZW50cy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD01YTQwZmNmNCZsYW5nPXNjc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0FjdGl2aXRpZXNFbGVtZW50cy52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNWE0MGZjZjRcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc1YTQwZmNmNCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzVhNDBmY2Y0JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9BY3Rpdml0aWVzRWxlbWVudHMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTVhNDBmY2Y0JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNWE0MGZjZjQnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0FjdGl2aXR5RWxlbWVudC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2Y1ZDYwYTYmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FjdGl2aXR5RWxlbWVudC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BY3Rpdml0eUVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL0FjdGl2aXR5RWxlbWVudC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiN2Y1ZDYwYTZcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc3ZjVkNjBhNicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzdmNWQ2MGE2JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9BY3Rpdml0eUVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdmNWQ2MGE2JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignN2Y1ZDYwYTYnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0FkZEFjdGl2aXR5QnV0dG9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wNTBlMTczYyZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQWRkQWN0aXZpdHlCdXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FkZEFjdGl2aXR5QnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvQWRkQWN0aXZpdHlCdXR0b24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjA1MGUxNzNjXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMDUwZTE3M2MnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcwNTBlMTczYycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQWRkQWN0aXZpdHlCdXR0b24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTA1MGUxNzNjJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMDUwZTE3M2MnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0Rvd25sb2FkQWN0aXZpdHlCdXR0b24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTY2MWU2ZjhlJnNjb3BlZD10cnVlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Eb3dubG9hZEFjdGl2aXR5QnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9Eb3dubG9hZEFjdGl2aXR5QnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBcIi4vRG93bmxvYWRBY3Rpdml0eUJ1dHRvbi52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD02NjFlNmY4ZSZzY29wZWQ9dHJ1ZSZsYW5nPXNjc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fc2NvcGVJZCcsXCJkYXRhLXYtNjYxZTZmOGVcIl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9Eb3dubG9hZEFjdGl2aXR5QnV0dG9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI2NjFlNmY4ZVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzY2MWU2ZjhlJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNjYxZTZmOGUnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0Rvd25sb2FkQWN0aXZpdHlCdXR0b24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTY2MWU2ZjhlJnNjb3BlZD10cnVlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNjYxZTZmOGUnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0VsZW1lbnRzTm90ZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWJjMDQxZjkmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0VsZW1lbnRzTm90ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vRWxlbWVudHNOb3RlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvRWxlbWVudHNOb3RlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI1YmMwNDFmOVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzViYzA0MWY5JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNWJjMDQxZjknLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0VsZW1lbnRzTm90ZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWJjMDQxZjkmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc1YmMwNDFmOScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vRW1wdHlBY3Rpdml0eS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9OWFlZjk2ODgmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0VtcHR5QWN0aXZpdHkudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0VtcHR5QWN0aXZpdHkudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wYXJ0aWFscy9FbXB0eUFjdGl2aXR5LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI5YWVmOTY4OFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzlhZWY5Njg4JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnOWFlZjk2ODgnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0VtcHR5QWN0aXZpdHkudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTlhZWY5Njg4JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignOWFlZjk2ODgnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1BhZ2VUaXRsZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzU4OWU4NmUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1BhZ2VUaXRsZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9QYWdlVGl0bGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL1BhZ2VUaXRsZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNzU4OWU4NmVcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc3NTg5ZTg2ZScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzc1ODllODZlJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9QYWdlVGl0bGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTc1ODllODZlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNzU4OWU4NmUnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1NpZGViYXJIZWxwQmxvY2sudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWZlZjI2YTgwJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9TaWRlYmFySGVscEJsb2NrLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9TaWRlYmFySGVscEJsb2NrLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGFydGlhbHMvU2lkZWJhckhlbHBCbG9jay52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiZmVmMjZhODBcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdmZWYyNmE4MCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2ZlZjI2YTgwJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9TaWRlYmFySGVscEJsb2NrLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1mZWYyNmE4MCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2ZlZjI2YTgwJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9UYWJsZUxheW91dC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWQ4NGExZDgmc2NvcGVkPXRydWUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1RhYmxlTGF5b3V0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1RhYmxlTGF5b3V0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9UYWJsZUxheW91dC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD01ZDg0YTFkOCZzY29wZWQ9dHJ1ZSZsYW5nPWNzc1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19zY29wZUlkJyxcImRhdGEtdi01ZDg0YTFkOFwiXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BhcnRpYWxzL1RhYmxlTGF5b3V0LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI1ZDg0YTFkOFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzVkODRhMWQ4JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNWQ4NGExZDgnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1RhYmxlTGF5b3V0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01ZDg0YTFkOCZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzVkODRhMWQ4JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9QZXJpb2RzRGV0YWlsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03MmUzYjU5OSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUGVyaW9kc0RldGFpbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUGVyaW9kc0RldGFpbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BlcmlvZHMvUGVyaW9kc0RldGFpbC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNzJlM2I1OTlcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc3MmUzYjU5OScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzcyZTNiNTk5JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9QZXJpb2RzRGV0YWlsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03MmUzYjU5OSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzcyZTNiNTk5JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9QZXJpb2RzTGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZDMzYjI5MzQmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1BlcmlvZHNMaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9QZXJpb2RzTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3BlcmlvZHMvUGVyaW9kc0xpc3QudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImQzM2IyOTM0XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnZDMzYjI5MzQnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdkMzNiMjkzNCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUGVyaW9kc0xpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWQzM2IyOTM0JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignZDMzYjI5MzQnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0FjdHVhbFZhbHVlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03OWE4OGZjNSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQWN0dWFsVmFsdWUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FjdHVhbFZhbHVlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcGVyaW9kcy9lbGVtZW50cy9BY3R1YWxWYWx1ZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNzlhODhmYzVcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc3OWE4OGZjNScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzc5YTg4ZmM1JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9BY3R1YWxWYWx1ZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzlhODhmYzUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc3OWE4OGZjNScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vVGFyZ2V0VmFsdWUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBlNTcxYjIyJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9UYXJnZXRWYWx1ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVGFyZ2V0VmFsdWUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9wZXJpb2RzL2VsZW1lbnRzL1RhcmdldFZhbHVlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIwZTU3MWIyMlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzBlNTcxYjIyJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMGU1NzFiMjInLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1RhcmdldFZhbHVlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wZTU3MWIyMiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzBlNTcxYjIyJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9SZXN1bHREZXRhaWwudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTZjMjBmMTc4JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SZXN1bHREZXRhaWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1Jlc3VsdERldGFpbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvUmVzdWx0RGV0YWlsLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI2YzIwZjE3OFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzZjMjBmMTc4JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNmMyMGYxNzgnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1Jlc3VsdERldGFpbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NmMyMGYxNzgmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc2YzIwZjE3OCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUmVzdWx0RWxlbWVudC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MThmZTQyMTkmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1Jlc3VsdEVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1Jlc3VsdEVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL1Jlc3VsdEVsZW1lbnQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjE4ZmU0MjE5XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMThmZTQyMTknLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcxOGZlNDIxOScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUmVzdWx0RWxlbWVudC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MThmZTQyMTkmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcxOGZlNDIxOScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUmVzdWx0TGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YWEwNmE4NWUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1Jlc3VsdExpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1Jlc3VsdExpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL1Jlc3VsdExpc3QudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImFhMDZhODVlXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnYWEwNmE4NWUnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdhYTA2YTg1ZScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUmVzdWx0TGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YWEwNmE4NWUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdhYTA2YTg1ZScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vRG9jdW1lbnRMaW5rLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wZTJlODMwNyZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRG9jdW1lbnRMaW5rLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9Eb2N1bWVudExpbmsudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL0RvY3VtZW50TGluay52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMGUyZTgzMDdcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcwZTJlODMwNycsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzBlMmU4MzA3JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9Eb2N1bWVudExpbmsudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBlMmU4MzA3JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMGUyZTgzMDcnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0luZGljYXRvci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NGMyZTY4MmQmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0luZGljYXRvci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vSW5kaWNhdG9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvcmVzdWx0cy9lbGVtZW50cy9JbmRpY2F0b3IudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjRjMmU2ODJkXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNGMyZTY4MmQnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc0YzJlNjgyZCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vSW5kaWNhdG9yLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00YzJlNjgyZCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzRjMmU2ODJkJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9SZWZlcmVuY2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTgxYzIyOTJlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SZWZlcmVuY2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1JlZmVyZW5jZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3Jlc3VsdHMvZWxlbWVudHMvUmVmZXJlbmNlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI4MWMyMjkyZVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzgxYzIyOTJlJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnODFjMjI5MmUnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1JlZmVyZW5jZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ODFjMjI5MmUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc4MWMyMjkyZScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUmVzdWx0VHlwZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9M2MyMWM0NmUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1Jlc3VsdFR5cGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1Jlc3VsdFR5cGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL1Jlc3VsdFR5cGUudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjNjMjFjNDZlXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnM2MyMWM0NmUnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCczYzIxYzQ2ZScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUmVzdWx0VHlwZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9M2MyMWM0NmUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCczYzIxYzQ2ZScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vVGl0bGVEZXNjcmlwdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZDEyZmVkNTQmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1RpdGxlRGVzY3JpcHRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1RpdGxlRGVzY3JpcHRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS9yZXN1bHRzL2VsZW1lbnRzL1RpdGxlRGVzY3JpcHRpb24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImQxMmZlZDU0XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnZDEyZmVkNTQnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdkMTJmZWQ1NCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVGl0bGVEZXNjcmlwdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZDEyZmVkNTQmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdkMTJmZWQ1NCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vVHJhbnNhY3Rpb25EZXRhaWwudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTA3YzA2YzEyJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9UcmFuc2FjdGlvbkRldGFpbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVHJhbnNhY3Rpb25EZXRhaWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvVHJhbnNhY3Rpb25EZXRhaWwudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjA3YzA2YzEyXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMDdjMDZjMTInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcwN2MwNmMxMicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVHJhbnNhY3Rpb25EZXRhaWwudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTA3YzA2YzEyJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMDdjMDZjMTInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1RyYW5zYWN0aW9uRWxlbWVudC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZDU2YzExZWEmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1RyYW5zYWN0aW9uRWxlbWVudC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVHJhbnNhY3Rpb25FbGVtZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL1RyYW5zYWN0aW9uRWxlbWVudC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiZDU2YzExZWFcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdkNTZjMTFlYScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2Q1NmMxMWVhJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9UcmFuc2FjdGlvbkVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWQ1NmMxMWVhJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignZDU2YzExZWEnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1RyYW5zYWN0aW9uTGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Y2M4NzI3YzImdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1RyYW5zYWN0aW9uTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVHJhbnNhY3Rpb25MaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL1RyYW5zYWN0aW9uTGlzdC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiY2M4NzI3YzJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdjYzg3MjdjMicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2NjODcyN2MyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9UcmFuc2FjdGlvbkxpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWNjODcyN2MyJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignY2M4NzI3YzInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0FpZFR5cGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWRmOTZjOTZhJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9BaWRUeXBlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BaWRUeXBlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL0FpZFR5cGUudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImRmOTZjOTZhXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnZGY5NmM5NmEnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdkZjk2Yzk2YScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQWlkVHlwZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZGY5NmM5NmEmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdkZjk2Yzk2YScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vRGVzY3JpcHRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTIyYThhNzMxJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9EZXNjcmlwdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vRGVzY3JpcHRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvRGVzY3JpcHRpb24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjIyYThhNzMxXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMjJhOGE3MzEnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcyMmE4YTczMScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRGVzY3JpcHRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTIyYThhNzMxJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMjJhOGE3MzEnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0Rpc2J1cnNlbWVudENoYW5uZWwudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWM3ODUzMDUyJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9EaXNidXJzZW1lbnRDaGFubmVsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9EaXNidXJzZW1lbnRDaGFubmVsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL0Rpc2J1cnNlbWVudENoYW5uZWwudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImM3ODUzMDUyXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnYzc4NTMwNTInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdjNzg1MzA1MicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRGlzYnVyc2VtZW50Q2hhbm5lbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Yzc4NTMwNTImdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdjNzg1MzA1MicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vRmluYW5jZVR5cGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWU1YzdjNTJlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9GaW5hbmNlVHlwZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vRmluYW5jZVR5cGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvRmluYW5jZVR5cGUudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImU1YzdjNTJlXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnZTVjN2M1MmUnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdlNWM3YzUyZScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRmluYW5jZVR5cGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWU1YzdjNTJlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignZTVjN2M1MmUnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0Zsb3dUeXBlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wZTQwNmFhMyZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRmxvd1R5cGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0Zsb3dUeXBlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL0Zsb3dUeXBlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIwZTQwNmFhM1wiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzBlNDA2YWEzJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMGU0MDZhYTMnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0Zsb3dUeXBlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wZTQwNmFhMyZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzBlNDA2YWEzJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9Qcm92aWRlck9yZ2FuaXphdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MzVlZjY4NWYmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1Byb3ZpZGVyT3JnYW5pemF0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9Qcm92aWRlck9yZ2FuaXphdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9Qcm92aWRlck9yZ2FuaXphdGlvbi52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMzVlZjY4NWZcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCczNWVmNjg1ZicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzM1ZWY2ODVmJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9Qcm92aWRlck9yZ2FuaXphdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MzVlZjY4NWYmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCczNWVmNjg1ZicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUmVjZWl2ZXJPcmdhbml6YXRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPThhMDhkZjQ2JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SZWNlaXZlck9yZ2FuaXphdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUmVjZWl2ZXJPcmdhbml6YXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvUmVjZWl2ZXJPcmdhbml6YXRpb24udnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjhhMDhkZjQ2XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnOGEwOGRmNDYnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc4YTA4ZGY0NicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUmVjZWl2ZXJPcmdhbml6YXRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPThhMDhkZjQ2JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignOGEwOGRmNDYnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1JlY2lwaWVudENvdW50cnkudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQzZDUzNmQ4JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SZWNpcGllbnRDb3VudHJ5LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SZWNpcGllbnRDb3VudHJ5LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYWN0aXZpdHkvdHJhbnNhY3Rpb25zL2VsZW1lbnRzL1JlY2lwaWVudENvdW50cnkudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjQzZDUzNmQ4XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNDNkNTM2ZDgnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc0M2Q1MzZkOCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUmVjaXBpZW50Q291bnRyeS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDNkNTM2ZDgmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc0M2Q1MzZkOCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUmVjaXBpZW50UmVnaW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wYTMwYmFhMiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUmVjaXBpZW50UmVnaW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SZWNpcGllbnRSZWdpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvUmVjaXBpZW50UmVnaW9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIwYTMwYmFhMlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzBhMzBiYWEyJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMGEzMGJhYTInLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1JlY2lwaWVudFJlZ2lvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGEzMGJhYTImdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcwYTMwYmFhMicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vU2VjdG9yLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00ZWViYWE0MSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vU2VjdG9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9TZWN0b3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvU2VjdG9yLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI0ZWViYWE0MVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzRlZWJhYTQxJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNGVlYmFhNDEnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1NlY3Rvci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NGVlYmFhNDEmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc0ZWViYWE0MScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vVGllZFN0YXR1cy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTcwODk4NDEmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1RpZWRTdGF0dXMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1RpZWRTdGF0dXMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9hY3Rpdml0eS90cmFuc2FjdGlvbnMvZWxlbWVudHMvVGllZFN0YXR1cy52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNTcwODk4NDFcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc1NzA4OTg0MScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzU3MDg5ODQxJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9UaWVkU3RhdHVzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01NzA4OTg0MSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzU3MDg5ODQxJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9UcmFuc2FjdGlvbkRhdGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTYxMmZjYzYxJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9UcmFuc2FjdGlvbkRhdGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1RyYW5zYWN0aW9uRGF0ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9UcmFuc2FjdGlvbkRhdGUudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjYxMmZjYzYxXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNjEyZmNjNjEnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc2MTJmY2M2MScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVHJhbnNhY3Rpb25EYXRlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02MTJmY2M2MSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzYxMmZjYzYxJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9UcmFuc2FjdGlvblR5cGUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTYzZjY3NDI2JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9UcmFuc2FjdGlvblR5cGUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1RyYW5zYWN0aW9uVHlwZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9UcmFuc2FjdGlvblR5cGUudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjYzZjY3NDI2XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNjNmNjc0MjYnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc2M2Y2NzQyNicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVHJhbnNhY3Rpb25UeXBlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02M2Y2NzQyNiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzYzZjY3NDI2JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9WYWx1ZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MTY5NzI4MzQmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1ZhbHVlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9WYWx1ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2FjdGl2aXR5L3RyYW5zYWN0aW9ucy9lbGVtZW50cy9WYWx1ZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMTY5NzI4MzRcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcxNjk3MjgzNCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzE2OTcyODM0JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9WYWx1ZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MTY5NzI4MzQmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcxNjk3MjgzNCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vQXVkaXRMaXN0aW5nLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1mYjYxOWYyMCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQXVkaXRMaXN0aW5nLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0F1ZGl0TGlzdGluZy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvYXVkaXQvQXVkaXRMaXN0aW5nLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJmYjYxOWYyMFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2ZiNjE5ZjIwJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnZmI2MTlmMjAnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0F1ZGl0TGlzdGluZy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZmI2MTlmMjAmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdmYjYxOWYyMCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vRGFzaGJvYXJkR3JhcGgudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTMyMjU3ZjcwJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9EYXNoYm9hcmRHcmFwaC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9EYXNoYm9hcmRHcmFwaC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvZGFzaGJvYXJkL0Rhc2hib2FyZEdyYXBoLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIzMjI1N2Y3MFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzMyMjU3ZjcwJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMzIyNTdmNzAnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0Rhc2hib2FyZEdyYXBoLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zMjI1N2Y3MCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzMyMjU3ZjcwJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9EYXNoYm9hcmRMaXN0U2VjdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NGYyMjVkM2UmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0Rhc2hib2FyZExpc3RTZWN0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCJcbmV4cG9ydCAqIGZyb20gXCIuL0Rhc2hib2FyZExpc3RTZWN0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCJcblxuaW1wb3J0IFwiLi9EYXNoYm9hcmRMaXN0U2VjdGlvbi52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD00ZjIyNWQzZSZsYW5nPXNjc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2Rhc2hib2FyZC9EYXNoYm9hcmRMaXN0U2VjdGlvbi52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNGYyMjVkM2VcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc0ZjIyNWQzZScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzRmMjI1ZDNlJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9EYXNoYm9hcmRMaXN0U2VjdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NGYyMjVkM2UmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc0ZjIyNWQzZScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vRGFzaGJvYXJkUGFnZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZTExOWMzZjYmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0Rhc2hib2FyZFBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vRGFzaGJvYXJkUGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvZGFzaGJvYXJkL0Rhc2hib2FyZFBhZ2UudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImUxMTljM2Y2XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnZTExOWMzZjYnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdlMTE5YzNmNicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vRGFzaGJvYXJkUGFnZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZTExOWMzZjYmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdlMTE5YzNmNicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vRGFzaGJvYXJkU3RhdHNTZWN0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yN2M2ZmIzYyZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRGFzaGJvYXJkU3RhdHNTZWN0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCJcbmV4cG9ydCAqIGZyb20gXCIuL0Rhc2hib2FyZFN0YXRzU2VjdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvZGFzaGJvYXJkL0Rhc2hib2FyZFN0YXRzU2VjdGlvbi52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMjdjNmZiM2NcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcyN2M2ZmIzYycsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzI3YzZmYjNjJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9EYXNoYm9hcmRTdGF0c1NlY3Rpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI3YzZmYjNjJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMjdjNmZiM2MnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0FjdGl2aXR5VXBsb2FkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wZWQ1ZmRkMiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQWN0aXZpdHlVcGxvYWQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vQWN0aXZpdHlVcGxvYWQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9BY3Rpdml0eVVwbG9hZC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMGVkNWZkZDJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcwZWQ1ZmRkMicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzBlZDVmZGQyJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9BY3Rpdml0eVVwbG9hZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MGVkNWZkZDImdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcwZWQ1ZmRkMicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vQWN0aXZpdHlYbHNVcGxvYWQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI4MDdjMDhjJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9BY3Rpdml0eVhsc1VwbG9hZC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BY3Rpdml0eVhsc1VwbG9hZC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvaW1wb3J0L0FjdGl2aXR5WGxzVXBsb2FkLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIyODA3YzA4Y1wiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzI4MDdjMDhjJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMjgwN2MwOGMnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0FjdGl2aXR5WGxzVXBsb2FkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yODA3YzA4YyZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzI4MDdjMDhjJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9JbXBvcnRMaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00MGQ3ODcwYSZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vSW1wb3J0TGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9JbXBvcnRMaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9JbXBvcnRMaXN0LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTQwZDc4NzBhJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZVwiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19zY29wZUlkJyxcImRhdGEtdi00MGQ3ODcwYVwiXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9JbXBvcnRMaXN0LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI0MGQ3ODcwYVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzQwZDc4NzBhJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNDBkNzg3MGEnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0ltcG9ydExpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQwZDc4NzBhJnNjb3BlZD10cnVlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNDBkNzg3MGEnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0ltcG9ydFBsYWNlaG9sZGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01ZDE0OGQzNyZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vSW1wb3J0UGxhY2Vob2xkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vSW1wb3J0UGxhY2Vob2xkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL2ltcG9ydC9JbXBvcnRQbGFjZWhvbGRlci52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNWQxNDhkMzdcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc1ZDE0OGQzNycsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzVkMTQ4ZDM3JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9JbXBvcnRQbGFjZWhvbGRlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWQxNDhkMzcmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc1ZDE0OGQzNycsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vTGlzdEVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTlhNjA4NDMyJnNjb3BlZD10cnVlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9MaXN0RWxlbWVudC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9MaXN0RWxlbWVudC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBcIi4vTGlzdEVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9OWE2MDg0MzImc2NvcGVkPXRydWUmbGFuZz1jc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fc2NvcGVJZCcsXCJkYXRhLXYtOWE2MDg0MzJcIl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvTGlzdEVsZW1lbnQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjlhNjA4NDMyXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnOWE2MDg0MzInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc5YTYwODQzMicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vTGlzdEVsZW1lbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTlhNjA4NDMyJnNjb3BlZD10cnVlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignOWE2MDg0MzInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1hsc0xpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTVmNTAwOGI0JnNjb3BlZD10cnVlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9YbHNMaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1hsc0xpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL1hsc0xpc3QudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NWY1MDA4YjQmc2NvcGVkPXRydWUmbGFuZz1jc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fc2NvcGVJZCcsXCJkYXRhLXYtNWY1MDA4YjRcIl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9pbXBvcnQvWGxzTGlzdC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNWY1MDA4YjRcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc1ZjUwMDhiNCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzVmNTAwOGI0JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9YbHNMaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01ZjUwMDhiNCZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzVmNTAwOGI0JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9PcmdhbmlzYXRpb25EYXRhLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00YWRhNWYzNiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vT3JnYW5pc2F0aW9uRGF0YS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vT3JnYW5pc2F0aW9uRGF0YS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL09yZ2FuaXNhdGlvbkRhdGEudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NGFkYTVmMzYmbGFuZz1zY3NzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vT3JnYW5pc2F0aW9uRGF0YS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNGFkYTVmMzZcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc0YWRhNWYzNicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzRhZGE1ZjM2JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9PcmdhbmlzYXRpb25EYXRhLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00YWRhNWYzNiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzRhZGE1ZjM2JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9PcmdhbmlzYXRpb25FbGVtZW50cy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDU0ZWE4MDMmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL09yZ2FuaXNhdGlvbkVsZW1lbnRzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL09yZ2FuaXNhdGlvbkVsZW1lbnRzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vT3JnYW5pc2F0aW9uRWxlbWVudHMudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjQ1NGVhODAzXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNDU0ZWE4MDMnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc0NTRlYTgwMycsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vT3JnYW5pc2F0aW9uRWxlbWVudHMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ1NGVhODAzJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNDU0ZWE4MDMnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL09yZ2FuaXNhdGlvbkVsZW1lbnRzRGV0YWlsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yODM5ZTA5OCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vT3JnYW5pc2F0aW9uRWxlbWVudHNEZXRhaWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vT3JnYW5pc2F0aW9uRWxlbWVudHNEZXRhaWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9PcmdhbmlzYXRpb25FbGVtZW50c0RldGFpbC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMjgzOWUwOThcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcyODM5ZTA5OCcsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzI4MzllMDk4JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9PcmdhbmlzYXRpb25FbGVtZW50c0RldGFpbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjgzOWUwOTgmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcyODM5ZTA5OCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vRG9jdW1lbnRMaW5rLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lZjZkMzEyYSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRG9jdW1lbnRMaW5rLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0RvY3VtZW50TGluay52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL0RvY3VtZW50TGluay52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiZWY2ZDMxMmFcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdlZjZkMzEyYScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2VmNmQzMTJhJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9Eb2N1bWVudExpbmsudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWVmNmQzMTJhJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignZWY2ZDMxMmEnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1JlY2lwaWVudENvdW50cnlCdWRnZXQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWNiZTg3NmQwJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SZWNpcGllbnRDb3VudHJ5QnVkZ2V0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1JlY2lwaWVudENvdW50cnlCdWRnZXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9SZWNpcGllbnRDb3VudHJ5QnVkZ2V0LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJjYmU4NzZkMFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2NiZTg3NmQwJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnY2JlODc2ZDAnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1JlY2lwaWVudENvdW50cnlCdWRnZXQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWNiZTg3NmQwJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignY2JlODc2ZDAnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1JlcG9ydGluZ09yZ0J1ZGdldC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjQ2N2QyZjEmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1JlcG9ydGluZ09yZ0J1ZGdldC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SZXBvcnRpbmdPcmdCdWRnZXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9SZXBvcnRpbmdPcmdCdWRnZXQudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjI0NjdkMmYxXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMjQ2N2QyZjEnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcyNDY3ZDJmMScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUmVwb3J0aW5nT3JnQnVkZ2V0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yNDY3ZDJmMSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzI0NjdkMmYxJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9SZXBvcnRpbmdPcmdhbmlzYXRpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTY5OTlhZWUyJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SZXBvcnRpbmdPcmdhbmlzYXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUmVwb3J0aW5nT3JnYW5pc2F0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9vcmdhbmlzYXRpb24vZWxlbWVudHMvUmVwb3J0aW5nT3JnYW5pc2F0aW9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI2OTk5YWVlMlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzY5OTlhZWUyJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNjk5OWFlZTInLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1JlcG9ydGluZ09yZ2FuaXNhdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Njk5OWFlZTImdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc2OTk5YWVlMicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUmVwb3J0aW5nUmVnaW9uQnVkZ2V0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD04NWM5ZGMzZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUmVwb3J0aW5nUmVnaW9uQnVkZ2V0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1JlcG9ydGluZ1JlZ2lvbkJ1ZGdldC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1JlcG9ydGluZ1JlZ2lvbkJ1ZGdldC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiODVjOWRjM2VcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc4NWM5ZGMzZScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzg1YzlkYzNlJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9SZXBvcnRpbmdSZWdpb25CdWRnZXQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTg1YzlkYzNlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignODVjOWRjM2UnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1RvdGFsQnVkZ2V0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1kM2MwZDMzYSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vVG90YWxCdWRnZXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVG90YWxCdWRnZXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL29yZ2FuaXNhdGlvbi9lbGVtZW50cy9Ub3RhbEJ1ZGdldC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiZDNjMGQzM2FcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdkM2MwZDMzYScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2QzYzBkMzNhJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9Ub3RhbEJ1ZGdldC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZDNjMGQzM2EmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdkM2MwZDMzYScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vVG90YWxFeHBlbmRpdHVyZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDY1NWY5NTEmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1RvdGFsRXhwZW5kaXR1cmUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVG90YWxFeHBlbmRpdHVyZS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvb3JnYW5pc2F0aW9uL2VsZW1lbnRzL1RvdGFsRXhwZW5kaXR1cmUudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjQ2NTVmOTUxXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNDY1NWY5NTEnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc0NjU1Zjk1MScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vVG90YWxFeHBlbmRpdHVyZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDY1NWY5NTEmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc0NjU1Zjk1MScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUGFzc3dvcmRSZWNvdmVyeS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzAzODVkYTMmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1Bhc3N3b3JkUmVjb3ZlcnkudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUGFzc3dvcmRSZWNvdmVyeS52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvcmVzZXQvUGFzc3dvcmRSZWNvdmVyeS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNzAzODVkYTNcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc3MDM4NWRhMycsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzcwMzg1ZGEzJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9QYXNzd29yZFJlY292ZXJ5LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03MDM4NWRhMyZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzcwMzg1ZGEzJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9SZXNldFBhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTM2Yjc2NGJiJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SZXNldFBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1Jlc2V0UGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgXCIuL1Jlc2V0UGFnZS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0zNmI3NjRiYiZsYW5nPXNjc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3Jlc2V0L1Jlc2V0UGFnZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMzZiNzY0YmJcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCczNmI3NjRiYicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzM2Yjc2NGJiJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9SZXNldFBhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTM2Yjc2NGJiJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignMzZiNzY0YmInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1Jlc2V0UGFzc3dvcmQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ1YjQyY2M3JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9SZXNldFBhc3N3b3JkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SZXNldFBhc3N3b3JkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3MvcmVzZXQvUmVzZXRQYXNzd29yZC52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiNDViNDJjYzdcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCc0NWI0MmNjNycsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzQ1YjQyY2M3JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9SZXNldFBhc3N3b3JkLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00NWI0MmNjNyZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzQ1YjQyY2M3JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9TZXR0aW5nRGVmYXVsdEZvcm0udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTRkODY0NjY3JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9TZXR0aW5nRGVmYXVsdEZvcm0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1NldHRpbmdEZWZhdWx0Rm9ybS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3NldHRpbmcvU2V0dGluZ0RlZmF1bHRGb3JtLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI0ZDg2NDY2N1wiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzRkODY0NjY3JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNGQ4NjQ2NjcnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1NldHRpbmdEZWZhdWx0Rm9ybS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NGQ4NjQ2NjcmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc0ZDg2NDY2NycsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vU2V0dGluZ1BhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTgxYTdmZDg2JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9TZXR0aW5nUGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vU2V0dGluZ1BhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zZXR0aW5nL1NldHRpbmdQYWdlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI4MWE3ZmQ4NlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzgxYTdmZDg2JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnODFhN2ZkODYnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1NldHRpbmdQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD04MWE3ZmQ4NiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzgxYTdmZDg2JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9TZXR0aW5nUHVibGlzaGluZ0Zvcm0udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTYzMDc3MzA1JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9TZXR0aW5nUHVibGlzaGluZ0Zvcm0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1NldHRpbmdQdWJsaXNoaW5nRm9ybS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3NldHRpbmcvU2V0dGluZ1B1Ymxpc2hpbmdGb3JtLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI2MzA3NzMwNVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzYzMDc3MzA1JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNjMwNzczMDUnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1NldHRpbmdQdWJsaXNoaW5nRm9ybS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NjMwNzczMDUmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc2MzA3NzMwNScsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vT3JnYW5pc2F0aW9uTGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzViOTkwNjAmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL09yZ2FuaXNhdGlvbkxpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vT3JnYW5pc2F0aW9uTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvc3VwZXJhZG1pbi9PcmdhbmlzYXRpb25MaXN0LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI3NWI5OTA2MFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzc1Yjk5MDYwJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNzViOTkwNjAnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL09yZ2FuaXNhdGlvbkxpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTc1Yjk5MDYwJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNzViOTkwNjAnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1N5c3RlbVZlcnNpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTNlNGY1MTIxJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9TeXN0ZW1WZXJzaW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1N5c3RlbVZlcnNpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZzZXR1cD10cnVlJmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3N1cGVyYWRtaW4vU3lzdGVtVmVyc2lvbi52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiM2U0ZjUxMjFcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCczZTRmNTEyMScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzNlNGY1MTIxJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9TeXN0ZW1WZXJzaW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zZTRmNTEyMSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzNlNGY1MTIxJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9BZG1pbkJhci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDU5NGFjZDUmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FkbWluQmFyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FkbWluQmFyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zdXBlcmFkbWluL2NvbXBvbmVudHMvQWRtaW5CYXIudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjQ1OTRhY2Q1XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNDU5NGFjZDUnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc0NTk0YWNkNScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQWRtaW5CYXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTQ1OTRhY2Q1JnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNDU5NGFjZDUnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1RhYmxlTGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDViMjYzNGImdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1RhYmxlTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vVGFibGVMaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBcIi4vVGFibGVMaXN0LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTA1YjI2MzRiJmxhbmc9Y3NzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy9zdXBlcmFkbWluL2NvbXBvbmVudHMvVGFibGVMaXN0LnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIwNWIyNjM0YlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzA1YjI2MzRiJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMDViMjYzNGInLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1RhYmxlTGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDViMjYzNGImdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcwNWIyNjM0YicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vVXNlckxpc3RpbmcudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTA2MTFkOWYwJnNjb3BlZD10cnVlJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Vc2VyTGlzdGluZy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9Vc2VyTGlzdGluZy52dWU/dnVlJnR5cGU9c2NyaXB0JnNldHVwPXRydWUmbGFuZz10c1wiXG5cbmltcG9ydCBcIi4vVXNlckxpc3RpbmcudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MDYxMWQ5ZjAmc2NvcGVkPXRydWUmbGFuZz1jc3NcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fc2NvcGVJZCcsXCJkYXRhLXYtMDYxMWQ5ZjBcIl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy91c2VyL1VzZXJMaXN0aW5nLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIwNjExZDlmMFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzA2MTFkOWYwJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMDYxMWQ5ZjAnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1VzZXJMaXN0aW5nLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0wNjExZDlmMCZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzA2MTFkOWYwJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9Vc2VyUHJvZmlsZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Mzc5MjcwYTYmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1VzZXJQcm9maWxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1VzZXJQcm9maWxlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy91c2VyL1VzZXJQcm9maWxlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCIzNzkyNzBhNlwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzM3OTI3MGE2JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnMzc5MjcwYTYnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1VzZXJQcm9maWxlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zNzkyNzBhNiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzM3OTI3MGE2JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9BYm91dFBhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdkOWZhOTA0XCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQWJvdXRQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qc1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BYm91dFBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvQWJvdXRQYWdlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI3ZDlmYTkwNFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzdkOWZhOTA0JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnN2Q5ZmE5MDQnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0Fib3V0UGFnZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2Q5ZmE5MDRcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignN2Q5ZmE5MDQnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0VtYWlsVmVyaWZpY2F0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03Y2RhNWMxOSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vRW1haWxWZXJpZmljYXRpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0VtYWlsVmVyaWZpY2F0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL0VtYWlsVmVyaWZpY2F0aW9uLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI3Y2RhNWMxOVwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzdjZGE1YzE5JywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnN2NkYTVjMTknLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0VtYWlsVmVyaWZpY2F0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD03Y2RhNWMxOSZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzdjZGE1YzE5JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9JYXRpUmVnaXN0ZXJQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xN2U2MzJhNiZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vSWF0aVJlZ2lzdGVyUGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuZXhwb3J0ICogZnJvbSBcIi4vSWF0aVJlZ2lzdGVyUGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgXCJAdnVlZm9ybS9tdWx0aXNlbGVjdC90aGVtZXMvZGVmYXVsdC5jc3M/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPWNzc1wiXG5pbXBvcnQgXCIuL0lhdGlSZWdpc3RlclBhZ2UudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTEmaWQ9MTdlNjMyYTYmbGFuZz1zY3NzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvSWF0aVJlZ2lzdGVyUGFnZS52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiMTdlNjMyYTZcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCcxN2U2MzJhNicsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJzE3ZTYzMmE2JywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9JYXRpUmVnaXN0ZXJQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xN2U2MzJhNiZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzE3ZTYzMmE2JywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9JYXRpU3RhbmRhcmQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWU2ODQ5NGQwJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9JYXRpU3RhbmRhcmQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIlxuZXhwb3J0ICogZnJvbSBcIi4vSWF0aVN0YW5kYXJkLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10cyZzZXR1cD10cnVlXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvSWF0aVN0YW5kYXJkLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCJlNjg0OTRkMFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJ2U2ODQ5NGQwJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnZTY4NDk0ZDAnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL0lhdGlTdGFuZGFyZC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZTY4NDk0ZDAmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdlNjg0OTRkMCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUHVibGlzaGluZ0NoZWNrbGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZGNhNjkzOTYmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1B1Ymxpc2hpbmdDaGVja2xpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIlxuZXhwb3J0ICogZnJvbSBcIi4vUHVibGlzaGluZ0NoZWNrbGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1B1Ymxpc2hpbmdDaGVja2xpc3QudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImRjYTY5Mzk2XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnZGNhNjkzOTYnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdkY2E2OTM5NicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUHVibGlzaGluZ0NoZWNrbGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZGNhNjkzOTYmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCdkY2E2OTM5NicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vUmVnaXN0ZXJQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01MjI2NjIwMCZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vUmVnaXN0ZXJQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SZWdpc3RlclBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IFwiQHZ1ZWZvcm0vbXVsdGlzZWxlY3QvdGhlbWVzL2RlZmF1bHQuY3NzP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1jc3NcIlxuaW1wb3J0IFwiLi9SZWdpc3RlclBhZ2UudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTEmaWQ9NTIyNjYyMDAmbGFuZz1zY3NzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvUmVnaXN0ZXJQYWdlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI1MjI2NjIwMFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzUyMjY2MjAwJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNTIyNjYyMDAnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1JlZ2lzdGVyUGFnZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTIyNjYyMDAmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCc1MjI2NjIwMCcsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vU3VwcG9ydFBhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTU2ZmZmOTgwJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9TdXBwb3J0UGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiXG5leHBvcnQgKiBmcm9tIFwiLi9TdXBwb3J0UGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL1N1cHBvcnRQYWdlLnZ1ZVwiXV0pXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICBfX2V4cG9ydHNfXy5fX2htcklkID0gXCI1NmZmZjk4MFwiXG4gIGNvbnN0IGFwaSA9IF9fVlVFX0hNUl9SVU5USU1FX19cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIWFwaS5jcmVhdGVSZWNvcmQoJzU2ZmZmOTgwJywgX19leHBvcnRzX18pKSB7XG4gICAgYXBpLnJlbG9hZCgnNTZmZmY5ODAnLCBfX2V4cG9ydHNfXylcbiAgfVxuICBcbiAgbW9kdWxlLmhvdC5hY2NlcHQoXCIuL1N1cHBvcnRQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01NmZmZjk4MCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzU2ZmZmOTgwJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9XZWxjb21lUGFnZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZWFlNDQ4NWFcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9XZWxjb21lUGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anNcIlxuZXhwb3J0ICogZnJvbSBcIi4vV2VsY29tZVBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvV2VsY29tZVBhZ2UudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcImVhZTQ0ODVhXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnZWFlNDQ4NWEnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCdlYWU0NDg1YScsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vV2VsY29tZVBhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWVhZTQ0ODVhXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJ2VhZTQ0ODVhJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9BZG1pbkZvb3Rlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTVmOWI0YmImdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FkbWluRm9vdGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FkbWluRm9vdGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmc2V0dXA9dHJ1ZSZsYW5nPXRzXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX2ZpbGUnLFwicmVzb3VyY2VzL2Fzc2V0cy9qcy92aWV3cy93ZWIvcGFydGlhbHMvQWRtaW5Gb290ZXIudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjU1ZjliNGJiXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnNTVmOWI0YmInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCc1NWY5YjRiYicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQWRtaW5Gb290ZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTU1ZjliNGJiJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignNTVmOWI0YmInLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL0pvaW5Ob3cudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI2OWY1MDg2JnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Kb2luTm93LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9Kb2luTm93LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5cbmltcG9ydCBleHBvcnRDb21wb25lbnQgZnJvbSBcIi9tZWRpYS9zYWxpbC9FNjYwNjQyRDYwNjQwNkExL1lvdW5nIElubm92YXRpb24gSW50ZXJuc2hpcC9Zb3VuZyBJbm5vdmF0aW9uIFByb2plY3RzL2lhdGktcHVibGlzaGVyL2lhdGlwdWJsaXNoZXIvbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9leHBvcnRIZWxwZXIuanNcIlxuY29uc3QgX19leHBvcnRzX18gPSAvKiNfX1BVUkVfXyovZXhwb3J0Q29tcG9uZW50KHNjcmlwdCwgW1sncmVuZGVyJyxyZW5kZXJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL0pvaW5Ob3cudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjI2OWY1MDg2XCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMjY5ZjUwODYnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcyNjlmNTA4NicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vSm9pbk5vdy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjY5ZjUwODYmdHM9dHJ1ZVwiLCAoKSA9PiB7XG4gICAgYXBpLnJlcmVuZGVyKCcyNjlmNTA4NicsIHJlbmRlcilcbiAgfSlcblxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IF9fZXhwb3J0c19fIiwiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcIi4vU2lnbkluLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1hMTg2MWYzZSZzY29wZWQ9dHJ1ZSZ0cz10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vU2lnbkluLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz10c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9TaWduSW4udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcblxuaW1wb3J0IFwiLi9TaWduSW4udnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9YTE4NjFmM2UmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCJcblxuaW1wb3J0IGV4cG9ydENvbXBvbmVudCBmcm9tIFwiL21lZGlhL3NhbGlsL0U2NjA2NDJENjA2NDA2QTEvWW91bmcgSW5ub3ZhdGlvbiBJbnRlcm5zaGlwL1lvdW5nIElubm92YXRpb24gUHJvamVjdHMvaWF0aS1wdWJsaXNoZXIvaWF0aXB1Ymxpc2hlci9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2V4cG9ydEhlbHBlci5qc1wiXG5jb25zdCBfX2V4cG9ydHNfXyA9IC8qI19fUFVSRV9fKi9leHBvcnRDb21wb25lbnQoc2NyaXB0LCBbWydyZW5kZXInLHJlbmRlcl0sWydfX3Njb3BlSWQnLFwiZGF0YS12LWExODYxZjNlXCJdLFsnX19maWxlJyxcInJlc291cmNlcy9hc3NldHMvanMvdmlld3Mvd2ViL3BhcnRpYWxzL1NpZ25Jbi52dWVcIl1dKVxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgX19leHBvcnRzX18uX19obXJJZCA9IFwiYTE4NjFmM2VcIlxuICBjb25zdCBhcGkgPSBfX1ZVRV9ITVJfUlVOVElNRV9fXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFhcGkuY3JlYXRlUmVjb3JkKCdhMTg2MWYzZScsIF9fZXhwb3J0c19fKSkge1xuICAgIGFwaS5yZWxvYWQoJ2ExODYxZjNlJywgX19leHBvcnRzX18pXG4gIH1cbiAgXG4gIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9TaWduSW4udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWExODYxZjNlJnNjb3BlZD10cnVlJnRzPXRydWVcIiwgKCkgPT4ge1xuICAgIGFwaS5yZXJlbmRlcignYTE4NjFmM2UnLCByZW5kZXIpXG4gIH0pXG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBfX2V4cG9ydHNfXyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gXCIuL1dlYkZvb3Rlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjBkMTA2ODAmdHM9dHJ1ZVwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1dlYkZvb3Rlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHMmc2V0dXA9dHJ1ZVwiXG5leHBvcnQgKiBmcm9tIFwiLi9XZWJGb290ZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzJnNldHVwPXRydWVcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9XZWJGb290ZXIudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjIwZDEwNjgwXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMjBkMTA2ODAnLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcyMGQxMDY4MCcsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vV2ViRm9vdGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yMGQxMDY4MCZ0cz10cnVlXCIsICgpID0+IHtcbiAgICBhcGkucmVyZW5kZXIoJzIwZDEwNjgwJywgcmVuZGVyKVxuICB9KVxuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgX19leHBvcnRzX18iLCJpbXBvcnQgeyByZW5kZXIgfSBmcm9tIFwiLi9XZWJIZWFkZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTEwYzllMGIyJnRzPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9XZWJIZWFkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPXRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1dlYkhlYWRlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIlxuXG5pbXBvcnQgZXhwb3J0Q29tcG9uZW50IGZyb20gXCIvbWVkaWEvc2FsaWwvRTY2MDY0MkQ2MDY0MDZBMS9Zb3VuZyBJbm5vdmF0aW9uIEludGVybnNoaXAvWW91bmcgSW5ub3ZhdGlvbiBQcm9qZWN0cy9pYXRpLXB1Ymxpc2hlci9pYXRpcHVibGlzaGVyL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzXCJcbmNvbnN0IF9fZXhwb3J0c19fID0gLyojX19QVVJFX18qL2V4cG9ydENvbXBvbmVudChzY3JpcHQsIFtbJ3JlbmRlcicscmVuZGVyXSxbJ19fZmlsZScsXCJyZXNvdXJjZXMvYXNzZXRzL2pzL3ZpZXdzL3dlYi9wYXJ0aWFscy9XZWJIZWFkZXIudnVlXCJdXSlcbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIF9fZXhwb3J0c19fLl9faG1ySWQgPSBcIjEwYzllMGIyXCJcbiAgY29uc3QgYXBpID0gX19WVUVfSE1SX1JVTlRJTUVfX1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghYXBpLmNyZWF0ZVJlY29yZCgnMTBjOWUwYjInLCBfX2V4cG9ydHNfXykpIHtcbiAgICBhcGkucmVsb2FkKCcxMGM5ZTBiMicsIF9fZXhwb3J0c19fKVxuICB9XG4gIFxuICBtb2R1bGUuaG90LmFjY2VwdChcIi4vV2ViSGVhZGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xMGM5ZTBiMiZ0cz10cnVlXCIsICgpID0+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/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/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9dHNcIiIsImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC01LnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9kaXN0L2luZGV4LmpzPz9ydWxlU2V0WzBdLnVzZVswXSEuL0Fib3V0UGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9BYm91dFBhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzXCIiLCJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9XZWxjb21lUGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anNcIjsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvZGlzdC9pbmRleC5qcz8/cnVsZVNldFswXS51c2VbMF0hLi9XZWxjb21lUGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anNcIiIsInZhciBtYXAgPSB7XG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9hY3Rpdml0eV9kYXRlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2FjdGl2aXR5X2RhdGUuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9hY3Rpdml0eV9zY29wZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9hY3Rpdml0eV9zY29wZS5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL2FjdGl2aXR5X3N0YXR1cy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9hY3Rpdml0eV9zdGF0dXMuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9idWRnZXQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvYnVkZ2V0LnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvYnVpbGRpbmcuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvYnVpbGRpbmcuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9jYXBpdGFsX3NwZW5kLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2NhcGl0YWxfc3BlbmQuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9jb2xsYWJvcmF0aW9uX3R5cGUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvY29sbGFib3JhdGlvbl90eXBlLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvY29uZGl0aW9ucy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9jb25kaXRpb25zLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvY29udGFjdF9pbmZvLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2NvbnRhY3RfaW5mby5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL2NvdW50cnlfYnVkZ2V0X2l0ZW1zLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2NvdW50cnlfYnVkZ2V0X2l0ZW1zLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvY3JzLWFkZC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9jcnMtYWRkLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvZGVmYXVsdF9haWRfdHlwZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9kZWZhdWx0X2FpZF90eXBlLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvZGVmYXVsdF9maW5hbmNlX3R5cGUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvZGVmYXVsdF9maW5hbmNlX3R5cGUuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9kZWZhdWx0X2Zsb3dfdHlwZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9kZWZhdWx0X2Zsb3dfdHlwZS5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL2Rlc2NyaXB0aW9uLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2Rlc2NyaXB0aW9uLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvZG9jdW1lbnRfbGluay5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9kb2N1bWVudF9saW5rLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvaHVtYW5pdGFyaWFuX3Njb3BlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL2h1bWFuaXRhcmlhbl9zY29wZS5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL2lhdGlfaWRlbnRpZmllci5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9pYXRpX2lkZW50aWZpZXIuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9pbmRpY2F0b3Iuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvaW5kaWNhdG9yLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvbGVnYWN5X2RhdGEuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvbGVnYWN5X2RhdGEuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9sb2NhdGlvbi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9sb2NhdGlvbi5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL290aGVyX2lkZW50aWZpZXIuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvb3RoZXJfaWRlbnRpZmllci5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL3BhcnRpY2lwYXRpbmdfb3JnLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3BhcnRpY2lwYXRpbmdfb3JnLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvcGVyaW9kLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3BlcmlvZC5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL3BsYW5uZWRfZGlzYnVyc2VtZW50LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3BsYW5uZWRfZGlzYnVyc2VtZW50LnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvcG9saWN5X21hcmtlci5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9wb2xpY3lfbWFya2VyLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvcmVjaXBpZW50X2NvdW50cnkuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvcmVjaXBpZW50X2NvdW50cnkuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9yZWNpcGllbnRfcmVnaW9uLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3JlY2lwaWVudF9yZWdpb24uc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9yZWxhdGVkX2FjdGl2aXR5LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3JlbGF0ZWRfYWN0aXZpdHkuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9yZXBvcnRpbmdfb3JnLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3JlcG9ydGluZ19vcmcuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy9yZXN1bHQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYWN0aXZpdHktZWxlbWVudHMvcmVzdWx0LnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvcmVzdWx0cy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy9yZXN1bHRzLnN2Z1wiLFxuXHRcIi4vYWN0aXZpdHktZWxlbWVudHMvc2VjdG9yLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FjdGl2aXR5LWVsZW1lbnRzL3NlY3Rvci5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL3RhZy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy90YWcuc3ZnXCIsXG5cdFwiLi9hY3Rpdml0eS1lbGVtZW50cy90aXRsZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy90aXRsZS5zdmdcIixcblx0XCIuL2FjdGl2aXR5LWVsZW1lbnRzL3RyYW5zYWN0aW9ucy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hY3Rpdml0eS1lbGVtZW50cy90cmFuc2FjdGlvbnMuc3ZnXCIsXG5cdFwiLi9hZGQtbW9yZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hZGQtbW9yZS5zdmdcIixcblx0XCIuL2FkZC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hZGQuc3ZnXCIsXG5cdFwiLi9hbGVydC1vdXRsaW5lLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FsZXJ0LW91dGxpbmUuc3ZnXCIsXG5cdFwiLi9hbGVydC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hbGVydC5zdmdcIixcblx0XCIuL2FsaWduLWNlbnRlci5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hbGlnbi1jZW50ZXIuc3ZnXCIsXG5cdFwiLi9hbGlnbi1yaWdodC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hbGlnbi1yaWdodC5zdmdcIixcblx0XCIuL2FwcHJvdmVkLWNsb3VkLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2FwcHJvdmVkLWNsb3VkLnN2Z1wiLFxuXHRcIi4vYXJyb3ctZG93bi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hcnJvdy1kb3duLnN2Z1wiLFxuXHRcIi4vYXJyb3ctbGVmdC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9hcnJvdy1sZWZ0LnN2Z1wiLFxuXHRcIi4vYXJyb3ctcmlnaHQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYXJyb3ctcmlnaHQuc3ZnXCIsXG5cdFwiLi9hcnJvdy1zaG9ydC1sZWZ0LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Fycm93LXNob3J0LWxlZnQuc3ZnXCIsXG5cdFwiLi9hc2NlbmRpbmctYXJyb3cuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvYXNjZW5kaW5nLWFycm93LnN2Z1wiLFxuXHRcIi4vYmlsbC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9iaWxsLnN2Z1wiLFxuXHRcIi4vYm94LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2JveC5zdmdcIixcblx0XCIuL2J1ZGdldC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9idWRnZXQuc3ZnXCIsXG5cdFwiLi9idWlsZGluZy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9idWlsZGluZy5zdmdcIixcblx0XCIuL2NhbmNlbC1jbG91ZC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jYW5jZWwtY2xvdWQuc3ZnXCIsXG5cdFwiLi9jYW5jZWwtY3Jvc3Muc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY2FuY2VsLWNyb3NzLnN2Z1wiLFxuXHRcIi4vY2hlY2stY2lyY2xlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2NoZWNrLWNpcmNsZS5zdmdcIixcblx0XCIuL2NoZWNrYm94LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2NoZWNrYm94LnN2Z1wiLFxuXHRcIi4vY2hlY2tlZC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jaGVja2VkLnN2Z1wiLFxuXHRcIi4vY2hldnJvbi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jaGV2cm9uLnN2Z1wiLFxuXHRcIi4vY2lyY2xlLXJlZC1jcm9zcy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jaXJjbGUtcmVkLWNyb3NzLnN2Z1wiLFxuXHRcIi4vY2xvc2Uuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY2xvc2Uuc3ZnXCIsXG5cdFwiLi9jb3B5cmlnaHQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY29weXJpZ2h0LnN2Z1wiLFxuXHRcIi4vY29yZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jb3JlLnN2Z1wiLFxuXHRcIi4vY3Jvc3MtaWNvbi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9jcm9zcy1pY29uLnN2Z1wiLFxuXHRcIi4vY3Jvc3Muc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvY3Jvc3Muc3ZnXCIsXG5cdFwiLi9kZWZhdWx0LTEuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZGVmYXVsdC0xLnN2Z1wiLFxuXHRcIi4vZGVmYXVsdC0yLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2RlZmF1bHQtMi5zdmdcIixcblx0XCIuL2RlbGV0ZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kZWxldGUuc3ZnXCIsXG5cdFwiLi9kZXNjZW5kaW5nLWFycm93LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2Rlc2NlbmRpbmctYXJyb3cuc3ZnXCIsXG5cdFwiLi9kb2N1bWVudC13cml0ZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kb2N1bWVudC13cml0ZS5zdmdcIixcblx0XCIuL2RvdWJsZS10aWNrLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2RvdWJsZS10aWNrLnN2Z1wiLFxuXHRcIi4vZG93bmxvYWQtY29kZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kb3dubG9hZC1jb2RlLnN2Z1wiLFxuXHRcIi4vZG93bmxvYWQtZmlsZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kb3dubG9hZC1maWxlLnN2Z1wiLFxuXHRcIi4vZG93bmxvYWQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvZG93bmxvYWQuc3ZnXCIsXG5cdFwiLi9kcm9wZG93bi1hcnJvdy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9kcm9wZG93bi1hcnJvdy5zdmdcIixcblx0XCIuL2VkaXQtYWN0aW9uLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2VkaXQtYWN0aW9uLnN2Z1wiLFxuXHRcIi4vZWRpdC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9lZGl0LnN2Z1wiLFxuXHRcIi4vZXhjbGFtYXRpb24td2FybmluZy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9leGNsYW1hdGlvbi13YXJuaW5nLnN2Z1wiLFxuXHRcIi4vZXhwb3J0LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2V4cG9ydC5zdmdcIixcblx0XCIuL2V4dGVybmFsLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2V4dGVybmFsLnN2Z1wiLFxuXHRcIi4vZXllLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2V5ZS5zdmdcIixcblx0XCIuL2ZvbGRlci5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9mb2xkZXIuc3ZnXCIsXG5cdFwiLi9mb290ZXItbG9nby5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9mb290ZXItbG9nby5zdmdcIixcblx0XCIuL2Z1bm5lbC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9mdW5uZWwuc3ZnXCIsXG5cdFwiLi9ncm91cC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9ncm91cC5zdmdcIixcblx0XCIuL2hlYWRlci1sb2dvLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2hlYWRlci1sb2dvLnN2Z1wiLFxuXHRcIi4vaGVhZHBob25lLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2hlYWRwaG9uZS5zdmdcIixcblx0XCIuL2hlbHAuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvaGVscC5zdmdcIixcblx0XCIuL2hpZGUtcGFzc3dvcmQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvaGlkZS1wYXNzd29yZC5zdmdcIixcblx0XCIuL2hpc3Rvcnkuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvaGlzdG9yeS5zdmdcIixcblx0XCIuL2ljLXZlcmlmaWNhdGlvbi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9pYy12ZXJpZmljYXRpb24uc3ZnXCIsXG5cdFwiLi9pbmRpY2F0b3ItaWNvbi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9pbmRpY2F0b3ItaWNvbi5zdmdcIixcblx0XCIuL2tleS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9rZXkuc3ZnXCIsXG5cdFwiLi9sZWZ0LWFycm93LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2xlZnQtYXJyb3cuc3ZnXCIsXG5cdFwiLi9sb2dvLXdoaXRlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2xvZ28td2hpdGUuc3ZnXCIsXG5cdFwiLi9sb2dvLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL2xvZ28uc3ZnXCIsXG5cdFwiLi9sb2dvdXQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvbG9nb3V0LnN2Z1wiLFxuXHRcIi4vbWFnbmlmeWluZy1nbGFzcy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9tYWduaWZ5aW5nLWdsYXNzLnN2Z1wiLFxuXHRcIi4vbWFpbC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9tYWlsLnN2Z1wiLFxuXHRcIi4vbWluaW1pemUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvbWluaW1pemUuc3ZnXCIsXG5cdFwiLi9tb29uLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL21vb24uc3ZnXCIsXG5cdFwiLi9ub3RlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL25vdGUuc3ZnXCIsXG5cdFwiLi9vcmdhbmlzYXRpb24tZWxlbWVudHMvYnVpbGRpbmcuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL2J1aWxkaW5nLnN2Z1wiLFxuXHRcIi4vb3JnYW5pc2F0aW9uLWVsZW1lbnRzL2Rlc2NyaXB0aW9uLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9kZXNjcmlwdGlvbi5zdmdcIixcblx0XCIuL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9kb2N1bWVudF9saW5rLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9kb2N1bWVudF9saW5rLnN2Z1wiLFxuXHRcIi4vb3JnYW5pc2F0aW9uLWVsZW1lbnRzL25hbWUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL25hbWUuc3ZnXCIsXG5cdFwiLi9vcmdhbmlzYXRpb24tZWxlbWVudHMvb3JnX2lkZW50aWZpZXIuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL29yZ19pZGVudGlmaWVyLnN2Z1wiLFxuXHRcIi4vb3JnYW5pc2F0aW9uLWVsZW1lbnRzL29yZ2FuaXNhdGlvbl9pZGVudGlmaWVyLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9vcmdhbmlzYXRpb25faWRlbnRpZmllci5zdmdcIixcblx0XCIuL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9vcmdhbml6YXRpb25faWRlbnRpZmllci5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvb3JnYW5pemF0aW9uX2lkZW50aWZpZXIuc3ZnXCIsXG5cdFwiLi9vcmdhbmlzYXRpb24tZWxlbWVudHMvcmVjaXBpZW50X2NvdW50cnlfYnVkZ2V0LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9yZWNpcGllbnRfY291bnRyeV9idWRnZXQuc3ZnXCIsXG5cdFwiLi9vcmdhbmlzYXRpb24tZWxlbWVudHMvcmVjaXBpZW50X29yZ19idWRnZXQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3JlY2lwaWVudF9vcmdfYnVkZ2V0LnN2Z1wiLFxuXHRcIi4vb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3JlY2lwaWVudF9yZWdpb25fYnVkZ2V0LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9yZWNpcGllbnRfcmVnaW9uX2J1ZGdldC5zdmdcIixcblx0XCIuL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9yZXBvcnRpbmdfb3JnLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy9yZXBvcnRpbmdfb3JnLnN2Z1wiLFxuXHRcIi4vb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3JlcG9ydGluZ19vcmdhbmlzYXRpb24uc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3JlcG9ydGluZ19vcmdhbmlzYXRpb24uc3ZnXCIsXG5cdFwiLi9vcmdhbmlzYXRpb24tZWxlbWVudHMvdGl0bGUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3RpdGxlLnN2Z1wiLFxuXHRcIi4vb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3RvdGFsX2J1ZGdldC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9vcmdhbmlzYXRpb24tZWxlbWVudHMvdG90YWxfYnVkZ2V0LnN2Z1wiLFxuXHRcIi4vb3JnYW5pc2F0aW9uLWVsZW1lbnRzL3RvdGFsX2V4cGVuZGl0dXJlLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL29yZ2FuaXNhdGlvbi1lbGVtZW50cy90b3RhbF9leHBlbmRpdHVyZS5zdmdcIixcblx0XCIuL3BhbmVsLXNlYXJjaC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9wYW5lbC1zZWFyY2guc3ZnXCIsXG5cdFwiLi9wZXJpb2QtaWNvbi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9wZXJpb2QtaWNvbi5zdmdcIixcblx0XCIuL3BsdXMtb3V0bGluZWQuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcGx1cy1vdXRsaW5lZC5zdmdcIixcblx0XCIuL3BsdXMuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcGx1cy5zdmdcIixcblx0XCIuL3B1Ymxpc2guc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcHVibGlzaC5zdmdcIixcblx0XCIuL3B3LWxvY2suc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcHctbG9jay5zdmdcIixcblx0XCIuL3F1ZXN0aW9uLW1hcmsuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvcXVlc3Rpb24tbWFyay5zdmdcIixcblx0XCIuL3JlZC1jcm9zcy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9yZWQtY3Jvc3Muc3ZnXCIsXG5cdFwiLi9yZWQtZG90LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3JlZC1kb3Quc3ZnXCIsXG5cdFwiLi9yZWRvLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3JlZG8uc3ZnXCIsXG5cdFwiLi9yZXN1bHQtaWNvbi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9yZXN1bHQtaWNvbi5zdmdcIixcblx0XCIuL3JpZ2h0LWFycm93LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3JpZ2h0LWFycm93LnN2Z1wiLFxuXHRcIi4vc2VhcmNoLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3NlYXJjaC5zdmdcIixcblx0XCIuL3NldHRpbmcuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvc2V0dGluZy5zdmdcIixcblx0XCIuL3NoaWVsZC5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9zaGllbGQuc3ZnXCIsXG5cdFwiLi9zbWlsZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9zbWlsZS5zdmdcIixcblx0XCIuL3NvcnQtYXNjZW5kaW5nLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3NvcnQtYXNjZW5kaW5nLnN2Z1wiLFxuXHRcIi4vc29ydC1kZXNjZW5kaW5nLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3NvcnQtZGVzY2VuZGluZy5zdmdcIixcblx0XCIuL3NvcnQtaWNvbi5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy9zb3J0LWljb24uc3ZnXCIsXG5cdFwiLi9zdGFyLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3N0YXIuc3ZnXCIsXG5cdFwiLi90aWNrLW91dGxpbmUuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvdGljay1vdXRsaW5lLnN2Z1wiLFxuXHRcIi4vdGljay5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy90aWNrLnN2Z1wiLFxuXHRcIi4vdGlja2VkLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3RpY2tlZC5zdmdcIixcblx0XCIuL3RpbWVzLWNpcmNsZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy90aW1lcy1jaXJjbGUuc3ZnXCIsXG5cdFwiLi90d2l0dGVyLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3R3aXR0ZXIuc3ZnXCIsXG5cdFwiLi91cC1hcnJvdy1vdXRsaW5lLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3VwLWFycm93LW91dGxpbmUuc3ZnXCIsXG5cdFwiLi91cGxvYWQtZmlsZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy91cGxvYWQtZmlsZS5zdmdcIixcblx0XCIuL3VzZXItcHJvZmlsZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy91c2VyLXByb2ZpbGUuc3ZnXCIsXG5cdFwiLi91c2VyLnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3VzZXIuc3ZnXCIsXG5cdFwiLi93YXJuaW5nLWFjdGl2aXR5LnN2Z1wiOiBcIi4vcmVzb3VyY2VzL2Fzc2V0cy9pbWFnZXMvc3ZnL3dhcm5pbmctYWN0aXZpdHkuc3ZnXCIsXG5cdFwiLi93YXJuaW5nLWZpbGwuc3ZnXCI6IFwiLi9yZXNvdXJjZXMvYXNzZXRzL2ltYWdlcy9zdmcvd2FybmluZy1maWxsLnN2Z1wiLFxuXHRcIi4vd2FybmluZy5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy93YXJuaW5nLnN2Z1wiLFxuXHRcIi4veW91dHViZS5zdmdcIjogXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2Zy95b3V0dWJlLnN2Z1wiXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gXCIuL3Jlc291cmNlcy9hc3NldHMvaW1hZ2VzL3N2ZyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qJFwiOyIsIi8qIChpZ25vcmVkKSAqLyJdLCJuYW1lcyI6WyJfX2ltcG9ydERlZmF1bHQiLCJtb2QiLCJfX2VzTW9kdWxlIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJ2dWVfMSIsInJlcXVpcmUiLCJ2dWVfMiIsInNwaW5uZXJMb2FkZXJfdnVlXzEiLCJQb3B1cE1vZGFsX3Z1ZV8xIiwiYXhpb3NfMSIsImluZGV4XzEiLCJkZWZpbmVDb21wb25lbnQiLCJfX25hbWUiLCJzZXR1cCIsIl9fcHJvcHMiLCJfYSIsImV4cG9zZSIsInN0b3JlIiwidXNlU3RvcmUiLCJzaG93UmV0cnlEb3dubG9hZE1vZGVsIiwicmVmIiwiaXNMb2FkaW5nIiwib25Nb3VudGVkIiwic3VwcG9ydEJ1dHRvbiIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsInN0eWxlIiwidHJhbnNmb3JtIiwiZG93bmxvYWRGaWxlIiwiZGlzcGF0Y2giLCJhcGlVcmwiLCJjb25jYXQiLCJkb3dubG9hZEFwaVVybCIsInNwbGl0IiwibWV0aG9kIiwidXJsIiwicmVzcG9uc2VUeXBlIiwidGhlbiIsInJlcyIsImZpbGVOYW1lIiwiaGVhZGVycyIsImJsb2IiLCJCbG9iIiwiZGF0YSIsImxpbmsiLCJjcmVhdGVFbGVtZW50IiwiaHJlZiIsIndpbmRvdyIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsInNldEF0dHJpYnV0ZSIsImJvZHkiLCJhcHBlbmRDaGlsZCIsImNsaWNrIiwicmV0cnlEb3dubG9hZCIsInhsc0Rvd25sb2FkU3RhdHVzIiwiZ2V0IiwiY2FuY2VsRG93bmxvYWQiLCJzdWNjZXNzIiwicGVyY2VudGFnZVdpZHRoIiwiY29tcHV0ZWQiLCJmaWxlQ291bnQiLCJpbmplY3QiLCJfX3JldHVybmVkX18iLCJzcGlubmVyTG9hZGVyIiwiTW9kYWwiLCJlbnVtZXJhYmxlIiwiX19hd2FpdGVyIiwidGhpc0FyZyIsIl9hcmd1bWVudHMiLCJQIiwiZ2VuZXJhdG9yIiwiYWRvcHQiLCJyZXNvbHZlIiwiUHJvbWlzZSIsInJlamVjdCIsImZ1bGZpbGxlZCIsInN0ZXAiLCJuZXh0IiwiZSIsInJlamVjdGVkIiwicmVzdWx0IiwiZG9uZSIsImFwcGx5IiwiX19nZW5lcmF0b3IiLCJfIiwibGFiZWwiLCJzZW50IiwidCIsInRyeXMiLCJvcHMiLCJmIiwieSIsImciLCJ2ZXJiIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJuIiwidiIsIm9wIiwiVHlwZUVycm9yIiwiY2FsbCIsInBvcCIsImxlbmd0aCIsInB1c2giLCJzaG93XzEiLCJjb3JlXzEiLCJDcmVhdGVNb2RhbF92dWVfMSIsIlRvYXN0TWVzc2FnZV92dWVfMSIsInByb3BzIiwidXNlciIsInR5cGUiLCJyZXF1aXJlZCIsIm9yZ2FuaXphdGlvbiIsInZhbGlkYXRvciIsInN1cGVyQWRtaW4iLCJCb29sZWFuIiwiaGFzQWRtaW5CYXIiLCJOdW1iZXIiLCJfYiIsImRldGFpbFN0b3JlIiwidHJhbnNsYXRpb24iLCJzaG93VXNlckRyb3Bkb3duIiwic2hvd0FjdGl2aXR5RHJvcGRvd24iLCJ0b2FzdFZpc2liaWxpdHkiLCJzaG93U2lkZWJhciIsInRvYXN0TWVzc2FnZSIsInRvYXN0VHlwZSIsInJlYWN0aXZlIiwibGFuZ3VhZ2VOYXZMaUNsYXNzZXMiLCJsYW5ndWFnZU5hdkFuY2hvckNsYXNzZXMiLCJtZW51TmF2TGlDbGFzc2VzIiwibWVudU5hdkFuY2hvckNsYXNzZXMiLCJsYW5ndWFnZXMiLCJsYW5ndWFnZSIsInBlcm1hbGluayIsImFjdGl2ZSIsIndlYl9sYW5nIiwib3JnX21lbnVzIiwibmFtZSIsImFkbWluIiwiaGVhZGVyIiwiYWN0aXZpdHlfZGF0YSIsIm9yZ2FuaXNhdGlvbl9kYXRhIiwic2V0dGluZ3MiLCJjb21tb25fbGFuZyIsImFkZF9pbXBvcnRfYWN0aXZpdHkiLCJ1c2VycyIsInN1cGVyYWRtaW5fbWVudXMiLCJvcmdfbGlzdCIsIndhdGNoIiwic3RhdGUiLCJsaUNsYXNzIiwiX2MiLCJ1c2VUb2dnbGUiLCJtb2RhbFZhbHVlIiwibW9kYWxUb2dnbGUiLCJ0b2FzdCIsIm1lc3NhZ2UiLCJzZXRUaW1lb3V0IiwiaXNUb3VjaERldmljZSIsIm5hdmlnYXRvciIsIm1heFRvdWNoUG9pbnRzIiwiVG9nZ2xlTW9kZWwiLCJsb2NhbFN0b3JhZ2UiLCJyZW1vdmVJdGVtIiwic2lkZWJhciIsImRvY3VtZW50RWxlbWVudCIsIm92ZXJmbG93IiwiY2hhbmdlQWN0aXZlTWVudSIsInBhdGgiLCJsb2NhdGlvbiIsInBhdGhuYW1lIiwiZm9yRWFjaCIsIm1lbnUiLCJrZXkiLCJpbmNsdWRlcyIsInBhIiwidXNlU3RvcmFnZSIsInB1Ymxpc2hpbmdBY3Rpdml0aWVzIiwiZ2V0SXRlbSIsImxvZ291dCIsInBvc3QiLCJzdGF0dXMiLCJzZWFyY2hWYWx1ZSIsImN1cnJlbnRVUkwiLCJxdWVyeVN0cmluZyIsInNlYXJjaCIsInVybFBhcmFtcyIsIlVSTFNlYXJjaFBhcmFtcyIsInNwaW5uZXIiLCJzZWFyY2hGdW5jdGlvbiIsInBhcmFtIiwicmVwbGFjZSIsInNvcnRpbmdQYXJhbSIsInF1ZXJ5U3RyaW5nQXJyIiwic2xpY2UiLCJqb2luIiwicmVkaXJlY3RQcm9maWxlIiwib25Vbm1vdW50ZWQiLCJDcmVhdGVNb2RhbCIsIlRvYXN0IiwidGl0bGVfMSIsImNvbXBvbmVudHMiLCJ0b1JlZnMiLCJicmVhZGNydW1iRGF0YSIsImdldEFjdGl2aXR5VGl0bGUiLCJidWxrUHVibGlzaFN0YXR1cyIsInV0aWxzXzEiLCJlbWl0cyIsImJ1bGtQdWJsaXNoTGVuZ3RoIiwib3Blbk1vZGVsIiwicGFTdG9yYWdlIiwiYnVsa3B1Ymxpc2hBY3Rpdml0aWVzIiwiY29tcGxldGVkIiwicmVmcmVzaFRvYXN0TXNnIiwiYWN0aXZpdGllcyIsImhhc0ZhaWxlZEFjdGl2aXRpZXMiLCJpZHMiLCJyZXNwb25zZSIsInBvbGxpbmdGb3JCdWxrcHVibGlzaERhdGEiLCJpbnRlcnZhbElEIiwic2V0SW50ZXJ2YWwiLCJwdWJsaXNoaW5nIiwiY2xlYXJJbnRlcnZhbCIsImZhaWxlZEFjdGl2aXRpZXMiLCJ2aXNpYmlsaXR5IiwicmVmcmVzaE1lc3NhZ2VUeXBlIiwicmVmcmVzaE1lc3NhZ2UiLCJlcnJvciIsInNvbWVfYWN0aXZpdGllc19oYXZlX2ZhaWxlZF90b19wdWJsaXNoIiwiYWN0aXZpdHlfaGFzX2JlZW5fcHVibGlzaGVkX3N1Y2Nlc3NmdWxseSIsInJldHJ5UHVibGlzaGluZyIsImVuZHBvaW50IiwibmVzdGVkT2JqZWN0IiwiZmFpbGVkQWN0aXZpdGllc0lEIiwiYXNBcnJheURhdGEiLCJlbnRyaWVzIiwiZmlsdGVyZWQiLCJmaWx0ZXIiLCJ2YWx1ZXMiLCJpbmRleE9mIiwiYWN0aXZpdHlfaWQiLCJmYWlsZWRBY3Rpdml0aWVzRGF0YSIsImZyb21FbnRyaWVzIiwiY29tcGxldGVkQWN0aXZpdGllcyIsImNvdW50IiwiaSIsImtleXMiLCJzZXREYXRhVG9Mb2NhbHN0b3JhZ2UiLCJnZXREYXRhRnJvbUxvY2Fsc3RvcmFnZSIsImlzSnNvbiIsIkpTT04iLCJwYXJzZSIsInNldEl0ZW0iLCJzdHJpbmdpZnkiLCJlbXB0eWJ1bGtQdWJsaXNoU3RhdHVzIiwic3RhdHVzXzEiLCJhc3NpZ24iLCJkZWVwIiwidGV4dCIsIlN0cmluZyIsImljb24iLCJhY3Rpdml0eUxlbmd0aCIsImJ0blR5cGUiLCJkYXRlX2Zuc18xIiwidnVlX2RhdGVwaWNrZXJfMSIsIm1vbWVudF8xIiwiZHJvcGRvd25SYW5nZSIsImZpcnN0RGF0ZSIsImRhdGVMYWJlbCIsImN1cnJlbnRWaWV3IiwiY2xlYXJEYXRlIiwic3RhcnRpbmdEYXRlIiwiZW5kaW5nRGF0ZSIsImRhdGVOYW1lIiwiX3RoaXMiLCJlbWl0Iiwic2VsZWN0ZWRQcmVzZW50SW5kZXgiLCJkYXRlUmFuZ2VNYWluIiwiZGF0ZVR5cGUiLCJkYXRlRHJvcGRvd24iLCJkYXRlVHlwZU5hbWUiLCJkYXRlVHlwZUtleSIsInNob3dSYW5nZURyb3Bkb3duIiwiaW5pdGlhbERhdGUiLCJmaXhlZCIsInRvZGF5RGF0ZSIsIkRhdGUiLCJmb3JtYXQiLCJzZWxlY3RlZERhdGUiLCJzZXREYXRlIiwiZ2V0RGF0ZSIsImRhdGVwaWNrZXIiLCJ0cmlnZ2VyU2V0RGF0ZVJhbmdlIiwiaGFuZGxlUHJlc2VudFJhbmdlSXRlbUNsaWNrIiwiaW5kZXgiLCJwcmVzZW50UmFuZ2VJdGVtcyIsImdldEVsZW1lbnRzQnlDbGFzc05hbWUiLCJjbGFzc0xpc3QiLCJhZGQiLCJqIiwicmVtb3ZlIiwicmVzZXREYXRlIiwiaGFuZGxlQ2FsZW5kYXJJdGVtQ2xpY2siLCJhZGRFdmVudHNGb3JDYWxlbmRhciIsIl9sb29wXzEiLCJhZGRFdmVudExpc3RlbmVyIiwiY2FsZW5kYXJJdGVtcyIsInJlbW92ZUV2ZW50c09mQ2FsZW5kYXIiLCJfbG9vcF8yIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInRvZ2dsZVNob3dSYW5nZURyb3Bkb3duIiwicHJlc2V0UmFuZ2VzIiwicmFuZ2UiLCJzdGFydE9mRGF5IiwiZW5kT2ZEYXkiLCJzdGFydE9mV2VlayIsInN1YkRheXMiLCJzdGFydE9mTW9udGgiLCJlbmRPZk1vbnRoIiwic3ViTW9udGhzIiwic3RhcnRPZlllYXIiLCJjb252ZXJ0RGF0ZSIsImRhdGUiLCJkYXRlT2JqIiwieWVhciIsImdldEZ1bGxZZWFyIiwibW9udGgiLCJnZXRNb250aCIsInBhZFN0YXJ0IiwiZGF5Iiwib3BlbkNhbGVuZGFyIiwib3Blbk1lbnUiLCJjbG9zZUNhbGVuZGFyIiwiY2xvc2VNZW51Iiwic2VsZWN0RGF0ZSIsImRhdGVzIiwidGVtcEFycmF5IiwidG9Mb2NhbGVEYXRlU3RyaW5nIiwiY2xvc2VEYXRlRHJvcGRvd24iLCJrZWVwTW9kZWxPcGVuIiwiZXZlbnQiLCJzdG9wUHJvcGFnYXRpb24iLCJzdGFydERhdGUiLCJlbmREYXRlIiwic2V0U2VsZWN0ZWRQcmVzZW50RGF5VGV4dCIsInRyaWdnZXJTZXREYXRlVHlwZSIsImZpbHRlcmVkRGF0ZVR5cGUiLCJldmVudFR5cGUiLCJjdXN0b21Qb3NpdGlvbiIsIl9kIiwiX2UiLCJsZWZ0UG9zaXRpb24iLCJpbm5lcldpZHRoIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwicmlnaHQiLCJ0b3AiLCJib3R0b20iLCJsZWZ0Iiwic2V0RGF0ZVJhbmdlVHlwZUluRHJvcGRvd24iLCJWdWVEYXRlUGlja2VyIiwidnVlXzMiLCJMb2FkZXJfdnVlXzEiLCJpc0VtcHR5Iiwic2hvdyIsImhhc0Vycm9ycyIsImVycm9yQ291bnQiLCJ0b2FzdERhdGEiLCJlcnJvckRhdGEiLCJhY2NvdW50X3ZlcmlmaWVkIiwicHVibGlzaGVyX2FjdGl2ZSIsImRlZmF1bHRfc2V0dGluZyIsInB1Ymxpc2hlcl9zZXR0aW5nIiwidG9rZW5fc3RhdHVzIiwiaXNMb2FkZXJWaXNpYmxlIiwicmVzZW5kVmVyaWZpY2F0aW9uRW1haWwiLCJhbGwiLCJzcHJlYWQiLCJzZXR0aW5nX3JlcyIsInVzZXJfcmVzIiwib3JnX3JlcyIsInVzZXJfcmVzcG9uc2UiLCJvcmdfcmVzcG9uc2UiLCJkZWZhdWx0X3N0YXR1cyIsInB1Ymxpc2hlcl9zdGF0dXMiLCJncm91cGVkRXJyb3IiLCJUcmFuc2l0aW9uUm9vdCIsIkxvYWRlciIsIkFycmF5IiwidGl0bGUiLCJjbG9zZSIsImhvdmVyVGV4dCIsIndpZHRoIiwicG9zaXRpb24iLCJpY29uU2l6ZSIsInNob3dJYXRpUmVmZXJlbmNlIiwiQnV0dG9uQ29tcG9uZW50X3Z1ZV8xIiwibGlzdEl0ZW1zIiwidGVtcExpc3RJdGVtcyIsInB1Ymxpc2hlclR5cGVNdWx0aXNlbGVjdCIsInNlYXJjaElucHV0IiwiY2hlY2tlZEJveGVzIiwiY2hhbmdlU2VsZWN0ZWRQdWJsaXNoZXIiLCJzZWxlY3RlZFB1Ymxpc2hlclR5cGUiLCJmb3JtYXRQdWJsaXNoZXJUeXBlIiwia2VlcFB1Ymxpc2hlck1vZGVsT3BlbiIsIm9uQmVmb3JlVW5tb3VudCIsInNob3dOb0RhdGFDb21wb25lbnQiLCJtYXAiLCJpdGVtIiwidXBkYXRlQXJyYXlCeVNlYXJjaCIsInNlYXJjaFN0cmluZyIsInRvTG93ZXJDYXNlIiwiYXBwbHlGaWx0ZXIiLCJCdG5Db21wb25lbnQiLCJidG5UZXh0IiwiYnRuTGluayIsIm1vZGFsQWN0aXZlIiwibm9QYWRkaW5nIiwidnVlM19yYWRpYWxfcHJvZ3Jlc3NfMSIsIlJhZGlhbFByb2dyZXNzQmFyIiwicGVyY2VudCIsImNvbXBsZXRlZFBlcmNlbnQiLCJ0b3RhbFBlcmNlbnQiLCJTaGltbWVyTG9hZGluZ192dWVfMSIsInJvd0NvdW50IiwiY29sQ291bnQiLCJTaGltbWVyTG9hZGluZyIsInJlc2V0IiwiYWN0aXZlX3BhZ2UiLCJsYXN0X3BhZ2VsaXN0IiwibWlkX3BhZ2VsaXN0IiwibGFzdHBhZ2VzIiwibWlkcGFnZXMiLCJ1cGRhdGVBY3RpdmVQYWdlIiwicGFnZSIsImNoYW5nZVBhZ2UiLCJwYWdlTnVtIiwibmV4dFBhZ2UiLCJsYXN0X3BhZ2UiLCJjdXJyZW50UGFnZSIsImZyb20iLCJwcmV2aW91c1BhZ2UiLCJjbGFzc05hbWUiLCJpbXBvcnREYXRhIiwiYWN0aXZpdHkiLCJzaG93RXJyb3JzIiwic2hvd0NyaXRpY2FsIiwiY3JpdGljYWxUb2dnbGUiLCJzaG93RXJyb3IiLCJlcnJvclRvZ2dsZSIsIndhcm5pbmdUb2dnbGUiLCJzaG93V2FybmluZyIsImVycm9yTGVuZ3RoIiwiY3VycmVudEVycm9yIiwiZXJyb3JzIiwibmFycmF0aXZlIiwicGVyaW9kX3N0YXJ0IiwicGVyaW9kX2VuZCIsImNvdW50RXJyb3JzIiwiYWN0aXZpdHlJbmRleCIsImNyaXRpY2FsQWNjb3JkaW9uVG9nZ2xlIiwiY3VycmVudFRhcmdldCIsInRhcmdldCIsInBhcmVudEVsZW1lbnQiLCJlbEhlaWdodCIsImNsaWVudEhlaWdodCIsImNzc1RleHQiLCJ3YXJuaW5nQWNjb3JkaW9uVG9nZ2xlIiwiZXJyb3JBY2NvcmRpb25Ub2dnbGUiLCJhY3Rpdml0eU5hbWUiLCJ0b3RhbENvdW50IiwicHJvY2Vzc2VkQ291bnQiLCJ4bHNGYWlsZWQiLCJjdXJyZW50QWN0aXZpdHkiLCJtYXhpbWl6ZSIsInNob3dNaW5pbWl6ZWRNb2RlbCIsIm1hcEFjdGl2aXR5TmFtZSIsInJldHJ5IiwiY2hlY2tTdXBwb3J0QnV0dG9uIiwidG9TdHJpbmciLCJ4bHNGYWlsZWRNZXNzYWdlIiwicHJvY2Vzc2luZyIsIkFjdGl2aXR5RG93bmxvYWRfdnVlXzEiLCJYbHNMb2FkZXJfdnVlXzEiLCJCdWxrcHVibGlzaFdpdGhYbHNfdnVlXzEiLCJ4bHNEYXRhIiwic2hvd1hsc1N0YXR1cyIsImRvd25sb2FkQ29tcGxldGVkIiwic2hvd0J1bGtwdWJsaXNoIiwiZG93bmxvYWRpbmciLCJzdGFydEJ1bGtQdWJsaXNoIiwiY2xvc2VCdWxrcHVibGlzaCIsImNsb3NlWGxzIiwiY29tcGxldGVYbHNEb3dubG9hZCIsIkFjdGl2aXR5RG93bmxvYWQiLCJYbHNMb2FkZXIiLCJCdWxrcHVibGlzaFdpdGhYbHMiLCJQcm9ncmVzc0xvYWRlcl92dWVfMSIsImRlbGV0ZVZhbHVlIiwiZGVsZXRlVG9nZ2xlIiwibG9hZGVyIiwicGxlYXNlX3dhaXQiLCJkZWxldGVGdW5jdGlvbiIsImV2ZW50c19sYW5nIiwiZGVsZXRpbmciLCJjaGFyQXQiLCJ0b1VwcGVyQ2FzZSIsImRlbGV0ZUVuZFBvaW50Iiwic2VsZWN0ZWRBY3Rpdml0aWVzIiwicmVsb2FkIiwiY2FwaXRhbGl6ZSIsImRlc2lnbiIsInN0eWxlVHlwZSIsImNsYXNzZXMiLCJsaW5rZWRUb0lhdGkiLCJjb3JlQ29tcGxldGVkIiwiYWN0aXZpdHlJZCIsIm9uVXBkYXRlZCIsInB1Ymxpc2hWYWx1ZSIsInB1Ymxpc2hTdGVwIiwiaWQiLCJwdWJsaXNoVG9nZ2xlIiwiY29yZUVsZW1lbnRTdGF0dXMiLCJsb2FkZXJUZXh0IiwicmVzZXRQdWJsaXNoU3RlcCIsInB1Ymxpc2hTdGF0ZUNoYW5nZSIsInB1Ymxpc2hTdGF0ZSIsImRlc2NyaXB0aW9uIiwiYWxlcnRTdGF0ZSIsImNvcmVfY29tcGxldGVkX3RpdGxlIiwiY29yZV9jb21wbGV0ZWRfZGVzY3JpcHRpb24iLCJjb3JlX25vdF9jb21wbGV0ZWRfdGl0bGUiLCJjb3JlX25vdF9jb21wbGV0ZWRfZGVzY3JpcHRpb24iLCJzIiwic3RpY2t5IiwiY29tbW9uIiwiZGVzY3JpcHRpb25fMSIsInRpdGxlXzIiLCJkZXNjcmlwdGlvbl8yIiwidGl0bGVfMyIsImVyciIsImNyaXRpY2FsTnVtYmVyIiwiY3JpdGljYWwiLCJlcnJvck51bWJlciIsImFuZCIsIndhcm5pbmdOdW1iZXIiLCJ3YXJuaW5ncyIsImhhc19hdGxlYXN0X29uZV9jcml0aWNhbF9lcnJvciIsIndlX2hpZ2hseV9yZWNvbW1lbmQiLCJ3ZXJlX2ZvdW5kIiwidmlld19pbmZvcm1hdGlvbiIsInN0ZXBQbHVzT25lIiwic3RlcE1pbnVzT25lIiwidmFsaWRhdG9yRnVuY3Rpb24iLCJ2YWxpZGF0aW5nIiwiY3JpdCIsInN1bW1hcnkiLCJ3YXJuaW5nIiwiY2hlY2tQdWJsaXNoIiwicHVibGlzaEZ1bmN0aW9uIiwicHVibGlzaFN0YXR1cyIsImxpbmtlZF90b19pYXRpIiwiYnV0dG9uX2xhbmciLCJyZXB1Ymxpc2giLCJwdWJsaXNoIiwidW5wdWJsaXNoVmFsdWUiLCJ1bnB1Ymxpc2hUb2dnbGUiLCJ1blB1Ymxpc2hGdW5jdGlvbiIsInVucHVibGlzaGluZyIsIml0ZW1JZCIsIml0ZW1UeXBlIiwiZXJyb3JUeXBlIiwiYmdDb2xvciIsImljb25Db2xvciIsInRvZ2dsZSIsImFjY29yZGlvblRvZ2dsZSIsInVwZGF0ZUVycm9yQ291bnRNZXNzYWdlIiwidHJhbnNsYXRlZFR5cGUiLCJMaW5rX3Z1ZV8xIiwiQnRuIiwibWFuZGF0b3J5RWxlbWVudFN0YXR1cyIsImlzX3B1Ymxpc2hlZCIsInB1Ymxpc2hlZCIsIkJyZWFkQ3J1bWJfdnVlXzEiLCJCcmVhZGNydW1iIiwiYmFja0xpbmsiLCJjb25zb2xlIiwibG9nIiwiY2hhbmdlVGV4dCIsImRpc3BsYXkiLCJFcnJvckxpc3RzX3Z1ZV8xIiwiVXBsb2FkZWRFcnJvcnNfdnVlXzEiLCJlcnJvclZhbHVlIiwiaW1wb3J0RXJyb3JzIiwiaXNzdWVUeXBlIiwiaW1wb3J0RXJyb3JUeXBlcyIsInRlbXBEYXRhIiwidXBkYXRlVGVtcE1lc3NhZ2UiLCJlcnJvckRhdGFQcm9wcyIsIl9pIiwiZXJyb3JEYXRhUHJvcHNfMSIsInNldmVyaXR5IiwiaW1wb3J0RXJyb3JsZW5ndGgiLCJkZWxldGVFcnJvcnMiLCJzZXNzaW9uU3RvcmFnZSIsIkVycm9yTGlzdHMiLCJVcGxvYWRlZEVycm9ycyIsImNvbG9yIiwibm90X2NvbXBsZXRlZCIsInByZXZpb3VzbHlfcHVibGlzaGVkX29uX2lhdGkiLCJfX2Fzc2lnbiIsImFyZ3VtZW50cyIsInAiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsIm11bHRpc2VsZWN0XzEiLCJjdXJyZW5jaWVzIiwiYnVkZ2V0Tm90UHJvdmlkZWQiLCJodW1hbml0YXJpYW4iLCJkZWZhdWx0VmFsdWVzIiwiYnVkZ2V0X25vdF9wcm92aWRlZCIsImRlZmF1bHRfY3VycmVuY3kiLCJkZWZhdWx0X2xhbmd1YWdlIiwiaGllcmFyY2h5IiwiZGVmYXVsdEVycm9ycyIsImVycm9yUmVzZXQiLCJkZWZhdWx0RGF0YSIsImxvYWRlclZpc2liaWxpdHkiLCJzdWJtaXRGb3JtIiwicHV0IiwiTXVsdGlzZWxlY3QiLCJJbmRleF8xIiwiSG92ZXJUZXh0X3Z1ZV8xIiwiUmFkaWFsUHJvZ3Jlc3NCYXJfdnVlXzEiLCJQdWJsaXNoQnV0dG9uX3Z1ZV8xIiwiVW5QdWJsaXNoQnV0dG9uX3Z1ZV8xIiwiRGVsZXRlQnV0dG9uX3Z1ZV8xIiwiU3RpY2t5RXJyb3JzX3Z1ZV8xIiwiRXJyb3JQb3BVcF92dWVfMSIsIkFjdGl2aXRpZXNFbGVtZW50c192dWVfMSIsIkFjdGl2aXR5RWxlbWVudF92dWVfMSIsIlByZXZpb3VzbHlQdWJsaXNoZWRfdnVlXzEiLCJIb3ZlclRleHQiLCJQcm9ncmVzc0JhciIsIkVsZW1lbnRzIiwiQWN0aXZpdHlFbGVtZW50IiwiUmVzdWx0IiwiUHVibGlzaCIsIkVycm9ycyIsIlVuUHVibGlzaCIsIkRlbGV0ZUJ1dHRvbiIsIlByZXZpb3VzbHlQdWJsaXNoZWQiLCJFcnJvclBvcFVwIiwiZWxlbWVudHMiLCJncm91cHMiLCJwcm9ncmVzcyIsInR5cGVzIiwicmVzdWx0cyIsInRyYW5zYWN0aW9ucyIsImlhdGlWYWxpZGF0b3JSZXNwb25zZSIsImltcG9ydEFjdGl2aXR5RXJyb3IiLCJyZW1vdmVkIiwiaW5kZXhTdG9yZSIsInBvc2l0aW9uWSIsInNjcmVlbldpZHRoIiwiZG93bmxvYWRWYWx1ZSIsImRvd25sb2FkVG9nZ2xlIiwidG9nZ2xlU2lkZWJhciIsImhhbmRsZVNjcm9sbCIsInNjcm9sbFkiLCJpc3RvcFZpc2libGUiLCJjYWxjV2lkdGgiLCJvbmxvYWQiLCJjbGVhciIsImlnbm9yZVRvYXN0VXBkYXRlIiwiZ3JvdXBlZERhdGEiLCJhY3Rpdml0eVByb3BzIiwiZWxlbWVudFByb3BzIiwic3RhdHVzUHJvcHMiLCJ0cmFuc2FjdGlvblByb3BzIiwiZmxhZyIsImsiLCJwYWdlVGl0bGUiLCJkZWZhdWx0X2ZpZWxkX3ZhbHVlcyIsImZvcm1hdFRpdGxlIiwidHJhbnNsYXRlZFRpdGxlIiwiYWN0aXZpdHlfbGFuZyIsImlnbm9yZVVwZGF0ZXMiLCJ3YXRjaElnbm9yYWJsZSIsInVuZGVmaW5lZCIsImZsdXNoIiwicHJvdmlkZSIsImFjdGl2aXRpZXNfbGFuZyIsInlvdXJfYWN0aXZpdGllcyIsInZhbGlkYXRpb25SZXN1bHQiLCJ0b1NuYWtlQ2FzZSIsInNlbnRlbmNlIiwid29yZHMiLCJ3b3JkIiwiWGxzVXBsb2FkSW5kaWNhdG9yX3Z1ZV8xIiwiRW1wdHlBY3Rpdml0eV92dWVfMSIsIlRhYmxlTGF5b3V0X3Z1ZV8xIiwiVGFibGVQYWdpbmF0aW9uX3Z1ZV8xIiwiUGFnZVRpdGxlX3Z1ZV8xIiwiRXJyb3JNZXNzYWdlX3Z1ZV8xIiwiY29yZV8yIiwiYWN0aXZpdHlTdG9yZSIsIkVtcHR5QWN0aXZpdHkiLCJQYWdlVGl0bGUiLCJQYWdpbmF0aW9uIiwiVGFibGVMYXlvdXQiLCJFcnJvck1lc3NhZ2UiLCJYbHNVcGxvYWRJbmRpY2F0b3IiLCJjbG9zZU1vZGVsIiwidXBsb2FkQ29tcGxldGUiLCJpbXBvcnRDb21wbGV0ZWQiLCJ0YWJsZUxvYWRlciIsInNob3dFbXB0eVRlbXBsYXRlIiwicG9sbGluZ0Zvclhsc1N0YXR1cyIsImNoZWNrU3RhdHVzIiwiX2YiLCJfZyIsIl9oIiwiX2oiLCJfayIsInRvdGFsX2NvdW50IiwicHJvY2Vzc2VkX2NvdW50Iiwic3RhcnRYbHNEb3dubG9hZCIsImNoZWNrRG93bmxvYWRTdGF0dXMiLCJjbG9zZVhsc01vZGVsIiwiY2hlY2tYbHNzdGF0dXMiLCJ0ZW1wbGF0ZSIsImNoZWNrRG93bmxvYWQiLCJmaWxlX2NvdW50Iiwic2hvd0J1dHRvbnMiLCJzaG93T3JIaWRlIiwiZmV0Y2hBY3Rpdml0aWVzIiwiZm9ybURhdGEiLCJhY3Rpdml0eV9pZGVudGlmaWVyIiwiY2xvc2VNb2RhbCIsInN0b3JlQWN0aXZpdHkiLCJjbG9zZXN0Iiwic2MiLCJWYWxpZGF0aW9uRXJyb3JzX3Z1ZV8xIiwiQnVsa1B1Ymxpc2hpbmdFcnJvclBvcHVwX3Z1ZV8xIiwicHVibGlzaEFsZXJ0VmFsdWUiLCJwdWJsaXNoQWxlcnRUb2dnbGUiLCJidWxrUHVibGlzaFN0ZXAiLCJzdGFydFB1Ymxpc2giLCJzaG93Q2FuY2VsQ29uZmlybWF0aW9uUG9wdXAiLCJzaG93Q2FuY2VsbGVkUG9wdXAiLCJtZXNzYWdlT25DYW5jZWxsYXRpb24iLCJwb3BVcFdpZHRoQ2hhbmdlIiwiZGlzcGxheVRvYXN0IiwiaW5fcHJvZ3Jlc3MiLCJzaG93Q2FuY2VsQ29uZmlybWF0aW9uTW9kYWwiLCJjb3JlQ29tcGxldGVkQWN0aXZpdGllcyIsImNvcmVJbkNvbXBsZXRlZEFjdGl2aXRpZXMiLCJ2ZXJpZnlDb3JlRWxlbWVudHMiLCJ2ZXJpZnlpbmdfY29yZV9lbGVtZW50cyIsImNvbXBsZXRlIiwiaW5jb21wbGV0ZSIsInZhbGlkYXRpb25FcnJvcnMiLCJvcmdhbml6YXRpb25faWQiLCJqb2JfYmF0Y2hfdXVpZCIsInZhbGlkYXRlQWN0aXZpdGllcyIsInZhbGlkYXRpbmdfYWN0aXZpdGllcyIsInN0YXJ0aW5nX3RvX3B1Ymxpc2giLCJjYW5jZWxPdGhlckJ1bGtQdWJsaXNoIiwiY2xvc2VDYW5jZWxDb25maXJtYXRpb25Nb2RhbCIsInNldENhbmNlbGxhdGlvbk1lc3NhZ2UiLCJzaG93Q2FuY2VsbGVkRGV0YWlsUG9wdXAiLCJtc2ciLCJjbG9zZUNhbmNlbGxlZERldGFpbHNQb3B1cCIsInB1Ymxpc2hBZnRlckNhbmNlbCIsIlZhbGlkYXRpb25FcnJvcnMiLCJQYWdlTG9hZGVyIiwiQnVsa1B1Ymxpc2hpbmdFcnJvclBvcHVwIiwiY2xhc3NOYW1lMiIsIkVycm9ySXRlbV92dWVfMSIsImNyaXRpY2FsTWVzc2FnZSIsIndhcm5pbmdNZXNzYWdlIiwibm9FcnJvck1lc3NhZ2UiLCJub19lcnJvciIsIkVycm9ySXRlbSIsImZvcm1hdERhdGUiLCJkYXRlRm9ybWF0XzEiLCJkYXRlRm9ybWF0Iiwicm91bmRGbG9hdCIsIm51bSIsInBhcnNlRmxvYXQiLCJ0b0ZpeGVkIiwiSGF2ZU5vdEFkZGVkWWV0X3Z1ZV8xIiwiTm90WWV0IiwidG9vbHRpcCIsImRlZmF1bHRMYW5ndWFnZSIsInJlc3VsdERhdGEiLCJjb250ZW50IiwiY3VycmVudExhbmd1YWdlIiwibW9tZW50IiwiVGl0bGVFbGVtZW50IiwiTWVhc3VyZSIsIkFzY2VuZGluZyIsIkFnZ3JlZ2F0aW9uU3RhdHVzIiwiRGVzY3JpcHRpb24iLCJSZWZlcmVuY2UiLCJCYXNlbGluZSIsIkRvY3VtZW50TGluayIsIlBlcmlvZCIsInJlc3VsdFRpdGxlIiwiaW5kaWNhdG9yIiwicGVyaW9kIiwiZWxlbWVudCIsImxpbmtDbGFzc2VzIiwiaW5kaWNhdG9yRGF0YSIsInBlcmlvZERhdGEiLCJwYXJlbnREYXRhIiwicmVzdWx0X2lkIiwiYWN0aXZpdHlMaW5rIiwicmVzdWx0SWQiLCJhY3Rpdml0eVRpdGxlIiwicmVzdWx0VGl0bGVkIiwicmVzdWx0TGluayIsImluZGljYXRvckxpbmsiLCJpbmRpY2F0b3JUaXRsZSIsImNvdW50RG9jdW1lbnRMaW5rIiwiRGVsZXRlQWN0aW9uX3Z1ZV8xIiwibWV0aG9kcyIsInNuYWtlQ2FzZVRvU2VudGVuY2VDYXNlIiwiY3JlYXRlQ2FwaXRhbGl6ZWRTZW50ZW5jZSIsIkRlbGV0ZUFjdGlvbiIsImluZGljYXRvcnMiLCJpbmRpY2F0b3JzRGF0YSIsImluZGljYXRvcl9saXN0IiwiaGFuZGxlTmF2aWdhdGUiLCJmZXRjaExpc3RpbmdzIiwic3RhdHVzRGF0YSIsImJhc2VUeXBlIiwiZWxlbWVudFNwYWNpbmciLCJiYXNlbGluZSIsImxvY2F0aW9ucyIsInJlZmVyZW5jZSIsImxhc3RMb2NhdGlvbiIsImRpbWVuc2lvbnMiLCJtaXNzaW5nIiwiY29kZSIsImRlc2NUeXBlIiwiZGVzY3JpcHRpb25EYXRhIiwiYWxpZ25tZW50IiwiZGxEYXRhIiwibWVhc3VyZVR5cGUiLCJtZWFzdXJlRGF0YSIsInJlZlR5cGUiLCJyZWZEYXRhIiwidGl0bGVUeXBlIiwidGl0bGVEYXRhIiwiY29yZUVsZW1lbnRzXzEiLCJkcm9wZG93biIsImRyb3Bkb3duQnRuIiwic2VhcmNoQnRuVmFsdWUiLCJzZWFyY2hCdG5Ub2dnbGUiLCJlbGVtZW50SWNvbnMiLCJjb3JlIiwiZmlsdGVyZWRFbGVtZW50cyIsImVsZW1lbnRzX2NvbW1vbl9sYW5nIiwianVzdFN0cmluZ3MiLCJhY3Rpdml0eUNvcmVFbGVtZW50cyIsImRyb3Bkb3duRmlsdGVyIiwiY29udGFpbnMiLCJnZXRMaW5rIiwiaGFzX2RhdGEiLCJFbGVtZW50U3RhdHVzX3Z1ZV8xIiwid2FybmluZ0luZm9UZXh0IiwibGF5b3V0IiwiZGVsZXRlQWN0aXZpdHlFbGVtZW50IiwiZGVsZXRlRWxlbWVudCIsInNjcm9sbFRvIiwiY291bGRudF9kZWxldGVfdGhlX2FjdGl2aXR5IiwiQWN0aXZpdHlEYXRlIiwiQ29uZGl0aW9ucyIsIkNvbnRhY3RJbmZvIiwiSHVtYW5pdGFyaWFuU2NvcGUiLCJJYXRpSWRlbnRpZmllciIsIkxlZ2FjeURhdGEiLCJMb2NhdGlvbiIsIk90aGVySWRlbnRpZmllciIsIlBhcnRpY2lwYXRpbmdPcmciLCJQbGFubmVkRGlzYnVyc2VtZW50IiwiUG9saWN5TWFya2VyIiwiUmVjaXBpZW50Q291bnRyeSIsIlJlY2lwaWVudFJlZ2lvbiIsIlJlbGF0ZWRBY3Rpdml0eSIsIlJlcG9ydGluZ09yZ2FuaXphdGlvbiIsIlNlY3RvciIsIlRhZyIsIlRyYW5zYWN0aW9ucyIsIlN0YXR1cyIsImlzVmlzaWJsZSIsIm1vZGVsVmlzaWJsZSIsInRvZ2dsZU1vZGVsIiwidG9hc3RtZXNzYWdlVHlwZSIsInNob3dFcnJvcnBvcHVwIiwiZG93bmxvYWRpbmdCYWNrZ3JvdW5kTWVzc2FnZSIsImRvd25sb2FkaW5nSW5Qcm9jZXNzIiwiZG93bmxvYWRFcnJvciIsImZpbGVuYW1lIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwicmVtb3ZlQ2hpbGQiLCJkb3dubG9hZEFueXdheSIsImRvd25sb2FkRXJyb3J4bWwiLCJjb3VudEFjdGl2aXRpZXMiLCJxdWVyeVBhcmFtZXRlcnMiLCJhZGRRdWVyeVBhcmFtcyIsImRvd25sb2FkIiwiZG93bmxvYWRYbWwiLCJ4bWxfZXJyb3IiLCJkb3dubG9hZFhscyIsImRvd25sb2FkQ3N2IiwiQWRkQWN0aXZpdHlCdXR0b25fdnVlXzEiLCJBY3Rpdml0eUJ1dHRvbiIsImRpc21pc3MiLCJEb3dubG9hZEFjdGl2aXR5QnV0dG9uX3Z1ZV8xIiwiUmVmcmVzaFRvYXN0X3Z1ZV8xIiwiUHVibGlzaFNlbGVjdGVkX3Z1ZV8xIiwiRG93bmxvYWRBY3Rpdml0eUJ1dHRvbiIsIkFkZEFjdGl2aXR5QnV0dG9uIiwiUmVmcmVzaFRvYXN0TWVzc2FnZSIsIlB1Ymxpc2hTZWxlY3RlZCIsInNlbGVjdEFsbFZhbHVlIiwic2VsZWN0QWxsVG9nZ2xlIiwiZnJvbU5vdyIsInRvZ2dsZVNlbGVjdEFsbCIsImRhdHVtIiwicXVlcnkiLCJkaXJlY3Rpb24iLCJzb3J0aW5nRGlyZWN0aW9uIiwic29ydEJ5UHVibGlzaGluZ1Byb2dyZXNzIiwic29ydEJ5RGF0ZVVybCIsIlRhcmdldFZhbHVlIiwiQWN0dWFsVmFsdWUiLCJpbmRpY2F0b3JJZCIsInBlcmlvZExpbmsiLCJwZXJpb2RzRGF0YSIsInBlcmlvZHNfbGlzdCIsImRsVHlwZSIsImFjdHVhbFZhbHVlIiwiZ2V0TG9jYXRpb24iLCJ0YXJnZXRWYWx1ZSIsIlJlc3VsdEVsZW1lbnRfdnVlXzEiLCJJbmRpY2F0b3JfdnVlXzEiLCJSZXN1bHRFbGVtZW50IiwiSW5kaWNhdG9yIiwiaGFzSW5kaWNhdG9ycyIsInJlc3VsdHNEYXRhIiwiVGl0bGVEZXNjcmlwdGlvbiIsIlJlc3VsdFR5cGUiLCJlbGVtZW50TmFtZSIsImVkaXRVcmwiLCJlbGVtZW50RGF0YSIsInJlc3VsdFR5cGUiLCJyZXN1bHRWb2NhYnVsYXJ5IiwicmVzdWx0X2xpc3QiLCJ0b29sVGlwIiwicmV2ZXJzZSIsInJlZmVyZW5jZURhdGEiLCJ0eXBlRGF0YSIsInRkRGF0YSIsIlRyYW5zYWN0aW9uRWxlbWVudF92dWVfMSIsIlRyYW5zYWN0aW9uRWxlbWVudCIsInRyYW5zYWN0aW9uIiwidHJhbnNhY3Rpb25EYXRhIiwidHJhbnNhY3Rpb25MaW5rIiwiaXNNYW5kYXRvcnlJY29uIiwiciIsIkFpZFR5cGUiLCJUcmFuc2FjdGlvblR5cGUiLCJUcmFuc2FjdGlvbkRhdGUiLCJWYWx1ZSIsIlByb3ZpZGVyT3JnYW5pemF0aW9uIiwiUmVjZWl2ZXJPcmdhbml6YXRpb24iLCJEaXNidXJzZW1lbnRDaGFubmVsIiwiRmxvd1R5cGUiLCJGaW5hbmNlVHlwZSIsIlRpZWRTdGF0dXMiLCJnZXRMYW5ndWFnZXMiLCJlbnRyeSIsInRyYW5zYWN0aW9uc0RhdGEiLCJ0cmFuc2FjdGlvbl9saXN0IiwiYXREYXRhIiwiZmluYW5jZURhdGEiLCJmbG93RGF0YSIsIlBvRGF0YSIsImNvdW50cnkiLCJzZWN0b3IiLCJ0c0RhdGEiLCJhdWRpdERhdGEiLCJmZXRjaEF1ZGl0TGlzdCIsInJvdXRlIiwicGFyYW1zIiwibGFiZWxzIiwicm91bmRlZExhYmVscyIsInNob3dHcmFwaExvYWRlciIsImdyYXBoQW1vdW50IiwieWF4aXNUaWNrcyIsIm1heFZhbHVlIiwiY2hhcnQiLCJncmFwaENvbG9yIiwidG9vbHRpcFRleHQiLCJjaGFydE9wdGlvbnMiLCJoZWlnaHQiLCJvZmZzZXRZIiwiem9vbSIsImVuYWJsZWQiLCJvcHRpb25zIiwieGF4aXMiLCJwYWRkaW5nIiwidG9vbGJhciIsIm1hcmtlcnMiLCJzaXplIiwic3Ryb2tlV2lkdGgiLCJjb2xvcnMiLCJob3ZlciIsInN0cm9rZSIsImN1cnZlIiwiY3VzdG9tIiwic2VyaWVzIiwic2VyaWVzSW5kZXgiLCJkYXRhUG9pbnRJbmRleCIsInciLCJnZXREYXkiLCJmb3JtYXR0ZWREYXRlIiwiZ2xvYmFscyIsImNhdGVnb3J5TGFiZWxzIiwidGlja0Ftb3VudCIsInJvdGF0ZSIsInlheGlzIiwibWluIiwibWF4IiwiZm9ybWF0dGVyIiwieUF4aXNTY2FsZSIsIk1hdGgiLCJyb3VuZCIsIlRhYmxlTG9hZGVyQ29tcG9uZW50X3Z1ZV8xIiwidGFibGVEYXRhIiwidGFibGVIZWFkZXIiLCJhY3Rpdml0eU5hdkxpc3QiLCJhcGlQYXJhbXMiLCJwdWJsaXNoZXJOYXZMaXN0IiwiY3VycmVudHBhZ2UiLCJyZXNldHBhZ2luYXRpb24iLCJvcmRlckJ5Iiwic29ydCIsInNvcnRFbGVtZW50IiwidXNlck5hdmxpc3QiLCJjdXJyZW50SXRlbSIsImN1cnJlbnROYXZMaXN0IiwiZmV0Y2hUYWJsZURhdGEiLCJzb3J0VGFibGUiLCJ0cmlnZ2VycGFnaW5hdGlvbiIsImFjdGl2ZUNsYXNzIiwiTmF2aWdhdGVXaXRoRmlsdGVyIiwidGFiQ2hhbmdlIiwidG9nZ2xlU29ydCIsIm9yZGVyIiwiY29tcGxldGVOZXNzIiwicmVnaXN0cmF0aW9uVHlwZSIsInNob3dUYWJsZUxvYWRlciIsInRydW5jYXRlVGV4dCIsIlRhYmxlTG9hZGVyQ29tcG9uZW50IiwiRGFzaGJvYXJkU3RhdHNTZWN0aW9uX3Z1ZV8xIiwiRGFzaGJvYXJkTGlzdFNlY3Rpb25fdnVlXzEiLCJEYXRlUmFuZ2VXaWRnZXRfdnVlXzEiLCJvbGRlc3REYXRlcyIsImN1cnJlbnROYXYiLCJEYXRlTGFiZWwiLCJncmFwaFRvdGFsIiwicHVibGlzaGVyIiwiaGFuZGxlQ2hhbmdlVGFibGVOYXYiLCJzZXREYXRlUmFuZ2VEYXRlIiwiZmV0Y2hHcmFwaERhdGEiLCJkb3dubG9hZFJlcG9ydCIsImFwcGVuZCIsImdyYXBoRGF0YUZvcm1hdHRlciIsImdyYXBoRGF0YSIsIngiLCJzdGFydCIsImVuZCIsImFjdGl2ZVRhYiIsImtlYmFiQ2FzZVRvU25ha2VjYXNlIiwiY29kZUxpc3QiLCJvYmplY3RMZW5ndGgiLCJwYWdpbmF0ZWREYXRhIiwiaXRlbUluUGFnaW5hdGVkRGF0YSIsInB1Ymxpc2hlclR5cGVLZXkiLCJ0b3RhbCIsIkRhc2hib2FyZFN0YXRzU2VjdGlvbiIsIkRhc2hib2FyZExpc3RTZWN0aW9uIiwiRGF0ZVJhbmdlV2lkZ2V0IiwiQnV0dG9uQ29tcG9uZW50IiwiRGFzaGJvYXJkR3JhcGhfdnVlXzEiLCJpbmFjdGl2ZVB1Ymxpc2hlciIsInB1Ymxpc2hlcldpdGhvdXRBY3Rpdml0eSIsImxhc3RSZWdpc3RlcmVkIiwibGFzdFVwZGF0ZWRQdWJsaXNoZXIiLCJsYXN0VXBkYXRlZEFjdGl2aXR5Iiwic2hvd1N0YXRzTG9hZGVyIiwicHVibGlzaGVyU3RhdHMiLCJzaG93UHVibGlzaGVyU3RhdHMiLCJ1c2VySWQiLCJmZXRjaFN0YXRzRGF0YSIsInByb3h5VXNlciIsImxhc3RSZWdpc3RlcmVkUHVibGlzaGVyIiwidXNlcl9pZCIsImluQWN0aXZlUHVibGlzaGVyIiwiRGFzaGJvYXJkR3JhcGgiLCJmaWxlIiwidXBsb2FkRmlsZSIsInVwbG9hZGluZ19jc3ZfeG1sX2ZpbGUiLCJmaWxlcyIsImNvbmZpZyIsIkZvcm1EYXRhIiwiZXJyb3JfaGFzX29jY3VycmVkX3doaWxlX3VwbG9hZGluZ19maWxlIiwiZG93bmxvYWRFeGNlbCIsInhsc0luZGljYXRvck1vdW50ZWQiLCJ1cGxvYWRUeXBlIiwic2hvd0Rvd25sb2FkRHJvcGRvd24iLCJzaG93RG93bmxvYWRDb2RlIiwic2hvd0NhbmNlbE1vZGVsIiwiZG93bmxvYWRDb2RlIiwiYWN0aXZpdGllc18xIiwicmVxIiwiY2FuY2VsVXBsb2FkIiwiY2FuY2VsSW1wb3J0IiwiaW1wb3J0QW55d2F5Iiwic2VsZWN0QWxsIiwieGxzVHlwZSIsIl9sIiwiX20iLCJJbXBvcnRQbGFjZWhvbGRlcl92dWVfMSIsIkxpc3RFbGVtZW50X3Z1ZV8xIiwic2VsZWN0ZWRDb3VudCIsImFjdGl2aXRpZXNMZW5ndGgiLCJ0YWJsZVJvdyIsInRhYmxlV2lkdGgiLCJ0aW1lciIsImdldERpbWVuc2lvbnMiLCJuZXh0VGljayIsImNsaWVudFdpZHRoIiwidXBkYXRlU2VsZWN0ZWRBY3Rpdml0aWVzIiwic3BsaWNlIiwic2VsZWN0QWxsQWN0aXZpdGllcyIsImltcG9ydEFjdGl2aXRpZXMiLCJpbXBvcnRpbmdfY3N2X3htbF9maWxlIiwiZmlsZXR5cGUiLCJQbGFjZWhvbGRlciIsIkxpc3RFbGVtZW50IiwiU2hpbW1lciIsInRvZ2dsZUVycm9yIiwic2VsZWN0RWxlbWVudCIsInNlbGVjdGVkRGF0YSIsIlhsc0xpc3RFcnJvcl92dWVfMSIsImdsb2JhbEVycm9yIiwic29ydE9yZGVyIiwic2hvd0NyaXRpY2FsRXJyb3JNb2RlbCIsInNob3dJZGVudGlmaWVyRXJyb3JNb2RlbCIsInNob3dDcml0aWNhbEVycm9yTWVzc2FnZSIsInNob3dHTG9iYWxFcnJvciIsInNvcnRlZERhdGEiLCJhIiwiYiIsImNoZWNrQ3JpdGljYWxFcnJvciIsImRvd25sb2FkSWRlbnRpZmllckVycm9yIiwiRmlsZSIsImFuY2hvclRhZyIsInJldm9rZU9iamVjdFVSTCIsImNyaXRpY2FsQXJyeSIsInRvdGFsQ3JpcmljYWxFcnJvckNvdW50IiwiYWRkQWN0aXZpdGllcyIsIlhsc0xpc3RFcnJvciIsIk9yZ2FuaXNhdGlvbkVsZW1lbnRzX3Z1ZV8xIiwiT3JnYW5pc2F0aW9uRWxlbWVudHNEZXRhaWxfdnVlXzEiLCJPcmdhbml6YXRpb25QdWJsaXNoVW5wdWJsaXNoQnV0dG9uX3Z1ZV8xIiwiT3JnYW5pc2F0aW9uRWxlbWVudHMiLCJPcmdhbmlzYXRpb25FbGVtZW50c0RldGFpbCIsIlB1Ymxpc2hVbnB1Ymxpc2giLCJtYW5kYXRvcnlDb21wbGV0ZWQiLCJ1c2VyUm9sZSIsIm9yZ2FuaXphdGlvblByb3BzIiwib3JnYW5pemF0aW9uRGF0YSIsInB1Ymxpc2hNZXNzYWdlIiwibWFuZGF0b3J5Iiwib3JnTWFuZGF0b3J5RWxlbWVudHMiLCJyZXBsYWNlVW5kZXJzY29yZSIsInN0cmluZyIsInJlZ2V4IiwiUmVwb3J0aW5nT3JnYW5pc2F0aW9uIiwiVG90YWxCdWRnZXQiLCJSZXBvcnRpbmdPcmdCdWRnZXQiLCJSZXBvcnRpbmdSZWdpb25CdWRnZXQiLCJSZWNpcGllbnRDb3VudHJ5QnVkZ2V0IiwiVG90YWxFeHBlbmRpdHVyZSIsImVtYWlsIiwiZW1haWxFcnJvciIsInJlcXVlc3QiLCJyZXNwb25zZVVSTCIsImVuY3J5cHRpb25fMSIsInRva2VuIiwicGFzc3dvcmQiLCJwYXNzd29yZF9jb25maXJtYXRpb24iLCJmb3JtIiwicHJvY2VzcyIsImVudiIsIk1JWF9FTkNSWVBUSU9OX0tFWSIsInN0b3JlXzEiLCJhY3Rpb25zXzEiLCJkZWZhdWx0Q29sbGFib3JhdGlvblR5cGUiLCJkZWZhdWx0Rmxvd1R5cGUiLCJkZWZhdWx0RmluYW5jZVR5cGUiLCJkZWZhdWx0QWlkVHlwZSIsImRlZmF1bHRUaWVkU3RhdHVzIiwiZGVmYXVsdEZvcm0iLCJkZWZhdWx0RXJyb3IiLCJ1cGRhdGVTdG9yZSIsIkFjdGlvblR5cGVzIiwiVVBEQVRFX0RFRkFVTFRfVkFMVUVTIiwiU2V0dGluZ0RlZmF1bHRGb3JtX3Z1ZV8xIiwiU2V0dGluZ1B1Ymxpc2hpbmdGb3JtX3Z1ZV8xIiwiU2V0dGluZ0RlZmF1bHRGb3JtIiwiU2V0dGluZ1B1Ymxpc2hpbmdGb3JtIiwidGFiIiwicHVibGlzaGluZ0Zvcm0iLCJwdWJsaXNoaW5nSW5mbyIsInB1Ymxpc2hpbmdFcnJvciIsInNldHRpbmdEYXRhIiwicHVibGlzaGVySW5mbyIsImFjdGl2aXR5VmFsdWVzIiwiZGVmYXVsdF92YWx1ZXMiLCJwdWJsaXNoaW5nX2luZm8iLCJhY3Rpdml0eV9kZWZhdWx0X3ZhbHVlcyIsImFwaV90b2tlbiIsInRvZ2dsZVRhYiIsInN1Ym1pdERlZmF1bHQiLCJoaWVyYXJjaGlhbCIsInN1Ym1pdFB1Ymxpc2hpbmciLCJwdWJsaXNoZXJfdmVyaWZpY2F0aW9uIiwidG9rZW5fdmVyaWZpY2F0aW9uIiwiYXV0b1ZlcmlmeSIsIlVQREFURV9QVUJMSVNISU5HX0ZPUk0iLCJUYWJsZUxpc3RfdnVlXzEiLCJjb3VudHJpZXMiLCJzZXR1cENvbXBsZXRlbmVzcyIsInJlZ2lzdHJhdGlvblR5cGVzIiwicHVibGlzaGVyVHlwZXMiLCJkYXRhTGljZW5zZXMiLCJUYWJsZUxpc3QiLCJsYW5nXzEiLCJwaHBEZXBlbmRlbmNpZXMiLCJub2RlRGVwZW5kZW5jaWVzIiwicGFja2FnZU1hbmFnZXJWZXJzaW9uIiwibGF0ZXN0TWFuYWdlclZlcnNpb24iLCJnZXRTdGF0dXNDbGFzcyIsInVwZGF0ZVN0YXR1cyIsImdldFN0YXR1c01lc3NhZ2UiLCJyZXNvbHZlTGF0ZXN0VmVyc2lvbiIsImdldEluZGV4IiwicGFyc2VJbnQiLCJvcmdhbml6YXRpb25OYW1lIiwic3dpdGNoQmFjayIsIk11bHRpU2VsZWN0V2l0aFNlYXJjaF92dWVfMSIsImdldENvdW50cmllc1dpdGhQcmVmaXgiLCJyZXR1cm5WYWx1ZUZvckNvdW50cmllcyIsImNvdW50cnlDb2RlcyIsImNvdW50cmllc1dpdGhQcmVmaXgiLCJvcmdhbmlzYXRpb25EYXRhIiwibXVsdGlzZWxlY3RTdHlsZSIsInB1Ymxpc2hlcl90eXBlIiwiZGF0YV9saWNlbnNlIiwiY29tcGxldGVuZXNzIiwicmVnaXN0cmF0aW9uX3R5cGUiLCJzdGFydF9kYXRlIiwiZW5kX2RhdGUiLCJkYXRlX3R5cGUiLCJzZWxlY3RlZF9kYXRlX2ZpbHRlciIsInJlc2V0UGFnaW5hdGlvbiIsInRvdGFsT3JnYW5pc2F0aW9uIiwicmVnaXN0cnlBcGlLZXlTdGF0dXMiLCJkZWZhdWx0VmFsdWVTdGF0dXMiLCJzaG93TXVsdGlTZWxlY3RXaXRoU2VhcmNoIiwiY3JlYXRlZF9hdCIsImxhc3RfbG9nZ2VkX2luIiwic29ydFBhcmFtcyIsInJvdGF0ZUNsYXNzIiwiY2xvc2VQdWJsaXNoZXJNb2RlbCIsImNsZWFyRGF0ZUZpbHRlciIsImdlbmVyYXRlTGFiZWwiLCJmaWx0ZXJQYXJhbXMiLCJnZXRGaWx0ZXJQYXJhbXNGcm9tUHJldmlvdXNQYWdlIiwiZmV0Y2hPcmdhbmlzYXRpb24iLCJxdWVyeVBhcmFtc0luS2V5VmFsIiwicXVlcnlQYXJhbXMiLCJpc0ZpbHRlckFwcGxpZWQiLCJmaWx0ZXJLZXkiLCJyZWZyZXNoU3RhdHVzQXJyYXlzIiwicHJveHlfbG9naW4iLCJkZWZhdWx0U29ydERpcmVjdGlvbiIsInNvcnREaXJlY3Rpb24iLCJvcmRlclR5cGUiLCJzb3J0QnkiLCJyZXNldEFsbEZpbHRlcnMiLCJvcmdEYXRhIiwib3JnRGF0dW0iLCJjaGVja0lmRGVmYXVsdFZhbHVlc0FyZVZhbGlkIiwiYWN0aXZpdHlEZWZhdWx0VmFsdWVzIiwic2VsZWN0ZWREYXRlRmlsdGVyIiwic2V0RGF0ZVR5cGUiLCJ0b2dnbGVTaG93TXVsdGlTZWxlY3QiLCJyZWN0Iiwic2V0U2VsZWN0ZWRQdWJsaXNoZXIiLCJzaG93TWFwcGVkRGF0YSIsImxpY2Vuc2UiLCJ0cmltIiwibm90X2F2YWlsYWJsZSIsIk11bHRpU2VsZWN0V2l0aFNlYXJjaCIsIm9yZ2FuaXphdGlvbnMiLCJyb2xlcyIsInEiLCJhZGRVc2VyRm9ybSIsImVkaXRVc2VyRm9ybSIsInVzZXJzRGF0YSIsImFsbFNlbGVjdGVkIiwiZGVsZXRlTW9kYWwiLCJkZWxldGVJZCIsInRvdGFsVXNlciIsInN0YXR1c0lkIiwic3RhdHVzTW9kYWwiLCJzdGF0dXNWYWx1ZSIsInN0YXR1c1VzZXJuYW1lIiwiZGVsZXRlVXNlcm5hbWUiLCJmZXRjaGluZ1RhYmxlRGF0YSIsInNlbGVjdGVkSWRzIiwiY2hlY2tsaXN0IiwiY3VycmVudHBhZ2VEYXRhIiwiZWRpdFVzZXJJZCIsInVzZXJuYW1lIiwiZnVsbF9uYW1lIiwicm9sZV9pZCIsImZvcm1FcnJvciIsImNsZWFyRGF0ZVJhbmdlRmlsdGVyIiwicm9sZSIsInRleHRCdWJibGVkYXRhIiwiZmllbGQiLCJjbGVhckZpbHRlciIsImNyZWF0ZVVzZXIiLCJwYXNzd29yZERhdGEiLCJzZXRGb3JtRXJyb3IiLCJmZXRjaFVzZXJzTGlzdCIsImVtcHR5Rm9ybURhdGEiLCJlZGl0VXNlciIsIm9wZW5TdGF0dXNNb2RlbCIsInVwZGF0ZVVzZXIiLCJwYXRjaCIsImZpbHRlcl9rZXkiLCJvcGVuRGVsZXRlbW9kZWwiLCJkZWxldGVVc2VyIiwidG9nZ2xlVXNlclN0YXR1cyIsInRvZ2dsZVNlbGVjdGFsbCIsImVsIiwiZG93bmxvYWRBbGwiLCJhbGxQYWdlU2VsZWN0ZWQiLCJmbGF0IiwiUG9wdXBNb2RhbCIsImxhbmd1YWdlUHJlZmVyZW5jZSIsImVkaXRQcm9maWxlRm9ybSIsImVkaXRQYXNzd29yZEZvcm0iLCJzaG93Q3VycmVudFBhc3N3b3JkIiwic2hvd05ld1Bhc3N3b3JkIiwic2hvd0NvbmZpcm1QYXNzd29yZCIsInVzZXJEYXRhIiwidXNlcl9yb2xlIiwibGFuZ3VhZ2VfcHJlZmVyZW5jZSIsImVycm9yRm9ybURhdGEiLCJjdXJyZW50X3Bhc3N3b3JkIiwiZXJyb3JQYXNzd29yZERhdGEiLCJ1cGRhdGVQYXNzd29yZCIsInBhc3N3b3JkRm9ybURhdGEiLCJmb3JtX3R5cGUiLCJ1cGRhdGVQcm9maWxlIiwiRW1haWxWZXJpZmljYXRpb25fdnVlXzEiLCJFbWFpbFZlcmlmaWNhdGlvbiIsInB1Ymxpc2hlckV4aXN0cyIsInRleHRhcmVhIiwicHVibGlzaGVyX25hbWUiLCJwdWJsaXNoZXJfaWQiLCJyZWdpc3RyYXRpb25fYWdlbmN5IiwicmVnaXN0cmF0aW9uX251bWJlciIsImlkZW50aWZpZXIiLCJsaWNlbnNlX2lkIiwiaW1hZ2VfdXJsIiwiY29udGFjdF9lbWFpbCIsIndlYnNpdGUiLCJhZGRyZXNzIiwic291cmNlIiwicmVjb3JkX2V4Y2x1c2lvbnMiLCJpYXRpRXJyb3IiLCJyZXNpemUiLCJzY3JvbGxIZWlnaHQiLCJhZ2VuY2llcyIsInJlZ2lzdHJhdGlvbkFnZW5jeSIsInVuY2F0ZWdvcml6ZWRfMSIsInN0YXJ0c1dpdGgiLCJzb21lIiwiaXNUZXh0RmllbGQiLCJmaWVsZFR5cGUiLCJmaWVsZE5hbWUiLCJjaGVja1N0ZXAiLCJmb3JtU3RlcCIsInJlZ2lzdGVyRm9ybSIsInJlZ2lzdGVyX2xhbmciLCJwdWJsaXNoZXJfaW5mb3JtYXRpb24iLCJpc19jb21wbGV0ZSIsImhvdmVyX3RleHQiLCJmaWVsZHMiLCJwbGFjZWhvbGRlciIsImhlbHBfdGV4dCIsIm9yZ19yZWdpc3RyYXRpb25fYWdlbmN5IiwiZm9yX2VnIiwiaWF0aV9vcmdfaWRlbnRpZmllciIsInB1Ymxpc2hlclR5cGUiLCJkYXRhTGljZW5zZSIsInB1Ymxpc2hlcl9sb2dvX3VybCIsIm9yZ2FuaXNhdGlvbl9kZXNjIiwiY29udGFjdF9pbmZvIiwiY29udGFjdCIsInB1Ymxpc2hpbmdfYWRkaXRpb25hbF9pbmZvIiwiYWRtaW5pc3RyYXRvcl9pbmZvcm1hdGlvbiIsImlhdGlfcmVnaXN0ZXJfZGVzY3JpcHRpb24iLCJmdWxsbmFtZSIsImVtYWlsX2FkZHJlc3MiLCJjb25maXJtIiwiY29uZmlybV9oZWxwIiwiZW1haWxfdmVyaWZpY2F0aW9uIiwidXBkYXRlVmFsaWRhdGlvbkVycm9ycyIsImVycm9yUmVzcG9uc2UiLCJjbGVhblZhbGlkYXRpb25FcnJvcnMiLCJ1cGRhdGVFcnJvcnMiLCJldmVyeSIsImNsZWFuSWF0aUVycm9ycyIsInZlcmlmeVB1Ymxpc2hlciIsInVwZGF0ZVN0ZXAiLCJ2ZXJpZnlDb250YWN0SW5mb3JtYXRpb24iLCJ2ZXJpZnlBZGRpdGlvbmFsSW5mb3JtYXRpb24iLCJnZXRDdXJyZW50U3RlcCIsImN1cnJlbnRfc3RlcCIsImdvVG9OZXh0Rm9ybSIsImdvVG9QcmV2aW91c0Zvcm0iLCJkb3dubG9hZE1hbnVhbCIsIm9yaWdpbiIsInRyaWdnZXJNb2RlbCIsImFnZW5jeSIsIm9yZ2FuaXphdGlvbl9yZWdpc3RyYXRpb25fYWdlbmN5Iiwib3JnYW5pemF0aW9uX3JlZ2lzdHJhdGlvbl9ubyIsIm9yZ19yZWdpc3RyYXRpb25fbm8iLCJpYXRpX29yZ2FuaXphdGlvbmFsX2lkZW50aWZpZXIiLCJyZWdpc3Rlcl9kZXNjcmlwdGlvbiIsImNvbmZpcm1fcGFzc3dvcmQiLCJ1cGRhdGVGb3JtRXJyb3JzIiwiZXJyS2V5IiwiaW50ZW50IiwibG9naW4iLCJOYXZEcm9wZG93bl92dWVfMSIsIk5hdkRyb3Bkb3duIiwiYXV0aCIsInJlbmRlciIsIl9ob2lzdGVkXzEiLCJfaG9pc3RlZF8yIiwiX2hvaXN0ZWRfMyIsIl9ob2lzdGVkXzQiLCJjcmVhdGVFbGVtZW50Vk5vZGUiLCJfaG9pc3RlZF81IiwiX2hvaXN0ZWRfNiIsIl9ob2lzdGVkXzciLCJfaG9pc3RlZF84IiwiX2hvaXN0ZWRfOSIsIl9ob2lzdGVkXzEwIiwiX2N0eCIsIl9jYWNoZSIsIiRwcm9wcyIsIiRzZXR1cCIsIiRkYXRhIiwiJG9wdGlvbnMiLCJfY29tcG9uZW50X3N2Z192dWUiLCJyZXNvbHZlQ29tcG9uZW50Iiwib3BlbkJsb2NrIiwiY3JlYXRlRWxlbWVudEJsb2NrIiwiRnJhZ21lbnQiLCJvbkNsaWNrIiwiY3JlYXRlVk5vZGUiLCJjcmVhdGVDb21tZW50Vk5vZGUiLCJub3JtYWxpemVTdHlsZSIsIiRldmVudCIsInRvRGlzcGxheVN0cmluZyIsImNyZWF0ZUJsb2NrIiwid2l0aEN0eCIsIl93aXRoU2NvcGVJZCIsInB1c2hTY29wZUlkIiwicG9wU2NvcGVJZCIsIl9ob2lzdGVkXzExIiwiX2hvaXN0ZWRfMTIiLCJfaG9pc3RlZF8xMyIsIl9ob2lzdGVkXzE0IiwiX2hvaXN0ZWRfMTUiLCJfaG9pc3RlZF8xNiIsIl9ob2lzdGVkXzE3IiwiX2hvaXN0ZWRfMTgiLCJfaG9pc3RlZF8xOSIsIl9ob2lzdGVkXzIwIiwiX2hvaXN0ZWRfMjEiLCJfaG9pc3RlZF8yMiIsIl9ob2lzdGVkXzIzIiwiX2hvaXN0ZWRfMjQiLCJfaG9pc3RlZF8yNSIsIl9ob2lzdGVkXzI2IiwiX2hvaXN0ZWRfMjciLCJfaG9pc3RlZF8yOCIsIl9ob2lzdGVkXzI5IiwiX2hvaXN0ZWRfMzAiLCJfaG9pc3RlZF8zMSIsIl9ob2lzdGVkXzMyIiwiX2hvaXN0ZWRfMzMiLCJfaG9pc3RlZF8zNCIsIl9ob2lzdGVkXzM1IiwiX2hvaXN0ZWRfMzYiLCJfaG9pc3RlZF8zNyIsIl9ob2lzdGVkXzM4IiwiX2hvaXN0ZWRfMzkiLCJfaG9pc3RlZF80MCIsIm5vcm1hbGl6ZUNsYXNzIiwicmVuZGVyTGlzdCIsIm5hdl9fcG9pbnRlciIsImxvZ3MiLCJhZGRfYWN0aXZpdHlfbWFudWFsbHkiLCJpbXBvcnRfYWN0aXZpdGllc19mcm9tX2NzdiIsImltcG9ydF9hY3Rpdml0aWVzX2Zyb21feGxzIiwiYXBpIiwic3lzdGVtIiwiY3JlYXRlVGV4dFZOb2RlIiwid2l0aERpcmVjdGl2ZXMiLCJzZWFyY2hfYWN0aXZpdHkiLCJvbktleXVwIiwid2l0aEtleXMiLCJ2TW9kZWxUZXh0Iiwic2VhcmNoX29yZ2FuaXNhdGlvbiIsInlvdXJfcHJvZmlsZSIsIm9uQ2xvc2UiLCJvbkNsb3NlTW9kYWwiLCJvblRvYXN0IiwiYmMiLCJkIiwiYW5vdGhlcl9idWxrX3B1Ymxpc2hfaW5fcHJvZ3Jlc3MiLCJhY3Rpdml0aWVzX2JlaW5nX3B1Ymxpc2hlZCIsInBsZWFzZV93YWl0X2Zvcl9wcmV2aW91c190b19jb21wbGV0ZSIsIiRlbWl0IiwidG8iLCJpYXRpX3JlZ2lzdHJ5IiwiZGlzYWJsZWQiLCJ2U2hvdyIsImVtcHR5IiwibW9kZWxWYWx1ZSIsImNsZWFyYWJsZSIsInRlbGVwb3J0Iiwib25PcGVuIiwib25DbGVhcmVkIiwieWVhcmx5IiwicHJlc2V0RGF0ZVJhbmdlIiwiYWN0aW9uIiwidGFiaW5kZXgiLCJjb2xzIiwicm93cyIsImNyZWF0ZVN0YXRpY1ZOb2RlIiwiY29tbW9vbl9sYW5nIiwic2VsZWN0X2FfdmFsdWUiLCJnZW5lcmFsIiwib2JqZWN0aXZlcyIsInRhcmdldF9ncm91cHMiLCJvdGhlciIsImFkZF9uYXJyYXRpdmVfaW5fb3RoZXJfbGFuZyIsImFkZF9hZGRpdGlvbmFsX2Rlc2NyaXB0aW9uIiwiYWxlcnRzIiwiYWNjb3VudF9ub3RfdmVyaWZpZWQiLCJjb21wbGV0ZV95b3VyX3NldHVwIiwicHVibGlzaGVyX2lzX2luYWN0aXZlIiwic2hvd19sZXNzIiwic2hvd19tb3JlIiwiYXMiLCJlbnRlciIsImxlYXZlIiwiYWNjb3VudF9ub3RfdmVyaWZpZWRfZGVzY19wMSIsImFjY291bnRfbm90X3ZlcmlmaWVkX2Rlc2NfcDIiLCJpbm5lckhUTUwiLCJhY2NvdW50X25vdF92ZXJpZmllZF9kZXNjX3AzIiwiY29tcGxldGVfeW91cl9zZXR1cF9kZXNjcmlwdGlvbiIsInVwZGF0ZV9yZWdpc3RyeV9pbmZvcm1hdGlvbiIsImFwaV9rZXlfYW5kX3B1Ymxpc2hlcl9pZCIsImVudGVyX2NvcnJlY3RfYXBpX3Rva2VuIiwidXBkYXRlX2RlZmF1bHRfdmFsdWVzIiwicHVibGlzaGVyX2lzX25vdF9hY3RpdmUiLCJpYXRpX3N0YW5kYXJkX3JlZmVyZW5jZSIsImxlYXJuX21vcmUiLCJvbklucHV0Iiwidk1vZGVsQ2hlY2tib3giLCJUZWxlcG9ydCIsIlRyYW5zaXRpb24iLCJhcmdzIiwicmVuZGVyU2xvdCIsIiRzbG90cyIsIl9jb21wb25lbnRfcmFkaWFsX3Byb2dyZXNzX2JhciIsImRpYW1ldGVyIiwicm93IiwiY29sIiwicHJldiIsIm0iLCJlbGVfZXJyIiwidHJ1bmMiLCJkZWxldGVfZWxlbWVudCIsImRlbGV0ZV9jb25maXJtYXRpb24iLCJnb19iYWNrIiwib25SZXNldCIsImNvbnRpbnVlX2FueXdheSIsImFkZF9lbGVtZW50IiwicHVibGlzaF9hbnl3YXkiLCJmaXhfaXNzdWVzIiwidW5wdWJsaXNoIiwidW5wdWJsaXNoX2NvbmZpcm1hdGlvbiIsImRlbGV0ZV9jb25maXJtYXRpb25fZGVmYXVsdCIsInJlbGF0ZWRfaW5kaWNhdG9yX3BlcmlvZF9kZWxldGVkIiwicmVsYXRlZF9wZXJpb2RfZGVsZXRlZCIsIm1vZHVsZSIsImlhdGlfcGF0aCIsIl9jb21wb25lbnRfQnRuIiwib3JnYW5pc2F0aW9uIiwiX2NvbXBvbmVudF9CcmVhZGNydW1iIiwiYWxtb3N0X3RoZXJlIiwiaXNzdWVzX2ZvdW5kIiwiaWF0aV92YWxpZGF0b3JfaXNzdWVzIiwidXBsb2FkX2ZpbGVfaXNzdWVzIiwiZXJyb3JJbmRleCIsImVycm9yTGlzdCIsImxpc3RJbmRleCIsIl9jb21wb25lbnRfSG92ZXJUZXh0IiwiYWN0aXZpdHlfZGVmYXVsdF9sYW5nIiwib3ZlcnJpZGVfZGVmYXVsdF92YWx1ZXMiLCJjdXJyZW5jeSIsImhvdmVyX2hlYWRlciIsInNlYXJjaGFibGUiLCJjYW5jZWxfbGFiZWwiLCJzYXZlX2RlZmF1bHRfdmFsdWVzX2xhYmVsIiwiX2hvaXN0ZWRfNDEiLCJfaG9pc3RlZF80MiIsIl9ob2lzdGVkXzQzIiwiX2hvaXN0ZWRfNDQiLCJfaG9pc3RlZF80NSIsIl9ob2lzdGVkXzQ2IiwiX2hvaXN0ZWRfNDciLCJfaG9pc3RlZF80OCIsIl9ob2lzdGVkXzQ5IiwiX2hvaXN0ZWRfNTAiLCJfaG9pc3RlZF81MSIsIl9ob2lzdGVkXzUyIiwiX2hvaXN0ZWRfNTMiLCJfaG9pc3RlZF81NCIsIl9ob2lzdGVkXzU1IiwiX2hvaXN0ZWRfNTYiLCJfaG9pc3RlZF81NyIsIl9ob2lzdGVkXzU4IiwiX2NvbXBvbmVudF9Ub2FzdCIsIl9jb21wb25lbnRfRXJyb3JQb3BVcCIsIl9jb21wb25lbnRfRGVsZXRlQnV0dG9uIiwiX2NvbXBvbmVudF9VblB1Ymxpc2giLCJfY29tcG9uZW50X1B1Ymxpc2giLCJfY29tcG9uZW50X0Vycm9ycyIsIl9jb21wb25lbnRfUHJldmlvdXNseVB1Ymxpc2hlZCIsIl9jb21wb25lbnRfUHJvZ3Jlc3NCYXIiLCJfY29tcG9uZW50X0VsZW1lbnRzIiwiX2NvbXBvbmVudF9BY3Rpdml0eUVsZW1lbnQiLCJfY29tcG9uZW50X1Jlc3VsdCIsIl9kaXJlY3RpdmVfc3RpY2t5X2NvbXBvbmVudCIsInJlc29sdmVEaXJlY3RpdmUiLCJfZGlyZWN0aXZlX3Ntb290aF9zY3JvbGwiLCJ5b3VyX2FjdGl2aXRpZXNfbGFiZWwiLCJ1bnRpdGxlZCIsImFjdGl2aXR5X2NvdWxkX25vdF9iZV9wdWJsaXNoZWQiLCJvbkNsb3NlUG9wdXAiLCJ1blB1Ymxpc2hlZCIsInNob3dQdWJsaXNoZWQiLCJwdWJsaXNoRXJyb3JzIiwicHVibGlzaGluZ19wcm9ncmVzcyIsInRoZV9pYXRpX3N0YW5kYXJkX2NvbnRhaW5zX3dpZGUiLCJjb21wbGV0ZV9hbGxfY29yZV9sYWJlbCIsImVhY2hfZWxlbWVudF9yZXByZXNlbnRzIiwiY29yZV9lbGVtZW50c19pbmNsdWRlIiwiY2Fubm90X3B1Ymxpc2hfYWN0aXZpdHlfdW50aWxfbWFuZGF0b3J5IiwiYm91bmRhcnkiLCJ1Y19vdmVycmlkZV90aGlzX2FjdGl2aXR5X2xhYmVsIiwiaWNvbl9zaXplIiwid2FybmluZ19pbmZvX3RleHQiLCJfY29tcG9uZW50X0xvYWRlciIsIl9jb21wb25lbnRfUGFnZVRpdGxlIiwiX2NvbXBvbmVudF9FcnJvck1lc3NhZ2UiLCJfY29tcG9uZW50X0VtcHR5QWN0aXZpdHkiLCJfY29tcG9uZW50X1RhYmxlTGF5b3V0IiwiX2NvbXBvbmVudF9QYWdpbmF0aW9uIiwiX2NvbXBvbmVudF9YbHNVcGxvYWRJbmRpY2F0b3IiLCJvblNob3dPckhpZGUiLCJvbkZldGNoQWN0aXZpdGllcyIsIl9jb21wb25lbnRfTXVsdGlzZWxlY3QiLCJfY29tcG9uZW50X0J0bkNvbXBvbmVudCIsIl9jb21wb25lbnRfTW9kYWwiLCJhZGRfYV90aXR0bGVfYW5kX2lkZW50aWZpZXJfbGFiZWwiLCJlbGVtZW50c19sYW5nIiwiZXJyb3JfX2lucHV0IiwidHlwZV9uYXJyYXRpdmVfaGVyZSIsImFfY29kZV9zcGVjaWZ5aW5nX3RleHRfb3JnX2RvY3VtZW50X2xpbmtfdGl0bGVfbmFycmF0aXZlIiwic2VsZWN0X2xhbmd1YWdlIiwieW91cl9kZWZhdWx0X2xhbmd1YWdlX2Fzc3VtZWRfbm9fdGhhdCIsImlhdGlfaWRlbnRpZmllciIsInR5cGVfaWRlbnRpZmllcl9oZXJlIiwic2hvcnRlcl9oZWxwX3RleHQiLCJpYXRpX2lkZW50aWZpZXJfdGV4dCIsInRoaXNfaXNfYXV0b2dlbmVyYXRlZCIsImNhbmNlbCIsInNhdmUiLCJjIiwidmlld19lcnJvcnNfb3Jfd2FybmluZyIsInB1Ymxpc2hfc2VsZWN0ZWQiLCJwdWJsaXNoaW5nX2FsZXJ0IiwiYWN0aXZpdGllc19hbHJlYWR5X3B1Ymxpc2hlZF93aWxsX25vdCIsImNoYW5nZXNfbWFkZV90b19wdWJsaXNoZWRfd2lsbF9iZV9yZXB1Ymxpc2hlZCIsImFjdCIsIm5vX2FjdGl2aXRpZXNfZm91bmQiLCJjYW5jZWxsYXRpb25fc3VjY2Vzc2Z1bCIsImNvbnRpbnVlX3NlbGVjdGluZyIsInJlZnJlc2giLCJjcml0aWNhbF9lcnJvcl9mb3VuZCIsImFjdGl2aXRpZXNfbm9jYXNlIiwiZXJyb3JzX2FuZF93YXJuaW5nc19mb3VuZCIsIm5vX2Vycm9ycyIsImFjdGl2aXR5RGF0ZSIsImNvbmRpdGlvbl9hdHRhY2hlZCIsImF0dGFjaGVkIiwibm8iLCJ5ZXMiLCJjb25kaXRpb24iLCJjb25kaXRpb25fdHlwZSIsImNvbmRpdGlvblR5cGUiLCJjb25kaXRpb25zX25vdF9hdHRhY2hlZCIsImNvbnRhY3RUeXBlIiwicGVyc29uX25hbWUiLCJkZXBhcnRtZW50Iiwiam9iX3RpdGxlIiwiZW1haWxfdmFsdWUiLCJ0ZWxlcGhvbmUiLCJ0ZWwiLCJtYWlsaW5nX2FkZHJlc3MiLCJhZGRyZXNzX2luZGV4IiwiZGVzY3JpcHRpb25UeXBlIiwiaHVtYW5pdGFyaWFuU2NvcGVUeXBlIiwidm9jYWJ1bGFyeSIsImh1bWFuaXRhcmlhblNjb3BlVm9jYWJ1bGFyeSIsInZvY2FidWxhcnlfdXJpIiwibGVnYWN5X25hbWUiLCJpYXRpX2VxdWl2YWxlbnQiLCJsb2NhdGlvbl9yZWFjaCIsImdlb2dyYXBoaWNMb2NhdGlvblJlYWNoIiwibG9jYXRpb25fcmVhY2hlZCIsImxvY2F0aW9uX2lkIiwiZ2VvZ3JhcGhpY1ZvY2FidWxhcnkiLCJhY3Rpdml0eV9kZXNjcmlwdGlvbiIsImFkbWluaXN0cmF0aXZlIiwibGV2ZWwiLCJwb2ludCIsInNyc19uYW1lIiwicG9zIiwibGF0aXR1ZGUiLCJsb25naXR1ZGUiLCJleGFjdG5lc3MiLCJnZW9ncmFwaGljRXhhY3RuZXNzIiwibG9jYXRpb25fY2xhc3MiLCJnZW9ncmFwaGljTG9jYXRpb25DbGFzcyIsImZlYXR1cmVfZGVzaWduYXRpb24iLCJwcm9wZXJfY2xhc3MiLCJsb2NhdGlvblR5cGUiLCJyZWZlcmVuY2VfdHlwZSIsIm90aGVySWRlbnRpZmllclR5cGUiLCJvd25lcl9vcmciLCJvd25lcl9vcmdhbmlzYXRpb25fcmVmZXJlbmNlIiwib3duZXJfb3JnYW5pc2F0aW9uX25hcnJhdGl2ZSIsInBhcnRpY2lwYXRpbmdfb3JnIiwib3JnYW5pemF0aW9uX3JvbGUiLCJvcmdhbmlzYXRpb25Sb2xlIiwib3JnYW5pc2F0aW9uX3JvbGUiLCJvcmdhbmlzYXRpb25fbmFtZSIsIm9yZ2FuaXNhdGlvbl90eXBlIiwib3JnYW5pemF0aW9uVHlwZSIsImNyc19jaGFubmVsX2NvZGUiLCJjcnNDaGFubmVsQ29kZSIsImJ1ZGdldFR5cGUiLCJwbGFubmVkX2Rpc2J1cnNlbWVudF90eXBlIiwidmFsdWVfYW1vdW50IiwiYW1vdW50IiwidG9Mb2NhbGVTdHJpbmciLCJ2YWx1ZV9kYXRlIiwicHJvdmlkZXJfb3JnIiwiZWxlbWVudF9sYWJlbHNfbGFuZyIsInByb3ZpZGVyX29yZ19zcGFjZWQiLCJwcm92aWRlciIsInByb3ZpZGVyX2FjdGl2aXR5X2lkIiwicmVjZWl2ZXJfb3JnIiwicmVjZWl2ZXJfb3JnX3NwYWNlZCIsInJlY2VpdmVyIiwicmVjZWl2ZXJfYWN0aXZpdHlfaWQiLCJwb2xpY3lfbWFya2VyX3ZvY2FidWxhcnkiLCJwb2xpY3lNYXJrZXJWb2NhYnVsYXJ5IiwicG9saWN5X21hcmtlciIsInBvbGljeU1hcmtlciIsInBvbGljeV9tYXJrZXJfdGV4dCIsInNpZ25pZmljYW5jZSIsInBvbGljeVNpZ25pZmljYW5jZSIsImNvdW50cnlfY29kZSIsInBlcmNlbnRhZ2UiLCJyZWdpb25fdm9jYWJ1bGFyeSIsInJlZ2lvblZvY2FidWxhcnkiLCJyZWdpb25fY29kZSIsInJlZ2lvbiIsImN1c3RvbV9jb2RlIiwicmVsYXRpb25zaGlwX3R5cGUiLCJyZWxhdGVkQWN0aXZpdHlUeXBlIiwicmVwb3J0aW5nX29yZyIsInNlY29uZGFyeV9yZXBvcnRlciIsIl9jb21wb25lbnRfTm90WWV0IiwibmV3X3Jlc3VsdCIsInNob3dfZWxlbWVudCIsImZ1bGxfcmVzdWx0Iiwidmlld19lbGVtZW50IiwiZWRpdF9lbGVtZW50IiwicmVzdWx0X3R5cGUiLCJub3RfeWV0X2FkZGVkX3BlcmlvZCIsIm5vdF95ZXRfYWRkZWRfcGVyaW9kX2J0biIsIm5ld19pbmRpY2F0b3IiLCJmdWxsX2luZGljYXRvciIsInBlcmlvZHMiLCJlZGl0Iiwic2hvd19mdWxsX3BlcmlvZCIsInNlY3Rvcl92b2NhYnVsYXJ5Iiwic2VjdG9yVm9jYWJ1bGFyeSIsInNlY3RvckNvZGUiLCJjYXRlZ29yeV9jb2RlIiwic2VjdG9yQ2F0ZWdvcnkiLCJzZGdfZ29hbCIsInNkZ0dvYWxzIiwic2RnX3RhcmdldCIsInNkZ1RhcmdldCIsInRhZ192b2NhYnVsYXJ5IiwidGFnVm9jYWJ1bGFyeSIsInRhZ190ZXh0IiwiZ29hbHNfdGFnX2NvZGUiLCJ0YXJnZXRzX3RhZ19jb2RlIiwidHJhbnMiLCJ0cmFuc2FjdGlvblR5cGUiLCJ0cmFuc2FjdGlvbl90eXBlIiwidHJhbnNhY3Rpb25fdHlwZV9jb2RlIiwidmFsIiwidmFsdWVkX2F0IiwiX2NvbXBvbmVudF9UaXRsZUVsZW1lbnQiLCJfY29tcG9uZW50X0FzY2VuZGluZyIsIl9jb21wb25lbnRfTWVhc3VyZSIsIl9jb21wb25lbnRfQWdncmVnYXRpb25TdGF0dXMiLCJfY29tcG9uZW50X0Rlc2NyaXB0aW9uIiwiX2NvbXBvbmVudF9SZWZlcmVuY2UiLCJfY29tcG9uZW50X0Jhc2VsaW5lIiwiX2NvbXBvbmVudF9QZXJpb2QiLCJfY29tcG9uZW50X0RvY3VtZW50TGluayIsImluZGljYXRvcl9kZXRhaWwiLCJpbmRpY2F0b3JfY29kZSIsInJEYXRhIiwicmkiLCJwZXJpb2Rfbm9jYXNlIiwiZG9jdW1lbnRfbGluayIsImFzY2VuZGluZyIsIm1lYXN1cmUiLCJpbmRpY2F0b3JNZWFzdXJlIiwiYWdncmVnYXRpb25fc3RhdHVzIiwic2NvcGUiLCJjb2xzcGFuIiwiX2NvbXBvbmVudF9EZWxldGVBY3Rpb24iLCJub3RfZm91bmQiLCJiYXNlIiwiZGltZW5zaW9uIiwiY29tbWVudCIsImNvbSIsIm5hIiwiZGVmdWFsdCIsImNhdGVnb3J5IiwiY2F0IiwiZG9jdW1lbnRDYXRlZ29yeSIsImRvY3VtZW50X2RhdGUiLCJpbmRpY2F0b3JWb2NhYnVsYXJ5IiwiaW5kaWNhdG9yX3VyaSIsInNlYXJjaF9lbGVtZW50c19wbGFjZWhvbGRlciIsImFsbF9lbGVtZW50cyIsInZpZXdCb3giLCJmaWxsIiwieG1sbnMiLCJfaG9pc3RlZF81OSIsIl9ob2lzdGVkXzYwIiwiX2hvaXN0ZWRfNjEiLCJfaG9pc3RlZF82MiIsIl9ob2lzdGVkXzYzIiwiX2hvaXN0ZWRfNjQiLCJfaG9pc3RlZF82NSIsIl9ob2lzdGVkXzY2IiwiX2hvaXN0ZWRfNjciLCJfaG9pc3RlZF82OCIsIl9ob2lzdGVkXzY5IiwiX2hvaXN0ZWRfNzAiLCJfaG9pc3RlZF83MSIsIl9ob2lzdGVkXzcyIiwiX2hvaXN0ZWRfNzMiLCJfaG9pc3RlZF83NCIsIl9ob2lzdGVkXzc1IiwiX2hvaXN0ZWRfNzYiLCJfaG9pc3RlZF83NyIsIl9ob2lzdGVkXzc4IiwiX2hvaXN0ZWRfNzkiLCJfaG9pc3RlZF84MCIsIl9ob2lzdGVkXzgxIiwiX2hvaXN0ZWRfODIiLCJfaG9pc3RlZF84MyIsIl9ob2lzdGVkXzg0IiwiX2hvaXN0ZWRfODUiLCJfaG9pc3RlZF84NiIsIl9ob2lzdGVkXzg3IiwiX2hvaXN0ZWRfODgiLCJfaG9pc3RlZF84OSIsIl9ob2lzdGVkXzkwIiwiX2hvaXN0ZWRfOTEiLCJfaG9pc3RlZF85MiIsIl9ob2lzdGVkXzkzIiwiX2hvaXN0ZWRfOTQiLCJfaG9pc3RlZF85NSIsIl9ob2lzdGVkXzk2IiwiZnVsbF90cmFuc2FjdGlvbiIsImRlZmF1bHRfYWlkX3R5cGVfdm9jYWJ1bGFyeSIsImFpZFR5cGVWb2NhYnVsYXJ5IiwiZWFybWFya2luZ19jYXRlZ29yeSIsImVhcm1hcmtpbmdDYXRlZ29yeSIsImVhcm1hcmtpbmdfbW9kYWxpdHkiLCJlYXJtYXJraW5nTW9kYWxpdHkiLCJjYXNoX2FuZF92b3VjaGVyX21vZGFsaXRpZXMiLCJjYXNoYW5kVm91Y2hlck1vZGFsaXRpZXMiLCJkZWZhdWx0X2FpZF90eXBlIiwiYWlkVHlwZSIsImNvdW50cnlfYnVkZ2V0X3ZvY2FidWxhcnkiLCJidWRnZXRJZGVudGlmaWVyVm9jYWJ1bGFyeSIsImJ1ZGdldF9pdGVtIiwiYnVkZ2V0SWRlbnRpZmllciIsImJ1ZGdldF90eXBlIiwiYnVkZ2V0X3ZhbHVlIiwiYnVkZ2V0X3N0YXR1cyIsImJ1ZGdldFN0YXR1cyIsImFjdGl2aXR5U3RhdHVzIiwiYWN0aXZpdHlTY29wZSIsImNvbGxhYm9yYXRpb25UeXBlIiwiZmxvd1R5cGUiLCJ0aWVkU3RhdHVzIiwiZmluYW5jZVR5cGUiLCJub19jb250ZW50IiwiX2NvbXBvbmVudF9DcmVhdGVNb2RhbCIsImFkZF9hY3Rpdml0eSIsImRvd25sb2FkX2FsbCIsImRvd25sb2FkX2VsZW1lbnQiLCJjc3YiLCJ4bWwiLCJ4bHMiLCJkb3dubG9hZF94bWxfY29uZmlybWF0aW9uIiwiZXJyb3JfbWVzc2FnZSIsImFueXdheSIsIm5vdGUiLCJjb3JlX2VsZW1lbnRzIiwibWFuZGF0b3J5X3N1Yl9lbGVtZW50cyIsInJlY29tbWVuZGVkX3N1Yl9lbGVtZW50cyIsIl9jb21wb25lbnRfQWN0aXZpdHlCdXR0b24iLCJub19hY3Rpdml0eV9oYXNfYmVlbl9hZGRlZF9sYWJlbCIsImNsaWNrX29uX2J1dHRvbl90b19hZGRfbmV3X2xhYmVsIiwid2hhdF9pc19hY3Rpdml0eSIsIm9uZSIsInR3byIsInRocmVlIiwiYWN0aXZpdHlfdGl0bGUiLCJ1cGRhdGVkX29uIiwidXBkYXRlZF9hdCIsInN0YXR1c19sYWJlbHMiLCJzZWxlY3QiLCJhY3Rpdml0aWVzX25vdF9mb3VuZCIsIl9jb21wb25lbnRfVGFyZ2V0VmFsdWUiLCJfY29tcG9uZW50X0FjdHVhbFZhbHVlIiwicGVyaW9kX2RldGFpbCIsInBlcmlvZF9jb2RlIiwiYWN0dWFsIiwicGUiLCJfY29tcG9uZW50X3Q0NnRyIiwidFZhbHVlIiwiYWN0dWFsX3ZhbHVlIiwibG9jYXRpb25fcmVmZXJlbmNlIiwiZGltIiwidGFyZ2V0X3ZhbHVlIiwiX2NvbXBvbmVudF9SZXN1bHRFbGVtZW50IiwiX2NvbXBvbmVudF9JbmRpY2F0b3IiLCJyZXN1bHRfZGV0YWlsIiwicmVzdWx0X2NvZGUiLCJpbmRpY2F0b3Jfbm9jYXNlIiwiYWRkX2luZGljYXRvcl9ub2Nhc2UiLCJub3RfeWV0X2FkZGVkX2luZGljYXRvciIsIl9jb21wb25lbnRfVGl0bGVEZXNjcmlwdGlvbiIsIl9jb21wb25lbnRfUmVzdWx0VHlwZSIsImluZGljYXRvcl90aXRsZSIsImRvY3VtZW50cyIsImxvYyIsImwiLCJ0YXIiLCJfY29tcG9uZW50X1RyYW5zYWN0aW9uRWxlbWVudCIsInRyYW5zYWN0aW9uX2RldGFpbCIsIl9jb21wb25lbnRfQWlkVHlwZSIsIl9jb21wb25lbnRfVHJhbnNhY3Rpb25UeXBlIiwiX2NvbXBvbmVudF9UcmFuc2FjdGlvbkRhdGUiLCJfY29tcG9uZW50X1ZhbHVlIiwiX2NvbXBvbmVudF9Qcm92aWRlck9yZ2FuaXphdGlvbiIsIl9jb21wb25lbnRfUmVjZWl2ZXJPcmdhbml6YXRpb24iLCJfY29tcG9uZW50X0Rpc2J1cnNlbWVudENoYW5uZWwiLCJfY29tcG9uZW50X1NlY3RvciIsIl9jb21wb25lbnRfUmVjaXBpZW50Q291bnRyeSIsIl9jb21wb25lbnRfUmVjaXBpZW50UmVnaW9uIiwiX2NvbXBvbmVudF9GbG93VHlwZSIsIl9jb21wb25lbnRfRmluYW5jZVR5cGUiLCJfY29tcG9uZW50X1RpZWRTdGF0dXMiLCJpbnRlcm5hbCIsInRyYW5zYWN0aW9uX2RhdGUiLCJjbGFzIiwiYXQiLCJhaWRfdHlwZV92b2NhYnVsYXJ5IiwiYWlkX3R5cGVfY29kZSIsImNhc2hBbmRWb3VjaGVyTW9kYWxpdGllcyIsImVhck1hcmtpbmdDYXRlZ29yeSIsImVhck1hcmtpbmdNb2RhbGl0eSIsImRpc2J1cnNlbWVudF9jaGFubmVsX2NvZGUiLCJkaXNidXJzZW1lbnRDaGFubmVsIiwiZmluYW5jZV90eXBlIiwiZmxvd190eXBlIiwib3JnYW5pc2VyX2lkZW50aWZpZXJfY29kZSIsIm9yZ2FuaXphdGlvbl9pZGVudGlmaWVyX2NvZGUiLCJwbyIsImNvdSIsImNvdW50cnlDb2RlIiwic2QiLCJyZWdpb25Db2RlIiwic2VjIiwidW5zZGdHb2FscyIsInVuc2RnVGFyZ2V0cyIsInRpZWRfc3RhdHVzX2NvZGUiLCJ0aWVkU3RhdHVzVHlwZSIsInRpZWRfc3RhdHVzIiwiYXVkaXRzIiwiX2NvbXBvbmVudF9hcGV4Y2hhcnQiLCJfaG9pc3RlZF85NyIsIl9ob2lzdGVkXzk4IiwiX2hvaXN0ZWRfOTkiLCJfaG9pc3RlZF8xMDAiLCJfaG9pc3RlZF8xMDEiLCJfaG9pc3RlZF8xMDIiLCJfaG9pc3RlZF8xMDMiLCJfaG9pc3RlZF8xMDQiLCJfaG9pc3RlZF8xMDUiLCJfaG9pc3RlZF8xMDYiLCJfaG9pc3RlZF8xMDciLCJfaG9pc3RlZF8xMDgiLCJfaG9pc3RlZF8xMDkiLCJfaG9pc3RlZF8xMTAiLCJfaG9pc3RlZF8xMTEiLCJfbyIsIl9wIiwiYWRtaW5fdXNlcl9jb3VudCIsImdlbmVyYWxfdXNlcl9jb3VudCIsImFjdGl2ZV91c2VyX2NvdW50IiwiZGVhY3RpdmF0ZWRfdXNlcl9jb3VudCIsInRvdGFsX3VzZXJfY291bnQiLCJjb21wbGV0ZVNldHVwIiwiaW5jb21wbGV0ZVNldHVwIiwiZGVmYXVsdFZhbHVlIiwiYm90aCIsImRyYWZ0Iiwib25UcmlnZ2VyU2V0RGF0ZVJhbmdlIiwib25UYWJsZU5hdiIsInJvbGVJZCIsImltcG9ydF9hY3Rpdml0eSIsInVwbG9hZF9maWxlIiwiZG93bmxvYWRfY3N2X3RlbXBsYXRlIiwiZG93bmxvYWRfY3N2X3RlbXBsYXRlX2Rlc2NyaXB0aW9uIiwidk1vZGVsUmFkaW8iLCJpbXBvcnRfYWN0aXZpeSIsInJlZl9mb3IiLCJvblNlbGVjdEVsZW1lbnQiLCJpc3N1ZXMiLCJjbG9zZWQiLCJhY3Rpdml0eV9jb250YWluc19jcml0aWNhbF9lcnJvcnMiLCJhY3Rpdml0aWVzX3dpdGhfZXJyb3Jfd2lsbF9iZV91cGxvYWRlZCIsImZpZWxkX3dpdGhfd2FybmluZ193aWxsX2JlX3VwbG9hZGVkIiwiZXhpc3RpbmciLCJfY29tcG9uZW50X1B1Ymxpc2hVbnB1Ymxpc2giLCJfY29tcG9uZW50X1JhZGlhbFByb2dyZXNzQmFyIiwiX2NvbXBvbmVudF9PcmdhbmlzYXRpb25FbGVtZW50cyIsIl9jb21wb25lbnRfT3JnYW5pc2F0aW9uRWxlbWVudHNEZXRhaWwiLCJvcmdfbGFuZyIsInlvdXJfb3JnYW5pc2F0aW9uIiwib3JnX2NvdWxkX25vdF9iZV9wdWJsaXNoZWQiLCJmaWxsX21hbmRhdG9yeV9maWVsZHMiLCJyZWNpcGllbnRfY291bnRyeSIsInJlY2lwaWVudF9jb3VudHJ5X2J1ZGdldCIsImJ1ZGdldF9saW5lIiwiYnVkZ2V0X2Ftb3VudCIsInJlY2lwaWVudF9vcmdfYnVkZ2V0IiwicmVjaXBpZW50X29yZyIsInJlY2lwaWVudF9vcmdfaW5kZXgiLCJuYXJyYXRpdmVfaW5kZXgiLCJidWRnZXQiLCJyZWNpcGllbnRfcmVnaW9uX2J1ZGdldCIsInJlY2lwaWVudF9yZWdpb24iLCJ0b3RhbF9idWRnZXQiLCJ0b3RhbF9idWRnZXRfc3RhdHVzIiwiYnVkZ2V0X2xhbmciLCJ0b3RhbF9leHBlbmRpdHVyZSIsImV4cGVuZGl0dXJlX2Ftb3VudCIsImV4cGVuc2VfbGluZSIsIm1pc3NpbmdfbGFuZyIsInBhc3N3b3JkX3JlY292ZXJ5IiwicGFzc3dvcmRfcmVjb3ZlcnlfaGVhZGVyIiwieW91cl9lbWFpbF9oYXNfYmVlbl9zZW50X3dpdGhfbGFiZWwiLCJwYXNzd29yZF9yZWNvdmVyeV9kZXNjcmlwdGlvbiIsImVtYWlsX2xhYmVsIiwiZW1haWxfcGxhY2Vob2xkZXIiLCJzZW5kX3Bhc3N3b3JkX3Jlc2V0IiwicmVzZXRfcGFzc3dvcmQiLCJlbnRlcl9uZXdfcGFzc3dvcmQiLCJuZXdfcGFzc3dvcmQiLCJlbnRlcl9uZXdfcGFzc3dvcmRfcGxhY2Vob2xkZXIiLCJyZXBlYXRfcGFzc3dvcmQiLCJyZWVudGVyX3Bhc3N3b3JkX3BsYWNlaG9sZGVyIiwic2V0dGluZ3NfbGFuZyIsImRlZmF1bHRfZm9yX2FsbF9kYXRhX2xhYmVsIiwiZGVmYXVsdF9mb3JfYWN0aXZpdHlfbGFiZWwiLCJkZWZhdWx0X2hpZXJhcmNoeSIsImxpbmtlZF9kYXRhX3VyaSIsImRlZmF1bHRfY29sbGFib3JhdGlvbl90eXBlIiwiZGVmYXVsdF9mbG93X3R5cGUiLCJkZWZhdWx0X2ZpbmFuY2VfdHlwZSIsImRlZmF1bHRfdGllZF9zdGF0dXMiLCJfY29tcG9uZW50X1NldHRpbmdQdWJsaXNoaW5nRm9ybSIsIl9jb21wb25lbnRfU2V0dGluZ0RlZmF1bHRGb3JtIiwic2V0dGluZ3NfbGFiZWwiLCJhY3RpdmVfX3RhYiIsInB1Ymxpc2hpbmdfc2V0dGluZ3NfbGFiZWwiLCJkZWZhdWx0X3ZhbHVlc19sYWJlbCIsIm9uU3VibWl0UHVibGlzaGluZyIsInNhdmVfcHVibGlzaGluZ19zZXR0aW5ncyIsInNhdmVfZGVmYXVsdF92YWx1ZXMiLCJyZWdpc3RyeV9pbmZvcm1hdGlvbiIsImlzVmVyaWZpY2F0aW9uUmVxdWVzdGVkIiwidGFnX19jb3JyZWN0IiwidGFnX19pbmNvcnJlY3QiLCJjb3JyZWN0X2xhYmVsIiwiaW5jb3JyZWN0X2xhYmVsIiwidmVyaWZ5Iiwib3JnYW5pc2F0aW9ucyIsInBrZyIsInZlcnNpb24iLCJsYXRlc3QiLCJsb2dnZWRfaW5fYXMiLCJzd2l0Y2hfYmFjayIsIl9jb21wb25lbnRfRGF0ZVJhbmdlV2lkZ2V0IiwibW9kZSIsInRhZ2dhYmxlIiwib25UcmlnZ2VyU2V0RGF0ZVR5cGUiLCJvbkRhdGVDbGVhcmVkIiwiZmV0Y2hpbmdfZGF0YSIsImFsbF9hY3Rpdml0aWVzX2NvdW50IiwidXNlcl9sYW5nIiwiYWRkX2FfbmV3IiwidXNlcl9yb2xlcyIsImlhdGlfYWRtaW4iLCJtYWtlX2VsZW1lbnQiLCJpbmFjdGl2ZSIsIm1ha2VfY29uZmlybWF0aW9uIiwic2VhcmNoX2Zvcl91c2VycyIsImZpbHRlcmVkX2J5Iiwib3JnIiwiY2xlYXJfZmlsdGVyIiwidXNlcl9ub3RfZm91bmQiLCJjaGFuZ2VfcGFzc3dvcmQiLCJ2TW9kZWxEeW5hbWljIiwieW91cl9pbmZvcm1hdGlvbiIsImNoYW5nZV95b3VyX3Bhc3N3b3JkIiwidXNlcl9uYW1lIiwieW91X2hhdmVudF92ZXJpZmllZF9lbWFpbF95ZXQiLCJpZl95b3VfaGF2ZW50X3JlY2VpdmVkIiwidmVyaWZ5X3lvdXJfYWNjb3VudCIsImFfdmVyaWZpY2F0aW9uX2VtYWlsX2hhc19iZWVuX3NlbnQiLCJjbGlja19hbmRfYWN0aXZhdGUiLCJnZXRfc3RhcnRlZCIsIl9jb21wb25lbnRfRW1haWxWZXJpZmljYXRpb24iLCJjcmVhdGVfaWF0aV9wdWJsaXNoZXJfaGVhZGVyIiwiY3JlYXRlX2lhdGlfcHVibGlzaGVyX3N1YmhlYWRlciIsIm91dF9vZiIsImVycm9yX2tleSIsImZvcm1fX2lucHV0Iiwib25Gb2N1cyIsIndpdGhNb2RpZmllcnMiLCJ2dWVfX3NlbGVjdCIsImFscmVhZHlfaGF2ZV9hY2NvdW50Iiwic2lnbl9pbiIsIm5leHRfc3RlcCIsInJlbCIsImlhdGlfc3RhbmRhcmQiLCJpYXRpX3N0YW5kYXJkX2Rlc2NyaXB0aW9uIiwib3JnYW5pc2F0aW9uX2RhdGFfaGVhZGVyIiwib3JnYW5pc2F0aW9uX2RhdGFfZGVzY3JpcHRpb24iLCJsaXN0X2l0ZW1zIiwiZm91ciIsImZpdmUiLCJhY3Rpdml0eV9kYXRhX2hlYWRlciIsImFjdGl2aXR5X2RhdGFfZGVzY3JpcHRpb24iLCJzaXgiLCJzZXZlbiIsInB1Ymxpc2hpbmdfZGF0YV9laXRoZXJfaGVhZGVyIiwicHVibGlzaGluZ19kYXRhX2VpdGhlcl9kZXNjcmlwdGlvbiIsImRvd25sb2FkX3BkZl9oZWFkZXIiLCJkb3dubG9hZF9wZGZfZGVzY3JpcHRpb24iLCJpYXRpX3N0YW5kYXJkX3JlZmVyZW5jZV9oZWFkZXIiLCJpYXRpX3N0YW5kYXJkX3JlZmVyZW5jZV9kZXNjcmlwdGlvbiIsInB1Ymxpc2hpbmdfY2hlY2tsaXN0Iiwib3JnYW5pc2F0aW9uc191c2luZ19pYXRpX2xhYmVsIiwicmVnaXN0ZXJfYV9wdWJsaXNoZXJfaGVhZGVyIiwicmVnaXN0ZXJfYV9wdWJsaXNoZXJfZGVzY3JpcHRpb24iLCJwdWJsaXNoX3lvdXJfb3JnYW5pc2F0aW9uX2hlYWRlciIsInB1Ymxpc2hfeW91cl9vcmdhbmlzYXRpb25fZGVzY3JpcHRpb24iLCJwdWJsaXNoX3lvdXJfYWN0aXZpdHlfaGVhZGVyIiwicHVibGlzaF95b3VyX2FjdGl2aXR5X2Rlc2NyaXB0aW9uIiwidW5kZXJzdGFuZF9mdXJ0aGVyX2RhdGFfaGVhZGVyIiwidW5kZXJzdGFuZF9mdXJ0aGVyX2RhdGFfZGVzY3JpcHRpb24iLCJydW5fYXV0b21hdGljX2NoZWNrc19oZWFkZXIiLCJydW5fYXV0b21hdGljX2NoZWNrc19kZXNjcmlwdGlvbiIsInB1Ymxpc2hfeW91cl9kYXRhX2hlYWRlciIsInB1Ymxpc2hfeW91cl9kYXRhX2Rlc2NyaXB0aW9uIiwiYWNjZXNzX3lvdXJfZGF0YV9oZWFkZXIiLCJhY2Nlc3NfeW91cl9kYXRhX2Rlc2NyaXB0aW9uIiwidXBkYXRlX2FuZF9pbXByb3ZlX2hlYWRlciIsInVwZGF0ZV9hbmRfaW1wcm92ZV9kZXNjcmlwdGlvbiIsImluZm9ybWF0aW9uX2RvZXNudF9tYXRjaF9yZWdpc3RyeSIsImlmX3lvdV9hcmVfYWNjb3VudF9ob2xkZXIiLCJtYWtlX3N1cmVfeW91ciIsIm9yZ2FuaXNhdGlvbl9pZCIsIm1hdGNoX3lvdXJfaWF0aV9yZWdpc3RyeV9pbmZvIiwiZm9yX21vcmVfZGV0YWlscyIsInN1cHBvcnQiLCJzdXBwb3J0X2Rlc2NyaXB0aW9uIiwiaWF0aV9wdWJsaXNoZXIiLCJhYm91dCIsInVzZXJfbWFudWFsIiwiZm9vdGVyIiwicGFydF9vZl9pYXRpX3VuaWZpZWRfbGFiZWwiLCJjb2RlX2xpY2Vuc2VkX3VuZGVyX2xhYmVsIiwiZG9jdW1lbnRhdGlvbl9saWNlbnNlZF91bmRlcl9sYWJlbCIsImFueV9xdWVzdGlvbnNfY29udGFjdF9sYWJlbCIsImNvcHlyaWdodF9sYWJlbCIsImpvaW5fbm93IiwiaG9tZSIsImpvaW5fbm93X3NlY3Rpb24iLCJ0b19iZWdpbl90ZXh0IiwibmV3X3RvX2lhdGlfbGFiZWwiLCJuZXdfdG9faWF0aV90ZXh0IiwibXlfb3JnYW5pc2F0aW9uX2hhc19yZWdpc3RlcmVkX2xhYmVsIiwibXlfb3JnYW5pc2F0aW9uX2hhc19yZWdpc3RlcmVkX3RleHQiLCJub3Rfc3VyZV93aGljaF9vbmVfbGFiZWwiLCJjb250YWN0X3N1cHBvcnRfbGFiZWwiLCJzaWduX2luX3NlY3Rpb24iLCJ3ZWxjb21lX2JhY2tfbGFiZWwiLCJ1cGRhdGVkIiwidXNlX25ldyIsInVzZXJuYW1lX2xhYmVsIiwiZXJyb3JfaW5wdXQiLCJ1c2VybmFtZV9wbGFjZWhvbGRlciIsInBhc3N3b3JkX2xhYmVsIiwicGFzc3dvcmRfcGxhY2Vob2xkZXIiLCJmb3Jnb3RfcGFzc3dvcmRfbGFiZWwiLCJfY29tcG9uZW50X05hdkRyb3Bkb3duIiwiYWJvdXRfaG92ZXJfdGV4dCIsInB1Ymxpc2hpbmdfY2hlY2tsaXN0X2hvdmVyX3RleHQiLCJyZWFkX21vcmUiLCJpYXRpX3N0YW5kYXJkX2hvdmVyX3RleHQiLCJzZWVfYWxsX2RhdGFfZmllbGRzIiwic3VwcG9ydF9ob3Zlcl90ZXh0IiwiZ29fdG8iLCJ2dWUzX3Ntb290aF9zY3JvbGxfMSIsInN2Z192dWUzXzEiLCJXZWJIZWFkZXJfdnVlXzEiLCJXZWJGb290ZXJfdnVlXzEiLCJBZG1pbkZvb3Rlcl92dWVfMSIsIldlbGNvbWVQYWdlX3Z1ZV8xIiwiUmVnaXN0ZXJQYWdlX3Z1ZV8xIiwiQWJvdXRQYWdlX3Z1ZV8xIiwiU3VwcG9ydFBhZ2VfdnVlXzEiLCJJYXRpU3RhbmRhcmRfdnVlXzEiLCJQdWJsaXNoaW5nQ2hlY2tsaXN0X3Z1ZV8xIiwiSWF0aVJlZ2lzdGVyUGFnZV92dWVfMSIsIlJlc3VsdERldGFpbF92dWVfMSIsIlJlc3VsdExpc3RfdnVlXzEiLCJJbmRpY2F0b3JEZXRhaWxfdnVlXzEiLCJJbmRpY2F0b3JMaXN0X3Z1ZV8xIiwiUGVyaW9kc0RldGFpbF92dWVfMSIsIlBlcmlvZHNMaXN0X3Z1ZV8xIiwiVHJhbnNhY3Rpb25MaXN0X3Z1ZV8xIiwiVHJhbnNhY3Rpb25EZXRhaWxfdnVlXzEiLCJEZXNjcmlwdGlvbkZvcm1fdnVlXzEiLCJFbGVtZW50c05vdGVfdnVlXzEiLCJBY3Rpdml0eUluZGV4X3Z1ZV8xIiwiQWRtaW5IZWFkZXJfdnVlXzEiLCJBY3Rpdml0eURldGFpbF92dWVfMSIsIlNpZGViYXJIZWxwQmxvY2tfdnVlXzEiLCJBY3Rpdml0eVVwbG9hZF92dWVfMSIsIkFjdGl2aXR5WGxzVXBsb2FkX3Z1ZV8xIiwiRGFzaGJvYXJkUGFnZV92dWVfMSIsIkltcG9ydExpc3RfdnVlXzEiLCJYbHNMaXN0X3Z1ZV8xIiwiU2V0dGluZ1BhZ2VfdnVlXzEiLCJBY3Rpdml0eURlZmF1bHRWYWx1ZV92dWVfMSIsIlJlc2V0UGFnZV92dWVfMSIsIlBhc3N3b3JkUmVjb3ZlcnlfdnVlXzEiLCJSZXNldFBhc3N3b3JkX3Z1ZV8xIiwiT3JnYW5pc2F0aW9uRGF0YV92dWVfMSIsIk9yZ2FuaXNhdGlvbkxpc3RfdnVlXzEiLCJBZG1pbkJhcl92dWVfMSIsIlVzZXJQcm9maWxlX3Z1ZV8xIiwiVXNlckxpc3RpbmdfdnVlXzEiLCJBdWRpdExpc3RpbmdfdnVlXzEiLCJTeXN0ZW1WZXJzaW9uX3Z1ZV8xIiwidnVlM19hcGV4Y2hhcnRzXzEiLCJhcHAiLCJjcmVhdGVBcHAiLCJ1c2UiLCJjb21wb25lbnQiLCJsYXN0U2Nyb2xsVG9wIiwiYWZmaXhUeXBlIiwic3RpY2t5U2lkZWJhciIsInBhcmVudFdyYXBwZXIiLCJzdGlja3lFbGVtZW50IiwiZmlyc3RDaGlsZCIsIm9mZnNldEhlaWdodCIsInN0aWNreUN1cnJlbnRUb3AiLCJzdGlja3lDdXJyZW50Qm90dG9tIiwiZWxXaWR0aCIsIm9mZnNldFdpZHRoIiwiZWxTY3JvbGxMZWZ0IiwiZWxTY3JvbGxUb3AiLCJlbFNjcm9sbEJvdHRvbSIsInZpZXdwb3J0SGVpZ2h0IiwiaW5uZXJIZWlnaHQiLCJjdXJyZW50V2luZG93c1Njcm9sbFBvc2l0aW9uIiwicGFnZVlPZmZzZXQiLCJ0YXJnZXRTY3JvbGxQb3NpdGlvbiIsImVsUGFyZW50IiwiZWxQYXJlbnRCb3R0b20iLCJpc1Njcm9sbERvd24iLCJpc1Njcm9sbFVwIiwic2Nyb2xsRG93blN0aWNreUJvdHRvbSIsInNjcm9sbERvd25TdGlja3lUb3AiLCJzY3JvbGxEb3duU3RpY2t5VHJhbnNsYXRlIiwic2Nyb2xsRG93bkZpeGVkVG9wIiwic2Nyb2xsRG93blN0aWNreU5vbmUiLCJzY3JvbGxEb3duU3RpY2t5Qm91bmQiLCJoYW5kbGVTY3JvbGxEb3duIiwic2Nyb2xsVXBTdGlja3lUb3AiLCJzY3JvbGxVcFN0aWNreUJvdHRvbSIsInNjcm9sbFVwRml4ZWRUb3AiLCJzY3JvbGxVcFN0aWNreVRyYW5zbGF0ZSIsInNjcm9sbFVwU3RpY2t5Qm91bmQiLCJoYW5kbGVTY3JvbGxVcCIsImJvcmRlciIsImRpcmVjdGl2ZSIsIm1vdW50ZWQiLCJiaW5kaW5nIiwidW5tb3VudGVkIiwicGFyZW50IiwibW91bnQiLCJmb3JtYXRfZGF0ZSIsImNyeXB0b19qc18xIiwiZW5jcnlwdCIsIml2IiwibGliIiwiV29yZEFycmF5IiwicmFuZG9tIiwic2FsdCIsIml0ZXJhdGlvbnMiLCJlbmNyeXB0TWV0aG9kTGVuZ3RoIiwiaGFzaEtleSIsIlBCS0RGMiIsImhhc2hlciIsImFsZ28iLCJTSEE1MTIiLCJrZXlTaXplIiwiZW5jcnlwdGVkIiwiQUVTIiwiQ0JDIiwiZW5jcnlwdGVkU3RyaW5nIiwiZW5jIiwiQmFzZTY0IiwiY2lwaGVydGV4dCIsIm91dHB1dCIsIkhleCIsIlV0ZjgiLCJkYXRhXzEiLCJzZW50ZW5jZUNhc2VUb0tlYmFiQ2FzZSIsInJlZHVjZURvY3VtZW50TGluayIsImRvY3VtZW50Q291bnQiLCJkb2N1bWVudF8xIiwic3RyIiwibWF4TGVuZ3RoIiwic3Vic3RyaW5nIiwiY2FwaXRhbGl6ZWRGaXJzdFdvcmQiLCJjb25jYXRlbmF0ZWRXb3JkcyIsInZ1ZXhfMSIsIm1heGltaXplWGxzIiwibXV0YXRpb25zIiwibXV0YXRlU2VsZWN0ZWRBY3Rpdml0aWVzIiwicGF5bG9hZCIsIm11dGF0ZUNsb3NlWGxzTW9kZWwiLCJtdXRhdGVCdWxrUHVibGlzaExlbmd0aCIsIm11dGF0ZUNhbmNlbFVwbG9hZCIsIm11dGF0ZU1heGltaXplWGxzIiwibXV0YXRlU3RhcnRYbHNEb3dubG9hZCIsIm11dGF0ZUNvbXBsZXRlWGxzRG93bmxvYWQiLCJtdXRhdGVDYW5jZWxEb3dubG9hZCIsIm11dGF0ZUJ1bGtwdWJsaXNoQWN0aXZpdGllcyIsIm11dGF0ZVN0YXJ0QnVsa1B1Ymxpc2giLCJhY3Rpb25zIiwiY29tbWl0IiwidXBkYXRlQ2xvc2VYbHNNb2RlbCIsInVwZGF0ZUJ1bGtQdWJsaXNoTGVuZ3RoIiwidXBkYXRlQ2FuY2VsVXBsb2FkIiwidXBkYXRlTWF4aW1pemVYbHMiLCJ1cGRhdGVTdGFydFhsc0Rvd25sb2FkIiwidXBkYXRlQ29tcGxldGVYbHNEb3dubG9hZCIsInVwZGF0ZUNhbmNlbERvd25sb2FkIiwidXBkYXRlQnVsa3B1Ymxpc2hBY3Rpdml0aWVzIiwidXBkYXRlU3RhcnRCdWxrUHVibGlzaCIsImFjdGl2aXR5TGlzdFN0b3JlIiwiY3JlYXRlU3RvcmUiLCJidWxrcHVibGlzaExlbmd0aCIsIm11dGF0ZVVuUHVibGlzaGVkIiwibXV0YXRlU2hvd1B1Ymxpc2hlZCIsIm11dGF0ZVB1Ymxpc2hFcnJvcnMiLCJtdXRhdGVJc0xvYWRpbmciLCJtdXRhdGVCdWxrcHVibGlzaExlbmd0aCIsInVwZGF0ZVVuUHVibGlzaGVkIiwidXBkYXRlU2hvd1B1Ymxpc2hlZCIsInVwZGF0ZVB1Ymxpc2hFcnJvcnMiLCJ1cGRhdGVJc0xvYWRpbmciLCJ1cGRhdGVCdWxrcHVibGlzaExlbmd0aCIsImFjdGl2aXR5RGV0YWlsU3RvcmUiLCJzdGF0ZV8xIiwibXV0YXRpb25fMSIsIk11dGF0aW9uVHlwZXMiLCJVUERBVEVfUFVCTElTSEVSX0lORk8iLCJVUERBVEVfUFVCTElTSElOR19FUlJPUiIsIlVQREFURV9ERUZBVUxUX0VSUk9SIiwiVVBEQVRFX0lTX0xPQURJTkciLCJJU19MT0FESU5HIiwiVVBEQVRFX0JVTEtQVUJMSVNIX0xFTkdUSCIsIkJVTEtQVUJMSVNIX0xFTkdUSCIsIlJlc3VsdF92dWVfMSIsIklhdGlJZGVudGlmaWVyX3Z1ZV8xIiwiT3RoZXJJZGVudGlmaWVyX3Z1ZV8xIiwiVGl0bGVfdnVlXzEiLCJEZXNjcmlwdGlvbl92dWVfMSIsIkFjdGl2aXR5RGF0ZV92dWVfMSIsIkNvbnRhY3RJbmZvX3Z1ZV8xIiwiUGFydGljaXBhdGluZ09yZ192dWVfMSIsIlJlY2lwaWVudENvdW50cnlfdnVlXzEiLCJSZWNpcGllbnRSZWdpb25fdnVlXzEiLCJUcmFuc2FjdGlvbnNfdnVlXzEiLCJMb2NhdGlvbl92dWVfMSIsIlNlY3Rvcl92dWVfMSIsIkxlZ2FjeURhdGFfdnVlXzEiLCJDb25kaXRpb25zX3Z1ZV8xIiwiUmVsYXRlZEFjdGl2aXR5X3Z1ZV8xIiwiUG9saWN5TWFya2VyX3Z1ZV8xIiwiVGFnX3Z1ZV8xIiwiSHVtYW5pdGFyaWFuU2NvcGVfdnVlXzEiLCJQbGFubmVkRGlzYnVyc2VtZW50X3Z1ZV8xIiwiUmVwb3J0aW5nT3JnYW5pemF0aW9uX3Z1ZV8xIiwiTWVhc3VyZV92dWVfMSIsIkluZGljYXRvckFzY2VuZGluZ192dWVfMSIsIkFnZ3JlZ2F0aW9uU3RhdHVzX3Z1ZV8xIiwiUmVmZXJlbmNlX3Z1ZV8xIiwiRG9jdW1lbnRMaW5rX3Z1ZV8xIiwiQmFzZWxpbmVfdnVlXzEiLCJQZXJpb2RfdnVlXzEiLCJUYXJnZXRWYWx1ZV92dWVfMSIsIkFjdHVhbFZhbHVlX3Z1ZV8xIiwiVGl0bGVEZXNjcmlwdGlvbl92dWVfMSIsIlJlc3VsdFR5cGVfdnVlXzEiLCJBaWRUeXBlX3Z1ZV8xIiwiVHJhbnNhY3Rpb25UeXBlX3Z1ZV8xIiwiVHJhbnNhY3Rpb25EYXRlX3Z1ZV8xIiwiVmFsdWVfdnVlXzEiLCJQcm92aWRlck9yZ2FuaXphdGlvbl92dWVfMSIsIlJlY2VpdmVyT3JnYW5pemF0aW9uX3Z1ZV8xIiwiRGlzYnVyc2VtZW50Q2hhbm5lbF92dWVfMSIsIkZsb3dUeXBlX3Z1ZV8xIiwiRmluYW5jZVR5cGVfdnVlXzEiLCJUaWVkU3RhdHVzX3Z1ZV8xIiwiUmVwb3J0aW5nT3JnYW5pc2F0aW9uX3Z1ZV8xIiwiVG90YWxCdWRnZXRfdnVlXzEiLCJSZXBvcnRpbmdPcmdCdWRnZXRfdnVlXzEiLCJSZXBvcnRpbmdSZWdpb25CdWRnZXRfdnVlXzEiLCJSZWNpcGllbnRDb3VudHJ5QnVkZ2V0X3Z1ZV8xIiwiVG90YWxFeHBlbmRpdHVyZV92dWVfMSIsIlNpZ25JbiIsIkpvaW5Ob3ciLCJwYWdlQ29udGVudCIsInRvZ2dsZVBhZ2UiLCJfY3JlYXRlRWxlbWVudEJsb2NrIiwiX2NyZWF0ZUVsZW1lbnRWTm9kZSIsIl90b0Rpc3BsYXlTdHJpbmciLCJ3aGF0X2lzX2lhdGlfcHVibGlzaGVyX2hlYWRlciIsIndoYXRfaXNfaWF0aV9wdWJsaXNoZXJfZGVzY3JpcHRpb24iLCJ1c2VfaWF0aV9wdWJsaXNoZXJfdG9faGVhZGVyIiwidXNlX2lhdGlfcHVibGlzaGVyX3RvX2Rlc2NyaXB0aW9uIiwiZGV2ZWxvcG1lbnRfb2ZfaWF0aV9oZWFkZXIiLCJkZXZlbG9wbWVudF9vZl9pYXRpX2Rlc2NyaXB0aW9uIiwiaWF0aV9wdWJsaXNoaW5nX3Rvb2xfaGVhZGVyIiwiaWF0aV9wdWJsaXNoaW5nX3Rvb2xfc2VjdGlvbiIsIndlbGNvbWVfdGV4dCIsImhhdmVudF9yZWdpc3RlcmVkX2xhYmVsIiwiYWxyZWFkeV9oYXZlX2FjY291bnRfbGFiZWwiLCJfY3JlYXRlQmxvY2siLCJfY29tcG9uZW50X1NpZ25JbiIsIl9jb21wb25lbnRfSm9pbk5vdyJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/public/js/vendor.js b/public/js/vendor.js index db9ba005c1..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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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixLQUFxQztBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksb0RBQU87QUFDbkIsNEJBQTRCLGlCQUFpQjtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGtCQUFrQjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQsb0RBQU87QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsbURBQU07QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxLQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isa0JBQWtCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGtCQUFrQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLEtBQXFDO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHNCQUFzQjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksdUJBQXVCO0FBQ25DLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksU0FBUztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtREFBbUQsUUFBUTtBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0Esb0JBQW9CLHFCQUFxQjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdEQUF3RCxLQUFxQyx1QkFBdUIsQ0FBRTtBQUN0SDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsMkJBQTJCO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsb0RBQU87QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksZ0JBQWdCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsMEJBQTBCO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsdUJBQXVCO0FBQzNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyx1QkFBdUI7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QiwwQkFBMEI7QUFDdEQ7QUFDQSxvQkFBb0IscURBQVEsV0FBVyxxREFBUTtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsSUFBcUM7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMscURBQVE7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsYUFBYTtBQUM3Qix3QkFBd0IsdUJBQXVCO0FBQy9DLG9CQUFvQixhQUFhO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHdDQUF3QyxtSUFBbUksOENBQThDLDZDQUFJLG9CQUFvQiw2Q0FBSSx5SEFBeUgsa0RBQVMsZ0dBQWdHO0FBQ3ZkO0FBQ0E7QUFDQTtBQUNBLCtCQUErQix1REFBVSxDQUFDLHFEQUFVO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLHVCQUF1QixvQ0FBb0M7QUFDM0QsU0FBUztBQUNUO0FBQ0E7QUFDQSxpQkFBaUIsSUFBcUM7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLGlCQUFpQixLQUFxQztBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsS0FBcUM7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULGdDQUFnQztBQUNoQztBQUNBLFNBQVM7QUFDVDtBQUNBLFNBQVM7QUFDVDtBQUNBLGdCQUFnQixxREFBUTtBQUN4QjtBQUNBO0FBQ0Esa0VBQWtFLHNCQUFzQjtBQUN4RjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxTQUFTO0FBQ3JCLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QiwyREFBbUQ7QUFDL0U7QUFDQTtBQUNBLGFBQWEsS0FBcUM7QUFDbEQ7QUFDQTtBQUNBLGtDQUFrQyw2REFBdUQsQ0FBQztBQUMxRjtBQUNBLDhHQUE4RyxLQUFxQyxXQUFXLGVBQWUsTUFBTSxDQUFFO0FBQ3JMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLDRCQUE0QjtBQUN2QztBQUNBLFlBQVkscURBQVE7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLGlCQUFpQjtBQUM3QjtBQUNBLG9CQUFvQiwyQkFBMkI7QUFDL0M7QUFDQTtBQUNBLGdCQUFnQixvREFBTztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QiwwQkFBMEI7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHFEQUFRO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLFFBQVE7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLGtCQUFrQjtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDhCQUE4QixpQkFBaUIsS0FBSyxpQkFBaUI7QUFDckUscUNBQXFDLG9TQUFvUztBQUN6VTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixtQkFBbUI7QUFDMUMsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsWUFBWSx5RUFBeUU7QUFDckY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixhQUFhLEdBQUcsVUFBVSxHQUFHO0FBQ3REO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixFQUFFLDJDQUEyQztBQUN2RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsZUFBZTtBQUN2QyxvQkFBb0Isa0JBQWtCLE9BQU8sRUFBRTtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLG9HQUFvRztBQUNoSDtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQyxXQUFXO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsRUFBRSxpQkFBaUI7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsNkJBQTZCO0FBQ2hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsbUJBQW1CO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQiwwQkFBMEIsSUFBSSxTQUFTLEdBQUcsbUJBQW1CLEVBQUUsbUNBQW1DLEdBQUcsZ0JBQWdCO0FBQzNJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx1Q0FBdUM7QUFDbkQ7QUFDQSxvQkFBb0IsbUJBQW1CO0FBQ3ZDO0FBQ0E7QUFDQSxtQ0FBbUMsT0FBTyxJQUFJLEdBQUc7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHFEQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFxQyxzQkFBc0Isb0RBQU87QUFDN0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLGdCQUFnQjtBQUM1QixvQkFBb0Isa0JBQWtCO0FBQ3RDO0FBQ0EsWUFBWSxxREFBUTtBQUNwQjtBQUNBO0FBQ0EsaUJBQWlCLG9EQUFPO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHFEQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBLFFBQVEscURBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQXFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsSUFBcUM7QUFDdEQsOERBQThELFVBQVU7QUFDeEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLG9CQUFvQjtBQUNoQztBQUNBO0FBQ0E7QUFDQSxZQUFZLHFCQUFxQjtBQUNqQztBQUNBO0FBQ0EsWUFBWSwwQkFBMEI7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsMEJBQTBCO0FBQzlDO0FBQ0EsWUFBWSxxREFBUTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxPQUFPO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLGFBQWE7QUFDOUI7QUFDQTtBQUNBO0FBQ0EsWUFBWSxxQkFBcUI7QUFDakM7QUFDQTtBQUNBO0FBQ0EsWUFBWSx1QkFBdUIsR0FBRyw2QkFBNkI7QUFDbkU7QUFDQTtBQUNBLFlBQVkscUJBQXFCO0FBQ2pDLFlBQVksbUdBQW1HO0FBQy9HO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLG1CQUFtQixHQUFHLDhCQUE4QjtBQUNyRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxxQkFBcUI7QUFDakMsbUJBQW1CLHFEQUFRO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLGtDQUFrQztBQUM5QyxZQUFZLGFBQWE7QUFDekI7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFxQztBQUNoRDtBQUNBLHdCQUF3QixPQUFPO0FBQy9CO0FBQ0Esb0JBQW9CLHVCQUF1QjtBQUMzQyxnQkFBZ0IsYUFBYTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsT0FBTztBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx5QkFBeUI7QUFDckMsWUFBWSx5Q0FBeUM7QUFDckQ7QUFDQTtBQUNBLGlCQUFpQix3QkFBd0I7QUFDekM7QUFDQTtBQUNBLFFBQVEsb0RBQU87QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLG9EQUFPO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxvREFBb0Q7QUFDaEUsWUFBWSxrQ0FBa0M7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDBDQUEwQztBQUN0RCxtQkFBbUIsV0FBVztBQUM5QjtBQUNBO0FBQ0EsZ0JBQWdCLDJCQUEyQjtBQUMzQztBQUNBO0FBQ0EsbUJBQW1CLFdBQVc7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsMkJBQTJCO0FBQzNDO0FBQ0EsdUJBQXVCLFdBQVc7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrRUFBK0UsR0FBRztBQUNsRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLEtBQUs7QUFDdkIsd0JBQXdCLGVBQWUsSUFBSSxPQUFPLFFBQVEsSUFBSSxHQUFHO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkVBQTJFLGdCQUFnQjtBQUMzRjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsdUJBQXVCO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxJQUFxQztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsS0FBK0M7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLEtBQXFDO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLEtBQXFDO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsSUFBZ0Q7QUFDcEU7QUFDQTtBQUNBLG9EQUFvRCxTQUFTO0FBQzdEO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFxQyxlQUFlLENBQUk7QUFDckU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksU0FBUztBQUNyQiw4RUFBOEUsU0FBUztBQUN2RixZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQywyREFBbUQ7QUFDbkY7QUFDQTtBQUNBLGlCQUFpQixLQUFxQztBQUN0RDtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0MsNkRBQXVELENBQUM7QUFDOUY7QUFDQSw2SEFBNkgsS0FBcUMsV0FBVyxlQUFlLE1BQU0sQ0FBRTtBQUNwTTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsWUFBWSx1QkFBdUI7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLEtBQXFDLFdBQVcsdURBQWMsZ0JBQWdCLE1BQU0sQ0FBRTtBQUNwRztBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsV0FBVztBQUMvQjtBQUNBLGlCQUFpQixLQUFnRDtBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsS0FBcUM7QUFDM0QsaUNBQWlDLDJEQUFtRCxFQUFFO0FBQ3RGLDBCQUEwQixDQUFFO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsbUNBQW1DO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDRDQUE0QztBQUN4RCxZQUFZLDRCQUE0QjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLGVBQWU7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsSUFBK0M7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLElBQStDO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixJQUErQztBQUNuRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksSUFBK0M7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQixtQkFBbUI7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx5QkFBeUI7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtEQUErRDtBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixvQkFBb0I7QUFDeEMsb0JBQW9CLG9DQUFvQztBQUN4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksZ0JBQWdCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixNQUFNO0FBQ2hDO0FBQ0E7QUFDQSxnQkFBZ0IsV0FBVztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsTUFBTTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHFCQUFxQjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQix1Q0FBdUM7QUFDdkQsZ0JBQWdCLHVGQUF1RjtBQUN2RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QyxLQUFxQyxXQUFXLHNEQUFhLFlBQVksTUFBTSxDQUFFO0FBQ3pIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHFCQUFxQjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLGFBQWE7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixJQUFJO0FBQ3RCLG1DQUFtQyxxREFBUTtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsS0FBcUM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qix5QkFBeUI7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLElBQXFDO0FBQ3REO0FBQ0E7QUFDQSx3REFBd0QsdURBQWMsYUFBYTtBQUNuRjtBQUNBO0FBQ0E7QUFDQSxrREFBa0QsdURBQWM7QUFDaEU7QUFDQTtBQUNBLGtDQUFrQyx1REFBYztBQUNoRDtBQUNBLHdEQUF3RCxXQUFXO0FBQ25FO0FBQ0E7QUFDQSxpQkFBaUIsRUFFSjtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLE1BQU07QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLGlDQUFpQztBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLFlBQVk7QUFDNUM7QUFDQTtBQUNBLG1DQUFtQyxpREFBSTtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDJEQUFjO0FBQy9CO0FBQ0E7QUFDQSxrQ0FBa0MsMkRBQWM7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixrQkFBa0I7QUFDdEM7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG1CQUFtQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isc0JBQXNCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsSUFBcUM7QUFDdEU7QUFDQTtBQUNBLHNFQUFzRSxLQUFLO0FBQzNFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUFpRCxpREFBSTtBQUNyRCx5Q0FBeUM7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLHFCQUFxQjtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixxREFBUTtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQiwrREFBa0I7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyx1Q0FBdUM7QUFDdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsdUJBQXVCO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdEQUF3RCxpREFBSTtBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksTUFBTTtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQyxPQUFPO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxDQUFDLEtBQXFDO0FBQ3RDLHNCQUFzQjtBQUN0QixNQUFNLENBQUU7QUFDUixDQUFDLEtBQXFDLHdCQUF3QixDQUFFO0FBQ2hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQSxnQkFBZ0IsZ0JBQWdCO0FBQ2hDLGdCQUFnQixzQkFBc0I7QUFDdEM7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQztBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQix1QkFBdUI7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixvQkFBb0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFlBQVksc0JBQXNCO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyxpQkFBaUI7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHlEQUFZLENBQUMscURBQVU7QUFDM0M7QUFDQTtBQUNBLHdCQUF3QixRQUFRO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIscUNBQXFDO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0MscUNBQXFDO0FBQzNFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2REFBNkQ7QUFDN0QsWUFBWSxJQUErQztBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0EseUJBQXlCLEdBQUcsWUFBWSxLQUFLLDBCQUEwQixRQUFRO0FBQy9FO0FBQ0EsMENBQTBDO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtRkFBbUY7QUFDbkY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHNCQUFzQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsYUFBYTtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLHFEQUFVO0FBQ3hDO0FBQ0E7QUFDQSxpQ0FBaUMsK0JBQStCLEdBQUcsWUFBWTtBQUMvRTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsK0JBQStCO0FBQ25FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLE9BQU8sR0FBRyxFQUFFLGFBQWE7QUFDeEQ7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLE9BQU87QUFDeEM7QUFDQTtBQUNBOztBQUVBO0FBQ0Esb0JBQW9CLFFBQVEsSUFBSTtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLHFCQUFxQjtBQUNqRDtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0MscUJBQXFCO0FBQzdEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIscUJBQXFCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixLQUFxQyxXQUFXLDBEQUF1QyxFQUFFLE1BQU0sQ0FBRTtBQUMvSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixZQUFZO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsVUFBVTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsWUFBWTtBQUNqQztBQUNBO0FBQ0EsZ0ZBQWdGLEVBQUUsWUFBWTtBQUM5RjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLDBCQUEwQjtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLGdCQUFnQjtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLFFBQVE7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxLQUFxQztBQUM5QztBQUNBLG9CQUFvQixvQkFBb0I7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsaUNBQWlDLEdBQUcsSUFBSTtBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLCtCQUErQixHQUFHLElBQUksRUFBRSxpQ0FBaUM7QUFDM0Y7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsS0FBcUM7QUFDdEQ7QUFDQSxzQkFBc0IsQ0FBRTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixxREFBUTtBQUN4QjtBQUNBLG1CQUFtQixtREFBTSxHQUFHO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsbURBQU0sR0FBRyx5REFBeUQ7QUFDL0Y7QUFDQSxLQUFLO0FBQ0wseUJBQXlCLG1EQUFNLEdBQUc7QUFDbEM7QUFDQSxLQUFLO0FBQ0w7O0FBRUEsd0NBQXdDLFdBQVc7O0FBRXNrRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDendKdHVEO0FBQ2hYO0FBQ3lFOztBQUU1Ryw4QkFBOEIsS0FBcUMsb0JBQW9CLENBQUU7QUFDekYsaUNBQWlDLEtBQXFDLHVCQUF1QixDQUFFO0FBQy9GLDZCQUE2QixLQUFxQyxtQkFBbUIsQ0FBRTtBQUN2RiwrQkFBK0IsS0FBcUMscUJBQXFCLENBQUU7QUFDM0YsZ0NBQWdDLEtBQXFDLHNCQUFzQixDQUFFO0FBQzdGLG9DQUFvQyxLQUFxQywwQkFBMEIsQ0FBRTtBQUNyRywrQkFBK0IsS0FBcUMscUJBQXFCLENBQUU7QUFDM0YsdUJBQXVCLEtBQXFDLGNBQWMsQ0FBRTtBQUM1RSwyQkFBMkIsS0FBcUMsbUJBQW1CLENBQUU7QUFDckYsaUNBQWlDLEtBQXFDLHdCQUF3QixDQUFFO0FBQ2hHLDBFQUFzQjtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUMseUJBQXlCLEdBQUc7QUFDckU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEseUNBQXlDLG9EQUFPO0FBQ2hEO0FBQ0EsYUFBYTtBQUNiLHdCQUF3QixzREFBUyxTQUFTLHFEQUFRO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBLFlBQVksaUVBQWE7QUFDekI7QUFDQTtBQUNBLGlCQUFpQixpRUFBYTtBQUM5QjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxrQkFBa0IsU0FBUztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyxnQkFBZ0I7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsMEVBQXNCO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLDZEQUFnQjtBQUN2QyxXQUFXLDBFQUFzQjtBQUNqQzs7QUFFQTtBQUNBLFdBQVcsdUVBQW1CLFlBQVksS0FBZ0Qsc0JBQXNCLENBQVM7QUFDekg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHdFQUFvQixDQUFDLDBFQUFzQixpQ0FBaUMsMEVBQXNCO0FBQzlHO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHdFQUFvQixDQUFDLDBFQUFzQjtBQUN2RCxrQkFBa0IsbUVBQWU7QUFDakM7QUFDQSxzQkFBc0Isd0VBQW9CLHNCQUFzQixpRUFBaUI7QUFDakYsa0JBQWtCLDBFQUFzQjtBQUN4QztBQUNBO0FBQ0E7O0FBRUE7QUFDQSx1QkFBdUIsa0VBQWdCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsNERBQVE7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLE1BQU07QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5Qiw0REFBUTtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixLQUFxQztBQUNsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixzRUFBa0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLEtBQXFDO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFxQztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDRDQUE0QyxvREFBTztBQUNuRCx1Q0FBdUMsb0RBQU87QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUMsb0RBQU87QUFDOUMsc0NBQXNDLG9EQUFPO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHNCQUFzQjtBQUMxQztBQUNBO0FBQ0EsWUFBWSxzRUFBa0I7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsK0RBQVc7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQiwrREFBVztBQUNyQztBQUNBLFVBQVUsMEVBQXNCO0FBQ2hDO0FBQ0EsY0FBYyw0RUFBd0I7QUFDdEM7QUFDQTtBQUNBLHNDQUFzQyxNQUFNO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsK0RBQWE7QUFDeEIsZ0JBQWdCLFlBQVk7QUFDNUI7QUFDQTtBQUNBLGNBQWMseUJBQXlCO0FBQ3ZDLGdCQUFnQixzREFBc0Q7QUFDdEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5Qix3RUFBb0I7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYywrREFBVztBQUN6Qix5QkFBeUIsd0VBQW9CO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2REFBNkQsbURBQVU7QUFDdkUsa0JBQWtCLCtEQUFXO0FBQzdCLGtCQUFrQiwwRUFBc0IsSUFBSSxZQUFZLEVBQUUsZ0JBQWdCO0FBQzFFLGtCQUFrQiw0RUFBd0Isb0JBQW9CLGdCQUFnQjtBQUM5RTtBQUNBO0FBQ0Esb0JBQW9CLHdFQUFvQjtBQUN4QztBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUyxLQUFxQyw0QkFBNEIsQ0FBRTtBQUM1RTtBQUNBO0FBQ0EsV0FBVyxzRUFBc0I7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDO0FBQ3ZDLFdBQVcsK0RBQVcsV0FBVyxtREFBTSxHQUFHO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsbURBQU0sR0FBRywyREFBMkQ7QUFDakc7QUFDQSxLQUFLO0FBQ0w7QUFDQSxxQ0FBcUM7QUFDckMsV0FBVyw2REFBUyxXQUFXLG1EQUFNLEdBQUc7QUFDeEM7O0FBRXVSOzs7Ozs7Ozs7Ozs7Ozs7OztBQ2xlaFI7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDREE7QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIscUJBQU07QUFDdkIsY0FBYyxxQkFBTTtBQUNwQjtBQUNBO0FBQ087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNYdUU7QUFDdEM7QUFDRjtBQUNQO0FBQ0g7QUFDRjtBQUNuQjtBQUNQO0FBQ0EsbUJBQW1CLGtEQUFTO0FBQzVCLGlCQUFpQiw4REFBcUI7QUFDdEMsd0JBQXdCLHFEQUFnQjtBQUN4QztBQUNBLGtCQUFrQixpREFBVTtBQUM1QjtBQUNBO0FBQ0Esd0NBQXdDLCtDQUFRO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3pCc0Q7QUFDdEI7QUFDekI7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVFQUF1RSxVQUFVO0FBQ2pGLDhDQUE4QztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSx1QkFBdUIsNkNBQUc7QUFDMUIsYUFBYTtBQUNiO0FBQ0E7QUFDQSxvQkFBb0IsK0RBQXdCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLHFDQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1QseUNBQXlDO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QztBQUM5Qyx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0IseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDMUdBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IscUJBQU0sMkJBQTJCLHFCQUFNO0FBQzNEO0FBQ0EsZUFBZSxxQkFBTTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdEJrSzs7QUFFbEs7QUFDQSwrQkFBK0IsSUFBSTtBQUNuQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLElBQXFDO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQsT0FBTztBQUN4RDtBQUNBO0FBQ0Esa0RBQWtELE9BQU87QUFDekQ7QUFDQTtBQUNBO0FBQ0Esb0RBQW9ELE9BQU87QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLElBQXFDO0FBQ25EO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsTUFBTTtBQUNoQztBQUNBLHdCQUF3QixpQkFBaUI7QUFDekMscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxPQUFPO0FBQ25CO0FBQ0E7QUFDQSx3QkFBd0IsaUJBQWlCO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixLQUFxQyxnQkFBZ0IsQ0FBRTtBQUNuRixvQ0FBb0MsS0FBcUMsd0JBQXdCLENBQUU7QUFDbkc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksT0FBTztBQUNuQjtBQUNBLHdCQUF3QixpQkFBaUI7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsbURBQU07QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixLQUFxQztBQUNoRSxnQkFBZ0I7QUFDaEIsY0FBYyxDQUFTO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFxQztBQUNsRCxpREFBaUQsc0JBQXNCO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQyxvREFBTztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsb0RBQU87QUFDNUI7QUFDQSx3QkFBd0Isa0RBQUs7QUFDN0I7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLHlEQUFZO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsb0RBQU87QUFDNUI7QUFDQSx3QkFBd0Isa0RBQUs7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixrREFBSztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLEtBQXFDO0FBQzVELFlBQVk7QUFDWixVQUFVLENBQVM7QUFDbkI7QUFDQTtBQUNBLGlCQUFpQixJQUFxQztBQUN0RDtBQUNBO0FBQ0EsaUJBQWlCLEVBRUo7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLElBQXFDO0FBQ2xEO0FBQ0E7QUFDQSxhQUFhLEVBRUo7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixvREFBTztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBcUM7QUFDbEQsNkJBQTZCLG1EQUFNLEdBQUcsUUFBUTtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEseUNBQXlDLG9EQUFPO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLGlEQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDLE9BQU87QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixvREFBTztBQUNyQyw0Q0FBNEMsbURBQU07QUFDbEQ7QUFDQTtBQUNBO0FBQ0EsWUFBWSxxREFBUTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyx5REFBWTtBQUNoRDtBQUNBLFlBQVkscURBQVE7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLG9EQUFPO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLG9EQUFPLFlBQVkseURBQVk7QUFDdEQ7QUFDQSxjQUFjLG1EQUFNO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQix1REFBVTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixtREFBTTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLHFEQUFRO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3REFBd0Qsb0RBQU87QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxJQUFxQztBQUNsRCwwQ0FBMEMsWUFBWTtBQUN0RDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsYUFBYSxJQUFxQztBQUNsRCw2Q0FBNkMsWUFBWTtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QyxtREFBTSxHQUFHO0FBQ3ZEO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0EsOENBQThDLG1EQUFNLEdBQUc7QUFDdkQ7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLE1BQU07QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLFdBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsSUFBcUM7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLHVEQUFVO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxJQUFxQztBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixLQUFxQztBQUM1RCxVQUFVLGtEQUFLO0FBQ2Y7QUFDQTtBQUNBLFVBQVUsQ0FBUztBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsa0RBQUs7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixjQUFjO0FBQ3RDO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsSUFBcUM7QUFDbEQsNkNBQTZDLFFBQVE7QUFDckQsNEJBQTRCLHVEQUFVLFFBQVEsWUFBWSxJQUFJO0FBQzlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLG1EQUFNO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLHNEQUFTO0FBQzlCLGlDQUFpQyxNQUFNO0FBQ3ZDLDBDQUEwQyxpQ0FBaUM7QUFDM0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isc0RBQVM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxxREFBUTtBQUNqQixhQUFhLElBQXFDO0FBQ2xELDJEQUEyRCxlQUFlO0FBQzFFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxnREFBRztBQUNQO0FBQ0E7QUFDQSw4QkFBOEIscURBQVE7QUFDdEMsOEJBQThCLHFEQUFROztBQUV0QztBQUNBO0FBQ0E7QUFDQSxhQUFhLElBQXFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsYUFBYSxFQUVKO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsSUFBcUM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLGFBQWEsRUFFSjtBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHVEQUFVO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLEtBQXFDLGdCQUFnQixDQUFNO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsV0FBVztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxLQUFxQztBQUM5QztBQUNBO0FBQ0EsZ0JBQWdCLG9EQUFPO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsdURBQVU7QUFDakM7QUFDQTtBQUNBLGtCQUFrQixLQUFxQztBQUN2RDtBQUNBO0FBQ0E7QUFDQSxjQUFjLENBQUk7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxLQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixrQkFBa0I7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0EsOERBQThEO0FBQzlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRTRZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN0dUMxSDtBQUMwQztBQUN5RjtBQUNuUjs7QUFFbEk7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLDhEQUFhO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsT0FBTyxZQUFZLDBDQUEwQztBQUNyRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLElBQUk7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksOERBQWE7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsNEJBQTRCLHFCQUFxQjtBQUNqRCwrQ0FBK0MsY0FBYztBQUM3RDtBQUNBLHlCQUF5Qix5REFBeUQ7QUFDbEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEscURBQVE7QUFDaEI7QUFDQSxpQ0FBaUMsSUFBSSxHQUFHLE1BQU07QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsSUFBSSxHQUFHLE1BQU07QUFDOUM7QUFDQSxhQUFhLHNEQUFLO0FBQ2xCLGdDQUFnQyxzREFBSztBQUNyQyxpQ0FBaUMsSUFBSTtBQUNyQztBQUNBLGFBQWEsdURBQVU7QUFDdkIsbUJBQW1CLElBQUksS0FBSyxpQkFBaUIsV0FBVyxRQUFRO0FBQ2hFO0FBQ0E7QUFDQSxnQkFBZ0Isc0RBQUs7QUFDckIsaUNBQWlDLElBQUk7QUFDckM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQVU7QUFDbEI7QUFDQSxtQkFBbUIsc0RBQVM7QUFDNUI7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixlQUFlO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsS0FBcUMsNkJBQTZCLENBQUk7QUFDakc7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLCtCQUErQjtBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxJQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQiwrQkFBK0IsS0FBSyxPQUFPO0FBQzFFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEVBR0o7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLG9EQUFPO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLElBQXFDO0FBQzlDO0FBQ0E7QUFDQSxXQUFXLGtCQUFrQjtBQUM3QjtBQUNBO0FBQ0EsaUJBQWlCLEtBQXFDO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsSUFBcUM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLDRDQUE0QztBQUM3RSxpQkFBaUIsS0FBcUM7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsSUFBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLEtBQXFDO0FBQ3hEO0FBQ0EsVUFBVSxDQUFJO0FBQ2Q7QUFDQSw2QkFBNkIsMkJBQTJCO0FBQ3hEO0FBQ0E7QUFDQSxxQkFBcUIsS0FBcUM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNEQUFzRCxrQ0FBa0MsY0FBYyxRQUFRO0FBQzlHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssSUFBcUM7QUFDMUMsSUFBSSwwREFBYTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxJQUFJLG1EQUFNO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsYUFBYTtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixhQUFhO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxnQkFBZ0I7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDhNQUE4TTtBQUMxTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLG9EQUFPO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IscUJBQXFCO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdURBQXVELEtBQUs7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsZ0JBQWdCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFdBQVcsdURBQVUsY0FBYyxxQ0FBcUM7QUFDeEU7O0FBRUE7QUFDQTtBQUNBLFFBQVEsdURBQVU7QUFDbEIsbUJBQW1CO0FBQ25CO0FBQ0EsWUFBWTtBQUNaLCtDQUErQztBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLEtBQXFDO0FBQzlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsS0FBcUMsY0FBYyxxREFBUSxXQUFXLHVEQUFVO0FBQ3pHLGdGQUFnRixLQUFLO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLDJCQUEyQixvREFBRztBQUM5QiwwQkFBMEIsb0RBQUc7QUFDN0IsNEJBQTRCLG9EQUFHO0FBQy9CO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlGQUFpRixRQUFRO0FBQ3pGO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLGlDQUFpQyxTQUFTLGlDQUFpQyxVQUFVO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxtQkFBbUIsT0FBTztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLElBQWdFO0FBQzVFO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixZQUFZLHNDQUFzQyxvQkFBb0I7QUFDdEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLDJEQUFjO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsZ0JBQWdCLElBQWdFO0FBQ2hGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiwyREFBYztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsZ0JBQWdCLElBQWdFO0FBQ2hGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxVQUFVLDJCQUEyQjtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isb0JBQW9CO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLElBQXFDO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQix3QkFBd0I7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLG9EQUFPO0FBQ2Y7QUFDQTtBQUNBLGFBQWEscURBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLG1EQUFNO0FBQ2QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsOERBQWE7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDhEQUFhO0FBQzdCO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLElBQXFDO0FBQ25ELHdCQUF3Qix5REFBWTtBQUNwQyxnQkFBZ0IsU0FBUztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsK0RBQWtCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsS0FBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQix1QkFBdUI7QUFDM0MsMENBQTBDLGtEQUFTO0FBQ25ELFlBQVksdURBQVU7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixxQkFBcUI7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksOERBQWE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSw4REFBYTtBQUN6QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHFEQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMscURBQVE7QUFDekMsaUNBQWlDLHVEQUFVLENBQUMscURBQVE7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQXFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLGtCQUFrQixJQUFJLEtBQUssRUFBRSxNQUFNO0FBQ3pFO0FBQ0E7QUFDQTtBQUNBLGNBQWMsSUFBcUM7QUFDbkQsdUJBQXVCLHVEQUFVLHFCQUFxQjtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIscURBQVE7QUFDN0IscUJBQXFCLHVEQUFVLENBQUMscURBQVE7QUFDeEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxvREFBTyxZQUFZLHFEQUFRO0FBQ25DO0FBQ0EsMkNBQTJDLE9BQU87QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQXFDO0FBQ2xELG9FQUFvRSxPQUFPO0FBQzNFO0FBQ0E7QUFDQSx3QkFBd0IsWUFBWTtBQUNwQztBQUNBO0FBQ0E7QUFDQSxhQUFhLHFEQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2QyxPQUFPO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IseUJBQXlCO0FBQzdDO0FBQ0E7QUFDQSxZQUFZLG9EQUFPO0FBQ25CLDRCQUE0QixpQkFBaUI7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkM7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpRUFBaUUsTUFBTTtBQUN2RTtBQUNBO0FBQ0EsU0FBUyxLQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixLQUFLO0FBQ3JCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEtBQXFDLE1BQU0scURBQVE7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixJQUFJO0FBQ3hCLGNBQWMseURBQVk7QUFDMUI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsbURBQU07QUFDcEI7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLEtBQXFDLElBQUksZ0VBQWUsWUFBWSxDQUFPO0FBQzlGLG1CQUFtQixLQUFxQyxJQUFJLGdFQUFlLFlBQVksQ0FBTztBQUM5RixtQkFBbUIsS0FBcUMsSUFBSSxnRUFBZSxZQUFZLENBQU87QUFDOUYsa0JBQWtCLEtBQXFDLElBQUksZ0VBQWUsV0FBVyxDQUFNO0FBQzNGO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixLQUFtQiw2QkFBNkIsQ0FBTTtBQUMxRTtBQUNBO0FBQ0Esa0JBQWtCLEtBQW1CLDJCQUEyQixDQUFJO0FBQ3BFLENBQUM7QUFDRDtBQUNBO0FBQ0EsVUFBVSxhQUFhO0FBQ3ZCLGdCQUFnQiw4REFBOEQ7QUFDOUU7QUFDQSxhQUFhLEtBQXFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBcUM7QUFDbEQsMkJBQTJCLGtEQUFTO0FBQ3BDO0FBQ0EsWUFBWSxtREFBTTtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0Msa0RBQVMsSUFBSSxtREFBTTtBQUN2RDtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsa0RBQVMsSUFBSSxtREFBTTtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixtREFBTTtBQUN0QjtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsa0RBQVMsSUFBSSxtREFBTTtBQUNoRDtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsTUFBb0I7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixzREFBSztBQUNyQixpQkFBaUIsS0FBcUM7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLGtEQUFTLElBQUksbURBQU07QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLG1EQUFNO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLEtBQXFDO0FBQ3ZEO0FBQ0EsY0FBYyxxREFBUTtBQUN0QjtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsa0RBQVMsZ0NBQWdDLG1EQUFNO0FBQ3hFLGlDQUFpQyxxQkFBcUI7QUFDdEQ7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLHFCQUFxQjtBQUN0RDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsVUFBVSxhQUFhO0FBQ3ZCLGdCQUFnQix3QkFBd0I7QUFDeEMsMkJBQTJCLGtEQUFTLElBQUksbURBQU07QUFDOUM7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLGtEQUFTLElBQUksbURBQU07QUFDN0M7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLG1EQUFNO0FBQ3ZCLGFBQWEsS0FBcUM7QUFDbEQsbURBQW1ELElBQUk7QUFDdkQ7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFxQztBQUNsRCw4REFBOEQsSUFBSTtBQUNsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixLQUFxQztBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsVUFBVSxLQUFLLGdFQUFnRTtBQUMvRTtBQUNBO0FBQ0Esc0JBQXNCLGtEQUFTLElBQUksbURBQU07QUFDekMsNEJBQTRCLGtEQUFTLElBQUksbURBQU07QUFDL0Msb0RBQW9ELG1EQUFNO0FBQzFELFlBQVksbURBQU07QUFDbEIsWUFBWSxtREFBTTtBQUNsQixZQUFZLG1EQUFNO0FBQ2xCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLG1EQUFNO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQWlEO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlFQUFpRSxtREFBTSxHQUFHO0FBQzFFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLHVDQUF1QyxrRUFBcUI7QUFDNUQsYUFBYSxLQUFxQztBQUNsRCw2QkFBNkIscUJBQXFCO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsNkNBQUk7QUFDckIsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksb0NBQW9DO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQiw2Q0FBSTtBQUN6QixhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxrQkFBa0I7QUFDOUIsZ0JBQWdCLHNEQUFLO0FBQ3JCO0FBQ0E7QUFDQSxnREFBZ0QscUJBQXFCO0FBQ3JFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLDZDQUFJO0FBQ3pCLGFBQWE7QUFDYjtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixNQUFNLFlBQVksSUFBSSwwQkFBMEIsV0FBVztBQUMvRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDO0FBQ3RDLHNDQUFzQyxLQUFxQywrQkFBK0IsQ0FBSTtBQUM5RyxTQUFTLElBQXFDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsdURBQVU7QUFDMUI7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLElBQXFDO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQSxxQkFBcUIsRUFFSjtBQUNqQixxQkFBcUIsSUFBcUM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLElBQXFDO0FBQzNELGdDQUFnQyxJQUFJLGNBQWMscUJBQXFCO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQXFDLE1BQU0sdURBQVU7QUFDbEU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQXFDLEtBQUssc0RBQVM7QUFDaEUsMkVBQTJFO0FBQzNFO0FBQ0E7QUFDQTtBQUNBLGFBQWEscURBQVE7QUFDckIsYUFBYSxLQUFxQztBQUNsRDtBQUNBO0FBQ0EsNEJBQTRCLHlEQUFRO0FBQ3BDLGlCQUFpQixJQUFxQztBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLDZDQUFJO0FBQ3JDLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qix1REFBVTtBQUNsQztBQUNBLGtCQUFrQix1REFBVTtBQUM1QjtBQUNBLHNCQUFzQiw2Q0FBSTtBQUMxQixpQkFBaUIsS0FBcUMsYUFBYSw2Q0FBSTtBQUN2RSwyQ0FBMkMsSUFBSTtBQUMvQztBQUNBLHlCQUF5Qix1REFBVSxTQUFTLHVEQUFVO0FBQ3REO0FBQ0EsbUJBQW1CLEtBQXFDO0FBQ3hEO0FBQ0EsMkVBQTJFLElBQUk7QUFDL0U7QUFDQSxzQkFBc0IsQ0FBSTtBQUMxQjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixpQkFBaUIsSUFBcUM7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsdURBQVU7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksb0RBQU87QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxvREFBTztBQUNmO0FBQ0Esc0VBQXNFO0FBQ3RFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQyw2Q0FBSTtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEVBQTBFLDZDQUFJO0FBQzlFLFFBQVEsb0RBQU87QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxxREFBUTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksc0RBQUs7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLHFCQUFxQixJQUFxQztBQUMxRCwrQ0FBK0MsSUFBSTtBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxJQUFxQztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLG9EQUFPO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxxREFBUTtBQUNoQjtBQUNBLFlBQVksdURBQVU7QUFDdEI7QUFDQTtBQUNBLGtCQUFrQixJQUFxQztBQUN2RCw0REFBNEQsSUFBSTtBQUNoRTtBQUNBO0FBQ0EsYUFBYSx1REFBVTtBQUN2QjtBQUNBO0FBQ0EsYUFBYSxxREFBUTtBQUNyQixZQUFZLG9EQUFPO0FBQ25CO0FBQ0E7QUFDQTtBQUNBLDRCQUE0Qix1REFBVTtBQUN0QztBQUNBO0FBQ0EsZ0JBQWdCLHVEQUFVO0FBQzFCO0FBQ0E7QUFDQSxzQkFBc0IsSUFBcUM7QUFDM0QsZ0VBQWdFLFlBQVk7QUFDNUU7QUFDQTtBQUNBO0FBQ0EsY0FBYyxJQUFxQztBQUNuRCx1Q0FBdUMsSUFBSTtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLGtDQUFrQztBQUM5QyxZQUFZLHFEQUFxRCwwQkFBMEI7QUFDM0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEscURBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksa0NBQWtDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQXFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLG1EQUFNLEVBQUUsdURBQVUsaUNBQWlDLHVEQUFVO0FBQzdFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsb0RBQU87QUFDZjtBQUNBLHdCQUF3QixnQkFBZ0I7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsbURBQU0sQ0FBQyxtREFBTTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsbURBQU07QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksZ0RBQUc7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLElBQXFDO0FBQzlDLG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQSx5Q0FBeUMsZ0VBQWU7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx1QkFBdUIsY0FBYztBQUNqRCw0QkFBNEIsc0RBQUs7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxLQUFxQztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsMEJBQTBCO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLG1EQUFNO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2QyxxREFBUTtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLG1EQUFNO0FBQ3hCO0FBQ0E7QUFDQSxpQ0FBaUMsc0RBQVMsbUJBQW1CLG1EQUFNO0FBQ25FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLG1EQUFNO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsd0RBQU87QUFDZjtBQUNBLFNBQVMsSUFBcUM7QUFDOUMsb0NBQW9DO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiwyREFBYztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsbURBQU0sc0JBQXNCLHFEQUFRO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseURBQXlEO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0Msc0RBQUs7QUFDckMsNENBQTRDLGtEQUFTO0FBQ3JELHdCQUF3Qix5QkFBeUI7QUFDakQ7QUFDQSxxR0FBcUcsbURBQU07QUFDM0c7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsbURBQU07QUFDakM7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLHVEQUFVO0FBQ25ELHdCQUF3QixnQkFBZ0I7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsc0RBQVM7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsS0FBbUIsS0FBSyx1REFBVTtBQUMxQztBQUNBO0FBQ0E7QUFDQSxZQUFZLG1EQUFNO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHFEQUFRO0FBQ3BCLDRCQUE0QixrREFBUztBQUNyQztBQUNBLGVBQWUsa0RBQVM7QUFDeEI7QUFDQSxRQUFRLG9EQUFPO0FBQ2Ysd0JBQXdCLGdCQUFnQjtBQUN4QyxpQkFBaUIsS0FBcUMsTUFBTSxxREFBUTtBQUNwRTtBQUNBO0FBQ0Esa0NBQWtDLHFEQUFRO0FBQzFDO0FBQ0EsNENBQTRDLGtEQUFTO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFxQyxNQUFNLHFEQUFRO0FBQ2hFO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyxxREFBUTtBQUMxQztBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isb0RBQU8sU0FBUyx1REFBVSxVQUFVLFlBQVk7QUFDcEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsbURBQU07QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHFEQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLElBQXFDO0FBQ25ELG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxvREFBTztBQUNmO0FBQ0E7QUFDQSxhQUFhLHVEQUFVO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsc0RBQUs7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFEQUFxRCxtREFBTSxvQkFBb0IsbURBQU0sV0FBVyxzREFBUztBQUN6RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDRCQUE0QjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0Isb0RBQU87QUFDN0I7QUFDQTtBQUNBLHdCQUF3Qiw4QkFBOEI7QUFDdEQsb0JBQW9CLHNCQUFzQjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyxvREFBTztBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IscURBQVE7QUFDeEI7QUFDQTtBQUNBLGdCQUFnQixvREFBTztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtEQUErRCxLQUFLO0FBQ3BFLHFCQUFxQixrQkFBa0IsbURBQVUsY0FBYztBQUMvRDtBQUNBLHlCQUF5QixzREFBUztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsY0FBYztBQUNoRDtBQUNBLHdCQUF3QixjQUFjO0FBQ3RDO0FBQ0E7QUFDQSxpQ0FBaUMsY0FBYztBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE1BQU07QUFDekI7QUFDQTtBQUNBLGtCQUFrQixjQUFjO0FBQ2hDO0FBQ0E7QUFDQSxrQkFBa0IsTUFBTTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxzQ0FBc0Msb0RBQU87QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBcUM7QUFDbEQsMEJBQTBCLElBQUk7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx1REFBVTtBQUN0QjtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsSUFDUztBQUN6QixpRUFBaUUsSUFBSTtBQUNyRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxLQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLHNEQUFLO0FBQ2xDO0FBQ0EsWUFBWSxnREFBRztBQUNmO0FBQ0E7QUFDQSwrREFBK0Q7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksZ0RBQUc7QUFDUDtBQUNBO0FBQ0EsWUFBWSxlQUFlO0FBQzNCO0FBQ0EsbUNBQW1DLGtEQUFTO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLEtBQXFDO0FBQ3REO0FBQ0E7QUFDQSxnQkFBZ0IsbURBQU07QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLG1EQUFNO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QiwyQ0FBRTtBQUMzQjtBQUNBLGdDQUFnQztBQUNoQyxxQ0FBcUM7QUFDckM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0Esc0JBQXNCO0FBQ3RCLHNCQUFzQjtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLHVEQUFVO0FBQ3ZCLDRDQUE0QztBQUM1QztBQUNBLGtDQUFrQyxxREFBUTtBQUMxQyxhQUFhLEtBQXFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLHFCQUFxQixJQUFxQztBQUMxRDtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxxQkFBcUIsS0FBcUM7QUFDMUQ7QUFDQSxtQ0FBbUMsdURBQVU7QUFDN0M7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLHVEQUFVO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixJQUFxQztBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLG9CQUFvQixJQUFtQjtBQUN2QztBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsSUFBcUM7QUFDbkU7QUFDQSwrQ0FBK0MsV0FBVztBQUMxRDtBQUNBO0FBQ0EscUJBQXFCLEVBRUo7QUFDakI7QUFDQSxhQUFhO0FBQ2I7QUFDQSxxQkFBcUIsSUFBcUM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixLQUFxQztBQUMxRCx1Q0FBdUMsS0FBSztBQUM1QztBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxxQkFBcUIsSUFBcUM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixLQUFxQztBQUMxRCx1Q0FBdUMsS0FBSztBQUM1QztBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLEtBQXFDO0FBQzlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixJQUFxQztBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixJQUFnRTtBQUN4RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLElBQXFDO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLElBQWdFO0FBQ3hGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsSUFBcUM7QUFDL0Q7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLHFCQUFxQixLQUFxQztBQUMxRCxvRUFBb0UsWUFBWTtBQUNoRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsb0RBQU87QUFDZix5REFBeUQsb0RBQU87QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksbUJBQW1CO0FBQy9CLFNBQVMsS0FBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyxrREFBUyxtQkFBbUI7QUFDNUQ7QUFDQTtBQUNBO0FBQ0EsWUFBWSxxREFBUTtBQUNwQjtBQUNBLGdCQUFnQixtREFBTTtBQUN0QjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQUs7QUFDdEI7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBVTtBQUNsQjtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIscURBQVE7QUFDbEMsdUJBQXVCLHNEQUFLO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isb0RBQU8sY0FBYyxtREFBTTtBQUNuRDtBQUNBO0FBQ0EsNkJBQTZCLG9EQUFPO0FBQ3BDO0FBQ0E7QUFDQSxvQ0FBb0MsbURBQU07QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsbURBQU07QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixJQUFxQztBQUMvRCxnRUFBZ0UsV0FBVztBQUMzRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixJQUFxQztBQUN2RCx3REFBd0QsV0FBVztBQUNuRTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxtQ0FBbUMsa0ZBQWtGO0FBQ2pJO0FBQ0E7QUFDQSxhQUFhLEtBQXFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLGtDQUFrQztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLEtBQXFDO0FBQzlEO0FBQ0EsK0NBQStDLDBCQUEwQjtBQUN6RSwrQ0FBK0MsK0JBQStCO0FBQzlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsdUJBQXVCO0FBQzNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLElBQXFDO0FBQy9ELDhEQUE4RCxZQUFZO0FBQzFFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiwwQ0FBMEM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksSUFBOEU7QUFDMUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsaURBQUksVUFBVSwyREFBYztBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsS0FBcUM7QUFDOUQsZ0VBQWdFLFdBQVc7QUFDM0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLEtBQXFDO0FBQzFELG9FQUFvRSxXQUFXO0FBQy9FLHlDQUF5QyxlQUFlO0FBQ3hELHlDQUF5QyxlQUFlO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsT0FBTztBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLEtBQXFDO0FBQzFELDREQUE0RCxnQ0FBZ0M7QUFDNUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IscUNBQXFDO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsS0FBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixLQUFLLEdBQUcsYUFBYTtBQUM5QztBQUNBLFFBQVEsSUFBZ0U7QUFDeEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyxLQUFLLEdBQUcsYUFBYTtBQUNyRDtBQUNBO0FBQ0EseUJBQXlCLDZDQUE2QyxJQUFJLEtBQUs7QUFDL0U7QUFDQTtBQUNBO0FBQ0EsUUFBUSxJQUFnRTtBQUN4RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLEtBQXdDLEVBQUUsRUFHN0M7QUFDTCxRQUFRLEtBQTBDLEVBQUUsRUFHL0M7QUFDTCxTQUFTLEtBQXFDO0FBQzlDO0FBQ0Esb0NBQW9DLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLHNCQUFzQjtBQUNyRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsb0JBQW9CO0FBQy9CO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQiwwREFBYTtBQUNoQztBQUNBLFFBQVEsSUFBZ0U7QUFDeEU7QUFDQTtBQUNBLFlBQVksbVRBQW1ULDZDQUFJLDJFQUEyRTtBQUM5WSwyRUFBMkU7QUFDM0U7QUFDQSxxSkFBcUosS0FBcUM7QUFDMUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsdUJBQXVCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsSUFBcUM7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsSUFBcUM7QUFDL0QsMERBQTBELFlBQVk7QUFDdEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsWUFBWTtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLFlBQVk7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixzREFBc0Q7QUFDdEUsWUFBWSxLQUdnQiwyQkFBMkIsRUFNOUM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QywyREFBYztBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksSUFBZ0U7QUFDNUU7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLHlCQUF5QjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLEtBQXFDO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixxQkFBcUI7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsbUNBQW1DO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxrREFBUztBQUM5QyxxQ0FBcUMsa0RBQVM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQXFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsS0FBcUM7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQywwQkFBMEI7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qix3QkFBd0I7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiwyREFBYztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLGtEQUFTO0FBQ3RDO0FBQ0EseUJBQXlCLDJEQUFjO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsaUVBQWlFO0FBQy9FLGFBQWEsS0FBcUM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsS0FBcUM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQXFDO0FBQ2xEO0FBQ0E7QUFDQSxhQUFhLElBQXFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixJQUFxQztBQUN0RDtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsSUFBcUM7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLElBQXFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsSUFBcUM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLElBQXFDO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixZQUFZO0FBQ3BDLHdCQUF3QixnQkFBZ0I7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsMkRBQWM7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsSUFBcUM7QUFDbEU7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLElBQXFDO0FBQ2xFO0FBQ0E7QUFDQSw2QkFBNkIsSUFBcUM7QUFDbEU7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLElBQXFDO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLElBQXFDO0FBQzlEO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixJQUFxQztBQUM5RDtBQUNBO0FBQ0EseUJBQXlCLElBQXFDO0FBQzlEO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixJQUFxQztBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsSUFBZ0U7QUFDcEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLDZCQUE2QjtBQUNuRDtBQUNBO0FBQ0EscUJBQXFCLElBQXFDO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLDJEQUFjO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLElBQXFDO0FBQzFEO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixJQUFxQztBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixJQUFxQztBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixJQUFxQztBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLElBQWdFO0FBQ3BGO0FBQ0E7QUFDQSxxQkFBcUIsSUFBcUM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QywyREFBYztBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLElBQXFDO0FBQ2xEO0FBQ0EsdUJBQXVCLDJEQUFjO0FBQ3JDO0FBQ0E7QUFDQSx1QkFBdUIsMkRBQWM7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSw4REFBYTtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhEQUFhO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsdUJBQXVCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsa0RBQVM7QUFDNUIsbUJBQW1CLGtEQUFTO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGtCQUFrQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0M7QUFDaEMseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0EseUJBQXlCLFNBQVM7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsS0FBcUM7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsaUJBQWlCO0FBQ3pDO0FBQ0EseUJBQXlCLFNBQVM7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLFNBQVM7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixrREFBUztBQUMzQjtBQUNBO0FBQ0Esc0NBQXNDLFFBQVE7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsNENBQTRDO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIscUJBQXFCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsZ0NBQWdDO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiwwRUFBMEU7QUFDMUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsK0JBQStCO0FBQy9DO0FBQ0EsaUJBQWlCLEtBQXFDO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isb0JBQW9CO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBcUM7QUFDbEQ7QUFDQTtBQUNBLGdCQUFnQixrQ0FBa0M7QUFDbEQ7QUFDQTtBQUNBLFlBQVksMkRBQWM7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksSUFBZ0U7QUFDNUU7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIscUJBQXFCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixnQkFBZ0I7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLG9EQUFPLFNBQVMsb0RBQU87QUFDL0Isd0JBQXdCLGdCQUFnQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLEtBQXFDO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsU0FBUztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHFEQUFRO0FBQ2hCO0FBQ0EsYUFBYSxLQUFxQztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixLQUFxQztBQUN0RCw0RUFBNEUsZUFBZTtBQUMzRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFxQztBQUNsRCw2Q0FBNkMsZUFBZTtBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixvRUFBb0UscURBQXFEO0FBQ3pJO0FBQ0EsY0FBYyx1Q0FBdUM7QUFDckQ7QUFDQTtBQUNBLGFBQWEsS0FBcUM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQyxLQUFxQztBQUMvRTtBQUNBLGtCQUFrQixDQUFjO0FBQ2hDLDZDQUE2QyxLQUFxQztBQUNsRjtBQUNBLGtCQUFrQixDQUFjO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixLQUFxQztBQUMzRCxzRUFBc0UsY0FBYztBQUNwRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLElBQXFDO0FBQ25FLCtFQUErRSxjQUFjO0FBQzdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxnRUFBZ0Usa0JBQWtCLHNCQUFzQjtBQUN4RyxnQkFBZ0IsMkRBQTJEO0FBQzNFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLHFCQUFxQjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLHdEQUF3RCxLQUFLLFFBQVEsV0FBVztBQUNoRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVkseUNBQXlDO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIscUJBQXFCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtHQUFrRyxLQUFLLDBDQUEwQztBQUNqSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHlCQUF5QixLQUFxQyxpQkFBaUIsQ0FBUztBQUN4RixxQkFBcUIsS0FBcUMsYUFBYSxDQUFTO0FBQ2hGLHdCQUF3QixLQUFxQyxnQkFBZ0IsQ0FBUztBQUN0Rix1QkFBdUIsS0FBcUMsZUFBZSxDQUFTO0FBQ3BGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUFpRCxrREFBUztBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxLQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLEtBQUs7QUFDN0Isd0JBQXdCLHVCQUF1QjtBQUMvQztBQUNBLFVBQVUscURBQVEsU0FBUyxzREFBSyxTQUFTLHVEQUFVO0FBQ25ELGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLHFEQUFRO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxLQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLEtBQXFDLG1DQUFtQyxDQUFZO0FBQzFHO0FBQ0E7QUFDQSxhQUFhLEtBQXFDO0FBQ2xELDREQUE0RCxLQUFLO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsc0JBQXNCO0FBQ3BDLHNCQUFzQixxREFBUTtBQUM5QiwwQkFBMEIsMkRBQWM7QUFDeEM7QUFDQSxZQUFZLHFEQUFRO0FBQ3BCO0FBQ0E7QUFDQSxnQkFBZ0Isd0RBQU8sWUFBWSxvREFBTztBQUMxQyx3QkFBd0IsbURBQU0sR0FBRztBQUNqQztBQUNBLDBCQUEwQiwyREFBYztBQUN4QztBQUNBO0FBQ0E7QUFDQSxzQkFBc0IscURBQVE7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixxREFBUTtBQUMxQjtBQUNBLHNCQUFzQix1REFBVTtBQUNoQztBQUNBO0FBQ0EsU0FBUyxLQUFxQywwREFBMEQsd0RBQU87QUFDL0csZUFBZSxzREFBSztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsd0RBQU87QUFDbEIsVUFBVSxtREFBTSxHQUFHO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLGtDQUFrQztBQUM5QywyREFBMkQ7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixvREFBTztBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsS0FBcUMsa0RBQWtELG9EQUFPO0FBQ2pIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsb0RBQU87QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLG9EQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksWUFBWTtBQUN4QjtBQUNBO0FBQ0E7QUFDQSxhQUFhLG9EQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsdURBQVU7QUFDdkIscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixpQkFBaUI7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsMkRBQWM7QUFDOUM7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLDJEQUFjO0FBQzFDO0FBQ0EscUJBQXFCLGlEQUFJO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLG9EQUFPO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHdEQUFXO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixrREFBUztBQUNoQztBQUNBO0FBQ0E7QUFDQSxhQUFhLGtEQUFTO0FBQ3RCLGNBQWMsa0RBQVM7QUFDdkIsZUFBZSxrREFBUztBQUN4QixlQUFlLGtEQUFTO0FBQ3hCLGVBQWUsa0RBQVM7QUFDeEIsY0FBYyxrREFBUztBQUN2QixvQkFBb0Isa0RBQVM7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsSUFBcUM7QUFDOUM7QUFDQTtBQUNBLFNBQVMsRUFFSjtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyxvREFBTztBQUMxQztBQUNBLGlEQUFpRCwyQ0FBRTtBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksa0JBQWtCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsSUFBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixrQkFBa0I7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixrQkFBa0I7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsd0RBQU87QUFDNUIsU0FBUyxJQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQSxZQUFZLFFBQVE7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhEQUFhO0FBQ3JCLHdHQUF3RyxLQUFxQyxJQUFJLGdFQUFlLG1CQUFtQixDQUFjO0FBQ2pNLFFBQVEsOERBQWE7QUFDckI7QUFDQSxZQUFZLHNEQUFTO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsS0FBcUM7QUFDMUQ7QUFDQSx1Q0FBdUMsS0FBSztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFVO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxxREFBUTtBQUNyQixhQUFhLEtBQXFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLElBQWdFO0FBQzVFO0FBQ0E7QUFDQSw4QkFBOEIsMERBQVM7QUFDdkMsYUFBYSxJQUFxQztBQUNsRDtBQUNBO0FBQ0E7QUFDQSxjQUFjLEtBQXFDO0FBQ25ELDJEQUEyRCxtREFBbUQ7QUFDOUc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixJQUFxQztBQUMxRDtBQUNBO0FBQ0Esd0JBQXdCLG1DQUFtQztBQUMzRCx3QkFBd0Isd0RBQXdEO0FBQ2hGLDZDQUE2QyxtREFBTSxDQUFDLG1EQUFNO0FBQzFEO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxxQkFBcUIsSUFBcUM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0MsNkNBQUk7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsSUFBZ0M7QUFDeEM7QUFDQSxRQUFRLDhEQUFhO0FBQ3JCO0FBQ0EsUUFBUSw4REFBYTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsS0FBcUMsOENBQThDLDZDQUFJO0FBQ2hHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLEtBQXFDO0FBQzNFO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixzREFBSztBQUNyQjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsQ0FLRDtBQUNUO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBcUM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsSUFBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLHVCQUF1QixnRUFBZTtBQUN0QyxhQUFhO0FBQ2I7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVDtBQUNBLFNBQVMsRUFTSjtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDLDBEQUFTLENBQUMsd0RBQU87QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyx1REFBVTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsdURBQVU7QUFDckI7O0FBRUE7QUFDQTtBQUNBLFdBQVcseURBQVU7QUFDckIsQ0FBQzs7QUFFRDtBQUNBLDZDQUE2QyxPQUFPO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxJQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLElBQXFDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLElBQXFDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsSUFBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxLQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixvREFBTztBQUN6Qiw0REFBNEQsa0JBQWtCO0FBQzlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLG9EQUFPLFNBQVMsdURBQVU7QUFDMUMsK0JBQStCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBLGtCQUFrQixJQUFxQztBQUN2RCx1Q0FBdUMsSUFBSTtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEtBQXFDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHNEQUFTO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHFEQUFRLHNCQUFzQixvREFBTztBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw4QkFBOEIsS0FBcUMsbUJBQW1CLENBQUU7QUFDeEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxRQUFRLE1BQXdDO0FBQ2hEO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkIsMEJBQTBCO0FBQzFCLDBCQUEwQjtBQUMxQiwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixxREFBUTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLHNEQUFLO0FBQzFCO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLDJEQUFVO0FBQy9CO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLDJEQUFVLDJCQUEyQjtBQUM3RDtBQUNBO0FBQ0EscUJBQXFCLDJEQUFVO0FBQy9CO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQjtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscURBQXFELHNEQUFLO0FBQzFEO0FBQ0Esb0NBQW9DLGtEQUFTO0FBQzdDO0FBQ0E7QUFDQSw4QkFBOEIsa0RBQVM7QUFDdkMsb0RBQW9ELHNEQUFLO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0Esa0RBQWtEO0FBQ2xELGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EseUJBQXlCLGtCQUFrQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixtREFBTSxHQUFHO0FBQzFCO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBLGNBQWMsMkJBQTJCLHNCQUFzQjtBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixxREFBUTtBQUN6QixnQ0FBZ0MsZ0JBQWdCLHNEQUFLLFNBQVM7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHVEQUFVO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsb0RBQU87QUFDcEIsYUFBYSxxREFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsaUJBQWlCO0FBQ3JDLFlBQVksdURBQVU7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWcyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbnNQbitCO0FBQzNWO0FBQ3VQOztBQUV6UjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMsS0FBSztBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwREFBMEQsUUFBUTtBQUNsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx3QkFBd0IscURBQVE7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIscURBQVE7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxvREFBTztBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLHNEQUFTO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHFEQUFRO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLFdBQVcsdURBQVU7QUFDckIsb0JBQW9CLHFCQUFxQjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixpRUFBb0I7QUFDOUMsNENBQTRDLCtEQUFrQjtBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0RBQW9EO0FBQ3BELG9CQUFvQiwrREFBa0I7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsSUFBcUM7QUFDbEQsWUFBWSx1REFBSSx5QkFBeUIsSUFBSSxRQUFRLHlCQUF5QjtBQUM5RSx5QkFBeUIsT0FBTztBQUNoQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0RBQW9ELHNEQUFTO0FBQzdEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksNkVBQTBCO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxvREFBTztBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsaURBQUk7QUFDakI7QUFDQSxhQUFhLDREQUFlO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQsdURBQVU7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLHFEQUFRO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCLGtFQUFlO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQSxDQUFDO0FBQ0Q7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixLQUFxQztBQUN0RCxnQkFBZ0IsdURBQUk7QUFDcEI7QUFDQTtBQUNBLGdDQUFnQyxjQUFjO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSwyREFBUTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qiw0QkFBNEI7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLGtCQUFrQixrQkFBa0I7QUFDN0M7QUFDQSxvQkFBb0IsZ0JBQWdCO0FBQ3BDLGdDQUFnQyxvREFBTztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQyxxREFBUTtBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsaURBQVU7QUFDcEQ7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHFEQUFRO0FBQzVCO0FBQ0Esc0JBQXNCLHFEQUFVO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLHNEQUFTO0FBQy9DO0FBQ0E7QUFDQSxzQ0FBc0Msc0RBQVM7QUFDL0M7QUFDQTtBQUNBLHlDQUF5QyxzREFBUztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLDhEQUFXLFlBQVksbURBQU0sR0FBRztBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLElBQXFDO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLElBQXFDO0FBQzFEO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixxRUFBa0I7QUFDM0M7QUFDQSxhQUFhLEtBQXFDLEtBQUssdURBQUk7QUFDM0QsbUJBQW1CLGtEQUFTO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBcUMsS0FBSyx1REFBSTtBQUMzRCxtQkFBbUIsa0RBQVM7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFxQztBQUNsRCxnQkFBZ0IsdURBQUkscURBQXFELEtBQUs7QUFDOUUsbUJBQW1CLGtEQUFTO0FBQzVCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIscUVBQWtCO0FBQ3ZDO0FBQ0E7QUFDQSxTQUFTLEtBQXFDO0FBQzlDLFlBQVksdURBQUk7QUFDaEI7QUFDQTtBQUNBO0FBQ0EsSUFBSSxrRUFBZTtBQUNuQixJQUFJLDREQUFTO0FBQ2I7QUFDQSxxREFBcUQsaUJBQWlCO0FBQ3RFLFFBQVEsOERBQVc7QUFDbkIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLHVEQUFRO0FBQ3BDO0FBQ0E7QUFDQSw0QkFBNEIscURBQU07QUFDbEMsY0FBYyxhQUFhO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyxJQUFJO0FBQ3ZDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixPQUFPLEtBQUssb0RBQUMsQ0FBQyw2REFBYztBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsbURBQU0sR0FBRyxFQUFFLG1FQUFvQjtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxvREFBTztBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsb0RBQU87QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksZ0RBQWdELEtBQUssb0NBQW9DLEtBQUssa0NBQWtDLEtBQUssc0lBQXNJLEtBQUssb0NBQW9DLEtBQUssa0NBQWtDLEtBQUssYUFBYTtBQUN6WDtBQUNBO0FBQ0E7QUFDQSxZQUFZLGdLQUFnSztBQUM1SztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxXQUFXLG1EQUFNO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEscURBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixxREFBUTtBQUN4QixTQUFTLElBQXFDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1osbUJBQW1CLG9CQUFvQjtBQUN2QztBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxPQUFPO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksMkJBQTJCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixtREFBTSxHQUFHO0FBQ2xDO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsbUJBQW1CLE9BQU87QUFDMUIseUJBQXlCLHFFQUFrQjtBQUMzQyxzQkFBc0IscUVBQWtCO0FBQ3hDO0FBQ0E7QUFDQSxRQUFRLDREQUFTO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0RBQW9ELGtCQUFrQjtBQUN0RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0EsNkJBQTZCLHdEQUFLO0FBQ2xDO0FBQ0Esc0NBQXNDLHVEQUFRO0FBQzlDO0FBQ0EsdUNBQXVDLDJFQUF3QjtBQUMvRCw0QkFBNEIscUJBQXFCO0FBQ2pEO0FBQ0E7QUFDQSxvQkFBb0IscUVBQWtCLFFBQVEseUVBQXNCO0FBQ3BFO0FBQ0EsMEJBQTBCLElBQXFDO0FBQy9ELG9CQUFvQix1REFBSTtBQUN4QjtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MseUJBQXlCO0FBQ3pEO0FBQ0Esb0JBQW9CLHFFQUFrQixRQUFRLHlFQUFzQjtBQUNwRTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsOERBQVc7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVEQUF1RCxHQUFHLEtBQUssR0FBRztBQUNsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLGVBQWU7QUFDM0I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsb0RBQU8sZ0JBQWdCLDJEQUFjO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsYUFBYSxzQkFBc0I7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIscURBQVE7QUFDbkM7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxrQkFBa0IsT0FBTztBQUN6QjtBQUNBLEtBQUs7QUFDTCx1QkFBdUIsb0JBQW9CLHNCQUFzQjtBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0RBQW9ELHFEQUFRO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLG9EQUFPO0FBQ3ZCLDhCQUE4Qix5REFBWTtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixrREFBSztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLGlCQUFpQjtBQUMzQztBQUNBLFFBQVEsb0RBQU87QUFDZixxQkFBcUIseURBQVk7QUFDakM7QUFDQSxhQUFhLGtEQUFLO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQix1REFBVTtBQUMvQjtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsT0FBTztBQUN6QixxQkFBcUIsdURBQVU7QUFDL0I7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7QUFDTCx1QkFBdUIsaUJBQWlCO0FBQ3hDO0FBQ0E7QUFDQSx5QkFBeUIsdURBQVU7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLG9CQUFvQixVQUFVO0FBQ2hELDJCQUEyQixrREFBSztBQUNoQztBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMscURBQVE7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0Esa0JBQWtCLE9BQU87QUFDekI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTCxrQkFBa0IsT0FBTztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLG9EQUFPLFlBQVksa0RBQUs7QUFDL0MsU0FBUyxLQUFxQztBQUM5QyxZQUFZLHVEQUFJO0FBQ2hCLDJCQUEyQixtREFBbUQ7QUFDOUU7QUFDQTtBQUNBLDJDQUEyQyxPQUFPO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixvREFBTztBQUN2QixrQ0FBa0MseURBQVk7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLHVEQUFVO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLE9BQU8sUUFBUSxPQUFPO0FBQ3RELGlDQUFpQyxPQUFPO0FBQ3hDLDJCQUEyQix1REFBVTtBQUNyQyxxQkFBcUI7QUFDckI7QUFDQTtBQUNBLG9DQUFvQyxPQUFPO0FBQzNDLFlBQVksb0RBQU87QUFDbkIsK0JBQStCLHlEQUFZO0FBQzNDLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0EsaUJBQWlCLGtEQUFLO0FBQ3RCO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDREQUE0RCxFQUFFO0FBQzlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixzQkFBc0I7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixzREFBUztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esc0JBQXNCLE9BQU8sSUFBSSxZQUFZO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLGtCQUFrQixPQUFPLElBQUksWUFBWTtBQUN6QztBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsa0JBQWtCLGlCQUFpQixJQUFJLFlBQVk7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLHdCQUF3QixPQUFPO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixPQUFPO0FBQ2xDO0FBQ0EscUJBQXFCLFNBQVM7QUFDOUI7QUFDQTtBQUNBOztBQUVBLHNDQUFzQyxtREFBTSxHQUFHLFdBQVc7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGlFQUFjO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSwwRUFBdUI7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBLFNBQVMsSUFBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0EsWUFBWSxRQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLHVEQUFVO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQSxTQUFTLElBQXFDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBLFlBQVksUUFBUTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixzREFBUyxTQUFTLHFEQUFRO0FBQ2xEO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLFFBQVEsZ0VBQWE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxnQkFBZ0IsdURBQUk7QUFDcEI7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQix1REFBSTtBQUNwQjtBQUNBLGFBQWE7QUFDYjtBQUNBLGdCQUFnQix1REFBSTtBQUNwQjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxRQUFRLHFEQUFRO0FBQ2hCO0FBQ0EsYUFBYSxLQUFxQztBQUNsRCxZQUFZLHVEQUFJLGdEQUFnRCxVQUFVO0FBQzFFO0FBQ0E7QUFDQTtBQUNBLFNBQVMsS0FBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBSSxtQ0FBbUMsZUFBZTtBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWdTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbHFEaFM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsaUJBQWlCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGtCQUFrQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQywrQkFBK0I7QUFDbkU7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLEtBQUssRUFBRSxpREFBaUQsS0FBSyxTQUFTO0FBQ2xHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQyxjQUFjO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdEQUFnRCxLQUFLO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isa0JBQWtCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsY0FBYyxHQUFHLE9BQU87QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isa0JBQWtCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsc0JBQXNCO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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Q0E7O0FBRUE7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUI7QUFDakIsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQSwrQ0FBK0M7QUFDL0MsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7O0FBRUE7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsMENBQTBDO0FBQzFDOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMERBQTBEO0FBQzFEOztBQUVBO0FBQ0E7QUFDQSwwQkFBMEIsMENBQUs7QUFDL0I7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQLEtBQUssSUFBSSxlQUFlO0FBQ3hCOztBQUVBOztBQUVBO0FBQ0EsNERBQTRELFdBQVc7QUFDdkU7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLEVBQUUsMENBQUs7QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVILEVBQUUsMENBQUs7QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLElBQUksWUFBWTs7QUFFbkIsRUFBRSwwQ0FBSztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSCxFQUFFLDBDQUFLOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksRUFBRSwyQ0FBTTs7QUFFWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLGtCQUFrQiw2Q0FBUTtBQUMxQjtBQUNBLEdBQUc7O0FBRUgsaUJBQWlCLDZDQUFRO0FBQ3pCO0FBQ0EsR0FBRzs7QUFFSCx5QkFBeUIsNkNBQVE7QUFDakM7QUFDQSxHQUFHOztBQUVILHlCQUF5Qiw2Q0FBUTtBQUNqQztBQUNBLEdBQUc7O0FBRUgsdUJBQXVCLDZDQUFRO0FBQy9CO0FBQ0EsR0FBRzs7QUFFSCxvQkFBb0IsNkNBQVE7QUFDNUI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBLG9CQUFvQiw2Q0FBUTtBQUM1QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7QUFFSCxvQkFBb0IsNkNBQVE7QUFDNUI7QUFDQSxHQUFHO0FBQ0g7QUFDQSx5Q0FBeUMsNkNBQVE7QUFDakQ7QUFDQSxHQUFHOztBQUVILHdDQUF3Qyw2Q0FBUTtBQUNoRDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0Esd0NBQXdDLDZDQUFRO0FBQ2hEO0FBQ0E7QUFDQSxHQUFHOztBQUVILHFDQUFxQyw2Q0FBUTtBQUM3QztBQUNBLEdBQUc7O0FBRUgscUNBQXFDLDZDQUFRO0FBQzdDO0FBQ0EsR0FBRzs7QUFFSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFNO0FBQ047O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsSUFBSSw2Q0FBUTtBQUNaO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE1BQU07QUFDTjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxJQUFJLDZDQUFRO0FBQ1o7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsRUFBRSwwQ0FBSztBQUNQO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVILEVBQUUsMENBQUs7QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTSw2Q0FBUTtBQUNkO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVSxXQUFXLEVBQUUsMkNBQU07O0FBRTdCLGdCQUFnQix1REFBa0I7O0FBRWxDOztBQUVBLGlCQUFpQix3Q0FBRzs7QUFFcEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFVBQVUsdUJBQXVCLEVBQUUsMkNBQU07O0FBRXpDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsc0JBQXNCLHdDQUFHO0FBQ3pCLGVBQWUsd0NBQUc7O0FBRWxCLG1CQUFtQix3Q0FBRzs7QUFFdEI7O0FBRUEsbUJBQW1CLDZDQUFRO0FBQzNCO0FBQ0EsR0FBRzs7QUFFSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxFQUFFLDJDQUFNOztBQUVaLGdCQUFnQix1REFBa0I7O0FBRWxDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSx1QkFBdUIsNkNBQVE7QUFDL0I7QUFDQSxHQUFHOztBQUVIO0FBQ0Esc0JBQXNCLDZDQUFRO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7O0FBRUg7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7QUFDRDtBQUNBLElBQUksRUFBRSwyQ0FBTTs7QUFFWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGtCQUFrQiw2Q0FBUTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDs7QUFFQSx1QkFBdUIsNkNBQVE7QUFDL0I7QUFDQSxHQUFHOztBQUVILG9CQUFvQiw2Q0FBUTtBQUM1Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQSxVQUFVO0FBQ1Y7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQSxVQUFVO0FBQ1Y7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksRUFBRSwyQ0FBTTs7QUFFWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsbUJBQW1CLHdDQUFHOztBQUV0Qix5QkFBeUIsd0NBQUc7O0FBRTVCOztBQUVBLGtCQUFrQiw2Q0FBUTtBQUMxQjtBQUNBLEdBQUc7O0FBRUg7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsWUFBWSx5QkFBeUI7O0FBRXJDO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxNQUFNLDZDQUFRO0FBQ2Q7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsRUFBRSwwQ0FBSztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7O0FBRUgsRUFBRSwwQ0FBSztBQUNQO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLEdBQUcsSUFBSSxlQUFlOztBQUV0QixFQUFFLDBDQUFLO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRyxJQUFJLGlDQUFpQzs7QUFFeEM7O0FBRUEsRUFBRSw4Q0FBUztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxVQUFVLGlFQUFpRSxFQUFFLDJDQUFNOztBQUVuRjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLGdCQUFnQix3Q0FBRzs7QUFFbkI7O0FBRUEsbUJBQW1CLDZDQUFRO0FBQzNCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLEdBQUc7O0FBRUgsK0JBQStCLDZDQUFRO0FBQ3ZDOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVILG9CQUFvQiw2Q0FBUTtBQUM1Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHOztBQUVILDBCQUEwQiw2Q0FBUTtBQUNsQztBQUNBLEdBQUc7O0FBRUg7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQSxFQUFFLDhDQUFTO0FBQ1g7QUFDQTtBQUNBLG1EQUFtRCxTQUFTO0FBQzVEO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHlEQUF5RDtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQixPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQixPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNB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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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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUFpRCxXQUFXO0FBQzVEO0FBQ0EsaURBQWlELFdBQVc7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0VBQW9FO0FBQ3BFLHdCQUF3Qiw0Q0FBNEM7QUFDcEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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QUFDbkM7QUFDRDtBQUNsQjtBQUNLO0FBQ3VCO0FBQzJCO0FBQzZCO0FBQ3pFO0FBQ007QUFDSztBQUNaO0FBQ2tCLENBQUM7QUFDckU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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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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O0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDdEtEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDakVEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUNyTEQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ2xFRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUNuSEQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUNqRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUN2TUQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDaEhEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDeEpEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDakdEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQzdERDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUMzSUQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDaklEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyxJQUFJO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDdElEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQzlHRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0RBQXNEO0FBQ3REO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzREFBc0Q7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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O0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDM0VEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDM0hEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDdElEO0FBQ0E7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDcEVEO0FBQ0E7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUNuRUQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUNoRkQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDcEZEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ3RIRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ3JGRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ3hJRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Ozs7Ozs7QUM5R0Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ3JORDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDdEZEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDckZEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVB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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUNsSEQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUNyRUQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQy9GRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDcElEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUN0SkQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0NBQStDO0FBQy9DLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUNwRUQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0NBQStDO0FBQy9DLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUN6RUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDdEZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0Esc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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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/M2JlYyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZWZvcm0vbXVsdGlzZWxlY3QvdGhlbWVzL2RlZmF1bHQuY3NzP2Q3YmUiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9zdmctdnVlMy9kaXN0L3N2Zy12dWUuZXNtLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2Rpc3QvZXhwb3J0SGVscGVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVlZm9ybS9tdWx0aXNlbGVjdC90aGVtZXMvZGVmYXVsdC5jc3M/MGFiMyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVlL2Rpc3QvdnVlLmVzbS1idW5kbGVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92dWUzLWFwZXhjaGFydHMvZGlzdC92dWUzLWFwZXhjaGFydHMuY29tbW9uLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92dWUzLXJhZGlhbC1wcm9ncmVzcy9kaXN0L1JhZGlhbFByb2dyZXNzQmFyLmVzbS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVlMy1zbW9vdGgtc2Nyb2xsL2Rpc3QvdnVlLXNtb290aC1zY3JvbGwubWluLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92dWV4L2Rpc3QvdnVleC5lc20tYnVuZGxlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGhlYWRsZXNzdWkvdnVlL2Rpc3QvaGVhZGxlc3N1aS5kZXYuY2pzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AaGVhZGxlc3N1aS92dWUvZGlzdC9pbmRleC5janMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0B2dWVwaWMvdnVlLWRhdGVwaWNrZXIvZGlzdC92dWUtZGF0ZXBpY2tlci51bWQuY2pzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVldXNlL2NvcmUvaW5kZXguY2pzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AdnVldXNlL2NvcmUvbm9kZV9tb2R1bGVzL0B2dWV1c2Uvc2hhcmVkL2luZGV4LmNqcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHZ1ZXVzZS9jb3JlL25vZGVfbW9kdWxlcy92dWUtZGVtaS9saWIvaW5kZXguY2pzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hcnJheUxpa2VUb0FycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlU3VwZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9nZXRQcm90b3R5cGVPZi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vcG9zc2libGVDb25zdHJ1Y3RvclJldHVybi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2V0UHJvdG90eXBlT2YuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvUHJpbWl0aXZlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b1Byb3BlcnR5S2V5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2YuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzU3RyaW5nLCBoeXBoZW5hdGUsIE5PT1AsIGV4dGVuZCwgaXNPYmplY3QsIE5PLCBpc0FycmF5LCBtYWtlTWFwLCBpc1N5bWJvbCwgRU1QVFlfT0JKLCBjYXBpdGFsaXplLCBjYW1lbGl6ZSBhcyBjYW1lbGl6ZSQxLCBQYXRjaEZsYWdOYW1lcywgc2xvdEZsYWdzVGV4dCwgaXNPbiwgaXNCdWlsdEluRGlyZWN0aXZlLCBpc1Jlc2VydmVkUHJvcCwgdG9IYW5kbGVyS2V5IH0gZnJvbSAnQHZ1ZS9zaGFyZWQnO1xuZXhwb3J0IHsgZ2VuZXJhdGVDb2RlRnJhbWUgfSBmcm9tICdAdnVlL3NoYXJlZCc7XG5cbmZ1bmN0aW9uIGRlZmF1bHRPbkVycm9yKGVycm9yKSB7XHJcbiAgICB0aHJvdyBlcnJvcjtcclxufVxyXG5mdW5jdGlvbiBkZWZhdWx0T25XYXJuKG1zZykge1xyXG4gICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGNvbnNvbGUud2FybihgW1Z1ZSB3YXJuXSAke21zZy5tZXNzYWdlfWApO1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUNvbXBpbGVyRXJyb3IoY29kZSwgbG9jLCBtZXNzYWdlcywgYWRkaXRpb25hbE1lc3NhZ2UpIHtcclxuICAgIGNvbnN0IG1zZyA9IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB8fCAhdHJ1ZVxyXG4gICAgICAgID8gKG1lc3NhZ2VzIHx8IGVycm9yTWVzc2FnZXMpW2NvZGVdICsgKGFkZGl0aW9uYWxNZXNzYWdlIHx8IGBgKVxyXG4gICAgICAgIDogY29kZTtcclxuICAgIGNvbnN0IGVycm9yID0gbmV3IFN5bnRheEVycm9yKFN0cmluZyhtc2cpKTtcclxuICAgIGVycm9yLmNvZGUgPSBjb2RlO1xyXG4gICAgZXJyb3IubG9jID0gbG9jO1xyXG4gICAgcmV0dXJuIGVycm9yO1xyXG59XHJcbmNvbnN0IGVycm9yTWVzc2FnZXMgPSB7XHJcbiAgICAvLyBwYXJzZSBlcnJvcnNcclxuICAgIFswIC8qIEVycm9yQ29kZXMuQUJSVVBUX0NMT1NJTkdfT0ZfRU1QVFlfQ09NTUVOVCAqL106ICdJbGxlZ2FsIGNvbW1lbnQuJyxcclxuICAgIFsxIC8qIEVycm9yQ29kZXMuQ0RBVEFfSU5fSFRNTF9DT05URU5UICovXTogJ0NEQVRBIHNlY3Rpb24gaXMgYWxsb3dlZCBvbmx5IGluIFhNTCBjb250ZXh0LicsXHJcbiAgICBbMiAvKiBFcnJvckNvZGVzLkRVUExJQ0FURV9BVFRSSUJVVEUgKi9dOiAnRHVwbGljYXRlIGF0dHJpYnV0ZS4nLFxyXG4gICAgWzMgLyogRXJyb3JDb2Rlcy5FTkRfVEFHX1dJVEhfQVRUUklCVVRFUyAqL106ICdFbmQgdGFnIGNhbm5vdCBoYXZlIGF0dHJpYnV0ZXMuJyxcclxuICAgIFs0IC8qIEVycm9yQ29kZXMuRU5EX1RBR19XSVRIX1RSQUlMSU5HX1NPTElEVVMgKi9dOiBcIklsbGVnYWwgJy8nIGluIHRhZ3MuXCIsXHJcbiAgICBbNSAvKiBFcnJvckNvZGVzLkVPRl9CRUZPUkVfVEFHX05BTUUgKi9dOiAnVW5leHBlY3RlZCBFT0YgaW4gdGFnLicsXHJcbiAgICBbNiAvKiBFcnJvckNvZGVzLkVPRl9JTl9DREFUQSAqL106ICdVbmV4cGVjdGVkIEVPRiBpbiBDREFUQSBzZWN0aW9uLicsXHJcbiAgICBbNyAvKiBFcnJvckNvZGVzLkVPRl9JTl9DT01NRU5UICovXTogJ1VuZXhwZWN0ZWQgRU9GIGluIGNvbW1lbnQuJyxcclxuICAgIFs4IC8qIEVycm9yQ29kZXMuRU9GX0lOX1NDUklQVF9IVE1MX0NPTU1FTlRfTElLRV9URVhUICovXTogJ1VuZXhwZWN0ZWQgRU9GIGluIHNjcmlwdC4nLFxyXG4gICAgWzkgLyogRXJyb3JDb2Rlcy5FT0ZfSU5fVEFHICovXTogJ1VuZXhwZWN0ZWQgRU9GIGluIHRhZy4nLFxyXG4gICAgWzEwIC8qIEVycm9yQ29kZXMuSU5DT1JSRUNUTFlfQ0xPU0VEX0NPTU1FTlQgKi9dOiAnSW5jb3JyZWN0bHkgY2xvc2VkIGNvbW1lbnQuJyxcclxuICAgIFsxMSAvKiBFcnJvckNvZGVzLklOQ09SUkVDVExZX09QRU5FRF9DT01NRU5UICovXTogJ0luY29ycmVjdGx5IG9wZW5lZCBjb21tZW50LicsXHJcbiAgICBbMTIgLyogRXJyb3JDb2Rlcy5JTlZBTElEX0ZJUlNUX0NIQVJBQ1RFUl9PRl9UQUdfTkFNRSAqL106IFwiSWxsZWdhbCB0YWcgbmFtZS4gVXNlICcmbHQ7JyB0byBwcmludCAnPCcuXCIsXHJcbiAgICBbMTMgLyogRXJyb3JDb2Rlcy5NSVNTSU5HX0FUVFJJQlVURV9WQUxVRSAqL106ICdBdHRyaWJ1dGUgdmFsdWUgd2FzIGV4cGVjdGVkLicsXHJcbiAgICBbMTQgLyogRXJyb3JDb2Rlcy5NSVNTSU5HX0VORF9UQUdfTkFNRSAqL106ICdFbmQgdGFnIG5hbWUgd2FzIGV4cGVjdGVkLicsXHJcbiAgICBbMTUgLyogRXJyb3JDb2Rlcy5NSVNTSU5HX1dISVRFU1BBQ0VfQkVUV0VFTl9BVFRSSUJVVEVTICovXTogJ1doaXRlc3BhY2Ugd2FzIGV4cGVjdGVkLicsXHJcbiAgICBbMTYgLyogRXJyb3JDb2Rlcy5ORVNURURfQ09NTUVOVCAqL106IFwiVW5leHBlY3RlZCAnPCEtLScgaW4gY29tbWVudC5cIixcclxuICAgIFsxNyAvKiBFcnJvckNvZGVzLlVORVhQRUNURURfQ0hBUkFDVEVSX0lOX0FUVFJJQlVURV9OQU1FICovXTogJ0F0dHJpYnV0ZSBuYW1lIGNhbm5vdCBjb250YWluIFUrMDAyMiAoXCIpLCBVKzAwMjcgKFxcJyksIGFuZCBVKzAwM0MgKDwpLicsXHJcbiAgICBbMTggLyogRXJyb3JDb2Rlcy5VTkVYUEVDVEVEX0NIQVJBQ1RFUl9JTl9VTlFVT1RFRF9BVFRSSUJVVEVfVkFMVUUgKi9dOiAnVW5xdW90ZWQgYXR0cmlidXRlIHZhbHVlIGNhbm5vdCBjb250YWluIFUrMDAyMiAoXCIpLCBVKzAwMjcgKFxcJyksIFUrMDAzQyAoPCksIFUrMDAzRCAoPSksIGFuZCBVKzAwNjAgKGApLicsXHJcbiAgICBbMTkgLyogRXJyb3JDb2Rlcy5VTkVYUEVDVEVEX0VRVUFMU19TSUdOX0JFRk9SRV9BVFRSSUJVVEVfTkFNRSAqL106IFwiQXR0cmlidXRlIG5hbWUgY2Fubm90IHN0YXJ0IHdpdGggJz0nLlwiLFxyXG4gICAgWzIxIC8qIEVycm9yQ29kZXMuVU5FWFBFQ1RFRF9RVUVTVElPTl9NQVJLX0lOU1RFQURfT0ZfVEFHX05BTUUgKi9dOiBcIic8PycgaXMgYWxsb3dlZCBvbmx5IGluIFhNTCBjb250ZXh0LlwiLFxyXG4gICAgWzIwIC8qIEVycm9yQ29kZXMuVU5FWFBFQ1RFRF9OVUxMX0NIQVJBQ1RFUiAqL106IGBVbmV4cGVjdGVkIG51bGwgY2hhcmFjdGVyLmAsXHJcbiAgICBbMjIgLyogRXJyb3JDb2Rlcy5VTkVYUEVDVEVEX1NPTElEVVNfSU5fVEFHICovXTogXCJJbGxlZ2FsICcvJyBpbiB0YWdzLlwiLFxyXG4gICAgLy8gVnVlLXNwZWNpZmljIHBhcnNlIGVycm9yc1xyXG4gICAgWzIzIC8qIEVycm9yQ29kZXMuWF9JTlZBTElEX0VORF9UQUcgKi9dOiAnSW52YWxpZCBlbmQgdGFnLicsXHJcbiAgICBbMjQgLyogRXJyb3JDb2Rlcy5YX01JU1NJTkdfRU5EX1RBRyAqL106ICdFbGVtZW50IGlzIG1pc3NpbmcgZW5kIHRhZy4nLFxyXG4gICAgWzI1IC8qIEVycm9yQ29kZXMuWF9NSVNTSU5HX0lOVEVSUE9MQVRJT05fRU5EICovXTogJ0ludGVycG9sYXRpb24gZW5kIHNpZ24gd2FzIG5vdCBmb3VuZC4nLFxyXG4gICAgWzI3IC8qIEVycm9yQ29kZXMuWF9NSVNTSU5HX0RZTkFNSUNfRElSRUNUSVZFX0FSR1VNRU5UX0VORCAqL106ICdFbmQgYnJhY2tldCBmb3IgZHluYW1pYyBkaXJlY3RpdmUgYXJndW1lbnQgd2FzIG5vdCBmb3VuZC4gJyArXHJcbiAgICAgICAgJ05vdGUgdGhhdCBkeW5hbWljIGRpcmVjdGl2ZSBhcmd1bWVudCBjYW5ub3QgY29udGFpbiBzcGFjZXMuJyxcclxuICAgIFsyNiAvKiBFcnJvckNvZGVzLlhfTUlTU0lOR19ESVJFQ1RJVkVfTkFNRSAqL106ICdMZWdhbCBkaXJlY3RpdmUgbmFtZSB3YXMgZXhwZWN0ZWQuJyxcclxuICAgIC8vIHRyYW5zZm9ybSBlcnJvcnNcclxuICAgIFsyOCAvKiBFcnJvckNvZGVzLlhfVl9JRl9OT19FWFBSRVNTSU9OICovXTogYHYtaWYvdi1lbHNlLWlmIGlzIG1pc3NpbmcgZXhwcmVzc2lvbi5gLFxyXG4gICAgWzI5IC8qIEVycm9yQ29kZXMuWF9WX0lGX1NBTUVfS0VZICovXTogYHYtaWYvZWxzZSBicmFuY2hlcyBtdXN0IHVzZSB1bmlxdWUga2V5cy5gLFxyXG4gICAgWzMwIC8qIEVycm9yQ29kZXMuWF9WX0VMU0VfTk9fQURKQUNFTlRfSUYgKi9dOiBgdi1lbHNlL3YtZWxzZS1pZiBoYXMgbm8gYWRqYWNlbnQgdi1pZiBvciB2LWVsc2UtaWYuYCxcclxuICAgIFszMSAvKiBFcnJvckNvZGVzLlhfVl9GT1JfTk9fRVhQUkVTU0lPTiAqL106IGB2LWZvciBpcyBtaXNzaW5nIGV4cHJlc3Npb24uYCxcclxuICAgIFszMiAvKiBFcnJvckNvZGVzLlhfVl9GT1JfTUFMRk9STUVEX0VYUFJFU1NJT04gKi9dOiBgdi1mb3IgaGFzIGludmFsaWQgZXhwcmVzc2lvbi5gLFxyXG4gICAgWzMzIC8qIEVycm9yQ29kZXMuWF9WX0ZPUl9URU1QTEFURV9LRVlfUExBQ0VNRU5UICovXTogYDx0ZW1wbGF0ZSB2LWZvcj4ga2V5IHNob3VsZCBiZSBwbGFjZWQgb24gdGhlIDx0ZW1wbGF0ZT4gdGFnLmAsXHJcbiAgICBbMzQgLyogRXJyb3JDb2Rlcy5YX1ZfQklORF9OT19FWFBSRVNTSU9OICovXTogYHYtYmluZCBpcyBtaXNzaW5nIGV4cHJlc3Npb24uYCxcclxuICAgIFszNSAvKiBFcnJvckNvZGVzLlhfVl9PTl9OT19FWFBSRVNTSU9OICovXTogYHYtb24gaXMgbWlzc2luZyBleHByZXNzaW9uLmAsXHJcbiAgICBbMzYgLyogRXJyb3JDb2Rlcy5YX1ZfU0xPVF9VTkVYUEVDVEVEX0RJUkVDVElWRV9PTl9TTE9UX09VVExFVCAqL106IGBVbmV4cGVjdGVkIGN1c3RvbSBkaXJlY3RpdmUgb24gPHNsb3Q+IG91dGxldC5gLFxyXG4gICAgWzM3IC8qIEVycm9yQ29kZXMuWF9WX1NMT1RfTUlYRURfU0xPVF9VU0FHRSAqL106IGBNaXhlZCB2LXNsb3QgdXNhZ2Ugb24gYm90aCB0aGUgY29tcG9uZW50IGFuZCBuZXN0ZWQgPHRlbXBsYXRlPi5gICtcclxuICAgICAgICBgV2hlbiB0aGVyZSBhcmUgbXVsdGlwbGUgbmFtZWQgc2xvdHMsIGFsbCBzbG90cyBzaG91bGQgdXNlIDx0ZW1wbGF0ZT4gYCArXHJcbiAgICAgICAgYHN5bnRheCB0byBhdm9pZCBzY29wZSBhbWJpZ3VpdHkuYCxcclxuICAgIFszOCAvKiBFcnJvckNvZGVzLlhfVl9TTE9UX0RVUExJQ0FURV9TTE9UX05BTUVTICovXTogYER1cGxpY2F0ZSBzbG90IG5hbWVzIGZvdW5kLiBgLFxyXG4gICAgWzM5IC8qIEVycm9yQ29kZXMuWF9WX1NMT1RfRVhUUkFORU9VU19ERUZBVUxUX1NMT1RfQ0hJTERSRU4gKi9dOiBgRXh0cmFuZW91cyBjaGlsZHJlbiBmb3VuZCB3aGVuIGNvbXBvbmVudCBhbHJlYWR5IGhhcyBleHBsaWNpdGx5IG5hbWVkIGAgK1xyXG4gICAgICAgIGBkZWZhdWx0IHNsb3QuIFRoZXNlIGNoaWxkcmVuIHdpbGwgYmUgaWdub3JlZC5gLFxyXG4gICAgWzQwIC8qIEVycm9yQ29kZXMuWF9WX1NMT1RfTUlTUExBQ0VEICovXTogYHYtc2xvdCBjYW4gb25seSBiZSB1c2VkIG9uIGNvbXBvbmVudHMgb3IgPHRlbXBsYXRlPiB0YWdzLmAsXHJcbiAgICBbNDEgLyogRXJyb3JDb2Rlcy5YX1ZfTU9ERUxfTk9fRVhQUkVTU0lPTiAqL106IGB2LW1vZGVsIGlzIG1pc3NpbmcgZXhwcmVzc2lvbi5gLFxyXG4gICAgWzQyIC8qIEVycm9yQ29kZXMuWF9WX01PREVMX01BTEZPUk1FRF9FWFBSRVNTSU9OICovXTogYHYtbW9kZWwgdmFsdWUgbXVzdCBiZSBhIHZhbGlkIEphdmFTY3JpcHQgbWVtYmVyIGV4cHJlc3Npb24uYCxcclxuICAgIFs0MyAvKiBFcnJvckNvZGVzLlhfVl9NT0RFTF9PTl9TQ09QRV9WQVJJQUJMRSAqL106IGB2LW1vZGVsIGNhbm5vdCBiZSB1c2VkIG9uIHYtZm9yIG9yIHYtc2xvdCBzY29wZSB2YXJpYWJsZXMgYmVjYXVzZSB0aGV5IGFyZSBub3Qgd3JpdGFibGUuYCxcclxuICAgIFs0NCAvKiBFcnJvckNvZGVzLlhfSU5WQUxJRF9FWFBSRVNTSU9OICovXTogYEVycm9yIHBhcnNpbmcgSmF2YVNjcmlwdCBleHByZXNzaW9uOiBgLFxyXG4gICAgWzQ1IC8qIEVycm9yQ29kZXMuWF9LRUVQX0FMSVZFX0lOVkFMSURfQ0hJTERSRU4gKi9dOiBgPEtlZXBBbGl2ZT4gZXhwZWN0cyBleGFjdGx5IG9uZSBjaGlsZCBjb21wb25lbnQuYCxcclxuICAgIC8vIGdlbmVyaWMgZXJyb3JzXHJcbiAgICBbNDYgLyogRXJyb3JDb2Rlcy5YX1BSRUZJWF9JRF9OT1RfU1VQUE9SVEVEICovXTogYFwicHJlZml4SWRlbnRpZmllcnNcIiBvcHRpb24gaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGJ1aWxkIG9mIGNvbXBpbGVyLmAsXHJcbiAgICBbNDcgLyogRXJyb3JDb2Rlcy5YX01PRFVMRV9NT0RFX05PVF9TVVBQT1JURUQgKi9dOiBgRVMgbW9kdWxlIG1vZGUgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGJ1aWxkIG9mIGNvbXBpbGVyLmAsXHJcbiAgICBbNDggLyogRXJyb3JDb2Rlcy5YX0NBQ0hFX0hBTkRMRVJfTk9UX1NVUFBPUlRFRCAqL106IGBcImNhY2hlSGFuZGxlcnNcIiBvcHRpb24gaXMgb25seSBzdXBwb3J0ZWQgd2hlbiB0aGUgXCJwcmVmaXhJZGVudGlmaWVyc1wiIG9wdGlvbiBpcyBlbmFibGVkLmAsXHJcbiAgICBbNDkgLyogRXJyb3JDb2Rlcy5YX1NDT1BFX0lEX05PVF9TVVBQT1JURUQgKi9dOiBgXCJzY29wZUlkXCIgb3B0aW9uIGlzIG9ubHkgc3VwcG9ydGVkIGluIG1vZHVsZSBtb2RlLmAsXHJcbiAgICAvLyBqdXN0IHRvIGZ1bGZpbGwgdHlwZXNcclxuICAgIFs1MCAvKiBFcnJvckNvZGVzLl9fRVhURU5EX1BPSU5UX18gKi9dOiBgYFxyXG59O1xuXG5jb25zdCBGUkFHTUVOVCA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgRnJhZ21lbnRgIDogYGApO1xyXG5jb25zdCBURUxFUE9SVCA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgVGVsZXBvcnRgIDogYGApO1xyXG5jb25zdCBTVVNQRU5TRSA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgU3VzcGVuc2VgIDogYGApO1xyXG5jb25zdCBLRUVQX0FMSVZFID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBLZWVwQWxpdmVgIDogYGApO1xyXG5jb25zdCBCQVNFX1RSQU5TSVRJT04gPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYEJhc2VUcmFuc2l0aW9uYCA6IGBgKTtcclxuY29uc3QgT1BFTl9CTE9DSyA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgb3BlbkJsb2NrYCA6IGBgKTtcclxuY29uc3QgQ1JFQVRFX0JMT0NLID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBjcmVhdGVCbG9ja2AgOiBgYCk7XHJcbmNvbnN0IENSRUFURV9FTEVNRU5UX0JMT0NLID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBjcmVhdGVFbGVtZW50QmxvY2tgIDogYGApO1xyXG5jb25zdCBDUkVBVEVfVk5PREUgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYGNyZWF0ZVZOb2RlYCA6IGBgKTtcclxuY29uc3QgQ1JFQVRFX0VMRU1FTlRfVk5PREUgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYGNyZWF0ZUVsZW1lbnRWTm9kZWAgOiBgYCk7XHJcbmNvbnN0IENSRUFURV9DT01NRU5UID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBjcmVhdGVDb21tZW50Vk5vZGVgIDogYGApO1xyXG5jb25zdCBDUkVBVEVfVEVYVCA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgY3JlYXRlVGV4dFZOb2RlYCA6IGBgKTtcclxuY29uc3QgQ1JFQVRFX1NUQVRJQyA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgY3JlYXRlU3RhdGljVk5vZGVgIDogYGApO1xyXG5jb25zdCBSRVNPTFZFX0NPTVBPTkVOVCA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgcmVzb2x2ZUNvbXBvbmVudGAgOiBgYCk7XHJcbmNvbnN0IFJFU09MVkVfRFlOQU1JQ19DT01QT05FTlQgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHJlc29sdmVEeW5hbWljQ29tcG9uZW50YCA6IGBgKTtcclxuY29uc3QgUkVTT0xWRV9ESVJFQ1RJVkUgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHJlc29sdmVEaXJlY3RpdmVgIDogYGApO1xyXG5jb25zdCBSRVNPTFZFX0ZJTFRFUiA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgcmVzb2x2ZUZpbHRlcmAgOiBgYCk7XHJcbmNvbnN0IFdJVEhfRElSRUNUSVZFUyA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgd2l0aERpcmVjdGl2ZXNgIDogYGApO1xyXG5jb25zdCBSRU5ERVJfTElTVCA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgcmVuZGVyTGlzdGAgOiBgYCk7XHJcbmNvbnN0IFJFTkRFUl9TTE9UID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGByZW5kZXJTbG90YCA6IGBgKTtcclxuY29uc3QgQ1JFQVRFX1NMT1RTID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBjcmVhdGVTbG90c2AgOiBgYCk7XHJcbmNvbnN0IFRPX0RJU1BMQVlfU1RSSU5HID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGB0b0Rpc3BsYXlTdHJpbmdgIDogYGApO1xyXG5jb25zdCBNRVJHRV9QUk9QUyA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgbWVyZ2VQcm9wc2AgOiBgYCk7XHJcbmNvbnN0IE5PUk1BTElaRV9DTEFTUyA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgbm9ybWFsaXplQ2xhc3NgIDogYGApO1xyXG5jb25zdCBOT1JNQUxJWkVfU1RZTEUgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYG5vcm1hbGl6ZVN0eWxlYCA6IGBgKTtcclxuY29uc3QgTk9STUFMSVpFX1BST1BTID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBub3JtYWxpemVQcm9wc2AgOiBgYCk7XHJcbmNvbnN0IEdVQVJEX1JFQUNUSVZFX1BST1BTID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBndWFyZFJlYWN0aXZlUHJvcHNgIDogYGApO1xyXG5jb25zdCBUT19IQU5ETEVSUyA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgdG9IYW5kbGVyc2AgOiBgYCk7XHJcbmNvbnN0IENBTUVMSVpFID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBjYW1lbGl6ZWAgOiBgYCk7XHJcbmNvbnN0IENBUElUQUxJWkUgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYGNhcGl0YWxpemVgIDogYGApO1xyXG5jb25zdCBUT19IQU5ETEVSX0tFWSA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgdG9IYW5kbGVyS2V5YCA6IGBgKTtcclxuY29uc3QgU0VUX0JMT0NLX1RSQUNLSU5HID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBzZXRCbG9ja1RyYWNraW5nYCA6IGBgKTtcclxuY29uc3QgUFVTSF9TQ09QRV9JRCA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgcHVzaFNjb3BlSWRgIDogYGApO1xyXG5jb25zdCBQT1BfU0NPUEVfSUQgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHBvcFNjb3BlSWRgIDogYGApO1xyXG5jb25zdCBXSVRIX0NUWCA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgd2l0aEN0eGAgOiBgYCk7XHJcbmNvbnN0IFVOUkVGID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGB1bnJlZmAgOiBgYCk7XHJcbmNvbnN0IElTX1JFRiA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgaXNSZWZgIDogYGApO1xyXG5jb25zdCBXSVRIX01FTU8gPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHdpdGhNZW1vYCA6IGBgKTtcclxuY29uc3QgSVNfTUVNT19TQU1FID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBpc01lbW9TYW1lYCA6IGBgKTtcclxuLy8gTmFtZSBtYXBwaW5nIGZvciBydW50aW1lIGhlbHBlcnMgdGhhdCBuZWVkIHRvIGJlIGltcG9ydGVkIGZyb20gJ3Z1ZScgaW5cclxuLy8gZ2VuZXJhdGVkIGNvZGUuIE1ha2Ugc3VyZSB0aGVzZSBhcmUgY29ycmVjdGx5IGV4cG9ydGVkIGluIHRoZSBydW50aW1lIVxyXG4vLyBVc2luZyBgYW55YCBoZXJlIGJlY2F1c2UgVFMgZG9lc24ndCBhbGxvdyBzeW1ib2xzIGFzIGluZGV4IHR5cGUuXHJcbmNvbnN0IGhlbHBlck5hbWVNYXAgPSB7XHJcbiAgICBbRlJBR01FTlRdOiBgRnJhZ21lbnRgLFxyXG4gICAgW1RFTEVQT1JUXTogYFRlbGVwb3J0YCxcclxuICAgIFtTVVNQRU5TRV06IGBTdXNwZW5zZWAsXHJcbiAgICBbS0VFUF9BTElWRV06IGBLZWVwQWxpdmVgLFxyXG4gICAgW0JBU0VfVFJBTlNJVElPTl06IGBCYXNlVHJhbnNpdGlvbmAsXHJcbiAgICBbT1BFTl9CTE9DS106IGBvcGVuQmxvY2tgLFxyXG4gICAgW0NSRUFURV9CTE9DS106IGBjcmVhdGVCbG9ja2AsXHJcbiAgICBbQ1JFQVRFX0VMRU1FTlRfQkxPQ0tdOiBgY3JlYXRlRWxlbWVudEJsb2NrYCxcclxuICAgIFtDUkVBVEVfVk5PREVdOiBgY3JlYXRlVk5vZGVgLFxyXG4gICAgW0NSRUFURV9FTEVNRU5UX1ZOT0RFXTogYGNyZWF0ZUVsZW1lbnRWTm9kZWAsXHJcbiAgICBbQ1JFQVRFX0NPTU1FTlRdOiBgY3JlYXRlQ29tbWVudFZOb2RlYCxcclxuICAgIFtDUkVBVEVfVEVYVF06IGBjcmVhdGVUZXh0Vk5vZGVgLFxyXG4gICAgW0NSRUFURV9TVEFUSUNdOiBgY3JlYXRlU3RhdGljVk5vZGVgLFxyXG4gICAgW1JFU09MVkVfQ09NUE9ORU5UXTogYHJlc29sdmVDb21wb25lbnRgLFxyXG4gICAgW1JFU09MVkVfRFlOQU1JQ19DT01QT05FTlRdOiBgcmVzb2x2ZUR5bmFtaWNDb21wb25lbnRgLFxyXG4gICAgW1JFU09MVkVfRElSRUNUSVZFXTogYHJlc29sdmVEaXJlY3RpdmVgLFxyXG4gICAgW1JFU09MVkVfRklMVEVSXTogYHJlc29sdmVGaWx0ZXJgLFxyXG4gICAgW1dJVEhfRElSRUNUSVZFU106IGB3aXRoRGlyZWN0aXZlc2AsXHJcbiAgICBbUkVOREVSX0xJU1RdOiBgcmVuZGVyTGlzdGAsXHJcbiAgICBbUkVOREVSX1NMT1RdOiBgcmVuZGVyU2xvdGAsXHJcbiAgICBbQ1JFQVRFX1NMT1RTXTogYGNyZWF0ZVNsb3RzYCxcclxuICAgIFtUT19ESVNQTEFZX1NUUklOR106IGB0b0Rpc3BsYXlTdHJpbmdgLFxyXG4gICAgW01FUkdFX1BST1BTXTogYG1lcmdlUHJvcHNgLFxyXG4gICAgW05PUk1BTElaRV9DTEFTU106IGBub3JtYWxpemVDbGFzc2AsXHJcbiAgICBbTk9STUFMSVpFX1NUWUxFXTogYG5vcm1hbGl6ZVN0eWxlYCxcclxuICAgIFtOT1JNQUxJWkVfUFJPUFNdOiBgbm9ybWFsaXplUHJvcHNgLFxyXG4gICAgW0dVQVJEX1JFQUNUSVZFX1BST1BTXTogYGd1YXJkUmVhY3RpdmVQcm9wc2AsXHJcbiAgICBbVE9fSEFORExFUlNdOiBgdG9IYW5kbGVyc2AsXHJcbiAgICBbQ0FNRUxJWkVdOiBgY2FtZWxpemVgLFxyXG4gICAgW0NBUElUQUxJWkVdOiBgY2FwaXRhbGl6ZWAsXHJcbiAgICBbVE9fSEFORExFUl9LRVldOiBgdG9IYW5kbGVyS2V5YCxcclxuICAgIFtTRVRfQkxPQ0tfVFJBQ0tJTkddOiBgc2V0QmxvY2tUcmFja2luZ2AsXHJcbiAgICBbUFVTSF9TQ09QRV9JRF06IGBwdXNoU2NvcGVJZGAsXHJcbiAgICBbUE9QX1NDT1BFX0lEXTogYHBvcFNjb3BlSWRgLFxyXG4gICAgW1dJVEhfQ1RYXTogYHdpdGhDdHhgLFxyXG4gICAgW1VOUkVGXTogYHVucmVmYCxcclxuICAgIFtJU19SRUZdOiBgaXNSZWZgLFxyXG4gICAgW1dJVEhfTUVNT106IGB3aXRoTWVtb2AsXHJcbiAgICBbSVNfTUVNT19TQU1FXTogYGlzTWVtb1NhbWVgXHJcbn07XHJcbmZ1bmN0aW9uIHJlZ2lzdGVyUnVudGltZUhlbHBlcnMoaGVscGVycykge1xyXG4gICAgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhoZWxwZXJzKS5mb3JFYWNoKHMgPT4ge1xyXG4gICAgICAgIGhlbHBlck5hbWVNYXBbc10gPSBoZWxwZXJzW3NdO1xyXG4gICAgfSk7XHJcbn1cblxuLy8gQVNUIFV0aWxpdGllcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuLy8gU29tZSBleHByZXNzaW9ucywgZS5nLiBzZXF1ZW5jZSBhbmQgY29uZGl0aW9uYWwgZXhwcmVzc2lvbnMsIGFyZSBuZXZlclxyXG4vLyBhc3NvY2lhdGVkIHdpdGggdGVtcGxhdGUgbm9kZXMsIHNvIHRoZWlyIHNvdXJjZSBsb2NhdGlvbnMgYXJlIGp1c3QgYSBzdHViLlxyXG4vLyBDb250YWluZXIgdHlwZXMgbGlrZSBDb21wb3VuZEV4cHJlc3Npb24gYWxzbyBkb24ndCBuZWVkIGEgcmVhbCBsb2NhdGlvbi5cclxuY29uc3QgbG9jU3R1YiA9IHtcclxuICAgIHNvdXJjZTogJycsXHJcbiAgICBzdGFydDogeyBsaW5lOiAxLCBjb2x1bW46IDEsIG9mZnNldDogMCB9LFxyXG4gICAgZW5kOiB7IGxpbmU6IDEsIGNvbHVtbjogMSwgb2Zmc2V0OiAwIH1cclxufTtcclxuZnVuY3Rpb24gY3JlYXRlUm9vdChjaGlsZHJlbiwgbG9jID0gbG9jU3R1Yikge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAwIC8qIE5vZGVUeXBlcy5ST09UICovLFxyXG4gICAgICAgIGNoaWxkcmVuLFxyXG4gICAgICAgIGhlbHBlcnM6IFtdLFxyXG4gICAgICAgIGNvbXBvbmVudHM6IFtdLFxyXG4gICAgICAgIGRpcmVjdGl2ZXM6IFtdLFxyXG4gICAgICAgIGhvaXN0czogW10sXHJcbiAgICAgICAgaW1wb3J0czogW10sXHJcbiAgICAgICAgY2FjaGVkOiAwLFxyXG4gICAgICAgIHRlbXBzOiAwLFxyXG4gICAgICAgIGNvZGVnZW5Ob2RlOiB1bmRlZmluZWQsXHJcbiAgICAgICAgbG9jXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZVZOb2RlQ2FsbChjb250ZXh0LCB0YWcsIHByb3BzLCBjaGlsZHJlbiwgcGF0Y2hGbGFnLCBkeW5hbWljUHJvcHMsIGRpcmVjdGl2ZXMsIGlzQmxvY2sgPSBmYWxzZSwgZGlzYWJsZVRyYWNraW5nID0gZmFsc2UsIGlzQ29tcG9uZW50ID0gZmFsc2UsIGxvYyA9IGxvY1N0dWIpIHtcclxuICAgIGlmIChjb250ZXh0KSB7XHJcbiAgICAgICAgaWYgKGlzQmxvY2spIHtcclxuICAgICAgICAgICAgY29udGV4dC5oZWxwZXIoT1BFTl9CTE9DSyk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuaGVscGVyKGdldFZOb2RlQmxvY2tIZWxwZXIoY29udGV4dC5pblNTUiwgaXNDb21wb25lbnQpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQuaGVscGVyKGdldFZOb2RlSGVscGVyKGNvbnRleHQuaW5TU1IsIGlzQ29tcG9uZW50KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkaXJlY3RpdmVzKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQuaGVscGVyKFdJVEhfRElSRUNUSVZFUyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAxMyAvKiBOb2RlVHlwZXMuVk5PREVfQ0FMTCAqLyxcclxuICAgICAgICB0YWcsXHJcbiAgICAgICAgcHJvcHMsXHJcbiAgICAgICAgY2hpbGRyZW4sXHJcbiAgICAgICAgcGF0Y2hGbGFnLFxyXG4gICAgICAgIGR5bmFtaWNQcm9wcyxcclxuICAgICAgICBkaXJlY3RpdmVzLFxyXG4gICAgICAgIGlzQmxvY2ssXHJcbiAgICAgICAgZGlzYWJsZVRyYWNraW5nLFxyXG4gICAgICAgIGlzQ29tcG9uZW50LFxyXG4gICAgICAgIGxvY1xyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVBcnJheUV4cHJlc3Npb24oZWxlbWVudHMsIGxvYyA9IGxvY1N0dWIpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogMTcgLyogTm9kZVR5cGVzLkpTX0FSUkFZX0VYUFJFU1NJT04gKi8sXHJcbiAgICAgICAgbG9jLFxyXG4gICAgICAgIGVsZW1lbnRzXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZU9iamVjdEV4cHJlc3Npb24ocHJvcGVydGllcywgbG9jID0gbG9jU3R1Yikge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAxNSAvKiBOb2RlVHlwZXMuSlNfT0JKRUNUX0VYUFJFU1NJT04gKi8sXHJcbiAgICAgICAgbG9jLFxyXG4gICAgICAgIHByb3BlcnRpZXNcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlT2JqZWN0UHJvcGVydHkoa2V5LCB2YWx1ZSkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAxNiAvKiBOb2RlVHlwZXMuSlNfUFJPUEVSVFkgKi8sXHJcbiAgICAgICAgbG9jOiBsb2NTdHViLFxyXG4gICAgICAgIGtleTogaXNTdHJpbmcoa2V5KSA/IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oa2V5LCB0cnVlKSA6IGtleSxcclxuICAgICAgICB2YWx1ZVxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGNvbnRlbnQsIGlzU3RhdGljID0gZmFsc2UsIGxvYyA9IGxvY1N0dWIsIGNvbnN0VHlwZSA9IDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi8pIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8sXHJcbiAgICAgICAgbG9jLFxyXG4gICAgICAgIGNvbnRlbnQsXHJcbiAgICAgICAgaXNTdGF0aWMsXHJcbiAgICAgICAgY29uc3RUeXBlOiBpc1N0YXRpYyA/IDMgLyogQ29uc3RhbnRUeXBlcy5DQU5fU1RSSU5HSUZZICovIDogY29uc3RUeXBlXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUludGVycG9sYXRpb24oY29udGVudCwgbG9jKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDUgLyogTm9kZVR5cGVzLklOVEVSUE9MQVRJT04gKi8sXHJcbiAgICAgICAgbG9jLFxyXG4gICAgICAgIGNvbnRlbnQ6IGlzU3RyaW5nKGNvbnRlbnQpXHJcbiAgICAgICAgICAgID8gY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihjb250ZW50LCBmYWxzZSwgbG9jKVxyXG4gICAgICAgICAgICA6IGNvbnRlbnRcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlQ29tcG91bmRFeHByZXNzaW9uKGNoaWxkcmVuLCBsb2MgPSBsb2NTdHViKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDggLyogTm9kZVR5cGVzLkNPTVBPVU5EX0VYUFJFU1NJT04gKi8sXHJcbiAgICAgICAgbG9jLFxyXG4gICAgICAgIGNoaWxkcmVuXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNhbGxlZSwgYXJncyA9IFtdLCBsb2MgPSBsb2NTdHViKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDE0IC8qIE5vZGVUeXBlcy5KU19DQUxMX0VYUFJFU1NJT04gKi8sXHJcbiAgICAgICAgbG9jLFxyXG4gICAgICAgIGNhbGxlZSxcclxuICAgICAgICBhcmd1bWVudHM6IGFyZ3NcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uKHBhcmFtcywgcmV0dXJucyA9IHVuZGVmaW5lZCwgbmV3bGluZSA9IGZhbHNlLCBpc1Nsb3QgPSBmYWxzZSwgbG9jID0gbG9jU3R1Yikge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAxOCAvKiBOb2RlVHlwZXMuSlNfRlVOQ1RJT05fRVhQUkVTU0lPTiAqLyxcclxuICAgICAgICBwYXJhbXMsXHJcbiAgICAgICAgcmV0dXJucyxcclxuICAgICAgICBuZXdsaW5lLFxyXG4gICAgICAgIGlzU2xvdCxcclxuICAgICAgICBsb2NcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlQ29uZGl0aW9uYWxFeHByZXNzaW9uKHRlc3QsIGNvbnNlcXVlbnQsIGFsdGVybmF0ZSwgbmV3bGluZSA9IHRydWUpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogMTkgLyogTm9kZVR5cGVzLkpTX0NPTkRJVElPTkFMX0VYUFJFU1NJT04gKi8sXHJcbiAgICAgICAgdGVzdCxcclxuICAgICAgICBjb25zZXF1ZW50LFxyXG4gICAgICAgIGFsdGVybmF0ZSxcclxuICAgICAgICBuZXdsaW5lLFxyXG4gICAgICAgIGxvYzogbG9jU3R1YlxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVDYWNoZUV4cHJlc3Npb24oaW5kZXgsIHZhbHVlLCBpc1ZOb2RlID0gZmFsc2UpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogMjAgLyogTm9kZVR5cGVzLkpTX0NBQ0hFX0VYUFJFU1NJT04gKi8sXHJcbiAgICAgICAgaW5kZXgsXHJcbiAgICAgICAgdmFsdWUsXHJcbiAgICAgICAgaXNWTm9kZSxcclxuICAgICAgICBsb2M6IGxvY1N0dWJcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlQmxvY2tTdGF0ZW1lbnQoYm9keSkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAyMSAvKiBOb2RlVHlwZXMuSlNfQkxPQ0tfU1RBVEVNRU5UICovLFxyXG4gICAgICAgIGJvZHksXHJcbiAgICAgICAgbG9jOiBsb2NTdHViXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZVRlbXBsYXRlTGl0ZXJhbChlbGVtZW50cykge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAyMiAvKiBOb2RlVHlwZXMuSlNfVEVNUExBVEVfTElURVJBTCAqLyxcclxuICAgICAgICBlbGVtZW50cyxcclxuICAgICAgICBsb2M6IGxvY1N0dWJcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlSWZTdGF0ZW1lbnQodGVzdCwgY29uc2VxdWVudCwgYWx0ZXJuYXRlKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDIzIC8qIE5vZGVUeXBlcy5KU19JRl9TVEFURU1FTlQgKi8sXHJcbiAgICAgICAgdGVzdCxcclxuICAgICAgICBjb25zZXF1ZW50LFxyXG4gICAgICAgIGFsdGVybmF0ZSxcclxuICAgICAgICBsb2M6IGxvY1N0dWJcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlQXNzaWdubWVudEV4cHJlc3Npb24obGVmdCwgcmlnaHQpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogMjQgLyogTm9kZVR5cGVzLkpTX0FTU0lHTk1FTlRfRVhQUkVTU0lPTiAqLyxcclxuICAgICAgICBsZWZ0LFxyXG4gICAgICAgIHJpZ2h0LFxyXG4gICAgICAgIGxvYzogbG9jU3R1YlxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVTZXF1ZW5jZUV4cHJlc3Npb24oZXhwcmVzc2lvbnMpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogMjUgLyogTm9kZVR5cGVzLkpTX1NFUVVFTkNFX0VYUFJFU1NJT04gKi8sXHJcbiAgICAgICAgZXhwcmVzc2lvbnMsXHJcbiAgICAgICAgbG9jOiBsb2NTdHViXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZVJldHVyblN0YXRlbWVudChyZXR1cm5zKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDI2IC8qIE5vZGVUeXBlcy5KU19SRVRVUk5fU1RBVEVNRU5UICovLFxyXG4gICAgICAgIHJldHVybnMsXHJcbiAgICAgICAgbG9jOiBsb2NTdHViXHJcbiAgICB9O1xyXG59XG5cbmNvbnN0IGlzU3RhdGljRXhwID0gKHApID0+IHAudHlwZSA9PT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8gJiYgcC5pc1N0YXRpYztcclxuY29uc3QgaXNCdWlsdEluVHlwZSA9ICh0YWcsIGV4cGVjdGVkKSA9PiB0YWcgPT09IGV4cGVjdGVkIHx8IHRhZyA9PT0gaHlwaGVuYXRlKGV4cGVjdGVkKTtcclxuZnVuY3Rpb24gaXNDb3JlQ29tcG9uZW50KHRhZykge1xyXG4gICAgaWYgKGlzQnVpbHRJblR5cGUodGFnLCAnVGVsZXBvcnQnKSkge1xyXG4gICAgICAgIHJldHVybiBURUxFUE9SVDtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzQnVpbHRJblR5cGUodGFnLCAnU3VzcGVuc2UnKSkge1xyXG4gICAgICAgIHJldHVybiBTVVNQRU5TRTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzQnVpbHRJblR5cGUodGFnLCAnS2VlcEFsaXZlJykpIHtcclxuICAgICAgICByZXR1cm4gS0VFUF9BTElWRTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzQnVpbHRJblR5cGUodGFnLCAnQmFzZVRyYW5zaXRpb24nKSkge1xyXG4gICAgICAgIHJldHVybiBCQVNFX1RSQU5TSVRJT047XHJcbiAgICB9XHJcbn1cclxuY29uc3Qgbm9uSWRlbnRpZmllclJFID0gL15cXGR8W15cXCRcXHddLztcclxuY29uc3QgaXNTaW1wbGVJZGVudGlmaWVyID0gKG5hbWUpID0+ICFub25JZGVudGlmaWVyUkUudGVzdChuYW1lKTtcclxuY29uc3QgdmFsaWRGaXJzdElkZW50Q2hhclJFID0gL1tBLVphLXpfJFxceEEwLVxcdUZGRkZdLztcclxuY29uc3QgdmFsaWRJZGVudENoYXJSRSA9IC9bXFwuXFw/XFx3JFxceEEwLVxcdUZGRkZdLztcclxuY29uc3Qgd2hpdGVzcGFjZVJFID0gL1xccytbLltdXFxzKnxcXHMqWy5bXVxccysvZztcclxuLyoqXHJcbiAqIFNpbXBsZSBsZXhlciB0byBjaGVjayBpZiBhbiBleHByZXNzaW9uIGlzIGEgbWVtYmVyIGV4cHJlc3Npb24uIFRoaXMgaXNcclxuICogbGF4IGFuZCBvbmx5IGNoZWNrcyB2YWxpZGl0eSBhdCB0aGUgcm9vdCBsZXZlbCAoaS5lLiBkb2VzIG5vdCB2YWxpZGF0ZSBleHBzXHJcbiAqIGluc2lkZSBzcXVhcmUgYnJhY2tldHMpLCBidXQgaXQncyBvayBzaW5jZSB0aGVzZSBhcmUgb25seSB1c2VkIG9uIHRlbXBsYXRlXHJcbiAqIGV4cHJlc3Npb25zIGFuZCBmYWxzZSBwb3NpdGl2ZXMgYXJlIGludmFsaWQgZXhwcmVzc2lvbnMgaW4gdGhlIGZpcnN0IHBsYWNlLlxyXG4gKi9cclxuY29uc3QgaXNNZW1iZXJFeHByZXNzaW9uQnJvd3NlciA9IChwYXRoKSA9PiB7XHJcbiAgICAvLyByZW1vdmUgd2hpdGVzcGFjZXMgYXJvdW5kIC4gb3IgWyBmaXJzdFxyXG4gICAgcGF0aCA9IHBhdGgudHJpbSgpLnJlcGxhY2Uod2hpdGVzcGFjZVJFLCBzID0+IHMudHJpbSgpKTtcclxuICAgIGxldCBzdGF0ZSA9IDAgLyogTWVtYmVyRXhwTGV4U3RhdGUuaW5NZW1iZXJFeHAgKi87XHJcbiAgICBsZXQgc3RhdGVTdGFjayA9IFtdO1xyXG4gICAgbGV0IGN1cnJlbnRPcGVuQnJhY2tldENvdW50ID0gMDtcclxuICAgIGxldCBjdXJyZW50T3BlblBhcmVuc0NvdW50ID0gMDtcclxuICAgIGxldCBjdXJyZW50U3RyaW5nVHlwZSA9IG51bGw7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhdGgubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBjaGFyID0gcGF0aC5jaGFyQXQoaSk7XHJcbiAgICAgICAgc3dpdGNoIChzdGF0ZSkge1xyXG4gICAgICAgICAgICBjYXNlIDAgLyogTWVtYmVyRXhwTGV4U3RhdGUuaW5NZW1iZXJFeHAgKi86XHJcbiAgICAgICAgICAgICAgICBpZiAoY2hhciA9PT0gJ1snKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhdGVTdGFjay5wdXNoKHN0YXRlKTtcclxuICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IDEgLyogTWVtYmVyRXhwTGV4U3RhdGUuaW5CcmFja2V0cyAqLztcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50T3BlbkJyYWNrZXRDb3VudCsrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hhciA9PT0gJygnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhdGVTdGFjay5wdXNoKHN0YXRlKTtcclxuICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IDIgLyogTWVtYmVyRXhwTGV4U3RhdGUuaW5QYXJlbnMgKi87XHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudE9wZW5QYXJlbnNDb3VudCsrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoIShpID09PSAwID8gdmFsaWRGaXJzdElkZW50Q2hhclJFIDogdmFsaWRJZGVudENoYXJSRSkudGVzdChjaGFyKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDEgLyogTWVtYmVyRXhwTGV4U3RhdGUuaW5CcmFja2V0cyAqLzpcclxuICAgICAgICAgICAgICAgIGlmIChjaGFyID09PSBgJ2AgfHwgY2hhciA9PT0gYFwiYCB8fCBjaGFyID09PSAnYCcpIHtcclxuICAgICAgICAgICAgICAgICAgICBzdGF0ZVN0YWNrLnB1c2goc3RhdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gMyAvKiBNZW1iZXJFeHBMZXhTdGF0ZS5pblN0cmluZyAqLztcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RyaW5nVHlwZSA9IGNoYXI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChjaGFyID09PSBgW2ApIHtcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50T3BlbkJyYWNrZXRDb3VudCsrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hhciA9PT0gYF1gKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEtLWN1cnJlbnRPcGVuQnJhY2tldENvdW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gc3RhdGVTdGFjay5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAyIC8qIE1lbWJlckV4cExleFN0YXRlLmluUGFyZW5zICovOlxyXG4gICAgICAgICAgICAgICAgaWYgKGNoYXIgPT09IGAnYCB8fCBjaGFyID09PSBgXCJgIHx8IGNoYXIgPT09ICdgJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlU3RhY2sucHVzaChzdGF0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSAzIC8qIE1lbWJlckV4cExleFN0YXRlLmluU3RyaW5nICovO1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdHJpbmdUeXBlID0gY2hhcjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoYXIgPT09IGAoYCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRPcGVuUGFyZW5zQ291bnQrKztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoYXIgPT09IGApYCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBleHAgZW5kcyBhcyBhIGNhbGwgdGhlbiBpdCBzaG91bGQgbm90IGJlIGNvbnNpZGVyZWQgdmFsaWRcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gcGF0aC5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEtLWN1cnJlbnRPcGVuUGFyZW5zQ291bnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBzdGF0ZVN0YWNrLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDMgLyogTWVtYmVyRXhwTGV4U3RhdGUuaW5TdHJpbmcgKi86XHJcbiAgICAgICAgICAgICAgICBpZiAoY2hhciA9PT0gY3VycmVudFN0cmluZ1R5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IHN0YXRlU3RhY2sucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0cmluZ1R5cGUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuICFjdXJyZW50T3BlbkJyYWNrZXRDb3VudCAmJiAhY3VycmVudE9wZW5QYXJlbnNDb3VudDtcclxufTtcclxuY29uc3QgaXNNZW1iZXJFeHByZXNzaW9uTm9kZSA9IE5PT1BcclxuICAgIDtcclxuY29uc3QgaXNNZW1iZXJFeHByZXNzaW9uID0gaXNNZW1iZXJFeHByZXNzaW9uQnJvd3NlclxyXG4gICAgO1xyXG5mdW5jdGlvbiBnZXRJbm5lclJhbmdlKGxvYywgb2Zmc2V0LCBsZW5ndGgpIHtcclxuICAgIGNvbnN0IHNvdXJjZSA9IGxvYy5zb3VyY2Uuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBsZW5ndGgpO1xyXG4gICAgY29uc3QgbmV3TG9jID0ge1xyXG4gICAgICAgIHNvdXJjZSxcclxuICAgICAgICBzdGFydDogYWR2YW5jZVBvc2l0aW9uV2l0aENsb25lKGxvYy5zdGFydCwgbG9jLnNvdXJjZSwgb2Zmc2V0KSxcclxuICAgICAgICBlbmQ6IGxvYy5lbmRcclxuICAgIH07XHJcbiAgICBpZiAobGVuZ3RoICE9IG51bGwpIHtcclxuICAgICAgICBuZXdMb2MuZW5kID0gYWR2YW5jZVBvc2l0aW9uV2l0aENsb25lKGxvYy5zdGFydCwgbG9jLnNvdXJjZSwgb2Zmc2V0ICsgbGVuZ3RoKTtcclxuICAgIH1cclxuICAgIHJldHVybiBuZXdMb2M7XHJcbn1cclxuZnVuY3Rpb24gYWR2YW5jZVBvc2l0aW9uV2l0aENsb25lKHBvcywgc291cmNlLCBudW1iZXJPZkNoYXJhY3RlcnMgPSBzb3VyY2UubGVuZ3RoKSB7XHJcbiAgICByZXR1cm4gYWR2YW5jZVBvc2l0aW9uV2l0aE11dGF0aW9uKGV4dGVuZCh7fSwgcG9zKSwgc291cmNlLCBudW1iZXJPZkNoYXJhY3RlcnMpO1xyXG59XHJcbi8vIGFkdmFuY2UgYnkgbXV0YXRpb24gd2l0aG91dCBjbG9uaW5nIChmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyksIHNpbmNlIHRoaXNcclxuLy8gZ2V0cyBjYWxsZWQgYSBsb3QgaW4gdGhlIHBhcnNlclxyXG5mdW5jdGlvbiBhZHZhbmNlUG9zaXRpb25XaXRoTXV0YXRpb24ocG9zLCBzb3VyY2UsIG51bWJlck9mQ2hhcmFjdGVycyA9IHNvdXJjZS5sZW5ndGgpIHtcclxuICAgIGxldCBsaW5lc0NvdW50ID0gMDtcclxuICAgIGxldCBsYXN0TmV3TGluZVBvcyA9IC0xO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1iZXJPZkNoYXJhY3RlcnM7IGkrKykge1xyXG4gICAgICAgIGlmIChzb3VyY2UuY2hhckNvZGVBdChpKSA9PT0gMTAgLyogbmV3bGluZSBjaGFyIGNvZGUgKi8pIHtcclxuICAgICAgICAgICAgbGluZXNDb3VudCsrO1xyXG4gICAgICAgICAgICBsYXN0TmV3TGluZVBvcyA9IGk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcG9zLm9mZnNldCArPSBudW1iZXJPZkNoYXJhY3RlcnM7XHJcbiAgICBwb3MubGluZSArPSBsaW5lc0NvdW50O1xyXG4gICAgcG9zLmNvbHVtbiA9XHJcbiAgICAgICAgbGFzdE5ld0xpbmVQb3MgPT09IC0xXHJcbiAgICAgICAgICAgID8gcG9zLmNvbHVtbiArIG51bWJlck9mQ2hhcmFjdGVyc1xyXG4gICAgICAgICAgICA6IG51bWJlck9mQ2hhcmFjdGVycyAtIGxhc3ROZXdMaW5lUG9zO1xyXG4gICAgcmV0dXJuIHBvcztcclxufVxyXG5mdW5jdGlvbiBhc3NlcnQoY29uZGl0aW9uLCBtc2cpIHtcclxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xyXG4gICAgaWYgKCFjb25kaXRpb24pIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnIHx8IGB1bmV4cGVjdGVkIGNvbXBpbGVyIGNvbmRpdGlvbmApO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGZpbmREaXIobm9kZSwgbmFtZSwgYWxsb3dFbXB0eSA9IGZhbHNlKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUucHJvcHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBwID0gbm9kZS5wcm9wc1tpXTtcclxuICAgICAgICBpZiAocC50eXBlID09PSA3IC8qIE5vZGVUeXBlcy5ESVJFQ1RJVkUgKi8gJiZcclxuICAgICAgICAgICAgKGFsbG93RW1wdHkgfHwgcC5leHApICYmXHJcbiAgICAgICAgICAgIChpc1N0cmluZyhuYW1lKSA/IHAubmFtZSA9PT0gbmFtZSA6IG5hbWUudGVzdChwLm5hbWUpKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gcDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZmluZFByb3Aobm9kZSwgbmFtZSwgZHluYW1pY09ubHkgPSBmYWxzZSwgYWxsb3dFbXB0eSA9IGZhbHNlKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUucHJvcHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBwID0gbm9kZS5wcm9wc1tpXTtcclxuICAgICAgICBpZiAocC50eXBlID09PSA2IC8qIE5vZGVUeXBlcy5BVFRSSUJVVEUgKi8pIHtcclxuICAgICAgICAgICAgaWYgKGR5bmFtaWNPbmx5KVxyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmIChwLm5hbWUgPT09IG5hbWUgJiYgKHAudmFsdWUgfHwgYWxsb3dFbXB0eSkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHAubmFtZSA9PT0gJ2JpbmQnICYmXHJcbiAgICAgICAgICAgIChwLmV4cCB8fCBhbGxvd0VtcHR5KSAmJlxyXG4gICAgICAgICAgICBpc1N0YXRpY0FyZ09mKHAuYXJnLCBuYW1lKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gcDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gaXNTdGF0aWNBcmdPZihhcmcsIG5hbWUpIHtcclxuICAgIHJldHVybiAhIShhcmcgJiYgaXNTdGF0aWNFeHAoYXJnKSAmJiBhcmcuY29udGVudCA9PT0gbmFtZSk7XHJcbn1cclxuZnVuY3Rpb24gaGFzRHluYW1pY0tleVZCaW5kKG5vZGUpIHtcclxuICAgIHJldHVybiBub2RlLnByb3BzLnNvbWUocCA9PiBwLnR5cGUgPT09IDcgLyogTm9kZVR5cGVzLkRJUkVDVElWRSAqLyAmJlxyXG4gICAgICAgIHAubmFtZSA9PT0gJ2JpbmQnICYmXHJcbiAgICAgICAgKCFwLmFyZyB8fCAvLyB2LWJpbmQ9XCJvYmpcIlxyXG4gICAgICAgICAgICBwLmFyZy50eXBlICE9PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLyB8fCAvLyB2LWJpbmQ6W19jdHguZm9vXVxyXG4gICAgICAgICAgICAhcC5hcmcuaXNTdGF0aWMpIC8vIHYtYmluZDpbZm9vXVxyXG4gICAgKTtcclxufVxyXG5mdW5jdGlvbiBpc1RleHQobm9kZSkge1xyXG4gICAgcmV0dXJuIG5vZGUudHlwZSA9PT0gNSAvKiBOb2RlVHlwZXMuSU5URVJQT0xBVElPTiAqLyB8fCBub2RlLnR5cGUgPT09IDIgLyogTm9kZVR5cGVzLlRFWFQgKi87XHJcbn1cclxuZnVuY3Rpb24gaXNWU2xvdChwKSB7XHJcbiAgICByZXR1cm4gcC50eXBlID09PSA3IC8qIE5vZGVUeXBlcy5ESVJFQ1RJVkUgKi8gJiYgcC5uYW1lID09PSAnc2xvdCc7XHJcbn1cclxuZnVuY3Rpb24gaXNUZW1wbGF0ZU5vZGUobm9kZSkge1xyXG4gICAgcmV0dXJuIChub2RlLnR5cGUgPT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8gJiYgbm9kZS50YWdUeXBlID09PSAzIC8qIEVsZW1lbnRUeXBlcy5URU1QTEFURSAqLyk7XHJcbn1cclxuZnVuY3Rpb24gaXNTbG90T3V0bGV0KG5vZGUpIHtcclxuICAgIHJldHVybiBub2RlLnR5cGUgPT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8gJiYgbm9kZS50YWdUeXBlID09PSAyIC8qIEVsZW1lbnRUeXBlcy5TTE9UICovO1xyXG59XHJcbmZ1bmN0aW9uIGdldFZOb2RlSGVscGVyKHNzciwgaXNDb21wb25lbnQpIHtcclxuICAgIHJldHVybiBzc3IgfHwgaXNDb21wb25lbnQgPyBDUkVBVEVfVk5PREUgOiBDUkVBVEVfRUxFTUVOVF9WTk9ERTtcclxufVxyXG5mdW5jdGlvbiBnZXRWTm9kZUJsb2NrSGVscGVyKHNzciwgaXNDb21wb25lbnQpIHtcclxuICAgIHJldHVybiBzc3IgfHwgaXNDb21wb25lbnQgPyBDUkVBVEVfQkxPQ0sgOiBDUkVBVEVfRUxFTUVOVF9CTE9DSztcclxufVxyXG5jb25zdCBwcm9wc0hlbHBlclNldCA9IG5ldyBTZXQoW05PUk1BTElaRV9QUk9QUywgR1VBUkRfUkVBQ1RJVkVfUFJPUFNdKTtcclxuZnVuY3Rpb24gZ2V0VW5ub3JtYWxpemVkUHJvcHMocHJvcHMsIGNhbGxQYXRoID0gW10pIHtcclxuICAgIGlmIChwcm9wcyAmJlxyXG4gICAgICAgICFpc1N0cmluZyhwcm9wcykgJiZcclxuICAgICAgICBwcm9wcy50eXBlID09PSAxNCAvKiBOb2RlVHlwZXMuSlNfQ0FMTF9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgY29uc3QgY2FsbGVlID0gcHJvcHMuY2FsbGVlO1xyXG4gICAgICAgIGlmICghaXNTdHJpbmcoY2FsbGVlKSAmJiBwcm9wc0hlbHBlclNldC5oYXMoY2FsbGVlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZ2V0VW5ub3JtYWxpemVkUHJvcHMocHJvcHMuYXJndW1lbnRzWzBdLCBjYWxsUGF0aC5jb25jYXQocHJvcHMpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gW3Byb3BzLCBjYWxsUGF0aF07XHJcbn1cclxuZnVuY3Rpb24gaW5qZWN0UHJvcChub2RlLCBwcm9wLCBjb250ZXh0KSB7XHJcbiAgICBsZXQgcHJvcHNXaXRoSW5qZWN0aW9uO1xyXG4gICAgLyoqXHJcbiAgICAgKiAxLiBtZXJnZVByb3BzKC4uLilcclxuICAgICAqIDIuIHRvSGFuZGxlcnMoLi4uKVxyXG4gICAgICogMy4gbm9ybWFsaXplUHJvcHMoLi4uKVxyXG4gICAgICogNC4gbm9ybWFsaXplUHJvcHMoZ3VhcmRSZWFjdGl2ZVByb3BzKC4uLikpXHJcbiAgICAgKlxyXG4gICAgICogd2UgbmVlZCB0byBnZXQgdGhlIHJlYWwgcHJvcHMgYmVmb3JlIG5vcm1hbGl6YXRpb25cclxuICAgICAqL1xyXG4gICAgbGV0IHByb3BzID0gbm9kZS50eXBlID09PSAxMyAvKiBOb2RlVHlwZXMuVk5PREVfQ0FMTCAqLyA/IG5vZGUucHJvcHMgOiBub2RlLmFyZ3VtZW50c1syXTtcclxuICAgIGxldCBjYWxsUGF0aCA9IFtdO1xyXG4gICAgbGV0IHBhcmVudENhbGw7XHJcbiAgICBpZiAocHJvcHMgJiZcclxuICAgICAgICAhaXNTdHJpbmcocHJvcHMpICYmXHJcbiAgICAgICAgcHJvcHMudHlwZSA9PT0gMTQgLyogTm9kZVR5cGVzLkpTX0NBTExfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgIGNvbnN0IHJldCA9IGdldFVubm9ybWFsaXplZFByb3BzKHByb3BzKTtcclxuICAgICAgICBwcm9wcyA9IHJldFswXTtcclxuICAgICAgICBjYWxsUGF0aCA9IHJldFsxXTtcclxuICAgICAgICBwYXJlbnRDYWxsID0gY2FsbFBhdGhbY2FsbFBhdGgubGVuZ3RoIC0gMV07XHJcbiAgICB9XHJcbiAgICBpZiAocHJvcHMgPT0gbnVsbCB8fCBpc1N0cmluZyhwcm9wcykpIHtcclxuICAgICAgICBwcm9wc1dpdGhJbmplY3Rpb24gPSBjcmVhdGVPYmplY3RFeHByZXNzaW9uKFtwcm9wXSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChwcm9wcy50eXBlID09PSAxNCAvKiBOb2RlVHlwZXMuSlNfQ0FMTF9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgLy8gbWVyZ2VkIHByb3BzLi4uIGFkZCBvdXJzXHJcbiAgICAgICAgLy8gb25seSBpbmplY3Qga2V5IHRvIG9iamVjdCBsaXRlcmFsIGlmIGl0J3MgdGhlIGZpcnN0IGFyZ3VtZW50IHNvIHRoYXRcclxuICAgICAgICAvLyBpZiBkb2Vzbid0IG92ZXJyaWRlIHVzZXIgcHJvdmlkZWQga2V5c1xyXG4gICAgICAgIGNvbnN0IGZpcnN0ID0gcHJvcHMuYXJndW1lbnRzWzBdO1xyXG4gICAgICAgIGlmICghaXNTdHJpbmcoZmlyc3QpICYmIGZpcnN0LnR5cGUgPT09IDE1IC8qIE5vZGVUeXBlcy5KU19PQkpFQ1RfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgICAgICBmaXJzdC5wcm9wZXJ0aWVzLnVuc2hpZnQocHJvcCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAocHJvcHMuY2FsbGVlID09PSBUT19IQU5ETEVSUykge1xyXG4gICAgICAgICAgICAgICAgLy8gIzIzNjZcclxuICAgICAgICAgICAgICAgIHByb3BzV2l0aEluamVjdGlvbiA9IGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKE1FUkdFX1BST1BTKSwgW1xyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZU9iamVjdEV4cHJlc3Npb24oW3Byb3BdKSxcclxuICAgICAgICAgICAgICAgICAgICBwcm9wc1xyXG4gICAgICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBwcm9wcy5hcmd1bWVudHMudW5zaGlmdChjcmVhdGVPYmplY3RFeHByZXNzaW9uKFtwcm9wXSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgICFwcm9wc1dpdGhJbmplY3Rpb24gJiYgKHByb3BzV2l0aEluamVjdGlvbiA9IHByb3BzKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHByb3BzLnR5cGUgPT09IDE1IC8qIE5vZGVUeXBlcy5KU19PQkpFQ1RfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgIGxldCBhbHJlYWR5RXhpc3RzID0gZmFsc2U7XHJcbiAgICAgICAgLy8gY2hlY2sgZXhpc3Rpbmcga2V5IHRvIGF2b2lkIG92ZXJyaWRpbmcgdXNlciBwcm92aWRlZCBrZXlzXHJcbiAgICAgICAgaWYgKHByb3Aua2V5LnR5cGUgPT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHByb3BLZXlOYW1lID0gcHJvcC5rZXkuY29udGVudDtcclxuICAgICAgICAgICAgYWxyZWFkeUV4aXN0cyA9IHByb3BzLnByb3BlcnRpZXMuc29tZShwID0+IHAua2V5LnR5cGUgPT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovICYmXHJcbiAgICAgICAgICAgICAgICBwLmtleS5jb250ZW50ID09PSBwcm9wS2V5TmFtZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghYWxyZWFkeUV4aXN0cykge1xyXG4gICAgICAgICAgICBwcm9wcy5wcm9wZXJ0aWVzLnVuc2hpZnQocHJvcCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHByb3BzV2l0aEluamVjdGlvbiA9IHByb3BzO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgLy8gc2luZ2xlIHYtYmluZCB3aXRoIGV4cHJlc3Npb24sIHJldHVybiBhIG1lcmdlZCByZXBsYWNlbWVudFxyXG4gICAgICAgIHByb3BzV2l0aEluamVjdGlvbiA9IGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKE1FUkdFX1BST1BTKSwgW1xyXG4gICAgICAgICAgICBjcmVhdGVPYmplY3RFeHByZXNzaW9uKFtwcm9wXSksXHJcbiAgICAgICAgICAgIHByb3BzXHJcbiAgICAgICAgXSk7XHJcbiAgICAgICAgLy8gaW4gdGhlIGNhc2Ugb2YgbmVzdGVkIGhlbHBlciBjYWxsLCBlLmcuIGBub3JtYWxpemVQcm9wcyhndWFyZFJlYWN0aXZlUHJvcHMocHJvcHMpKWAsXHJcbiAgICAgICAgLy8gaXQgd2lsbCBiZSByZXdyaXR0ZW4gYXMgYG5vcm1hbGl6ZVByb3BzKG1lcmdlUHJvcHMoeyBrZXk6IDAgfSwgcHJvcHMpKWAsXHJcbiAgICAgICAgLy8gdGhlIGBndWFyZFJlYWN0aXZlUHJvcHNgIHdpbGwgbm8gbG9uZ2VyIGJlIG5lZWRlZFxyXG4gICAgICAgIGlmIChwYXJlbnRDYWxsICYmIHBhcmVudENhbGwuY2FsbGVlID09PSBHVUFSRF9SRUFDVElWRV9QUk9QUykge1xyXG4gICAgICAgICAgICBwYXJlbnRDYWxsID0gY2FsbFBhdGhbY2FsbFBhdGgubGVuZ3RoIC0gMl07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gMTMgLyogTm9kZVR5cGVzLlZOT0RFX0NBTEwgKi8pIHtcclxuICAgICAgICBpZiAocGFyZW50Q2FsbCkge1xyXG4gICAgICAgICAgICBwYXJlbnRDYWxsLmFyZ3VtZW50c1swXSA9IHByb3BzV2l0aEluamVjdGlvbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIG5vZGUucHJvcHMgPSBwcm9wc1dpdGhJbmplY3Rpb247XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKHBhcmVudENhbGwpIHtcclxuICAgICAgICAgICAgcGFyZW50Q2FsbC5hcmd1bWVudHNbMF0gPSBwcm9wc1dpdGhJbmplY3Rpb247XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBub2RlLmFyZ3VtZW50c1syXSA9IHByb3BzV2l0aEluamVjdGlvbjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gdG9WYWxpZEFzc2V0SWQobmFtZSwgdHlwZSkge1xyXG4gICAgLy8gc2VlIGlzc3VlIzQ0MjIsIHdlIG5lZWQgYWRkaW5nIGlkZW50aWZpZXIgb24gdmFsaWRBc3NldElkIGlmIHZhcmlhYmxlIGBuYW1lYCBoYXMgc3BlY2lmaWMgY2hhcmFjdGVyXHJcbiAgICByZXR1cm4gYF8ke3R5cGV9XyR7bmFtZS5yZXBsYWNlKC9bXlxcd10vZywgKHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUpID0+IHtcclxuICAgICAgICByZXR1cm4gc2VhcmNoVmFsdWUgPT09ICctJyA/ICdfJyA6IG5hbWUuY2hhckNvZGVBdChyZXBsYWNlVmFsdWUpLnRvU3RyaW5nKCk7XHJcbiAgICB9KX1gO1xyXG59XHJcbi8vIENoZWNrIGlmIGEgbm9kZSBjb250YWlucyBleHByZXNzaW9ucyB0aGF0IHJlZmVyZW5jZSBjdXJyZW50IGNvbnRleHQgc2NvcGUgaWRzXHJcbmZ1bmN0aW9uIGhhc1Njb3BlUmVmKG5vZGUsIGlkcykge1xyXG4gICAgaWYgKCFub2RlIHx8IE9iamVjdC5rZXlzKGlkcykubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgc3dpdGNoIChub2RlLnR5cGUpIHtcclxuICAgICAgICBjYXNlIDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi86XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5wcm9wcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcCA9IG5vZGUucHJvcHNbaV07XHJcbiAgICAgICAgICAgICAgICBpZiAocC50eXBlID09PSA3IC8qIE5vZGVUeXBlcy5ESVJFQ1RJVkUgKi8gJiZcclxuICAgICAgICAgICAgICAgICAgICAoaGFzU2NvcGVSZWYocC5hcmcsIGlkcykgfHwgaGFzU2NvcGVSZWYocC5leHAsIGlkcykpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIG5vZGUuY2hpbGRyZW4uc29tZShjID0+IGhhc1Njb3BlUmVmKGMsIGlkcykpO1xyXG4gICAgICAgIGNhc2UgMTEgLyogTm9kZVR5cGVzLkZPUiAqLzpcclxuICAgICAgICAgICAgaWYgKGhhc1Njb3BlUmVmKG5vZGUuc291cmNlLCBpZHMpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbm9kZS5jaGlsZHJlbi5zb21lKGMgPT4gaGFzU2NvcGVSZWYoYywgaWRzKSk7XHJcbiAgICAgICAgY2FzZSA5IC8qIE5vZGVUeXBlcy5JRiAqLzpcclxuICAgICAgICAgICAgcmV0dXJuIG5vZGUuYnJhbmNoZXMuc29tZShiID0+IGhhc1Njb3BlUmVmKGIsIGlkcykpO1xyXG4gICAgICAgIGNhc2UgMTAgLyogTm9kZVR5cGVzLklGX0JSQU5DSCAqLzpcclxuICAgICAgICAgICAgaWYgKGhhc1Njb3BlUmVmKG5vZGUuY29uZGl0aW9uLCBpZHMpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbm9kZS5jaGlsZHJlbi5zb21lKGMgPT4gaGFzU2NvcGVSZWYoYywgaWRzKSk7XHJcbiAgICAgICAgY2FzZSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLzpcclxuICAgICAgICAgICAgcmV0dXJuICghbm9kZS5pc1N0YXRpYyAmJlxyXG4gICAgICAgICAgICAgICAgaXNTaW1wbGVJZGVudGlmaWVyKG5vZGUuY29udGVudCkgJiZcclxuICAgICAgICAgICAgICAgICEhaWRzW25vZGUuY29udGVudF0pO1xyXG4gICAgICAgIGNhc2UgOCAvKiBOb2RlVHlwZXMuQ09NUE9VTkRfRVhQUkVTU0lPTiAqLzpcclxuICAgICAgICAgICAgcmV0dXJuIG5vZGUuY2hpbGRyZW4uc29tZShjID0+IGlzT2JqZWN0KGMpICYmIGhhc1Njb3BlUmVmKGMsIGlkcykpO1xyXG4gICAgICAgIGNhc2UgNSAvKiBOb2RlVHlwZXMuSU5URVJQT0xBVElPTiAqLzpcclxuICAgICAgICBjYXNlIDEyIC8qIE5vZGVUeXBlcy5URVhUX0NBTEwgKi86XHJcbiAgICAgICAgICAgIHJldHVybiBoYXNTY29wZVJlZihub2RlLmNvbnRlbnQsIGlkcyk7XHJcbiAgICAgICAgY2FzZSAyIC8qIE5vZGVUeXBlcy5URVhUICovOlxyXG4gICAgICAgIGNhc2UgMyAvKiBOb2RlVHlwZXMuQ09NTUVOVCAqLzpcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIDtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGdldE1lbW9lZFZOb2RlQ2FsbChub2RlKSB7XHJcbiAgICBpZiAobm9kZS50eXBlID09PSAxNCAvKiBOb2RlVHlwZXMuSlNfQ0FMTF9FWFBSRVNTSU9OICovICYmIG5vZGUuY2FsbGVlID09PSBXSVRIX01FTU8pIHtcclxuICAgICAgICByZXR1cm4gbm9kZS5hcmd1bWVudHNbMV0ucmV0dXJucztcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBub2RlO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIG1ha2VCbG9jayhub2RlLCB7IGhlbHBlciwgcmVtb3ZlSGVscGVyLCBpblNTUiB9KSB7XHJcbiAgICBpZiAoIW5vZGUuaXNCbG9jaykge1xyXG4gICAgICAgIG5vZGUuaXNCbG9jayA9IHRydWU7XHJcbiAgICAgICAgcmVtb3ZlSGVscGVyKGdldFZOb2RlSGVscGVyKGluU1NSLCBub2RlLmlzQ29tcG9uZW50KSk7XHJcbiAgICAgICAgaGVscGVyKE9QRU5fQkxPQ0spO1xyXG4gICAgICAgIGhlbHBlcihnZXRWTm9kZUJsb2NrSGVscGVyKGluU1NSLCBub2RlLmlzQ29tcG9uZW50KSk7XHJcbiAgICB9XHJcbn1cblxuY29uc3QgZGVwcmVjYXRpb25EYXRhID0ge1xyXG4gICAgW1wiQ09NUElMRVJfSVNfT05fRUxFTUVOVFwiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9JU19PTl9FTEVNRU5UICovXToge1xyXG4gICAgICAgIG1lc3NhZ2U6IGBQbGF0Zm9ybS1uYXRpdmUgZWxlbWVudHMgd2l0aCBcImlzXCIgcHJvcCB3aWxsIG5vIGxvbmdlciBiZSBgICtcclxuICAgICAgICAgICAgYHRyZWF0ZWQgYXMgY29tcG9uZW50cyBpbiBWdWUgMyB1bmxlc3MgdGhlIFwiaXNcIiB2YWx1ZSBpcyBleHBsaWNpdGx5IGAgK1xyXG4gICAgICAgICAgICBgcHJlZml4ZWQgd2l0aCBcInZ1ZTpcIi5gLFxyXG4gICAgICAgIGxpbms6IGBodHRwczovL3YzLW1pZ3JhdGlvbi52dWVqcy5vcmcvYnJlYWtpbmctY2hhbmdlcy9jdXN0b20tZWxlbWVudHMtaW50ZXJvcC5odG1sYFxyXG4gICAgfSxcclxuICAgIFtcIkNPTVBJTEVSX1ZfQklORF9TWU5DXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX1ZfQklORF9TWU5DICovXToge1xyXG4gICAgICAgIG1lc3NhZ2U6IGtleSA9PiBgLnN5bmMgbW9kaWZpZXIgZm9yIHYtYmluZCBoYXMgYmVlbiByZW1vdmVkLiBVc2Ugdi1tb2RlbCB3aXRoIGAgK1xyXG4gICAgICAgICAgICBgYXJndW1lbnQgaW5zdGVhZC4gXFxgdi1iaW5kOiR7a2V5fS5zeW5jXFxgIHNob3VsZCBiZSBjaGFuZ2VkIHRvIGAgK1xyXG4gICAgICAgICAgICBgXFxgdi1tb2RlbDoke2tleX1cXGAuYCxcclxuICAgICAgICBsaW5rOiBgaHR0cHM6Ly92My1taWdyYXRpb24udnVlanMub3JnL2JyZWFraW5nLWNoYW5nZXMvdi1tb2RlbC5odG1sYFxyXG4gICAgfSxcclxuICAgIFtcIkNPTVBJTEVSX1ZfQklORF9QUk9QXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX1ZfQklORF9QUk9QICovXToge1xyXG4gICAgICAgIG1lc3NhZ2U6IGAucHJvcCBtb2RpZmllciBmb3Igdi1iaW5kIGhhcyBiZWVuIHJlbW92ZWQgYW5kIG5vIGxvbmdlciBuZWNlc3NhcnkuIGAgK1xyXG4gICAgICAgICAgICBgVnVlIDMgd2lsbCBhdXRvbWF0aWNhbGx5IHNldCBhIGJpbmRpbmcgYXMgRE9NIHByb3BlcnR5IHdoZW4gYXBwcm9wcmlhdGUuYFxyXG4gICAgfSxcclxuICAgIFtcIkNPTVBJTEVSX1ZfQklORF9PQkpFQ1RfT1JERVJcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfVl9CSU5EX09CSkVDVF9PUkRFUiAqL106IHtcclxuICAgICAgICBtZXNzYWdlOiBgdi1iaW5kPVwib2JqXCIgdXNhZ2UgaXMgbm93IG9yZGVyIHNlbnNpdGl2ZSBhbmQgYmVoYXZlcyBsaWtlIEphdmFTY3JpcHQgYCArXHJcbiAgICAgICAgICAgIGBvYmplY3Qgc3ByZWFkOiBpdCB3aWxsIG5vdyBvdmVyd3JpdGUgYW4gZXhpc3Rpbmcgbm9uLW1lcmdlYWJsZSBhdHRyaWJ1dGUgYCArXHJcbiAgICAgICAgICAgIGB0aGF0IGFwcGVhcnMgYmVmb3JlIHYtYmluZCBpbiB0aGUgY2FzZSBvZiBjb25mbGljdC4gYCArXHJcbiAgICAgICAgICAgIGBUbyByZXRhaW4gMi54IGJlaGF2aW9yLCBtb3ZlIHYtYmluZCB0byBtYWtlIGl0IHRoZSBmaXJzdCBhdHRyaWJ1dGUuIGAgK1xyXG4gICAgICAgICAgICBgWW91IGNhbiBhbHNvIHN1cHByZXNzIHRoaXMgd2FybmluZyBpZiB0aGUgdXNhZ2UgaXMgaW50ZW5kZWQuYCxcclxuICAgICAgICBsaW5rOiBgaHR0cHM6Ly92My1taWdyYXRpb24udnVlanMub3JnL2JyZWFraW5nLWNoYW5nZXMvdi1iaW5kLmh0bWxgXHJcbiAgICB9LFxyXG4gICAgW1wiQ09NUElMRVJfVl9PTl9OQVRJVkVcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfVl9PTl9OQVRJVkUgKi9dOiB7XHJcbiAgICAgICAgbWVzc2FnZTogYC5uYXRpdmUgbW9kaWZpZXIgZm9yIHYtb24gaGFzIGJlZW4gcmVtb3ZlZCBhcyBpcyBubyBsb25nZXIgbmVjZXNzYXJ5LmAsXHJcbiAgICAgICAgbGluazogYGh0dHBzOi8vdjMtbWlncmF0aW9uLnZ1ZWpzLm9yZy9icmVha2luZy1jaGFuZ2VzL3Ytb24tbmF0aXZlLW1vZGlmaWVyLXJlbW92ZWQuaHRtbGBcclxuICAgIH0sXHJcbiAgICBbXCJDT01QSUxFUl9WX0lGX1ZfRk9SX1BSRUNFREVOQ0VcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfVl9JRl9WX0ZPUl9QUkVDRURFTkNFICovXToge1xyXG4gICAgICAgIG1lc3NhZ2U6IGB2LWlmIC8gdi1mb3IgcHJlY2VkZW5jZSB3aGVuIHVzZWQgb24gdGhlIHNhbWUgZWxlbWVudCBoYXMgY2hhbmdlZCBgICtcclxuICAgICAgICAgICAgYGluIFZ1ZSAzOiB2LWlmIG5vdyB0YWtlcyBoaWdoZXIgcHJlY2VkZW5jZSBhbmQgd2lsbCBubyBsb25nZXIgaGF2ZSBgICtcclxuICAgICAgICAgICAgYGFjY2VzcyB0byB2LWZvciBzY29wZSB2YXJpYWJsZXMuIEl0IGlzIGJlc3QgdG8gYXZvaWQgdGhlIGFtYmlndWl0eSBgICtcclxuICAgICAgICAgICAgYHdpdGggPHRlbXBsYXRlPiB0YWdzIG9yIHVzZSBhIGNvbXB1dGVkIHByb3BlcnR5IHRoYXQgZmlsdGVycyB2LWZvciBgICtcclxuICAgICAgICAgICAgYGRhdGEgc291cmNlLmAsXHJcbiAgICAgICAgbGluazogYGh0dHBzOi8vdjMtbWlncmF0aW9uLnZ1ZWpzLm9yZy9icmVha2luZy1jaGFuZ2VzL3YtaWYtdi1mb3IuaHRtbGBcclxuICAgIH0sXHJcbiAgICBbXCJDT01QSUxFUl9OQVRJVkVfVEVNUExBVEVcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfTkFUSVZFX1RFTVBMQVRFICovXToge1xyXG4gICAgICAgIG1lc3NhZ2U6IGA8dGVtcGxhdGU+IHdpdGggbm8gc3BlY2lhbCBkaXJlY3RpdmVzIHdpbGwgcmVuZGVyIGFzIGEgbmF0aXZlIHRlbXBsYXRlIGAgK1xyXG4gICAgICAgICAgICBgZWxlbWVudCBpbnN0ZWFkIG9mIGl0cyBpbm5lciBjb250ZW50IGluIFZ1ZSAzLmBcclxuICAgIH0sXHJcbiAgICBbXCJDT01QSUxFUl9JTkxJTkVfVEVNUExBVEVcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfSU5MSU5FX1RFTVBMQVRFICovXToge1xyXG4gICAgICAgIG1lc3NhZ2U6IGBcImlubGluZS10ZW1wbGF0ZVwiIGhhcyBiZWVuIHJlbW92ZWQgaW4gVnVlIDMuYCxcclxuICAgICAgICBsaW5rOiBgaHR0cHM6Ly92My1taWdyYXRpb24udnVlanMub3JnL2JyZWFraW5nLWNoYW5nZXMvaW5saW5lLXRlbXBsYXRlLWF0dHJpYnV0ZS5odG1sYFxyXG4gICAgfSxcclxuICAgIFtcIkNPTVBJTEVSX0ZJTFRFUlwiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9GSUxURVJTICovXToge1xyXG4gICAgICAgIG1lc3NhZ2U6IGBmaWx0ZXJzIGhhdmUgYmVlbiByZW1vdmVkIGluIFZ1ZSAzLiBgICtcclxuICAgICAgICAgICAgYFRoZSBcInxcIiBzeW1ib2wgd2lsbCBiZSB0cmVhdGVkIGFzIG5hdGl2ZSBKYXZhU2NyaXB0IGJpdHdpc2UgT1Igb3BlcmF0b3IuIGAgK1xyXG4gICAgICAgICAgICBgVXNlIG1ldGhvZCBjYWxscyBvciBjb21wdXRlZCBwcm9wZXJ0aWVzIGluc3RlYWQuYCxcclxuICAgICAgICBsaW5rOiBgaHR0cHM6Ly92My1taWdyYXRpb24udnVlanMub3JnL2JyZWFraW5nLWNoYW5nZXMvZmlsdGVycy5odG1sYFxyXG4gICAgfVxyXG59O1xyXG5mdW5jdGlvbiBnZXRDb21wYXRWYWx1ZShrZXksIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IGNvbmZpZyA9IGNvbnRleHQub3B0aW9uc1xyXG4gICAgICAgID8gY29udGV4dC5vcHRpb25zLmNvbXBhdENvbmZpZ1xyXG4gICAgICAgIDogY29udGV4dC5jb21wYXRDb25maWc7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGNvbmZpZyAmJiBjb25maWdba2V5XTtcclxuICAgIGlmIChrZXkgPT09ICdNT0RFJykge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZSB8fCAzOyAvLyBjb21waWxlciBkZWZhdWx0cyB0byB2MyBiZWhhdmlvclxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGlzQ29tcGF0RW5hYmxlZChrZXksIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IG1vZGUgPSBnZXRDb21wYXRWYWx1ZSgnTU9ERScsIGNvbnRleHQpO1xyXG4gICAgY29uc3QgdmFsdWUgPSBnZXRDb21wYXRWYWx1ZShrZXksIGNvbnRleHQpO1xyXG4gICAgLy8gaW4gdjMgbW9kZSwgb25seSBlbmFibGUgaWYgZXhwbGljaXRseSBzZXQgdG8gdHJ1ZVxyXG4gICAgLy8gb3RoZXJ3aXNlIGVuYWJsZSBmb3IgYW55IG5vbi1mYWxzZSB2YWx1ZVxyXG4gICAgcmV0dXJuIG1vZGUgPT09IDMgPyB2YWx1ZSA9PT0gdHJ1ZSA6IHZhbHVlICE9PSBmYWxzZTtcclxufVxyXG5mdW5jdGlvbiBjaGVja0NvbXBhdEVuYWJsZWQoa2V5LCBjb250ZXh0LCBsb2MsIC4uLmFyZ3MpIHtcclxuICAgIGNvbnN0IGVuYWJsZWQgPSBpc0NvbXBhdEVuYWJsZWQoa2V5LCBjb250ZXh0KTtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgZW5hYmxlZCkge1xyXG4gICAgICAgIHdhcm5EZXByZWNhdGlvbihrZXksIGNvbnRleHQsIGxvYywgLi4uYXJncyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZW5hYmxlZDtcclxufVxyXG5mdW5jdGlvbiB3YXJuRGVwcmVjYXRpb24oa2V5LCBjb250ZXh0LCBsb2MsIC4uLmFyZ3MpIHtcclxuICAgIGNvbnN0IHZhbCA9IGdldENvbXBhdFZhbHVlKGtleSwgY29udGV4dCk7XHJcbiAgICBpZiAodmFsID09PSAnc3VwcHJlc3Mtd2FybmluZycpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IG1lc3NhZ2UsIGxpbmsgfSA9IGRlcHJlY2F0aW9uRGF0YVtrZXldO1xyXG4gICAgY29uc3QgbXNnID0gYChkZXByZWNhdGlvbiAke2tleX0pICR7dHlwZW9mIG1lc3NhZ2UgPT09ICdmdW5jdGlvbicgPyBtZXNzYWdlKC4uLmFyZ3MpIDogbWVzc2FnZX0ke2xpbmsgPyBgXFxuICBEZXRhaWxzOiAke2xpbmt9YCA6IGBgfWA7XHJcbiAgICBjb25zdCBlcnIgPSBuZXcgU3ludGF4RXJyb3IobXNnKTtcclxuICAgIGVyci5jb2RlID0ga2V5O1xyXG4gICAgaWYgKGxvYylcclxuICAgICAgICBlcnIubG9jID0gbG9jO1xyXG4gICAgY29udGV4dC5vbldhcm4oZXJyKTtcclxufVxuXG4vLyBUaGUgZGVmYXVsdCBkZWNvZGVyIG9ubHkgcHJvdmlkZXMgZXNjYXBlcyBmb3IgY2hhcmFjdGVycyByZXNlcnZlZCBhcyBwYXJ0IG9mXHJcbi8vIHRoZSB0ZW1wbGF0ZSBzeW50YXgsIGFuZCBpcyBvbmx5IHVzZWQgaWYgdGhlIGN1c3RvbSByZW5kZXJlciBkaWQgbm90IHByb3ZpZGVcclxuLy8gYSBwbGF0Zm9ybS1zcGVjaWZpYyBkZWNvZGVyLlxyXG5jb25zdCBkZWNvZGVSRSA9IC8mKGd0fGx0fGFtcHxhcG9zfHF1b3QpOy9nO1xyXG5jb25zdCBkZWNvZGVNYXAgPSB7XHJcbiAgICBndDogJz4nLFxyXG4gICAgbHQ6ICc8JyxcclxuICAgIGFtcDogJyYnLFxyXG4gICAgYXBvczogXCInXCIsXHJcbiAgICBxdW90OiAnXCInXHJcbn07XHJcbmNvbnN0IGRlZmF1bHRQYXJzZXJPcHRpb25zID0ge1xyXG4gICAgZGVsaW1pdGVyczogW2B7e2AsIGB9fWBdLFxyXG4gICAgZ2V0TmFtZXNwYWNlOiAoKSA9PiAwIC8qIE5hbWVzcGFjZXMuSFRNTCAqLyxcclxuICAgIGdldFRleHRNb2RlOiAoKSA9PiAwIC8qIFRleHRNb2Rlcy5EQVRBICovLFxyXG4gICAgaXNWb2lkVGFnOiBOTyxcclxuICAgIGlzUHJlVGFnOiBOTyxcclxuICAgIGlzQ3VzdG9tRWxlbWVudDogTk8sXHJcbiAgICBkZWNvZGVFbnRpdGllczogKHJhd1RleHQpID0+IHJhd1RleHQucmVwbGFjZShkZWNvZGVSRSwgKF8sIHAxKSA9PiBkZWNvZGVNYXBbcDFdKSxcclxuICAgIG9uRXJyb3I6IGRlZmF1bHRPbkVycm9yLFxyXG4gICAgb25XYXJuOiBkZWZhdWx0T25XYXJuLFxyXG4gICAgY29tbWVudHM6IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKVxyXG59O1xyXG5mdW5jdGlvbiBiYXNlUGFyc2UoY29udGVudCwgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICBjb25zdCBjb250ZXh0ID0gY3JlYXRlUGFyc2VyQ29udGV4dChjb250ZW50LCBvcHRpb25zKTtcclxuICAgIGNvbnN0IHN0YXJ0ID0gZ2V0Q3Vyc29yKGNvbnRleHQpO1xyXG4gICAgcmV0dXJuIGNyZWF0ZVJvb3QocGFyc2VDaGlsZHJlbihjb250ZXh0LCAwIC8qIFRleHRNb2Rlcy5EQVRBICovLCBbXSksIGdldFNlbGVjdGlvbihjb250ZXh0LCBzdGFydCkpO1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZVBhcnNlckNvbnRleHQoY29udGVudCwgcmF3T3B0aW9ucykge1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IGV4dGVuZCh7fSwgZGVmYXVsdFBhcnNlck9wdGlvbnMpO1xyXG4gICAgbGV0IGtleTtcclxuICAgIGZvciAoa2V5IGluIHJhd09wdGlvbnMpIHtcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgb3B0aW9uc1trZXldID1cclxuICAgICAgICAgICAgcmF3T3B0aW9uc1trZXldID09PSB1bmRlZmluZWRcclxuICAgICAgICAgICAgICAgID8gZGVmYXVsdFBhcnNlck9wdGlvbnNba2V5XVxyXG4gICAgICAgICAgICAgICAgOiByYXdPcHRpb25zW2tleV07XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIG9wdGlvbnMsXHJcbiAgICAgICAgY29sdW1uOiAxLFxyXG4gICAgICAgIGxpbmU6IDEsXHJcbiAgICAgICAgb2Zmc2V0OiAwLFxyXG4gICAgICAgIG9yaWdpbmFsU291cmNlOiBjb250ZW50LFxyXG4gICAgICAgIHNvdXJjZTogY29udGVudCxcclxuICAgICAgICBpblByZTogZmFsc2UsXHJcbiAgICAgICAgaW5WUHJlOiBmYWxzZSxcclxuICAgICAgICBvbldhcm46IG9wdGlvbnMub25XYXJuXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIHBhcnNlQ2hpbGRyZW4oY29udGV4dCwgbW9kZSwgYW5jZXN0b3JzKSB7XHJcbiAgICBjb25zdCBwYXJlbnQgPSBsYXN0KGFuY2VzdG9ycyk7XHJcbiAgICBjb25zdCBucyA9IHBhcmVudCA/IHBhcmVudC5ucyA6IDAgLyogTmFtZXNwYWNlcy5IVE1MICovO1xyXG4gICAgY29uc3Qgbm9kZXMgPSBbXTtcclxuICAgIHdoaWxlICghaXNFbmQoY29udGV4dCwgbW9kZSwgYW5jZXN0b3JzKSkge1xyXG4gICAgICAgIGNvbnN0IHMgPSBjb250ZXh0LnNvdXJjZTtcclxuICAgICAgICBsZXQgbm9kZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICBpZiAobW9kZSA9PT0gMCAvKiBUZXh0TW9kZXMuREFUQSAqLyB8fCBtb2RlID09PSAxIC8qIFRleHRNb2Rlcy5SQ0RBVEEgKi8pIHtcclxuICAgICAgICAgICAgaWYgKCFjb250ZXh0LmluVlByZSAmJiBzdGFydHNXaXRoKHMsIGNvbnRleHQub3B0aW9ucy5kZWxpbWl0ZXJzWzBdKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gJ3t7J1xyXG4gICAgICAgICAgICAgICAgbm9kZSA9IHBhcnNlSW50ZXJwb2xhdGlvbihjb250ZXh0LCBtb2RlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChtb2RlID09PSAwIC8qIFRleHRNb2Rlcy5EQVRBICovICYmIHNbMF0gPT09ICc8Jykge1xyXG4gICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvcGFyc2luZy5odG1sI3RhZy1vcGVuLXN0YXRlXHJcbiAgICAgICAgICAgICAgICBpZiAocy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgNSAvKiBFcnJvckNvZGVzLkVPRl9CRUZPUkVfVEFHX05BTUUgKi8sIDEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoc1sxXSA9PT0gJyEnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvcGFyc2luZy5odG1sI21hcmt1cC1kZWNsYXJhdGlvbi1vcGVuLXN0YXRlXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0c1dpdGgocywgJzwhLS0nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlID0gcGFyc2VDb21tZW50KGNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChzdGFydHNXaXRoKHMsICc8IURPQ1RZUEUnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZ25vcmUgRE9DVFlQRSBieSBhIGxpbWl0YXRpb24uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBwYXJzZUJvZ3VzQ29tbWVudChjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoc3RhcnRzV2l0aChzLCAnPCFbQ0RBVEFbJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5zICE9PSAwIC8qIE5hbWVzcGFjZXMuSFRNTCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSA9IHBhcnNlQ0RBVEEoY29udGV4dCwgYW5jZXN0b3JzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAxIC8qIEVycm9yQ29kZXMuQ0RBVEFfSU5fSFRNTF9DT05URU5UICovKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBwYXJzZUJvZ3VzQ29tbWVudChjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDExIC8qIEVycm9yQ29kZXMuSU5DT1JSRUNUTFlfT1BFTkVEX0NPTU1FTlQgKi8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlID0gcGFyc2VCb2d1c0NvbW1lbnQoY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoc1sxXSA9PT0gJy8nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvcGFyc2luZy5odG1sI2VuZC10YWctb3Blbi1zdGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzLmxlbmd0aCA9PT0gMikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgNSAvKiBFcnJvckNvZGVzLkVPRl9CRUZPUkVfVEFHX05BTUUgKi8sIDIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChzWzJdID09PSAnPicpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDE0IC8qIEVycm9yQ29kZXMuTUlTU0lOR19FTkRfVEFHX05BTUUgKi8sIDIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhZHZhbmNlQnkoY29udGV4dCwgMyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgvW2Etel0vaS50ZXN0KHNbMl0pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAyMyAvKiBFcnJvckNvZGVzLlhfSU5WQUxJRF9FTkRfVEFHICovKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VUYWcoY29udGV4dCwgMSAvKiBUYWdUeXBlLkVuZCAqLywgcGFyZW50KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMTIgLyogRXJyb3JDb2Rlcy5JTlZBTElEX0ZJUlNUX0NIQVJBQ1RFUl9PRl9UQUdfTkFNRSAqLywgMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBwYXJzZUJvZ3VzQ29tbWVudChjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICgvW2Etel0vaS50ZXN0KHNbMV0pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9kZSA9IHBhcnNlRWxlbWVudChjb250ZXh0LCBhbmNlc3RvcnMpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIDIueCA8dGVtcGxhdGU+IHdpdGggbm8gZGlyZWN0aXZlIGNvbXBhdFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0NvbXBhdEVuYWJsZWQoXCJDT01QSUxFUl9OQVRJVkVfVEVNUExBVEVcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfTkFUSVZFX1RFTVBMQVRFICovLCBjb250ZXh0KSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUudGFnID09PSAndGVtcGxhdGUnICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICFub2RlLnByb3BzLnNvbWUocCA9PiBwLnR5cGUgPT09IDcgLyogTm9kZVR5cGVzLkRJUkVDVElWRSAqLyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTcGVjaWFsVGVtcGxhdGVEaXJlY3RpdmUocC5uYW1lKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuRGVwcmVjYXRpb24oXCJDT01QSUxFUl9OQVRJVkVfVEVNUExBVEVcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfTkFUSVZFX1RFTVBMQVRFICovLCBjb250ZXh0LCBub2RlLmxvYyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBub2RlLmNoaWxkcmVuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNbMV0gPT09ICc/Jykge1xyXG4gICAgICAgICAgICAgICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAyMSAvKiBFcnJvckNvZGVzLlVORVhQRUNURURfUVVFU1RJT05fTUFSS19JTlNURUFEX09GX1RBR19OQU1FICovLCAxKTtcclxuICAgICAgICAgICAgICAgICAgICBub2RlID0gcGFyc2VCb2d1c0NvbW1lbnQoY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMTIgLyogRXJyb3JDb2Rlcy5JTlZBTElEX0ZJUlNUX0NIQVJBQ1RFUl9PRl9UQUdfTkFNRSAqLywgMSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFub2RlKSB7XHJcbiAgICAgICAgICAgIG5vZGUgPSBwYXJzZVRleHQoY29udGV4dCwgbW9kZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpc0FycmF5KG5vZGUpKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgcHVzaE5vZGUobm9kZXMsIG5vZGVbaV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBwdXNoTm9kZShub2Rlcywgbm9kZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gV2hpdGVzcGFjZSBoYW5kbGluZyBzdHJhdGVneSBsaWtlIHYyXHJcbiAgICBsZXQgcmVtb3ZlZFdoaXRlc3BhY2UgPSBmYWxzZTtcclxuICAgIGlmIChtb2RlICE9PSAyIC8qIFRleHRNb2Rlcy5SQVdURVhUICovICYmIG1vZGUgIT09IDEgLyogVGV4dE1vZGVzLlJDREFUQSAqLykge1xyXG4gICAgICAgIGNvbnN0IHNob3VsZENvbmRlbnNlID0gY29udGV4dC5vcHRpb25zLndoaXRlc3BhY2UgIT09ICdwcmVzZXJ2ZSc7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBub2RlID0gbm9kZXNbaV07XHJcbiAgICAgICAgICAgIGlmICghY29udGV4dC5pblByZSAmJiBub2RlLnR5cGUgPT09IDIgLyogTm9kZVR5cGVzLlRFWFQgKi8pIHtcclxuICAgICAgICAgICAgICAgIGlmICghL1teXFx0XFxyXFxuXFxmIF0vLnRlc3Qobm9kZS5jb250ZW50KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXYgPSBub2Rlc1tpIC0gMV07XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dCA9IG5vZGVzW2kgKyAxXTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBSZW1vdmUgaWY6XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gLSB0aGUgd2hpdGVzcGFjZSBpcyB0aGUgZmlyc3Qgb3IgbGFzdCBub2RlLCBvcjpcclxuICAgICAgICAgICAgICAgICAgICAvLyAtIChjb25kZW5zZSBtb2RlKSB0aGUgd2hpdGVzcGFjZSBpcyBhZGphY2VudCB0byBhIGNvbW1lbnQsIG9yOlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIC0gKGNvbmRlbnNlIG1vZGUpIHRoZSB3aGl0ZXNwYWNlIGlzIGJldHdlZW4gdHdvIGVsZW1lbnRzIEFORCBjb250YWlucyBuZXdsaW5lXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFwcmV2IHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICFuZXh0IHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChzaG91bGRDb25kZW5zZSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByZXYudHlwZSA9PT0gMyAvKiBOb2RlVHlwZXMuQ09NTUVOVCAqLyB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQudHlwZSA9PT0gMyAvKiBOb2RlVHlwZXMuQ09NTUVOVCAqLyB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmV2LnR5cGUgPT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8gJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dC50eXBlID09PSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC9bXFxyXFxuXS8udGVzdChub2RlLmNvbnRlbnQpKSkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZWRXaGl0ZXNwYWNlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXNbaV0gPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCB0aGUgd2hpdGVzcGFjZSBpcyBjb25kZW5zZWQgaW50byBhIHNpbmdsZSBzcGFjZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlLmNvbnRlbnQgPSAnICc7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoc2hvdWxkQ29uZGVuc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBpbiBjb25kZW5zZSBtb2RlLCBjb25zZWN1dGl2ZSB3aGl0ZXNwYWNlcyBpbiB0ZXh0IGFyZSBjb25kZW5zZWRcclxuICAgICAgICAgICAgICAgICAgICAvLyBkb3duIHRvIGEgc2luZ2xlIHNwYWNlLlxyXG4gICAgICAgICAgICAgICAgICAgIG5vZGUuY29udGVudCA9IG5vZGUuY29udGVudC5yZXBsYWNlKC9bXFx0XFxyXFxuXFxmIF0rL2csICcgJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gUmVtb3ZlIGNvbW1lbnQgbm9kZXMgaWYgZGVzaXJlZCBieSBjb25maWd1cmF0aW9uLlxyXG4gICAgICAgICAgICBlbHNlIGlmIChub2RlLnR5cGUgPT09IDMgLyogTm9kZVR5cGVzLkNPTU1FTlQgKi8gJiYgIWNvbnRleHQub3B0aW9ucy5jb21tZW50cykge1xyXG4gICAgICAgICAgICAgICAgcmVtb3ZlZFdoaXRlc3BhY2UgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgbm9kZXNbaV0gPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjb250ZXh0LmluUHJlICYmIHBhcmVudCAmJiBjb250ZXh0Lm9wdGlvbnMuaXNQcmVUYWcocGFyZW50LnRhZykpIHtcclxuICAgICAgICAgICAgLy8gcmVtb3ZlIGxlYWRpbmcgbmV3bGluZSBwZXIgaHRtbCBzcGVjXHJcbiAgICAgICAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2dyb3VwaW5nLWNvbnRlbnQuaHRtbCN0aGUtcHJlLWVsZW1lbnRcclxuICAgICAgICAgICAgY29uc3QgZmlyc3QgPSBub2Rlc1swXTtcclxuICAgICAgICAgICAgaWYgKGZpcnN0ICYmIGZpcnN0LnR5cGUgPT09IDIgLyogTm9kZVR5cGVzLlRFWFQgKi8pIHtcclxuICAgICAgICAgICAgICAgIGZpcnN0LmNvbnRlbnQgPSBmaXJzdC5jb250ZW50LnJlcGxhY2UoL15cXHI/XFxuLywgJycpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlbW92ZWRXaGl0ZXNwYWNlID8gbm9kZXMuZmlsdGVyKEJvb2xlYW4pIDogbm9kZXM7XHJcbn1cclxuZnVuY3Rpb24gcHVzaE5vZGUobm9kZXMsIG5vZGUpIHtcclxuICAgIGlmIChub2RlLnR5cGUgPT09IDIgLyogTm9kZVR5cGVzLlRFWFQgKi8pIHtcclxuICAgICAgICBjb25zdCBwcmV2ID0gbGFzdChub2Rlcyk7XHJcbiAgICAgICAgLy8gTWVyZ2UgaWYgYm90aCB0aGlzIGFuZCB0aGUgcHJldmlvdXMgbm9kZSBhcmUgdGV4dCBhbmQgdGhvc2UgYXJlXHJcbiAgICAgICAgLy8gY29uc2VjdXRpdmUuIFRoaXMgaGFwcGVucyBmb3IgY2FzZXMgbGlrZSBcImEgPCBiXCIuXHJcbiAgICAgICAgaWYgKHByZXYgJiZcclxuICAgICAgICAgICAgcHJldi50eXBlID09PSAyIC8qIE5vZGVUeXBlcy5URVhUICovICYmXHJcbiAgICAgICAgICAgIHByZXYubG9jLmVuZC5vZmZzZXQgPT09IG5vZGUubG9jLnN0YXJ0Lm9mZnNldCkge1xyXG4gICAgICAgICAgICBwcmV2LmNvbnRlbnQgKz0gbm9kZS5jb250ZW50O1xyXG4gICAgICAgICAgICBwcmV2LmxvYy5lbmQgPSBub2RlLmxvYy5lbmQ7XHJcbiAgICAgICAgICAgIHByZXYubG9jLnNvdXJjZSArPSBub2RlLmxvYy5zb3VyY2U7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBub2Rlcy5wdXNoKG5vZGUpO1xyXG59XHJcbmZ1bmN0aW9uIHBhcnNlQ0RBVEEoY29udGV4dCwgYW5jZXN0b3JzKSB7XHJcbiAgICBhZHZhbmNlQnkoY29udGV4dCwgOSk7XHJcbiAgICBjb25zdCBub2RlcyA9IHBhcnNlQ2hpbGRyZW4oY29udGV4dCwgMyAvKiBUZXh0TW9kZXMuQ0RBVEEgKi8sIGFuY2VzdG9ycyk7XHJcbiAgICBpZiAoY29udGV4dC5zb3VyY2UubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDYgLyogRXJyb3JDb2Rlcy5FT0ZfSU5fQ0RBVEEgKi8pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgYWR2YW5jZUJ5KGNvbnRleHQsIDMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5vZGVzO1xyXG59XHJcbmZ1bmN0aW9uIHBhcnNlQ29tbWVudChjb250ZXh0KSB7XHJcbiAgICBjb25zdCBzdGFydCA9IGdldEN1cnNvcihjb250ZXh0KTtcclxuICAgIGxldCBjb250ZW50O1xyXG4gICAgLy8gUmVndWxhciBjb21tZW50LlxyXG4gICAgY29uc3QgbWF0Y2ggPSAvLS0oXFwhKT8+Ly5leGVjKGNvbnRleHQuc291cmNlKTtcclxuICAgIGlmICghbWF0Y2gpIHtcclxuICAgICAgICBjb250ZW50ID0gY29udGV4dC5zb3VyY2Uuc2xpY2UoNCk7XHJcbiAgICAgICAgYWR2YW5jZUJ5KGNvbnRleHQsIGNvbnRleHQuc291cmNlLmxlbmd0aCk7XHJcbiAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDcgLyogRXJyb3JDb2Rlcy5FT0ZfSU5fQ09NTUVOVCAqLyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBpZiAobWF0Y2guaW5kZXggPD0gMykge1xyXG4gICAgICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMCAvKiBFcnJvckNvZGVzLkFCUlVQVF9DTE9TSU5HX09GX0VNUFRZX0NPTU1FTlQgKi8pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobWF0Y2hbMV0pIHtcclxuICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDEwIC8qIEVycm9yQ29kZXMuSU5DT1JSRUNUTFlfQ0xPU0VEX0NPTU1FTlQgKi8pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb250ZW50ID0gY29udGV4dC5zb3VyY2Uuc2xpY2UoNCwgbWF0Y2guaW5kZXgpO1xyXG4gICAgICAgIC8vIEFkdmFuY2luZyB3aXRoIHJlcG9ydGluZyBuZXN0ZWQgY29tbWVudHMuXHJcbiAgICAgICAgY29uc3QgcyA9IGNvbnRleHQuc291cmNlLnNsaWNlKDAsIG1hdGNoLmluZGV4KTtcclxuICAgICAgICBsZXQgcHJldkluZGV4ID0gMSwgbmVzdGVkSW5kZXggPSAwO1xyXG4gICAgICAgIHdoaWxlICgobmVzdGVkSW5kZXggPSBzLmluZGV4T2YoJzwhLS0nLCBwcmV2SW5kZXgpKSAhPT0gLTEpIHtcclxuICAgICAgICAgICAgYWR2YW5jZUJ5KGNvbnRleHQsIG5lc3RlZEluZGV4IC0gcHJldkluZGV4ICsgMSk7XHJcbiAgICAgICAgICAgIGlmIChuZXN0ZWRJbmRleCArIDQgPCBzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDE2IC8qIEVycm9yQ29kZXMuTkVTVEVEX0NPTU1FTlQgKi8pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHByZXZJbmRleCA9IG5lc3RlZEluZGV4ICsgMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYWR2YW5jZUJ5KGNvbnRleHQsIG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoIC0gcHJldkluZGV4ICsgMSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDMgLyogTm9kZVR5cGVzLkNPTU1FTlQgKi8sXHJcbiAgICAgICAgY29udGVudCxcclxuICAgICAgICBsb2M6IGdldFNlbGVjdGlvbihjb250ZXh0LCBzdGFydClcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gcGFyc2VCb2d1c0NvbW1lbnQoY29udGV4dCkge1xyXG4gICAgY29uc3Qgc3RhcnQgPSBnZXRDdXJzb3IoY29udGV4dCk7XHJcbiAgICBjb25zdCBjb250ZW50U3RhcnQgPSBjb250ZXh0LnNvdXJjZVsxXSA9PT0gJz8nID8gMSA6IDI7XHJcbiAgICBsZXQgY29udGVudDtcclxuICAgIGNvbnN0IGNsb3NlSW5kZXggPSBjb250ZXh0LnNvdXJjZS5pbmRleE9mKCc+Jyk7XHJcbiAgICBpZiAoY2xvc2VJbmRleCA9PT0gLTEpIHtcclxuICAgICAgICBjb250ZW50ID0gY29udGV4dC5zb3VyY2Uuc2xpY2UoY29udGVudFN0YXJ0KTtcclxuICAgICAgICBhZHZhbmNlQnkoY29udGV4dCwgY29udGV4dC5zb3VyY2UubGVuZ3RoKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnRlbnQgPSBjb250ZXh0LnNvdXJjZS5zbGljZShjb250ZW50U3RhcnQsIGNsb3NlSW5kZXgpO1xyXG4gICAgICAgIGFkdmFuY2VCeShjb250ZXh0LCBjbG9zZUluZGV4ICsgMSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDMgLyogTm9kZVR5cGVzLkNPTU1FTlQgKi8sXHJcbiAgICAgICAgY29udGVudCxcclxuICAgICAgICBsb2M6IGdldFNlbGVjdGlvbihjb250ZXh0LCBzdGFydClcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gcGFyc2VFbGVtZW50KGNvbnRleHQsIGFuY2VzdG9ycykge1xyXG4gICAgLy8gU3RhcnQgdGFnLlxyXG4gICAgY29uc3Qgd2FzSW5QcmUgPSBjb250ZXh0LmluUHJlO1xyXG4gICAgY29uc3Qgd2FzSW5WUHJlID0gY29udGV4dC5pblZQcmU7XHJcbiAgICBjb25zdCBwYXJlbnQgPSBsYXN0KGFuY2VzdG9ycyk7XHJcbiAgICBjb25zdCBlbGVtZW50ID0gcGFyc2VUYWcoY29udGV4dCwgMCAvKiBUYWdUeXBlLlN0YXJ0ICovLCBwYXJlbnQpO1xyXG4gICAgY29uc3QgaXNQcmVCb3VuZGFyeSA9IGNvbnRleHQuaW5QcmUgJiYgIXdhc0luUHJlO1xyXG4gICAgY29uc3QgaXNWUHJlQm91bmRhcnkgPSBjb250ZXh0LmluVlByZSAmJiAhd2FzSW5WUHJlO1xyXG4gICAgaWYgKGVsZW1lbnQuaXNTZWxmQ2xvc2luZyB8fCBjb250ZXh0Lm9wdGlvbnMuaXNWb2lkVGFnKGVsZW1lbnQudGFnKSkge1xyXG4gICAgICAgIC8vICM0MDMwIHNlbGYtY2xvc2luZyA8cHJlPiB0YWdcclxuICAgICAgICBpZiAoaXNQcmVCb3VuZGFyeSkge1xyXG4gICAgICAgICAgICBjb250ZXh0LmluUHJlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpc1ZQcmVCb3VuZGFyeSkge1xyXG4gICAgICAgICAgICBjb250ZXh0LmluVlByZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZWxlbWVudDtcclxuICAgIH1cclxuICAgIC8vIENoaWxkcmVuLlxyXG4gICAgYW5jZXN0b3JzLnB1c2goZWxlbWVudCk7XHJcbiAgICBjb25zdCBtb2RlID0gY29udGV4dC5vcHRpb25zLmdldFRleHRNb2RlKGVsZW1lbnQsIHBhcmVudCk7XHJcbiAgICBjb25zdCBjaGlsZHJlbiA9IHBhcnNlQ2hpbGRyZW4oY29udGV4dCwgbW9kZSwgYW5jZXN0b3JzKTtcclxuICAgIGFuY2VzdG9ycy5wb3AoKTtcclxuICAgIC8vIDIueCBpbmxpbmUtdGVtcGxhdGUgY29tcGF0XHJcbiAgICB7XHJcbiAgICAgICAgY29uc3QgaW5saW5lVGVtcGxhdGVQcm9wID0gZWxlbWVudC5wcm9wcy5maW5kKHAgPT4gcC50eXBlID09PSA2IC8qIE5vZGVUeXBlcy5BVFRSSUJVVEUgKi8gJiYgcC5uYW1lID09PSAnaW5saW5lLXRlbXBsYXRlJyk7XHJcbiAgICAgICAgaWYgKGlubGluZVRlbXBsYXRlUHJvcCAmJlxyXG4gICAgICAgICAgICBjaGVja0NvbXBhdEVuYWJsZWQoXCJDT01QSUxFUl9JTkxJTkVfVEVNUExBVEVcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfSU5MSU5FX1RFTVBMQVRFICovLCBjb250ZXh0LCBpbmxpbmVUZW1wbGF0ZVByb3AubG9jKSkge1xyXG4gICAgICAgICAgICBjb25zdCBsb2MgPSBnZXRTZWxlY3Rpb24oY29udGV4dCwgZWxlbWVudC5sb2MuZW5kKTtcclxuICAgICAgICAgICAgaW5saW5lVGVtcGxhdGVQcm9wLnZhbHVlID0ge1xyXG4gICAgICAgICAgICAgICAgdHlwZTogMiAvKiBOb2RlVHlwZXMuVEVYVCAqLyxcclxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGxvYy5zb3VyY2UsXHJcbiAgICAgICAgICAgICAgICBsb2NcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbGVtZW50LmNoaWxkcmVuID0gY2hpbGRyZW47XHJcbiAgICAvLyBFbmQgdGFnLlxyXG4gICAgaWYgKHN0YXJ0c1dpdGhFbmRUYWdPcGVuKGNvbnRleHQuc291cmNlLCBlbGVtZW50LnRhZykpIHtcclxuICAgICAgICBwYXJzZVRhZyhjb250ZXh0LCAxIC8qIFRhZ1R5cGUuRW5kICovLCBwYXJlbnQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDI0IC8qIEVycm9yQ29kZXMuWF9NSVNTSU5HX0VORF9UQUcgKi8sIDAsIGVsZW1lbnQubG9jLnN0YXJ0KTtcclxuICAgICAgICBpZiAoY29udGV4dC5zb3VyY2UubGVuZ3RoID09PSAwICYmIGVsZW1lbnQudGFnLnRvTG93ZXJDYXNlKCkgPT09ICdzY3JpcHQnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0ID0gY2hpbGRyZW5bMF07XHJcbiAgICAgICAgICAgIGlmIChmaXJzdCAmJiBzdGFydHNXaXRoKGZpcnN0LmxvYy5zb3VyY2UsICc8IS0tJykpIHtcclxuICAgICAgICAgICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCA4IC8qIEVycm9yQ29kZXMuRU9GX0lOX1NDUklQVF9IVE1MX0NPTU1FTlRfTElLRV9URVhUICovKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsZW1lbnQubG9jID0gZ2V0U2VsZWN0aW9uKGNvbnRleHQsIGVsZW1lbnQubG9jLnN0YXJ0KTtcclxuICAgIGlmIChpc1ByZUJvdW5kYXJ5KSB7XHJcbiAgICAgICAgY29udGV4dC5pblByZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzVlByZUJvdW5kYXJ5KSB7XHJcbiAgICAgICAgY29udGV4dC5pblZQcmUgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiBlbGVtZW50O1xyXG59XHJcbmNvbnN0IGlzU3BlY2lhbFRlbXBsYXRlRGlyZWN0aXZlID0gLyojX19QVVJFX18qLyBtYWtlTWFwKGBpZixlbHNlLGVsc2UtaWYsZm9yLHNsb3RgKTtcclxuZnVuY3Rpb24gcGFyc2VUYWcoY29udGV4dCwgdHlwZSwgcGFyZW50KSB7XHJcbiAgICAvLyBUYWcgb3Blbi5cclxuICAgIGNvbnN0IHN0YXJ0ID0gZ2V0Q3Vyc29yKGNvbnRleHQpO1xyXG4gICAgY29uc3QgbWF0Y2ggPSAvXjxcXC8/KFthLXpdW15cXHRcXHJcXG5cXGYgLz5dKikvaS5leGVjKGNvbnRleHQuc291cmNlKTtcclxuICAgIGNvbnN0IHRhZyA9IG1hdGNoWzFdO1xyXG4gICAgY29uc3QgbnMgPSBjb250ZXh0Lm9wdGlvbnMuZ2V0TmFtZXNwYWNlKHRhZywgcGFyZW50KTtcclxuICAgIGFkdmFuY2VCeShjb250ZXh0LCBtYXRjaFswXS5sZW5ndGgpO1xyXG4gICAgYWR2YW5jZVNwYWNlcyhjb250ZXh0KTtcclxuICAgIC8vIHNhdmUgY3VycmVudCBzdGF0ZSBpbiBjYXNlIHdlIG5lZWQgdG8gcmUtcGFyc2UgYXR0cmlidXRlcyB3aXRoIHYtcHJlXHJcbiAgICBjb25zdCBjdXJzb3IgPSBnZXRDdXJzb3IoY29udGV4dCk7XHJcbiAgICBjb25zdCBjdXJyZW50U291cmNlID0gY29udGV4dC5zb3VyY2U7XHJcbiAgICAvLyBjaGVjayA8cHJlPiB0YWdcclxuICAgIGlmIChjb250ZXh0Lm9wdGlvbnMuaXNQcmVUYWcodGFnKSkge1xyXG4gICAgICAgIGNvbnRleHQuaW5QcmUgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgLy8gQXR0cmlidXRlcy5cclxuICAgIGxldCBwcm9wcyA9IHBhcnNlQXR0cmlidXRlcyhjb250ZXh0LCB0eXBlKTtcclxuICAgIC8vIGNoZWNrIHYtcHJlXHJcbiAgICBpZiAodHlwZSA9PT0gMCAvKiBUYWdUeXBlLlN0YXJ0ICovICYmXHJcbiAgICAgICAgIWNvbnRleHQuaW5WUHJlICYmXHJcbiAgICAgICAgcHJvcHMuc29tZShwID0+IHAudHlwZSA9PT0gNyAvKiBOb2RlVHlwZXMuRElSRUNUSVZFICovICYmIHAubmFtZSA9PT0gJ3ByZScpKSB7XHJcbiAgICAgICAgY29udGV4dC5pblZQcmUgPSB0cnVlO1xyXG4gICAgICAgIC8vIHJlc2V0IGNvbnRleHRcclxuICAgICAgICBleHRlbmQoY29udGV4dCwgY3Vyc29yKTtcclxuICAgICAgICBjb250ZXh0LnNvdXJjZSA9IGN1cnJlbnRTb3VyY2U7XHJcbiAgICAgICAgLy8gcmUtcGFyc2UgYXR0cnMgYW5kIGZpbHRlciBvdXQgdi1wcmUgaXRzZWxmXHJcbiAgICAgICAgcHJvcHMgPSBwYXJzZUF0dHJpYnV0ZXMoY29udGV4dCwgdHlwZSkuZmlsdGVyKHAgPT4gcC5uYW1lICE9PSAndi1wcmUnKTtcclxuICAgIH1cclxuICAgIC8vIFRhZyBjbG9zZS5cclxuICAgIGxldCBpc1NlbGZDbG9zaW5nID0gZmFsc2U7XHJcbiAgICBpZiAoY29udGV4dC5zb3VyY2UubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDkgLyogRXJyb3JDb2Rlcy5FT0ZfSU5fVEFHICovKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGlzU2VsZkNsb3NpbmcgPSBzdGFydHNXaXRoKGNvbnRleHQuc291cmNlLCAnLz4nKTtcclxuICAgICAgICBpZiAodHlwZSA9PT0gMSAvKiBUYWdUeXBlLkVuZCAqLyAmJiBpc1NlbGZDbG9zaW5nKSB7XHJcbiAgICAgICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCA0IC8qIEVycm9yQ29kZXMuRU5EX1RBR19XSVRIX1RSQUlMSU5HX1NPTElEVVMgKi8pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhZHZhbmNlQnkoY29udGV4dCwgaXNTZWxmQ2xvc2luZyA/IDIgOiAxKTtcclxuICAgIH1cclxuICAgIGlmICh0eXBlID09PSAxIC8qIFRhZ1R5cGUuRW5kICovKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgLy8gMi54IGRlcHJlY2F0aW9uIGNoZWNrc1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgIGlzQ29tcGF0RW5hYmxlZChcIkNPTVBJTEVSX1ZfSUZfVl9GT1JfUFJFQ0VERU5DRVwiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9WX0lGX1ZfRk9SX1BSRUNFREVOQ0UgKi8sIGNvbnRleHQpKSB7XHJcbiAgICAgICAgbGV0IGhhc0lmID0gZmFsc2U7XHJcbiAgICAgICAgbGV0IGhhc0ZvciA9IGZhbHNlO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgcCA9IHByb3BzW2ldO1xyXG4gICAgICAgICAgICBpZiAocC50eXBlID09PSA3IC8qIE5vZGVUeXBlcy5ESVJFQ1RJVkUgKi8pIHtcclxuICAgICAgICAgICAgICAgIGlmIChwLm5hbWUgPT09ICdpZicpIHtcclxuICAgICAgICAgICAgICAgICAgICBoYXNJZiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChwLm5hbWUgPT09ICdmb3InKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGFzRm9yID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoaGFzSWYgJiYgaGFzRm9yKSB7XHJcbiAgICAgICAgICAgICAgICB3YXJuRGVwcmVjYXRpb24oXCJDT01QSUxFUl9WX0lGX1ZfRk9SX1BSRUNFREVOQ0VcIiAvKiBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMuQ09NUElMRVJfVl9JRl9WX0ZPUl9QUkVDRURFTkNFICovLCBjb250ZXh0LCBnZXRTZWxlY3Rpb24oY29udGV4dCwgc3RhcnQpKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IHRhZ1R5cGUgPSAwIC8qIEVsZW1lbnRUeXBlcy5FTEVNRU5UICovO1xyXG4gICAgaWYgKCFjb250ZXh0LmluVlByZSkge1xyXG4gICAgICAgIGlmICh0YWcgPT09ICdzbG90Jykge1xyXG4gICAgICAgICAgICB0YWdUeXBlID0gMiAvKiBFbGVtZW50VHlwZXMuU0xPVCAqLztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGFnID09PSAndGVtcGxhdGUnKSB7XHJcbiAgICAgICAgICAgIGlmIChwcm9wcy5zb21lKHAgPT4gcC50eXBlID09PSA3IC8qIE5vZGVUeXBlcy5ESVJFQ1RJVkUgKi8gJiYgaXNTcGVjaWFsVGVtcGxhdGVEaXJlY3RpdmUocC5uYW1lKSkpIHtcclxuICAgICAgICAgICAgICAgIHRhZ1R5cGUgPSAzIC8qIEVsZW1lbnRUeXBlcy5URU1QTEFURSAqLztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChpc0NvbXBvbmVudCh0YWcsIHByb3BzLCBjb250ZXh0KSkge1xyXG4gICAgICAgICAgICB0YWdUeXBlID0gMSAvKiBFbGVtZW50VHlwZXMuQ09NUE9ORU5UICovO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLyxcclxuICAgICAgICBucyxcclxuICAgICAgICB0YWcsXHJcbiAgICAgICAgdGFnVHlwZSxcclxuICAgICAgICBwcm9wcyxcclxuICAgICAgICBpc1NlbGZDbG9zaW5nLFxyXG4gICAgICAgIGNoaWxkcmVuOiBbXSxcclxuICAgICAgICBsb2M6IGdldFNlbGVjdGlvbihjb250ZXh0LCBzdGFydCksXHJcbiAgICAgICAgY29kZWdlbk5vZGU6IHVuZGVmaW5lZCAvLyB0byBiZSBjcmVhdGVkIGR1cmluZyB0cmFuc2Zvcm0gcGhhc2VcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gaXNDb21wb25lbnQodGFnLCBwcm9wcywgY29udGV4dCkge1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IGNvbnRleHQub3B0aW9ucztcclxuICAgIGlmIChvcHRpb25zLmlzQ3VzdG9tRWxlbWVudCh0YWcpKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHRhZyA9PT0gJ2NvbXBvbmVudCcgfHxcclxuICAgICAgICAvXltBLVpdLy50ZXN0KHRhZykgfHxcclxuICAgICAgICBpc0NvcmVDb21wb25lbnQodGFnKSB8fFxyXG4gICAgICAgIChvcHRpb25zLmlzQnVpbHRJbkNvbXBvbmVudCAmJiBvcHRpb25zLmlzQnVpbHRJbkNvbXBvbmVudCh0YWcpKSB8fFxyXG4gICAgICAgIChvcHRpb25zLmlzTmF0aXZlVGFnICYmICFvcHRpb25zLmlzTmF0aXZlVGFnKHRhZykpKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICAvLyBhdCB0aGlzIHBvaW50IHRoZSB0YWcgc2hvdWxkIGJlIGEgbmF0aXZlIHRhZywgYnV0IGNoZWNrIGZvciBwb3RlbnRpYWwgXCJpc1wiXHJcbiAgICAvLyBjYXN0aW5nXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgcCA9IHByb3BzW2ldO1xyXG4gICAgICAgIGlmIChwLnR5cGUgPT09IDYgLyogTm9kZVR5cGVzLkFUVFJJQlVURSAqLykge1xyXG4gICAgICAgICAgICBpZiAocC5uYW1lID09PSAnaXMnICYmIHAudmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIGlmIChwLnZhbHVlLmNvbnRlbnQuc3RhcnRzV2l0aCgndnVlOicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChjaGVja0NvbXBhdEVuYWJsZWQoXCJDT01QSUxFUl9JU19PTl9FTEVNRU5UXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX0lTX09OX0VMRU1FTlQgKi8sIGNvbnRleHQsIHAubG9jKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBkaXJlY3RpdmVcclxuICAgICAgICAgICAgLy8gdi1pcyAoVE9ETyBEZXByZWNhdGUpXHJcbiAgICAgICAgICAgIGlmIChwLm5hbWUgPT09ICdpcycpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAvLyA6aXMgb24gcGxhaW4gZWxlbWVudCAtIG9ubHkgdHJlYXQgYXMgY29tcG9uZW50IGluIGNvbXBhdCBtb2RlXHJcbiAgICAgICAgICAgIHAubmFtZSA9PT0gJ2JpbmQnICYmXHJcbiAgICAgICAgICAgICAgICBpc1N0YXRpY0FyZ09mKHAuYXJnLCAnaXMnKSAmJlxyXG4gICAgICAgICAgICAgICAgdHJ1ZSAmJlxyXG4gICAgICAgICAgICAgICAgY2hlY2tDb21wYXRFbmFibGVkKFwiQ09NUElMRVJfSVNfT05fRUxFTUVOVFwiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9JU19PTl9FTEVNRU5UICovLCBjb250ZXh0LCBwLmxvYykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHBhcnNlQXR0cmlidXRlcyhjb250ZXh0LCB0eXBlKSB7XHJcbiAgICBjb25zdCBwcm9wcyA9IFtdO1xyXG4gICAgY29uc3QgYXR0cmlidXRlTmFtZXMgPSBuZXcgU2V0KCk7XHJcbiAgICB3aGlsZSAoY29udGV4dC5zb3VyY2UubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgICFzdGFydHNXaXRoKGNvbnRleHQuc291cmNlLCAnPicpICYmXHJcbiAgICAgICAgIXN0YXJ0c1dpdGgoY29udGV4dC5zb3VyY2UsICcvPicpKSB7XHJcbiAgICAgICAgaWYgKHN0YXJ0c1dpdGgoY29udGV4dC5zb3VyY2UsICcvJykpIHtcclxuICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDIyIC8qIEVycm9yQ29kZXMuVU5FWFBFQ1RFRF9TT0xJRFVTX0lOX1RBRyAqLyk7XHJcbiAgICAgICAgICAgIGFkdmFuY2VCeShjb250ZXh0LCAxKTtcclxuICAgICAgICAgICAgYWR2YW5jZVNwYWNlcyhjb250ZXh0KTtcclxuICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0eXBlID09PSAxIC8qIFRhZ1R5cGUuRW5kICovKSB7XHJcbiAgICAgICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAzIC8qIEVycm9yQ29kZXMuRU5EX1RBR19XSVRIX0FUVFJJQlVURVMgKi8pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBhdHRyID0gcGFyc2VBdHRyaWJ1dGUoY29udGV4dCwgYXR0cmlidXRlTmFtZXMpO1xyXG4gICAgICAgIC8vIFRyaW0gd2hpdGVzcGFjZSBiZXR3ZWVuIGNsYXNzXHJcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3Z1ZWpzL2NvcmUvaXNzdWVzLzQyNTFcclxuICAgICAgICBpZiAoYXR0ci50eXBlID09PSA2IC8qIE5vZGVUeXBlcy5BVFRSSUJVVEUgKi8gJiZcclxuICAgICAgICAgICAgYXR0ci52YWx1ZSAmJlxyXG4gICAgICAgICAgICBhdHRyLm5hbWUgPT09ICdjbGFzcycpIHtcclxuICAgICAgICAgICAgYXR0ci52YWx1ZS5jb250ZW50ID0gYXR0ci52YWx1ZS5jb250ZW50LnJlcGxhY2UoL1xccysvZywgJyAnKS50cmltKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0eXBlID09PSAwIC8qIFRhZ1R5cGUuU3RhcnQgKi8pIHtcclxuICAgICAgICAgICAgcHJvcHMucHVzaChhdHRyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKC9eW15cXHRcXHJcXG5cXGYgLz5dLy50ZXN0KGNvbnRleHQuc291cmNlKSkge1xyXG4gICAgICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMTUgLyogRXJyb3JDb2Rlcy5NSVNTSU5HX1dISVRFU1BBQ0VfQkVUV0VFTl9BVFRSSUJVVEVTICovKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYWR2YW5jZVNwYWNlcyhjb250ZXh0KTtcclxuICAgIH1cclxuICAgIHJldHVybiBwcm9wcztcclxufVxyXG5mdW5jdGlvbiBwYXJzZUF0dHJpYnV0ZShjb250ZXh0LCBuYW1lU2V0KSB7XHJcbiAgICAvLyBOYW1lLlxyXG4gICAgY29uc3Qgc3RhcnQgPSBnZXRDdXJzb3IoY29udGV4dCk7XHJcbiAgICBjb25zdCBtYXRjaCA9IC9eW15cXHRcXHJcXG5cXGYgLz5dW15cXHRcXHJcXG5cXGYgLz49XSovLmV4ZWMoY29udGV4dC5zb3VyY2UpO1xyXG4gICAgY29uc3QgbmFtZSA9IG1hdGNoWzBdO1xyXG4gICAgaWYgKG5hbWVTZXQuaGFzKG5hbWUpKSB7XHJcbiAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDIgLyogRXJyb3JDb2Rlcy5EVVBMSUNBVEVfQVRUUklCVVRFICovKTtcclxuICAgIH1cclxuICAgIG5hbWVTZXQuYWRkKG5hbWUpO1xyXG4gICAgaWYgKG5hbWVbMF0gPT09ICc9Jykge1xyXG4gICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAxOSAvKiBFcnJvckNvZGVzLlVORVhQRUNURURfRVFVQUxTX1NJR05fQkVGT1JFX0FUVFJJQlVURV9OQU1FICovKTtcclxuICAgIH1cclxuICAgIHtcclxuICAgICAgICBjb25zdCBwYXR0ZXJuID0gL1tcIic8XS9nO1xyXG4gICAgICAgIGxldCBtO1xyXG4gICAgICAgIHdoaWxlICgobSA9IHBhdHRlcm4uZXhlYyhuYW1lKSkpIHtcclxuICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDE3IC8qIEVycm9yQ29kZXMuVU5FWFBFQ1RFRF9DSEFSQUNURVJfSU5fQVRUUklCVVRFX05BTUUgKi8sIG0uaW5kZXgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGFkdmFuY2VCeShjb250ZXh0LCBuYW1lLmxlbmd0aCk7XHJcbiAgICAvLyBWYWx1ZVxyXG4gICAgbGV0IHZhbHVlID0gdW5kZWZpbmVkO1xyXG4gICAgaWYgKC9eW1xcdFxcclxcblxcZiBdKj0vLnRlc3QoY29udGV4dC5zb3VyY2UpKSB7XHJcbiAgICAgICAgYWR2YW5jZVNwYWNlcyhjb250ZXh0KTtcclxuICAgICAgICBhZHZhbmNlQnkoY29udGV4dCwgMSk7XHJcbiAgICAgICAgYWR2YW5jZVNwYWNlcyhjb250ZXh0KTtcclxuICAgICAgICB2YWx1ZSA9IHBhcnNlQXR0cmlidXRlVmFsdWUoY29udGV4dCk7XHJcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICAgICAgICBlbWl0RXJyb3IoY29udGV4dCwgMTMgLyogRXJyb3JDb2Rlcy5NSVNTSU5HX0FUVFJJQlVURV9WQUxVRSAqLyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgbG9jID0gZ2V0U2VsZWN0aW9uKGNvbnRleHQsIHN0YXJ0KTtcclxuICAgIGlmICghY29udGV4dC5pblZQcmUgJiYgL14odi1bQS1aYS16MC05LV18OnxcXC58QHwjKS8udGVzdChuYW1lKSkge1xyXG4gICAgICAgIGNvbnN0IG1hdGNoID0gLyg/Ol52LShbYS16MC05LV0rKSk/KD86KD86OnxeXFwufF5AfF4jKShcXFtbXlxcXV0rXFxdfFteXFwuXSspKT8oLispPyQvaS5leGVjKG5hbWUpO1xyXG4gICAgICAgIGxldCBpc1Byb3BTaG9ydGhhbmQgPSBzdGFydHNXaXRoKG5hbWUsICcuJyk7XHJcbiAgICAgICAgbGV0IGRpck5hbWUgPSBtYXRjaFsxXSB8fFxyXG4gICAgICAgICAgICAoaXNQcm9wU2hvcnRoYW5kIHx8IHN0YXJ0c1dpdGgobmFtZSwgJzonKVxyXG4gICAgICAgICAgICAgICAgPyAnYmluZCdcclxuICAgICAgICAgICAgICAgIDogc3RhcnRzV2l0aChuYW1lLCAnQCcpXHJcbiAgICAgICAgICAgICAgICAgICAgPyAnb24nXHJcbiAgICAgICAgICAgICAgICAgICAgOiAnc2xvdCcpO1xyXG4gICAgICAgIGxldCBhcmc7XHJcbiAgICAgICAgaWYgKG1hdGNoWzJdKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzU2xvdCA9IGRpck5hbWUgPT09ICdzbG90JztcclxuICAgICAgICAgICAgY29uc3Qgc3RhcnRPZmZzZXQgPSBuYW1lLmxhc3RJbmRleE9mKG1hdGNoWzJdKTtcclxuICAgICAgICAgICAgY29uc3QgbG9jID0gZ2V0U2VsZWN0aW9uKGNvbnRleHQsIGdldE5ld1Bvc2l0aW9uKGNvbnRleHQsIHN0YXJ0LCBzdGFydE9mZnNldCksIGdldE5ld1Bvc2l0aW9uKGNvbnRleHQsIHN0YXJ0LCBzdGFydE9mZnNldCArIG1hdGNoWzJdLmxlbmd0aCArICgoaXNTbG90ICYmIG1hdGNoWzNdKSB8fCAnJykubGVuZ3RoKSk7XHJcbiAgICAgICAgICAgIGxldCBjb250ZW50ID0gbWF0Y2hbMl07XHJcbiAgICAgICAgICAgIGxldCBpc1N0YXRpYyA9IHRydWU7XHJcbiAgICAgICAgICAgIGlmIChjb250ZW50LnN0YXJ0c1dpdGgoJ1snKSkge1xyXG4gICAgICAgICAgICAgICAgaXNTdGF0aWMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGlmICghY29udGVudC5lbmRzV2l0aCgnXScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDI3IC8qIEVycm9yQ29kZXMuWF9NSVNTSU5HX0RZTkFNSUNfRElSRUNUSVZFX0FSR1VNRU5UX0VORCAqLyk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnQuc2xpY2UoMSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gY29udGVudC5zbGljZSgxLCBjb250ZW50Lmxlbmd0aCAtIDEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGlzU2xvdCkge1xyXG4gICAgICAgICAgICAgICAgLy8gIzEyNDEgc3BlY2lhbCBjYXNlIGZvciB2LXNsb3Q6IHZ1ZXRpZnkgcmVsaWVzIGV4dGVuc2l2ZWx5IG9uIHNsb3RcclxuICAgICAgICAgICAgICAgIC8vIG5hbWVzIGNvbnRhaW5pbmcgZG90cy4gdi1zbG90IGRvZXNuJ3QgaGF2ZSBhbnkgbW9kaWZpZXJzIGFuZCBWdWUgMi54XHJcbiAgICAgICAgICAgICAgICAvLyBzdXBwb3J0cyBzdWNoIHVzYWdlIHNvIHdlIGFyZSBrZWVwaW5nIGl0IGNvbnNpc3RlbnQgd2l0aCAyLnguXHJcbiAgICAgICAgICAgICAgICBjb250ZW50ICs9IG1hdGNoWzNdIHx8ICcnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGFyZyA9IHtcclxuICAgICAgICAgICAgICAgIHR5cGU6IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovLFxyXG4gICAgICAgICAgICAgICAgY29udGVudCxcclxuICAgICAgICAgICAgICAgIGlzU3RhdGljLFxyXG4gICAgICAgICAgICAgICAgY29uc3RUeXBlOiBpc1N0YXRpY1xyXG4gICAgICAgICAgICAgICAgICAgID8gMyAvKiBDb25zdGFudFR5cGVzLkNBTl9TVFJJTkdJRlkgKi9cclxuICAgICAgICAgICAgICAgICAgICA6IDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi8sXHJcbiAgICAgICAgICAgICAgICBsb2NcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLmlzUXVvdGVkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlTG9jID0gdmFsdWUubG9jO1xyXG4gICAgICAgICAgICB2YWx1ZUxvYy5zdGFydC5vZmZzZXQrKztcclxuICAgICAgICAgICAgdmFsdWVMb2Muc3RhcnQuY29sdW1uKys7XHJcbiAgICAgICAgICAgIHZhbHVlTG9jLmVuZCA9IGFkdmFuY2VQb3NpdGlvbldpdGhDbG9uZSh2YWx1ZUxvYy5zdGFydCwgdmFsdWUuY29udGVudCk7XHJcbiAgICAgICAgICAgIHZhbHVlTG9jLnNvdXJjZSA9IHZhbHVlTG9jLnNvdXJjZS5zbGljZSgxLCAtMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IG1vZGlmaWVycyA9IG1hdGNoWzNdID8gbWF0Y2hbM10uc2xpY2UoMSkuc3BsaXQoJy4nKSA6IFtdO1xyXG4gICAgICAgIGlmIChpc1Byb3BTaG9ydGhhbmQpXHJcbiAgICAgICAgICAgIG1vZGlmaWVycy5wdXNoKCdwcm9wJyk7XHJcbiAgICAgICAgLy8gMi54IGNvbXBhdCB2LWJpbmQ6Zm9vLnN5bmMgLT4gdi1tb2RlbDpmb29cclxuICAgICAgICBpZiAoZGlyTmFtZSA9PT0gJ2JpbmQnICYmIGFyZykge1xyXG4gICAgICAgICAgICBpZiAobW9kaWZpZXJzLmluY2x1ZGVzKCdzeW5jJykgJiZcclxuICAgICAgICAgICAgICAgIGNoZWNrQ29tcGF0RW5hYmxlZChcIkNPTVBJTEVSX1ZfQklORF9TWU5DXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX1ZfQklORF9TWU5DICovLCBjb250ZXh0LCBsb2MsIGFyZy5sb2Muc291cmNlKSkge1xyXG4gICAgICAgICAgICAgICAgZGlyTmFtZSA9ICdtb2RlbCc7XHJcbiAgICAgICAgICAgICAgICBtb2RpZmllcnMuc3BsaWNlKG1vZGlmaWVycy5pbmRleE9mKCdzeW5jJyksIDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgbW9kaWZpZXJzLmluY2x1ZGVzKCdwcm9wJykpIHtcclxuICAgICAgICAgICAgICAgIGNoZWNrQ29tcGF0RW5hYmxlZChcIkNPTVBJTEVSX1ZfQklORF9QUk9QXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX1ZfQklORF9QUk9QICovLCBjb250ZXh0LCBsb2MpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHR5cGU6IDcgLyogTm9kZVR5cGVzLkRJUkVDVElWRSAqLyxcclxuICAgICAgICAgICAgbmFtZTogZGlyTmFtZSxcclxuICAgICAgICAgICAgZXhwOiB2YWx1ZSAmJiB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLyxcclxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHZhbHVlLmNvbnRlbnQsXHJcbiAgICAgICAgICAgICAgICBpc1N0YXRpYzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAvLyBUcmVhdCBhcyBub24tY29uc3RhbnQgYnkgZGVmYXVsdC4gVGhpcyBjYW4gYmUgcG90ZW50aWFsbHkgc2V0IHRvXHJcbiAgICAgICAgICAgICAgICAvLyBvdGhlciB2YWx1ZXMgYnkgYHRyYW5zZm9ybUV4cHJlc3Npb25gIHRvIG1ha2UgaXQgZWxpZ2libGUgZm9yIGhvaXN0aW5nLlxyXG4gICAgICAgICAgICAgICAgY29uc3RUeXBlOiAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovLFxyXG4gICAgICAgICAgICAgICAgbG9jOiB2YWx1ZS5sb2NcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYXJnLFxyXG4gICAgICAgICAgICBtb2RpZmllcnMsXHJcbiAgICAgICAgICAgIGxvY1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbiAgICAvLyBtaXNzaW5nIGRpcmVjdGl2ZSBuYW1lIG9yIGlsbGVnYWwgZGlyZWN0aXZlIG5hbWVcclxuICAgIGlmICghY29udGV4dC5pblZQcmUgJiYgc3RhcnRzV2l0aChuYW1lLCAndi0nKSkge1xyXG4gICAgICAgIGVtaXRFcnJvcihjb250ZXh0LCAyNiAvKiBFcnJvckNvZGVzLlhfTUlTU0lOR19ESVJFQ1RJVkVfTkFNRSAqLyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGU6IDYgLyogTm9kZVR5cGVzLkFUVFJJQlVURSAqLyxcclxuICAgICAgICBuYW1lLFxyXG4gICAgICAgIHZhbHVlOiB2YWx1ZSAmJiB7XHJcbiAgICAgICAgICAgIHR5cGU6IDIgLyogTm9kZVR5cGVzLlRFWFQgKi8sXHJcbiAgICAgICAgICAgIGNvbnRlbnQ6IHZhbHVlLmNvbnRlbnQsXHJcbiAgICAgICAgICAgIGxvYzogdmFsdWUubG9jXHJcbiAgICAgICAgfSxcclxuICAgICAgICBsb2NcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gcGFyc2VBdHRyaWJ1dGVWYWx1ZShjb250ZXh0KSB7XHJcbiAgICBjb25zdCBzdGFydCA9IGdldEN1cnNvcihjb250ZXh0KTtcclxuICAgIGxldCBjb250ZW50O1xyXG4gICAgY29uc3QgcXVvdGUgPSBjb250ZXh0LnNvdXJjZVswXTtcclxuICAgIGNvbnN0IGlzUXVvdGVkID0gcXVvdGUgPT09IGBcImAgfHwgcXVvdGUgPT09IGAnYDtcclxuICAgIGlmIChpc1F1b3RlZCkge1xyXG4gICAgICAgIC8vIFF1b3RlZCB2YWx1ZS5cclxuICAgICAgICBhZHZhbmNlQnkoY29udGV4dCwgMSk7XHJcbiAgICAgICAgY29uc3QgZW5kSW5kZXggPSBjb250ZXh0LnNvdXJjZS5pbmRleE9mKHF1b3RlKTtcclxuICAgICAgICBpZiAoZW5kSW5kZXggPT09IC0xKSB7XHJcbiAgICAgICAgICAgIGNvbnRlbnQgPSBwYXJzZVRleHREYXRhKGNvbnRleHQsIGNvbnRleHQuc291cmNlLmxlbmd0aCwgNCAvKiBUZXh0TW9kZXMuQVRUUklCVVRFX1ZBTFVFICovKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnRlbnQgPSBwYXJzZVRleHREYXRhKGNvbnRleHQsIGVuZEluZGV4LCA0IC8qIFRleHRNb2Rlcy5BVFRSSUJVVEVfVkFMVUUgKi8pO1xyXG4gICAgICAgICAgICBhZHZhbmNlQnkoY29udGV4dCwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgLy8gVW5xdW90ZWRcclxuICAgICAgICBjb25zdCBtYXRjaCA9IC9eW15cXHRcXHJcXG5cXGYgPl0rLy5leGVjKGNvbnRleHQuc291cmNlKTtcclxuICAgICAgICBpZiAoIW1hdGNoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHVuZXhwZWN0ZWRDaGFycyA9IC9bXCInPD1gXS9nO1xyXG4gICAgICAgIGxldCBtO1xyXG4gICAgICAgIHdoaWxlICgobSA9IHVuZXhwZWN0ZWRDaGFycy5leGVjKG1hdGNoWzBdKSkpIHtcclxuICAgICAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDE4IC8qIEVycm9yQ29kZXMuVU5FWFBFQ1RFRF9DSEFSQUNURVJfSU5fVU5RVU9URURfQVRUUklCVVRFX1ZBTFVFICovLCBtLmluZGV4KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29udGVudCA9IHBhcnNlVGV4dERhdGEoY29udGV4dCwgbWF0Y2hbMF0ubGVuZ3RoLCA0IC8qIFRleHRNb2Rlcy5BVFRSSUJVVEVfVkFMVUUgKi8pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgY29udGVudCwgaXNRdW90ZWQsIGxvYzogZ2V0U2VsZWN0aW9uKGNvbnRleHQsIHN0YXJ0KSB9O1xyXG59XHJcbmZ1bmN0aW9uIHBhcnNlSW50ZXJwb2xhdGlvbihjb250ZXh0LCBtb2RlKSB7XHJcbiAgICBjb25zdCBbb3BlbiwgY2xvc2VdID0gY29udGV4dC5vcHRpb25zLmRlbGltaXRlcnM7XHJcbiAgICBjb25zdCBjbG9zZUluZGV4ID0gY29udGV4dC5zb3VyY2UuaW5kZXhPZihjbG9zZSwgb3Blbi5sZW5ndGgpO1xyXG4gICAgaWYgKGNsb3NlSW5kZXggPT09IC0xKSB7XHJcbiAgICAgICAgZW1pdEVycm9yKGNvbnRleHQsIDI1IC8qIEVycm9yQ29kZXMuWF9NSVNTSU5HX0lOVEVSUE9MQVRJT05fRU5EICovKTtcclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgc3RhcnQgPSBnZXRDdXJzb3IoY29udGV4dCk7XHJcbiAgICBhZHZhbmNlQnkoY29udGV4dCwgb3Blbi5sZW5ndGgpO1xyXG4gICAgY29uc3QgaW5uZXJTdGFydCA9IGdldEN1cnNvcihjb250ZXh0KTtcclxuICAgIGNvbnN0IGlubmVyRW5kID0gZ2V0Q3Vyc29yKGNvbnRleHQpO1xyXG4gICAgY29uc3QgcmF3Q29udGVudExlbmd0aCA9IGNsb3NlSW5kZXggLSBvcGVuLmxlbmd0aDtcclxuICAgIGNvbnN0IHJhd0NvbnRlbnQgPSBjb250ZXh0LnNvdXJjZS5zbGljZSgwLCByYXdDb250ZW50TGVuZ3RoKTtcclxuICAgIGNvbnN0IHByZVRyaW1Db250ZW50ID0gcGFyc2VUZXh0RGF0YShjb250ZXh0LCByYXdDb250ZW50TGVuZ3RoLCBtb2RlKTtcclxuICAgIGNvbnN0IGNvbnRlbnQgPSBwcmVUcmltQ29udGVudC50cmltKCk7XHJcbiAgICBjb25zdCBzdGFydE9mZnNldCA9IHByZVRyaW1Db250ZW50LmluZGV4T2YoY29udGVudCk7XHJcbiAgICBpZiAoc3RhcnRPZmZzZXQgPiAwKSB7XHJcbiAgICAgICAgYWR2YW5jZVBvc2l0aW9uV2l0aE11dGF0aW9uKGlubmVyU3RhcnQsIHJhd0NvbnRlbnQsIHN0YXJ0T2Zmc2V0KTtcclxuICAgIH1cclxuICAgIGNvbnN0IGVuZE9mZnNldCA9IHJhd0NvbnRlbnRMZW5ndGggLSAocHJlVHJpbUNvbnRlbnQubGVuZ3RoIC0gY29udGVudC5sZW5ndGggLSBzdGFydE9mZnNldCk7XHJcbiAgICBhZHZhbmNlUG9zaXRpb25XaXRoTXV0YXRpb24oaW5uZXJFbmQsIHJhd0NvbnRlbnQsIGVuZE9mZnNldCk7XHJcbiAgICBhZHZhbmNlQnkoY29udGV4dCwgY2xvc2UubGVuZ3RoKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogNSAvKiBOb2RlVHlwZXMuSU5URVJQT0xBVElPTiAqLyxcclxuICAgICAgICBjb250ZW50OiB7XHJcbiAgICAgICAgICAgIHR5cGU6IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovLFxyXG4gICAgICAgICAgICBpc1N0YXRpYzogZmFsc2UsXHJcbiAgICAgICAgICAgIC8vIFNldCBgaXNDb25zdGFudGAgdG8gZmFsc2UgYnkgZGVmYXVsdCBhbmQgd2lsbCBkZWNpZGUgaW4gdHJhbnNmb3JtRXhwcmVzc2lvblxyXG4gICAgICAgICAgICBjb25zdFR5cGU6IDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi8sXHJcbiAgICAgICAgICAgIGNvbnRlbnQsXHJcbiAgICAgICAgICAgIGxvYzogZ2V0U2VsZWN0aW9uKGNvbnRleHQsIGlubmVyU3RhcnQsIGlubmVyRW5kKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbG9jOiBnZXRTZWxlY3Rpb24oY29udGV4dCwgc3RhcnQpXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIHBhcnNlVGV4dChjb250ZXh0LCBtb2RlKSB7XHJcbiAgICBjb25zdCBlbmRUb2tlbnMgPSBtb2RlID09PSAzIC8qIFRleHRNb2Rlcy5DREFUQSAqLyA/IFsnXV0+J10gOiBbJzwnLCBjb250ZXh0Lm9wdGlvbnMuZGVsaW1pdGVyc1swXV07XHJcbiAgICBsZXQgZW5kSW5kZXggPSBjb250ZXh0LnNvdXJjZS5sZW5ndGg7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVuZFRva2Vucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gY29udGV4dC5zb3VyY2UuaW5kZXhPZihlbmRUb2tlbnNbaV0sIDEpO1xyXG4gICAgICAgIGlmIChpbmRleCAhPT0gLTEgJiYgZW5kSW5kZXggPiBpbmRleCkge1xyXG4gICAgICAgICAgICBlbmRJbmRleCA9IGluZGV4O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IHN0YXJ0ID0gZ2V0Q3Vyc29yKGNvbnRleHQpO1xyXG4gICAgY29uc3QgY29udGVudCA9IHBhcnNlVGV4dERhdGEoY29udGV4dCwgZW5kSW5kZXgsIG1vZGUpO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0eXBlOiAyIC8qIE5vZGVUeXBlcy5URVhUICovLFxyXG4gICAgICAgIGNvbnRlbnQsXHJcbiAgICAgICAgbG9jOiBnZXRTZWxlY3Rpb24oY29udGV4dCwgc3RhcnQpXHJcbiAgICB9O1xyXG59XHJcbi8qKlxyXG4gKiBHZXQgdGV4dCBkYXRhIHdpdGggYSBnaXZlbiBsZW5ndGggZnJvbSB0aGUgY3VycmVudCBsb2NhdGlvbi5cclxuICogVGhpcyB0cmFuc2xhdGVzIEhUTUwgZW50aXRpZXMgaW4gdGhlIHRleHQgZGF0YS5cclxuICovXHJcbmZ1bmN0aW9uIHBhcnNlVGV4dERhdGEoY29udGV4dCwgbGVuZ3RoLCBtb2RlKSB7XHJcbiAgICBjb25zdCByYXdUZXh0ID0gY29udGV4dC5zb3VyY2Uuc2xpY2UoMCwgbGVuZ3RoKTtcclxuICAgIGFkdmFuY2VCeShjb250ZXh0LCBsZW5ndGgpO1xyXG4gICAgaWYgKG1vZGUgPT09IDIgLyogVGV4dE1vZGVzLlJBV1RFWFQgKi8gfHxcclxuICAgICAgICBtb2RlID09PSAzIC8qIFRleHRNb2Rlcy5DREFUQSAqLyB8fFxyXG4gICAgICAgICFyYXdUZXh0LmluY2x1ZGVzKCcmJykpIHtcclxuICAgICAgICByZXR1cm4gcmF3VGV4dDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIERBVEEgb3IgUkNEQVRBIGNvbnRhaW5pbmcgXCImXCJcIi4gRW50aXR5IGRlY29kaW5nIHJlcXVpcmVkLlxyXG4gICAgICAgIHJldHVybiBjb250ZXh0Lm9wdGlvbnMuZGVjb2RlRW50aXRpZXMocmF3VGV4dCwgbW9kZSA9PT0gNCAvKiBUZXh0TW9kZXMuQVRUUklCVVRFX1ZBTFVFICovKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBnZXRDdXJzb3IoY29udGV4dCkge1xyXG4gICAgY29uc3QgeyBjb2x1bW4sIGxpbmUsIG9mZnNldCB9ID0gY29udGV4dDtcclxuICAgIHJldHVybiB7IGNvbHVtbiwgbGluZSwgb2Zmc2V0IH07XHJcbn1cclxuZnVuY3Rpb24gZ2V0U2VsZWN0aW9uKGNvbnRleHQsIHN0YXJ0LCBlbmQpIHtcclxuICAgIGVuZCA9IGVuZCB8fCBnZXRDdXJzb3IoY29udGV4dCk7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHN0YXJ0LFxyXG4gICAgICAgIGVuZCxcclxuICAgICAgICBzb3VyY2U6IGNvbnRleHQub3JpZ2luYWxTb3VyY2Uuc2xpY2Uoc3RhcnQub2Zmc2V0LCBlbmQub2Zmc2V0KVxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBsYXN0KHhzKSB7XHJcbiAgICByZXR1cm4geHNbeHMubGVuZ3RoIC0gMV07XHJcbn1cclxuZnVuY3Rpb24gc3RhcnRzV2l0aChzb3VyY2UsIHNlYXJjaFN0cmluZykge1xyXG4gICAgcmV0dXJuIHNvdXJjZS5zdGFydHNXaXRoKHNlYXJjaFN0cmluZyk7XHJcbn1cclxuZnVuY3Rpb24gYWR2YW5jZUJ5KGNvbnRleHQsIG51bWJlck9mQ2hhcmFjdGVycykge1xyXG4gICAgY29uc3QgeyBzb3VyY2UgfSA9IGNvbnRleHQ7XHJcbiAgICBhZHZhbmNlUG9zaXRpb25XaXRoTXV0YXRpb24oY29udGV4dCwgc291cmNlLCBudW1iZXJPZkNoYXJhY3RlcnMpO1xyXG4gICAgY29udGV4dC5zb3VyY2UgPSBzb3VyY2Uuc2xpY2UobnVtYmVyT2ZDaGFyYWN0ZXJzKTtcclxufVxyXG5mdW5jdGlvbiBhZHZhbmNlU3BhY2VzKGNvbnRleHQpIHtcclxuICAgIGNvbnN0IG1hdGNoID0gL15bXFx0XFxyXFxuXFxmIF0rLy5leGVjKGNvbnRleHQuc291cmNlKTtcclxuICAgIGlmIChtYXRjaCkge1xyXG4gICAgICAgIGFkdmFuY2VCeShjb250ZXh0LCBtYXRjaFswXS5sZW5ndGgpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGdldE5ld1Bvc2l0aW9uKGNvbnRleHQsIHN0YXJ0LCBudW1iZXJPZkNoYXJhY3RlcnMpIHtcclxuICAgIHJldHVybiBhZHZhbmNlUG9zaXRpb25XaXRoQ2xvbmUoc3RhcnQsIGNvbnRleHQub3JpZ2luYWxTb3VyY2Uuc2xpY2Uoc3RhcnQub2Zmc2V0LCBudW1iZXJPZkNoYXJhY3RlcnMpLCBudW1iZXJPZkNoYXJhY3RlcnMpO1xyXG59XHJcbmZ1bmN0aW9uIGVtaXRFcnJvcihjb250ZXh0LCBjb2RlLCBvZmZzZXQsIGxvYyA9IGdldEN1cnNvcihjb250ZXh0KSkge1xyXG4gICAgaWYgKG9mZnNldCkge1xyXG4gICAgICAgIGxvYy5vZmZzZXQgKz0gb2Zmc2V0O1xyXG4gICAgICAgIGxvYy5jb2x1bW4gKz0gb2Zmc2V0O1xyXG4gICAgfVxyXG4gICAgY29udGV4dC5vcHRpb25zLm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcihjb2RlLCB7XHJcbiAgICAgICAgc3RhcnQ6IGxvYyxcclxuICAgICAgICBlbmQ6IGxvYyxcclxuICAgICAgICBzb3VyY2U6ICcnXHJcbiAgICB9KSk7XHJcbn1cclxuZnVuY3Rpb24gaXNFbmQoY29udGV4dCwgbW9kZSwgYW5jZXN0b3JzKSB7XHJcbiAgICBjb25zdCBzID0gY29udGV4dC5zb3VyY2U7XHJcbiAgICBzd2l0Y2ggKG1vZGUpIHtcclxuICAgICAgICBjYXNlIDAgLyogVGV4dE1vZGVzLkRBVEEgKi86XHJcbiAgICAgICAgICAgIGlmIChzdGFydHNXaXRoKHMsICc8LycpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBUT0RPOiBwcm9iYWJseSBiYWQgcGVyZm9ybWFuY2VcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSBhbmNlc3RvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnRzV2l0aEVuZFRhZ09wZW4ocywgYW5jZXN0b3JzW2ldLnRhZykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMSAvKiBUZXh0TW9kZXMuUkNEQVRBICovOlxyXG4gICAgICAgIGNhc2UgMiAvKiBUZXh0TW9kZXMuUkFXVEVYVCAqLzoge1xyXG4gICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBsYXN0KGFuY2VzdG9ycyk7XHJcbiAgICAgICAgICAgIGlmIChwYXJlbnQgJiYgc3RhcnRzV2l0aEVuZFRhZ09wZW4ocywgcGFyZW50LnRhZykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlIDMgLyogVGV4dE1vZGVzLkNEQVRBICovOlxyXG4gICAgICAgICAgICBpZiAoc3RhcnRzV2l0aChzLCAnXV0+JykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICFzO1xyXG59XHJcbmZ1bmN0aW9uIHN0YXJ0c1dpdGhFbmRUYWdPcGVuKHNvdXJjZSwgdGFnKSB7XHJcbiAgICByZXR1cm4gKHN0YXJ0c1dpdGgoc291cmNlLCAnPC8nKSAmJlxyXG4gICAgICAgIHNvdXJjZS5zbGljZSgyLCAyICsgdGFnLmxlbmd0aCkudG9Mb3dlckNhc2UoKSA9PT0gdGFnLnRvTG93ZXJDYXNlKCkgJiZcclxuICAgICAgICAvW1xcdFxcclxcblxcZiAvPl0vLnRlc3Qoc291cmNlWzIgKyB0YWcubGVuZ3RoXSB8fCAnPicpKTtcclxufVxuXG5mdW5jdGlvbiBob2lzdFN0YXRpYyhyb290LCBjb250ZXh0KSB7XHJcbiAgICB3YWxrKHJvb3QsIGNvbnRleHQsIFxyXG4gICAgLy8gUm9vdCBub2RlIGlzIHVuZm9ydHVuYXRlbHkgbm9uLWhvaXN0YWJsZSBkdWUgdG8gcG90ZW50aWFsIHBhcmVudFxyXG4gICAgLy8gZmFsbHRocm91Z2ggYXR0cmlidXRlcy5cclxuICAgIGlzU2luZ2xlRWxlbWVudFJvb3Qocm9vdCwgcm9vdC5jaGlsZHJlblswXSkpO1xyXG59XHJcbmZ1bmN0aW9uIGlzU2luZ2xlRWxlbWVudFJvb3Qocm9vdCwgY2hpbGQpIHtcclxuICAgIGNvbnN0IHsgY2hpbGRyZW4gfSA9IHJvb3Q7XHJcbiAgICByZXR1cm4gKGNoaWxkcmVuLmxlbmd0aCA9PT0gMSAmJlxyXG4gICAgICAgIGNoaWxkLnR5cGUgPT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8gJiZcclxuICAgICAgICAhaXNTbG90T3V0bGV0KGNoaWxkKSk7XHJcbn1cclxuZnVuY3Rpb24gd2Fsayhub2RlLCBjb250ZXh0LCBkb05vdEhvaXN0Tm9kZSA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCB7IGNoaWxkcmVuIH0gPSBub2RlO1xyXG4gICAgY29uc3Qgb3JpZ2luYWxDb3VudCA9IGNoaWxkcmVuLmxlbmd0aDtcclxuICAgIGxldCBob2lzdGVkQ291bnQgPSAwO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGNoaWxkID0gY2hpbGRyZW5baV07XHJcbiAgICAgICAgLy8gb25seSBwbGFpbiBlbGVtZW50cyAmIHRleHQgY2FsbHMgYXJlIGVsaWdpYmxlIGZvciBob2lzdGluZy5cclxuICAgICAgICBpZiAoY2hpbGQudHlwZSA9PT0gMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLyAmJlxyXG4gICAgICAgICAgICBjaGlsZC50YWdUeXBlID09PSAwIC8qIEVsZW1lbnRUeXBlcy5FTEVNRU5UICovKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbnN0YW50VHlwZSA9IGRvTm90SG9pc3ROb2RlXHJcbiAgICAgICAgICAgICAgICA/IDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi9cclxuICAgICAgICAgICAgICAgIDogZ2V0Q29uc3RhbnRUeXBlKGNoaWxkLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgaWYgKGNvbnN0YW50VHlwZSA+IDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgIGlmIChjb25zdGFudFR5cGUgPj0gMiAvKiBDb25zdGFudFR5cGVzLkNBTl9IT0lTVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkLmNvZGVnZW5Ob2RlLnBhdGNoRmxhZyA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC0xIC8qIFBhdGNoRmxhZ3MuSE9JU1RFRCAqLyArICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgIC8qIEhPSVNURUQgKi9gIDogYGApO1xyXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkLmNvZGVnZW5Ob2RlID0gY29udGV4dC5ob2lzdChjaGlsZC5jb2RlZ2VuTm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaG9pc3RlZENvdW50Kys7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBub2RlIG1heSBjb250YWluIGR5bmFtaWMgY2hpbGRyZW4sIGJ1dCBpdHMgcHJvcHMgbWF5IGJlIGVsaWdpYmxlIGZvclxyXG4gICAgICAgICAgICAgICAgLy8gaG9pc3RpbmcuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb2RlZ2VuTm9kZSA9IGNoaWxkLmNvZGVnZW5Ob2RlO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvZGVnZW5Ob2RlLnR5cGUgPT09IDEzIC8qIE5vZGVUeXBlcy5WTk9ERV9DQUxMICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmxhZyA9IGdldFBhdGNoRmxhZyhjb2RlZ2VuTm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCghZmxhZyB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmbGFnID09PSA1MTIgLyogUGF0Y2hGbGFncy5ORUVEX1BBVENIICovIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZsYWcgPT09IDEgLyogUGF0Y2hGbGFncy5URVhUICovKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRHZW5lcmF0ZWRQcm9wc0NvbnN0YW50VHlwZShjaGlsZCwgY29udGV4dCkgPj1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgLyogQ29uc3RhbnRUeXBlcy5DQU5fSE9JU1QgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJvcHMgPSBnZXROb2RlUHJvcHMoY2hpbGQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJvcHMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVnZW5Ob2RlLnByb3BzID0gY29udGV4dC5ob2lzdChwcm9wcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvZGVnZW5Ob2RlLmR5bmFtaWNQcm9wcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlZ2VuTm9kZS5keW5hbWljUHJvcHMgPSBjb250ZXh0LmhvaXN0KGNvZGVnZW5Ob2RlLmR5bmFtaWNQcm9wcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGNoaWxkLnR5cGUgPT09IDEyIC8qIE5vZGVUeXBlcy5URVhUX0NBTEwgKi8gJiZcclxuICAgICAgICAgICAgZ2V0Q29uc3RhbnRUeXBlKGNoaWxkLmNvbnRlbnQsIGNvbnRleHQpID49IDIgLyogQ29uc3RhbnRUeXBlcy5DQU5fSE9JU1QgKi8pIHtcclxuICAgICAgICAgICAgY2hpbGQuY29kZWdlbk5vZGUgPSBjb250ZXh0LmhvaXN0KGNoaWxkLmNvZGVnZW5Ob2RlKTtcclxuICAgICAgICAgICAgaG9pc3RlZENvdW50Kys7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHdhbGsgZnVydGhlclxyXG4gICAgICAgIGlmIChjaGlsZC50eXBlID09PSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzQ29tcG9uZW50ID0gY2hpbGQudGFnVHlwZSA9PT0gMSAvKiBFbGVtZW50VHlwZXMuQ09NUE9ORU5UICovO1xyXG4gICAgICAgICAgICBpZiAoaXNDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuc2NvcGVzLnZTbG90Kys7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgd2FsayhjaGlsZCwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIGlmIChpc0NvbXBvbmVudCkge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5zY29wZXMudlNsb3QtLTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChjaGlsZC50eXBlID09PSAxMSAvKiBOb2RlVHlwZXMuRk9SICovKSB7XHJcbiAgICAgICAgICAgIC8vIERvIG5vdCBob2lzdCB2LWZvciBzaW5nbGUgY2hpbGQgYmVjYXVzZSBpdCBoYXMgdG8gYmUgYSBibG9ja1xyXG4gICAgICAgICAgICB3YWxrKGNoaWxkLCBjb250ZXh0LCBjaGlsZC5jaGlsZHJlbi5sZW5ndGggPT09IDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChjaGlsZC50eXBlID09PSA5IC8qIE5vZGVUeXBlcy5JRiAqLykge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkLmJyYW5jaGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBEbyBub3QgaG9pc3Qgdi1pZiBzaW5nbGUgY2hpbGQgYmVjYXVzZSBpdCBoYXMgdG8gYmUgYSBibG9ja1xyXG4gICAgICAgICAgICAgICAgd2FsayhjaGlsZC5icmFuY2hlc1tpXSwgY29udGV4dCwgY2hpbGQuYnJhbmNoZXNbaV0uY2hpbGRyZW4ubGVuZ3RoID09PSAxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChob2lzdGVkQ291bnQgJiYgY29udGV4dC50cmFuc2Zvcm1Ib2lzdCkge1xyXG4gICAgICAgIGNvbnRleHQudHJhbnNmb3JtSG9pc3QoY2hpbGRyZW4sIGNvbnRleHQsIG5vZGUpO1xyXG4gICAgfVxyXG4gICAgLy8gYWxsIGNoaWxkcmVuIHdlcmUgaG9pc3RlZCAtIHRoZSBlbnRpcmUgY2hpbGRyZW4gYXJyYXkgaXMgaG9pc3RhYmxlLlxyXG4gICAgaWYgKGhvaXN0ZWRDb3VudCAmJlxyXG4gICAgICAgIGhvaXN0ZWRDb3VudCA9PT0gb3JpZ2luYWxDb3VudCAmJlxyXG4gICAgICAgIG5vZGUudHlwZSA9PT0gMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLyAmJlxyXG4gICAgICAgIG5vZGUudGFnVHlwZSA9PT0gMCAvKiBFbGVtZW50VHlwZXMuRUxFTUVOVCAqLyAmJlxyXG4gICAgICAgIG5vZGUuY29kZWdlbk5vZGUgJiZcclxuICAgICAgICBub2RlLmNvZGVnZW5Ob2RlLnR5cGUgPT09IDEzIC8qIE5vZGVUeXBlcy5WTk9ERV9DQUxMICovICYmXHJcbiAgICAgICAgaXNBcnJheShub2RlLmNvZGVnZW5Ob2RlLmNoaWxkcmVuKSkge1xyXG4gICAgICAgIG5vZGUuY29kZWdlbk5vZGUuY2hpbGRyZW4gPSBjb250ZXh0LmhvaXN0KGNyZWF0ZUFycmF5RXhwcmVzc2lvbihub2RlLmNvZGVnZW5Ob2RlLmNoaWxkcmVuKSk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZ2V0Q29uc3RhbnRUeXBlKG5vZGUsIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IHsgY29uc3RhbnRDYWNoZSB9ID0gY29udGV4dDtcclxuICAgIHN3aXRjaCAobm9kZS50eXBlKSB7XHJcbiAgICAgICAgY2FzZSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovOlxyXG4gICAgICAgICAgICBpZiAobm9kZS50YWdUeXBlICE9PSAwIC8qIEVsZW1lbnRUeXBlcy5FTEVNRU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBjYWNoZWQgPSBjb25zdGFudENhY2hlLmdldChub2RlKTtcclxuICAgICAgICAgICAgaWYgKGNhY2hlZCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2FjaGVkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGNvZGVnZW5Ob2RlID0gbm9kZS5jb2RlZ2VuTm9kZTtcclxuICAgICAgICAgICAgaWYgKGNvZGVnZW5Ob2RlLnR5cGUgIT09IDEzIC8qIE5vZGVUeXBlcy5WTk9ERV9DQUxMICovKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoY29kZWdlbk5vZGUuaXNCbG9jayAmJlxyXG4gICAgICAgICAgICAgICAgbm9kZS50YWcgIT09ICdzdmcnICYmXHJcbiAgICAgICAgICAgICAgICBub2RlLnRhZyAhPT0gJ2ZvcmVpZ25PYmplY3QnKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBmbGFnID0gZ2V0UGF0Y2hGbGFnKGNvZGVnZW5Ob2RlKTtcclxuICAgICAgICAgICAgaWYgKCFmbGFnKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcmV0dXJuVHlwZSA9IDMgLyogQ29uc3RhbnRUeXBlcy5DQU5fU1RSSU5HSUZZICovO1xyXG4gICAgICAgICAgICAgICAgLy8gRWxlbWVudCBpdHNlbGYgaGFzIG5vIHBhdGNoIGZsYWcuIEhvd2V2ZXIgd2Ugc3RpbGwgbmVlZCB0byBjaGVjazpcclxuICAgICAgICAgICAgICAgIC8vIDEuIEV2ZW4gZm9yIGEgbm9kZSB3aXRoIG5vIHBhdGNoIGZsYWcsIGl0IGlzIHBvc3NpYmxlIGZvciBpdCB0byBjb250YWluXHJcbiAgICAgICAgICAgICAgICAvLyBub24taG9pc3RhYmxlIGV4cHJlc3Npb25zIHRoYXQgcmVmZXJzIHRvIHNjb3BlIHZhcmlhYmxlcywgZS5nLiBjb21waWxlclxyXG4gICAgICAgICAgICAgICAgLy8gaW5qZWN0ZWQga2V5cyBvciBjYWNoZWQgZXZlbnQgaGFuZGxlcnMuIFRoZXJlZm9yZSB3ZSBuZWVkIHRvIGFsd2F5c1xyXG4gICAgICAgICAgICAgICAgLy8gY2hlY2sgdGhlIGNvZGVnZW5Ob2RlJ3MgcHJvcHMgdG8gYmUgc3VyZS5cclxuICAgICAgICAgICAgICAgIGNvbnN0IGdlbmVyYXRlZFByb3BzVHlwZSA9IGdldEdlbmVyYXRlZFByb3BzQ29uc3RhbnRUeXBlKG5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGdlbmVyYXRlZFByb3BzVHlwZSA9PT0gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0YW50Q2FjaGUuc2V0KG5vZGUsIDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi8pO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGdlbmVyYXRlZFByb3BzVHlwZSA8IHJldHVyblR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm5UeXBlID0gZ2VuZXJhdGVkUHJvcHNUeXBlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gMi4gaXRzIGNoaWxkcmVuLlxyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGRUeXBlID0gZ2V0Q29uc3RhbnRUeXBlKG5vZGUuY2hpbGRyZW5baV0sIGNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZFR5cGUgPT09IDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RhbnRDYWNoZS5zZXQobm9kZSwgMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGRUeXBlIDwgcmV0dXJuVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5UeXBlID0gY2hpbGRUeXBlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIDMuIGlmIHRoZSB0eXBlIGlzIG5vdCBhbHJlYWR5IENBTl9TS0lQX1BBVENIIHdoaWNoIGlzIHRoZSBsb3dlc3Qgbm9uLTBcclxuICAgICAgICAgICAgICAgIC8vIHR5cGUsIGNoZWNrIGlmIGFueSBvZiB0aGUgcHJvcHMgY2FuIGNhdXNlIHRoZSB0eXBlIHRvIGJlIGxvd2VyZWRcclxuICAgICAgICAgICAgICAgIC8vIHdlIGNhbiBza2lwIGNhbl9wYXRjaCBiZWNhdXNlIGl0J3MgZ3VhcmFudGVlZCBieSB0aGUgYWJzZW5jZSBvZiBhXHJcbiAgICAgICAgICAgICAgICAvLyBwYXRjaEZsYWcuXHJcbiAgICAgICAgICAgICAgICBpZiAocmV0dXJuVHlwZSA+IDEgLyogQ29uc3RhbnRUeXBlcy5DQU5fU0tJUF9QQVRDSCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5wcm9wcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwID0gbm9kZS5wcm9wc1tpXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAudHlwZSA9PT0gNyAvKiBOb2RlVHlwZXMuRElSRUNUSVZFICovICYmIHAubmFtZSA9PT0gJ2JpbmQnICYmIHAuZXhwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBleHBUeXBlID0gZ2V0Q29uc3RhbnRUeXBlKHAuZXhwLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleHBUeXBlID09PSAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RhbnRDYWNoZS5zZXQobm9kZSwgMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi87XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhwVHlwZSA8IHJldHVyblR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5UeXBlID0gZXhwVHlwZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIG9ubHkgc3ZnL2ZvcmVpZ25PYmplY3QgY291bGQgYmUgYmxvY2sgaGVyZSwgaG93ZXZlciBpZiB0aGV5IGFyZVxyXG4gICAgICAgICAgICAgICAgLy8gc3RhdGljIHRoZW4gdGhleSBkb24ndCBuZWVkIHRvIGJlIGJsb2NrcyBzaW5jZSB0aGVyZSB3aWxsIGJlIG5vXHJcbiAgICAgICAgICAgICAgICAvLyBuZXN0ZWQgdXBkYXRlcy5cclxuICAgICAgICAgICAgICAgIGlmIChjb2RlZ2VuTm9kZS5pc0Jsb2NrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gZXhjZXB0IHNldCBjdXN0b20gZGlyZWN0aXZlcy5cclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUucHJvcHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcCA9IG5vZGUucHJvcHNbaV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwLnR5cGUgPT09IDcgLyogTm9kZVR5cGVzLkRJUkVDVElWRSAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RhbnRDYWNoZS5zZXQobm9kZSwgMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnJlbW92ZUhlbHBlcihPUEVOX0JMT0NLKTtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnJlbW92ZUhlbHBlcihnZXRWTm9kZUJsb2NrSGVscGVyKGNvbnRleHQuaW5TU1IsIGNvZGVnZW5Ob2RlLmlzQ29tcG9uZW50KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29kZWdlbk5vZGUuaXNCbG9jayA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuaGVscGVyKGdldFZOb2RlSGVscGVyKGNvbnRleHQuaW5TU1IsIGNvZGVnZW5Ob2RlLmlzQ29tcG9uZW50KSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdGFudENhY2hlLnNldChub2RlLCByZXR1cm5UeXBlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZXR1cm5UeXBlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc3RhbnRDYWNoZS5zZXQobm9kZSwgMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgMiAvKiBOb2RlVHlwZXMuVEVYVCAqLzpcclxuICAgICAgICBjYXNlIDMgLyogTm9kZVR5cGVzLkNPTU1FTlQgKi86XHJcbiAgICAgICAgICAgIHJldHVybiAzIC8qIENvbnN0YW50VHlwZXMuQ0FOX1NUUklOR0lGWSAqLztcclxuICAgICAgICBjYXNlIDkgLyogTm9kZVR5cGVzLklGICovOlxyXG4gICAgICAgIGNhc2UgMTEgLyogTm9kZVR5cGVzLkZPUiAqLzpcclxuICAgICAgICBjYXNlIDEwIC8qIE5vZGVUeXBlcy5JRl9CUkFOQ0ggKi86XHJcbiAgICAgICAgICAgIHJldHVybiAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovO1xyXG4gICAgICAgIGNhc2UgNSAvKiBOb2RlVHlwZXMuSU5URVJQT0xBVElPTiAqLzpcclxuICAgICAgICBjYXNlIDEyIC8qIE5vZGVUeXBlcy5URVhUX0NBTEwgKi86XHJcbiAgICAgICAgICAgIHJldHVybiBnZXRDb25zdGFudFR5cGUobm9kZS5jb250ZW50LCBjb250ZXh0KTtcclxuICAgICAgICBjYXNlIDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovOlxyXG4gICAgICAgICAgICByZXR1cm4gbm9kZS5jb25zdFR5cGU7XHJcbiAgICAgICAgY2FzZSA4IC8qIE5vZGVUeXBlcy5DT01QT1VORF9FWFBSRVNTSU9OICovOlxyXG4gICAgICAgICAgICBsZXQgcmV0dXJuVHlwZSA9IDMgLyogQ29uc3RhbnRUeXBlcy5DQU5fU1RSSU5HSUZZICovO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gbm9kZS5jaGlsZHJlbltpXTtcclxuICAgICAgICAgICAgICAgIGlmIChpc1N0cmluZyhjaGlsZCkgfHwgaXNTeW1ib2woY2hpbGQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZFR5cGUgPSBnZXRDb25zdGFudFR5cGUoY2hpbGQsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkVHlwZSA9PT0gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hpbGRUeXBlIDwgcmV0dXJuVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVyblR5cGUgPSBjaGlsZFR5cGU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHJldHVyblR5cGU7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkgO1xyXG4gICAgICAgICAgICByZXR1cm4gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLztcclxuICAgIH1cclxufVxyXG5jb25zdCBhbGxvd0hvaXN0ZWRIZWxwZXJTZXQgPSBuZXcgU2V0KFtcclxuICAgIE5PUk1BTElaRV9DTEFTUyxcclxuICAgIE5PUk1BTElaRV9TVFlMRSxcclxuICAgIE5PUk1BTElaRV9QUk9QUyxcclxuICAgIEdVQVJEX1JFQUNUSVZFX1BST1BTXHJcbl0pO1xyXG5mdW5jdGlvbiBnZXRDb25zdGFudFR5cGVPZkhlbHBlckNhbGwodmFsdWUsIGNvbnRleHQpIHtcclxuICAgIGlmICh2YWx1ZS50eXBlID09PSAxNCAvKiBOb2RlVHlwZXMuSlNfQ0FMTF9FWFBSRVNTSU9OICovICYmXHJcbiAgICAgICAgIWlzU3RyaW5nKHZhbHVlLmNhbGxlZSkgJiZcclxuICAgICAgICBhbGxvd0hvaXN0ZWRIZWxwZXJTZXQuaGFzKHZhbHVlLmNhbGxlZSkpIHtcclxuICAgICAgICBjb25zdCBhcmcgPSB2YWx1ZS5hcmd1bWVudHNbMF07XHJcbiAgICAgICAgaWYgKGFyZy50eXBlID09PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgICAgICByZXR1cm4gZ2V0Q29uc3RhbnRUeXBlKGFyZywgY29udGV4dCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGFyZy50eXBlID09PSAxNCAvKiBOb2RlVHlwZXMuSlNfQ0FMTF9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgICAgIC8vIGluIHRoZSBjYXNlIG9mIG5lc3RlZCBoZWxwZXIgY2FsbCwgZS5nLiBgbm9ybWFsaXplUHJvcHMoZ3VhcmRSZWFjdGl2ZVByb3BzKGV4cCkpYFxyXG4gICAgICAgICAgICByZXR1cm4gZ2V0Q29uc3RhbnRUeXBlT2ZIZWxwZXJDYWxsKGFyZywgY29udGV4dCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi87XHJcbn1cclxuZnVuY3Rpb24gZ2V0R2VuZXJhdGVkUHJvcHNDb25zdGFudFR5cGUobm9kZSwgY29udGV4dCkge1xyXG4gICAgbGV0IHJldHVyblR5cGUgPSAzIC8qIENvbnN0YW50VHlwZXMuQ0FOX1NUUklOR0lGWSAqLztcclxuICAgIGNvbnN0IHByb3BzID0gZ2V0Tm9kZVByb3BzKG5vZGUpO1xyXG4gICAgaWYgKHByb3BzICYmIHByb3BzLnR5cGUgPT09IDE1IC8qIE5vZGVUeXBlcy5KU19PQkpFQ1RfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgIGNvbnN0IHsgcHJvcGVydGllcyB9ID0gcHJvcHM7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wZXJ0aWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsga2V5LCB2YWx1ZSB9ID0gcHJvcGVydGllc1tpXTtcclxuICAgICAgICAgICAgY29uc3Qga2V5VHlwZSA9IGdldENvbnN0YW50VHlwZShrZXksIGNvbnRleHQpO1xyXG4gICAgICAgICAgICBpZiAoa2V5VHlwZSA9PT0gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGtleVR5cGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGtleVR5cGUgPCByZXR1cm5UeXBlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm5UeXBlID0ga2V5VHlwZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgdmFsdWVUeXBlO1xyXG4gICAgICAgICAgICBpZiAodmFsdWUudHlwZSA9PT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlVHlwZSA9IGdldENvbnN0YW50VHlwZSh2YWx1ZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUudHlwZSA9PT0gMTQgLyogTm9kZVR5cGVzLkpTX0NBTExfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgICAgICAgICAgLy8gc29tZSBoZWxwZXIgY2FsbHMgY2FuIGJlIGhvaXN0ZWQsXHJcbiAgICAgICAgICAgICAgICAvLyBzdWNoIGFzIHRoZSBgbm9ybWFsaXplUHJvcHNgIGdlbmVyYXRlZCBieSB0aGUgY29tcGlsZXIgZm9yIHByZS1ub3JtYWxpemUgY2xhc3MsXHJcbiAgICAgICAgICAgICAgICAvLyBpbiB0aGlzIGNhc2Ugd2UgbmVlZCB0byByZXNwZWN0IHRoZSBDb25zdGFudFR5cGUgb2YgdGhlIGhlbHBlcidzIGFyZ3VtZW50c1xyXG4gICAgICAgICAgICAgICAgdmFsdWVUeXBlID0gZ2V0Q29uc3RhbnRUeXBlT2ZIZWxwZXJDYWxsKHZhbHVlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlVHlwZSA9IDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi87XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHZhbHVlVHlwZSA9PT0gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlVHlwZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodmFsdWVUeXBlIDwgcmV0dXJuVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuVHlwZSA9IHZhbHVlVHlwZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXR1cm5UeXBlO1xyXG59XHJcbmZ1bmN0aW9uIGdldE5vZGVQcm9wcyhub2RlKSB7XHJcbiAgICBjb25zdCBjb2RlZ2VuTm9kZSA9IG5vZGUuY29kZWdlbk5vZGU7XHJcbiAgICBpZiAoY29kZWdlbk5vZGUudHlwZSA9PT0gMTMgLyogTm9kZVR5cGVzLlZOT0RFX0NBTEwgKi8pIHtcclxuICAgICAgICByZXR1cm4gY29kZWdlbk5vZGUucHJvcHM7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZ2V0UGF0Y2hGbGFnKG5vZGUpIHtcclxuICAgIGNvbnN0IGZsYWcgPSBub2RlLnBhdGNoRmxhZztcclxuICAgIHJldHVybiBmbGFnID8gcGFyc2VJbnQoZmxhZywgMTApIDogdW5kZWZpbmVkO1xyXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVRyYW5zZm9ybUNvbnRleHQocm9vdCwgeyBmaWxlbmFtZSA9ICcnLCBwcmVmaXhJZGVudGlmaWVycyA9IGZhbHNlLCBob2lzdFN0YXRpYyA9IGZhbHNlLCBjYWNoZUhhbmRsZXJzID0gZmFsc2UsIG5vZGVUcmFuc2Zvcm1zID0gW10sIGRpcmVjdGl2ZVRyYW5zZm9ybXMgPSB7fSwgdHJhbnNmb3JtSG9pc3QgPSBudWxsLCBpc0J1aWx0SW5Db21wb25lbnQgPSBOT09QLCBpc0N1c3RvbUVsZW1lbnQgPSBOT09QLCBleHByZXNzaW9uUGx1Z2lucyA9IFtdLCBzY29wZUlkID0gbnVsbCwgc2xvdHRlZCA9IHRydWUsIHNzciA9IGZhbHNlLCBpblNTUiA9IGZhbHNlLCBzc3JDc3NWYXJzID0gYGAsIGJpbmRpbmdNZXRhZGF0YSA9IEVNUFRZX09CSiwgaW5saW5lID0gZmFsc2UsIGlzVFMgPSBmYWxzZSwgb25FcnJvciA9IGRlZmF1bHRPbkVycm9yLCBvbldhcm4gPSBkZWZhdWx0T25XYXJuLCBjb21wYXRDb25maWcgfSkge1xyXG4gICAgY29uc3QgbmFtZU1hdGNoID0gZmlsZW5hbWUucmVwbGFjZSgvXFw/LiokLywgJycpLm1hdGNoKC8oW14vXFxcXF0rKVxcLlxcdyskLyk7XHJcbiAgICBjb25zdCBjb250ZXh0ID0ge1xyXG4gICAgICAgIC8vIG9wdGlvbnNcclxuICAgICAgICBzZWxmTmFtZTogbmFtZU1hdGNoICYmIGNhcGl0YWxpemUoY2FtZWxpemUkMShuYW1lTWF0Y2hbMV0pKSxcclxuICAgICAgICBwcmVmaXhJZGVudGlmaWVycyxcclxuICAgICAgICBob2lzdFN0YXRpYyxcclxuICAgICAgICBjYWNoZUhhbmRsZXJzLFxyXG4gICAgICAgIG5vZGVUcmFuc2Zvcm1zLFxyXG4gICAgICAgIGRpcmVjdGl2ZVRyYW5zZm9ybXMsXHJcbiAgICAgICAgdHJhbnNmb3JtSG9pc3QsXHJcbiAgICAgICAgaXNCdWlsdEluQ29tcG9uZW50LFxyXG4gICAgICAgIGlzQ3VzdG9tRWxlbWVudCxcclxuICAgICAgICBleHByZXNzaW9uUGx1Z2lucyxcclxuICAgICAgICBzY29wZUlkLFxyXG4gICAgICAgIHNsb3R0ZWQsXHJcbiAgICAgICAgc3NyLFxyXG4gICAgICAgIGluU1NSLFxyXG4gICAgICAgIHNzckNzc1ZhcnMsXHJcbiAgICAgICAgYmluZGluZ01ldGFkYXRhLFxyXG4gICAgICAgIGlubGluZSxcclxuICAgICAgICBpc1RTLFxyXG4gICAgICAgIG9uRXJyb3IsXHJcbiAgICAgICAgb25XYXJuLFxyXG4gICAgICAgIGNvbXBhdENvbmZpZyxcclxuICAgICAgICAvLyBzdGF0ZVxyXG4gICAgICAgIHJvb3QsXHJcbiAgICAgICAgaGVscGVyczogbmV3IE1hcCgpLFxyXG4gICAgICAgIGNvbXBvbmVudHM6IG5ldyBTZXQoKSxcclxuICAgICAgICBkaXJlY3RpdmVzOiBuZXcgU2V0KCksXHJcbiAgICAgICAgaG9pc3RzOiBbXSxcclxuICAgICAgICBpbXBvcnRzOiBbXSxcclxuICAgICAgICBjb25zdGFudENhY2hlOiBuZXcgTWFwKCksXHJcbiAgICAgICAgdGVtcHM6IDAsXHJcbiAgICAgICAgY2FjaGVkOiAwLFxyXG4gICAgICAgIGlkZW50aWZpZXJzOiBPYmplY3QuY3JlYXRlKG51bGwpLFxyXG4gICAgICAgIHNjb3Blczoge1xyXG4gICAgICAgICAgICB2Rm9yOiAwLFxyXG4gICAgICAgICAgICB2U2xvdDogMCxcclxuICAgICAgICAgICAgdlByZTogMCxcclxuICAgICAgICAgICAgdk9uY2U6IDBcclxuICAgICAgICB9LFxyXG4gICAgICAgIHBhcmVudDogbnVsbCxcclxuICAgICAgICBjdXJyZW50Tm9kZTogcm9vdCxcclxuICAgICAgICBjaGlsZEluZGV4OiAwLFxyXG4gICAgICAgIGluVk9uY2U6IGZhbHNlLFxyXG4gICAgICAgIC8vIG1ldGhvZHNcclxuICAgICAgICBoZWxwZXIobmFtZSkge1xyXG4gICAgICAgICAgICBjb25zdCBjb3VudCA9IGNvbnRleHQuaGVscGVycy5nZXQobmFtZSkgfHwgMDtcclxuICAgICAgICAgICAgY29udGV4dC5oZWxwZXJzLnNldChuYW1lLCBjb3VudCArIDEpO1xyXG4gICAgICAgICAgICByZXR1cm4gbmFtZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlbW92ZUhlbHBlcihuYW1lKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvdW50ID0gY29udGV4dC5oZWxwZXJzLmdldChuYW1lKTtcclxuICAgICAgICAgICAgaWYgKGNvdW50KSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50Q291bnQgPSBjb3VudCAtIDE7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWN1cnJlbnRDb3VudCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuaGVscGVycy5kZWxldGUobmFtZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmhlbHBlcnMuc2V0KG5hbWUsIGN1cnJlbnRDb3VudCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGhlbHBlclN0cmluZyhuYW1lKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBgXyR7aGVscGVyTmFtZU1hcFtjb250ZXh0LmhlbHBlcihuYW1lKV19YDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlcGxhY2VOb2RlKG5vZGUpIHtcclxuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgIGlmICghY29udGV4dC5jdXJyZW50Tm9kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTm9kZSBiZWluZyByZXBsYWNlZCBpcyBhbHJlYWR5IHJlbW92ZWQuYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQucGFyZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcmVwbGFjZSByb290IG5vZGUuYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29udGV4dC5wYXJlbnQuY2hpbGRyZW5bY29udGV4dC5jaGlsZEluZGV4XSA9IGNvbnRleHQuY3VycmVudE5vZGUgPSBub2RlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVtb3ZlTm9kZShub2RlKSB7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWNvbnRleHQucGFyZW50KSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCByZW1vdmUgcm9vdCBub2RlLmApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGxpc3QgPSBjb250ZXh0LnBhcmVudC5jaGlsZHJlbjtcclxuICAgICAgICAgICAgY29uc3QgcmVtb3ZhbEluZGV4ID0gbm9kZVxyXG4gICAgICAgICAgICAgICAgPyBsaXN0LmluZGV4T2Yobm9kZSlcclxuICAgICAgICAgICAgICAgIDogY29udGV4dC5jdXJyZW50Tm9kZVxyXG4gICAgICAgICAgICAgICAgICAgID8gY29udGV4dC5jaGlsZEluZGV4XHJcbiAgICAgICAgICAgICAgICAgICAgOiAtMTtcclxuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgcmVtb3ZhbEluZGV4IDwgMCkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBub2RlIGJlaW5nIHJlbW92ZWQgaXMgbm90IGEgY2hpbGQgb2YgY3VycmVudCBwYXJlbnRgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoIW5vZGUgfHwgbm9kZSA9PT0gY29udGV4dC5jdXJyZW50Tm9kZSkge1xyXG4gICAgICAgICAgICAgICAgLy8gY3VycmVudCBub2RlIHJlbW92ZWRcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuY3VycmVudE5vZGUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5vbk5vZGVSZW1vdmVkKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBzaWJsaW5nIG5vZGUgcmVtb3ZlZFxyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQuY2hpbGRJbmRleCA+IHJlbW92YWxJbmRleCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuY2hpbGRJbmRleC0tO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQub25Ob2RlUmVtb3ZlZCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnRleHQucGFyZW50LmNoaWxkcmVuLnNwbGljZShyZW1vdmFsSW5kZXgsIDEpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25Ob2RlUmVtb3ZlZDogKCkgPT4geyB9LFxyXG4gICAgICAgIGFkZElkZW50aWZpZXJzKGV4cCkge1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVtb3ZlSWRlbnRpZmllcnMoZXhwKSB7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBob2lzdChleHApIHtcclxuICAgICAgICAgICAgaWYgKGlzU3RyaW5nKGV4cCkpXHJcbiAgICAgICAgICAgICAgICBleHAgPSBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGV4cCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuaG9pc3RzLnB1c2goZXhwKTtcclxuICAgICAgICAgICAgY29uc3QgaWRlbnRpZmllciA9IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYF9ob2lzdGVkXyR7Y29udGV4dC5ob2lzdHMubGVuZ3RofWAsIGZhbHNlLCBleHAubG9jLCAyIC8qIENvbnN0YW50VHlwZXMuQ0FOX0hPSVNUICovKTtcclxuICAgICAgICAgICAgaWRlbnRpZmllci5ob2lzdGVkID0gZXhwO1xyXG4gICAgICAgICAgICByZXR1cm4gaWRlbnRpZmllcjtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNhY2hlKGV4cCwgaXNWTm9kZSA9IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVDYWNoZUV4cHJlc3Npb24oY29udGV4dC5jYWNoZWQrKywgZXhwLCBpc1ZOb2RlKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAge1xyXG4gICAgICAgIGNvbnRleHQuZmlsdGVycyA9IG5ldyBTZXQoKTtcclxuICAgIH1cclxuICAgIHJldHVybiBjb250ZXh0O1xyXG59XHJcbmZ1bmN0aW9uIHRyYW5zZm9ybShyb290LCBvcHRpb25zKSB7XHJcbiAgICBjb25zdCBjb250ZXh0ID0gY3JlYXRlVHJhbnNmb3JtQ29udGV4dChyb290LCBvcHRpb25zKTtcclxuICAgIHRyYXZlcnNlTm9kZShyb290LCBjb250ZXh0KTtcclxuICAgIGlmIChvcHRpb25zLmhvaXN0U3RhdGljKSB7XHJcbiAgICAgICAgaG9pc3RTdGF0aWMocm9vdCwgY29udGV4dCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIW9wdGlvbnMuc3NyKSB7XHJcbiAgICAgICAgY3JlYXRlUm9vdENvZGVnZW4ocm9vdCwgY29udGV4dCk7XHJcbiAgICB9XHJcbiAgICAvLyBmaW5hbGl6ZSBtZXRhIGluZm9ybWF0aW9uXHJcbiAgICByb290LmhlbHBlcnMgPSBbLi4uY29udGV4dC5oZWxwZXJzLmtleXMoKV07XHJcbiAgICByb290LmNvbXBvbmVudHMgPSBbLi4uY29udGV4dC5jb21wb25lbnRzXTtcclxuICAgIHJvb3QuZGlyZWN0aXZlcyA9IFsuLi5jb250ZXh0LmRpcmVjdGl2ZXNdO1xyXG4gICAgcm9vdC5pbXBvcnRzID0gY29udGV4dC5pbXBvcnRzO1xyXG4gICAgcm9vdC5ob2lzdHMgPSBjb250ZXh0LmhvaXN0cztcclxuICAgIHJvb3QudGVtcHMgPSBjb250ZXh0LnRlbXBzO1xyXG4gICAgcm9vdC5jYWNoZWQgPSBjb250ZXh0LmNhY2hlZDtcclxuICAgIHtcclxuICAgICAgICByb290LmZpbHRlcnMgPSBbLi4uY29udGV4dC5maWx0ZXJzXTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBjcmVhdGVSb290Q29kZWdlbihyb290LCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCB7IGhlbHBlciB9ID0gY29udGV4dDtcclxuICAgIGNvbnN0IHsgY2hpbGRyZW4gfSA9IHJvb3Q7XHJcbiAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgY29uc3QgY2hpbGQgPSBjaGlsZHJlblswXTtcclxuICAgICAgICAvLyBpZiB0aGUgc2luZ2xlIGNoaWxkIGlzIGFuIGVsZW1lbnQsIHR1cm4gaXQgaW50byBhIGJsb2NrLlxyXG4gICAgICAgIGlmIChpc1NpbmdsZUVsZW1lbnRSb290KHJvb3QsIGNoaWxkKSAmJiBjaGlsZC5jb2RlZ2VuTm9kZSkge1xyXG4gICAgICAgICAgICAvLyBzaW5nbGUgZWxlbWVudCByb290IGlzIG5ldmVyIGhvaXN0ZWQgc28gY29kZWdlbk5vZGUgd2lsbCBuZXZlciBiZVxyXG4gICAgICAgICAgICAvLyBTaW1wbGVFeHByZXNzaW9uTm9kZVxyXG4gICAgICAgICAgICBjb25zdCBjb2RlZ2VuTm9kZSA9IGNoaWxkLmNvZGVnZW5Ob2RlO1xyXG4gICAgICAgICAgICBpZiAoY29kZWdlbk5vZGUudHlwZSA9PT0gMTMgLyogTm9kZVR5cGVzLlZOT0RFX0NBTEwgKi8pIHtcclxuICAgICAgICAgICAgICAgIG1ha2VCbG9jayhjb2RlZ2VuTm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcm9vdC5jb2RlZ2VuTm9kZSA9IGNvZGVnZW5Ob2RlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gLSBzaW5nbGUgPHNsb3QvPiwgSWZOb2RlLCBGb3JOb2RlOiBhbHJlYWR5IGJsb2Nrcy5cclxuICAgICAgICAgICAgLy8gLSBzaW5nbGUgdGV4dCBub2RlOiBhbHdheXMgcGF0Y2hlZC5cclxuICAgICAgICAgICAgLy8gcm9vdCBjb2RlZ2VuIGZhbGxzIHRocm91Z2ggdmlhIGdlbk5vZGUoKVxyXG4gICAgICAgICAgICByb290LmNvZGVnZW5Ob2RlID0gY2hpbGQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoY2hpbGRyZW4ubGVuZ3RoID4gMSkge1xyXG4gICAgICAgIC8vIHJvb3QgaGFzIG11bHRpcGxlIG5vZGVzIC0gcmV0dXJuIGEgZnJhZ21lbnQgYmxvY2suXHJcbiAgICAgICAgbGV0IHBhdGNoRmxhZyA9IDY0IC8qIFBhdGNoRmxhZ3MuU1RBQkxFX0ZSQUdNRU5UICovO1xyXG4gICAgICAgIGxldCBwYXRjaEZsYWdUZXh0ID0gUGF0Y2hGbGFnTmFtZXNbNjQgLyogUGF0Y2hGbGFncy5TVEFCTEVfRlJBR01FTlQgKi9dO1xyXG4gICAgICAgIC8vIGNoZWNrIGlmIHRoZSBmcmFnbWVudCBhY3R1YWxseSBjb250YWlucyBhIHNpbmdsZSB2YWxpZCBjaGlsZCB3aXRoXHJcbiAgICAgICAgLy8gdGhlIHJlc3QgYmVpbmcgY29tbWVudHNcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgIGNoaWxkcmVuLmZpbHRlcihjID0+IGMudHlwZSAhPT0gMyAvKiBOb2RlVHlwZXMuQ09NTUVOVCAqLykubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgICAgIHBhdGNoRmxhZyB8PSAyMDQ4IC8qIFBhdGNoRmxhZ3MuREVWX1JPT1RfRlJBR01FTlQgKi87XHJcbiAgICAgICAgICAgIHBhdGNoRmxhZ1RleHQgKz0gYCwgJHtQYXRjaEZsYWdOYW1lc1syMDQ4IC8qIFBhdGNoRmxhZ3MuREVWX1JPT1RfRlJBR01FTlQgKi9dfWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJvb3QuY29kZWdlbk5vZGUgPSBjcmVhdGVWTm9kZUNhbGwoY29udGV4dCwgaGVscGVyKEZSQUdNRU5UKSwgdW5kZWZpbmVkLCByb290LmNoaWxkcmVuLCBwYXRjaEZsYWcgKyAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYCAvKiAke3BhdGNoRmxhZ1RleHR9ICovYCA6IGBgKSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHRydWUsIHVuZGVmaW5lZCwgZmFsc2UgLyogaXNDb21wb25lbnQgKi8pO1xyXG4gICAgfVxyXG4gICAgZWxzZSA7XHJcbn1cclxuZnVuY3Rpb24gdHJhdmVyc2VDaGlsZHJlbihwYXJlbnQsIGNvbnRleHQpIHtcclxuICAgIGxldCBpID0gMDtcclxuICAgIGNvbnN0IG5vZGVSZW1vdmVkID0gKCkgPT4ge1xyXG4gICAgICAgIGktLTtcclxuICAgIH07XHJcbiAgICBmb3IgKDsgaSA8IHBhcmVudC5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGNoaWxkID0gcGFyZW50LmNoaWxkcmVuW2ldO1xyXG4gICAgICAgIGlmIChpc1N0cmluZyhjaGlsZCkpXHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIGNvbnRleHQucGFyZW50ID0gcGFyZW50O1xyXG4gICAgICAgIGNvbnRleHQuY2hpbGRJbmRleCA9IGk7XHJcbiAgICAgICAgY29udGV4dC5vbk5vZGVSZW1vdmVkID0gbm9kZVJlbW92ZWQ7XHJcbiAgICAgICAgdHJhdmVyc2VOb2RlKGNoaWxkLCBjb250ZXh0KTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiB0cmF2ZXJzZU5vZGUobm9kZSwgY29udGV4dCkge1xyXG4gICAgY29udGV4dC5jdXJyZW50Tm9kZSA9IG5vZGU7XHJcbiAgICAvLyBhcHBseSB0cmFuc2Zvcm0gcGx1Z2luc1xyXG4gICAgY29uc3QgeyBub2RlVHJhbnNmb3JtcyB9ID0gY29udGV4dDtcclxuICAgIGNvbnN0IGV4aXRGbnMgPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZVRyYW5zZm9ybXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBvbkV4aXQgPSBub2RlVHJhbnNmb3Jtc1tpXShub2RlLCBjb250ZXh0KTtcclxuICAgICAgICBpZiAob25FeGl0KSB7XHJcbiAgICAgICAgICAgIGlmIChpc0FycmF5KG9uRXhpdCkpIHtcclxuICAgICAgICAgICAgICAgIGV4aXRGbnMucHVzaCguLi5vbkV4aXQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZXhpdEZucy5wdXNoKG9uRXhpdCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFjb250ZXh0LmN1cnJlbnROb2RlKSB7XHJcbiAgICAgICAgICAgIC8vIG5vZGUgd2FzIHJlbW92ZWRcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gbm9kZSBtYXkgaGF2ZSBiZWVuIHJlcGxhY2VkXHJcbiAgICAgICAgICAgIG5vZGUgPSBjb250ZXh0LmN1cnJlbnROb2RlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHN3aXRjaCAobm9kZS50eXBlKSB7XHJcbiAgICAgICAgY2FzZSAzIC8qIE5vZGVUeXBlcy5DT01NRU5UICovOlxyXG4gICAgICAgICAgICBpZiAoIWNvbnRleHQuc3NyKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBpbmplY3QgaW1wb3J0IGZvciB0aGUgQ29tbWVudCBzeW1ib2wsIHdoaWNoIGlzIG5lZWRlZCBmb3IgY3JlYXRpbmdcclxuICAgICAgICAgICAgICAgIC8vIGNvbW1lbnQgbm9kZXMgd2l0aCBgY3JlYXRlVk5vZGVgXHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmhlbHBlcihDUkVBVEVfQ09NTUVOVCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSA1IC8qIE5vZGVUeXBlcy5JTlRFUlBPTEFUSU9OICovOlxyXG4gICAgICAgICAgICAvLyBubyBuZWVkIHRvIHRyYXZlcnNlLCBidXQgd2UgbmVlZCB0byBpbmplY3QgdG9TdHJpbmcgaGVscGVyXHJcbiAgICAgICAgICAgIGlmICghY29udGV4dC5zc3IpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuaGVscGVyKFRPX0RJU1BMQVlfU1RSSU5HKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAvLyBmb3IgY29udGFpbmVyIHR5cGVzLCBmdXJ0aGVyIHRyYXZlcnNlIGRvd253YXJkc1xyXG4gICAgICAgIGNhc2UgOSAvKiBOb2RlVHlwZXMuSUYgKi86XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5icmFuY2hlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgdHJhdmVyc2VOb2RlKG5vZGUuYnJhbmNoZXNbaV0sIGNvbnRleHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMTAgLyogTm9kZVR5cGVzLklGX0JSQU5DSCAqLzpcclxuICAgICAgICBjYXNlIDExIC8qIE5vZGVUeXBlcy5GT1IgKi86XHJcbiAgICAgICAgY2FzZSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovOlxyXG4gICAgICAgIGNhc2UgMCAvKiBOb2RlVHlwZXMuUk9PVCAqLzpcclxuICAgICAgICAgICAgdHJhdmVyc2VDaGlsZHJlbihub2RlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICAvLyBleGl0IHRyYW5zZm9ybXNcclxuICAgIGNvbnRleHQuY3VycmVudE5vZGUgPSBub2RlO1xyXG4gICAgbGV0IGkgPSBleGl0Rm5zLmxlbmd0aDtcclxuICAgIHdoaWxlIChpLS0pIHtcclxuICAgICAgICBleGl0Rm5zW2ldKCk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlU3RydWN0dXJhbERpcmVjdGl2ZVRyYW5zZm9ybShuYW1lLCBmbikge1xyXG4gICAgY29uc3QgbWF0Y2hlcyA9IGlzU3RyaW5nKG5hbWUpXHJcbiAgICAgICAgPyAobikgPT4gbiA9PT0gbmFtZVxyXG4gICAgICAgIDogKG4pID0+IG5hbWUudGVzdChuKTtcclxuICAgIHJldHVybiAobm9kZSwgY29udGV4dCkgPT4ge1xyXG4gICAgICAgIGlmIChub2RlLnR5cGUgPT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8pIHtcclxuICAgICAgICAgICAgY29uc3QgeyBwcm9wcyB9ID0gbm9kZTtcclxuICAgICAgICAgICAgLy8gc3RydWN0dXJhbCBkaXJlY3RpdmUgdHJhbnNmb3JtcyBhcmUgbm90IGNvbmNlcm5lZCB3aXRoIHNsb3RzXHJcbiAgICAgICAgICAgIC8vIGFzIHRoZXkgYXJlIGhhbmRsZWQgc2VwYXJhdGVseSBpbiB2U2xvdC50c1xyXG4gICAgICAgICAgICBpZiAobm9kZS50YWdUeXBlID09PSAzIC8qIEVsZW1lbnRUeXBlcy5URU1QTEFURSAqLyAmJiBwcm9wcy5zb21lKGlzVlNsb3QpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgZXhpdEZucyA9IFtdO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9wID0gcHJvcHNbaV07XHJcbiAgICAgICAgICAgICAgICBpZiAocHJvcC50eXBlID09PSA3IC8qIE5vZGVUeXBlcy5ESVJFQ1RJVkUgKi8gJiYgbWF0Y2hlcyhwcm9wLm5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gc3RydWN0dXJhbCBkaXJlY3RpdmVzIGFyZSByZW1vdmVkIHRvIGF2b2lkIGluZmluaXRlIHJlY3Vyc2lvblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGFsc28gd2UgcmVtb3ZlIHRoZW0gKmJlZm9yZSogYXBwbHlpbmcgc28gdGhhdCBpdCBjYW4gZnVydGhlclxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRyYXZlcnNlIGl0c2VsZiBpbiBjYXNlIGl0IG1vdmVzIHRoZSBub2RlIGFyb3VuZFxyXG4gICAgICAgICAgICAgICAgICAgIHByb3BzLnNwbGljZShpLCAxKTtcclxuICAgICAgICAgICAgICAgICAgICBpLS07XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb25FeGl0ID0gZm4obm9kZSwgcHJvcCwgY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9uRXhpdClcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXhpdEZucy5wdXNoKG9uRXhpdCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGV4aXRGbnM7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxufVxuXG5jb25zdCBQVVJFX0FOTk9UQVRJT04gPSBgLyojX19QVVJFX18qL2A7XHJcbmNvbnN0IGFsaWFzSGVscGVyID0gKHMpID0+IGAke2hlbHBlck5hbWVNYXBbc119OiBfJHtoZWxwZXJOYW1lTWFwW3NdfWA7XHJcbmZ1bmN0aW9uIGNyZWF0ZUNvZGVnZW5Db250ZXh0KGFzdCwgeyBtb2RlID0gJ2Z1bmN0aW9uJywgcHJlZml4SWRlbnRpZmllcnMgPSBtb2RlID09PSAnbW9kdWxlJywgc291cmNlTWFwID0gZmFsc2UsIGZpbGVuYW1lID0gYHRlbXBsYXRlLnZ1ZS5odG1sYCwgc2NvcGVJZCA9IG51bGwsIG9wdGltaXplSW1wb3J0cyA9IGZhbHNlLCBydW50aW1lR2xvYmFsTmFtZSA9IGBWdWVgLCBydW50aW1lTW9kdWxlTmFtZSA9IGB2dWVgLCBzc3JSdW50aW1lTW9kdWxlTmFtZSA9ICd2dWUvc2VydmVyLXJlbmRlcmVyJywgc3NyID0gZmFsc2UsIGlzVFMgPSBmYWxzZSwgaW5TU1IgPSBmYWxzZSB9KSB7XHJcbiAgICBjb25zdCBjb250ZXh0ID0ge1xyXG4gICAgICAgIG1vZGUsXHJcbiAgICAgICAgcHJlZml4SWRlbnRpZmllcnMsXHJcbiAgICAgICAgc291cmNlTWFwLFxyXG4gICAgICAgIGZpbGVuYW1lLFxyXG4gICAgICAgIHNjb3BlSWQsXHJcbiAgICAgICAgb3B0aW1pemVJbXBvcnRzLFxyXG4gICAgICAgIHJ1bnRpbWVHbG9iYWxOYW1lLFxyXG4gICAgICAgIHJ1bnRpbWVNb2R1bGVOYW1lLFxyXG4gICAgICAgIHNzclJ1bnRpbWVNb2R1bGVOYW1lLFxyXG4gICAgICAgIHNzcixcclxuICAgICAgICBpc1RTLFxyXG4gICAgICAgIGluU1NSLFxyXG4gICAgICAgIHNvdXJjZTogYXN0LmxvYy5zb3VyY2UsXHJcbiAgICAgICAgY29kZTogYGAsXHJcbiAgICAgICAgY29sdW1uOiAxLFxyXG4gICAgICAgIGxpbmU6IDEsXHJcbiAgICAgICAgb2Zmc2V0OiAwLFxyXG4gICAgICAgIGluZGVudExldmVsOiAwLFxyXG4gICAgICAgIHB1cmU6IGZhbHNlLFxyXG4gICAgICAgIG1hcDogdW5kZWZpbmVkLFxyXG4gICAgICAgIGhlbHBlcihrZXkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGBfJHtoZWxwZXJOYW1lTWFwW2tleV19YDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHB1c2goY29kZSwgbm9kZSkge1xyXG4gICAgICAgICAgICBjb250ZXh0LmNvZGUgKz0gY29kZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGluZGVudCgpIHtcclxuICAgICAgICAgICAgbmV3bGluZSgrK2NvbnRleHQuaW5kZW50TGV2ZWwpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZGVpbmRlbnQod2l0aG91dE5ld0xpbmUgPSBmYWxzZSkge1xyXG4gICAgICAgICAgICBpZiAod2l0aG91dE5ld0xpbmUpIHtcclxuICAgICAgICAgICAgICAgIC0tY29udGV4dC5pbmRlbnRMZXZlbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIG5ld2xpbmUoLS1jb250ZXh0LmluZGVudExldmVsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbmV3bGluZSgpIHtcclxuICAgICAgICAgICAgbmV3bGluZShjb250ZXh0LmluZGVudExldmVsKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgZnVuY3Rpb24gbmV3bGluZShuKSB7XHJcbiAgICAgICAgY29udGV4dC5wdXNoKCdcXG4nICsgYCAgYC5yZXBlYXQobikpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvbnRleHQ7XHJcbn1cclxuZnVuY3Rpb24gZ2VuZXJhdGUoYXN0LCBvcHRpb25zID0ge30pIHtcclxuICAgIGNvbnN0IGNvbnRleHQgPSBjcmVhdGVDb2RlZ2VuQ29udGV4dChhc3QsIG9wdGlvbnMpO1xyXG4gICAgaWYgKG9wdGlvbnMub25Db250ZXh0Q3JlYXRlZClcclxuICAgICAgICBvcHRpb25zLm9uQ29udGV4dENyZWF0ZWQoY29udGV4dCk7XHJcbiAgICBjb25zdCB7IG1vZGUsIHB1c2gsIHByZWZpeElkZW50aWZpZXJzLCBpbmRlbnQsIGRlaW5kZW50LCBuZXdsaW5lLCBzY29wZUlkLCBzc3IgfSA9IGNvbnRleHQ7XHJcbiAgICBjb25zdCBoYXNIZWxwZXJzID0gYXN0LmhlbHBlcnMubGVuZ3RoID4gMDtcclxuICAgIGNvbnN0IHVzZVdpdGhCbG9jayA9ICFwcmVmaXhJZGVudGlmaWVycyAmJiBtb2RlICE9PSAnbW9kdWxlJztcclxuICAgIC8vIHByZWFtYmxlc1xyXG4gICAgLy8gaW4gc2V0dXAoKSBpbmxpbmUgbW9kZSwgdGhlIHByZWFtYmxlIGlzIGdlbmVyYXRlZCBpbiBhIHN1YiBjb250ZXh0XHJcbiAgICAvLyBhbmQgcmV0dXJuZWQgc2VwYXJhdGVseS5cclxuICAgIGNvbnN0IHByZWFtYmxlQ29udGV4dCA9IGNvbnRleHQ7XHJcbiAgICB7XHJcbiAgICAgICAgZ2VuRnVuY3Rpb25QcmVhbWJsZShhc3QsIHByZWFtYmxlQ29udGV4dCk7XHJcbiAgICB9XHJcbiAgICAvLyBlbnRlciByZW5kZXIgZnVuY3Rpb25cclxuICAgIGNvbnN0IGZ1bmN0aW9uTmFtZSA9IHNzciA/IGBzc3JSZW5kZXJgIDogYHJlbmRlcmA7XHJcbiAgICBjb25zdCBhcmdzID0gc3NyID8gWydfY3R4JywgJ19wdXNoJywgJ19wYXJlbnQnLCAnX2F0dHJzJ10gOiBbJ19jdHgnLCAnX2NhY2hlJ107XHJcbiAgICBjb25zdCBzaWduYXR1cmUgPSBhcmdzLmpvaW4oJywgJyk7XHJcbiAgICB7XHJcbiAgICAgICAgcHVzaChgZnVuY3Rpb24gJHtmdW5jdGlvbk5hbWV9KCR7c2lnbmF0dXJlfSkge2ApO1xyXG4gICAgfVxyXG4gICAgaW5kZW50KCk7XHJcbiAgICBpZiAodXNlV2l0aEJsb2NrKSB7XHJcbiAgICAgICAgcHVzaChgd2l0aCAoX2N0eCkge2ApO1xyXG4gICAgICAgIGluZGVudCgpO1xyXG4gICAgICAgIC8vIGZ1bmN0aW9uIG1vZGUgY29uc3QgZGVjbGFyYXRpb25zIHNob3VsZCBiZSBpbnNpZGUgd2l0aCBibG9ja1xyXG4gICAgICAgIC8vIGFsc28gdGhleSBzaG91bGQgYmUgcmVuYW1lZCB0byBhdm9pZCBjb2xsaXNpb24gd2l0aCB1c2VyIHByb3BlcnRpZXNcclxuICAgICAgICBpZiAoaGFzSGVscGVycykge1xyXG4gICAgICAgICAgICBwdXNoKGBjb25zdCB7ICR7YXN0LmhlbHBlcnMubWFwKGFsaWFzSGVscGVyKS5qb2luKCcsICcpfSB9ID0gX1Z1ZWApO1xyXG4gICAgICAgICAgICBwdXNoKGBcXG5gKTtcclxuICAgICAgICAgICAgbmV3bGluZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIGdlbmVyYXRlIGFzc2V0IHJlc29sdXRpb24gc3RhdGVtZW50c1xyXG4gICAgaWYgKGFzdC5jb21wb25lbnRzLmxlbmd0aCkge1xyXG4gICAgICAgIGdlbkFzc2V0cyhhc3QuY29tcG9uZW50cywgJ2NvbXBvbmVudCcsIGNvbnRleHQpO1xyXG4gICAgICAgIGlmIChhc3QuZGlyZWN0aXZlcy5sZW5ndGggfHwgYXN0LnRlbXBzID4gMCkge1xyXG4gICAgICAgICAgICBuZXdsaW5lKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGFzdC5kaXJlY3RpdmVzLmxlbmd0aCkge1xyXG4gICAgICAgIGdlbkFzc2V0cyhhc3QuZGlyZWN0aXZlcywgJ2RpcmVjdGl2ZScsIGNvbnRleHQpO1xyXG4gICAgICAgIGlmIChhc3QudGVtcHMgPiAwKSB7XHJcbiAgICAgICAgICAgIG5ld2xpbmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoYXN0LmZpbHRlcnMgJiYgYXN0LmZpbHRlcnMubGVuZ3RoKSB7XHJcbiAgICAgICAgbmV3bGluZSgpO1xyXG4gICAgICAgIGdlbkFzc2V0cyhhc3QuZmlsdGVycywgJ2ZpbHRlcicsIGNvbnRleHQpO1xyXG4gICAgICAgIG5ld2xpbmUoKTtcclxuICAgIH1cclxuICAgIGlmIChhc3QudGVtcHMgPiAwKSB7XHJcbiAgICAgICAgcHVzaChgbGV0IGApO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXN0LnRlbXBzOyBpKyspIHtcclxuICAgICAgICAgICAgcHVzaChgJHtpID4gMCA/IGAsIGAgOiBgYH1fdGVtcCR7aX1gKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoYXN0LmNvbXBvbmVudHMubGVuZ3RoIHx8IGFzdC5kaXJlY3RpdmVzLmxlbmd0aCB8fCBhc3QudGVtcHMpIHtcclxuICAgICAgICBwdXNoKGBcXG5gKTtcclxuICAgICAgICBuZXdsaW5lKCk7XHJcbiAgICB9XHJcbiAgICAvLyBnZW5lcmF0ZSB0aGUgVk5vZGUgdHJlZSBleHByZXNzaW9uXHJcbiAgICBpZiAoIXNzcikge1xyXG4gICAgICAgIHB1c2goYHJldHVybiBgKTtcclxuICAgIH1cclxuICAgIGlmIChhc3QuY29kZWdlbk5vZGUpIHtcclxuICAgICAgICBnZW5Ob2RlKGFzdC5jb2RlZ2VuTm9kZSwgY29udGV4dCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBwdXNoKGBudWxsYCk7XHJcbiAgICB9XHJcbiAgICBpZiAodXNlV2l0aEJsb2NrKSB7XHJcbiAgICAgICAgZGVpbmRlbnQoKTtcclxuICAgICAgICBwdXNoKGB9YCk7XHJcbiAgICB9XHJcbiAgICBkZWluZGVudCgpO1xyXG4gICAgcHVzaChgfWApO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBhc3QsXHJcbiAgICAgICAgY29kZTogY29udGV4dC5jb2RlLFxyXG4gICAgICAgIHByZWFtYmxlOiBgYCxcclxuICAgICAgICAvLyBTb3VyY2VNYXBHZW5lcmF0b3IgZG9lcyBoYXZlIHRvSlNPTigpIG1ldGhvZCBidXQgaXQncyBub3QgaW4gdGhlIHR5cGVzXHJcbiAgICAgICAgbWFwOiBjb250ZXh0Lm1hcCA/IGNvbnRleHQubWFwLnRvSlNPTigpIDogdW5kZWZpbmVkXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGdlbkZ1bmN0aW9uUHJlYW1ibGUoYXN0LCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCB7IHNzciwgcHJlZml4SWRlbnRpZmllcnMsIHB1c2gsIG5ld2xpbmUsIHJ1bnRpbWVNb2R1bGVOYW1lLCBydW50aW1lR2xvYmFsTmFtZSwgc3NyUnVudGltZU1vZHVsZU5hbWUgfSA9IGNvbnRleHQ7XHJcbiAgICBjb25zdCBWdWVCaW5kaW5nID0gcnVudGltZUdsb2JhbE5hbWU7XHJcbiAgICAvLyBHZW5lcmF0ZSBjb25zdCBkZWNsYXJhdGlvbiBmb3IgaGVscGVyc1xyXG4gICAgLy8gSW4gcHJlZml4IG1vZGUsIHdlIHBsYWNlIHRoZSBjb25zdCBkZWNsYXJhdGlvbiBhdCB0b3Agc28gaXQncyBkb25lXHJcbiAgICAvLyBvbmx5IG9uY2U7IEJ1dCBpZiB3ZSBub3QgcHJlZml4aW5nLCB3ZSBwbGFjZSB0aGUgZGVjbGFyYXRpb24gaW5zaWRlIHRoZVxyXG4gICAgLy8gd2l0aCBibG9jayBzbyBpdCBkb2Vzbid0IGluY3VyIHRoZSBgaW5gIGNoZWNrIGNvc3QgZm9yIGV2ZXJ5IGhlbHBlciBhY2Nlc3MuXHJcbiAgICBpZiAoYXN0LmhlbHBlcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgLy8gXCJ3aXRoXCIgbW9kZS5cclxuICAgICAgICAgICAgLy8gc2F2ZSBWdWUgaW4gYSBzZXBhcmF0ZSB2YXJpYWJsZSB0byBhdm9pZCBjb2xsaXNpb25cclxuICAgICAgICAgICAgcHVzaChgY29uc3QgX1Z1ZSA9ICR7VnVlQmluZGluZ31cXG5gKTtcclxuICAgICAgICAgICAgLy8gaW4gXCJ3aXRoXCIgbW9kZSwgaGVscGVycyBhcmUgZGVjbGFyZWQgaW5zaWRlIHRoZSB3aXRoIGJsb2NrIHRvIGF2b2lkXHJcbiAgICAgICAgICAgIC8vIGhhcyBjaGVjayBjb3N0LCBidXQgaG9pc3RzIGFyZSBsaWZ0ZWQgb3V0IG9mIHRoZSBmdW5jdGlvbiAtIHdlIG5lZWRcclxuICAgICAgICAgICAgLy8gdG8gcHJvdmlkZSB0aGUgaGVscGVyIGhlcmUuXHJcbiAgICAgICAgICAgIGlmIChhc3QuaG9pc3RzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhdGljSGVscGVycyA9IFtcclxuICAgICAgICAgICAgICAgICAgICBDUkVBVEVfVk5PREUsXHJcbiAgICAgICAgICAgICAgICAgICAgQ1JFQVRFX0VMRU1FTlRfVk5PREUsXHJcbiAgICAgICAgICAgICAgICAgICAgQ1JFQVRFX0NPTU1FTlQsXHJcbiAgICAgICAgICAgICAgICAgICAgQ1JFQVRFX1RFWFQsXHJcbiAgICAgICAgICAgICAgICAgICAgQ1JFQVRFX1NUQVRJQ1xyXG4gICAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoaGVscGVyID0+IGFzdC5oZWxwZXJzLmluY2x1ZGVzKGhlbHBlcikpXHJcbiAgICAgICAgICAgICAgICAgICAgLm1hcChhbGlhc0hlbHBlcilcclxuICAgICAgICAgICAgICAgICAgICAuam9pbignLCAnKTtcclxuICAgICAgICAgICAgICAgIHB1c2goYGNvbnN0IHsgJHtzdGF0aWNIZWxwZXJzfSB9ID0gX1Z1ZVxcbmApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZ2VuSG9pc3RzKGFzdC5ob2lzdHMsIGNvbnRleHQpO1xyXG4gICAgbmV3bGluZSgpO1xyXG4gICAgcHVzaChgcmV0dXJuIGApO1xyXG59XHJcbmZ1bmN0aW9uIGdlbkFzc2V0cyhhc3NldHMsIHR5cGUsIHsgaGVscGVyLCBwdXNoLCBuZXdsaW5lLCBpc1RTIH0pIHtcclxuICAgIGNvbnN0IHJlc29sdmVyID0gaGVscGVyKHR5cGUgPT09ICdmaWx0ZXInXHJcbiAgICAgICAgPyBSRVNPTFZFX0ZJTFRFUlxyXG4gICAgICAgIDogdHlwZSA9PT0gJ2NvbXBvbmVudCdcclxuICAgICAgICAgICAgPyBSRVNPTFZFX0NPTVBPTkVOVFxyXG4gICAgICAgICAgICA6IFJFU09MVkVfRElSRUNUSVZFKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXNzZXRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IGlkID0gYXNzZXRzW2ldO1xyXG4gICAgICAgIC8vIHBvdGVudGlhbCBjb21wb25lbnQgaW1wbGljaXQgc2VsZi1yZWZlcmVuY2UgaW5mZXJyZWQgZnJvbSBTRkMgZmlsZW5hbWVcclxuICAgICAgICBjb25zdCBtYXliZVNlbGZSZWZlcmVuY2UgPSBpZC5lbmRzV2l0aCgnX19zZWxmJyk7XHJcbiAgICAgICAgaWYgKG1heWJlU2VsZlJlZmVyZW5jZSkge1xyXG4gICAgICAgICAgICBpZCA9IGlkLnNsaWNlKDAsIC02KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcHVzaChgY29uc3QgJHt0b1ZhbGlkQXNzZXRJZChpZCwgdHlwZSl9ID0gJHtyZXNvbHZlcn0oJHtKU09OLnN0cmluZ2lmeShpZCl9JHttYXliZVNlbGZSZWZlcmVuY2UgPyBgLCB0cnVlYCA6IGBgfSkke2lzVFMgPyBgIWAgOiBgYH1gKTtcclxuICAgICAgICBpZiAoaSA8IGFzc2V0cy5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgICAgIG5ld2xpbmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZ2VuSG9pc3RzKGhvaXN0cywgY29udGV4dCkge1xyXG4gICAgaWYgKCFob2lzdHMubGVuZ3RoKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29udGV4dC5wdXJlID0gdHJ1ZTtcclxuICAgIGNvbnN0IHsgcHVzaCwgbmV3bGluZSwgaGVscGVyLCBzY29wZUlkLCBtb2RlIH0gPSBjb250ZXh0O1xyXG4gICAgbmV3bGluZSgpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBob2lzdHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBleHAgPSBob2lzdHNbaV07XHJcbiAgICAgICAgaWYgKGV4cCkge1xyXG4gICAgICAgICAgICBwdXNoKGBjb25zdCBfaG9pc3RlZF8ke2kgKyAxfSA9ICR7YGB9YCk7XHJcbiAgICAgICAgICAgIGdlbk5vZGUoZXhwLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgbmV3bGluZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnRleHQucHVyZSA9IGZhbHNlO1xyXG59XHJcbmZ1bmN0aW9uIGlzVGV4dCQxKG4pIHtcclxuICAgIHJldHVybiAoaXNTdHJpbmcobikgfHxcclxuICAgICAgICBuLnR5cGUgPT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovIHx8XHJcbiAgICAgICAgbi50eXBlID09PSAyIC8qIE5vZGVUeXBlcy5URVhUICovIHx8XHJcbiAgICAgICAgbi50eXBlID09PSA1IC8qIE5vZGVUeXBlcy5JTlRFUlBPTEFUSU9OICovIHx8XHJcbiAgICAgICAgbi50eXBlID09PSA4IC8qIE5vZGVUeXBlcy5DT01QT1VORF9FWFBSRVNTSU9OICovKTtcclxufVxyXG5mdW5jdGlvbiBnZW5Ob2RlTGlzdEFzQXJyYXkobm9kZXMsIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IG11bHRpbGluZXMgPSBub2Rlcy5sZW5ndGggPiAzIHx8XHJcbiAgICAgICAgKCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpICYmIG5vZGVzLnNvbWUobiA9PiBpc0FycmF5KG4pIHx8ICFpc1RleHQkMShuKSkpO1xyXG4gICAgY29udGV4dC5wdXNoKGBbYCk7XHJcbiAgICBtdWx0aWxpbmVzICYmIGNvbnRleHQuaW5kZW50KCk7XHJcbiAgICBnZW5Ob2RlTGlzdChub2RlcywgY29udGV4dCwgbXVsdGlsaW5lcyk7XHJcbiAgICBtdWx0aWxpbmVzICYmIGNvbnRleHQuZGVpbmRlbnQoKTtcclxuICAgIGNvbnRleHQucHVzaChgXWApO1xyXG59XHJcbmZ1bmN0aW9uIGdlbk5vZGVMaXN0KG5vZGVzLCBjb250ZXh0LCBtdWx0aWxpbmVzID0gZmFsc2UsIGNvbW1hID0gdHJ1ZSkge1xyXG4gICAgY29uc3QgeyBwdXNoLCBuZXdsaW5lIH0gPSBjb250ZXh0O1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IG5vZGUgPSBub2Rlc1tpXTtcclxuICAgICAgICBpZiAoaXNTdHJpbmcobm9kZSkpIHtcclxuICAgICAgICAgICAgcHVzaChub2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaXNBcnJheShub2RlKSkge1xyXG4gICAgICAgICAgICBnZW5Ob2RlTGlzdEFzQXJyYXkobm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBnZW5Ob2RlKG5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaSA8IG5vZGVzLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgaWYgKG11bHRpbGluZXMpIHtcclxuICAgICAgICAgICAgICAgIGNvbW1hICYmIHB1c2goJywnKTtcclxuICAgICAgICAgICAgICAgIG5ld2xpbmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbW1hICYmIHB1c2goJywgJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZ2VuTm9kZShub2RlLCBjb250ZXh0KSB7XHJcbiAgICBpZiAoaXNTdHJpbmcobm9kZSkpIHtcclxuICAgICAgICBjb250ZXh0LnB1c2gobm9kZSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzU3ltYm9sKG5vZGUpKSB7XHJcbiAgICAgICAgY29udGV4dC5wdXNoKGNvbnRleHQuaGVscGVyKG5vZGUpKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBzd2l0Y2ggKG5vZGUudHlwZSkge1xyXG4gICAgICAgIGNhc2UgMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLzpcclxuICAgICAgICBjYXNlIDkgLyogTm9kZVR5cGVzLklGICovOlxyXG4gICAgICAgIGNhc2UgMTEgLyogTm9kZVR5cGVzLkZPUiAqLzpcclxuICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgICAgICBhc3NlcnQobm9kZS5jb2RlZ2VuTm9kZSAhPSBudWxsLCBgQ29kZWdlbiBub2RlIGlzIG1pc3NpbmcgZm9yIGVsZW1lbnQvaWYvZm9yIG5vZGUuIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgIGBBcHBseSBhcHByb3ByaWF0ZSB0cmFuc2Zvcm1zIGZpcnN0LmApO1xyXG4gICAgICAgICAgICBnZW5Ob2RlKG5vZGUuY29kZWdlbk5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDIgLyogTm9kZVR5cGVzLlRFWFQgKi86XHJcbiAgICAgICAgICAgIGdlblRleHQobm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi86XHJcbiAgICAgICAgICAgIGdlbkV4cHJlc3Npb24obm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgNSAvKiBOb2RlVHlwZXMuSU5URVJQT0xBVElPTiAqLzpcclxuICAgICAgICAgICAgZ2VuSW50ZXJwb2xhdGlvbihub2RlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAxMiAvKiBOb2RlVHlwZXMuVEVYVF9DQUxMICovOlxyXG4gICAgICAgICAgICBnZW5Ob2RlKG5vZGUuY29kZWdlbk5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDggLyogTm9kZVR5cGVzLkNPTVBPVU5EX0VYUFJFU1NJT04gKi86XHJcbiAgICAgICAgICAgIGdlbkNvbXBvdW5kRXhwcmVzc2lvbihub2RlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAzIC8qIE5vZGVUeXBlcy5DT01NRU5UICovOlxyXG4gICAgICAgICAgICBnZW5Db21tZW50KG5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDEzIC8qIE5vZGVUeXBlcy5WTk9ERV9DQUxMICovOlxyXG4gICAgICAgICAgICBnZW5WTm9kZUNhbGwobm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMTQgLyogTm9kZVR5cGVzLkpTX0NBTExfRVhQUkVTU0lPTiAqLzpcclxuICAgICAgICAgICAgZ2VuQ2FsbEV4cHJlc3Npb24obm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMTUgLyogTm9kZVR5cGVzLkpTX09CSkVDVF9FWFBSRVNTSU9OICovOlxyXG4gICAgICAgICAgICBnZW5PYmplY3RFeHByZXNzaW9uKG5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDE3IC8qIE5vZGVUeXBlcy5KU19BUlJBWV9FWFBSRVNTSU9OICovOlxyXG4gICAgICAgICAgICBnZW5BcnJheUV4cHJlc3Npb24obm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMTggLyogTm9kZVR5cGVzLkpTX0ZVTkNUSU9OX0VYUFJFU1NJT04gKi86XHJcbiAgICAgICAgICAgIGdlbkZ1bmN0aW9uRXhwcmVzc2lvbihub2RlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAxOSAvKiBOb2RlVHlwZXMuSlNfQ09ORElUSU9OQUxfRVhQUkVTU0lPTiAqLzpcclxuICAgICAgICAgICAgZ2VuQ29uZGl0aW9uYWxFeHByZXNzaW9uKG5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDIwIC8qIE5vZGVUeXBlcy5KU19DQUNIRV9FWFBSRVNTSU9OICovOlxyXG4gICAgICAgICAgICBnZW5DYWNoZUV4cHJlc3Npb24obm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMjEgLyogTm9kZVR5cGVzLkpTX0JMT0NLX1NUQVRFTUVOVCAqLzpcclxuICAgICAgICAgICAgZ2VuTm9kZUxpc3Qobm9kZS5ib2R5LCBjb250ZXh0LCB0cnVlLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIC8vIFNTUiBvbmx5IHR5cGVzXHJcbiAgICAgICAgY2FzZSAyMiAvKiBOb2RlVHlwZXMuSlNfVEVNUExBVEVfTElURVJBTCAqLzpcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAyMyAvKiBOb2RlVHlwZXMuSlNfSUZfU1RBVEVNRU5UICovOlxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDI0IC8qIE5vZGVUeXBlcy5KU19BU1NJR05NRU5UX0VYUFJFU1NJT04gKi86XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMjUgLyogTm9kZVR5cGVzLkpTX1NFUVVFTkNFX0VYUFJFU1NJT04gKi86XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMjYgLyogTm9kZVR5cGVzLkpTX1JFVFVSTl9TVEFURU1FTlQgKi86XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXHJcbiAgICAgICAgY2FzZSAxMCAvKiBOb2RlVHlwZXMuSUZfQlJBTkNIICovOlxyXG4gICAgICAgICAgICAvLyBub29wXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgIGFzc2VydChmYWxzZSwgYHVuaGFuZGxlZCBjb2RlZ2VuIG5vZGUgdHlwZTogJHtub2RlLnR5cGV9YCk7XHJcbiAgICAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgd2UgZXhoYXVzdCBhbGwgcG9zc2libGUgdHlwZXNcclxuICAgICAgICAgICAgICAgIGNvbnN0IGV4aGF1c3RpdmVDaGVjayA9IG5vZGU7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZXhoYXVzdGl2ZUNoZWNrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZ2VuVGV4dChub2RlLCBjb250ZXh0KSB7XHJcbiAgICBjb250ZXh0LnB1c2goSlNPTi5zdHJpbmdpZnkobm9kZS5jb250ZW50KSwgbm9kZSk7XHJcbn1cclxuZnVuY3Rpb24gZ2VuRXhwcmVzc2lvbihub2RlLCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCB7IGNvbnRlbnQsIGlzU3RhdGljIH0gPSBub2RlO1xyXG4gICAgY29udGV4dC5wdXNoKGlzU3RhdGljID8gSlNPTi5zdHJpbmdpZnkoY29udGVudCkgOiBjb250ZW50LCBub2RlKTtcclxufVxyXG5mdW5jdGlvbiBnZW5JbnRlcnBvbGF0aW9uKG5vZGUsIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IHsgcHVzaCwgaGVscGVyLCBwdXJlIH0gPSBjb250ZXh0O1xyXG4gICAgaWYgKHB1cmUpXHJcbiAgICAgICAgcHVzaChQVVJFX0FOTk9UQVRJT04pO1xyXG4gICAgcHVzaChgJHtoZWxwZXIoVE9fRElTUExBWV9TVFJJTkcpfShgKTtcclxuICAgIGdlbk5vZGUobm9kZS5jb250ZW50LCBjb250ZXh0KTtcclxuICAgIHB1c2goYClgKTtcclxufVxyXG5mdW5jdGlvbiBnZW5Db21wb3VuZEV4cHJlc3Npb24obm9kZSwgY29udGV4dCkge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgY2hpbGQgPSBub2RlLmNoaWxkcmVuW2ldO1xyXG4gICAgICAgIGlmIChpc1N0cmluZyhjaGlsZCkpIHtcclxuICAgICAgICAgICAgY29udGV4dC5wdXNoKGNoaWxkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGdlbk5vZGUoY2hpbGQsIGNvbnRleHQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBnZW5FeHByZXNzaW9uQXNQcm9wZXJ0eUtleShub2RlLCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCB7IHB1c2ggfSA9IGNvbnRleHQ7XHJcbiAgICBpZiAobm9kZS50eXBlID09PSA4IC8qIE5vZGVUeXBlcy5DT01QT1VORF9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgcHVzaChgW2ApO1xyXG4gICAgICAgIGdlbkNvbXBvdW5kRXhwcmVzc2lvbihub2RlLCBjb250ZXh0KTtcclxuICAgICAgICBwdXNoKGBdYCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChub2RlLmlzU3RhdGljKSB7XHJcbiAgICAgICAgLy8gb25seSBxdW90ZSBrZXlzIGlmIG5lY2Vzc2FyeVxyXG4gICAgICAgIGNvbnN0IHRleHQgPSBpc1NpbXBsZUlkZW50aWZpZXIobm9kZS5jb250ZW50KVxyXG4gICAgICAgICAgICA/IG5vZGUuY29udGVudFxyXG4gICAgICAgICAgICA6IEpTT04uc3RyaW5naWZ5KG5vZGUuY29udGVudCk7XHJcbiAgICAgICAgcHVzaCh0ZXh0LCBub2RlKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHB1c2goYFske25vZGUuY29udGVudH1dYCwgbm9kZSk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZ2VuQ29tbWVudChub2RlLCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCB7IHB1c2gsIGhlbHBlciwgcHVyZSB9ID0gY29udGV4dDtcclxuICAgIGlmIChwdXJlKSB7XHJcbiAgICAgICAgcHVzaChQVVJFX0FOTk9UQVRJT04pO1xyXG4gICAgfVxyXG4gICAgcHVzaChgJHtoZWxwZXIoQ1JFQVRFX0NPTU1FTlQpfSgke0pTT04uc3RyaW5naWZ5KG5vZGUuY29udGVudCl9KWAsIG5vZGUpO1xyXG59XHJcbmZ1bmN0aW9uIGdlblZOb2RlQ2FsbChub2RlLCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCB7IHB1c2gsIGhlbHBlciwgcHVyZSB9ID0gY29udGV4dDtcclxuICAgIGNvbnN0IHsgdGFnLCBwcm9wcywgY2hpbGRyZW4sIHBhdGNoRmxhZywgZHluYW1pY1Byb3BzLCBkaXJlY3RpdmVzLCBpc0Jsb2NrLCBkaXNhYmxlVHJhY2tpbmcsIGlzQ29tcG9uZW50IH0gPSBub2RlO1xyXG4gICAgaWYgKGRpcmVjdGl2ZXMpIHtcclxuICAgICAgICBwdXNoKGhlbHBlcihXSVRIX0RJUkVDVElWRVMpICsgYChgKTtcclxuICAgIH1cclxuICAgIGlmIChpc0Jsb2NrKSB7XHJcbiAgICAgICAgcHVzaChgKCR7aGVscGVyKE9QRU5fQkxPQ0spfSgke2Rpc2FibGVUcmFja2luZyA/IGB0cnVlYCA6IGBgfSksIGApO1xyXG4gICAgfVxyXG4gICAgaWYgKHB1cmUpIHtcclxuICAgICAgICBwdXNoKFBVUkVfQU5OT1RBVElPTik7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjYWxsSGVscGVyID0gaXNCbG9ja1xyXG4gICAgICAgID8gZ2V0Vk5vZGVCbG9ja0hlbHBlcihjb250ZXh0LmluU1NSLCBpc0NvbXBvbmVudClcclxuICAgICAgICA6IGdldFZOb2RlSGVscGVyKGNvbnRleHQuaW5TU1IsIGlzQ29tcG9uZW50KTtcclxuICAgIHB1c2goaGVscGVyKGNhbGxIZWxwZXIpICsgYChgLCBub2RlKTtcclxuICAgIGdlbk5vZGVMaXN0KGdlbk51bGxhYmxlQXJncyhbdGFnLCBwcm9wcywgY2hpbGRyZW4sIHBhdGNoRmxhZywgZHluYW1pY1Byb3BzXSksIGNvbnRleHQpO1xyXG4gICAgcHVzaChgKWApO1xyXG4gICAgaWYgKGlzQmxvY2spIHtcclxuICAgICAgICBwdXNoKGApYCk7XHJcbiAgICB9XHJcbiAgICBpZiAoZGlyZWN0aXZlcykge1xyXG4gICAgICAgIHB1c2goYCwgYCk7XHJcbiAgICAgICAgZ2VuTm9kZShkaXJlY3RpdmVzLCBjb250ZXh0KTtcclxuICAgICAgICBwdXNoKGApYCk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZ2VuTnVsbGFibGVBcmdzKGFyZ3MpIHtcclxuICAgIGxldCBpID0gYXJncy5sZW5ndGg7XHJcbiAgICB3aGlsZSAoaS0tKSB7XHJcbiAgICAgICAgaWYgKGFyZ3NbaV0gIT0gbnVsbClcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXJncy5zbGljZSgwLCBpICsgMSkubWFwKGFyZyA9PiBhcmcgfHwgYG51bGxgKTtcclxufVxyXG4vLyBKYXZhU2NyaXB0XHJcbmZ1bmN0aW9uIGdlbkNhbGxFeHByZXNzaW9uKG5vZGUsIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IHsgcHVzaCwgaGVscGVyLCBwdXJlIH0gPSBjb250ZXh0O1xyXG4gICAgY29uc3QgY2FsbGVlID0gaXNTdHJpbmcobm9kZS5jYWxsZWUpID8gbm9kZS5jYWxsZWUgOiBoZWxwZXIobm9kZS5jYWxsZWUpO1xyXG4gICAgaWYgKHB1cmUpIHtcclxuICAgICAgICBwdXNoKFBVUkVfQU5OT1RBVElPTik7XHJcbiAgICB9XHJcbiAgICBwdXNoKGNhbGxlZSArIGAoYCwgbm9kZSk7XHJcbiAgICBnZW5Ob2RlTGlzdChub2RlLmFyZ3VtZW50cywgY29udGV4dCk7XHJcbiAgICBwdXNoKGApYCk7XHJcbn1cclxuZnVuY3Rpb24gZ2VuT2JqZWN0RXhwcmVzc2lvbihub2RlLCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCB7IHB1c2gsIGluZGVudCwgZGVpbmRlbnQsIG5ld2xpbmUgfSA9IGNvbnRleHQ7XHJcbiAgICBjb25zdCB7IHByb3BlcnRpZXMgfSA9IG5vZGU7XHJcbiAgICBpZiAoIXByb3BlcnRpZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgcHVzaChge31gLCBub2RlKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBtdWx0aWxpbmVzID0gcHJvcGVydGllcy5sZW5ndGggPiAxIHx8XHJcbiAgICAgICAgKCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpICYmXHJcbiAgICAgICAgICAgIHByb3BlcnRpZXMuc29tZShwID0+IHAudmFsdWUudHlwZSAhPT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8pKTtcclxuICAgIHB1c2gobXVsdGlsaW5lcyA/IGB7YCA6IGB7IGApO1xyXG4gICAgbXVsdGlsaW5lcyAmJiBpbmRlbnQoKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcGVydGllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IHsga2V5LCB2YWx1ZSB9ID0gcHJvcGVydGllc1tpXTtcclxuICAgICAgICAvLyBrZXlcclxuICAgICAgICBnZW5FeHByZXNzaW9uQXNQcm9wZXJ0eUtleShrZXksIGNvbnRleHQpO1xyXG4gICAgICAgIHB1c2goYDogYCk7XHJcbiAgICAgICAgLy8gdmFsdWVcclxuICAgICAgICBnZW5Ob2RlKHZhbHVlLCBjb250ZXh0KTtcclxuICAgICAgICBpZiAoaSA8IHByb3BlcnRpZXMubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgICAvLyB3aWxsIG9ubHkgcmVhY2ggdGhpcyBpZiBpdCdzIG11bHRpbGluZXNcclxuICAgICAgICAgICAgcHVzaChgLGApO1xyXG4gICAgICAgICAgICBuZXdsaW5lKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgbXVsdGlsaW5lcyAmJiBkZWluZGVudCgpO1xyXG4gICAgcHVzaChtdWx0aWxpbmVzID8gYH1gIDogYCB9YCk7XHJcbn1cclxuZnVuY3Rpb24gZ2VuQXJyYXlFeHByZXNzaW9uKG5vZGUsIGNvbnRleHQpIHtcclxuICAgIGdlbk5vZGVMaXN0QXNBcnJheShub2RlLmVsZW1lbnRzLCBjb250ZXh0KTtcclxufVxyXG5mdW5jdGlvbiBnZW5GdW5jdGlvbkV4cHJlc3Npb24obm9kZSwgY29udGV4dCkge1xyXG4gICAgY29uc3QgeyBwdXNoLCBpbmRlbnQsIGRlaW5kZW50IH0gPSBjb250ZXh0O1xyXG4gICAgY29uc3QgeyBwYXJhbXMsIHJldHVybnMsIGJvZHksIG5ld2xpbmUsIGlzU2xvdCB9ID0gbm9kZTtcclxuICAgIGlmIChpc1Nsb3QpIHtcclxuICAgICAgICAvLyB3cmFwIHNsb3QgZnVuY3Rpb25zIHdpdGggb3duZXIgY29udGV4dFxyXG4gICAgICAgIHB1c2goYF8ke2hlbHBlck5hbWVNYXBbV0lUSF9DVFhdfShgKTtcclxuICAgIH1cclxuICAgIHB1c2goYChgLCBub2RlKTtcclxuICAgIGlmIChpc0FycmF5KHBhcmFtcykpIHtcclxuICAgICAgICBnZW5Ob2RlTGlzdChwYXJhbXMsIGNvbnRleHQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAocGFyYW1zKSB7XHJcbiAgICAgICAgZ2VuTm9kZShwYXJhbXMsIGNvbnRleHQpO1xyXG4gICAgfVxyXG4gICAgcHVzaChgKSA9PiBgKTtcclxuICAgIGlmIChuZXdsaW5lIHx8IGJvZHkpIHtcclxuICAgICAgICBwdXNoKGB7YCk7XHJcbiAgICAgICAgaW5kZW50KCk7XHJcbiAgICB9XHJcbiAgICBpZiAocmV0dXJucykge1xyXG4gICAgICAgIGlmIChuZXdsaW5lKSB7XHJcbiAgICAgICAgICAgIHB1c2goYHJldHVybiBgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlzQXJyYXkocmV0dXJucykpIHtcclxuICAgICAgICAgICAgZ2VuTm9kZUxpc3RBc0FycmF5KHJldHVybnMsIGNvbnRleHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgZ2VuTm9kZShyZXR1cm5zLCBjb250ZXh0KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChib2R5KSB7XHJcbiAgICAgICAgZ2VuTm9kZShib2R5LCBjb250ZXh0KTtcclxuICAgIH1cclxuICAgIGlmIChuZXdsaW5lIHx8IGJvZHkpIHtcclxuICAgICAgICBkZWluZGVudCgpO1xyXG4gICAgICAgIHB1c2goYH1gKTtcclxuICAgIH1cclxuICAgIGlmIChpc1Nsb3QpIHtcclxuICAgICAgICBpZiAobm9kZS5pc05vblNjb3BlZFNsb3QpIHtcclxuICAgICAgICAgICAgcHVzaChgLCB1bmRlZmluZWQsIHRydWVgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcHVzaChgKWApO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGdlbkNvbmRpdGlvbmFsRXhwcmVzc2lvbihub2RlLCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCB7IHRlc3QsIGNvbnNlcXVlbnQsIGFsdGVybmF0ZSwgbmV3bGluZTogbmVlZE5ld2xpbmUgfSA9IG5vZGU7XHJcbiAgICBjb25zdCB7IHB1c2gsIGluZGVudCwgZGVpbmRlbnQsIG5ld2xpbmUgfSA9IGNvbnRleHQ7XHJcbiAgICBpZiAodGVzdC50eXBlID09PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgIGNvbnN0IG5lZWRzUGFyZW5zID0gIWlzU2ltcGxlSWRlbnRpZmllcih0ZXN0LmNvbnRlbnQpO1xyXG4gICAgICAgIG5lZWRzUGFyZW5zICYmIHB1c2goYChgKTtcclxuICAgICAgICBnZW5FeHByZXNzaW9uKHRlc3QsIGNvbnRleHQpO1xyXG4gICAgICAgIG5lZWRzUGFyZW5zICYmIHB1c2goYClgKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHB1c2goYChgKTtcclxuICAgICAgICBnZW5Ob2RlKHRlc3QsIGNvbnRleHQpO1xyXG4gICAgICAgIHB1c2goYClgKTtcclxuICAgIH1cclxuICAgIG5lZWROZXdsaW5lICYmIGluZGVudCgpO1xyXG4gICAgY29udGV4dC5pbmRlbnRMZXZlbCsrO1xyXG4gICAgbmVlZE5ld2xpbmUgfHwgcHVzaChgIGApO1xyXG4gICAgcHVzaChgPyBgKTtcclxuICAgIGdlbk5vZGUoY29uc2VxdWVudCwgY29udGV4dCk7XHJcbiAgICBjb250ZXh0LmluZGVudExldmVsLS07XHJcbiAgICBuZWVkTmV3bGluZSAmJiBuZXdsaW5lKCk7XHJcbiAgICBuZWVkTmV3bGluZSB8fCBwdXNoKGAgYCk7XHJcbiAgICBwdXNoKGA6IGApO1xyXG4gICAgY29uc3QgaXNOZXN0ZWQgPSBhbHRlcm5hdGUudHlwZSA9PT0gMTkgLyogTm9kZVR5cGVzLkpTX0NPTkRJVElPTkFMX0VYUFJFU1NJT04gKi87XHJcbiAgICBpZiAoIWlzTmVzdGVkKSB7XHJcbiAgICAgICAgY29udGV4dC5pbmRlbnRMZXZlbCsrO1xyXG4gICAgfVxyXG4gICAgZ2VuTm9kZShhbHRlcm5hdGUsIGNvbnRleHQpO1xyXG4gICAgaWYgKCFpc05lc3RlZCkge1xyXG4gICAgICAgIGNvbnRleHQuaW5kZW50TGV2ZWwtLTtcclxuICAgIH1cclxuICAgIG5lZWROZXdsaW5lICYmIGRlaW5kZW50KHRydWUgLyogd2l0aG91dCBuZXdsaW5lICovKTtcclxufVxyXG5mdW5jdGlvbiBnZW5DYWNoZUV4cHJlc3Npb24obm9kZSwgY29udGV4dCkge1xyXG4gICAgY29uc3QgeyBwdXNoLCBoZWxwZXIsIGluZGVudCwgZGVpbmRlbnQsIG5ld2xpbmUgfSA9IGNvbnRleHQ7XHJcbiAgICBwdXNoKGBfY2FjaGVbJHtub2RlLmluZGV4fV0gfHwgKGApO1xyXG4gICAgaWYgKG5vZGUuaXNWTm9kZSkge1xyXG4gICAgICAgIGluZGVudCgpO1xyXG4gICAgICAgIHB1c2goYCR7aGVscGVyKFNFVF9CTE9DS19UUkFDS0lORyl9KC0xKSxgKTtcclxuICAgICAgICBuZXdsaW5lKCk7XHJcbiAgICB9XHJcbiAgICBwdXNoKGBfY2FjaGVbJHtub2RlLmluZGV4fV0gPSBgKTtcclxuICAgIGdlbk5vZGUobm9kZS52YWx1ZSwgY29udGV4dCk7XHJcbiAgICBpZiAobm9kZS5pc1ZOb2RlKSB7XHJcbiAgICAgICAgcHVzaChgLGApO1xyXG4gICAgICAgIG5ld2xpbmUoKTtcclxuICAgICAgICBwdXNoKGAke2hlbHBlcihTRVRfQkxPQ0tfVFJBQ0tJTkcpfSgxKSxgKTtcclxuICAgICAgICBuZXdsaW5lKCk7XHJcbiAgICAgICAgcHVzaChgX2NhY2hlWyR7bm9kZS5pbmRleH1dYCk7XHJcbiAgICAgICAgZGVpbmRlbnQoKTtcclxuICAgIH1cclxuICAgIHB1c2goYClgKTtcclxufVxuXG5mdW5jdGlvbiB3YWxrSWRlbnRpZmllcnMocm9vdCwgb25JZGVudGlmaWVyLCBpbmNsdWRlQWxsID0gZmFsc2UsIHBhcmVudFN0YWNrID0gW10sIGtub3duSWRzID0gT2JqZWN0LmNyZWF0ZShudWxsKSkge1xyXG4gICAge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBpc1JlZmVyZW5jZWRJZGVudGlmaWVyKGlkLCBwYXJlbnQsIHBhcmVudFN0YWNrKSB7XHJcbiAgICB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGlzSW5EZXN0cnVjdHVyZUFzc2lnbm1lbnQocGFyZW50LCBwYXJlbnRTdGFjaykge1xyXG4gICAgaWYgKHBhcmVudCAmJlxyXG4gICAgICAgIChwYXJlbnQudHlwZSA9PT0gJ09iamVjdFByb3BlcnR5JyB8fCBwYXJlbnQudHlwZSA9PT0gJ0FycmF5UGF0dGVybicpKSB7XHJcbiAgICAgICAgbGV0IGkgPSBwYXJlbnRTdGFjay5sZW5ndGg7XHJcbiAgICAgICAgd2hpbGUgKGktLSkge1xyXG4gICAgICAgICAgICBjb25zdCBwID0gcGFyZW50U3RhY2tbaV07XHJcbiAgICAgICAgICAgIGlmIChwLnR5cGUgPT09ICdBc3NpZ25tZW50RXhwcmVzc2lvbicpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHAudHlwZSAhPT0gJ09iamVjdFByb3BlcnR5JyAmJiAhcC50eXBlLmVuZHNXaXRoKCdQYXR0ZXJuJykpIHtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG59XHJcbmZ1bmN0aW9uIHdhbGtGdW5jdGlvblBhcmFtcyhub2RlLCBvbklkZW50KSB7XHJcbiAgICBmb3IgKGNvbnN0IHAgb2Ygbm9kZS5wYXJhbXMpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGlkIG9mIGV4dHJhY3RJZGVudGlmaWVycyhwKSkge1xyXG4gICAgICAgICAgICBvbklkZW50KGlkKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gd2Fsa0Jsb2NrRGVjbGFyYXRpb25zKGJsb2NrLCBvbklkZW50KSB7XHJcbiAgICBmb3IgKGNvbnN0IHN0bXQgb2YgYmxvY2suYm9keSkge1xyXG4gICAgICAgIGlmIChzdG10LnR5cGUgPT09ICdWYXJpYWJsZURlY2xhcmF0aW9uJykge1xyXG4gICAgICAgICAgICBpZiAoc3RtdC5kZWNsYXJlKVxyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgZGVjbCBvZiBzdG10LmRlY2xhcmF0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBpZCBvZiBleHRyYWN0SWRlbnRpZmllcnMoZGVjbC5pZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBvbklkZW50KGlkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChzdG10LnR5cGUgPT09ICdGdW5jdGlvbkRlY2xhcmF0aW9uJyB8fFxyXG4gICAgICAgICAgICBzdG10LnR5cGUgPT09ICdDbGFzc0RlY2xhcmF0aW9uJykge1xyXG4gICAgICAgICAgICBpZiAoc3RtdC5kZWNsYXJlIHx8ICFzdG10LmlkKVxyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIG9uSWRlbnQoc3RtdC5pZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGV4dHJhY3RJZGVudGlmaWVycyhwYXJhbSwgbm9kZXMgPSBbXSkge1xyXG4gICAgc3dpdGNoIChwYXJhbS50eXBlKSB7XHJcbiAgICAgICAgY2FzZSAnSWRlbnRpZmllcic6XHJcbiAgICAgICAgICAgIG5vZGVzLnB1c2gocGFyYW0pO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdNZW1iZXJFeHByZXNzaW9uJzpcclxuICAgICAgICAgICAgbGV0IG9iamVjdCA9IHBhcmFtO1xyXG4gICAgICAgICAgICB3aGlsZSAob2JqZWN0LnR5cGUgPT09ICdNZW1iZXJFeHByZXNzaW9uJykge1xyXG4gICAgICAgICAgICAgICAgb2JqZWN0ID0gb2JqZWN0Lm9iamVjdDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBub2Rlcy5wdXNoKG9iamVjdCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ09iamVjdFBhdHRlcm4nOlxyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHByb3Agb2YgcGFyYW0ucHJvcGVydGllcykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHByb3AudHlwZSA9PT0gJ1Jlc3RFbGVtZW50Jykge1xyXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhY3RJZGVudGlmaWVycyhwcm9wLmFyZ3VtZW50LCBub2Rlcyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBleHRyYWN0SWRlbnRpZmllcnMocHJvcC52YWx1ZSwgbm9kZXMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ0FycmF5UGF0dGVybic6XHJcbiAgICAgICAgICAgIHBhcmFtLmVsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudClcclxuICAgICAgICAgICAgICAgICAgICBleHRyYWN0SWRlbnRpZmllcnMoZWxlbWVudCwgbm9kZXMpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnUmVzdEVsZW1lbnQnOlxyXG4gICAgICAgICAgICBleHRyYWN0SWRlbnRpZmllcnMocGFyYW0uYXJndW1lbnQsIG5vZGVzKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnQXNzaWdubWVudFBhdHRlcm4nOlxyXG4gICAgICAgICAgICBleHRyYWN0SWRlbnRpZmllcnMocGFyYW0ubGVmdCwgbm9kZXMpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiBub2RlcztcclxufVxyXG5jb25zdCBpc0Z1bmN0aW9uVHlwZSA9IChub2RlKSA9PiB7XHJcbiAgICByZXR1cm4gL0Z1bmN0aW9uKD86RXhwcmVzc2lvbnxEZWNsYXJhdGlvbikkfE1ldGhvZCQvLnRlc3Qobm9kZS50eXBlKTtcclxufTtcclxuY29uc3QgaXNTdGF0aWNQcm9wZXJ0eSA9IChub2RlKSA9PiBub2RlICYmXHJcbiAgICAobm9kZS50eXBlID09PSAnT2JqZWN0UHJvcGVydHknIHx8IG5vZGUudHlwZSA9PT0gJ09iamVjdE1ldGhvZCcpICYmXHJcbiAgICAhbm9kZS5jb21wdXRlZDtcclxuY29uc3QgaXNTdGF0aWNQcm9wZXJ0eUtleSA9IChub2RlLCBwYXJlbnQpID0+IGlzU3RhdGljUHJvcGVydHkocGFyZW50KSAmJiBwYXJlbnQua2V5ID09PSBub2RlO1xuXG4vLyB0aGVzZSBrZXl3b3JkcyBzaG91bGQgbm90IGFwcGVhciBpbnNpZGUgZXhwcmVzc2lvbnMsIGJ1dCBvcGVyYXRvcnMgbGlrZVxyXG4vLyB0eXBlb2YsIGluc3RhbmNlb2YgYW5kIGluIGFyZSBhbGxvd2VkXHJcbmNvbnN0IHByb2hpYml0ZWRLZXl3b3JkUkUgPSBuZXcgUmVnRXhwKCdcXFxcYicgK1xyXG4gICAgKCdkbyxpZixmb3IsbGV0LG5ldyx0cnksdmFyLGNhc2UsZWxzZSx3aXRoLGF3YWl0LGJyZWFrLGNhdGNoLGNsYXNzLGNvbnN0LCcgK1xyXG4gICAgICAgICdzdXBlcix0aHJvdyx3aGlsZSx5aWVsZCxkZWxldGUsZXhwb3J0LGltcG9ydCxyZXR1cm4sc3dpdGNoLGRlZmF1bHQsJyArXHJcbiAgICAgICAgJ2V4dGVuZHMsZmluYWxseSxjb250aW51ZSxkZWJ1Z2dlcixmdW5jdGlvbixhcmd1bWVudHMsdHlwZW9mLHZvaWQnKVxyXG4gICAgICAgIC5zcGxpdCgnLCcpXHJcbiAgICAgICAgLmpvaW4oJ1xcXFxifFxcXFxiJykgK1xyXG4gICAgJ1xcXFxiJyk7XHJcbi8vIHN0cmlwIHN0cmluZ3MgaW4gZXhwcmVzc2lvbnNcclxuY29uc3Qgc3RyaXBTdHJpbmdSRSA9IC8nKD86W14nXFxcXF18XFxcXC4pKid8XCIoPzpbXlwiXFxcXF18XFxcXC4pKlwifGAoPzpbXmBcXFxcXXxcXFxcLikqXFwkXFx7fFxcfSg/OlteYFxcXFxdfFxcXFwuKSpgfGAoPzpbXmBcXFxcXXxcXFxcLikqYC9nO1xyXG4vKipcclxuICogVmFsaWRhdGUgYSBub24tcHJlZml4ZWQgZXhwcmVzc2lvbi5cclxuICogVGhpcyBpcyBvbmx5IGNhbGxlZCB3aGVuIHVzaW5nIHRoZSBpbi1icm93c2VyIHJ1bnRpbWUgY29tcGlsZXIgc2luY2UgaXRcclxuICogZG9lc24ndCBwcmVmaXggZXhwcmVzc2lvbnMuXHJcbiAqL1xyXG5mdW5jdGlvbiB2YWxpZGF0ZUJyb3dzZXJFeHByZXNzaW9uKG5vZGUsIGNvbnRleHQsIGFzUGFyYW1zID0gZmFsc2UsIGFzUmF3U3RhdGVtZW50cyA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCBleHAgPSBub2RlLmNvbnRlbnQ7XHJcbiAgICAvLyBlbXB0eSBleHByZXNzaW9ucyBhcmUgdmFsaWRhdGVkIHBlci1kaXJlY3RpdmUgc2luY2Ugc29tZSBkaXJlY3RpdmVzXHJcbiAgICAvLyBkbyBhbGxvdyBlbXB0eSBleHByZXNzaW9ucy5cclxuICAgIGlmICghZXhwLnRyaW0oKSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRyeSB7XHJcbiAgICAgICAgbmV3IEZ1bmN0aW9uKGFzUmF3U3RhdGVtZW50c1xyXG4gICAgICAgICAgICA/IGAgJHtleHB9IGBcclxuICAgICAgICAgICAgOiBgcmV0dXJuICR7YXNQYXJhbXMgPyBgKCR7ZXhwfSkgPT4ge31gIDogYCgke2V4cH0pYH1gKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgbGV0IG1lc3NhZ2UgPSBlLm1lc3NhZ2U7XHJcbiAgICAgICAgY29uc3Qga2V5d29yZE1hdGNoID0gZXhwXHJcbiAgICAgICAgICAgIC5yZXBsYWNlKHN0cmlwU3RyaW5nUkUsICcnKVxyXG4gICAgICAgICAgICAubWF0Y2gocHJvaGliaXRlZEtleXdvcmRSRSk7XHJcbiAgICAgICAgaWYgKGtleXdvcmRNYXRjaCkge1xyXG4gICAgICAgICAgICBtZXNzYWdlID0gYGF2b2lkIHVzaW5nIEphdmFTY3JpcHQga2V5d29yZCBhcyBwcm9wZXJ0eSBuYW1lOiBcIiR7a2V5d29yZE1hdGNoWzBdfVwiYDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoNDQgLyogRXJyb3JDb2Rlcy5YX0lOVkFMSURfRVhQUkVTU0lPTiAqLywgbm9kZS5sb2MsIHVuZGVmaW5lZCwgbWVzc2FnZSkpO1xyXG4gICAgfVxyXG59XG5cbmNvbnN0IHRyYW5zZm9ybUV4cHJlc3Npb24gPSAobm9kZSwgY29udGV4dCkgPT4ge1xyXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gNSAvKiBOb2RlVHlwZXMuSU5URVJQT0xBVElPTiAqLykge1xyXG4gICAgICAgIG5vZGUuY29udGVudCA9IHByb2Nlc3NFeHByZXNzaW9uKG5vZGUuY29udGVudCwgY29udGV4dCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChub2RlLnR5cGUgPT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8pIHtcclxuICAgICAgICAvLyBoYW5kbGUgZGlyZWN0aXZlcyBvbiBlbGVtZW50XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLnByb3BzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpciA9IG5vZGUucHJvcHNbaV07XHJcbiAgICAgICAgICAgIC8vIGRvIG5vdCBwcm9jZXNzIGZvciB2LW9uICYgdi1mb3Igc2luY2UgdGhleSBhcmUgc3BlY2lhbCBoYW5kbGVkXHJcbiAgICAgICAgICAgIGlmIChkaXIudHlwZSA9PT0gNyAvKiBOb2RlVHlwZXMuRElSRUNUSVZFICovICYmIGRpci5uYW1lICE9PSAnZm9yJykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZXhwID0gZGlyLmV4cDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFyZyA9IGRpci5hcmc7XHJcbiAgICAgICAgICAgICAgICAvLyBkbyBub3QgcHJvY2VzcyBleHAgaWYgdGhpcyBpcyB2LW9uOmFyZyAtIHdlIG5lZWQgc3BlY2lhbCBoYW5kbGluZ1xyXG4gICAgICAgICAgICAgICAgLy8gZm9yIHdyYXBwaW5nIGlubGluZSBzdGF0ZW1lbnRzLlxyXG4gICAgICAgICAgICAgICAgaWYgKGV4cCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGV4cC50eXBlID09PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICEoZGlyLm5hbWUgPT09ICdvbicgJiYgYXJnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRpci5leHAgPSBwcm9jZXNzRXhwcmVzc2lvbihleHAsIGNvbnRleHQsIFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHNsb3QgYXJncyBtdXN0IGJlIHByb2Nlc3NlZCBhcyBmdW5jdGlvbiBwYXJhbXNcclxuICAgICAgICAgICAgICAgICAgICBkaXIubmFtZSA9PT0gJ3Nsb3QnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChhcmcgJiYgYXJnLnR5cGUgPT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovICYmICFhcmcuaXNTdGF0aWMpIHtcclxuICAgICAgICAgICAgICAgICAgICBkaXIuYXJnID0gcHJvY2Vzc0V4cHJlc3Npb24oYXJnLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcclxuLy8gSW1wb3J0YW50OiBzaW5jZSB0aGlzIGZ1bmN0aW9uIHVzZXMgTm9kZS5qcyBvbmx5IGRlcGVuZGVuY2llcywgaXQgc2hvdWxkXHJcbi8vIGFsd2F5cyBiZSB1c2VkIHdpdGggYSBsZWFkaW5nICF0cnVlIGNoZWNrIHNvIHRoYXQgaXQgY2FuIGJlXHJcbi8vIHRyZWUtc2hha2VuIGZyb20gdGhlIGJyb3dzZXIgYnVpbGQuXHJcbmZ1bmN0aW9uIHByb2Nlc3NFeHByZXNzaW9uKG5vZGUsIGNvbnRleHQsIFxyXG4vLyBzb21lIGV4cHJlc3Npb25zIGxpa2Ugdi1zbG90IHByb3BzICYgdi1mb3IgYWxpYXNlcyBzaG91bGQgYmUgcGFyc2VkIGFzXHJcbi8vIGZ1bmN0aW9uIHBhcmFtc1xyXG5hc1BhcmFtcyA9IGZhbHNlLCBcclxuLy8gdi1vbiBoYW5kbGVyIHZhbHVlcyBtYXkgY29udGFpbiBtdWx0aXBsZSBzdGF0ZW1lbnRzXHJcbmFzUmF3U3RhdGVtZW50cyA9IGZhbHNlLCBsb2NhbFZhcnMgPSBPYmplY3QuY3JlYXRlKGNvbnRleHQuaWRlbnRpZmllcnMpKSB7XHJcbiAgICB7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAvLyBzaW1wbGUgaW4tYnJvd3NlciB2YWxpZGF0aW9uIChzYW1lIGxvZ2ljIGluIDIueClcclxuICAgICAgICAgICAgdmFsaWRhdGVCcm93c2VyRXhwcmVzc2lvbihub2RlLCBjb250ZXh0LCBhc1BhcmFtcywgYXNSYXdTdGF0ZW1lbnRzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5vZGU7XHJcbiAgICB9XHJcbn1cblxuY29uc3QgdHJhbnNmb3JtSWYgPSBjcmVhdGVTdHJ1Y3R1cmFsRGlyZWN0aXZlVHJhbnNmb3JtKC9eKGlmfGVsc2V8ZWxzZS1pZikkLywgKG5vZGUsIGRpciwgY29udGV4dCkgPT4ge1xyXG4gICAgcmV0dXJuIHByb2Nlc3NJZihub2RlLCBkaXIsIGNvbnRleHQsIChpZk5vZGUsIGJyYW5jaCwgaXNSb290KSA9PiB7XHJcbiAgICAgICAgLy8gIzE1ODc6IFdlIG5lZWQgdG8gZHluYW1pY2FsbHkgaW5jcmVtZW50IHRoZSBrZXkgYmFzZWQgb24gdGhlIGN1cnJlbnRcclxuICAgICAgICAvLyBub2RlJ3Mgc2libGluZyBub2Rlcywgc2luY2UgY2hhaW5lZCB2LWlmL2Vsc2UgYnJhbmNoZXMgYXJlXHJcbiAgICAgICAgLy8gcmVuZGVyZWQgYXQgdGhlIHNhbWUgZGVwdGhcclxuICAgICAgICBjb25zdCBzaWJsaW5ncyA9IGNvbnRleHQucGFyZW50LmNoaWxkcmVuO1xyXG4gICAgICAgIGxldCBpID0gc2libGluZ3MuaW5kZXhPZihpZk5vZGUpO1xyXG4gICAgICAgIGxldCBrZXkgPSAwO1xyXG4gICAgICAgIHdoaWxlIChpLS0gPj0gMCkge1xyXG4gICAgICAgICAgICBjb25zdCBzaWJsaW5nID0gc2libGluZ3NbaV07XHJcbiAgICAgICAgICAgIGlmIChzaWJsaW5nICYmIHNpYmxpbmcudHlwZSA9PT0gOSAvKiBOb2RlVHlwZXMuSUYgKi8pIHtcclxuICAgICAgICAgICAgICAgIGtleSArPSBzaWJsaW5nLmJyYW5jaGVzLmxlbmd0aDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBFeGl0IGNhbGxiYWNrLiBDb21wbGV0ZSB0aGUgY29kZWdlbk5vZGUgd2hlbiBhbGwgY2hpbGRyZW4gaGF2ZSBiZWVuXHJcbiAgICAgICAgLy8gdHJhbnNmb3JtZWQuXHJcbiAgICAgICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICAgICAgaWYgKGlzUm9vdCkge1xyXG4gICAgICAgICAgICAgICAgaWZOb2RlLmNvZGVnZW5Ob2RlID0gY3JlYXRlQ29kZWdlbk5vZGVGb3JCcmFuY2goYnJhbmNoLCBrZXksIGNvbnRleHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gYXR0YWNoIHRoaXMgYnJhbmNoJ3MgY29kZWdlbiBub2RlIHRvIHRoZSB2LWlmIHJvb3QuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnRDb25kaXRpb24gPSBnZXRQYXJlbnRDb25kaXRpb24oaWZOb2RlLmNvZGVnZW5Ob2RlKTtcclxuICAgICAgICAgICAgICAgIHBhcmVudENvbmRpdGlvbi5hbHRlcm5hdGUgPSBjcmVhdGVDb2RlZ2VuTm9kZUZvckJyYW5jaChicmFuY2gsIGtleSArIGlmTm9kZS5icmFuY2hlcy5sZW5ndGggLSAxLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICB9KTtcclxufSk7XHJcbi8vIHRhcmdldC1hZ25vc3RpYyB0cmFuc2Zvcm0gdXNlZCBmb3IgYm90aCBDbGllbnQgYW5kIFNTUlxyXG5mdW5jdGlvbiBwcm9jZXNzSWYobm9kZSwgZGlyLCBjb250ZXh0LCBwcm9jZXNzQ29kZWdlbikge1xyXG4gICAgaWYgKGRpci5uYW1lICE9PSAnZWxzZScgJiZcclxuICAgICAgICAoIWRpci5leHAgfHwgIWRpci5leHAuY29udGVudC50cmltKCkpKSB7XHJcbiAgICAgICAgY29uc3QgbG9jID0gZGlyLmV4cCA/IGRpci5leHAubG9jIDogbm9kZS5sb2M7XHJcbiAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMjggLyogRXJyb3JDb2Rlcy5YX1ZfSUZfTk9fRVhQUkVTU0lPTiAqLywgZGlyLmxvYykpO1xyXG4gICAgICAgIGRpci5leHAgPSBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGB0cnVlYCwgZmFsc2UsIGxvYyk7XHJcbiAgICB9XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHRydWUgJiYgZGlyLmV4cCkge1xyXG4gICAgICAgIHZhbGlkYXRlQnJvd3NlckV4cHJlc3Npb24oZGlyLmV4cCwgY29udGV4dCk7XHJcbiAgICB9XHJcbiAgICBpZiAoZGlyLm5hbWUgPT09ICdpZicpIHtcclxuICAgICAgICBjb25zdCBicmFuY2ggPSBjcmVhdGVJZkJyYW5jaChub2RlLCBkaXIpO1xyXG4gICAgICAgIGNvbnN0IGlmTm9kZSA9IHtcclxuICAgICAgICAgICAgdHlwZTogOSAvKiBOb2RlVHlwZXMuSUYgKi8sXHJcbiAgICAgICAgICAgIGxvYzogbm9kZS5sb2MsXHJcbiAgICAgICAgICAgIGJyYW5jaGVzOiBbYnJhbmNoXVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29udGV4dC5yZXBsYWNlTm9kZShpZk5vZGUpO1xyXG4gICAgICAgIGlmIChwcm9jZXNzQ29kZWdlbikge1xyXG4gICAgICAgICAgICByZXR1cm4gcHJvY2Vzc0NvZGVnZW4oaWZOb2RlLCBicmFuY2gsIHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIGxvY2F0ZSB0aGUgYWRqYWNlbnQgdi1pZlxyXG4gICAgICAgIGNvbnN0IHNpYmxpbmdzID0gY29udGV4dC5wYXJlbnQuY2hpbGRyZW47XHJcbiAgICAgICAgY29uc3QgY29tbWVudHMgPSBbXTtcclxuICAgICAgICBsZXQgaSA9IHNpYmxpbmdzLmluZGV4T2Yobm9kZSk7XHJcbiAgICAgICAgd2hpbGUgKGktLSA+PSAtMSkge1xyXG4gICAgICAgICAgICBjb25zdCBzaWJsaW5nID0gc2libGluZ3NbaV07XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgc2libGluZyAmJiBzaWJsaW5nLnR5cGUgPT09IDMgLyogTm9kZVR5cGVzLkNPTU1FTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQucmVtb3ZlTm9kZShzaWJsaW5nKTtcclxuICAgICAgICAgICAgICAgIGNvbW1lbnRzLnVuc2hpZnQoc2libGluZyk7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoc2libGluZyAmJlxyXG4gICAgICAgICAgICAgICAgc2libGluZy50eXBlID09PSAyIC8qIE5vZGVUeXBlcy5URVhUICovICYmXHJcbiAgICAgICAgICAgICAgICAhc2libGluZy5jb250ZW50LnRyaW0oKS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQucmVtb3ZlTm9kZShzaWJsaW5nKTtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChzaWJsaW5nICYmIHNpYmxpbmcudHlwZSA9PT0gOSAvKiBOb2RlVHlwZXMuSUYgKi8pIHtcclxuICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHYtZWxzZSB3YXMgZm9sbG93ZWQgYnkgdi1lbHNlLWlmXHJcbiAgICAgICAgICAgICAgICBpZiAoZGlyLm5hbWUgPT09ICdlbHNlLWlmJyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIHNpYmxpbmcuYnJhbmNoZXNbc2libGluZy5icmFuY2hlcy5sZW5ndGggLSAxXS5jb25kaXRpb24gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDMwIC8qIEVycm9yQ29kZXMuWF9WX0VMU0VfTk9fQURKQUNFTlRfSUYgKi8sIG5vZGUubG9jKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBtb3ZlIHRoZSBub2RlIHRvIHRoZSBpZiBub2RlJ3MgYnJhbmNoZXNcclxuICAgICAgICAgICAgICAgIGNvbnRleHQucmVtb3ZlTm9kZSgpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYnJhbmNoID0gY3JlYXRlSWZCcmFuY2gobm9kZSwgZGlyKTtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgICAgICAgICBjb21tZW50cy5sZW5ndGggJiZcclxuICAgICAgICAgICAgICAgICAgICAvLyAjMzYxOSBpZ25vcmUgY29tbWVudHMgaWYgdGhlIHYtaWYgaXMgZGlyZWN0IGNoaWxkIG9mIDx0cmFuc2l0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICEoY29udGV4dC5wYXJlbnQgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5wYXJlbnQudHlwZSA9PT0gMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0J1aWx0SW5UeXBlKGNvbnRleHQucGFyZW50LnRhZywgJ3RyYW5zaXRpb24nKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBicmFuY2guY2hpbGRyZW4gPSBbLi4uY29tbWVudHMsIC4uLmJyYW5jaC5jaGlsZHJlbl07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBjaGVjayBpZiB1c2VyIGlzIGZvcmNpbmcgc2FtZSBrZXkgb24gZGlmZmVyZW50IGJyYW5jaGVzXHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8ICF0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gYnJhbmNoLnVzZXJLZXk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGtleSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzaWJsaW5nLmJyYW5jaGVzLmZvckVhY2goKHsgdXNlcktleSB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNTYW1lS2V5KHVzZXJLZXksIGtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcigyOSAvKiBFcnJvckNvZGVzLlhfVl9JRl9TQU1FX0tFWSAqLywgYnJhbmNoLnVzZXJLZXkubG9jKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHNpYmxpbmcuYnJhbmNoZXMucHVzaChicmFuY2gpO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgb25FeGl0ID0gcHJvY2Vzc0NvZGVnZW4gJiYgcHJvY2Vzc0NvZGVnZW4oc2libGluZywgYnJhbmNoLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAvLyBzaW5jZSB0aGUgYnJhbmNoIHdhcyByZW1vdmVkLCBpdCB3aWxsIG5vdCBiZSB0cmF2ZXJzZWQuXHJcbiAgICAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgdG8gdHJhdmVyc2UgaGVyZS5cclxuICAgICAgICAgICAgICAgIHRyYXZlcnNlTm9kZShicmFuY2gsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgLy8gY2FsbCBvbiBleGl0XHJcbiAgICAgICAgICAgICAgICBpZiAob25FeGl0KVxyXG4gICAgICAgICAgICAgICAgICAgIG9uRXhpdCgpO1xyXG4gICAgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHRvIHJlc2V0IGN1cnJlbnROb2RlIGFmdGVyIHRyYXZlcnNhbCB0byBpbmRpY2F0ZSB0aGlzXHJcbiAgICAgICAgICAgICAgICAvLyBub2RlIGhhcyBiZWVuIHJlbW92ZWQuXHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmN1cnJlbnROb2RlID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDMwIC8qIEVycm9yQ29kZXMuWF9WX0VMU0VfTk9fQURKQUNFTlRfSUYgKi8sIG5vZGUubG9jKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUlmQnJhbmNoKG5vZGUsIGRpcikge1xyXG4gICAgY29uc3QgaXNUZW1wbGF0ZUlmID0gbm9kZS50YWdUeXBlID09PSAzIC8qIEVsZW1lbnRUeXBlcy5URU1QTEFURSAqLztcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdHlwZTogMTAgLyogTm9kZVR5cGVzLklGX0JSQU5DSCAqLyxcclxuICAgICAgICBsb2M6IG5vZGUubG9jLFxyXG4gICAgICAgIGNvbmRpdGlvbjogZGlyLm5hbWUgPT09ICdlbHNlJyA/IHVuZGVmaW5lZCA6IGRpci5leHAsXHJcbiAgICAgICAgY2hpbGRyZW46IGlzVGVtcGxhdGVJZiAmJiAhZmluZERpcihub2RlLCAnZm9yJykgPyBub2RlLmNoaWxkcmVuIDogW25vZGVdLFxyXG4gICAgICAgIHVzZXJLZXk6IGZpbmRQcm9wKG5vZGUsIGBrZXlgKSxcclxuICAgICAgICBpc1RlbXBsYXRlSWZcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlQ29kZWdlbk5vZGVGb3JCcmFuY2goYnJhbmNoLCBrZXlJbmRleCwgY29udGV4dCkge1xyXG4gICAgaWYgKGJyYW5jaC5jb25kaXRpb24pIHtcclxuICAgICAgICByZXR1cm4gY3JlYXRlQ29uZGl0aW9uYWxFeHByZXNzaW9uKGJyYW5jaC5jb25kaXRpb24sIGNyZWF0ZUNoaWxkcmVuQ29kZWdlbk5vZGUoYnJhbmNoLCBrZXlJbmRleCwgY29udGV4dCksIFxyXG4gICAgICAgIC8vIG1ha2Ugc3VyZSB0byBwYXNzIGluIGFzQmxvY2s6IHRydWUgc28gdGhhdCB0aGUgY29tbWVudCBub2RlIGNhbGxcclxuICAgICAgICAvLyBjbG9zZXMgdGhlIGN1cnJlbnQgYmxvY2suXHJcbiAgICAgICAgY3JlYXRlQ2FsbEV4cHJlc3Npb24oY29udGV4dC5oZWxwZXIoQ1JFQVRFX0NPTU1FTlQpLCBbXHJcbiAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/ICdcInYtaWZcIicgOiAnXCJcIicsXHJcbiAgICAgICAgICAgICd0cnVlJ1xyXG4gICAgICAgIF0pKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBjcmVhdGVDaGlsZHJlbkNvZGVnZW5Ob2RlKGJyYW5jaCwga2V5SW5kZXgsIGNvbnRleHQpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUNoaWxkcmVuQ29kZWdlbk5vZGUoYnJhbmNoLCBrZXlJbmRleCwgY29udGV4dCkge1xyXG4gICAgY29uc3QgeyBoZWxwZXIgfSA9IGNvbnRleHQ7XHJcbiAgICBjb25zdCBrZXlQcm9wZXJ0eSA9IGNyZWF0ZU9iamVjdFByb3BlcnR5KGBrZXlgLCBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGAke2tleUluZGV4fWAsIGZhbHNlLCBsb2NTdHViLCAyIC8qIENvbnN0YW50VHlwZXMuQ0FOX0hPSVNUICovKSk7XHJcbiAgICBjb25zdCB7IGNoaWxkcmVuIH0gPSBicmFuY2g7XHJcbiAgICBjb25zdCBmaXJzdENoaWxkID0gY2hpbGRyZW5bMF07XHJcbiAgICBjb25zdCBuZWVkRnJhZ21lbnRXcmFwcGVyID0gY2hpbGRyZW4ubGVuZ3RoICE9PSAxIHx8IGZpcnN0Q2hpbGQudHlwZSAhPT0gMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLztcclxuICAgIGlmIChuZWVkRnJhZ21lbnRXcmFwcGVyKSB7XHJcbiAgICAgICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA9PT0gMSAmJiBmaXJzdENoaWxkLnR5cGUgPT09IDExIC8qIE5vZGVUeXBlcy5GT1IgKi8pIHtcclxuICAgICAgICAgICAgLy8gb3B0aW1pemUgYXdheSBuZXN0ZWQgZnJhZ21lbnRzIHdoZW4gY2hpbGQgaXMgYSBGb3JOb2RlXHJcbiAgICAgICAgICAgIGNvbnN0IHZub2RlQ2FsbCA9IGZpcnN0Q2hpbGQuY29kZWdlbk5vZGU7XHJcbiAgICAgICAgICAgIGluamVjdFByb3Aodm5vZGVDYWxsLCBrZXlQcm9wZXJ0eSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIHJldHVybiB2bm9kZUNhbGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsZXQgcGF0Y2hGbGFnID0gNjQgLyogUGF0Y2hGbGFncy5TVEFCTEVfRlJBR01FTlQgKi87XHJcbiAgICAgICAgICAgIGxldCBwYXRjaEZsYWdUZXh0ID0gUGF0Y2hGbGFnTmFtZXNbNjQgLyogUGF0Y2hGbGFncy5TVEFCTEVfRlJBR01FTlQgKi9dO1xyXG4gICAgICAgICAgICAvLyBjaGVjayBpZiB0aGUgZnJhZ21lbnQgYWN0dWFsbHkgY29udGFpbnMgYSBzaW5nbGUgdmFsaWQgY2hpbGQgd2l0aFxyXG4gICAgICAgICAgICAvLyB0aGUgcmVzdCBiZWluZyBjb21tZW50c1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgICAgICAhYnJhbmNoLmlzVGVtcGxhdGVJZiAmJlxyXG4gICAgICAgICAgICAgICAgY2hpbGRyZW4uZmlsdGVyKGMgPT4gYy50eXBlICE9PSAzIC8qIE5vZGVUeXBlcy5DT01NRU5UICovKS5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgICAgIHBhdGNoRmxhZyB8PSAyMDQ4IC8qIFBhdGNoRmxhZ3MuREVWX1JPT1RfRlJBR01FTlQgKi87XHJcbiAgICAgICAgICAgICAgICBwYXRjaEZsYWdUZXh0ICs9IGAsICR7UGF0Y2hGbGFnTmFtZXNbMjA0OCAvKiBQYXRjaEZsYWdzLkRFVl9ST09UX0ZSQUdNRU5UICovXX1gO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVWTm9kZUNhbGwoY29udGV4dCwgaGVscGVyKEZSQUdNRU5UKSwgY3JlYXRlT2JqZWN0RXhwcmVzc2lvbihba2V5UHJvcGVydHldKSwgY2hpbGRyZW4sIHBhdGNoRmxhZyArICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgIC8qICR7cGF0Y2hGbGFnVGV4dH0gKi9gIDogYGApLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdHJ1ZSwgZmFsc2UsIGZhbHNlIC8qIGlzQ29tcG9uZW50ICovLCBicmFuY2gubG9jKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCByZXQgPSBmaXJzdENoaWxkLmNvZGVnZW5Ob2RlO1xyXG4gICAgICAgIGNvbnN0IHZub2RlQ2FsbCA9IGdldE1lbW9lZFZOb2RlQ2FsbChyZXQpO1xyXG4gICAgICAgIC8vIENoYW5nZSBjcmVhdGVWTm9kZSB0byBjcmVhdGVCbG9jay5cclxuICAgICAgICBpZiAodm5vZGVDYWxsLnR5cGUgPT09IDEzIC8qIE5vZGVUeXBlcy5WTk9ERV9DQUxMICovKSB7XHJcbiAgICAgICAgICAgIG1ha2VCbG9jayh2bm9kZUNhbGwsIGNvbnRleHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBpbmplY3QgYnJhbmNoIGtleVxyXG4gICAgICAgIGluamVjdFByb3Aodm5vZGVDYWxsLCBrZXlQcm9wZXJ0eSwgY29udGV4dCk7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBpc1NhbWVLZXkoYSwgYikge1xyXG4gICAgaWYgKCFhIHx8IGEudHlwZSAhPT0gYi50eXBlKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKGEudHlwZSA9PT0gNiAvKiBOb2RlVHlwZXMuQVRUUklCVVRFICovKSB7XHJcbiAgICAgICAgaWYgKGEudmFsdWUuY29udGVudCAhPT0gYi52YWx1ZS5jb250ZW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBkaXJlY3RpdmVcclxuICAgICAgICBjb25zdCBleHAgPSBhLmV4cDtcclxuICAgICAgICBjb25zdCBicmFuY2hFeHAgPSBiLmV4cDtcclxuICAgICAgICBpZiAoZXhwLnR5cGUgIT09IGJyYW5jaEV4cC50eXBlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGV4cC50eXBlICE9PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLyB8fFxyXG4gICAgICAgICAgICBleHAuaXNTdGF0aWMgIT09IGJyYW5jaEV4cC5pc1N0YXRpYyB8fFxyXG4gICAgICAgICAgICBleHAuY29udGVudCAhPT0gYnJhbmNoRXhwLmNvbnRlbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG59XHJcbmZ1bmN0aW9uIGdldFBhcmVudENvbmRpdGlvbihub2RlKSB7XHJcbiAgICB3aGlsZSAodHJ1ZSkge1xyXG4gICAgICAgIGlmIChub2RlLnR5cGUgPT09IDE5IC8qIE5vZGVUeXBlcy5KU19DT05ESVRJT05BTF9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgICAgIGlmIChub2RlLmFsdGVybmF0ZS50eXBlID09PSAxOSAvKiBOb2RlVHlwZXMuSlNfQ09ORElUSU9OQUxfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgICAgICAgICAgbm9kZSA9IG5vZGUuYWx0ZXJuYXRlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAobm9kZS50eXBlID09PSAyMCAvKiBOb2RlVHlwZXMuSlNfQ0FDSEVfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgICAgICBub2RlID0gbm9kZS52YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cblxuY29uc3QgdHJhbnNmb3JtRm9yID0gY3JlYXRlU3RydWN0dXJhbERpcmVjdGl2ZVRyYW5zZm9ybSgnZm9yJywgKG5vZGUsIGRpciwgY29udGV4dCkgPT4ge1xyXG4gICAgY29uc3QgeyBoZWxwZXIsIHJlbW92ZUhlbHBlciB9ID0gY29udGV4dDtcclxuICAgIHJldHVybiBwcm9jZXNzRm9yKG5vZGUsIGRpciwgY29udGV4dCwgZm9yTm9kZSA9PiB7XHJcbiAgICAgICAgLy8gY3JlYXRlIHRoZSBsb29wIHJlbmRlciBmdW5jdGlvbiBleHByZXNzaW9uIG5vdywgYW5kIGFkZCB0aGVcclxuICAgICAgICAvLyBpdGVyYXRvciBvbiBleGl0IGFmdGVyIGFsbCBjaGlsZHJlbiBoYXZlIGJlZW4gdHJhdmVyc2VkXHJcbiAgICAgICAgY29uc3QgcmVuZGVyRXhwID0gY3JlYXRlQ2FsbEV4cHJlc3Npb24oaGVscGVyKFJFTkRFUl9MSVNUKSwgW1xyXG4gICAgICAgICAgICBmb3JOb2RlLnNvdXJjZVxyXG4gICAgICAgIF0pO1xyXG4gICAgICAgIGNvbnN0IGlzVGVtcGxhdGUgPSBpc1RlbXBsYXRlTm9kZShub2RlKTtcclxuICAgICAgICBjb25zdCBtZW1vID0gZmluZERpcihub2RlLCAnbWVtbycpO1xyXG4gICAgICAgIGNvbnN0IGtleVByb3AgPSBmaW5kUHJvcChub2RlLCBga2V5YCk7XHJcbiAgICAgICAgY29uc3Qga2V5RXhwID0ga2V5UHJvcCAmJlxyXG4gICAgICAgICAgICAoa2V5UHJvcC50eXBlID09PSA2IC8qIE5vZGVUeXBlcy5BVFRSSUJVVEUgKi9cclxuICAgICAgICAgICAgICAgID8gY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihrZXlQcm9wLnZhbHVlLmNvbnRlbnQsIHRydWUpXHJcbiAgICAgICAgICAgICAgICA6IGtleVByb3AuZXhwKTtcclxuICAgICAgICBjb25zdCBrZXlQcm9wZXJ0eSA9IGtleVByb3AgPyBjcmVhdGVPYmplY3RQcm9wZXJ0eShga2V5YCwga2V5RXhwKSA6IG51bGw7XHJcbiAgICAgICAgY29uc3QgaXNTdGFibGVGcmFnbWVudCA9IGZvck5vZGUuc291cmNlLnR5cGUgPT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovICYmXHJcbiAgICAgICAgICAgIGZvck5vZGUuc291cmNlLmNvbnN0VHlwZSA+IDAgLyogQ29uc3RhbnRUeXBlcy5OT1RfQ09OU1RBTlQgKi87XHJcbiAgICAgICAgY29uc3QgZnJhZ21lbnRGbGFnID0gaXNTdGFibGVGcmFnbWVudFxyXG4gICAgICAgICAgICA/IDY0IC8qIFBhdGNoRmxhZ3MuU1RBQkxFX0ZSQUdNRU5UICovXHJcbiAgICAgICAgICAgIDoga2V5UHJvcFxyXG4gICAgICAgICAgICAgICAgPyAxMjggLyogUGF0Y2hGbGFncy5LRVlFRF9GUkFHTUVOVCAqL1xyXG4gICAgICAgICAgICAgICAgOiAyNTYgLyogUGF0Y2hGbGFncy5VTktFWUVEX0ZSQUdNRU5UICovO1xyXG4gICAgICAgIGZvck5vZGUuY29kZWdlbk5vZGUgPSBjcmVhdGVWTm9kZUNhbGwoY29udGV4dCwgaGVscGVyKEZSQUdNRU5UKSwgdW5kZWZpbmVkLCByZW5kZXJFeHAsIGZyYWdtZW50RmxhZyArXHJcbiAgICAgICAgICAgICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgIC8qICR7UGF0Y2hGbGFnTmFtZXNbZnJhZ21lbnRGbGFnXX0gKi9gIDogYGApLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdHJ1ZSAvKiBpc0Jsb2NrICovLCAhaXNTdGFibGVGcmFnbWVudCAvKiBkaXNhYmxlVHJhY2tpbmcgKi8sIGZhbHNlIC8qIGlzQ29tcG9uZW50ICovLCBub2RlLmxvYyk7XHJcbiAgICAgICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICAgICAgLy8gZmluaXNoIHRoZSBjb2RlZ2VuIG5vdyB0aGF0IGFsbCBjaGlsZHJlbiBoYXZlIGJlZW4gdHJhdmVyc2VkXHJcbiAgICAgICAgICAgIGxldCBjaGlsZEJsb2NrO1xyXG4gICAgICAgICAgICBjb25zdCB7IGNoaWxkcmVuIH0gPSBmb3JOb2RlO1xyXG4gICAgICAgICAgICAvLyBjaGVjayA8dGVtcGxhdGUgdi1mb3I+IGtleSBwbGFjZW1lbnRcclxuICAgICAgICAgICAgaWYgKCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgIXRydWUpICYmIGlzVGVtcGxhdGUpIHtcclxuICAgICAgICAgICAgICAgIG5vZGUuY2hpbGRyZW4uc29tZShjID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYy50eXBlID09PSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGZpbmRQcm9wKGMsICdrZXknKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMzMgLyogRXJyb3JDb2Rlcy5YX1ZfRk9SX1RFTVBMQVRFX0tFWV9QTEFDRU1FTlQgKi8sIGtleS5sb2MpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgbmVlZEZyYWdtZW50V3JhcHBlciA9IGNoaWxkcmVuLmxlbmd0aCAhPT0gMSB8fCBjaGlsZHJlblswXS50eXBlICE9PSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovO1xyXG4gICAgICAgICAgICBjb25zdCBzbG90T3V0bGV0ID0gaXNTbG90T3V0bGV0KG5vZGUpXHJcbiAgICAgICAgICAgICAgICA/IG5vZGVcclxuICAgICAgICAgICAgICAgIDogaXNUZW1wbGF0ZSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID09PSAxICYmXHJcbiAgICAgICAgICAgICAgICAgICAgaXNTbG90T3V0bGV0KG5vZGUuY2hpbGRyZW5bMF0pXHJcbiAgICAgICAgICAgICAgICAgICAgPyBub2RlLmNoaWxkcmVuWzBdIC8vIGFwaS1leHRyYWN0b3Igc29tZWhvdyBmYWlscyB0byBpbmZlciB0aGlzXHJcbiAgICAgICAgICAgICAgICAgICAgOiBudWxsO1xyXG4gICAgICAgICAgICBpZiAoc2xvdE91dGxldCkge1xyXG4gICAgICAgICAgICAgICAgLy8gPHNsb3Qgdi1mb3I9XCIuLi5cIj4gb3IgPHRlbXBsYXRlIHYtZm9yPVwiLi4uXCI+PHNsb3QvPjwvdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICBjaGlsZEJsb2NrID0gc2xvdE91dGxldC5jb2RlZ2VuTm9kZTtcclxuICAgICAgICAgICAgICAgIGlmIChpc1RlbXBsYXRlICYmIGtleVByb3BlcnR5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gPHRlbXBsYXRlIHYtZm9yPVwiLi4uXCIgOmtleT1cIi4uLlwiPjxzbG90Lz48L3RlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gaW5qZWN0IHRoZSBrZXkgdG8gdGhlIHJlbmRlclNsb3QoKSBjYWxsLlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoZSBwcm9wcyBmb3IgcmVuZGVyU2xvdCBpcyBwYXNzZWQgYXMgdGhlIDNyZCBhcmd1bWVudC5cclxuICAgICAgICAgICAgICAgICAgICBpbmplY3RQcm9wKGNoaWxkQmxvY2ssIGtleVByb3BlcnR5LCBjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChuZWVkRnJhZ21lbnRXcmFwcGVyKSB7XHJcbiAgICAgICAgICAgICAgICAvLyA8dGVtcGxhdGUgdi1mb3I9XCIuLi5cIj4gd2l0aCB0ZXh0IG9yIG11bHRpLWVsZW1lbnRzXHJcbiAgICAgICAgICAgICAgICAvLyBzaG91bGQgZ2VuZXJhdGUgYSBmcmFnbWVudCBibG9jayBmb3IgZWFjaCBsb29wXHJcbiAgICAgICAgICAgICAgICBjaGlsZEJsb2NrID0gY3JlYXRlVk5vZGVDYWxsKGNvbnRleHQsIGhlbHBlcihGUkFHTUVOVCksIGtleVByb3BlcnR5ID8gY3JlYXRlT2JqZWN0RXhwcmVzc2lvbihba2V5UHJvcGVydHldKSA6IHVuZGVmaW5lZCwgbm9kZS5jaGlsZHJlbiwgNjQgLyogUGF0Y2hGbGFncy5TVEFCTEVfRlJBR01FTlQgKi8gK1xyXG4gICAgICAgICAgICAgICAgICAgICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyBgIC8qICR7UGF0Y2hGbGFnTmFtZXNbNjQgLyogUGF0Y2hGbGFncy5TVEFCTEVfRlJBR01FTlQgKi9dfSAqL2BcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiBgYCksIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0cnVlLCB1bmRlZmluZWQsIGZhbHNlIC8qIGlzQ29tcG9uZW50ICovKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIE5vcm1hbCBlbGVtZW50IHYtZm9yLiBEaXJlY3RseSB1c2UgdGhlIGNoaWxkJ3MgY29kZWdlbk5vZGVcclxuICAgICAgICAgICAgICAgIC8vIGJ1dCBtYXJrIGl0IGFzIGEgYmxvY2suXHJcbiAgICAgICAgICAgICAgICBjaGlsZEJsb2NrID0gY2hpbGRyZW5bMF1cclxuICAgICAgICAgICAgICAgICAgICAuY29kZWdlbk5vZGU7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNUZW1wbGF0ZSAmJiBrZXlQcm9wZXJ0eSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGluamVjdFByb3AoY2hpbGRCbG9jaywga2V5UHJvcGVydHksIGNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkQmxvY2suaXNCbG9jayAhPT0gIWlzU3RhYmxlRnJhZ21lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGRCbG9jay5pc0Jsb2NrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN3aXRjaCBmcm9tIGJsb2NrIHRvIHZub2RlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUhlbHBlcihPUEVOX0JMT0NLKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlSGVscGVyKGdldFZOb2RlQmxvY2tIZWxwZXIoY29udGV4dC5pblNTUiwgY2hpbGRCbG9jay5pc0NvbXBvbmVudCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3dpdGNoIGZyb20gdm5vZGUgdG8gYmxvY2tcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlSGVscGVyKGdldFZOb2RlSGVscGVyKGNvbnRleHQuaW5TU1IsIGNoaWxkQmxvY2suaXNDb21wb25lbnQpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjaGlsZEJsb2NrLmlzQmxvY2sgPSAhaXNTdGFibGVGcmFnbWVudDtcclxuICAgICAgICAgICAgICAgIGlmIChjaGlsZEJsb2NrLmlzQmxvY2spIHtcclxuICAgICAgICAgICAgICAgICAgICBoZWxwZXIoT1BFTl9CTE9DSyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVscGVyKGdldFZOb2RlQmxvY2tIZWxwZXIoY29udGV4dC5pblNTUiwgY2hpbGRCbG9jay5pc0NvbXBvbmVudCkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVscGVyKGdldFZOb2RlSGVscGVyKGNvbnRleHQuaW5TU1IsIGNoaWxkQmxvY2suaXNDb21wb25lbnQpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAobWVtbykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbG9vcCA9IGNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihjcmVhdGVGb3JMb29wUGFyYW1zKGZvck5vZGUucGFyc2VSZXN1bHQsIFtcclxuICAgICAgICAgICAgICAgICAgICBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGBfY2FjaGVkYClcclxuICAgICAgICAgICAgICAgIF0pKTtcclxuICAgICAgICAgICAgICAgIGxvb3AuYm9keSA9IGNyZWF0ZUJsb2NrU3RhdGVtZW50KFtcclxuICAgICAgICAgICAgICAgICAgICBjcmVhdGVDb21wb3VuZEV4cHJlc3Npb24oW2Bjb25zdCBfbWVtbyA9IChgLCBtZW1vLmV4cCwgYClgXSksXHJcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlQ29tcG91bmRFeHByZXNzaW9uKFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYGlmIChfY2FjaGVkYCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uKGtleUV4cCA/IFtgICYmIF9jYWNoZWQua2V5ID09PSBgLCBrZXlFeHBdIDogW10pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBgICYmICR7Y29udGV4dC5oZWxwZXJTdHJpbmcoSVNfTUVNT19TQU1FKX0oX2NhY2hlZCwgX21lbW8pKSByZXR1cm4gX2NhY2hlZGBcclxuICAgICAgICAgICAgICAgICAgICBdKSxcclxuICAgICAgICAgICAgICAgICAgICBjcmVhdGVDb21wb3VuZEV4cHJlc3Npb24oW2Bjb25zdCBfaXRlbSA9IGAsIGNoaWxkQmxvY2tdKSxcclxuICAgICAgICAgICAgICAgICAgICBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGBfaXRlbS5tZW1vID0gX21lbW9gKSxcclxuICAgICAgICAgICAgICAgICAgICBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGByZXR1cm4gX2l0ZW1gKVxyXG4gICAgICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICAgICAgICByZW5kZXJFeHAuYXJndW1lbnRzLnB1c2gobG9vcCwgY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihgX2NhY2hlYCksIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oU3RyaW5nKGNvbnRleHQuY2FjaGVkKyspKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZW5kZXJFeHAuYXJndW1lbnRzLnB1c2goY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uKGNyZWF0ZUZvckxvb3BQYXJhbXMoZm9yTm9kZS5wYXJzZVJlc3VsdCksIGNoaWxkQmxvY2ssIHRydWUgLyogZm9yY2UgbmV3bGluZSAqLykpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgIH0pO1xyXG59KTtcclxuLy8gdGFyZ2V0LWFnbm9zdGljIHRyYW5zZm9ybSB1c2VkIGZvciBib3RoIENsaWVudCBhbmQgU1NSXHJcbmZ1bmN0aW9uIHByb2Nlc3NGb3Iobm9kZSwgZGlyLCBjb250ZXh0LCBwcm9jZXNzQ29kZWdlbikge1xyXG4gICAgaWYgKCFkaXIuZXhwKSB7XHJcbiAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMzEgLyogRXJyb3JDb2Rlcy5YX1ZfRk9SX05PX0VYUFJFU1NJT04gKi8sIGRpci5sb2MpKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBwYXJzZVJlc3VsdCA9IHBhcnNlRm9yRXhwcmVzc2lvbihcclxuICAgIC8vIGNhbiBvbmx5IGJlIHNpbXBsZSBleHByZXNzaW9uIGJlY2F1c2UgdkZvciB0cmFuc2Zvcm0gaXMgYXBwbGllZFxyXG4gICAgLy8gYmVmb3JlIGV4cHJlc3Npb24gdHJhbnNmb3JtLlxyXG4gICAgZGlyLmV4cCwgY29udGV4dCk7XHJcbiAgICBpZiAoIXBhcnNlUmVzdWx0KSB7XHJcbiAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMzIgLyogRXJyb3JDb2Rlcy5YX1ZfRk9SX01BTEZPUk1FRF9FWFBSRVNTSU9OICovLCBkaXIubG9jKSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBhZGRJZGVudGlmaWVycywgcmVtb3ZlSWRlbnRpZmllcnMsIHNjb3BlcyB9ID0gY29udGV4dDtcclxuICAgIGNvbnN0IHsgc291cmNlLCB2YWx1ZSwga2V5LCBpbmRleCB9ID0gcGFyc2VSZXN1bHQ7XHJcbiAgICBjb25zdCBmb3JOb2RlID0ge1xyXG4gICAgICAgIHR5cGU6IDExIC8qIE5vZGVUeXBlcy5GT1IgKi8sXHJcbiAgICAgICAgbG9jOiBkaXIubG9jLFxyXG4gICAgICAgIHNvdXJjZSxcclxuICAgICAgICB2YWx1ZUFsaWFzOiB2YWx1ZSxcclxuICAgICAgICBrZXlBbGlhczoga2V5LFxyXG4gICAgICAgIG9iamVjdEluZGV4QWxpYXM6IGluZGV4LFxyXG4gICAgICAgIHBhcnNlUmVzdWx0LFxyXG4gICAgICAgIGNoaWxkcmVuOiBpc1RlbXBsYXRlTm9kZShub2RlKSA/IG5vZGUuY2hpbGRyZW4gOiBbbm9kZV1cclxuICAgIH07XHJcbiAgICBjb250ZXh0LnJlcGxhY2VOb2RlKGZvck5vZGUpO1xyXG4gICAgLy8gYm9va2tlZXBpbmdcclxuICAgIHNjb3Blcy52Rm9yKys7XHJcbiAgICBjb25zdCBvbkV4aXQgPSBwcm9jZXNzQ29kZWdlbiAmJiBwcm9jZXNzQ29kZWdlbihmb3JOb2RlKTtcclxuICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgc2NvcGVzLnZGb3ItLTtcclxuICAgICAgICBpZiAob25FeGl0KVxyXG4gICAgICAgICAgICBvbkV4aXQoKTtcclxuICAgIH07XHJcbn1cclxuY29uc3QgZm9yQWxpYXNSRSA9IC8oW1xcc1xcU10qPylcXHMrKD86aW58b2YpXFxzKyhbXFxzXFxTXSopLztcclxuLy8gVGhpcyByZWdleCBkb2Vzbid0IGNvdmVyIHRoZSBjYXNlIGlmIGtleSBvciBpbmRleCBhbGlhc2VzIGhhdmUgZGVzdHJ1Y3R1cmluZyxcclxuLy8gYnV0IHRob3NlIGRvIG5vdCBtYWtlIHNlbnNlIGluIHRoZSBmaXJzdCBwbGFjZSwgc28gdGhpcyB3b3JrcyBpbiBwcmFjdGljZS5cclxuY29uc3QgZm9ySXRlcmF0b3JSRSA9IC8sKFteLFxcfVxcXV0qKSg/OiwoW14sXFx9XFxdXSopKT8kLztcclxuY29uc3Qgc3RyaXBQYXJlbnNSRSA9IC9eXFwofFxcKSQvZztcclxuZnVuY3Rpb24gcGFyc2VGb3JFeHByZXNzaW9uKGlucHV0LCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCBsb2MgPSBpbnB1dC5sb2M7XHJcbiAgICBjb25zdCBleHAgPSBpbnB1dC5jb250ZW50O1xyXG4gICAgY29uc3QgaW5NYXRjaCA9IGV4cC5tYXRjaChmb3JBbGlhc1JFKTtcclxuICAgIGlmICghaW5NYXRjaClcclxuICAgICAgICByZXR1cm47XHJcbiAgICBjb25zdCBbLCBMSFMsIFJIU10gPSBpbk1hdGNoO1xyXG4gICAgY29uc3QgcmVzdWx0ID0ge1xyXG4gICAgICAgIHNvdXJjZTogY3JlYXRlQWxpYXNFeHByZXNzaW9uKGxvYywgUkhTLnRyaW0oKSwgZXhwLmluZGV4T2YoUkhTLCBMSFMubGVuZ3RoKSksXHJcbiAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcclxuICAgICAgICBrZXk6IHVuZGVmaW5lZCxcclxuICAgICAgICBpbmRleDogdW5kZWZpbmVkXHJcbiAgICB9O1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiB0cnVlKSB7XHJcbiAgICAgICAgdmFsaWRhdGVCcm93c2VyRXhwcmVzc2lvbihyZXN1bHQuc291cmNlLCBjb250ZXh0KTtcclxuICAgIH1cclxuICAgIGxldCB2YWx1ZUNvbnRlbnQgPSBMSFMudHJpbSgpLnJlcGxhY2Uoc3RyaXBQYXJlbnNSRSwgJycpLnRyaW0oKTtcclxuICAgIGNvbnN0IHRyaW1tZWRPZmZzZXQgPSBMSFMuaW5kZXhPZih2YWx1ZUNvbnRlbnQpO1xyXG4gICAgY29uc3QgaXRlcmF0b3JNYXRjaCA9IHZhbHVlQ29udGVudC5tYXRjaChmb3JJdGVyYXRvclJFKTtcclxuICAgIGlmIChpdGVyYXRvck1hdGNoKSB7XHJcbiAgICAgICAgdmFsdWVDb250ZW50ID0gdmFsdWVDb250ZW50LnJlcGxhY2UoZm9ySXRlcmF0b3JSRSwgJycpLnRyaW0oKTtcclxuICAgICAgICBjb25zdCBrZXlDb250ZW50ID0gaXRlcmF0b3JNYXRjaFsxXS50cmltKCk7XHJcbiAgICAgICAgbGV0IGtleU9mZnNldDtcclxuICAgICAgICBpZiAoa2V5Q29udGVudCkge1xyXG4gICAgICAgICAgICBrZXlPZmZzZXQgPSBleHAuaW5kZXhPZihrZXlDb250ZW50LCB0cmltbWVkT2Zmc2V0ICsgdmFsdWVDb250ZW50Lmxlbmd0aCk7XHJcbiAgICAgICAgICAgIHJlc3VsdC5rZXkgPSBjcmVhdGVBbGlhc0V4cHJlc3Npb24obG9jLCBrZXlDb250ZW50LCBrZXlPZmZzZXQpO1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHRydWUpIHtcclxuICAgICAgICAgICAgICAgIHZhbGlkYXRlQnJvd3NlckV4cHJlc3Npb24ocmVzdWx0LmtleSwgY29udGV4dCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGl0ZXJhdG9yTWF0Y2hbMl0pIHtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhDb250ZW50ID0gaXRlcmF0b3JNYXRjaFsyXS50cmltKCk7XHJcbiAgICAgICAgICAgIGlmIChpbmRleENvbnRlbnQpIHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdC5pbmRleCA9IGNyZWF0ZUFsaWFzRXhwcmVzc2lvbihsb2MsIGluZGV4Q29udGVudCwgZXhwLmluZGV4T2YoaW5kZXhDb250ZW50LCByZXN1bHQua2V5XHJcbiAgICAgICAgICAgICAgICAgICAgPyBrZXlPZmZzZXQgKyBrZXlDb250ZW50Lmxlbmd0aFxyXG4gICAgICAgICAgICAgICAgICAgIDogdHJpbW1lZE9mZnNldCArIHZhbHVlQ29udGVudC5sZW5ndGgpKTtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlQnJvd3NlckV4cHJlc3Npb24ocmVzdWx0LmluZGV4LCBjb250ZXh0LCB0cnVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh2YWx1ZUNvbnRlbnQpIHtcclxuICAgICAgICByZXN1bHQudmFsdWUgPSBjcmVhdGVBbGlhc0V4cHJlc3Npb24obG9jLCB2YWx1ZUNvbnRlbnQsIHRyaW1tZWRPZmZzZXQpO1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgdHJ1ZSkge1xyXG4gICAgICAgICAgICB2YWxpZGF0ZUJyb3dzZXJFeHByZXNzaW9uKHJlc3VsdC52YWx1ZSwgY29udGV4dCwgdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVBbGlhc0V4cHJlc3Npb24ocmFuZ2UsIGNvbnRlbnQsIG9mZnNldCkge1xyXG4gICAgcmV0dXJuIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oY29udGVudCwgZmFsc2UsIGdldElubmVyUmFuZ2UocmFuZ2UsIG9mZnNldCwgY29udGVudC5sZW5ndGgpKTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVGb3JMb29wUGFyYW1zKHsgdmFsdWUsIGtleSwgaW5kZXggfSwgbWVtb0FyZ3MgPSBbXSkge1xyXG4gICAgcmV0dXJuIGNyZWF0ZVBhcmFtc0xpc3QoW3ZhbHVlLCBrZXksIGluZGV4LCAuLi5tZW1vQXJnc10pO1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZVBhcmFtc0xpc3QoYXJncykge1xyXG4gICAgbGV0IGkgPSBhcmdzLmxlbmd0aDtcclxuICAgIHdoaWxlIChpLS0pIHtcclxuICAgICAgICBpZiAoYXJnc1tpXSlcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXJnc1xyXG4gICAgICAgIC5zbGljZSgwLCBpICsgMSlcclxuICAgICAgICAubWFwKChhcmcsIGkpID0+IGFyZyB8fCBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGBfYC5yZXBlYXQoaSArIDEpLCBmYWxzZSkpO1xyXG59XG5cbmNvbnN0IGRlZmF1bHRGYWxsYmFjayA9IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYHVuZGVmaW5lZGAsIGZhbHNlKTtcclxuLy8gQSBOb2RlVHJhbnNmb3JtIHRoYXQ6XHJcbi8vIDEuIFRyYWNrcyBzY29wZSBpZGVudGlmaWVycyBmb3Igc2NvcGVkIHNsb3RzIHNvIHRoYXQgdGhleSBkb24ndCBnZXQgcHJlZml4ZWRcclxuLy8gICAgYnkgdHJhbnNmb3JtRXhwcmVzc2lvbi4gVGhpcyBpcyBvbmx5IGFwcGxpZWQgaW4gbm9uLWJyb3dzZXIgYnVpbGRzIHdpdGhcclxuLy8gICAgeyBwcmVmaXhJZGVudGlmaWVyczogdHJ1ZSB9LlxyXG4vLyAyLiBUcmFjayB2LXNsb3QgZGVwdGhzIHNvIHRoYXQgd2Uga25vdyBhIHNsb3QgaXMgaW5zaWRlIGFub3RoZXIgc2xvdC5cclxuLy8gICAgTm90ZSB0aGUgZXhpdCBjYWxsYmFjayBpcyBleGVjdXRlZCBiZWZvcmUgYnVpbGRTbG90cygpIG9uIHRoZSBzYW1lIG5vZGUsXHJcbi8vICAgIHNvIG9ubHkgbmVzdGVkIHNsb3RzIHNlZSBwb3NpdGl2ZSBudW1iZXJzLlxyXG5jb25zdCB0cmFja1Nsb3RTY29wZXMgPSAobm9kZSwgY29udGV4dCkgPT4ge1xyXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLyAmJlxyXG4gICAgICAgIChub2RlLnRhZ1R5cGUgPT09IDEgLyogRWxlbWVudFR5cGVzLkNPTVBPTkVOVCAqLyB8fFxyXG4gICAgICAgICAgICBub2RlLnRhZ1R5cGUgPT09IDMgLyogRWxlbWVudFR5cGVzLlRFTVBMQVRFICovKSkge1xyXG4gICAgICAgIC8vIFdlIGFyZSBvbmx5IGNoZWNraW5nIG5vbi1lbXB0eSB2LXNsb3QgaGVyZVxyXG4gICAgICAgIC8vIHNpbmNlIHdlIG9ubHkgY2FyZSBhYm91dCBzbG90cyB0aGF0IGludHJvZHVjZSBzY29wZSB2YXJpYWJsZXMuXHJcbiAgICAgICAgY29uc3QgdlNsb3QgPSBmaW5kRGlyKG5vZGUsICdzbG90Jyk7XHJcbiAgICAgICAgaWYgKHZTbG90KSB7XHJcbiAgICAgICAgICAgIHZTbG90LmV4cDtcclxuICAgICAgICAgICAgY29udGV4dC5zY29wZXMudlNsb3QrKztcclxuICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuc2NvcGVzLnZTbG90LS07XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59O1xyXG4vLyBBIE5vZGVUcmFuc2Zvcm0gdGhhdCB0cmFja3Mgc2NvcGUgaWRlbnRpZmllcnMgZm9yIHNjb3BlZCBzbG90cyB3aXRoIHYtZm9yLlxyXG4vLyBUaGlzIHRyYW5zZm9ybSBpcyBvbmx5IGFwcGxpZWQgaW4gbm9uLWJyb3dzZXIgYnVpbGRzIHdpdGggeyBwcmVmaXhJZGVudGlmaWVyczogdHJ1ZSB9XHJcbmNvbnN0IHRyYWNrVkZvclNsb3RTY29wZXMgPSAobm9kZSwgY29udGV4dCkgPT4ge1xyXG4gICAgbGV0IHZGb3I7XHJcbiAgICBpZiAoaXNUZW1wbGF0ZU5vZGUobm9kZSkgJiZcclxuICAgICAgICBub2RlLnByb3BzLnNvbWUoaXNWU2xvdCkgJiZcclxuICAgICAgICAodkZvciA9IGZpbmREaXIobm9kZSwgJ2ZvcicpKSkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9ICh2Rm9yLnBhcnNlUmVzdWx0ID0gcGFyc2VGb3JFeHByZXNzaW9uKHZGb3IuZXhwLCBjb250ZXh0KSk7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICBjb25zdCB7IHZhbHVlLCBrZXksIGluZGV4IH0gPSByZXN1bHQ7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgYWRkSWRlbnRpZmllcnMsIHJlbW92ZUlkZW50aWZpZXJzIH0gPSBjb250ZXh0O1xyXG4gICAgICAgICAgICB2YWx1ZSAmJiBhZGRJZGVudGlmaWVycyh2YWx1ZSk7XHJcbiAgICAgICAgICAgIGtleSAmJiBhZGRJZGVudGlmaWVycyhrZXkpO1xyXG4gICAgICAgICAgICBpbmRleCAmJiBhZGRJZGVudGlmaWVycyhpbmRleCk7XHJcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZSAmJiByZW1vdmVJZGVudGlmaWVycyh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICBrZXkgJiYgcmVtb3ZlSWRlbnRpZmllcnMoa2V5KTtcclxuICAgICAgICAgICAgICAgIGluZGV4ICYmIHJlbW92ZUlkZW50aWZpZXJzKGluZGV4KTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XHJcbmNvbnN0IGJ1aWxkQ2xpZW50U2xvdEZuID0gKHByb3BzLCBjaGlsZHJlbiwgbG9jKSA9PiBjcmVhdGVGdW5jdGlvbkV4cHJlc3Npb24ocHJvcHMsIGNoaWxkcmVuLCBmYWxzZSAvKiBuZXdsaW5lICovLCB0cnVlIC8qIGlzU2xvdCAqLywgY2hpbGRyZW4ubGVuZ3RoID8gY2hpbGRyZW5bMF0ubG9jIDogbG9jKTtcclxuLy8gSW5zdGVhZCBvZiBiZWluZyBhIERpcmVjdGl2ZVRyYW5zZm9ybSwgdi1zbG90IHByb2Nlc3NpbmcgaXMgY2FsbGVkIGR1cmluZ1xyXG4vLyB0cmFuc2Zvcm1FbGVtZW50IHRvIGJ1aWxkIHRoZSBzbG90cyBvYmplY3QgZm9yIGEgY29tcG9uZW50LlxyXG5mdW5jdGlvbiBidWlsZFNsb3RzKG5vZGUsIGNvbnRleHQsIGJ1aWxkU2xvdEZuID0gYnVpbGRDbGllbnRTbG90Rm4pIHtcclxuICAgIGNvbnRleHQuaGVscGVyKFdJVEhfQ1RYKTtcclxuICAgIGNvbnN0IHsgY2hpbGRyZW4sIGxvYyB9ID0gbm9kZTtcclxuICAgIGNvbnN0IHNsb3RzUHJvcGVydGllcyA9IFtdO1xyXG4gICAgY29uc3QgZHluYW1pY1Nsb3RzID0gW107XHJcbiAgICAvLyBJZiB0aGUgc2xvdCBpcyBpbnNpZGUgYSB2LWZvciBvciBhbm90aGVyIHYtc2xvdCwgZm9yY2UgaXQgdG8gYmUgZHluYW1pY1xyXG4gICAgLy8gc2luY2UgaXQgbGlrZWx5IHVzZXMgYSBzY29wZSB2YXJpYWJsZS5cclxuICAgIGxldCBoYXNEeW5hbWljU2xvdHMgPSBjb250ZXh0LnNjb3Blcy52U2xvdCA+IDAgfHwgY29udGV4dC5zY29wZXMudkZvciA+IDA7XHJcbiAgICAvLyAxLiBDaGVjayBmb3Igc2xvdCB3aXRoIHNsb3RQcm9wcyBvbiBjb21wb25lbnQgaXRzZWxmLlxyXG4gICAgLy8gICAgPENvbXAgdi1zbG90PVwieyBwcm9wIH1cIi8+XHJcbiAgICBjb25zdCBvbkNvbXBvbmVudFNsb3QgPSBmaW5kRGlyKG5vZGUsICdzbG90JywgdHJ1ZSk7XHJcbiAgICBpZiAob25Db21wb25lbnRTbG90KSB7XHJcbiAgICAgICAgY29uc3QgeyBhcmcsIGV4cCB9ID0gb25Db21wb25lbnRTbG90O1xyXG4gICAgICAgIGlmIChhcmcgJiYgIWlzU3RhdGljRXhwKGFyZykpIHtcclxuICAgICAgICAgICAgaGFzRHluYW1pY1Nsb3RzID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgc2xvdHNQcm9wZXJ0aWVzLnB1c2goY3JlYXRlT2JqZWN0UHJvcGVydHkoYXJnIHx8IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oJ2RlZmF1bHQnLCB0cnVlKSwgYnVpbGRTbG90Rm4oZXhwLCBjaGlsZHJlbiwgbG9jKSkpO1xyXG4gICAgfVxyXG4gICAgLy8gMi4gSXRlcmF0ZSB0aHJvdWdoIGNoaWxkcmVuIGFuZCBjaGVjayBmb3IgdGVtcGxhdGUgc2xvdHNcclxuICAgIC8vICAgIDx0ZW1wbGF0ZSB2LXNsb3Q6Zm9vPVwieyBwcm9wIH1cIj5cclxuICAgIGxldCBoYXNUZW1wbGF0ZVNsb3RzID0gZmFsc2U7XHJcbiAgICBsZXQgaGFzTmFtZWREZWZhdWx0U2xvdCA9IGZhbHNlO1xyXG4gICAgY29uc3QgaW1wbGljaXREZWZhdWx0Q2hpbGRyZW4gPSBbXTtcclxuICAgIGNvbnN0IHNlZW5TbG90TmFtZXMgPSBuZXcgU2V0KCk7XHJcbiAgICBsZXQgY29uZGl0aW9uYWxCcmFuY2hJbmRleCA9IDA7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3Qgc2xvdEVsZW1lbnQgPSBjaGlsZHJlbltpXTtcclxuICAgICAgICBsZXQgc2xvdERpcjtcclxuICAgICAgICBpZiAoIWlzVGVtcGxhdGVOb2RlKHNsb3RFbGVtZW50KSB8fFxyXG4gICAgICAgICAgICAhKHNsb3REaXIgPSBmaW5kRGlyKHNsb3RFbGVtZW50LCAnc2xvdCcsIHRydWUpKSkge1xyXG4gICAgICAgICAgICAvLyBub3QgYSA8dGVtcGxhdGUgdi1zbG90Piwgc2tpcC5cclxuICAgICAgICAgICAgaWYgKHNsb3RFbGVtZW50LnR5cGUgIT09IDMgLyogTm9kZVR5cGVzLkNPTU1FTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgIGltcGxpY2l0RGVmYXVsdENoaWxkcmVuLnB1c2goc2xvdEVsZW1lbnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob25Db21wb25lbnRTbG90KSB7XHJcbiAgICAgICAgICAgIC8vIGFscmVhZHkgaGFzIG9uLWNvbXBvbmVudCBzbG90IC0gdGhpcyBpcyBpbmNvcnJlY3QgdXNhZ2UuXHJcbiAgICAgICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDM3IC8qIEVycm9yQ29kZXMuWF9WX1NMT1RfTUlYRURfU0xPVF9VU0FHRSAqLywgc2xvdERpci5sb2MpKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGhhc1RlbXBsYXRlU2xvdHMgPSB0cnVlO1xyXG4gICAgICAgIGNvbnN0IHsgY2hpbGRyZW46IHNsb3RDaGlsZHJlbiwgbG9jOiBzbG90TG9jIH0gPSBzbG90RWxlbWVudDtcclxuICAgICAgICBjb25zdCB7IGFyZzogc2xvdE5hbWUgPSBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGBkZWZhdWx0YCwgdHJ1ZSksIGV4cDogc2xvdFByb3BzLCBsb2M6IGRpckxvYyB9ID0gc2xvdERpcjtcclxuICAgICAgICAvLyBjaGVjayBpZiBuYW1lIGlzIGR5bmFtaWMuXHJcbiAgICAgICAgbGV0IHN0YXRpY1Nsb3ROYW1lO1xyXG4gICAgICAgIGlmIChpc1N0YXRpY0V4cChzbG90TmFtZSkpIHtcclxuICAgICAgICAgICAgc3RhdGljU2xvdE5hbWUgPSBzbG90TmFtZSA/IHNsb3ROYW1lLmNvbnRlbnQgOiBgZGVmYXVsdGA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBoYXNEeW5hbWljU2xvdHMgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBzbG90RnVuY3Rpb24gPSBidWlsZFNsb3RGbihzbG90UHJvcHMsIHNsb3RDaGlsZHJlbiwgc2xvdExvYyk7XHJcbiAgICAgICAgLy8gY2hlY2sgaWYgdGhpcyBzbG90IGlzIGNvbmRpdGlvbmFsICh2LWlmL3YtZm9yKVxyXG4gICAgICAgIGxldCB2SWY7XHJcbiAgICAgICAgbGV0IHZFbHNlO1xyXG4gICAgICAgIGxldCB2Rm9yO1xyXG4gICAgICAgIGlmICgodklmID0gZmluZERpcihzbG90RWxlbWVudCwgJ2lmJykpKSB7XHJcbiAgICAgICAgICAgIGhhc0R5bmFtaWNTbG90cyA9IHRydWU7XHJcbiAgICAgICAgICAgIGR5bmFtaWNTbG90cy5wdXNoKGNyZWF0ZUNvbmRpdGlvbmFsRXhwcmVzc2lvbih2SWYuZXhwLCBidWlsZER5bmFtaWNTbG90KHNsb3ROYW1lLCBzbG90RnVuY3Rpb24sIGNvbmRpdGlvbmFsQnJhbmNoSW5kZXgrKyksIGRlZmF1bHRGYWxsYmFjaykpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICgodkVsc2UgPSBmaW5kRGlyKHNsb3RFbGVtZW50LCAvXmVsc2UoLWlmKT8kLywgdHJ1ZSAvKiBhbGxvd0VtcHR5ICovKSkpIHtcclxuICAgICAgICAgICAgLy8gZmluZCBhZGphY2VudCB2LWlmXHJcbiAgICAgICAgICAgIGxldCBqID0gaTtcclxuICAgICAgICAgICAgbGV0IHByZXY7XHJcbiAgICAgICAgICAgIHdoaWxlIChqLS0pIHtcclxuICAgICAgICAgICAgICAgIHByZXYgPSBjaGlsZHJlbltqXTtcclxuICAgICAgICAgICAgICAgIGlmIChwcmV2LnR5cGUgIT09IDMgLyogTm9kZVR5cGVzLkNPTU1FTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAocHJldiAmJiBpc1RlbXBsYXRlTm9kZShwcmV2KSAmJiBmaW5kRGlyKHByZXYsICdpZicpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyByZW1vdmUgbm9kZVxyXG4gICAgICAgICAgICAgICAgY2hpbGRyZW4uc3BsaWNlKGksIDEpO1xyXG4gICAgICAgICAgICAgICAgaS0tO1xyXG4gICAgICAgICAgICAgICAgLy8gYXR0YWNoIHRoaXMgc2xvdCB0byBwcmV2aW91cyBjb25kaXRpb25hbFxyXG4gICAgICAgICAgICAgICAgbGV0IGNvbmRpdGlvbmFsID0gZHluYW1pY1Nsb3RzW2R5bmFtaWNTbG90cy5sZW5ndGggLSAxXTtcclxuICAgICAgICAgICAgICAgIHdoaWxlIChjb25kaXRpb25hbC5hbHRlcm5hdGUudHlwZSA9PT0gMTkgLyogTm9kZVR5cGVzLkpTX0NPTkRJVElPTkFMX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25hbCA9IGNvbmRpdGlvbmFsLmFsdGVybmF0ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbmRpdGlvbmFsLmFsdGVybmF0ZSA9IHZFbHNlLmV4cFxyXG4gICAgICAgICAgICAgICAgICAgID8gY3JlYXRlQ29uZGl0aW9uYWxFeHByZXNzaW9uKHZFbHNlLmV4cCwgYnVpbGREeW5hbWljU2xvdChzbG90TmFtZSwgc2xvdEZ1bmN0aW9uLCBjb25kaXRpb25hbEJyYW5jaEluZGV4KyspLCBkZWZhdWx0RmFsbGJhY2spXHJcbiAgICAgICAgICAgICAgICAgICAgOiBidWlsZER5bmFtaWNTbG90KHNsb3ROYW1lLCBzbG90RnVuY3Rpb24sIGNvbmRpdGlvbmFsQnJhbmNoSW5kZXgrKyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcigzMCAvKiBFcnJvckNvZGVzLlhfVl9FTFNFX05PX0FESkFDRU5UX0lGICovLCB2RWxzZS5sb2MpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICgodkZvciA9IGZpbmREaXIoc2xvdEVsZW1lbnQsICdmb3InKSkpIHtcclxuICAgICAgICAgICAgaGFzRHluYW1pY1Nsb3RzID0gdHJ1ZTtcclxuICAgICAgICAgICAgY29uc3QgcGFyc2VSZXN1bHQgPSB2Rm9yLnBhcnNlUmVzdWx0IHx8XHJcbiAgICAgICAgICAgICAgICBwYXJzZUZvckV4cHJlc3Npb24odkZvci5leHAsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICBpZiAocGFyc2VSZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgIC8vIFJlbmRlciB0aGUgZHluYW1pYyBzbG90cyBhcyBhbiBhcnJheSBhbmQgYWRkIGl0IHRvIHRoZSBjcmVhdGVTbG90KClcclxuICAgICAgICAgICAgICAgIC8vIGFyZ3MuIFRoZSBydW50aW1lIGtub3dzIGhvdyB0byBoYW5kbGUgaXQgYXBwcm9wcmlhdGVseS5cclxuICAgICAgICAgICAgICAgIGR5bmFtaWNTbG90cy5wdXNoKGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKFJFTkRFUl9MSVNUKSwgW1xyXG4gICAgICAgICAgICAgICAgICAgIHBhcnNlUmVzdWx0LnNvdXJjZSxcclxuICAgICAgICAgICAgICAgICAgICBjcmVhdGVGdW5jdGlvbkV4cHJlc3Npb24oY3JlYXRlRm9yTG9vcFBhcmFtcyhwYXJzZVJlc3VsdCksIGJ1aWxkRHluYW1pY1Nsb3Qoc2xvdE5hbWUsIHNsb3RGdW5jdGlvbiksIHRydWUgLyogZm9yY2UgbmV3bGluZSAqLylcclxuICAgICAgICAgICAgICAgIF0pKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDMyIC8qIEVycm9yQ29kZXMuWF9WX0ZPUl9NQUxGT1JNRURfRVhQUkVTU0lPTiAqLywgdkZvci5sb2MpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gY2hlY2sgZHVwbGljYXRlIHN0YXRpYyBuYW1lc1xyXG4gICAgICAgICAgICBpZiAoc3RhdGljU2xvdE5hbWUpIHtcclxuICAgICAgICAgICAgICAgIGlmIChzZWVuU2xvdE5hbWVzLmhhcyhzdGF0aWNTbG90TmFtZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcigzOCAvKiBFcnJvckNvZGVzLlhfVl9TTE9UX0RVUExJQ0FURV9TTE9UX05BTUVTICovLCBkaXJMb2MpKTtcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHNlZW5TbG90TmFtZXMuYWRkKHN0YXRpY1Nsb3ROYW1lKTtcclxuICAgICAgICAgICAgICAgIGlmIChzdGF0aWNTbG90TmFtZSA9PT0gJ2RlZmF1bHQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGFzTmFtZWREZWZhdWx0U2xvdCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc2xvdHNQcm9wZXJ0aWVzLnB1c2goY3JlYXRlT2JqZWN0UHJvcGVydHkoc2xvdE5hbWUsIHNsb3RGdW5jdGlvbikpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghb25Db21wb25lbnRTbG90KSB7XHJcbiAgICAgICAgY29uc3QgYnVpbGREZWZhdWx0U2xvdFByb3BlcnR5ID0gKHByb3BzLCBjaGlsZHJlbikgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBmbiA9IGJ1aWxkU2xvdEZuKHByb3BzLCBjaGlsZHJlbiwgbG9jKTtcclxuICAgICAgICAgICAgaWYgKGNvbnRleHQuY29tcGF0Q29uZmlnKSB7XHJcbiAgICAgICAgICAgICAgICBmbi5pc05vblNjb3BlZFNsb3QgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVPYmplY3RQcm9wZXJ0eShgZGVmYXVsdGAsIGZuKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmICghaGFzVGVtcGxhdGVTbG90cykge1xyXG4gICAgICAgICAgICAvLyBpbXBsaWNpdCBkZWZhdWx0IHNsb3QgKG9uIGNvbXBvbmVudClcclxuICAgICAgICAgICAgc2xvdHNQcm9wZXJ0aWVzLnB1c2goYnVpbGREZWZhdWx0U2xvdFByb3BlcnR5KHVuZGVmaW5lZCwgY2hpbGRyZW4pKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaW1wbGljaXREZWZhdWx0Q2hpbGRyZW4ubGVuZ3RoICYmXHJcbiAgICAgICAgICAgIC8vICMzNzY2XHJcbiAgICAgICAgICAgIC8vIHdpdGggd2hpdGVzcGFjZTogJ3ByZXNlcnZlJywgd2hpdGVzcGFjZXMgYmV0d2VlbiBzbG90cyB3aWxsIGVuZCB1cCBpblxyXG4gICAgICAgICAgICAvLyBpbXBsaWNpdERlZmF1bHRDaGlsZHJlbi4gSWdub3JlIGlmIGFsbCBpbXBsaWNpdCBjaGlsZHJlbiBhcmUgd2hpdGVzcGFjZXMuXHJcbiAgICAgICAgICAgIGltcGxpY2l0RGVmYXVsdENoaWxkcmVuLnNvbWUobm9kZSA9PiBpc05vbldoaXRlc3BhY2VDb250ZW50KG5vZGUpKSkge1xyXG4gICAgICAgICAgICAvLyBpbXBsaWNpdCBkZWZhdWx0IHNsb3QgKG1peGVkIHdpdGggbmFtZWQgc2xvdHMpXHJcbiAgICAgICAgICAgIGlmIChoYXNOYW1lZERlZmF1bHRTbG90KSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcigzOSAvKiBFcnJvckNvZGVzLlhfVl9TTE9UX0VYVFJBTkVPVVNfREVGQVVMVF9TTE9UX0NISUxEUkVOICovLCBpbXBsaWNpdERlZmF1bHRDaGlsZHJlblswXS5sb2MpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHNsb3RzUHJvcGVydGllcy5wdXNoKGJ1aWxkRGVmYXVsdFNsb3RQcm9wZXJ0eSh1bmRlZmluZWQsIGltcGxpY2l0RGVmYXVsdENoaWxkcmVuKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBzbG90RmxhZyA9IGhhc0R5bmFtaWNTbG90c1xyXG4gICAgICAgID8gMiAvKiBTbG90RmxhZ3MuRFlOQU1JQyAqL1xyXG4gICAgICAgIDogaGFzRm9yd2FyZGVkU2xvdHMobm9kZS5jaGlsZHJlbilcclxuICAgICAgICAgICAgPyAzIC8qIFNsb3RGbGFncy5GT1JXQVJERUQgKi9cclxuICAgICAgICAgICAgOiAxIC8qIFNsb3RGbGFncy5TVEFCTEUgKi87XHJcbiAgICBsZXQgc2xvdHMgPSBjcmVhdGVPYmplY3RFeHByZXNzaW9uKHNsb3RzUHJvcGVydGllcy5jb25jYXQoY3JlYXRlT2JqZWN0UHJvcGVydHkoYF9gLCBcclxuICAgIC8vIDIgPSBjb21waWxlZCBidXQgZHluYW1pYyA9IGNhbiBza2lwIG5vcm1hbGl6YXRpb24sIGJ1dCBtdXN0IHJ1biBkaWZmXHJcbiAgICAvLyAxID0gY29tcGlsZWQgYW5kIHN0YXRpYyA9IGNhbiBza2lwIG5vcm1hbGl6YXRpb24gQU5EIGRpZmYgYXMgb3B0aW1pemVkXHJcbiAgICBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKHNsb3RGbGFnICsgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGAgLyogJHtzbG90RmxhZ3NUZXh0W3Nsb3RGbGFnXX0gKi9gIDogYGApLCBmYWxzZSkpKSwgbG9jKTtcclxuICAgIGlmIChkeW5hbWljU2xvdHMubGVuZ3RoKSB7XHJcbiAgICAgICAgc2xvdHMgPSBjcmVhdGVDYWxsRXhwcmVzc2lvbihjb250ZXh0LmhlbHBlcihDUkVBVEVfU0xPVFMpLCBbXHJcbiAgICAgICAgICAgIHNsb3RzLFxyXG4gICAgICAgICAgICBjcmVhdGVBcnJheUV4cHJlc3Npb24oZHluYW1pY1Nsb3RzKVxyXG4gICAgICAgIF0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBzbG90cyxcclxuICAgICAgICBoYXNEeW5hbWljU2xvdHNcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gYnVpbGREeW5hbWljU2xvdChuYW1lLCBmbiwgaW5kZXgpIHtcclxuICAgIGNvbnN0IHByb3BzID0gW1xyXG4gICAgICAgIGNyZWF0ZU9iamVjdFByb3BlcnR5KGBuYW1lYCwgbmFtZSksXHJcbiAgICAgICAgY3JlYXRlT2JqZWN0UHJvcGVydHkoYGZuYCwgZm4pXHJcbiAgICBdO1xyXG4gICAgaWYgKGluZGV4ICE9IG51bGwpIHtcclxuICAgICAgICBwcm9wcy5wdXNoKGNyZWF0ZU9iamVjdFByb3BlcnR5KGBrZXlgLCBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKFN0cmluZyhpbmRleCksIHRydWUpKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY3JlYXRlT2JqZWN0RXhwcmVzc2lvbihwcm9wcyk7XHJcbn1cclxuZnVuY3Rpb24gaGFzRm9yd2FyZGVkU2xvdHMoY2hpbGRyZW4pIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBjaGlsZCA9IGNoaWxkcmVuW2ldO1xyXG4gICAgICAgIHN3aXRjaCAoY2hpbGQudHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi86XHJcbiAgICAgICAgICAgICAgICBpZiAoY2hpbGQudGFnVHlwZSA9PT0gMiAvKiBFbGVtZW50VHlwZXMuU0xPVCAqLyB8fFxyXG4gICAgICAgICAgICAgICAgICAgIGhhc0ZvcndhcmRlZFNsb3RzKGNoaWxkLmNoaWxkcmVuKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgOSAvKiBOb2RlVHlwZXMuSUYgKi86XHJcbiAgICAgICAgICAgICAgICBpZiAoaGFzRm9yd2FyZGVkU2xvdHMoY2hpbGQuYnJhbmNoZXMpKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMTAgLyogTm9kZVR5cGVzLklGX0JSQU5DSCAqLzpcclxuICAgICAgICAgICAgY2FzZSAxMSAvKiBOb2RlVHlwZXMuRk9SICovOlxyXG4gICAgICAgICAgICAgICAgaWYgKGhhc0ZvcndhcmRlZFNsb3RzKGNoaWxkLmNoaWxkcmVuKSlcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxufVxyXG5mdW5jdGlvbiBpc05vbldoaXRlc3BhY2VDb250ZW50KG5vZGUpIHtcclxuICAgIGlmIChub2RlLnR5cGUgIT09IDIgLyogTm9kZVR5cGVzLlRFWFQgKi8gJiYgbm9kZS50eXBlICE9PSAxMiAvKiBOb2RlVHlwZXMuVEVYVF9DQUxMICovKVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgcmV0dXJuIG5vZGUudHlwZSA9PT0gMiAvKiBOb2RlVHlwZXMuVEVYVCAqL1xyXG4gICAgICAgID8gISFub2RlLmNvbnRlbnQudHJpbSgpXHJcbiAgICAgICAgOiBpc05vbldoaXRlc3BhY2VDb250ZW50KG5vZGUuY29udGVudCk7XHJcbn1cblxuLy8gc29tZSBkaXJlY3RpdmUgdHJhbnNmb3JtcyAoZS5nLiB2LW1vZGVsKSBtYXkgcmV0dXJuIGEgc3ltYm9sIGZvciBydW50aW1lXHJcbi8vIGltcG9ydCwgd2hpY2ggc2hvdWxkIGJlIHVzZWQgaW5zdGVhZCBvZiBhIHJlc29sdmVEaXJlY3RpdmUgY2FsbC5cclxuY29uc3QgZGlyZWN0aXZlSW1wb3J0TWFwID0gbmV3IFdlYWtNYXAoKTtcclxuLy8gZ2VuZXJhdGUgYSBKYXZhU2NyaXB0IEFTVCBmb3IgdGhpcyBlbGVtZW50J3MgY29kZWdlblxyXG5jb25zdCB0cmFuc2Zvcm1FbGVtZW50ID0gKG5vZGUsIGNvbnRleHQpID0+IHtcclxuICAgIC8vIHBlcmZvcm0gdGhlIHdvcmsgb24gZXhpdCwgYWZ0ZXIgYWxsIGNoaWxkIGV4cHJlc3Npb25zIGhhdmUgYmVlblxyXG4gICAgLy8gcHJvY2Vzc2VkIGFuZCBtZXJnZWQuXHJcbiAgICByZXR1cm4gZnVuY3Rpb24gcG9zdFRyYW5zZm9ybUVsZW1lbnQoKSB7XHJcbiAgICAgICAgbm9kZSA9IGNvbnRleHQuY3VycmVudE5vZGU7XHJcbiAgICAgICAgaWYgKCEobm9kZS50eXBlID09PSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovICYmXHJcbiAgICAgICAgICAgIChub2RlLnRhZ1R5cGUgPT09IDAgLyogRWxlbWVudFR5cGVzLkVMRU1FTlQgKi8gfHxcclxuICAgICAgICAgICAgICAgIG5vZGUudGFnVHlwZSA9PT0gMSAvKiBFbGVtZW50VHlwZXMuQ09NUE9ORU5UICovKSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB7IHRhZywgcHJvcHMgfSA9IG5vZGU7XHJcbiAgICAgICAgY29uc3QgaXNDb21wb25lbnQgPSBub2RlLnRhZ1R5cGUgPT09IDEgLyogRWxlbWVudFR5cGVzLkNPTVBPTkVOVCAqLztcclxuICAgICAgICAvLyBUaGUgZ29hbCBvZiB0aGUgdHJhbnNmb3JtIGlzIHRvIGNyZWF0ZSBhIGNvZGVnZW5Ob2RlIGltcGxlbWVudGluZyB0aGVcclxuICAgICAgICAvLyBWTm9kZUNhbGwgaW50ZXJmYWNlLlxyXG4gICAgICAgIGxldCB2bm9kZVRhZyA9IGlzQ29tcG9uZW50XHJcbiAgICAgICAgICAgID8gcmVzb2x2ZUNvbXBvbmVudFR5cGUobm9kZSwgY29udGV4dClcclxuICAgICAgICAgICAgOiBgXCIke3RhZ31cImA7XHJcbiAgICAgICAgY29uc3QgaXNEeW5hbWljQ29tcG9uZW50ID0gaXNPYmplY3Qodm5vZGVUYWcpICYmIHZub2RlVGFnLmNhbGxlZSA9PT0gUkVTT0xWRV9EWU5BTUlDX0NPTVBPTkVOVDtcclxuICAgICAgICBsZXQgdm5vZGVQcm9wcztcclxuICAgICAgICBsZXQgdm5vZGVDaGlsZHJlbjtcclxuICAgICAgICBsZXQgdm5vZGVQYXRjaEZsYWc7XHJcbiAgICAgICAgbGV0IHBhdGNoRmxhZyA9IDA7XHJcbiAgICAgICAgbGV0IHZub2RlRHluYW1pY1Byb3BzO1xyXG4gICAgICAgIGxldCBkeW5hbWljUHJvcE5hbWVzO1xyXG4gICAgICAgIGxldCB2bm9kZURpcmVjdGl2ZXM7XHJcbiAgICAgICAgbGV0IHNob3VsZFVzZUJsb2NrID0gXHJcbiAgICAgICAgLy8gZHluYW1pYyBjb21wb25lbnQgbWF5IHJlc29sdmUgdG8gcGxhaW4gZWxlbWVudHNcclxuICAgICAgICBpc0R5bmFtaWNDb21wb25lbnQgfHxcclxuICAgICAgICAgICAgdm5vZGVUYWcgPT09IFRFTEVQT1JUIHx8XHJcbiAgICAgICAgICAgIHZub2RlVGFnID09PSBTVVNQRU5TRSB8fFxyXG4gICAgICAgICAgICAoIWlzQ29tcG9uZW50ICYmXHJcbiAgICAgICAgICAgICAgICAvLyA8c3ZnPiBhbmQgPGZvcmVpZ25PYmplY3Q+IG11c3QgYmUgZm9yY2VkIGludG8gYmxvY2tzIHNvIHRoYXQgYmxvY2tcclxuICAgICAgICAgICAgICAgIC8vIHVwZGF0ZXMgaW5zaWRlIGdldCBwcm9wZXIgaXNTVkcgZmxhZyBhdCBydW50aW1lLiAoIzYzOSwgIzY0MylcclxuICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGVjaG5pY2FsbHkgd2ViLXNwZWNpZmljLCBidXQgc3BsaXR0aW5nIHRoZSBsb2dpYyBvdXQgb2YgY29yZVxyXG4gICAgICAgICAgICAgICAgLy8gbGVhZHMgdG8gdG9vIG11Y2ggdW5uZWNlc3NhcnkgY29tcGxleGl0eS5cclxuICAgICAgICAgICAgICAgICh0YWcgPT09ICdzdmcnIHx8IHRhZyA9PT0gJ2ZvcmVpZ25PYmplY3QnKSk7XHJcbiAgICAgICAgLy8gcHJvcHNcclxuICAgICAgICBpZiAocHJvcHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBjb25zdCBwcm9wc0J1aWxkUmVzdWx0ID0gYnVpbGRQcm9wcyhub2RlLCBjb250ZXh0LCB1bmRlZmluZWQsIGlzQ29tcG9uZW50LCBpc0R5bmFtaWNDb21wb25lbnQpO1xyXG4gICAgICAgICAgICB2bm9kZVByb3BzID0gcHJvcHNCdWlsZFJlc3VsdC5wcm9wcztcclxuICAgICAgICAgICAgcGF0Y2hGbGFnID0gcHJvcHNCdWlsZFJlc3VsdC5wYXRjaEZsYWc7XHJcbiAgICAgICAgICAgIGR5bmFtaWNQcm9wTmFtZXMgPSBwcm9wc0J1aWxkUmVzdWx0LmR5bmFtaWNQcm9wTmFtZXM7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdGl2ZXMgPSBwcm9wc0J1aWxkUmVzdWx0LmRpcmVjdGl2ZXM7XHJcbiAgICAgICAgICAgIHZub2RlRGlyZWN0aXZlcyA9XHJcbiAgICAgICAgICAgICAgICBkaXJlY3RpdmVzICYmIGRpcmVjdGl2ZXMubGVuZ3RoXHJcbiAgICAgICAgICAgICAgICAgICAgPyBjcmVhdGVBcnJheUV4cHJlc3Npb24oZGlyZWN0aXZlcy5tYXAoZGlyID0+IGJ1aWxkRGlyZWN0aXZlQXJncyhkaXIsIGNvbnRleHQpKSlcclxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgaWYgKHByb3BzQnVpbGRSZXN1bHQuc2hvdWxkVXNlQmxvY2spIHtcclxuICAgICAgICAgICAgICAgIHNob3VsZFVzZUJsb2NrID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBjaGlsZHJlblxyXG4gICAgICAgIGlmIChub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgaWYgKHZub2RlVGFnID09PSBLRUVQX0FMSVZFKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBBbHRob3VnaCBhIGJ1aWx0LWluIGNvbXBvbmVudCwgd2UgY29tcGlsZSBLZWVwQWxpdmUgd2l0aCByYXcgY2hpbGRyZW5cclxuICAgICAgICAgICAgICAgIC8vIGluc3RlYWQgb2Ygc2xvdCBmdW5jdGlvbnMgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBpbnNpZGUgVHJhbnNpdGlvblxyXG4gICAgICAgICAgICAgICAgLy8gb3Igb3RoZXIgVHJhbnNpdGlvbi13cmFwcGluZyBIT0NzLlxyXG4gICAgICAgICAgICAgICAgLy8gVG8gZW5zdXJlIGNvcnJlY3QgdXBkYXRlcyB3aXRoIGJsb2NrIG9wdGltaXphdGlvbnMsIHdlIG5lZWQgdG86XHJcbiAgICAgICAgICAgICAgICAvLyAxLiBGb3JjZSBrZWVwLWFsaXZlIGludG8gYSBibG9jay4gVGhpcyBhdm9pZHMgaXRzIGNoaWxkcmVuIGJlaW5nXHJcbiAgICAgICAgICAgICAgICAvLyAgICBjb2xsZWN0ZWQgYnkgYSBwYXJlbnQgYmxvY2suXHJcbiAgICAgICAgICAgICAgICBzaG91bGRVc2VCbG9jayA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAvLyAyLiBGb3JjZSBrZWVwLWFsaXZlIHRvIGFsd2F5cyBiZSB1cGRhdGVkLCBzaW5jZSBpdCB1c2VzIHJhdyBjaGlsZHJlbi5cclxuICAgICAgICAgICAgICAgIHBhdGNoRmxhZyB8PSAxMDI0IC8qIFBhdGNoRmxhZ3MuRFlOQU1JQ19TTE9UUyAqLztcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoNDUgLyogRXJyb3JDb2Rlcy5YX0tFRVBfQUxJVkVfSU5WQUxJRF9DSElMRFJFTiAqLywge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydDogbm9kZS5jaGlsZHJlblswXS5sb2Muc3RhcnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogbm9kZS5jaGlsZHJlbltub2RlLmNoaWxkcmVuLmxlbmd0aCAtIDFdLmxvYy5lbmQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZTogJydcclxuICAgICAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3Qgc2hvdWxkQnVpbGRBc1Nsb3RzID0gaXNDb21wb25lbnQgJiZcclxuICAgICAgICAgICAgICAgIC8vIFRlbGVwb3J0IGlzIG5vdCBhIHJlYWwgY29tcG9uZW50IGFuZCBoYXMgZGVkaWNhdGVkIHJ1bnRpbWUgaGFuZGxpbmdcclxuICAgICAgICAgICAgICAgIHZub2RlVGFnICE9PSBURUxFUE9SVCAmJlxyXG4gICAgICAgICAgICAgICAgLy8gZXhwbGFpbmVkIGFib3ZlLlxyXG4gICAgICAgICAgICAgICAgdm5vZGVUYWcgIT09IEtFRVBfQUxJVkU7XHJcbiAgICAgICAgICAgIGlmIChzaG91bGRCdWlsZEFzU2xvdHMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgc2xvdHMsIGhhc0R5bmFtaWNTbG90cyB9ID0gYnVpbGRTbG90cyhub2RlLCBjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgIHZub2RlQ2hpbGRyZW4gPSBzbG90cztcclxuICAgICAgICAgICAgICAgIGlmIChoYXNEeW5hbWljU2xvdHMpIHtcclxuICAgICAgICAgICAgICAgICAgICBwYXRjaEZsYWcgfD0gMTAyNCAvKiBQYXRjaEZsYWdzLkRZTkFNSUNfU0xPVFMgKi87XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAobm9kZS5jaGlsZHJlbi5sZW5ndGggPT09IDEgJiYgdm5vZGVUYWcgIT09IFRFTEVQT1JUKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZCA9IG5vZGUuY2hpbGRyZW5bMF07XHJcbiAgICAgICAgICAgICAgICBjb25zdCB0eXBlID0gY2hpbGQudHlwZTtcclxuICAgICAgICAgICAgICAgIC8vIGNoZWNrIGZvciBkeW5hbWljIHRleHQgY2hpbGRyZW5cclxuICAgICAgICAgICAgICAgIGNvbnN0IGhhc0R5bmFtaWNUZXh0Q2hpbGQgPSB0eXBlID09PSA1IC8qIE5vZGVUeXBlcy5JTlRFUlBPTEFUSU9OICovIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZSA9PT0gOCAvKiBOb2RlVHlwZXMuQ09NUE9VTkRfRVhQUkVTU0lPTiAqLztcclxuICAgICAgICAgICAgICAgIGlmIChoYXNEeW5hbWljVGV4dENoaWxkICYmXHJcbiAgICAgICAgICAgICAgICAgICAgZ2V0Q29uc3RhbnRUeXBlKGNoaWxkLCBjb250ZXh0KSA9PT0gMCAvKiBDb25zdGFudFR5cGVzLk5PVF9DT05TVEFOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhdGNoRmxhZyB8PSAxIC8qIFBhdGNoRmxhZ3MuVEVYVCAqLztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIHBhc3MgZGlyZWN0bHkgaWYgdGhlIG9ubHkgY2hpbGQgaXMgYSB0ZXh0IG5vZGVcclxuICAgICAgICAgICAgICAgIC8vIChwbGFpbiAvIGludGVycG9sYXRpb24gLyBleHByZXNzaW9uKVxyXG4gICAgICAgICAgICAgICAgaWYgKGhhc0R5bmFtaWNUZXh0Q2hpbGQgfHwgdHlwZSA9PT0gMiAvKiBOb2RlVHlwZXMuVEVYVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIHZub2RlQ2hpbGRyZW4gPSBjaGlsZDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHZub2RlQ2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdm5vZGVDaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gcGF0Y2hGbGFnICYgZHluYW1pY1Byb3BOYW1lc1xyXG4gICAgICAgIGlmIChwYXRjaEZsYWcgIT09IDApIHtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHBhdGNoRmxhZyA8IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBzcGVjaWFsIGZsYWdzIChuZWdhdGl2ZSBhbmQgbXV0dWFsbHkgZXhjbHVzaXZlKVxyXG4gICAgICAgICAgICAgICAgICAgIHZub2RlUGF0Y2hGbGFnID0gcGF0Y2hGbGFnICsgYCAvKiAke1BhdGNoRmxhZ05hbWVzW3BhdGNoRmxhZ119ICovYDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGJpdHdpc2UgZmxhZ3NcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmbGFnTmFtZXMgPSBPYmplY3Qua2V5cyhQYXRjaEZsYWdOYW1lcylcclxuICAgICAgICAgICAgICAgICAgICAgICAgLm1hcChOdW1iZXIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIobiA9PiBuID4gMCAmJiBwYXRjaEZsYWcgJiBuKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAubWFwKG4gPT4gUGF0Y2hGbGFnTmFtZXNbbl0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5qb2luKGAsIGApO1xyXG4gICAgICAgICAgICAgICAgICAgIHZub2RlUGF0Y2hGbGFnID0gcGF0Y2hGbGFnICsgYCAvKiAke2ZsYWdOYW1lc30gKi9gO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdm5vZGVQYXRjaEZsYWcgPSBTdHJpbmcocGF0Y2hGbGFnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZHluYW1pY1Byb3BOYW1lcyAmJiBkeW5hbWljUHJvcE5hbWVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgdm5vZGVEeW5hbWljUHJvcHMgPSBzdHJpbmdpZnlEeW5hbWljUHJvcE5hbWVzKGR5bmFtaWNQcm9wTmFtZXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG5vZGUuY29kZWdlbk5vZGUgPSBjcmVhdGVWTm9kZUNhbGwoY29udGV4dCwgdm5vZGVUYWcsIHZub2RlUHJvcHMsIHZub2RlQ2hpbGRyZW4sIHZub2RlUGF0Y2hGbGFnLCB2bm9kZUR5bmFtaWNQcm9wcywgdm5vZGVEaXJlY3RpdmVzLCAhIXNob3VsZFVzZUJsb2NrLCBmYWxzZSAvKiBkaXNhYmxlVHJhY2tpbmcgKi8sIGlzQ29tcG9uZW50LCBub2RlLmxvYyk7XHJcbiAgICB9O1xyXG59O1xyXG5mdW5jdGlvbiByZXNvbHZlQ29tcG9uZW50VHlwZShub2RlLCBjb250ZXh0LCBzc3IgPSBmYWxzZSkge1xyXG4gICAgbGV0IHsgdGFnIH0gPSBub2RlO1xyXG4gICAgLy8gMS4gZHluYW1pYyBjb21wb25lbnRcclxuICAgIGNvbnN0IGlzRXhwbGljaXREeW5hbWljID0gaXNDb21wb25lbnRUYWcodGFnKTtcclxuICAgIGNvbnN0IGlzUHJvcCA9IGZpbmRQcm9wKG5vZGUsICdpcycpO1xyXG4gICAgaWYgKGlzUHJvcCkge1xyXG4gICAgICAgIGlmIChpc0V4cGxpY2l0RHluYW1pYyB8fFxyXG4gICAgICAgICAgICAoaXNDb21wYXRFbmFibGVkKFwiQ09NUElMRVJfSVNfT05fRUxFTUVOVFwiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9JU19PTl9FTEVNRU5UICovLCBjb250ZXh0KSkpIHtcclxuICAgICAgICAgICAgY29uc3QgZXhwID0gaXNQcm9wLnR5cGUgPT09IDYgLyogTm9kZVR5cGVzLkFUVFJJQlVURSAqL1xyXG4gICAgICAgICAgICAgICAgPyBpc1Byb3AudmFsdWUgJiYgY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihpc1Byb3AudmFsdWUuY29udGVudCwgdHJ1ZSlcclxuICAgICAgICAgICAgICAgIDogaXNQcm9wLmV4cDtcclxuICAgICAgICAgICAgaWYgKGV4cCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKFJFU09MVkVfRFlOQU1JQ19DT01QT05FTlQpLCBbXHJcbiAgICAgICAgICAgICAgICAgICAgZXhwXHJcbiAgICAgICAgICAgICAgICBdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChpc1Byb3AudHlwZSA9PT0gNiAvKiBOb2RlVHlwZXMuQVRUUklCVVRFICovICYmXHJcbiAgICAgICAgICAgIGlzUHJvcC52YWx1ZS5jb250ZW50LnN0YXJ0c1dpdGgoJ3Z1ZTonKSkge1xyXG4gICAgICAgICAgICAvLyA8YnV0dG9uIGlzPVwidnVlOnh4eFwiPlxyXG4gICAgICAgICAgICAvLyBpZiBub3QgPGNvbXBvbmVudD4sIG9ubHkgaXMgdmFsdWUgdGhhdCBzdGFydHMgd2l0aCBcInZ1ZTpcIiB3aWxsIGJlXHJcbiAgICAgICAgICAgIC8vIHRyZWF0ZWQgYXMgY29tcG9uZW50IGJ5IHRoZSBwYXJzZSBwaGFzZSBhbmQgcmVhY2ggaGVyZSwgdW5sZXNzIGl0J3NcclxuICAgICAgICAgICAgLy8gY29tcGF0IG1vZGUgd2hlcmUgYWxsIGlzIHZhbHVlcyBhcmUgY29uc2lkZXJlZCBjb21wb25lbnRzXHJcbiAgICAgICAgICAgIHRhZyA9IGlzUHJvcC52YWx1ZS5jb250ZW50LnNsaWNlKDQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIDEuNSB2LWlzIChUT0RPOiBEZXByZWNhdGUpXHJcbiAgICBjb25zdCBpc0RpciA9ICFpc0V4cGxpY2l0RHluYW1pYyAmJiBmaW5kRGlyKG5vZGUsICdpcycpO1xyXG4gICAgaWYgKGlzRGlyICYmIGlzRGlyLmV4cCkge1xyXG4gICAgICAgIHJldHVybiBjcmVhdGVDYWxsRXhwcmVzc2lvbihjb250ZXh0LmhlbHBlcihSRVNPTFZFX0RZTkFNSUNfQ09NUE9ORU5UKSwgW1xyXG4gICAgICAgICAgICBpc0Rpci5leHBcclxuICAgICAgICBdKTtcclxuICAgIH1cclxuICAgIC8vIDIuIGJ1aWx0LWluIGNvbXBvbmVudHMgKFRlbGVwb3J0LCBUcmFuc2l0aW9uLCBLZWVwQWxpdmUsIFN1c3BlbnNlLi4uKVxyXG4gICAgY29uc3QgYnVpbHRJbiA9IGlzQ29yZUNvbXBvbmVudCh0YWcpIHx8IGNvbnRleHQuaXNCdWlsdEluQ29tcG9uZW50KHRhZyk7XHJcbiAgICBpZiAoYnVpbHRJbikge1xyXG4gICAgICAgIC8vIGJ1aWx0LWlucyBhcmUgc2ltcGx5IGZhbGx0aHJvdWdocyAvIGhhdmUgc3BlY2lhbCBoYW5kbGluZyBkdXJpbmcgc3NyXHJcbiAgICAgICAgLy8gc28gd2UgZG9uJ3QgbmVlZCB0byBpbXBvcnQgdGhlaXIgcnVudGltZSBlcXVpdmFsZW50c1xyXG4gICAgICAgIGlmICghc3NyKVxyXG4gICAgICAgICAgICBjb250ZXh0LmhlbHBlcihidWlsdEluKTtcclxuICAgICAgICByZXR1cm4gYnVpbHRJbjtcclxuICAgIH1cclxuICAgIC8vIDUuIHVzZXIgY29tcG9uZW50IChyZXNvbHZlKVxyXG4gICAgY29udGV4dC5oZWxwZXIoUkVTT0xWRV9DT01QT05FTlQpO1xyXG4gICAgY29udGV4dC5jb21wb25lbnRzLmFkZCh0YWcpO1xyXG4gICAgcmV0dXJuIHRvVmFsaWRBc3NldElkKHRhZywgYGNvbXBvbmVudGApO1xyXG59XHJcbmZ1bmN0aW9uIGJ1aWxkUHJvcHMobm9kZSwgY29udGV4dCwgcHJvcHMgPSBub2RlLnByb3BzLCBpc0NvbXBvbmVudCwgaXNEeW5hbWljQ29tcG9uZW50LCBzc3IgPSBmYWxzZSkge1xyXG4gICAgY29uc3QgeyB0YWcsIGxvYzogZWxlbWVudExvYywgY2hpbGRyZW4gfSA9IG5vZGU7XHJcbiAgICBsZXQgcHJvcGVydGllcyA9IFtdO1xyXG4gICAgY29uc3QgbWVyZ2VBcmdzID0gW107XHJcbiAgICBjb25zdCBydW50aW1lRGlyZWN0aXZlcyA9IFtdO1xyXG4gICAgY29uc3QgaGFzQ2hpbGRyZW4gPSBjaGlsZHJlbi5sZW5ndGggPiAwO1xyXG4gICAgbGV0IHNob3VsZFVzZUJsb2NrID0gZmFsc2U7XHJcbiAgICAvLyBwYXRjaEZsYWcgYW5hbHlzaXNcclxuICAgIGxldCBwYXRjaEZsYWcgPSAwO1xyXG4gICAgbGV0IGhhc1JlZiA9IGZhbHNlO1xyXG4gICAgbGV0IGhhc0NsYXNzQmluZGluZyA9IGZhbHNlO1xyXG4gICAgbGV0IGhhc1N0eWxlQmluZGluZyA9IGZhbHNlO1xyXG4gICAgbGV0IGhhc0h5ZHJhdGlvbkV2ZW50QmluZGluZyA9IGZhbHNlO1xyXG4gICAgbGV0IGhhc0R5bmFtaWNLZXlzID0gZmFsc2U7XHJcbiAgICBsZXQgaGFzVm5vZGVIb29rID0gZmFsc2U7XHJcbiAgICBjb25zdCBkeW5hbWljUHJvcE5hbWVzID0gW107XHJcbiAgICBjb25zdCBhbmFseXplUGF0Y2hGbGFnID0gKHsga2V5LCB2YWx1ZSB9KSA9PiB7XHJcbiAgICAgICAgaWYgKGlzU3RhdGljRXhwKGtleSkpIHtcclxuICAgICAgICAgICAgY29uc3QgbmFtZSA9IGtleS5jb250ZW50O1xyXG4gICAgICAgICAgICBjb25zdCBpc0V2ZW50SGFuZGxlciA9IGlzT24obmFtZSk7XHJcbiAgICAgICAgICAgIGlmIChpc0V2ZW50SGFuZGxlciAmJlxyXG4gICAgICAgICAgICAgICAgKCFpc0NvbXBvbmVudCB8fCBpc0R5bmFtaWNDb21wb25lbnQpICYmXHJcbiAgICAgICAgICAgICAgICAvLyBvbWl0IHRoZSBmbGFnIGZvciBjbGljayBoYW5kbGVycyBiZWNhdXNlIGh5ZHJhdGlvbiBnaXZlcyBjbGlja1xyXG4gICAgICAgICAgICAgICAgLy8gZGVkaWNhdGVkIGZhc3QgcGF0aC5cclxuICAgICAgICAgICAgICAgIG5hbWUudG9Mb3dlckNhc2UoKSAhPT0gJ29uY2xpY2snICYmXHJcbiAgICAgICAgICAgICAgICAvLyBvbWl0IHYtbW9kZWwgaGFuZGxlcnNcclxuICAgICAgICAgICAgICAgIG5hbWUgIT09ICdvblVwZGF0ZTptb2RlbFZhbHVlJyAmJlxyXG4gICAgICAgICAgICAgICAgLy8gb21pdCBvblZub2RlWFhYIGhvb2tzXHJcbiAgICAgICAgICAgICAgICAhaXNSZXNlcnZlZFByb3AobmFtZSkpIHtcclxuICAgICAgICAgICAgICAgIGhhc0h5ZHJhdGlvbkV2ZW50QmluZGluZyA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGlzRXZlbnRIYW5kbGVyICYmIGlzUmVzZXJ2ZWRQcm9wKG5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICBoYXNWbm9kZUhvb2sgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZS50eXBlID09PSAyMCAvKiBOb2RlVHlwZXMuSlNfQ0FDSEVfRVhQUkVTU0lPTiAqLyB8fFxyXG4gICAgICAgICAgICAgICAgKCh2YWx1ZS50eXBlID09PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLyB8fFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlLnR5cGUgPT09IDggLyogTm9kZVR5cGVzLkNPTVBPVU5EX0VYUFJFU1NJT04gKi8pICYmXHJcbiAgICAgICAgICAgICAgICAgICAgZ2V0Q29uc3RhbnRUeXBlKHZhbHVlLCBjb250ZXh0KSA+IDApKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBza2lwIGlmIHRoZSBwcm9wIGlzIGEgY2FjaGVkIGhhbmRsZXIgb3IgaGFzIGNvbnN0YW50IHZhbHVlXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKG5hbWUgPT09ICdyZWYnKSB7XHJcbiAgICAgICAgICAgICAgICBoYXNSZWYgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKG5hbWUgPT09ICdjbGFzcycpIHtcclxuICAgICAgICAgICAgICAgIGhhc0NsYXNzQmluZGluZyA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAobmFtZSA9PT0gJ3N0eWxlJykge1xyXG4gICAgICAgICAgICAgICAgaGFzU3R5bGVCaW5kaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChuYW1lICE9PSAna2V5JyAmJiAhZHluYW1pY1Byb3BOYW1lcy5pbmNsdWRlcyhuYW1lKSkge1xyXG4gICAgICAgICAgICAgICAgZHluYW1pY1Byb3BOYW1lcy5wdXNoKG5hbWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHRyZWF0IHRoZSBkeW5hbWljIGNsYXNzIGFuZCBzdHlsZSBiaW5kaW5nIG9mIHRoZSBjb21wb25lbnQgYXMgZHluYW1pYyBwcm9wc1xyXG4gICAgICAgICAgICBpZiAoaXNDb21wb25lbnQgJiZcclxuICAgICAgICAgICAgICAgIChuYW1lID09PSAnY2xhc3MnIHx8IG5hbWUgPT09ICdzdHlsZScpICYmXHJcbiAgICAgICAgICAgICAgICAhZHluYW1pY1Byb3BOYW1lcy5pbmNsdWRlcyhuYW1lKSkge1xyXG4gICAgICAgICAgICAgICAgZHluYW1pY1Byb3BOYW1lcy5wdXNoKG5hbWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBoYXNEeW5hbWljS2V5cyA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAvLyBzdGF0aWMgYXR0cmlidXRlXHJcbiAgICAgICAgY29uc3QgcHJvcCA9IHByb3BzW2ldO1xyXG4gICAgICAgIGlmIChwcm9wLnR5cGUgPT09IDYgLyogTm9kZVR5cGVzLkFUVFJJQlVURSAqLykge1xyXG4gICAgICAgICAgICBjb25zdCB7IGxvYywgbmFtZSwgdmFsdWUgfSA9IHByb3A7XHJcbiAgICAgICAgICAgIGxldCBpc1N0YXRpYyA9IHRydWU7XHJcbiAgICAgICAgICAgIGlmIChuYW1lID09PSAncmVmJykge1xyXG4gICAgICAgICAgICAgICAgaGFzUmVmID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LnNjb3Blcy52Rm9yID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXMucHVzaChjcmVhdGVPYmplY3RQcm9wZXJ0eShjcmVhdGVTaW1wbGVFeHByZXNzaW9uKCdyZWZfZm9yJywgdHJ1ZSksIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oJ3RydWUnKSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHNraXAgaXMgb24gPGNvbXBvbmVudD4sIG9yIGlzPVwidnVlOnh4eFwiXHJcbiAgICAgICAgICAgIGlmIChuYW1lID09PSAnaXMnICYmXHJcbiAgICAgICAgICAgICAgICAoaXNDb21wb25lbnRUYWcodGFnKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZSAmJiB2YWx1ZS5jb250ZW50LnN0YXJ0c1dpdGgoJ3Z1ZTonKSkgfHxcclxuICAgICAgICAgICAgICAgICAgICAoaXNDb21wYXRFbmFibGVkKFwiQ09NUElMRVJfSVNfT05fRUxFTUVOVFwiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9JU19PTl9FTEVNRU5UICovLCBjb250ZXh0KSkpKSB7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBwcm9wZXJ0aWVzLnB1c2goY3JlYXRlT2JqZWN0UHJvcGVydHkoY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihuYW1lLCB0cnVlLCBnZXRJbm5lclJhbmdlKGxvYywgMCwgbmFtZS5sZW5ndGgpKSwgY3JlYXRlU2ltcGxlRXhwcmVzc2lvbih2YWx1ZSA/IHZhbHVlLmNvbnRlbnQgOiAnJywgaXNTdGF0aWMsIHZhbHVlID8gdmFsdWUubG9jIDogbG9jKSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gZGlyZWN0aXZlc1xyXG4gICAgICAgICAgICBjb25zdCB7IG5hbWUsIGFyZywgZXhwLCBsb2MgfSA9IHByb3A7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzVkJpbmQgPSBuYW1lID09PSAnYmluZCc7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzVk9uID0gbmFtZSA9PT0gJ29uJztcclxuICAgICAgICAgICAgLy8gc2tpcCB2LXNsb3QgLSBpdCBpcyBoYW5kbGVkIGJ5IGl0cyBkZWRpY2F0ZWQgdHJhbnNmb3JtLlxyXG4gICAgICAgICAgICBpZiAobmFtZSA9PT0gJ3Nsb3QnKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWlzQ29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoNDAgLyogRXJyb3JDb2Rlcy5YX1ZfU0xPVF9NSVNQTEFDRUQgKi8sIGxvYykpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gc2tpcCB2LW9uY2Uvdi1tZW1vIC0gdGhleSBhcmUgaGFuZGxlZCBieSBkZWRpY2F0ZWQgdHJhbnNmb3Jtcy5cclxuICAgICAgICAgICAgaWYgKG5hbWUgPT09ICdvbmNlJyB8fCBuYW1lID09PSAnbWVtbycpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHNraXAgdi1pcyBhbmQgOmlzIG9uIDxjb21wb25lbnQ+XHJcbiAgICAgICAgICAgIGlmIChuYW1lID09PSAnaXMnIHx8XHJcbiAgICAgICAgICAgICAgICAoaXNWQmluZCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGlzU3RhdGljQXJnT2YoYXJnLCAnaXMnKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIChpc0NvbXBvbmVudFRhZyh0YWcpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChpc0NvbXBhdEVuYWJsZWQoXCJDT01QSUxFUl9JU19PTl9FTEVNRU5UXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX0lTX09OX0VMRU1FTlQgKi8sIGNvbnRleHQpKSkpKSB7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBza2lwIHYtb24gaW4gU1NSIGNvbXBpbGF0aW9uXHJcbiAgICAgICAgICAgIGlmIChpc1ZPbiAmJiBzc3IpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgLy8gIzkzODogZWxlbWVudHMgd2l0aCBkeW5hbWljIGtleXMgc2hvdWxkIGJlIGZvcmNlZCBpbnRvIGJsb2Nrc1xyXG4gICAgICAgICAgICAoaXNWQmluZCAmJiBpc1N0YXRpY0FyZ09mKGFyZywgJ2tleScpKSB8fFxyXG4gICAgICAgICAgICAgICAgLy8gaW5saW5lIGJlZm9yZS11cGRhdGUgaG9va3MgbmVlZCB0byBmb3JjZSBibG9jayBzbyB0aGF0IGl0IGlzIGludm9rZWRcclxuICAgICAgICAgICAgICAgIC8vIGJlZm9yZSBjaGlsZHJlblxyXG4gICAgICAgICAgICAgICAgKGlzVk9uICYmIGhhc0NoaWxkcmVuICYmIGlzU3RhdGljQXJnT2YoYXJnLCAndnVlOmJlZm9yZS11cGRhdGUnKSkpIHtcclxuICAgICAgICAgICAgICAgIHNob3VsZFVzZUJsb2NrID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoaXNWQmluZCAmJiBpc1N0YXRpY0FyZ09mKGFyZywgJ3JlZicpICYmIGNvbnRleHQuc2NvcGVzLnZGb3IgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzLnB1c2goY3JlYXRlT2JqZWN0UHJvcGVydHkoY3JlYXRlU2ltcGxlRXhwcmVzc2lvbigncmVmX2ZvcicsIHRydWUpLCBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKCd0cnVlJykpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBzcGVjaWFsIGNhc2UgZm9yIHYtYmluZCBhbmQgdi1vbiB3aXRoIG5vIGFyZ3VtZW50XHJcbiAgICAgICAgICAgIGlmICghYXJnICYmIChpc1ZCaW5kIHx8IGlzVk9uKSkge1xyXG4gICAgICAgICAgICAgICAgaGFzRHluYW1pY0tleXMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgaWYgKGV4cCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXJnZUFyZ3MucHVzaChjcmVhdGVPYmplY3RFeHByZXNzaW9uKGRlZHVwZVByb3BlcnRpZXMocHJvcGVydGllcyksIGVsZW1lbnRMb2MpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllcyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNWQmluZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAyLnggdi1iaW5kIG9iamVjdCBvcmRlciBjb21wYXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoYXNPdmVycmlkYWJsZUtleXMgPSBtZXJnZUFyZ3Muc29tZShhcmcgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJnLnR5cGUgPT09IDE1IC8qIE5vZGVUeXBlcy5KU19PQkpFQ1RfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFyZy5wcm9wZXJ0aWVzLnNvbWUoKHsga2V5IH0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5LnR5cGUgIT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFrZXkuaXNTdGF0aWMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoa2V5LmNvbnRlbnQgIT09ICdjbGFzcycgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5LmNvbnRlbnQgIT09ICdzdHlsZScgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWlzT24oa2V5LmNvbnRlbnQpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHluYW1pYyBleHByZXNzaW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNPdmVycmlkYWJsZUtleXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tDb21wYXRFbmFibGVkKFwiQ09NUElMRVJfVl9CSU5EX09CSkVDVF9PUkRFUlwiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9WX0JJTkRfT0JKRUNUX09SREVSICovLCBjb250ZXh0LCBsb2MpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0NvbXBhdEVuYWJsZWQoXCJDT01QSUxFUl9WX0JJTkRfT0JKRUNUX09SREVSXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX1ZfQklORF9PQkpFQ1RfT1JERVIgKi8sIGNvbnRleHQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VBcmdzLnVuc2hpZnQoZXhwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXJnZUFyZ3MucHVzaChleHApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdi1vbj1cIm9ialwiIC0+IHRvSGFuZGxlcnMob2JqKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXJnZUFyZ3MucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAxNCAvKiBOb2RlVHlwZXMuSlNfQ0FMTF9FWFBSRVNTSU9OICovLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGVlOiBjb250ZXh0LmhlbHBlcihUT19IQU5ETEVSUyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM6IGlzQ29tcG9uZW50ID8gW2V4cF0gOiBbZXhwLCBgdHJ1ZWBdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKGlzVkJpbmRcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyAzNCAvKiBFcnJvckNvZGVzLlhfVl9CSU5EX05PX0VYUFJFU1NJT04gKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgOiAzNSAvKiBFcnJvckNvZGVzLlhfVl9PTl9OT19FWFBSRVNTSU9OICovLCBsb2MpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdGl2ZVRyYW5zZm9ybSA9IGNvbnRleHQuZGlyZWN0aXZlVHJhbnNmb3Jtc1tuYW1lXTtcclxuICAgICAgICAgICAgaWYgKGRpcmVjdGl2ZVRyYW5zZm9ybSkge1xyXG4gICAgICAgICAgICAgICAgLy8gaGFzIGJ1aWx0LWluIGRpcmVjdGl2ZSB0cmFuc2Zvcm0uXHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IHByb3BzLCBuZWVkUnVudGltZSB9ID0gZGlyZWN0aXZlVHJhbnNmb3JtKHByb3AsIG5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgIXNzciAmJiBwcm9wcy5mb3JFYWNoKGFuYWx5emVQYXRjaEZsYWcpO1xyXG4gICAgICAgICAgICAgICAgcHJvcGVydGllcy5wdXNoKC4uLnByb3BzKTtcclxuICAgICAgICAgICAgICAgIGlmIChuZWVkUnVudGltZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJ1bnRpbWVEaXJlY3RpdmVzLnB1c2gocHJvcCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzU3ltYm9sKG5lZWRSdW50aW1lKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVJbXBvcnRNYXAuc2V0KHByb3AsIG5lZWRSdW50aW1lKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoIWlzQnVpbHRJbkRpcmVjdGl2ZShuYW1lKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gbm8gYnVpbHQtaW4gdHJhbnNmb3JtLCB0aGlzIGlzIGEgdXNlciBjdXN0b20gZGlyZWN0aXZlLlxyXG4gICAgICAgICAgICAgICAgcnVudGltZURpcmVjdGl2ZXMucHVzaChwcm9wKTtcclxuICAgICAgICAgICAgICAgIC8vIGN1c3RvbSBkaXJzIG1heSB1c2UgYmVmb3JlVXBkYXRlIHNvIHRoZXkgbmVlZCB0byBmb3JjZSBibG9ja3NcclxuICAgICAgICAgICAgICAgIC8vIHRvIGVuc3VyZSBiZWZvcmUtdXBkYXRlIGdldHMgY2FsbGVkIGJlZm9yZSBjaGlsZHJlbiB1cGRhdGVcclxuICAgICAgICAgICAgICAgIGlmIChoYXNDaGlsZHJlbikge1xyXG4gICAgICAgICAgICAgICAgICAgIHNob3VsZFVzZUJsb2NrID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCBwcm9wc0V4cHJlc3Npb24gPSB1bmRlZmluZWQ7XHJcbiAgICAvLyBoYXMgdi1iaW5kPVwib2JqZWN0XCIgb3Igdi1vbj1cIm9iamVjdFwiLCB3cmFwIHdpdGggbWVyZ2VQcm9wc1xyXG4gICAgaWYgKG1lcmdlQXJncy5sZW5ndGgpIHtcclxuICAgICAgICBpZiAocHJvcGVydGllcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgbWVyZ2VBcmdzLnB1c2goY3JlYXRlT2JqZWN0RXhwcmVzc2lvbihkZWR1cGVQcm9wZXJ0aWVzKHByb3BlcnRpZXMpLCBlbGVtZW50TG9jKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChtZXJnZUFyZ3MubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICBwcm9wc0V4cHJlc3Npb24gPSBjcmVhdGVDYWxsRXhwcmVzc2lvbihjb250ZXh0LmhlbHBlcihNRVJHRV9QUk9QUyksIG1lcmdlQXJncywgZWxlbWVudExvYyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBzaW5nbGUgdi1iaW5kIHdpdGggbm90aGluZyBlbHNlIC0gbm8gbmVlZCBmb3IgYSBtZXJnZVByb3BzIGNhbGxcclxuICAgICAgICAgICAgcHJvcHNFeHByZXNzaW9uID0gbWVyZ2VBcmdzWzBdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHByb3BlcnRpZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgcHJvcHNFeHByZXNzaW9uID0gY3JlYXRlT2JqZWN0RXhwcmVzc2lvbihkZWR1cGVQcm9wZXJ0aWVzKHByb3BlcnRpZXMpLCBlbGVtZW50TG9jKTtcclxuICAgIH1cclxuICAgIC8vIHBhdGNoRmxhZyBhbmFseXNpc1xyXG4gICAgaWYgKGhhc0R5bmFtaWNLZXlzKSB7XHJcbiAgICAgICAgcGF0Y2hGbGFnIHw9IDE2IC8qIFBhdGNoRmxhZ3MuRlVMTF9QUk9QUyAqLztcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGlmIChoYXNDbGFzc0JpbmRpbmcgJiYgIWlzQ29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgIHBhdGNoRmxhZyB8PSAyIC8qIFBhdGNoRmxhZ3MuQ0xBU1MgKi87XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChoYXNTdHlsZUJpbmRpbmcgJiYgIWlzQ29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgIHBhdGNoRmxhZyB8PSA0IC8qIFBhdGNoRmxhZ3MuU1RZTEUgKi87XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkeW5hbWljUHJvcE5hbWVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBwYXRjaEZsYWcgfD0gOCAvKiBQYXRjaEZsYWdzLlBST1BTICovO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaGFzSHlkcmF0aW9uRXZlbnRCaW5kaW5nKSB7XHJcbiAgICAgICAgICAgIHBhdGNoRmxhZyB8PSAzMiAvKiBQYXRjaEZsYWdzLkhZRFJBVEVfRVZFTlRTICovO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghc2hvdWxkVXNlQmxvY2sgJiZcclxuICAgICAgICAocGF0Y2hGbGFnID09PSAwIHx8IHBhdGNoRmxhZyA9PT0gMzIgLyogUGF0Y2hGbGFncy5IWURSQVRFX0VWRU5UUyAqLykgJiZcclxuICAgICAgICAoaGFzUmVmIHx8IGhhc1Zub2RlSG9vayB8fCBydW50aW1lRGlyZWN0aXZlcy5sZW5ndGggPiAwKSkge1xyXG4gICAgICAgIHBhdGNoRmxhZyB8PSA1MTIgLyogUGF0Y2hGbGFncy5ORUVEX1BBVENIICovO1xyXG4gICAgfVxyXG4gICAgLy8gcHJlLW5vcm1hbGl6ZSBwcm9wcywgU1NSIGlzIHNraXBwZWQgZm9yIG5vd1xyXG4gICAgaWYgKCFjb250ZXh0LmluU1NSICYmIHByb3BzRXhwcmVzc2lvbikge1xyXG4gICAgICAgIHN3aXRjaCAocHJvcHNFeHByZXNzaW9uLnR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSAxNSAvKiBOb2RlVHlwZXMuSlNfT0JKRUNUX0VYUFJFU1NJT04gKi86XHJcbiAgICAgICAgICAgICAgICAvLyBtZWFucyB0aGF0IHRoZXJlIGlzIG5vIHYtYmluZCxcclxuICAgICAgICAgICAgICAgIC8vIGJ1dCBzdGlsbCBuZWVkIHRvIGRlYWwgd2l0aCBkeW5hbWljIGtleSBiaW5kaW5nXHJcbiAgICAgICAgICAgICAgICBsZXQgY2xhc3NLZXlJbmRleCA9IC0xO1xyXG4gICAgICAgICAgICAgICAgbGV0IHN0eWxlS2V5SW5kZXggPSAtMTtcclxuICAgICAgICAgICAgICAgIGxldCBoYXNEeW5hbWljS2V5ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BzRXhwcmVzc2lvbi5wcm9wZXJ0aWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gcHJvcHNFeHByZXNzaW9uLnByb3BlcnRpZXNbaV0ua2V5O1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1N0YXRpY0V4cChrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXkuY29udGVudCA9PT0gJ2NsYXNzJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NLZXlJbmRleCA9IGk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoa2V5LmNvbnRlbnQgPT09ICdzdHlsZScpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlS2V5SW5kZXggPSBpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFrZXkuaXNIYW5kbGVyS2V5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc0R5bmFtaWNLZXkgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IGNsYXNzUHJvcCA9IHByb3BzRXhwcmVzc2lvbi5wcm9wZXJ0aWVzW2NsYXNzS2V5SW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3R5bGVQcm9wID0gcHJvcHNFeHByZXNzaW9uLnByb3BlcnRpZXNbc3R5bGVLZXlJbmRleF07XHJcbiAgICAgICAgICAgICAgICAvLyBubyBkeW5hbWljIGtleVxyXG4gICAgICAgICAgICAgICAgaWYgKCFoYXNEeW5hbWljS2V5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNsYXNzUHJvcCAmJiAhaXNTdGF0aWNFeHAoY2xhc3NQcm9wLnZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc1Byb3AudmFsdWUgPSBjcmVhdGVDYWxsRXhwcmVzc2lvbihjb250ZXh0LmhlbHBlcihOT1JNQUxJWkVfQ0xBU1MpLCBbY2xhc3NQcm9wLnZhbHVlXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzdHlsZVByb3AgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHN0YXRpYyBzdHlsZSBpcyBjb21waWxlZCBpbnRvIGFuIG9iamVjdCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gc28gdXNlIGBoYXNTdHlsZUJpbmRpbmdgIHRvIGVuc3VyZSB0aGF0IGl0IGlzIGEgZHluYW1pYyBzdHlsZSBiaW5kaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChoYXNTdHlsZUJpbmRpbmcgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHlsZVByb3AudmFsdWUudHlwZSA9PT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8gJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZVByb3AudmFsdWUuY29udGVudC50cmltKClbMF0gPT09IGBbYCkgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHYtYmluZDpzdHlsZSBhbmQgc3R5bGUgYm90aCBleGlzdCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHYtYmluZDpzdHlsZSB3aXRoIHN0YXRpYyBsaXRlcmFsIG9iamVjdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVQcm9wLnZhbHVlLnR5cGUgPT09IDE3IC8qIE5vZGVUeXBlcy5KU19BUlJBWV9FWFBSRVNTSU9OICovKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZVByb3AudmFsdWUgPSBjcmVhdGVDYWxsRXhwcmVzc2lvbihjb250ZXh0LmhlbHBlcihOT1JNQUxJWkVfU1RZTEUpLCBbc3R5bGVQcm9wLnZhbHVlXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gZHluYW1pYyBrZXkgYmluZGluZywgd3JhcCB3aXRoIGBub3JtYWxpemVQcm9wc2BcclxuICAgICAgICAgICAgICAgICAgICBwcm9wc0V4cHJlc3Npb24gPSBjcmVhdGVDYWxsRXhwcmVzc2lvbihjb250ZXh0LmhlbHBlcihOT1JNQUxJWkVfUFJPUFMpLCBbcHJvcHNFeHByZXNzaW9uXSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAxNCAvKiBOb2RlVHlwZXMuSlNfQ0FMTF9FWFBSRVNTSU9OICovOlxyXG4gICAgICAgICAgICAgICAgLy8gbWVyZ2VQcm9wcyBjYWxsLCBkbyBub3RoaW5nXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIC8vIHNpbmdsZSB2LWJpbmRcclxuICAgICAgICAgICAgICAgIHByb3BzRXhwcmVzc2lvbiA9IGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKE5PUk1BTElaRV9QUk9QUyksIFtcclxuICAgICAgICAgICAgICAgICAgICBjcmVhdGVDYWxsRXhwcmVzc2lvbihjb250ZXh0LmhlbHBlcihHVUFSRF9SRUFDVElWRV9QUk9QUyksIFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHNFeHByZXNzaW9uXHJcbiAgICAgICAgICAgICAgICAgICAgXSlcclxuICAgICAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBwcm9wczogcHJvcHNFeHByZXNzaW9uLFxyXG4gICAgICAgIGRpcmVjdGl2ZXM6IHJ1bnRpbWVEaXJlY3RpdmVzLFxyXG4gICAgICAgIHBhdGNoRmxhZyxcclxuICAgICAgICBkeW5hbWljUHJvcE5hbWVzLFxyXG4gICAgICAgIHNob3VsZFVzZUJsb2NrXHJcbiAgICB9O1xyXG59XHJcbi8vIERlZHVwZSBwcm9wcyBpbiBhbiBvYmplY3QgbGl0ZXJhbC5cclxuLy8gTGl0ZXJhbCBkdXBsaWNhdGVkIGF0dHJpYnV0ZXMgd291bGQgaGF2ZSBiZWVuIHdhcm5lZCBkdXJpbmcgdGhlIHBhcnNlIHBoYXNlLFxyXG4vLyBob3dldmVyLCBpdCdzIHBvc3NpYmxlIHRvIGVuY291bnRlciBkdXBsaWNhdGVkIGBvblhYWGAgaGFuZGxlcnMgd2l0aCBkaWZmZXJlbnRcclxuLy8gbW9kaWZpZXJzLiBXZSBhbHNvIG5lZWQgdG8gbWVyZ2Ugc3RhdGljIGFuZCBkeW5hbWljIGNsYXNzIC8gc3R5bGUgYXR0cmlidXRlcy5cclxuLy8gLSBvblhYWCBoYW5kbGVycyAvIHN0eWxlOiBtZXJnZSBpbnRvIGFycmF5XHJcbi8vIC0gY2xhc3M6IG1lcmdlIGludG8gc2luZ2xlIGV4cHJlc3Npb24gd2l0aCBjb25jYXRlbmF0aW9uXHJcbmZ1bmN0aW9uIGRlZHVwZVByb3BlcnRpZXMocHJvcGVydGllcykge1xyXG4gICAgY29uc3Qga25vd25Qcm9wcyA9IG5ldyBNYXAoKTtcclxuICAgIGNvbnN0IGRlZHVwZWQgPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcGVydGllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IHByb3AgPSBwcm9wZXJ0aWVzW2ldO1xyXG4gICAgICAgIC8vIGR5bmFtaWMga2V5cyBhcmUgYWx3YXlzIGFsbG93ZWRcclxuICAgICAgICBpZiAocHJvcC5rZXkudHlwZSA9PT0gOCAvKiBOb2RlVHlwZXMuQ09NUE9VTkRfRVhQUkVTU0lPTiAqLyB8fCAhcHJvcC5rZXkuaXNTdGF0aWMpIHtcclxuICAgICAgICAgICAgZGVkdXBlZC5wdXNoKHByb3ApO1xyXG4gICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgbmFtZSA9IHByb3Aua2V5LmNvbnRlbnQ7XHJcbiAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBrbm93blByb3BzLmdldChuYW1lKTtcclxuICAgICAgICBpZiAoZXhpc3RpbmcpIHtcclxuICAgICAgICAgICAgaWYgKG5hbWUgPT09ICdzdHlsZScgfHwgbmFtZSA9PT0gJ2NsYXNzJyB8fCBpc09uKG5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICBtZXJnZUFzQXJyYXkoZXhpc3RpbmcsIHByb3ApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHVuZXhwZWN0ZWQgZHVwbGljYXRlLCBzaG91bGQgaGF2ZSBlbWl0dGVkIGVycm9yIGR1cmluZyBwYXJzZVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAga25vd25Qcm9wcy5zZXQobmFtZSwgcHJvcCk7XHJcbiAgICAgICAgICAgIGRlZHVwZWQucHVzaChwcm9wKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGVkdXBlZDtcclxufVxyXG5mdW5jdGlvbiBtZXJnZUFzQXJyYXkoZXhpc3RpbmcsIGluY29taW5nKSB7XHJcbiAgICBpZiAoZXhpc3RpbmcudmFsdWUudHlwZSA9PT0gMTcgLyogTm9kZVR5cGVzLkpTX0FSUkFZX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICBleGlzdGluZy52YWx1ZS5lbGVtZW50cy5wdXNoKGluY29taW5nLnZhbHVlKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGV4aXN0aW5nLnZhbHVlID0gY3JlYXRlQXJyYXlFeHByZXNzaW9uKFtleGlzdGluZy52YWx1ZSwgaW5jb21pbmcudmFsdWVdLCBleGlzdGluZy5sb2MpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGJ1aWxkRGlyZWN0aXZlQXJncyhkaXIsIGNvbnRleHQpIHtcclxuICAgIGNvbnN0IGRpckFyZ3MgPSBbXTtcclxuICAgIGNvbnN0IHJ1bnRpbWUgPSBkaXJlY3RpdmVJbXBvcnRNYXAuZ2V0KGRpcik7XHJcbiAgICBpZiAocnVudGltZSkge1xyXG4gICAgICAgIC8vIGJ1aWx0LWluIGRpcmVjdGl2ZSB3aXRoIHJ1bnRpbWVcclxuICAgICAgICBkaXJBcmdzLnB1c2goY29udGV4dC5oZWxwZXJTdHJpbmcocnVudGltZSkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAvLyBpbmplY3Qgc3RhdGVtZW50IGZvciByZXNvbHZpbmcgZGlyZWN0aXZlXHJcbiAgICAgICAgICAgIGNvbnRleHQuaGVscGVyKFJFU09MVkVfRElSRUNUSVZFKTtcclxuICAgICAgICAgICAgY29udGV4dC5kaXJlY3RpdmVzLmFkZChkaXIubmFtZSk7XHJcbiAgICAgICAgICAgIGRpckFyZ3MucHVzaCh0b1ZhbGlkQXNzZXRJZChkaXIubmFtZSwgYGRpcmVjdGl2ZWApKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IGxvYyB9ID0gZGlyO1xyXG4gICAgaWYgKGRpci5leHApXHJcbiAgICAgICAgZGlyQXJncy5wdXNoKGRpci5leHApO1xyXG4gICAgaWYgKGRpci5hcmcpIHtcclxuICAgICAgICBpZiAoIWRpci5leHApIHtcclxuICAgICAgICAgICAgZGlyQXJncy5wdXNoKGB2b2lkIDBgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZGlyQXJncy5wdXNoKGRpci5hcmcpO1xyXG4gICAgfVxyXG4gICAgaWYgKE9iamVjdC5rZXlzKGRpci5tb2RpZmllcnMpLmxlbmd0aCkge1xyXG4gICAgICAgIGlmICghZGlyLmFyZykge1xyXG4gICAgICAgICAgICBpZiAoIWRpci5leHApIHtcclxuICAgICAgICAgICAgICAgIGRpckFyZ3MucHVzaChgdm9pZCAwYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZGlyQXJncy5wdXNoKGB2b2lkIDBgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgdHJ1ZUV4cHJlc3Npb24gPSBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGB0cnVlYCwgZmFsc2UsIGxvYyk7XHJcbiAgICAgICAgZGlyQXJncy5wdXNoKGNyZWF0ZU9iamVjdEV4cHJlc3Npb24oZGlyLm1vZGlmaWVycy5tYXAobW9kaWZpZXIgPT4gY3JlYXRlT2JqZWN0UHJvcGVydHkobW9kaWZpZXIsIHRydWVFeHByZXNzaW9uKSksIGxvYykpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNyZWF0ZUFycmF5RXhwcmVzc2lvbihkaXJBcmdzLCBkaXIubG9jKTtcclxufVxyXG5mdW5jdGlvbiBzdHJpbmdpZnlEeW5hbWljUHJvcE5hbWVzKHByb3BzKSB7XHJcbiAgICBsZXQgcHJvcHNOYW1lc1N0cmluZyA9IGBbYDtcclxuICAgIGZvciAobGV0IGkgPSAwLCBsID0gcHJvcHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgcHJvcHNOYW1lc1N0cmluZyArPSBKU09OLnN0cmluZ2lmeShwcm9wc1tpXSk7XHJcbiAgICAgICAgaWYgKGkgPCBsIC0gMSlcclxuICAgICAgICAgICAgcHJvcHNOYW1lc1N0cmluZyArPSAnLCAnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHByb3BzTmFtZXNTdHJpbmcgKyBgXWA7XHJcbn1cclxuZnVuY3Rpb24gaXNDb21wb25lbnRUYWcodGFnKSB7XHJcbiAgICByZXR1cm4gdGFnID09PSAnY29tcG9uZW50JyB8fCB0YWcgPT09ICdDb21wb25lbnQnO1xyXG59XG5cbihwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKVxyXG4gICAgPyBPYmplY3QuZnJlZXplKHt9KVxyXG4gICAgOiB7fTtcclxuKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gT2JqZWN0LmZyZWV6ZShbXSkgOiBbXTtcclxuY29uc3QgY2FjaGVTdHJpbmdGdW5jdGlvbiA9IChmbikgPT4ge1xyXG4gICAgY29uc3QgY2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xyXG4gICAgcmV0dXJuICgoc3RyKSA9PiB7XHJcbiAgICAgICAgY29uc3QgaGl0ID0gY2FjaGVbc3RyXTtcclxuICAgICAgICByZXR1cm4gaGl0IHx8IChjYWNoZVtzdHJdID0gZm4oc3RyKSk7XHJcbiAgICB9KTtcclxufTtcclxuY29uc3QgY2FtZWxpemVSRSA9IC8tKFxcdykvZztcclxuLyoqXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5jb25zdCBjYW1lbGl6ZSA9IGNhY2hlU3RyaW5nRnVuY3Rpb24oKHN0cikgPT4ge1xyXG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKGNhbWVsaXplUkUsIChfLCBjKSA9PiAoYyA/IGMudG9VcHBlckNhc2UoKSA6ICcnKSk7XHJcbn0pO1xuXG5jb25zdCB0cmFuc2Zvcm1TbG90T3V0bGV0ID0gKG5vZGUsIGNvbnRleHQpID0+IHtcclxuICAgIGlmIChpc1Nsb3RPdXRsZXQobm9kZSkpIHtcclxuICAgICAgICBjb25zdCB7IGNoaWxkcmVuLCBsb2MgfSA9IG5vZGU7XHJcbiAgICAgICAgY29uc3QgeyBzbG90TmFtZSwgc2xvdFByb3BzIH0gPSBwcm9jZXNzU2xvdE91dGxldChub2RlLCBjb250ZXh0KTtcclxuICAgICAgICBjb25zdCBzbG90QXJncyA9IFtcclxuICAgICAgICAgICAgY29udGV4dC5wcmVmaXhJZGVudGlmaWVycyA/IGBfY3R4LiRzbG90c2AgOiBgJHNsb3RzYCxcclxuICAgICAgICAgICAgc2xvdE5hbWUsXHJcbiAgICAgICAgICAgICd7fScsXHJcbiAgICAgICAgICAgICd1bmRlZmluZWQnLFxyXG4gICAgICAgICAgICAndHJ1ZSdcclxuICAgICAgICBdO1xyXG4gICAgICAgIGxldCBleHBlY3RlZExlbiA9IDI7XHJcbiAgICAgICAgaWYgKHNsb3RQcm9wcykge1xyXG4gICAgICAgICAgICBzbG90QXJnc1syXSA9IHNsb3RQcm9wcztcclxuICAgICAgICAgICAgZXhwZWN0ZWRMZW4gPSAzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHNsb3RBcmdzWzNdID0gY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uKFtdLCBjaGlsZHJlbiwgZmFsc2UsIGZhbHNlLCBsb2MpO1xyXG4gICAgICAgICAgICBleHBlY3RlZExlbiA9IDQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjb250ZXh0LnNjb3BlSWQgJiYgIWNvbnRleHQuc2xvdHRlZCkge1xyXG4gICAgICAgICAgICBleHBlY3RlZExlbiA9IDU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHNsb3RBcmdzLnNwbGljZShleHBlY3RlZExlbik7IC8vIHJlbW92ZSB1bnVzZWQgYXJndW1lbnRzXHJcbiAgICAgICAgbm9kZS5jb2RlZ2VuTm9kZSA9IGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKFJFTkRFUl9TTE9UKSwgc2xvdEFyZ3MsIGxvYyk7XHJcbiAgICB9XHJcbn07XHJcbmZ1bmN0aW9uIHByb2Nlc3NTbG90T3V0bGV0KG5vZGUsIGNvbnRleHQpIHtcclxuICAgIGxldCBzbG90TmFtZSA9IGBcImRlZmF1bHRcImA7XHJcbiAgICBsZXQgc2xvdFByb3BzID0gdW5kZWZpbmVkO1xyXG4gICAgY29uc3Qgbm9uTmFtZVByb3BzID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUucHJvcHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBwID0gbm9kZS5wcm9wc1tpXTtcclxuICAgICAgICBpZiAocC50eXBlID09PSA2IC8qIE5vZGVUeXBlcy5BVFRSSUJVVEUgKi8pIHtcclxuICAgICAgICAgICAgaWYgKHAudmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIGlmIChwLm5hbWUgPT09ICduYW1lJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHNsb3ROYW1lID0gSlNPTi5zdHJpbmdpZnkocC52YWx1ZS5jb250ZW50KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHAubmFtZSA9IGNhbWVsaXplKHAubmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9uTmFtZVByb3BzLnB1c2gocCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChwLm5hbWUgPT09ICdiaW5kJyAmJiBpc1N0YXRpY0FyZ09mKHAuYXJnLCAnbmFtZScpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocC5leHApXHJcbiAgICAgICAgICAgICAgICAgICAgc2xvdE5hbWUgPSBwLmV4cDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChwLm5hbWUgPT09ICdiaW5kJyAmJiBwLmFyZyAmJiBpc1N0YXRpY0V4cChwLmFyZykpIHtcclxuICAgICAgICAgICAgICAgICAgICBwLmFyZy5jb250ZW50ID0gY2FtZWxpemUocC5hcmcuY29udGVudCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBub25OYW1lUHJvcHMucHVzaChwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChub25OYW1lUHJvcHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGNvbnN0IHsgcHJvcHMsIGRpcmVjdGl2ZXMgfSA9IGJ1aWxkUHJvcHMobm9kZSwgY29udGV4dCwgbm9uTmFtZVByb3BzLCBmYWxzZSwgZmFsc2UpO1xyXG4gICAgICAgIHNsb3RQcm9wcyA9IHByb3BzO1xyXG4gICAgICAgIGlmIChkaXJlY3RpdmVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcigzNiAvKiBFcnJvckNvZGVzLlhfVl9TTE9UX1VORVhQRUNURURfRElSRUNUSVZFX09OX1NMT1RfT1VUTEVUICovLCBkaXJlY3RpdmVzWzBdLmxvYykpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgc2xvdE5hbWUsXHJcbiAgICAgICAgc2xvdFByb3BzXHJcbiAgICB9O1xyXG59XG5cbmNvbnN0IGZuRXhwUkUgPSAvXlxccyooW1xcdyRfXSt8KGFzeW5jXFxzKik/XFwoW14pXSo/XFwpKVxccyo9PnxeXFxzKihhc3luY1xccyspP2Z1bmN0aW9uKD86XFxzK1tcXHckXSspP1xccypcXCgvO1xyXG5jb25zdCB0cmFuc2Zvcm1PbiA9IChkaXIsIG5vZGUsIGNvbnRleHQsIGF1Z21lbnRvcikgPT4ge1xyXG4gICAgY29uc3QgeyBsb2MsIG1vZGlmaWVycywgYXJnIH0gPSBkaXI7XHJcbiAgICBpZiAoIWRpci5leHAgJiYgIW1vZGlmaWVycy5sZW5ndGgpIHtcclxuICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcigzNSAvKiBFcnJvckNvZGVzLlhfVl9PTl9OT19FWFBSRVNTSU9OICovLCBsb2MpKTtcclxuICAgIH1cclxuICAgIGxldCBldmVudE5hbWU7XHJcbiAgICBpZiAoYXJnLnR5cGUgPT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgaWYgKGFyZy5pc1N0YXRpYykge1xyXG4gICAgICAgICAgICBsZXQgcmF3TmFtZSA9IGFyZy5jb250ZW50O1xyXG4gICAgICAgICAgICAvLyBUT0RPIGRlcHJlY2F0ZSBAdm5vZGVYWFggdXNhZ2VcclxuICAgICAgICAgICAgaWYgKHJhd05hbWUuc3RhcnRzV2l0aCgndnVlOicpKSB7XHJcbiAgICAgICAgICAgICAgICByYXdOYW1lID0gYHZub2RlLSR7cmF3TmFtZS5zbGljZSg0KX1gO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50U3RyaW5nID0gbm9kZS50YWdUeXBlID09PSAxIC8qIEVsZW1lbnRUeXBlcy5DT01QT05FTlQgKi8gfHxcclxuICAgICAgICAgICAgICAgIHJhd05hbWUuc3RhcnRzV2l0aCgndm5vZGUnKSB8fFxyXG4gICAgICAgICAgICAgICAgIS9bQS1aXS8udGVzdChyYXdOYW1lKVxyXG4gICAgICAgICAgICAgICAgPyAvLyBmb3IgY29tcG9uZW50IGFuZCB2bm9kZSBsaWZlY3ljbGUgZXZlbnQgbGlzdGVuZXJzLCBhdXRvIGNvbnZlcnRcclxuICAgICAgICAgICAgICAgICAgICAvLyBpdCB0byBjYW1lbENhc2UuIFNlZSBpc3N1ZSAjMjI0OVxyXG4gICAgICAgICAgICAgICAgICAgIHRvSGFuZGxlcktleShjYW1lbGl6ZSQxKHJhd05hbWUpKVxyXG4gICAgICAgICAgICAgICAgLy8gcHJlc2VydmUgY2FzZSBmb3IgcGxhaW4gZWxlbWVudCBsaXN0ZW5lcnMgdGhhdCBoYXZlIHVwcGVyY2FzZVxyXG4gICAgICAgICAgICAgICAgLy8gbGV0dGVycywgYXMgdGhlc2UgbWF5IGJlIGN1c3RvbSBlbGVtZW50cycgY3VzdG9tIGV2ZW50c1xyXG4gICAgICAgICAgICAgICAgOiBgb246JHtyYXdOYW1lfWA7XHJcbiAgICAgICAgICAgIGV2ZW50TmFtZSA9IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oZXZlbnRTdHJpbmcsIHRydWUsIGFyZy5sb2MpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gIzIzODhcclxuICAgICAgICAgICAgZXZlbnROYW1lID0gY3JlYXRlQ29tcG91bmRFeHByZXNzaW9uKFtcclxuICAgICAgICAgICAgICAgIGAke2NvbnRleHQuaGVscGVyU3RyaW5nKFRPX0hBTkRMRVJfS0VZKX0oYCxcclxuICAgICAgICAgICAgICAgIGFyZyxcclxuICAgICAgICAgICAgICAgIGApYFxyXG4gICAgICAgICAgICBdKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBhbHJlYWR5IGEgY29tcG91bmQgZXhwcmVzc2lvbi5cclxuICAgICAgICBldmVudE5hbWUgPSBhcmc7XHJcbiAgICAgICAgZXZlbnROYW1lLmNoaWxkcmVuLnVuc2hpZnQoYCR7Y29udGV4dC5oZWxwZXJTdHJpbmcoVE9fSEFORExFUl9LRVkpfShgKTtcclxuICAgICAgICBldmVudE5hbWUuY2hpbGRyZW4ucHVzaChgKWApO1xyXG4gICAgfVxyXG4gICAgLy8gaGFuZGxlciBwcm9jZXNzaW5nXHJcbiAgICBsZXQgZXhwID0gZGlyLmV4cDtcclxuICAgIGlmIChleHAgJiYgIWV4cC5jb250ZW50LnRyaW0oKSkge1xyXG4gICAgICAgIGV4cCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICAgIGxldCBzaG91bGRDYWNoZSA9IGNvbnRleHQuY2FjaGVIYW5kbGVycyAmJiAhZXhwICYmICFjb250ZXh0LmluVk9uY2U7XHJcbiAgICBpZiAoZXhwKSB7XHJcbiAgICAgICAgY29uc3QgaXNNZW1iZXJFeHAgPSBpc01lbWJlckV4cHJlc3Npb24oZXhwLmNvbnRlbnQpO1xyXG4gICAgICAgIGNvbnN0IGlzSW5saW5lU3RhdGVtZW50ID0gIShpc01lbWJlckV4cCB8fCBmbkV4cFJFLnRlc3QoZXhwLmNvbnRlbnQpKTtcclxuICAgICAgICBjb25zdCBoYXNNdWx0aXBsZVN0YXRlbWVudHMgPSBleHAuY29udGVudC5pbmNsdWRlcyhgO2ApO1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgdHJ1ZSkge1xyXG4gICAgICAgICAgICB2YWxpZGF0ZUJyb3dzZXJFeHByZXNzaW9uKGV4cCwgY29udGV4dCwgZmFsc2UsIGhhc011bHRpcGxlU3RhdGVtZW50cyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpc0lubGluZVN0YXRlbWVudCB8fCAoc2hvdWxkQ2FjaGUgJiYgaXNNZW1iZXJFeHApKSB7XHJcbiAgICAgICAgICAgIC8vIHdyYXAgaW5saW5lIHN0YXRlbWVudCBpbiBhIGZ1bmN0aW9uIGV4cHJlc3Npb25cclxuICAgICAgICAgICAgZXhwID0gY3JlYXRlQ29tcG91bmRFeHByZXNzaW9uKFtcclxuICAgICAgICAgICAgICAgIGAke2lzSW5saW5lU3RhdGVtZW50XHJcbiAgICAgICAgICAgICAgICAgICAgPyBgJGV2ZW50YFxyXG4gICAgICAgICAgICAgICAgICAgIDogYCR7YGB9KC4uLmFyZ3MpYH0gPT4gJHtoYXNNdWx0aXBsZVN0YXRlbWVudHMgPyBge2AgOiBgKGB9YCxcclxuICAgICAgICAgICAgICAgIGV4cCxcclxuICAgICAgICAgICAgICAgIGhhc011bHRpcGxlU3RhdGVtZW50cyA/IGB9YCA6IGApYFxyXG4gICAgICAgICAgICBdKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgcmV0ID0ge1xyXG4gICAgICAgIHByb3BzOiBbXHJcbiAgICAgICAgICAgIGNyZWF0ZU9iamVjdFByb3BlcnR5KGV2ZW50TmFtZSwgZXhwIHx8IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYCgpID0+IHt9YCwgZmFsc2UsIGxvYykpXHJcbiAgICAgICAgXVxyXG4gICAgfTtcclxuICAgIC8vIGFwcGx5IGV4dGVuZGVkIGNvbXBpbGVyIGF1Z21lbnRvclxyXG4gICAgaWYgKGF1Z21lbnRvcikge1xyXG4gICAgICAgIHJldCA9IGF1Z21lbnRvcihyZXQpO1xyXG4gICAgfVxyXG4gICAgaWYgKHNob3VsZENhY2hlKSB7XHJcbiAgICAgICAgLy8gY2FjaGUgaGFuZGxlcnMgc28gdGhhdCBpdCdzIGFsd2F5cyB0aGUgc2FtZSBoYW5kbGVyIGJlaW5nIHBhc3NlZCBkb3duLlxyXG4gICAgICAgIC8vIHRoaXMgYXZvaWRzIHVubmVjZXNzYXJ5IHJlLXJlbmRlcnMgd2hlbiB1c2VycyB1c2UgaW5saW5lIGhhbmRsZXJzIG9uXHJcbiAgICAgICAgLy8gY29tcG9uZW50cy5cclxuICAgICAgICByZXQucHJvcHNbMF0udmFsdWUgPSBjb250ZXh0LmNhY2hlKHJldC5wcm9wc1swXS52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICAvLyBtYXJrIHRoZSBrZXkgYXMgaGFuZGxlciBmb3IgcHJvcHMgbm9ybWFsaXphdGlvbiBjaGVja1xyXG4gICAgcmV0LnByb3BzLmZvckVhY2gocCA9PiAocC5rZXkuaXNIYW5kbGVyS2V5ID0gdHJ1ZSkpO1xyXG4gICAgcmV0dXJuIHJldDtcclxufTtcblxuLy8gdi1iaW5kIHdpdGhvdXQgYXJnIGlzIGhhbmRsZWQgZGlyZWN0bHkgaW4gLi90cmFuc2Zvcm1FbGVtZW50cy50cyBkdWUgdG8gaXQgYWZmZWN0aW5nXHJcbi8vIGNvZGVnZW4gZm9yIHRoZSBlbnRpcmUgcHJvcHMgb2JqZWN0LiBUaGlzIHRyYW5zZm9ybSBoZXJlIGlzIG9ubHkgZm9yIHYtYmluZFxyXG4vLyAqd2l0aCogYXJncy5cclxuY29uc3QgdHJhbnNmb3JtQmluZCA9IChkaXIsIF9ub2RlLCBjb250ZXh0KSA9PiB7XHJcbiAgICBjb25zdCB7IGV4cCwgbW9kaWZpZXJzLCBsb2MgfSA9IGRpcjtcclxuICAgIGNvbnN0IGFyZyA9IGRpci5hcmc7XHJcbiAgICBpZiAoYXJnLnR5cGUgIT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovKSB7XHJcbiAgICAgICAgYXJnLmNoaWxkcmVuLnVuc2hpZnQoYChgKTtcclxuICAgICAgICBhcmcuY2hpbGRyZW4ucHVzaChgKSB8fCBcIlwiYCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICghYXJnLmlzU3RhdGljKSB7XHJcbiAgICAgICAgYXJnLmNvbnRlbnQgPSBgJHthcmcuY29udGVudH0gfHwgXCJcImA7XHJcbiAgICB9XHJcbiAgICAvLyAuc3luYyBpcyByZXBsYWNlZCBieSB2LW1vZGVsOmFyZ1xyXG4gICAgaWYgKG1vZGlmaWVycy5pbmNsdWRlcygnY2FtZWwnKSkge1xyXG4gICAgICAgIGlmIChhcmcudHlwZSA9PT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICAgICAgaWYgKGFyZy5pc1N0YXRpYykge1xyXG4gICAgICAgICAgICAgICAgYXJnLmNvbnRlbnQgPSBjYW1lbGl6ZSQxKGFyZy5jb250ZW50KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGFyZy5jb250ZW50ID0gYCR7Y29udGV4dC5oZWxwZXJTdHJpbmcoQ0FNRUxJWkUpfSgke2FyZy5jb250ZW50fSlgO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBhcmcuY2hpbGRyZW4udW5zaGlmdChgJHtjb250ZXh0LmhlbHBlclN0cmluZyhDQU1FTElaRSl9KGApO1xyXG4gICAgICAgICAgICBhcmcuY2hpbGRyZW4ucHVzaChgKWApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghY29udGV4dC5pblNTUikge1xyXG4gICAgICAgIGlmIChtb2RpZmllcnMuaW5jbHVkZXMoJ3Byb3AnKSkge1xyXG4gICAgICAgICAgICBpbmplY3RQcmVmaXgoYXJnLCAnLicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobW9kaWZpZXJzLmluY2x1ZGVzKCdhdHRyJykpIHtcclxuICAgICAgICAgICAgaW5qZWN0UHJlZml4KGFyZywgJ14nKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoIWV4cCB8fFxyXG4gICAgICAgIChleHAudHlwZSA9PT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8gJiYgIWV4cC5jb250ZW50LnRyaW0oKSkpIHtcclxuICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcigzNCAvKiBFcnJvckNvZGVzLlhfVl9CSU5EX05PX0VYUFJFU1NJT04gKi8sIGxvYykpO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHByb3BzOiBbY3JlYXRlT2JqZWN0UHJvcGVydHkoYXJnLCBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKCcnLCB0cnVlLCBsb2MpKV1cclxuICAgICAgICB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBwcm9wczogW2NyZWF0ZU9iamVjdFByb3BlcnR5KGFyZywgZXhwKV1cclxuICAgIH07XHJcbn07XHJcbmNvbnN0IGluamVjdFByZWZpeCA9IChhcmcsIHByZWZpeCkgPT4ge1xyXG4gICAgaWYgKGFyZy50eXBlID09PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgIGlmIChhcmcuaXNTdGF0aWMpIHtcclxuICAgICAgICAgICAgYXJnLmNvbnRlbnQgPSBwcmVmaXggKyBhcmcuY29udGVudDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGFyZy5jb250ZW50ID0gYFxcYCR7cHJlZml4fVxcJHske2FyZy5jb250ZW50fX1cXGBgO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGFyZy5jaGlsZHJlbi51bnNoaWZ0KGAnJHtwcmVmaXh9JyArIChgKTtcclxuICAgICAgICBhcmcuY2hpbGRyZW4ucHVzaChgKWApO1xyXG4gICAgfVxyXG59O1xuXG4vLyBNZXJnZSBhZGphY2VudCB0ZXh0IG5vZGVzIGFuZCBleHByZXNzaW9ucyBpbnRvIGEgc2luZ2xlIGV4cHJlc3Npb25cclxuLy8gZS5nLiA8ZGl2PmFiYyB7eyBkIH19IHt7IGUgfX08L2Rpdj4gc2hvdWxkIGhhdmUgYSBzaW5nbGUgZXhwcmVzc2lvbiBub2RlIGFzIGNoaWxkLlxyXG5jb25zdCB0cmFuc2Zvcm1UZXh0ID0gKG5vZGUsIGNvbnRleHQpID0+IHtcclxuICAgIGlmIChub2RlLnR5cGUgPT09IDAgLyogTm9kZVR5cGVzLlJPT1QgKi8gfHxcclxuICAgICAgICBub2RlLnR5cGUgPT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8gfHxcclxuICAgICAgICBub2RlLnR5cGUgPT09IDExIC8qIE5vZGVUeXBlcy5GT1IgKi8gfHxcclxuICAgICAgICBub2RlLnR5cGUgPT09IDEwIC8qIE5vZGVUeXBlcy5JRl9CUkFOQ0ggKi8pIHtcclxuICAgICAgICAvLyBwZXJmb3JtIHRoZSB0cmFuc2Zvcm0gb24gbm9kZSBleGl0IHNvIHRoYXQgYWxsIGV4cHJlc3Npb25zIGhhdmUgYWxyZWFkeVxyXG4gICAgICAgIC8vIGJlZW4gcHJvY2Vzc2VkLlxyXG4gICAgICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbjtcclxuICAgICAgICAgICAgbGV0IGN1cnJlbnRDb250YWluZXIgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIGxldCBoYXNUZXh0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gY2hpbGRyZW5baV07XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNUZXh0KGNoaWxkKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGhhc1RleHQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IGNoaWxkcmVuLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHQgPSBjaGlsZHJlbltqXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzVGV4dChuZXh0KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjdXJyZW50Q29udGFpbmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudENvbnRhaW5lciA9IGNoaWxkcmVuW2ldID0gY3JlYXRlQ29tcG91bmRFeHByZXNzaW9uKFtjaGlsZF0sIGNoaWxkLmxvYyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtZXJnZSBhZGphY2VudCB0ZXh0IG5vZGUgaW50byBjdXJyZW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q29udGFpbmVyLmNoaWxkcmVuLnB1c2goYCArIGAsIG5leHQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4uc3BsaWNlKGosIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgai0tO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudENvbnRhaW5lciA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghaGFzVGV4dCB8fFxyXG4gICAgICAgICAgICAgICAgLy8gaWYgdGhpcyBpcyBhIHBsYWluIGVsZW1lbnQgd2l0aCBhIHNpbmdsZSB0ZXh0IGNoaWxkLCBsZWF2ZSBpdFxyXG4gICAgICAgICAgICAgICAgLy8gYXMtaXMgc2luY2UgdGhlIHJ1bnRpbWUgaGFzIGRlZGljYXRlZCBmYXN0IHBhdGggZm9yIHRoaXMgYnkgZGlyZWN0bHlcclxuICAgICAgICAgICAgICAgIC8vIHNldHRpbmcgdGV4dENvbnRlbnQgb2YgdGhlIGVsZW1lbnQuXHJcbiAgICAgICAgICAgICAgICAvLyBmb3IgY29tcG9uZW50IHJvb3QgaXQncyBhbHdheXMgbm9ybWFsaXplZCBhbnl3YXkuXHJcbiAgICAgICAgICAgICAgICAoY2hpbGRyZW4ubGVuZ3RoID09PSAxICYmXHJcbiAgICAgICAgICAgICAgICAgICAgKG5vZGUudHlwZSA9PT0gMCAvKiBOb2RlVHlwZXMuUk9PVCAqLyB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAobm9kZS50eXBlID09PSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLnRhZ1R5cGUgPT09IDAgLyogRWxlbWVudFR5cGVzLkVMRU1FTlQgKi8gJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICMzNzU2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjdXN0b20gZGlyZWN0aXZlcyBjYW4gcG90ZW50aWFsbHkgYWRkIERPTSBlbGVtZW50cyBhcmJpdHJhcmlseSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gYXZvaWQgc2V0dGluZyB0ZXh0Q29udGVudCBvZiB0aGUgZWxlbWVudCBhdCBydW50aW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBhdm9pZCBhY2NpZGVudGFsbHkgb3ZlcndyaXRpbmcgdGhlIERPTSBlbGVtZW50cyBhZGRlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnkgdGhlIHVzZXIgdGhyb3VnaCBjdXN0b20gZGlyZWN0aXZlcy5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICFub2RlLnByb3BzLmZpbmQocCA9PiBwLnR5cGUgPT09IDcgLyogTm9kZVR5cGVzLkRJUkVDVElWRSAqLyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFjb250ZXh0LmRpcmVjdGl2ZVRyYW5zZm9ybXNbcC5uYW1lXSkgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluIGNvbXBhdCBtb2RlLCA8dGVtcGxhdGU+IHRhZ3Mgd2l0aCBubyBzcGVjaWFsIGRpcmVjdGl2ZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgYmUgcmVuZGVyZWQgYXMgYSBmcmFnbWVudCBzbyBpdHMgY2hpbGRyZW4gbXVzdCBiZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udmVydGVkIGludG8gdm5vZGVzLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIShub2RlLnRhZyA9PT0gJ3RlbXBsYXRlJykpKSkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBwcmUtY29udmVydCB0ZXh0IG5vZGVzIGludG8gY3JlYXRlVGV4dFZOb2RlKHRleHQpIGNhbGxzIHRvIGF2b2lkXHJcbiAgICAgICAgICAgIC8vIHJ1bnRpbWUgbm9ybWFsaXphdGlvbi5cclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGQgPSBjaGlsZHJlbltpXTtcclxuICAgICAgICAgICAgICAgIGlmIChpc1RleHQoY2hpbGQpIHx8IGNoaWxkLnR5cGUgPT09IDggLyogTm9kZVR5cGVzLkNPTVBPVU5EX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjYWxsQXJncyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNyZWF0ZVRleHRWTm9kZSBkZWZhdWx0cyB0byBzaW5nbGUgd2hpdGVzcGFjZSwgc28gaWYgaXQgaXMgYVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHNpbmdsZSBzcGFjZSB0aGUgY29kZSBjb3VsZCBiZSBhbiBlbXB0eSBjYWxsIHRvIHNhdmUgYnl0ZXMuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkLnR5cGUgIT09IDIgLyogTm9kZVR5cGVzLlRFWFQgKi8gfHwgY2hpbGQuY29udGVudCAhPT0gJyAnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxBcmdzLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAvLyBtYXJrIGR5bmFtaWMgdGV4dCB3aXRoIGZsYWcgc28gaXQgZ2V0cyBwYXRjaGVkIGluc2lkZSBhIGJsb2NrXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LnNzciAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRDb25zdGFudFR5cGUoY2hpbGQsIGNvbnRleHQpID09PSAwIC8qIENvbnN0YW50VHlwZXMuTk9UX0NPTlNUQU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxBcmdzLnB1c2goMSAvKiBQYXRjaEZsYWdzLlRFWFQgKi8gK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGAgLyogJHtQYXRjaEZsYWdOYW1lc1sxIC8qIFBhdGNoRmxhZ3MuVEVYVCAqL119ICovYCA6IGBgKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuW2ldID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAxMiAvKiBOb2RlVHlwZXMuVEVYVF9DQUxMICovLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBjaGlsZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbG9jOiBjaGlsZC5sb2MsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVnZW5Ob2RlOiBjcmVhdGVDYWxsRXhwcmVzc2lvbihjb250ZXh0LmhlbHBlcihDUkVBVEVfVEVYVCksIGNhbGxBcmdzKVxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgfVxyXG59O1xuXG5jb25zdCBzZWVuID0gbmV3IFdlYWtTZXQoKTtcclxuY29uc3QgdHJhbnNmb3JtT25jZSA9IChub2RlLCBjb250ZXh0KSA9PiB7XHJcbiAgICBpZiAobm9kZS50eXBlID09PSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovICYmIGZpbmREaXIobm9kZSwgJ29uY2UnLCB0cnVlKSkge1xyXG4gICAgICAgIGlmIChzZWVuLmhhcyhub2RlKSB8fCBjb250ZXh0LmluVk9uY2UpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzZWVuLmFkZChub2RlKTtcclxuICAgICAgICBjb250ZXh0LmluVk9uY2UgPSB0cnVlO1xyXG4gICAgICAgIGNvbnRleHQuaGVscGVyKFNFVF9CTE9DS19UUkFDS0lORyk7XHJcbiAgICAgICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICAgICAgY29udGV4dC5pblZPbmNlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1ciA9IGNvbnRleHQuY3VycmVudE5vZGU7XHJcbiAgICAgICAgICAgIGlmIChjdXIuY29kZWdlbk5vZGUpIHtcclxuICAgICAgICAgICAgICAgIGN1ci5jb2RlZ2VuTm9kZSA9IGNvbnRleHQuY2FjaGUoY3VyLmNvZGVnZW5Ob2RlLCB0cnVlIC8qIGlzVk5vZGUgKi8pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxufTtcblxuY29uc3QgdHJhbnNmb3JtTW9kZWwgPSAoZGlyLCBub2RlLCBjb250ZXh0KSA9PiB7XHJcbiAgICBjb25zdCB7IGV4cCwgYXJnIH0gPSBkaXI7XHJcbiAgICBpZiAoIWV4cCkge1xyXG4gICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDQxIC8qIEVycm9yQ29kZXMuWF9WX01PREVMX05PX0VYUFJFU1NJT04gKi8sIGRpci5sb2MpKTtcclxuICAgICAgICByZXR1cm4gY3JlYXRlVHJhbnNmb3JtUHJvcHMoKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHJhd0V4cCA9IGV4cC5sb2Muc291cmNlO1xyXG4gICAgY29uc3QgZXhwU3RyaW5nID0gZXhwLnR5cGUgPT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovID8gZXhwLmNvbnRlbnQgOiByYXdFeHA7XHJcbiAgICAvLyBpbSBTRkMgPHNjcmlwdCBzZXR1cD4gaW5saW5lIG1vZGUsIHRoZSBleHAgbWF5IGhhdmUgYmVlbiB0cmFuc2Zvcm1lZCBpbnRvXHJcbiAgICAvLyBfdW5yZWYoZXhwKVxyXG4gICAgY29udGV4dC5iaW5kaW5nTWV0YWRhdGFbcmF3RXhwXTtcclxuICAgIGNvbnN0IG1heWJlUmVmID0gIXRydWUgICAgLyogQmluZGluZ1R5cGVzLlNFVFVQX0NPTlNUICovO1xyXG4gICAgaWYgKCFleHBTdHJpbmcudHJpbSgpIHx8XHJcbiAgICAgICAgKCFpc01lbWJlckV4cHJlc3Npb24oZXhwU3RyaW5nKSAmJiAhbWF5YmVSZWYpKSB7XHJcbiAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoNDIgLyogRXJyb3JDb2Rlcy5YX1ZfTU9ERUxfTUFMRk9STUVEX0VYUFJFU1NJT04gKi8sIGV4cC5sb2MpKTtcclxuICAgICAgICByZXR1cm4gY3JlYXRlVHJhbnNmb3JtUHJvcHMoKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHByb3BOYW1lID0gYXJnID8gYXJnIDogY3JlYXRlU2ltcGxlRXhwcmVzc2lvbignbW9kZWxWYWx1ZScsIHRydWUpO1xyXG4gICAgY29uc3QgZXZlbnROYW1lID0gYXJnXHJcbiAgICAgICAgPyBpc1N0YXRpY0V4cChhcmcpXHJcbiAgICAgICAgICAgID8gYG9uVXBkYXRlOiR7YXJnLmNvbnRlbnR9YFxyXG4gICAgICAgICAgICA6IGNyZWF0ZUNvbXBvdW5kRXhwcmVzc2lvbihbJ1wib25VcGRhdGU6XCIgKyAnLCBhcmddKVxyXG4gICAgICAgIDogYG9uVXBkYXRlOm1vZGVsVmFsdWVgO1xyXG4gICAgbGV0IGFzc2lnbm1lbnRFeHA7XHJcbiAgICBjb25zdCBldmVudEFyZyA9IGNvbnRleHQuaXNUUyA/IGAoJGV2ZW50OiBhbnkpYCA6IGAkZXZlbnRgO1xyXG4gICAge1xyXG4gICAgICAgIGFzc2lnbm1lbnRFeHAgPSBjcmVhdGVDb21wb3VuZEV4cHJlc3Npb24oW1xyXG4gICAgICAgICAgICBgJHtldmVudEFyZ30gPT4gKChgLFxyXG4gICAgICAgICAgICBleHAsXHJcbiAgICAgICAgICAgIGApID0gJGV2ZW50KWBcclxuICAgICAgICBdKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHByb3BzID0gW1xyXG4gICAgICAgIC8vIG1vZGVsVmFsdWU6IGZvb1xyXG4gICAgICAgIGNyZWF0ZU9iamVjdFByb3BlcnR5KHByb3BOYW1lLCBkaXIuZXhwKSxcclxuICAgICAgICAvLyBcIm9uVXBkYXRlOm1vZGVsVmFsdWVcIjogJGV2ZW50ID0+IChmb28gPSAkZXZlbnQpXHJcbiAgICAgICAgY3JlYXRlT2JqZWN0UHJvcGVydHkoZXZlbnROYW1lLCBhc3NpZ25tZW50RXhwKVxyXG4gICAgXTtcclxuICAgIC8vIG1vZGVsTW9kaWZpZXJzOiB7IGZvbzogdHJ1ZSwgXCJiYXItYmF6XCI6IHRydWUgfVxyXG4gICAgaWYgKGRpci5tb2RpZmllcnMubGVuZ3RoICYmIG5vZGUudGFnVHlwZSA9PT0gMSAvKiBFbGVtZW50VHlwZXMuQ09NUE9ORU5UICovKSB7XHJcbiAgICAgICAgY29uc3QgbW9kaWZpZXJzID0gZGlyLm1vZGlmaWVyc1xyXG4gICAgICAgICAgICAubWFwKG0gPT4gKGlzU2ltcGxlSWRlbnRpZmllcihtKSA/IG0gOiBKU09OLnN0cmluZ2lmeShtKSkgKyBgOiB0cnVlYClcclxuICAgICAgICAgICAgLmpvaW4oYCwgYCk7XHJcbiAgICAgICAgY29uc3QgbW9kaWZpZXJzS2V5ID0gYXJnXHJcbiAgICAgICAgICAgID8gaXNTdGF0aWNFeHAoYXJnKVxyXG4gICAgICAgICAgICAgICAgPyBgJHthcmcuY29udGVudH1Nb2RpZmllcnNgXHJcbiAgICAgICAgICAgICAgICA6IGNyZWF0ZUNvbXBvdW5kRXhwcmVzc2lvbihbYXJnLCAnICsgXCJNb2RpZmllcnNcIiddKVxyXG4gICAgICAgICAgICA6IGBtb2RlbE1vZGlmaWVyc2A7XHJcbiAgICAgICAgcHJvcHMucHVzaChjcmVhdGVPYmplY3RQcm9wZXJ0eShtb2RpZmllcnNLZXksIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYHsgJHttb2RpZmllcnN9IH1gLCBmYWxzZSwgZGlyLmxvYywgMiAvKiBDb25zdGFudFR5cGVzLkNBTl9IT0lTVCAqLykpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBjcmVhdGVUcmFuc2Zvcm1Qcm9wcyhwcm9wcyk7XHJcbn07XHJcbmZ1bmN0aW9uIGNyZWF0ZVRyYW5zZm9ybVByb3BzKHByb3BzID0gW10pIHtcclxuICAgIHJldHVybiB7IHByb3BzIH07XHJcbn1cblxuY29uc3QgdmFsaWREaXZpc2lvbkNoYXJSRSA9IC9bXFx3KS4rXFwtXyRcXF1dLztcclxuY29uc3QgdHJhbnNmb3JtRmlsdGVyID0gKG5vZGUsIGNvbnRleHQpID0+IHtcclxuICAgIGlmICghaXNDb21wYXRFbmFibGVkKFwiQ09NUElMRVJfRklMVEVSXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX0ZJTFRFUlMgKi8sIGNvbnRleHQpKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gNSAvKiBOb2RlVHlwZXMuSU5URVJQT0xBVElPTiAqLykge1xyXG4gICAgICAgIC8vIGZpbHRlciByZXdyaXRlIGlzIGFwcGxpZWQgYmVmb3JlIGV4cHJlc3Npb24gdHJhbnNmb3JtIHNvIG9ubHlcclxuICAgICAgICAvLyBzaW1wbGUgZXhwcmVzc2lvbnMgYXJlIHBvc3NpYmxlIGF0IHRoaXMgc3RhZ2VcclxuICAgICAgICByZXdyaXRlRmlsdGVyKG5vZGUuY29udGVudCwgY29udGV4dCk7XHJcbiAgICB9XHJcbiAgICBpZiAobm9kZS50eXBlID09PSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovKSB7XHJcbiAgICAgICAgbm9kZS5wcm9wcy5mb3JFYWNoKChwcm9wKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChwcm9wLnR5cGUgPT09IDcgLyogTm9kZVR5cGVzLkRJUkVDVElWRSAqLyAmJlxyXG4gICAgICAgICAgICAgICAgcHJvcC5uYW1lICE9PSAnZm9yJyAmJlxyXG4gICAgICAgICAgICAgICAgcHJvcC5leHApIHtcclxuICAgICAgICAgICAgICAgIHJld3JpdGVGaWx0ZXIocHJvcC5leHAsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn07XHJcbmZ1bmN0aW9uIHJld3JpdGVGaWx0ZXIobm9kZSwgY29udGV4dCkge1xyXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gNCAvKiBOb2RlVHlwZXMuU0lNUExFX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICBwYXJzZUZpbHRlcihub2RlLCBjb250ZXh0KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBjaGlsZCA9IG5vZGUuY2hpbGRyZW5baV07XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2hpbGQgIT09ICdvYmplY3QnKVxyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmIChjaGlsZC50eXBlID09PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLykge1xyXG4gICAgICAgICAgICAgICAgcGFyc2VGaWx0ZXIoY2hpbGQsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGNoaWxkLnR5cGUgPT09IDggLyogTm9kZVR5cGVzLkNPTVBPVU5EX0VYUFJFU1NJT04gKi8pIHtcclxuICAgICAgICAgICAgICAgIHJld3JpdGVGaWx0ZXIobm9kZSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoY2hpbGQudHlwZSA9PT0gNSAvKiBOb2RlVHlwZXMuSU5URVJQT0xBVElPTiAqLykge1xyXG4gICAgICAgICAgICAgICAgcmV3cml0ZUZpbHRlcihjaGlsZC5jb250ZW50LCBjb250ZXh0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBwYXJzZUZpbHRlcihub2RlLCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCBleHAgPSBub2RlLmNvbnRlbnQ7XHJcbiAgICBsZXQgaW5TaW5nbGUgPSBmYWxzZTtcclxuICAgIGxldCBpbkRvdWJsZSA9IGZhbHNlO1xyXG4gICAgbGV0IGluVGVtcGxhdGVTdHJpbmcgPSBmYWxzZTtcclxuICAgIGxldCBpblJlZ2V4ID0gZmFsc2U7XHJcbiAgICBsZXQgY3VybHkgPSAwO1xyXG4gICAgbGV0IHNxdWFyZSA9IDA7XHJcbiAgICBsZXQgcGFyZW4gPSAwO1xyXG4gICAgbGV0IGxhc3RGaWx0ZXJJbmRleCA9IDA7XHJcbiAgICBsZXQgYywgcHJldiwgaSwgZXhwcmVzc2lvbiwgZmlsdGVycyA9IFtdO1xyXG4gICAgZm9yIChpID0gMDsgaSA8IGV4cC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHByZXYgPSBjO1xyXG4gICAgICAgIGMgPSBleHAuY2hhckNvZGVBdChpKTtcclxuICAgICAgICBpZiAoaW5TaW5nbGUpIHtcclxuICAgICAgICAgICAgaWYgKGMgPT09IDB4MjcgJiYgcHJldiAhPT0gMHg1YylcclxuICAgICAgICAgICAgICAgIGluU2luZ2xlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGluRG91YmxlKSB7XHJcbiAgICAgICAgICAgIGlmIChjID09PSAweDIyICYmIHByZXYgIT09IDB4NWMpXHJcbiAgICAgICAgICAgICAgICBpbkRvdWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChpblRlbXBsYXRlU3RyaW5nKSB7XHJcbiAgICAgICAgICAgIGlmIChjID09PSAweDYwICYmIHByZXYgIT09IDB4NWMpXHJcbiAgICAgICAgICAgICAgICBpblRlbXBsYXRlU3RyaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGluUmVnZXgpIHtcclxuICAgICAgICAgICAgaWYgKGMgPT09IDB4MmYgJiYgcHJldiAhPT0gMHg1YylcclxuICAgICAgICAgICAgICAgIGluUmVnZXggPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoYyA9PT0gMHg3YyAmJiAvLyBwaXBlXHJcbiAgICAgICAgICAgIGV4cC5jaGFyQ29kZUF0KGkgKyAxKSAhPT0gMHg3YyAmJlxyXG4gICAgICAgICAgICBleHAuY2hhckNvZGVBdChpIC0gMSkgIT09IDB4N2MgJiZcclxuICAgICAgICAgICAgIWN1cmx5ICYmXHJcbiAgICAgICAgICAgICFzcXVhcmUgJiZcclxuICAgICAgICAgICAgIXBhcmVuKSB7XHJcbiAgICAgICAgICAgIGlmIChleHByZXNzaW9uID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIC8vIGZpcnN0IGZpbHRlciwgZW5kIG9mIGV4cHJlc3Npb25cclxuICAgICAgICAgICAgICAgIGxhc3RGaWx0ZXJJbmRleCA9IGkgKyAxO1xyXG4gICAgICAgICAgICAgICAgZXhwcmVzc2lvbiA9IGV4cC5zbGljZSgwLCBpKS50cmltKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBwdXNoRmlsdGVyKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHN3aXRjaCAoYykge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAweDIyOlxyXG4gICAgICAgICAgICAgICAgICAgIGluRG91YmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gXCJcclxuICAgICAgICAgICAgICAgIGNhc2UgMHgyNzpcclxuICAgICAgICAgICAgICAgICAgICBpblNpbmdsZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vICdcclxuICAgICAgICAgICAgICAgIGNhc2UgMHg2MDpcclxuICAgICAgICAgICAgICAgICAgICBpblRlbXBsYXRlU3RyaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gYFxyXG4gICAgICAgICAgICAgICAgY2FzZSAweDI4OlxyXG4gICAgICAgICAgICAgICAgICAgIHBhcmVuKys7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIChcclxuICAgICAgICAgICAgICAgIGNhc2UgMHgyOTpcclxuICAgICAgICAgICAgICAgICAgICBwYXJlbi0tO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvLyApXHJcbiAgICAgICAgICAgICAgICBjYXNlIDB4NWI6XHJcbiAgICAgICAgICAgICAgICAgICAgc3F1YXJlKys7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIFtcclxuICAgICAgICAgICAgICAgIGNhc2UgMHg1ZDpcclxuICAgICAgICAgICAgICAgICAgICBzcXVhcmUtLTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gXVxyXG4gICAgICAgICAgICAgICAgY2FzZSAweDdiOlxyXG4gICAgICAgICAgICAgICAgICAgIGN1cmx5Kys7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgMHg3ZDpcclxuICAgICAgICAgICAgICAgICAgICBjdXJseS0tO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvLyB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGMgPT09IDB4MmYpIHtcclxuICAgICAgICAgICAgICAgIC8vIC9cclxuICAgICAgICAgICAgICAgIGxldCBqID0gaSAtIDE7XHJcbiAgICAgICAgICAgICAgICBsZXQgcDtcclxuICAgICAgICAgICAgICAgIC8vIGZpbmQgZmlyc3Qgbm9uLXdoaXRlc3BhY2UgcHJldiBjaGFyXHJcbiAgICAgICAgICAgICAgICBmb3IgKDsgaiA+PSAwOyBqLS0pIHtcclxuICAgICAgICAgICAgICAgICAgICBwID0gZXhwLmNoYXJBdChqKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocCAhPT0gJyAnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICghcCB8fCAhdmFsaWREaXZpc2lvbkNoYXJSRS50ZXN0KHApKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5SZWdleCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoZXhwcmVzc2lvbiA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgZXhwcmVzc2lvbiA9IGV4cC5zbGljZSgwLCBpKS50cmltKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChsYXN0RmlsdGVySW5kZXggIT09IDApIHtcclxuICAgICAgICBwdXNoRmlsdGVyKCk7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBwdXNoRmlsdGVyKCkge1xyXG4gICAgICAgIGZpbHRlcnMucHVzaChleHAuc2xpY2UobGFzdEZpbHRlckluZGV4LCBpKS50cmltKCkpO1xyXG4gICAgICAgIGxhc3RGaWx0ZXJJbmRleCA9IGkgKyAxO1xyXG4gICAgfVxyXG4gICAgaWYgKGZpbHRlcnMubGVuZ3RoKSB7XHJcbiAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgIHdhcm5EZXByZWNhdGlvbihcIkNPTVBJTEVSX0ZJTFRFUlwiIC8qIENvbXBpbGVyRGVwcmVjYXRpb25UeXBlcy5DT01QSUxFUl9GSUxURVJTICovLCBjb250ZXh0LCBub2RlLmxvYyk7XHJcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGZpbHRlcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgZXhwcmVzc2lvbiA9IHdyYXBGaWx0ZXIoZXhwcmVzc2lvbiwgZmlsdGVyc1tpXSwgY29udGV4dCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG5vZGUuY29udGVudCA9IGV4cHJlc3Npb247XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gd3JhcEZpbHRlcihleHAsIGZpbHRlciwgY29udGV4dCkge1xyXG4gICAgY29udGV4dC5oZWxwZXIoUkVTT0xWRV9GSUxURVIpO1xyXG4gICAgY29uc3QgaSA9IGZpbHRlci5pbmRleE9mKCcoJyk7XHJcbiAgICBpZiAoaSA8IDApIHtcclxuICAgICAgICBjb250ZXh0LmZpbHRlcnMuYWRkKGZpbHRlcik7XHJcbiAgICAgICAgcmV0dXJuIGAke3RvVmFsaWRBc3NldElkKGZpbHRlciwgJ2ZpbHRlcicpfSgke2V4cH0pYDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IG5hbWUgPSBmaWx0ZXIuc2xpY2UoMCwgaSk7XHJcbiAgICAgICAgY29uc3QgYXJncyA9IGZpbHRlci5zbGljZShpICsgMSk7XHJcbiAgICAgICAgY29udGV4dC5maWx0ZXJzLmFkZChuYW1lKTtcclxuICAgICAgICByZXR1cm4gYCR7dG9WYWxpZEFzc2V0SWQobmFtZSwgJ2ZpbHRlcicpfSgke2V4cH0ke2FyZ3MgIT09ICcpJyA/ICcsJyArIGFyZ3MgOiBhcmdzfWA7XHJcbiAgICB9XHJcbn1cblxuY29uc3Qgc2VlbiQxID0gbmV3IFdlYWtTZXQoKTtcclxuY29uc3QgdHJhbnNmb3JtTWVtbyA9IChub2RlLCBjb250ZXh0KSA9PiB7XHJcbiAgICBpZiAobm9kZS50eXBlID09PSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovKSB7XHJcbiAgICAgICAgY29uc3QgZGlyID0gZmluZERpcihub2RlLCAnbWVtbycpO1xyXG4gICAgICAgIGlmICghZGlyIHx8IHNlZW4kMS5oYXMobm9kZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzZWVuJDEuYWRkKG5vZGUpO1xyXG4gICAgICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvZGVnZW5Ob2RlID0gbm9kZS5jb2RlZ2VuTm9kZSB8fFxyXG4gICAgICAgICAgICAgICAgY29udGV4dC5jdXJyZW50Tm9kZS5jb2RlZ2VuTm9kZTtcclxuICAgICAgICAgICAgaWYgKGNvZGVnZW5Ob2RlICYmIGNvZGVnZW5Ob2RlLnR5cGUgPT09IDEzIC8qIE5vZGVUeXBlcy5WTk9ERV9DQUxMICovKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBub24tY29tcG9uZW50IHN1YiB0cmVlIHNob3VsZCBiZSB0dXJuZWQgaW50byBhIGJsb2NrXHJcbiAgICAgICAgICAgICAgICBpZiAobm9kZS50YWdUeXBlICE9PSAxIC8qIEVsZW1lbnRUeXBlcy5DT01QT05FTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBtYWtlQmxvY2soY29kZWdlbk5vZGUsIGNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbm9kZS5jb2RlZ2VuTm9kZSA9IGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKFdJVEhfTUVNTyksIFtcclxuICAgICAgICAgICAgICAgICAgICBkaXIuZXhwLFxyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbih1bmRlZmluZWQsIGNvZGVnZW5Ob2RlKSxcclxuICAgICAgICAgICAgICAgICAgICBgX2NhY2hlYCxcclxuICAgICAgICAgICAgICAgICAgICBTdHJpbmcoY29udGV4dC5jYWNoZWQrKylcclxuICAgICAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxufTtcblxuZnVuY3Rpb24gZ2V0QmFzZVRyYW5zZm9ybVByZXNldChwcmVmaXhJZGVudGlmaWVycykge1xyXG4gICAgcmV0dXJuIFtcclxuICAgICAgICBbXHJcbiAgICAgICAgICAgIHRyYW5zZm9ybU9uY2UsXHJcbiAgICAgICAgICAgIHRyYW5zZm9ybUlmLFxyXG4gICAgICAgICAgICB0cmFuc2Zvcm1NZW1vLFxyXG4gICAgICAgICAgICB0cmFuc2Zvcm1Gb3IsXHJcbiAgICAgICAgICAgIC4uLihbdHJhbnNmb3JtRmlsdGVyXSApLFxyXG4gICAgICAgICAgICAuLi4oKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpXHJcbiAgICAgICAgICAgICAgICAgICAgPyBbdHJhbnNmb3JtRXhwcmVzc2lvbl1cclxuICAgICAgICAgICAgICAgICAgICA6IFtdKSxcclxuICAgICAgICAgICAgdHJhbnNmb3JtU2xvdE91dGxldCxcclxuICAgICAgICAgICAgdHJhbnNmb3JtRWxlbWVudCxcclxuICAgICAgICAgICAgdHJhY2tTbG90U2NvcGVzLFxyXG4gICAgICAgICAgICB0cmFuc2Zvcm1UZXh0XHJcbiAgICAgICAgXSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIG9uOiB0cmFuc2Zvcm1PbixcclxuICAgICAgICAgICAgYmluZDogdHJhbnNmb3JtQmluZCxcclxuICAgICAgICAgICAgbW9kZWw6IHRyYW5zZm9ybU1vZGVsXHJcbiAgICAgICAgfVxyXG4gICAgXTtcclxufVxyXG4vLyB3ZSBuYW1lIGl0IGBiYXNlQ29tcGlsZWAgc28gdGhhdCBoaWdoZXIgb3JkZXIgY29tcGlsZXJzIGxpa2VcclxuLy8gQHZ1ZS9jb21waWxlci1kb20gY2FuIGV4cG9ydCBgY29tcGlsZWAgd2hpbGUgcmUtZXhwb3J0aW5nIGV2ZXJ5dGhpbmcgZWxzZS5cclxuZnVuY3Rpb24gYmFzZUNvbXBpbGUodGVtcGxhdGUsIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgY29uc3Qgb25FcnJvciA9IG9wdGlvbnMub25FcnJvciB8fCBkZWZhdWx0T25FcnJvcjtcclxuICAgIGNvbnN0IGlzTW9kdWxlTW9kZSA9IG9wdGlvbnMubW9kZSA9PT0gJ21vZHVsZSc7XHJcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cclxuICAgIHtcclxuICAgICAgICBpZiAob3B0aW9ucy5wcmVmaXhJZGVudGlmaWVycyA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICBvbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoNDYgLyogRXJyb3JDb2Rlcy5YX1BSRUZJWF9JRF9OT1RfU1VQUE9SVEVEICovKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGlzTW9kdWxlTW9kZSkge1xyXG4gICAgICAgICAgICBvbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoNDcgLyogRXJyb3JDb2Rlcy5YX01PRFVMRV9NT0RFX05PVF9TVVBQT1JURUQgKi8pKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBwcmVmaXhJZGVudGlmaWVycyA9ICF0cnVlIDtcclxuICAgIGlmIChvcHRpb25zLmNhY2hlSGFuZGxlcnMpIHtcclxuICAgICAgICBvbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoNDggLyogRXJyb3JDb2Rlcy5YX0NBQ0hFX0hBTkRMRVJfTk9UX1NVUFBPUlRFRCAqLykpO1xyXG4gICAgfVxyXG4gICAgaWYgKG9wdGlvbnMuc2NvcGVJZCAmJiAhaXNNb2R1bGVNb2RlKSB7XHJcbiAgICAgICAgb25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDQ5IC8qIEVycm9yQ29kZXMuWF9TQ09QRV9JRF9OT1RfU1VQUE9SVEVEICovKSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBhc3QgPSBpc1N0cmluZyh0ZW1wbGF0ZSkgPyBiYXNlUGFyc2UodGVtcGxhdGUsIG9wdGlvbnMpIDogdGVtcGxhdGU7XHJcbiAgICBjb25zdCBbbm9kZVRyYW5zZm9ybXMsIGRpcmVjdGl2ZVRyYW5zZm9ybXNdID0gZ2V0QmFzZVRyYW5zZm9ybVByZXNldCgpO1xyXG4gICAgdHJhbnNmb3JtKGFzdCwgZXh0ZW5kKHt9LCBvcHRpb25zLCB7XHJcbiAgICAgICAgcHJlZml4SWRlbnRpZmllcnMsXHJcbiAgICAgICAgbm9kZVRyYW5zZm9ybXM6IFtcclxuICAgICAgICAgICAgLi4ubm9kZVRyYW5zZm9ybXMsXHJcbiAgICAgICAgICAgIC4uLihvcHRpb25zLm5vZGVUcmFuc2Zvcm1zIHx8IFtdKSAvLyB1c2VyIHRyYW5zZm9ybXNcclxuICAgICAgICBdLFxyXG4gICAgICAgIGRpcmVjdGl2ZVRyYW5zZm9ybXM6IGV4dGVuZCh7fSwgZGlyZWN0aXZlVHJhbnNmb3Jtcywgb3B0aW9ucy5kaXJlY3RpdmVUcmFuc2Zvcm1zIHx8IHt9IC8vIHVzZXIgdHJhbnNmb3Jtc1xyXG4gICAgICAgIClcclxuICAgIH0pKTtcclxuICAgIHJldHVybiBnZW5lcmF0ZShhc3QsIGV4dGVuZCh7fSwgb3B0aW9ucywge1xyXG4gICAgICAgIHByZWZpeElkZW50aWZpZXJzXHJcbiAgICB9KSk7XHJcbn1cblxuY29uc3Qgbm9vcERpcmVjdGl2ZVRyYW5zZm9ybSA9ICgpID0+ICh7IHByb3BzOiBbXSB9KTtcblxuZXhwb3J0IHsgQkFTRV9UUkFOU0lUSU9OLCBDQU1FTElaRSwgQ0FQSVRBTElaRSwgQ1JFQVRFX0JMT0NLLCBDUkVBVEVfQ09NTUVOVCwgQ1JFQVRFX0VMRU1FTlRfQkxPQ0ssIENSRUFURV9FTEVNRU5UX1ZOT0RFLCBDUkVBVEVfU0xPVFMsIENSRUFURV9TVEFUSUMsIENSRUFURV9URVhULCBDUkVBVEVfVk5PREUsIEZSQUdNRU5ULCBHVUFSRF9SRUFDVElWRV9QUk9QUywgSVNfTUVNT19TQU1FLCBJU19SRUYsIEtFRVBfQUxJVkUsIE1FUkdFX1BST1BTLCBOT1JNQUxJWkVfQ0xBU1MsIE5PUk1BTElaRV9QUk9QUywgTk9STUFMSVpFX1NUWUxFLCBPUEVOX0JMT0NLLCBQT1BfU0NPUEVfSUQsIFBVU0hfU0NPUEVfSUQsIFJFTkRFUl9MSVNULCBSRU5ERVJfU0xPVCwgUkVTT0xWRV9DT01QT05FTlQsIFJFU09MVkVfRElSRUNUSVZFLCBSRVNPTFZFX0RZTkFNSUNfQ09NUE9ORU5ULCBSRVNPTFZFX0ZJTFRFUiwgU0VUX0JMT0NLX1RSQUNLSU5HLCBTVVNQRU5TRSwgVEVMRVBPUlQsIFRPX0RJU1BMQVlfU1RSSU5HLCBUT19IQU5ETEVSUywgVE9fSEFORExFUl9LRVksIFVOUkVGLCBXSVRIX0NUWCwgV0lUSF9ESVJFQ1RJVkVTLCBXSVRIX01FTU8sIGFkdmFuY2VQb3NpdGlvbldpdGhDbG9uZSwgYWR2YW5jZVBvc2l0aW9uV2l0aE11dGF0aW9uLCBhc3NlcnQsIGJhc2VDb21waWxlLCBiYXNlUGFyc2UsIGJ1aWxkRGlyZWN0aXZlQXJncywgYnVpbGRQcm9wcywgYnVpbGRTbG90cywgY2hlY2tDb21wYXRFbmFibGVkLCBjcmVhdGVBcnJheUV4cHJlc3Npb24sIGNyZWF0ZUFzc2lnbm1lbnRFeHByZXNzaW9uLCBjcmVhdGVCbG9ja1N0YXRlbWVudCwgY3JlYXRlQ2FjaGVFeHByZXNzaW9uLCBjcmVhdGVDYWxsRXhwcmVzc2lvbiwgY3JlYXRlQ29tcGlsZXJFcnJvciwgY3JlYXRlQ29tcG91bmRFeHByZXNzaW9uLCBjcmVhdGVDb25kaXRpb25hbEV4cHJlc3Npb24sIGNyZWF0ZUZvckxvb3BQYXJhbXMsIGNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbiwgY3JlYXRlSWZTdGF0ZW1lbnQsIGNyZWF0ZUludGVycG9sYXRpb24sIGNyZWF0ZU9iamVjdEV4cHJlc3Npb24sIGNyZWF0ZU9iamVjdFByb3BlcnR5LCBjcmVhdGVSZXR1cm5TdGF0ZW1lbnQsIGNyZWF0ZVJvb3QsIGNyZWF0ZVNlcXVlbmNlRXhwcmVzc2lvbiwgY3JlYXRlU2ltcGxlRXhwcmVzc2lvbiwgY3JlYXRlU3RydWN0dXJhbERpcmVjdGl2ZVRyYW5zZm9ybSwgY3JlYXRlVGVtcGxhdGVMaXRlcmFsLCBjcmVhdGVUcmFuc2Zvcm1Db250ZXh0LCBjcmVhdGVWTm9kZUNhbGwsIGV4dHJhY3RJZGVudGlmaWVycywgZmluZERpciwgZmluZFByb3AsIGdlbmVyYXRlLCBnZXRCYXNlVHJhbnNmb3JtUHJlc2V0LCBnZXRDb25zdGFudFR5cGUsIGdldElubmVyUmFuZ2UsIGdldE1lbW9lZFZOb2RlQ2FsbCwgZ2V0Vk5vZGVCbG9ja0hlbHBlciwgZ2V0Vk5vZGVIZWxwZXIsIGhhc0R5bmFtaWNLZXlWQmluZCwgaGFzU2NvcGVSZWYsIGhlbHBlck5hbWVNYXAsIGluamVjdFByb3AsIGlzQnVpbHRJblR5cGUsIGlzQ29yZUNvbXBvbmVudCwgaXNGdW5jdGlvblR5cGUsIGlzSW5EZXN0cnVjdHVyZUFzc2lnbm1lbnQsIGlzTWVtYmVyRXhwcmVzc2lvbiwgaXNNZW1iZXJFeHByZXNzaW9uQnJvd3NlciwgaXNNZW1iZXJFeHByZXNzaW9uTm9kZSwgaXNSZWZlcmVuY2VkSWRlbnRpZmllciwgaXNTaW1wbGVJZGVudGlmaWVyLCBpc1Nsb3RPdXRsZXQsIGlzU3RhdGljQXJnT2YsIGlzU3RhdGljRXhwLCBpc1N0YXRpY1Byb3BlcnR5LCBpc1N0YXRpY1Byb3BlcnR5S2V5LCBpc1RlbXBsYXRlTm9kZSwgaXNUZXh0LCBpc1ZTbG90LCBsb2NTdHViLCBtYWtlQmxvY2ssIG5vb3BEaXJlY3RpdmVUcmFuc2Zvcm0sIHByb2Nlc3NFeHByZXNzaW9uLCBwcm9jZXNzRm9yLCBwcm9jZXNzSWYsIHByb2Nlc3NTbG90T3V0bGV0LCByZWdpc3RlclJ1bnRpbWVIZWxwZXJzLCByZXNvbHZlQ29tcG9uZW50VHlwZSwgdG9WYWxpZEFzc2V0SWQsIHRyYWNrU2xvdFNjb3BlcywgdHJhY2tWRm9yU2xvdFNjb3BlcywgdHJhbnNmb3JtLCB0cmFuc2Zvcm1CaW5kLCB0cmFuc2Zvcm1FbGVtZW50LCB0cmFuc2Zvcm1FeHByZXNzaW9uLCB0cmFuc2Zvcm1Nb2RlbCwgdHJhbnNmb3JtT24sIHRyYXZlcnNlTm9kZSwgd2Fsa0Jsb2NrRGVjbGFyYXRpb25zLCB3YWxrRnVuY3Rpb25QYXJhbXMsIHdhbGtJZGVudGlmaWVycywgd2FybkRlcHJlY2F0aW9uIH07XG4iLCJpbXBvcnQgeyByZWdpc3RlclJ1bnRpbWVIZWxwZXJzLCBpc0J1aWx0SW5UeXBlLCBjcmVhdGVTaW1wbGVFeHByZXNzaW9uLCBjcmVhdGVDb21waWxlckVycm9yLCBjcmVhdGVPYmplY3RQcm9wZXJ0eSwgZ2V0Q29uc3RhbnRUeXBlLCBjcmVhdGVDYWxsRXhwcmVzc2lvbiwgVE9fRElTUExBWV9TVFJJTkcsIHRyYW5zZm9ybU1vZGVsIGFzIHRyYW5zZm9ybU1vZGVsJDEsIGZpbmRQcm9wLCBoYXNEeW5hbWljS2V5VkJpbmQsIHRyYW5zZm9ybU9uIGFzIHRyYW5zZm9ybU9uJDEsIGNyZWF0ZUNvbXBvdW5kRXhwcmVzc2lvbiwgaXNTdGF0aWNFeHAsIGNoZWNrQ29tcGF0RW5hYmxlZCwgbm9vcERpcmVjdGl2ZVRyYW5zZm9ybSwgYmFzZUNvbXBpbGUsIGJhc2VQYXJzZSB9IGZyb20gJ0B2dWUvY29tcGlsZXItY29yZSc7XG5leHBvcnQgKiBmcm9tICdAdnVlL2NvbXBpbGVyLWNvcmUnO1xuaW1wb3J0IHsgaXNWb2lkVGFnLCBpc0hUTUxUYWcsIGlzU1ZHVGFnLCBtYWtlTWFwLCBwYXJzZVN0cmluZ1N0eWxlLCBjYXBpdGFsaXplLCBleHRlbmQgfSBmcm9tICdAdnVlL3NoYXJlZCc7XG5cbmNvbnN0IFZfTU9ERUxfUkFESU8gPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHZNb2RlbFJhZGlvYCA6IGBgKTtcclxuY29uc3QgVl9NT0RFTF9DSEVDS0JPWCA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgdk1vZGVsQ2hlY2tib3hgIDogYGApO1xyXG5jb25zdCBWX01PREVMX1RFWFQgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYHZNb2RlbFRleHRgIDogYGApO1xyXG5jb25zdCBWX01PREVMX1NFTEVDVCA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgdk1vZGVsU2VsZWN0YCA6IGBgKTtcclxuY29uc3QgVl9NT0RFTF9EWU5BTUlDID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGB2TW9kZWxEeW5hbWljYCA6IGBgKTtcclxuY29uc3QgVl9PTl9XSVRIX01PRElGSUVSUyA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgdk9uTW9kaWZpZXJzR3VhcmRgIDogYGApO1xyXG5jb25zdCBWX09OX1dJVEhfS0VZUyA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgdk9uS2V5c0d1YXJkYCA6IGBgKTtcclxuY29uc3QgVl9TSE9XID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGB2U2hvd2AgOiBgYCk7XHJcbmNvbnN0IFRSQU5TSVRJT04gPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gYFRyYW5zaXRpb25gIDogYGApO1xyXG5jb25zdCBUUkFOU0lUSU9OX0dST1VQID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IGBUcmFuc2l0aW9uR3JvdXBgIDogYGApO1xyXG5yZWdpc3RlclJ1bnRpbWVIZWxwZXJzKHtcclxuICAgIFtWX01PREVMX1JBRElPXTogYHZNb2RlbFJhZGlvYCxcclxuICAgIFtWX01PREVMX0NIRUNLQk9YXTogYHZNb2RlbENoZWNrYm94YCxcclxuICAgIFtWX01PREVMX1RFWFRdOiBgdk1vZGVsVGV4dGAsXHJcbiAgICBbVl9NT0RFTF9TRUxFQ1RdOiBgdk1vZGVsU2VsZWN0YCxcclxuICAgIFtWX01PREVMX0RZTkFNSUNdOiBgdk1vZGVsRHluYW1pY2AsXHJcbiAgICBbVl9PTl9XSVRIX01PRElGSUVSU106IGB3aXRoTW9kaWZpZXJzYCxcclxuICAgIFtWX09OX1dJVEhfS0VZU106IGB3aXRoS2V5c2AsXHJcbiAgICBbVl9TSE9XXTogYHZTaG93YCxcclxuICAgIFtUUkFOU0lUSU9OXTogYFRyYW5zaXRpb25gLFxyXG4gICAgW1RSQU5TSVRJT05fR1JPVVBdOiBgVHJhbnNpdGlvbkdyb3VwYFxyXG59KTtcblxuLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1nbG9iYWxzICovXHJcbmxldCBkZWNvZGVyO1xyXG5mdW5jdGlvbiBkZWNvZGVIdG1sQnJvd3NlcihyYXcsIGFzQXR0ciA9IGZhbHNlKSB7XHJcbiAgICBpZiAoIWRlY29kZXIpIHtcclxuICAgICAgICBkZWNvZGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICB9XHJcbiAgICBpZiAoYXNBdHRyKSB7XHJcbiAgICAgICAgZGVjb2Rlci5pbm5lckhUTUwgPSBgPGRpdiBmb289XCIke3Jhdy5yZXBsYWNlKC9cIi9nLCAnJnF1b3Q7Jyl9XCI+YDtcclxuICAgICAgICByZXR1cm4gZGVjb2Rlci5jaGlsZHJlblswXS5nZXRBdHRyaWJ1dGUoJ2ZvbycpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgZGVjb2Rlci5pbm5lckhUTUwgPSByYXc7XHJcbiAgICAgICAgcmV0dXJuIGRlY29kZXIudGV4dENvbnRlbnQ7XHJcbiAgICB9XHJcbn1cblxuY29uc3QgaXNSYXdUZXh0Q29udGFpbmVyID0gLyojX19QVVJFX18qLyBtYWtlTWFwKCdzdHlsZSxpZnJhbWUsc2NyaXB0LG5vc2NyaXB0JywgdHJ1ZSk7XHJcbmNvbnN0IHBhcnNlck9wdGlvbnMgPSB7XHJcbiAgICBpc1ZvaWRUYWcsXHJcbiAgICBpc05hdGl2ZVRhZzogdGFnID0+IGlzSFRNTFRhZyh0YWcpIHx8IGlzU1ZHVGFnKHRhZyksXHJcbiAgICBpc1ByZVRhZzogdGFnID0+IHRhZyA9PT0gJ3ByZScsXHJcbiAgICBkZWNvZGVFbnRpdGllczogZGVjb2RlSHRtbEJyb3dzZXIgLFxyXG4gICAgaXNCdWlsdEluQ29tcG9uZW50OiAodGFnKSA9PiB7XHJcbiAgICAgICAgaWYgKGlzQnVpbHRJblR5cGUodGFnLCBgVHJhbnNpdGlvbmApKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBUUkFOU0lUSU9OO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChpc0J1aWx0SW5UeXBlKHRhZywgYFRyYW5zaXRpb25Hcm91cGApKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBUUkFOU0lUSU9OX0dST1VQO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9wYXJzaW5nLmh0bWwjdHJlZS1jb25zdHJ1Y3Rpb24tZGlzcGF0Y2hlclxyXG4gICAgZ2V0TmFtZXNwYWNlKHRhZywgcGFyZW50KSB7XHJcbiAgICAgICAgbGV0IG5zID0gcGFyZW50ID8gcGFyZW50Lm5zIDogMCAvKiBET01OYW1lc3BhY2VzLkhUTUwgKi87XHJcbiAgICAgICAgaWYgKHBhcmVudCAmJiBucyA9PT0gMiAvKiBET01OYW1lc3BhY2VzLk1BVEhfTUwgKi8pIHtcclxuICAgICAgICAgICAgaWYgKHBhcmVudC50YWcgPT09ICdhbm5vdGF0aW9uLXhtbCcpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0YWcgPT09ICdzdmcnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDEgLyogRE9NTmFtZXNwYWNlcy5TVkcgKi87XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAocGFyZW50LnByb3BzLnNvbWUoYSA9PiBhLnR5cGUgPT09IDYgLyogTm9kZVR5cGVzLkFUVFJJQlVURSAqLyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGEubmFtZSA9PT0gJ2VuY29kaW5nJyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGEudmFsdWUgIT0gbnVsbCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIChhLnZhbHVlLmNvbnRlbnQgPT09ICd0ZXh0L2h0bWwnIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGEudmFsdWUuY29udGVudCA9PT0gJ2FwcGxpY2F0aW9uL3hodG1sK3htbCcpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG5zID0gMCAvKiBET01OYW1lc3BhY2VzLkhUTUwgKi87XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoL15tKD86W2lvbnNdfHRleHQpJC8udGVzdChwYXJlbnQudGFnKSAmJlxyXG4gICAgICAgICAgICAgICAgdGFnICE9PSAnbWdseXBoJyAmJlxyXG4gICAgICAgICAgICAgICAgdGFnICE9PSAnbWFsaWdubWFyaycpIHtcclxuICAgICAgICAgICAgICAgIG5zID0gMCAvKiBET01OYW1lc3BhY2VzLkhUTUwgKi87XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAocGFyZW50ICYmIG5zID09PSAxIC8qIERPTU5hbWVzcGFjZXMuU1ZHICovKSB7XHJcbiAgICAgICAgICAgIGlmIChwYXJlbnQudGFnID09PSAnZm9yZWlnbk9iamVjdCcgfHxcclxuICAgICAgICAgICAgICAgIHBhcmVudC50YWcgPT09ICdkZXNjJyB8fFxyXG4gICAgICAgICAgICAgICAgcGFyZW50LnRhZyA9PT0gJ3RpdGxlJykge1xyXG4gICAgICAgICAgICAgICAgbnMgPSAwIC8qIERPTU5hbWVzcGFjZXMuSFRNTCAqLztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobnMgPT09IDAgLyogRE9NTmFtZXNwYWNlcy5IVE1MICovKSB7XHJcbiAgICAgICAgICAgIGlmICh0YWcgPT09ICdzdmcnKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gMSAvKiBET01OYW1lc3BhY2VzLlNWRyAqLztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGFnID09PSAnbWF0aCcpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAyIC8qIERPTU5hbWVzcGFjZXMuTUFUSF9NTCAqLztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnM7XHJcbiAgICB9LFxyXG4gICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvcGFyc2luZy5odG1sI3BhcnNpbmctaHRtbC1mcmFnbWVudHNcclxuICAgIGdldFRleHRNb2RlKHsgdGFnLCBucyB9KSB7XHJcbiAgICAgICAgaWYgKG5zID09PSAwIC8qIERPTU5hbWVzcGFjZXMuSFRNTCAqLykge1xyXG4gICAgICAgICAgICBpZiAodGFnID09PSAndGV4dGFyZWEnIHx8IHRhZyA9PT0gJ3RpdGxlJykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDEgLyogVGV4dE1vZGVzLlJDREFUQSAqLztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoaXNSYXdUZXh0Q29udGFpbmVyKHRhZykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAyIC8qIFRleHRNb2Rlcy5SQVdURVhUICovO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiAwIC8qIFRleHRNb2Rlcy5EQVRBICovO1xyXG4gICAgfVxyXG59O1xuXG4vLyBQYXJzZSBpbmxpbmUgQ1NTIHN0cmluZ3MgZm9yIHN0YXRpYyBzdHlsZSBhdHRyaWJ1dGVzIGludG8gYW4gb2JqZWN0LlxyXG4vLyBUaGlzIGlzIGEgTm9kZVRyYW5zZm9ybSBzaW5jZSBpdCB3b3JrcyBvbiB0aGUgc3RhdGljIGBzdHlsZWAgYXR0cmlidXRlIGFuZFxyXG4vLyBjb252ZXJ0cyBpdCBpbnRvIGEgZHluYW1pYyBlcXVpdmFsZW50OlxyXG4vLyBzdHlsZT1cImNvbG9yOiByZWRcIiAtPiA6c3R5bGU9J3sgXCJjb2xvclwiOiBcInJlZFwiIH0nXHJcbi8vIEl0IGlzIHRoZW4gcHJvY2Vzc2VkIGJ5IGB0cmFuc2Zvcm1FbGVtZW50YCBhbmQgaW5jbHVkZWQgaW4gdGhlIGdlbmVyYXRlZFxyXG4vLyBwcm9wcy5cclxuY29uc3QgdHJhbnNmb3JtU3R5bGUgPSBub2RlID0+IHtcclxuICAgIGlmIChub2RlLnR5cGUgPT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8pIHtcclxuICAgICAgICBub2RlLnByb3BzLmZvckVhY2goKHAsIGkpID0+IHtcclxuICAgICAgICAgICAgaWYgKHAudHlwZSA9PT0gNiAvKiBOb2RlVHlwZXMuQVRUUklCVVRFICovICYmIHAubmFtZSA9PT0gJ3N0eWxlJyAmJiBwLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAvLyByZXBsYWNlIHAgd2l0aCBhbiBleHByZXNzaW9uIG5vZGVcclxuICAgICAgICAgICAgICAgIG5vZGUucHJvcHNbaV0gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogNyAvKiBOb2RlVHlwZXMuRElSRUNUSVZFICovLFxyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGBiaW5kYCxcclxuICAgICAgICAgICAgICAgICAgICBhcmc6IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYHN0eWxlYCwgdHJ1ZSwgcC5sb2MpLFxyXG4gICAgICAgICAgICAgICAgICAgIGV4cDogcGFyc2VJbmxpbmVDU1MocC52YWx1ZS5jb250ZW50LCBwLmxvYyksXHJcbiAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzOiBbXSxcclxuICAgICAgICAgICAgICAgICAgICBsb2M6IHAubG9jXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn07XHJcbmNvbnN0IHBhcnNlSW5saW5lQ1NTID0gKGNzc1RleHQsIGxvYykgPT4ge1xyXG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IHBhcnNlU3RyaW5nU3R5bGUoY3NzVGV4dCk7XHJcbiAgICByZXR1cm4gY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihKU09OLnN0cmluZ2lmeShub3JtYWxpemVkKSwgZmFsc2UsIGxvYywgMyAvKiBDb25zdGFudFR5cGVzLkNBTl9TVFJJTkdJRlkgKi8pO1xyXG59O1xuXG5mdW5jdGlvbiBjcmVhdGVET01Db21waWxlckVycm9yKGNvZGUsIGxvYykge1xyXG4gICAgcmV0dXJuIGNyZWF0ZUNvbXBpbGVyRXJyb3IoY29kZSwgbG9jLCAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgIXRydWUgPyBET01FcnJvck1lc3NhZ2VzIDogdW5kZWZpbmVkKTtcclxufVxyXG5jb25zdCBET01FcnJvck1lc3NhZ2VzID0ge1xyXG4gICAgWzUwIC8qIERPTUVycm9yQ29kZXMuWF9WX0hUTUxfTk9fRVhQUkVTU0lPTiAqL106IGB2LWh0bWwgaXMgbWlzc2luZyBleHByZXNzaW9uLmAsXHJcbiAgICBbNTEgLyogRE9NRXJyb3JDb2Rlcy5YX1ZfSFRNTF9XSVRIX0NISUxEUkVOICovXTogYHYtaHRtbCB3aWxsIG92ZXJyaWRlIGVsZW1lbnQgY2hpbGRyZW4uYCxcclxuICAgIFs1MiAvKiBET01FcnJvckNvZGVzLlhfVl9URVhUX05PX0VYUFJFU1NJT04gKi9dOiBgdi10ZXh0IGlzIG1pc3NpbmcgZXhwcmVzc2lvbi5gLFxyXG4gICAgWzUzIC8qIERPTUVycm9yQ29kZXMuWF9WX1RFWFRfV0lUSF9DSElMRFJFTiAqL106IGB2LXRleHQgd2lsbCBvdmVycmlkZSBlbGVtZW50IGNoaWxkcmVuLmAsXHJcbiAgICBbNTQgLyogRE9NRXJyb3JDb2Rlcy5YX1ZfTU9ERUxfT05fSU5WQUxJRF9FTEVNRU5UICovXTogYHYtbW9kZWwgY2FuIG9ubHkgYmUgdXNlZCBvbiA8aW5wdXQ+LCA8dGV4dGFyZWE+IGFuZCA8c2VsZWN0PiBlbGVtZW50cy5gLFxyXG4gICAgWzU1IC8qIERPTUVycm9yQ29kZXMuWF9WX01PREVMX0FSR19PTl9FTEVNRU5UICovXTogYHYtbW9kZWwgYXJndW1lbnQgaXMgbm90IHN1cHBvcnRlZCBvbiBwbGFpbiBlbGVtZW50cy5gLFxyXG4gICAgWzU2IC8qIERPTUVycm9yQ29kZXMuWF9WX01PREVMX09OX0ZJTEVfSU5QVVRfRUxFTUVOVCAqL106IGB2LW1vZGVsIGNhbm5vdCBiZSB1c2VkIG9uIGZpbGUgaW5wdXRzIHNpbmNlIHRoZXkgYXJlIHJlYWQtb25seS4gVXNlIGEgdi1vbjpjaGFuZ2UgbGlzdGVuZXIgaW5zdGVhZC5gLFxyXG4gICAgWzU3IC8qIERPTUVycm9yQ29kZXMuWF9WX01PREVMX1VOTkVDRVNTQVJZX1ZBTFVFICovXTogYFVubmVjZXNzYXJ5IHZhbHVlIGJpbmRpbmcgdXNlZCBhbG9uZ3NpZGUgdi1tb2RlbC4gSXQgd2lsbCBpbnRlcmZlcmUgd2l0aCB2LW1vZGVsJ3MgYmVoYXZpb3IuYCxcclxuICAgIFs1OCAvKiBET01FcnJvckNvZGVzLlhfVl9TSE9XX05PX0VYUFJFU1NJT04gKi9dOiBgdi1zaG93IGlzIG1pc3NpbmcgZXhwcmVzc2lvbi5gLFxyXG4gICAgWzU5IC8qIERPTUVycm9yQ29kZXMuWF9UUkFOU0lUSU9OX0lOVkFMSURfQ0hJTERSRU4gKi9dOiBgPFRyYW5zaXRpb24+IGV4cGVjdHMgZXhhY3RseSBvbmUgY2hpbGQgZWxlbWVudCBvciBjb21wb25lbnQuYCxcclxuICAgIFs2MCAvKiBET01FcnJvckNvZGVzLlhfSUdOT1JFRF9TSURFX0VGRkVDVF9UQUcgKi9dOiBgVGFncyB3aXRoIHNpZGUgZWZmZWN0ICg8c2NyaXB0PiBhbmQgPHN0eWxlPikgYXJlIGlnbm9yZWQgaW4gY2xpZW50IGNvbXBvbmVudCB0ZW1wbGF0ZXMuYFxyXG59O1xuXG5jb25zdCB0cmFuc2Zvcm1WSHRtbCA9IChkaXIsIG5vZGUsIGNvbnRleHQpID0+IHtcclxuICAgIGNvbnN0IHsgZXhwLCBsb2MgfSA9IGRpcjtcclxuICAgIGlmICghZXhwKSB7XHJcbiAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZURPTUNvbXBpbGVyRXJyb3IoNTAgLyogRE9NRXJyb3JDb2Rlcy5YX1ZfSFRNTF9OT19FWFBSRVNTSU9OICovLCBsb2MpKTtcclxuICAgIH1cclxuICAgIGlmIChub2RlLmNoaWxkcmVuLmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVET01Db21waWxlckVycm9yKDUxIC8qIERPTUVycm9yQ29kZXMuWF9WX0hUTUxfV0lUSF9DSElMRFJFTiAqLywgbG9jKSk7XHJcbiAgICAgICAgbm9kZS5jaGlsZHJlbi5sZW5ndGggPSAwO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBwcm9wczogW1xyXG4gICAgICAgICAgICBjcmVhdGVPYmplY3RQcm9wZXJ0eShjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGBpbm5lckhUTUxgLCB0cnVlLCBsb2MpLCBleHAgfHwgY3JlYXRlU2ltcGxlRXhwcmVzc2lvbignJywgdHJ1ZSkpXHJcbiAgICAgICAgXVxyXG4gICAgfTtcclxufTtcblxuY29uc3QgdHJhbnNmb3JtVlRleHQgPSAoZGlyLCBub2RlLCBjb250ZXh0KSA9PiB7XHJcbiAgICBjb25zdCB7IGV4cCwgbG9jIH0gPSBkaXI7XHJcbiAgICBpZiAoIWV4cCkge1xyXG4gICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVET01Db21waWxlckVycm9yKDUyIC8qIERPTUVycm9yQ29kZXMuWF9WX1RFWFRfTk9fRVhQUkVTU0lPTiAqLywgbG9jKSk7XHJcbiAgICB9XHJcbiAgICBpZiAobm9kZS5jaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlRE9NQ29tcGlsZXJFcnJvcig1MyAvKiBET01FcnJvckNvZGVzLlhfVl9URVhUX1dJVEhfQ0hJTERSRU4gKi8sIGxvYykpO1xyXG4gICAgICAgIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID0gMDtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgcHJvcHM6IFtcclxuICAgICAgICAgICAgY3JlYXRlT2JqZWN0UHJvcGVydHkoY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihgdGV4dENvbnRlbnRgLCB0cnVlKSwgZXhwXHJcbiAgICAgICAgICAgICAgICA/IGdldENvbnN0YW50VHlwZShleHAsIGNvbnRleHQpID4gMFxyXG4gICAgICAgICAgICAgICAgICAgID8gZXhwXHJcbiAgICAgICAgICAgICAgICAgICAgOiBjcmVhdGVDYWxsRXhwcmVzc2lvbihjb250ZXh0LmhlbHBlclN0cmluZyhUT19ESVNQTEFZX1NUUklORyksIFtleHBdLCBsb2MpXHJcbiAgICAgICAgICAgICAgICA6IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oJycsIHRydWUpKVxyXG4gICAgICAgIF1cclxuICAgIH07XHJcbn07XG5cbmNvbnN0IHRyYW5zZm9ybU1vZGVsID0gKGRpciwgbm9kZSwgY29udGV4dCkgPT4ge1xyXG4gICAgY29uc3QgYmFzZVJlc3VsdCA9IHRyYW5zZm9ybU1vZGVsJDEoZGlyLCBub2RlLCBjb250ZXh0KTtcclxuICAgIC8vIGJhc2UgdHJhbnNmb3JtIGhhcyBlcnJvcnMgT1IgY29tcG9uZW50IHYtbW9kZWwgKG9ubHkgbmVlZCBwcm9wcylcclxuICAgIGlmICghYmFzZVJlc3VsdC5wcm9wcy5sZW5ndGggfHwgbm9kZS50YWdUeXBlID09PSAxIC8qIEVsZW1lbnRUeXBlcy5DT01QT05FTlQgKi8pIHtcclxuICAgICAgICByZXR1cm4gYmFzZVJlc3VsdDtcclxuICAgIH1cclxuICAgIGlmIChkaXIuYXJnKSB7XHJcbiAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZURPTUNvbXBpbGVyRXJyb3IoNTUgLyogRE9NRXJyb3JDb2Rlcy5YX1ZfTU9ERUxfQVJHX09OX0VMRU1FTlQgKi8sIGRpci5hcmcubG9jKSk7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBjaGVja0R1cGxpY2F0ZWRWYWx1ZSgpIHtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IGZpbmRQcm9wKG5vZGUsICd2YWx1ZScpO1xyXG4gICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlRE9NQ29tcGlsZXJFcnJvcig1NyAvKiBET01FcnJvckNvZGVzLlhfVl9NT0RFTF9VTk5FQ0VTU0FSWV9WQUxVRSAqLywgdmFsdWUubG9jKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgeyB0YWcgfSA9IG5vZGU7XHJcbiAgICBjb25zdCBpc0N1c3RvbUVsZW1lbnQgPSBjb250ZXh0LmlzQ3VzdG9tRWxlbWVudCh0YWcpO1xyXG4gICAgaWYgKHRhZyA9PT0gJ2lucHV0JyB8fFxyXG4gICAgICAgIHRhZyA9PT0gJ3RleHRhcmVhJyB8fFxyXG4gICAgICAgIHRhZyA9PT0gJ3NlbGVjdCcgfHxcclxuICAgICAgICBpc0N1c3RvbUVsZW1lbnQpIHtcclxuICAgICAgICBsZXQgZGlyZWN0aXZlVG9Vc2UgPSBWX01PREVMX1RFWFQ7XHJcbiAgICAgICAgbGV0IGlzSW52YWxpZFR5cGUgPSBmYWxzZTtcclxuICAgICAgICBpZiAodGFnID09PSAnaW5wdXQnIHx8IGlzQ3VzdG9tRWxlbWVudCkge1xyXG4gICAgICAgICAgICBjb25zdCB0eXBlID0gZmluZFByb3Aobm9kZSwgYHR5cGVgKTtcclxuICAgICAgICAgICAgaWYgKHR5cGUpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlLnR5cGUgPT09IDcgLyogTm9kZVR5cGVzLkRJUkVDVElWRSAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIDp0eXBlPVwiZm9vXCJcclxuICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVUb1VzZSA9IFZfTU9ERUxfRFlOQU1JQztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUudmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGUudmFsdWUuY29udGVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdyYWRpbyc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVUb1VzZSA9IFZfTU9ERUxfUkFESU87XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY2hlY2tib3gnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlVG9Vc2UgPSBWX01PREVMX0NIRUNLQk9YO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2ZpbGUnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNJbnZhbGlkVHlwZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlRE9NQ29tcGlsZXJFcnJvcig1NiAvKiBET01FcnJvckNvZGVzLlhfVl9NT0RFTF9PTl9GSUxFX0lOUFVUX0VMRU1FTlQgKi8sIGRpci5sb2MpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGV4dCB0eXBlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgY2hlY2tEdXBsaWNhdGVkVmFsdWUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChoYXNEeW5hbWljS2V5VkJpbmQobm9kZSkpIHtcclxuICAgICAgICAgICAgICAgIC8vIGVsZW1lbnQgaGFzIGJpbmRpbmdzIHdpdGggZHluYW1pYyBrZXlzLCB3aGljaCBjYW4gcG9zc2libHkgY29udGFpblxyXG4gICAgICAgICAgICAgICAgLy8gXCJ0eXBlXCIuXHJcbiAgICAgICAgICAgICAgICBkaXJlY3RpdmVUb1VzZSA9IFZfTU9ERUxfRFlOQU1JQztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIHRleHQgdHlwZVxyXG4gICAgICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGNoZWNrRHVwbGljYXRlZFZhbHVlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGFnID09PSAnc2VsZWN0Jykge1xyXG4gICAgICAgICAgICBkaXJlY3RpdmVUb1VzZSA9IFZfTU9ERUxfU0VMRUNUO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gdGV4dGFyZWFcclxuICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGNoZWNrRHVwbGljYXRlZFZhbHVlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGluamVjdCBydW50aW1lIGRpcmVjdGl2ZVxyXG4gICAgICAgIC8vIGJ5IHJldHVybmluZyB0aGUgaGVscGVyIHN5bWJvbCB2aWEgbmVlZFJ1bnRpbWVcclxuICAgICAgICAvLyB0aGUgaW1wb3J0IHdpbGwgcmVwbGFjZWQgYSByZXNvbHZlRGlyZWN0aXZlIGNhbGwuXHJcbiAgICAgICAgaWYgKCFpc0ludmFsaWRUeXBlKSB7XHJcbiAgICAgICAgICAgIGJhc2VSZXN1bHQubmVlZFJ1bnRpbWUgPSBjb250ZXh0LmhlbHBlcihkaXJlY3RpdmVUb1VzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZURPTUNvbXBpbGVyRXJyb3IoNTQgLyogRE9NRXJyb3JDb2Rlcy5YX1ZfTU9ERUxfT05fSU5WQUxJRF9FTEVNRU5UICovLCBkaXIubG9jKSk7XHJcbiAgICB9XHJcbiAgICAvLyBuYXRpdmUgdm1vZGVsIGRvZXNuJ3QgbmVlZCB0aGUgYG1vZGVsVmFsdWVgIHByb3BzIHNpbmNlIHRoZXkgYXJlIGFsc29cclxuICAgIC8vIHBhc3NlZCB0byB0aGUgcnVudGltZSBhcyBgYmluZGluZy52YWx1ZWAuIHJlbW92aW5nIGl0IHJlZHVjZXMgY29kZSBzaXplLlxyXG4gICAgYmFzZVJlc3VsdC5wcm9wcyA9IGJhc2VSZXN1bHQucHJvcHMuZmlsdGVyKHAgPT4gIShwLmtleS50eXBlID09PSA0IC8qIE5vZGVUeXBlcy5TSU1QTEVfRVhQUkVTU0lPTiAqLyAmJlxyXG4gICAgICAgIHAua2V5LmNvbnRlbnQgPT09ICdtb2RlbFZhbHVlJykpO1xyXG4gICAgcmV0dXJuIGJhc2VSZXN1bHQ7XHJcbn07XG5cbmNvbnN0IGlzRXZlbnRPcHRpb25Nb2RpZmllciA9IC8qI19fUFVSRV9fKi8gbWFrZU1hcChgcGFzc2l2ZSxvbmNlLGNhcHR1cmVgKTtcclxuY29uc3QgaXNOb25LZXlNb2RpZmllciA9IC8qI19fUFVSRV9fKi8gbWFrZU1hcChcclxuLy8gZXZlbnQgcHJvcGFnYXRpb24gbWFuYWdlbWVudFxyXG5gc3RvcCxwcmV2ZW50LHNlbGYsYCArXHJcbiAgICAvLyBzeXN0ZW0gbW9kaWZpZXJzICsgZXhhY3RcclxuICAgIGBjdHJsLHNoaWZ0LGFsdCxtZXRhLGV4YWN0LGAgK1xyXG4gICAgLy8gbW91c2VcclxuICAgIGBtaWRkbGVgKTtcclxuLy8gbGVmdCAmIHJpZ2h0IGNvdWxkIGJlIG1vdXNlIG9yIGtleSBtb2RpZmllcnMgYmFzZWQgb24gZXZlbnQgdHlwZVxyXG5jb25zdCBtYXliZUtleU1vZGlmaWVyID0gLyojX19QVVJFX18qLyBtYWtlTWFwKCdsZWZ0LHJpZ2h0Jyk7XHJcbmNvbnN0IGlzS2V5Ym9hcmRFdmVudCA9IC8qI19fUFVSRV9fKi8gbWFrZU1hcChgb25rZXl1cCxvbmtleWRvd24sb25rZXlwcmVzc2AsIHRydWUpO1xyXG5jb25zdCByZXNvbHZlTW9kaWZpZXJzID0gKGtleSwgbW9kaWZpZXJzLCBjb250ZXh0LCBsb2MpID0+IHtcclxuICAgIGNvbnN0IGtleU1vZGlmaWVycyA9IFtdO1xyXG4gICAgY29uc3Qgbm9uS2V5TW9kaWZpZXJzID0gW107XHJcbiAgICBjb25zdCBldmVudE9wdGlvbk1vZGlmaWVycyA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtb2RpZmllcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBtb2RpZmllciA9IG1vZGlmaWVyc1tpXTtcclxuICAgICAgICBpZiAobW9kaWZpZXIgPT09ICduYXRpdmUnICYmXHJcbiAgICAgICAgICAgIGNoZWNrQ29tcGF0RW5hYmxlZChcIkNPTVBJTEVSX1ZfT05fTkFUSVZFXCIgLyogQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLkNPTVBJTEVSX1ZfT05fTkFUSVZFICovLCBjb250ZXh0LCBsb2MpKSB7XHJcbiAgICAgICAgICAgIGV2ZW50T3B0aW9uTW9kaWZpZXJzLnB1c2gobW9kaWZpZXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChpc0V2ZW50T3B0aW9uTW9kaWZpZXIobW9kaWZpZXIpKSB7XHJcbiAgICAgICAgICAgIC8vIGV2ZW50T3B0aW9uTW9kaWZpZXJzOiBtb2RpZmllcnMgZm9yIGFkZEV2ZW50TGlzdGVuZXIoKSBvcHRpb25zLFxyXG4gICAgICAgICAgICAvLyBlLmcuIC5wYXNzaXZlICYgLmNhcHR1cmVcclxuICAgICAgICAgICAgZXZlbnRPcHRpb25Nb2RpZmllcnMucHVzaChtb2RpZmllcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBydW50aW1lTW9kaWZpZXJzOiBtb2RpZmllcnMgdGhhdCBuZWVkcyBydW50aW1lIGd1YXJkc1xyXG4gICAgICAgICAgICBpZiAobWF5YmVLZXlNb2RpZmllcihtb2RpZmllcikpIHtcclxuICAgICAgICAgICAgICAgIGlmIChpc1N0YXRpY0V4cChrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzS2V5Ym9hcmRFdmVudChrZXkuY29udGVudCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAga2V5TW9kaWZpZXJzLnB1c2gobW9kaWZpZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm9uS2V5TW9kaWZpZXJzLnB1c2gobW9kaWZpZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGtleU1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKTtcclxuICAgICAgICAgICAgICAgICAgICBub25LZXlNb2RpZmllcnMucHVzaChtb2RpZmllcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNOb25LZXlNb2RpZmllcihtb2RpZmllcikpIHtcclxuICAgICAgICAgICAgICAgICAgICBub25LZXlNb2RpZmllcnMucHVzaChtb2RpZmllcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBrZXlNb2RpZmllcnMucHVzaChtb2RpZmllcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIGtleU1vZGlmaWVycyxcclxuICAgICAgICBub25LZXlNb2RpZmllcnMsXHJcbiAgICAgICAgZXZlbnRPcHRpb25Nb2RpZmllcnNcclxuICAgIH07XHJcbn07XHJcbmNvbnN0IHRyYW5zZm9ybUNsaWNrID0gKGtleSwgZXZlbnQpID0+IHtcclxuICAgIGNvbnN0IGlzU3RhdGljQ2xpY2sgPSBpc1N0YXRpY0V4cChrZXkpICYmIGtleS5jb250ZW50LnRvTG93ZXJDYXNlKCkgPT09ICdvbmNsaWNrJztcclxuICAgIHJldHVybiBpc1N0YXRpY0NsaWNrXHJcbiAgICAgICAgPyBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGV2ZW50LCB0cnVlKVxyXG4gICAgICAgIDoga2V5LnR5cGUgIT09IDQgLyogTm9kZVR5cGVzLlNJTVBMRV9FWFBSRVNTSU9OICovXHJcbiAgICAgICAgICAgID8gY3JlYXRlQ29tcG91bmRFeHByZXNzaW9uKFtcclxuICAgICAgICAgICAgICAgIGAoYCxcclxuICAgICAgICAgICAgICAgIGtleSxcclxuICAgICAgICAgICAgICAgIGApID09PSBcIm9uQ2xpY2tcIiA/IFwiJHtldmVudH1cIiA6IChgLFxyXG4gICAgICAgICAgICAgICAga2V5LFxyXG4gICAgICAgICAgICAgICAgYClgXHJcbiAgICAgICAgICAgIF0pXHJcbiAgICAgICAgICAgIDoga2V5O1xyXG59O1xyXG5jb25zdCB0cmFuc2Zvcm1PbiA9IChkaXIsIG5vZGUsIGNvbnRleHQpID0+IHtcclxuICAgIHJldHVybiB0cmFuc2Zvcm1PbiQxKGRpciwgbm9kZSwgY29udGV4dCwgYmFzZVJlc3VsdCA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBtb2RpZmllcnMgfSA9IGRpcjtcclxuICAgICAgICBpZiAoIW1vZGlmaWVycy5sZW5ndGgpXHJcbiAgICAgICAgICAgIHJldHVybiBiYXNlUmVzdWx0O1xyXG4gICAgICAgIGxldCB7IGtleSwgdmFsdWU6IGhhbmRsZXJFeHAgfSA9IGJhc2VSZXN1bHQucHJvcHNbMF07XHJcbiAgICAgICAgY29uc3QgeyBrZXlNb2RpZmllcnMsIG5vbktleU1vZGlmaWVycywgZXZlbnRPcHRpb25Nb2RpZmllcnMgfSA9IHJlc29sdmVNb2RpZmllcnMoa2V5LCBtb2RpZmllcnMsIGNvbnRleHQsIGRpci5sb2MpO1xyXG4gICAgICAgIC8vIG5vcm1hbGl6ZSBjbGljay5yaWdodCBhbmQgY2xpY2subWlkZGxlIHNpbmNlIHRoZXkgZG9uJ3QgYWN0dWFsbHkgZmlyZVxyXG4gICAgICAgIGlmIChub25LZXlNb2RpZmllcnMuaW5jbHVkZXMoJ3JpZ2h0JykpIHtcclxuICAgICAgICAgICAga2V5ID0gdHJhbnNmb3JtQ2xpY2soa2V5LCBgb25Db250ZXh0bWVudWApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobm9uS2V5TW9kaWZpZXJzLmluY2x1ZGVzKCdtaWRkbGUnKSkge1xyXG4gICAgICAgICAgICBrZXkgPSB0cmFuc2Zvcm1DbGljayhrZXksIGBvbk1vdXNldXBgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG5vbktleU1vZGlmaWVycy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgaGFuZGxlckV4cCA9IGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKFZfT05fV0lUSF9NT0RJRklFUlMpLCBbXHJcbiAgICAgICAgICAgICAgICBoYW5kbGVyRXhwLFxyXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkobm9uS2V5TW9kaWZpZXJzKVxyXG4gICAgICAgICAgICBdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGtleU1vZGlmaWVycy5sZW5ndGggJiZcclxuICAgICAgICAgICAgLy8gaWYgZXZlbnQgbmFtZSBpcyBkeW5hbWljLCBhbHdheXMgd3JhcCB3aXRoIGtleXMgZ3VhcmRcclxuICAgICAgICAgICAgKCFpc1N0YXRpY0V4cChrZXkpIHx8IGlzS2V5Ym9hcmRFdmVudChrZXkuY29udGVudCkpKSB7XHJcbiAgICAgICAgICAgIGhhbmRsZXJFeHAgPSBjcmVhdGVDYWxsRXhwcmVzc2lvbihjb250ZXh0LmhlbHBlcihWX09OX1dJVEhfS0VZUyksIFtcclxuICAgICAgICAgICAgICAgIGhhbmRsZXJFeHAsXHJcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShrZXlNb2RpZmllcnMpXHJcbiAgICAgICAgICAgIF0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZXZlbnRPcHRpb25Nb2RpZmllcnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1vZGlmaWVyUG9zdGZpeCA9IGV2ZW50T3B0aW9uTW9kaWZpZXJzLm1hcChjYXBpdGFsaXplKS5qb2luKCcnKTtcclxuICAgICAgICAgICAga2V5ID0gaXNTdGF0aWNFeHAoa2V5KVxyXG4gICAgICAgICAgICAgICAgPyBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGAke2tleS5jb250ZW50fSR7bW9kaWZpZXJQb3N0Zml4fWAsIHRydWUpXHJcbiAgICAgICAgICAgICAgICA6IGNyZWF0ZUNvbXBvdW5kRXhwcmVzc2lvbihbYChgLCBrZXksIGApICsgXCIke21vZGlmaWVyUG9zdGZpeH1cImBdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcHJvcHM6IFtjcmVhdGVPYmplY3RQcm9wZXJ0eShrZXksIGhhbmRsZXJFeHApXVxyXG4gICAgICAgIH07XHJcbiAgICB9KTtcclxufTtcblxuY29uc3QgdHJhbnNmb3JtU2hvdyA9IChkaXIsIG5vZGUsIGNvbnRleHQpID0+IHtcclxuICAgIGNvbnN0IHsgZXhwLCBsb2MgfSA9IGRpcjtcclxuICAgIGlmICghZXhwKSB7XHJcbiAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZURPTUNvbXBpbGVyRXJyb3IoNTggLyogRE9NRXJyb3JDb2Rlcy5YX1ZfU0hPV19OT19FWFBSRVNTSU9OICovLCBsb2MpKTtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgcHJvcHM6IFtdLFxyXG4gICAgICAgIG5lZWRSdW50aW1lOiBjb250ZXh0LmhlbHBlcihWX1NIT1cpXHJcbiAgICB9O1xyXG59O1xuXG5jb25zdCB0cmFuc2Zvcm1UcmFuc2l0aW9uID0gKG5vZGUsIGNvbnRleHQpID0+IHtcclxuICAgIGlmIChub2RlLnR5cGUgPT09IDEgLyogTm9kZVR5cGVzLkVMRU1FTlQgKi8gJiZcclxuICAgICAgICBub2RlLnRhZ1R5cGUgPT09IDEgLyogRWxlbWVudFR5cGVzLkNPTVBPTkVOVCAqLykge1xyXG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGNvbnRleHQuaXNCdWlsdEluQ29tcG9uZW50KG5vZGUudGFnKTtcclxuICAgICAgICBpZiAoY29tcG9uZW50ID09PSBUUkFOU0lUSU9OKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIW5vZGUuY2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gd2FybiBtdWx0aXBsZSB0cmFuc2l0aW9uIGNoaWxkcmVuXHJcbiAgICAgICAgICAgICAgICBpZiAoaGFzTXVsdGlwbGVDaGlsZHJlbihub2RlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQub25FcnJvcihjcmVhdGVET01Db21waWxlckVycm9yKDU5IC8qIERPTUVycm9yQ29kZXMuWF9UUkFOU0lUSU9OX0lOVkFMSURfQ0hJTERSRU4gKi8sIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IG5vZGUuY2hpbGRyZW5bMF0ubG9jLnN0YXJ0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IG5vZGUuY2hpbGRyZW5bbm9kZS5jaGlsZHJlbi5sZW5ndGggLSAxXS5sb2MuZW5kLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U6ICcnXHJcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gY2hlY2sgaWYgaXQncyBzIHNpbmdsZSBjaGlsZCB3LyB2LXNob3dcclxuICAgICAgICAgICAgICAgIC8vIGlmIHllcywgaW5qZWN0IFwicGVyc2lzdGVkOiB0cnVlXCIgdG8gdGhlIHRyYW5zaXRpb24gcHJvcHNcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gbm9kZS5jaGlsZHJlblswXTtcclxuICAgICAgICAgICAgICAgIGlmIChjaGlsZC50eXBlID09PSAxIC8qIE5vZGVUeXBlcy5FTEVNRU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBwIG9mIGNoaWxkLnByb3BzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwLnR5cGUgPT09IDcgLyogTm9kZVR5cGVzLkRJUkVDVElWRSAqLyAmJiBwLm5hbWUgPT09ICdzaG93Jykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5wcm9wcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiA2IC8qIE5vZGVUeXBlcy5BVFRSSUJVVEUgKi8sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3BlcnNpc3RlZCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2M6IG5vZGUubG9jXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XHJcbmZ1bmN0aW9uIGhhc011bHRpcGxlQ2hpbGRyZW4obm9kZSkge1xyXG4gICAgLy8gIzEzNTIgZmlsdGVyIG91dCBwb3RlbnRpYWwgY29tbWVudCBub2Rlcy5cclxuICAgIGNvbnN0IGNoaWxkcmVuID0gKG5vZGUuY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuLmZpbHRlcihjID0+IGMudHlwZSAhPT0gMyAvKiBOb2RlVHlwZXMuQ09NTUVOVCAqLyAmJlxyXG4gICAgICAgICEoYy50eXBlID09PSAyIC8qIE5vZGVUeXBlcy5URVhUICovICYmICFjLmNvbnRlbnQudHJpbSgpKSkpO1xyXG4gICAgY29uc3QgY2hpbGQgPSBjaGlsZHJlblswXTtcclxuICAgIHJldHVybiAoY2hpbGRyZW4ubGVuZ3RoICE9PSAxIHx8XHJcbiAgICAgICAgY2hpbGQudHlwZSA9PT0gMTEgLyogTm9kZVR5cGVzLkZPUiAqLyB8fFxyXG4gICAgICAgIChjaGlsZC50eXBlID09PSA5IC8qIE5vZGVUeXBlcy5JRiAqLyAmJiBjaGlsZC5icmFuY2hlcy5zb21lKGhhc011bHRpcGxlQ2hpbGRyZW4pKSk7XHJcbn1cblxuY29uc3QgaWdub3JlU2lkZUVmZmVjdFRhZ3MgPSAobm9kZSwgY29udGV4dCkgPT4ge1xyXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gMSAvKiBOb2RlVHlwZXMuRUxFTUVOVCAqLyAmJlxyXG4gICAgICAgIG5vZGUudGFnVHlwZSA9PT0gMCAvKiBFbGVtZW50VHlwZXMuRUxFTUVOVCAqLyAmJlxyXG4gICAgICAgIChub2RlLnRhZyA9PT0gJ3NjcmlwdCcgfHwgbm9kZS50YWcgPT09ICdzdHlsZScpKSB7XHJcbiAgICAgICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZURPTUNvbXBpbGVyRXJyb3IoNjAgLyogRE9NRXJyb3JDb2Rlcy5YX0lHTk9SRURfU0lERV9FRkZFQ1RfVEFHICovLCBub2RlLmxvYykpO1xyXG4gICAgICAgIGNvbnRleHQucmVtb3ZlTm9kZSgpO1xyXG4gICAgfVxyXG59O1xuXG5jb25zdCBET01Ob2RlVHJhbnNmb3JtcyA9IFtcclxuICAgIHRyYW5zZm9ybVN0eWxlLFxyXG4gICAgLi4uKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IFt0cmFuc2Zvcm1UcmFuc2l0aW9uXSA6IFtdKVxyXG5dO1xyXG5jb25zdCBET01EaXJlY3RpdmVUcmFuc2Zvcm1zID0ge1xyXG4gICAgY2xvYWs6IG5vb3BEaXJlY3RpdmVUcmFuc2Zvcm0sXHJcbiAgICBodG1sOiB0cmFuc2Zvcm1WSHRtbCxcclxuICAgIHRleHQ6IHRyYW5zZm9ybVZUZXh0LFxyXG4gICAgbW9kZWw6IHRyYW5zZm9ybU1vZGVsLFxyXG4gICAgb246IHRyYW5zZm9ybU9uLFxyXG4gICAgc2hvdzogdHJhbnNmb3JtU2hvd1xyXG59O1xyXG5mdW5jdGlvbiBjb21waWxlKHRlbXBsYXRlLCBvcHRpb25zID0ge30pIHtcclxuICAgIHJldHVybiBiYXNlQ29tcGlsZSh0ZW1wbGF0ZSwgZXh0ZW5kKHt9LCBwYXJzZXJPcHRpb25zLCBvcHRpb25zLCB7XHJcbiAgICAgICAgbm9kZVRyYW5zZm9ybXM6IFtcclxuICAgICAgICAgICAgLy8gaWdub3JlIDxzY3JpcHQ+IGFuZCA8dGFnPlxyXG4gICAgICAgICAgICAvLyB0aGlzIGlzIG5vdCBwdXQgaW5zaWRlIERPTU5vZGVUcmFuc2Zvcm1zIGJlY2F1c2UgdGhhdCBsaXN0IGlzIHVzZWRcclxuICAgICAgICAgICAgLy8gYnkgY29tcGlsZXItc3NyIHRvIGdlbmVyYXRlIHZub2RlIGZhbGxiYWNrIGJyYW5jaGVzXHJcbiAgICAgICAgICAgIGlnbm9yZVNpZGVFZmZlY3RUYWdzLFxyXG4gICAgICAgICAgICAuLi5ET01Ob2RlVHJhbnNmb3JtcyxcclxuICAgICAgICAgICAgLi4uKG9wdGlvbnMubm9kZVRyYW5zZm9ybXMgfHwgW10pXHJcbiAgICAgICAgXSxcclxuICAgICAgICBkaXJlY3RpdmVUcmFuc2Zvcm1zOiBleHRlbmQoe30sIERPTURpcmVjdGl2ZVRyYW5zZm9ybXMsIG9wdGlvbnMuZGlyZWN0aXZlVHJhbnNmb3JtcyB8fCB7fSksXHJcbiAgICAgICAgdHJhbnNmb3JtSG9pc3Q6IG51bGwgXHJcbiAgICB9KSk7XHJcbn1cclxuZnVuY3Rpb24gcGFyc2UodGVtcGxhdGUsIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgcmV0dXJuIGJhc2VQYXJzZSh0ZW1wbGF0ZSwgZXh0ZW5kKHt9LCBwYXJzZXJPcHRpb25zLCBvcHRpb25zKSk7XHJcbn1cblxuZXhwb3J0IHsgRE9NRGlyZWN0aXZlVHJhbnNmb3JtcywgRE9NTm9kZVRyYW5zZm9ybXMsIFRSQU5TSVRJT04sIFRSQU5TSVRJT05fR1JPVVAsIFZfTU9ERUxfQ0hFQ0tCT1gsIFZfTU9ERUxfRFlOQU1JQywgVl9NT0RFTF9SQURJTywgVl9NT0RFTF9TRUxFQ1QsIFZfTU9ERUxfVEVYVCwgVl9PTl9XSVRIX0tFWVMsIFZfT05fV0lUSF9NT0RJRklFUlMsIFZfU0hPVywgY29tcGlsZSwgY3JlYXRlRE9NQ29tcGlsZXJFcnJvciwgcGFyc2UsIHBhcnNlck9wdGlvbnMsIHRyYW5zZm9ybVN0eWxlIH07XG4iLCJleHBvcnQgY29uc3QgSE9PS19TRVRVUCA9ICdkZXZ0b29scy1wbHVnaW46c2V0dXAnO1xuZXhwb3J0IGNvbnN0IEhPT0tfUExVR0lOX1NFVFRJTkdTX1NFVCA9ICdwbHVnaW46c2V0dGluZ3M6c2V0JztcbiIsImV4cG9ydCBmdW5jdGlvbiBnZXREZXZ0b29sc0dsb2JhbEhvb2soKSB7XG4gICAgcmV0dXJuIGdldFRhcmdldCgpLl9fVlVFX0RFVlRPT0xTX0dMT0JBTF9IT09LX187XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0VGFyZ2V0KCkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gKHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKVxuICAgICAgICA/IHdpbmRvd1xuICAgICAgICA6IHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnXG4gICAgICAgICAgICA/IGdsb2JhbFxuICAgICAgICAgICAgOiB7fTtcbn1cbmV4cG9ydCBjb25zdCBpc1Byb3h5QXZhaWxhYmxlID0gdHlwZW9mIFByb3h5ID09PSAnZnVuY3Rpb24nO1xuIiwiaW1wb3J0IHsgZ2V0VGFyZ2V0LCBnZXREZXZ0b29sc0dsb2JhbEhvb2ssIGlzUHJveHlBdmFpbGFibGUgfSBmcm9tICcuL2Vudi5qcyc7XG5pbXBvcnQgeyBIT09LX1NFVFVQIH0gZnJvbSAnLi9jb25zdC5qcyc7XG5pbXBvcnQgeyBBcGlQcm94eSB9IGZyb20gJy4vcHJveHkuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9hcGkvaW5kZXguanMnO1xuZXhwb3J0ICogZnJvbSAnLi9wbHVnaW4uanMnO1xuZXhwb3J0ICogZnJvbSAnLi90aW1lLmpzJztcbmV4cG9ydCBmdW5jdGlvbiBzZXR1cERldnRvb2xzUGx1Z2luKHBsdWdpbkRlc2NyaXB0b3IsIHNldHVwRm4pIHtcbiAgICBjb25zdCBkZXNjcmlwdG9yID0gcGx1Z2luRGVzY3JpcHRvcjtcbiAgICBjb25zdCB0YXJnZXQgPSBnZXRUYXJnZXQoKTtcbiAgICBjb25zdCBob29rID0gZ2V0RGV2dG9vbHNHbG9iYWxIb29rKCk7XG4gICAgY29uc3QgZW5hYmxlUHJveHkgPSBpc1Byb3h5QXZhaWxhYmxlICYmIGRlc2NyaXB0b3IuZW5hYmxlRWFybHlQcm94eTtcbiAgICBpZiAoaG9vayAmJiAodGFyZ2V0Ll9fVlVFX0RFVlRPT0xTX1BMVUdJTl9BUElfQVZBSUxBQkxFX18gfHwgIWVuYWJsZVByb3h5KSkge1xuICAgICAgICBob29rLmVtaXQoSE9PS19TRVRVUCwgcGx1Z2luRGVzY3JpcHRvciwgc2V0dXBGbik7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjb25zdCBwcm94eSA9IGVuYWJsZVByb3h5ID8gbmV3IEFwaVByb3h5KGRlc2NyaXB0b3IsIGhvb2spIDogbnVsbDtcbiAgICAgICAgY29uc3QgbGlzdCA9IHRhcmdldC5fX1ZVRV9ERVZUT09MU19QTFVHSU5TX18gPSB0YXJnZXQuX19WVUVfREVWVE9PTFNfUExVR0lOU19fIHx8IFtdO1xuICAgICAgICBsaXN0LnB1c2goe1xuICAgICAgICAgICAgcGx1Z2luRGVzY3JpcHRvcjogZGVzY3JpcHRvcixcbiAgICAgICAgICAgIHNldHVwRm4sXG4gICAgICAgICAgICBwcm94eSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChwcm94eSlcbiAgICAgICAgICAgIHNldHVwRm4ocHJveHkucHJveGllZFRhcmdldCk7XG4gICAgfVxufVxuIiwiaW1wb3J0IHsgSE9PS19QTFVHSU5fU0VUVElOR1NfU0VUIH0gZnJvbSAnLi9jb25zdC5qcyc7XG5pbXBvcnQgeyBub3cgfSBmcm9tICcuL3RpbWUuanMnO1xuZXhwb3J0IGNsYXNzIEFwaVByb3h5IHtcbiAgICBjb25zdHJ1Y3RvcihwbHVnaW4sIGhvb2spIHtcbiAgICAgICAgdGhpcy50YXJnZXQgPSBudWxsO1xuICAgICAgICB0aGlzLnRhcmdldFF1ZXVlID0gW107XG4gICAgICAgIHRoaXMub25RdWV1ZSA9IFtdO1xuICAgICAgICB0aGlzLnBsdWdpbiA9IHBsdWdpbjtcbiAgICAgICAgdGhpcy5ob29rID0gaG9vaztcbiAgICAgICAgY29uc3QgZGVmYXVsdFNldHRpbmdzID0ge307XG4gICAgICAgIGlmIChwbHVnaW4uc2V0dGluZ3MpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaWQgaW4gcGx1Z2luLnNldHRpbmdzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbSA9IHBsdWdpbi5zZXR0aW5nc1tpZF07XG4gICAgICAgICAgICAgICAgZGVmYXVsdFNldHRpbmdzW2lkXSA9IGl0ZW0uZGVmYXVsdFZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxvY2FsU2V0dGluZ3NTYXZlSWQgPSBgX192dWUtZGV2dG9vbHMtcGx1Z2luLXNldHRpbmdzX18ke3BsdWdpbi5pZH1gO1xuICAgICAgICBsZXQgY3VycmVudFNldHRpbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdFNldHRpbmdzKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJhdyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU2V0dGluZ3NTYXZlSWQpO1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UocmF3KTtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oY3VycmVudFNldHRpbmdzLCBkYXRhKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgLy8gbm9vcFxuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmFsbGJhY2tzID0ge1xuICAgICAgICAgICAgZ2V0U2V0dGluZ3MoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRTZXR0aW5ncztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXRTZXR0aW5ncyh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGxvY2FsU2V0dGluZ3NTYXZlSWQsIEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIG5vb3BcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY3VycmVudFNldHRpbmdzID0gdmFsdWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbm93KCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBub3coKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICAgIGlmIChob29rKSB7XG4gICAgICAgICAgICBob29rLm9uKEhPT0tfUExVR0lOX1NFVFRJTkdTX1NFVCwgKHBsdWdpbklkLCB2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChwbHVnaW5JZCA9PT0gdGhpcy5wbHVnaW4uaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mYWxsYmFja3Muc2V0U2V0dGluZ3ModmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucHJveGllZE9uID0gbmV3IFByb3h5KHt9LCB7XG4gICAgICAgICAgICBnZXQ6IChfdGFyZ2V0LCBwcm9wKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRhcmdldC5vbltwcm9wXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblF1ZXVlLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogcHJvcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucHJveGllZFRhcmdldCA9IG5ldyBQcm94eSh7fSwge1xuICAgICAgICAgICAgZ2V0OiAoX3RhcmdldCwgcHJvcCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50YXJnZXRbcHJvcF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHByb3AgPT09ICdvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJveGllZE9uO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChPYmplY3Qua2V5cyh0aGlzLmZhbGxiYWNrcykuaW5jbHVkZXMocHJvcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICguLi5hcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhcmdldFF1ZXVlLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogcHJvcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmU6ICgpID0+IHsgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmFsbGJhY2tzW3Byb3BdKC4uLmFyZ3MpO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICguLi5hcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YXJnZXRRdWV1ZS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBwcm9wLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIHNldFJlYWxUYXJnZXQodGFyZ2V0KSB7XG4gICAgICAgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0O1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5vblF1ZXVlKSB7XG4gICAgICAgICAgICB0aGlzLnRhcmdldC5vbltpdGVtLm1ldGhvZF0oLi4uaXRlbS5hcmdzKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy50YXJnZXRRdWV1ZSkge1xuICAgICAgICAgICAgaXRlbS5yZXNvbHZlKGF3YWl0IHRoaXMudGFyZ2V0W2l0ZW0ubWV0aG9kXSguLi5pdGVtLmFyZ3MpKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsImxldCBzdXBwb3J0ZWQ7XG5sZXQgcGVyZjtcbmV4cG9ydCBmdW5jdGlvbiBpc1BlcmZvcm1hbmNlU3VwcG9ydGVkKCkge1xuICAgIHZhciBfYTtcbiAgICBpZiAoc3VwcG9ydGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHN1cHBvcnRlZDtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5wZXJmb3JtYW5jZSkge1xuICAgICAgICBzdXBwb3J0ZWQgPSB0cnVlO1xuICAgICAgICBwZXJmID0gd2luZG93LnBlcmZvcm1hbmNlO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyAmJiAoKF9hID0gZ2xvYmFsLnBlcmZfaG9va3MpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5wZXJmb3JtYW5jZSkpIHtcbiAgICAgICAgc3VwcG9ydGVkID0gdHJ1ZTtcbiAgICAgICAgcGVyZiA9IGdsb2JhbC5wZXJmX2hvb2tzLnBlcmZvcm1hbmNlO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgc3VwcG9ydGVkID0gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBzdXBwb3J0ZWQ7XG59XG5leHBvcnQgZnVuY3Rpb24gbm93KCkge1xuICAgIHJldHVybiBpc1BlcmZvcm1hbmNlU3VwcG9ydGVkKCkgPyBwZXJmLm5vdygpIDogRGF0ZS5ub3coKTtcbn1cbiIsImltcG9ydCB7IGV4dGVuZCwgaXNBcnJheSwgaXNNYXAsIGlzSW50ZWdlcktleSwgaGFzT3duLCBpc1N5bWJvbCwgaXNPYmplY3QsIGhhc0NoYW5nZWQsIG1ha2VNYXAsIGNhcGl0YWxpemUsIHRvUmF3VHlwZSwgZGVmLCBpc0Z1bmN0aW9uLCBOT09QIH0gZnJvbSAnQHZ1ZS9zaGFyZWQnO1xuXG5mdW5jdGlvbiB3YXJuKG1zZywgLi4uYXJncykge1xyXG4gICAgY29uc29sZS53YXJuKGBbVnVlIHdhcm5dICR7bXNnfWAsIC4uLmFyZ3MpO1xyXG59XG5cbmxldCBhY3RpdmVFZmZlY3RTY29wZTtcclxuY2xhc3MgRWZmZWN0U2NvcGUge1xyXG4gICAgY29uc3RydWN0b3IoZGV0YWNoZWQgPSBmYWxzZSkge1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEBpbnRlcm5hbFxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHRoaXMuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBAaW50ZXJuYWxcclxuICAgICAgICAgKi9cclxuICAgICAgICB0aGlzLmVmZmVjdHMgPSBbXTtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBAaW50ZXJuYWxcclxuICAgICAgICAgKi9cclxuICAgICAgICB0aGlzLmNsZWFudXBzID0gW107XHJcbiAgICAgICAgaWYgKCFkZXRhY2hlZCAmJiBhY3RpdmVFZmZlY3RTY29wZSkge1xyXG4gICAgICAgICAgICB0aGlzLnBhcmVudCA9IGFjdGl2ZUVmZmVjdFNjb3BlO1xyXG4gICAgICAgICAgICB0aGlzLmluZGV4ID1cclxuICAgICAgICAgICAgICAgIChhY3RpdmVFZmZlY3RTY29wZS5zY29wZXMgfHwgKGFjdGl2ZUVmZmVjdFNjb3BlLnNjb3BlcyA9IFtdKSkucHVzaCh0aGlzKSAtIDE7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcnVuKGZuKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRFZmZlY3RTY29wZSA9IGFjdGl2ZUVmZmVjdFNjb3BlO1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgYWN0aXZlRWZmZWN0U2NvcGUgPSB0aGlzO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZuKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZmluYWxseSB7XHJcbiAgICAgICAgICAgICAgICBhY3RpdmVFZmZlY3RTY29wZSA9IGN1cnJlbnRFZmZlY3RTY29wZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgd2FybihgY2Fubm90IHJ1biBhbiBpbmFjdGl2ZSBlZmZlY3Qgc2NvcGUuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbiBub24tZGV0YWNoZWQgc2NvcGVzXHJcbiAgICAgKiBAaW50ZXJuYWxcclxuICAgICAqL1xyXG4gICAgb24oKSB7XHJcbiAgICAgICAgYWN0aXZlRWZmZWN0U2NvcGUgPSB0aGlzO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbiBub24tZGV0YWNoZWQgc2NvcGVzXHJcbiAgICAgKiBAaW50ZXJuYWxcclxuICAgICAqL1xyXG4gICAgb2ZmKCkge1xyXG4gICAgICAgIGFjdGl2ZUVmZmVjdFNjb3BlID0gdGhpcy5wYXJlbnQ7XHJcbiAgICB9XHJcbiAgICBzdG9wKGZyb21QYXJlbnQpIHtcclxuICAgICAgICBpZiAodGhpcy5hY3RpdmUpIHtcclxuICAgICAgICAgICAgbGV0IGksIGw7XHJcbiAgICAgICAgICAgIGZvciAoaSA9IDAsIGwgPSB0aGlzLmVmZmVjdHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVmZmVjdHNbaV0uc3RvcCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZvciAoaSA9IDAsIGwgPSB0aGlzLmNsZWFudXBzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhbnVwc1tpXSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNjb3Blcykge1xyXG4gICAgICAgICAgICAgICAgZm9yIChpID0gMCwgbCA9IHRoaXMuc2NvcGVzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2NvcGVzW2ldLnN0b3AodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gbmVzdGVkIHNjb3BlLCBkZXJlZmVyZW5jZSBmcm9tIHBhcmVudCB0byBhdm9pZCBtZW1vcnkgbGVha3NcclxuICAgICAgICAgICAgaWYgKHRoaXMucGFyZW50ICYmICFmcm9tUGFyZW50KSB7XHJcbiAgICAgICAgICAgICAgICAvLyBvcHRpbWl6ZWQgTygxKSByZW1vdmFsXHJcbiAgICAgICAgICAgICAgICBjb25zdCBsYXN0ID0gdGhpcy5wYXJlbnQuc2NvcGVzLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGxhc3QgJiYgbGFzdCAhPT0gdGhpcykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnNjb3Blc1t0aGlzLmluZGV4XSA9IGxhc3Q7XHJcbiAgICAgICAgICAgICAgICAgICAgbGFzdC5pbmRleCA9IHRoaXMuaW5kZXg7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZWZmZWN0U2NvcGUoZGV0YWNoZWQpIHtcclxuICAgIHJldHVybiBuZXcgRWZmZWN0U2NvcGUoZGV0YWNoZWQpO1xyXG59XHJcbmZ1bmN0aW9uIHJlY29yZEVmZmVjdFNjb3BlKGVmZmVjdCwgc2NvcGUgPSBhY3RpdmVFZmZlY3RTY29wZSkge1xyXG4gICAgaWYgKHNjb3BlICYmIHNjb3BlLmFjdGl2ZSkge1xyXG4gICAgICAgIHNjb3BlLmVmZmVjdHMucHVzaChlZmZlY3QpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGdldEN1cnJlbnRTY29wZSgpIHtcclxuICAgIHJldHVybiBhY3RpdmVFZmZlY3RTY29wZTtcclxufVxyXG5mdW5jdGlvbiBvblNjb3BlRGlzcG9zZShmbikge1xyXG4gICAgaWYgKGFjdGl2ZUVmZmVjdFNjb3BlKSB7XHJcbiAgICAgICAgYWN0aXZlRWZmZWN0U2NvcGUuY2xlYW51cHMucHVzaChmbik7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICB3YXJuKGBvblNjb3BlRGlzcG9zZSgpIGlzIGNhbGxlZCB3aGVuIHRoZXJlIGlzIG5vIGFjdGl2ZSBlZmZlY3Qgc2NvcGVgICtcclxuICAgICAgICAgICAgYCB0byBiZSBhc3NvY2lhdGVkIHdpdGguYCk7XHJcbiAgICB9XHJcbn1cblxuY29uc3QgY3JlYXRlRGVwID0gKGVmZmVjdHMpID0+IHtcclxuICAgIGNvbnN0IGRlcCA9IG5ldyBTZXQoZWZmZWN0cyk7XHJcbiAgICBkZXAudyA9IDA7XHJcbiAgICBkZXAubiA9IDA7XHJcbiAgICByZXR1cm4gZGVwO1xyXG59O1xyXG5jb25zdCB3YXNUcmFja2VkID0gKGRlcCkgPT4gKGRlcC53ICYgdHJhY2tPcEJpdCkgPiAwO1xyXG5jb25zdCBuZXdUcmFja2VkID0gKGRlcCkgPT4gKGRlcC5uICYgdHJhY2tPcEJpdCkgPiAwO1xyXG5jb25zdCBpbml0RGVwTWFya2VycyA9ICh7IGRlcHMgfSkgPT4ge1xyXG4gICAgaWYgKGRlcHMubGVuZ3RoKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZXBzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGRlcHNbaV0udyB8PSB0cmFja09wQml0OyAvLyBzZXQgd2FzIHRyYWNrZWRcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XHJcbmNvbnN0IGZpbmFsaXplRGVwTWFya2VycyA9IChlZmZlY3QpID0+IHtcclxuICAgIGNvbnN0IHsgZGVwcyB9ID0gZWZmZWN0O1xyXG4gICAgaWYgKGRlcHMubGVuZ3RoKSB7XHJcbiAgICAgICAgbGV0IHB0ciA9IDA7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZXBzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRlcCA9IGRlcHNbaV07XHJcbiAgICAgICAgICAgIGlmICh3YXNUcmFja2VkKGRlcCkgJiYgIW5ld1RyYWNrZWQoZGVwKSkge1xyXG4gICAgICAgICAgICAgICAgZGVwLmRlbGV0ZShlZmZlY3QpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZGVwc1twdHIrK10gPSBkZXA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gY2xlYXIgYml0c1xyXG4gICAgICAgICAgICBkZXAudyAmPSB+dHJhY2tPcEJpdDtcclxuICAgICAgICAgICAgZGVwLm4gJj0gfnRyYWNrT3BCaXQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRlcHMubGVuZ3RoID0gcHRyO1xyXG4gICAgfVxyXG59O1xuXG5jb25zdCB0YXJnZXRNYXAgPSBuZXcgV2Vha01hcCgpO1xyXG4vLyBUaGUgbnVtYmVyIG9mIGVmZmVjdHMgY3VycmVudGx5IGJlaW5nIHRyYWNrZWQgcmVjdXJzaXZlbHkuXHJcbmxldCBlZmZlY3RUcmFja0RlcHRoID0gMDtcclxubGV0IHRyYWNrT3BCaXQgPSAxO1xyXG4vKipcclxuICogVGhlIGJpdHdpc2UgdHJhY2sgbWFya2VycyBzdXBwb3J0IGF0IG1vc3QgMzAgbGV2ZWxzIG9mIHJlY3Vyc2lvbi5cclxuICogVGhpcyB2YWx1ZSBpcyBjaG9zZW4gdG8gZW5hYmxlIG1vZGVybiBKUyBlbmdpbmVzIHRvIHVzZSBhIFNNSSBvbiBhbGwgcGxhdGZvcm1zLlxyXG4gKiBXaGVuIHJlY3Vyc2lvbiBkZXB0aCBpcyBncmVhdGVyLCBmYWxsIGJhY2sgdG8gdXNpbmcgYSBmdWxsIGNsZWFudXAuXHJcbiAqL1xyXG5jb25zdCBtYXhNYXJrZXJCaXRzID0gMzA7XHJcbmxldCBhY3RpdmVFZmZlY3Q7XHJcbmNvbnN0IElURVJBVEVfS0VZID0gU3ltYm9sKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/ICdpdGVyYXRlJyA6ICcnKTtcclxuY29uc3QgTUFQX0tFWV9JVEVSQVRFX0tFWSA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyAnTWFwIGtleSBpdGVyYXRlJyA6ICcnKTtcclxuY2xhc3MgUmVhY3RpdmVFZmZlY3Qge1xyXG4gICAgY29uc3RydWN0b3IoZm4sIHNjaGVkdWxlciA9IG51bGwsIHNjb3BlKSB7XHJcbiAgICAgICAgdGhpcy5mbiA9IGZuO1xyXG4gICAgICAgIHRoaXMuc2NoZWR1bGVyID0gc2NoZWR1bGVyO1xyXG4gICAgICAgIHRoaXMuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmRlcHMgPSBbXTtcclxuICAgICAgICB0aGlzLnBhcmVudCA9IHVuZGVmaW5lZDtcclxuICAgICAgICByZWNvcmRFZmZlY3RTY29wZSh0aGlzLCBzY29wZSk7XHJcbiAgICB9XHJcbiAgICBydW4oKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmFjdGl2ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5mbigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgcGFyZW50ID0gYWN0aXZlRWZmZWN0O1xyXG4gICAgICAgIGxldCBsYXN0U2hvdWxkVHJhY2sgPSBzaG91bGRUcmFjaztcclxuICAgICAgICB3aGlsZSAocGFyZW50KSB7XHJcbiAgICAgICAgICAgIGlmIChwYXJlbnQgPT09IHRoaXMpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICB0aGlzLnBhcmVudCA9IGFjdGl2ZUVmZmVjdDtcclxuICAgICAgICAgICAgYWN0aXZlRWZmZWN0ID0gdGhpcztcclxuICAgICAgICAgICAgc2hvdWxkVHJhY2sgPSB0cnVlO1xyXG4gICAgICAgICAgICB0cmFja09wQml0ID0gMSA8PCArK2VmZmVjdFRyYWNrRGVwdGg7XHJcbiAgICAgICAgICAgIGlmIChlZmZlY3RUcmFja0RlcHRoIDw9IG1heE1hcmtlckJpdHMpIHtcclxuICAgICAgICAgICAgICAgIGluaXREZXBNYXJrZXJzKHRoaXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY2xlYW51cEVmZmVjdCh0aGlzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5mbigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaW5hbGx5IHtcclxuICAgICAgICAgICAgaWYgKGVmZmVjdFRyYWNrRGVwdGggPD0gbWF4TWFya2VyQml0cykge1xyXG4gICAgICAgICAgICAgICAgZmluYWxpemVEZXBNYXJrZXJzKHRoaXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRyYWNrT3BCaXQgPSAxIDw8IC0tZWZmZWN0VHJhY2tEZXB0aDtcclxuICAgICAgICAgICAgYWN0aXZlRWZmZWN0ID0gdGhpcy5wYXJlbnQ7XHJcbiAgICAgICAgICAgIHNob3VsZFRyYWNrID0gbGFzdFNob3VsZFRyYWNrO1xyXG4gICAgICAgICAgICB0aGlzLnBhcmVudCA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZGVmZXJTdG9wKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3AoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHN0b3AoKSB7XHJcbiAgICAgICAgLy8gc3RvcHBlZCB3aGlsZSBydW5uaW5nIGl0c2VsZiAtIGRlZmVyIHRoZSBjbGVhbnVwXHJcbiAgICAgICAgaWYgKGFjdGl2ZUVmZmVjdCA9PT0gdGhpcykge1xyXG4gICAgICAgICAgICB0aGlzLmRlZmVyU3RvcCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMuYWN0aXZlKSB7XHJcbiAgICAgICAgICAgIGNsZWFudXBFZmZlY3QodGhpcyk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm9uU3RvcCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vblN0b3AoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBjbGVhbnVwRWZmZWN0KGVmZmVjdCkge1xyXG4gICAgY29uc3QgeyBkZXBzIH0gPSBlZmZlY3Q7XHJcbiAgICBpZiAoZGVwcy5sZW5ndGgpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRlcHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgZGVwc1tpXS5kZWxldGUoZWZmZWN0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZGVwcy5sZW5ndGggPSAwO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGVmZmVjdChmbiwgb3B0aW9ucykge1xyXG4gICAgaWYgKGZuLmVmZmVjdCkge1xyXG4gICAgICAgIGZuID0gZm4uZWZmZWN0LmZuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgX2VmZmVjdCA9IG5ldyBSZWFjdGl2ZUVmZmVjdChmbik7XHJcbiAgICBpZiAob3B0aW9ucykge1xyXG4gICAgICAgIGV4dGVuZChfZWZmZWN0LCBvcHRpb25zKTtcclxuICAgICAgICBpZiAob3B0aW9ucy5zY29wZSlcclxuICAgICAgICAgICAgcmVjb3JkRWZmZWN0U2NvcGUoX2VmZmVjdCwgb3B0aW9ucy5zY29wZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoIW9wdGlvbnMgfHwgIW9wdGlvbnMubGF6eSkge1xyXG4gICAgICAgIF9lZmZlY3QucnVuKCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBydW5uZXIgPSBfZWZmZWN0LnJ1bi5iaW5kKF9lZmZlY3QpO1xyXG4gICAgcnVubmVyLmVmZmVjdCA9IF9lZmZlY3Q7XHJcbiAgICByZXR1cm4gcnVubmVyO1xyXG59XHJcbmZ1bmN0aW9uIHN0b3AocnVubmVyKSB7XHJcbiAgICBydW5uZXIuZWZmZWN0LnN0b3AoKTtcclxufVxyXG5sZXQgc2hvdWxkVHJhY2sgPSB0cnVlO1xyXG5jb25zdCB0cmFja1N0YWNrID0gW107XHJcbmZ1bmN0aW9uIHBhdXNlVHJhY2tpbmcoKSB7XHJcbiAgICB0cmFja1N0YWNrLnB1c2goc2hvdWxkVHJhY2spO1xyXG4gICAgc2hvdWxkVHJhY2sgPSBmYWxzZTtcclxufVxyXG5mdW5jdGlvbiBlbmFibGVUcmFja2luZygpIHtcclxuICAgIHRyYWNrU3RhY2sucHVzaChzaG91bGRUcmFjayk7XHJcbiAgICBzaG91bGRUcmFjayA9IHRydWU7XHJcbn1cclxuZnVuY3Rpb24gcmVzZXRUcmFja2luZygpIHtcclxuICAgIGNvbnN0IGxhc3QgPSB0cmFja1N0YWNrLnBvcCgpO1xyXG4gICAgc2hvdWxkVHJhY2sgPSBsYXN0ID09PSB1bmRlZmluZWQgPyB0cnVlIDogbGFzdDtcclxufVxyXG5mdW5jdGlvbiB0cmFjayh0YXJnZXQsIHR5cGUsIGtleSkge1xyXG4gICAgaWYgKHNob3VsZFRyYWNrICYmIGFjdGl2ZUVmZmVjdCkge1xyXG4gICAgICAgIGxldCBkZXBzTWFwID0gdGFyZ2V0TWFwLmdldCh0YXJnZXQpO1xyXG4gICAgICAgIGlmICghZGVwc01hcCkge1xyXG4gICAgICAgICAgICB0YXJnZXRNYXAuc2V0KHRhcmdldCwgKGRlcHNNYXAgPSBuZXcgTWFwKCkpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGRlcCA9IGRlcHNNYXAuZ2V0KGtleSk7XHJcbiAgICAgICAgaWYgKCFkZXApIHtcclxuICAgICAgICAgICAgZGVwc01hcC5zZXQoa2V5LCAoZGVwID0gY3JlYXRlRGVwKCkpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZXZlbnRJbmZvID0gKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpXHJcbiAgICAgICAgICAgID8geyBlZmZlY3Q6IGFjdGl2ZUVmZmVjdCwgdGFyZ2V0LCB0eXBlLCBrZXkgfVxyXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcclxuICAgICAgICB0cmFja0VmZmVjdHMoZGVwLCBldmVudEluZm8pO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHRyYWNrRWZmZWN0cyhkZXAsIGRlYnVnZ2VyRXZlbnRFeHRyYUluZm8pIHtcclxuICAgIGxldCBzaG91bGRUcmFjayA9IGZhbHNlO1xyXG4gICAgaWYgKGVmZmVjdFRyYWNrRGVwdGggPD0gbWF4TWFya2VyQml0cykge1xyXG4gICAgICAgIGlmICghbmV3VHJhY2tlZChkZXApKSB7XHJcbiAgICAgICAgICAgIGRlcC5uIHw9IHRyYWNrT3BCaXQ7IC8vIHNldCBuZXdseSB0cmFja2VkXHJcbiAgICAgICAgICAgIHNob3VsZFRyYWNrID0gIXdhc1RyYWNrZWQoZGVwKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBGdWxsIGNsZWFudXAgbW9kZS5cclxuICAgICAgICBzaG91bGRUcmFjayA9ICFkZXAuaGFzKGFjdGl2ZUVmZmVjdCk7XHJcbiAgICB9XHJcbiAgICBpZiAoc2hvdWxkVHJhY2spIHtcclxuICAgICAgICBkZXAuYWRkKGFjdGl2ZUVmZmVjdCk7XHJcbiAgICAgICAgYWN0aXZlRWZmZWN0LmRlcHMucHVzaChkZXApO1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgYWN0aXZlRWZmZWN0Lm9uVHJhY2spIHtcclxuICAgICAgICAgICAgYWN0aXZlRWZmZWN0Lm9uVHJhY2soT2JqZWN0LmFzc2lnbih7IGVmZmVjdDogYWN0aXZlRWZmZWN0IH0sIGRlYnVnZ2VyRXZlbnRFeHRyYUluZm8pKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gdHJpZ2dlcih0YXJnZXQsIHR5cGUsIGtleSwgbmV3VmFsdWUsIG9sZFZhbHVlLCBvbGRUYXJnZXQpIHtcclxuICAgIGNvbnN0IGRlcHNNYXAgPSB0YXJnZXRNYXAuZ2V0KHRhcmdldCk7XHJcbiAgICBpZiAoIWRlcHNNYXApIHtcclxuICAgICAgICAvLyBuZXZlciBiZWVuIHRyYWNrZWRcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgZGVwcyA9IFtdO1xyXG4gICAgaWYgKHR5cGUgPT09IFwiY2xlYXJcIiAvKiBUcmlnZ2VyT3BUeXBlcy5DTEVBUiAqLykge1xyXG4gICAgICAgIC8vIGNvbGxlY3Rpb24gYmVpbmcgY2xlYXJlZFxyXG4gICAgICAgIC8vIHRyaWdnZXIgYWxsIGVmZmVjdHMgZm9yIHRhcmdldFxyXG4gICAgICAgIGRlcHMgPSBbLi4uZGVwc01hcC52YWx1ZXMoKV07XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChrZXkgPT09ICdsZW5ndGgnICYmIGlzQXJyYXkodGFyZ2V0KSkge1xyXG4gICAgICAgIGRlcHNNYXAuZm9yRWFjaCgoZGVwLCBrZXkpID0+IHtcclxuICAgICAgICAgICAgaWYgKGtleSA9PT0gJ2xlbmd0aCcgfHwga2V5ID49IG5ld1ZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBkZXBzLnB1c2goZGVwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgLy8gc2NoZWR1bGUgcnVucyBmb3IgU0VUIHwgQUREIHwgREVMRVRFXHJcbiAgICAgICAgaWYgKGtleSAhPT0gdm9pZCAwKSB7XHJcbiAgICAgICAgICAgIGRlcHMucHVzaChkZXBzTWFwLmdldChrZXkpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gYWxzbyBydW4gZm9yIGl0ZXJhdGlvbiBrZXkgb24gQUREIHwgREVMRVRFIHwgTWFwLlNFVFxyXG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIFwiYWRkXCIgLyogVHJpZ2dlck9wVHlwZXMuQUREICovOlxyXG4gICAgICAgICAgICAgICAgaWYgKCFpc0FycmF5KHRhcmdldCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBkZXBzLnB1c2goZGVwc01hcC5nZXQoSVRFUkFURV9LRVkpKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNNYXAodGFyZ2V0KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXBzLnB1c2goZGVwc01hcC5nZXQoTUFQX0tFWV9JVEVSQVRFX0tFWSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzSW50ZWdlcktleShrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gbmV3IGluZGV4IGFkZGVkIHRvIGFycmF5IC0+IGxlbmd0aCBjaGFuZ2VzXHJcbiAgICAgICAgICAgICAgICAgICAgZGVwcy5wdXNoKGRlcHNNYXAuZ2V0KCdsZW5ndGgnKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcImRlbGV0ZVwiIC8qIFRyaWdnZXJPcFR5cGVzLkRFTEVURSAqLzpcclxuICAgICAgICAgICAgICAgIGlmICghaXNBcnJheSh0YXJnZXQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVwcy5wdXNoKGRlcHNNYXAuZ2V0KElURVJBVEVfS0VZKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWFwKHRhcmdldCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVwcy5wdXNoKGRlcHNNYXAuZ2V0KE1BUF9LRVlfSVRFUkFURV9LRVkpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcInNldFwiIC8qIFRyaWdnZXJPcFR5cGVzLlNFVCAqLzpcclxuICAgICAgICAgICAgICAgIGlmIChpc01hcCh0YXJnZXQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVwcy5wdXNoKGRlcHNNYXAuZ2V0KElURVJBVEVfS0VZKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBldmVudEluZm8gPSAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylcclxuICAgICAgICA/IHsgdGFyZ2V0LCB0eXBlLCBrZXksIG5ld1ZhbHVlLCBvbGRWYWx1ZSwgb2xkVGFyZ2V0IH1cclxuICAgICAgICA6IHVuZGVmaW5lZDtcclxuICAgIGlmIChkZXBzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgIGlmIChkZXBzWzBdKSB7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgIHRyaWdnZXJFZmZlY3RzKGRlcHNbMF0sIGV2ZW50SW5mbyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0cmlnZ2VyRWZmZWN0cyhkZXBzWzBdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGVmZmVjdHMgPSBbXTtcclxuICAgICAgICBmb3IgKGNvbnN0IGRlcCBvZiBkZXBzKSB7XHJcbiAgICAgICAgICAgIGlmIChkZXApIHtcclxuICAgICAgICAgICAgICAgIGVmZmVjdHMucHVzaCguLi5kZXApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgdHJpZ2dlckVmZmVjdHMoY3JlYXRlRGVwKGVmZmVjdHMpLCBldmVudEluZm8pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdHJpZ2dlckVmZmVjdHMoY3JlYXRlRGVwKGVmZmVjdHMpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gdHJpZ2dlckVmZmVjdHMoZGVwLCBkZWJ1Z2dlckV2ZW50RXh0cmFJbmZvKSB7XHJcbiAgICAvLyBzcHJlYWQgaW50byBhcnJheSBmb3Igc3RhYmlsaXphdGlvblxyXG4gICAgY29uc3QgZWZmZWN0cyA9IGlzQXJyYXkoZGVwKSA/IGRlcCA6IFsuLi5kZXBdO1xyXG4gICAgZm9yIChjb25zdCBlZmZlY3Qgb2YgZWZmZWN0cykge1xyXG4gICAgICAgIGlmIChlZmZlY3QuY29tcHV0ZWQpIHtcclxuICAgICAgICAgICAgdHJpZ2dlckVmZmVjdChlZmZlY3QsIGRlYnVnZ2VyRXZlbnRFeHRyYUluZm8pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGZvciAoY29uc3QgZWZmZWN0IG9mIGVmZmVjdHMpIHtcclxuICAgICAgICBpZiAoIWVmZmVjdC5jb21wdXRlZCkge1xyXG4gICAgICAgICAgICB0cmlnZ2VyRWZmZWN0KGVmZmVjdCwgZGVidWdnZXJFdmVudEV4dHJhSW5mbyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHRyaWdnZXJFZmZlY3QoZWZmZWN0LCBkZWJ1Z2dlckV2ZW50RXh0cmFJbmZvKSB7XHJcbiAgICBpZiAoZWZmZWN0ICE9PSBhY3RpdmVFZmZlY3QgfHwgZWZmZWN0LmFsbG93UmVjdXJzZSkge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgZWZmZWN0Lm9uVHJpZ2dlcikge1xyXG4gICAgICAgICAgICBlZmZlY3Qub25UcmlnZ2VyKGV4dGVuZCh7IGVmZmVjdCB9LCBkZWJ1Z2dlckV2ZW50RXh0cmFJbmZvKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChlZmZlY3Quc2NoZWR1bGVyKSB7XHJcbiAgICAgICAgICAgIGVmZmVjdC5zY2hlZHVsZXIoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGVmZmVjdC5ydW4oKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cblxuY29uc3QgaXNOb25UcmFja2FibGVLZXlzID0gLyojX19QVVJFX18qLyBtYWtlTWFwKGBfX3Byb3RvX18sX192X2lzUmVmLF9faXNWdWVgKTtcclxuY29uc3QgYnVpbHRJblN5bWJvbHMgPSBuZXcgU2V0KFxyXG4vKiNfX1BVUkVfXyovXHJcbk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKFN5bWJvbClcclxuICAgIC8vIGlvczEwLnggT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoU3ltYm9sKSBjYW4gZW51bWVyYXRlICdhcmd1bWVudHMnIGFuZCAnY2FsbGVyJ1xyXG4gICAgLy8gYnV0IGFjY2Vzc2luZyB0aGVtIG9uIFN5bWJvbCBsZWFkcyB0byBUeXBlRXJyb3IgYmVjYXVzZSBTeW1ib2wgaXMgYSBzdHJpY3QgbW9kZVxyXG4gICAgLy8gZnVuY3Rpb25cclxuICAgIC5maWx0ZXIoa2V5ID0+IGtleSAhPT0gJ2FyZ3VtZW50cycgJiYga2V5ICE9PSAnY2FsbGVyJylcclxuICAgIC5tYXAoa2V5ID0+IFN5bWJvbFtrZXldKVxyXG4gICAgLmZpbHRlcihpc1N5bWJvbCkpO1xyXG5jb25zdCBnZXQgPSAvKiNfX1BVUkVfXyovIGNyZWF0ZUdldHRlcigpO1xyXG5jb25zdCBzaGFsbG93R2V0ID0gLyojX19QVVJFX18qLyBjcmVhdGVHZXR0ZXIoZmFsc2UsIHRydWUpO1xyXG5jb25zdCByZWFkb25seUdldCA9IC8qI19fUFVSRV9fKi8gY3JlYXRlR2V0dGVyKHRydWUpO1xyXG5jb25zdCBzaGFsbG93UmVhZG9ubHlHZXQgPSAvKiNfX1BVUkVfXyovIGNyZWF0ZUdldHRlcih0cnVlLCB0cnVlKTtcclxuY29uc3QgYXJyYXlJbnN0cnVtZW50YXRpb25zID0gLyojX19QVVJFX18qLyBjcmVhdGVBcnJheUluc3RydW1lbnRhdGlvbnMoKTtcclxuZnVuY3Rpb24gY3JlYXRlQXJyYXlJbnN0cnVtZW50YXRpb25zKCkge1xyXG4gICAgY29uc3QgaW5zdHJ1bWVudGF0aW9ucyA9IHt9O1xyXG4gICAgWydpbmNsdWRlcycsICdpbmRleE9mJywgJ2xhc3RJbmRleE9mJ10uZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgIGluc3RydW1lbnRhdGlvbnNba2V5XSA9IGZ1bmN0aW9uICguLi5hcmdzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFyciA9IHRvUmF3KHRoaXMpO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgbCA9IHRoaXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB0cmFjayhhcnIsIFwiZ2V0XCIgLyogVHJhY2tPcFR5cGVzLkdFVCAqLywgaSArICcnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyB3ZSBydW4gdGhlIG1ldGhvZCB1c2luZyB0aGUgb3JpZ2luYWwgYXJncyBmaXJzdCAod2hpY2ggbWF5IGJlIHJlYWN0aXZlKVxyXG4gICAgICAgICAgICBjb25zdCByZXMgPSBhcnJba2V5XSguLi5hcmdzKTtcclxuICAgICAgICAgICAgaWYgKHJlcyA9PT0gLTEgfHwgcmVzID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgLy8gaWYgdGhhdCBkaWRuJ3Qgd29yaywgcnVuIGl0IGFnYWluIHVzaW5nIHJhdyB2YWx1ZXMuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYXJyW2tleV0oLi4uYXJncy5tYXAodG9SYXcpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZXM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgfSk7XHJcbiAgICBbJ3B1c2gnLCAncG9wJywgJ3NoaWZ0JywgJ3Vuc2hpZnQnLCAnc3BsaWNlJ10uZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgIGluc3RydW1lbnRhdGlvbnNba2V5XSA9IGZ1bmN0aW9uICguLi5hcmdzKSB7XHJcbiAgICAgICAgICAgIHBhdXNlVHJhY2tpbmcoKTtcclxuICAgICAgICAgICAgY29uc3QgcmVzID0gdG9SYXcodGhpcylba2V5XS5hcHBseSh0aGlzLCBhcmdzKTtcclxuICAgICAgICAgICAgcmVzZXRUcmFja2luZygpO1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICAgIH07XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBpbnN0cnVtZW50YXRpb25zO1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUdldHRlcihpc1JlYWRvbmx5ID0gZmFsc2UsIHNoYWxsb3cgPSBmYWxzZSkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uIGdldCh0YXJnZXQsIGtleSwgcmVjZWl2ZXIpIHtcclxuICAgICAgICBpZiAoa2V5ID09PSBcIl9fdl9pc1JlYWN0aXZlXCIgLyogUmVhY3RpdmVGbGFncy5JU19SRUFDVElWRSAqLykge1xyXG4gICAgICAgICAgICByZXR1cm4gIWlzUmVhZG9ubHk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGtleSA9PT0gXCJfX3ZfaXNSZWFkb25seVwiIC8qIFJlYWN0aXZlRmxhZ3MuSVNfUkVBRE9OTFkgKi8pIHtcclxuICAgICAgICAgICAgcmV0dXJuIGlzUmVhZG9ubHk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGtleSA9PT0gXCJfX3ZfaXNTaGFsbG93XCIgLyogUmVhY3RpdmVGbGFncy5JU19TSEFMTE9XICovKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBzaGFsbG93O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChrZXkgPT09IFwiX192X3Jhd1wiIC8qIFJlYWN0aXZlRmxhZ3MuUkFXICovICYmXHJcbiAgICAgICAgICAgIHJlY2VpdmVyID09PVxyXG4gICAgICAgICAgICAgICAgKGlzUmVhZG9ubHlcclxuICAgICAgICAgICAgICAgICAgICA/IHNoYWxsb3dcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzaGFsbG93UmVhZG9ubHlNYXBcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiByZWFkb25seU1hcFxyXG4gICAgICAgICAgICAgICAgICAgIDogc2hhbGxvd1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNoYWxsb3dSZWFjdGl2ZU1hcFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHJlYWN0aXZlTWFwKS5nZXQodGFyZ2V0KSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0O1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB0YXJnZXRJc0FycmF5ID0gaXNBcnJheSh0YXJnZXQpO1xyXG4gICAgICAgIGlmICghaXNSZWFkb25seSAmJiB0YXJnZXRJc0FycmF5ICYmIGhhc093bihhcnJheUluc3RydW1lbnRhdGlvbnMsIGtleSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuZ2V0KGFycmF5SW5zdHJ1bWVudGF0aW9ucywga2V5LCByZWNlaXZlcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHJlcyA9IFJlZmxlY3QuZ2V0KHRhcmdldCwga2V5LCByZWNlaXZlcik7XHJcbiAgICAgICAgaWYgKGlzU3ltYm9sKGtleSkgPyBidWlsdEluU3ltYm9scy5oYXMoa2V5KSA6IGlzTm9uVHJhY2thYmxlS2V5cyhrZXkpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghaXNSZWFkb25seSkge1xyXG4gICAgICAgICAgICB0cmFjayh0YXJnZXQsIFwiZ2V0XCIgLyogVHJhY2tPcFR5cGVzLkdFVCAqLywga2V5KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHNoYWxsb3cpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlzUmVmKHJlcykpIHtcclxuICAgICAgICAgICAgLy8gcmVmIHVud3JhcHBpbmcgLSBza2lwIHVud3JhcCBmb3IgQXJyYXkgKyBpbnRlZ2VyIGtleS5cclxuICAgICAgICAgICAgcmV0dXJuIHRhcmdldElzQXJyYXkgJiYgaXNJbnRlZ2VyS2V5KGtleSkgPyByZXMgOiByZXMudmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpc09iamVjdChyZXMpKSB7XHJcbiAgICAgICAgICAgIC8vIENvbnZlcnQgcmV0dXJuZWQgdmFsdWUgaW50byBhIHByb3h5IGFzIHdlbGwuIHdlIGRvIHRoZSBpc09iamVjdCBjaGVja1xyXG4gICAgICAgICAgICAvLyBoZXJlIHRvIGF2b2lkIGludmFsaWQgdmFsdWUgd2FybmluZy4gQWxzbyBuZWVkIHRvIGxhenkgYWNjZXNzIHJlYWRvbmx5XHJcbiAgICAgICAgICAgIC8vIGFuZCByZWFjdGl2ZSBoZXJlIHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY3kuXHJcbiAgICAgICAgICAgIHJldHVybiBpc1JlYWRvbmx5ID8gcmVhZG9ubHkocmVzKSA6IHJlYWN0aXZlKHJlcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXM7XHJcbiAgICB9O1xyXG59XHJcbmNvbnN0IHNldCA9IC8qI19fUFVSRV9fKi8gY3JlYXRlU2V0dGVyKCk7XHJcbmNvbnN0IHNoYWxsb3dTZXQgPSAvKiNfX1BVUkVfXyovIGNyZWF0ZVNldHRlcih0cnVlKTtcclxuZnVuY3Rpb24gY3JlYXRlU2V0dGVyKHNoYWxsb3cgPSBmYWxzZSkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uIHNldCh0YXJnZXQsIGtleSwgdmFsdWUsIHJlY2VpdmVyKSB7XHJcbiAgICAgICAgbGV0IG9sZFZhbHVlID0gdGFyZ2V0W2tleV07XHJcbiAgICAgICAgaWYgKGlzUmVhZG9ubHkob2xkVmFsdWUpICYmIGlzUmVmKG9sZFZhbHVlKSAmJiAhaXNSZWYodmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFzaGFsbG93KSB7XHJcbiAgICAgICAgICAgIGlmICghaXNTaGFsbG93KHZhbHVlKSAmJiAhaXNSZWFkb25seSh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIG9sZFZhbHVlID0gdG9SYXcob2xkVmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgdmFsdWUgPSB0b1Jhdyh2YWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCFpc0FycmF5KHRhcmdldCkgJiYgaXNSZWYob2xkVmFsdWUpICYmICFpc1JlZih2YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIG9sZFZhbHVlLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBoYWRLZXkgPSBpc0FycmF5KHRhcmdldCkgJiYgaXNJbnRlZ2VyS2V5KGtleSlcclxuICAgICAgICAgICAgPyBOdW1iZXIoa2V5KSA8IHRhcmdldC5sZW5ndGhcclxuICAgICAgICAgICAgOiBoYXNPd24odGFyZ2V0LCBrZXkpO1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFJlZmxlY3Quc2V0KHRhcmdldCwga2V5LCB2YWx1ZSwgcmVjZWl2ZXIpO1xyXG4gICAgICAgIC8vIGRvbid0IHRyaWdnZXIgaWYgdGFyZ2V0IGlzIHNvbWV0aGluZyB1cCBpbiB0aGUgcHJvdG90eXBlIGNoYWluIG9mIG9yaWdpbmFsXHJcbiAgICAgICAgaWYgKHRhcmdldCA9PT0gdG9SYXcocmVjZWl2ZXIpKSB7XHJcbiAgICAgICAgICAgIGlmICghaGFkS2V5KSB7XHJcbiAgICAgICAgICAgICAgICB0cmlnZ2VyKHRhcmdldCwgXCJhZGRcIiAvKiBUcmlnZ2VyT3BUeXBlcy5BREQgKi8sIGtleSwgdmFsdWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGhhc0NoYW5nZWQodmFsdWUsIG9sZFZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgdHJpZ2dlcih0YXJnZXQsIFwic2V0XCIgLyogVHJpZ2dlck9wVHlwZXMuU0VUICovLCBrZXksIHZhbHVlLCBvbGRWYWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gZGVsZXRlUHJvcGVydHkodGFyZ2V0LCBrZXkpIHtcclxuICAgIGNvbnN0IGhhZEtleSA9IGhhc093bih0YXJnZXQsIGtleSk7XHJcbiAgICBjb25zdCBvbGRWYWx1ZSA9IHRhcmdldFtrZXldO1xyXG4gICAgY29uc3QgcmVzdWx0ID0gUmVmbGVjdC5kZWxldGVQcm9wZXJ0eSh0YXJnZXQsIGtleSk7XHJcbiAgICBpZiAocmVzdWx0ICYmIGhhZEtleSkge1xyXG4gICAgICAgIHRyaWdnZXIodGFyZ2V0LCBcImRlbGV0ZVwiIC8qIFRyaWdnZXJPcFR5cGVzLkRFTEVURSAqLywga2V5LCB1bmRlZmluZWQsIG9sZFZhbHVlKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuZnVuY3Rpb24gaGFzKHRhcmdldCwga2V5KSB7XHJcbiAgICBjb25zdCByZXN1bHQgPSBSZWZsZWN0Lmhhcyh0YXJnZXQsIGtleSk7XHJcbiAgICBpZiAoIWlzU3ltYm9sKGtleSkgfHwgIWJ1aWx0SW5TeW1ib2xzLmhhcyhrZXkpKSB7XHJcbiAgICAgICAgdHJhY2sodGFyZ2V0LCBcImhhc1wiIC8qIFRyYWNrT3BUeXBlcy5IQVMgKi8sIGtleSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcbmZ1bmN0aW9uIG93bktleXModGFyZ2V0KSB7XHJcbiAgICB0cmFjayh0YXJnZXQsIFwiaXRlcmF0ZVwiIC8qIFRyYWNrT3BUeXBlcy5JVEVSQVRFICovLCBpc0FycmF5KHRhcmdldCkgPyAnbGVuZ3RoJyA6IElURVJBVEVfS0VZKTtcclxuICAgIHJldHVybiBSZWZsZWN0Lm93bktleXModGFyZ2V0KTtcclxufVxyXG5jb25zdCBtdXRhYmxlSGFuZGxlcnMgPSB7XHJcbiAgICBnZXQsXHJcbiAgICBzZXQsXHJcbiAgICBkZWxldGVQcm9wZXJ0eSxcclxuICAgIGhhcyxcclxuICAgIG93bktleXNcclxufTtcclxuY29uc3QgcmVhZG9ubHlIYW5kbGVycyA9IHtcclxuICAgIGdldDogcmVhZG9ubHlHZXQsXHJcbiAgICBzZXQodGFyZ2V0LCBrZXkpIHtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYFNldCBvcGVyYXRpb24gb24ga2V5IFwiJHtTdHJpbmcoa2V5KX1cIiBmYWlsZWQ6IHRhcmdldCBpcyByZWFkb25seS5gLCB0YXJnZXQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0sXHJcbiAgICBkZWxldGVQcm9wZXJ0eSh0YXJnZXQsIGtleSkge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgd2FybihgRGVsZXRlIG9wZXJhdGlvbiBvbiBrZXkgXCIke1N0cmluZyhrZXkpfVwiIGZhaWxlZDogdGFyZ2V0IGlzIHJlYWRvbmx5LmAsIHRhcmdldCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG59O1xyXG5jb25zdCBzaGFsbG93UmVhY3RpdmVIYW5kbGVycyA9IC8qI19fUFVSRV9fKi8gZXh0ZW5kKHt9LCBtdXRhYmxlSGFuZGxlcnMsIHtcclxuICAgIGdldDogc2hhbGxvd0dldCxcclxuICAgIHNldDogc2hhbGxvd1NldFxyXG59KTtcclxuLy8gUHJvcHMgaGFuZGxlcnMgYXJlIHNwZWNpYWwgaW4gdGhlIHNlbnNlIHRoYXQgaXQgc2hvdWxkIG5vdCB1bndyYXAgdG9wLWxldmVsXHJcbi8vIHJlZnMgKGluIG9yZGVyIHRvIGFsbG93IHJlZnMgdG8gYmUgZXhwbGljaXRseSBwYXNzZWQgZG93biksIGJ1dCBzaG91bGRcclxuLy8gcmV0YWluIHRoZSByZWFjdGl2aXR5IG9mIHRoZSBub3JtYWwgcmVhZG9ubHkgb2JqZWN0LlxyXG5jb25zdCBzaGFsbG93UmVhZG9ubHlIYW5kbGVycyA9IC8qI19fUFVSRV9fKi8gZXh0ZW5kKHt9LCByZWFkb25seUhhbmRsZXJzLCB7XHJcbiAgICBnZXQ6IHNoYWxsb3dSZWFkb25seUdldFxyXG59KTtcblxuY29uc3QgdG9TaGFsbG93ID0gKHZhbHVlKSA9PiB2YWx1ZTtcclxuY29uc3QgZ2V0UHJvdG8gPSAodikgPT4gUmVmbGVjdC5nZXRQcm90b3R5cGVPZih2KTtcclxuZnVuY3Rpb24gZ2V0JDEodGFyZ2V0LCBrZXksIGlzUmVhZG9ubHkgPSBmYWxzZSwgaXNTaGFsbG93ID0gZmFsc2UpIHtcclxuICAgIC8vICMxNzcyOiByZWFkb25seShyZWFjdGl2ZShNYXApKSBzaG91bGQgcmV0dXJuIHJlYWRvbmx5ICsgcmVhY3RpdmUgdmVyc2lvblxyXG4gICAgLy8gb2YgdGhlIHZhbHVlXHJcbiAgICB0YXJnZXQgPSB0YXJnZXRbXCJfX3ZfcmF3XCIgLyogUmVhY3RpdmVGbGFncy5SQVcgKi9dO1xyXG4gICAgY29uc3QgcmF3VGFyZ2V0ID0gdG9SYXcodGFyZ2V0KTtcclxuICAgIGNvbnN0IHJhd0tleSA9IHRvUmF3KGtleSk7XHJcbiAgICBpZiAoIWlzUmVhZG9ubHkpIHtcclxuICAgICAgICBpZiAoa2V5ICE9PSByYXdLZXkpIHtcclxuICAgICAgICAgICAgdHJhY2socmF3VGFyZ2V0LCBcImdldFwiIC8qIFRyYWNrT3BUeXBlcy5HRVQgKi8sIGtleSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRyYWNrKHJhd1RhcmdldCwgXCJnZXRcIiAvKiBUcmFja09wVHlwZXMuR0VUICovLCByYXdLZXkpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBoYXMgfSA9IGdldFByb3RvKHJhd1RhcmdldCk7XHJcbiAgICBjb25zdCB3cmFwID0gaXNTaGFsbG93ID8gdG9TaGFsbG93IDogaXNSZWFkb25seSA/IHRvUmVhZG9ubHkgOiB0b1JlYWN0aXZlO1xyXG4gICAgaWYgKGhhcy5jYWxsKHJhd1RhcmdldCwga2V5KSkge1xyXG4gICAgICAgIHJldHVybiB3cmFwKHRhcmdldC5nZXQoa2V5KSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChoYXMuY2FsbChyYXdUYXJnZXQsIHJhd0tleSkpIHtcclxuICAgICAgICByZXR1cm4gd3JhcCh0YXJnZXQuZ2V0KHJhd0tleSkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGFyZ2V0ICE9PSByYXdUYXJnZXQpIHtcclxuICAgICAgICAvLyAjMzYwMiByZWFkb25seShyZWFjdGl2ZShNYXApKVxyXG4gICAgICAgIC8vIGVuc3VyZSB0aGF0IHRoZSBuZXN0ZWQgcmVhY3RpdmUgYE1hcGAgY2FuIGRvIHRyYWNraW5nIGZvciBpdHNlbGZcclxuICAgICAgICB0YXJnZXQuZ2V0KGtleSk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gaGFzJDEoa2V5LCBpc1JlYWRvbmx5ID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IHRhcmdldCA9IHRoaXNbXCJfX3ZfcmF3XCIgLyogUmVhY3RpdmVGbGFncy5SQVcgKi9dO1xyXG4gICAgY29uc3QgcmF3VGFyZ2V0ID0gdG9SYXcodGFyZ2V0KTtcclxuICAgIGNvbnN0IHJhd0tleSA9IHRvUmF3KGtleSk7XHJcbiAgICBpZiAoIWlzUmVhZG9ubHkpIHtcclxuICAgICAgICBpZiAoa2V5ICE9PSByYXdLZXkpIHtcclxuICAgICAgICAgICAgdHJhY2socmF3VGFyZ2V0LCBcImhhc1wiIC8qIFRyYWNrT3BUeXBlcy5IQVMgKi8sIGtleSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRyYWNrKHJhd1RhcmdldCwgXCJoYXNcIiAvKiBUcmFja09wVHlwZXMuSEFTICovLCByYXdLZXkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGtleSA9PT0gcmF3S2V5XHJcbiAgICAgICAgPyB0YXJnZXQuaGFzKGtleSlcclxuICAgICAgICA6IHRhcmdldC5oYXMoa2V5KSB8fCB0YXJnZXQuaGFzKHJhd0tleSk7XHJcbn1cclxuZnVuY3Rpb24gc2l6ZSh0YXJnZXQsIGlzUmVhZG9ubHkgPSBmYWxzZSkge1xyXG4gICAgdGFyZ2V0ID0gdGFyZ2V0W1wiX192X3Jhd1wiIC8qIFJlYWN0aXZlRmxhZ3MuUkFXICovXTtcclxuICAgICFpc1JlYWRvbmx5ICYmIHRyYWNrKHRvUmF3KHRhcmdldCksIFwiaXRlcmF0ZVwiIC8qIFRyYWNrT3BUeXBlcy5JVEVSQVRFICovLCBJVEVSQVRFX0tFWSk7XHJcbiAgICByZXR1cm4gUmVmbGVjdC5nZXQodGFyZ2V0LCAnc2l6ZScsIHRhcmdldCk7XHJcbn1cclxuZnVuY3Rpb24gYWRkKHZhbHVlKSB7XHJcbiAgICB2YWx1ZSA9IHRvUmF3KHZhbHVlKTtcclxuICAgIGNvbnN0IHRhcmdldCA9IHRvUmF3KHRoaXMpO1xyXG4gICAgY29uc3QgcHJvdG8gPSBnZXRQcm90byh0YXJnZXQpO1xyXG4gICAgY29uc3QgaGFkS2V5ID0gcHJvdG8uaGFzLmNhbGwodGFyZ2V0LCB2YWx1ZSk7XHJcbiAgICBpZiAoIWhhZEtleSkge1xyXG4gICAgICAgIHRhcmdldC5hZGQodmFsdWUpO1xyXG4gICAgICAgIHRyaWdnZXIodGFyZ2V0LCBcImFkZFwiIC8qIFRyaWdnZXJPcFR5cGVzLkFERCAqLywgdmFsdWUsIHZhbHVlKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzO1xyXG59XHJcbmZ1bmN0aW9uIHNldCQxKGtleSwgdmFsdWUpIHtcclxuICAgIHZhbHVlID0gdG9SYXcodmFsdWUpO1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gdG9SYXcodGhpcyk7XHJcbiAgICBjb25zdCB7IGhhcywgZ2V0IH0gPSBnZXRQcm90byh0YXJnZXQpO1xyXG4gICAgbGV0IGhhZEtleSA9IGhhcy5jYWxsKHRhcmdldCwga2V5KTtcclxuICAgIGlmICghaGFkS2V5KSB7XHJcbiAgICAgICAga2V5ID0gdG9SYXcoa2V5KTtcclxuICAgICAgICBoYWRLZXkgPSBoYXMuY2FsbCh0YXJnZXQsIGtleSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICBjaGVja0lkZW50aXR5S2V5cyh0YXJnZXQsIGhhcywga2V5KTtcclxuICAgIH1cclxuICAgIGNvbnN0IG9sZFZhbHVlID0gZ2V0LmNhbGwodGFyZ2V0LCBrZXkpO1xyXG4gICAgdGFyZ2V0LnNldChrZXksIHZhbHVlKTtcclxuICAgIGlmICghaGFkS2V5KSB7XHJcbiAgICAgICAgdHJpZ2dlcih0YXJnZXQsIFwiYWRkXCIgLyogVHJpZ2dlck9wVHlwZXMuQUREICovLCBrZXksIHZhbHVlKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGhhc0NoYW5nZWQodmFsdWUsIG9sZFZhbHVlKSkge1xyXG4gICAgICAgIHRyaWdnZXIodGFyZ2V0LCBcInNldFwiIC8qIFRyaWdnZXJPcFR5cGVzLlNFVCAqLywga2V5LCB2YWx1ZSwgb2xkVmFsdWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXM7XHJcbn1cclxuZnVuY3Rpb24gZGVsZXRlRW50cnkoa2V5KSB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSB0b1Jhdyh0aGlzKTtcclxuICAgIGNvbnN0IHsgaGFzLCBnZXQgfSA9IGdldFByb3RvKHRhcmdldCk7XHJcbiAgICBsZXQgaGFkS2V5ID0gaGFzLmNhbGwodGFyZ2V0LCBrZXkpO1xyXG4gICAgaWYgKCFoYWRLZXkpIHtcclxuICAgICAgICBrZXkgPSB0b1JhdyhrZXkpO1xyXG4gICAgICAgIGhhZEtleSA9IGhhcy5jYWxsKHRhcmdldCwga2V5KTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIGNoZWNrSWRlbnRpdHlLZXlzKHRhcmdldCwgaGFzLCBrZXkpO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgb2xkVmFsdWUgPSBnZXQgPyBnZXQuY2FsbCh0YXJnZXQsIGtleSkgOiB1bmRlZmluZWQ7XHJcbiAgICAvLyBmb3J3YXJkIHRoZSBvcGVyYXRpb24gYmVmb3JlIHF1ZXVlaW5nIHJlYWN0aW9uc1xyXG4gICAgY29uc3QgcmVzdWx0ID0gdGFyZ2V0LmRlbGV0ZShrZXkpO1xyXG4gICAgaWYgKGhhZEtleSkge1xyXG4gICAgICAgIHRyaWdnZXIodGFyZ2V0LCBcImRlbGV0ZVwiIC8qIFRyaWdnZXJPcFR5cGVzLkRFTEVURSAqLywga2V5LCB1bmRlZmluZWQsIG9sZFZhbHVlKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuZnVuY3Rpb24gY2xlYXIoKSB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSB0b1Jhdyh0aGlzKTtcclxuICAgIGNvbnN0IGhhZEl0ZW1zID0gdGFyZ2V0LnNpemUgIT09IDA7XHJcbiAgICBjb25zdCBvbGRUYXJnZXQgPSAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylcclxuICAgICAgICA/IGlzTWFwKHRhcmdldClcclxuICAgICAgICAgICAgPyBuZXcgTWFwKHRhcmdldClcclxuICAgICAgICAgICAgOiBuZXcgU2V0KHRhcmdldClcclxuICAgICAgICA6IHVuZGVmaW5lZDtcclxuICAgIC8vIGZvcndhcmQgdGhlIG9wZXJhdGlvbiBiZWZvcmUgcXVldWVpbmcgcmVhY3Rpb25zXHJcbiAgICBjb25zdCByZXN1bHQgPSB0YXJnZXQuY2xlYXIoKTtcclxuICAgIGlmIChoYWRJdGVtcykge1xyXG4gICAgICAgIHRyaWdnZXIodGFyZ2V0LCBcImNsZWFyXCIgLyogVHJpZ2dlck9wVHlwZXMuQ0xFQVIgKi8sIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBvbGRUYXJnZXQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVGb3JFYWNoKGlzUmVhZG9ubHksIGlzU2hhbGxvdykge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uIGZvckVhY2goY2FsbGJhY2ssIHRoaXNBcmcpIHtcclxuICAgICAgICBjb25zdCBvYnNlcnZlZCA9IHRoaXM7XHJcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gb2JzZXJ2ZWRbXCJfX3ZfcmF3XCIgLyogUmVhY3RpdmVGbGFncy5SQVcgKi9dO1xyXG4gICAgICAgIGNvbnN0IHJhd1RhcmdldCA9IHRvUmF3KHRhcmdldCk7XHJcbiAgICAgICAgY29uc3Qgd3JhcCA9IGlzU2hhbGxvdyA/IHRvU2hhbGxvdyA6IGlzUmVhZG9ubHkgPyB0b1JlYWRvbmx5IDogdG9SZWFjdGl2ZTtcclxuICAgICAgICAhaXNSZWFkb25seSAmJiB0cmFjayhyYXdUYXJnZXQsIFwiaXRlcmF0ZVwiIC8qIFRyYWNrT3BUeXBlcy5JVEVSQVRFICovLCBJVEVSQVRFX0tFWSk7XHJcbiAgICAgICAgcmV0dXJuIHRhcmdldC5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XHJcbiAgICAgICAgICAgIC8vIGltcG9ydGFudDogbWFrZSBzdXJlIHRoZSBjYWxsYmFjayBpc1xyXG4gICAgICAgICAgICAvLyAxLiBpbnZva2VkIHdpdGggdGhlIHJlYWN0aXZlIG1hcCBhcyBgdGhpc2AgYW5kIDNyZCBhcmdcclxuICAgICAgICAgICAgLy8gMi4gdGhlIHZhbHVlIHJlY2VpdmVkIHNob3VsZCBiZSBhIGNvcnJlc3BvbmRpbmcgcmVhY3RpdmUvcmVhZG9ubHkuXHJcbiAgICAgICAgICAgIHJldHVybiBjYWxsYmFjay5jYWxsKHRoaXNBcmcsIHdyYXAodmFsdWUpLCB3cmFwKGtleSksIG9ic2VydmVkKTtcclxuICAgICAgICB9KTtcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlSXRlcmFibGVNZXRob2QobWV0aG9kLCBpc1JlYWRvbmx5LCBpc1NoYWxsb3cpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xyXG4gICAgICAgIGNvbnN0IHRhcmdldCA9IHRoaXNbXCJfX3ZfcmF3XCIgLyogUmVhY3RpdmVGbGFncy5SQVcgKi9dO1xyXG4gICAgICAgIGNvbnN0IHJhd1RhcmdldCA9IHRvUmF3KHRhcmdldCk7XHJcbiAgICAgICAgY29uc3QgdGFyZ2V0SXNNYXAgPSBpc01hcChyYXdUYXJnZXQpO1xyXG4gICAgICAgIGNvbnN0IGlzUGFpciA9IG1ldGhvZCA9PT0gJ2VudHJpZXMnIHx8IChtZXRob2QgPT09IFN5bWJvbC5pdGVyYXRvciAmJiB0YXJnZXRJc01hcCk7XHJcbiAgICAgICAgY29uc3QgaXNLZXlPbmx5ID0gbWV0aG9kID09PSAna2V5cycgJiYgdGFyZ2V0SXNNYXA7XHJcbiAgICAgICAgY29uc3QgaW5uZXJJdGVyYXRvciA9IHRhcmdldFttZXRob2RdKC4uLmFyZ3MpO1xyXG4gICAgICAgIGNvbnN0IHdyYXAgPSBpc1NoYWxsb3cgPyB0b1NoYWxsb3cgOiBpc1JlYWRvbmx5ID8gdG9SZWFkb25seSA6IHRvUmVhY3RpdmU7XHJcbiAgICAgICAgIWlzUmVhZG9ubHkgJiZcclxuICAgICAgICAgICAgdHJhY2socmF3VGFyZ2V0LCBcIml0ZXJhdGVcIiAvKiBUcmFja09wVHlwZXMuSVRFUkFURSAqLywgaXNLZXlPbmx5ID8gTUFQX0tFWV9JVEVSQVRFX0tFWSA6IElURVJBVEVfS0VZKTtcclxuICAgICAgICAvLyByZXR1cm4gYSB3cmFwcGVkIGl0ZXJhdG9yIHdoaWNoIHJldHVybnMgb2JzZXJ2ZWQgdmVyc2lvbnMgb2YgdGhlXHJcbiAgICAgICAgLy8gdmFsdWVzIGVtaXR0ZWQgZnJvbSB0aGUgcmVhbCBpdGVyYXRvclxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIC8vIGl0ZXJhdG9yIHByb3RvY29sXHJcbiAgICAgICAgICAgIG5leHQoKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IHZhbHVlLCBkb25lIH0gPSBpbm5lckl0ZXJhdG9yLm5leHQoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBkb25lXHJcbiAgICAgICAgICAgICAgICAgICAgPyB7IHZhbHVlLCBkb25lIH1cclxuICAgICAgICAgICAgICAgICAgICA6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGlzUGFpciA/IFt3cmFwKHZhbHVlWzBdKSwgd3JhcCh2YWx1ZVsxXSldIDogd3JhcCh2YWx1ZSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvbmVcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAvLyBpdGVyYWJsZSBwcm90b2NvbFxyXG4gICAgICAgICAgICBbU3ltYm9sLml0ZXJhdG9yXSgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlUmVhZG9ubHlNZXRob2QodHlwZSkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICguLi5hcmdzKSB7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICBjb25zdCBrZXkgPSBhcmdzWzBdID8gYG9uIGtleSBcIiR7YXJnc1swXX1cIiBgIDogYGA7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgJHtjYXBpdGFsaXplKHR5cGUpfSBvcGVyYXRpb24gJHtrZXl9ZmFpbGVkOiB0YXJnZXQgaXMgcmVhZG9ubHkuYCwgdG9SYXcodGhpcykpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHlwZSA9PT0gXCJkZWxldGVcIiAvKiBUcmlnZ2VyT3BUeXBlcy5ERUxFVEUgKi8gPyBmYWxzZSA6IHRoaXM7XHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZUluc3RydW1lbnRhdGlvbnMoKSB7XHJcbiAgICBjb25zdCBtdXRhYmxlSW5zdHJ1bWVudGF0aW9ucyA9IHtcclxuICAgICAgICBnZXQoa2V5KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBnZXQkMSh0aGlzLCBrZXkpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZ2V0IHNpemUoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBzaXplKHRoaXMpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgaGFzOiBoYXMkMSxcclxuICAgICAgICBhZGQsXHJcbiAgICAgICAgc2V0OiBzZXQkMSxcclxuICAgICAgICBkZWxldGU6IGRlbGV0ZUVudHJ5LFxyXG4gICAgICAgIGNsZWFyLFxyXG4gICAgICAgIGZvckVhY2g6IGNyZWF0ZUZvckVhY2goZmFsc2UsIGZhbHNlKVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHNoYWxsb3dJbnN0cnVtZW50YXRpb25zID0ge1xyXG4gICAgICAgIGdldChrZXkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGdldCQxKHRoaXMsIGtleSwgZmFsc2UsIHRydWUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZ2V0IHNpemUoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBzaXplKHRoaXMpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgaGFzOiBoYXMkMSxcclxuICAgICAgICBhZGQsXHJcbiAgICAgICAgc2V0OiBzZXQkMSxcclxuICAgICAgICBkZWxldGU6IGRlbGV0ZUVudHJ5LFxyXG4gICAgICAgIGNsZWFyLFxyXG4gICAgICAgIGZvckVhY2g6IGNyZWF0ZUZvckVhY2goZmFsc2UsIHRydWUpXHJcbiAgICB9O1xyXG4gICAgY29uc3QgcmVhZG9ubHlJbnN0cnVtZW50YXRpb25zID0ge1xyXG4gICAgICAgIGdldChrZXkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGdldCQxKHRoaXMsIGtleSwgdHJ1ZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBnZXQgc2l6ZSgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHNpemUodGhpcywgdHJ1ZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBoYXMoa2V5KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBoYXMkMS5jYWxsKHRoaXMsIGtleSwgdHJ1ZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBhZGQ6IGNyZWF0ZVJlYWRvbmx5TWV0aG9kKFwiYWRkXCIgLyogVHJpZ2dlck9wVHlwZXMuQUREICovKSxcclxuICAgICAgICBzZXQ6IGNyZWF0ZVJlYWRvbmx5TWV0aG9kKFwic2V0XCIgLyogVHJpZ2dlck9wVHlwZXMuU0VUICovKSxcclxuICAgICAgICBkZWxldGU6IGNyZWF0ZVJlYWRvbmx5TWV0aG9kKFwiZGVsZXRlXCIgLyogVHJpZ2dlck9wVHlwZXMuREVMRVRFICovKSxcclxuICAgICAgICBjbGVhcjogY3JlYXRlUmVhZG9ubHlNZXRob2QoXCJjbGVhclwiIC8qIFRyaWdnZXJPcFR5cGVzLkNMRUFSICovKSxcclxuICAgICAgICBmb3JFYWNoOiBjcmVhdGVGb3JFYWNoKHRydWUsIGZhbHNlKVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHNoYWxsb3dSZWFkb25seUluc3RydW1lbnRhdGlvbnMgPSB7XHJcbiAgICAgICAgZ2V0KGtleSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZ2V0JDEodGhpcywga2V5LCB0cnVlLCB0cnVlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGdldCBzaXplKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gc2l6ZSh0aGlzLCB0cnVlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGhhcyhrZXkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGhhcyQxLmNhbGwodGhpcywga2V5LCB0cnVlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGFkZDogY3JlYXRlUmVhZG9ubHlNZXRob2QoXCJhZGRcIiAvKiBUcmlnZ2VyT3BUeXBlcy5BREQgKi8pLFxyXG4gICAgICAgIHNldDogY3JlYXRlUmVhZG9ubHlNZXRob2QoXCJzZXRcIiAvKiBUcmlnZ2VyT3BUeXBlcy5TRVQgKi8pLFxyXG4gICAgICAgIGRlbGV0ZTogY3JlYXRlUmVhZG9ubHlNZXRob2QoXCJkZWxldGVcIiAvKiBUcmlnZ2VyT3BUeXBlcy5ERUxFVEUgKi8pLFxyXG4gICAgICAgIGNsZWFyOiBjcmVhdGVSZWFkb25seU1ldGhvZChcImNsZWFyXCIgLyogVHJpZ2dlck9wVHlwZXMuQ0xFQVIgKi8pLFxyXG4gICAgICAgIGZvckVhY2g6IGNyZWF0ZUZvckVhY2godHJ1ZSwgdHJ1ZSlcclxuICAgIH07XHJcbiAgICBjb25zdCBpdGVyYXRvck1ldGhvZHMgPSBbJ2tleXMnLCAndmFsdWVzJywgJ2VudHJpZXMnLCBTeW1ib2wuaXRlcmF0b3JdO1xyXG4gICAgaXRlcmF0b3JNZXRob2RzLmZvckVhY2gobWV0aG9kID0+IHtcclxuICAgICAgICBtdXRhYmxlSW5zdHJ1bWVudGF0aW9uc1ttZXRob2RdID0gY3JlYXRlSXRlcmFibGVNZXRob2QobWV0aG9kLCBmYWxzZSwgZmFsc2UpO1xyXG4gICAgICAgIHJlYWRvbmx5SW5zdHJ1bWVudGF0aW9uc1ttZXRob2RdID0gY3JlYXRlSXRlcmFibGVNZXRob2QobWV0aG9kLCB0cnVlLCBmYWxzZSk7XHJcbiAgICAgICAgc2hhbGxvd0luc3RydW1lbnRhdGlvbnNbbWV0aG9kXSA9IGNyZWF0ZUl0ZXJhYmxlTWV0aG9kKG1ldGhvZCwgZmFsc2UsIHRydWUpO1xyXG4gICAgICAgIHNoYWxsb3dSZWFkb25seUluc3RydW1lbnRhdGlvbnNbbWV0aG9kXSA9IGNyZWF0ZUl0ZXJhYmxlTWV0aG9kKG1ldGhvZCwgdHJ1ZSwgdHJ1ZSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBbXHJcbiAgICAgICAgbXV0YWJsZUluc3RydW1lbnRhdGlvbnMsXHJcbiAgICAgICAgcmVhZG9ubHlJbnN0cnVtZW50YXRpb25zLFxyXG4gICAgICAgIHNoYWxsb3dJbnN0cnVtZW50YXRpb25zLFxyXG4gICAgICAgIHNoYWxsb3dSZWFkb25seUluc3RydW1lbnRhdGlvbnNcclxuICAgIF07XHJcbn1cclxuY29uc3QgW211dGFibGVJbnN0cnVtZW50YXRpb25zLCByZWFkb25seUluc3RydW1lbnRhdGlvbnMsIHNoYWxsb3dJbnN0cnVtZW50YXRpb25zLCBzaGFsbG93UmVhZG9ubHlJbnN0cnVtZW50YXRpb25zXSA9IC8qICNfX1BVUkVfXyovIGNyZWF0ZUluc3RydW1lbnRhdGlvbnMoKTtcclxuZnVuY3Rpb24gY3JlYXRlSW5zdHJ1bWVudGF0aW9uR2V0dGVyKGlzUmVhZG9ubHksIHNoYWxsb3cpIHtcclxuICAgIGNvbnN0IGluc3RydW1lbnRhdGlvbnMgPSBzaGFsbG93XHJcbiAgICAgICAgPyBpc1JlYWRvbmx5XHJcbiAgICAgICAgICAgID8gc2hhbGxvd1JlYWRvbmx5SW5zdHJ1bWVudGF0aW9uc1xyXG4gICAgICAgICAgICA6IHNoYWxsb3dJbnN0cnVtZW50YXRpb25zXHJcbiAgICAgICAgOiBpc1JlYWRvbmx5XHJcbiAgICAgICAgICAgID8gcmVhZG9ubHlJbnN0cnVtZW50YXRpb25zXHJcbiAgICAgICAgICAgIDogbXV0YWJsZUluc3RydW1lbnRhdGlvbnM7XHJcbiAgICByZXR1cm4gKHRhcmdldCwga2V5LCByZWNlaXZlcikgPT4ge1xyXG4gICAgICAgIGlmIChrZXkgPT09IFwiX192X2lzUmVhY3RpdmVcIiAvKiBSZWFjdGl2ZUZsYWdzLklTX1JFQUNUSVZFICovKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAhaXNSZWFkb25seTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoa2V5ID09PSBcIl9fdl9pc1JlYWRvbmx5XCIgLyogUmVhY3RpdmVGbGFncy5JU19SRUFET05MWSAqLykge1xyXG4gICAgICAgICAgICByZXR1cm4gaXNSZWFkb25seTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoa2V5ID09PSBcIl9fdl9yYXdcIiAvKiBSZWFjdGl2ZUZsYWdzLlJBVyAqLykge1xyXG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gUmVmbGVjdC5nZXQoaGFzT3duKGluc3RydW1lbnRhdGlvbnMsIGtleSkgJiYga2V5IGluIHRhcmdldFxyXG4gICAgICAgICAgICA/IGluc3RydW1lbnRhdGlvbnNcclxuICAgICAgICAgICAgOiB0YXJnZXQsIGtleSwgcmVjZWl2ZXIpO1xyXG4gICAgfTtcclxufVxyXG5jb25zdCBtdXRhYmxlQ29sbGVjdGlvbkhhbmRsZXJzID0ge1xyXG4gICAgZ2V0OiAvKiNfX1BVUkVfXyovIGNyZWF0ZUluc3RydW1lbnRhdGlvbkdldHRlcihmYWxzZSwgZmFsc2UpXHJcbn07XHJcbmNvbnN0IHNoYWxsb3dDb2xsZWN0aW9uSGFuZGxlcnMgPSB7XHJcbiAgICBnZXQ6IC8qI19fUFVSRV9fKi8gY3JlYXRlSW5zdHJ1bWVudGF0aW9uR2V0dGVyKGZhbHNlLCB0cnVlKVxyXG59O1xyXG5jb25zdCByZWFkb25seUNvbGxlY3Rpb25IYW5kbGVycyA9IHtcclxuICAgIGdldDogLyojX19QVVJFX18qLyBjcmVhdGVJbnN0cnVtZW50YXRpb25HZXR0ZXIodHJ1ZSwgZmFsc2UpXHJcbn07XHJcbmNvbnN0IHNoYWxsb3dSZWFkb25seUNvbGxlY3Rpb25IYW5kbGVycyA9IHtcclxuICAgIGdldDogLyojX19QVVJFX18qLyBjcmVhdGVJbnN0cnVtZW50YXRpb25HZXR0ZXIodHJ1ZSwgdHJ1ZSlcclxufTtcclxuZnVuY3Rpb24gY2hlY2tJZGVudGl0eUtleXModGFyZ2V0LCBoYXMsIGtleSkge1xyXG4gICAgY29uc3QgcmF3S2V5ID0gdG9SYXcoa2V5KTtcclxuICAgIGlmIChyYXdLZXkgIT09IGtleSAmJiBoYXMuY2FsbCh0YXJnZXQsIHJhd0tleSkpIHtcclxuICAgICAgICBjb25zdCB0eXBlID0gdG9SYXdUeXBlKHRhcmdldCk7XHJcbiAgICAgICAgY29uc29sZS53YXJuKGBSZWFjdGl2ZSAke3R5cGV9IGNvbnRhaW5zIGJvdGggdGhlIHJhdyBhbmQgcmVhY3RpdmUgYCArXHJcbiAgICAgICAgICAgIGB2ZXJzaW9ucyBvZiB0aGUgc2FtZSBvYmplY3Qke3R5cGUgPT09IGBNYXBgID8gYCBhcyBrZXlzYCA6IGBgfSwgYCArXHJcbiAgICAgICAgICAgIGB3aGljaCBjYW4gbGVhZCB0byBpbmNvbnNpc3RlbmNpZXMuIGAgK1xyXG4gICAgICAgICAgICBgQXZvaWQgZGlmZmVyZW50aWF0aW5nIGJldHdlZW4gdGhlIHJhdyBhbmQgcmVhY3RpdmUgdmVyc2lvbnMgYCArXHJcbiAgICAgICAgICAgIGBvZiBhbiBvYmplY3QgYW5kIG9ubHkgdXNlIHRoZSByZWFjdGl2ZSB2ZXJzaW9uIGlmIHBvc3NpYmxlLmApO1xyXG4gICAgfVxyXG59XG5cbmNvbnN0IHJlYWN0aXZlTWFwID0gbmV3IFdlYWtNYXAoKTtcclxuY29uc3Qgc2hhbGxvd1JlYWN0aXZlTWFwID0gbmV3IFdlYWtNYXAoKTtcclxuY29uc3QgcmVhZG9ubHlNYXAgPSBuZXcgV2Vha01hcCgpO1xyXG5jb25zdCBzaGFsbG93UmVhZG9ubHlNYXAgPSBuZXcgV2Vha01hcCgpO1xyXG5mdW5jdGlvbiB0YXJnZXRUeXBlTWFwKHJhd1R5cGUpIHtcclxuICAgIHN3aXRjaCAocmF3VHlwZSkge1xyXG4gICAgICAgIGNhc2UgJ09iamVjdCc6XHJcbiAgICAgICAgY2FzZSAnQXJyYXknOlxyXG4gICAgICAgICAgICByZXR1cm4gMSAvKiBUYXJnZXRUeXBlLkNPTU1PTiAqLztcclxuICAgICAgICBjYXNlICdNYXAnOlxyXG4gICAgICAgIGNhc2UgJ1NldCc6XHJcbiAgICAgICAgY2FzZSAnV2Vha01hcCc6XHJcbiAgICAgICAgY2FzZSAnV2Vha1NldCc6XHJcbiAgICAgICAgICAgIHJldHVybiAyIC8qIFRhcmdldFR5cGUuQ09MTEVDVElPTiAqLztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICByZXR1cm4gMCAvKiBUYXJnZXRUeXBlLklOVkFMSUQgKi87XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZ2V0VGFyZ2V0VHlwZSh2YWx1ZSkge1xyXG4gICAgcmV0dXJuIHZhbHVlW1wiX192X3NraXBcIiAvKiBSZWFjdGl2ZUZsYWdzLlNLSVAgKi9dIHx8ICFPYmplY3QuaXNFeHRlbnNpYmxlKHZhbHVlKVxyXG4gICAgICAgID8gMCAvKiBUYXJnZXRUeXBlLklOVkFMSUQgKi9cclxuICAgICAgICA6IHRhcmdldFR5cGVNYXAodG9SYXdUeXBlKHZhbHVlKSk7XHJcbn1cclxuZnVuY3Rpb24gcmVhY3RpdmUodGFyZ2V0KSB7XHJcbiAgICAvLyBpZiB0cnlpbmcgdG8gb2JzZXJ2ZSBhIHJlYWRvbmx5IHByb3h5LCByZXR1cm4gdGhlIHJlYWRvbmx5IHZlcnNpb24uXHJcbiAgICBpZiAoaXNSZWFkb25seSh0YXJnZXQpKSB7XHJcbiAgICAgICAgcmV0dXJuIHRhcmdldDtcclxuICAgIH1cclxuICAgIHJldHVybiBjcmVhdGVSZWFjdGl2ZU9iamVjdCh0YXJnZXQsIGZhbHNlLCBtdXRhYmxlSGFuZGxlcnMsIG11dGFibGVDb2xsZWN0aW9uSGFuZGxlcnMsIHJlYWN0aXZlTWFwKTtcclxufVxyXG4vKipcclxuICogUmV0dXJuIGEgc2hhbGxvd2x5LXJlYWN0aXZlIGNvcHkgb2YgdGhlIG9yaWdpbmFsIG9iamVjdCwgd2hlcmUgb25seSB0aGUgcm9vdFxyXG4gKiBsZXZlbCBwcm9wZXJ0aWVzIGFyZSByZWFjdGl2ZS4gSXQgYWxzbyBkb2VzIG5vdCBhdXRvLXVud3JhcCByZWZzIChldmVuIGF0IHRoZVxyXG4gKiByb290IGxldmVsKS5cclxuICovXHJcbmZ1bmN0aW9uIHNoYWxsb3dSZWFjdGl2ZSh0YXJnZXQpIHtcclxuICAgIHJldHVybiBjcmVhdGVSZWFjdGl2ZU9iamVjdCh0YXJnZXQsIGZhbHNlLCBzaGFsbG93UmVhY3RpdmVIYW5kbGVycywgc2hhbGxvd0NvbGxlY3Rpb25IYW5kbGVycywgc2hhbGxvd1JlYWN0aXZlTWFwKTtcclxufVxyXG4vKipcclxuICogQ3JlYXRlcyBhIHJlYWRvbmx5IGNvcHkgb2YgdGhlIG9yaWdpbmFsIG9iamVjdC4gTm90ZSB0aGUgcmV0dXJuZWQgY29weSBpcyBub3RcclxuICogbWFkZSByZWFjdGl2ZSwgYnV0IGByZWFkb25seWAgY2FuIGJlIGNhbGxlZCBvbiBhbiBhbHJlYWR5IHJlYWN0aXZlIG9iamVjdC5cclxuICovXHJcbmZ1bmN0aW9uIHJlYWRvbmx5KHRhcmdldCkge1xyXG4gICAgcmV0dXJuIGNyZWF0ZVJlYWN0aXZlT2JqZWN0KHRhcmdldCwgdHJ1ZSwgcmVhZG9ubHlIYW5kbGVycywgcmVhZG9ubHlDb2xsZWN0aW9uSGFuZGxlcnMsIHJlYWRvbmx5TWFwKTtcclxufVxyXG4vKipcclxuICogUmV0dXJucyBhIHJlYWN0aXZlLWNvcHkgb2YgdGhlIG9yaWdpbmFsIG9iamVjdCwgd2hlcmUgb25seSB0aGUgcm9vdCBsZXZlbFxyXG4gKiBwcm9wZXJ0aWVzIGFyZSByZWFkb25seSwgYW5kIGRvZXMgTk9UIHVud3JhcCByZWZzIG5vciByZWN1cnNpdmVseSBjb252ZXJ0XHJcbiAqIHJldHVybmVkIHByb3BlcnRpZXMuXHJcbiAqIFRoaXMgaXMgdXNlZCBmb3IgY3JlYXRpbmcgdGhlIHByb3BzIHByb3h5IG9iamVjdCBmb3Igc3RhdGVmdWwgY29tcG9uZW50cy5cclxuICovXHJcbmZ1bmN0aW9uIHNoYWxsb3dSZWFkb25seSh0YXJnZXQpIHtcclxuICAgIHJldHVybiBjcmVhdGVSZWFjdGl2ZU9iamVjdCh0YXJnZXQsIHRydWUsIHNoYWxsb3dSZWFkb25seUhhbmRsZXJzLCBzaGFsbG93UmVhZG9ubHlDb2xsZWN0aW9uSGFuZGxlcnMsIHNoYWxsb3dSZWFkb25seU1hcCk7XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlUmVhY3RpdmVPYmplY3QodGFyZ2V0LCBpc1JlYWRvbmx5LCBiYXNlSGFuZGxlcnMsIGNvbGxlY3Rpb25IYW5kbGVycywgcHJveHlNYXApIHtcclxuICAgIGlmICghaXNPYmplY3QodGFyZ2V0KSkge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKGB2YWx1ZSBjYW5ub3QgYmUgbWFkZSByZWFjdGl2ZTogJHtTdHJpbmcodGFyZ2V0KX1gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRhcmdldDtcclxuICAgIH1cclxuICAgIC8vIHRhcmdldCBpcyBhbHJlYWR5IGEgUHJveHksIHJldHVybiBpdC5cclxuICAgIC8vIGV4Y2VwdGlvbjogY2FsbGluZyByZWFkb25seSgpIG9uIGEgcmVhY3RpdmUgb2JqZWN0XHJcbiAgICBpZiAodGFyZ2V0W1wiX192X3Jhd1wiIC8qIFJlYWN0aXZlRmxhZ3MuUkFXICovXSAmJlxyXG4gICAgICAgICEoaXNSZWFkb25seSAmJiB0YXJnZXRbXCJfX3ZfaXNSZWFjdGl2ZVwiIC8qIFJlYWN0aXZlRmxhZ3MuSVNfUkVBQ1RJVkUgKi9dKSkge1xyXG4gICAgICAgIHJldHVybiB0YXJnZXQ7XHJcbiAgICB9XHJcbiAgICAvLyB0YXJnZXQgYWxyZWFkeSBoYXMgY29ycmVzcG9uZGluZyBQcm94eVxyXG4gICAgY29uc3QgZXhpc3RpbmdQcm94eSA9IHByb3h5TWFwLmdldCh0YXJnZXQpO1xyXG4gICAgaWYgKGV4aXN0aW5nUHJveHkpIHtcclxuICAgICAgICByZXR1cm4gZXhpc3RpbmdQcm94eTtcclxuICAgIH1cclxuICAgIC8vIG9ubHkgc3BlY2lmaWMgdmFsdWUgdHlwZXMgY2FuIGJlIG9ic2VydmVkLlxyXG4gICAgY29uc3QgdGFyZ2V0VHlwZSA9IGdldFRhcmdldFR5cGUodGFyZ2V0KTtcclxuICAgIGlmICh0YXJnZXRUeXBlID09PSAwIC8qIFRhcmdldFR5cGUuSU5WQUxJRCAqLykge1xyXG4gICAgICAgIHJldHVybiB0YXJnZXQ7XHJcbiAgICB9XHJcbiAgICBjb25zdCBwcm94eSA9IG5ldyBQcm94eSh0YXJnZXQsIHRhcmdldFR5cGUgPT09IDIgLyogVGFyZ2V0VHlwZS5DT0xMRUNUSU9OICovID8gY29sbGVjdGlvbkhhbmRsZXJzIDogYmFzZUhhbmRsZXJzKTtcclxuICAgIHByb3h5TWFwLnNldCh0YXJnZXQsIHByb3h5KTtcclxuICAgIHJldHVybiBwcm94eTtcclxufVxyXG5mdW5jdGlvbiBpc1JlYWN0aXZlKHZhbHVlKSB7XHJcbiAgICBpZiAoaXNSZWFkb25seSh2YWx1ZSkpIHtcclxuICAgICAgICByZXR1cm4gaXNSZWFjdGl2ZSh2YWx1ZVtcIl9fdl9yYXdcIiAvKiBSZWFjdGl2ZUZsYWdzLlJBVyAqL10pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICEhKHZhbHVlICYmIHZhbHVlW1wiX192X2lzUmVhY3RpdmVcIiAvKiBSZWFjdGl2ZUZsYWdzLklTX1JFQUNUSVZFICovXSk7XHJcbn1cclxuZnVuY3Rpb24gaXNSZWFkb25seSh2YWx1ZSkge1xyXG4gICAgcmV0dXJuICEhKHZhbHVlICYmIHZhbHVlW1wiX192X2lzUmVhZG9ubHlcIiAvKiBSZWFjdGl2ZUZsYWdzLklTX1JFQURPTkxZICovXSk7XHJcbn1cclxuZnVuY3Rpb24gaXNTaGFsbG93KHZhbHVlKSB7XHJcbiAgICByZXR1cm4gISEodmFsdWUgJiYgdmFsdWVbXCJfX3ZfaXNTaGFsbG93XCIgLyogUmVhY3RpdmVGbGFncy5JU19TSEFMTE9XICovXSk7XHJcbn1cclxuZnVuY3Rpb24gaXNQcm94eSh2YWx1ZSkge1xyXG4gICAgcmV0dXJuIGlzUmVhY3RpdmUodmFsdWUpIHx8IGlzUmVhZG9ubHkodmFsdWUpO1xyXG59XHJcbmZ1bmN0aW9uIHRvUmF3KG9ic2VydmVkKSB7XHJcbiAgICBjb25zdCByYXcgPSBvYnNlcnZlZCAmJiBvYnNlcnZlZFtcIl9fdl9yYXdcIiAvKiBSZWFjdGl2ZUZsYWdzLlJBVyAqL107XHJcbiAgICByZXR1cm4gcmF3ID8gdG9SYXcocmF3KSA6IG9ic2VydmVkO1xyXG59XHJcbmZ1bmN0aW9uIG1hcmtSYXcodmFsdWUpIHtcclxuICAgIGRlZih2YWx1ZSwgXCJfX3Zfc2tpcFwiIC8qIFJlYWN0aXZlRmxhZ3MuU0tJUCAqLywgdHJ1ZSk7XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbn1cclxuY29uc3QgdG9SZWFjdGl2ZSA9ICh2YWx1ZSkgPT4gaXNPYmplY3QodmFsdWUpID8gcmVhY3RpdmUodmFsdWUpIDogdmFsdWU7XHJcbmNvbnN0IHRvUmVhZG9ubHkgPSAodmFsdWUpID0+IGlzT2JqZWN0KHZhbHVlKSA/IHJlYWRvbmx5KHZhbHVlKSA6IHZhbHVlO1xuXG5mdW5jdGlvbiB0cmFja1JlZlZhbHVlKHJlZikge1xyXG4gICAgaWYgKHNob3VsZFRyYWNrICYmIGFjdGl2ZUVmZmVjdCkge1xyXG4gICAgICAgIHJlZiA9IHRvUmF3KHJlZik7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICB0cmFja0VmZmVjdHMocmVmLmRlcCB8fCAocmVmLmRlcCA9IGNyZWF0ZURlcCgpKSwge1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0OiByZWYsXHJcbiAgICAgICAgICAgICAgICB0eXBlOiBcImdldFwiIC8qIFRyYWNrT3BUeXBlcy5HRVQgKi8sXHJcbiAgICAgICAgICAgICAgICBrZXk6ICd2YWx1ZSdcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0cmFja0VmZmVjdHMocmVmLmRlcCB8fCAocmVmLmRlcCA9IGNyZWF0ZURlcCgpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHRyaWdnZXJSZWZWYWx1ZShyZWYsIG5ld1ZhbCkge1xyXG4gICAgcmVmID0gdG9SYXcocmVmKTtcclxuICAgIGlmIChyZWYuZGVwKSB7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICB0cmlnZ2VyRWZmZWN0cyhyZWYuZGVwLCB7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IHJlZixcclxuICAgICAgICAgICAgICAgIHR5cGU6IFwic2V0XCIgLyogVHJpZ2dlck9wVHlwZXMuU0VUICovLFxyXG4gICAgICAgICAgICAgICAga2V5OiAndmFsdWUnLFxyXG4gICAgICAgICAgICAgICAgbmV3VmFsdWU6IG5ld1ZhbFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRyaWdnZXJFZmZlY3RzKHJlZi5kZXApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBpc1JlZihyKSB7XHJcbiAgICByZXR1cm4gISEociAmJiByLl9fdl9pc1JlZiA9PT0gdHJ1ZSk7XHJcbn1cclxuZnVuY3Rpb24gcmVmKHZhbHVlKSB7XHJcbiAgICByZXR1cm4gY3JlYXRlUmVmKHZhbHVlLCBmYWxzZSk7XHJcbn1cclxuZnVuY3Rpb24gc2hhbGxvd1JlZih2YWx1ZSkge1xyXG4gICAgcmV0dXJuIGNyZWF0ZVJlZih2YWx1ZSwgdHJ1ZSk7XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlUmVmKHJhd1ZhbHVlLCBzaGFsbG93KSB7XHJcbiAgICBpZiAoaXNSZWYocmF3VmFsdWUpKSB7XHJcbiAgICAgICAgcmV0dXJuIHJhd1ZhbHVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ldyBSZWZJbXBsKHJhd1ZhbHVlLCBzaGFsbG93KTtcclxufVxyXG5jbGFzcyBSZWZJbXBsIHtcclxuICAgIGNvbnN0cnVjdG9yKHZhbHVlLCBfX3ZfaXNTaGFsbG93KSB7XHJcbiAgICAgICAgdGhpcy5fX3ZfaXNTaGFsbG93ID0gX192X2lzU2hhbGxvdztcclxuICAgICAgICB0aGlzLmRlcCA9IHVuZGVmaW5lZDtcclxuICAgICAgICB0aGlzLl9fdl9pc1JlZiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5fcmF3VmFsdWUgPSBfX3ZfaXNTaGFsbG93ID8gdmFsdWUgOiB0b1Jhdyh2YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5fdmFsdWUgPSBfX3ZfaXNTaGFsbG93ID8gdmFsdWUgOiB0b1JlYWN0aXZlKHZhbHVlKTtcclxuICAgIH1cclxuICAgIGdldCB2YWx1ZSgpIHtcclxuICAgICAgICB0cmFja1JlZlZhbHVlKHRoaXMpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcclxuICAgIH1cclxuICAgIHNldCB2YWx1ZShuZXdWYWwpIHtcclxuICAgICAgICBjb25zdCB1c2VEaXJlY3RWYWx1ZSA9IHRoaXMuX192X2lzU2hhbGxvdyB8fCBpc1NoYWxsb3cobmV3VmFsKSB8fCBpc1JlYWRvbmx5KG5ld1ZhbCk7XHJcbiAgICAgICAgbmV3VmFsID0gdXNlRGlyZWN0VmFsdWUgPyBuZXdWYWwgOiB0b1JhdyhuZXdWYWwpO1xyXG4gICAgICAgIGlmIChoYXNDaGFuZ2VkKG5ld1ZhbCwgdGhpcy5fcmF3VmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3Jhd1ZhbHVlID0gbmV3VmFsO1xyXG4gICAgICAgICAgICB0aGlzLl92YWx1ZSA9IHVzZURpcmVjdFZhbHVlID8gbmV3VmFsIDogdG9SZWFjdGl2ZShuZXdWYWwpO1xyXG4gICAgICAgICAgICB0cmlnZ2VyUmVmVmFsdWUodGhpcywgbmV3VmFsKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gdHJpZ2dlclJlZihyZWYpIHtcclxuICAgIHRyaWdnZXJSZWZWYWx1ZShyZWYsIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IHJlZi52YWx1ZSA6IHZvaWQgMCk7XHJcbn1cclxuZnVuY3Rpb24gdW5yZWYocmVmKSB7XHJcbiAgICByZXR1cm4gaXNSZWYocmVmKSA/IHJlZi52YWx1ZSA6IHJlZjtcclxufVxyXG5jb25zdCBzaGFsbG93VW53cmFwSGFuZGxlcnMgPSB7XHJcbiAgICBnZXQ6ICh0YXJnZXQsIGtleSwgcmVjZWl2ZXIpID0+IHVucmVmKFJlZmxlY3QuZ2V0KHRhcmdldCwga2V5LCByZWNlaXZlcikpLFxyXG4gICAgc2V0OiAodGFyZ2V0LCBrZXksIHZhbHVlLCByZWNlaXZlcikgPT4ge1xyXG4gICAgICAgIGNvbnN0IG9sZFZhbHVlID0gdGFyZ2V0W2tleV07XHJcbiAgICAgICAgaWYgKGlzUmVmKG9sZFZhbHVlKSAmJiAhaXNSZWYodmFsdWUpKSB7XHJcbiAgICAgICAgICAgIG9sZFZhbHVlLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3Quc2V0KHRhcmdldCwga2V5LCB2YWx1ZSwgcmVjZWl2ZXIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcclxuZnVuY3Rpb24gcHJveHlSZWZzKG9iamVjdFdpdGhSZWZzKSB7XHJcbiAgICByZXR1cm4gaXNSZWFjdGl2ZShvYmplY3RXaXRoUmVmcylcclxuICAgICAgICA/IG9iamVjdFdpdGhSZWZzXHJcbiAgICAgICAgOiBuZXcgUHJveHkob2JqZWN0V2l0aFJlZnMsIHNoYWxsb3dVbndyYXBIYW5kbGVycyk7XHJcbn1cclxuY2xhc3MgQ3VzdG9tUmVmSW1wbCB7XHJcbiAgICBjb25zdHJ1Y3RvcihmYWN0b3J5KSB7XHJcbiAgICAgICAgdGhpcy5kZXAgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgdGhpcy5fX3ZfaXNSZWYgPSB0cnVlO1xyXG4gICAgICAgIGNvbnN0IHsgZ2V0LCBzZXQgfSA9IGZhY3RvcnkoKCkgPT4gdHJhY2tSZWZWYWx1ZSh0aGlzKSwgKCkgPT4gdHJpZ2dlclJlZlZhbHVlKHRoaXMpKTtcclxuICAgICAgICB0aGlzLl9nZXQgPSBnZXQ7XHJcbiAgICAgICAgdGhpcy5fc2V0ID0gc2V0O1xyXG4gICAgfVxyXG4gICAgZ2V0IHZhbHVlKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXQoKTtcclxuICAgIH1cclxuICAgIHNldCB2YWx1ZShuZXdWYWwpIHtcclxuICAgICAgICB0aGlzLl9zZXQobmV3VmFsKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBjdXN0b21SZWYoZmFjdG9yeSkge1xyXG4gICAgcmV0dXJuIG5ldyBDdXN0b21SZWZJbXBsKGZhY3RvcnkpO1xyXG59XHJcbmZ1bmN0aW9uIHRvUmVmcyhvYmplY3QpIHtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWlzUHJveHkob2JqZWN0KSkge1xyXG4gICAgICAgIGNvbnNvbGUud2FybihgdG9SZWZzKCkgZXhwZWN0cyBhIHJlYWN0aXZlIG9iamVjdCBidXQgcmVjZWl2ZWQgYSBwbGFpbiBvbmUuYCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCByZXQgPSBpc0FycmF5KG9iamVjdCkgPyBuZXcgQXJyYXkob2JqZWN0Lmxlbmd0aCkgOiB7fTtcclxuICAgIGZvciAoY29uc3Qga2V5IGluIG9iamVjdCkge1xyXG4gICAgICAgIHJldFtrZXldID0gdG9SZWYob2JqZWN0LCBrZXkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJldDtcclxufVxyXG5jbGFzcyBPYmplY3RSZWZJbXBsIHtcclxuICAgIGNvbnN0cnVjdG9yKF9vYmplY3QsIF9rZXksIF9kZWZhdWx0VmFsdWUpIHtcclxuICAgICAgICB0aGlzLl9vYmplY3QgPSBfb2JqZWN0O1xyXG4gICAgICAgIHRoaXMuX2tleSA9IF9rZXk7XHJcbiAgICAgICAgdGhpcy5fZGVmYXVsdFZhbHVlID0gX2RlZmF1bHRWYWx1ZTtcclxuICAgICAgICB0aGlzLl9fdl9pc1JlZiA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBnZXQgdmFsdWUoKSB7XHJcbiAgICAgICAgY29uc3QgdmFsID0gdGhpcy5fb2JqZWN0W3RoaXMuX2tleV07XHJcbiAgICAgICAgcmV0dXJuIHZhbCA9PT0gdW5kZWZpbmVkID8gdGhpcy5fZGVmYXVsdFZhbHVlIDogdmFsO1xyXG4gICAgfVxyXG4gICAgc2V0IHZhbHVlKG5ld1ZhbCkge1xyXG4gICAgICAgIHRoaXMuX29iamVjdFt0aGlzLl9rZXldID0gbmV3VmFsO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHRvUmVmKG9iamVjdCwga2V5LCBkZWZhdWx0VmFsdWUpIHtcclxuICAgIGNvbnN0IHZhbCA9IG9iamVjdFtrZXldO1xyXG4gICAgcmV0dXJuIGlzUmVmKHZhbClcclxuICAgICAgICA/IHZhbFxyXG4gICAgICAgIDogbmV3IE9iamVjdFJlZkltcGwob2JqZWN0LCBrZXksIGRlZmF1bHRWYWx1ZSk7XHJcbn1cblxudmFyIF9hO1xyXG5jbGFzcyBDb21wdXRlZFJlZkltcGwge1xyXG4gICAgY29uc3RydWN0b3IoZ2V0dGVyLCBfc2V0dGVyLCBpc1JlYWRvbmx5LCBpc1NTUikge1xyXG4gICAgICAgIHRoaXMuX3NldHRlciA9IF9zZXR0ZXI7XHJcbiAgICAgICAgdGhpcy5kZXAgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgdGhpcy5fX3ZfaXNSZWYgPSB0cnVlO1xyXG4gICAgICAgIHRoaXNbX2FdID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5fZGlydHkgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZWZmZWN0ID0gbmV3IFJlYWN0aXZlRWZmZWN0KGdldHRlciwgKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuX2RpcnR5KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9kaXJ0eSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0cmlnZ2VyUmVmVmFsdWUodGhpcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmVmZmVjdC5jb21wdXRlZCA9IHRoaXM7XHJcbiAgICAgICAgdGhpcy5lZmZlY3QuYWN0aXZlID0gdGhpcy5fY2FjaGVhYmxlID0gIWlzU1NSO1xyXG4gICAgICAgIHRoaXNbXCJfX3ZfaXNSZWFkb25seVwiIC8qIFJlYWN0aXZlRmxhZ3MuSVNfUkVBRE9OTFkgKi9dID0gaXNSZWFkb25seTtcclxuICAgIH1cclxuICAgIGdldCB2YWx1ZSgpIHtcclxuICAgICAgICAvLyB0aGUgY29tcHV0ZWQgcmVmIG1heSBnZXQgd3JhcHBlZCBieSBvdGhlciBwcm94aWVzIGUuZy4gcmVhZG9ubHkoKSAjMzM3NlxyXG4gICAgICAgIGNvbnN0IHNlbGYgPSB0b1Jhdyh0aGlzKTtcclxuICAgICAgICB0cmFja1JlZlZhbHVlKHNlbGYpO1xyXG4gICAgICAgIGlmIChzZWxmLl9kaXJ0eSB8fCAhc2VsZi5fY2FjaGVhYmxlKSB7XHJcbiAgICAgICAgICAgIHNlbGYuX2RpcnR5ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHNlbGYuX3ZhbHVlID0gc2VsZi5lZmZlY3QucnVuKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzZWxmLl92YWx1ZTtcclxuICAgIH1cclxuICAgIHNldCB2YWx1ZShuZXdWYWx1ZSkge1xyXG4gICAgICAgIHRoaXMuX3NldHRlcihuZXdWYWx1ZSk7XHJcbiAgICB9XHJcbn1cclxuX2EgPSBcIl9fdl9pc1JlYWRvbmx5XCIgLyogUmVhY3RpdmVGbGFncy5JU19SRUFET05MWSAqLztcclxuZnVuY3Rpb24gY29tcHV0ZWQoZ2V0dGVyT3JPcHRpb25zLCBkZWJ1Z09wdGlvbnMsIGlzU1NSID0gZmFsc2UpIHtcclxuICAgIGxldCBnZXR0ZXI7XHJcbiAgICBsZXQgc2V0dGVyO1xyXG4gICAgY29uc3Qgb25seUdldHRlciA9IGlzRnVuY3Rpb24oZ2V0dGVyT3JPcHRpb25zKTtcclxuICAgIGlmIChvbmx5R2V0dGVyKSB7XHJcbiAgICAgICAgZ2V0dGVyID0gZ2V0dGVyT3JPcHRpb25zO1xyXG4gICAgICAgIHNldHRlciA9IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKVxyXG4gICAgICAgICAgICA/ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignV3JpdGUgb3BlcmF0aW9uIGZhaWxlZDogY29tcHV0ZWQgdmFsdWUgaXMgcmVhZG9ubHknKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA6IE5PT1A7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBnZXR0ZXIgPSBnZXR0ZXJPck9wdGlvbnMuZ2V0O1xyXG4gICAgICAgIHNldHRlciA9IGdldHRlck9yT3B0aW9ucy5zZXQ7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjUmVmID0gbmV3IENvbXB1dGVkUmVmSW1wbChnZXR0ZXIsIHNldHRlciwgb25seUdldHRlciB8fCAhc2V0dGVyLCBpc1NTUik7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGRlYnVnT3B0aW9ucyAmJiAhaXNTU1IpIHtcclxuICAgICAgICBjUmVmLmVmZmVjdC5vblRyYWNrID0gZGVidWdPcHRpb25zLm9uVHJhY2s7XHJcbiAgICAgICAgY1JlZi5lZmZlY3Qub25UcmlnZ2VyID0gZGVidWdPcHRpb25zLm9uVHJpZ2dlcjtcclxuICAgIH1cclxuICAgIHJldHVybiBjUmVmO1xyXG59XG5cbnZhciBfYSQxO1xyXG5jb25zdCB0aWNrID0gLyojX19QVVJFX18qLyBQcm9taXNlLnJlc29sdmUoKTtcclxuY29uc3QgcXVldWUgPSBbXTtcclxubGV0IHF1ZXVlZCA9IGZhbHNlO1xyXG5jb25zdCBzY2hlZHVsZXIgPSAoZm4pID0+IHtcclxuICAgIHF1ZXVlLnB1c2goZm4pO1xyXG4gICAgaWYgKCFxdWV1ZWQpIHtcclxuICAgICAgICBxdWV1ZWQgPSB0cnVlO1xyXG4gICAgICAgIHRpY2sudGhlbihmbHVzaCk7XHJcbiAgICB9XHJcbn07XHJcbmNvbnN0IGZsdXNoID0gKCkgPT4ge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBxdWV1ZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHF1ZXVlW2ldKCk7XHJcbiAgICB9XHJcbiAgICBxdWV1ZS5sZW5ndGggPSAwO1xyXG4gICAgcXVldWVkID0gZmFsc2U7XHJcbn07XHJcbmNsYXNzIERlZmVycmVkQ29tcHV0ZWRSZWZJbXBsIHtcclxuICAgIGNvbnN0cnVjdG9yKGdldHRlcikge1xyXG4gICAgICAgIHRoaXMuZGVwID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHRoaXMuX2RpcnR5ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLl9fdl9pc1JlZiA9IHRydWU7XHJcbiAgICAgICAgdGhpc1tfYSQxXSA9IHRydWU7XHJcbiAgICAgICAgbGV0IGNvbXBhcmVUYXJnZXQ7XHJcbiAgICAgICAgbGV0IGhhc0NvbXBhcmVUYXJnZXQgPSBmYWxzZTtcclxuICAgICAgICBsZXQgc2NoZWR1bGVkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5lZmZlY3QgPSBuZXcgUmVhY3RpdmVFZmZlY3QoZ2V0dGVyLCAoY29tcHV0ZWRUcmlnZ2VyKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmRlcCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbXB1dGVkVHJpZ2dlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbXBhcmVUYXJnZXQgPSB0aGlzLl92YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICBoYXNDb21wYXJlVGFyZ2V0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFzY2hlZHVsZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZVRvQ29tcGFyZSA9IGhhc0NvbXBhcmVUYXJnZXQgPyBjb21wYXJlVGFyZ2V0IDogdGhpcy5fdmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgc2NoZWR1bGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBoYXNDb21wYXJlVGFyZ2V0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgc2NoZWR1bGVyKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZWZmZWN0LmFjdGl2ZSAmJiB0aGlzLl9nZXQoKSAhPT0gdmFsdWVUb0NvbXBhcmUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJSZWZWYWx1ZSh0aGlzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2hlZHVsZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIGNoYWluZWQgdXBzdHJlYW0gY29tcHV0ZWRzIGFyZSBub3RpZmllZCBzeW5jaHJvbm91c2x5IHRvIGVuc3VyZVxyXG4gICAgICAgICAgICAgICAgLy8gdmFsdWUgaW52YWxpZGF0aW9uIGluIGNhc2Ugb2Ygc3luYyBhY2Nlc3M7IG5vcm1hbCBlZmZlY3RzIGFyZVxyXG4gICAgICAgICAgICAgICAgLy8gZGVmZXJyZWQgdG8gYmUgdHJpZ2dlcmVkIGluIHNjaGVkdWxlci5cclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZSBvZiB0aGlzLmRlcCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlLmNvbXB1dGVkIGluc3RhbmNlb2YgRGVmZXJyZWRDb21wdXRlZFJlZkltcGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZS5zY2hlZHVsZXIodHJ1ZSAvKiBjb21wdXRlZFRyaWdnZXIgKi8pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLl9kaXJ0eSA9IHRydWU7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5lZmZlY3QuY29tcHV0ZWQgPSB0aGlzO1xyXG4gICAgfVxyXG4gICAgX2dldCgpIHtcclxuICAgICAgICBpZiAodGhpcy5fZGlydHkpIHtcclxuICAgICAgICAgICAgdGhpcy5fZGlydHkgPSBmYWxzZTtcclxuICAgICAgICAgICAgcmV0dXJuICh0aGlzLl92YWx1ZSA9IHRoaXMuZWZmZWN0LnJ1bigpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xyXG4gICAgfVxyXG4gICAgZ2V0IHZhbHVlKCkge1xyXG4gICAgICAgIHRyYWNrUmVmVmFsdWUodGhpcyk7XHJcbiAgICAgICAgLy8gdGhlIGNvbXB1dGVkIHJlZiBtYXkgZ2V0IHdyYXBwZWQgYnkgb3RoZXIgcHJveGllcyBlLmcuIHJlYWRvbmx5KCkgIzMzNzZcclxuICAgICAgICByZXR1cm4gdG9SYXcodGhpcykuX2dldCgpO1xyXG4gICAgfVxyXG59XHJcbl9hJDEgPSBcIl9fdl9pc1JlYWRvbmx5XCIgLyogUmVhY3RpdmVGbGFncy5JU19SRUFET05MWSAqLztcclxuZnVuY3Rpb24gZGVmZXJyZWRDb21wdXRlZChnZXR0ZXIpIHtcclxuICAgIHJldHVybiBuZXcgRGVmZXJyZWRDb21wdXRlZFJlZkltcGwoZ2V0dGVyKTtcclxufVxuXG5leHBvcnQgeyBFZmZlY3RTY29wZSwgSVRFUkFURV9LRVksIFJlYWN0aXZlRWZmZWN0LCBjb21wdXRlZCwgY3VzdG9tUmVmLCBkZWZlcnJlZENvbXB1dGVkLCBlZmZlY3QsIGVmZmVjdFNjb3BlLCBlbmFibGVUcmFja2luZywgZ2V0Q3VycmVudFNjb3BlLCBpc1Byb3h5LCBpc1JlYWN0aXZlLCBpc1JlYWRvbmx5LCBpc1JlZiwgaXNTaGFsbG93LCBtYXJrUmF3LCBvblNjb3BlRGlzcG9zZSwgcGF1c2VUcmFja2luZywgcHJveHlSZWZzLCByZWFjdGl2ZSwgcmVhZG9ubHksIHJlZiwgcmVzZXRUcmFja2luZywgc2hhbGxvd1JlYWN0aXZlLCBzaGFsbG93UmVhZG9ubHksIHNoYWxsb3dSZWYsIHN0b3AsIHRvUmF3LCB0b1JlZiwgdG9SZWZzLCB0cmFjaywgdHJpZ2dlciwgdHJpZ2dlclJlZiwgdW5yZWYgfTtcbiIsImltcG9ydCB7IHBhdXNlVHJhY2tpbmcsIHJlc2V0VHJhY2tpbmcsIGlzUmVmLCB0b1JhdywgaXNTaGFsbG93IGFzIGlzU2hhbGxvdyQxLCBpc1JlYWN0aXZlLCBSZWFjdGl2ZUVmZmVjdCwgcmVmLCBzaGFsbG93UmVhZG9ubHksIHRyYWNrLCByZWFjdGl2ZSwgc2hhbGxvd1JlYWN0aXZlLCB0cmlnZ2VyLCBpc1Byb3h5LCBFZmZlY3RTY29wZSwgbWFya1JhdywgcHJveHlSZWZzLCBjb21wdXRlZCBhcyBjb21wdXRlZCQxLCBpc1JlYWRvbmx5IH0gZnJvbSAnQHZ1ZS9yZWFjdGl2aXR5JztcbmV4cG9ydCB7IEVmZmVjdFNjb3BlLCBSZWFjdGl2ZUVmZmVjdCwgY3VzdG9tUmVmLCBlZmZlY3QsIGVmZmVjdFNjb3BlLCBnZXRDdXJyZW50U2NvcGUsIGlzUHJveHksIGlzUmVhY3RpdmUsIGlzUmVhZG9ubHksIGlzUmVmLCBpc1NoYWxsb3csIG1hcmtSYXcsIG9uU2NvcGVEaXNwb3NlLCBwcm94eVJlZnMsIHJlYWN0aXZlLCByZWFkb25seSwgcmVmLCBzaGFsbG93UmVhY3RpdmUsIHNoYWxsb3dSZWFkb25seSwgc2hhbGxvd1JlZiwgc3RvcCwgdG9SYXcsIHRvUmVmLCB0b1JlZnMsIHRyaWdnZXJSZWYsIHVucmVmIH0gZnJvbSAnQHZ1ZS9yZWFjdGl2aXR5JztcbmltcG9ydCB7IGlzU3RyaW5nLCBpc0Z1bmN0aW9uLCBpc1Byb21pc2UsIGlzQXJyYXksIE5PT1AsIGdldEdsb2JhbFRoaXMsIGV4dGVuZCwgRU1QVFlfT0JKLCB0b0hhbmRsZXJLZXksIHRvTnVtYmVyLCBoeXBoZW5hdGUsIGNhbWVsaXplLCBpc09iamVjdCwgaXNPbiwgaGFzT3duLCBpc01vZGVsTGlzdGVuZXIsIGhhc0NoYW5nZWQsIHJlbW92ZSwgaXNTZXQsIGlzTWFwLCBpc1BsYWluT2JqZWN0LCBpbnZva2VBcnJheUZucywgaXNCdWlsdEluRGlyZWN0aXZlLCBjYXBpdGFsaXplLCBpc0dsb2JhbGx5V2hpdGVsaXN0ZWQsIGRlZiwgaXNSZXNlcnZlZFByb3AsIEVNUFRZX0FSUiwgdG9SYXdUeXBlLCBtYWtlTWFwLCBOTywgbm9ybWFsaXplQ2xhc3MsIG5vcm1hbGl6ZVN0eWxlIH0gZnJvbSAnQHZ1ZS9zaGFyZWQnO1xuZXhwb3J0IHsgY2FtZWxpemUsIGNhcGl0YWxpemUsIG5vcm1hbGl6ZUNsYXNzLCBub3JtYWxpemVQcm9wcywgbm9ybWFsaXplU3R5bGUsIHRvRGlzcGxheVN0cmluZywgdG9IYW5kbGVyS2V5IH0gZnJvbSAnQHZ1ZS9zaGFyZWQnO1xuXG5jb25zdCBzdGFjayA9IFtdO1xyXG5mdW5jdGlvbiBwdXNoV2FybmluZ0NvbnRleHQodm5vZGUpIHtcclxuICAgIHN0YWNrLnB1c2godm5vZGUpO1xyXG59XHJcbmZ1bmN0aW9uIHBvcFdhcm5pbmdDb250ZXh0KCkge1xyXG4gICAgc3RhY2sucG9wKCk7XHJcbn1cclxuZnVuY3Rpb24gd2Fybihtc2csIC4uLmFyZ3MpIHtcclxuICAgIC8vIGF2b2lkIHByb3BzIGZvcm1hdHRpbmcgb3Igd2FybiBoYW5kbGVyIHRyYWNraW5nIGRlcHMgdGhhdCBtaWdodCBiZSBtdXRhdGVkXHJcbiAgICAvLyBkdXJpbmcgcGF0Y2gsIGxlYWRpbmcgdG8gaW5maW5pdGUgcmVjdXJzaW9uLlxyXG4gICAgcGF1c2VUcmFja2luZygpO1xyXG4gICAgY29uc3QgaW5zdGFuY2UgPSBzdGFjay5sZW5ndGggPyBzdGFja1tzdGFjay5sZW5ndGggLSAxXS5jb21wb25lbnQgOiBudWxsO1xyXG4gICAgY29uc3QgYXBwV2FybkhhbmRsZXIgPSBpbnN0YW5jZSAmJiBpbnN0YW5jZS5hcHBDb250ZXh0LmNvbmZpZy53YXJuSGFuZGxlcjtcclxuICAgIGNvbnN0IHRyYWNlID0gZ2V0Q29tcG9uZW50VHJhY2UoKTtcclxuICAgIGlmIChhcHBXYXJuSGFuZGxlcikge1xyXG4gICAgICAgIGNhbGxXaXRoRXJyb3JIYW5kbGluZyhhcHBXYXJuSGFuZGxlciwgaW5zdGFuY2UsIDExIC8qIEVycm9yQ29kZXMuQVBQX1dBUk5fSEFORExFUiAqLywgW1xyXG4gICAgICAgICAgICBtc2cgKyBhcmdzLmpvaW4oJycpLFxyXG4gICAgICAgICAgICBpbnN0YW5jZSAmJiBpbnN0YW5jZS5wcm94eSxcclxuICAgICAgICAgICAgdHJhY2VcclxuICAgICAgICAgICAgICAgIC5tYXAoKHsgdm5vZGUgfSkgPT4gYGF0IDwke2Zvcm1hdENvbXBvbmVudE5hbWUoaW5zdGFuY2UsIHZub2RlLnR5cGUpfT5gKVxyXG4gICAgICAgICAgICAgICAgLmpvaW4oJ1xcbicpLFxyXG4gICAgICAgICAgICB0cmFjZVxyXG4gICAgICAgIF0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3Qgd2FybkFyZ3MgPSBbYFtWdWUgd2Fybl06ICR7bXNnfWAsIC4uLmFyZ3NdO1xyXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xyXG4gICAgICAgIGlmICh0cmFjZS5sZW5ndGggJiZcclxuICAgICAgICAgICAgLy8gYXZvaWQgc3BhbW1pbmcgY29uc29sZSBkdXJpbmcgdGVzdHNcclxuICAgICAgICAgICAgIWZhbHNlKSB7XHJcbiAgICAgICAgICAgIHdhcm5BcmdzLnB1c2goYFxcbmAsIC4uLmZvcm1hdFRyYWNlKHRyYWNlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnNvbGUud2FybiguLi53YXJuQXJncyk7XHJcbiAgICB9XHJcbiAgICByZXNldFRyYWNraW5nKCk7XHJcbn1cclxuZnVuY3Rpb24gZ2V0Q29tcG9uZW50VHJhY2UoKSB7XHJcbiAgICBsZXQgY3VycmVudFZOb2RlID0gc3RhY2tbc3RhY2subGVuZ3RoIC0gMV07XHJcbiAgICBpZiAoIWN1cnJlbnRWTm9kZSkge1xyXG4gICAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICAgIC8vIHdlIGNhbid0IGp1c3QgdXNlIHRoZSBzdGFjayBiZWNhdXNlIGl0IHdpbGwgYmUgaW5jb21wbGV0ZSBkdXJpbmcgdXBkYXRlc1xyXG4gICAgLy8gdGhhdCBkaWQgbm90IHN0YXJ0IGZyb20gdGhlIHJvb3QuIFJlLWNvbnN0cnVjdCB0aGUgcGFyZW50IGNoYWluIHVzaW5nXHJcbiAgICAvLyBpbnN0YW5jZSBwYXJlbnQgcG9pbnRlcnMuXHJcbiAgICBjb25zdCBub3JtYWxpemVkU3RhY2sgPSBbXTtcclxuICAgIHdoaWxlIChjdXJyZW50Vk5vZGUpIHtcclxuICAgICAgICBjb25zdCBsYXN0ID0gbm9ybWFsaXplZFN0YWNrWzBdO1xyXG4gICAgICAgIGlmIChsYXN0ICYmIGxhc3Qudm5vZGUgPT09IGN1cnJlbnRWTm9kZSkge1xyXG4gICAgICAgICAgICBsYXN0LnJlY3Vyc2VDb3VudCsrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbm9ybWFsaXplZFN0YWNrLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgdm5vZGU6IGN1cnJlbnRWTm9kZSxcclxuICAgICAgICAgICAgICAgIHJlY3Vyc2VDb3VudDogMFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcGFyZW50SW5zdGFuY2UgPSBjdXJyZW50Vk5vZGUuY29tcG9uZW50ICYmIGN1cnJlbnRWTm9kZS5jb21wb25lbnQucGFyZW50O1xyXG4gICAgICAgIGN1cnJlbnRWTm9kZSA9IHBhcmVudEluc3RhbmNlICYmIHBhcmVudEluc3RhbmNlLnZub2RlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5vcm1hbGl6ZWRTdGFjaztcclxufVxyXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xyXG5mdW5jdGlvbiBmb3JtYXRUcmFjZSh0cmFjZSkge1xyXG4gICAgY29uc3QgbG9ncyA9IFtdO1xyXG4gICAgdHJhY2UuZm9yRWFjaCgoZW50cnksIGkpID0+IHtcclxuICAgICAgICBsb2dzLnB1c2goLi4uKGkgPT09IDAgPyBbXSA6IFtgXFxuYF0pLCAuLi5mb3JtYXRUcmFjZUVudHJ5KGVudHJ5KSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBsb2dzO1xyXG59XHJcbmZ1bmN0aW9uIGZvcm1hdFRyYWNlRW50cnkoeyB2bm9kZSwgcmVjdXJzZUNvdW50IH0pIHtcclxuICAgIGNvbnN0IHBvc3RmaXggPSByZWN1cnNlQ291bnQgPiAwID8gYC4uLiAoJHtyZWN1cnNlQ291bnR9IHJlY3Vyc2l2ZSBjYWxscylgIDogYGA7XHJcbiAgICBjb25zdCBpc1Jvb3QgPSB2bm9kZS5jb21wb25lbnQgPyB2bm9kZS5jb21wb25lbnQucGFyZW50ID09IG51bGwgOiBmYWxzZTtcclxuICAgIGNvbnN0IG9wZW4gPSBgIGF0IDwke2Zvcm1hdENvbXBvbmVudE5hbWUodm5vZGUuY29tcG9uZW50LCB2bm9kZS50eXBlLCBpc1Jvb3QpfWA7XHJcbiAgICBjb25zdCBjbG9zZSA9IGA+YCArIHBvc3RmaXg7XHJcbiAgICByZXR1cm4gdm5vZGUucHJvcHNcclxuICAgICAgICA/IFtvcGVuLCAuLi5mb3JtYXRQcm9wcyh2bm9kZS5wcm9wcyksIGNsb3NlXVxyXG4gICAgICAgIDogW29wZW4gKyBjbG9zZV07XHJcbn1cclxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cclxuZnVuY3Rpb24gZm9ybWF0UHJvcHMocHJvcHMpIHtcclxuICAgIGNvbnN0IHJlcyA9IFtdO1xyXG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHByb3BzKTtcclxuICAgIGtleXMuc2xpY2UoMCwgMykuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgIHJlcy5wdXNoKC4uLmZvcm1hdFByb3Aoa2V5LCBwcm9wc1trZXldKSk7XHJcbiAgICB9KTtcclxuICAgIGlmIChrZXlzLmxlbmd0aCA+IDMpIHtcclxuICAgICAgICByZXMucHVzaChgIC4uLmApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcztcclxufVxyXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xyXG5mdW5jdGlvbiBmb3JtYXRQcm9wKGtleSwgdmFsdWUsIHJhdykge1xyXG4gICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xyXG4gICAgICAgIHZhbHVlID0gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xyXG4gICAgICAgIHJldHVybiByYXcgPyB2YWx1ZSA6IFtgJHtrZXl9PSR7dmFsdWV9YF07XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInIHx8XHJcbiAgICAgICAgdHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicgfHxcclxuICAgICAgICB2YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIHJhdyA/IHZhbHVlIDogW2Ake2tleX09JHt2YWx1ZX1gXTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzUmVmKHZhbHVlKSkge1xyXG4gICAgICAgIHZhbHVlID0gZm9ybWF0UHJvcChrZXksIHRvUmF3KHZhbHVlLnZhbHVlKSwgdHJ1ZSk7XHJcbiAgICAgICAgcmV0dXJuIHJhdyA/IHZhbHVlIDogW2Ake2tleX09UmVmPGAsIHZhbHVlLCBgPmBdO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNGdW5jdGlvbih2YWx1ZSkpIHtcclxuICAgICAgICByZXR1cm4gW2Ake2tleX09Zm4ke3ZhbHVlLm5hbWUgPyBgPCR7dmFsdWUubmFtZX0+YCA6IGBgfWBdO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgdmFsdWUgPSB0b1Jhdyh2YWx1ZSk7XHJcbiAgICAgICAgcmV0dXJuIHJhdyA/IHZhbHVlIDogW2Ake2tleX09YCwgdmFsdWVdO1xyXG4gICAgfVxyXG59XG5cbmNvbnN0IEVycm9yVHlwZVN0cmluZ3MgPSB7XHJcbiAgICBbXCJzcFwiIC8qIExpZmVjeWNsZUhvb2tzLlNFUlZFUl9QUkVGRVRDSCAqL106ICdzZXJ2ZXJQcmVmZXRjaCBob29rJyxcclxuICAgIFtcImJjXCIgLyogTGlmZWN5Y2xlSG9va3MuQkVGT1JFX0NSRUFURSAqL106ICdiZWZvcmVDcmVhdGUgaG9vaycsXHJcbiAgICBbXCJjXCIgLyogTGlmZWN5Y2xlSG9va3MuQ1JFQVRFRCAqL106ICdjcmVhdGVkIGhvb2snLFxyXG4gICAgW1wiYm1cIiAvKiBMaWZlY3ljbGVIb29rcy5CRUZPUkVfTU9VTlQgKi9dOiAnYmVmb3JlTW91bnQgaG9vaycsXHJcbiAgICBbXCJtXCIgLyogTGlmZWN5Y2xlSG9va3MuTU9VTlRFRCAqL106ICdtb3VudGVkIGhvb2snLFxyXG4gICAgW1wiYnVcIiAvKiBMaWZlY3ljbGVIb29rcy5CRUZPUkVfVVBEQVRFICovXTogJ2JlZm9yZVVwZGF0ZSBob29rJyxcclxuICAgIFtcInVcIiAvKiBMaWZlY3ljbGVIb29rcy5VUERBVEVEICovXTogJ3VwZGF0ZWQnLFxyXG4gICAgW1wiYnVtXCIgLyogTGlmZWN5Y2xlSG9va3MuQkVGT1JFX1VOTU9VTlQgKi9dOiAnYmVmb3JlVW5tb3VudCBob29rJyxcclxuICAgIFtcInVtXCIgLyogTGlmZWN5Y2xlSG9va3MuVU5NT1VOVEVEICovXTogJ3VubW91bnRlZCBob29rJyxcclxuICAgIFtcImFcIiAvKiBMaWZlY3ljbGVIb29rcy5BQ1RJVkFURUQgKi9dOiAnYWN0aXZhdGVkIGhvb2snLFxyXG4gICAgW1wiZGFcIiAvKiBMaWZlY3ljbGVIb29rcy5ERUFDVElWQVRFRCAqL106ICdkZWFjdGl2YXRlZCBob29rJyxcclxuICAgIFtcImVjXCIgLyogTGlmZWN5Y2xlSG9va3MuRVJST1JfQ0FQVFVSRUQgKi9dOiAnZXJyb3JDYXB0dXJlZCBob29rJyxcclxuICAgIFtcInJ0Y1wiIC8qIExpZmVjeWNsZUhvb2tzLlJFTkRFUl9UUkFDS0VEICovXTogJ3JlbmRlclRyYWNrZWQgaG9vaycsXHJcbiAgICBbXCJydGdcIiAvKiBMaWZlY3ljbGVIb29rcy5SRU5ERVJfVFJJR0dFUkVEICovXTogJ3JlbmRlclRyaWdnZXJlZCBob29rJyxcclxuICAgIFswIC8qIEVycm9yQ29kZXMuU0VUVVBfRlVOQ1RJT04gKi9dOiAnc2V0dXAgZnVuY3Rpb24nLFxyXG4gICAgWzEgLyogRXJyb3JDb2Rlcy5SRU5ERVJfRlVOQ1RJT04gKi9dOiAncmVuZGVyIGZ1bmN0aW9uJyxcclxuICAgIFsyIC8qIEVycm9yQ29kZXMuV0FUQ0hfR0VUVEVSICovXTogJ3dhdGNoZXIgZ2V0dGVyJyxcclxuICAgIFszIC8qIEVycm9yQ29kZXMuV0FUQ0hfQ0FMTEJBQ0sgKi9dOiAnd2F0Y2hlciBjYWxsYmFjaycsXHJcbiAgICBbNCAvKiBFcnJvckNvZGVzLldBVENIX0NMRUFOVVAgKi9dOiAnd2F0Y2hlciBjbGVhbnVwIGZ1bmN0aW9uJyxcclxuICAgIFs1IC8qIEVycm9yQ29kZXMuTkFUSVZFX0VWRU5UX0hBTkRMRVIgKi9dOiAnbmF0aXZlIGV2ZW50IGhhbmRsZXInLFxyXG4gICAgWzYgLyogRXJyb3JDb2Rlcy5DT01QT05FTlRfRVZFTlRfSEFORExFUiAqL106ICdjb21wb25lbnQgZXZlbnQgaGFuZGxlcicsXHJcbiAgICBbNyAvKiBFcnJvckNvZGVzLlZOT0RFX0hPT0sgKi9dOiAndm5vZGUgaG9vaycsXHJcbiAgICBbOCAvKiBFcnJvckNvZGVzLkRJUkVDVElWRV9IT09LICovXTogJ2RpcmVjdGl2ZSBob29rJyxcclxuICAgIFs5IC8qIEVycm9yQ29kZXMuVFJBTlNJVElPTl9IT09LICovXTogJ3RyYW5zaXRpb24gaG9vaycsXHJcbiAgICBbMTAgLyogRXJyb3JDb2Rlcy5BUFBfRVJST1JfSEFORExFUiAqL106ICdhcHAgZXJyb3JIYW5kbGVyJyxcclxuICAgIFsxMSAvKiBFcnJvckNvZGVzLkFQUF9XQVJOX0hBTkRMRVIgKi9dOiAnYXBwIHdhcm5IYW5kbGVyJyxcclxuICAgIFsxMiAvKiBFcnJvckNvZGVzLkZVTkNUSU9OX1JFRiAqL106ICdyZWYgZnVuY3Rpb24nLFxyXG4gICAgWzEzIC8qIEVycm9yQ29kZXMuQVNZTkNfQ09NUE9ORU5UX0xPQURFUiAqL106ICdhc3luYyBjb21wb25lbnQgbG9hZGVyJyxcclxuICAgIFsxNCAvKiBFcnJvckNvZGVzLlNDSEVEVUxFUiAqL106ICdzY2hlZHVsZXIgZmx1c2guIFRoaXMgaXMgbGlrZWx5IGEgVnVlIGludGVybmFscyBidWcuICcgK1xyXG4gICAgICAgICdQbGVhc2Ugb3BlbiBhbiBpc3N1ZSBhdCBodHRwczovL25ldy1pc3N1ZS52dWVqcy5vcmcvP3JlcG89dnVlanMvY29yZSdcclxufTtcclxuZnVuY3Rpb24gY2FsbFdpdGhFcnJvckhhbmRsaW5nKGZuLCBpbnN0YW5jZSwgdHlwZSwgYXJncykge1xyXG4gICAgbGV0IHJlcztcclxuICAgIHRyeSB7XHJcbiAgICAgICAgcmVzID0gYXJncyA/IGZuKC4uLmFyZ3MpIDogZm4oKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChlcnIpIHtcclxuICAgICAgICBoYW5kbGVFcnJvcihlcnIsIGluc3RhbmNlLCB0eXBlKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXM7XHJcbn1cclxuZnVuY3Rpb24gY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcoZm4sIGluc3RhbmNlLCB0eXBlLCBhcmdzKSB7XHJcbiAgICBpZiAoaXNGdW5jdGlvbihmbikpIHtcclxuICAgICAgICBjb25zdCByZXMgPSBjYWxsV2l0aEVycm9ySGFuZGxpbmcoZm4sIGluc3RhbmNlLCB0eXBlLCBhcmdzKTtcclxuICAgICAgICBpZiAocmVzICYmIGlzUHJvbWlzZShyZXMpKSB7XHJcbiAgICAgICAgICAgIHJlcy5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgaGFuZGxlRXJyb3IoZXJyLCBpbnN0YW5jZSwgdHlwZSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdmFsdWVzID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdmFsdWVzLnB1c2goY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcoZm5baV0sIGluc3RhbmNlLCB0eXBlLCBhcmdzKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWVzO1xyXG59XHJcbmZ1bmN0aW9uIGhhbmRsZUVycm9yKGVyciwgaW5zdGFuY2UsIHR5cGUsIHRocm93SW5EZXYgPSB0cnVlKSB7XHJcbiAgICBjb25zdCBjb250ZXh0Vk5vZGUgPSBpbnN0YW5jZSA/IGluc3RhbmNlLnZub2RlIDogbnVsbDtcclxuICAgIGlmIChpbnN0YW5jZSkge1xyXG4gICAgICAgIGxldCBjdXIgPSBpbnN0YW5jZS5wYXJlbnQ7XHJcbiAgICAgICAgLy8gdGhlIGV4cG9zZWQgaW5zdGFuY2UgaXMgdGhlIHJlbmRlciBwcm94eSB0byBrZWVwIGl0IGNvbnNpc3RlbnQgd2l0aCAyLnhcclxuICAgICAgICBjb25zdCBleHBvc2VkSW5zdGFuY2UgPSBpbnN0YW5jZS5wcm94eTtcclxuICAgICAgICAvLyBpbiBwcm9kdWN0aW9uIHRoZSBob29rIHJlY2VpdmVzIG9ubHkgdGhlIGVycm9yIGNvZGVcclxuICAgICAgICBjb25zdCBlcnJvckluZm8gPSAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBFcnJvclR5cGVTdHJpbmdzW3R5cGVdIDogdHlwZTtcclxuICAgICAgICB3aGlsZSAoY3VyKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVycm9yQ2FwdHVyZWRIb29rcyA9IGN1ci5lYztcclxuICAgICAgICAgICAgaWYgKGVycm9yQ2FwdHVyZWRIb29rcykge1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlcnJvckNhcHR1cmVkSG9va3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3JDYXB0dXJlZEhvb2tzW2ldKGVyciwgZXhwb3NlZEluc3RhbmNlLCBlcnJvckluZm8pID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGN1ciA9IGN1ci5wYXJlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGFwcC1sZXZlbCBoYW5kbGluZ1xyXG4gICAgICAgIGNvbnN0IGFwcEVycm9ySGFuZGxlciA9IGluc3RhbmNlLmFwcENvbnRleHQuY29uZmlnLmVycm9ySGFuZGxlcjtcclxuICAgICAgICBpZiAoYXBwRXJyb3JIYW5kbGVyKSB7XHJcbiAgICAgICAgICAgIGNhbGxXaXRoRXJyb3JIYW5kbGluZyhhcHBFcnJvckhhbmRsZXIsIG51bGwsIDEwIC8qIEVycm9yQ29kZXMuQVBQX0VSUk9SX0hBTkRMRVIgKi8sIFtlcnIsIGV4cG9zZWRJbnN0YW5jZSwgZXJyb3JJbmZvXSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBsb2dFcnJvcihlcnIsIHR5cGUsIGNvbnRleHRWTm9kZSwgdGhyb3dJbkRldik7XHJcbn1cclxuZnVuY3Rpb24gbG9nRXJyb3IoZXJyLCB0eXBlLCBjb250ZXh0Vk5vZGUsIHRocm93SW5EZXYgPSB0cnVlKSB7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgY29uc3QgaW5mbyA9IEVycm9yVHlwZVN0cmluZ3NbdHlwZV07XHJcbiAgICAgICAgaWYgKGNvbnRleHRWTm9kZSkge1xyXG4gICAgICAgICAgICBwdXNoV2FybmluZ0NvbnRleHQoY29udGV4dFZOb2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgd2FybihgVW5oYW5kbGVkIGVycm9yJHtpbmZvID8gYCBkdXJpbmcgZXhlY3V0aW9uIG9mICR7aW5mb31gIDogYGB9YCk7XHJcbiAgICAgICAgaWYgKGNvbnRleHRWTm9kZSkge1xyXG4gICAgICAgICAgICBwb3BXYXJuaW5nQ29udGV4dCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBjcmFzaCBpbiBkZXYgYnkgZGVmYXVsdCBzbyBpdCdzIG1vcmUgbm90aWNlYWJsZVxyXG4gICAgICAgIGlmICh0aHJvd0luRGV2KSB7XHJcbiAgICAgICAgICAgIHRocm93IGVycjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyByZWNvdmVyIGluIHByb2QgdG8gcmVkdWNlIHRoZSBpbXBhY3Qgb24gZW5kLXVzZXJcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICB9XHJcbn1cblxubGV0IGlzRmx1c2hpbmcgPSBmYWxzZTtcclxubGV0IGlzRmx1c2hQZW5kaW5nID0gZmFsc2U7XHJcbmNvbnN0IHF1ZXVlID0gW107XHJcbmxldCBmbHVzaEluZGV4ID0gMDtcclxuY29uc3QgcGVuZGluZ1Bvc3RGbHVzaENicyA9IFtdO1xyXG5sZXQgYWN0aXZlUG9zdEZsdXNoQ2JzID0gbnVsbDtcclxubGV0IHBvc3RGbHVzaEluZGV4ID0gMDtcclxuY29uc3QgcmVzb2x2ZWRQcm9taXNlID0gLyojX19QVVJFX18qLyBQcm9taXNlLnJlc29sdmUoKTtcclxubGV0IGN1cnJlbnRGbHVzaFByb21pc2UgPSBudWxsO1xyXG5jb25zdCBSRUNVUlNJT05fTElNSVQgPSAxMDA7XHJcbmZ1bmN0aW9uIG5leHRUaWNrKGZuKSB7XHJcbiAgICBjb25zdCBwID0gY3VycmVudEZsdXNoUHJvbWlzZSB8fCByZXNvbHZlZFByb21pc2U7XHJcbiAgICByZXR1cm4gZm4gPyBwLnRoZW4odGhpcyA/IGZuLmJpbmQodGhpcykgOiBmbikgOiBwO1xyXG59XHJcbi8vICMyNzY4XHJcbi8vIFVzZSBiaW5hcnktc2VhcmNoIHRvIGZpbmQgYSBzdWl0YWJsZSBwb3NpdGlvbiBpbiB0aGUgcXVldWUsXHJcbi8vIHNvIHRoYXQgdGhlIHF1ZXVlIG1haW50YWlucyB0aGUgaW5jcmVhc2luZyBvcmRlciBvZiBqb2IncyBpZCxcclxuLy8gd2hpY2ggY2FuIHByZXZlbnQgdGhlIGpvYiBmcm9tIGJlaW5nIHNraXBwZWQgYW5kIGFsc28gY2FuIGF2b2lkIHJlcGVhdGVkIHBhdGNoaW5nLlxyXG5mdW5jdGlvbiBmaW5kSW5zZXJ0aW9uSW5kZXgoaWQpIHtcclxuICAgIC8vIHRoZSBzdGFydCBpbmRleCBzaG91bGQgYmUgYGZsdXNoSW5kZXggKyAxYFxyXG4gICAgbGV0IHN0YXJ0ID0gZmx1c2hJbmRleCArIDE7XHJcbiAgICBsZXQgZW5kID0gcXVldWUubGVuZ3RoO1xyXG4gICAgd2hpbGUgKHN0YXJ0IDwgZW5kKSB7XHJcbiAgICAgICAgY29uc3QgbWlkZGxlID0gKHN0YXJ0ICsgZW5kKSA+Pj4gMTtcclxuICAgICAgICBjb25zdCBtaWRkbGVKb2JJZCA9IGdldElkKHF1ZXVlW21pZGRsZV0pO1xyXG4gICAgICAgIG1pZGRsZUpvYklkIDwgaWQgPyAoc3RhcnQgPSBtaWRkbGUgKyAxKSA6IChlbmQgPSBtaWRkbGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN0YXJ0O1xyXG59XHJcbmZ1bmN0aW9uIHF1ZXVlSm9iKGpvYikge1xyXG4gICAgLy8gdGhlIGRlZHVwZSBzZWFyY2ggdXNlcyB0aGUgc3RhcnRJbmRleCBhcmd1bWVudCBvZiBBcnJheS5pbmNsdWRlcygpXHJcbiAgICAvLyBieSBkZWZhdWx0IHRoZSBzZWFyY2ggaW5kZXggaW5jbHVkZXMgdGhlIGN1cnJlbnQgam9iIHRoYXQgaXMgYmVpbmcgcnVuXHJcbiAgICAvLyBzbyBpdCBjYW5ub3QgcmVjdXJzaXZlbHkgdHJpZ2dlciBpdHNlbGYgYWdhaW4uXHJcbiAgICAvLyBpZiB0aGUgam9iIGlzIGEgd2F0Y2goKSBjYWxsYmFjaywgdGhlIHNlYXJjaCB3aWxsIHN0YXJ0IHdpdGggYSArMSBpbmRleCB0b1xyXG4gICAgLy8gYWxsb3cgaXQgcmVjdXJzaXZlbHkgdHJpZ2dlciBpdHNlbGYgLSBpdCBpcyB0aGUgdXNlcidzIHJlc3BvbnNpYmlsaXR5IHRvXHJcbiAgICAvLyBlbnN1cmUgaXQgZG9lc24ndCBlbmQgdXAgaW4gYW4gaW5maW5pdGUgbG9vcC5cclxuICAgIGlmICghcXVldWUubGVuZ3RoIHx8XHJcbiAgICAgICAgIXF1ZXVlLmluY2x1ZGVzKGpvYiwgaXNGbHVzaGluZyAmJiBqb2IuYWxsb3dSZWN1cnNlID8gZmx1c2hJbmRleCArIDEgOiBmbHVzaEluZGV4KSkge1xyXG4gICAgICAgIGlmIChqb2IuaWQgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBxdWV1ZS5wdXNoKGpvYik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBxdWV1ZS5zcGxpY2UoZmluZEluc2VydGlvbkluZGV4KGpvYi5pZCksIDAsIGpvYik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHF1ZXVlRmx1c2goKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBxdWV1ZUZsdXNoKCkge1xyXG4gICAgaWYgKCFpc0ZsdXNoaW5nICYmICFpc0ZsdXNoUGVuZGluZykge1xyXG4gICAgICAgIGlzRmx1c2hQZW5kaW5nID0gdHJ1ZTtcclxuICAgICAgICBjdXJyZW50Rmx1c2hQcm9taXNlID0gcmVzb2x2ZWRQcm9taXNlLnRoZW4oZmx1c2hKb2JzKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBpbnZhbGlkYXRlSm9iKGpvYikge1xyXG4gICAgY29uc3QgaSA9IHF1ZXVlLmluZGV4T2Yoam9iKTtcclxuICAgIGlmIChpID4gZmx1c2hJbmRleCkge1xyXG4gICAgICAgIHF1ZXVlLnNwbGljZShpLCAxKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBxdWV1ZVBvc3RGbHVzaENiKGNiKSB7XHJcbiAgICBpZiAoIWlzQXJyYXkoY2IpKSB7XHJcbiAgICAgICAgaWYgKCFhY3RpdmVQb3N0Rmx1c2hDYnMgfHxcclxuICAgICAgICAgICAgIWFjdGl2ZVBvc3RGbHVzaENicy5pbmNsdWRlcyhjYiwgY2IuYWxsb3dSZWN1cnNlID8gcG9zdEZsdXNoSW5kZXggKyAxIDogcG9zdEZsdXNoSW5kZXgpKSB7XHJcbiAgICAgICAgICAgIHBlbmRpbmdQb3N0Rmx1c2hDYnMucHVzaChjYik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgLy8gaWYgY2IgaXMgYW4gYXJyYXksIGl0IGlzIGEgY29tcG9uZW50IGxpZmVjeWNsZSBob29rIHdoaWNoIGNhbiBvbmx5IGJlXHJcbiAgICAgICAgLy8gdHJpZ2dlcmVkIGJ5IGEgam9iLCB3aGljaCBpcyBhbHJlYWR5IGRlZHVwZWQgaW4gdGhlIG1haW4gcXVldWUsIHNvXHJcbiAgICAgICAgLy8gd2UgY2FuIHNraXAgZHVwbGljYXRlIGNoZWNrIGhlcmUgdG8gaW1wcm92ZSBwZXJmXHJcbiAgICAgICAgcGVuZGluZ1Bvc3RGbHVzaENicy5wdXNoKC4uLmNiKTtcclxuICAgIH1cclxuICAgIHF1ZXVlRmx1c2goKTtcclxufVxyXG5mdW5jdGlvbiBmbHVzaFByZUZsdXNoQ2JzKHNlZW4sIGkgPSBmbHVzaEluZGV4KSB7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgc2VlbiA9IHNlZW4gfHwgbmV3IE1hcCgpO1xyXG4gICAgfVxyXG4gICAgZm9yICg7IGkgPCBxdWV1ZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGNiID0gcXVldWVbaV07XHJcbiAgICAgICAgaWYgKGNiICYmIGNiLnByZSkge1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGNoZWNrUmVjdXJzaXZlVXBkYXRlcyhzZWVuLCBjYikpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHF1ZXVlLnNwbGljZShpLCAxKTtcclxuICAgICAgICAgICAgaS0tO1xyXG4gICAgICAgICAgICBjYigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBmbHVzaFBvc3RGbHVzaENicyhzZWVuKSB7XHJcbiAgICBpZiAocGVuZGluZ1Bvc3RGbHVzaENicy5sZW5ndGgpIHtcclxuICAgICAgICBjb25zdCBkZWR1cGVkID0gWy4uLm5ldyBTZXQocGVuZGluZ1Bvc3RGbHVzaENicyldO1xyXG4gICAgICAgIHBlbmRpbmdQb3N0Rmx1c2hDYnMubGVuZ3RoID0gMDtcclxuICAgICAgICAvLyAjMTk0NyBhbHJlYWR5IGhhcyBhY3RpdmUgcXVldWUsIG5lc3RlZCBmbHVzaFBvc3RGbHVzaENicyBjYWxsXHJcbiAgICAgICAgaWYgKGFjdGl2ZVBvc3RGbHVzaENicykge1xyXG4gICAgICAgICAgICBhY3RpdmVQb3N0Rmx1c2hDYnMucHVzaCguLi5kZWR1cGVkKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhY3RpdmVQb3N0Rmx1c2hDYnMgPSBkZWR1cGVkO1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgc2VlbiA9IHNlZW4gfHwgbmV3IE1hcCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhY3RpdmVQb3N0Rmx1c2hDYnMuc29ydCgoYSwgYikgPT4gZ2V0SWQoYSkgLSBnZXRJZChiKSk7XHJcbiAgICAgICAgZm9yIChwb3N0Rmx1c2hJbmRleCA9IDA7IHBvc3RGbHVzaEluZGV4IDwgYWN0aXZlUG9zdEZsdXNoQ2JzLmxlbmd0aDsgcG9zdEZsdXNoSW5kZXgrKykge1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgICAgICBjaGVja1JlY3Vyc2l2ZVVwZGF0ZXMoc2VlbiwgYWN0aXZlUG9zdEZsdXNoQ2JzW3Bvc3RGbHVzaEluZGV4XSkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGFjdGl2ZVBvc3RGbHVzaENic1twb3N0Rmx1c2hJbmRleF0oKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYWN0aXZlUG9zdEZsdXNoQ2JzID0gbnVsbDtcclxuICAgICAgICBwb3N0Rmx1c2hJbmRleCA9IDA7XHJcbiAgICB9XHJcbn1cclxuY29uc3QgZ2V0SWQgPSAoam9iKSA9PiBqb2IuaWQgPT0gbnVsbCA/IEluZmluaXR5IDogam9iLmlkO1xyXG5jb25zdCBjb21wYXJhdG9yID0gKGEsIGIpID0+IHtcclxuICAgIGNvbnN0IGRpZmYgPSBnZXRJZChhKSAtIGdldElkKGIpO1xyXG4gICAgaWYgKGRpZmYgPT09IDApIHtcclxuICAgICAgICBpZiAoYS5wcmUgJiYgIWIucHJlKVxyXG4gICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgaWYgKGIucHJlICYmICFhLnByZSlcclxuICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGlmZjtcclxufTtcclxuZnVuY3Rpb24gZmx1c2hKb2JzKHNlZW4pIHtcclxuICAgIGlzRmx1c2hQZW5kaW5nID0gZmFsc2U7XHJcbiAgICBpc0ZsdXNoaW5nID0gdHJ1ZTtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICBzZWVuID0gc2VlbiB8fCBuZXcgTWFwKCk7XHJcbiAgICB9XHJcbiAgICAvLyBTb3J0IHF1ZXVlIGJlZm9yZSBmbHVzaC5cclxuICAgIC8vIFRoaXMgZW5zdXJlcyB0aGF0OlxyXG4gICAgLy8gMS4gQ29tcG9uZW50cyBhcmUgdXBkYXRlZCBmcm9tIHBhcmVudCB0byBjaGlsZC4gKGJlY2F1c2UgcGFyZW50IGlzIGFsd2F5c1xyXG4gICAgLy8gICAgY3JlYXRlZCBiZWZvcmUgdGhlIGNoaWxkIHNvIGl0cyByZW5kZXIgZWZmZWN0IHdpbGwgaGF2ZSBzbWFsbGVyXHJcbiAgICAvLyAgICBwcmlvcml0eSBudW1iZXIpXHJcbiAgICAvLyAyLiBJZiBhIGNvbXBvbmVudCBpcyB1bm1vdW50ZWQgZHVyaW5nIGEgcGFyZW50IGNvbXBvbmVudCdzIHVwZGF0ZSxcclxuICAgIC8vICAgIGl0cyB1cGRhdGUgY2FuIGJlIHNraXBwZWQuXHJcbiAgICBxdWV1ZS5zb3J0KGNvbXBhcmF0b3IpO1xyXG4gICAgLy8gY29uZGl0aW9uYWwgdXNhZ2Ugb2YgY2hlY2tSZWN1cnNpdmVVcGRhdGUgbXVzdCBiZSBkZXRlcm1pbmVkIG91dCBvZlxyXG4gICAgLy8gdHJ5IC4uLiBjYXRjaCBibG9jayBzaW5jZSBSb2xsdXAgYnkgZGVmYXVsdCBkZS1vcHRpbWl6ZXMgdHJlZXNoYWtpbmdcclxuICAgIC8vIGluc2lkZSB0cnktY2F0Y2guIFRoaXMgY2FuIGxlYXZlIGFsbCB3YXJuaW5nIGNvZGUgdW5zaGFrZWQuIEFsdGhvdWdoXHJcbiAgICAvLyB0aGV5IHdvdWxkIGdldCBldmVudHVhbGx5IHNoYWtlbiBieSBhIG1pbmlmaWVyIGxpa2UgdGVyc2VyLCBzb21lIG1pbmlmaWVyc1xyXG4gICAgLy8gd291bGQgZmFpbCB0byBkbyB0aGF0IChlLmcuIGh0dHBzOi8vZ2l0aHViLmNvbS9ldmFudy9lc2J1aWxkL2lzc3Vlcy8xNjEwKVxyXG4gICAgY29uc3QgY2hlY2sgPSAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylcclxuICAgICAgICA/IChqb2IpID0+IGNoZWNrUmVjdXJzaXZlVXBkYXRlcyhzZWVuLCBqb2IpXHJcbiAgICAgICAgOiBOT09QO1xyXG4gICAgdHJ5IHtcclxuICAgICAgICBmb3IgKGZsdXNoSW5kZXggPSAwOyBmbHVzaEluZGV4IDwgcXVldWUubGVuZ3RoOyBmbHVzaEluZGV4KyspIHtcclxuICAgICAgICAgICAgY29uc3Qgam9iID0gcXVldWVbZmx1c2hJbmRleF07XHJcbiAgICAgICAgICAgIGlmIChqb2IgJiYgam9iLmFjdGl2ZSAhPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgY2hlY2soam9iKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coYHJ1bm5pbmc6YCwgam9iLmlkKVxyXG4gICAgICAgICAgICAgICAgY2FsbFdpdGhFcnJvckhhbmRsaW5nKGpvYiwgbnVsbCwgMTQgLyogRXJyb3JDb2Rlcy5TQ0hFRFVMRVIgKi8pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZmluYWxseSB7XHJcbiAgICAgICAgZmx1c2hJbmRleCA9IDA7XHJcbiAgICAgICAgcXVldWUubGVuZ3RoID0gMDtcclxuICAgICAgICBmbHVzaFBvc3RGbHVzaENicyhzZWVuKTtcclxuICAgICAgICBpc0ZsdXNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgY3VycmVudEZsdXNoUHJvbWlzZSA9IG51bGw7XHJcbiAgICAgICAgLy8gc29tZSBwb3N0Rmx1c2hDYiBxdWV1ZWQgam9icyFcclxuICAgICAgICAvLyBrZWVwIGZsdXNoaW5nIHVudGlsIGl0IGRyYWlucy5cclxuICAgICAgICBpZiAocXVldWUubGVuZ3RoIHx8IHBlbmRpbmdQb3N0Rmx1c2hDYnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGZsdXNoSm9icyhzZWVuKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gY2hlY2tSZWN1cnNpdmVVcGRhdGVzKHNlZW4sIGZuKSB7XHJcbiAgICBpZiAoIXNlZW4uaGFzKGZuKSkge1xyXG4gICAgICAgIHNlZW4uc2V0KGZuLCAxKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGNvdW50ID0gc2Vlbi5nZXQoZm4pO1xyXG4gICAgICAgIGlmIChjb3VudCA+IFJFQ1VSU0lPTl9MSU1JVCkge1xyXG4gICAgICAgICAgICBjb25zdCBpbnN0YW5jZSA9IGZuLm93bmVySW5zdGFuY2U7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudE5hbWUgPSBpbnN0YW5jZSAmJiBnZXRDb21wb25lbnROYW1lKGluc3RhbmNlLnR5cGUpO1xyXG4gICAgICAgICAgICB3YXJuKGBNYXhpbXVtIHJlY3Vyc2l2ZSB1cGRhdGVzIGV4Y2VlZGVkJHtjb21wb25lbnROYW1lID8gYCBpbiBjb21wb25lbnQgPCR7Y29tcG9uZW50TmFtZX0+YCA6IGBgfS4gYCArXHJcbiAgICAgICAgICAgICAgICBgVGhpcyBtZWFucyB5b3UgaGF2ZSBhIHJlYWN0aXZlIGVmZmVjdCB0aGF0IGlzIG11dGF0aW5nIGl0cyBvd24gYCArXHJcbiAgICAgICAgICAgICAgICBgZGVwZW5kZW5jaWVzIGFuZCB0aHVzIHJlY3Vyc2l2ZWx5IHRyaWdnZXJpbmcgaXRzZWxmLiBQb3NzaWJsZSBzb3VyY2VzIGAgK1xyXG4gICAgICAgICAgICAgICAgYGluY2x1ZGUgY29tcG9uZW50IHRlbXBsYXRlLCByZW5kZXIgZnVuY3Rpb24sIHVwZGF0ZWQgaG9vayBvciBgICtcclxuICAgICAgICAgICAgICAgIGB3YXRjaGVyIHNvdXJjZSBmdW5jdGlvbi5gKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBzZWVuLnNldChmbiwgY291bnQgKyAxKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cblxuLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1nbG9iYWxzICovXHJcbmxldCBpc0htclVwZGF0aW5nID0gZmFsc2U7XHJcbmNvbnN0IGhtckRpcnR5Q29tcG9uZW50cyA9IG5ldyBTZXQoKTtcclxuLy8gRXhwb3NlIHRoZSBITVIgcnVudGltZSBvbiB0aGUgZ2xvYmFsIG9iamVjdFxyXG4vLyBUaGlzIG1ha2VzIGl0IGVudGlyZWx5IHRyZWUtc2hha2FibGUgd2l0aG91dCBwb2xsdXRpbmcgdGhlIGV4cG9ydHMgYW5kIG1ha2VzXHJcbi8vIGl0IGVhc2llciB0byBiZSB1c2VkIGluIHRvb2xpbmdzIGxpa2UgdnVlLWxvYWRlclxyXG4vLyBOb3RlOiBmb3IgYSBjb21wb25lbnQgdG8gYmUgZWxpZ2libGUgZm9yIEhNUiBpdCBhbHNvIG5lZWRzIHRoZSBfX2htcklkIG9wdGlvblxyXG4vLyB0byBiZSBzZXQgc28gdGhhdCBpdHMgaW5zdGFuY2VzIGNhbiBiZSByZWdpc3RlcmVkIC8gcmVtb3ZlZC5cclxuaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgZ2V0R2xvYmFsVGhpcygpLl9fVlVFX0hNUl9SVU5USU1FX18gPSB7XHJcbiAgICAgICAgY3JlYXRlUmVjb3JkOiB0cnlXcmFwKGNyZWF0ZVJlY29yZCksXHJcbiAgICAgICAgcmVyZW5kZXI6IHRyeVdyYXAocmVyZW5kZXIpLFxyXG4gICAgICAgIHJlbG9hZDogdHJ5V3JhcChyZWxvYWQpXHJcbiAgICB9O1xyXG59XHJcbmNvbnN0IG1hcCA9IG5ldyBNYXAoKTtcclxuZnVuY3Rpb24gcmVnaXN0ZXJITVIoaW5zdGFuY2UpIHtcclxuICAgIGNvbnN0IGlkID0gaW5zdGFuY2UudHlwZS5fX2htcklkO1xyXG4gICAgbGV0IHJlY29yZCA9IG1hcC5nZXQoaWQpO1xyXG4gICAgaWYgKCFyZWNvcmQpIHtcclxuICAgICAgICBjcmVhdGVSZWNvcmQoaWQsIGluc3RhbmNlLnR5cGUpO1xyXG4gICAgICAgIHJlY29yZCA9IG1hcC5nZXQoaWQpO1xyXG4gICAgfVxyXG4gICAgcmVjb3JkLmluc3RhbmNlcy5hZGQoaW5zdGFuY2UpO1xyXG59XHJcbmZ1bmN0aW9uIHVucmVnaXN0ZXJITVIoaW5zdGFuY2UpIHtcclxuICAgIG1hcC5nZXQoaW5zdGFuY2UudHlwZS5fX2htcklkKS5pbnN0YW5jZXMuZGVsZXRlKGluc3RhbmNlKTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVSZWNvcmQoaWQsIGluaXRpYWxEZWYpIHtcclxuICAgIGlmIChtYXAuaGFzKGlkKSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIG1hcC5zZXQoaWQsIHtcclxuICAgICAgICBpbml0aWFsRGVmOiBub3JtYWxpemVDbGFzc0NvbXBvbmVudChpbml0aWFsRGVmKSxcclxuICAgICAgICBpbnN0YW5jZXM6IG5ldyBTZXQoKVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxufVxyXG5mdW5jdGlvbiBub3JtYWxpemVDbGFzc0NvbXBvbmVudChjb21wb25lbnQpIHtcclxuICAgIHJldHVybiBpc0NsYXNzQ29tcG9uZW50KGNvbXBvbmVudCkgPyBjb21wb25lbnQuX192Y2NPcHRzIDogY29tcG9uZW50O1xyXG59XHJcbmZ1bmN0aW9uIHJlcmVuZGVyKGlkLCBuZXdSZW5kZXIpIHtcclxuICAgIGNvbnN0IHJlY29yZCA9IG1hcC5nZXQoaWQpO1xyXG4gICAgaWYgKCFyZWNvcmQpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyB1cGRhdGUgaW5pdGlhbCByZWNvcmQgKGZvciBub3QteWV0LXJlbmRlcmVkIGNvbXBvbmVudClcclxuICAgIHJlY29yZC5pbml0aWFsRGVmLnJlbmRlciA9IG5ld1JlbmRlcjtcclxuICAgIFsuLi5yZWNvcmQuaW5zdGFuY2VzXS5mb3JFYWNoKGluc3RhbmNlID0+IHtcclxuICAgICAgICBpZiAobmV3UmVuZGVyKSB7XHJcbiAgICAgICAgICAgIGluc3RhbmNlLnJlbmRlciA9IG5ld1JlbmRlcjtcclxuICAgICAgICAgICAgbm9ybWFsaXplQ2xhc3NDb21wb25lbnQoaW5zdGFuY2UudHlwZSkucmVuZGVyID0gbmV3UmVuZGVyO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpbnN0YW5jZS5yZW5kZXJDYWNoZSA9IFtdO1xyXG4gICAgICAgIC8vIHRoaXMgZmxhZyBmb3JjZXMgY2hpbGQgY29tcG9uZW50cyB3aXRoIHNsb3QgY29udGVudCB0byB1cGRhdGVcclxuICAgICAgICBpc0htclVwZGF0aW5nID0gdHJ1ZTtcclxuICAgICAgICBpbnN0YW5jZS51cGRhdGUoKTtcclxuICAgICAgICBpc0htclVwZGF0aW5nID0gZmFsc2U7XHJcbiAgICB9KTtcclxufVxyXG5mdW5jdGlvbiByZWxvYWQoaWQsIG5ld0NvbXApIHtcclxuICAgIGNvbnN0IHJlY29yZCA9IG1hcC5nZXQoaWQpO1xyXG4gICAgaWYgKCFyZWNvcmQpXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgbmV3Q29tcCA9IG5vcm1hbGl6ZUNsYXNzQ29tcG9uZW50KG5ld0NvbXApO1xyXG4gICAgLy8gdXBkYXRlIGluaXRpYWwgZGVmIChmb3Igbm90LXlldC1yZW5kZXJlZCBjb21wb25lbnRzKVxyXG4gICAgdXBkYXRlQ29tcG9uZW50RGVmKHJlY29yZC5pbml0aWFsRGVmLCBuZXdDb21wKTtcclxuICAgIC8vIGNyZWF0ZSBhIHNuYXBzaG90IHdoaWNoIGF2b2lkcyB0aGUgc2V0IGJlaW5nIG11dGF0ZWQgZHVyaW5nIHVwZGF0ZXNcclxuICAgIGNvbnN0IGluc3RhbmNlcyA9IFsuLi5yZWNvcmQuaW5zdGFuY2VzXTtcclxuICAgIGZvciAoY29uc3QgaW5zdGFuY2Ugb2YgaW5zdGFuY2VzKSB7XHJcbiAgICAgICAgY29uc3Qgb2xkQ29tcCA9IG5vcm1hbGl6ZUNsYXNzQ29tcG9uZW50KGluc3RhbmNlLnR5cGUpO1xyXG4gICAgICAgIGlmICghaG1yRGlydHlDb21wb25lbnRzLmhhcyhvbGRDb21wKSkge1xyXG4gICAgICAgICAgICAvLyAxLiBVcGRhdGUgZXhpc3RpbmcgY29tcCBkZWZpbml0aW9uIHRvIG1hdGNoIG5ldyBvbmVcclxuICAgICAgICAgICAgaWYgKG9sZENvbXAgIT09IHJlY29yZC5pbml0aWFsRGVmKSB7XHJcbiAgICAgICAgICAgICAgICB1cGRhdGVDb21wb25lbnREZWYob2xkQ29tcCwgbmV3Q29tcCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gMi4gbWFyayBkZWZpbml0aW9uIGRpcnR5LiBUaGlzIGZvcmNlcyB0aGUgcmVuZGVyZXIgdG8gcmVwbGFjZSB0aGVcclxuICAgICAgICAgICAgLy8gY29tcG9uZW50IG9uIHBhdGNoLlxyXG4gICAgICAgICAgICBobXJEaXJ0eUNvbXBvbmVudHMuYWRkKG9sZENvbXApO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyAzLiBpbnZhbGlkYXRlIG9wdGlvbnMgcmVzb2x1dGlvbiBjYWNoZVxyXG4gICAgICAgIGluc3RhbmNlLmFwcENvbnRleHQub3B0aW9uc0NhY2hlLmRlbGV0ZShpbnN0YW5jZS50eXBlKTtcclxuICAgICAgICAvLyA0LiBhY3R1YWxseSB1cGRhdGVcclxuICAgICAgICBpZiAoaW5zdGFuY2UuY2VSZWxvYWQpIHtcclxuICAgICAgICAgICAgLy8gY3VzdG9tIGVsZW1lbnRcclxuICAgICAgICAgICAgaG1yRGlydHlDb21wb25lbnRzLmFkZChvbGRDb21wKTtcclxuICAgICAgICAgICAgaW5zdGFuY2UuY2VSZWxvYWQobmV3Q29tcC5zdHlsZXMpO1xyXG4gICAgICAgICAgICBobXJEaXJ0eUNvbXBvbmVudHMuZGVsZXRlKG9sZENvbXApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChpbnN0YW5jZS5wYXJlbnQpIHtcclxuICAgICAgICAgICAgLy8gNC4gRm9yY2UgdGhlIHBhcmVudCBpbnN0YW5jZSB0byByZS1yZW5kZXIuIFRoaXMgd2lsbCBjYXVzZSBhbGwgdXBkYXRlZFxyXG4gICAgICAgICAgICAvLyBjb21wb25lbnRzIHRvIGJlIHVubW91bnRlZCBhbmQgcmUtbW91bnRlZC4gUXVldWUgdGhlIHVwZGF0ZSBzbyB0aGF0IHdlXHJcbiAgICAgICAgICAgIC8vIGRvbid0IGVuZCB1cCBmb3JjaW5nIHRoZSBzYW1lIHBhcmVudCB0byByZS1yZW5kZXIgbXVsdGlwbGUgdGltZXMuXHJcbiAgICAgICAgICAgIHF1ZXVlSm9iKGluc3RhbmNlLnBhcmVudC51cGRhdGUpO1xyXG4gICAgICAgICAgICAvLyBpbnN0YW5jZSBpcyB0aGUgaW5uZXIgY29tcG9uZW50IG9mIGFuIGFzeW5jIGN1c3RvbSBlbGVtZW50XHJcbiAgICAgICAgICAgIC8vIGludm9rZSB0byByZXNldCBzdHlsZXNcclxuICAgICAgICAgICAgaWYgKGluc3RhbmNlLnBhcmVudC50eXBlLl9fYXN5bmNMb2FkZXIgJiZcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLnBhcmVudC5jZVJlbG9hZCkge1xyXG4gICAgICAgICAgICAgICAgaW5zdGFuY2UucGFyZW50LmNlUmVsb2FkKG5ld0NvbXAuc3R5bGVzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChpbnN0YW5jZS5hcHBDb250ZXh0LnJlbG9hZCkge1xyXG4gICAgICAgICAgICAvLyByb290IGluc3RhbmNlIG1vdW50ZWQgdmlhIGNyZWF0ZUFwcCgpIGhhcyBhIHJlbG9hZCBtZXRob2RcclxuICAgICAgICAgICAgaW5zdGFuY2UuYXBwQ29udGV4dC5yZWxvYWQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgLy8gcm9vdCBpbnN0YW5jZSBpbnNpZGUgdHJlZSBjcmVhdGVkIHZpYSByYXcgcmVuZGVyKCkuIEZvcmNlIHJlbG9hZC5cclxuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKCdbSE1SXSBSb290IG9yIG1hbnVhbGx5IG1vdW50ZWQgaW5zdGFuY2UgbW9kaWZpZWQuIEZ1bGwgcmVsb2FkIHJlcXVpcmVkLicpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIDUuIG1ha2Ugc3VyZSB0byBjbGVhbnVwIGRpcnR5IGhtciBjb21wb25lbnRzIGFmdGVyIHVwZGF0ZVxyXG4gICAgcXVldWVQb3N0Rmx1c2hDYigoKSA9PiB7XHJcbiAgICAgICAgZm9yIChjb25zdCBpbnN0YW5jZSBvZiBpbnN0YW5jZXMpIHtcclxuICAgICAgICAgICAgaG1yRGlydHlDb21wb25lbnRzLmRlbGV0ZShub3JtYWxpemVDbGFzc0NvbXBvbmVudChpbnN0YW5jZS50eXBlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbn1cclxuZnVuY3Rpb24gdXBkYXRlQ29tcG9uZW50RGVmKG9sZENvbXAsIG5ld0NvbXApIHtcclxuICAgIGV4dGVuZChvbGRDb21wLCBuZXdDb21wKTtcclxuICAgIGZvciAoY29uc3Qga2V5IGluIG9sZENvbXApIHtcclxuICAgICAgICBpZiAoa2V5ICE9PSAnX19maWxlJyAmJiAhKGtleSBpbiBuZXdDb21wKSkge1xyXG4gICAgICAgICAgICBkZWxldGUgb2xkQ29tcFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiB0cnlXcmFwKGZuKSB7XHJcbiAgICByZXR1cm4gKGlkLCBhcmcpID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICByZXR1cm4gZm4oaWQsIGFyZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgW0hNUl0gU29tZXRoaW5nIHdlbnQgd3JvbmcgZHVyaW5nIFZ1ZSBjb21wb25lbnQgaG90LXJlbG9hZC4gYCArXHJcbiAgICAgICAgICAgICAgICBgRnVsbCByZWxvYWQgcmVxdWlyZWQuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxufVxuXG5sZXQgZGV2dG9vbHM7XHJcbmxldCBidWZmZXIgPSBbXTtcclxubGV0IGRldnRvb2xzTm90SW5zdGFsbGVkID0gZmFsc2U7XHJcbmZ1bmN0aW9uIGVtaXQoZXZlbnQsIC4uLmFyZ3MpIHtcclxuICAgIGlmIChkZXZ0b29scykge1xyXG4gICAgICAgIGRldnRvb2xzLmVtaXQoZXZlbnQsIC4uLmFyZ3MpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoIWRldnRvb2xzTm90SW5zdGFsbGVkKSB7XHJcbiAgICAgICAgYnVmZmVyLnB1c2goeyBldmVudCwgYXJncyB9KTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBzZXREZXZ0b29sc0hvb2soaG9vaywgdGFyZ2V0KSB7XHJcbiAgICB2YXIgX2EsIF9iO1xyXG4gICAgZGV2dG9vbHMgPSBob29rO1xyXG4gICAgaWYgKGRldnRvb2xzKSB7XHJcbiAgICAgICAgZGV2dG9vbHMuZW5hYmxlZCA9IHRydWU7XHJcbiAgICAgICAgYnVmZmVyLmZvckVhY2goKHsgZXZlbnQsIGFyZ3MgfSkgPT4gZGV2dG9vbHMuZW1pdChldmVudCwgLi4uYXJncykpO1xyXG4gICAgICAgIGJ1ZmZlciA9IFtdO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoXHJcbiAgICAvLyBoYW5kbGUgbGF0ZSBkZXZ0b29scyBpbmplY3Rpb24gLSBvbmx5IGRvIHRoaXMgaWYgd2UgYXJlIGluIGFuIGFjdHVhbFxyXG4gICAgLy8gYnJvd3NlciBlbnZpcm9ubWVudCB0byBhdm9pZCB0aGUgdGltZXIgaGFuZGxlIHN0YWxsaW5nIHRlc3QgcnVubmVyIGV4aXRcclxuICAgIC8vICgjNDgxNSlcclxuICAgIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmXHJcbiAgICAgICAgLy8gc29tZSBlbnZzIG1vY2sgd2luZG93IGJ1dCBub3QgZnVsbHlcclxuICAgICAgICB3aW5kb3cuSFRNTEVsZW1lbnQgJiZcclxuICAgICAgICAvLyBhbHNvIGV4Y2x1ZGUganNkb21cclxuICAgICAgICAhKChfYiA9IChfYSA9IHdpbmRvdy5uYXZpZ2F0b3IpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS51c2VyQWdlbnQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5pbmNsdWRlcygnanNkb20nKSkpIHtcclxuICAgICAgICBjb25zdCByZXBsYXkgPSAodGFyZ2V0Ll9fVlVFX0RFVlRPT0xTX0hPT0tfUkVQTEFZX18gPVxyXG4gICAgICAgICAgICB0YXJnZXQuX19WVUVfREVWVE9PTFNfSE9PS19SRVBMQVlfXyB8fCBbXSk7XHJcbiAgICAgICAgcmVwbGF5LnB1c2goKG5ld0hvb2spID0+IHtcclxuICAgICAgICAgICAgc2V0RGV2dG9vbHNIb29rKG5ld0hvb2ssIHRhcmdldCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy8gY2xlYXIgYnVmZmVyIGFmdGVyIDNzIC0gdGhlIHVzZXIgcHJvYmFibHkgZG9lc24ndCBoYXZlIGRldnRvb2xzIGluc3RhbGxlZFxyXG4gICAgICAgIC8vIGF0IGFsbCwgYW5kIGtlZXBpbmcgdGhlIGJ1ZmZlciB3aWxsIGNhdXNlIG1lbW9yeSBsZWFrcyAoIzQ3MzgpXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghZGV2dG9vbHMpIHtcclxuICAgICAgICAgICAgICAgIHRhcmdldC5fX1ZVRV9ERVZUT09MU19IT09LX1JFUExBWV9fID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIGRldnRvb2xzTm90SW5zdGFsbGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGJ1ZmZlciA9IFtdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSwgMzAwMCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBub24tYnJvd3NlciBlbnYsIGFzc3VtZSBub3QgaW5zdGFsbGVkXHJcbiAgICAgICAgZGV2dG9vbHNOb3RJbnN0YWxsZWQgPSB0cnVlO1xyXG4gICAgICAgIGJ1ZmZlciA9IFtdO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGRldnRvb2xzSW5pdEFwcChhcHAsIHZlcnNpb24pIHtcclxuICAgIGVtaXQoXCJhcHA6aW5pdFwiIC8qIERldnRvb2xzSG9va3MuQVBQX0lOSVQgKi8sIGFwcCwgdmVyc2lvbiwge1xyXG4gICAgICAgIEZyYWdtZW50LFxyXG4gICAgICAgIFRleHQsXHJcbiAgICAgICAgQ29tbWVudCxcclxuICAgICAgICBTdGF0aWNcclxuICAgIH0pO1xyXG59XHJcbmZ1bmN0aW9uIGRldnRvb2xzVW5tb3VudEFwcChhcHApIHtcclxuICAgIGVtaXQoXCJhcHA6dW5tb3VudFwiIC8qIERldnRvb2xzSG9va3MuQVBQX1VOTU9VTlQgKi8sIGFwcCk7XHJcbn1cclxuY29uc3QgZGV2dG9vbHNDb21wb25lbnRBZGRlZCA9IC8qI19fUFVSRV9fKi8gY3JlYXRlRGV2dG9vbHNDb21wb25lbnRIb29rKFwiY29tcG9uZW50OmFkZGVkXCIgLyogRGV2dG9vbHNIb29rcy5DT01QT05FTlRfQURERUQgKi8pO1xyXG5jb25zdCBkZXZ0b29sc0NvbXBvbmVudFVwZGF0ZWQgPSBcclxuLyojX19QVVJFX18qLyBjcmVhdGVEZXZ0b29sc0NvbXBvbmVudEhvb2soXCJjb21wb25lbnQ6dXBkYXRlZFwiIC8qIERldnRvb2xzSG9va3MuQ09NUE9ORU5UX1VQREFURUQgKi8pO1xyXG5jb25zdCBkZXZ0b29sc0NvbXBvbmVudFJlbW92ZWQgPSBcclxuLyojX19QVVJFX18qLyBjcmVhdGVEZXZ0b29sc0NvbXBvbmVudEhvb2soXCJjb21wb25lbnQ6cmVtb3ZlZFwiIC8qIERldnRvb2xzSG9va3MuQ09NUE9ORU5UX1JFTU9WRUQgKi8pO1xyXG5mdW5jdGlvbiBjcmVhdGVEZXZ0b29sc0NvbXBvbmVudEhvb2soaG9vaykge1xyXG4gICAgcmV0dXJuIChjb21wb25lbnQpID0+IHtcclxuICAgICAgICBlbWl0KGhvb2ssIGNvbXBvbmVudC5hcHBDb250ZXh0LmFwcCwgY29tcG9uZW50LnVpZCwgY29tcG9uZW50LnBhcmVudCA/IGNvbXBvbmVudC5wYXJlbnQudWlkIDogdW5kZWZpbmVkLCBjb21wb25lbnQpO1xyXG4gICAgfTtcclxufVxyXG5jb25zdCBkZXZ0b29sc1BlcmZTdGFydCA9IC8qI19fUFVSRV9fKi8gY3JlYXRlRGV2dG9vbHNQZXJmb3JtYW5jZUhvb2soXCJwZXJmOnN0YXJ0XCIgLyogRGV2dG9vbHNIb29rcy5QRVJGT1JNQU5DRV9TVEFSVCAqLyk7XHJcbmNvbnN0IGRldnRvb2xzUGVyZkVuZCA9IC8qI19fUFVSRV9fKi8gY3JlYXRlRGV2dG9vbHNQZXJmb3JtYW5jZUhvb2soXCJwZXJmOmVuZFwiIC8qIERldnRvb2xzSG9va3MuUEVSRk9STUFOQ0VfRU5EICovKTtcclxuZnVuY3Rpb24gY3JlYXRlRGV2dG9vbHNQZXJmb3JtYW5jZUhvb2soaG9vaykge1xyXG4gICAgcmV0dXJuIChjb21wb25lbnQsIHR5cGUsIHRpbWUpID0+IHtcclxuICAgICAgICBlbWl0KGhvb2ssIGNvbXBvbmVudC5hcHBDb250ZXh0LmFwcCwgY29tcG9uZW50LnVpZCwgY29tcG9uZW50LCB0eXBlLCB0aW1lKTtcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gZGV2dG9vbHNDb21wb25lbnRFbWl0KGNvbXBvbmVudCwgZXZlbnQsIHBhcmFtcykge1xyXG4gICAgZW1pdChcImNvbXBvbmVudDplbWl0XCIgLyogRGV2dG9vbHNIb29rcy5DT01QT05FTlRfRU1JVCAqLywgY29tcG9uZW50LmFwcENvbnRleHQuYXBwLCBjb21wb25lbnQsIGV2ZW50LCBwYXJhbXMpO1xyXG59XG5cbmZ1bmN0aW9uIGVtaXQkMShpbnN0YW5jZSwgZXZlbnQsIC4uLnJhd0FyZ3MpIHtcclxuICAgIGlmIChpbnN0YW5jZS5pc1VubW91bnRlZClcclxuICAgICAgICByZXR1cm47XHJcbiAgICBjb25zdCBwcm9wcyA9IGluc3RhbmNlLnZub2RlLnByb3BzIHx8IEVNUFRZX09CSjtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICBjb25zdCB7IGVtaXRzT3B0aW9ucywgcHJvcHNPcHRpb25zOiBbcHJvcHNPcHRpb25zXSB9ID0gaW5zdGFuY2U7XHJcbiAgICAgICAgaWYgKGVtaXRzT3B0aW9ucykge1xyXG4gICAgICAgICAgICBpZiAoIShldmVudCBpbiBlbWl0c09wdGlvbnMpICYmXHJcbiAgICAgICAgICAgICAgICAhKGZhbHNlICkpIHtcclxuICAgICAgICAgICAgICAgIGlmICghcHJvcHNPcHRpb25zIHx8ICEodG9IYW5kbGVyS2V5KGV2ZW50KSBpbiBwcm9wc09wdGlvbnMpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FybihgQ29tcG9uZW50IGVtaXR0ZWQgZXZlbnQgXCIke2V2ZW50fVwiIGJ1dCBpdCBpcyBuZWl0aGVyIGRlY2xhcmVkIGluIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgdGhlIGVtaXRzIG9wdGlvbiBub3IgYXMgYW4gXCIke3RvSGFuZGxlcktleShldmVudCl9XCIgcHJvcC5gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRvciA9IGVtaXRzT3B0aW9uc1tldmVudF07XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNGdW5jdGlvbih2YWxpZGF0b3IpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNWYWxpZCA9IHZhbGlkYXRvciguLi5yYXdBcmdzKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2FybihgSW52YWxpZCBldmVudCBhcmd1bWVudHM6IGV2ZW50IHZhbGlkYXRpb24gZmFpbGVkIGZvciBldmVudCBcIiR7ZXZlbnR9XCIuYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IGFyZ3MgPSByYXdBcmdzO1xyXG4gICAgY29uc3QgaXNNb2RlbExpc3RlbmVyID0gZXZlbnQuc3RhcnRzV2l0aCgndXBkYXRlOicpO1xyXG4gICAgLy8gZm9yIHYtbW9kZWwgdXBkYXRlOnh4eCBldmVudHMsIGFwcGx5IG1vZGlmaWVycyBvbiBhcmdzXHJcbiAgICBjb25zdCBtb2RlbEFyZyA9IGlzTW9kZWxMaXN0ZW5lciAmJiBldmVudC5zbGljZSg3KTtcclxuICAgIGlmIChtb2RlbEFyZyAmJiBtb2RlbEFyZyBpbiBwcm9wcykge1xyXG4gICAgICAgIGNvbnN0IG1vZGlmaWVyc0tleSA9IGAke21vZGVsQXJnID09PSAnbW9kZWxWYWx1ZScgPyAnbW9kZWwnIDogbW9kZWxBcmd9TW9kaWZpZXJzYDtcclxuICAgICAgICBjb25zdCB7IG51bWJlciwgdHJpbSB9ID0gcHJvcHNbbW9kaWZpZXJzS2V5XSB8fCBFTVBUWV9PQko7XHJcbiAgICAgICAgaWYgKHRyaW0pIHtcclxuICAgICAgICAgICAgYXJncyA9IHJhd0FyZ3MubWFwKGEgPT4gYS50cmltKCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobnVtYmVyKSB7XHJcbiAgICAgICAgICAgIGFyZ3MgPSByYXdBcmdzLm1hcCh0b051bWJlcik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB8fCBfX1ZVRV9QUk9EX0RFVlRPT0xTX18pIHtcclxuICAgICAgICBkZXZ0b29sc0NvbXBvbmVudEVtaXQoaW5zdGFuY2UsIGV2ZW50LCBhcmdzKTtcclxuICAgIH1cclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICBjb25zdCBsb3dlckNhc2VFdmVudCA9IGV2ZW50LnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgaWYgKGxvd2VyQ2FzZUV2ZW50ICE9PSBldmVudCAmJiBwcm9wc1t0b0hhbmRsZXJLZXkobG93ZXJDYXNlRXZlbnQpXSkge1xyXG4gICAgICAgICAgICB3YXJuKGBFdmVudCBcIiR7bG93ZXJDYXNlRXZlbnR9XCIgaXMgZW1pdHRlZCBpbiBjb21wb25lbnQgYCArXHJcbiAgICAgICAgICAgICAgICBgJHtmb3JtYXRDb21wb25lbnROYW1lKGluc3RhbmNlLCBpbnN0YW5jZS50eXBlKX0gYnV0IHRoZSBoYW5kbGVyIGlzIHJlZ2lzdGVyZWQgZm9yIFwiJHtldmVudH1cIi4gYCArXHJcbiAgICAgICAgICAgICAgICBgTm90ZSB0aGF0IEhUTUwgYXR0cmlidXRlcyBhcmUgY2FzZS1pbnNlbnNpdGl2ZSBhbmQgeW91IGNhbm5vdCB1c2UgYCArXHJcbiAgICAgICAgICAgICAgICBgdi1vbiB0byBsaXN0ZW4gdG8gY2FtZWxDYXNlIGV2ZW50cyB3aGVuIHVzaW5nIGluLURPTSB0ZW1wbGF0ZXMuIGAgK1xyXG4gICAgICAgICAgICAgICAgYFlvdSBzaG91bGQgcHJvYmFibHkgdXNlIFwiJHtoeXBoZW5hdGUoZXZlbnQpfVwiIGluc3RlYWQgb2YgXCIke2V2ZW50fVwiLmApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCBoYW5kbGVyTmFtZTtcclxuICAgIGxldCBoYW5kbGVyID0gcHJvcHNbKGhhbmRsZXJOYW1lID0gdG9IYW5kbGVyS2V5KGV2ZW50KSldIHx8XHJcbiAgICAgICAgLy8gYWxzbyB0cnkgY2FtZWxDYXNlIGV2ZW50IGhhbmRsZXIgKCMyMjQ5KVxyXG4gICAgICAgIHByb3BzWyhoYW5kbGVyTmFtZSA9IHRvSGFuZGxlcktleShjYW1lbGl6ZShldmVudCkpKV07XHJcbiAgICAvLyBmb3Igdi1tb2RlbCB1cGRhdGU6eHh4IGV2ZW50cywgYWxzbyB0cmlnZ2VyIGtlYmFiLWNhc2UgZXF1aXZhbGVudFxyXG4gICAgLy8gZm9yIHByb3BzIHBhc3NlZCB2aWEga2ViYWItY2FzZVxyXG4gICAgaWYgKCFoYW5kbGVyICYmIGlzTW9kZWxMaXN0ZW5lcikge1xyXG4gICAgICAgIGhhbmRsZXIgPSBwcm9wc1soaGFuZGxlck5hbWUgPSB0b0hhbmRsZXJLZXkoaHlwaGVuYXRlKGV2ZW50KSkpXTtcclxuICAgIH1cclxuICAgIGlmIChoYW5kbGVyKSB7XHJcbiAgICAgICAgY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcoaGFuZGxlciwgaW5zdGFuY2UsIDYgLyogRXJyb3JDb2Rlcy5DT01QT05FTlRfRVZFTlRfSEFORExFUiAqLywgYXJncyk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBvbmNlSGFuZGxlciA9IHByb3BzW2hhbmRsZXJOYW1lICsgYE9uY2VgXTtcclxuICAgIGlmIChvbmNlSGFuZGxlcikge1xyXG4gICAgICAgIGlmICghaW5zdGFuY2UuZW1pdHRlZCkge1xyXG4gICAgICAgICAgICBpbnN0YW5jZS5lbWl0dGVkID0ge307XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGluc3RhbmNlLmVtaXR0ZWRbaGFuZGxlck5hbWVdKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaW5zdGFuY2UuZW1pdHRlZFtoYW5kbGVyTmFtZV0gPSB0cnVlO1xyXG4gICAgICAgIGNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nKG9uY2VIYW5kbGVyLCBpbnN0YW5jZSwgNiAvKiBFcnJvckNvZGVzLkNPTVBPTkVOVF9FVkVOVF9IQU5ETEVSICovLCBhcmdzKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBub3JtYWxpemVFbWl0c09wdGlvbnMoY29tcCwgYXBwQ29udGV4dCwgYXNNaXhpbiA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCBjYWNoZSA9IGFwcENvbnRleHQuZW1pdHNDYWNoZTtcclxuICAgIGNvbnN0IGNhY2hlZCA9IGNhY2hlLmdldChjb21wKTtcclxuICAgIGlmIChjYWNoZWQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHJldHVybiBjYWNoZWQ7XHJcbiAgICB9XHJcbiAgICBjb25zdCByYXcgPSBjb21wLmVtaXRzO1xyXG4gICAgbGV0IG5vcm1hbGl6ZWQgPSB7fTtcclxuICAgIC8vIGFwcGx5IG1peGluL2V4dGVuZHMgcHJvcHNcclxuICAgIGxldCBoYXNFeHRlbmRzID0gZmFsc2U7XHJcbiAgICBpZiAoX19WVUVfT1BUSU9OU19BUElfXyAmJiAhaXNGdW5jdGlvbihjb21wKSkge1xyXG4gICAgICAgIGNvbnN0IGV4dGVuZEVtaXRzID0gKHJhdykgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBub3JtYWxpemVkRnJvbUV4dGVuZCA9IG5vcm1hbGl6ZUVtaXRzT3B0aW9ucyhyYXcsIGFwcENvbnRleHQsIHRydWUpO1xyXG4gICAgICAgICAgICBpZiAobm9ybWFsaXplZEZyb21FeHRlbmQpIHtcclxuICAgICAgICAgICAgICAgIGhhc0V4dGVuZHMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgZXh0ZW5kKG5vcm1hbGl6ZWQsIG5vcm1hbGl6ZWRGcm9tRXh0ZW5kKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKCFhc01peGluICYmIGFwcENvbnRleHQubWl4aW5zLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBhcHBDb250ZXh0Lm1peGlucy5mb3JFYWNoKGV4dGVuZEVtaXRzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNvbXAuZXh0ZW5kcykge1xyXG4gICAgICAgICAgICBleHRlbmRFbWl0cyhjb21wLmV4dGVuZHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY29tcC5taXhpbnMpIHtcclxuICAgICAgICAgICAgY29tcC5taXhpbnMuZm9yRWFjaChleHRlbmRFbWl0cyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCFyYXcgJiYgIWhhc0V4dGVuZHMpIHtcclxuICAgICAgICBpZiAoaXNPYmplY3QoY29tcCkpIHtcclxuICAgICAgICAgICAgY2FjaGUuc2V0KGNvbXAsIG51bGwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGlmIChpc0FycmF5KHJhdykpIHtcclxuICAgICAgICByYXcuZm9yRWFjaChrZXkgPT4gKG5vcm1hbGl6ZWRba2V5XSA9IG51bGwpKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGV4dGVuZChub3JtYWxpemVkLCByYXcpO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzT2JqZWN0KGNvbXApKSB7XHJcbiAgICAgICAgY2FjaGUuc2V0KGNvbXAsIG5vcm1hbGl6ZWQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5vcm1hbGl6ZWQ7XHJcbn1cclxuLy8gQ2hlY2sgaWYgYW4gaW5jb21pbmcgcHJvcCBrZXkgaXMgYSBkZWNsYXJlZCBlbWl0IGV2ZW50IGxpc3RlbmVyLlxyXG4vLyBlLmcuIFdpdGggYGVtaXRzOiB7IGNsaWNrOiBudWxsIH1gLCBwcm9wcyBuYW1lZCBgb25DbGlja2AgYW5kIGBvbmNsaWNrYCBhcmVcclxuLy8gYm90aCBjb25zaWRlcmVkIG1hdGNoZWQgbGlzdGVuZXJzLlxyXG5mdW5jdGlvbiBpc0VtaXRMaXN0ZW5lcihvcHRpb25zLCBrZXkpIHtcclxuICAgIGlmICghb3B0aW9ucyB8fCAhaXNPbihrZXkpKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAga2V5ID0ga2V5LnNsaWNlKDIpLnJlcGxhY2UoL09uY2UkLywgJycpO1xyXG4gICAgcmV0dXJuIChoYXNPd24ob3B0aW9ucywga2V5WzBdLnRvTG93ZXJDYXNlKCkgKyBrZXkuc2xpY2UoMSkpIHx8XHJcbiAgICAgICAgaGFzT3duKG9wdGlvbnMsIGh5cGhlbmF0ZShrZXkpKSB8fFxyXG4gICAgICAgIGhhc093bihvcHRpb25zLCBrZXkpKTtcclxufVxuXG4vKipcclxuICogbWFyayB0aGUgY3VycmVudCByZW5kZXJpbmcgaW5zdGFuY2UgZm9yIGFzc2V0IHJlc29sdXRpb24gKGUuZy5cclxuICogcmVzb2x2ZUNvbXBvbmVudCwgcmVzb2x2ZURpcmVjdGl2ZSkgZHVyaW5nIHJlbmRlclxyXG4gKi9cclxubGV0IGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZSA9IG51bGw7XHJcbmxldCBjdXJyZW50U2NvcGVJZCA9IG51bGw7XHJcbi8qKlxyXG4gKiBOb3RlOiByZW5kZXJpbmcgY2FsbHMgbWF5YmUgbmVzdGVkLiBUaGUgZnVuY3Rpb24gcmV0dXJucyB0aGUgcGFyZW50IHJlbmRlcmluZ1xyXG4gKiBpbnN0YW5jZSBpZiBwcmVzZW50LCB3aGljaCBzaG91bGQgYmUgcmVzdG9yZWQgYWZ0ZXIgdGhlIHJlbmRlciBpcyBkb25lOlxyXG4gKlxyXG4gKiBgYGBqc1xyXG4gKiBjb25zdCBwcmV2ID0gc2V0Q3VycmVudFJlbmRlcmluZ0luc3RhbmNlKGkpXHJcbiAqIC8vIC4uLnJlbmRlclxyXG4gKiBzZXRDdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UocHJldilcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBzZXRDdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UoaW5zdGFuY2UpIHtcclxuICAgIGNvbnN0IHByZXYgPSBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2U7XHJcbiAgICBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UgPSBpbnN0YW5jZTtcclxuICAgIGN1cnJlbnRTY29wZUlkID0gKGluc3RhbmNlICYmIGluc3RhbmNlLnR5cGUuX19zY29wZUlkKSB8fCBudWxsO1xyXG4gICAgcmV0dXJuIHByZXY7XHJcbn1cclxuLyoqXHJcbiAqIFNldCBzY29wZSBpZCB3aGVuIGNyZWF0aW5nIGhvaXN0ZWQgdm5vZGVzLlxyXG4gKiBAcHJpdmF0ZSBjb21waWxlciBoZWxwZXJcclxuICovXHJcbmZ1bmN0aW9uIHB1c2hTY29wZUlkKGlkKSB7XHJcbiAgICBjdXJyZW50U2NvcGVJZCA9IGlkO1xyXG59XHJcbi8qKlxyXG4gKiBUZWNobmljYWxseSB3ZSBubyBsb25nZXIgbmVlZCB0aGlzIGFmdGVyIDMuMC44IGJ1dCB3ZSBuZWVkIHRvIGtlZXAgdGhlIHNhbWVcclxuICogQVBJIGZvciBiYWNrd2FyZHMgY29tcGF0IHcvIGNvZGUgZ2VuZXJhdGVkIGJ5IGNvbXBpbGVycy5cclxuICogQHByaXZhdGVcclxuICovXHJcbmZ1bmN0aW9uIHBvcFNjb3BlSWQoKSB7XHJcbiAgICBjdXJyZW50U2NvcGVJZCA9IG51bGw7XHJcbn1cclxuLyoqXHJcbiAqIE9ubHkgZm9yIGJhY2t3YXJkcyBjb21wYXRcclxuICogQHByaXZhdGVcclxuICovXHJcbmNvbnN0IHdpdGhTY29wZUlkID0gKF9pZCkgPT4gd2l0aEN0eDtcclxuLyoqXHJcbiAqIFdyYXAgYSBzbG90IGZ1bmN0aW9uIHRvIG1lbW9pemUgY3VycmVudCByZW5kZXJpbmcgaW5zdGFuY2VcclxuICogQHByaXZhdGUgY29tcGlsZXIgaGVscGVyXHJcbiAqL1xyXG5mdW5jdGlvbiB3aXRoQ3R4KGZuLCBjdHggPSBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UsIGlzTm9uU2NvcGVkU2xvdCAvLyBmYWxzZSBvbmx5XHJcbikge1xyXG4gICAgaWYgKCFjdHgpXHJcbiAgICAgICAgcmV0dXJuIGZuO1xyXG4gICAgLy8gYWxyZWFkeSBub3JtYWxpemVkXHJcbiAgICBpZiAoZm4uX24pIHtcclxuICAgICAgICByZXR1cm4gZm47XHJcbiAgICB9XHJcbiAgICBjb25zdCByZW5kZXJGbldpdGhDb250ZXh0ID0gKC4uLmFyZ3MpID0+IHtcclxuICAgICAgICAvLyBJZiBhIHVzZXIgY2FsbHMgYSBjb21waWxlZCBzbG90IGluc2lkZSBhIHRlbXBsYXRlIGV4cHJlc3Npb24gKCMxNzQ1KSwgaXRcclxuICAgICAgICAvLyBjYW4gbWVzcyB1cCBibG9jayB0cmFja2luZywgc28gYnkgZGVmYXVsdCB3ZSBkaXNhYmxlIGJsb2NrIHRyYWNraW5nIGFuZFxyXG4gICAgICAgIC8vIGZvcmNlIGJhaWwgb3V0IHdoZW4gaW52b2tpbmcgYSBjb21waWxlZCBzbG90IChpbmRpY2F0ZWQgYnkgdGhlIC5fZCBmbGFnKS5cclxuICAgICAgICAvLyBUaGlzIGlzbid0IG5lY2Vzc2FyeSBpZiByZW5kZXJpbmcgYSBjb21waWxlZCBgPHNsb3Q+YCwgc28gd2UgZmxpcCB0aGVcclxuICAgICAgICAvLyAuX2QgZmxhZyBvZmYgd2hlbiBpbnZva2luZyB0aGUgd3JhcHBlZCBmbiBpbnNpZGUgYHJlbmRlclNsb3RgLlxyXG4gICAgICAgIGlmIChyZW5kZXJGbldpdGhDb250ZXh0Ll9kKSB7XHJcbiAgICAgICAgICAgIHNldEJsb2NrVHJhY2tpbmcoLTEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBwcmV2SW5zdGFuY2UgPSBzZXRDdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UoY3R4KTtcclxuICAgICAgICBjb25zdCByZXMgPSBmbiguLi5hcmdzKTtcclxuICAgICAgICBzZXRDdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UocHJldkluc3RhbmNlKTtcclxuICAgICAgICBpZiAocmVuZGVyRm5XaXRoQ29udGV4dC5fZCkge1xyXG4gICAgICAgICAgICBzZXRCbG9ja1RyYWNraW5nKDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXykge1xyXG4gICAgICAgICAgICBkZXZ0b29sc0NvbXBvbmVudFVwZGF0ZWQoY3R4KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlcztcclxuICAgIH07XHJcbiAgICAvLyBtYXJrIG5vcm1hbGl6ZWQgdG8gYXZvaWQgZHVwbGljYXRlZCB3cmFwcGluZ1xyXG4gICAgcmVuZGVyRm5XaXRoQ29udGV4dC5fbiA9IHRydWU7XHJcbiAgICAvLyBtYXJrIHRoaXMgYXMgY29tcGlsZWQgYnkgZGVmYXVsdFxyXG4gICAgLy8gdGhpcyBpcyB1c2VkIGluIHZub2RlLnRzIC0+IG5vcm1hbGl6ZUNoaWxkcmVuKCkgdG8gc2V0IHRoZSBzbG90XHJcbiAgICAvLyByZW5kZXJpbmcgZmxhZy5cclxuICAgIHJlbmRlckZuV2l0aENvbnRleHQuX2MgPSB0cnVlO1xyXG4gICAgLy8gZGlzYWJsZSBibG9jayB0cmFja2luZyBieSBkZWZhdWx0XHJcbiAgICByZW5kZXJGbldpdGhDb250ZXh0Ll9kID0gdHJ1ZTtcclxuICAgIHJldHVybiByZW5kZXJGbldpdGhDb250ZXh0O1xyXG59XG5cbi8qKlxyXG4gKiBkZXYgb25seSBmbGFnIHRvIHRyYWNrIHdoZXRoZXIgJGF0dHJzIHdhcyB1c2VkIGR1cmluZyByZW5kZXIuXHJcbiAqIElmICRhdHRycyB3YXMgdXNlZCBkdXJpbmcgcmVuZGVyIHRoZW4gdGhlIHdhcm5pbmcgZm9yIGZhaWxlZCBhdHRyc1xyXG4gKiBmYWxsdGhyb3VnaCBjYW4gYmUgc3VwcHJlc3NlZC5cclxuICovXHJcbmxldCBhY2Nlc3NlZEF0dHJzID0gZmFsc2U7XHJcbmZ1bmN0aW9uIG1hcmtBdHRyc0FjY2Vzc2VkKCkge1xyXG4gICAgYWNjZXNzZWRBdHRycyA9IHRydWU7XHJcbn1cclxuZnVuY3Rpb24gcmVuZGVyQ29tcG9uZW50Um9vdChpbnN0YW5jZSkge1xyXG4gICAgY29uc3QgeyB0eXBlOiBDb21wb25lbnQsIHZub2RlLCBwcm94eSwgd2l0aFByb3h5LCBwcm9wcywgcHJvcHNPcHRpb25zOiBbcHJvcHNPcHRpb25zXSwgc2xvdHMsIGF0dHJzLCBlbWl0LCByZW5kZXIsIHJlbmRlckNhY2hlLCBkYXRhLCBzZXR1cFN0YXRlLCBjdHgsIGluaGVyaXRBdHRycyB9ID0gaW5zdGFuY2U7XHJcbiAgICBsZXQgcmVzdWx0O1xyXG4gICAgbGV0IGZhbGx0aHJvdWdoQXR0cnM7XHJcbiAgICBjb25zdCBwcmV2ID0gc2V0Q3VycmVudFJlbmRlcmluZ0luc3RhbmNlKGluc3RhbmNlKTtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICBhY2Nlc3NlZEF0dHJzID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICB0cnkge1xyXG4gICAgICAgIGlmICh2bm9kZS5zaGFwZUZsYWcgJiA0IC8qIFNoYXBlRmxhZ3MuU1RBVEVGVUxfQ09NUE9ORU5UICovKSB7XHJcbiAgICAgICAgICAgIC8vIHdpdGhQcm94eSBpcyBhIHByb3h5IHdpdGggYSBkaWZmZXJlbnQgYGhhc2AgdHJhcCBvbmx5IGZvclxyXG4gICAgICAgICAgICAvLyBydW50aW1lLWNvbXBpbGVkIHJlbmRlciBmdW5jdGlvbnMgdXNpbmcgYHdpdGhgIGJsb2NrLlxyXG4gICAgICAgICAgICBjb25zdCBwcm94eVRvVXNlID0gd2l0aFByb3h5IHx8IHByb3h5O1xyXG4gICAgICAgICAgICByZXN1bHQgPSBub3JtYWxpemVWTm9kZShyZW5kZXIuY2FsbChwcm94eVRvVXNlLCBwcm94eVRvVXNlLCByZW5kZXJDYWNoZSwgcHJvcHMsIHNldHVwU3RhdGUsIGRhdGEsIGN0eCkpO1xyXG4gICAgICAgICAgICBmYWxsdGhyb3VnaEF0dHJzID0gYXR0cnM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBmdW5jdGlvbmFsXHJcbiAgICAgICAgICAgIGNvbnN0IHJlbmRlciA9IENvbXBvbmVudDtcclxuICAgICAgICAgICAgLy8gaW4gZGV2LCBtYXJrIGF0dHJzIGFjY2Vzc2VkIGlmIG9wdGlvbmFsIHByb3BzIChhdHRycyA9PT0gcHJvcHMpXHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgYXR0cnMgPT09IHByb3BzKSB7XHJcbiAgICAgICAgICAgICAgICBtYXJrQXR0cnNBY2Nlc3NlZCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJlc3VsdCA9IG5vcm1hbGl6ZVZOb2RlKHJlbmRlci5sZW5ndGggPiAxXHJcbiAgICAgICAgICAgICAgICA/IHJlbmRlcihwcm9wcywgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpXHJcbiAgICAgICAgICAgICAgICAgICAgPyB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldCBhdHRycygpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtBdHRyc0FjY2Vzc2VkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXR0cnM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNsb3RzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbWl0XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIDogeyBhdHRycywgc2xvdHMsIGVtaXQgfSlcclxuICAgICAgICAgICAgICAgIDogcmVuZGVyKHByb3BzLCBudWxsIC8qIHdlIGtub3cgaXQgZG9lc24ndCBuZWVkIGl0ICovKSk7XHJcbiAgICAgICAgICAgIGZhbGx0aHJvdWdoQXR0cnMgPSBDb21wb25lbnQucHJvcHNcclxuICAgICAgICAgICAgICAgID8gYXR0cnNcclxuICAgICAgICAgICAgICAgIDogZ2V0RnVuY3Rpb25hbEZhbGx0aHJvdWdoKGF0dHJzKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgYmxvY2tTdGFjay5sZW5ndGggPSAwO1xyXG4gICAgICAgIGhhbmRsZUVycm9yKGVyciwgaW5zdGFuY2UsIDEgLyogRXJyb3JDb2Rlcy5SRU5ERVJfRlVOQ1RJT04gKi8pO1xyXG4gICAgICAgIHJlc3VsdCA9IGNyZWF0ZVZOb2RlKENvbW1lbnQpO1xyXG4gICAgfVxyXG4gICAgLy8gYXR0ciBtZXJnaW5nXHJcbiAgICAvLyBpbiBkZXYgbW9kZSwgY29tbWVudHMgYXJlIHByZXNlcnZlZCwgYW5kIGl0J3MgcG9zc2libGUgZm9yIGEgdGVtcGxhdGVcclxuICAgIC8vIHRvIGhhdmUgY29tbWVudHMgYWxvbmcgc2lkZSB0aGUgcm9vdCBlbGVtZW50IHdoaWNoIG1ha2VzIGl0IGEgZnJhZ21lbnRcclxuICAgIGxldCByb290ID0gcmVzdWx0O1xyXG4gICAgbGV0IHNldFJvb3QgPSB1bmRlZmluZWQ7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgcmVzdWx0LnBhdGNoRmxhZyA+IDAgJiZcclxuICAgICAgICByZXN1bHQucGF0Y2hGbGFnICYgMjA0OCAvKiBQYXRjaEZsYWdzLkRFVl9ST09UX0ZSQUdNRU5UICovKSB7XHJcbiAgICAgICAgW3Jvb3QsIHNldFJvb3RdID0gZ2V0Q2hpbGRSb290KHJlc3VsdCk7XHJcbiAgICB9XHJcbiAgICBpZiAoZmFsbHRocm91Z2hBdHRycyAmJiBpbmhlcml0QXR0cnMgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGZhbGx0aHJvdWdoQXR0cnMpO1xyXG4gICAgICAgIGNvbnN0IHsgc2hhcGVGbGFnIH0gPSByb290O1xyXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBpZiAoc2hhcGVGbGFnICYgKDEgLyogU2hhcGVGbGFncy5FTEVNRU5UICovIHwgNiAvKiBTaGFwZUZsYWdzLkNPTVBPTkVOVCAqLykpIHtcclxuICAgICAgICAgICAgICAgIGlmIChwcm9wc09wdGlvbnMgJiYga2V5cy5zb21lKGlzTW9kZWxMaXN0ZW5lcikpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBJZiBhIHYtbW9kZWwgbGlzdGVuZXIgKG9uVXBkYXRlOnh4eCkgaGFzIGEgY29ycmVzcG9uZGluZyBkZWNsYXJlZFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHByb3AsIGl0IGluZGljYXRlcyB0aGlzIGNvbXBvbmVudCBleHBlY3RzIHRvIGhhbmRsZSB2LW1vZGVsIGFuZFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGl0IHNob3VsZCBub3QgZmFsbHRocm91Z2guXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gcmVsYXRlZDogIzE1NDMsICMxNjQzLCAjMTk4OVxyXG4gICAgICAgICAgICAgICAgICAgIGZhbGx0aHJvdWdoQXR0cnMgPSBmaWx0ZXJNb2RlbExpc3RlbmVycyhmYWxsdGhyb3VnaEF0dHJzLCBwcm9wc09wdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcm9vdCA9IGNsb25lVk5vZGUocm9vdCwgZmFsbHRocm91Z2hBdHRycyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFhY2Nlc3NlZEF0dHJzICYmIHJvb3QudHlwZSAhPT0gQ29tbWVudCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYWxsQXR0cnMgPSBPYmplY3Qua2V5cyhhdHRycyk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBldmVudEF0dHJzID0gW107XHJcbiAgICAgICAgICAgICAgICBjb25zdCBleHRyYUF0dHJzID0gW107XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgbCA9IGFsbEF0dHJzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFsbEF0dHJzW2ldO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc09uKGtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWdub3JlIHYtbW9kZWwgaGFuZGxlcnMgd2hlbiB0aGV5IGZhaWwgdG8gZmFsbHRocm91Z2hcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc01vZGVsTGlzdGVuZXIoa2V5KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVtb3ZlIGBvbmAsIGxvd2VyY2FzZSBmaXJzdCBsZXR0ZXIgdG8gcmVmbGVjdCBldmVudCBjYXNpbmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFjY3VyYXRlbHlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50QXR0cnMucHVzaChrZXlbMl0udG9Mb3dlckNhc2UoKSArIGtleS5zbGljZSgzKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhQXR0cnMucHVzaChrZXkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChleHRyYUF0dHJzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oYEV4dHJhbmVvdXMgbm9uLXByb3BzIGF0dHJpYnV0ZXMgKGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgJHtleHRyYUF0dHJzLmpvaW4oJywgJyl9KSBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYHdlcmUgcGFzc2VkIHRvIGNvbXBvbmVudCBidXQgY291bGQgbm90IGJlIGF1dG9tYXRpY2FsbHkgaW5oZXJpdGVkIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgYmVjYXVzZSBjb21wb25lbnQgcmVuZGVycyBmcmFnbWVudCBvciB0ZXh0IHJvb3Qgbm9kZXMuYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnRBdHRycy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKGBFeHRyYW5lb3VzIG5vbi1lbWl0cyBldmVudCBsaXN0ZW5lcnMgKGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgJHtldmVudEF0dHJzLmpvaW4oJywgJyl9KSBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYHdlcmUgcGFzc2VkIHRvIGNvbXBvbmVudCBidXQgY291bGQgbm90IGJlIGF1dG9tYXRpY2FsbHkgaW5oZXJpdGVkIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgYmVjYXVzZSBjb21wb25lbnQgcmVuZGVycyBmcmFnbWVudCBvciB0ZXh0IHJvb3Qgbm9kZXMuIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgSWYgdGhlIGxpc3RlbmVyIGlzIGludGVuZGVkIHRvIGJlIGEgY29tcG9uZW50IGN1c3RvbSBldmVudCBsaXN0ZW5lciBvbmx5LCBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYGRlY2xhcmUgaXQgdXNpbmcgdGhlIFwiZW1pdHNcIiBvcHRpb24uYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBpbmhlcml0IGRpcmVjdGl2ZXNcclxuICAgIGlmICh2bm9kZS5kaXJzKSB7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhaXNFbGVtZW50Um9vdChyb290KSkge1xyXG4gICAgICAgICAgICB3YXJuKGBSdW50aW1lIGRpcmVjdGl2ZSB1c2VkIG9uIGNvbXBvbmVudCB3aXRoIG5vbi1lbGVtZW50IHJvb3Qgbm9kZS4gYCArXHJcbiAgICAgICAgICAgICAgICBgVGhlIGRpcmVjdGl2ZXMgd2lsbCBub3QgZnVuY3Rpb24gYXMgaW50ZW5kZWQuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNsb25lIGJlZm9yZSBtdXRhdGluZyBzaW5jZSB0aGUgcm9vdCBtYXkgYmUgYSBob2lzdGVkIHZub2RlXHJcbiAgICAgICAgcm9vdCA9IGNsb25lVk5vZGUocm9vdCk7XHJcbiAgICAgICAgcm9vdC5kaXJzID0gcm9vdC5kaXJzID8gcm9vdC5kaXJzLmNvbmNhdCh2bm9kZS5kaXJzKSA6IHZub2RlLmRpcnM7XHJcbiAgICB9XHJcbiAgICAvLyBpbmhlcml0IHRyYW5zaXRpb24gZGF0YVxyXG4gICAgaWYgKHZub2RlLnRyYW5zaXRpb24pIHtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFpc0VsZW1lbnRSb290KHJvb3QpKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYENvbXBvbmVudCBpbnNpZGUgPFRyYW5zaXRpb24+IHJlbmRlcnMgbm9uLWVsZW1lbnQgcm9vdCBub2RlIGAgK1xyXG4gICAgICAgICAgICAgICAgYHRoYXQgY2Fubm90IGJlIGFuaW1hdGVkLmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByb290LnRyYW5zaXRpb24gPSB2bm9kZS50cmFuc2l0aW9uO1xyXG4gICAgfVxyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBzZXRSb290KSB7XHJcbiAgICAgICAgc2V0Um9vdChyb290KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHJlc3VsdCA9IHJvb3Q7XHJcbiAgICB9XHJcbiAgICBzZXRDdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UocHJldik7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcbi8qKlxyXG4gKiBkZXYgb25seVxyXG4gKiBJbiBkZXYgbW9kZSwgdGVtcGxhdGUgcm9vdCBsZXZlbCBjb21tZW50cyBhcmUgcmVuZGVyZWQsIHdoaWNoIHR1cm5zIHRoZVxyXG4gKiB0ZW1wbGF0ZSBpbnRvIGEgZnJhZ21lbnQgcm9vdCwgYnV0IHdlIG5lZWQgdG8gbG9jYXRlIHRoZSBzaW5nbGUgZWxlbWVudFxyXG4gKiByb290IGZvciBhdHRycyBhbmQgc2NvcGUgaWQgcHJvY2Vzc2luZy5cclxuICovXHJcbmNvbnN0IGdldENoaWxkUm9vdCA9ICh2bm9kZSkgPT4ge1xyXG4gICAgY29uc3QgcmF3Q2hpbGRyZW4gPSB2bm9kZS5jaGlsZHJlbjtcclxuICAgIGNvbnN0IGR5bmFtaWNDaGlsZHJlbiA9IHZub2RlLmR5bmFtaWNDaGlsZHJlbjtcclxuICAgIGNvbnN0IGNoaWxkUm9vdCA9IGZpbHRlclNpbmdsZVJvb3QocmF3Q2hpbGRyZW4pO1xyXG4gICAgaWYgKCFjaGlsZFJvb3QpIHtcclxuICAgICAgICByZXR1cm4gW3Zub2RlLCB1bmRlZmluZWRdO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaW5kZXggPSByYXdDaGlsZHJlbi5pbmRleE9mKGNoaWxkUm9vdCk7XHJcbiAgICBjb25zdCBkeW5hbWljSW5kZXggPSBkeW5hbWljQ2hpbGRyZW4gPyBkeW5hbWljQ2hpbGRyZW4uaW5kZXhPZihjaGlsZFJvb3QpIDogLTE7XHJcbiAgICBjb25zdCBzZXRSb290ID0gKHVwZGF0ZWRSb290KSA9PiB7XHJcbiAgICAgICAgcmF3Q2hpbGRyZW5baW5kZXhdID0gdXBkYXRlZFJvb3Q7XHJcbiAgICAgICAgaWYgKGR5bmFtaWNDaGlsZHJlbikge1xyXG4gICAgICAgICAgICBpZiAoZHluYW1pY0luZGV4ID4gLTEpIHtcclxuICAgICAgICAgICAgICAgIGR5bmFtaWNDaGlsZHJlbltkeW5hbWljSW5kZXhdID0gdXBkYXRlZFJvb3Q7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAodXBkYXRlZFJvb3QucGF0Y2hGbGFnID4gMCkge1xyXG4gICAgICAgICAgICAgICAgdm5vZGUuZHluYW1pY0NoaWxkcmVuID0gWy4uLmR5bmFtaWNDaGlsZHJlbiwgdXBkYXRlZFJvb3RdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIHJldHVybiBbbm9ybWFsaXplVk5vZGUoY2hpbGRSb290KSwgc2V0Um9vdF07XHJcbn07XHJcbmZ1bmN0aW9uIGZpbHRlclNpbmdsZVJvb3QoY2hpbGRyZW4pIHtcclxuICAgIGxldCBzaW5nbGVSb290O1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGNoaWxkID0gY2hpbGRyZW5baV07XHJcbiAgICAgICAgaWYgKGlzVk5vZGUoY2hpbGQpKSB7XHJcbiAgICAgICAgICAgIC8vIGlnbm9yZSB1c2VyIGNvbW1lbnRcclxuICAgICAgICAgICAgaWYgKGNoaWxkLnR5cGUgIT09IENvbW1lbnQgfHwgY2hpbGQuY2hpbGRyZW4gPT09ICd2LWlmJykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHNpbmdsZVJvb3QpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBoYXMgbW9yZSB0aGFuIDEgbm9uLWNvbW1lbnQgY2hpbGQsIHJldHVybiBub3dcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVSb290ID0gY2hpbGQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc2luZ2xlUm9vdDtcclxufVxyXG5jb25zdCBnZXRGdW5jdGlvbmFsRmFsbHRocm91Z2ggPSAoYXR0cnMpID0+IHtcclxuICAgIGxldCByZXM7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBhdHRycykge1xyXG4gICAgICAgIGlmIChrZXkgPT09ICdjbGFzcycgfHwga2V5ID09PSAnc3R5bGUnIHx8IGlzT24oa2V5KSkge1xyXG4gICAgICAgICAgICAocmVzIHx8IChyZXMgPSB7fSkpW2tleV0gPSBhdHRyc1trZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXM7XHJcbn07XHJcbmNvbnN0IGZpbHRlck1vZGVsTGlzdGVuZXJzID0gKGF0dHJzLCBwcm9wcykgPT4ge1xyXG4gICAgY29uc3QgcmVzID0ge307XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBhdHRycykge1xyXG4gICAgICAgIGlmICghaXNNb2RlbExpc3RlbmVyKGtleSkgfHwgIShrZXkuc2xpY2UoOSkgaW4gcHJvcHMpKSB7XHJcbiAgICAgICAgICAgIHJlc1trZXldID0gYXR0cnNba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzO1xyXG59O1xyXG5jb25zdCBpc0VsZW1lbnRSb290ID0gKHZub2RlKSA9PiB7XHJcbiAgICByZXR1cm4gKHZub2RlLnNoYXBlRmxhZyAmICg2IC8qIFNoYXBlRmxhZ3MuQ09NUE9ORU5UICovIHwgMSAvKiBTaGFwZUZsYWdzLkVMRU1FTlQgKi8pIHx8XHJcbiAgICAgICAgdm5vZGUudHlwZSA9PT0gQ29tbWVudCAvLyBwb3RlbnRpYWwgdi1pZiBicmFuY2ggc3dpdGNoXHJcbiAgICApO1xyXG59O1xyXG5mdW5jdGlvbiBzaG91bGRVcGRhdGVDb21wb25lbnQocHJldlZOb2RlLCBuZXh0Vk5vZGUsIG9wdGltaXplZCkge1xyXG4gICAgY29uc3QgeyBwcm9wczogcHJldlByb3BzLCBjaGlsZHJlbjogcHJldkNoaWxkcmVuLCBjb21wb25lbnQgfSA9IHByZXZWTm9kZTtcclxuICAgIGNvbnN0IHsgcHJvcHM6IG5leHRQcm9wcywgY2hpbGRyZW46IG5leHRDaGlsZHJlbiwgcGF0Y2hGbGFnIH0gPSBuZXh0Vk5vZGU7XHJcbiAgICBjb25zdCBlbWl0cyA9IGNvbXBvbmVudC5lbWl0c09wdGlvbnM7XHJcbiAgICAvLyBQYXJlbnQgY29tcG9uZW50J3MgcmVuZGVyIGZ1bmN0aW9uIHdhcyBob3QtdXBkYXRlZC4gU2luY2UgdGhpcyBtYXkgaGF2ZVxyXG4gICAgLy8gY2F1c2VkIHRoZSBjaGlsZCBjb21wb25lbnQncyBzbG90cyBjb250ZW50IHRvIGhhdmUgY2hhbmdlZCwgd2UgbmVlZCB0b1xyXG4gICAgLy8gZm9yY2UgdGhlIGNoaWxkIHRvIHVwZGF0ZSBhcyB3ZWxsLlxyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAocHJldkNoaWxkcmVuIHx8IG5leHRDaGlsZHJlbikgJiYgaXNIbXJVcGRhdGluZykge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgLy8gZm9yY2UgY2hpbGQgdXBkYXRlIGZvciBydW50aW1lIGRpcmVjdGl2ZSBvciB0cmFuc2l0aW9uIG9uIGNvbXBvbmVudCB2bm9kZS5cclxuICAgIGlmIChuZXh0Vk5vZGUuZGlycyB8fCBuZXh0Vk5vZGUudHJhbnNpdGlvbikge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKG9wdGltaXplZCAmJiBwYXRjaEZsYWcgPj0gMCkge1xyXG4gICAgICAgIGlmIChwYXRjaEZsYWcgJiAxMDI0IC8qIFBhdGNoRmxhZ3MuRFlOQU1JQ19TTE9UUyAqLykge1xyXG4gICAgICAgICAgICAvLyBzbG90IGNvbnRlbnQgdGhhdCByZWZlcmVuY2VzIHZhbHVlcyB0aGF0IG1pZ2h0IGhhdmUgY2hhbmdlZCxcclxuICAgICAgICAgICAgLy8gZS5nLiBpbiBhIHYtZm9yXHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocGF0Y2hGbGFnICYgMTYgLyogUGF0Y2hGbGFncy5GVUxMX1BST1BTICovKSB7XHJcbiAgICAgICAgICAgIGlmICghcHJldlByb3BzKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gISFuZXh0UHJvcHM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gcHJlc2VuY2Ugb2YgdGhpcyBmbGFnIGluZGljYXRlcyBwcm9wcyBhcmUgYWx3YXlzIG5vbi1udWxsXHJcbiAgICAgICAgICAgIHJldHVybiBoYXNQcm9wc0NoYW5nZWQocHJldlByb3BzLCBuZXh0UHJvcHMsIGVtaXRzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAocGF0Y2hGbGFnICYgOCAvKiBQYXRjaEZsYWdzLlBST1BTICovKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGR5bmFtaWNQcm9wcyA9IG5leHRWTm9kZS5keW5hbWljUHJvcHM7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZHluYW1pY1Byb3BzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBkeW5hbWljUHJvcHNbaV07XHJcbiAgICAgICAgICAgICAgICBpZiAobmV4dFByb3BzW2tleV0gIT09IHByZXZQcm9wc1trZXldICYmXHJcbiAgICAgICAgICAgICAgICAgICAgIWlzRW1pdExpc3RlbmVyKGVtaXRzLCBrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyB0aGlzIHBhdGggaXMgb25seSB0YWtlbiBieSBtYW51YWxseSB3cml0dGVuIHJlbmRlciBmdW5jdGlvbnNcclxuICAgICAgICAvLyBzbyBwcmVzZW5jZSBvZiBhbnkgY2hpbGRyZW4gbGVhZHMgdG8gYSBmb3JjZWQgdXBkYXRlXHJcbiAgICAgICAgaWYgKHByZXZDaGlsZHJlbiB8fCBuZXh0Q2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgaWYgKCFuZXh0Q2hpbGRyZW4gfHwgIW5leHRDaGlsZHJlbi4kc3RhYmxlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocHJldlByb3BzID09PSBuZXh0UHJvcHMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXByZXZQcm9wcykge1xyXG4gICAgICAgICAgICByZXR1cm4gISFuZXh0UHJvcHM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghbmV4dFByb3BzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaGFzUHJvcHNDaGFuZ2VkKHByZXZQcm9wcywgbmV4dFByb3BzLCBlbWl0cyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbn1cclxuZnVuY3Rpb24gaGFzUHJvcHNDaGFuZ2VkKHByZXZQcm9wcywgbmV4dFByb3BzLCBlbWl0c09wdGlvbnMpIHtcclxuICAgIGNvbnN0IG5leHRLZXlzID0gT2JqZWN0LmtleXMobmV4dFByb3BzKTtcclxuICAgIGlmIChuZXh0S2V5cy5sZW5ndGggIT09IE9iamVjdC5rZXlzKHByZXZQcm9wcykubGVuZ3RoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5leHRLZXlzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3Qga2V5ID0gbmV4dEtleXNbaV07XHJcbiAgICAgICAgaWYgKG5leHRQcm9wc1trZXldICE9PSBwcmV2UHJvcHNba2V5XSAmJlxyXG4gICAgICAgICAgICAhaXNFbWl0TGlzdGVuZXIoZW1pdHNPcHRpb25zLCBrZXkpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxufVxyXG5mdW5jdGlvbiB1cGRhdGVIT0NIb3N0RWwoeyB2bm9kZSwgcGFyZW50IH0sIGVsIC8vIEhvc3ROb2RlXHJcbikge1xyXG4gICAgd2hpbGUgKHBhcmVudCAmJiBwYXJlbnQuc3ViVHJlZSA9PT0gdm5vZGUpIHtcclxuICAgICAgICAodm5vZGUgPSBwYXJlbnQudm5vZGUpLmVsID0gZWw7XHJcbiAgICAgICAgcGFyZW50ID0gcGFyZW50LnBhcmVudDtcclxuICAgIH1cclxufVxuXG5jb25zdCBpc1N1c3BlbnNlID0gKHR5cGUpID0+IHR5cGUuX19pc1N1c3BlbnNlO1xyXG4vLyBTdXNwZW5zZSBleHBvc2VzIGEgY29tcG9uZW50LWxpa2UgQVBJLCBhbmQgaXMgdHJlYXRlZCBsaWtlIGEgY29tcG9uZW50XHJcbi8vIGluIHRoZSBjb21waWxlciwgYnV0IGludGVybmFsbHkgaXQncyBhIHNwZWNpYWwgYnVpbHQtaW4gdHlwZSB0aGF0IGhvb2tzXHJcbi8vIGRpcmVjdGx5IGludG8gdGhlIHJlbmRlcmVyLlxyXG5jb25zdCBTdXNwZW5zZUltcGwgPSB7XHJcbiAgICBuYW1lOiAnU3VzcGVuc2UnLFxyXG4gICAgLy8gSW4gb3JkZXIgdG8gbWFrZSBTdXNwZW5zZSB0cmVlLXNoYWthYmxlLCB3ZSBuZWVkIHRvIGF2b2lkIGltcG9ydGluZyBpdFxyXG4gICAgLy8gZGlyZWN0bHkgaW4gdGhlIHJlbmRlcmVyLiBUaGUgcmVuZGVyZXIgY2hlY2tzIGZvciB0aGUgX19pc1N1c3BlbnNlIGZsYWdcclxuICAgIC8vIG9uIGEgdm5vZGUncyB0eXBlIGFuZCBjYWxscyB0aGUgYHByb2Nlc3NgIG1ldGhvZCwgcGFzc2luZyBpbiByZW5kZXJlclxyXG4gICAgLy8gaW50ZXJuYWxzLlxyXG4gICAgX19pc1N1c3BlbnNlOiB0cnVlLFxyXG4gICAgcHJvY2VzcyhuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQsIFxyXG4gICAgLy8gcGxhdGZvcm0tc3BlY2lmaWMgaW1wbCBwYXNzZWQgZnJvbSByZW5kZXJlclxyXG4gICAgcmVuZGVyZXJJbnRlcm5hbHMpIHtcclxuICAgICAgICBpZiAobjEgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBtb3VudFN1c3BlbnNlKG4yLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkLCByZW5kZXJlckludGVybmFscyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBwYXRjaFN1c3BlbnNlKG4xLCBuMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkLCByZW5kZXJlckludGVybmFscyk7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIGh5ZHJhdGU6IGh5ZHJhdGVTdXNwZW5zZSxcclxuICAgIGNyZWF0ZTogY3JlYXRlU3VzcGVuc2VCb3VuZGFyeSxcclxuICAgIG5vcm1hbGl6ZTogbm9ybWFsaXplU3VzcGVuc2VDaGlsZHJlblxyXG59O1xyXG4vLyBGb3JjZS1jYXN0ZWQgcHVibGljIHR5cGluZyBmb3IgaCBhbmQgVFNYIHByb3BzIGluZmVyZW5jZVxyXG5jb25zdCBTdXNwZW5zZSA9IChTdXNwZW5zZUltcGwgKTtcclxuZnVuY3Rpb24gdHJpZ2dlckV2ZW50KHZub2RlLCBuYW1lKSB7XHJcbiAgICBjb25zdCBldmVudExpc3RlbmVyID0gdm5vZGUucHJvcHMgJiYgdm5vZGUucHJvcHNbbmFtZV07XHJcbiAgICBpZiAoaXNGdW5jdGlvbihldmVudExpc3RlbmVyKSkge1xyXG4gICAgICAgIGV2ZW50TGlzdGVuZXIoKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBtb3VudFN1c3BlbnNlKHZub2RlLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkLCByZW5kZXJlckludGVybmFscykge1xyXG4gICAgY29uc3QgeyBwOiBwYXRjaCwgbzogeyBjcmVhdGVFbGVtZW50IH0gfSA9IHJlbmRlcmVySW50ZXJuYWxzO1xyXG4gICAgY29uc3QgaGlkZGVuQ29udGFpbmVyID0gY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICBjb25zdCBzdXNwZW5zZSA9ICh2bm9kZS5zdXNwZW5zZSA9IGNyZWF0ZVN1c3BlbnNlQm91bmRhcnkodm5vZGUsIHBhcmVudFN1c3BlbnNlLCBwYXJlbnRDb21wb25lbnQsIGNvbnRhaW5lciwgaGlkZGVuQ29udGFpbmVyLCBhbmNob3IsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCwgcmVuZGVyZXJJbnRlcm5hbHMpKTtcclxuICAgIC8vIHN0YXJ0IG1vdW50aW5nIHRoZSBjb250ZW50IHN1YnRyZWUgaW4gYW4gb2ZmLWRvbSBjb250YWluZXJcclxuICAgIHBhdGNoKG51bGwsIChzdXNwZW5zZS5wZW5kaW5nQnJhbmNoID0gdm5vZGUuc3NDb250ZW50KSwgaGlkZGVuQ29udGFpbmVyLCBudWxsLCBwYXJlbnRDb21wb25lbnQsIHN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzKTtcclxuICAgIC8vIG5vdyBjaGVjayBpZiB3ZSBoYXZlIGVuY291bnRlcmVkIGFueSBhc3luYyBkZXBzXHJcbiAgICBpZiAoc3VzcGVuc2UuZGVwcyA+IDApIHtcclxuICAgICAgICAvLyBoYXMgYXN5bmNcclxuICAgICAgICAvLyBpbnZva2UgQGZhbGxiYWNrIGV2ZW50XHJcbiAgICAgICAgdHJpZ2dlckV2ZW50KHZub2RlLCAnb25QZW5kaW5nJyk7XHJcbiAgICAgICAgdHJpZ2dlckV2ZW50KHZub2RlLCAnb25GYWxsYmFjaycpO1xyXG4gICAgICAgIC8vIG1vdW50IHRoZSBmYWxsYmFjayB0cmVlXHJcbiAgICAgICAgcGF0Y2gobnVsbCwgdm5vZGUuc3NGYWxsYmFjaywgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgbnVsbCwgLy8gZmFsbGJhY2sgdHJlZSB3aWxsIG5vdCBoYXZlIHN1c3BlbnNlIGNvbnRleHRcclxuICAgICAgICBpc1NWRywgc2xvdFNjb3BlSWRzKTtcclxuICAgICAgICBzZXRBY3RpdmVCcmFuY2goc3VzcGVuc2UsIHZub2RlLnNzRmFsbGJhY2spO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgLy8gU3VzcGVuc2UgaGFzIG5vIGFzeW5jIGRlcHMuIEp1c3QgcmVzb2x2ZS5cclxuICAgICAgICBzdXNwZW5zZS5yZXNvbHZlKCk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gcGF0Y2hTdXNwZW5zZShuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCwgeyBwOiBwYXRjaCwgdW06IHVubW91bnQsIG86IHsgY3JlYXRlRWxlbWVudCB9IH0pIHtcclxuICAgIGNvbnN0IHN1c3BlbnNlID0gKG4yLnN1c3BlbnNlID0gbjEuc3VzcGVuc2UpO1xyXG4gICAgc3VzcGVuc2Uudm5vZGUgPSBuMjtcclxuICAgIG4yLmVsID0gbjEuZWw7XHJcbiAgICBjb25zdCBuZXdCcmFuY2ggPSBuMi5zc0NvbnRlbnQ7XHJcbiAgICBjb25zdCBuZXdGYWxsYmFjayA9IG4yLnNzRmFsbGJhY2s7XHJcbiAgICBjb25zdCB7IGFjdGl2ZUJyYW5jaCwgcGVuZGluZ0JyYW5jaCwgaXNJbkZhbGxiYWNrLCBpc0h5ZHJhdGluZyB9ID0gc3VzcGVuc2U7XHJcbiAgICBpZiAocGVuZGluZ0JyYW5jaCkge1xyXG4gICAgICAgIHN1c3BlbnNlLnBlbmRpbmdCcmFuY2ggPSBuZXdCcmFuY2g7XHJcbiAgICAgICAgaWYgKGlzU2FtZVZOb2RlVHlwZShuZXdCcmFuY2gsIHBlbmRpbmdCcmFuY2gpKSB7XHJcbiAgICAgICAgICAgIC8vIHNhbWUgcm9vdCB0eXBlIGJ1dCBjb250ZW50IG1heSBoYXZlIGNoYW5nZWQuXHJcbiAgICAgICAgICAgIHBhdGNoKHBlbmRpbmdCcmFuY2gsIG5ld0JyYW5jaCwgc3VzcGVuc2UuaGlkZGVuQ29udGFpbmVyLCBudWxsLCBwYXJlbnRDb21wb25lbnQsIHN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICBpZiAoc3VzcGVuc2UuZGVwcyA8PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBzdXNwZW5zZS5yZXNvbHZlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoaXNJbkZhbGxiYWNrKSB7XHJcbiAgICAgICAgICAgICAgICBwYXRjaChhY3RpdmVCcmFuY2gsIG5ld0ZhbGxiYWNrLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBudWxsLCAvLyBmYWxsYmFjayB0cmVlIHdpbGwgbm90IGhhdmUgc3VzcGVuc2UgY29udGV4dFxyXG4gICAgICAgICAgICAgICAgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgIHNldEFjdGl2ZUJyYW5jaChzdXNwZW5zZSwgbmV3RmFsbGJhY2spO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyB0b2dnbGVkIGJlZm9yZSBwZW5kaW5nIHRyZWUgaXMgcmVzb2x2ZWRcclxuICAgICAgICAgICAgc3VzcGVuc2UucGVuZGluZ0lkKys7XHJcbiAgICAgICAgICAgIGlmIChpc0h5ZHJhdGluZykge1xyXG4gICAgICAgICAgICAgICAgLy8gaWYgdG9nZ2xlZCBiZWZvcmUgaHlkcmF0aW9uIGlzIGZpbmlzaGVkLCB0aGUgY3VycmVudCBET00gdHJlZSBpc1xyXG4gICAgICAgICAgICAgICAgLy8gbm8gbG9uZ2VyIHZhbGlkLiBzZXQgaXQgYXMgdGhlIGFjdGl2ZSBicmFuY2ggc28gaXQgd2lsbCBiZSB1bm1vdW50ZWRcclxuICAgICAgICAgICAgICAgIC8vIHdoZW4gcmVzb2x2ZWRcclxuICAgICAgICAgICAgICAgIHN1c3BlbnNlLmlzSHlkcmF0aW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBzdXNwZW5zZS5hY3RpdmVCcmFuY2ggPSBwZW5kaW5nQnJhbmNoO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdW5tb3VudChwZW5kaW5nQnJhbmNoLCBwYXJlbnRDb21wb25lbnQsIHN1c3BlbnNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBpbmNyZW1lbnQgcGVuZGluZyBJRC4gdGhpcyBpcyB1c2VkIHRvIGludmFsaWRhdGUgYXN5bmMgY2FsbGJhY2tzXHJcbiAgICAgICAgICAgIC8vIHJlc2V0IHN1c3BlbnNlIHN0YXRlXHJcbiAgICAgICAgICAgIHN1c3BlbnNlLmRlcHMgPSAwO1xyXG4gICAgICAgICAgICAvLyBkaXNjYXJkIGVmZmVjdHMgZnJvbSBwZW5kaW5nIGJyYW5jaFxyXG4gICAgICAgICAgICBzdXNwZW5zZS5lZmZlY3RzLmxlbmd0aCA9IDA7XHJcbiAgICAgICAgICAgIC8vIGRpc2NhcmQgcHJldmlvdXMgY29udGFpbmVyXHJcbiAgICAgICAgICAgIHN1c3BlbnNlLmhpZGRlbkNvbnRhaW5lciA9IGNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICAgICAgICBpZiAoaXNJbkZhbGxiYWNrKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBhbHJlYWR5IGluIGZhbGxiYWNrIHN0YXRlXHJcbiAgICAgICAgICAgICAgICBwYXRjaChudWxsLCBuZXdCcmFuY2gsIHN1c3BlbnNlLmhpZGRlbkNvbnRhaW5lciwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCBzdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgIGlmIChzdXNwZW5zZS5kZXBzIDw9IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBzdXNwZW5zZS5yZXNvbHZlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBwYXRjaChhY3RpdmVCcmFuY2gsIG5ld0ZhbGxiYWNrLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBudWxsLCAvLyBmYWxsYmFjayB0cmVlIHdpbGwgbm90IGhhdmUgc3VzcGVuc2UgY29udGV4dFxyXG4gICAgICAgICAgICAgICAgICAgIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0QWN0aXZlQnJhbmNoKHN1c3BlbnNlLCBuZXdGYWxsYmFjayk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoYWN0aXZlQnJhbmNoICYmIGlzU2FtZVZOb2RlVHlwZShuZXdCcmFuY2gsIGFjdGl2ZUJyYW5jaCkpIHtcclxuICAgICAgICAgICAgICAgIC8vIHRvZ2dsZWQgXCJiYWNrXCIgdG8gY3VycmVudCBhY3RpdmUgYnJhbmNoXHJcbiAgICAgICAgICAgICAgICBwYXRjaChhY3RpdmVCcmFuY2gsIG5ld0JyYW5jaCwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgc3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICAvLyBmb3JjZSByZXNvbHZlXHJcbiAgICAgICAgICAgICAgICBzdXNwZW5zZS5yZXNvbHZlKHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gc3dpdGNoZWQgdG8gYSAzcmQgYnJhbmNoXHJcbiAgICAgICAgICAgICAgICBwYXRjaChudWxsLCBuZXdCcmFuY2gsIHN1c3BlbnNlLmhpZGRlbkNvbnRhaW5lciwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCBzdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgIGlmIChzdXNwZW5zZS5kZXBzIDw9IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBzdXNwZW5zZS5yZXNvbHZlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBpZiAoYWN0aXZlQnJhbmNoICYmIGlzU2FtZVZOb2RlVHlwZShuZXdCcmFuY2gsIGFjdGl2ZUJyYW5jaCkpIHtcclxuICAgICAgICAgICAgLy8gcm9vdCBkaWQgbm90IGNoYW5nZSwganVzdCBub3JtYWwgcGF0Y2hcclxuICAgICAgICAgICAgcGF0Y2goYWN0aXZlQnJhbmNoLCBuZXdCcmFuY2gsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICBzZXRBY3RpdmVCcmFuY2goc3VzcGVuc2UsIG5ld0JyYW5jaCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyByb290IG5vZGUgdG9nZ2xlZFxyXG4gICAgICAgICAgICAvLyBpbnZva2UgQHBlbmRpbmcgZXZlbnRcclxuICAgICAgICAgICAgdHJpZ2dlckV2ZW50KG4yLCAnb25QZW5kaW5nJyk7XHJcbiAgICAgICAgICAgIC8vIG1vdW50IHBlbmRpbmcgYnJhbmNoIGluIG9mZi1kb20gY29udGFpbmVyXHJcbiAgICAgICAgICAgIHN1c3BlbnNlLnBlbmRpbmdCcmFuY2ggPSBuZXdCcmFuY2g7XHJcbiAgICAgICAgICAgIHN1c3BlbnNlLnBlbmRpbmdJZCsrO1xyXG4gICAgICAgICAgICBwYXRjaChudWxsLCBuZXdCcmFuY2gsIHN1c3BlbnNlLmhpZGRlbkNvbnRhaW5lciwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCBzdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgaWYgKHN1c3BlbnNlLmRlcHMgPD0gMCkge1xyXG4gICAgICAgICAgICAgICAgLy8gaW5jb21pbmcgYnJhbmNoIGhhcyBubyBhc3luYyBkZXBzLCByZXNvbHZlIG5vdy5cclxuICAgICAgICAgICAgICAgIHN1c3BlbnNlLnJlc29sdmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgdGltZW91dCwgcGVuZGluZ0lkIH0gPSBzdXNwZW5zZTtcclxuICAgICAgICAgICAgICAgIGlmICh0aW1lb3V0ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3VzcGVuc2UucGVuZGluZ0lkID09PSBwZW5kaW5nSWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1c3BlbnNlLmZhbGxiYWNrKG5ld0ZhbGxiYWNrKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0sIHRpbWVvdXQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGltZW91dCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHN1c3BlbnNlLmZhbGxiYWNrKG5ld0ZhbGxiYWNrKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5sZXQgaGFzV2FybmVkID0gZmFsc2U7XHJcbmZ1bmN0aW9uIGNyZWF0ZVN1c3BlbnNlQm91bmRhcnkodm5vZGUsIHBhcmVudCwgcGFyZW50Q29tcG9uZW50LCBjb250YWluZXIsIGhpZGRlbkNvbnRhaW5lciwgYW5jaG9yLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQsIHJlbmRlcmVySW50ZXJuYWxzLCBpc0h5ZHJhdGluZyA9IGZhbHNlKSB7XHJcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWZhbHNlICYmICFoYXNXYXJuZWQpIHtcclxuICAgICAgICBoYXNXYXJuZWQgPSB0cnVlO1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmUgYGNvbnNvbGUuaW5mb2AgY2Fubm90IGJlIG51bGwgZXJyb3JcclxuICAgICAgICBjb25zb2xlW2NvbnNvbGUuaW5mbyA/ICdpbmZvJyA6ICdsb2cnXShgPFN1c3BlbnNlPiBpcyBhbiBleHBlcmltZW50YWwgZmVhdHVyZSBhbmQgaXRzIEFQSSB3aWxsIGxpa2VseSBjaGFuZ2UuYCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IHA6IHBhdGNoLCBtOiBtb3ZlLCB1bTogdW5tb3VudCwgbjogbmV4dCwgbzogeyBwYXJlbnROb2RlLCByZW1vdmUgfSB9ID0gcmVuZGVyZXJJbnRlcm5hbHM7XHJcbiAgICBjb25zdCB0aW1lb3V0ID0gdG9OdW1iZXIodm5vZGUucHJvcHMgJiYgdm5vZGUucHJvcHMudGltZW91dCk7XHJcbiAgICBjb25zdCBzdXNwZW5zZSA9IHtcclxuICAgICAgICB2bm9kZSxcclxuICAgICAgICBwYXJlbnQsXHJcbiAgICAgICAgcGFyZW50Q29tcG9uZW50LFxyXG4gICAgICAgIGlzU1ZHLFxyXG4gICAgICAgIGNvbnRhaW5lcixcclxuICAgICAgICBoaWRkZW5Db250YWluZXIsXHJcbiAgICAgICAgYW5jaG9yLFxyXG4gICAgICAgIGRlcHM6IDAsXHJcbiAgICAgICAgcGVuZGluZ0lkOiAwLFxyXG4gICAgICAgIHRpbWVvdXQ6IHR5cGVvZiB0aW1lb3V0ID09PSAnbnVtYmVyJyA/IHRpbWVvdXQgOiAtMSxcclxuICAgICAgICBhY3RpdmVCcmFuY2g6IG51bGwsXHJcbiAgICAgICAgcGVuZGluZ0JyYW5jaDogbnVsbCxcclxuICAgICAgICBpc0luRmFsbGJhY2s6IHRydWUsXHJcbiAgICAgICAgaXNIeWRyYXRpbmcsXHJcbiAgICAgICAgaXNVbm1vdW50ZWQ6IGZhbHNlLFxyXG4gICAgICAgIGVmZmVjdHM6IFtdLFxyXG4gICAgICAgIHJlc29sdmUocmVzdW1lID0gZmFsc2UpIHtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFyZXN1bWUgJiYgIXN1c3BlbnNlLnBlbmRpbmdCcmFuY2gpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHN1c3BlbnNlLnJlc29sdmUoKSBpcyBjYWxsZWQgd2l0aG91dCBhIHBlbmRpbmcgYnJhbmNoLmApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHN1c3BlbnNlLmlzVW5tb3VudGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBzdXNwZW5zZS5yZXNvbHZlKCkgaXMgY2FsbGVkIG9uIGFuIGFscmVhZHkgdW5tb3VudGVkIHN1c3BlbnNlIGJvdW5kYXJ5LmApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IHsgdm5vZGUsIGFjdGl2ZUJyYW5jaCwgcGVuZGluZ0JyYW5jaCwgcGVuZGluZ0lkLCBlZmZlY3RzLCBwYXJlbnRDb21wb25lbnQsIGNvbnRhaW5lciB9ID0gc3VzcGVuc2U7XHJcbiAgICAgICAgICAgIGlmIChzdXNwZW5zZS5pc0h5ZHJhdGluZykge1xyXG4gICAgICAgICAgICAgICAgc3VzcGVuc2UuaXNIeWRyYXRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICghcmVzdW1lKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkZWxheUVudGVyID0gYWN0aXZlQnJhbmNoICYmXHJcbiAgICAgICAgICAgICAgICAgICAgcGVuZGluZ0JyYW5jaC50cmFuc2l0aW9uICYmXHJcbiAgICAgICAgICAgICAgICAgICAgcGVuZGluZ0JyYW5jaC50cmFuc2l0aW9uLm1vZGUgPT09ICdvdXQtaW4nO1xyXG4gICAgICAgICAgICAgICAgaWYgKGRlbGF5RW50ZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBhY3RpdmVCcmFuY2gudHJhbnNpdGlvbi5hZnRlckxlYXZlID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVuZGluZ0lkID09PSBzdXNwZW5zZS5wZW5kaW5nSWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUocGVuZGluZ0JyYW5jaCwgY29udGFpbmVyLCBhbmNob3IsIDAgLyogTW92ZVR5cGUuRU5URVIgKi8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIHRoaXMgaXMgaW5pdGlhbCBhbmNob3Igb24gbW91bnRcclxuICAgICAgICAgICAgICAgIGxldCB7IGFuY2hvciB9ID0gc3VzcGVuc2U7XHJcbiAgICAgICAgICAgICAgICAvLyB1bm1vdW50IGN1cnJlbnQgYWN0aXZlIHRyZWVcclxuICAgICAgICAgICAgICAgIGlmIChhY3RpdmVCcmFuY2gpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgZmFsbGJhY2sgdHJlZSB3YXMgbW91bnRlZCwgaXQgbWF5IGhhdmUgYmVlbiBtb3ZlZFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGFzIHBhcnQgb2YgYSBwYXJlbnQgc3VzcGVuc2UuIGdldCB0aGUgbGF0ZXN0IGFuY2hvciBmb3IgaW5zZXJ0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgYW5jaG9yID0gbmV4dChhY3RpdmVCcmFuY2gpO1xyXG4gICAgICAgICAgICAgICAgICAgIHVubW91bnQoYWN0aXZlQnJhbmNoLCBwYXJlbnRDb21wb25lbnQsIHN1c3BlbnNlLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICghZGVsYXlFbnRlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIG1vdmUgY29udGVudCBmcm9tIG9mZi1kb20gY29udGFpbmVyIHRvIGFjdHVhbCBjb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICBtb3ZlKHBlbmRpbmdCcmFuY2gsIGNvbnRhaW5lciwgYW5jaG9yLCAwIC8qIE1vdmVUeXBlLkVOVEVSICovKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzZXRBY3RpdmVCcmFuY2goc3VzcGVuc2UsIHBlbmRpbmdCcmFuY2gpO1xyXG4gICAgICAgICAgICBzdXNwZW5zZS5wZW5kaW5nQnJhbmNoID0gbnVsbDtcclxuICAgICAgICAgICAgc3VzcGVuc2UuaXNJbkZhbGxiYWNrID0gZmFsc2U7XHJcbiAgICAgICAgICAgIC8vIGZsdXNoIGJ1ZmZlcmVkIGVmZmVjdHNcclxuICAgICAgICAgICAgLy8gY2hlY2sgaWYgdGhlcmUgaXMgYSBwZW5kaW5nIHBhcmVudCBzdXNwZW5zZVxyXG4gICAgICAgICAgICBsZXQgcGFyZW50ID0gc3VzcGVuc2UucGFyZW50O1xyXG4gICAgICAgICAgICBsZXQgaGFzVW5yZXNvbHZlZEFuY2VzdG9yID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHdoaWxlIChwYXJlbnQpIHtcclxuICAgICAgICAgICAgICAgIGlmIChwYXJlbnQucGVuZGluZ0JyYW5jaCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGZvdW5kIGEgcGVuZGluZyBwYXJlbnQgc3VzcGVuc2UsIG1lcmdlIGJ1ZmZlcmVkIHBvc3Qgam9ic1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGludG8gdGhhdCBwYXJlbnRcclxuICAgICAgICAgICAgICAgICAgICBwYXJlbnQuZWZmZWN0cy5wdXNoKC4uLmVmZmVjdHMpO1xyXG4gICAgICAgICAgICAgICAgICAgIGhhc1VucmVzb2x2ZWRBbmNlc3RvciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIG5vIHBlbmRpbmcgcGFyZW50IHN1c3BlbnNlLCBmbHVzaCBhbGwgam9ic1xyXG4gICAgICAgICAgICBpZiAoIWhhc1VucmVzb2x2ZWRBbmNlc3Rvcikge1xyXG4gICAgICAgICAgICAgICAgcXVldWVQb3N0Rmx1c2hDYihlZmZlY3RzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzdXNwZW5zZS5lZmZlY3RzID0gW107XHJcbiAgICAgICAgICAgIC8vIGludm9rZSBAcmVzb2x2ZSBldmVudFxyXG4gICAgICAgICAgICB0cmlnZ2VyRXZlbnQodm5vZGUsICdvblJlc29sdmUnKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGZhbGxiYWNrKGZhbGxiYWNrVk5vZGUpIHtcclxuICAgICAgICAgICAgaWYgKCFzdXNwZW5zZS5wZW5kaW5nQnJhbmNoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgeyB2bm9kZSwgYWN0aXZlQnJhbmNoLCBwYXJlbnRDb21wb25lbnQsIGNvbnRhaW5lciwgaXNTVkcgfSA9IHN1c3BlbnNlO1xyXG4gICAgICAgICAgICAvLyBpbnZva2UgQGZhbGxiYWNrIGV2ZW50XHJcbiAgICAgICAgICAgIHRyaWdnZXJFdmVudCh2bm9kZSwgJ29uRmFsbGJhY2snKTtcclxuICAgICAgICAgICAgY29uc3QgYW5jaG9yID0gbmV4dChhY3RpdmVCcmFuY2gpO1xyXG4gICAgICAgICAgICBjb25zdCBtb3VudEZhbGxiYWNrID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFzdXNwZW5zZS5pc0luRmFsbGJhY2spIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBtb3VudCB0aGUgZmFsbGJhY2sgdHJlZVxyXG4gICAgICAgICAgICAgICAgcGF0Y2gobnVsbCwgZmFsbGJhY2tWTm9kZSwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgbnVsbCwgLy8gZmFsbGJhY2sgdHJlZSB3aWxsIG5vdCBoYXZlIHN1c3BlbnNlIGNvbnRleHRcclxuICAgICAgICAgICAgICAgIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICBzZXRBY3RpdmVCcmFuY2goc3VzcGVuc2UsIGZhbGxiYWNrVk5vZGUpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBjb25zdCBkZWxheUVudGVyID0gZmFsbGJhY2tWTm9kZS50cmFuc2l0aW9uICYmIGZhbGxiYWNrVk5vZGUudHJhbnNpdGlvbi5tb2RlID09PSAnb3V0LWluJztcclxuICAgICAgICAgICAgaWYgKGRlbGF5RW50ZXIpIHtcclxuICAgICAgICAgICAgICAgIGFjdGl2ZUJyYW5jaC50cmFuc2l0aW9uLmFmdGVyTGVhdmUgPSBtb3VudEZhbGxiYWNrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHN1c3BlbnNlLmlzSW5GYWxsYmFjayA9IHRydWU7XHJcbiAgICAgICAgICAgIC8vIHVubW91bnQgY3VycmVudCBhY3RpdmUgYnJhbmNoXHJcbiAgICAgICAgICAgIHVubW91bnQoYWN0aXZlQnJhbmNoLCBwYXJlbnRDb21wb25lbnQsIG51bGwsIC8vIG5vIHN1c3BlbnNlIHNvIHVubW91bnQgaG9va3MgZmlyZSBub3dcclxuICAgICAgICAgICAgdHJ1ZSAvLyBzaG91bGRSZW1vdmVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKCFkZWxheUVudGVyKSB7XHJcbiAgICAgICAgICAgICAgICBtb3VudEZhbGxiYWNrKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIG1vdmUoY29udGFpbmVyLCBhbmNob3IsIHR5cGUpIHtcclxuICAgICAgICAgICAgc3VzcGVuc2UuYWN0aXZlQnJhbmNoICYmXHJcbiAgICAgICAgICAgICAgICBtb3ZlKHN1c3BlbnNlLmFjdGl2ZUJyYW5jaCwgY29udGFpbmVyLCBhbmNob3IsIHR5cGUpO1xyXG4gICAgICAgICAgICBzdXNwZW5zZS5jb250YWluZXIgPSBjb250YWluZXI7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBuZXh0KCkge1xyXG4gICAgICAgICAgICByZXR1cm4gc3VzcGVuc2UuYWN0aXZlQnJhbmNoICYmIG5leHQoc3VzcGVuc2UuYWN0aXZlQnJhbmNoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlZ2lzdGVyRGVwKGluc3RhbmNlLCBzZXR1cFJlbmRlckVmZmVjdCkge1xyXG4gICAgICAgICAgICBjb25zdCBpc0luUGVuZGluZ1N1c3BlbnNlID0gISFzdXNwZW5zZS5wZW5kaW5nQnJhbmNoO1xyXG4gICAgICAgICAgICBpZiAoaXNJblBlbmRpbmdTdXNwZW5zZSkge1xyXG4gICAgICAgICAgICAgICAgc3VzcGVuc2UuZGVwcysrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGh5ZHJhdGVkRWwgPSBpbnN0YW5jZS52bm9kZS5lbDtcclxuICAgICAgICAgICAgaW5zdGFuY2VcclxuICAgICAgICAgICAgICAgIC5hc3luY0RlcC5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgaGFuZGxlRXJyb3IoZXJyLCBpbnN0YW5jZSwgMCAvKiBFcnJvckNvZGVzLlNFVFVQX0ZVTkNUSU9OICovKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIC50aGVuKGFzeW5jU2V0dXBSZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gcmV0cnkgd2hlbiB0aGUgc2V0dXAoKSBwcm9taXNlIHJlc29sdmVzLlxyXG4gICAgICAgICAgICAgICAgLy8gY29tcG9uZW50IG1heSBoYXZlIGJlZW4gdW5tb3VudGVkIGJlZm9yZSByZXNvbHZlLlxyXG4gICAgICAgICAgICAgICAgaWYgKGluc3RhbmNlLmlzVW5tb3VudGVkIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgc3VzcGVuc2UuaXNVbm1vdW50ZWQgfHxcclxuICAgICAgICAgICAgICAgICAgICBzdXNwZW5zZS5wZW5kaW5nSWQgIT09IGluc3RhbmNlLnN1c3BlbnNlSWQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyByZXRyeSBmcm9tIHRoaXMgY29tcG9uZW50XHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5hc3luY1Jlc29sdmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgdm5vZGUgfSA9IGluc3RhbmNlO1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHB1c2hXYXJuaW5nQ29udGV4dCh2bm9kZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBoYW5kbGVTZXR1cFJlc3VsdChpbnN0YW5jZSwgYXN5bmNTZXR1cFJlc3VsdCwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGh5ZHJhdGVkRWwpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyB2bm9kZSBtYXkgaGF2ZSBiZWVuIHJlcGxhY2VkIGlmIGFuIHVwZGF0ZSBoYXBwZW5lZCBiZWZvcmUgdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gYXN5bmMgZGVwIGlzIHJlc29sdmVkLlxyXG4gICAgICAgICAgICAgICAgICAgIHZub2RlLmVsID0gaHlkcmF0ZWRFbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gIWh5ZHJhdGVkRWwgJiYgaW5zdGFuY2Uuc3ViVHJlZS5lbDtcclxuICAgICAgICAgICAgICAgIHNldHVwUmVuZGVyRWZmZWN0KGluc3RhbmNlLCB2bm9kZSwgXHJcbiAgICAgICAgICAgICAgICAvLyBjb21wb25lbnQgbWF5IGhhdmUgYmVlbiBtb3ZlZCBiZWZvcmUgcmVzb2x2ZS5cclxuICAgICAgICAgICAgICAgIC8vIGlmIHRoaXMgaXMgbm90IGEgaHlkcmF0aW9uLCBpbnN0YW5jZS5zdWJUcmVlIHdpbGwgYmUgdGhlIGNvbW1lbnRcclxuICAgICAgICAgICAgICAgIC8vIHBsYWNlaG9sZGVyLlxyXG4gICAgICAgICAgICAgICAgcGFyZW50Tm9kZShoeWRyYXRlZEVsIHx8IGluc3RhbmNlLnN1YlRyZWUuZWwpLCBcclxuICAgICAgICAgICAgICAgIC8vIGFuY2hvciB3aWxsIG5vdCBiZSB1c2VkIGlmIHRoaXMgaXMgaHlkcmF0aW9uLCBzbyBvbmx5IG5lZWQgdG9cclxuICAgICAgICAgICAgICAgIC8vIGNvbnNpZGVyIHRoZSBjb21tZW50IHBsYWNlaG9sZGVyIGNhc2UuXHJcbiAgICAgICAgICAgICAgICBoeWRyYXRlZEVsID8gbnVsbCA6IG5leHQoaW5zdGFuY2Uuc3ViVHJlZSksIHN1c3BlbnNlLCBpc1NWRywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgIGlmIChwbGFjZWhvbGRlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZShwbGFjZWhvbGRlcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB1cGRhdGVIT0NIb3N0RWwoaW5zdGFuY2UsIHZub2RlLmVsKTtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBwb3BXYXJuaW5nQ29udGV4dCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gb25seSBkZWNyZWFzZSBkZXBzIGNvdW50IGlmIHN1c3BlbnNlIGlzIG5vdCBhbHJlYWR5IHJlc29sdmVkXHJcbiAgICAgICAgICAgICAgICBpZiAoaXNJblBlbmRpbmdTdXNwZW5zZSAmJiAtLXN1c3BlbnNlLmRlcHMgPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBzdXNwZW5zZS5yZXNvbHZlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdW5tb3VudChwYXJlbnRTdXNwZW5zZSwgZG9SZW1vdmUpIHtcclxuICAgICAgICAgICAgc3VzcGVuc2UuaXNVbm1vdW50ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICBpZiAoc3VzcGVuc2UuYWN0aXZlQnJhbmNoKSB7XHJcbiAgICAgICAgICAgICAgICB1bm1vdW50KHN1c3BlbnNlLmFjdGl2ZUJyYW5jaCwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgZG9SZW1vdmUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChzdXNwZW5zZS5wZW5kaW5nQnJhbmNoKSB7XHJcbiAgICAgICAgICAgICAgICB1bm1vdW50KHN1c3BlbnNlLnBlbmRpbmdCcmFuY2gsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGRvUmVtb3ZlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICByZXR1cm4gc3VzcGVuc2U7XHJcbn1cclxuZnVuY3Rpb24gaHlkcmF0ZVN1c3BlbnNlKG5vZGUsIHZub2RlLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQsIHJlbmRlcmVySW50ZXJuYWxzLCBoeWRyYXRlTm9kZSkge1xyXG4gICAgLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1nbG9iYWxzICovXHJcbiAgICBjb25zdCBzdXNwZW5zZSA9ICh2bm9kZS5zdXNwZW5zZSA9IGNyZWF0ZVN1c3BlbnNlQm91bmRhcnkodm5vZGUsIHBhcmVudFN1c3BlbnNlLCBwYXJlbnRDb21wb25lbnQsIG5vZGUucGFyZW50Tm9kZSwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksIG51bGwsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCwgcmVuZGVyZXJJbnRlcm5hbHMsIHRydWUgLyogaHlkcmF0aW5nICovKSk7XHJcbiAgICAvLyB0aGVyZSBhcmUgdHdvIHBvc3NpYmxlIHNjZW5hcmlvcyBmb3Igc2VydmVyLXJlbmRlcmVkIHN1c3BlbnNlOlxyXG4gICAgLy8gLSBzdWNjZXNzOiBzc3IgY29udGVudCBzaG91bGQgYmUgZnVsbHkgcmVzb2x2ZWRcclxuICAgIC8vIC0gZmFpbHVyZTogc3NyIGNvbnRlbnQgc2hvdWxkIGJlIHRoZSBmYWxsYmFjayBicmFuY2guXHJcbiAgICAvLyBob3dldmVyLCBvbiB0aGUgY2xpZW50IHdlIGRvbid0IHJlYWxseSBrbm93IGlmIGl0IGhhcyBmYWlsZWQgb3Igbm90XHJcbiAgICAvLyBhdHRlbXB0IHRvIGh5ZHJhdGUgdGhlIERPTSBhc3N1bWluZyBpdCBoYXMgc3VjY2VlZGVkLCBidXQgd2Ugc3RpbGxcclxuICAgIC8vIG5lZWQgdG8gY29uc3RydWN0IGEgc3VzcGVuc2UgYm91bmRhcnkgZmlyc3RcclxuICAgIGNvbnN0IHJlc3VsdCA9IGh5ZHJhdGVOb2RlKG5vZGUsIChzdXNwZW5zZS5wZW5kaW5nQnJhbmNoID0gdm5vZGUuc3NDb250ZW50KSwgcGFyZW50Q29tcG9uZW50LCBzdXNwZW5zZSwgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgaWYgKHN1c3BlbnNlLmRlcHMgPT09IDApIHtcclxuICAgICAgICBzdXNwZW5zZS5yZXNvbHZlKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgLyogZXNsaW50LWVuYWJsZSBuby1yZXN0cmljdGVkLWdsb2JhbHMgKi9cclxufVxyXG5mdW5jdGlvbiBub3JtYWxpemVTdXNwZW5zZUNoaWxkcmVuKHZub2RlKSB7XHJcbiAgICBjb25zdCB7IHNoYXBlRmxhZywgY2hpbGRyZW4gfSA9IHZub2RlO1xyXG4gICAgY29uc3QgaXNTbG90Q2hpbGRyZW4gPSBzaGFwZUZsYWcgJiAzMiAvKiBTaGFwZUZsYWdzLlNMT1RTX0NISUxEUkVOICovO1xyXG4gICAgdm5vZGUuc3NDb250ZW50ID0gbm9ybWFsaXplU3VzcGVuc2VTbG90KGlzU2xvdENoaWxkcmVuID8gY2hpbGRyZW4uZGVmYXVsdCA6IGNoaWxkcmVuKTtcclxuICAgIHZub2RlLnNzRmFsbGJhY2sgPSBpc1Nsb3RDaGlsZHJlblxyXG4gICAgICAgID8gbm9ybWFsaXplU3VzcGVuc2VTbG90KGNoaWxkcmVuLmZhbGxiYWNrKVxyXG4gICAgICAgIDogY3JlYXRlVk5vZGUoQ29tbWVudCk7XHJcbn1cclxuZnVuY3Rpb24gbm9ybWFsaXplU3VzcGVuc2VTbG90KHMpIHtcclxuICAgIGxldCBibG9jaztcclxuICAgIGlmIChpc0Z1bmN0aW9uKHMpKSB7XHJcbiAgICAgICAgY29uc3QgdHJhY2tCbG9jayA9IGlzQmxvY2tUcmVlRW5hYmxlZCAmJiBzLl9jO1xyXG4gICAgICAgIGlmICh0cmFja0Jsb2NrKSB7XHJcbiAgICAgICAgICAgIC8vIGRpc2FibGVUcmFja2luZzogZmFsc2VcclxuICAgICAgICAgICAgLy8gYWxsb3cgYmxvY2sgdHJhY2tpbmcgZm9yIGNvbXBpbGVkIHNsb3RzXHJcbiAgICAgICAgICAgIC8vIChzZWUgLi9jb21wb25lbnRSZW5kZXJDb250ZXh0LnRzKVxyXG4gICAgICAgICAgICBzLl9kID0gZmFsc2U7XHJcbiAgICAgICAgICAgIG9wZW5CbG9jaygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzID0gcygpO1xyXG4gICAgICAgIGlmICh0cmFja0Jsb2NrKSB7XHJcbiAgICAgICAgICAgIHMuX2QgPSB0cnVlO1xyXG4gICAgICAgICAgICBibG9jayA9IGN1cnJlbnRCbG9jaztcclxuICAgICAgICAgICAgY2xvc2VCbG9jaygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChpc0FycmF5KHMpKSB7XHJcbiAgICAgICAgY29uc3Qgc2luZ2xlQ2hpbGQgPSBmaWx0ZXJTaW5nbGVSb290KHMpO1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIXNpbmdsZUNoaWxkKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYDxTdXNwZW5zZT4gc2xvdHMgZXhwZWN0IGEgc2luZ2xlIHJvb3Qgbm9kZS5gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcyA9IHNpbmdsZUNoaWxkO1xyXG4gICAgfVxyXG4gICAgcyA9IG5vcm1hbGl6ZVZOb2RlKHMpO1xyXG4gICAgaWYgKGJsb2NrICYmICFzLmR5bmFtaWNDaGlsZHJlbikge1xyXG4gICAgICAgIHMuZHluYW1pY0NoaWxkcmVuID0gYmxvY2suZmlsdGVyKGMgPT4gYyAhPT0gcyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcztcclxufVxyXG5mdW5jdGlvbiBxdWV1ZUVmZmVjdFdpdGhTdXNwZW5zZShmbiwgc3VzcGVuc2UpIHtcclxuICAgIGlmIChzdXNwZW5zZSAmJiBzdXNwZW5zZS5wZW5kaW5nQnJhbmNoKSB7XHJcbiAgICAgICAgaWYgKGlzQXJyYXkoZm4pKSB7XHJcbiAgICAgICAgICAgIHN1c3BlbnNlLmVmZmVjdHMucHVzaCguLi5mbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBzdXNwZW5zZS5lZmZlY3RzLnB1c2goZm4pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHF1ZXVlUG9zdEZsdXNoQ2IoZm4pO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHNldEFjdGl2ZUJyYW5jaChzdXNwZW5zZSwgYnJhbmNoKSB7XHJcbiAgICBzdXNwZW5zZS5hY3RpdmVCcmFuY2ggPSBicmFuY2g7XHJcbiAgICBjb25zdCB7IHZub2RlLCBwYXJlbnRDb21wb25lbnQgfSA9IHN1c3BlbnNlO1xyXG4gICAgY29uc3QgZWwgPSAodm5vZGUuZWwgPSBicmFuY2guZWwpO1xyXG4gICAgLy8gaW4gY2FzZSBzdXNwZW5zZSBpcyB0aGUgcm9vdCBub2RlIG9mIGEgY29tcG9uZW50LFxyXG4gICAgLy8gcmVjdXJzaXZlbHkgdXBkYXRlIHRoZSBIT0MgZWxcclxuICAgIGlmIChwYXJlbnRDb21wb25lbnQgJiYgcGFyZW50Q29tcG9uZW50LnN1YlRyZWUgPT09IHZub2RlKSB7XHJcbiAgICAgICAgcGFyZW50Q29tcG9uZW50LnZub2RlLmVsID0gZWw7XHJcbiAgICAgICAgdXBkYXRlSE9DSG9zdEVsKHBhcmVudENvbXBvbmVudCwgZWwpO1xyXG4gICAgfVxyXG59XG5cbmZ1bmN0aW9uIHByb3ZpZGUoa2V5LCB2YWx1ZSkge1xyXG4gICAgaWYgKCFjdXJyZW50SW5zdGFuY2UpIHtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYHByb3ZpZGUoKSBjYW4gb25seSBiZSB1c2VkIGluc2lkZSBzZXR1cCgpLmApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGxldCBwcm92aWRlcyA9IGN1cnJlbnRJbnN0YW5jZS5wcm92aWRlcztcclxuICAgICAgICAvLyBieSBkZWZhdWx0IGFuIGluc3RhbmNlIGluaGVyaXRzIGl0cyBwYXJlbnQncyBwcm92aWRlcyBvYmplY3RcclxuICAgICAgICAvLyBidXQgd2hlbiBpdCBuZWVkcyB0byBwcm92aWRlIHZhbHVlcyBvZiBpdHMgb3duLCBpdCBjcmVhdGVzIGl0c1xyXG4gICAgICAgIC8vIG93biBwcm92aWRlcyBvYmplY3QgdXNpbmcgcGFyZW50IHByb3ZpZGVzIG9iamVjdCBhcyBwcm90b3R5cGUuXHJcbiAgICAgICAgLy8gdGhpcyB3YXkgaW4gYGluamVjdGAgd2UgY2FuIHNpbXBseSBsb29rIHVwIGluamVjdGlvbnMgZnJvbSBkaXJlY3RcclxuICAgICAgICAvLyBwYXJlbnQgYW5kIGxldCB0aGUgcHJvdG90eXBlIGNoYWluIGRvIHRoZSB3b3JrLlxyXG4gICAgICAgIGNvbnN0IHBhcmVudFByb3ZpZGVzID0gY3VycmVudEluc3RhbmNlLnBhcmVudCAmJiBjdXJyZW50SW5zdGFuY2UucGFyZW50LnByb3ZpZGVzO1xyXG4gICAgICAgIGlmIChwYXJlbnRQcm92aWRlcyA9PT0gcHJvdmlkZXMpIHtcclxuICAgICAgICAgICAgcHJvdmlkZXMgPSBjdXJyZW50SW5zdGFuY2UucHJvdmlkZXMgPSBPYmplY3QuY3JlYXRlKHBhcmVudFByb3ZpZGVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gVFMgZG9lc24ndCBhbGxvdyBzeW1ib2wgYXMgaW5kZXggdHlwZVxyXG4gICAgICAgIHByb3ZpZGVzW2tleV0gPSB2YWx1ZTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBpbmplY3Qoa2V5LCBkZWZhdWx0VmFsdWUsIHRyZWF0RGVmYXVsdEFzRmFjdG9yeSA9IGZhbHNlKSB7XHJcbiAgICAvLyBmYWxsYmFjayB0byBgY3VycmVudFJlbmRlcmluZ0luc3RhbmNlYCBzbyB0aGF0IHRoaXMgY2FuIGJlIGNhbGxlZCBpblxyXG4gICAgLy8gYSBmdW5jdGlvbmFsIGNvbXBvbmVudFxyXG4gICAgY29uc3QgaW5zdGFuY2UgPSBjdXJyZW50SW5zdGFuY2UgfHwgY3VycmVudFJlbmRlcmluZ0luc3RhbmNlO1xyXG4gICAgaWYgKGluc3RhbmNlKSB7XHJcbiAgICAgICAgLy8gIzI0MDBcclxuICAgICAgICAvLyB0byBzdXBwb3J0IGBhcHAudXNlYCBwbHVnaW5zLFxyXG4gICAgICAgIC8vIGZhbGxiYWNrIHRvIGFwcENvbnRleHQncyBgcHJvdmlkZXNgIGlmIHRoZSBpbnN0YW5jZSBpcyBhdCByb290XHJcbiAgICAgICAgY29uc3QgcHJvdmlkZXMgPSBpbnN0YW5jZS5wYXJlbnQgPT0gbnVsbFxyXG4gICAgICAgICAgICA/IGluc3RhbmNlLnZub2RlLmFwcENvbnRleHQgJiYgaW5zdGFuY2Uudm5vZGUuYXBwQ29udGV4dC5wcm92aWRlc1xyXG4gICAgICAgICAgICA6IGluc3RhbmNlLnBhcmVudC5wcm92aWRlcztcclxuICAgICAgICBpZiAocHJvdmlkZXMgJiYga2V5IGluIHByb3ZpZGVzKSB7XHJcbiAgICAgICAgICAgIC8vIFRTIGRvZXNuJ3QgYWxsb3cgc3ltYm9sIGFzIGluZGV4IHR5cGVcclxuICAgICAgICAgICAgcmV0dXJuIHByb3ZpZGVzW2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cmVhdERlZmF1bHRBc0ZhY3RvcnkgJiYgaXNGdW5jdGlvbihkZWZhdWx0VmFsdWUpXHJcbiAgICAgICAgICAgICAgICA/IGRlZmF1bHRWYWx1ZS5jYWxsKGluc3RhbmNlLnByb3h5KVxyXG4gICAgICAgICAgICAgICAgOiBkZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICB3YXJuKGBpbmplY3Rpb24gXCIke1N0cmluZyhrZXkpfVwiIG5vdCBmb3VuZC5gKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICB3YXJuKGBpbmplY3QoKSBjYW4gb25seSBiZSB1c2VkIGluc2lkZSBzZXR1cCgpIG9yIGZ1bmN0aW9uYWwgY29tcG9uZW50cy5gKTtcclxuICAgIH1cclxufVxuXG4vLyBTaW1wbGUgZWZmZWN0LlxyXG5mdW5jdGlvbiB3YXRjaEVmZmVjdChlZmZlY3QsIG9wdGlvbnMpIHtcclxuICAgIHJldHVybiBkb1dhdGNoKGVmZmVjdCwgbnVsbCwgb3B0aW9ucyk7XHJcbn1cclxuZnVuY3Rpb24gd2F0Y2hQb3N0RWZmZWN0KGVmZmVjdCwgb3B0aW9ucykge1xyXG4gICAgcmV0dXJuIGRvV2F0Y2goZWZmZWN0LCBudWxsLCAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpXHJcbiAgICAgICAgPyBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIG9wdGlvbnMpLCB7IGZsdXNoOiAncG9zdCcgfSkgOiB7IGZsdXNoOiAncG9zdCcgfSkpO1xyXG59XHJcbmZ1bmN0aW9uIHdhdGNoU3luY0VmZmVjdChlZmZlY3QsIG9wdGlvbnMpIHtcclxuICAgIHJldHVybiBkb1dhdGNoKGVmZmVjdCwgbnVsbCwgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKVxyXG4gICAgICAgID8gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zKSwgeyBmbHVzaDogJ3N5bmMnIH0pIDogeyBmbHVzaDogJ3N5bmMnIH0pKTtcclxufVxyXG4vLyBpbml0aWFsIHZhbHVlIGZvciB3YXRjaGVycyB0byB0cmlnZ2VyIG9uIHVuZGVmaW5lZCBpbml0aWFsIHZhbHVlc1xyXG5jb25zdCBJTklUSUFMX1dBVENIRVJfVkFMVUUgPSB7fTtcclxuLy8gaW1wbGVtZW50YXRpb25cclxuZnVuY3Rpb24gd2F0Y2goc291cmNlLCBjYiwgb3B0aW9ucykge1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhaXNGdW5jdGlvbihjYikpIHtcclxuICAgICAgICB3YXJuKGBcXGB3YXRjaChmbiwgb3B0aW9ucz8pXFxgIHNpZ25hdHVyZSBoYXMgYmVlbiBtb3ZlZCB0byBhIHNlcGFyYXRlIEFQSS4gYCArXHJcbiAgICAgICAgICAgIGBVc2UgXFxgd2F0Y2hFZmZlY3QoZm4sIG9wdGlvbnM/KVxcYCBpbnN0ZWFkLiBcXGB3YXRjaFxcYCBub3cgb25seSBgICtcclxuICAgICAgICAgICAgYHN1cHBvcnRzIFxcYHdhdGNoKHNvdXJjZSwgY2IsIG9wdGlvbnM/KSBzaWduYXR1cmUuYCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZG9XYXRjaChzb3VyY2UsIGNiLCBvcHRpb25zKTtcclxufVxyXG5mdW5jdGlvbiBkb1dhdGNoKHNvdXJjZSwgY2IsIHsgaW1tZWRpYXRlLCBkZWVwLCBmbHVzaCwgb25UcmFjaywgb25UcmlnZ2VyIH0gPSBFTVBUWV9PQkopIHtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWNiKSB7XHJcbiAgICAgICAgaWYgKGltbWVkaWF0ZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYHdhdGNoKCkgXCJpbW1lZGlhdGVcIiBvcHRpb24gaXMgb25seSByZXNwZWN0ZWQgd2hlbiB1c2luZyB0aGUgYCArXHJcbiAgICAgICAgICAgICAgICBgd2F0Y2goc291cmNlLCBjYWxsYmFjaywgb3B0aW9ucz8pIHNpZ25hdHVyZS5gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRlZXAgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB3YXJuKGB3YXRjaCgpIFwiZGVlcFwiIG9wdGlvbiBpcyBvbmx5IHJlc3BlY3RlZCB3aGVuIHVzaW5nIHRoZSBgICtcclxuICAgICAgICAgICAgICAgIGB3YXRjaChzb3VyY2UsIGNhbGxiYWNrLCBvcHRpb25zPykgc2lnbmF0dXJlLmApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IHdhcm5JbnZhbGlkU291cmNlID0gKHMpID0+IHtcclxuICAgICAgICB3YXJuKGBJbnZhbGlkIHdhdGNoIHNvdXJjZTogYCwgcywgYEEgd2F0Y2ggc291cmNlIGNhbiBvbmx5IGJlIGEgZ2V0dGVyL2VmZmVjdCBmdW5jdGlvbiwgYSByZWYsIGAgK1xyXG4gICAgICAgICAgICBgYSByZWFjdGl2ZSBvYmplY3QsIG9yIGFuIGFycmF5IG9mIHRoZXNlIHR5cGVzLmApO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IGluc3RhbmNlID0gY3VycmVudEluc3RhbmNlO1xyXG4gICAgbGV0IGdldHRlcjtcclxuICAgIGxldCBmb3JjZVRyaWdnZXIgPSBmYWxzZTtcclxuICAgIGxldCBpc011bHRpU291cmNlID0gZmFsc2U7XHJcbiAgICBpZiAoaXNSZWYoc291cmNlKSkge1xyXG4gICAgICAgIGdldHRlciA9ICgpID0+IHNvdXJjZS52YWx1ZTtcclxuICAgICAgICBmb3JjZVRyaWdnZXIgPSBpc1NoYWxsb3ckMShzb3VyY2UpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNSZWFjdGl2ZShzb3VyY2UpKSB7XHJcbiAgICAgICAgZ2V0dGVyID0gKCkgPT4gc291cmNlO1xyXG4gICAgICAgIGRlZXAgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNBcnJheShzb3VyY2UpKSB7XHJcbiAgICAgICAgaXNNdWx0aVNvdXJjZSA9IHRydWU7XHJcbiAgICAgICAgZm9yY2VUcmlnZ2VyID0gc291cmNlLnNvbWUocyA9PiBpc1JlYWN0aXZlKHMpIHx8IGlzU2hhbGxvdyQxKHMpKTtcclxuICAgICAgICBnZXR0ZXIgPSAoKSA9PiBzb3VyY2UubWFwKHMgPT4ge1xyXG4gICAgICAgICAgICBpZiAoaXNSZWYocykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBzLnZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGlzUmVhY3RpdmUocykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cmF2ZXJzZShzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChpc0Z1bmN0aW9uKHMpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2FsbFdpdGhFcnJvckhhbmRsaW5nKHMsIGluc3RhbmNlLCAyIC8qIEVycm9yQ29kZXMuV0FUQ0hfR0VUVEVSICovKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiB3YXJuSW52YWxpZFNvdXJjZShzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNGdW5jdGlvbihzb3VyY2UpKSB7XHJcbiAgICAgICAgaWYgKGNiKSB7XHJcbiAgICAgICAgICAgIC8vIGdldHRlciB3aXRoIGNiXHJcbiAgICAgICAgICAgIGdldHRlciA9ICgpID0+IGNhbGxXaXRoRXJyb3JIYW5kbGluZyhzb3VyY2UsIGluc3RhbmNlLCAyIC8qIEVycm9yQ29kZXMuV0FUQ0hfR0VUVEVSICovKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIG5vIGNiIC0+IHNpbXBsZSBlZmZlY3RcclxuICAgICAgICAgICAgZ2V0dGVyID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGluc3RhbmNlICYmIGluc3RhbmNlLmlzVW5tb3VudGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGNsZWFudXApIHtcclxuICAgICAgICAgICAgICAgICAgICBjbGVhbnVwKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcoc291cmNlLCBpbnN0YW5jZSwgMyAvKiBFcnJvckNvZGVzLldBVENIX0NBTExCQUNLICovLCBbb25DbGVhbnVwXSk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgZ2V0dGVyID0gTk9PUDtcclxuICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgd2FybkludmFsaWRTb3VyY2Uoc291cmNlKTtcclxuICAgIH1cclxuICAgIGlmIChjYiAmJiBkZWVwKSB7XHJcbiAgICAgICAgY29uc3QgYmFzZUdldHRlciA9IGdldHRlcjtcclxuICAgICAgICBnZXR0ZXIgPSAoKSA9PiB0cmF2ZXJzZShiYXNlR2V0dGVyKCkpO1xyXG4gICAgfVxyXG4gICAgbGV0IGNsZWFudXA7XHJcbiAgICBsZXQgb25DbGVhbnVwID0gKGZuKSA9PiB7XHJcbiAgICAgICAgY2xlYW51cCA9IGVmZmVjdC5vblN0b3AgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNhbGxXaXRoRXJyb3JIYW5kbGluZyhmbiwgaW5zdGFuY2UsIDQgLyogRXJyb3JDb2Rlcy5XQVRDSF9DTEVBTlVQICovKTtcclxuICAgICAgICB9O1xyXG4gICAgfTtcclxuICAgIC8vIGluIFNTUiB0aGVyZSBpcyBubyBuZWVkIHRvIHNldHVwIGFuIGFjdHVhbCBlZmZlY3QsIGFuZCBpdCBzaG91bGQgYmUgbm9vcFxyXG4gICAgLy8gdW5sZXNzIGl0J3MgZWFnZXJcclxuICAgIGlmIChpc0luU1NSQ29tcG9uZW50U2V0dXApIHtcclxuICAgICAgICAvLyB3ZSB3aWxsIGFsc28gbm90IGNhbGwgdGhlIGludmFsaWRhdGUgY2FsbGJhY2sgKCsgcnVubmVyIGlzIG5vdCBzZXQgdXApXHJcbiAgICAgICAgb25DbGVhbnVwID0gTk9PUDtcclxuICAgICAgICBpZiAoIWNiKSB7XHJcbiAgICAgICAgICAgIGdldHRlcigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChpbW1lZGlhdGUpIHtcclxuICAgICAgICAgICAgY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcoY2IsIGluc3RhbmNlLCAzIC8qIEVycm9yQ29kZXMuV0FUQ0hfQ0FMTEJBQ0sgKi8sIFtcclxuICAgICAgICAgICAgICAgIGdldHRlcigpLFxyXG4gICAgICAgICAgICAgICAgaXNNdWx0aVNvdXJjZSA/IFtdIDogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgb25DbGVhbnVwXHJcbiAgICAgICAgICAgIF0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gTk9PUDtcclxuICAgIH1cclxuICAgIGxldCBvbGRWYWx1ZSA9IGlzTXVsdGlTb3VyY2UgPyBbXSA6IElOSVRJQUxfV0FUQ0hFUl9WQUxVRTtcclxuICAgIGNvbnN0IGpvYiA9ICgpID0+IHtcclxuICAgICAgICBpZiAoIWVmZmVjdC5hY3RpdmUpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY2IpIHtcclxuICAgICAgICAgICAgLy8gd2F0Y2goc291cmNlLCBjYilcclxuICAgICAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBlZmZlY3QucnVuKCk7XHJcbiAgICAgICAgICAgIGlmIChkZWVwIHx8XHJcbiAgICAgICAgICAgICAgICBmb3JjZVRyaWdnZXIgfHxcclxuICAgICAgICAgICAgICAgIChpc011bHRpU291cmNlXHJcbiAgICAgICAgICAgICAgICAgICAgPyBuZXdWYWx1ZS5zb21lKCh2LCBpKSA9PiBoYXNDaGFuZ2VkKHYsIG9sZFZhbHVlW2ldKSlcclxuICAgICAgICAgICAgICAgICAgICA6IGhhc0NoYW5nZWQobmV3VmFsdWUsIG9sZFZhbHVlKSkgfHxcclxuICAgICAgICAgICAgICAgIChmYWxzZSAgKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gY2xlYW51cCBiZWZvcmUgcnVubmluZyBjYiBhZ2FpblxyXG4gICAgICAgICAgICAgICAgaWYgKGNsZWFudXApIHtcclxuICAgICAgICAgICAgICAgICAgICBjbGVhbnVwKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZyhjYiwgaW5zdGFuY2UsIDMgLyogRXJyb3JDb2Rlcy5XQVRDSF9DQUxMQkFDSyAqLywgW1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlLFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHBhc3MgdW5kZWZpbmVkIGFzIHRoZSBvbGQgdmFsdWUgd2hlbiBpdCdzIGNoYW5nZWQgZm9yIHRoZSBmaXJzdCB0aW1lXHJcbiAgICAgICAgICAgICAgICAgICAgb2xkVmFsdWUgPT09IElOSVRJQUxfV0FUQ0hFUl9WQUxVRSA/IHVuZGVmaW5lZCA6IG9sZFZhbHVlLFxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xlYW51cFxyXG4gICAgICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICAgICAgICBvbGRWYWx1ZSA9IG5ld1ZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyB3YXRjaEVmZmVjdFxyXG4gICAgICAgICAgICBlZmZlY3QucnVuKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIC8vIGltcG9ydGFudDogbWFyayB0aGUgam9iIGFzIGEgd2F0Y2hlciBjYWxsYmFjayBzbyB0aGF0IHNjaGVkdWxlciBrbm93c1xyXG4gICAgLy8gaXQgaXMgYWxsb3dlZCB0byBzZWxmLXRyaWdnZXIgKCMxNzI3KVxyXG4gICAgam9iLmFsbG93UmVjdXJzZSA9ICEhY2I7XHJcbiAgICBsZXQgc2NoZWR1bGVyO1xyXG4gICAgaWYgKGZsdXNoID09PSAnc3luYycpIHtcclxuICAgICAgICBzY2hlZHVsZXIgPSBqb2I7IC8vIHRoZSBzY2hlZHVsZXIgZnVuY3Rpb24gZ2V0cyBjYWxsZWQgZGlyZWN0bHlcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGZsdXNoID09PSAncG9zdCcpIHtcclxuICAgICAgICBzY2hlZHVsZXIgPSAoKSA9PiBxdWV1ZVBvc3RSZW5kZXJFZmZlY3Qoam9iLCBpbnN0YW5jZSAmJiBpbnN0YW5jZS5zdXNwZW5zZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBkZWZhdWx0OiAncHJlJ1xyXG4gICAgICAgIGpvYi5wcmUgPSB0cnVlO1xyXG4gICAgICAgIGlmIChpbnN0YW5jZSlcclxuICAgICAgICAgICAgam9iLmlkID0gaW5zdGFuY2UudWlkO1xyXG4gICAgICAgIHNjaGVkdWxlciA9ICgpID0+IHF1ZXVlSm9iKGpvYik7XHJcbiAgICB9XHJcbiAgICBjb25zdCBlZmZlY3QgPSBuZXcgUmVhY3RpdmVFZmZlY3QoZ2V0dGVyLCBzY2hlZHVsZXIpO1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIGVmZmVjdC5vblRyYWNrID0gb25UcmFjaztcclxuICAgICAgICBlZmZlY3Qub25UcmlnZ2VyID0gb25UcmlnZ2VyO1xyXG4gICAgfVxyXG4gICAgLy8gaW5pdGlhbCBydW5cclxuICAgIGlmIChjYikge1xyXG4gICAgICAgIGlmIChpbW1lZGlhdGUpIHtcclxuICAgICAgICAgICAgam9iKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBvbGRWYWx1ZSA9IGVmZmVjdC5ydW4oKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChmbHVzaCA9PT0gJ3Bvc3QnKSB7XHJcbiAgICAgICAgcXVldWVQb3N0UmVuZGVyRWZmZWN0KGVmZmVjdC5ydW4uYmluZChlZmZlY3QpLCBpbnN0YW5jZSAmJiBpbnN0YW5jZS5zdXNwZW5zZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBlZmZlY3QucnVuKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgIGVmZmVjdC5zdG9wKCk7XHJcbiAgICAgICAgaWYgKGluc3RhbmNlICYmIGluc3RhbmNlLnNjb3BlKSB7XHJcbiAgICAgICAgICAgIHJlbW92ZShpbnN0YW5jZS5zY29wZS5lZmZlY3RzLCBlZmZlY3QpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbn1cclxuLy8gdGhpcy4kd2F0Y2hcclxuZnVuY3Rpb24gaW5zdGFuY2VXYXRjaChzb3VyY2UsIHZhbHVlLCBvcHRpb25zKSB7XHJcbiAgICBjb25zdCBwdWJsaWNUaGlzID0gdGhpcy5wcm94eTtcclxuICAgIGNvbnN0IGdldHRlciA9IGlzU3RyaW5nKHNvdXJjZSlcclxuICAgICAgICA/IHNvdXJjZS5pbmNsdWRlcygnLicpXHJcbiAgICAgICAgICAgID8gY3JlYXRlUGF0aEdldHRlcihwdWJsaWNUaGlzLCBzb3VyY2UpXHJcbiAgICAgICAgICAgIDogKCkgPT4gcHVibGljVGhpc1tzb3VyY2VdXHJcbiAgICAgICAgOiBzb3VyY2UuYmluZChwdWJsaWNUaGlzLCBwdWJsaWNUaGlzKTtcclxuICAgIGxldCBjYjtcclxuICAgIGlmIChpc0Z1bmN0aW9uKHZhbHVlKSkge1xyXG4gICAgICAgIGNiID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBjYiA9IHZhbHVlLmhhbmRsZXI7XHJcbiAgICAgICAgb3B0aW9ucyA9IHZhbHVlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY3VyID0gY3VycmVudEluc3RhbmNlO1xyXG4gICAgc2V0Q3VycmVudEluc3RhbmNlKHRoaXMpO1xyXG4gICAgY29uc3QgcmVzID0gZG9XYXRjaChnZXR0ZXIsIGNiLmJpbmQocHVibGljVGhpcyksIG9wdGlvbnMpO1xyXG4gICAgaWYgKGN1cikge1xyXG4gICAgICAgIHNldEN1cnJlbnRJbnN0YW5jZShjdXIpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgdW5zZXRDdXJyZW50SW5zdGFuY2UoKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXM7XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlUGF0aEdldHRlcihjdHgsIHBhdGgpIHtcclxuICAgIGNvbnN0IHNlZ21lbnRzID0gcGF0aC5zcGxpdCgnLicpO1xyXG4gICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICBsZXQgY3VyID0gY3R4O1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VnbWVudHMubGVuZ3RoICYmIGN1cjsgaSsrKSB7XHJcbiAgICAgICAgICAgIGN1ciA9IGN1cltzZWdtZW50c1tpXV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBjdXI7XHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIHRyYXZlcnNlKHZhbHVlLCBzZWVuKSB7XHJcbiAgICBpZiAoIWlzT2JqZWN0KHZhbHVlKSB8fCB2YWx1ZVtcIl9fdl9za2lwXCIgLyogUmVhY3RpdmVGbGFncy5TS0lQICovXSkge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuICAgIHNlZW4gPSBzZWVuIHx8IG5ldyBTZXQoKTtcclxuICAgIGlmIChzZWVuLmhhcyh2YWx1ZSkpIHtcclxuICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbiAgICBzZWVuLmFkZCh2YWx1ZSk7XHJcbiAgICBpZiAoaXNSZWYodmFsdWUpKSB7XHJcbiAgICAgICAgdHJhdmVyc2UodmFsdWUudmFsdWUsIHNlZW4pO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHRyYXZlcnNlKHZhbHVlW2ldLCBzZWVuKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc1NldCh2YWx1ZSkgfHwgaXNNYXAodmFsdWUpKSB7XHJcbiAgICAgICAgdmFsdWUuZm9yRWFjaCgodikgPT4ge1xyXG4gICAgICAgICAgICB0cmF2ZXJzZSh2LCBzZWVuKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzUGxhaW5PYmplY3QodmFsdWUpKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdmFsdWUpIHtcclxuICAgICAgICAgICAgdHJhdmVyc2UodmFsdWVba2V5XSwgc2Vlbik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG59XG5cbmZ1bmN0aW9uIHVzZVRyYW5zaXRpb25TdGF0ZSgpIHtcclxuICAgIGNvbnN0IHN0YXRlID0ge1xyXG4gICAgICAgIGlzTW91bnRlZDogZmFsc2UsXHJcbiAgICAgICAgaXNMZWF2aW5nOiBmYWxzZSxcclxuICAgICAgICBpc1VubW91bnRpbmc6IGZhbHNlLFxyXG4gICAgICAgIGxlYXZpbmdWTm9kZXM6IG5ldyBNYXAoKVxyXG4gICAgfTtcclxuICAgIG9uTW91bnRlZCgoKSA9PiB7XHJcbiAgICAgICAgc3RhdGUuaXNNb3VudGVkID0gdHJ1ZTtcclxuICAgIH0pO1xyXG4gICAgb25CZWZvcmVVbm1vdW50KCgpID0+IHtcclxuICAgICAgICBzdGF0ZS5pc1VubW91bnRpbmcgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gc3RhdGU7XHJcbn1cclxuY29uc3QgVHJhbnNpdGlvbkhvb2tWYWxpZGF0b3IgPSBbRnVuY3Rpb24sIEFycmF5XTtcclxuY29uc3QgQmFzZVRyYW5zaXRpb25JbXBsID0ge1xyXG4gICAgbmFtZTogYEJhc2VUcmFuc2l0aW9uYCxcclxuICAgIHByb3BzOiB7XHJcbiAgICAgICAgbW9kZTogU3RyaW5nLFxyXG4gICAgICAgIGFwcGVhcjogQm9vbGVhbixcclxuICAgICAgICBwZXJzaXN0ZWQ6IEJvb2xlYW4sXHJcbiAgICAgICAgLy8gZW50ZXJcclxuICAgICAgICBvbkJlZm9yZUVudGVyOiBUcmFuc2l0aW9uSG9va1ZhbGlkYXRvcixcclxuICAgICAgICBvbkVudGVyOiBUcmFuc2l0aW9uSG9va1ZhbGlkYXRvcixcclxuICAgICAgICBvbkFmdGVyRW50ZXI6IFRyYW5zaXRpb25Ib29rVmFsaWRhdG9yLFxyXG4gICAgICAgIG9uRW50ZXJDYW5jZWxsZWQ6IFRyYW5zaXRpb25Ib29rVmFsaWRhdG9yLFxyXG4gICAgICAgIC8vIGxlYXZlXHJcbiAgICAgICAgb25CZWZvcmVMZWF2ZTogVHJhbnNpdGlvbkhvb2tWYWxpZGF0b3IsXHJcbiAgICAgICAgb25MZWF2ZTogVHJhbnNpdGlvbkhvb2tWYWxpZGF0b3IsXHJcbiAgICAgICAgb25BZnRlckxlYXZlOiBUcmFuc2l0aW9uSG9va1ZhbGlkYXRvcixcclxuICAgICAgICBvbkxlYXZlQ2FuY2VsbGVkOiBUcmFuc2l0aW9uSG9va1ZhbGlkYXRvcixcclxuICAgICAgICAvLyBhcHBlYXJcclxuICAgICAgICBvbkJlZm9yZUFwcGVhcjogVHJhbnNpdGlvbkhvb2tWYWxpZGF0b3IsXHJcbiAgICAgICAgb25BcHBlYXI6IFRyYW5zaXRpb25Ib29rVmFsaWRhdG9yLFxyXG4gICAgICAgIG9uQWZ0ZXJBcHBlYXI6IFRyYW5zaXRpb25Ib29rVmFsaWRhdG9yLFxyXG4gICAgICAgIG9uQXBwZWFyQ2FuY2VsbGVkOiBUcmFuc2l0aW9uSG9va1ZhbGlkYXRvclxyXG4gICAgfSxcclxuICAgIHNldHVwKHByb3BzLCB7IHNsb3RzIH0pIHtcclxuICAgICAgICBjb25zdCBpbnN0YW5jZSA9IGdldEN1cnJlbnRJbnN0YW5jZSgpO1xyXG4gICAgICAgIGNvbnN0IHN0YXRlID0gdXNlVHJhbnNpdGlvblN0YXRlKCk7XHJcbiAgICAgICAgbGV0IHByZXZUcmFuc2l0aW9uS2V5O1xyXG4gICAgICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gc2xvdHMuZGVmYXVsdCAmJiBnZXRUcmFuc2l0aW9uUmF3Q2hpbGRyZW4oc2xvdHMuZGVmYXVsdCgpLCB0cnVlKTtcclxuICAgICAgICAgICAgaWYgKCFjaGlsZHJlbiB8fCAhY2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IGNoaWxkID0gY2hpbGRyZW5bMF07XHJcbiAgICAgICAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgaGFzRm91bmQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIC8vIGxvY2F0ZSBmaXJzdCBub24tY29tbWVudCBjaGlsZFxyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBjIG9mIGNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGMudHlwZSAhPT0gQ29tbWVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGhhc0ZvdW5kKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3YXJuIG1vcmUgdGhhbiBvbmUgbm9uLWNvbW1lbnQgY2hpbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm4oJzx0cmFuc2l0aW9uPiBjYW4gb25seSBiZSB1c2VkIG9uIGEgc2luZ2xlIGVsZW1lbnQgb3IgY29tcG9uZW50LiAnICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVXNlIDx0cmFuc2l0aW9uLWdyb3VwPiBmb3IgbGlzdHMuJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZCA9IGM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc0ZvdW5kID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gdGhlcmUncyBubyBuZWVkIHRvIHRyYWNrIHJlYWN0aXZpdHkgZm9yIHRoZXNlIHByb3BzIHNvIHVzZSB0aGUgcmF3XHJcbiAgICAgICAgICAgIC8vIHByb3BzIGZvciBhIGJpdCBiZXR0ZXIgcGVyZlxyXG4gICAgICAgICAgICBjb25zdCByYXdQcm9wcyA9IHRvUmF3KHByb3BzKTtcclxuICAgICAgICAgICAgY29uc3QgeyBtb2RlIH0gPSByYXdQcm9wcztcclxuICAgICAgICAgICAgLy8gY2hlY2sgbW9kZVxyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgICAgICBtb2RlICYmXHJcbiAgICAgICAgICAgICAgICBtb2RlICE9PSAnaW4tb3V0JyAmJlxyXG4gICAgICAgICAgICAgICAgbW9kZSAhPT0gJ291dC1pbicgJiZcclxuICAgICAgICAgICAgICAgIG1vZGUgIT09ICdkZWZhdWx0Jykge1xyXG4gICAgICAgICAgICAgICAgd2FybihgaW52YWxpZCA8dHJhbnNpdGlvbj4gbW9kZTogJHttb2RlfWApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChzdGF0ZS5pc0xlYXZpbmcpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBlbXB0eVBsYWNlaG9sZGVyKGNoaWxkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBpbiB0aGUgY2FzZSBvZiA8dHJhbnNpdGlvbj48a2VlcC1hbGl2ZS8+PC90cmFuc2l0aW9uPiwgd2UgbmVlZCB0b1xyXG4gICAgICAgICAgICAvLyBjb21wYXJlIHRoZSB0eXBlIG9mIHRoZSBrZXB0LWFsaXZlIGNoaWxkcmVuLlxyXG4gICAgICAgICAgICBjb25zdCBpbm5lckNoaWxkID0gZ2V0S2VlcEFsaXZlQ2hpbGQoY2hpbGQpO1xyXG4gICAgICAgICAgICBpZiAoIWlubmVyQ2hpbGQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBlbXB0eVBsYWNlaG9sZGVyKGNoaWxkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBlbnRlckhvb2tzID0gcmVzb2x2ZVRyYW5zaXRpb25Ib29rcyhpbm5lckNoaWxkLCByYXdQcm9wcywgc3RhdGUsIGluc3RhbmNlKTtcclxuICAgICAgICAgICAgc2V0VHJhbnNpdGlvbkhvb2tzKGlubmVyQ2hpbGQsIGVudGVySG9va3MpO1xyXG4gICAgICAgICAgICBjb25zdCBvbGRDaGlsZCA9IGluc3RhbmNlLnN1YlRyZWU7XHJcbiAgICAgICAgICAgIGNvbnN0IG9sZElubmVyQ2hpbGQgPSBvbGRDaGlsZCAmJiBnZXRLZWVwQWxpdmVDaGlsZChvbGRDaGlsZCk7XHJcbiAgICAgICAgICAgIGxldCB0cmFuc2l0aW9uS2V5Q2hhbmdlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjb25zdCB7IGdldFRyYW5zaXRpb25LZXkgfSA9IGlubmVyQ2hpbGQudHlwZTtcclxuICAgICAgICAgICAgaWYgKGdldFRyYW5zaXRpb25LZXkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGdldFRyYW5zaXRpb25LZXkoKTtcclxuICAgICAgICAgICAgICAgIGlmIChwcmV2VHJhbnNpdGlvbktleSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJldlRyYW5zaXRpb25LZXkgPSBrZXk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChrZXkgIT09IHByZXZUcmFuc2l0aW9uS2V5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJldlRyYW5zaXRpb25LZXkgPSBrZXk7XHJcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbktleUNoYW5nZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGhhbmRsZSBtb2RlXHJcbiAgICAgICAgICAgIGlmIChvbGRJbm5lckNoaWxkICYmXHJcbiAgICAgICAgICAgICAgICBvbGRJbm5lckNoaWxkLnR5cGUgIT09IENvbW1lbnQgJiZcclxuICAgICAgICAgICAgICAgICghaXNTYW1lVk5vZGVUeXBlKGlubmVyQ2hpbGQsIG9sZElubmVyQ2hpbGQpIHx8IHRyYW5zaXRpb25LZXlDaGFuZ2VkKSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbGVhdmluZ0hvb2tzID0gcmVzb2x2ZVRyYW5zaXRpb25Ib29rcyhvbGRJbm5lckNoaWxkLCByYXdQcm9wcywgc3RhdGUsIGluc3RhbmNlKTtcclxuICAgICAgICAgICAgICAgIC8vIHVwZGF0ZSBvbGQgdHJlZSdzIGhvb2tzIGluIGNhc2Ugb2YgZHluYW1pYyB0cmFuc2l0aW9uXHJcbiAgICAgICAgICAgICAgICBzZXRUcmFuc2l0aW9uSG9va3Mob2xkSW5uZXJDaGlsZCwgbGVhdmluZ0hvb2tzKTtcclxuICAgICAgICAgICAgICAgIC8vIHN3aXRjaGluZyBiZXR3ZWVuIGRpZmZlcmVudCB2aWV3c1xyXG4gICAgICAgICAgICAgICAgaWYgKG1vZGUgPT09ICdvdXQtaW4nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUuaXNMZWF2aW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAvLyByZXR1cm4gcGxhY2Vob2xkZXIgbm9kZSBhbmQgcXVldWUgdXBkYXRlIHdoZW4gbGVhdmUgZmluaXNoZXNcclxuICAgICAgICAgICAgICAgICAgICBsZWF2aW5nSG9va3MuYWZ0ZXJMZWF2ZSA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuaXNMZWF2aW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLnVwZGF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVtcHR5UGxhY2Vob2xkZXIoY2hpbGQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobW9kZSA9PT0gJ2luLW91dCcgJiYgaW5uZXJDaGlsZC50eXBlICE9PSBDb21tZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGVhdmluZ0hvb2tzLmRlbGF5TGVhdmUgPSAoZWwsIGVhcmx5UmVtb3ZlLCBkZWxheWVkTGVhdmUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGVhdmluZ1ZOb2Rlc0NhY2hlID0gZ2V0TGVhdmluZ05vZGVzRm9yVHlwZShzdGF0ZSwgb2xkSW5uZXJDaGlsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlYXZpbmdWTm9kZXNDYWNoZVtTdHJpbmcob2xkSW5uZXJDaGlsZC5rZXkpXSA9IG9sZElubmVyQ2hpbGQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVhcmx5IHJlbW92YWwgY2FsbGJhY2tcclxuICAgICAgICAgICAgICAgICAgICAgICAgZWwuX2xlYXZlQ2IgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYXJseVJlbW92ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWwuX2xlYXZlQ2IgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgZW50ZXJIb29rcy5kZWxheWVkTGVhdmU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudGVySG9va3MuZGVsYXllZExlYXZlID0gZGVsYXllZExlYXZlO1xyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGNoaWxkO1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn07XHJcbi8vIGV4cG9ydCB0aGUgcHVibGljIHR5cGUgZm9yIGgvdHN4IGluZmVyZW5jZVxyXG4vLyBhbHNvIHRvIGF2b2lkIGlubGluZSBpbXBvcnQoKSBpbiBnZW5lcmF0ZWQgZC50cyBmaWxlc1xyXG5jb25zdCBCYXNlVHJhbnNpdGlvbiA9IEJhc2VUcmFuc2l0aW9uSW1wbDtcclxuZnVuY3Rpb24gZ2V0TGVhdmluZ05vZGVzRm9yVHlwZShzdGF0ZSwgdm5vZGUpIHtcclxuICAgIGNvbnN0IHsgbGVhdmluZ1ZOb2RlcyB9ID0gc3RhdGU7XHJcbiAgICBsZXQgbGVhdmluZ1ZOb2Rlc0NhY2hlID0gbGVhdmluZ1ZOb2Rlcy5nZXQodm5vZGUudHlwZSk7XHJcbiAgICBpZiAoIWxlYXZpbmdWTm9kZXNDYWNoZSkge1xyXG4gICAgICAgIGxlYXZpbmdWTm9kZXNDYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XHJcbiAgICAgICAgbGVhdmluZ1ZOb2Rlcy5zZXQodm5vZGUudHlwZSwgbGVhdmluZ1ZOb2Rlc0NhY2hlKTtcclxuICAgIH1cclxuICAgIHJldHVybiBsZWF2aW5nVk5vZGVzQ2FjaGU7XHJcbn1cclxuLy8gVGhlIHRyYW5zaXRpb24gaG9va3MgYXJlIGF0dGFjaGVkIHRvIHRoZSB2bm9kZSBhcyB2bm9kZS50cmFuc2l0aW9uXHJcbi8vIGFuZCB3aWxsIGJlIGNhbGxlZCBhdCBhcHByb3ByaWF0ZSB0aW1pbmcgaW4gdGhlIHJlbmRlcmVyLlxyXG5mdW5jdGlvbiByZXNvbHZlVHJhbnNpdGlvbkhvb2tzKHZub2RlLCBwcm9wcywgc3RhdGUsIGluc3RhbmNlKSB7XHJcbiAgICBjb25zdCB7IGFwcGVhciwgbW9kZSwgcGVyc2lzdGVkID0gZmFsc2UsIG9uQmVmb3JlRW50ZXIsIG9uRW50ZXIsIG9uQWZ0ZXJFbnRlciwgb25FbnRlckNhbmNlbGxlZCwgb25CZWZvcmVMZWF2ZSwgb25MZWF2ZSwgb25BZnRlckxlYXZlLCBvbkxlYXZlQ2FuY2VsbGVkLCBvbkJlZm9yZUFwcGVhciwgb25BcHBlYXIsIG9uQWZ0ZXJBcHBlYXIsIG9uQXBwZWFyQ2FuY2VsbGVkIH0gPSBwcm9wcztcclxuICAgIGNvbnN0IGtleSA9IFN0cmluZyh2bm9kZS5rZXkpO1xyXG4gICAgY29uc3QgbGVhdmluZ1ZOb2Rlc0NhY2hlID0gZ2V0TGVhdmluZ05vZGVzRm9yVHlwZShzdGF0ZSwgdm5vZGUpO1xyXG4gICAgY29uc3QgY2FsbEhvb2sgPSAoaG9vaywgYXJncykgPT4ge1xyXG4gICAgICAgIGhvb2sgJiZcclxuICAgICAgICAgICAgY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcoaG9vaywgaW5zdGFuY2UsIDkgLyogRXJyb3JDb2Rlcy5UUkFOU0lUSU9OX0hPT0sgKi8sIGFyZ3MpO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IGNhbGxBc3luY0hvb2sgPSAoaG9vaywgYXJncykgPT4ge1xyXG4gICAgICAgIGNvbnN0IGRvbmUgPSBhcmdzWzFdO1xyXG4gICAgICAgIGNhbGxIb29rKGhvb2ssIGFyZ3MpO1xyXG4gICAgICAgIGlmIChpc0FycmF5KGhvb2spKSB7XHJcbiAgICAgICAgICAgIGlmIChob29rLmV2ZXJ5KGhvb2sgPT4gaG9vay5sZW5ndGggPD0gMSkpXHJcbiAgICAgICAgICAgICAgICBkb25lKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGhvb2subGVuZ3RoIDw9IDEpIHtcclxuICAgICAgICAgICAgZG9uZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBob29rcyA9IHtcclxuICAgICAgICBtb2RlLFxyXG4gICAgICAgIHBlcnNpc3RlZCxcclxuICAgICAgICBiZWZvcmVFbnRlcihlbCkge1xyXG4gICAgICAgICAgICBsZXQgaG9vayA9IG9uQmVmb3JlRW50ZXI7XHJcbiAgICAgICAgICAgIGlmICghc3RhdGUuaXNNb3VudGVkKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYXBwZWFyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaG9vayA9IG9uQmVmb3JlQXBwZWFyIHx8IG9uQmVmb3JlRW50ZXI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gZm9yIHNhbWUgZWxlbWVudCAodi1zaG93KVxyXG4gICAgICAgICAgICBpZiAoZWwuX2xlYXZlQ2IpIHtcclxuICAgICAgICAgICAgICAgIGVsLl9sZWF2ZUNiKHRydWUgLyogY2FuY2VsbGVkICovKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBmb3IgdG9nZ2xlZCBlbGVtZW50IHdpdGggc2FtZSBrZXkgKHYtaWYpXHJcbiAgICAgICAgICAgIGNvbnN0IGxlYXZpbmdWTm9kZSA9IGxlYXZpbmdWTm9kZXNDYWNoZVtrZXldO1xyXG4gICAgICAgICAgICBpZiAobGVhdmluZ1ZOb2RlICYmXHJcbiAgICAgICAgICAgICAgICBpc1NhbWVWTm9kZVR5cGUodm5vZGUsIGxlYXZpbmdWTm9kZSkgJiZcclxuICAgICAgICAgICAgICAgIGxlYXZpbmdWTm9kZS5lbC5fbGVhdmVDYikge1xyXG4gICAgICAgICAgICAgICAgLy8gZm9yY2UgZWFybHkgcmVtb3ZhbCAobm90IGNhbmNlbGxlZClcclxuICAgICAgICAgICAgICAgIGxlYXZpbmdWTm9kZS5lbC5fbGVhdmVDYigpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhbGxIb29rKGhvb2ssIFtlbF0pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZW50ZXIoZWwpIHtcclxuICAgICAgICAgICAgbGV0IGhvb2sgPSBvbkVudGVyO1xyXG4gICAgICAgICAgICBsZXQgYWZ0ZXJIb29rID0gb25BZnRlckVudGVyO1xyXG4gICAgICAgICAgICBsZXQgY2FuY2VsSG9vayA9IG9uRW50ZXJDYW5jZWxsZWQ7XHJcbiAgICAgICAgICAgIGlmICghc3RhdGUuaXNNb3VudGVkKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYXBwZWFyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaG9vayA9IG9uQXBwZWFyIHx8IG9uRW50ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgYWZ0ZXJIb29rID0gb25BZnRlckFwcGVhciB8fCBvbkFmdGVyRW50ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FuY2VsSG9vayA9IG9uQXBwZWFyQ2FuY2VsbGVkIHx8IG9uRW50ZXJDYW5jZWxsZWQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IGNhbGxlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjb25zdCBkb25lID0gKGVsLl9lbnRlckNiID0gKGNhbmNlbGxlZCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNhbGxlZClcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICBjYWxsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNhbmNlbGxlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxIb29rKGNhbmNlbEhvb2ssIFtlbF0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FsbEhvb2soYWZ0ZXJIb29rLCBbZWxdKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChob29rcy5kZWxheWVkTGVhdmUpIHtcclxuICAgICAgICAgICAgICAgICAgICBob29rcy5kZWxheWVkTGVhdmUoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsLl9lbnRlckNiID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWYgKGhvb2spIHtcclxuICAgICAgICAgICAgICAgIGNhbGxBc3luY0hvb2soaG9vaywgW2VsLCBkb25lXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBkb25lKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGxlYXZlKGVsLCByZW1vdmUpIHtcclxuICAgICAgICAgICAgY29uc3Qga2V5ID0gU3RyaW5nKHZub2RlLmtleSk7XHJcbiAgICAgICAgICAgIGlmIChlbC5fZW50ZXJDYikge1xyXG4gICAgICAgICAgICAgICAgZWwuX2VudGVyQ2IodHJ1ZSAvKiBjYW5jZWxsZWQgKi8pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChzdGF0ZS5pc1VubW91bnRpbmcpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZW1vdmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYWxsSG9vayhvbkJlZm9yZUxlYXZlLCBbZWxdKTtcclxuICAgICAgICAgICAgbGV0IGNhbGxlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjb25zdCBkb25lID0gKGVsLl9sZWF2ZUNiID0gKGNhbmNlbGxlZCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNhbGxlZClcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICBjYWxsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgcmVtb3ZlKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2FuY2VsbGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FsbEhvb2sob25MZWF2ZUNhbmNlbGxlZCwgW2VsXSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjYWxsSG9vayhvbkFmdGVyTGVhdmUsIFtlbF0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWwuX2xlYXZlQ2IgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICBpZiAobGVhdmluZ1ZOb2Rlc0NhY2hlW2tleV0gPT09IHZub2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGxlYXZpbmdWTm9kZXNDYWNoZVtrZXldO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgbGVhdmluZ1ZOb2Rlc0NhY2hlW2tleV0gPSB2bm9kZTtcclxuICAgICAgICAgICAgaWYgKG9uTGVhdmUpIHtcclxuICAgICAgICAgICAgICAgIGNhbGxBc3luY0hvb2sob25MZWF2ZSwgW2VsLCBkb25lXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBkb25lKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGNsb25lKHZub2RlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlVHJhbnNpdGlvbkhvb2tzKHZub2RlLCBwcm9wcywgc3RhdGUsIGluc3RhbmNlKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGhvb2tzO1xyXG59XHJcbi8vIHRoZSBwbGFjZWhvbGRlciByZWFsbHkgb25seSBoYW5kbGVzIG9uZSBzcGVjaWFsIGNhc2U6IEtlZXBBbGl2ZVxyXG4vLyBpbiB0aGUgY2FzZSBvZiBhIEtlZXBBbGl2ZSBpbiBhIGxlYXZlIHBoYXNlIHdlIG5lZWQgdG8gcmV0dXJuIGEgS2VlcEFsaXZlXHJcbi8vIHBsYWNlaG9sZGVyIHdpdGggZW1wdHkgY29udGVudCB0byBhdm9pZCB0aGUgS2VlcEFsaXZlIGluc3RhbmNlIGZyb20gYmVpbmdcclxuLy8gdW5tb3VudGVkLlxyXG5mdW5jdGlvbiBlbXB0eVBsYWNlaG9sZGVyKHZub2RlKSB7XHJcbiAgICBpZiAoaXNLZWVwQWxpdmUodm5vZGUpKSB7XHJcbiAgICAgICAgdm5vZGUgPSBjbG9uZVZOb2RlKHZub2RlKTtcclxuICAgICAgICB2bm9kZS5jaGlsZHJlbiA9IG51bGw7XHJcbiAgICAgICAgcmV0dXJuIHZub2RlO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGdldEtlZXBBbGl2ZUNoaWxkKHZub2RlKSB7XHJcbiAgICByZXR1cm4gaXNLZWVwQWxpdmUodm5vZGUpXHJcbiAgICAgICAgPyB2bm9kZS5jaGlsZHJlblxyXG4gICAgICAgICAgICA/IHZub2RlLmNoaWxkcmVuWzBdXHJcbiAgICAgICAgICAgIDogdW5kZWZpbmVkXHJcbiAgICAgICAgOiB2bm9kZTtcclxufVxyXG5mdW5jdGlvbiBzZXRUcmFuc2l0aW9uSG9va3Modm5vZGUsIGhvb2tzKSB7XHJcbiAgICBpZiAodm5vZGUuc2hhcGVGbGFnICYgNiAvKiBTaGFwZUZsYWdzLkNPTVBPTkVOVCAqLyAmJiB2bm9kZS5jb21wb25lbnQpIHtcclxuICAgICAgICBzZXRUcmFuc2l0aW9uSG9va3Modm5vZGUuY29tcG9uZW50LnN1YlRyZWUsIGhvb2tzKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHZub2RlLnNoYXBlRmxhZyAmIDEyOCAvKiBTaGFwZUZsYWdzLlNVU1BFTlNFICovKSB7XHJcbiAgICAgICAgdm5vZGUuc3NDb250ZW50LnRyYW5zaXRpb24gPSBob29rcy5jbG9uZSh2bm9kZS5zc0NvbnRlbnQpO1xyXG4gICAgICAgIHZub2RlLnNzRmFsbGJhY2sudHJhbnNpdGlvbiA9IGhvb2tzLmNsb25lKHZub2RlLnNzRmFsbGJhY2spO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgdm5vZGUudHJhbnNpdGlvbiA9IGhvb2tzO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGdldFRyYW5zaXRpb25SYXdDaGlsZHJlbihjaGlsZHJlbiwga2VlcENvbW1lbnQgPSBmYWxzZSwgcGFyZW50S2V5KSB7XHJcbiAgICBsZXQgcmV0ID0gW107XHJcbiAgICBsZXQga2V5ZWRGcmFnbWVudENvdW50ID0gMDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgY2hpbGQgPSBjaGlsZHJlbltpXTtcclxuICAgICAgICAvLyAjNTM2MCBpbmhlcml0IHBhcmVudCBrZXkgaW4gY2FzZSBvZiA8dGVtcGxhdGUgdi1mb3I+XHJcbiAgICAgICAgY29uc3Qga2V5ID0gcGFyZW50S2V5ID09IG51bGxcclxuICAgICAgICAgICAgPyBjaGlsZC5rZXlcclxuICAgICAgICAgICAgOiBTdHJpbmcocGFyZW50S2V5KSArIFN0cmluZyhjaGlsZC5rZXkgIT0gbnVsbCA/IGNoaWxkLmtleSA6IGkpO1xyXG4gICAgICAgIC8vIGhhbmRsZSBmcmFnbWVudCBjaGlsZHJlbiBjYXNlLCBlLmcuIHYtZm9yXHJcbiAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09IEZyYWdtZW50KSB7XHJcbiAgICAgICAgICAgIGlmIChjaGlsZC5wYXRjaEZsYWcgJiAxMjggLyogUGF0Y2hGbGFncy5LRVlFRF9GUkFHTUVOVCAqLylcclxuICAgICAgICAgICAgICAgIGtleWVkRnJhZ21lbnRDb3VudCsrO1xyXG4gICAgICAgICAgICByZXQgPSByZXQuY29uY2F0KGdldFRyYW5zaXRpb25SYXdDaGlsZHJlbihjaGlsZC5jaGlsZHJlbiwga2VlcENvbW1lbnQsIGtleSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBjb21tZW50IHBsYWNlaG9sZGVycyBzaG91bGQgYmUgc2tpcHBlZCwgZS5nLiB2LWlmXHJcbiAgICAgICAgZWxzZSBpZiAoa2VlcENvbW1lbnQgfHwgY2hpbGQudHlwZSAhPT0gQ29tbWVudCkge1xyXG4gICAgICAgICAgICByZXQucHVzaChrZXkgIT0gbnVsbCA/IGNsb25lVk5vZGUoY2hpbGQsIHsga2V5IH0pIDogY2hpbGQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vICMxMTI2IGlmIGEgdHJhbnNpdGlvbiBjaGlsZHJlbiBsaXN0IGNvbnRhaW5zIG11bHRpcGxlIHN1YiBmcmFnbWVudHMsIHRoZXNlXHJcbiAgICAvLyBmcmFnbWVudHMgd2lsbCBiZSBtZXJnZWQgaW50byBhIGZsYXQgY2hpbGRyZW4gYXJyYXkuIFNpbmNlIGVhY2ggdi1mb3JcclxuICAgIC8vIGZyYWdtZW50IG1heSBjb250YWluIGRpZmZlcmVudCBzdGF0aWMgYmluZGluZ3MgaW5zaWRlLCB3ZSBuZWVkIHRvIGRlLW9wXHJcbiAgICAvLyB0aGVzZSBjaGlsZHJlbiB0byBmb3JjZSBmdWxsIGRpZmZzIHRvIGVuc3VyZSBjb3JyZWN0IGJlaGF2aW9yLlxyXG4gICAgaWYgKGtleWVkRnJhZ21lbnRDb3VudCA+IDEpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJldC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICByZXRbaV0ucGF0Y2hGbGFnID0gLTIgLyogUGF0Y2hGbGFncy5CQUlMICovO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXQ7XHJcbn1cblxuLy8gaW1wbGVtZW50YXRpb24sIGNsb3NlIHRvIG5vLW9wXHJcbmZ1bmN0aW9uIGRlZmluZUNvbXBvbmVudChvcHRpb25zKSB7XHJcbiAgICByZXR1cm4gaXNGdW5jdGlvbihvcHRpb25zKSA/IHsgc2V0dXA6IG9wdGlvbnMsIG5hbWU6IG9wdGlvbnMubmFtZSB9IDogb3B0aW9ucztcclxufVxuXG5jb25zdCBpc0FzeW5jV3JhcHBlciA9IChpKSA9PiAhIWkudHlwZS5fX2FzeW5jTG9hZGVyO1xyXG5mdW5jdGlvbiBkZWZpbmVBc3luY0NvbXBvbmVudChzb3VyY2UpIHtcclxuICAgIGlmIChpc0Z1bmN0aW9uKHNvdXJjZSkpIHtcclxuICAgICAgICBzb3VyY2UgPSB7IGxvYWRlcjogc291cmNlIH07XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IGxvYWRlciwgbG9hZGluZ0NvbXBvbmVudCwgZXJyb3JDb21wb25lbnQsIGRlbGF5ID0gMjAwLCB0aW1lb3V0LCAvLyB1bmRlZmluZWQgPSBuZXZlciB0aW1lcyBvdXRcclxuICAgIHN1c3BlbnNpYmxlID0gdHJ1ZSwgb25FcnJvcjogdXNlck9uRXJyb3IgfSA9IHNvdXJjZTtcclxuICAgIGxldCBwZW5kaW5nUmVxdWVzdCA9IG51bGw7XHJcbiAgICBsZXQgcmVzb2x2ZWRDb21wO1xyXG4gICAgbGV0IHJldHJpZXMgPSAwO1xyXG4gICAgY29uc3QgcmV0cnkgPSAoKSA9PiB7XHJcbiAgICAgICAgcmV0cmllcysrO1xyXG4gICAgICAgIHBlbmRpbmdSZXF1ZXN0ID0gbnVsbDtcclxuICAgICAgICByZXR1cm4gbG9hZCgpO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IGxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgbGV0IHRoaXNSZXF1ZXN0O1xyXG4gICAgICAgIHJldHVybiAocGVuZGluZ1JlcXVlc3QgfHxcclxuICAgICAgICAgICAgKHRoaXNSZXF1ZXN0ID0gcGVuZGluZ1JlcXVlc3QgPVxyXG4gICAgICAgICAgICAgICAgbG9hZGVyKClcclxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBlcnIgPSBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHVzZXJPbkVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1c2VyUmV0cnkgPSAoKSA9PiByZXNvbHZlKHJldHJ5KCkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXNlckZhaWwgPSAoKSA9PiByZWplY3QoZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJPbkVycm9yKGVyciwgdXNlclJldHJ5LCB1c2VyRmFpbCwgcmV0cmllcyArIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IGVycjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKChjb21wKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXNSZXF1ZXN0ICE9PSBwZW5kaW5nUmVxdWVzdCAmJiBwZW5kaW5nUmVxdWVzdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGVuZGluZ1JlcXVlc3Q7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWNvbXApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2FybihgQXN5bmMgY29tcG9uZW50IGxvYWRlciByZXNvbHZlZCB0byB1bmRlZmluZWQuIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYElmIHlvdSBhcmUgdXNpbmcgcmV0cnkoKSwgbWFrZSBzdXJlIHRvIHJldHVybiBpdHMgcmV0dXJuIHZhbHVlLmApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAvLyBpbnRlcm9wIG1vZHVsZSBkZWZhdWx0XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXAgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNvbXAuX19lc01vZHVsZSB8fCBjb21wW1N5bWJvbC50b1N0cmluZ1RhZ10gPT09ICdNb2R1bGUnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wID0gY29tcC5kZWZhdWx0O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGNvbXAgJiYgIWlzT2JqZWN0KGNvbXApICYmICFpc0Z1bmN0aW9uKGNvbXApKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBhc3luYyBjb21wb25lbnQgbG9hZCByZXN1bHQ6ICR7Y29tcH1gKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRDb21wID0gY29tcDtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tcDtcclxuICAgICAgICAgICAgICAgIH0pKSk7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGRlZmluZUNvbXBvbmVudCh7XHJcbiAgICAgICAgbmFtZTogJ0FzeW5jQ29tcG9uZW50V3JhcHBlcicsXHJcbiAgICAgICAgX19hc3luY0xvYWRlcjogbG9hZCxcclxuICAgICAgICBnZXQgX19hc3luY1Jlc29sdmVkKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZWRDb21wO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2V0dXAoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluc3RhbmNlID0gY3VycmVudEluc3RhbmNlO1xyXG4gICAgICAgICAgICAvLyBhbHJlYWR5IHJlc29sdmVkXHJcbiAgICAgICAgICAgIGlmIChyZXNvbHZlZENvbXApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAoKSA9PiBjcmVhdGVJbm5lckNvbXAocmVzb2x2ZWRDb21wLCBpbnN0YW5jZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3Qgb25FcnJvciA9IChlcnIpID0+IHtcclxuICAgICAgICAgICAgICAgIHBlbmRpbmdSZXF1ZXN0ID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIGhhbmRsZUVycm9yKGVyciwgaW5zdGFuY2UsIDEzIC8qIEVycm9yQ29kZXMuQVNZTkNfQ09NUE9ORU5UX0xPQURFUiAqLywgIWVycm9yQ29tcG9uZW50IC8qIGRvIG5vdCB0aHJvdyBpbiBkZXYgaWYgdXNlciBwcm92aWRlZCBlcnJvciBjb21wb25lbnQgKi8pO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAvLyBzdXNwZW5zZS1jb250cm9sbGVkIG9yIFNTUi5cclxuICAgICAgICAgICAgaWYgKChzdXNwZW5zaWJsZSAmJiBpbnN0YW5jZS5zdXNwZW5zZSkgfHxcclxuICAgICAgICAgICAgICAgIChpc0luU1NSQ29tcG9uZW50U2V0dXApKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbG9hZCgpXHJcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oY29tcCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IGNyZWF0ZUlubmVyQ29tcChjb21wLCBpbnN0YW5jZSk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIG9uRXJyb3IoZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCkgPT4gZXJyb3JDb21wb25lbnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyBjcmVhdGVWTm9kZShlcnJvckNvbXBvbmVudCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGVyclxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBsb2FkZWQgPSByZWYoZmFsc2UpO1xyXG4gICAgICAgICAgICBjb25zdCBlcnJvciA9IHJlZigpO1xyXG4gICAgICAgICAgICBjb25zdCBkZWxheWVkID0gcmVmKCEhZGVsYXkpO1xyXG4gICAgICAgICAgICBpZiAoZGVsYXkpIHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGRlbGF5ZWQudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0sIGRlbGF5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGltZW91dCAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWxvYWRlZC52YWx1ZSAmJiAhZXJyb3IudmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyID0gbmV3IEVycm9yKGBBc3luYyBjb21wb25lbnQgdGltZWQgb3V0IGFmdGVyICR7dGltZW91dH1tcy5gKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgb25FcnJvcihlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvci52YWx1ZSA9IGVycjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LCB0aW1lb3V0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsb2FkKClcclxuICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGxvYWRlZC52YWx1ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBpZiAoaW5zdGFuY2UucGFyZW50ICYmIGlzS2VlcEFsaXZlKGluc3RhbmNlLnBhcmVudC52bm9kZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBwYXJlbnQgaXMga2VlcC1hbGl2ZSwgZm9yY2UgdXBkYXRlIHNvIHRoZSBsb2FkZWQgY29tcG9uZW50J3NcclxuICAgICAgICAgICAgICAgICAgICAvLyBuYW1lIGlzIHRha2VuIGludG8gYWNjb3VudFxyXG4gICAgICAgICAgICAgICAgICAgIHF1ZXVlSm9iKGluc3RhbmNlLnBhcmVudC51cGRhdGUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICBvbkVycm9yKGVycik7XHJcbiAgICAgICAgICAgICAgICBlcnJvci52YWx1ZSA9IGVycjtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAobG9hZGVkLnZhbHVlICYmIHJlc29sdmVkQ29tcCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVJbm5lckNvbXAocmVzb2x2ZWRDb21wLCBpbnN0YW5jZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChlcnJvci52YWx1ZSAmJiBlcnJvckNvbXBvbmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVWTm9kZShlcnJvckNvbXBvbmVudCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogZXJyb3IudmFsdWVcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGxvYWRpbmdDb21wb25lbnQgJiYgIWRlbGF5ZWQudmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlVk5vZGUobG9hZGluZ0NvbXBvbmVudCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlSW5uZXJDb21wKGNvbXAsIHsgdm5vZGU6IHsgcmVmLCBwcm9wcywgY2hpbGRyZW4sIHNoYXBlRmxhZyB9LCBwYXJlbnQgfSkge1xyXG4gICAgY29uc3Qgdm5vZGUgPSBjcmVhdGVWTm9kZShjb21wLCBwcm9wcywgY2hpbGRyZW4pO1xyXG4gICAgLy8gZW5zdXJlIGlubmVyIGNvbXBvbmVudCBpbmhlcml0cyB0aGUgYXN5bmMgd3JhcHBlcidzIHJlZiBvd25lclxyXG4gICAgdm5vZGUucmVmID0gcmVmO1xyXG4gICAgcmV0dXJuIHZub2RlO1xyXG59XG5cbmNvbnN0IGlzS2VlcEFsaXZlID0gKHZub2RlKSA9PiB2bm9kZS50eXBlLl9faXNLZWVwQWxpdmU7XHJcbmNvbnN0IEtlZXBBbGl2ZUltcGwgPSB7XHJcbiAgICBuYW1lOiBgS2VlcEFsaXZlYCxcclxuICAgIC8vIE1hcmtlciBmb3Igc3BlY2lhbCBoYW5kbGluZyBpbnNpZGUgdGhlIHJlbmRlcmVyLiBXZSBhcmUgbm90IHVzaW5nIGEgPT09XHJcbiAgICAvLyBjaGVjayBkaXJlY3RseSBvbiBLZWVwQWxpdmUgaW4gdGhlIHJlbmRlcmVyLCBiZWNhdXNlIGltcG9ydGluZyBpdCBkaXJlY3RseVxyXG4gICAgLy8gd291bGQgcHJldmVudCBpdCBmcm9tIGJlaW5nIHRyZWUtc2hha2VuLlxyXG4gICAgX19pc0tlZXBBbGl2ZTogdHJ1ZSxcclxuICAgIHByb3BzOiB7XHJcbiAgICAgICAgaW5jbHVkZTogW1N0cmluZywgUmVnRXhwLCBBcnJheV0sXHJcbiAgICAgICAgZXhjbHVkZTogW1N0cmluZywgUmVnRXhwLCBBcnJheV0sXHJcbiAgICAgICAgbWF4OiBbU3RyaW5nLCBOdW1iZXJdXHJcbiAgICB9LFxyXG4gICAgc2V0dXAocHJvcHMsIHsgc2xvdHMgfSkge1xyXG4gICAgICAgIGNvbnN0IGluc3RhbmNlID0gZ2V0Q3VycmVudEluc3RhbmNlKCk7XHJcbiAgICAgICAgLy8gS2VlcEFsaXZlIGNvbW11bmljYXRlcyB3aXRoIHRoZSBpbnN0YW50aWF0ZWQgcmVuZGVyZXIgdmlhIHRoZVxyXG4gICAgICAgIC8vIGN0eCB3aGVyZSB0aGUgcmVuZGVyZXIgcGFzc2VzIGluIGl0cyBpbnRlcm5hbHMsXHJcbiAgICAgICAgLy8gYW5kIHRoZSBLZWVwQWxpdmUgaW5zdGFuY2UgZXhwb3NlcyBhY3RpdmF0ZS9kZWFjdGl2YXRlIGltcGxlbWVudGF0aW9ucy5cclxuICAgICAgICAvLyBUaGUgd2hvbGUgcG9pbnQgb2YgdGhpcyBpcyB0byBhdm9pZCBpbXBvcnRpbmcgS2VlcEFsaXZlIGRpcmVjdGx5IGluIHRoZVxyXG4gICAgICAgIC8vIHJlbmRlcmVyIHRvIGZhY2lsaXRhdGUgdHJlZS1zaGFraW5nLlxyXG4gICAgICAgIGNvbnN0IHNoYXJlZENvbnRleHQgPSBpbnN0YW5jZS5jdHg7XHJcbiAgICAgICAgLy8gaWYgdGhlIGludGVybmFsIHJlbmRlcmVyIGlzIG5vdCByZWdpc3RlcmVkLCBpdCBpbmRpY2F0ZXMgdGhhdCB0aGlzIGlzIHNlcnZlci1zaWRlIHJlbmRlcmluZyxcclxuICAgICAgICAvLyBmb3IgS2VlcEFsaXZlLCB3ZSBqdXN0IG5lZWQgdG8gcmVuZGVyIGl0cyBjaGlsZHJlblxyXG4gICAgICAgIGlmICghc2hhcmVkQ29udGV4dC5yZW5kZXJlcikge1xyXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBzbG90cy5kZWZhdWx0ICYmIHNsb3RzLmRlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZHJlbiAmJiBjaGlsZHJlbi5sZW5ndGggPT09IDEgPyBjaGlsZHJlblswXSA6IGNoaWxkcmVuO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjYWNoZSA9IG5ldyBNYXAoKTtcclxuICAgICAgICBjb25zdCBrZXlzID0gbmV3IFNldCgpO1xyXG4gICAgICAgIGxldCBjdXJyZW50ID0gbnVsbDtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXykge1xyXG4gICAgICAgICAgICBpbnN0YW5jZS5fX3ZfY2FjaGUgPSBjYWNoZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcGFyZW50U3VzcGVuc2UgPSBpbnN0YW5jZS5zdXNwZW5zZTtcclxuICAgICAgICBjb25zdCB7IHJlbmRlcmVyOiB7IHA6IHBhdGNoLCBtOiBtb3ZlLCB1bTogX3VubW91bnQsIG86IHsgY3JlYXRlRWxlbWVudCB9IH0gfSA9IHNoYXJlZENvbnRleHQ7XHJcbiAgICAgICAgY29uc3Qgc3RvcmFnZUNvbnRhaW5lciA9IGNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICAgIHNoYXJlZENvbnRleHQuYWN0aXZhdGUgPSAodm5vZGUsIGNvbnRhaW5lciwgYW5jaG9yLCBpc1NWRywgb3B0aW1pemVkKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluc3RhbmNlID0gdm5vZGUuY29tcG9uZW50O1xyXG4gICAgICAgICAgICBtb3ZlKHZub2RlLCBjb250YWluZXIsIGFuY2hvciwgMCAvKiBNb3ZlVHlwZS5FTlRFUiAqLywgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgICAgICAvLyBpbiBjYXNlIHByb3BzIGhhdmUgY2hhbmdlZFxyXG4gICAgICAgICAgICBwYXRjaChpbnN0YW5jZS52bm9kZSwgdm5vZGUsIGNvbnRhaW5lciwgYW5jaG9yLCBpbnN0YW5jZSwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCB2bm9kZS5zbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgIHF1ZXVlUG9zdFJlbmRlckVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5pc0RlYWN0aXZhdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBpZiAoaW5zdGFuY2UuYSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGludm9rZUFycmF5Rm5zKGluc3RhbmNlLmEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc3Qgdm5vZGVIb29rID0gdm5vZGUucHJvcHMgJiYgdm5vZGUucHJvcHMub25Wbm9kZU1vdW50ZWQ7XHJcbiAgICAgICAgICAgICAgICBpZiAodm5vZGVIb29rKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW52b2tlVk5vZGVIb29rKHZub2RlSG9vaywgaW5zdGFuY2UucGFyZW50LCB2bm9kZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sIHBhcmVudFN1c3BlbnNlKTtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB8fCBfX1ZVRV9QUk9EX0RFVlRPT0xTX18pIHtcclxuICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBjb21wb25lbnRzIHRyZWVcclxuICAgICAgICAgICAgICAgIGRldnRvb2xzQ29tcG9uZW50QWRkZWQoaW5zdGFuY2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICBzaGFyZWRDb250ZXh0LmRlYWN0aXZhdGUgPSAodm5vZGUpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaW5zdGFuY2UgPSB2bm9kZS5jb21wb25lbnQ7XHJcbiAgICAgICAgICAgIG1vdmUodm5vZGUsIHN0b3JhZ2VDb250YWluZXIsIG51bGwsIDEgLyogTW92ZVR5cGUuTEVBVkUgKi8sIHBhcmVudFN1c3BlbnNlKTtcclxuICAgICAgICAgICAgcXVldWVQb3N0UmVuZGVyRWZmZWN0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChpbnN0YW5jZS5kYSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGludm9rZUFycmF5Rm5zKGluc3RhbmNlLmRhKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IHZub2RlSG9vayA9IHZub2RlLnByb3BzICYmIHZub2RlLnByb3BzLm9uVm5vZGVVbm1vdW50ZWQ7XHJcbiAgICAgICAgICAgICAgICBpZiAodm5vZGVIb29rKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW52b2tlVk5vZGVIb29rKHZub2RlSG9vaywgaW5zdGFuY2UucGFyZW50LCB2bm9kZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5pc0RlYWN0aXZhdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgfSwgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXykge1xyXG4gICAgICAgICAgICAgICAgLy8gVXBkYXRlIGNvbXBvbmVudHMgdHJlZVxyXG4gICAgICAgICAgICAgICAgZGV2dG9vbHNDb21wb25lbnRBZGRlZChpbnN0YW5jZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIGZ1bmN0aW9uIHVubW91bnQodm5vZGUpIHtcclxuICAgICAgICAgICAgLy8gcmVzZXQgdGhlIHNoYXBlRmxhZyBzbyBpdCBjYW4gYmUgcHJvcGVybHkgdW5tb3VudGVkXHJcbiAgICAgICAgICAgIHJlc2V0U2hhcGVGbGFnKHZub2RlKTtcclxuICAgICAgICAgICAgX3VubW91bnQodm5vZGUsIGluc3RhbmNlLCBwYXJlbnRTdXNwZW5zZSwgdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZ1bmN0aW9uIHBydW5lQ2FjaGUoZmlsdGVyKSB7XHJcbiAgICAgICAgICAgIGNhY2hlLmZvckVhY2goKHZub2RlLCBrZXkpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBnZXRDb21wb25lbnROYW1lKHZub2RlLnR5cGUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKG5hbWUgJiYgKCFmaWx0ZXIgfHwgIWZpbHRlcihuYW1lKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBwcnVuZUNhY2hlRW50cnkoa2V5KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZ1bmN0aW9uIHBydW5lQ2FjaGVFbnRyeShrZXkpIHtcclxuICAgICAgICAgICAgY29uc3QgY2FjaGVkID0gY2FjaGUuZ2V0KGtleSk7XHJcbiAgICAgICAgICAgIGlmICghY3VycmVudCB8fCBjYWNoZWQudHlwZSAhPT0gY3VycmVudC50eXBlKSB7XHJcbiAgICAgICAgICAgICAgICB1bm1vdW50KGNhY2hlZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoY3VycmVudCkge1xyXG4gICAgICAgICAgICAgICAgLy8gY3VycmVudCBhY3RpdmUgaW5zdGFuY2Ugc2hvdWxkIG5vIGxvbmdlciBiZSBrZXB0LWFsaXZlLlxyXG4gICAgICAgICAgICAgICAgLy8gd2UgY2FuJ3QgdW5tb3VudCBpdCBub3cgYnV0IGl0IG1pZ2h0IGJlIGxhdGVyLCBzbyByZXNldCBpdHMgZmxhZyBub3cuXHJcbiAgICAgICAgICAgICAgICByZXNldFNoYXBlRmxhZyhjdXJyZW50KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYWNoZS5kZWxldGUoa2V5KTtcclxuICAgICAgICAgICAga2V5cy5kZWxldGUoa2V5KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gcHJ1bmUgY2FjaGUgb24gaW5jbHVkZS9leGNsdWRlIHByb3AgY2hhbmdlXHJcbiAgICAgICAgd2F0Y2goKCkgPT4gW3Byb3BzLmluY2x1ZGUsIHByb3BzLmV4Y2x1ZGVdLCAoW2luY2x1ZGUsIGV4Y2x1ZGVdKSA9PiB7XHJcbiAgICAgICAgICAgIGluY2x1ZGUgJiYgcHJ1bmVDYWNoZShuYW1lID0+IG1hdGNoZXMoaW5jbHVkZSwgbmFtZSkpO1xyXG4gICAgICAgICAgICBleGNsdWRlICYmIHBydW5lQ2FjaGUobmFtZSA9PiAhbWF0Y2hlcyhleGNsdWRlLCBuYW1lKSk7XHJcbiAgICAgICAgfSwgXHJcbiAgICAgICAgLy8gcHJ1bmUgcG9zdC1yZW5kZXIgYWZ0ZXIgYGN1cnJlbnRgIGhhcyBiZWVuIHVwZGF0ZWRcclxuICAgICAgICB7IGZsdXNoOiAncG9zdCcsIGRlZXA6IHRydWUgfSk7XHJcbiAgICAgICAgLy8gY2FjaGUgc3ViIHRyZWUgYWZ0ZXIgcmVuZGVyXHJcbiAgICAgICAgbGV0IHBlbmRpbmdDYWNoZUtleSA9IG51bGw7XHJcbiAgICAgICAgY29uc3QgY2FjaGVTdWJ0cmVlID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAvLyBmaXggIzE2MjEsIHRoZSBwZW5kaW5nQ2FjaGVLZXkgY291bGQgYmUgMFxyXG4gICAgICAgICAgICBpZiAocGVuZGluZ0NhY2hlS2V5ICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIGNhY2hlLnNldChwZW5kaW5nQ2FjaGVLZXksIGdldElubmVyQ2hpbGQoaW5zdGFuY2Uuc3ViVHJlZSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICBvbk1vdW50ZWQoY2FjaGVTdWJ0cmVlKTtcclxuICAgICAgICBvblVwZGF0ZWQoY2FjaGVTdWJ0cmVlKTtcclxuICAgICAgICBvbkJlZm9yZVVubW91bnQoKCkgPT4ge1xyXG4gICAgICAgICAgICBjYWNoZS5mb3JFYWNoKGNhY2hlZCA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IHN1YlRyZWUsIHN1c3BlbnNlIH0gPSBpbnN0YW5jZTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHZub2RlID0gZ2V0SW5uZXJDaGlsZChzdWJUcmVlKTtcclxuICAgICAgICAgICAgICAgIGlmIChjYWNoZWQudHlwZSA9PT0gdm5vZGUudHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGN1cnJlbnQgaW5zdGFuY2Ugd2lsbCBiZSB1bm1vdW50ZWQgYXMgcGFydCBvZiBrZWVwLWFsaXZlJ3MgdW5tb3VudFxyXG4gICAgICAgICAgICAgICAgICAgIHJlc2V0U2hhcGVGbGFnKHZub2RlKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBidXQgaW52b2tlIGl0cyBkZWFjdGl2YXRlZCBob29rIGhlcmVcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYSA9IHZub2RlLmNvbXBvbmVudC5kYTtcclxuICAgICAgICAgICAgICAgICAgICBkYSAmJiBxdWV1ZVBvc3RSZW5kZXJFZmZlY3QoZGEsIHN1c3BlbnNlKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB1bm1vdW50KGNhY2hlZCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHBlbmRpbmdDYWNoZUtleSA9IG51bGw7XHJcbiAgICAgICAgICAgIGlmICghc2xvdHMuZGVmYXVsdCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBzbG90cy5kZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHJhd1ZOb2RlID0gY2hpbGRyZW5bMF07XHJcbiAgICAgICAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FybihgS2VlcEFsaXZlIHNob3VsZCBjb250YWluIGV4YWN0bHkgb25lIGNvbXBvbmVudCBjaGlsZC5gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkcmVuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKCFpc1ZOb2RlKHJhd1ZOb2RlKSB8fFxyXG4gICAgICAgICAgICAgICAgKCEocmF3Vk5vZGUuc2hhcGVGbGFnICYgNCAvKiBTaGFwZUZsYWdzLlNUQVRFRlVMX0NPTVBPTkVOVCAqLykgJiZcclxuICAgICAgICAgICAgICAgICAgICAhKHJhd1ZOb2RlLnNoYXBlRmxhZyAmIDEyOCAvKiBTaGFwZUZsYWdzLlNVU1BFTlNFICovKSkpIHtcclxuICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJhd1ZOb2RlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCB2bm9kZSA9IGdldElubmVyQ2hpbGQocmF3Vk5vZGUpO1xyXG4gICAgICAgICAgICBjb25zdCBjb21wID0gdm5vZGUudHlwZTtcclxuICAgICAgICAgICAgLy8gZm9yIGFzeW5jIGNvbXBvbmVudHMsIG5hbWUgY2hlY2sgc2hvdWxkIGJlIGJhc2VkIGluIGl0cyBsb2FkZWRcclxuICAgICAgICAgICAgLy8gaW5uZXIgY29tcG9uZW50IGlmIGF2YWlsYWJsZVxyXG4gICAgICAgICAgICBjb25zdCBuYW1lID0gZ2V0Q29tcG9uZW50TmFtZShpc0FzeW5jV3JhcHBlcih2bm9kZSlcclxuICAgICAgICAgICAgICAgID8gdm5vZGUudHlwZS5fX2FzeW5jUmVzb2x2ZWQgfHwge31cclxuICAgICAgICAgICAgICAgIDogY29tcCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgaW5jbHVkZSwgZXhjbHVkZSwgbWF4IH0gPSBwcm9wcztcclxuICAgICAgICAgICAgaWYgKChpbmNsdWRlICYmICghbmFtZSB8fCAhbWF0Y2hlcyhpbmNsdWRlLCBuYW1lKSkpIHx8XHJcbiAgICAgICAgICAgICAgICAoZXhjbHVkZSAmJiBuYW1lICYmIG1hdGNoZXMoZXhjbHVkZSwgbmFtZSkpKSB7XHJcbiAgICAgICAgICAgICAgICBjdXJyZW50ID0gdm5vZGU7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmF3Vk5vZGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3Qga2V5ID0gdm5vZGUua2V5ID09IG51bGwgPyBjb21wIDogdm5vZGUua2V5O1xyXG4gICAgICAgICAgICBjb25zdCBjYWNoZWRWTm9kZSA9IGNhY2hlLmdldChrZXkpO1xyXG4gICAgICAgICAgICAvLyBjbG9uZSB2bm9kZSBpZiBpdCdzIHJldXNlZCBiZWNhdXNlIHdlIGFyZSBnb2luZyB0byBtdXRhdGUgaXRcclxuICAgICAgICAgICAgaWYgKHZub2RlLmVsKSB7XHJcbiAgICAgICAgICAgICAgICB2bm9kZSA9IGNsb25lVk5vZGUodm5vZGUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHJhd1ZOb2RlLnNoYXBlRmxhZyAmIDEyOCAvKiBTaGFwZUZsYWdzLlNVU1BFTlNFICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmF3Vk5vZGUuc3NDb250ZW50ID0gdm5vZGU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gIzE1MTMgaXQncyBwb3NzaWJsZSBmb3IgdGhlIHJldHVybmVkIHZub2RlIHRvIGJlIGNsb25lZCBkdWUgdG8gYXR0clxyXG4gICAgICAgICAgICAvLyBmYWxsdGhyb3VnaCBvciBzY29wZUlkLCBzbyB0aGUgdm5vZGUgaGVyZSBtYXkgbm90IGJlIHRoZSBmaW5hbCB2bm9kZVxyXG4gICAgICAgICAgICAvLyB0aGF0IGlzIG1vdW50ZWQuIEluc3RlYWQgb2YgY2FjaGluZyBpdCBkaXJlY3RseSwgd2Ugc3RvcmUgdGhlIHBlbmRpbmdcclxuICAgICAgICAgICAgLy8ga2V5IGFuZCBjYWNoZSBgaW5zdGFuY2Uuc3ViVHJlZWAgKHRoZSBub3JtYWxpemVkIHZub2RlKSBpblxyXG4gICAgICAgICAgICAvLyBiZWZvcmVNb3VudC9iZWZvcmVVcGRhdGUgaG9va3MuXHJcbiAgICAgICAgICAgIHBlbmRpbmdDYWNoZUtleSA9IGtleTtcclxuICAgICAgICAgICAgaWYgKGNhY2hlZFZOb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb3B5IG92ZXIgbW91bnRlZCBzdGF0ZVxyXG4gICAgICAgICAgICAgICAgdm5vZGUuZWwgPSBjYWNoZWRWTm9kZS5lbDtcclxuICAgICAgICAgICAgICAgIHZub2RlLmNvbXBvbmVudCA9IGNhY2hlZFZOb2RlLmNvbXBvbmVudDtcclxuICAgICAgICAgICAgICAgIGlmICh2bm9kZS50cmFuc2l0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gcmVjdXJzaXZlbHkgdXBkYXRlIHRyYW5zaXRpb24gaG9va3Mgb24gc3ViVHJlZVxyXG4gICAgICAgICAgICAgICAgICAgIHNldFRyYW5zaXRpb25Ib29rcyh2bm9kZSwgdm5vZGUudHJhbnNpdGlvbik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBhdm9pZCB2bm9kZSBiZWluZyBtb3VudGVkIGFzIGZyZXNoXHJcbiAgICAgICAgICAgICAgICB2bm9kZS5zaGFwZUZsYWcgfD0gNTEyIC8qIFNoYXBlRmxhZ3MuQ09NUE9ORU5UX0tFUFRfQUxJVkUgKi87XHJcbiAgICAgICAgICAgICAgICAvLyBtYWtlIHRoaXMga2V5IHRoZSBmcmVzaGVzdFxyXG4gICAgICAgICAgICAgICAga2V5cy5kZWxldGUoa2V5KTtcclxuICAgICAgICAgICAgICAgIGtleXMuYWRkKGtleSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBrZXlzLmFkZChrZXkpO1xyXG4gICAgICAgICAgICAgICAgLy8gcHJ1bmUgb2xkZXN0IGVudHJ5XHJcbiAgICAgICAgICAgICAgICBpZiAobWF4ICYmIGtleXMuc2l6ZSA+IHBhcnNlSW50KG1heCwgMTApKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJ1bmVDYWNoZUVudHJ5KGtleXMudmFsdWVzKCkubmV4dCgpLnZhbHVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBhdm9pZCB2bm9kZSBiZWluZyB1bm1vdW50ZWRcclxuICAgICAgICAgICAgdm5vZGUuc2hhcGVGbGFnIHw9IDI1NiAvKiBTaGFwZUZsYWdzLkNPTVBPTkVOVF9TSE9VTERfS0VFUF9BTElWRSAqLztcclxuICAgICAgICAgICAgY3VycmVudCA9IHZub2RlO1xyXG4gICAgICAgICAgICByZXR1cm4gaXNTdXNwZW5zZShyYXdWTm9kZS50eXBlKSA/IHJhd1ZOb2RlIDogdm5vZGU7XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxufTtcclxuLy8gZXhwb3J0IHRoZSBwdWJsaWMgdHlwZSBmb3IgaC90c3ggaW5mZXJlbmNlXHJcbi8vIGFsc28gdG8gYXZvaWQgaW5saW5lIGltcG9ydCgpIGluIGdlbmVyYXRlZCBkLnRzIGZpbGVzXHJcbmNvbnN0IEtlZXBBbGl2ZSA9IEtlZXBBbGl2ZUltcGw7XHJcbmZ1bmN0aW9uIG1hdGNoZXMocGF0dGVybiwgbmFtZSkge1xyXG4gICAgaWYgKGlzQXJyYXkocGF0dGVybikpIHtcclxuICAgICAgICByZXR1cm4gcGF0dGVybi5zb21lKChwKSA9PiBtYXRjaGVzKHAsIG5hbWUpKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzU3RyaW5nKHBhdHRlcm4pKSB7XHJcbiAgICAgICAgcmV0dXJuIHBhdHRlcm4uc3BsaXQoJywnKS5pbmNsdWRlcyhuYW1lKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHBhdHRlcm4udGVzdCkge1xyXG4gICAgICAgIHJldHVybiBwYXR0ZXJuLnRlc3QobmFtZSk7XHJcbiAgICB9XHJcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG59XHJcbmZ1bmN0aW9uIG9uQWN0aXZhdGVkKGhvb2ssIHRhcmdldCkge1xyXG4gICAgcmVnaXN0ZXJLZWVwQWxpdmVIb29rKGhvb2ssIFwiYVwiIC8qIExpZmVjeWNsZUhvb2tzLkFDVElWQVRFRCAqLywgdGFyZ2V0KTtcclxufVxyXG5mdW5jdGlvbiBvbkRlYWN0aXZhdGVkKGhvb2ssIHRhcmdldCkge1xyXG4gICAgcmVnaXN0ZXJLZWVwQWxpdmVIb29rKGhvb2ssIFwiZGFcIiAvKiBMaWZlY3ljbGVIb29rcy5ERUFDVElWQVRFRCAqLywgdGFyZ2V0KTtcclxufVxyXG5mdW5jdGlvbiByZWdpc3RlcktlZXBBbGl2ZUhvb2soaG9vaywgdHlwZSwgdGFyZ2V0ID0gY3VycmVudEluc3RhbmNlKSB7XHJcbiAgICAvLyBjYWNoZSB0aGUgZGVhY3RpdmF0ZSBicmFuY2ggY2hlY2sgd3JhcHBlciBmb3IgaW5qZWN0ZWQgaG9va3Mgc28gdGhlIHNhbWVcclxuICAgIC8vIGhvb2sgY2FuIGJlIHByb3Blcmx5IGRlZHVwZWQgYnkgdGhlIHNjaGVkdWxlci4gXCJfX3dkY1wiIHN0YW5kcyBmb3IgXCJ3aXRoXHJcbiAgICAvLyBkZWFjdGl2YXRpb24gY2hlY2tcIi5cclxuICAgIGNvbnN0IHdyYXBwZWRIb29rID0gaG9vay5fX3dkYyB8fFxyXG4gICAgICAgIChob29rLl9fd2RjID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAvLyBvbmx5IGZpcmUgdGhlIGhvb2sgaWYgdGhlIHRhcmdldCBpbnN0YW5jZSBpcyBOT1QgaW4gYSBkZWFjdGl2YXRlZCBicmFuY2guXHJcbiAgICAgICAgICAgIGxldCBjdXJyZW50ID0gdGFyZ2V0O1xyXG4gICAgICAgICAgICB3aGlsZSAoY3VycmVudCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnQuaXNEZWFjdGl2YXRlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LnBhcmVudDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gaG9vaygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgaW5qZWN0SG9vayh0eXBlLCB3cmFwcGVkSG9vaywgdGFyZ2V0KTtcclxuICAgIC8vIEluIGFkZGl0aW9uIHRvIHJlZ2lzdGVyaW5nIGl0IG9uIHRoZSB0YXJnZXQgaW5zdGFuY2UsIHdlIHdhbGsgdXAgdGhlIHBhcmVudFxyXG4gICAgLy8gY2hhaW4gYW5kIHJlZ2lzdGVyIGl0IG9uIGFsbCBhbmNlc3RvciBpbnN0YW5jZXMgdGhhdCBhcmUga2VlcC1hbGl2ZSByb290cy5cclxuICAgIC8vIFRoaXMgYXZvaWRzIHRoZSBuZWVkIHRvIHdhbGsgdGhlIGVudGlyZSBjb21wb25lbnQgdHJlZSB3aGVuIGludm9raW5nIHRoZXNlXHJcbiAgICAvLyBob29rcywgYW5kIG1vcmUgaW1wb3J0YW50bHksIGF2b2lkcyB0aGUgbmVlZCB0byB0cmFjayBjaGlsZCBjb21wb25lbnRzIGluXHJcbiAgICAvLyBhcnJheXMuXHJcbiAgICBpZiAodGFyZ2V0KSB7XHJcbiAgICAgICAgbGV0IGN1cnJlbnQgPSB0YXJnZXQucGFyZW50O1xyXG4gICAgICAgIHdoaWxlIChjdXJyZW50ICYmIGN1cnJlbnQucGFyZW50KSB7XHJcbiAgICAgICAgICAgIGlmIChpc0tlZXBBbGl2ZShjdXJyZW50LnBhcmVudC52bm9kZSkpIHtcclxuICAgICAgICAgICAgICAgIGluamVjdFRvS2VlcEFsaXZlUm9vdCh3cmFwcGVkSG9vaywgdHlwZSwgdGFyZ2V0LCBjdXJyZW50KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC5wYXJlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGluamVjdFRvS2VlcEFsaXZlUm9vdChob29rLCB0eXBlLCB0YXJnZXQsIGtlZXBBbGl2ZVJvb3QpIHtcclxuICAgIC8vIGluamVjdEhvb2sgd3JhcHMgdGhlIG9yaWdpbmFsIGZvciBlcnJvciBoYW5kbGluZywgc28gbWFrZSBzdXJlIHRvIHJlbW92ZVxyXG4gICAgLy8gdGhlIHdyYXBwZWQgdmVyc2lvbi5cclxuICAgIGNvbnN0IGluamVjdGVkID0gaW5qZWN0SG9vayh0eXBlLCBob29rLCBrZWVwQWxpdmVSb290LCB0cnVlIC8qIHByZXBlbmQgKi8pO1xyXG4gICAgb25Vbm1vdW50ZWQoKCkgPT4ge1xyXG4gICAgICAgIHJlbW92ZShrZWVwQWxpdmVSb290W3R5cGVdLCBpbmplY3RlZCk7XHJcbiAgICB9LCB0YXJnZXQpO1xyXG59XHJcbmZ1bmN0aW9uIHJlc2V0U2hhcGVGbGFnKHZub2RlKSB7XHJcbiAgICBsZXQgc2hhcGVGbGFnID0gdm5vZGUuc2hhcGVGbGFnO1xyXG4gICAgaWYgKHNoYXBlRmxhZyAmIDI1NiAvKiBTaGFwZUZsYWdzLkNPTVBPTkVOVF9TSE9VTERfS0VFUF9BTElWRSAqLykge1xyXG4gICAgICAgIHNoYXBlRmxhZyAtPSAyNTYgLyogU2hhcGVGbGFncy5DT01QT05FTlRfU0hPVUxEX0tFRVBfQUxJVkUgKi87XHJcbiAgICB9XHJcbiAgICBpZiAoc2hhcGVGbGFnICYgNTEyIC8qIFNoYXBlRmxhZ3MuQ09NUE9ORU5UX0tFUFRfQUxJVkUgKi8pIHtcclxuICAgICAgICBzaGFwZUZsYWcgLT0gNTEyIC8qIFNoYXBlRmxhZ3MuQ09NUE9ORU5UX0tFUFRfQUxJVkUgKi87XHJcbiAgICB9XHJcbiAgICB2bm9kZS5zaGFwZUZsYWcgPSBzaGFwZUZsYWc7XHJcbn1cclxuZnVuY3Rpb24gZ2V0SW5uZXJDaGlsZCh2bm9kZSkge1xyXG4gICAgcmV0dXJuIHZub2RlLnNoYXBlRmxhZyAmIDEyOCAvKiBTaGFwZUZsYWdzLlNVU1BFTlNFICovID8gdm5vZGUuc3NDb250ZW50IDogdm5vZGU7XHJcbn1cblxuZnVuY3Rpb24gaW5qZWN0SG9vayh0eXBlLCBob29rLCB0YXJnZXQgPSBjdXJyZW50SW5zdGFuY2UsIHByZXBlbmQgPSBmYWxzZSkge1xyXG4gICAgaWYgKHRhcmdldCkge1xyXG4gICAgICAgIGNvbnN0IGhvb2tzID0gdGFyZ2V0W3R5cGVdIHx8ICh0YXJnZXRbdHlwZV0gPSBbXSk7XHJcbiAgICAgICAgLy8gY2FjaGUgdGhlIGVycm9yIGhhbmRsaW5nIHdyYXBwZXIgZm9yIGluamVjdGVkIGhvb2tzIHNvIHRoZSBzYW1lIGhvb2tcclxuICAgICAgICAvLyBjYW4gYmUgcHJvcGVybHkgZGVkdXBlZCBieSB0aGUgc2NoZWR1bGVyLiBcIl9fd2VoXCIgc3RhbmRzIGZvciBcIndpdGggZXJyb3JcclxuICAgICAgICAvLyBoYW5kbGluZ1wiLlxyXG4gICAgICAgIGNvbnN0IHdyYXBwZWRIb29rID0gaG9vay5fX3dlaCB8fFxyXG4gICAgICAgICAgICAoaG9vay5fX3dlaCA9ICguLi5hcmdzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0LmlzVW5tb3VudGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gZGlzYWJsZSB0cmFja2luZyBpbnNpZGUgYWxsIGxpZmVjeWNsZSBob29rc1xyXG4gICAgICAgICAgICAgICAgLy8gc2luY2UgdGhleSBjYW4gcG90ZW50aWFsbHkgYmUgY2FsbGVkIGluc2lkZSBlZmZlY3RzLlxyXG4gICAgICAgICAgICAgICAgcGF1c2VUcmFja2luZygpO1xyXG4gICAgICAgICAgICAgICAgLy8gU2V0IGN1cnJlbnRJbnN0YW5jZSBkdXJpbmcgaG9vayBpbnZvY2F0aW9uLlxyXG4gICAgICAgICAgICAgICAgLy8gVGhpcyBhc3N1bWVzIHRoZSBob29rIGRvZXMgbm90IHN5bmNocm9ub3VzbHkgdHJpZ2dlciBvdGhlciBob29rcywgd2hpY2hcclxuICAgICAgICAgICAgICAgIC8vIGNhbiBvbmx5IGJlIGZhbHNlIHdoZW4gdGhlIHVzZXIgZG9lcyBzb21ldGhpbmcgcmVhbGx5IGZ1bmt5LlxyXG4gICAgICAgICAgICAgICAgc2V0Q3VycmVudEluc3RhbmNlKHRhcmdldCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZyhob29rLCB0YXJnZXQsIHR5cGUsIGFyZ3MpO1xyXG4gICAgICAgICAgICAgICAgdW5zZXRDdXJyZW50SW5zdGFuY2UoKTtcclxuICAgICAgICAgICAgICAgIHJlc2V0VHJhY2tpbmcoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZXM7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChwcmVwZW5kKSB7XHJcbiAgICAgICAgICAgIGhvb2tzLnVuc2hpZnQod3JhcHBlZEhvb2spO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaG9va3MucHVzaCh3cmFwcGVkSG9vayk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB3cmFwcGVkSG9vaztcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIGNvbnN0IGFwaU5hbWUgPSB0b0hhbmRsZXJLZXkoRXJyb3JUeXBlU3RyaW5nc1t0eXBlXS5yZXBsYWNlKC8gaG9vayQvLCAnJykpO1xyXG4gICAgICAgIHdhcm4oYCR7YXBpTmFtZX0gaXMgY2FsbGVkIHdoZW4gdGhlcmUgaXMgbm8gYWN0aXZlIGNvbXBvbmVudCBpbnN0YW5jZSB0byBiZSBgICtcclxuICAgICAgICAgICAgYGFzc29jaWF0ZWQgd2l0aC4gYCArXHJcbiAgICAgICAgICAgIGBMaWZlY3ljbGUgaW5qZWN0aW9uIEFQSXMgY2FuIG9ubHkgYmUgdXNlZCBkdXJpbmcgZXhlY3V0aW9uIG9mIHNldHVwKCkuYCArXHJcbiAgICAgICAgICAgIChgIElmIHlvdSBhcmUgdXNpbmcgYXN5bmMgc2V0dXAoKSwgbWFrZSBzdXJlIHRvIHJlZ2lzdGVyIGxpZmVjeWNsZSBgICtcclxuICAgICAgICAgICAgICAgICAgICBgaG9va3MgYmVmb3JlIHRoZSBmaXJzdCBhd2FpdCBzdGF0ZW1lbnQuYFxyXG4gICAgICAgICAgICAgICAgKSk7XHJcbiAgICB9XHJcbn1cclxuY29uc3QgY3JlYXRlSG9vayA9IChsaWZlY3ljbGUpID0+IChob29rLCB0YXJnZXQgPSBjdXJyZW50SW5zdGFuY2UpID0+IFxyXG4vLyBwb3N0LWNyZWF0ZSBsaWZlY3ljbGUgcmVnaXN0cmF0aW9ucyBhcmUgbm9vcHMgZHVyaW5nIFNTUiAoZXhjZXB0IGZvciBzZXJ2ZXJQcmVmZXRjaClcclxuKCFpc0luU1NSQ29tcG9uZW50U2V0dXAgfHwgbGlmZWN5Y2xlID09PSBcInNwXCIgLyogTGlmZWN5Y2xlSG9va3MuU0VSVkVSX1BSRUZFVENIICovKSAmJlxyXG4gICAgaW5qZWN0SG9vayhsaWZlY3ljbGUsIGhvb2ssIHRhcmdldCk7XHJcbmNvbnN0IG9uQmVmb3JlTW91bnQgPSBjcmVhdGVIb29rKFwiYm1cIiAvKiBMaWZlY3ljbGVIb29rcy5CRUZPUkVfTU9VTlQgKi8pO1xyXG5jb25zdCBvbk1vdW50ZWQgPSBjcmVhdGVIb29rKFwibVwiIC8qIExpZmVjeWNsZUhvb2tzLk1PVU5URUQgKi8pO1xyXG5jb25zdCBvbkJlZm9yZVVwZGF0ZSA9IGNyZWF0ZUhvb2soXCJidVwiIC8qIExpZmVjeWNsZUhvb2tzLkJFRk9SRV9VUERBVEUgKi8pO1xyXG5jb25zdCBvblVwZGF0ZWQgPSBjcmVhdGVIb29rKFwidVwiIC8qIExpZmVjeWNsZUhvb2tzLlVQREFURUQgKi8pO1xyXG5jb25zdCBvbkJlZm9yZVVubW91bnQgPSBjcmVhdGVIb29rKFwiYnVtXCIgLyogTGlmZWN5Y2xlSG9va3MuQkVGT1JFX1VOTU9VTlQgKi8pO1xyXG5jb25zdCBvblVubW91bnRlZCA9IGNyZWF0ZUhvb2soXCJ1bVwiIC8qIExpZmVjeWNsZUhvb2tzLlVOTU9VTlRFRCAqLyk7XHJcbmNvbnN0IG9uU2VydmVyUHJlZmV0Y2ggPSBjcmVhdGVIb29rKFwic3BcIiAvKiBMaWZlY3ljbGVIb29rcy5TRVJWRVJfUFJFRkVUQ0ggKi8pO1xyXG5jb25zdCBvblJlbmRlclRyaWdnZXJlZCA9IGNyZWF0ZUhvb2soXCJydGdcIiAvKiBMaWZlY3ljbGVIb29rcy5SRU5ERVJfVFJJR0dFUkVEICovKTtcclxuY29uc3Qgb25SZW5kZXJUcmFja2VkID0gY3JlYXRlSG9vayhcInJ0Y1wiIC8qIExpZmVjeWNsZUhvb2tzLlJFTkRFUl9UUkFDS0VEICovKTtcclxuZnVuY3Rpb24gb25FcnJvckNhcHR1cmVkKGhvb2ssIHRhcmdldCA9IGN1cnJlbnRJbnN0YW5jZSkge1xyXG4gICAgaW5qZWN0SG9vayhcImVjXCIgLyogTGlmZWN5Y2xlSG9va3MuRVJST1JfQ0FQVFVSRUQgKi8sIGhvb2ssIHRhcmdldCk7XHJcbn1cblxuLyoqXHJcblJ1bnRpbWUgaGVscGVyIGZvciBhcHBseWluZyBkaXJlY3RpdmVzIHRvIGEgdm5vZGUuIEV4YW1wbGUgdXNhZ2U6XHJcblxuY29uc3QgY29tcCA9IHJlc29sdmVDb21wb25lbnQoJ2NvbXAnKVxyXG5jb25zdCBmb28gPSByZXNvbHZlRGlyZWN0aXZlKCdmb28nKVxyXG5jb25zdCBiYXIgPSByZXNvbHZlRGlyZWN0aXZlKCdiYXInKVxyXG5cbnJldHVybiB3aXRoRGlyZWN0aXZlcyhoKGNvbXApLCBbXHJcbiAgW2ZvbywgdGhpcy54XSxcclxuICBbYmFyLCB0aGlzLnldXHJcbl0pXHJcbiovXHJcbmZ1bmN0aW9uIHZhbGlkYXRlRGlyZWN0aXZlTmFtZShuYW1lKSB7XHJcbiAgICBpZiAoaXNCdWlsdEluRGlyZWN0aXZlKG5hbWUpKSB7XHJcbiAgICAgICAgd2FybignRG8gbm90IHVzZSBidWlsdC1pbiBkaXJlY3RpdmUgaWRzIGFzIGN1c3RvbSBkaXJlY3RpdmUgaWQ6ICcgKyBuYW1lKTtcclxuICAgIH1cclxufVxyXG4vKipcclxuICogQWRkcyBkaXJlY3RpdmVzIHRvIGEgVk5vZGUuXHJcbiAqL1xyXG5mdW5jdGlvbiB3aXRoRGlyZWN0aXZlcyh2bm9kZSwgZGlyZWN0aXZlcykge1xyXG4gICAgY29uc3QgaW50ZXJuYWxJbnN0YW5jZSA9IGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZTtcclxuICAgIGlmIChpbnRlcm5hbEluc3RhbmNlID09PSBudWxsKSB7XHJcbiAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHdhcm4oYHdpdGhEaXJlY3RpdmVzIGNhbiBvbmx5IGJlIHVzZWQgaW5zaWRlIHJlbmRlciBmdW5jdGlvbnMuYCk7XHJcbiAgICAgICAgcmV0dXJuIHZub2RlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaW5zdGFuY2UgPSBnZXRFeHBvc2VQcm94eShpbnRlcm5hbEluc3RhbmNlKSB8fFxyXG4gICAgICAgIGludGVybmFsSW5zdGFuY2UucHJveHk7XHJcbiAgICBjb25zdCBiaW5kaW5ncyA9IHZub2RlLmRpcnMgfHwgKHZub2RlLmRpcnMgPSBbXSk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRpcmVjdGl2ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgW2RpciwgdmFsdWUsIGFyZywgbW9kaWZpZXJzID0gRU1QVFlfT0JKXSA9IGRpcmVjdGl2ZXNbaV07XHJcbiAgICAgICAgaWYgKGlzRnVuY3Rpb24oZGlyKSkge1xyXG4gICAgICAgICAgICBkaXIgPSB7XHJcbiAgICAgICAgICAgICAgICBtb3VudGVkOiBkaXIsXHJcbiAgICAgICAgICAgICAgICB1cGRhdGVkOiBkaXJcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRpci5kZWVwKSB7XHJcbiAgICAgICAgICAgIHRyYXZlcnNlKHZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYmluZGluZ3MucHVzaCh7XHJcbiAgICAgICAgICAgIGRpcixcclxuICAgICAgICAgICAgaW5zdGFuY2UsXHJcbiAgICAgICAgICAgIHZhbHVlLFxyXG4gICAgICAgICAgICBvbGRWYWx1ZTogdm9pZCAwLFxyXG4gICAgICAgICAgICBhcmcsXHJcbiAgICAgICAgICAgIG1vZGlmaWVyc1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZub2RlO1xyXG59XHJcbmZ1bmN0aW9uIGludm9rZURpcmVjdGl2ZUhvb2sodm5vZGUsIHByZXZWTm9kZSwgaW5zdGFuY2UsIG5hbWUpIHtcclxuICAgIGNvbnN0IGJpbmRpbmdzID0gdm5vZGUuZGlycztcclxuICAgIGNvbnN0IG9sZEJpbmRpbmdzID0gcHJldlZOb2RlICYmIHByZXZWTm9kZS5kaXJzO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBiaW5kaW5ncy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGJpbmRpbmcgPSBiaW5kaW5nc1tpXTtcclxuICAgICAgICBpZiAob2xkQmluZGluZ3MpIHtcclxuICAgICAgICAgICAgYmluZGluZy5vbGRWYWx1ZSA9IG9sZEJpbmRpbmdzW2ldLnZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgaG9vayA9IGJpbmRpbmcuZGlyW25hbWVdO1xyXG4gICAgICAgIGlmIChob29rKSB7XHJcbiAgICAgICAgICAgIC8vIGRpc2FibGUgdHJhY2tpbmcgaW5zaWRlIGFsbCBsaWZlY3ljbGUgaG9va3NcclxuICAgICAgICAgICAgLy8gc2luY2UgdGhleSBjYW4gcG90ZW50aWFsbHkgYmUgY2FsbGVkIGluc2lkZSBlZmZlY3RzLlxyXG4gICAgICAgICAgICBwYXVzZVRyYWNraW5nKCk7XHJcbiAgICAgICAgICAgIGNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nKGhvb2ssIGluc3RhbmNlLCA4IC8qIEVycm9yQ29kZXMuRElSRUNUSVZFX0hPT0sgKi8sIFtcclxuICAgICAgICAgICAgICAgIHZub2RlLmVsLFxyXG4gICAgICAgICAgICAgICAgYmluZGluZyxcclxuICAgICAgICAgICAgICAgIHZub2RlLFxyXG4gICAgICAgICAgICAgICAgcHJldlZOb2RlXHJcbiAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgICByZXNldFRyYWNraW5nKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XG5cbmNvbnN0IENPTVBPTkVOVFMgPSAnY29tcG9uZW50cyc7XHJcbmNvbnN0IERJUkVDVElWRVMgPSAnZGlyZWN0aXZlcyc7XHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuZnVuY3Rpb24gcmVzb2x2ZUNvbXBvbmVudChuYW1lLCBtYXliZVNlbGZSZWZlcmVuY2UpIHtcclxuICAgIHJldHVybiByZXNvbHZlQXNzZXQoQ09NUE9ORU5UUywgbmFtZSwgdHJ1ZSwgbWF5YmVTZWxmUmVmZXJlbmNlKSB8fCBuYW1lO1xyXG59XHJcbmNvbnN0IE5VTExfRFlOQU1JQ19DT01QT05FTlQgPSBTeW1ib2woKTtcclxuLyoqXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5mdW5jdGlvbiByZXNvbHZlRHluYW1pY0NvbXBvbmVudChjb21wb25lbnQpIHtcclxuICAgIGlmIChpc1N0cmluZyhjb21wb25lbnQpKSB7XHJcbiAgICAgICAgcmV0dXJuIHJlc29sdmVBc3NldChDT01QT05FTlRTLCBjb21wb25lbnQsIGZhbHNlKSB8fCBjb21wb25lbnQ7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAvLyBpbnZhbGlkIHR5cGVzIHdpbGwgZmFsbHRocm91Z2ggdG8gY3JlYXRlVk5vZGUgYW5kIHJhaXNlIHdhcm5pbmdcclxuICAgICAgICByZXR1cm4gKGNvbXBvbmVudCB8fCBOVUxMX0RZTkFNSUNfQ09NUE9ORU5UKTtcclxuICAgIH1cclxufVxyXG4vKipcclxuICogQHByaXZhdGVcclxuICovXHJcbmZ1bmN0aW9uIHJlc29sdmVEaXJlY3RpdmUobmFtZSkge1xyXG4gICAgcmV0dXJuIHJlc29sdmVBc3NldChESVJFQ1RJVkVTLCBuYW1lKTtcclxufVxyXG4vLyBpbXBsZW1lbnRhdGlvblxyXG5mdW5jdGlvbiByZXNvbHZlQXNzZXQodHlwZSwgbmFtZSwgd2Fybk1pc3NpbmcgPSB0cnVlLCBtYXliZVNlbGZSZWZlcmVuY2UgPSBmYWxzZSkge1xyXG4gICAgY29uc3QgaW5zdGFuY2UgPSBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UgfHwgY3VycmVudEluc3RhbmNlO1xyXG4gICAgaWYgKGluc3RhbmNlKSB7XHJcbiAgICAgICAgY29uc3QgQ29tcG9uZW50ID0gaW5zdGFuY2UudHlwZTtcclxuICAgICAgICAvLyBleHBsaWNpdCBzZWxmIG5hbWUgaGFzIGhpZ2hlc3QgcHJpb3JpdHlcclxuICAgICAgICBpZiAodHlwZSA9PT0gQ09NUE9ORU5UUykge1xyXG4gICAgICAgICAgICBjb25zdCBzZWxmTmFtZSA9IGdldENvbXBvbmVudE5hbWUoQ29tcG9uZW50LCBmYWxzZSAvKiBkbyBub3QgaW5jbHVkZSBpbmZlcnJlZCBuYW1lIHRvIGF2b2lkIGJyZWFraW5nIGV4aXN0aW5nIGNvZGUgKi8pO1xyXG4gICAgICAgICAgICBpZiAoc2VsZk5hbWUgJiZcclxuICAgICAgICAgICAgICAgIChzZWxmTmFtZSA9PT0gbmFtZSB8fFxyXG4gICAgICAgICAgICAgICAgICAgIHNlbGZOYW1lID09PSBjYW1lbGl6ZShuYW1lKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgIHNlbGZOYW1lID09PSBjYXBpdGFsaXplKGNhbWVsaXplKG5hbWUpKSkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBDb21wb25lbnQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcmVzID0gXHJcbiAgICAgICAgLy8gbG9jYWwgcmVnaXN0cmF0aW9uXHJcbiAgICAgICAgLy8gY2hlY2sgaW5zdGFuY2VbdHlwZV0gZmlyc3Qgd2hpY2ggaXMgcmVzb2x2ZWQgZm9yIG9wdGlvbnMgQVBJXHJcbiAgICAgICAgcmVzb2x2ZShpbnN0YW5jZVt0eXBlXSB8fCBDb21wb25lbnRbdHlwZV0sIG5hbWUpIHx8XHJcbiAgICAgICAgICAgIC8vIGdsb2JhbCByZWdpc3RyYXRpb25cclxuICAgICAgICAgICAgcmVzb2x2ZShpbnN0YW5jZS5hcHBDb250ZXh0W3R5cGVdLCBuYW1lKTtcclxuICAgICAgICBpZiAoIXJlcyAmJiBtYXliZVNlbGZSZWZlcmVuY2UpIHtcclxuICAgICAgICAgICAgLy8gZmFsbGJhY2sgdG8gaW1wbGljaXQgc2VsZi1yZWZlcmVuY2VcclxuICAgICAgICAgICAgcmV0dXJuIENvbXBvbmVudDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiB3YXJuTWlzc2luZyAmJiAhcmVzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGV4dHJhID0gdHlwZSA9PT0gQ09NUE9ORU5UU1xyXG4gICAgICAgICAgICAgICAgPyBgXFxuSWYgdGhpcyBpcyBhIG5hdGl2ZSBjdXN0b20gZWxlbWVudCwgbWFrZSBzdXJlIHRvIGV4Y2x1ZGUgaXQgZnJvbSBgICtcclxuICAgICAgICAgICAgICAgICAgICBgY29tcG9uZW50IHJlc29sdXRpb24gdmlhIGNvbXBpbGVyT3B0aW9ucy5pc0N1c3RvbUVsZW1lbnQuYFxyXG4gICAgICAgICAgICAgICAgOiBgYDtcclxuICAgICAgICAgICAgd2FybihgRmFpbGVkIHRvIHJlc29sdmUgJHt0eXBlLnNsaWNlKDAsIC0xKX06ICR7bmFtZX0ke2V4dHJhfWApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgd2FybihgcmVzb2x2ZSR7Y2FwaXRhbGl6ZSh0eXBlLnNsaWNlKDAsIC0xKSl9IGAgK1xyXG4gICAgICAgICAgICBgY2FuIG9ubHkgYmUgdXNlZCBpbiByZW5kZXIoKSBvciBzZXR1cCgpLmApO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHJlc29sdmUocmVnaXN0cnksIG5hbWUpIHtcclxuICAgIHJldHVybiAocmVnaXN0cnkgJiZcclxuICAgICAgICAocmVnaXN0cnlbbmFtZV0gfHxcclxuICAgICAgICAgICAgcmVnaXN0cnlbY2FtZWxpemUobmFtZSldIHx8XHJcbiAgICAgICAgICAgIHJlZ2lzdHJ5W2NhcGl0YWxpemUoY2FtZWxpemUobmFtZSkpXSkpO1xyXG59XG5cbi8qKlxyXG4gKiBBY3R1YWwgaW1wbGVtZW50YXRpb25cclxuICovXHJcbmZ1bmN0aW9uIHJlbmRlckxpc3Qoc291cmNlLCByZW5kZXJJdGVtLCBjYWNoZSwgaW5kZXgpIHtcclxuICAgIGxldCByZXQ7XHJcbiAgICBjb25zdCBjYWNoZWQgPSAoY2FjaGUgJiYgY2FjaGVbaW5kZXhdKTtcclxuICAgIGlmIChpc0FycmF5KHNvdXJjZSkgfHwgaXNTdHJpbmcoc291cmNlKSkge1xyXG4gICAgICAgIHJldCA9IG5ldyBBcnJheShzb3VyY2UubGVuZ3RoKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMCwgbCA9IHNvdXJjZS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICAgICAgcmV0W2ldID0gcmVuZGVySXRlbShzb3VyY2VbaV0sIGksIHVuZGVmaW5lZCwgY2FjaGVkICYmIGNhY2hlZFtpXSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodHlwZW9mIHNvdXJjZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFOdW1iZXIuaXNJbnRlZ2VyKHNvdXJjZSkpIHtcclxuICAgICAgICAgICAgd2FybihgVGhlIHYtZm9yIHJhbmdlIGV4cGVjdCBhbiBpbnRlZ2VyIHZhbHVlIGJ1dCBnb3QgJHtzb3VyY2V9LmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXQgPSBuZXcgQXJyYXkoc291cmNlKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNvdXJjZTsgaSsrKSB7XHJcbiAgICAgICAgICAgIHJldFtpXSA9IHJlbmRlckl0ZW0oaSArIDEsIGksIHVuZGVmaW5lZCwgY2FjaGVkICYmIGNhY2hlZFtpXSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNPYmplY3Qoc291cmNlKSkge1xyXG4gICAgICAgIGlmIChzb3VyY2VbU3ltYm9sLml0ZXJhdG9yXSkge1xyXG4gICAgICAgICAgICByZXQgPSBBcnJheS5mcm9tKHNvdXJjZSwgKGl0ZW0sIGkpID0+IHJlbmRlckl0ZW0oaXRlbSwgaSwgdW5kZWZpbmVkLCBjYWNoZWQgJiYgY2FjaGVkW2ldKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTtcclxuICAgICAgICAgICAgcmV0ID0gbmV3IEFycmF5KGtleXMubGVuZ3RoKTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBrZXlzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qga2V5ID0ga2V5c1tpXTtcclxuICAgICAgICAgICAgICAgIHJldFtpXSA9IHJlbmRlckl0ZW0oc291cmNlW2tleV0sIGtleSwgaSwgY2FjaGVkICYmIGNhY2hlZFtpXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICByZXQgPSBbXTtcclxuICAgIH1cclxuICAgIGlmIChjYWNoZSkge1xyXG4gICAgICAgIGNhY2hlW2luZGV4XSA9IHJldDtcclxuICAgIH1cclxuICAgIHJldHVybiByZXQ7XHJcbn1cblxuLyoqXHJcbiAqIENvbXBpbGVyIHJ1bnRpbWUgaGVscGVyIGZvciBjcmVhdGluZyBkeW5hbWljIHNsb3RzIG9iamVjdFxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuZnVuY3Rpb24gY3JlYXRlU2xvdHMoc2xvdHMsIGR5bmFtaWNTbG90cykge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkeW5hbWljU2xvdHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBzbG90ID0gZHluYW1pY1Nsb3RzW2ldO1xyXG4gICAgICAgIC8vIGFycmF5IG9mIGR5bmFtaWMgc2xvdCBnZW5lcmF0ZWQgYnkgPHRlbXBsYXRlIHYtZm9yPVwiLi4uXCIgI1suLi5dPlxyXG4gICAgICAgIGlmIChpc0FycmF5KHNsb3QpKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgc2xvdC5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgICAgc2xvdHNbc2xvdFtqXS5uYW1lXSA9IHNsb3Rbal0uZm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoc2xvdCkge1xyXG4gICAgICAgICAgICAvLyBjb25kaXRpb25hbCBzaW5nbGUgc2xvdCBnZW5lcmF0ZWQgYnkgPHRlbXBsYXRlIHYtaWY9XCIuLi5cIiAjZm9vPlxyXG4gICAgICAgICAgICBzbG90c1tzbG90Lm5hbWVdID0gc2xvdC5rZXlcclxuICAgICAgICAgICAgICAgID8gKC4uLmFyZ3MpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBzbG90LmZuKC4uLmFyZ3MpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5rZXkgPSBzbG90LmtleTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgOiBzbG90LmZuO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBzbG90cztcclxufVxuXG4vKipcclxuICogQ29tcGlsZXIgcnVudGltZSBoZWxwZXIgZm9yIHJlbmRlcmluZyBgPHNsb3QvPmBcclxuICogQHByaXZhdGVcclxuICovXHJcbmZ1bmN0aW9uIHJlbmRlclNsb3Qoc2xvdHMsIG5hbWUsIHByb3BzID0ge30sIFxyXG4vLyB0aGlzIGlzIG5vdCBhIHVzZXItZmFjaW5nIGZ1bmN0aW9uLCBzbyB0aGUgZmFsbGJhY2sgaXMgYWx3YXlzIGdlbmVyYXRlZCBieVxyXG4vLyB0aGUgY29tcGlsZXIgYW5kIGd1YXJhbnRlZWQgdG8gYmUgYSBmdW5jdGlvbiByZXR1cm5pbmcgYW4gYXJyYXlcclxuZmFsbGJhY2ssIG5vU2xvdHRlZCkge1xyXG4gICAgaWYgKGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZS5pc0NFIHx8XHJcbiAgICAgICAgKGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZS5wYXJlbnQgJiZcclxuICAgICAgICAgICAgaXNBc3luY1dyYXBwZXIoY3VycmVudFJlbmRlcmluZ0luc3RhbmNlLnBhcmVudCkgJiZcclxuICAgICAgICAgICAgY3VycmVudFJlbmRlcmluZ0luc3RhbmNlLnBhcmVudC5pc0NFKSkge1xyXG4gICAgICAgIHJldHVybiBjcmVhdGVWTm9kZSgnc2xvdCcsIG5hbWUgPT09ICdkZWZhdWx0JyA/IG51bGwgOiB7IG5hbWUgfSwgZmFsbGJhY2sgJiYgZmFsbGJhY2soKSk7XHJcbiAgICB9XHJcbiAgICBsZXQgc2xvdCA9IHNsb3RzW25hbWVdO1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBzbG90ICYmIHNsb3QubGVuZ3RoID4gMSkge1xyXG4gICAgICAgIHdhcm4oYFNTUi1vcHRpbWl6ZWQgc2xvdCBmdW5jdGlvbiBkZXRlY3RlZCBpbiBhIG5vbi1TU1Itb3B0aW1pemVkIHJlbmRlciBgICtcclxuICAgICAgICAgICAgYGZ1bmN0aW9uLiBZb3UgbmVlZCB0byBtYXJrIHRoaXMgY29tcG9uZW50IHdpdGggJGR5bmFtaWMtc2xvdHMgaW4gdGhlIGAgK1xyXG4gICAgICAgICAgICBgcGFyZW50IHRlbXBsYXRlLmApO1xyXG4gICAgICAgIHNsb3QgPSAoKSA9PiBbXTtcclxuICAgIH1cclxuICAgIC8vIGEgY29tcGlsZWQgc2xvdCBkaXNhYmxlcyBibG9jayB0cmFja2luZyBieSBkZWZhdWx0IHRvIGF2b2lkIG1hbnVhbFxyXG4gICAgLy8gaW52b2NhdGlvbiBpbnRlcmZlcmluZyB3aXRoIHRlbXBsYXRlLWJhc2VkIGJsb2NrIHRyYWNraW5nLCBidXQgaW5cclxuICAgIC8vIGByZW5kZXJTbG90YCB3ZSBjYW4gYmUgc3VyZSB0aGF0IGl0J3MgdGVtcGxhdGUtYmFzZWQgc28gd2UgY2FuIGZvcmNlXHJcbiAgICAvLyBlbmFibGUgaXQuXHJcbiAgICBpZiAoc2xvdCAmJiBzbG90Ll9jKSB7XHJcbiAgICAgICAgc2xvdC5fZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgb3BlbkJsb2NrKCk7XHJcbiAgICBjb25zdCB2YWxpZFNsb3RDb250ZW50ID0gc2xvdCAmJiBlbnN1cmVWYWxpZFZOb2RlKHNsb3QocHJvcHMpKTtcclxuICAgIGNvbnN0IHJlbmRlcmVkID0gY3JlYXRlQmxvY2soRnJhZ21lbnQsIHtcclxuICAgICAgICBrZXk6IHByb3BzLmtleSB8fFxyXG4gICAgICAgICAgICAvLyBzbG90IGNvbnRlbnQgYXJyYXkgb2YgYSBkeW5hbWljIGNvbmRpdGlvbmFsIHNsb3QgbWF5IGhhdmUgYSBicmFuY2hcclxuICAgICAgICAgICAgLy8ga2V5IGF0dGFjaGVkIGluIHRoZSBgY3JlYXRlU2xvdHNgIGhlbHBlciwgcmVzcGVjdCB0aGF0XHJcbiAgICAgICAgICAgICh2YWxpZFNsb3RDb250ZW50ICYmIHZhbGlkU2xvdENvbnRlbnQua2V5KSB8fFxyXG4gICAgICAgICAgICBgXyR7bmFtZX1gXHJcbiAgICB9LCB2YWxpZFNsb3RDb250ZW50IHx8IChmYWxsYmFjayA/IGZhbGxiYWNrKCkgOiBbXSksIHZhbGlkU2xvdENvbnRlbnQgJiYgc2xvdHMuXyA9PT0gMSAvKiBTbG90RmxhZ3MuU1RBQkxFICovXHJcbiAgICAgICAgPyA2NCAvKiBQYXRjaEZsYWdzLlNUQUJMRV9GUkFHTUVOVCAqL1xyXG4gICAgICAgIDogLTIgLyogUGF0Y2hGbGFncy5CQUlMICovKTtcclxuICAgIGlmICghbm9TbG90dGVkICYmIHJlbmRlcmVkLnNjb3BlSWQpIHtcclxuICAgICAgICByZW5kZXJlZC5zbG90U2NvcGVJZHMgPSBbcmVuZGVyZWQuc2NvcGVJZCArICctcyddO1xyXG4gICAgfVxyXG4gICAgaWYgKHNsb3QgJiYgc2xvdC5fYykge1xyXG4gICAgICAgIHNsb3QuX2QgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlbmRlcmVkO1xyXG59XHJcbmZ1bmN0aW9uIGVuc3VyZVZhbGlkVk5vZGUodm5vZGVzKSB7XHJcbiAgICByZXR1cm4gdm5vZGVzLnNvbWUoY2hpbGQgPT4ge1xyXG4gICAgICAgIGlmICghaXNWTm9kZShjaGlsZCkpXHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIGlmIChjaGlsZC50eXBlID09PSBDb21tZW50KVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09IEZyYWdtZW50ICYmXHJcbiAgICAgICAgICAgICFlbnN1cmVWYWxpZFZOb2RlKGNoaWxkLmNoaWxkcmVuKSlcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSlcclxuICAgICAgICA/IHZub2Rlc1xyXG4gICAgICAgIDogbnVsbDtcclxufVxuXG4vKipcclxuICogRm9yIHByZWZpeGluZyBrZXlzIGluIHYtb249XCJvYmpcIiB3aXRoIFwib25cIlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuZnVuY3Rpb24gdG9IYW5kbGVycyhvYmosIHByZXNlcnZlQ2FzZUlmTmVjZXNzYXJ5KSB7XHJcbiAgICBjb25zdCByZXQgPSB7fTtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWlzT2JqZWN0KG9iaikpIHtcclxuICAgICAgICB3YXJuKGB2LW9uIHdpdGggbm8gYXJndW1lbnQgZXhwZWN0cyBhbiBvYmplY3QgdmFsdWUuYCk7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuICAgIGZvciAoY29uc3Qga2V5IGluIG9iaikge1xyXG4gICAgICAgIHJldFtwcmVzZXJ2ZUNhc2VJZk5lY2Vzc2FyeSAmJiAvW0EtWl0vLnRlc3Qoa2V5KVxyXG4gICAgICAgICAgICA/IGBvbjoke2tleX1gXHJcbiAgICAgICAgICAgIDogdG9IYW5kbGVyS2V5KGtleSldID0gb2JqW2tleV07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmV0O1xyXG59XG5cbi8qKlxyXG4gKiAjMjQzNyBJbiBWdWUgMywgZnVuY3Rpb25hbCBjb21wb25lbnRzIGRvIG5vdCBoYXZlIGEgcHVibGljIGluc3RhbmNlIHByb3h5IGJ1dFxyXG4gKiB0aGV5IGV4aXN0IGluIHRoZSBpbnRlcm5hbCBwYXJlbnQgY2hhaW4uIEZvciBjb2RlIHRoYXQgcmVsaWVzIG9uIHRyYXZlcnNpbmdcclxuICogcHVibGljICRwYXJlbnQgY2hhaW5zLCBza2lwIGZ1bmN0aW9uYWwgb25lcyBhbmQgZ28gdG8gdGhlIHBhcmVudCBpbnN0ZWFkLlxyXG4gKi9cclxuY29uc3QgZ2V0UHVibGljSW5zdGFuY2UgPSAoaSkgPT4ge1xyXG4gICAgaWYgKCFpKVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgaWYgKGlzU3RhdGVmdWxDb21wb25lbnQoaSkpXHJcbiAgICAgICAgcmV0dXJuIGdldEV4cG9zZVByb3h5KGkpIHx8IGkucHJveHk7XHJcbiAgICByZXR1cm4gZ2V0UHVibGljSW5zdGFuY2UoaS5wYXJlbnQpO1xyXG59O1xyXG5jb25zdCBwdWJsaWNQcm9wZXJ0aWVzTWFwID0gXHJcbi8vIE1vdmUgUFVSRSBtYXJrZXIgdG8gbmV3IGxpbmUgdG8gd29ya2Fyb3VuZCBjb21waWxlciBkaXNjYXJkaW5nIGl0XHJcbi8vIGR1ZSB0byB0eXBlIGFubm90YXRpb25cclxuLyojX19QVVJFX18qLyBleHRlbmQoT2JqZWN0LmNyZWF0ZShudWxsKSwge1xyXG4gICAgJDogaSA9PiBpLFxyXG4gICAgJGVsOiBpID0+IGkudm5vZGUuZWwsXHJcbiAgICAkZGF0YTogaSA9PiBpLmRhdGEsXHJcbiAgICAkcHJvcHM6IGkgPT4gKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IHNoYWxsb3dSZWFkb25seShpLnByb3BzKSA6IGkucHJvcHMpLFxyXG4gICAgJGF0dHJzOiBpID0+ICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBzaGFsbG93UmVhZG9ubHkoaS5hdHRycykgOiBpLmF0dHJzKSxcclxuICAgICRzbG90czogaSA9PiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gc2hhbGxvd1JlYWRvbmx5KGkuc2xvdHMpIDogaS5zbG90cyksXHJcbiAgICAkcmVmczogaSA9PiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gc2hhbGxvd1JlYWRvbmx5KGkucmVmcykgOiBpLnJlZnMpLFxyXG4gICAgJHBhcmVudDogaSA9PiBnZXRQdWJsaWNJbnN0YW5jZShpLnBhcmVudCksXHJcbiAgICAkcm9vdDogaSA9PiBnZXRQdWJsaWNJbnN0YW5jZShpLnJvb3QpLFxyXG4gICAgJGVtaXQ6IGkgPT4gaS5lbWl0LFxyXG4gICAgJG9wdGlvbnM6IGkgPT4gKF9fVlVFX09QVElPTlNfQVBJX18gPyByZXNvbHZlTWVyZ2VkT3B0aW9ucyhpKSA6IGkudHlwZSksXHJcbiAgICAkZm9yY2VVcGRhdGU6IGkgPT4gaS5mIHx8IChpLmYgPSAoKSA9PiBxdWV1ZUpvYihpLnVwZGF0ZSkpLFxyXG4gICAgJG5leHRUaWNrOiBpID0+IGkubiB8fCAoaS5uID0gbmV4dFRpY2suYmluZChpLnByb3h5KSksXHJcbiAgICAkd2F0Y2g6IGkgPT4gKF9fVlVFX09QVElPTlNfQVBJX18gPyBpbnN0YW5jZVdhdGNoLmJpbmQoaSkgOiBOT09QKVxyXG59KTtcclxuY29uc3QgaXNSZXNlcnZlZFByZWZpeCA9IChrZXkpID0+IGtleSA9PT0gJ18nIHx8IGtleSA9PT0gJyQnO1xyXG5jb25zdCBQdWJsaWNJbnN0YW5jZVByb3h5SGFuZGxlcnMgPSB7XHJcbiAgICBnZXQoeyBfOiBpbnN0YW5jZSB9LCBrZXkpIHtcclxuICAgICAgICBjb25zdCB7IGN0eCwgc2V0dXBTdGF0ZSwgZGF0YSwgcHJvcHMsIGFjY2Vzc0NhY2hlLCB0eXBlLCBhcHBDb250ZXh0IH0gPSBpbnN0YW5jZTtcclxuICAgICAgICAvLyBmb3IgaW50ZXJuYWwgZm9ybWF0dGVycyB0byBrbm93IHRoYXQgdGhpcyBpcyBhIFZ1ZSBpbnN0YW5jZVxyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYga2V5ID09PSAnX19pc1Z1ZScpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHByaW9yaXRpemUgPHNjcmlwdCBzZXR1cD4gYmluZGluZ3MgZHVyaW5nIGRldi5cclxuICAgICAgICAvLyB0aGlzIGFsbG93cyBldmVuIHByb3BlcnRpZXMgdGhhdCBzdGFydCB3aXRoIF8gb3IgJCB0byBiZSB1c2VkIC0gc28gdGhhdFxyXG4gICAgICAgIC8vIGl0IGFsaWducyB3aXRoIHRoZSBwcm9kdWN0aW9uIGJlaGF2aW9yIHdoZXJlIHRoZSByZW5kZXIgZm4gaXMgaW5saW5lZCBhbmRcclxuICAgICAgICAvLyBpbmRlZWQgaGFzIGFjY2VzcyB0byBhbGwgZGVjbGFyZWQgdmFyaWFibGVzLlxyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgc2V0dXBTdGF0ZSAhPT0gRU1QVFlfT0JKICYmXHJcbiAgICAgICAgICAgIHNldHVwU3RhdGUuX19pc1NjcmlwdFNldHVwICYmXHJcbiAgICAgICAgICAgIGhhc093bihzZXR1cFN0YXRlLCBrZXkpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBzZXR1cFN0YXRlW2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGRhdGEgLyBwcm9wcyAvIGN0eFxyXG4gICAgICAgIC8vIFRoaXMgZ2V0dGVyIGdldHMgY2FsbGVkIGZvciBldmVyeSBwcm9wZXJ0eSBhY2Nlc3Mgb24gdGhlIHJlbmRlciBjb250ZXh0XHJcbiAgICAgICAgLy8gZHVyaW5nIHJlbmRlciBhbmQgaXMgYSBtYWpvciBob3RzcG90LiBUaGUgbW9zdCBleHBlbnNpdmUgcGFydCBvZiB0aGlzXHJcbiAgICAgICAgLy8gaXMgdGhlIG11bHRpcGxlIGhhc093bigpIGNhbGxzLiBJdCdzIG11Y2ggZmFzdGVyIHRvIGRvIGEgc2ltcGxlIHByb3BlcnR5XHJcbiAgICAgICAgLy8gYWNjZXNzIG9uIGEgcGxhaW4gb2JqZWN0LCBzbyB3ZSB1c2UgYW4gYWNjZXNzQ2FjaGUgb2JqZWN0ICh3aXRoIG51bGxcclxuICAgICAgICAvLyBwcm90b3R5cGUpIHRvIG1lbW9pemUgd2hhdCBhY2Nlc3MgdHlwZSBhIGtleSBjb3JyZXNwb25kcyB0by5cclxuICAgICAgICBsZXQgbm9ybWFsaXplZFByb3BzO1xyXG4gICAgICAgIGlmIChrZXlbMF0gIT09ICckJykge1xyXG4gICAgICAgICAgICBjb25zdCBuID0gYWNjZXNzQ2FjaGVba2V5XTtcclxuICAgICAgICAgICAgaWYgKG4gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgc3dpdGNoIChuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxIC8qIEFjY2Vzc1R5cGVzLlNFVFVQICovOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2V0dXBTdGF0ZVtrZXldO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMiAvKiBBY2Nlc3NUeXBlcy5EQVRBICovOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YVtrZXldO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNCAvKiBBY2Nlc3NUeXBlcy5DT05URVhUICovOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3R4W2tleV07XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzIC8qIEFjY2Vzc1R5cGVzLlBST1BTICovOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHNba2V5XTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBkZWZhdWx0OiBqdXN0IGZhbGx0aHJvdWdoXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoc2V0dXBTdGF0ZSAhPT0gRU1QVFlfT0JKICYmIGhhc093bihzZXR1cFN0YXRlLCBrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICBhY2Nlc3NDYWNoZVtrZXldID0gMSAvKiBBY2Nlc3NUeXBlcy5TRVRVUCAqLztcclxuICAgICAgICAgICAgICAgIHJldHVybiBzZXR1cFN0YXRlW2tleV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoZGF0YSAhPT0gRU1QVFlfT0JKICYmIGhhc093bihkYXRhLCBrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICBhY2Nlc3NDYWNoZVtrZXldID0gMiAvKiBBY2Nlc3NUeXBlcy5EQVRBICovO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFba2V5XTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChcclxuICAgICAgICAgICAgLy8gb25seSBjYWNoZSBvdGhlciBwcm9wZXJ0aWVzIHdoZW4gaW5zdGFuY2UgaGFzIGRlY2xhcmVkICh0aHVzIHN0YWJsZSlcclxuICAgICAgICAgICAgLy8gcHJvcHNcclxuICAgICAgICAgICAgKG5vcm1hbGl6ZWRQcm9wcyA9IGluc3RhbmNlLnByb3BzT3B0aW9uc1swXSkgJiZcclxuICAgICAgICAgICAgICAgIGhhc093bihub3JtYWxpemVkUHJvcHMsIGtleSkpIHtcclxuICAgICAgICAgICAgICAgIGFjY2Vzc0NhY2hlW2tleV0gPSAzIC8qIEFjY2Vzc1R5cGVzLlBST1BTICovO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzW2tleV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoY3R4ICE9PSBFTVBUWV9PQkogJiYgaGFzT3duKGN0eCwga2V5KSkge1xyXG4gICAgICAgICAgICAgICAgYWNjZXNzQ2FjaGVba2V5XSA9IDQgLyogQWNjZXNzVHlwZXMuQ09OVEVYVCAqLztcclxuICAgICAgICAgICAgICAgIHJldHVybiBjdHhba2V5XTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICghX19WVUVfT1BUSU9OU19BUElfXyB8fCBzaG91bGRDYWNoZUFjY2Vzcykge1xyXG4gICAgICAgICAgICAgICAgYWNjZXNzQ2FjaGVba2V5XSA9IDAgLyogQWNjZXNzVHlwZXMuT1RIRVIgKi87XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcHVibGljR2V0dGVyID0gcHVibGljUHJvcGVydGllc01hcFtrZXldO1xyXG4gICAgICAgIGxldCBjc3NNb2R1bGUsIGdsb2JhbFByb3BlcnRpZXM7XHJcbiAgICAgICAgLy8gcHVibGljICR4eHggcHJvcGVydGllc1xyXG4gICAgICAgIGlmIChwdWJsaWNHZXR0ZXIpIHtcclxuICAgICAgICAgICAgaWYgKGtleSA9PT0gJyRhdHRycycpIHtcclxuICAgICAgICAgICAgICAgIHRyYWNrKGluc3RhbmNlLCBcImdldFwiIC8qIFRyYWNrT3BUeXBlcy5HRVQgKi8sIGtleSk7XHJcbiAgICAgICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgbWFya0F0dHJzQWNjZXNzZWQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gcHVibGljR2V0dGVyKGluc3RhbmNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoXHJcbiAgICAgICAgLy8gY3NzIG1vZHVsZSAoaW5qZWN0ZWQgYnkgdnVlLWxvYWRlcilcclxuICAgICAgICAoY3NzTW9kdWxlID0gdHlwZS5fX2Nzc01vZHVsZXMpICYmXHJcbiAgICAgICAgICAgIChjc3NNb2R1bGUgPSBjc3NNb2R1bGVba2V5XSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGNzc01vZHVsZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoY3R4ICE9PSBFTVBUWV9PQkogJiYgaGFzT3duKGN0eCwga2V5KSkge1xyXG4gICAgICAgICAgICAvLyB1c2VyIG1heSBzZXQgY3VzdG9tIHByb3BlcnRpZXMgdG8gYHRoaXNgIHRoYXQgc3RhcnQgd2l0aCBgJGBcclxuICAgICAgICAgICAgYWNjZXNzQ2FjaGVba2V5XSA9IDQgLyogQWNjZXNzVHlwZXMuQ09OVEVYVCAqLztcclxuICAgICAgICAgICAgcmV0dXJuIGN0eFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChcclxuICAgICAgICAvLyBnbG9iYWwgcHJvcGVydGllc1xyXG4gICAgICAgICgoZ2xvYmFsUHJvcGVydGllcyA9IGFwcENvbnRleHQuY29uZmlnLmdsb2JhbFByb3BlcnRpZXMpLFxyXG4gICAgICAgICAgICBoYXNPd24oZ2xvYmFsUHJvcGVydGllcywga2V5KSkpIHtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGdsb2JhbFByb3BlcnRpZXNba2V5XTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgY3VycmVudFJlbmRlcmluZ0luc3RhbmNlICYmXHJcbiAgICAgICAgICAgICghaXNTdHJpbmcoa2V5KSB8fFxyXG4gICAgICAgICAgICAgICAgLy8gIzEwOTEgYXZvaWQgaW50ZXJuYWwgaXNSZWYvaXNWTm9kZSBjaGVja3Mgb24gY29tcG9uZW50IGluc3RhbmNlIGxlYWRpbmdcclxuICAgICAgICAgICAgICAgIC8vIHRvIGluZmluaXRlIHdhcm5pbmcgbG9vcFxyXG4gICAgICAgICAgICAgICAga2V5LmluZGV4T2YoJ19fdicpICE9PSAwKSkge1xyXG4gICAgICAgICAgICBpZiAoZGF0YSAhPT0gRU1QVFlfT0JKICYmIGlzUmVzZXJ2ZWRQcmVmaXgoa2V5WzBdKSAmJiBoYXNPd24oZGF0YSwga2V5KSkge1xyXG4gICAgICAgICAgICAgICAgd2FybihgUHJvcGVydHkgJHtKU09OLnN0cmluZ2lmeShrZXkpfSBtdXN0IGJlIGFjY2Vzc2VkIHZpYSAkZGF0YSBiZWNhdXNlIGl0IHN0YXJ0cyB3aXRoIGEgcmVzZXJ2ZWQgYCArXHJcbiAgICAgICAgICAgICAgICAgICAgYGNoYXJhY3RlciAoXCIkXCIgb3IgXCJfXCIpIGFuZCBpcyBub3QgcHJveGllZCBvbiB0aGUgcmVuZGVyIGNvbnRleHQuYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoaW5zdGFuY2UgPT09IGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZSkge1xyXG4gICAgICAgICAgICAgICAgd2FybihgUHJvcGVydHkgJHtKU09OLnN0cmluZ2lmeShrZXkpfSB3YXMgYWNjZXNzZWQgZHVyaW5nIHJlbmRlciBgICtcclxuICAgICAgICAgICAgICAgICAgICBgYnV0IGlzIG5vdCBkZWZpbmVkIG9uIGluc3RhbmNlLmApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIHNldCh7IF86IGluc3RhbmNlIH0sIGtleSwgdmFsdWUpIHtcclxuICAgICAgICBjb25zdCB7IGRhdGEsIHNldHVwU3RhdGUsIGN0eCB9ID0gaW5zdGFuY2U7XHJcbiAgICAgICAgaWYgKHNldHVwU3RhdGUgIT09IEVNUFRZX09CSiAmJiBoYXNPd24oc2V0dXBTdGF0ZSwga2V5KSkge1xyXG4gICAgICAgICAgICBzZXR1cFN0YXRlW2tleV0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGRhdGEgIT09IEVNUFRZX09CSiAmJiBoYXNPd24oZGF0YSwga2V5KSkge1xyXG4gICAgICAgICAgICBkYXRhW2tleV0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGhhc093bihpbnN0YW5jZS5wcm9wcywga2V5KSkge1xyXG4gICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgICAgIHdhcm4oYEF0dGVtcHRpbmcgdG8gbXV0YXRlIHByb3AgXCIke2tleX1cIi4gUHJvcHMgYXJlIHJlYWRvbmx5LmAsIGluc3RhbmNlKTtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoa2V5WzBdID09PSAnJCcgJiYga2V5LnNsaWNlKDEpIGluIGluc3RhbmNlKSB7XHJcbiAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICAgICAgd2FybihgQXR0ZW1wdGluZyB0byBtdXRhdGUgcHVibGljIHByb3BlcnR5IFwiJHtrZXl9XCIuIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgIGBQcm9wZXJ0aWVzIHN0YXJ0aW5nIHdpdGggJCBhcmUgcmVzZXJ2ZWQgYW5kIHJlYWRvbmx5LmAsIGluc3RhbmNlKTtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBrZXkgaW4gaW5zdGFuY2UuYXBwQ29udGV4dC5jb25maWcuZ2xvYmFsUHJvcGVydGllcykge1xyXG4gICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGN0eCwga2V5LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY3R4W2tleV0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0sXHJcbiAgICBoYXMoeyBfOiB7IGRhdGEsIHNldHVwU3RhdGUsIGFjY2Vzc0NhY2hlLCBjdHgsIGFwcENvbnRleHQsIHByb3BzT3B0aW9ucyB9IH0sIGtleSkge1xyXG4gICAgICAgIGxldCBub3JtYWxpemVkUHJvcHM7XHJcbiAgICAgICAgcmV0dXJuICghIWFjY2Vzc0NhY2hlW2tleV0gfHxcclxuICAgICAgICAgICAgKGRhdGEgIT09IEVNUFRZX09CSiAmJiBoYXNPd24oZGF0YSwga2V5KSkgfHxcclxuICAgICAgICAgICAgKHNldHVwU3RhdGUgIT09IEVNUFRZX09CSiAmJiBoYXNPd24oc2V0dXBTdGF0ZSwga2V5KSkgfHxcclxuICAgICAgICAgICAgKChub3JtYWxpemVkUHJvcHMgPSBwcm9wc09wdGlvbnNbMF0pICYmIGhhc093bihub3JtYWxpemVkUHJvcHMsIGtleSkpIHx8XHJcbiAgICAgICAgICAgIGhhc093bihjdHgsIGtleSkgfHxcclxuICAgICAgICAgICAgaGFzT3duKHB1YmxpY1Byb3BlcnRpZXNNYXAsIGtleSkgfHxcclxuICAgICAgICAgICAgaGFzT3duKGFwcENvbnRleHQuY29uZmlnLmdsb2JhbFByb3BlcnRpZXMsIGtleSkpO1xyXG4gICAgfSxcclxuICAgIGRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBkZXNjcmlwdG9yKSB7XHJcbiAgICAgICAgaWYgKGRlc2NyaXB0b3IuZ2V0ICE9IG51bGwpIHtcclxuICAgICAgICAgICAgLy8gaW52YWxpZGF0ZSBrZXkgY2FjaGUgb2YgYSBnZXR0ZXIgYmFzZWQgcHJvcGVydHkgIzU0MTdcclxuICAgICAgICAgICAgdGFyZ2V0Ll8uYWNjZXNzQ2FjaGVba2V5XSA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGhhc093bihkZXNjcmlwdG9yLCAndmFsdWUnKSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldCh0YXJnZXQsIGtleSwgZGVzY3JpcHRvci52YWx1ZSwgbnVsbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBSZWZsZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBkZXNjcmlwdG9yKTtcclxuICAgIH1cclxufTtcclxuaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhZmFsc2UpIHtcclxuICAgIFB1YmxpY0luc3RhbmNlUHJveHlIYW5kbGVycy5vd25LZXlzID0gKHRhcmdldCkgPT4ge1xyXG4gICAgICAgIHdhcm4oYEF2b2lkIGFwcCBsb2dpYyB0aGF0IHJlbGllcyBvbiBlbnVtZXJhdGluZyBrZXlzIG9uIGEgY29tcG9uZW50IGluc3RhbmNlLiBgICtcclxuICAgICAgICAgICAgYFRoZSBrZXlzIHdpbGwgYmUgZW1wdHkgaW4gcHJvZHVjdGlvbiBtb2RlIHRvIGF2b2lkIHBlcmZvcm1hbmNlIG92ZXJoZWFkLmApO1xyXG4gICAgICAgIHJldHVybiBSZWZsZWN0Lm93bktleXModGFyZ2V0KTtcclxuICAgIH07XHJcbn1cclxuY29uc3QgUnVudGltZUNvbXBpbGVkUHVibGljSW5zdGFuY2VQcm94eUhhbmRsZXJzID0gLyojX19QVVJFX18qLyBleHRlbmQoe30sIFB1YmxpY0luc3RhbmNlUHJveHlIYW5kbGVycywge1xyXG4gICAgZ2V0KHRhcmdldCwga2V5KSB7XHJcbiAgICAgICAgLy8gZmFzdCBwYXRoIGZvciB1bnNjb3BhYmxlcyB3aGVuIHVzaW5nIGB3aXRoYCBibG9ja1xyXG4gICAgICAgIGlmIChrZXkgPT09IFN5bWJvbC51bnNjb3BhYmxlcykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBQdWJsaWNJbnN0YW5jZVByb3h5SGFuZGxlcnMuZ2V0KHRhcmdldCwga2V5LCB0YXJnZXQpO1xyXG4gICAgfSxcclxuICAgIGhhcyhfLCBrZXkpIHtcclxuICAgICAgICBjb25zdCBoYXMgPSBrZXlbMF0gIT09ICdfJyAmJiAhaXNHbG9iYWxseVdoaXRlbGlzdGVkKGtleSk7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhaGFzICYmIFB1YmxpY0luc3RhbmNlUHJveHlIYW5kbGVycy5oYXMoXywga2V5KSkge1xyXG4gICAgICAgICAgICB3YXJuKGBQcm9wZXJ0eSAke0pTT04uc3RyaW5naWZ5KGtleSl9IHNob3VsZCBub3Qgc3RhcnQgd2l0aCBfIHdoaWNoIGlzIGEgcmVzZXJ2ZWQgcHJlZml4IGZvciBWdWUgaW50ZXJuYWxzLmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaGFzO1xyXG4gICAgfVxyXG59KTtcclxuLy8gZGV2IG9ubHlcclxuLy8gSW4gZGV2IG1vZGUsIHRoZSBwcm94eSB0YXJnZXQgZXhwb3NlcyB0aGUgc2FtZSBwcm9wZXJ0aWVzIGFzIHNlZW4gb24gYHRoaXNgXHJcbi8vIGZvciBlYXNpZXIgY29uc29sZSBpbnNwZWN0aW9uLiBJbiBwcm9kIG1vZGUgaXQgd2lsbCBiZSBhbiBlbXB0eSBvYmplY3Qgc29cclxuLy8gdGhlc2UgcHJvcGVydGllcyBkZWZpbml0aW9ucyBjYW4gYmUgc2tpcHBlZC5cclxuZnVuY3Rpb24gY3JlYXRlRGV2UmVuZGVyQ29udGV4dChpbnN0YW5jZSkge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0ge307XHJcbiAgICAvLyBleHBvc2UgaW50ZXJuYWwgaW5zdGFuY2UgZm9yIHByb3h5IGhhbmRsZXJzXHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBgX2AsIHtcclxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXHJcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXHJcbiAgICAgICAgZ2V0OiAoKSA9PiBpbnN0YW5jZVxyXG4gICAgfSk7XHJcbiAgICAvLyBleHBvc2UgcHVibGljIHByb3BlcnRpZXNcclxuICAgIE9iamVjdC5rZXlzKHB1YmxpY1Byb3BlcnRpZXNNYXApLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHtcclxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgZ2V0OiAoKSA9PiBwdWJsaWNQcm9wZXJ0aWVzTWFwW2tleV0oaW5zdGFuY2UpLFxyXG4gICAgICAgICAgICAvLyBpbnRlcmNlcHRlZCBieSB0aGUgcHJveHkgc28gbm8gbmVlZCBmb3IgaW1wbGVtZW50YXRpb24sXHJcbiAgICAgICAgICAgIC8vIGJ1dCBuZWVkZWQgdG8gcHJldmVudCBzZXQgZXJyb3JzXHJcbiAgICAgICAgICAgIHNldDogTk9PUFxyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdGFyZ2V0O1xyXG59XHJcbi8vIGRldiBvbmx5XHJcbmZ1bmN0aW9uIGV4cG9zZVByb3BzT25SZW5kZXJDb250ZXh0KGluc3RhbmNlKSB7XHJcbiAgICBjb25zdCB7IGN0eCwgcHJvcHNPcHRpb25zOiBbcHJvcHNPcHRpb25zXSB9ID0gaW5zdGFuY2U7XHJcbiAgICBpZiAocHJvcHNPcHRpb25zKSB7XHJcbiAgICAgICAgT2JqZWN0LmtleXMocHJvcHNPcHRpb25zKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjdHgsIGtleSwge1xyXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGdldDogKCkgPT4gaW5zdGFuY2UucHJvcHNba2V5XSxcclxuICAgICAgICAgICAgICAgIHNldDogTk9PUFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4vLyBkZXYgb25seVxyXG5mdW5jdGlvbiBleHBvc2VTZXR1cFN0YXRlT25SZW5kZXJDb250ZXh0KGluc3RhbmNlKSB7XHJcbiAgICBjb25zdCB7IGN0eCwgc2V0dXBTdGF0ZSB9ID0gaW5zdGFuY2U7XHJcbiAgICBPYmplY3Qua2V5cyh0b1JhdyhzZXR1cFN0YXRlKSkuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgIGlmICghc2V0dXBTdGF0ZS5fX2lzU2NyaXB0U2V0dXApIHtcclxuICAgICAgICAgICAgaWYgKGlzUmVzZXJ2ZWRQcmVmaXgoa2V5WzBdKSkge1xyXG4gICAgICAgICAgICAgICAgd2Fybihgc2V0dXAoKSByZXR1cm4gcHJvcGVydHkgJHtKU09OLnN0cmluZ2lmeShrZXkpfSBzaG91bGQgbm90IHN0YXJ0IHdpdGggXCIkXCIgb3IgXCJfXCIgYCArXHJcbiAgICAgICAgICAgICAgICAgICAgYHdoaWNoIGFyZSByZXNlcnZlZCBwcmVmaXhlcyBmb3IgVnVlIGludGVybmFscy5gKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3R4LCBrZXksIHtcclxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBnZXQ6ICgpID0+IHNldHVwU3RhdGVba2V5XSxcclxuICAgICAgICAgICAgICAgIHNldDogTk9PUFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxufVxuXG5mdW5jdGlvbiBjcmVhdGVEdXBsaWNhdGVDaGVja2VyKCkge1xyXG4gICAgY29uc3QgY2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xyXG4gICAgcmV0dXJuICh0eXBlLCBrZXkpID0+IHtcclxuICAgICAgICBpZiAoY2FjaGVba2V5XSkge1xyXG4gICAgICAgICAgICB3YXJuKGAke3R5cGV9IHByb3BlcnR5IFwiJHtrZXl9XCIgaXMgYWxyZWFkeSBkZWZpbmVkIGluICR7Y2FjaGVba2V5XX0uYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjYWNoZVtrZXldID0gdHlwZTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59XHJcbmxldCBzaG91bGRDYWNoZUFjY2VzcyA9IHRydWU7XHJcbmZ1bmN0aW9uIGFwcGx5T3B0aW9ucyhpbnN0YW5jZSkge1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHJlc29sdmVNZXJnZWRPcHRpb25zKGluc3RhbmNlKTtcclxuICAgIGNvbnN0IHB1YmxpY1RoaXMgPSBpbnN0YW5jZS5wcm94eTtcclxuICAgIGNvbnN0IGN0eCA9IGluc3RhbmNlLmN0eDtcclxuICAgIC8vIGRvIG5vdCBjYWNoZSBwcm9wZXJ0eSBhY2Nlc3Mgb24gcHVibGljIHByb3h5IGR1cmluZyBzdGF0ZSBpbml0aWFsaXphdGlvblxyXG4gICAgc2hvdWxkQ2FjaGVBY2Nlc3MgPSBmYWxzZTtcclxuICAgIC8vIGNhbGwgYmVmb3JlQ3JlYXRlIGZpcnN0IGJlZm9yZSBhY2Nlc3Npbmcgb3RoZXIgb3B0aW9ucyBzaW5jZVxyXG4gICAgLy8gdGhlIGhvb2sgbWF5IG11dGF0ZSByZXNvbHZlZCBvcHRpb25zICgjMjc5MSlcclxuICAgIGlmIChvcHRpb25zLmJlZm9yZUNyZWF0ZSkge1xyXG4gICAgICAgIGNhbGxIb29rKG9wdGlvbnMuYmVmb3JlQ3JlYXRlLCBpbnN0YW5jZSwgXCJiY1wiIC8qIExpZmVjeWNsZUhvb2tzLkJFRk9SRV9DUkVBVEUgKi8pO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBcclxuICAgIC8vIHN0YXRlXHJcbiAgICBkYXRhOiBkYXRhT3B0aW9ucywgY29tcHV0ZWQ6IGNvbXB1dGVkT3B0aW9ucywgbWV0aG9kcywgd2F0Y2g6IHdhdGNoT3B0aW9ucywgcHJvdmlkZTogcHJvdmlkZU9wdGlvbnMsIGluamVjdDogaW5qZWN0T3B0aW9ucywgXHJcbiAgICAvLyBsaWZlY3ljbGVcclxuICAgIGNyZWF0ZWQsIGJlZm9yZU1vdW50LCBtb3VudGVkLCBiZWZvcmVVcGRhdGUsIHVwZGF0ZWQsIGFjdGl2YXRlZCwgZGVhY3RpdmF0ZWQsIGJlZm9yZURlc3Ryb3ksIGJlZm9yZVVubW91bnQsIGRlc3Ryb3llZCwgdW5tb3VudGVkLCByZW5kZXIsIHJlbmRlclRyYWNrZWQsIHJlbmRlclRyaWdnZXJlZCwgZXJyb3JDYXB0dXJlZCwgc2VydmVyUHJlZmV0Y2gsIFxyXG4gICAgLy8gcHVibGljIEFQSVxyXG4gICAgZXhwb3NlLCBpbmhlcml0QXR0cnMsIFxyXG4gICAgLy8gYXNzZXRzXHJcbiAgICBjb21wb25lbnRzLCBkaXJlY3RpdmVzLCBmaWx0ZXJzIH0gPSBvcHRpb25zO1xyXG4gICAgY29uc3QgY2hlY2tEdXBsaWNhdGVQcm9wZXJ0aWVzID0gKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gY3JlYXRlRHVwbGljYXRlQ2hlY2tlcigpIDogbnVsbDtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICBjb25zdCBbcHJvcHNPcHRpb25zXSA9IGluc3RhbmNlLnByb3BzT3B0aW9ucztcclxuICAgICAgICBpZiAocHJvcHNPcHRpb25zKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHByb3BzT3B0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgY2hlY2tEdXBsaWNhdGVQcm9wZXJ0aWVzKFwiUHJvcHNcIiAvKiBPcHRpb25UeXBlcy5QUk9QUyAqLywga2V5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIG9wdGlvbnMgaW5pdGlhbGl6YXRpb24gb3JkZXIgKHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBWdWUgMik6XHJcbiAgICAvLyAtIHByb3BzIChhbHJlYWR5IGRvbmUgb3V0c2lkZSBvZiB0aGlzIGZ1bmN0aW9uKVxyXG4gICAgLy8gLSBpbmplY3RcclxuICAgIC8vIC0gbWV0aG9kc1xyXG4gICAgLy8gLSBkYXRhIChkZWZlcnJlZCBzaW5jZSBpdCByZWxpZXMgb24gYHRoaXNgIGFjY2VzcylcclxuICAgIC8vIC0gY29tcHV0ZWRcclxuICAgIC8vIC0gd2F0Y2ggKGRlZmVycmVkIHNpbmNlIGl0IHJlbGllcyBvbiBgdGhpc2AgYWNjZXNzKVxyXG4gICAgaWYgKGluamVjdE9wdGlvbnMpIHtcclxuICAgICAgICByZXNvbHZlSW5qZWN0aW9ucyhpbmplY3RPcHRpb25zLCBjdHgsIGNoZWNrRHVwbGljYXRlUHJvcGVydGllcywgaW5zdGFuY2UuYXBwQ29udGV4dC5jb25maWcudW53cmFwSW5qZWN0ZWRSZWYpO1xyXG4gICAgfVxyXG4gICAgaWYgKG1ldGhvZHMpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBtZXRob2RzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1ldGhvZEhhbmRsZXIgPSBtZXRob2RzW2tleV07XHJcbiAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKG1ldGhvZEhhbmRsZXIpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBJbiBkZXYgbW9kZSwgd2UgdXNlIHRoZSBgY3JlYXRlUmVuZGVyQ29udGV4dGAgZnVuY3Rpb24gdG8gZGVmaW5lXHJcbiAgICAgICAgICAgICAgICAvLyBtZXRob2RzIHRvIHRoZSBwcm94eSB0YXJnZXQsIGFuZCB0aG9zZSBhcmUgcmVhZC1vbmx5IGJ1dFxyXG4gICAgICAgICAgICAgICAgLy8gcmVjb25maWd1cmFibGUsIHNvIGl0IG5lZWRzIHRvIGJlIHJlZGVmaW5lZCBoZXJlXHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGN0eCwga2V5LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBtZXRob2RIYW5kbGVyLmJpbmQocHVibGljVGhpcyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6IHRydWVcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGN0eFtrZXldID0gbWV0aG9kSGFuZGxlci5iaW5kKHB1YmxpY1RoaXMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrRHVwbGljYXRlUHJvcGVydGllcyhcIk1ldGhvZHNcIiAvKiBPcHRpb25UeXBlcy5NRVRIT0RTICovLCBrZXkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgd2FybihgTWV0aG9kIFwiJHtrZXl9XCIgaGFzIHR5cGUgXCIke3R5cGVvZiBtZXRob2RIYW5kbGVyfVwiIGluIHRoZSBjb21wb25lbnQgZGVmaW5pdGlvbi4gYCArXHJcbiAgICAgICAgICAgICAgICAgICAgYERpZCB5b3UgcmVmZXJlbmNlIHRoZSBmdW5jdGlvbiBjb3JyZWN0bHk/YCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoZGF0YU9wdGlvbnMpIHtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFpc0Z1bmN0aW9uKGRhdGFPcHRpb25zKSkge1xyXG4gICAgICAgICAgICB3YXJuKGBUaGUgZGF0YSBvcHRpb24gbXVzdCBiZSBhIGZ1bmN0aW9uLiBgICtcclxuICAgICAgICAgICAgICAgIGBQbGFpbiBvYmplY3QgdXNhZ2UgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC5gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IGRhdGFPcHRpb25zLmNhbGwocHVibGljVGhpcywgcHVibGljVGhpcyk7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBpc1Byb21pc2UoZGF0YSkpIHtcclxuICAgICAgICAgICAgd2FybihgZGF0YSgpIHJldHVybmVkIGEgUHJvbWlzZSAtIG5vdGUgZGF0YSgpIGNhbm5vdCBiZSBhc3luYzsgSWYgeW91IGAgK1xyXG4gICAgICAgICAgICAgICAgYGludGVuZCB0byBwZXJmb3JtIGRhdGEgZmV0Y2hpbmcgYmVmb3JlIGNvbXBvbmVudCByZW5kZXJzLCB1c2UgYCArXHJcbiAgICAgICAgICAgICAgICBgYXN5bmMgc2V0dXAoKSArIDxTdXNwZW5zZT4uYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghaXNPYmplY3QoZGF0YSkpIHtcclxuICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHdhcm4oYGRhdGEoKSBzaG91bGQgcmV0dXJuIGFuIG9iamVjdC5gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGluc3RhbmNlLmRhdGEgPSByZWFjdGl2ZShkYXRhKTtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrRHVwbGljYXRlUHJvcGVydGllcyhcIkRhdGFcIiAvKiBPcHRpb25UeXBlcy5EQVRBICovLCBrZXkpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGV4cG9zZSBkYXRhIG9uIGN0eCBkdXJpbmcgZGV2XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1Jlc2VydmVkUHJlZml4KGtleVswXSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGN0eCwga2V5LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0OiAoKSA9PiBkYXRhW2tleV0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQ6IE5PT1BcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gc3RhdGUgaW5pdGlhbGl6YXRpb24gY29tcGxldGUgYXQgdGhpcyBwb2ludCAtIHN0YXJ0IGNhY2hpbmcgYWNjZXNzXHJcbiAgICBzaG91bGRDYWNoZUFjY2VzcyA9IHRydWU7XHJcbiAgICBpZiAoY29tcHV0ZWRPcHRpb25zKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gY29tcHV0ZWRPcHRpb25zKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9wdCA9IGNvbXB1dGVkT3B0aW9uc1trZXldO1xyXG4gICAgICAgICAgICBjb25zdCBnZXQgPSBpc0Z1bmN0aW9uKG9wdClcclxuICAgICAgICAgICAgICAgID8gb3B0LmJpbmQocHVibGljVGhpcywgcHVibGljVGhpcylcclxuICAgICAgICAgICAgICAgIDogaXNGdW5jdGlvbihvcHQuZ2V0KVxyXG4gICAgICAgICAgICAgICAgICAgID8gb3B0LmdldC5iaW5kKHB1YmxpY1RoaXMsIHB1YmxpY1RoaXMpXHJcbiAgICAgICAgICAgICAgICAgICAgOiBOT09QO1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGdldCA9PT0gTk9PUCkge1xyXG4gICAgICAgICAgICAgICAgd2FybihgQ29tcHV0ZWQgcHJvcGVydHkgXCIke2tleX1cIiBoYXMgbm8gZ2V0dGVyLmApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IHNldCA9ICFpc0Z1bmN0aW9uKG9wdCkgJiYgaXNGdW5jdGlvbihvcHQuc2V0KVxyXG4gICAgICAgICAgICAgICAgPyBvcHQuc2V0LmJpbmQocHVibGljVGhpcylcclxuICAgICAgICAgICAgICAgIDogKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpXHJcbiAgICAgICAgICAgICAgICAgICAgPyAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdhcm4oYFdyaXRlIG9wZXJhdGlvbiBmYWlsZWQ6IGNvbXB1dGVkIHByb3BlcnR5IFwiJHtrZXl9XCIgaXMgcmVhZG9ubHkuYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIDogTk9PUDtcclxuICAgICAgICAgICAgY29uc3QgYyA9IGNvbXB1dGVkKHtcclxuICAgICAgICAgICAgICAgIGdldCxcclxuICAgICAgICAgICAgICAgIHNldFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGN0eCwga2V5LCB7XHJcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgZ2V0OiAoKSA9PiBjLnZhbHVlLFxyXG4gICAgICAgICAgICAgICAgc2V0OiB2ID0+IChjLnZhbHVlID0gdilcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgIGNoZWNrRHVwbGljYXRlUHJvcGVydGllcyhcIkNvbXB1dGVkXCIgLyogT3B0aW9uVHlwZXMuQ09NUFVURUQgKi8sIGtleSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAod2F0Y2hPcHRpb25zKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gd2F0Y2hPcHRpb25zKSB7XHJcbiAgICAgICAgICAgIGNyZWF0ZVdhdGNoZXIod2F0Y2hPcHRpb25zW2tleV0sIGN0eCwgcHVibGljVGhpcywga2V5KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAocHJvdmlkZU9wdGlvbnMpIHtcclxuICAgICAgICBjb25zdCBwcm92aWRlcyA9IGlzRnVuY3Rpb24ocHJvdmlkZU9wdGlvbnMpXHJcbiAgICAgICAgICAgID8gcHJvdmlkZU9wdGlvbnMuY2FsbChwdWJsaWNUaGlzKVxyXG4gICAgICAgICAgICA6IHByb3ZpZGVPcHRpb25zO1xyXG4gICAgICAgIFJlZmxlY3Qub3duS2V5cyhwcm92aWRlcykuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgICAgICBwcm92aWRlKGtleSwgcHJvdmlkZXNba2V5XSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAoY3JlYXRlZCkge1xyXG4gICAgICAgIGNhbGxIb29rKGNyZWF0ZWQsIGluc3RhbmNlLCBcImNcIiAvKiBMaWZlY3ljbGVIb29rcy5DUkVBVEVEICovKTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayhyZWdpc3RlciwgaG9vaykge1xyXG4gICAgICAgIGlmIChpc0FycmF5KGhvb2spKSB7XHJcbiAgICAgICAgICAgIGhvb2suZm9yRWFjaChfaG9vayA9PiByZWdpc3RlcihfaG9vay5iaW5kKHB1YmxpY1RoaXMpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGhvb2spIHtcclxuICAgICAgICAgICAgcmVnaXN0ZXIoaG9vay5iaW5kKHB1YmxpY1RoaXMpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZWdpc3RlckxpZmVjeWNsZUhvb2sob25CZWZvcmVNb3VudCwgYmVmb3JlTW91bnQpO1xyXG4gICAgcmVnaXN0ZXJMaWZlY3ljbGVIb29rKG9uTW91bnRlZCwgbW91bnRlZCk7XHJcbiAgICByZWdpc3RlckxpZmVjeWNsZUhvb2sob25CZWZvcmVVcGRhdGUsIGJlZm9yZVVwZGF0ZSk7XHJcbiAgICByZWdpc3RlckxpZmVjeWNsZUhvb2sob25VcGRhdGVkLCB1cGRhdGVkKTtcclxuICAgIHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayhvbkFjdGl2YXRlZCwgYWN0aXZhdGVkKTtcclxuICAgIHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayhvbkRlYWN0aXZhdGVkLCBkZWFjdGl2YXRlZCk7XHJcbiAgICByZWdpc3RlckxpZmVjeWNsZUhvb2sob25FcnJvckNhcHR1cmVkLCBlcnJvckNhcHR1cmVkKTtcclxuICAgIHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayhvblJlbmRlclRyYWNrZWQsIHJlbmRlclRyYWNrZWQpO1xyXG4gICAgcmVnaXN0ZXJMaWZlY3ljbGVIb29rKG9uUmVuZGVyVHJpZ2dlcmVkLCByZW5kZXJUcmlnZ2VyZWQpO1xyXG4gICAgcmVnaXN0ZXJMaWZlY3ljbGVIb29rKG9uQmVmb3JlVW5tb3VudCwgYmVmb3JlVW5tb3VudCk7XHJcbiAgICByZWdpc3RlckxpZmVjeWNsZUhvb2sob25Vbm1vdW50ZWQsIHVubW91bnRlZCk7XHJcbiAgICByZWdpc3RlckxpZmVjeWNsZUhvb2sob25TZXJ2ZXJQcmVmZXRjaCwgc2VydmVyUHJlZmV0Y2gpO1xyXG4gICAgaWYgKGlzQXJyYXkoZXhwb3NlKSkge1xyXG4gICAgICAgIGlmIChleHBvc2UubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGV4cG9zZWQgPSBpbnN0YW5jZS5leHBvc2VkIHx8IChpbnN0YW5jZS5leHBvc2VkID0ge30pO1xyXG4gICAgICAgICAgICBleHBvc2UuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9zZWQsIGtleSwge1xyXG4gICAgICAgICAgICAgICAgICAgIGdldDogKCkgPT4gcHVibGljVGhpc1trZXldLFxyXG4gICAgICAgICAgICAgICAgICAgIHNldDogdmFsID0+IChwdWJsaWNUaGlzW2tleV0gPSB2YWwpXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKCFpbnN0YW5jZS5leHBvc2VkKSB7XHJcbiAgICAgICAgICAgIGluc3RhbmNlLmV4cG9zZWQgPSB7fTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBvcHRpb25zIHRoYXQgYXJlIGhhbmRsZWQgd2hlbiBjcmVhdGluZyB0aGUgaW5zdGFuY2UgYnV0IGFsc28gbmVlZCB0byBiZVxyXG4gICAgLy8gYXBwbGllZCBmcm9tIG1peGluc1xyXG4gICAgaWYgKHJlbmRlciAmJiBpbnN0YW5jZS5yZW5kZXIgPT09IE5PT1ApIHtcclxuICAgICAgICBpbnN0YW5jZS5yZW5kZXIgPSByZW5kZXI7XHJcbiAgICB9XHJcbiAgICBpZiAoaW5oZXJpdEF0dHJzICE9IG51bGwpIHtcclxuICAgICAgICBpbnN0YW5jZS5pbmhlcml0QXR0cnMgPSBpbmhlcml0QXR0cnM7XHJcbiAgICB9XHJcbiAgICAvLyBhc3NldCBvcHRpb25zLlxyXG4gICAgaWYgKGNvbXBvbmVudHMpXHJcbiAgICAgICAgaW5zdGFuY2UuY29tcG9uZW50cyA9IGNvbXBvbmVudHM7XHJcbiAgICBpZiAoZGlyZWN0aXZlcylcclxuICAgICAgICBpbnN0YW5jZS5kaXJlY3RpdmVzID0gZGlyZWN0aXZlcztcclxufVxyXG5mdW5jdGlvbiByZXNvbHZlSW5qZWN0aW9ucyhpbmplY3RPcHRpb25zLCBjdHgsIGNoZWNrRHVwbGljYXRlUHJvcGVydGllcyA9IE5PT1AsIHVud3JhcFJlZiA9IGZhbHNlKSB7XHJcbiAgICBpZiAoaXNBcnJheShpbmplY3RPcHRpb25zKSkge1xyXG4gICAgICAgIGluamVjdE9wdGlvbnMgPSBub3JtYWxpemVJbmplY3QoaW5qZWN0T3B0aW9ucyk7XHJcbiAgICB9XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBpbmplY3RPcHRpb25zKSB7XHJcbiAgICAgICAgY29uc3Qgb3B0ID0gaW5qZWN0T3B0aW9uc1trZXldO1xyXG4gICAgICAgIGxldCBpbmplY3RlZDtcclxuICAgICAgICBpZiAoaXNPYmplY3Qob3B0KSkge1xyXG4gICAgICAgICAgICBpZiAoJ2RlZmF1bHQnIGluIG9wdCkge1xyXG4gICAgICAgICAgICAgICAgaW5qZWN0ZWQgPSBpbmplY3Qob3B0LmZyb20gfHwga2V5LCBvcHQuZGVmYXVsdCwgdHJ1ZSAvKiB0cmVhdCBkZWZhdWx0IGZ1bmN0aW9uIGFzIGZhY3RvcnkgKi8pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaW5qZWN0ZWQgPSBpbmplY3Qob3B0LmZyb20gfHwga2V5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaW5qZWN0ZWQgPSBpbmplY3Qob3B0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlzUmVmKGluamVjdGVkKSkge1xyXG4gICAgICAgICAgICAvLyBUT0RPIHJlbW92ZSB0aGUgY2hlY2sgaW4gMy4zXHJcbiAgICAgICAgICAgIGlmICh1bndyYXBSZWYpIHtcclxuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjdHgsIGtleSwge1xyXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIGdldDogKCkgPT4gaW5qZWN0ZWQudmFsdWUsXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0OiB2ID0+IChpbmplY3RlZC52YWx1ZSA9IHYpXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKGBpbmplY3RlZCBwcm9wZXJ0eSBcIiR7a2V5fVwiIGlzIGEgcmVmIGFuZCB3aWxsIGJlIGF1dG8tdW53cmFwcGVkIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgYW5kIG5vIGxvbmdlciBuZWVkcyBcXGAudmFsdWVcXGAgaW4gdGhlIG5leHQgbWlub3IgcmVsZWFzZS4gYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBUbyBvcHQtaW4gdG8gdGhlIG5ldyBiZWhhdmlvciBub3csIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgc2V0IFxcYGFwcC5jb25maWcudW53cmFwSW5qZWN0ZWRSZWYgPSB0cnVlXFxgICh0aGlzIGNvbmZpZyBpcyBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYHRlbXBvcmFyeSBhbmQgd2lsbCBub3QgYmUgbmVlZGVkIGluIHRoZSBmdXR1cmUuKWApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY3R4W2tleV0gPSBpbmplY3RlZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY3R4W2tleV0gPSBpbmplY3RlZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICBjaGVja0R1cGxpY2F0ZVByb3BlcnRpZXMoXCJJbmplY3RcIiAvKiBPcHRpb25UeXBlcy5JTkpFQ1QgKi8sIGtleSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGNhbGxIb29rKGhvb2ssIGluc3RhbmNlLCB0eXBlKSB7XHJcbiAgICBjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZyhpc0FycmF5KGhvb2spXHJcbiAgICAgICAgPyBob29rLm1hcChoID0+IGguYmluZChpbnN0YW5jZS5wcm94eSkpXHJcbiAgICAgICAgOiBob29rLmJpbmQoaW5zdGFuY2UucHJveHkpLCBpbnN0YW5jZSwgdHlwZSk7XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlV2F0Y2hlcihyYXcsIGN0eCwgcHVibGljVGhpcywga2V5KSB7XHJcbiAgICBjb25zdCBnZXR0ZXIgPSBrZXkuaW5jbHVkZXMoJy4nKVxyXG4gICAgICAgID8gY3JlYXRlUGF0aEdldHRlcihwdWJsaWNUaGlzLCBrZXkpXHJcbiAgICAgICAgOiAoKSA9PiBwdWJsaWNUaGlzW2tleV07XHJcbiAgICBpZiAoaXNTdHJpbmcocmF3KSkge1xyXG4gICAgICAgIGNvbnN0IGhhbmRsZXIgPSBjdHhbcmF3XTtcclxuICAgICAgICBpZiAoaXNGdW5jdGlvbihoYW5kbGVyKSkge1xyXG4gICAgICAgICAgICB3YXRjaChnZXR0ZXIsIGhhbmRsZXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgd2FybihgSW52YWxpZCB3YXRjaCBoYW5kbGVyIHNwZWNpZmllZCBieSBrZXkgXCIke3Jhd31cImAsIGhhbmRsZXIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzRnVuY3Rpb24ocmF3KSkge1xyXG4gICAgICAgIHdhdGNoKGdldHRlciwgcmF3LmJpbmQocHVibGljVGhpcykpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNPYmplY3QocmF3KSkge1xyXG4gICAgICAgIGlmIChpc0FycmF5KHJhdykpIHtcclxuICAgICAgICAgICAgcmF3LmZvckVhY2gociA9PiBjcmVhdGVXYXRjaGVyKHIsIGN0eCwgcHVibGljVGhpcywga2V5KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBoYW5kbGVyID0gaXNGdW5jdGlvbihyYXcuaGFuZGxlcilcclxuICAgICAgICAgICAgICAgID8gcmF3LmhhbmRsZXIuYmluZChwdWJsaWNUaGlzKVxyXG4gICAgICAgICAgICAgICAgOiBjdHhbcmF3LmhhbmRsZXJdO1xyXG4gICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihoYW5kbGVyKSkge1xyXG4gICAgICAgICAgICAgICAgd2F0Y2goZ2V0dGVyLCBoYW5kbGVyLCByYXcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgd2FybihgSW52YWxpZCB3YXRjaCBoYW5kbGVyIHNwZWNpZmllZCBieSBrZXkgXCIke3Jhdy5oYW5kbGVyfVwiYCwgaGFuZGxlcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICB3YXJuKGBJbnZhbGlkIHdhdGNoIG9wdGlvbjogXCIke2tleX1cImAsIHJhdyk7XHJcbiAgICB9XHJcbn1cclxuLyoqXHJcbiAqIFJlc29sdmUgbWVyZ2VkIG9wdGlvbnMgYW5kIGNhY2hlIGl0IG9uIHRoZSBjb21wb25lbnQuXHJcbiAqIFRoaXMgaXMgZG9uZSBvbmx5IG9uY2UgcGVyLWNvbXBvbmVudCBzaW5jZSB0aGUgbWVyZ2luZyBkb2VzIG5vdCBpbnZvbHZlXHJcbiAqIGluc3RhbmNlcy5cclxuICovXHJcbmZ1bmN0aW9uIHJlc29sdmVNZXJnZWRPcHRpb25zKGluc3RhbmNlKSB7XHJcbiAgICBjb25zdCBiYXNlID0gaW5zdGFuY2UudHlwZTtcclxuICAgIGNvbnN0IHsgbWl4aW5zLCBleHRlbmRzOiBleHRlbmRzT3B0aW9ucyB9ID0gYmFzZTtcclxuICAgIGNvbnN0IHsgbWl4aW5zOiBnbG9iYWxNaXhpbnMsIG9wdGlvbnNDYWNoZTogY2FjaGUsIGNvbmZpZzogeyBvcHRpb25NZXJnZVN0cmF0ZWdpZXMgfSB9ID0gaW5zdGFuY2UuYXBwQ29udGV4dDtcclxuICAgIGNvbnN0IGNhY2hlZCA9IGNhY2hlLmdldChiYXNlKTtcclxuICAgIGxldCByZXNvbHZlZDtcclxuICAgIGlmIChjYWNoZWQpIHtcclxuICAgICAgICByZXNvbHZlZCA9IGNhY2hlZDtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKCFnbG9iYWxNaXhpbnMubGVuZ3RoICYmICFtaXhpbnMgJiYgIWV4dGVuZHNPcHRpb25zKSB7XHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICByZXNvbHZlZCA9IGJhc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgcmVzb2x2ZWQgPSB7fTtcclxuICAgICAgICBpZiAoZ2xvYmFsTWl4aW5zLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBnbG9iYWxNaXhpbnMuZm9yRWFjaChtID0+IG1lcmdlT3B0aW9ucyhyZXNvbHZlZCwgbSwgb3B0aW9uTWVyZ2VTdHJhdGVnaWVzLCB0cnVlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG1lcmdlT3B0aW9ucyhyZXNvbHZlZCwgYmFzZSwgb3B0aW9uTWVyZ2VTdHJhdGVnaWVzKTtcclxuICAgIH1cclxuICAgIGlmIChpc09iamVjdChiYXNlKSkge1xyXG4gICAgICAgIGNhY2hlLnNldChiYXNlLCByZXNvbHZlZCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzb2x2ZWQ7XHJcbn1cclxuZnVuY3Rpb24gbWVyZ2VPcHRpb25zKHRvLCBmcm9tLCBzdHJhdHMsIGFzTWl4aW4gPSBmYWxzZSkge1xyXG4gICAgY29uc3QgeyBtaXhpbnMsIGV4dGVuZHM6IGV4dGVuZHNPcHRpb25zIH0gPSBmcm9tO1xyXG4gICAgaWYgKGV4dGVuZHNPcHRpb25zKSB7XHJcbiAgICAgICAgbWVyZ2VPcHRpb25zKHRvLCBleHRlbmRzT3B0aW9ucywgc3RyYXRzLCB0cnVlKTtcclxuICAgIH1cclxuICAgIGlmIChtaXhpbnMpIHtcclxuICAgICAgICBtaXhpbnMuZm9yRWFjaCgobSkgPT4gbWVyZ2VPcHRpb25zKHRvLCBtLCBzdHJhdHMsIHRydWUpKTtcclxuICAgIH1cclxuICAgIGZvciAoY29uc3Qga2V5IGluIGZyb20pIHtcclxuICAgICAgICBpZiAoYXNNaXhpbiAmJiBrZXkgPT09ICdleHBvc2UnKSB7XHJcbiAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICAgICAgd2FybihgXCJleHBvc2VcIiBvcHRpb24gaXMgaWdub3JlZCB3aGVuIGRlY2xhcmVkIGluIG1peGlucyBvciBleHRlbmRzLiBgICtcclxuICAgICAgICAgICAgICAgICAgICBgSXQgc2hvdWxkIG9ubHkgYmUgZGVjbGFyZWQgaW4gdGhlIGJhc2UgY29tcG9uZW50IGl0c2VsZi5gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHN0cmF0ID0gaW50ZXJuYWxPcHRpb25NZXJnZVN0cmF0c1trZXldIHx8IChzdHJhdHMgJiYgc3RyYXRzW2tleV0pO1xyXG4gICAgICAgICAgICB0b1trZXldID0gc3RyYXQgPyBzdHJhdCh0b1trZXldLCBmcm9tW2tleV0pIDogZnJvbVtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0bztcclxufVxyXG5jb25zdCBpbnRlcm5hbE9wdGlvbk1lcmdlU3RyYXRzID0ge1xyXG4gICAgZGF0YTogbWVyZ2VEYXRhRm4sXHJcbiAgICBwcm9wczogbWVyZ2VPYmplY3RPcHRpb25zLFxyXG4gICAgZW1pdHM6IG1lcmdlT2JqZWN0T3B0aW9ucyxcclxuICAgIC8vIG9iamVjdHNcclxuICAgIG1ldGhvZHM6IG1lcmdlT2JqZWN0T3B0aW9ucyxcclxuICAgIGNvbXB1dGVkOiBtZXJnZU9iamVjdE9wdGlvbnMsXHJcbiAgICAvLyBsaWZlY3ljbGVcclxuICAgIGJlZm9yZUNyZWF0ZTogbWVyZ2VBc0FycmF5LFxyXG4gICAgY3JlYXRlZDogbWVyZ2VBc0FycmF5LFxyXG4gICAgYmVmb3JlTW91bnQ6IG1lcmdlQXNBcnJheSxcclxuICAgIG1vdW50ZWQ6IG1lcmdlQXNBcnJheSxcclxuICAgIGJlZm9yZVVwZGF0ZTogbWVyZ2VBc0FycmF5LFxyXG4gICAgdXBkYXRlZDogbWVyZ2VBc0FycmF5LFxyXG4gICAgYmVmb3JlRGVzdHJveTogbWVyZ2VBc0FycmF5LFxyXG4gICAgYmVmb3JlVW5tb3VudDogbWVyZ2VBc0FycmF5LFxyXG4gICAgZGVzdHJveWVkOiBtZXJnZUFzQXJyYXksXHJcbiAgICB1bm1vdW50ZWQ6IG1lcmdlQXNBcnJheSxcclxuICAgIGFjdGl2YXRlZDogbWVyZ2VBc0FycmF5LFxyXG4gICAgZGVhY3RpdmF0ZWQ6IG1lcmdlQXNBcnJheSxcclxuICAgIGVycm9yQ2FwdHVyZWQ6IG1lcmdlQXNBcnJheSxcclxuICAgIHNlcnZlclByZWZldGNoOiBtZXJnZUFzQXJyYXksXHJcbiAgICAvLyBhc3NldHNcclxuICAgIGNvbXBvbmVudHM6IG1lcmdlT2JqZWN0T3B0aW9ucyxcclxuICAgIGRpcmVjdGl2ZXM6IG1lcmdlT2JqZWN0T3B0aW9ucyxcclxuICAgIC8vIHdhdGNoXHJcbiAgICB3YXRjaDogbWVyZ2VXYXRjaE9wdGlvbnMsXHJcbiAgICAvLyBwcm92aWRlIC8gaW5qZWN0XHJcbiAgICBwcm92aWRlOiBtZXJnZURhdGFGbixcclxuICAgIGluamVjdDogbWVyZ2VJbmplY3RcclxufTtcclxuZnVuY3Rpb24gbWVyZ2VEYXRhRm4odG8sIGZyb20pIHtcclxuICAgIGlmICghZnJvbSkge1xyXG4gICAgICAgIHJldHVybiB0bztcclxuICAgIH1cclxuICAgIGlmICghdG8pIHtcclxuICAgICAgICByZXR1cm4gZnJvbTtcclxuICAgIH1cclxuICAgIHJldHVybiBmdW5jdGlvbiBtZXJnZWREYXRhRm4oKSB7XHJcbiAgICAgICAgcmV0dXJuIChleHRlbmQpKGlzRnVuY3Rpb24odG8pID8gdG8uY2FsbCh0aGlzLCB0aGlzKSA6IHRvLCBpc0Z1bmN0aW9uKGZyb20pID8gZnJvbS5jYWxsKHRoaXMsIHRoaXMpIDogZnJvbSk7XHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIG1lcmdlSW5qZWN0KHRvLCBmcm9tKSB7XHJcbiAgICByZXR1cm4gbWVyZ2VPYmplY3RPcHRpb25zKG5vcm1hbGl6ZUluamVjdCh0byksIG5vcm1hbGl6ZUluamVjdChmcm9tKSk7XHJcbn1cclxuZnVuY3Rpb24gbm9ybWFsaXplSW5qZWN0KHJhdykge1xyXG4gICAgaWYgKGlzQXJyYXkocmF3KSkge1xyXG4gICAgICAgIGNvbnN0IHJlcyA9IHt9O1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmF3Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHJlc1tyYXdbaV1dID0gcmF3W2ldO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJhdztcclxufVxyXG5mdW5jdGlvbiBtZXJnZUFzQXJyYXkodG8sIGZyb20pIHtcclxuICAgIHJldHVybiB0byA/IFsuLi5uZXcgU2V0KFtdLmNvbmNhdCh0bywgZnJvbSkpXSA6IGZyb207XHJcbn1cclxuZnVuY3Rpb24gbWVyZ2VPYmplY3RPcHRpb25zKHRvLCBmcm9tKSB7XHJcbiAgICByZXR1cm4gdG8gPyBleHRlbmQoZXh0ZW5kKE9iamVjdC5jcmVhdGUobnVsbCksIHRvKSwgZnJvbSkgOiBmcm9tO1xyXG59XHJcbmZ1bmN0aW9uIG1lcmdlV2F0Y2hPcHRpb25zKHRvLCBmcm9tKSB7XHJcbiAgICBpZiAoIXRvKVxyXG4gICAgICAgIHJldHVybiBmcm9tO1xyXG4gICAgaWYgKCFmcm9tKVxyXG4gICAgICAgIHJldHVybiB0bztcclxuICAgIGNvbnN0IG1lcmdlZCA9IGV4dGVuZChPYmplY3QuY3JlYXRlKG51bGwpLCB0byk7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBmcm9tKSB7XHJcbiAgICAgICAgbWVyZ2VkW2tleV0gPSBtZXJnZUFzQXJyYXkodG9ba2V5XSwgZnJvbVtrZXldKTtcclxuICAgIH1cclxuICAgIHJldHVybiBtZXJnZWQ7XHJcbn1cblxuZnVuY3Rpb24gaW5pdFByb3BzKGluc3RhbmNlLCByYXdQcm9wcywgaXNTdGF0ZWZ1bCwgLy8gcmVzdWx0IG9mIGJpdHdpc2UgZmxhZyBjb21wYXJpc29uXHJcbmlzU1NSID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IHByb3BzID0ge307XHJcbiAgICBjb25zdCBhdHRycyA9IHt9O1xyXG4gICAgZGVmKGF0dHJzLCBJbnRlcm5hbE9iamVjdEtleSwgMSk7XHJcbiAgICBpbnN0YW5jZS5wcm9wc0RlZmF1bHRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcclxuICAgIHNldEZ1bGxQcm9wcyhpbnN0YW5jZSwgcmF3UHJvcHMsIHByb3BzLCBhdHRycyk7XHJcbiAgICAvLyBlbnN1cmUgYWxsIGRlY2xhcmVkIHByb3Aga2V5cyBhcmUgcHJlc2VudFxyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gaW5zdGFuY2UucHJvcHNPcHRpb25zWzBdKSB7XHJcbiAgICAgICAgaWYgKCEoa2V5IGluIHByb3BzKSkge1xyXG4gICAgICAgICAgICBwcm9wc1trZXldID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIHZhbGlkYXRpb25cclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICB2YWxpZGF0ZVByb3BzKHJhd1Byb3BzIHx8IHt9LCBwcm9wcywgaW5zdGFuY2UpO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzU3RhdGVmdWwpIHtcclxuICAgICAgICAvLyBzdGF0ZWZ1bFxyXG4gICAgICAgIGluc3RhbmNlLnByb3BzID0gaXNTU1IgPyBwcm9wcyA6IHNoYWxsb3dSZWFjdGl2ZShwcm9wcyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBpZiAoIWluc3RhbmNlLnR5cGUucHJvcHMpIHtcclxuICAgICAgICAgICAgLy8gZnVuY3Rpb25hbCB3LyBvcHRpb25hbCBwcm9wcywgcHJvcHMgPT09IGF0dHJzXHJcbiAgICAgICAgICAgIGluc3RhbmNlLnByb3BzID0gYXR0cnM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBmdW5jdGlvbmFsIHcvIGRlY2xhcmVkIHByb3BzXHJcbiAgICAgICAgICAgIGluc3RhbmNlLnByb3BzID0gcHJvcHM7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaW5zdGFuY2UuYXR0cnMgPSBhdHRycztcclxufVxyXG5mdW5jdGlvbiBpc0luSG1yQ29udGV4dChpbnN0YW5jZSkge1xyXG4gICAgd2hpbGUgKGluc3RhbmNlKSB7XHJcbiAgICAgICAgaWYgKGluc3RhbmNlLnR5cGUuX19obXJJZClcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgaW5zdGFuY2UgPSBpbnN0YW5jZS5wYXJlbnQ7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gdXBkYXRlUHJvcHMoaW5zdGFuY2UsIHJhd1Byb3BzLCByYXdQcmV2UHJvcHMsIG9wdGltaXplZCkge1xyXG4gICAgY29uc3QgeyBwcm9wcywgYXR0cnMsIHZub2RlOiB7IHBhdGNoRmxhZyB9IH0gPSBpbnN0YW5jZTtcclxuICAgIGNvbnN0IHJhd0N1cnJlbnRQcm9wcyA9IHRvUmF3KHByb3BzKTtcclxuICAgIGNvbnN0IFtvcHRpb25zXSA9IGluc3RhbmNlLnByb3BzT3B0aW9ucztcclxuICAgIGxldCBoYXNBdHRyc0NoYW5nZWQgPSBmYWxzZTtcclxuICAgIGlmIChcclxuICAgIC8vIGFsd2F5cyBmb3JjZSBmdWxsIGRpZmYgaW4gZGV2XHJcbiAgICAvLyAtICMxOTQyIGlmIGhtciBpcyBlbmFibGVkIHdpdGggc2ZjIGNvbXBvbmVudFxyXG4gICAgLy8gLSB2aXRlIzg3MiBub24tc2ZjIGNvbXBvbmVudCB1c2VkIGJ5IHNmYyBjb21wb25lbnRcclxuICAgICEoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGlzSW5IbXJDb250ZXh0KGluc3RhbmNlKSkgJiZcclxuICAgICAgICAob3B0aW1pemVkIHx8IHBhdGNoRmxhZyA+IDApICYmXHJcbiAgICAgICAgIShwYXRjaEZsYWcgJiAxNiAvKiBQYXRjaEZsYWdzLkZVTExfUFJPUFMgKi8pKSB7XHJcbiAgICAgICAgaWYgKHBhdGNoRmxhZyAmIDggLyogUGF0Y2hGbGFncy5QUk9QUyAqLykge1xyXG4gICAgICAgICAgICAvLyBDb21waWxlci1nZW5lcmF0ZWQgcHJvcHMgJiBubyBrZXlzIGNoYW5nZSwganVzdCBzZXQgdGhlIHVwZGF0ZWRcclxuICAgICAgICAgICAgLy8gdGhlIHByb3BzLlxyXG4gICAgICAgICAgICBjb25zdCBwcm9wc1RvVXBkYXRlID0gaW5zdGFuY2Uudm5vZGUuZHluYW1pY1Byb3BzO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BzVG9VcGRhdGUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGxldCBrZXkgPSBwcm9wc1RvVXBkYXRlW2ldO1xyXG4gICAgICAgICAgICAgICAgLy8gc2tpcCBpZiB0aGUgcHJvcCBrZXkgaXMgYSBkZWNsYXJlZCBlbWl0IGV2ZW50IGxpc3RlbmVyXHJcbiAgICAgICAgICAgICAgICBpZiAoaXNFbWl0TGlzdGVuZXIoaW5zdGFuY2UuZW1pdHNPcHRpb25zLCBrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBQUk9QUyBmbGFnIGd1YXJhbnRlZXMgcmF3UHJvcHMgdG8gYmUgbm9uLW51bGxcclxuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcmF3UHJvcHNba2V5XTtcclxuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gYXR0ciAvIHByb3BzIHNlcGFyYXRpb24gd2FzIGRvbmUgb24gaW5pdCBhbmQgd2lsbCBiZSBjb25zaXN0ZW50XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaW4gdGhpcyBjb2RlIHBhdGgsIHNvIGp1c3QgY2hlY2sgaWYgYXR0cnMgaGF2ZSBpdC5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoaGFzT3duKGF0dHJzLCBrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gYXR0cnNba2V5XSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnNba2V5XSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzQXR0cnNDaGFuZ2VkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FtZWxpemVkS2V5ID0gY2FtZWxpemUoa2V5KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHNbY2FtZWxpemVkS2V5XSA9IHJlc29sdmVQcm9wVmFsdWUob3B0aW9ucywgcmF3Q3VycmVudFByb3BzLCBjYW1lbGl6ZWRLZXksIHZhbHVlLCBpbnN0YW5jZSwgZmFsc2UgLyogaXNBYnNlbnQgKi8pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gYXR0cnNba2V5XSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyc1trZXldID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc0F0dHJzQ2hhbmdlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgLy8gZnVsbCBwcm9wcyB1cGRhdGUuXHJcbiAgICAgICAgaWYgKHNldEZ1bGxQcm9wcyhpbnN0YW5jZSwgcmF3UHJvcHMsIHByb3BzLCBhdHRycykpIHtcclxuICAgICAgICAgICAgaGFzQXR0cnNDaGFuZ2VkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gaW4gY2FzZSBvZiBkeW5hbWljIHByb3BzLCBjaGVjayBpZiB3ZSBuZWVkIHRvIGRlbGV0ZSBrZXlzIGZyb21cclxuICAgICAgICAvLyB0aGUgcHJvcHMgb2JqZWN0XHJcbiAgICAgICAgbGV0IGtlYmFiS2V5O1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHJhd0N1cnJlbnRQcm9wcykge1xyXG4gICAgICAgICAgICBpZiAoIXJhd1Byb3BzIHx8XHJcbiAgICAgICAgICAgICAgICAvLyBmb3IgY2FtZWxDYXNlXHJcbiAgICAgICAgICAgICAgICAoIWhhc093bihyYXdQcm9wcywga2V5KSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGl0J3MgcG9zc2libGUgdGhlIG9yaWdpbmFsIHByb3BzIHdhcyBwYXNzZWQgaW4gYXMga2ViYWItY2FzZVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGFuZCBjb252ZXJ0ZWQgdG8gY2FtZWxDYXNlICgjOTU1KVxyXG4gICAgICAgICAgICAgICAgICAgICgoa2ViYWJLZXkgPSBoeXBoZW5hdGUoa2V5KSkgPT09IGtleSB8fCAhaGFzT3duKHJhd1Byb3BzLCBrZWJhYktleSkpKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmF3UHJldlByb3BzICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBjYW1lbENhc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHJhd1ByZXZQcm9wc1trZXldICE9PSB1bmRlZmluZWQgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBrZWJhYi1jYXNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXdQcmV2UHJvcHNba2ViYWJLZXldICE9PSB1bmRlZmluZWQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzW2tleV0gPSByZXNvbHZlUHJvcFZhbHVlKG9wdGlvbnMsIHJhd0N1cnJlbnRQcm9wcywga2V5LCB1bmRlZmluZWQsIGluc3RhbmNlLCB0cnVlIC8qIGlzQWJzZW50ICovKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgcHJvcHNba2V5XTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBpbiB0aGUgY2FzZSBvZiBmdW5jdGlvbmFsIGNvbXBvbmVudCB3L28gcHJvcHMgZGVjbGFyYXRpb24sIHByb3BzIGFuZFxyXG4gICAgICAgIC8vIGF0dHJzIHBvaW50IHRvIHRoZSBzYW1lIG9iamVjdCBzbyBpdCBzaG91bGQgYWxyZWFkeSBoYXZlIGJlZW4gdXBkYXRlZC5cclxuICAgICAgICBpZiAoYXR0cnMgIT09IHJhd0N1cnJlbnRQcm9wcykge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBhdHRycykge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFyYXdQcm9wcyB8fFxyXG4gICAgICAgICAgICAgICAgICAgICghaGFzT3duKHJhd1Byb3BzLCBrZXkpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICghZmFsc2UgKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgYXR0cnNba2V5XTtcclxuICAgICAgICAgICAgICAgICAgICBoYXNBdHRyc0NoYW5nZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gdHJpZ2dlciB1cGRhdGVzIGZvciAkYXR0cnMgaW4gY2FzZSBpdCdzIHVzZWQgaW4gY29tcG9uZW50IHNsb3RzXHJcbiAgICBpZiAoaGFzQXR0cnNDaGFuZ2VkKSB7XHJcbiAgICAgICAgdHJpZ2dlcihpbnN0YW5jZSwgXCJzZXRcIiAvKiBUcmlnZ2VyT3BUeXBlcy5TRVQgKi8sICckYXR0cnMnKTtcclxuICAgIH1cclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICB2YWxpZGF0ZVByb3BzKHJhd1Byb3BzIHx8IHt9LCBwcm9wcywgaW5zdGFuY2UpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHNldEZ1bGxQcm9wcyhpbnN0YW5jZSwgcmF3UHJvcHMsIHByb3BzLCBhdHRycykge1xyXG4gICAgY29uc3QgW29wdGlvbnMsIG5lZWRDYXN0S2V5c10gPSBpbnN0YW5jZS5wcm9wc09wdGlvbnM7XHJcbiAgICBsZXQgaGFzQXR0cnNDaGFuZ2VkID0gZmFsc2U7XHJcbiAgICBsZXQgcmF3Q2FzdFZhbHVlcztcclxuICAgIGlmIChyYXdQcm9wcykge1xyXG4gICAgICAgIGZvciAobGV0IGtleSBpbiByYXdQcm9wcykge1xyXG4gICAgICAgICAgICAvLyBrZXksIHJlZiBhcmUgcmVzZXJ2ZWQgYW5kIG5ldmVyIHBhc3NlZCBkb3duXHJcbiAgICAgICAgICAgIGlmIChpc1Jlc2VydmVkUHJvcChrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHJhd1Byb3BzW2tleV07XHJcbiAgICAgICAgICAgIC8vIHByb3Agb3B0aW9uIG5hbWVzIGFyZSBjYW1lbGl6ZWQgZHVyaW5nIG5vcm1hbGl6YXRpb24sIHNvIHRvIHN1cHBvcnRcclxuICAgICAgICAgICAgLy8ga2ViYWIgLT4gY2FtZWwgY29udmVyc2lvbiBoZXJlIHdlIG5lZWQgdG8gY2FtZWxpemUgdGhlIGtleS5cclxuICAgICAgICAgICAgbGV0IGNhbWVsS2V5O1xyXG4gICAgICAgICAgICBpZiAob3B0aW9ucyAmJiBoYXNPd24ob3B0aW9ucywgKGNhbWVsS2V5ID0gY2FtZWxpemUoa2V5KSkpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIW5lZWRDYXN0S2V5cyB8fCAhbmVlZENhc3RLZXlzLmluY2x1ZGVzKGNhbWVsS2V5KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHByb3BzW2NhbWVsS2V5XSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgKHJhd0Nhc3RWYWx1ZXMgfHwgKHJhd0Nhc3RWYWx1ZXMgPSB7fSkpW2NhbWVsS2V5XSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKCFpc0VtaXRMaXN0ZW5lcihpbnN0YW5jZS5lbWl0c09wdGlvbnMsIGtleSkpIHtcclxuICAgICAgICAgICAgICAgIGlmICghKGtleSBpbiBhdHRycykgfHwgdmFsdWUgIT09IGF0dHJzW2tleV0pIHtcclxuICAgICAgICAgICAgICAgICAgICBhdHRyc1trZXldID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgaGFzQXR0cnNDaGFuZ2VkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChuZWVkQ2FzdEtleXMpIHtcclxuICAgICAgICBjb25zdCByYXdDdXJyZW50UHJvcHMgPSB0b1Jhdyhwcm9wcyk7XHJcbiAgICAgICAgY29uc3QgY2FzdFZhbHVlcyA9IHJhd0Nhc3RWYWx1ZXMgfHwgRU1QVFlfT0JKO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmVlZENhc3RLZXlzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IG5lZWRDYXN0S2V5c1tpXTtcclxuICAgICAgICAgICAgcHJvcHNba2V5XSA9IHJlc29sdmVQcm9wVmFsdWUob3B0aW9ucywgcmF3Q3VycmVudFByb3BzLCBrZXksIGNhc3RWYWx1ZXNba2V5XSwgaW5zdGFuY2UsICFoYXNPd24oY2FzdFZhbHVlcywga2V5KSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGhhc0F0dHJzQ2hhbmdlZDtcclxufVxyXG5mdW5jdGlvbiByZXNvbHZlUHJvcFZhbHVlKG9wdGlvbnMsIHByb3BzLCBrZXksIHZhbHVlLCBpbnN0YW5jZSwgaXNBYnNlbnQpIHtcclxuICAgIGNvbnN0IG9wdCA9IG9wdGlvbnNba2V5XTtcclxuICAgIGlmIChvcHQgIT0gbnVsbCkge1xyXG4gICAgICAgIGNvbnN0IGhhc0RlZmF1bHQgPSBoYXNPd24ob3B0LCAnZGVmYXVsdCcpO1xyXG4gICAgICAgIC8vIGRlZmF1bHQgdmFsdWVzXHJcbiAgICAgICAgaWYgKGhhc0RlZmF1bHQgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSBvcHQuZGVmYXVsdDtcclxuICAgICAgICAgICAgaWYgKG9wdC50eXBlICE9PSBGdW5jdGlvbiAmJiBpc0Z1bmN0aW9uKGRlZmF1bHRWYWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgcHJvcHNEZWZhdWx0cyB9ID0gaW5zdGFuY2U7XHJcbiAgICAgICAgICAgICAgICBpZiAoa2V5IGluIHByb3BzRGVmYXVsdHMpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHByb3BzRGVmYXVsdHNba2V5XTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHNldEN1cnJlbnRJbnN0YW5jZShpbnN0YW5jZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBwcm9wc0RlZmF1bHRzW2tleV0gPSBkZWZhdWx0VmFsdWUuY2FsbChudWxsLCBwcm9wcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdW5zZXRDdXJyZW50SW5zdGFuY2UoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlID0gZGVmYXVsdFZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGJvb2xlYW4gY2FzdGluZ1xyXG4gICAgICAgIGlmIChvcHRbMCAvKiBCb29sZWFuRmxhZ3Muc2hvdWxkQ2FzdCAqL10pIHtcclxuICAgICAgICAgICAgaWYgKGlzQWJzZW50ICYmICFoYXNEZWZhdWx0KSB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKG9wdFsxIC8qIEJvb2xlYW5GbGFncy5zaG91bGRDYXN0VHJ1ZSAqL10gJiZcclxuICAgICAgICAgICAgICAgICh2YWx1ZSA9PT0gJycgfHwgdmFsdWUgPT09IGh5cGhlbmF0ZShrZXkpKSkge1xyXG4gICAgICAgICAgICAgICAgdmFsdWUgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG59XHJcbmZ1bmN0aW9uIG5vcm1hbGl6ZVByb3BzT3B0aW9ucyhjb21wLCBhcHBDb250ZXh0LCBhc01peGluID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IGNhY2hlID0gYXBwQ29udGV4dC5wcm9wc0NhY2hlO1xyXG4gICAgY29uc3QgY2FjaGVkID0gY2FjaGUuZ2V0KGNvbXApO1xyXG4gICAgaWYgKGNhY2hlZCkge1xyXG4gICAgICAgIHJldHVybiBjYWNoZWQ7XHJcbiAgICB9XHJcbiAgICBjb25zdCByYXcgPSBjb21wLnByb3BzO1xyXG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IHt9O1xyXG4gICAgY29uc3QgbmVlZENhc3RLZXlzID0gW107XHJcbiAgICAvLyBhcHBseSBtaXhpbi9leHRlbmRzIHByb3BzXHJcbiAgICBsZXQgaGFzRXh0ZW5kcyA9IGZhbHNlO1xyXG4gICAgaWYgKF9fVlVFX09QVElPTlNfQVBJX18gJiYgIWlzRnVuY3Rpb24oY29tcCkpIHtcclxuICAgICAgICBjb25zdCBleHRlbmRQcm9wcyA9IChyYXcpID0+IHtcclxuICAgICAgICAgICAgaGFzRXh0ZW5kcyA9IHRydWU7XHJcbiAgICAgICAgICAgIGNvbnN0IFtwcm9wcywga2V5c10gPSBub3JtYWxpemVQcm9wc09wdGlvbnMocmF3LCBhcHBDb250ZXh0LCB0cnVlKTtcclxuICAgICAgICAgICAgZXh0ZW5kKG5vcm1hbGl6ZWQsIHByb3BzKTtcclxuICAgICAgICAgICAgaWYgKGtleXMpXHJcbiAgICAgICAgICAgICAgICBuZWVkQ2FzdEtleXMucHVzaCguLi5rZXlzKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmICghYXNNaXhpbiAmJiBhcHBDb250ZXh0Lm1peGlucy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgYXBwQ29udGV4dC5taXhpbnMuZm9yRWFjaChleHRlbmRQcm9wcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjb21wLmV4dGVuZHMpIHtcclxuICAgICAgICAgICAgZXh0ZW5kUHJvcHMoY29tcC5leHRlbmRzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNvbXAubWl4aW5zKSB7XHJcbiAgICAgICAgICAgIGNvbXAubWl4aW5zLmZvckVhY2goZXh0ZW5kUHJvcHMpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghcmF3ICYmICFoYXNFeHRlbmRzKSB7XHJcbiAgICAgICAgaWYgKGlzT2JqZWN0KGNvbXApKSB7XHJcbiAgICAgICAgICAgIGNhY2hlLnNldChjb21wLCBFTVBUWV9BUlIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gRU1QVFlfQVJSO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzQXJyYXkocmF3KSkge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmF3Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWlzU3RyaW5nKHJhd1tpXSkpIHtcclxuICAgICAgICAgICAgICAgIHdhcm4oYHByb3BzIG11c3QgYmUgc3RyaW5ncyB3aGVuIHVzaW5nIGFycmF5IHN5bnRheC5gLCByYXdbaV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRLZXkgPSBjYW1lbGl6ZShyYXdbaV0pO1xyXG4gICAgICAgICAgICBpZiAodmFsaWRhdGVQcm9wTmFtZShub3JtYWxpemVkS2V5KSkge1xyXG4gICAgICAgICAgICAgICAgbm9ybWFsaXplZFtub3JtYWxpemVkS2V5XSA9IEVNUFRZX09CSjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHJhdykge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWlzT2JqZWN0KHJhdykpIHtcclxuICAgICAgICAgICAgd2FybihgaW52YWxpZCBwcm9wcyBvcHRpb25zYCwgcmF3KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcmF3KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRLZXkgPSBjYW1lbGl6ZShrZXkpO1xyXG4gICAgICAgICAgICBpZiAodmFsaWRhdGVQcm9wTmFtZShub3JtYWxpemVkS2V5KSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgb3B0ID0gcmF3W2tleV07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9wID0gKG5vcm1hbGl6ZWRbbm9ybWFsaXplZEtleV0gPVxyXG4gICAgICAgICAgICAgICAgICAgIGlzQXJyYXkob3B0KSB8fCBpc0Z1bmN0aW9uKG9wdCkgPyB7IHR5cGU6IG9wdCB9IDogb3B0KTtcclxuICAgICAgICAgICAgICAgIGlmIChwcm9wKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9vbGVhbkluZGV4ID0gZ2V0VHlwZUluZGV4KEJvb2xlYW4sIHByb3AudHlwZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RyaW5nSW5kZXggPSBnZXRUeXBlSW5kZXgoU3RyaW5nLCBwcm9wLnR5cGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHByb3BbMCAvKiBCb29sZWFuRmxhZ3Muc2hvdWxkQ2FzdCAqL10gPSBib29sZWFuSW5kZXggPiAtMTtcclxuICAgICAgICAgICAgICAgICAgICBwcm9wWzEgLyogQm9vbGVhbkZsYWdzLnNob3VsZENhc3RUcnVlICovXSA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ0luZGV4IDwgMCB8fCBib29sZWFuSW5kZXggPCBzdHJpbmdJbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgcHJvcCBuZWVkcyBib29sZWFuIGNhc3Rpbmcgb3IgZGVmYXVsdCB2YWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChib29sZWFuSW5kZXggPiAtMSB8fCBoYXNPd24ocHJvcCwgJ2RlZmF1bHQnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZWVkQ2FzdEtleXMucHVzaChub3JtYWxpemVkS2V5KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCByZXMgPSBbbm9ybWFsaXplZCwgbmVlZENhc3RLZXlzXTtcclxuICAgIGlmIChpc09iamVjdChjb21wKSkge1xyXG4gICAgICAgIGNhY2hlLnNldChjb21wLCByZXMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcztcclxufVxyXG5mdW5jdGlvbiB2YWxpZGF0ZVByb3BOYW1lKGtleSkge1xyXG4gICAgaWYgKGtleVswXSAhPT0gJyQnKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICB3YXJuKGBJbnZhbGlkIHByb3AgbmFtZTogXCIke2tleX1cIiBpcyBhIHJlc2VydmVkIHByb3BlcnR5LmApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG59XHJcbi8vIHVzZSBmdW5jdGlvbiBzdHJpbmcgbmFtZSB0byBjaGVjayB0eXBlIGNvbnN0cnVjdG9yc1xyXG4vLyBzbyB0aGF0IGl0IHdvcmtzIGFjcm9zcyB2bXMgLyBpZnJhbWVzLlxyXG5mdW5jdGlvbiBnZXRUeXBlKGN0b3IpIHtcclxuICAgIGNvbnN0IG1hdGNoID0gY3RvciAmJiBjdG9yLnRvU3RyaW5nKCkubWF0Y2goL15cXHMqZnVuY3Rpb24gKFxcdyspLyk7XHJcbiAgICByZXR1cm4gbWF0Y2ggPyBtYXRjaFsxXSA6IGN0b3IgPT09IG51bGwgPyAnbnVsbCcgOiAnJztcclxufVxyXG5mdW5jdGlvbiBpc1NhbWVUeXBlKGEsIGIpIHtcclxuICAgIHJldHVybiBnZXRUeXBlKGEpID09PSBnZXRUeXBlKGIpO1xyXG59XHJcbmZ1bmN0aW9uIGdldFR5cGVJbmRleCh0eXBlLCBleHBlY3RlZFR5cGVzKSB7XHJcbiAgICBpZiAoaXNBcnJheShleHBlY3RlZFR5cGVzKSkge1xyXG4gICAgICAgIHJldHVybiBleHBlY3RlZFR5cGVzLmZpbmRJbmRleCh0ID0+IGlzU2FtZVR5cGUodCwgdHlwZSkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNGdW5jdGlvbihleHBlY3RlZFR5cGVzKSkge1xyXG4gICAgICAgIHJldHVybiBpc1NhbWVUeXBlKGV4cGVjdGVkVHlwZXMsIHR5cGUpID8gMCA6IC0xO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIC0xO1xyXG59XHJcbi8qKlxyXG4gKiBkZXYgb25seVxyXG4gKi9cclxuZnVuY3Rpb24gdmFsaWRhdGVQcm9wcyhyYXdQcm9wcywgcHJvcHMsIGluc3RhbmNlKSB7XHJcbiAgICBjb25zdCByZXNvbHZlZFZhbHVlcyA9IHRvUmF3KHByb3BzKTtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSBpbnN0YW5jZS5wcm9wc09wdGlvbnNbMF07XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBvcHRpb25zKSB7XHJcbiAgICAgICAgbGV0IG9wdCA9IG9wdGlvbnNba2V5XTtcclxuICAgICAgICBpZiAob3B0ID09IG51bGwpXHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIHZhbGlkYXRlUHJvcChrZXksIHJlc29sdmVkVmFsdWVzW2tleV0sIG9wdCwgIWhhc093bihyYXdQcm9wcywga2V5KSAmJiAhaGFzT3duKHJhd1Byb3BzLCBoeXBoZW5hdGUoa2V5KSkpO1xyXG4gICAgfVxyXG59XHJcbi8qKlxyXG4gKiBkZXYgb25seVxyXG4gKi9cclxuZnVuY3Rpb24gdmFsaWRhdGVQcm9wKG5hbWUsIHZhbHVlLCBwcm9wLCBpc0Fic2VudCkge1xyXG4gICAgY29uc3QgeyB0eXBlLCByZXF1aXJlZCwgdmFsaWRhdG9yIH0gPSBwcm9wO1xyXG4gICAgLy8gcmVxdWlyZWQhXHJcbiAgICBpZiAocmVxdWlyZWQgJiYgaXNBYnNlbnQpIHtcclxuICAgICAgICB3YXJuKCdNaXNzaW5nIHJlcXVpcmVkIHByb3A6IFwiJyArIG5hbWUgKyAnXCInKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyBtaXNzaW5nIGJ1dCBvcHRpb25hbFxyXG4gICAgaWYgKHZhbHVlID09IG51bGwgJiYgIXByb3AucmVxdWlyZWQpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyB0eXBlIGNoZWNrXHJcbiAgICBpZiAodHlwZSAhPSBudWxsICYmIHR5cGUgIT09IHRydWUpIHtcclxuICAgICAgICBsZXQgaXNWYWxpZCA9IGZhbHNlO1xyXG4gICAgICAgIGNvbnN0IHR5cGVzID0gaXNBcnJheSh0eXBlKSA/IHR5cGUgOiBbdHlwZV07XHJcbiAgICAgICAgY29uc3QgZXhwZWN0ZWRUeXBlcyA9IFtdO1xyXG4gICAgICAgIC8vIHZhbHVlIGlzIHZhbGlkIGFzIGxvbmcgYXMgb25lIG9mIHRoZSBzcGVjaWZpZWQgdHlwZXMgbWF0Y2hcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aCAmJiAhaXNWYWxpZDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgdmFsaWQsIGV4cGVjdGVkVHlwZSB9ID0gYXNzZXJ0VHlwZSh2YWx1ZSwgdHlwZXNbaV0pO1xyXG4gICAgICAgICAgICBleHBlY3RlZFR5cGVzLnB1c2goZXhwZWN0ZWRUeXBlIHx8ICcnKTtcclxuICAgICAgICAgICAgaXNWYWxpZCA9IHZhbGlkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWlzVmFsaWQpIHtcclxuICAgICAgICAgICAgd2FybihnZXRJbnZhbGlkVHlwZU1lc3NhZ2UobmFtZSwgdmFsdWUsIGV4cGVjdGVkVHlwZXMpKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIGN1c3RvbSB2YWxpZGF0b3JcclxuICAgIGlmICh2YWxpZGF0b3IgJiYgIXZhbGlkYXRvcih2YWx1ZSkpIHtcclxuICAgICAgICB3YXJuKCdJbnZhbGlkIHByb3A6IGN1c3RvbSB2YWxpZGF0b3IgY2hlY2sgZmFpbGVkIGZvciBwcm9wIFwiJyArIG5hbWUgKyAnXCIuJyk7XHJcbiAgICB9XHJcbn1cclxuY29uc3QgaXNTaW1wbGVUeXBlID0gLyojX19QVVJFX18qLyBtYWtlTWFwKCdTdHJpbmcsTnVtYmVyLEJvb2xlYW4sRnVuY3Rpb24sU3ltYm9sLEJpZ0ludCcpO1xyXG4vKipcclxuICogZGV2IG9ubHlcclxuICovXHJcbmZ1bmN0aW9uIGFzc2VydFR5cGUodmFsdWUsIHR5cGUpIHtcclxuICAgIGxldCB2YWxpZDtcclxuICAgIGNvbnN0IGV4cGVjdGVkVHlwZSA9IGdldFR5cGUodHlwZSk7XHJcbiAgICBpZiAoaXNTaW1wbGVUeXBlKGV4cGVjdGVkVHlwZSkpIHtcclxuICAgICAgICBjb25zdCB0ID0gdHlwZW9mIHZhbHVlO1xyXG4gICAgICAgIHZhbGlkID0gdCA9PT0gZXhwZWN0ZWRUeXBlLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgLy8gZm9yIHByaW1pdGl2ZSB3cmFwcGVyIG9iamVjdHNcclxuICAgICAgICBpZiAoIXZhbGlkICYmIHQgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgIHZhbGlkID0gdmFsdWUgaW5zdGFuY2VvZiB0eXBlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGV4cGVjdGVkVHlwZSA9PT0gJ09iamVjdCcpIHtcclxuICAgICAgICB2YWxpZCA9IGlzT2JqZWN0KHZhbHVlKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGV4cGVjdGVkVHlwZSA9PT0gJ0FycmF5Jykge1xyXG4gICAgICAgIHZhbGlkID0gaXNBcnJheSh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChleHBlY3RlZFR5cGUgPT09ICdudWxsJykge1xyXG4gICAgICAgIHZhbGlkID0gdmFsdWUgPT09IG51bGw7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICB2YWxpZCA9IHZhbHVlIGluc3RhbmNlb2YgdHlwZTtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdmFsaWQsXHJcbiAgICAgICAgZXhwZWN0ZWRUeXBlXHJcbiAgICB9O1xyXG59XHJcbi8qKlxyXG4gKiBkZXYgb25seVxyXG4gKi9cclxuZnVuY3Rpb24gZ2V0SW52YWxpZFR5cGVNZXNzYWdlKG5hbWUsIHZhbHVlLCBleHBlY3RlZFR5cGVzKSB7XHJcbiAgICBsZXQgbWVzc2FnZSA9IGBJbnZhbGlkIHByb3A6IHR5cGUgY2hlY2sgZmFpbGVkIGZvciBwcm9wIFwiJHtuYW1lfVwiLmAgK1xyXG4gICAgICAgIGAgRXhwZWN0ZWQgJHtleHBlY3RlZFR5cGVzLm1hcChjYXBpdGFsaXplKS5qb2luKCcgfCAnKX1gO1xyXG4gICAgY29uc3QgZXhwZWN0ZWRUeXBlID0gZXhwZWN0ZWRUeXBlc1swXTtcclxuICAgIGNvbnN0IHJlY2VpdmVkVHlwZSA9IHRvUmF3VHlwZSh2YWx1ZSk7XHJcbiAgICBjb25zdCBleHBlY3RlZFZhbHVlID0gc3R5bGVWYWx1ZSh2YWx1ZSwgZXhwZWN0ZWRUeXBlKTtcclxuICAgIGNvbnN0IHJlY2VpdmVkVmFsdWUgPSBzdHlsZVZhbHVlKHZhbHVlLCByZWNlaXZlZFR5cGUpO1xyXG4gICAgLy8gY2hlY2sgaWYgd2UgbmVlZCB0byBzcGVjaWZ5IGV4cGVjdGVkIHZhbHVlXHJcbiAgICBpZiAoZXhwZWN0ZWRUeXBlcy5sZW5ndGggPT09IDEgJiZcclxuICAgICAgICBpc0V4cGxpY2FibGUoZXhwZWN0ZWRUeXBlKSAmJlxyXG4gICAgICAgICFpc0Jvb2xlYW4oZXhwZWN0ZWRUeXBlLCByZWNlaXZlZFR5cGUpKSB7XHJcbiAgICAgICAgbWVzc2FnZSArPSBgIHdpdGggdmFsdWUgJHtleHBlY3RlZFZhbHVlfWA7XHJcbiAgICB9XHJcbiAgICBtZXNzYWdlICs9IGAsIGdvdCAke3JlY2VpdmVkVHlwZX0gYDtcclxuICAgIC8vIGNoZWNrIGlmIHdlIG5lZWQgdG8gc3BlY2lmeSByZWNlaXZlZCB2YWx1ZVxyXG4gICAgaWYgKGlzRXhwbGljYWJsZShyZWNlaXZlZFR5cGUpKSB7XHJcbiAgICAgICAgbWVzc2FnZSArPSBgd2l0aCB2YWx1ZSAke3JlY2VpdmVkVmFsdWV9LmA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbWVzc2FnZTtcclxufVxyXG4vKipcclxuICogZGV2IG9ubHlcclxuICovXHJcbmZ1bmN0aW9uIHN0eWxlVmFsdWUodmFsdWUsIHR5cGUpIHtcclxuICAgIGlmICh0eXBlID09PSAnU3RyaW5nJykge1xyXG4gICAgICAgIHJldHVybiBgXCIke3ZhbHVlfVwiYDtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHR5cGUgPT09ICdOdW1iZXInKSB7XHJcbiAgICAgICAgcmV0dXJuIGAke051bWJlcih2YWx1ZSl9YDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBgJHt2YWx1ZX1gO1xyXG4gICAgfVxyXG59XHJcbi8qKlxyXG4gKiBkZXYgb25seVxyXG4gKi9cclxuZnVuY3Rpb24gaXNFeHBsaWNhYmxlKHR5cGUpIHtcclxuICAgIGNvbnN0IGV4cGxpY2l0VHlwZXMgPSBbJ3N0cmluZycsICdudW1iZXInLCAnYm9vbGVhbiddO1xyXG4gICAgcmV0dXJuIGV4cGxpY2l0VHlwZXMuc29tZShlbGVtID0+IHR5cGUudG9Mb3dlckNhc2UoKSA9PT0gZWxlbSk7XHJcbn1cclxuLyoqXHJcbiAqIGRldiBvbmx5XHJcbiAqL1xyXG5mdW5jdGlvbiBpc0Jvb2xlYW4oLi4uYXJncykge1xyXG4gICAgcmV0dXJuIGFyZ3Muc29tZShlbGVtID0+IGVsZW0udG9Mb3dlckNhc2UoKSA9PT0gJ2Jvb2xlYW4nKTtcclxufVxuXG5jb25zdCBpc0ludGVybmFsS2V5ID0gKGtleSkgPT4ga2V5WzBdID09PSAnXycgfHwga2V5ID09PSAnJHN0YWJsZSc7XHJcbmNvbnN0IG5vcm1hbGl6ZVNsb3RWYWx1ZSA9ICh2YWx1ZSkgPT4gaXNBcnJheSh2YWx1ZSlcclxuICAgID8gdmFsdWUubWFwKG5vcm1hbGl6ZVZOb2RlKVxyXG4gICAgOiBbbm9ybWFsaXplVk5vZGUodmFsdWUpXTtcclxuY29uc3Qgbm9ybWFsaXplU2xvdCA9IChrZXksIHJhd1Nsb3QsIGN0eCkgPT4ge1xyXG4gICAgaWYgKHJhd1Nsb3QuX24pIHtcclxuICAgICAgICAvLyBhbHJlYWR5IG5vcm1hbGl6ZWQgLSAjNTM1M1xyXG4gICAgICAgIHJldHVybiByYXdTbG90O1xyXG4gICAgfVxyXG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IHdpdGhDdHgoKC4uLmFyZ3MpID0+IHtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGN1cnJlbnRJbnN0YW5jZSkge1xyXG4gICAgICAgICAgICB3YXJuKGBTbG90IFwiJHtrZXl9XCIgaW52b2tlZCBvdXRzaWRlIG9mIHRoZSByZW5kZXIgZnVuY3Rpb246IGAgK1xyXG4gICAgICAgICAgICAgICAgYHRoaXMgd2lsbCBub3QgdHJhY2sgZGVwZW5kZW5jaWVzIHVzZWQgaW4gdGhlIHNsb3QuIGAgK1xyXG4gICAgICAgICAgICAgICAgYEludm9rZSB0aGUgc2xvdCBmdW5jdGlvbiBpbnNpZGUgdGhlIHJlbmRlciBmdW5jdGlvbiBpbnN0ZWFkLmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbm9ybWFsaXplU2xvdFZhbHVlKHJhd1Nsb3QoLi4uYXJncykpO1xyXG4gICAgfSwgY3R4KTtcclxuICAgIG5vcm1hbGl6ZWQuX2MgPSBmYWxzZTtcclxuICAgIHJldHVybiBub3JtYWxpemVkO1xyXG59O1xyXG5jb25zdCBub3JtYWxpemVPYmplY3RTbG90cyA9IChyYXdTbG90cywgc2xvdHMsIGluc3RhbmNlKSA9PiB7XHJcbiAgICBjb25zdCBjdHggPSByYXdTbG90cy5fY3R4O1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gcmF3U2xvdHMpIHtcclxuICAgICAgICBpZiAoaXNJbnRlcm5hbEtleShrZXkpKVxyXG4gICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IHJhd1Nsb3RzW2tleV07XHJcbiAgICAgICAgaWYgKGlzRnVuY3Rpb24odmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHNsb3RzW2tleV0gPSBub3JtYWxpemVTbG90KGtleSwgdmFsdWUsIGN0eCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHZhbHVlICE9IG51bGwpIHtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICAgICAgIShmYWxzZSApKSB7XHJcbiAgICAgICAgICAgICAgICB3YXJuKGBOb24tZnVuY3Rpb24gdmFsdWUgZW5jb3VudGVyZWQgZm9yIHNsb3QgXCIke2tleX1cIi4gYCArXHJcbiAgICAgICAgICAgICAgICAgICAgYFByZWZlciBmdW5jdGlvbiBzbG90cyBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLmApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBub3JtYWxpemVTbG90VmFsdWUodmFsdWUpO1xyXG4gICAgICAgICAgICBzbG90c1trZXldID0gKCkgPT4gbm9ybWFsaXplZDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XHJcbmNvbnN0IG5vcm1hbGl6ZVZOb2RlU2xvdHMgPSAoaW5zdGFuY2UsIGNoaWxkcmVuKSA9PiB7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgIWlzS2VlcEFsaXZlKGluc3RhbmNlLnZub2RlKSAmJlxyXG4gICAgICAgICEoZmFsc2UgKSkge1xyXG4gICAgICAgIHdhcm4oYE5vbi1mdW5jdGlvbiB2YWx1ZSBlbmNvdW50ZXJlZCBmb3IgZGVmYXVsdCBzbG90LiBgICtcclxuICAgICAgICAgICAgYFByZWZlciBmdW5jdGlvbiBzbG90cyBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLmApO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZVNsb3RWYWx1ZShjaGlsZHJlbik7XHJcbiAgICBpbnN0YW5jZS5zbG90cy5kZWZhdWx0ID0gKCkgPT4gbm9ybWFsaXplZDtcclxufTtcclxuY29uc3QgaW5pdFNsb3RzID0gKGluc3RhbmNlLCBjaGlsZHJlbikgPT4ge1xyXG4gICAgaWYgKGluc3RhbmNlLnZub2RlLnNoYXBlRmxhZyAmIDMyIC8qIFNoYXBlRmxhZ3MuU0xPVFNfQ0hJTERSRU4gKi8pIHtcclxuICAgICAgICBjb25zdCB0eXBlID0gY2hpbGRyZW4uXztcclxuICAgICAgICBpZiAodHlwZSkge1xyXG4gICAgICAgICAgICAvLyB1c2VycyBjYW4gZ2V0IHRoZSBzaGFsbG93IHJlYWRvbmx5IHZlcnNpb24gb2YgdGhlIHNsb3RzIG9iamVjdCB0aHJvdWdoIGB0aGlzLiRzbG90c2AsXHJcbiAgICAgICAgICAgIC8vIHdlIHNob3VsZCBhdm9pZCB0aGUgcHJveHkgb2JqZWN0IHBvbGx1dGluZyB0aGUgc2xvdHMgb2YgdGhlIGludGVybmFsIGluc3RhbmNlXHJcbiAgICAgICAgICAgIGluc3RhbmNlLnNsb3RzID0gdG9SYXcoY2hpbGRyZW4pO1xyXG4gICAgICAgICAgICAvLyBtYWtlIGNvbXBpbGVyIG1hcmtlciBub24tZW51bWVyYWJsZVxyXG4gICAgICAgICAgICBkZWYoY2hpbGRyZW4sICdfJywgdHlwZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBub3JtYWxpemVPYmplY3RTbG90cyhjaGlsZHJlbiwgKGluc3RhbmNlLnNsb3RzID0ge30pKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBpbnN0YW5jZS5zbG90cyA9IHt9O1xyXG4gICAgICAgIGlmIChjaGlsZHJlbikge1xyXG4gICAgICAgICAgICBub3JtYWxpemVWTm9kZVNsb3RzKGluc3RhbmNlLCBjaGlsZHJlbik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZGVmKGluc3RhbmNlLnNsb3RzLCBJbnRlcm5hbE9iamVjdEtleSwgMSk7XHJcbn07XHJcbmNvbnN0IHVwZGF0ZVNsb3RzID0gKGluc3RhbmNlLCBjaGlsZHJlbiwgb3B0aW1pemVkKSA9PiB7XHJcbiAgICBjb25zdCB7IHZub2RlLCBzbG90cyB9ID0gaW5zdGFuY2U7XHJcbiAgICBsZXQgbmVlZERlbGV0aW9uQ2hlY2sgPSB0cnVlO1xyXG4gICAgbGV0IGRlbGV0aW9uQ29tcGFyaXNvblRhcmdldCA9IEVNUFRZX09CSjtcclxuICAgIGlmICh2bm9kZS5zaGFwZUZsYWcgJiAzMiAvKiBTaGFwZUZsYWdzLlNMT1RTX0NISUxEUkVOICovKSB7XHJcbiAgICAgICAgY29uc3QgdHlwZSA9IGNoaWxkcmVuLl87XHJcbiAgICAgICAgaWYgKHR5cGUpIHtcclxuICAgICAgICAgICAgLy8gY29tcGlsZWQgc2xvdHMuXHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgaXNIbXJVcGRhdGluZykge1xyXG4gICAgICAgICAgICAgICAgLy8gUGFyZW50IHdhcyBITVIgdXBkYXRlZCBzbyBzbG90IGNvbnRlbnQgbWF5IGhhdmUgY2hhbmdlZC5cclxuICAgICAgICAgICAgICAgIC8vIGZvcmNlIHVwZGF0ZSBzbG90cyBhbmQgbWFyayBpbnN0YW5jZSBmb3IgaG1yIGFzIHdlbGxcclxuICAgICAgICAgICAgICAgIGV4dGVuZChzbG90cywgY2hpbGRyZW4pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKG9wdGltaXplZCAmJiB0eXBlID09PSAxIC8qIFNsb3RGbGFncy5TVEFCTEUgKi8pIHtcclxuICAgICAgICAgICAgICAgIC8vIGNvbXBpbGVkIEFORCBzdGFibGUuXHJcbiAgICAgICAgICAgICAgICAvLyBubyBuZWVkIHRvIHVwZGF0ZSwgYW5kIHNraXAgc3RhbGUgc2xvdHMgcmVtb3ZhbC5cclxuICAgICAgICAgICAgICAgIG5lZWREZWxldGlvbkNoZWNrID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb21waWxlZCBidXQgZHluYW1pYyAodi1pZi92LWZvciBvbiBzbG90cykgLSB1cGRhdGUgc2xvdHMsIGJ1dCBza2lwXHJcbiAgICAgICAgICAgICAgICAvLyBub3JtYWxpemF0aW9uLlxyXG4gICAgICAgICAgICAgICAgZXh0ZW5kKHNsb3RzLCBjaGlsZHJlbik7XHJcbiAgICAgICAgICAgICAgICAvLyAjMjg5M1xyXG4gICAgICAgICAgICAgICAgLy8gd2hlbiByZW5kZXJpbmcgdGhlIG9wdGltaXplZCBzbG90cyBieSBtYW51YWxseSB3cml0dGVuIHJlbmRlciBmdW5jdGlvbixcclxuICAgICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gZGVsZXRlIHRoZSBgc2xvdHMuX2AgZmxhZyBpZiBuZWNlc3NhcnkgdG8gbWFrZSBzdWJzZXF1ZW50IHVwZGF0ZXMgcmVsaWFibGUsXHJcbiAgICAgICAgICAgICAgICAvLyBpLmUuIGxldCB0aGUgYHJlbmRlclNsb3RgIGNyZWF0ZSB0aGUgYmFpbGVkIEZyYWdtZW50XHJcbiAgICAgICAgICAgICAgICBpZiAoIW9wdGltaXplZCAmJiB0eXBlID09PSAxIC8qIFNsb3RGbGFncy5TVEFCTEUgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgc2xvdHMuXztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbmVlZERlbGV0aW9uQ2hlY2sgPSAhY2hpbGRyZW4uJHN0YWJsZTtcclxuICAgICAgICAgICAgbm9ybWFsaXplT2JqZWN0U2xvdHMoY2hpbGRyZW4sIHNsb3RzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZGVsZXRpb25Db21wYXJpc29uVGFyZ2V0ID0gY2hpbGRyZW47XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChjaGlsZHJlbikge1xyXG4gICAgICAgIC8vIG5vbiBzbG90IG9iamVjdCBjaGlsZHJlbiAoZGlyZWN0IHZhbHVlKSBwYXNzZWQgdG8gYSBjb21wb25lbnRcclxuICAgICAgICBub3JtYWxpemVWTm9kZVNsb3RzKGluc3RhbmNlLCBjaGlsZHJlbik7XHJcbiAgICAgICAgZGVsZXRpb25Db21wYXJpc29uVGFyZ2V0ID0geyBkZWZhdWx0OiAxIH07XHJcbiAgICB9XHJcbiAgICAvLyBkZWxldGUgc3RhbGUgc2xvdHNcclxuICAgIGlmIChuZWVkRGVsZXRpb25DaGVjaykge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHNsb3RzKSB7XHJcbiAgICAgICAgICAgIGlmICghaXNJbnRlcm5hbEtleShrZXkpICYmICEoa2V5IGluIGRlbGV0aW9uQ29tcGFyaXNvblRhcmdldCkpIHtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZSBzbG90c1trZXldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59O1xuXG5mdW5jdGlvbiBjcmVhdGVBcHBDb250ZXh0KCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBhcHA6IG51bGwsXHJcbiAgICAgICAgY29uZmlnOiB7XHJcbiAgICAgICAgICAgIGlzTmF0aXZlVGFnOiBOTyxcclxuICAgICAgICAgICAgcGVyZm9ybWFuY2U6IGZhbHNlLFxyXG4gICAgICAgICAgICBnbG9iYWxQcm9wZXJ0aWVzOiB7fSxcclxuICAgICAgICAgICAgb3B0aW9uTWVyZ2VTdHJhdGVnaWVzOiB7fSxcclxuICAgICAgICAgICAgZXJyb3JIYW5kbGVyOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgIHdhcm5IYW5kbGVyOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgIGNvbXBpbGVyT3B0aW9uczoge31cclxuICAgICAgICB9LFxyXG4gICAgICAgIG1peGluczogW10sXHJcbiAgICAgICAgY29tcG9uZW50czoge30sXHJcbiAgICAgICAgZGlyZWN0aXZlczoge30sXHJcbiAgICAgICAgcHJvdmlkZXM6IE9iamVjdC5jcmVhdGUobnVsbCksXHJcbiAgICAgICAgb3B0aW9uc0NhY2hlOiBuZXcgV2Vha01hcCgpLFxyXG4gICAgICAgIHByb3BzQ2FjaGU6IG5ldyBXZWFrTWFwKCksXHJcbiAgICAgICAgZW1pdHNDYWNoZTogbmV3IFdlYWtNYXAoKVxyXG4gICAgfTtcclxufVxyXG5sZXQgdWlkID0gMDtcclxuZnVuY3Rpb24gY3JlYXRlQXBwQVBJKHJlbmRlciwgaHlkcmF0ZSkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uIGNyZWF0ZUFwcChyb290Q29tcG9uZW50LCByb290UHJvcHMgPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKCFpc0Z1bmN0aW9uKHJvb3RDb21wb25lbnQpKSB7XHJcbiAgICAgICAgICAgIHJvb3RDb21wb25lbnQgPSBPYmplY3QuYXNzaWduKHt9LCByb290Q29tcG9uZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHJvb3RQcm9wcyAhPSBudWxsICYmICFpc09iamVjdChyb290UHJvcHMpKSB7XHJcbiAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiB3YXJuKGByb290IHByb3BzIHBhc3NlZCB0byBhcHAubW91bnQoKSBtdXN0IGJlIGFuIG9iamVjdC5gKTtcclxuICAgICAgICAgICAgcm9vdFByb3BzID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY29udGV4dCA9IGNyZWF0ZUFwcENvbnRleHQoKTtcclxuICAgICAgICBjb25zdCBpbnN0YWxsZWRQbHVnaW5zID0gbmV3IFNldCgpO1xyXG4gICAgICAgIGxldCBpc01vdW50ZWQgPSBmYWxzZTtcclxuICAgICAgICBjb25zdCBhcHAgPSAoY29udGV4dC5hcHAgPSB7XHJcbiAgICAgICAgICAgIF91aWQ6IHVpZCsrLFxyXG4gICAgICAgICAgICBfY29tcG9uZW50OiByb290Q29tcG9uZW50LFxyXG4gICAgICAgICAgICBfcHJvcHM6IHJvb3RQcm9wcyxcclxuICAgICAgICAgICAgX2NvbnRhaW5lcjogbnVsbCxcclxuICAgICAgICAgICAgX2NvbnRleHQ6IGNvbnRleHQsXHJcbiAgICAgICAgICAgIF9pbnN0YW5jZTogbnVsbCxcclxuICAgICAgICAgICAgdmVyc2lvbixcclxuICAgICAgICAgICAgZ2V0IGNvbmZpZygpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNvbmZpZztcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc2V0IGNvbmZpZyh2KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FybihgYXBwLmNvbmZpZyBjYW5ub3QgYmUgcmVwbGFjZWQuIE1vZGlmeSBpbmRpdmlkdWFsIG9wdGlvbnMgaW5zdGVhZC5gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgdXNlKHBsdWdpbiwgLi4ub3B0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGluc3RhbGxlZFBsdWdpbnMuaGFzKHBsdWdpbikpIHtcclxuICAgICAgICAgICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgd2FybihgUGx1Z2luIGhhcyBhbHJlYWR5IGJlZW4gYXBwbGllZCB0byB0YXJnZXQgYXBwLmApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocGx1Z2luICYmIGlzRnVuY3Rpb24ocGx1Z2luLmluc3RhbGwpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkUGx1Z2lucy5hZGQocGx1Z2luKTtcclxuICAgICAgICAgICAgICAgICAgICBwbHVnaW4uaW5zdGFsbChhcHAsIC4uLm9wdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNGdW5jdGlvbihwbHVnaW4pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkUGx1Z2lucy5hZGQocGx1Z2luKTtcclxuICAgICAgICAgICAgICAgICAgICBwbHVnaW4oYXBwLCAuLi5vcHRpb25zKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oYEEgcGx1Z2luIG11c3QgZWl0aGVyIGJlIGEgZnVuY3Rpb24gb3IgYW4gb2JqZWN0IHdpdGggYW4gXCJpbnN0YWxsXCIgYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBmdW5jdGlvbi5gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBhcHA7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG1peGluKG1peGluKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoX19WVUVfT1BUSU9OU19BUElfXykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghY29udGV4dC5taXhpbnMuaW5jbHVkZXMobWl4aW4pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubWl4aW5zLnB1c2gobWl4aW4pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2FybignTWl4aW4gaGFzIGFscmVhZHkgYmVlbiBhcHBsaWVkIHRvIHRhcmdldCBhcHAnICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtaXhpbi5uYW1lID8gYDogJHttaXhpbi5uYW1lfWAgOiAnJykpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oJ01peGlucyBhcmUgb25seSBhdmFpbGFibGUgaW4gYnVpbGRzIHN1cHBvcnRpbmcgT3B0aW9ucyBBUEknKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBhcHA7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNvbXBvbmVudChuYW1lLCBjb21wb25lbnQpIHtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZUNvbXBvbmVudE5hbWUobmFtZSwgY29udGV4dC5jb25maWcpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKCFjb21wb25lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jb21wb25lbnRzW25hbWVdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBjb250ZXh0LmNvbXBvbmVudHNbbmFtZV0pIHtcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKGBDb21wb25lbnQgXCIke25hbWV9XCIgaGFzIGFscmVhZHkgYmVlbiByZWdpc3RlcmVkIGluIHRhcmdldCBhcHAuYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmNvbXBvbmVudHNbbmFtZV0gPSBjb21wb25lbnQ7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYXBwO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBkaXJlY3RpdmUobmFtZSwgZGlyZWN0aXZlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVEaXJlY3RpdmVOYW1lKG5hbWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKCFkaXJlY3RpdmUpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5kaXJlY3RpdmVzW25hbWVdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBjb250ZXh0LmRpcmVjdGl2ZXNbbmFtZV0pIHtcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKGBEaXJlY3RpdmUgXCIke25hbWV9XCIgaGFzIGFscmVhZHkgYmVlbiByZWdpc3RlcmVkIGluIHRhcmdldCBhcHAuYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmRpcmVjdGl2ZXNbbmFtZV0gPSBkaXJlY3RpdmU7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYXBwO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBtb3VudChyb290Q29udGFpbmVyLCBpc0h5ZHJhdGUsIGlzU1ZHKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWlzTW91bnRlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vICM1NTcxXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiByb290Q29udGFpbmVyLl9fdnVlX2FwcF9fKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdhcm4oYFRoZXJlIGlzIGFscmVhZHkgYW4gYXBwIGluc3RhbmNlIG1vdW50ZWQgb24gdGhlIGhvc3QgY29udGFpbmVyLlxcbmAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYCBJZiB5b3Ugd2FudCB0byBtb3VudCBhbm90aGVyIGFwcCBvbiB0aGUgc2FtZSBob3N0IGNvbnRhaW5lcixgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAgeW91IG5lZWQgdG8gdW5tb3VudCB0aGUgcHJldmlvdXMgYXBwIGJ5IGNhbGxpbmcgXFxgYXBwLnVubW91bnQoKVxcYCBmaXJzdC5gKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm5vZGUgPSBjcmVhdGVWTm9kZShyb290Q29tcG9uZW50LCByb290UHJvcHMpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHN0b3JlIGFwcCBjb250ZXh0IG9uIHRoZSByb290IFZOb2RlLlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgd2lsbCBiZSBzZXQgb24gdGhlIHJvb3QgaW5zdGFuY2Ugb24gaW5pdGlhbCBtb3VudC5cclxuICAgICAgICAgICAgICAgICAgICB2bm9kZS5hcHBDb250ZXh0ID0gY29udGV4dDtcclxuICAgICAgICAgICAgICAgICAgICAvLyBITVIgcm9vdCByZWxvYWRcclxuICAgICAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQucmVsb2FkID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyKGNsb25lVk5vZGUodm5vZGUpLCByb290Q29udGFpbmVyLCBpc1NWRyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0h5ZHJhdGUgJiYgaHlkcmF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBoeWRyYXRlKHZub2RlLCByb290Q29udGFpbmVyKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcih2bm9kZSwgcm9vdENvbnRhaW5lciwgaXNTVkcpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpc01vdW50ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGFwcC5fY29udGFpbmVyID0gcm9vdENvbnRhaW5lcjtcclxuICAgICAgICAgICAgICAgICAgICByb290Q29udGFpbmVyLl9fdnVlX2FwcF9fID0gYXBwO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcC5faW5zdGFuY2UgPSB2bm9kZS5jb21wb25lbnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRldnRvb2xzSW5pdEFwcChhcHAsIHZlcnNpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0RXhwb3NlUHJveHkodm5vZGUuY29tcG9uZW50KSB8fCB2bm9kZS5jb21wb25lbnQucHJveHk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKGBBcHAgaGFzIGFscmVhZHkgYmVlbiBtb3VudGVkLlxcbmAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgSWYgeW91IHdhbnQgdG8gcmVtb3VudCB0aGUgc2FtZSBhcHAsIG1vdmUgeW91ciBhcHAgY3JlYXRpb24gbG9naWMgYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBpbnRvIGEgZmFjdG9yeSBmdW5jdGlvbiBhbmQgY3JlYXRlIGZyZXNoIGFwcCBpbnN0YW5jZXMgZm9yIGVhY2ggYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBtb3VudCAtIGUuZy4gXFxgY29uc3QgY3JlYXRlTXlBcHAgPSAoKSA9PiBjcmVhdGVBcHAoQXBwKVxcYGApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB1bm1vdW50KCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzTW91bnRlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlbmRlcihudWxsLCBhcHAuX2NvbnRhaW5lcik7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB8fCBfX1ZVRV9QUk9EX0RFVlRPT0xTX18pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwLl9pbnN0YW5jZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRldnRvb2xzVW5tb3VudEFwcChhcHApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgYXBwLl9jb250YWluZXIuX192dWVfYXBwX187XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKGBDYW5ub3QgdW5tb3VudCBhbiBhcHAgdGhhdCBpcyBub3QgbW91bnRlZC5gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgcHJvdmlkZShrZXksIHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIGtleSBpbiBjb250ZXh0LnByb3ZpZGVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FybihgQXBwIGFscmVhZHkgcHJvdmlkZXMgcHJvcGVydHkgd2l0aCBrZXkgXCIke1N0cmluZyhrZXkpfVwiLiBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYEl0IHdpbGwgYmUgb3ZlcndyaXR0ZW4gd2l0aCB0aGUgbmV3IHZhbHVlLmApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29udGV4dC5wcm92aWRlc1trZXldID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYXBwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIGFwcDtcclxuICAgIH07XHJcbn1cblxuLyoqXHJcbiAqIEZ1bmN0aW9uIGZvciBoYW5kbGluZyBhIHRlbXBsYXRlIHJlZlxyXG4gKi9cclxuZnVuY3Rpb24gc2V0UmVmKHJhd1JlZiwgb2xkUmF3UmVmLCBwYXJlbnRTdXNwZW5zZSwgdm5vZGUsIGlzVW5tb3VudCA9IGZhbHNlKSB7XHJcbiAgICBpZiAoaXNBcnJheShyYXdSZWYpKSB7XHJcbiAgICAgICAgcmF3UmVmLmZvckVhY2goKHIsIGkpID0+IHNldFJlZihyLCBvbGRSYXdSZWYgJiYgKGlzQXJyYXkob2xkUmF3UmVmKSA/IG9sZFJhd1JlZltpXSA6IG9sZFJhd1JlZiksIHBhcmVudFN1c3BlbnNlLCB2bm9kZSwgaXNVbm1vdW50KSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzQXN5bmNXcmFwcGVyKHZub2RlKSAmJiAhaXNVbm1vdW50KSB7XHJcbiAgICAgICAgLy8gd2hlbiBtb3VudGluZyBhc3luYyBjb21wb25lbnRzLCBub3RoaW5nIG5lZWRzIHRvIGJlIGRvbmUsXHJcbiAgICAgICAgLy8gYmVjYXVzZSB0aGUgdGVtcGxhdGUgcmVmIGlzIGZvcndhcmRlZCB0byBpbm5lciBjb21wb25lbnRcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCByZWZWYWx1ZSA9IHZub2RlLnNoYXBlRmxhZyAmIDQgLyogU2hhcGVGbGFncy5TVEFURUZVTF9DT01QT05FTlQgKi9cclxuICAgICAgICA/IGdldEV4cG9zZVByb3h5KHZub2RlLmNvbXBvbmVudCkgfHwgdm5vZGUuY29tcG9uZW50LnByb3h5XHJcbiAgICAgICAgOiB2bm9kZS5lbDtcclxuICAgIGNvbnN0IHZhbHVlID0gaXNVbm1vdW50ID8gbnVsbCA6IHJlZlZhbHVlO1xyXG4gICAgY29uc3QgeyBpOiBvd25lciwgcjogcmVmIH0gPSByYXdSZWY7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFvd25lcikge1xyXG4gICAgICAgIHdhcm4oYE1pc3NpbmcgcmVmIG93bmVyIGNvbnRleHQuIHJlZiBjYW5ub3QgYmUgdXNlZCBvbiBob2lzdGVkIHZub2Rlcy4gYCArXHJcbiAgICAgICAgICAgIGBBIHZub2RlIHdpdGggcmVmIG11c3QgYmUgY3JlYXRlZCBpbnNpZGUgdGhlIHJlbmRlciBmdW5jdGlvbi5gKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBvbGRSZWYgPSBvbGRSYXdSZWYgJiYgb2xkUmF3UmVmLnI7XHJcbiAgICBjb25zdCByZWZzID0gb3duZXIucmVmcyA9PT0gRU1QVFlfT0JKID8gKG93bmVyLnJlZnMgPSB7fSkgOiBvd25lci5yZWZzO1xyXG4gICAgY29uc3Qgc2V0dXBTdGF0ZSA9IG93bmVyLnNldHVwU3RhdGU7XHJcbiAgICAvLyBkeW5hbWljIHJlZiBjaGFuZ2VkLiB1bnNldCBvbGQgcmVmXHJcbiAgICBpZiAob2xkUmVmICE9IG51bGwgJiYgb2xkUmVmICE9PSByZWYpIHtcclxuICAgICAgICBpZiAoaXNTdHJpbmcob2xkUmVmKSkge1xyXG4gICAgICAgICAgICByZWZzW29sZFJlZl0gPSBudWxsO1xyXG4gICAgICAgICAgICBpZiAoaGFzT3duKHNldHVwU3RhdGUsIG9sZFJlZikpIHtcclxuICAgICAgICAgICAgICAgIHNldHVwU3RhdGVbb2xkUmVmXSA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaXNSZWYob2xkUmVmKSkge1xyXG4gICAgICAgICAgICBvbGRSZWYudmFsdWUgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChpc0Z1bmN0aW9uKHJlZikpIHtcclxuICAgICAgICBjYWxsV2l0aEVycm9ySGFuZGxpbmcocmVmLCBvd25lciwgMTIgLyogRXJyb3JDb2Rlcy5GVU5DVElPTl9SRUYgKi8sIFt2YWx1ZSwgcmVmc10pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3QgX2lzU3RyaW5nID0gaXNTdHJpbmcocmVmKTtcclxuICAgICAgICBjb25zdCBfaXNSZWYgPSBpc1JlZihyZWYpO1xyXG4gICAgICAgIGlmIChfaXNTdHJpbmcgfHwgX2lzUmVmKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRvU2V0ID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJhd1JlZi5mKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBfaXNTdHJpbmcgPyByZWZzW3JlZl0gOiByZWYudmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzVW5tb3VudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FycmF5KGV4aXN0aW5nKSAmJiByZW1vdmUoZXhpc3RpbmcsIHJlZlZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNBcnJheShleGlzdGluZykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfaXNTdHJpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZzW3JlZl0gPSBbcmVmVmFsdWVdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNPd24oc2V0dXBTdGF0ZSwgcmVmKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR1cFN0YXRlW3JlZl0gPSByZWZzW3JlZl07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmLnZhbHVlID0gW3JlZlZhbHVlXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmF3UmVmLmspXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnNbcmF3UmVmLmtdID0gcmVmLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFleGlzdGluZy5pbmNsdWRlcyhyZWZWYWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nLnB1c2gocmVmVmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoX2lzU3RyaW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVmc1tyZWZdID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhhc093bihzZXR1cFN0YXRlLCByZWYpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldHVwU3RhdGVbcmVmXSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKF9pc1JlZikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlZi52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyYXdSZWYuaylcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmc1tyYXdSZWYua10gPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oJ0ludmFsaWQgdGVtcGxhdGUgcmVmIHR5cGU6JywgcmVmLCBgKCR7dHlwZW9mIHJlZn0pYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgZG9TZXQuaWQgPSAtMTtcclxuICAgICAgICAgICAgICAgIHF1ZXVlUG9zdFJlbmRlckVmZmVjdChkb1NldCwgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZG9TZXQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgd2FybignSW52YWxpZCB0ZW1wbGF0ZSByZWYgdHlwZTonLCByZWYsIGAoJHt0eXBlb2YgcmVmfSlgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cblxubGV0IGhhc01pc21hdGNoID0gZmFsc2U7XHJcbmNvbnN0IGlzU1ZHQ29udGFpbmVyID0gKGNvbnRhaW5lcikgPT4gL3N2Zy8udGVzdChjb250YWluZXIubmFtZXNwYWNlVVJJKSAmJiBjb250YWluZXIudGFnTmFtZSAhPT0gJ2ZvcmVpZ25PYmplY3QnO1xyXG5jb25zdCBpc0NvbW1lbnQgPSAobm9kZSkgPT4gbm9kZS5ub2RlVHlwZSA9PT0gOCAvKiBET01Ob2RlVHlwZXMuQ09NTUVOVCAqLztcclxuLy8gTm90ZTogaHlkcmF0aW9uIGlzIERPTS1zcGVjaWZpY1xyXG4vLyBCdXQgd2UgaGF2ZSB0byBwbGFjZSBpdCBpbiBjb3JlIGR1ZSB0byB0aWdodCBjb3VwbGluZyB3aXRoIGNvcmUgLSBzcGxpdHRpbmdcclxuLy8gaXQgb3V0IGNyZWF0ZXMgYSB0b24gb2YgdW5uZWNlc3NhcnkgY29tcGxleGl0eS5cclxuLy8gSHlkcmF0aW9uIGFsc28gZGVwZW5kcyBvbiBzb21lIHJlbmRlcmVyIGludGVybmFsIGxvZ2ljIHdoaWNoIG5lZWRzIHRvIGJlXHJcbi8vIHBhc3NlZCBpbiB2aWEgYXJndW1lbnRzLlxyXG5mdW5jdGlvbiBjcmVhdGVIeWRyYXRpb25GdW5jdGlvbnMocmVuZGVyZXJJbnRlcm5hbHMpIHtcclxuICAgIGNvbnN0IHsgbXQ6IG1vdW50Q29tcG9uZW50LCBwOiBwYXRjaCwgbzogeyBwYXRjaFByb3AsIGNyZWF0ZVRleHQsIG5leHRTaWJsaW5nLCBwYXJlbnROb2RlLCByZW1vdmUsIGluc2VydCwgY3JlYXRlQ29tbWVudCB9IH0gPSByZW5kZXJlckludGVybmFscztcclxuICAgIGNvbnN0IGh5ZHJhdGUgPSAodm5vZGUsIGNvbnRhaW5lcikgPT4ge1xyXG4gICAgICAgIGlmICghY29udGFpbmVyLmhhc0NoaWxkTm9kZXMoKSkge1xyXG4gICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgICAgIHdhcm4oYEF0dGVtcHRpbmcgdG8gaHlkcmF0ZSBleGlzdGluZyBtYXJrdXAgYnV0IGNvbnRhaW5lciBpcyBlbXB0eS4gYCArXHJcbiAgICAgICAgICAgICAgICAgICAgYFBlcmZvcm1pbmcgZnVsbCBtb3VudCBpbnN0ZWFkLmApO1xyXG4gICAgICAgICAgICBwYXRjaChudWxsLCB2bm9kZSwgY29udGFpbmVyKTtcclxuICAgICAgICAgICAgZmx1c2hQb3N0Rmx1c2hDYnMoKTtcclxuICAgICAgICAgICAgY29udGFpbmVyLl92bm9kZSA9IHZub2RlO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGhhc01pc21hdGNoID0gZmFsc2U7XHJcbiAgICAgICAgaHlkcmF0ZU5vZGUoY29udGFpbmVyLmZpcnN0Q2hpbGQsIHZub2RlLCBudWxsLCBudWxsLCBudWxsKTtcclxuICAgICAgICBmbHVzaFBvc3RGbHVzaENicygpO1xyXG4gICAgICAgIGNvbnRhaW5lci5fdm5vZGUgPSB2bm9kZTtcclxuICAgICAgICBpZiAoaGFzTWlzbWF0Y2ggJiYgIWZhbHNlKSB7XHJcbiAgICAgICAgICAgIC8vIHRoaXMgZXJyb3Igc2hvdWxkIHNob3cgdXAgaW4gcHJvZHVjdGlvblxyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBIeWRyYXRpb24gY29tcGxldGVkIGJ1dCBjb250YWlucyBtaXNtYXRjaGVzLmApO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBoeWRyYXRlTm9kZSA9IChub2RlLCB2bm9kZSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQgPSBmYWxzZSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGlzRnJhZ21lbnRTdGFydCA9IGlzQ29tbWVudChub2RlKSAmJiBub2RlLmRhdGEgPT09ICdbJztcclxuICAgICAgICBjb25zdCBvbk1pc21hdGNoID0gKCkgPT4gaGFuZGxlTWlzbWF0Y2gobm9kZSwgdm5vZGUsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHNsb3RTY29wZUlkcywgaXNGcmFnbWVudFN0YXJ0KTtcclxuICAgICAgICBjb25zdCB7IHR5cGUsIHJlZiwgc2hhcGVGbGFnLCBwYXRjaEZsYWcgfSA9IHZub2RlO1xyXG4gICAgICAgIGNvbnN0IGRvbVR5cGUgPSBub2RlLm5vZGVUeXBlO1xyXG4gICAgICAgIHZub2RlLmVsID0gbm9kZTtcclxuICAgICAgICBpZiAocGF0Y2hGbGFnID09PSAtMiAvKiBQYXRjaEZsYWdzLkJBSUwgKi8pIHtcclxuICAgICAgICAgICAgb3B0aW1pemVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHZub2RlLmR5bmFtaWNDaGlsZHJlbiA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBuZXh0Tm9kZSA9IG51bGw7XHJcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgVGV4dDpcclxuICAgICAgICAgICAgICAgIGlmIChkb21UeXBlICE9PSAzIC8qIERPTU5vZGVUeXBlcy5URVhUICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gIzU3MjggZW1wdHkgdGV4dCBub2RlIGluc2lkZSBhIHNsb3QgY2FuIGNhdXNlIGh5ZHJhdGlvbiBmYWlsdXJlXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gYmVjYXVzZSB0aGUgc2VydmVyIHJlbmRlcmVkIEhUTUwgd29uJ3QgY29udGFpbiBhIHRleHQgbm9kZVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh2bm9kZS5jaGlsZHJlbiA9PT0gJycpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0KCh2bm9kZS5lbCA9IGNyZWF0ZVRleHQoJycpKSwgcGFyZW50Tm9kZShub2RlKSwgbm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHROb2RlID0gbm9kZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHROb2RlID0gb25NaXNtYXRjaCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChub2RlLmRhdGEgIT09IHZub2RlLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc01pc21hdGNoID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuKGBIeWRyYXRpb24gdGV4dCBtaXNtYXRjaDpgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgXFxuLSBDbGllbnQ6ICR7SlNPTi5zdHJpbmdpZnkobm9kZS5kYXRhKX1gICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgXFxuLSBTZXJ2ZXI6ICR7SlNPTi5zdHJpbmdpZnkodm5vZGUuY2hpbGRyZW4pfWApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlLmRhdGEgPSB2bm9kZS5jaGlsZHJlbjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSBuZXh0U2libGluZyhub2RlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIENvbW1lbnQ6XHJcbiAgICAgICAgICAgICAgICBpZiAoZG9tVHlwZSAhPT0gOCAvKiBET01Ob2RlVHlwZXMuQ09NTUVOVCAqLyB8fCBpc0ZyYWdtZW50U3RhcnQpIHtcclxuICAgICAgICAgICAgICAgICAgICBuZXh0Tm9kZSA9IG9uTWlzbWF0Y2goKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIG5leHROb2RlID0gbmV4dFNpYmxpbmcobm9kZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBTdGF0aWM6XHJcbiAgICAgICAgICAgICAgICBpZiAoZG9tVHlwZSAhPT0gMSAvKiBET01Ob2RlVHlwZXMuRUxFTUVOVCAqLyAmJiBkb21UeXBlICE9PSAzIC8qIERPTU5vZGVUeXBlcy5URVhUICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSBvbk1pc21hdGNoKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBkZXRlcm1pbmUgYW5jaG9yLCBhZG9wdCBjb250ZW50XHJcbiAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSBub2RlO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBzdGF0aWMgdm5vZGUgaGFzIGl0cyBjb250ZW50IHN0cmlwcGVkIGR1cmluZyBidWlsZCxcclxuICAgICAgICAgICAgICAgICAgICAvLyBhZG9wdCBpdCBmcm9tIHRoZSBzZXJ2ZXItcmVuZGVyZWQgSFRNTC5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZWVkVG9BZG9wdENvbnRlbnQgPSAhdm5vZGUuY2hpbGRyZW4ubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdm5vZGUuc3RhdGljQ291bnQ7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobmVlZFRvQWRvcHRDb250ZW50KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdm5vZGUuY2hpbGRyZW4gKz1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0Tm9kZS5ub2RlVHlwZSA9PT0gMSAvKiBET01Ob2RlVHlwZXMuRUxFTUVOVCAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IG5leHROb2RlLm91dGVySFRNTFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG5leHROb2RlLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID09PSB2bm9kZS5zdGF0aWNDb3VudCAtIDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZub2RlLmFuY2hvciA9IG5leHROb2RlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHROb2RlID0gbmV4dFNpYmxpbmcobmV4dE5vZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV4dE5vZGU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBGcmFnbWVudDpcclxuICAgICAgICAgICAgICAgIGlmICghaXNGcmFnbWVudFN0YXJ0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSBvbk1pc21hdGNoKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBuZXh0Tm9kZSA9IGh5ZHJhdGVGcmFnbWVudChub2RlLCB2bm9kZSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICBpZiAoc2hhcGVGbGFnICYgMSAvKiBTaGFwZUZsYWdzLkVMRU1FTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZG9tVHlwZSAhPT0gMSAvKiBET01Ob2RlVHlwZXMuRUxFTUVOVCAqLyB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2bm9kZS50eXBlLnRvTG93ZXJDYXNlKCkgIT09XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLnRhZ05hbWUudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0Tm9kZSA9IG9uTWlzbWF0Y2goKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHROb2RlID0gaHlkcmF0ZUVsZW1lbnQobm9kZSwgdm5vZGUsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChzaGFwZUZsYWcgJiA2IC8qIFNoYXBlRmxhZ3MuQ09NUE9ORU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiBzZXR0aW5nIHVwIHRoZSByZW5kZXIgZWZmZWN0LCBpZiB0aGUgaW5pdGlhbCB2bm9kZSBhbHJlYWR5XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaGFzIC5lbCBzZXQsIHRoZSBjb21wb25lbnQgd2lsbCBwZXJmb3JtIGh5ZHJhdGlvbiBpbnN0ZWFkIG9mIG1vdW50XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gb24gaXRzIHN1Yi10cmVlLlxyXG4gICAgICAgICAgICAgICAgICAgIHZub2RlLnNsb3RTY29wZUlkcyA9IHNsb3RTY29wZUlkcztcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250YWluZXIgPSBwYXJlbnROb2RlKG5vZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIG1vdW50Q29tcG9uZW50KHZub2RlLCBjb250YWluZXIsIG51bGwsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHQ29udGFpbmVyKGNvbnRhaW5lciksIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29tcG9uZW50IG1heSBiZSBhc3luYywgc28gaW4gdGhlIGNhc2Ugb2YgZnJhZ21lbnRzIHdlIGNhbm5vdCByZWx5XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gb24gY29tcG9uZW50J3MgcmVuZGVyZWQgb3V0cHV0IHRvIGRldGVybWluZSB0aGUgZW5kIG9mIHRoZSBmcmFnbWVudFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGluc3RlYWQsIHdlIGRvIGEgbG9va2FoZWFkIHRvIGZpbmQgdGhlIGVuZCBhbmNob3Igbm9kZS5cclxuICAgICAgICAgICAgICAgICAgICBuZXh0Tm9kZSA9IGlzRnJhZ21lbnRTdGFydFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGxvY2F0ZUNsb3NpbmdBc3luY0FuY2hvcihub2RlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG5leHRTaWJsaW5nKG5vZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vICM0MjkzIHRlbGVwb3J0IGFzIGNvbXBvbmVudCByb290XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5leHROb2RlICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQ29tbWVudChuZXh0Tm9kZSkgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUuZGF0YSA9PT0gJ3RlbGVwb3J0IGVuZCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSBuZXh0U2libGluZyhuZXh0Tm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vICMzNzg3XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgY29tcG9uZW50IGlzIGFzeW5jLCBpdCBtYXkgZ2V0IG1vdmVkIC8gdW5tb3VudGVkIGJlZm9yZSBpdHNcclxuICAgICAgICAgICAgICAgICAgICAvLyBpbm5lciBjb21wb25lbnQgaXMgbG9hZGVkLCBzbyB3ZSBuZWVkIHRvIGdpdmUgaXQgYSBwbGFjZWhvbGRlclxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHZub2RlIHRoYXQgbWF0Y2hlcyBpdHMgYWRvcHRlZCBET00uXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzQXN5bmNXcmFwcGVyKHZub2RlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3ViVHJlZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzRnJhZ21lbnRTdGFydCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViVHJlZSA9IGNyZWF0ZVZOb2RlKEZyYWdtZW50KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YlRyZWUuYW5jaG9yID0gbmV4dE5vZGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IG5leHROb2RlLnByZXZpb3VzU2libGluZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY29udGFpbmVyLmxhc3RDaGlsZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YlRyZWUgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUubm9kZVR5cGUgPT09IDMgPyBjcmVhdGVUZXh0Vk5vZGUoJycpIDogY3JlYXRlVk5vZGUoJ2RpdicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YlRyZWUuZWwgPSBub2RlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2bm9kZS5jb21wb25lbnQuc3ViVHJlZSA9IHN1YlRyZWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoc2hhcGVGbGFnICYgNjQgLyogU2hhcGVGbGFncy5URUxFUE9SVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChkb21UeXBlICE9PSA4IC8qIERPTU5vZGVUeXBlcy5DT01NRU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHROb2RlID0gb25NaXNtYXRjaCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSB2bm9kZS50eXBlLmh5ZHJhdGUobm9kZSwgdm5vZGUsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkLCByZW5kZXJlckludGVybmFscywgaHlkcmF0ZUNoaWxkcmVuKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChzaGFwZUZsYWcgJiAxMjggLyogU2hhcGVGbGFncy5TVVNQRU5TRSAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIG5leHROb2RlID0gdm5vZGUudHlwZS5oeWRyYXRlKG5vZGUsIHZub2RlLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWR0NvbnRhaW5lcihwYXJlbnROb2RlKG5vZGUpKSwgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQsIHJlbmRlcmVySW50ZXJuYWxzLCBoeWRyYXRlTm9kZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKCdJbnZhbGlkIEhvc3RWTm9kZSB0eXBlOicsIHR5cGUsIGAoJHt0eXBlb2YgdHlwZX0pYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChyZWYgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBzZXRSZWYocmVmLCBudWxsLCBwYXJlbnRTdXNwZW5zZSwgdm5vZGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbmV4dE5vZGU7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgaHlkcmF0ZUVsZW1lbnQgPSAoZWwsIHZub2RlLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCkgPT4ge1xyXG4gICAgICAgIG9wdGltaXplZCA9IG9wdGltaXplZCB8fCAhIXZub2RlLmR5bmFtaWNDaGlsZHJlbjtcclxuICAgICAgICBjb25zdCB7IHR5cGUsIHByb3BzLCBwYXRjaEZsYWcsIHNoYXBlRmxhZywgZGlycyB9ID0gdm5vZGU7XHJcbiAgICAgICAgLy8gIzQwMDYgZm9yIGZvcm0gZWxlbWVudHMgd2l0aCBub24tc3RyaW5nIHYtbW9kZWwgdmFsdWUgYmluZGluZ3NcclxuICAgICAgICAvLyBlLmcuIDxvcHRpb24gOnZhbHVlPVwib2JqXCI+LCA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgOnRydWUtdmFsdWU9XCIxXCI+XHJcbiAgICAgICAgY29uc3QgZm9yY2VQYXRjaFZhbHVlID0gKHR5cGUgPT09ICdpbnB1dCcgJiYgZGlycykgfHwgdHlwZSA9PT0gJ29wdGlvbic7XHJcbiAgICAgICAgLy8gc2tpcCBwcm9wcyAmIGNoaWxkcmVuIGlmIHRoaXMgaXMgaG9pc3RlZCBzdGF0aWMgbm9kZXNcclxuICAgICAgICAvLyAjNTQwNSBpbiBkZXYsIGFsd2F5cyBoeWRyYXRlIGNoaWxkcmVuIGZvciBITVJcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8IGZvcmNlUGF0Y2hWYWx1ZSB8fCBwYXRjaEZsYWcgIT09IC0xIC8qIFBhdGNoRmxhZ3MuSE9JU1RFRCAqLykge1xyXG4gICAgICAgICAgICBpZiAoZGlycykge1xyXG4gICAgICAgICAgICAgICAgaW52b2tlRGlyZWN0aXZlSG9vayh2bm9kZSwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCAnY3JlYXRlZCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHByb3BzXHJcbiAgICAgICAgICAgIGlmIChwcm9wcykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGZvcmNlUGF0Y2hWYWx1ZSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICFvcHRpbWl6ZWQgfHxcclxuICAgICAgICAgICAgICAgICAgICBwYXRjaEZsYWcgJiAoMTYgLyogUGF0Y2hGbGFncy5GVUxMX1BST1BTICovIHwgMzIgLyogUGF0Y2hGbGFncy5IWURSQVRFX0VWRU5UUyAqLykpIHtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBwcm9wcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGZvcmNlUGF0Y2hWYWx1ZSAmJiBrZXkuZW5kc1dpdGgoJ3ZhbHVlJykpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXNPbihrZXkpICYmICFpc1Jlc2VydmVkUHJvcChrZXkpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0Y2hQcm9wKGVsLCBrZXksIG51bGwsIHByb3BzW2tleV0sIGZhbHNlLCB1bmRlZmluZWQsIHBhcmVudENvbXBvbmVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChwcm9wcy5vbkNsaWNrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gRmFzdCBwYXRoIGZvciBjbGljayBsaXN0ZW5lcnMgKHdoaWNoIGlzIG1vc3Qgb2Z0ZW4pIHRvIGF2b2lkXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaXRlcmF0aW5nIHRocm91Z2ggcHJvcHMuXHJcbiAgICAgICAgICAgICAgICAgICAgcGF0Y2hQcm9wKGVsLCAnb25DbGljaycsIG51bGwsIHByb3BzLm9uQ2xpY2ssIGZhbHNlLCB1bmRlZmluZWQsIHBhcmVudENvbXBvbmVudCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gdm5vZGUgLyBkaXJlY3RpdmUgaG9va3NcclxuICAgICAgICAgICAgbGV0IHZub2RlSG9va3M7XHJcbiAgICAgICAgICAgIGlmICgodm5vZGVIb29rcyA9IHByb3BzICYmIHByb3BzLm9uVm5vZGVCZWZvcmVNb3VudCkpIHtcclxuICAgICAgICAgICAgICAgIGludm9rZVZOb2RlSG9vayh2bm9kZUhvb2tzLCBwYXJlbnRDb21wb25lbnQsIHZub2RlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZGlycykge1xyXG4gICAgICAgICAgICAgICAgaW52b2tlRGlyZWN0aXZlSG9vayh2bm9kZSwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCAnYmVmb3JlTW91bnQnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoKHZub2RlSG9va3MgPSBwcm9wcyAmJiBwcm9wcy5vblZub2RlTW91bnRlZCkgfHwgZGlycykge1xyXG4gICAgICAgICAgICAgICAgcXVldWVFZmZlY3RXaXRoU3VzcGVuc2UoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHZub2RlSG9va3MgJiYgaW52b2tlVk5vZGVIb29rKHZub2RlSG9va3MsIHBhcmVudENvbXBvbmVudCwgdm5vZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGRpcnMgJiYgaW52b2tlRGlyZWN0aXZlSG9vayh2bm9kZSwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCAnbW91bnRlZCcpO1xyXG4gICAgICAgICAgICAgICAgfSwgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGNoaWxkcmVuXHJcbiAgICAgICAgICAgIGlmIChzaGFwZUZsYWcgJiAxNiAvKiBTaGFwZUZsYWdzLkFSUkFZX0NISUxEUkVOICovICYmXHJcbiAgICAgICAgICAgICAgICAvLyBza2lwIGlmIGVsZW1lbnQgaGFzIGlubmVySFRNTCAvIHRleHRDb250ZW50XHJcbiAgICAgICAgICAgICAgICAhKHByb3BzICYmIChwcm9wcy5pbm5lckhUTUwgfHwgcHJvcHMudGV4dENvbnRlbnQpKSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IG5leHQgPSBoeWRyYXRlQ2hpbGRyZW4oZWwuZmlyc3RDaGlsZCwgdm5vZGUsIGVsLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgaGFzV2FybmVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB3aGlsZSAobmV4dCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGhhc01pc21hdGNoID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFoYXNXYXJuZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2FybihgSHlkcmF0aW9uIGNoaWxkcmVuIG1pc21hdGNoIGluIDwke3Zub2RlLnR5cGV9PjogYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgc2VydmVyIHJlbmRlcmVkIGVsZW1lbnQgY29udGFpbnMgbW9yZSBjaGlsZCBub2RlcyB0aGFuIGNsaWVudCB2ZG9tLmApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNXYXJuZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAvLyBUaGUgU1NSZWQgRE9NIGNvbnRhaW5zIG1vcmUgbm9kZXMgdGhhbiBpdCBzaG91bGQuIFJlbW92ZSB0aGVtLlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1ciA9IG5leHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV4dCA9IG5leHQubmV4dFNpYmxpbmc7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlKGN1cik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoc2hhcGVGbGFnICYgOCAvKiBTaGFwZUZsYWdzLlRFWFRfQ0hJTERSRU4gKi8pIHtcclxuICAgICAgICAgICAgICAgIGlmIChlbC50ZXh0Q29udGVudCAhPT0gdm5vZGUuY2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgICAgICAgICBoYXNNaXNtYXRjaCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdhcm4oYEh5ZHJhdGlvbiB0ZXh0IGNvbnRlbnQgbWlzbWF0Y2ggaW4gPCR7dm5vZGUudHlwZX0+OlxcbmAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYC0gQ2xpZW50OiAke2VsLnRleHRDb250ZW50fVxcbmAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYC0gU2VydmVyOiAke3Zub2RlLmNoaWxkcmVufWApO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsLnRleHRDb250ZW50ID0gdm5vZGUuY2hpbGRyZW47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGVsLm5leHRTaWJsaW5nO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IGh5ZHJhdGVDaGlsZHJlbiA9IChub2RlLCBwYXJlbnRWTm9kZSwgY29udGFpbmVyLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCkgPT4ge1xyXG4gICAgICAgIG9wdGltaXplZCA9IG9wdGltaXplZCB8fCAhIXBhcmVudFZOb2RlLmR5bmFtaWNDaGlsZHJlbjtcclxuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IHBhcmVudFZOb2RlLmNoaWxkcmVuO1xyXG4gICAgICAgIGNvbnN0IGwgPSBjaGlsZHJlbi5sZW5ndGg7XHJcbiAgICAgICAgbGV0IGhhc1dhcm5lZCA9IGZhbHNlO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZub2RlID0gb3B0aW1pemVkXHJcbiAgICAgICAgICAgICAgICA/IGNoaWxkcmVuW2ldXHJcbiAgICAgICAgICAgICAgICA6IChjaGlsZHJlbltpXSA9IG5vcm1hbGl6ZVZOb2RlKGNoaWxkcmVuW2ldKSk7XHJcbiAgICAgICAgICAgIGlmIChub2RlKSB7XHJcbiAgICAgICAgICAgICAgICBub2RlID0gaHlkcmF0ZU5vZGUobm9kZSwgdm5vZGUsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICh2bm9kZS50eXBlID09PSBUZXh0ICYmICF2bm9kZS5jaGlsZHJlbikge1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBoYXNNaXNtYXRjaCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFoYXNXYXJuZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKGBIeWRyYXRpb24gY2hpbGRyZW4gbWlzbWF0Y2ggaW4gPCR7Y29udGFpbmVyLnRhZ05hbWUudG9Mb3dlckNhc2UoKX0+OiBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYHNlcnZlciByZW5kZXJlZCBlbGVtZW50IGNvbnRhaW5zIGZld2VyIGNoaWxkIG5vZGVzIHRoYW4gY2xpZW50IHZkb20uYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaGFzV2FybmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIHRoZSBTU1JlZCBET00gZGlkbid0IGNvbnRhaW4gZW5vdWdoIG5vZGVzLiBNb3VudCB0aGUgbWlzc2luZyBvbmVzLlxyXG4gICAgICAgICAgICAgICAgcGF0Y2gobnVsbCwgdm5vZGUsIGNvbnRhaW5lciwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkdDb250YWluZXIoY29udGFpbmVyKSwgc2xvdFNjb3BlSWRzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbm9kZTtcclxuICAgIH07XHJcbiAgICBjb25zdCBoeWRyYXRlRnJhZ21lbnQgPSAobm9kZSwgdm5vZGUsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBzbG90U2NvcGVJZHM6IGZyYWdtZW50U2xvdFNjb3BlSWRzIH0gPSB2bm9kZTtcclxuICAgICAgICBpZiAoZnJhZ21lbnRTbG90U2NvcGVJZHMpIHtcclxuICAgICAgICAgICAgc2xvdFNjb3BlSWRzID0gc2xvdFNjb3BlSWRzXHJcbiAgICAgICAgICAgICAgICA/IHNsb3RTY29wZUlkcy5jb25jYXQoZnJhZ21lbnRTbG90U2NvcGVJZHMpXHJcbiAgICAgICAgICAgICAgICA6IGZyYWdtZW50U2xvdFNjb3BlSWRzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjb250YWluZXIgPSBwYXJlbnROb2RlKG5vZGUpO1xyXG4gICAgICAgIGNvbnN0IG5leHQgPSBoeWRyYXRlQ2hpbGRyZW4obmV4dFNpYmxpbmcobm9kZSksIHZub2RlLCBjb250YWluZXIsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICBpZiAobmV4dCAmJiBpc0NvbW1lbnQobmV4dCkgJiYgbmV4dC5kYXRhID09PSAnXScpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5leHRTaWJsaW5nKCh2bm9kZS5hbmNob3IgPSBuZXh0KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBmcmFnbWVudCBkaWRuJ3QgaHlkcmF0ZSBzdWNjZXNzZnVsbHksIHNpbmNlIHdlIGRpZG4ndCBnZXQgYSBlbmQgYW5jaG9yXHJcbiAgICAgICAgICAgIC8vIGJhY2suIFRoaXMgc2hvdWxkIGhhdmUgbGVkIHRvIG5vZGUvY2hpbGRyZW4gbWlzbWF0Y2ggd2FybmluZ3MuXHJcbiAgICAgICAgICAgIGhhc01pc21hdGNoID0gdHJ1ZTtcclxuICAgICAgICAgICAgLy8gc2luY2UgdGhlIGFuY2hvciBpcyBtaXNzaW5nLCB3ZSBuZWVkIHRvIGNyZWF0ZSBvbmUgYW5kIGluc2VydCBpdFxyXG4gICAgICAgICAgICBpbnNlcnQoKHZub2RlLmFuY2hvciA9IGNyZWF0ZUNvbW1lbnQoYF1gKSksIGNvbnRhaW5lciwgbmV4dCk7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXh0O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBoYW5kbGVNaXNtYXRjaCA9IChub2RlLCB2bm9kZSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgc2xvdFNjb3BlSWRzLCBpc0ZyYWdtZW50KSA9PiB7XHJcbiAgICAgICAgaGFzTWlzbWF0Y2ggPSB0cnVlO1xyXG4gICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICB3YXJuKGBIeWRyYXRpb24gbm9kZSBtaXNtYXRjaDpcXG4tIENsaWVudCB2bm9kZTpgLCB2bm9kZS50eXBlLCBgXFxuLSBTZXJ2ZXIgcmVuZGVyZWQgRE9NOmAsIG5vZGUsIG5vZGUubm9kZVR5cGUgPT09IDMgLyogRE9NTm9kZVR5cGVzLlRFWFQgKi9cclxuICAgICAgICAgICAgICAgID8gYCh0ZXh0KWBcclxuICAgICAgICAgICAgICAgIDogaXNDb21tZW50KG5vZGUpICYmIG5vZGUuZGF0YSA9PT0gJ1snXHJcbiAgICAgICAgICAgICAgICAgICAgPyBgKHN0YXJ0IG9mIGZyYWdtZW50KWBcclxuICAgICAgICAgICAgICAgICAgICA6IGBgKTtcclxuICAgICAgICB2bm9kZS5lbCA9IG51bGw7XHJcbiAgICAgICAgaWYgKGlzRnJhZ21lbnQpIHtcclxuICAgICAgICAgICAgLy8gcmVtb3ZlIGV4Y2Vzc2l2ZSBmcmFnbWVudCBub2Rlc1xyXG4gICAgICAgICAgICBjb25zdCBlbmQgPSBsb2NhdGVDbG9zaW5nQXN5bmNBbmNob3Iobm9kZSk7XHJcbiAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0ID0gbmV4dFNpYmxpbmcobm9kZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAobmV4dCAmJiBuZXh0ICE9PSBlbmQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZW1vdmUobmV4dCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBuZXh0ID0gbmV4dFNpYmxpbmcobm9kZSk7XHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gcGFyZW50Tm9kZShub2RlKTtcclxuICAgICAgICByZW1vdmUobm9kZSk7XHJcbiAgICAgICAgcGF0Y2gobnVsbCwgdm5vZGUsIGNvbnRhaW5lciwgbmV4dCwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkdDb250YWluZXIoY29udGFpbmVyKSwgc2xvdFNjb3BlSWRzKTtcclxuICAgICAgICByZXR1cm4gbmV4dDtcclxuICAgIH07XHJcbiAgICBjb25zdCBsb2NhdGVDbG9zaW5nQXN5bmNBbmNob3IgPSAobm9kZSkgPT4ge1xyXG4gICAgICAgIGxldCBtYXRjaCA9IDA7XHJcbiAgICAgICAgd2hpbGUgKG5vZGUpIHtcclxuICAgICAgICAgICAgbm9kZSA9IG5leHRTaWJsaW5nKG5vZGUpO1xyXG4gICAgICAgICAgICBpZiAobm9kZSAmJiBpc0NvbW1lbnQobm9kZSkpIHtcclxuICAgICAgICAgICAgICAgIGlmIChub2RlLmRhdGEgPT09ICdbJylcclxuICAgICAgICAgICAgICAgICAgICBtYXRjaCsrO1xyXG4gICAgICAgICAgICAgICAgaWYgKG5vZGUuZGF0YSA9PT0gJ10nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXh0U2libGluZyhub2RlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoLS07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBub2RlO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBbaHlkcmF0ZSwgaHlkcmF0ZU5vZGVdO1xyXG59XG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXJlc3RyaWN0ZWQtZ2xvYmFscyAqL1xyXG5sZXQgc3VwcG9ydGVkO1xyXG5sZXQgcGVyZjtcclxuZnVuY3Rpb24gc3RhcnRNZWFzdXJlKGluc3RhbmNlLCB0eXBlKSB7XHJcbiAgICBpZiAoaW5zdGFuY2UuYXBwQ29udGV4dC5jb25maWcucGVyZm9ybWFuY2UgJiYgaXNTdXBwb3J0ZWQoKSkge1xyXG4gICAgICAgIHBlcmYubWFyayhgdnVlLSR7dHlwZX0tJHtpbnN0YW5jZS51aWR9YCk7XHJcbiAgICB9XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXykge1xyXG4gICAgICAgIGRldnRvb2xzUGVyZlN0YXJ0KGluc3RhbmNlLCB0eXBlLCBpc1N1cHBvcnRlZCgpID8gcGVyZi5ub3coKSA6IERhdGUubm93KCkpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGVuZE1lYXN1cmUoaW5zdGFuY2UsIHR5cGUpIHtcclxuICAgIGlmIChpbnN0YW5jZS5hcHBDb250ZXh0LmNvbmZpZy5wZXJmb3JtYW5jZSAmJiBpc1N1cHBvcnRlZCgpKSB7XHJcbiAgICAgICAgY29uc3Qgc3RhcnRUYWcgPSBgdnVlLSR7dHlwZX0tJHtpbnN0YW5jZS51aWR9YDtcclxuICAgICAgICBjb25zdCBlbmRUYWcgPSBzdGFydFRhZyArIGA6ZW5kYDtcclxuICAgICAgICBwZXJmLm1hcmsoZW5kVGFnKTtcclxuICAgICAgICBwZXJmLm1lYXN1cmUoYDwke2Zvcm1hdENvbXBvbmVudE5hbWUoaW5zdGFuY2UsIGluc3RhbmNlLnR5cGUpfT4gJHt0eXBlfWAsIHN0YXJ0VGFnLCBlbmRUYWcpO1xyXG4gICAgICAgIHBlcmYuY2xlYXJNYXJrcyhzdGFydFRhZyk7XHJcbiAgICAgICAgcGVyZi5jbGVhck1hcmtzKGVuZFRhZyk7XHJcbiAgICB9XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXykge1xyXG4gICAgICAgIGRldnRvb2xzUGVyZkVuZChpbnN0YW5jZSwgdHlwZSwgaXNTdXBwb3J0ZWQoKSA/IHBlcmYubm93KCkgOiBEYXRlLm5vdygpKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBpc1N1cHBvcnRlZCgpIHtcclxuICAgIGlmIChzdXBwb3J0ZWQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHJldHVybiBzdXBwb3J0ZWQ7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LnBlcmZvcm1hbmNlKSB7XHJcbiAgICAgICAgc3VwcG9ydGVkID0gdHJ1ZTtcclxuICAgICAgICBwZXJmID0gd2luZG93LnBlcmZvcm1hbmNlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgc3VwcG9ydGVkID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3VwcG9ydGVkO1xyXG59XG5cbi8qKlxyXG4gKiBUaGlzIGlzIG9ubHkgY2FsbGVkIGluIGVzbS1idW5kbGVyIGJ1aWxkcy5cclxuICogSXQgaXMgY2FsbGVkIHdoZW4gYSByZW5kZXJlciBpcyBjcmVhdGVkLCBpbiBgYmFzZUNyZWF0ZVJlbmRlcmVyYCBzbyB0aGF0XHJcbiAqIGltcG9ydGluZyBydW50aW1lLWNvcmUgaXMgc2lkZS1lZmZlY3RzIGZyZWUuXHJcbiAqXHJcbiAqIGlzdGFuYnVsLWlnbm9yZS1uZXh0XHJcbiAqL1xyXG5mdW5jdGlvbiBpbml0RmVhdHVyZUZsYWdzKCkge1xyXG4gICAgY29uc3QgbmVlZFdhcm4gPSBbXTtcclxuICAgIGlmICh0eXBlb2YgX19WVUVfT1BUSU9OU19BUElfXyAhPT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIG5lZWRXYXJuLnB1c2goYF9fVlVFX09QVElPTlNfQVBJX19gKTtcclxuICAgICAgICBnZXRHbG9iYWxUaGlzKCkuX19WVUVfT1BUSU9OU19BUElfXyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIF9fVlVFX1BST0RfREVWVE9PTFNfXyAhPT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIG5lZWRXYXJuLnB1c2goYF9fVlVFX1BST0RfREVWVE9PTFNfX2ApO1xyXG4gICAgICAgIGdldEdsb2JhbFRoaXMoKS5fX1ZVRV9QUk9EX0RFVlRPT0xTX18gPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgbmVlZFdhcm4ubGVuZ3RoKSB7XHJcbiAgICAgICAgY29uc3QgbXVsdGkgPSBuZWVkV2Fybi5sZW5ndGggPiAxO1xyXG4gICAgICAgIGNvbnNvbGUud2FybihgRmVhdHVyZSBmbGFnJHttdWx0aSA/IGBzYCA6IGBgfSAke25lZWRXYXJuLmpvaW4oJywgJyl9ICR7bXVsdGkgPyBgYXJlYCA6IGBpc2B9IG5vdCBleHBsaWNpdGx5IGRlZmluZWQuIFlvdSBhcmUgcnVubmluZyB0aGUgZXNtLWJ1bmRsZXIgYnVpbGQgb2YgVnVlLCBgICtcclxuICAgICAgICAgICAgYHdoaWNoIGV4cGVjdHMgdGhlc2UgY29tcGlsZS10aW1lIGZlYXR1cmUgZmxhZ3MgdG8gYmUgZ2xvYmFsbHkgaW5qZWN0ZWQgYCArXHJcbiAgICAgICAgICAgIGB2aWEgdGhlIGJ1bmRsZXIgY29uZmlnIGluIG9yZGVyIHRvIGdldCBiZXR0ZXIgdHJlZS1zaGFraW5nIGluIHRoZSBgICtcclxuICAgICAgICAgICAgYHByb2R1Y3Rpb24gYnVuZGxlLlxcblxcbmAgK1xyXG4gICAgICAgICAgICBgRm9yIG1vcmUgZGV0YWlscywgc2VlIGh0dHBzOi8vbGluay52dWVqcy5vcmcvZmVhdHVyZS1mbGFncy5gKTtcclxuICAgIH1cclxufVxuXG5jb25zdCBxdWV1ZVBvc3RSZW5kZXJFZmZlY3QgPSBxdWV1ZUVmZmVjdFdpdGhTdXNwZW5zZVxyXG4gICAgO1xyXG4vKipcclxuICogVGhlIGNyZWF0ZVJlbmRlcmVyIGZ1bmN0aW9uIGFjY2VwdHMgdHdvIGdlbmVyaWMgYXJndW1lbnRzOlxyXG4gKiBIb3N0Tm9kZSBhbmQgSG9zdEVsZW1lbnQsIGNvcnJlc3BvbmRpbmcgdG8gTm9kZSBhbmQgRWxlbWVudCB0eXBlcyBpbiB0aGVcclxuICogaG9zdCBlbnZpcm9ubWVudC4gRm9yIGV4YW1wbGUsIGZvciBydW50aW1lLWRvbSwgSG9zdE5vZGUgd291bGQgYmUgdGhlIERPTVxyXG4gKiBgTm9kZWAgaW50ZXJmYWNlIGFuZCBIb3N0RWxlbWVudCB3b3VsZCBiZSB0aGUgRE9NIGBFbGVtZW50YCBpbnRlcmZhY2UuXHJcbiAqXHJcbiAqIEN1c3RvbSByZW5kZXJlcnMgY2FuIHBhc3MgaW4gdGhlIHBsYXRmb3JtIHNwZWNpZmljIHR5cGVzIGxpa2UgdGhpczpcclxuICpcclxuICogYGBgIGpzXHJcbiAqIGNvbnN0IHsgcmVuZGVyLCBjcmVhdGVBcHAgfSA9IGNyZWF0ZVJlbmRlcmVyPE5vZGUsIEVsZW1lbnQ+KHtcclxuICogICBwYXRjaFByb3AsXHJcbiAqICAgLi4ubm9kZU9wc1xyXG4gKiB9KVxyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGNyZWF0ZVJlbmRlcmVyKG9wdGlvbnMpIHtcclxuICAgIHJldHVybiBiYXNlQ3JlYXRlUmVuZGVyZXIob3B0aW9ucyk7XHJcbn1cclxuLy8gU2VwYXJhdGUgQVBJIGZvciBjcmVhdGluZyBoeWRyYXRpb24tZW5hYmxlZCByZW5kZXJlci5cclxuLy8gSHlkcmF0aW9uIGxvZ2ljIGlzIG9ubHkgdXNlZCB3aGVuIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiwgbWFraW5nIGl0XHJcbi8vIHRyZWUtc2hha2FibGUuXHJcbmZ1bmN0aW9uIGNyZWF0ZUh5ZHJhdGlvblJlbmRlcmVyKG9wdGlvbnMpIHtcclxuICAgIHJldHVybiBiYXNlQ3JlYXRlUmVuZGVyZXIob3B0aW9ucywgY3JlYXRlSHlkcmF0aW9uRnVuY3Rpb25zKTtcclxufVxyXG4vLyBpbXBsZW1lbnRhdGlvblxyXG5mdW5jdGlvbiBiYXNlQ3JlYXRlUmVuZGVyZXIob3B0aW9ucywgY3JlYXRlSHlkcmF0aW9uRm5zKSB7XHJcbiAgICAvLyBjb21waWxlLXRpbWUgZmVhdHVyZSBmbGFncyBjaGVja1xyXG4gICAge1xyXG4gICAgICAgIGluaXRGZWF0dXJlRmxhZ3MoKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHRhcmdldCA9IGdldEdsb2JhbFRoaXMoKTtcclxuICAgIHRhcmdldC5fX1ZVRV9fID0gdHJ1ZTtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSB7XHJcbiAgICAgICAgc2V0RGV2dG9vbHNIb29rKHRhcmdldC5fX1ZVRV9ERVZUT09MU19HTE9CQUxfSE9PS19fLCB0YXJnZXQpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBpbnNlcnQ6IGhvc3RJbnNlcnQsIHJlbW92ZTogaG9zdFJlbW92ZSwgcGF0Y2hQcm9wOiBob3N0UGF0Y2hQcm9wLCBjcmVhdGVFbGVtZW50OiBob3N0Q3JlYXRlRWxlbWVudCwgY3JlYXRlVGV4dDogaG9zdENyZWF0ZVRleHQsIGNyZWF0ZUNvbW1lbnQ6IGhvc3RDcmVhdGVDb21tZW50LCBzZXRUZXh0OiBob3N0U2V0VGV4dCwgc2V0RWxlbWVudFRleHQ6IGhvc3RTZXRFbGVtZW50VGV4dCwgcGFyZW50Tm9kZTogaG9zdFBhcmVudE5vZGUsIG5leHRTaWJsaW5nOiBob3N0TmV4dFNpYmxpbmcsIHNldFNjb3BlSWQ6IGhvc3RTZXRTY29wZUlkID0gTk9PUCwgY2xvbmVOb2RlOiBob3N0Q2xvbmVOb2RlLCBpbnNlcnRTdGF0aWNDb250ZW50OiBob3N0SW5zZXJ0U3RhdGljQ29udGVudCB9ID0gb3B0aW9ucztcclxuICAgIC8vIE5vdGU6IGZ1bmN0aW9ucyBpbnNpZGUgdGhpcyBjbG9zdXJlIHNob3VsZCB1c2UgYGNvbnN0IHh4eCA9ICgpID0+IHt9YFxyXG4gICAgLy8gc3R5bGUgaW4gb3JkZXIgdG8gcHJldmVudCBiZWluZyBpbmxpbmVkIGJ5IG1pbmlmaWVycy5cclxuICAgIGNvbnN0IHBhdGNoID0gKG4xLCBuMiwgY29udGFpbmVyLCBhbmNob3IgPSBudWxsLCBwYXJlbnRDb21wb25lbnQgPSBudWxsLCBwYXJlbnRTdXNwZW5zZSA9IG51bGwsIGlzU1ZHID0gZmFsc2UsIHNsb3RTY29wZUlkcyA9IG51bGwsIG9wdGltaXplZCA9IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBpc0htclVwZGF0aW5nID8gZmFsc2UgOiAhIW4yLmR5bmFtaWNDaGlsZHJlbikgPT4ge1xyXG4gICAgICAgIGlmIChuMSA9PT0gbjIpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBwYXRjaGluZyAmIG5vdCBzYW1lIHR5cGUsIHVubW91bnQgb2xkIHRyZWVcclxuICAgICAgICBpZiAobjEgJiYgIWlzU2FtZVZOb2RlVHlwZShuMSwgbjIpKSB7XHJcbiAgICAgICAgICAgIGFuY2hvciA9IGdldE5leHRIb3N0Tm9kZShuMSk7XHJcbiAgICAgICAgICAgIHVubW91bnQobjEsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHRydWUpO1xyXG4gICAgICAgICAgICBuMSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChuMi5wYXRjaEZsYWcgPT09IC0yIC8qIFBhdGNoRmxhZ3MuQkFJTCAqLykge1xyXG4gICAgICAgICAgICBvcHRpbWl6ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgbjIuZHluYW1pY0NoaWxkcmVuID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgeyB0eXBlLCByZWYsIHNoYXBlRmxhZyB9ID0gbjI7XHJcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgVGV4dDpcclxuICAgICAgICAgICAgICAgIHByb2Nlc3NUZXh0KG4xLCBuMiwgY29udGFpbmVyLCBhbmNob3IpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgQ29tbWVudDpcclxuICAgICAgICAgICAgICAgIHByb2Nlc3NDb21tZW50Tm9kZShuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFN0YXRpYzpcclxuICAgICAgICAgICAgICAgIGlmIChuMSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbW91bnRTdGF0aWNOb2RlKG4yLCBjb250YWluZXIsIGFuY2hvciwgaXNTVkcpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGF0Y2hTdGF0aWNOb2RlKG4xLCBuMiwgY29udGFpbmVyLCBpc1NWRyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBGcmFnbWVudDpcclxuICAgICAgICAgICAgICAgIHByb2Nlc3NGcmFnbWVudChuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICBpZiAoc2hhcGVGbGFnICYgMSAvKiBTaGFwZUZsYWdzLkVMRU1FTlQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBwcm9jZXNzRWxlbWVudChuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoc2hhcGVGbGFnICYgNiAvKiBTaGFwZUZsYWdzLkNPTVBPTkVOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIHByb2Nlc3NDb21wb25lbnQobjEsIG4yLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNoYXBlRmxhZyAmIDY0IC8qIFNoYXBlRmxhZ3MuVEVMRVBPUlQgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICB0eXBlLnByb2Nlc3MobjEsIG4yLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkLCBpbnRlcm5hbHMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoc2hhcGVGbGFnICYgMTI4IC8qIFNoYXBlRmxhZ3MuU1VTUEVOU0UgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICB0eXBlLnByb2Nlc3MobjEsIG4yLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkLCBpbnRlcm5hbHMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FybignSW52YWxpZCBWTm9kZSB0eXBlOicsIHR5cGUsIGAoJHt0eXBlb2YgdHlwZX0pYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHNldCByZWZcclxuICAgICAgICBpZiAocmVmICE9IG51bGwgJiYgcGFyZW50Q29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgIHNldFJlZihyZWYsIG4xICYmIG4xLnJlZiwgcGFyZW50U3VzcGVuc2UsIG4yIHx8IG4xLCAhbjIpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBwcm9jZXNzVGV4dCA9IChuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yKSA9PiB7XHJcbiAgICAgICAgaWYgKG4xID09IG51bGwpIHtcclxuICAgICAgICAgICAgaG9zdEluc2VydCgobjIuZWwgPSBob3N0Q3JlYXRlVGV4dChuMi5jaGlsZHJlbikpLCBjb250YWluZXIsIGFuY2hvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBlbCA9IChuMi5lbCA9IG4xLmVsKTtcclxuICAgICAgICAgICAgaWYgKG4yLmNoaWxkcmVuICE9PSBuMS5jaGlsZHJlbikge1xyXG4gICAgICAgICAgICAgICAgaG9zdFNldFRleHQoZWwsIG4yLmNoaWxkcmVuKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBwcm9jZXNzQ29tbWVudE5vZGUgPSAobjEsIG4yLCBjb250YWluZXIsIGFuY2hvcikgPT4ge1xyXG4gICAgICAgIGlmIChuMSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGhvc3RJbnNlcnQoKG4yLmVsID0gaG9zdENyZWF0ZUNvbW1lbnQobjIuY2hpbGRyZW4gfHwgJycpKSwgY29udGFpbmVyLCBhbmNob3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gdGhlcmUncyBubyBzdXBwb3J0IGZvciBkeW5hbWljIGNvbW1lbnRzXHJcbiAgICAgICAgICAgIG4yLmVsID0gbjEuZWw7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IG1vdW50U3RhdGljTm9kZSA9IChuMiwgY29udGFpbmVyLCBhbmNob3IsIGlzU1ZHKSA9PiB7XHJcbiAgICAgICAgW24yLmVsLCBuMi5hbmNob3JdID0gaG9zdEluc2VydFN0YXRpY0NvbnRlbnQobjIuY2hpbGRyZW4sIGNvbnRhaW5lciwgYW5jaG9yLCBpc1NWRywgbjIuZWwsIG4yLmFuY2hvcik7XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBEZXYgLyBITVIgb25seVxyXG4gICAgICovXHJcbiAgICBjb25zdCBwYXRjaFN0YXRpY05vZGUgPSAobjEsIG4yLCBjb250YWluZXIsIGlzU1ZHKSA9PiB7XHJcbiAgICAgICAgLy8gc3RhdGljIG5vZGVzIGFyZSBvbmx5IHBhdGNoZWQgZHVyaW5nIGRldiBmb3IgSE1SXHJcbiAgICAgICAgaWYgKG4yLmNoaWxkcmVuICE9PSBuMS5jaGlsZHJlbikge1xyXG4gICAgICAgICAgICBjb25zdCBhbmNob3IgPSBob3N0TmV4dFNpYmxpbmcobjEuYW5jaG9yKTtcclxuICAgICAgICAgICAgLy8gcmVtb3ZlIGV4aXN0aW5nXHJcbiAgICAgICAgICAgIHJlbW92ZVN0YXRpY05vZGUobjEpO1xyXG4gICAgICAgICAgICBbbjIuZWwsIG4yLmFuY2hvcl0gPSBob3N0SW5zZXJ0U3RhdGljQ29udGVudChuMi5jaGlsZHJlbiwgY29udGFpbmVyLCBhbmNob3IsIGlzU1ZHKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIG4yLmVsID0gbjEuZWw7XHJcbiAgICAgICAgICAgIG4yLmFuY2hvciA9IG4xLmFuY2hvcjtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgbW92ZVN0YXRpY05vZGUgPSAoeyBlbCwgYW5jaG9yIH0sIGNvbnRhaW5lciwgbmV4dFNpYmxpbmcpID0+IHtcclxuICAgICAgICBsZXQgbmV4dDtcclxuICAgICAgICB3aGlsZSAoZWwgJiYgZWwgIT09IGFuY2hvcikge1xyXG4gICAgICAgICAgICBuZXh0ID0gaG9zdE5leHRTaWJsaW5nKGVsKTtcclxuICAgICAgICAgICAgaG9zdEluc2VydChlbCwgY29udGFpbmVyLCBuZXh0U2libGluZyk7XHJcbiAgICAgICAgICAgIGVsID0gbmV4dDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaG9zdEluc2VydChhbmNob3IsIGNvbnRhaW5lciwgbmV4dFNpYmxpbmcpO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IHJlbW92ZVN0YXRpY05vZGUgPSAoeyBlbCwgYW5jaG9yIH0pID0+IHtcclxuICAgICAgICBsZXQgbmV4dDtcclxuICAgICAgICB3aGlsZSAoZWwgJiYgZWwgIT09IGFuY2hvcikge1xyXG4gICAgICAgICAgICBuZXh0ID0gaG9zdE5leHRTaWJsaW5nKGVsKTtcclxuICAgICAgICAgICAgaG9zdFJlbW92ZShlbCk7XHJcbiAgICAgICAgICAgIGVsID0gbmV4dDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaG9zdFJlbW92ZShhbmNob3IpO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IHByb2Nlc3NFbGVtZW50ID0gKG4xLCBuMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCkgPT4ge1xyXG4gICAgICAgIGlzU1ZHID0gaXNTVkcgfHwgbjIudHlwZSA9PT0gJ3N2Zyc7XHJcbiAgICAgICAgaWYgKG4xID09IG51bGwpIHtcclxuICAgICAgICAgICAgbW91bnRFbGVtZW50KG4yLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHBhdGNoRWxlbWVudChuMSwgbjIsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IG1vdW50RWxlbWVudCA9ICh2bm9kZSwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCkgPT4ge1xyXG4gICAgICAgIGxldCBlbDtcclxuICAgICAgICBsZXQgdm5vZGVIb29rO1xyXG4gICAgICAgIGNvbnN0IHsgdHlwZSwgcHJvcHMsIHNoYXBlRmxhZywgdHJhbnNpdGlvbiwgcGF0Y2hGbGFnLCBkaXJzIH0gPSB2bm9kZTtcclxuICAgICAgICBpZiAoIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICB2bm9kZS5lbCAmJlxyXG4gICAgICAgICAgICBob3N0Q2xvbmVOb2RlICE9PSB1bmRlZmluZWQgJiZcclxuICAgICAgICAgICAgcGF0Y2hGbGFnID09PSAtMSAvKiBQYXRjaEZsYWdzLkhPSVNURUQgKi8pIHtcclxuICAgICAgICAgICAgLy8gSWYgYSB2bm9kZSBoYXMgbm9uLW51bGwgZWwsIGl0IG1lYW5zIGl0J3MgYmVpbmcgcmV1c2VkLlxyXG4gICAgICAgICAgICAvLyBPbmx5IHN0YXRpYyB2bm9kZXMgY2FuIGJlIHJldXNlZCwgc28gaXRzIG1vdW50ZWQgRE9NIG5vZGVzIHNob3VsZCBiZVxyXG4gICAgICAgICAgICAvLyBleGFjdGx5IHRoZSBzYW1lLCBhbmQgd2UgY2FuIHNpbXBseSBkbyBhIGNsb25lIGhlcmUuXHJcbiAgICAgICAgICAgIC8vIG9ubHkgZG8gdGhpcyBpbiBwcm9kdWN0aW9uIHNpbmNlIGNsb25lZCB0cmVlcyBjYW5ub3QgYmUgSE1SIHVwZGF0ZWQuXHJcbiAgICAgICAgICAgIGVsID0gdm5vZGUuZWwgPSBob3N0Q2xvbmVOb2RlKHZub2RlLmVsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGVsID0gdm5vZGUuZWwgPSBob3N0Q3JlYXRlRWxlbWVudCh2bm9kZS50eXBlLCBpc1NWRywgcHJvcHMgJiYgcHJvcHMuaXMsIHByb3BzKTtcclxuICAgICAgICAgICAgLy8gbW91bnQgY2hpbGRyZW4gZmlyc3QsIHNpbmNlIHNvbWUgcHJvcHMgbWF5IHJlbHkgb24gY2hpbGQgY29udGVudFxyXG4gICAgICAgICAgICAvLyBiZWluZyBhbHJlYWR5IHJlbmRlcmVkLCBlLmcuIGA8c2VsZWN0IHZhbHVlPmBcclxuICAgICAgICAgICAgaWYgKHNoYXBlRmxhZyAmIDggLyogU2hhcGVGbGFncy5URVhUX0NISUxEUkVOICovKSB7XHJcbiAgICAgICAgICAgICAgICBob3N0U2V0RWxlbWVudFRleHQoZWwsIHZub2RlLmNoaWxkcmVuKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChzaGFwZUZsYWcgJiAxNiAvKiBTaGFwZUZsYWdzLkFSUkFZX0NISUxEUkVOICovKSB7XHJcbiAgICAgICAgICAgICAgICBtb3VudENoaWxkcmVuKHZub2RlLmNoaWxkcmVuLCBlbCwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcgJiYgdHlwZSAhPT0gJ2ZvcmVpZ25PYmplY3QnLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGRpcnMpIHtcclxuICAgICAgICAgICAgICAgIGludm9rZURpcmVjdGl2ZUhvb2sodm5vZGUsIG51bGwsIHBhcmVudENvbXBvbmVudCwgJ2NyZWF0ZWQnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBwcm9wc1xyXG4gICAgICAgICAgICBpZiAocHJvcHMpIHtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHByb3BzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGtleSAhPT0gJ3ZhbHVlJyAmJiAhaXNSZXNlcnZlZFByb3Aoa2V5KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBob3N0UGF0Y2hQcm9wKGVsLCBrZXksIG51bGwsIHByb3BzW2tleV0sIGlzU1ZHLCB2bm9kZS5jaGlsZHJlbiwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgdW5tb3VudENoaWxkcmVuKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICAgICAqIFNwZWNpYWwgY2FzZSBmb3Igc2V0dGluZyB2YWx1ZSBvbiBET00gZWxlbWVudHM6XHJcbiAgICAgICAgICAgICAgICAgKiAtIGl0IGNhbiBiZSBvcmRlci1zZW5zaXRpdmUgKGUuZy4gc2hvdWxkIGJlIHNldCAqYWZ0ZXIqIG1pbi9tYXgsICMyMzI1LCAjNDAyNClcclxuICAgICAgICAgICAgICAgICAqIC0gaXQgbmVlZHMgdG8gYmUgZm9yY2VkICgjMTQ3MSlcclxuICAgICAgICAgICAgICAgICAqICMyMzUzIHByb3Bvc2VzIGFkZGluZyBhbm90aGVyIHJlbmRlcmVyIG9wdGlvbiB0byBjb25maWd1cmUgdGhpcywgYnV0XHJcbiAgICAgICAgICAgICAgICAgKiB0aGUgcHJvcGVydGllcyBhZmZlY3RzIGFyZSBzbyBmaW5pdGUgaXQgaXMgd29ydGggc3BlY2lhbCBjYXNpbmcgaXRcclxuICAgICAgICAgICAgICAgICAqIGhlcmUgdG8gcmVkdWNlIHRoZSBjb21wbGV4aXR5LiAoU3BlY2lhbCBjYXNpbmcgaXQgYWxzbyBzaG91bGQgbm90XHJcbiAgICAgICAgICAgICAgICAgKiBhZmZlY3Qgbm9uLURPTSByZW5kZXJlcnMpXHJcbiAgICAgICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgICAgIGlmICgndmFsdWUnIGluIHByb3BzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaG9zdFBhdGNoUHJvcChlbCwgJ3ZhbHVlJywgbnVsbCwgcHJvcHMudmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKCh2bm9kZUhvb2sgPSBwcm9wcy5vblZub2RlQmVmb3JlTW91bnQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW52b2tlVk5vZGVIb29rKHZub2RlSG9vaywgcGFyZW50Q29tcG9uZW50LCB2bm9kZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gc2NvcGVJZFxyXG4gICAgICAgICAgICBzZXRTY29wZUlkKGVsLCB2bm9kZSwgdm5vZGUuc2NvcGVJZCwgc2xvdFNjb3BlSWRzLCBwYXJlbnRDb21wb25lbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXykge1xyXG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZWwsICdfX3Zub2RlJywge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6IHZub2RlLFxyXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2VcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbCwgJ19fdnVlUGFyZW50Q29tcG9uZW50Jywge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6IHBhcmVudENvbXBvbmVudCxcclxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZGlycykge1xyXG4gICAgICAgICAgICBpbnZva2VEaXJlY3RpdmVIb29rKHZub2RlLCBudWxsLCBwYXJlbnRDb21wb25lbnQsICdiZWZvcmVNb3VudCcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyAjMTU4MyBGb3IgaW5zaWRlIHN1c3BlbnNlICsgc3VzcGVuc2Ugbm90IHJlc29sdmVkIGNhc2UsIGVudGVyIGhvb2sgc2hvdWxkIGNhbGwgd2hlbiBzdXNwZW5zZSByZXNvbHZlZFxyXG4gICAgICAgIC8vICMxNjg5IEZvciBpbnNpZGUgc3VzcGVuc2UgKyBzdXNwZW5zZSByZXNvbHZlZCBjYXNlLCBqdXN0IGNhbGwgaXRcclxuICAgICAgICBjb25zdCBuZWVkQ2FsbFRyYW5zaXRpb25Ib29rcyA9ICghcGFyZW50U3VzcGVuc2UgfHwgKHBhcmVudFN1c3BlbnNlICYmICFwYXJlbnRTdXNwZW5zZS5wZW5kaW5nQnJhbmNoKSkgJiZcclxuICAgICAgICAgICAgdHJhbnNpdGlvbiAmJlxyXG4gICAgICAgICAgICAhdHJhbnNpdGlvbi5wZXJzaXN0ZWQ7XHJcbiAgICAgICAgaWYgKG5lZWRDYWxsVHJhbnNpdGlvbkhvb2tzKSB7XHJcbiAgICAgICAgICAgIHRyYW5zaXRpb24uYmVmb3JlRW50ZXIoZWwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBob3N0SW5zZXJ0KGVsLCBjb250YWluZXIsIGFuY2hvcik7XHJcbiAgICAgICAgaWYgKCh2bm9kZUhvb2sgPSBwcm9wcyAmJiBwcm9wcy5vblZub2RlTW91bnRlZCkgfHxcclxuICAgICAgICAgICAgbmVlZENhbGxUcmFuc2l0aW9uSG9va3MgfHxcclxuICAgICAgICAgICAgZGlycykge1xyXG4gICAgICAgICAgICBxdWV1ZVBvc3RSZW5kZXJFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdm5vZGVIb29rICYmIGludm9rZVZOb2RlSG9vayh2bm9kZUhvb2ssIHBhcmVudENvbXBvbmVudCwgdm5vZGUpO1xyXG4gICAgICAgICAgICAgICAgbmVlZENhbGxUcmFuc2l0aW9uSG9va3MgJiYgdHJhbnNpdGlvbi5lbnRlcihlbCk7XHJcbiAgICAgICAgICAgICAgICBkaXJzICYmIGludm9rZURpcmVjdGl2ZUhvb2sodm5vZGUsIG51bGwsIHBhcmVudENvbXBvbmVudCwgJ21vdW50ZWQnKTtcclxuICAgICAgICAgICAgfSwgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBzZXRTY29wZUlkID0gKGVsLCB2bm9kZSwgc2NvcGVJZCwgc2xvdFNjb3BlSWRzLCBwYXJlbnRDb21wb25lbnQpID0+IHtcclxuICAgICAgICBpZiAoc2NvcGVJZCkge1xyXG4gICAgICAgICAgICBob3N0U2V0U2NvcGVJZChlbCwgc2NvcGVJZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzbG90U2NvcGVJZHMpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzbG90U2NvcGVJZHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGhvc3RTZXRTY29wZUlkKGVsLCBzbG90U2NvcGVJZHNbaV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwYXJlbnRDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgbGV0IHN1YlRyZWUgPSBwYXJlbnRDb21wb25lbnQuc3ViVHJlZTtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICAgICAgc3ViVHJlZS5wYXRjaEZsYWcgPiAwICYmXHJcbiAgICAgICAgICAgICAgICBzdWJUcmVlLnBhdGNoRmxhZyAmIDIwNDggLyogUGF0Y2hGbGFncy5ERVZfUk9PVF9GUkFHTUVOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgc3ViVHJlZSA9XHJcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyU2luZ2xlUm9vdChzdWJUcmVlLmNoaWxkcmVuKSB8fCBzdWJUcmVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh2bm9kZSA9PT0gc3ViVHJlZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGFyZW50Vk5vZGUgPSBwYXJlbnRDb21wb25lbnQudm5vZGU7XHJcbiAgICAgICAgICAgICAgICBzZXRTY29wZUlkKGVsLCBwYXJlbnRWTm9kZSwgcGFyZW50Vk5vZGUuc2NvcGVJZCwgcGFyZW50Vk5vZGUuc2xvdFNjb3BlSWRzLCBwYXJlbnRDb21wb25lbnQucGFyZW50KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBtb3VudENoaWxkcmVuID0gKGNoaWxkcmVuLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkLCBzdGFydCA9IDApID0+IHtcclxuICAgICAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBjaGlsZCA9IChjaGlsZHJlbltpXSA9IG9wdGltaXplZFxyXG4gICAgICAgICAgICAgICAgPyBjbG9uZUlmTW91bnRlZChjaGlsZHJlbltpXSlcclxuICAgICAgICAgICAgICAgIDogbm9ybWFsaXplVk5vZGUoY2hpbGRyZW5baV0pKTtcclxuICAgICAgICAgICAgcGF0Y2gobnVsbCwgY2hpbGQsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBwYXRjaEVsZW1lbnQgPSAobjEsIG4yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpID0+IHtcclxuICAgICAgICBjb25zdCBlbCA9IChuMi5lbCA9IG4xLmVsKTtcclxuICAgICAgICBsZXQgeyBwYXRjaEZsYWcsIGR5bmFtaWNDaGlsZHJlbiwgZGlycyB9ID0gbjI7XHJcbiAgICAgICAgLy8gIzE0MjYgdGFrZSB0aGUgb2xkIHZub2RlJ3MgcGF0Y2ggZmxhZyBpbnRvIGFjY291bnQgc2luY2UgdXNlciBtYXkgY2xvbmUgYVxyXG4gICAgICAgIC8vIGNvbXBpbGVyLWdlbmVyYXRlZCB2bm9kZSwgd2hpY2ggZGUtb3B0cyB0byBGVUxMX1BST1BTXHJcbiAgICAgICAgcGF0Y2hGbGFnIHw9IG4xLnBhdGNoRmxhZyAmIDE2IC8qIFBhdGNoRmxhZ3MuRlVMTF9QUk9QUyAqLztcclxuICAgICAgICBjb25zdCBvbGRQcm9wcyA9IG4xLnByb3BzIHx8IEVNUFRZX09CSjtcclxuICAgICAgICBjb25zdCBuZXdQcm9wcyA9IG4yLnByb3BzIHx8IEVNUFRZX09CSjtcclxuICAgICAgICBsZXQgdm5vZGVIb29rO1xyXG4gICAgICAgIC8vIGRpc2FibGUgcmVjdXJzZSBpbiBiZWZvcmVVcGRhdGUgaG9va3NcclxuICAgICAgICBwYXJlbnRDb21wb25lbnQgJiYgdG9nZ2xlUmVjdXJzZShwYXJlbnRDb21wb25lbnQsIGZhbHNlKTtcclxuICAgICAgICBpZiAoKHZub2RlSG9vayA9IG5ld1Byb3BzLm9uVm5vZGVCZWZvcmVVcGRhdGUpKSB7XHJcbiAgICAgICAgICAgIGludm9rZVZOb2RlSG9vayh2bm9kZUhvb2ssIHBhcmVudENvbXBvbmVudCwgbjIsIG4xKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRpcnMpIHtcclxuICAgICAgICAgICAgaW52b2tlRGlyZWN0aXZlSG9vayhuMiwgbjEsIHBhcmVudENvbXBvbmVudCwgJ2JlZm9yZVVwZGF0ZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBwYXJlbnRDb21wb25lbnQgJiYgdG9nZ2xlUmVjdXJzZShwYXJlbnRDb21wb25lbnQsIHRydWUpO1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgaXNIbXJVcGRhdGluZykge1xyXG4gICAgICAgICAgICAvLyBITVIgdXBkYXRlZCwgZm9yY2UgZnVsbCBkaWZmXHJcbiAgICAgICAgICAgIHBhdGNoRmxhZyA9IDA7XHJcbiAgICAgICAgICAgIG9wdGltaXplZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBkeW5hbWljQ2hpbGRyZW4gPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBhcmVDaGlsZHJlblNWRyA9IGlzU1ZHICYmIG4yLnR5cGUgIT09ICdmb3JlaWduT2JqZWN0JztcclxuICAgICAgICBpZiAoZHluYW1pY0NoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgIHBhdGNoQmxvY2tDaGlsZHJlbihuMS5keW5hbWljQ2hpbGRyZW4sIGR5bmFtaWNDaGlsZHJlbiwgZWwsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGFyZUNoaWxkcmVuU1ZHLCBzbG90U2NvcGVJZHMpO1xyXG4gICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHBhcmVudENvbXBvbmVudCAmJiBwYXJlbnRDb21wb25lbnQudHlwZS5fX2htcklkKSB7XHJcbiAgICAgICAgICAgICAgICB0cmF2ZXJzZVN0YXRpY0NoaWxkcmVuKG4xLCBuMik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoIW9wdGltaXplZCkge1xyXG4gICAgICAgICAgICAvLyBmdWxsIGRpZmZcclxuICAgICAgICAgICAgcGF0Y2hDaGlsZHJlbihuMSwgbjIsIGVsLCBudWxsLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBhcmVDaGlsZHJlblNWRywgc2xvdFNjb3BlSWRzLCBmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwYXRjaEZsYWcgPiAwKSB7XHJcbiAgICAgICAgICAgIC8vIHRoZSBwcmVzZW5jZSBvZiBhIHBhdGNoRmxhZyBtZWFucyB0aGlzIGVsZW1lbnQncyByZW5kZXIgY29kZSB3YXNcclxuICAgICAgICAgICAgLy8gZ2VuZXJhdGVkIGJ5IHRoZSBjb21waWxlciBhbmQgY2FuIHRha2UgdGhlIGZhc3QgcGF0aC5cclxuICAgICAgICAgICAgLy8gaW4gdGhpcyBwYXRoIG9sZCBub2RlIGFuZCBuZXcgbm9kZSBhcmUgZ3VhcmFudGVlZCB0byBoYXZlIHRoZSBzYW1lIHNoYXBlXHJcbiAgICAgICAgICAgIC8vIChpLmUuIGF0IHRoZSBleGFjdCBzYW1lIHBvc2l0aW9uIGluIHRoZSBzb3VyY2UgdGVtcGxhdGUpXHJcbiAgICAgICAgICAgIGlmIChwYXRjaEZsYWcgJiAxNiAvKiBQYXRjaEZsYWdzLkZVTExfUFJPUFMgKi8pIHtcclxuICAgICAgICAgICAgICAgIC8vIGVsZW1lbnQgcHJvcHMgY29udGFpbiBkeW5hbWljIGtleXMsIGZ1bGwgZGlmZiBuZWVkZWRcclxuICAgICAgICAgICAgICAgIHBhdGNoUHJvcHMoZWwsIG4yLCBvbGRQcm9wcywgbmV3UHJvcHMsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIGNsYXNzXHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzIGZsYWcgaXMgbWF0Y2hlZCB3aGVuIHRoZSBlbGVtZW50IGhhcyBkeW5hbWljIGNsYXNzIGJpbmRpbmdzLlxyXG4gICAgICAgICAgICAgICAgaWYgKHBhdGNoRmxhZyAmIDIgLyogUGF0Y2hGbGFncy5DTEFTUyAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvbGRQcm9wcy5jbGFzcyAhPT0gbmV3UHJvcHMuY2xhc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaG9zdFBhdGNoUHJvcChlbCwgJ2NsYXNzJywgbnVsbCwgbmV3UHJvcHMuY2xhc3MsIGlzU1ZHKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBzdHlsZVxyXG4gICAgICAgICAgICAgICAgLy8gdGhpcyBmbGFnIGlzIG1hdGNoZWQgd2hlbiB0aGUgZWxlbWVudCBoYXMgZHluYW1pYyBzdHlsZSBiaW5kaW5nc1xyXG4gICAgICAgICAgICAgICAgaWYgKHBhdGNoRmxhZyAmIDQgLyogUGF0Y2hGbGFncy5TVFlMRSAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIGhvc3RQYXRjaFByb3AoZWwsICdzdHlsZScsIG9sZFByb3BzLnN0eWxlLCBuZXdQcm9wcy5zdHlsZSwgaXNTVkcpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gcHJvcHNcclxuICAgICAgICAgICAgICAgIC8vIFRoaXMgZmxhZyBpcyBtYXRjaGVkIHdoZW4gdGhlIGVsZW1lbnQgaGFzIGR5bmFtaWMgcHJvcC9hdHRyIGJpbmRpbmdzXHJcbiAgICAgICAgICAgICAgICAvLyBvdGhlciB0aGFuIGNsYXNzIGFuZCBzdHlsZS4gVGhlIGtleXMgb2YgZHluYW1pYyBwcm9wL2F0dHJzIGFyZSBzYXZlZCBmb3JcclxuICAgICAgICAgICAgICAgIC8vIGZhc3RlciBpdGVyYXRpb24uXHJcbiAgICAgICAgICAgICAgICAvLyBOb3RlIGR5bmFtaWMga2V5cyBsaWtlIDpbZm9vXT1cImJhclwiIHdpbGwgY2F1c2UgdGhpcyBvcHRpbWl6YXRpb24gdG9cclxuICAgICAgICAgICAgICAgIC8vIGJhaWwgb3V0IGFuZCBnbyB0aHJvdWdoIGEgZnVsbCBkaWZmIGJlY2F1c2Ugd2UgbmVlZCB0byB1bnNldCB0aGUgb2xkIGtleVxyXG4gICAgICAgICAgICAgICAgaWYgKHBhdGNoRmxhZyAmIDggLyogUGF0Y2hGbGFncy5QUk9QUyAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBmbGFnIGlzIHByZXNlbnQgdGhlbiBkeW5hbWljUHJvcHMgbXVzdCBiZSBub24tbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb3BzVG9VcGRhdGUgPSBuMi5keW5hbWljUHJvcHM7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wc1RvVXBkYXRlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IHByb3BzVG9VcGRhdGVbaV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXYgPSBvbGRQcm9wc1trZXldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0ID0gbmV3UHJvcHNba2V5XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gIzE0NzEgZm9yY2UgcGF0Y2ggdmFsdWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5leHQgIT09IHByZXYgfHwga2V5ID09PSAndmFsdWUnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3N0UGF0Y2hQcm9wKGVsLCBrZXksIHByZXYsIG5leHQsIGlzU1ZHLCBuMS5jaGlsZHJlbiwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgdW5tb3VudENoaWxkcmVuKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyB0ZXh0XHJcbiAgICAgICAgICAgIC8vIFRoaXMgZmxhZyBpcyBtYXRjaGVkIHdoZW4gdGhlIGVsZW1lbnQgaGFzIG9ubHkgZHluYW1pYyB0ZXh0IGNoaWxkcmVuLlxyXG4gICAgICAgICAgICBpZiAocGF0Y2hGbGFnICYgMSAvKiBQYXRjaEZsYWdzLlRFWFQgKi8pIHtcclxuICAgICAgICAgICAgICAgIGlmIChuMS5jaGlsZHJlbiAhPT0gbjIuY2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgICAgICAgICBob3N0U2V0RWxlbWVudFRleHQoZWwsIG4yLmNoaWxkcmVuKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICghb3B0aW1pemVkICYmIGR5bmFtaWNDaGlsZHJlbiA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIC8vIHVub3B0aW1pemVkLCBmdWxsIGRpZmZcclxuICAgICAgICAgICAgcGF0Y2hQcm9wcyhlbCwgbjIsIG9sZFByb3BzLCBuZXdQcm9wcywgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoKHZub2RlSG9vayA9IG5ld1Byb3BzLm9uVm5vZGVVcGRhdGVkKSB8fCBkaXJzKSB7XHJcbiAgICAgICAgICAgIHF1ZXVlUG9zdFJlbmRlckVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB2bm9kZUhvb2sgJiYgaW52b2tlVk5vZGVIb29rKHZub2RlSG9vaywgcGFyZW50Q29tcG9uZW50LCBuMiwgbjEpO1xyXG4gICAgICAgICAgICAgICAgZGlycyAmJiBpbnZva2VEaXJlY3RpdmVIb29rKG4yLCBuMSwgcGFyZW50Q29tcG9uZW50LCAndXBkYXRlZCcpO1xyXG4gICAgICAgICAgICB9LCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIC8vIFRoZSBmYXN0IHBhdGggZm9yIGJsb2Nrcy5cclxuICAgIGNvbnN0IHBhdGNoQmxvY2tDaGlsZHJlbiA9IChvbGRDaGlsZHJlbiwgbmV3Q2hpbGRyZW4sIGZhbGxiYWNrQ29udGFpbmVyLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzKSA9PiB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuZXdDaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBvbGRWTm9kZSA9IG9sZENoaWxkcmVuW2ldO1xyXG4gICAgICAgICAgICBjb25zdCBuZXdWTm9kZSA9IG5ld0NoaWxkcmVuW2ldO1xyXG4gICAgICAgICAgICAvLyBEZXRlcm1pbmUgdGhlIGNvbnRhaW5lciAocGFyZW50IGVsZW1lbnQpIGZvciB0aGUgcGF0Y2guXHJcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IFxyXG4gICAgICAgICAgICAvLyBvbGRWTm9kZSBtYXkgYmUgYW4gZXJyb3JlZCBhc3luYyBzZXR1cCgpIGNvbXBvbmVudCBpbnNpZGUgU3VzcGVuc2VcclxuICAgICAgICAgICAgLy8gd2hpY2ggd2lsbCBub3QgaGF2ZSBhIG1vdW50ZWQgZWxlbWVudFxyXG4gICAgICAgICAgICBvbGRWTm9kZS5lbCAmJlxyXG4gICAgICAgICAgICAgICAgLy8gLSBJbiB0aGUgY2FzZSBvZiBhIEZyYWdtZW50LCB3ZSBuZWVkIHRvIHByb3ZpZGUgdGhlIGFjdHVhbCBwYXJlbnRcclxuICAgICAgICAgICAgICAgIC8vIG9mIHRoZSBGcmFnbWVudCBpdHNlbGYgc28gaXQgY2FuIG1vdmUgaXRzIGNoaWxkcmVuLlxyXG4gICAgICAgICAgICAgICAgKG9sZFZOb2RlLnR5cGUgPT09IEZyYWdtZW50IHx8XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gLSBJbiB0aGUgY2FzZSBvZiBkaWZmZXJlbnQgbm9kZXMsIHRoZXJlIGlzIGdvaW5nIHRvIGJlIGEgcmVwbGFjZW1lbnRcclxuICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBhbHNvIHJlcXVpcmVzIHRoZSBjb3JyZWN0IHBhcmVudCBjb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAhaXNTYW1lVk5vZGVUeXBlKG9sZFZOb2RlLCBuZXdWTm9kZSkgfHxcclxuICAgICAgICAgICAgICAgICAgICAvLyAtIEluIHRoZSBjYXNlIG9mIGEgY29tcG9uZW50LCBpdCBjb3VsZCBjb250YWluIGFueXRoaW5nLlxyXG4gICAgICAgICAgICAgICAgICAgIG9sZFZOb2RlLnNoYXBlRmxhZyAmICg2IC8qIFNoYXBlRmxhZ3MuQ09NUE9ORU5UICovIHwgNjQgLyogU2hhcGVGbGFncy5URUxFUE9SVCAqLykpXHJcbiAgICAgICAgICAgICAgICA/IGhvc3RQYXJlbnROb2RlKG9sZFZOb2RlLmVsKVxyXG4gICAgICAgICAgICAgICAgOiAvLyBJbiBvdGhlciBjYXNlcywgdGhlIHBhcmVudCBjb250YWluZXIgaXMgbm90IGFjdHVhbGx5IHVzZWQgc28gd2VcclxuICAgICAgICAgICAgICAgICAgICAvLyBqdXN0IHBhc3MgdGhlIGJsb2NrIGVsZW1lbnQgaGVyZSB0byBhdm9pZCBhIERPTSBwYXJlbnROb2RlIGNhbGwuXHJcbiAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2tDb250YWluZXI7XHJcbiAgICAgICAgICAgIHBhdGNoKG9sZFZOb2RlLCBuZXdWTm9kZSwgY29udGFpbmVyLCBudWxsLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgcGF0Y2hQcm9wcyA9IChlbCwgdm5vZGUsIG9sZFByb3BzLCBuZXdQcm9wcywgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcpID0+IHtcclxuICAgICAgICBpZiAob2xkUHJvcHMgIT09IG5ld1Byb3BzKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIG5ld1Byb3BzKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBlbXB0eSBzdHJpbmcgaXMgbm90IHZhbGlkIHByb3BcclxuICAgICAgICAgICAgICAgIGlmIChpc1Jlc2VydmVkUHJvcChrZXkpKVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dCA9IG5ld1Byb3BzW2tleV07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2ID0gb2xkUHJvcHNba2V5XTtcclxuICAgICAgICAgICAgICAgIC8vIGRlZmVyIHBhdGNoaW5nIHZhbHVlXHJcbiAgICAgICAgICAgICAgICBpZiAobmV4dCAhPT0gcHJldiAmJiBrZXkgIT09ICd2YWx1ZScpIHtcclxuICAgICAgICAgICAgICAgICAgICBob3N0UGF0Y2hQcm9wKGVsLCBrZXksIHByZXYsIG5leHQsIGlzU1ZHLCB2bm9kZS5jaGlsZHJlbiwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgdW5tb3VudENoaWxkcmVuKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAob2xkUHJvcHMgIT09IEVNUFRZX09CSikge1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gb2xkUHJvcHMpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzUmVzZXJ2ZWRQcm9wKGtleSkgJiYgIShrZXkgaW4gbmV3UHJvcHMpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvc3RQYXRjaFByb3AoZWwsIGtleSwgb2xkUHJvcHNba2V5XSwgbnVsbCwgaXNTVkcsIHZub2RlLmNoaWxkcmVuLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCB1bm1vdW50Q2hpbGRyZW4pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoJ3ZhbHVlJyBpbiBuZXdQcm9wcykge1xyXG4gICAgICAgICAgICAgICAgaG9zdFBhdGNoUHJvcChlbCwgJ3ZhbHVlJywgb2xkUHJvcHMudmFsdWUsIG5ld1Byb3BzLnZhbHVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBwcm9jZXNzRnJhZ21lbnQgPSAobjEsIG4yLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZnJhZ21lbnRTdGFydEFuY2hvciA9IChuMi5lbCA9IG4xID8gbjEuZWwgOiBob3N0Q3JlYXRlVGV4dCgnJykpO1xyXG4gICAgICAgIGNvbnN0IGZyYWdtZW50RW5kQW5jaG9yID0gKG4yLmFuY2hvciA9IG4xID8gbjEuYW5jaG9yIDogaG9zdENyZWF0ZVRleHQoJycpKTtcclxuICAgICAgICBsZXQgeyBwYXRjaEZsYWcsIGR5bmFtaWNDaGlsZHJlbiwgc2xvdFNjb3BlSWRzOiBmcmFnbWVudFNsb3RTY29wZUlkcyB9ID0gbjI7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICAvLyAjNTUyMyBkZXYgcm9vdCBmcmFnbWVudCBtYXkgaW5oZXJpdCBkaXJlY3RpdmVzXHJcbiAgICAgICAgICAgIChpc0htclVwZGF0aW5nIHx8IHBhdGNoRmxhZyAmIDIwNDggLyogUGF0Y2hGbGFncy5ERVZfUk9PVF9GUkFHTUVOVCAqLykpIHtcclxuICAgICAgICAgICAgLy8gSE1SIHVwZGF0ZWQgLyBEZXYgcm9vdCBmcmFnbWVudCAody8gY29tbWVudHMpLCBmb3JjZSBmdWxsIGRpZmZcclxuICAgICAgICAgICAgcGF0Y2hGbGFnID0gMDtcclxuICAgICAgICAgICAgb3B0aW1pemVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGR5bmFtaWNDaGlsZHJlbiA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNoZWNrIGlmIHRoaXMgaXMgYSBzbG90IGZyYWdtZW50IHdpdGggOnNsb3R0ZWQgc2NvcGUgaWRzXHJcbiAgICAgICAgaWYgKGZyYWdtZW50U2xvdFNjb3BlSWRzKSB7XHJcbiAgICAgICAgICAgIHNsb3RTY29wZUlkcyA9IHNsb3RTY29wZUlkc1xyXG4gICAgICAgICAgICAgICAgPyBzbG90U2NvcGVJZHMuY29uY2F0KGZyYWdtZW50U2xvdFNjb3BlSWRzKVxyXG4gICAgICAgICAgICAgICAgOiBmcmFnbWVudFNsb3RTY29wZUlkcztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG4xID09IG51bGwpIHtcclxuICAgICAgICAgICAgaG9zdEluc2VydChmcmFnbWVudFN0YXJ0QW5jaG9yLCBjb250YWluZXIsIGFuY2hvcik7XHJcbiAgICAgICAgICAgIGhvc3RJbnNlcnQoZnJhZ21lbnRFbmRBbmNob3IsIGNvbnRhaW5lciwgYW5jaG9yKTtcclxuICAgICAgICAgICAgLy8gYSBmcmFnbWVudCBjYW4gb25seSBoYXZlIGFycmF5IGNoaWxkcmVuXHJcbiAgICAgICAgICAgIC8vIHNpbmNlIHRoZXkgYXJlIGVpdGhlciBnZW5lcmF0ZWQgYnkgdGhlIGNvbXBpbGVyLCBvciBpbXBsaWNpdGx5IGNyZWF0ZWRcclxuICAgICAgICAgICAgLy8gZnJvbSBhcnJheXMuXHJcbiAgICAgICAgICAgIG1vdW50Q2hpbGRyZW4objIuY2hpbGRyZW4sIGNvbnRhaW5lciwgZnJhZ21lbnRFbmRBbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAocGF0Y2hGbGFnID4gMCAmJlxyXG4gICAgICAgICAgICAgICAgcGF0Y2hGbGFnICYgNjQgLyogUGF0Y2hGbGFncy5TVEFCTEVfRlJBR01FTlQgKi8gJiZcclxuICAgICAgICAgICAgICAgIGR5bmFtaWNDaGlsZHJlbiAmJlxyXG4gICAgICAgICAgICAgICAgLy8gIzI3MTUgdGhlIHByZXZpb3VzIGZyYWdtZW50IGNvdWxkJ3ZlIGJlZW4gYSBCQUlMZWQgb25lIGFzIGEgcmVzdWx0XHJcbiAgICAgICAgICAgICAgICAvLyBvZiByZW5kZXJTbG90KCkgd2l0aCBubyB2YWxpZCBjaGlsZHJlblxyXG4gICAgICAgICAgICAgICAgbjEuZHluYW1pY0NoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBhIHN0YWJsZSBmcmFnbWVudCAodGVtcGxhdGUgcm9vdCBvciA8dGVtcGxhdGUgdi1mb3I+KSBkb2Vzbid0IG5lZWQgdG9cclxuICAgICAgICAgICAgICAgIC8vIHBhdGNoIGNoaWxkcmVuIG9yZGVyLCBidXQgaXQgbWF5IGNvbnRhaW4gZHluYW1pY0NoaWxkcmVuLlxyXG4gICAgICAgICAgICAgICAgcGF0Y2hCbG9ja0NoaWxkcmVuKG4xLmR5bmFtaWNDaGlsZHJlbiwgZHluYW1pY0NoaWxkcmVuLCBjb250YWluZXIsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMpO1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBwYXJlbnRDb21wb25lbnQgJiYgcGFyZW50Q29tcG9uZW50LnR5cGUuX19obXJJZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRyYXZlcnNlU3RhdGljQ2hpbGRyZW4objEsIG4yKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAgICAgLy8gIzIwODAgaWYgdGhlIHN0YWJsZSBmcmFnbWVudCBoYXMgYSBrZXksIGl0J3MgYSA8dGVtcGxhdGUgdi1mb3I+IHRoYXQgbWF5XHJcbiAgICAgICAgICAgICAgICAvLyAgZ2V0IG1vdmVkIGFyb3VuZC4gTWFrZSBzdXJlIGFsbCByb290IGxldmVsIHZub2RlcyBpbmhlcml0IGVsLlxyXG4gICAgICAgICAgICAgICAgLy8gIzIxMzQgb3IgaWYgaXQncyBhIGNvbXBvbmVudCByb290LCBpdCBtYXkgYWxzbyBnZXQgbW92ZWQgYXJvdW5kXHJcbiAgICAgICAgICAgICAgICAvLyBhcyB0aGUgY29tcG9uZW50IGlzIGJlaW5nIG1vdmVkLlxyXG4gICAgICAgICAgICAgICAgbjIua2V5ICE9IG51bGwgfHxcclxuICAgICAgICAgICAgICAgICAgICAocGFyZW50Q29tcG9uZW50ICYmIG4yID09PSBwYXJlbnRDb21wb25lbnQuc3ViVHJlZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0cmF2ZXJzZVN0YXRpY0NoaWxkcmVuKG4xLCBuMiwgdHJ1ZSAvKiBzaGFsbG93ICovKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIGtleWVkIC8gdW5rZXllZCwgb3IgbWFudWFsIGZyYWdtZW50cy5cclxuICAgICAgICAgICAgICAgIC8vIGZvciBrZXllZCAmIHVua2V5ZWQsIHNpbmNlIHRoZXkgYXJlIGNvbXBpbGVyIGdlbmVyYXRlZCBmcm9tIHYtZm9yLFxyXG4gICAgICAgICAgICAgICAgLy8gZWFjaCBjaGlsZCBpcyBndWFyYW50ZWVkIHRvIGJlIGEgYmxvY2sgc28gdGhlIGZyYWdtZW50IHdpbGwgbmV2ZXJcclxuICAgICAgICAgICAgICAgIC8vIGhhdmUgZHluYW1pY0NoaWxkcmVuLlxyXG4gICAgICAgICAgICAgICAgcGF0Y2hDaGlsZHJlbihuMSwgbjIsIGNvbnRhaW5lciwgZnJhZ21lbnRFbmRBbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgcHJvY2Vzc0NvbXBvbmVudCA9IChuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpID0+IHtcclxuICAgICAgICBuMi5zbG90U2NvcGVJZHMgPSBzbG90U2NvcGVJZHM7XHJcbiAgICAgICAgaWYgKG4xID09IG51bGwpIHtcclxuICAgICAgICAgICAgaWYgKG4yLnNoYXBlRmxhZyAmIDUxMiAvKiBTaGFwZUZsYWdzLkNPTVBPTkVOVF9LRVBUX0FMSVZFICovKSB7XHJcbiAgICAgICAgICAgICAgICBwYXJlbnRDb21wb25lbnQuY3R4LmFjdGl2YXRlKG4yLCBjb250YWluZXIsIGFuY2hvciwgaXNTVkcsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBtb3VudENvbXBvbmVudChuMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB1cGRhdGVDb21wb25lbnQobjEsIG4yLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBtb3VudENvbXBvbmVudCA9IChpbml0aWFsVk5vZGUsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgb3B0aW1pemVkKSA9PiB7XHJcbiAgICAgICAgY29uc3QgaW5zdGFuY2UgPSAoaW5pdGlhbFZOb2RlLmNvbXBvbmVudCA9IGNyZWF0ZUNvbXBvbmVudEluc3RhbmNlKGluaXRpYWxWTm9kZSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSkpO1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgaW5zdGFuY2UudHlwZS5fX2htcklkKSB7XHJcbiAgICAgICAgICAgIHJlZ2lzdGVySE1SKGluc3RhbmNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICBwdXNoV2FybmluZ0NvbnRleHQoaW5pdGlhbFZOb2RlKTtcclxuICAgICAgICAgICAgc3RhcnRNZWFzdXJlKGluc3RhbmNlLCBgbW91bnRgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gaW5qZWN0IHJlbmRlcmVyIGludGVybmFscyBmb3Iga2VlcEFsaXZlXHJcbiAgICAgICAgaWYgKGlzS2VlcEFsaXZlKGluaXRpYWxWTm9kZSkpIHtcclxuICAgICAgICAgICAgaW5zdGFuY2UuY3R4LnJlbmRlcmVyID0gaW50ZXJuYWxzO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyByZXNvbHZlIHByb3BzIGFuZCBzbG90cyBmb3Igc2V0dXAgY29udGV4dFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgc3RhcnRNZWFzdXJlKGluc3RhbmNlLCBgaW5pdGApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHNldHVwQ29tcG9uZW50KGluc3RhbmNlKTtcclxuICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgZW5kTWVhc3VyZShpbnN0YW5jZSwgYGluaXRgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBzZXR1cCgpIGlzIGFzeW5jLiBUaGlzIGNvbXBvbmVudCByZWxpZXMgb24gYXN5bmMgbG9naWMgdG8gYmUgcmVzb2x2ZWRcclxuICAgICAgICAvLyBiZWZvcmUgcHJvY2VlZGluZ1xyXG4gICAgICAgIGlmIChpbnN0YW5jZS5hc3luY0RlcCkge1xyXG4gICAgICAgICAgICBwYXJlbnRTdXNwZW5zZSAmJiBwYXJlbnRTdXNwZW5zZS5yZWdpc3RlckRlcChpbnN0YW5jZSwgc2V0dXBSZW5kZXJFZmZlY3QpO1xyXG4gICAgICAgICAgICAvLyBHaXZlIGl0IGEgcGxhY2Vob2xkZXIgaWYgdGhpcyBpcyBub3QgaHlkcmF0aW9uXHJcbiAgICAgICAgICAgIC8vIFRPRE8gaGFuZGxlIHNlbGYtZGVmaW5lZCBmYWxsYmFja1xyXG4gICAgICAgICAgICBpZiAoIWluaXRpYWxWTm9kZS5lbCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGxhY2Vob2xkZXIgPSAoaW5zdGFuY2Uuc3ViVHJlZSA9IGNyZWF0ZVZOb2RlKENvbW1lbnQpKTtcclxuICAgICAgICAgICAgICAgIHByb2Nlc3NDb21tZW50Tm9kZShudWxsLCBwbGFjZWhvbGRlciwgY29udGFpbmVyLCBhbmNob3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgc2V0dXBSZW5kZXJFZmZlY3QoaW5zdGFuY2UsIGluaXRpYWxWTm9kZSwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgb3B0aW1pemVkKTtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIHBvcFdhcm5pbmdDb250ZXh0KCk7XHJcbiAgICAgICAgICAgIGVuZE1lYXN1cmUoaW5zdGFuY2UsIGBtb3VudGApO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCB1cGRhdGVDb21wb25lbnQgPSAobjEsIG4yLCBvcHRpbWl6ZWQpID0+IHtcclxuICAgICAgICBjb25zdCBpbnN0YW5jZSA9IChuMi5jb21wb25lbnQgPSBuMS5jb21wb25lbnQpO1xyXG4gICAgICAgIGlmIChzaG91bGRVcGRhdGVDb21wb25lbnQobjEsIG4yLCBvcHRpbWl6ZWQpKSB7XHJcbiAgICAgICAgICAgIGlmIChpbnN0YW5jZS5hc3luY0RlcCAmJlxyXG4gICAgICAgICAgICAgICAgIWluc3RhbmNlLmFzeW5jUmVzb2x2ZWQpIHtcclxuICAgICAgICAgICAgICAgIC8vIGFzeW5jICYgc3RpbGwgcGVuZGluZyAtIGp1c3QgdXBkYXRlIHByb3BzIGFuZCBzbG90c1xyXG4gICAgICAgICAgICAgICAgLy8gc2luY2UgdGhlIGNvbXBvbmVudCdzIHJlYWN0aXZlIGVmZmVjdCBmb3IgcmVuZGVyIGlzbid0IHNldC11cCB5ZXRcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBwdXNoV2FybmluZ0NvbnRleHQobjIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdXBkYXRlQ29tcG9uZW50UHJlUmVuZGVyKGluc3RhbmNlLCBuMiwgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBwb3BXYXJuaW5nQ29udGV4dCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gbm9ybWFsIHVwZGF0ZVxyXG4gICAgICAgICAgICAgICAgaW5zdGFuY2UubmV4dCA9IG4yO1xyXG4gICAgICAgICAgICAgICAgLy8gaW4gY2FzZSB0aGUgY2hpbGQgY29tcG9uZW50IGlzIGFsc28gcXVldWVkLCByZW1vdmUgaXQgdG8gYXZvaWRcclxuICAgICAgICAgICAgICAgIC8vIGRvdWJsZSB1cGRhdGluZyB0aGUgc2FtZSBjaGlsZCBjb21wb25lbnQgaW4gdGhlIHNhbWUgZmx1c2guXHJcbiAgICAgICAgICAgICAgICBpbnZhbGlkYXRlSm9iKGluc3RhbmNlLnVwZGF0ZSk7XHJcbiAgICAgICAgICAgICAgICAvLyBpbnN0YW5jZS51cGRhdGUgaXMgdGhlIHJlYWN0aXZlIGVmZmVjdC5cclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLnVwZGF0ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBubyB1cGRhdGUgbmVlZGVkLiBqdXN0IGNvcHkgb3ZlciBwcm9wZXJ0aWVzXHJcbiAgICAgICAgICAgIG4yLmVsID0gbjEuZWw7XHJcbiAgICAgICAgICAgIGluc3RhbmNlLnZub2RlID0gbjI7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHNldHVwUmVuZGVyRWZmZWN0ID0gKGluc3RhbmNlLCBpbml0aWFsVk5vZGUsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIG9wdGltaXplZCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvbXBvbmVudFVwZGF0ZUZuID0gKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWluc3RhbmNlLmlzTW91bnRlZCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHZub2RlSG9vaztcclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgZWwsIHByb3BzIH0gPSBpbml0aWFsVk5vZGU7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IGJtLCBtLCBwYXJlbnQgfSA9IGluc3RhbmNlO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaXNBc3luY1dyYXBwZXJWTm9kZSA9IGlzQXN5bmNXcmFwcGVyKGluaXRpYWxWTm9kZSk7XHJcbiAgICAgICAgICAgICAgICB0b2dnbGVSZWN1cnNlKGluc3RhbmNlLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAvLyBiZWZvcmVNb3VudCBob29rXHJcbiAgICAgICAgICAgICAgICBpZiAoYm0pIHtcclxuICAgICAgICAgICAgICAgICAgICBpbnZva2VBcnJheUZucyhibSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBvblZub2RlQmVmb3JlTW91bnRcclxuICAgICAgICAgICAgICAgIGlmICghaXNBc3luY1dyYXBwZXJWTm9kZSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICh2bm9kZUhvb2sgPSBwcm9wcyAmJiBwcm9wcy5vblZub2RlQmVmb3JlTW91bnQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW52b2tlVk5vZGVIb29rKHZub2RlSG9vaywgcGFyZW50LCBpbml0aWFsVk5vZGUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdG9nZ2xlUmVjdXJzZShpbnN0YW5jZSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZWwgJiYgaHlkcmF0ZU5vZGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyB2bm9kZSBoYXMgYWRvcHRlZCBob3N0IG5vZGUgLSBwZXJmb3JtIGh5ZHJhdGlvbiBpbnN0ZWFkIG9mIG1vdW50LlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGh5ZHJhdGVTdWJUcmVlID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydE1lYXN1cmUoaW5zdGFuY2UsIGByZW5kZXJgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5zdWJUcmVlID0gcmVuZGVyQ29tcG9uZW50Um9vdChpbnN0YW5jZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZE1lYXN1cmUoaW5zdGFuY2UsIGByZW5kZXJgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydE1lYXN1cmUoaW5zdGFuY2UsIGBoeWRyYXRlYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaHlkcmF0ZU5vZGUoZWwsIGluc3RhbmNlLnN1YlRyZWUsIGluc3RhbmNlLCBwYXJlbnRTdXNwZW5zZSwgbnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZE1lYXN1cmUoaW5zdGFuY2UsIGBoeWRyYXRlYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0FzeW5jV3JhcHBlclZOb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxWTm9kZS50eXBlLl9fYXN5bmNMb2FkZXIoKS50aGVuKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBub3RlOiB3ZSBhcmUgbW92aW5nIHRoZSByZW5kZXIgY2FsbCBpbnRvIGFuIGFzeW5jIGNhbGxiYWNrLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBtZWFucyBpdCB3b24ndCB0cmFjayBkZXBlbmRlbmNpZXMgLSBidXQgaXQncyBvayBiZWNhdXNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGEgc2VydmVyLXJlbmRlcmVkIGFzeW5jIHdyYXBwZXIgaXMgYWxyZWFkeSBpbiByZXNvbHZlZCBzdGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgaXQgd2lsbCBuZXZlciBuZWVkIHRvIGNoYW5nZS5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKCkgPT4gIWluc3RhbmNlLmlzVW5tb3VudGVkICYmIGh5ZHJhdGVTdWJUcmVlKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaHlkcmF0ZVN1YlRyZWUoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0TWVhc3VyZShpbnN0YW5jZSwgYHJlbmRlcmApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdWJUcmVlID0gKGluc3RhbmNlLnN1YlRyZWUgPSByZW5kZXJDb21wb25lbnRSb290KGluc3RhbmNlKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRNZWFzdXJlKGluc3RhbmNlLCBgcmVuZGVyYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRNZWFzdXJlKGluc3RhbmNlLCBgcGF0Y2hgKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcGF0Y2gobnVsbCwgc3ViVHJlZSwgY29udGFpbmVyLCBhbmNob3IsIGluc3RhbmNlLCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kTWVhc3VyZShpbnN0YW5jZSwgYHBhdGNoYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxWTm9kZS5lbCA9IHN1YlRyZWUuZWw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBtb3VudGVkIGhvb2tcclxuICAgICAgICAgICAgICAgIGlmIChtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcXVldWVQb3N0UmVuZGVyRWZmZWN0KG0sIHBhcmVudFN1c3BlbnNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIG9uVm5vZGVNb3VudGVkXHJcbiAgICAgICAgICAgICAgICBpZiAoIWlzQXN5bmNXcmFwcGVyVk5vZGUgJiZcclxuICAgICAgICAgICAgICAgICAgICAodm5vZGVIb29rID0gcHJvcHMgJiYgcHJvcHMub25Wbm9kZU1vdW50ZWQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2NvcGVkSW5pdGlhbFZOb2RlID0gaW5pdGlhbFZOb2RlO1xyXG4gICAgICAgICAgICAgICAgICAgIHF1ZXVlUG9zdFJlbmRlckVmZmVjdCgoKSA9PiBpbnZva2VWTm9kZUhvb2sodm5vZGVIb29rLCBwYXJlbnQsIHNjb3BlZEluaXRpYWxWTm9kZSksIHBhcmVudFN1c3BlbnNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIGFjdGl2YXRlZCBob29rIGZvciBrZWVwLWFsaXZlIHJvb3RzLlxyXG4gICAgICAgICAgICAgICAgLy8gIzE3NDIgYWN0aXZhdGVkIGhvb2sgbXVzdCBiZSBhY2Nlc3NlZCBhZnRlciBmaXJzdCByZW5kZXJcclxuICAgICAgICAgICAgICAgIC8vIHNpbmNlIHRoZSBob29rIG1heSBiZSBpbmplY3RlZCBieSBhIGNoaWxkIGtlZXAtYWxpdmVcclxuICAgICAgICAgICAgICAgIGlmIChpbml0aWFsVk5vZGUuc2hhcGVGbGFnICYgMjU2IC8qIFNoYXBlRmxhZ3MuQ09NUE9ORU5UX1NIT1VMRF9LRUVQX0FMSVZFICovIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgKHBhcmVudCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FzeW5jV3JhcHBlcihwYXJlbnQudm5vZGUpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC52bm9kZS5zaGFwZUZsYWcgJiAyNTYgLyogU2hhcGVGbGFncy5DT01QT05FTlRfU0hPVUxEX0tFRVBfQUxJVkUgKi8pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuYSAmJiBxdWV1ZVBvc3RSZW5kZXJFZmZlY3QoaW5zdGFuY2UuYSwgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuaXNNb3VudGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGV2dG9vbHNDb21wb25lbnRBZGRlZChpbnN0YW5jZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyAjMjQ1ODogZGVmZXJlbmNlIG1vdW50LW9ubHkgb2JqZWN0IHBhcmFtZXRlcnMgdG8gcHJldmVudCBtZW1sZWFrc1xyXG4gICAgICAgICAgICAgICAgaW5pdGlhbFZOb2RlID0gY29udGFpbmVyID0gYW5jaG9yID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIHVwZGF0ZUNvbXBvbmVudFxyXG4gICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0cmlnZ2VyZWQgYnkgbXV0YXRpb24gb2YgY29tcG9uZW50J3Mgb3duIHN0YXRlIChuZXh0OiBudWxsKVxyXG4gICAgICAgICAgICAgICAgLy8gT1IgcGFyZW50IGNhbGxpbmcgcHJvY2Vzc0NvbXBvbmVudCAobmV4dDogVk5vZGUpXHJcbiAgICAgICAgICAgICAgICBsZXQgeyBuZXh0LCBidSwgdSwgcGFyZW50LCB2bm9kZSB9ID0gaW5zdGFuY2U7XHJcbiAgICAgICAgICAgICAgICBsZXQgb3JpZ2luTmV4dCA9IG5leHQ7XHJcbiAgICAgICAgICAgICAgICBsZXQgdm5vZGVIb29rO1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHB1c2hXYXJuaW5nQ29udGV4dChuZXh0IHx8IGluc3RhbmNlLnZub2RlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIERpc2FsbG93IGNvbXBvbmVudCBlZmZlY3QgcmVjdXJzaW9uIGR1cmluZyBwcmUtbGlmZWN5Y2xlIGhvb2tzLlxyXG4gICAgICAgICAgICAgICAgdG9nZ2xlUmVjdXJzZShpbnN0YW5jZSwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgaWYgKG5leHQpIHtcclxuICAgICAgICAgICAgICAgICAgICBuZXh0LmVsID0gdm5vZGUuZWw7XHJcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlQ29tcG9uZW50UHJlUmVuZGVyKGluc3RhbmNlLCBuZXh0LCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV4dCA9IHZub2RlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gYmVmb3JlVXBkYXRlIGhvb2tcclxuICAgICAgICAgICAgICAgIGlmIChidSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGludm9rZUFycmF5Rm5zKGJ1KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIG9uVm5vZGVCZWZvcmVVcGRhdGVcclxuICAgICAgICAgICAgICAgIGlmICgodm5vZGVIb29rID0gbmV4dC5wcm9wcyAmJiBuZXh0LnByb3BzLm9uVm5vZGVCZWZvcmVVcGRhdGUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW52b2tlVk5vZGVIb29rKHZub2RlSG9vaywgcGFyZW50LCBuZXh0LCB2bm9kZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0b2dnbGVSZWN1cnNlKGluc3RhbmNlLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgIC8vIHJlbmRlclxyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0TWVhc3VyZShpbnN0YW5jZSwgYHJlbmRlcmApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dFRyZWUgPSByZW5kZXJDb21wb25lbnRSb290KGluc3RhbmNlKTtcclxuICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBlbmRNZWFzdXJlKGluc3RhbmNlLCBgcmVuZGVyYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2VHJlZSA9IGluc3RhbmNlLnN1YlRyZWU7XHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5zdWJUcmVlID0gbmV4dFRyZWU7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRNZWFzdXJlKGluc3RhbmNlLCBgcGF0Y2hgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHBhdGNoKHByZXZUcmVlLCBuZXh0VHJlZSwgXHJcbiAgICAgICAgICAgICAgICAvLyBwYXJlbnQgbWF5IGhhdmUgY2hhbmdlZCBpZiBpdCdzIGluIGEgdGVsZXBvcnRcclxuICAgICAgICAgICAgICAgIGhvc3RQYXJlbnROb2RlKHByZXZUcmVlLmVsKSwgXHJcbiAgICAgICAgICAgICAgICAvLyBhbmNob3IgbWF5IGhhdmUgY2hhbmdlZCBpZiBpdCdzIGluIGEgZnJhZ21lbnRcclxuICAgICAgICAgICAgICAgIGdldE5leHRIb3N0Tm9kZShwcmV2VHJlZSksIGluc3RhbmNlLCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcpO1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGVuZE1lYXN1cmUoaW5zdGFuY2UsIGBwYXRjaGApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbmV4dC5lbCA9IG5leHRUcmVlLmVsO1xyXG4gICAgICAgICAgICAgICAgaWYgKG9yaWdpbk5leHQgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBzZWxmLXRyaWdnZXJlZCB1cGRhdGUuIEluIGNhc2Ugb2YgSE9DLCB1cGRhdGUgcGFyZW50IGNvbXBvbmVudFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHZub2RlIGVsLiBIT0MgaXMgaW5kaWNhdGVkIGJ5IHBhcmVudCBpbnN0YW5jZSdzIHN1YlRyZWUgcG9pbnRpbmdcclxuICAgICAgICAgICAgICAgICAgICAvLyB0byBjaGlsZCBjb21wb25lbnQncyB2bm9kZVxyXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUhPQ0hvc3RFbChpbnN0YW5jZSwgbmV4dFRyZWUuZWwpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gdXBkYXRlZCBob29rXHJcbiAgICAgICAgICAgICAgICBpZiAodSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHF1ZXVlUG9zdFJlbmRlckVmZmVjdCh1LCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBvblZub2RlVXBkYXRlZFxyXG4gICAgICAgICAgICAgICAgaWYgKCh2bm9kZUhvb2sgPSBuZXh0LnByb3BzICYmIG5leHQucHJvcHMub25Wbm9kZVVwZGF0ZWQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcXVldWVQb3N0UmVuZGVyRWZmZWN0KCgpID0+IGludm9rZVZOb2RlSG9vayh2bm9kZUhvb2ssIHBhcmVudCwgbmV4dCwgdm5vZGUpLCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXykge1xyXG4gICAgICAgICAgICAgICAgICAgIGRldnRvb2xzQ29tcG9uZW50VXBkYXRlZChpbnN0YW5jZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9wV2FybmluZ0NvbnRleHQoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgLy8gY3JlYXRlIHJlYWN0aXZlIGVmZmVjdCBmb3IgcmVuZGVyaW5nXHJcbiAgICAgICAgY29uc3QgZWZmZWN0ID0gKGluc3RhbmNlLmVmZmVjdCA9IG5ldyBSZWFjdGl2ZUVmZmVjdChjb21wb25lbnRVcGRhdGVGbiwgKCkgPT4gcXVldWVKb2IodXBkYXRlKSwgaW5zdGFuY2Uuc2NvcGUgLy8gdHJhY2sgaXQgaW4gY29tcG9uZW50J3MgZWZmZWN0IHNjb3BlXHJcbiAgICAgICAgKSk7XHJcbiAgICAgICAgY29uc3QgdXBkYXRlID0gKGluc3RhbmNlLnVwZGF0ZSA9ICgpID0+IGVmZmVjdC5ydW4oKSk7XHJcbiAgICAgICAgdXBkYXRlLmlkID0gaW5zdGFuY2UudWlkO1xyXG4gICAgICAgIC8vIGFsbG93UmVjdXJzZVxyXG4gICAgICAgIC8vICMxODAxLCAjMjA0MyBjb21wb25lbnQgcmVuZGVyIGVmZmVjdHMgc2hvdWxkIGFsbG93IHJlY3Vyc2l2ZSB1cGRhdGVzXHJcbiAgICAgICAgdG9nZ2xlUmVjdXJzZShpbnN0YW5jZSwgdHJ1ZSk7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICBlZmZlY3Qub25UcmFjayA9IGluc3RhbmNlLnJ0Y1xyXG4gICAgICAgICAgICAgICAgPyBlID0+IGludm9rZUFycmF5Rm5zKGluc3RhbmNlLnJ0YywgZSlcclxuICAgICAgICAgICAgICAgIDogdm9pZCAwO1xyXG4gICAgICAgICAgICBlZmZlY3Qub25UcmlnZ2VyID0gaW5zdGFuY2UucnRnXHJcbiAgICAgICAgICAgICAgICA/IGUgPT4gaW52b2tlQXJyYXlGbnMoaW5zdGFuY2UucnRnLCBlKVxyXG4gICAgICAgICAgICAgICAgOiB2b2lkIDA7XHJcbiAgICAgICAgICAgIHVwZGF0ZS5vd25lckluc3RhbmNlID0gaW5zdGFuY2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHVwZGF0ZSgpO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IHVwZGF0ZUNvbXBvbmVudFByZVJlbmRlciA9IChpbnN0YW5jZSwgbmV4dFZOb2RlLCBvcHRpbWl6ZWQpID0+IHtcclxuICAgICAgICBuZXh0Vk5vZGUuY29tcG9uZW50ID0gaW5zdGFuY2U7XHJcbiAgICAgICAgY29uc3QgcHJldlByb3BzID0gaW5zdGFuY2Uudm5vZGUucHJvcHM7XHJcbiAgICAgICAgaW5zdGFuY2Uudm5vZGUgPSBuZXh0Vk5vZGU7XHJcbiAgICAgICAgaW5zdGFuY2UubmV4dCA9IG51bGw7XHJcbiAgICAgICAgdXBkYXRlUHJvcHMoaW5zdGFuY2UsIG5leHRWTm9kZS5wcm9wcywgcHJldlByb3BzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgIHVwZGF0ZVNsb3RzKGluc3RhbmNlLCBuZXh0Vk5vZGUuY2hpbGRyZW4sIG9wdGltaXplZCk7XHJcbiAgICAgICAgcGF1c2VUcmFja2luZygpO1xyXG4gICAgICAgIC8vIHByb3BzIHVwZGF0ZSBtYXkgaGF2ZSB0cmlnZ2VyZWQgcHJlLWZsdXNoIHdhdGNoZXJzLlxyXG4gICAgICAgIC8vIGZsdXNoIHRoZW0gYmVmb3JlIHRoZSByZW5kZXIgdXBkYXRlLlxyXG4gICAgICAgIGZsdXNoUHJlRmx1c2hDYnMoKTtcclxuICAgICAgICByZXNldFRyYWNraW5nKCk7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgcGF0Y2hDaGlsZHJlbiA9IChuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQgPSBmYWxzZSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGMxID0gbjEgJiYgbjEuY2hpbGRyZW47XHJcbiAgICAgICAgY29uc3QgcHJldlNoYXBlRmxhZyA9IG4xID8gbjEuc2hhcGVGbGFnIDogMDtcclxuICAgICAgICBjb25zdCBjMiA9IG4yLmNoaWxkcmVuO1xyXG4gICAgICAgIGNvbnN0IHsgcGF0Y2hGbGFnLCBzaGFwZUZsYWcgfSA9IG4yO1xyXG4gICAgICAgIC8vIGZhc3QgcGF0aFxyXG4gICAgICAgIGlmIChwYXRjaEZsYWcgPiAwKSB7XHJcbiAgICAgICAgICAgIGlmIChwYXRjaEZsYWcgJiAxMjggLyogUGF0Y2hGbGFncy5LRVlFRF9GUkFHTUVOVCAqLykge1xyXG4gICAgICAgICAgICAgICAgLy8gdGhpcyBjb3VsZCBiZSBlaXRoZXIgZnVsbHkta2V5ZWQgb3IgbWl4ZWQgKHNvbWUga2V5ZWQgc29tZSBub3QpXHJcbiAgICAgICAgICAgICAgICAvLyBwcmVzZW5jZSBvZiBwYXRjaEZsYWcgbWVhbnMgY2hpbGRyZW4gYXJlIGd1YXJhbnRlZWQgdG8gYmUgYXJyYXlzXHJcbiAgICAgICAgICAgICAgICBwYXRjaEtleWVkQ2hpbGRyZW4oYzEsIGMyLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChwYXRjaEZsYWcgJiAyNTYgLyogUGF0Y2hGbGFncy5VTktFWUVEX0ZSQUdNRU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICAvLyB1bmtleWVkXHJcbiAgICAgICAgICAgICAgICBwYXRjaFVua2V5ZWRDaGlsZHJlbihjMSwgYzIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNoaWxkcmVuIGhhcyAzIHBvc3NpYmlsaXRpZXM6IHRleHQsIGFycmF5IG9yIG5vIGNoaWxkcmVuLlxyXG4gICAgICAgIGlmIChzaGFwZUZsYWcgJiA4IC8qIFNoYXBlRmxhZ3MuVEVYVF9DSElMRFJFTiAqLykge1xyXG4gICAgICAgICAgICAvLyB0ZXh0IGNoaWxkcmVuIGZhc3QgcGF0aFxyXG4gICAgICAgICAgICBpZiAocHJldlNoYXBlRmxhZyAmIDE2IC8qIFNoYXBlRmxhZ3MuQVJSQVlfQ0hJTERSRU4gKi8pIHtcclxuICAgICAgICAgICAgICAgIHVubW91bnRDaGlsZHJlbihjMSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGMyICE9PSBjMSkge1xyXG4gICAgICAgICAgICAgICAgaG9zdFNldEVsZW1lbnRUZXh0KGNvbnRhaW5lciwgYzIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAocHJldlNoYXBlRmxhZyAmIDE2IC8qIFNoYXBlRmxhZ3MuQVJSQVlfQ0hJTERSRU4gKi8pIHtcclxuICAgICAgICAgICAgICAgIC8vIHByZXYgY2hpbGRyZW4gd2FzIGFycmF5XHJcbiAgICAgICAgICAgICAgICBpZiAoc2hhcGVGbGFnICYgMTYgLyogU2hhcGVGbGFncy5BUlJBWV9DSElMRFJFTiAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHR3byBhcnJheXMsIGNhbm5vdCBhc3N1bWUgYW55dGhpbmcsIGRvIGZ1bGwgZGlmZlxyXG4gICAgICAgICAgICAgICAgICAgIHBhdGNoS2V5ZWRDaGlsZHJlbihjMSwgYzIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gbm8gbmV3IGNoaWxkcmVuLCBqdXN0IHVubW91bnQgb2xkXHJcbiAgICAgICAgICAgICAgICAgICAgdW5tb3VudENoaWxkcmVuKGMxLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIHByZXYgY2hpbGRyZW4gd2FzIHRleHQgT1IgbnVsbFxyXG4gICAgICAgICAgICAgICAgLy8gbmV3IGNoaWxkcmVuIGlzIGFycmF5IE9SIG51bGxcclxuICAgICAgICAgICAgICAgIGlmIChwcmV2U2hhcGVGbGFnICYgOCAvKiBTaGFwZUZsYWdzLlRFWFRfQ0hJTERSRU4gKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICBob3N0U2V0RWxlbWVudFRleHQoY29udGFpbmVyLCAnJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBtb3VudCBuZXcgaWYgYXJyYXlcclxuICAgICAgICAgICAgICAgIGlmIChzaGFwZUZsYWcgJiAxNiAvKiBTaGFwZUZsYWdzLkFSUkFZX0NISUxEUkVOICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbW91bnRDaGlsZHJlbihjMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgcGF0Y2hVbmtleWVkQ2hpbGRyZW4gPSAoYzEsIGMyLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKSA9PiB7XHJcbiAgICAgICAgYzEgPSBjMSB8fCBFTVBUWV9BUlI7XHJcbiAgICAgICAgYzIgPSBjMiB8fCBFTVBUWV9BUlI7XHJcbiAgICAgICAgY29uc3Qgb2xkTGVuZ3RoID0gYzEubGVuZ3RoO1xyXG4gICAgICAgIGNvbnN0IG5ld0xlbmd0aCA9IGMyLmxlbmd0aDtcclxuICAgICAgICBjb25zdCBjb21tb25MZW5ndGggPSBNYXRoLm1pbihvbGRMZW5ndGgsIG5ld0xlbmd0aCk7XHJcbiAgICAgICAgbGV0IGk7XHJcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvbW1vbkxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5leHRDaGlsZCA9IChjMltpXSA9IG9wdGltaXplZFxyXG4gICAgICAgICAgICAgICAgPyBjbG9uZUlmTW91bnRlZChjMltpXSlcclxuICAgICAgICAgICAgICAgIDogbm9ybWFsaXplVk5vZGUoYzJbaV0pKTtcclxuICAgICAgICAgICAgcGF0Y2goYzFbaV0sIG5leHRDaGlsZCwgY29udGFpbmVyLCBudWxsLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob2xkTGVuZ3RoID4gbmV3TGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIC8vIHJlbW92ZSBvbGRcclxuICAgICAgICAgICAgdW5tb3VudENoaWxkcmVuKGMxLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCB0cnVlLCBmYWxzZSwgY29tbW9uTGVuZ3RoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIG1vdW50IG5ld1xyXG4gICAgICAgICAgICBtb3VudENoaWxkcmVuKGMyLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkLCBjb21tb25MZW5ndGgpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICAvLyBjYW4gYmUgYWxsLWtleWVkIG9yIG1peGVkXHJcbiAgICBjb25zdCBwYXRjaEtleWVkQ2hpbGRyZW4gPSAoYzEsIGMyLCBjb250YWluZXIsIHBhcmVudEFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKSA9PiB7XHJcbiAgICAgICAgbGV0IGkgPSAwO1xyXG4gICAgICAgIGNvbnN0IGwyID0gYzIubGVuZ3RoO1xyXG4gICAgICAgIGxldCBlMSA9IGMxLmxlbmd0aCAtIDE7IC8vIHByZXYgZW5kaW5nIGluZGV4XHJcbiAgICAgICAgbGV0IGUyID0gbDIgLSAxOyAvLyBuZXh0IGVuZGluZyBpbmRleFxyXG4gICAgICAgIC8vIDEuIHN5bmMgZnJvbSBzdGFydFxyXG4gICAgICAgIC8vIChhIGIpIGNcclxuICAgICAgICAvLyAoYSBiKSBkIGVcclxuICAgICAgICB3aGlsZSAoaSA8PSBlMSAmJiBpIDw9IGUyKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG4xID0gYzFbaV07XHJcbiAgICAgICAgICAgIGNvbnN0IG4yID0gKGMyW2ldID0gb3B0aW1pemVkXHJcbiAgICAgICAgICAgICAgICA/IGNsb25lSWZNb3VudGVkKGMyW2ldKVxyXG4gICAgICAgICAgICAgICAgOiBub3JtYWxpemVWTm9kZShjMltpXSkpO1xyXG4gICAgICAgICAgICBpZiAoaXNTYW1lVk5vZGVUeXBlKG4xLCBuMikpIHtcclxuICAgICAgICAgICAgICAgIHBhdGNoKG4xLCBuMiwgY29udGFpbmVyLCBudWxsLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaSsrO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyAyLiBzeW5jIGZyb20gZW5kXHJcbiAgICAgICAgLy8gYSAoYiBjKVxyXG4gICAgICAgIC8vIGQgZSAoYiBjKVxyXG4gICAgICAgIHdoaWxlIChpIDw9IGUxICYmIGkgPD0gZTIpIHtcclxuICAgICAgICAgICAgY29uc3QgbjEgPSBjMVtlMV07XHJcbiAgICAgICAgICAgIGNvbnN0IG4yID0gKGMyW2UyXSA9IG9wdGltaXplZFxyXG4gICAgICAgICAgICAgICAgPyBjbG9uZUlmTW91bnRlZChjMltlMl0pXHJcbiAgICAgICAgICAgICAgICA6IG5vcm1hbGl6ZVZOb2RlKGMyW2UyXSkpO1xyXG4gICAgICAgICAgICBpZiAoaXNTYW1lVk5vZGVUeXBlKG4xLCBuMikpIHtcclxuICAgICAgICAgICAgICAgIHBhdGNoKG4xLCBuMiwgY29udGFpbmVyLCBudWxsLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZTEtLTtcclxuICAgICAgICAgICAgZTItLTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gMy4gY29tbW9uIHNlcXVlbmNlICsgbW91bnRcclxuICAgICAgICAvLyAoYSBiKVxyXG4gICAgICAgIC8vIChhIGIpIGNcclxuICAgICAgICAvLyBpID0gMiwgZTEgPSAxLCBlMiA9IDJcclxuICAgICAgICAvLyAoYSBiKVxyXG4gICAgICAgIC8vIGMgKGEgYilcclxuICAgICAgICAvLyBpID0gMCwgZTEgPSAtMSwgZTIgPSAwXHJcbiAgICAgICAgaWYgKGkgPiBlMSkge1xyXG4gICAgICAgICAgICBpZiAoaSA8PSBlMikge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dFBvcyA9IGUyICsgMTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFuY2hvciA9IG5leHRQb3MgPCBsMiA/IGMyW25leHRQb3NdLmVsIDogcGFyZW50QW5jaG9yO1xyXG4gICAgICAgICAgICAgICAgd2hpbGUgKGkgPD0gZTIpIHtcclxuICAgICAgICAgICAgICAgICAgICBwYXRjaChudWxsLCAoYzJbaV0gPSBvcHRpbWl6ZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyBjbG9uZUlmTW91bnRlZChjMltpXSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiBub3JtYWxpemVWTm9kZShjMltpXSkpLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgICAgICBpKys7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gNC4gY29tbW9uIHNlcXVlbmNlICsgdW5tb3VudFxyXG4gICAgICAgIC8vIChhIGIpIGNcclxuICAgICAgICAvLyAoYSBiKVxyXG4gICAgICAgIC8vIGkgPSAyLCBlMSA9IDIsIGUyID0gMVxyXG4gICAgICAgIC8vIGEgKGIgYylcclxuICAgICAgICAvLyAoYiBjKVxyXG4gICAgICAgIC8vIGkgPSAwLCBlMSA9IDAsIGUyID0gLTFcclxuICAgICAgICBlbHNlIGlmIChpID4gZTIpIHtcclxuICAgICAgICAgICAgd2hpbGUgKGkgPD0gZTEpIHtcclxuICAgICAgICAgICAgICAgIHVubW91bnQoYzFbaV0sIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgaSsrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIDUuIHVua25vd24gc2VxdWVuY2VcclxuICAgICAgICAvLyBbaSAuLi4gZTEgKyAxXTogYSBiIFtjIGQgZV0gZiBnXHJcbiAgICAgICAgLy8gW2kgLi4uIGUyICsgMV06IGEgYiBbZSBkIGMgaF0gZiBnXHJcbiAgICAgICAgLy8gaSA9IDIsIGUxID0gNCwgZTIgPSA1XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHMxID0gaTsgLy8gcHJldiBzdGFydGluZyBpbmRleFxyXG4gICAgICAgICAgICBjb25zdCBzMiA9IGk7IC8vIG5leHQgc3RhcnRpbmcgaW5kZXhcclxuICAgICAgICAgICAgLy8gNS4xIGJ1aWxkIGtleTppbmRleCBtYXAgZm9yIG5ld0NoaWxkcmVuXHJcbiAgICAgICAgICAgIGNvbnN0IGtleVRvTmV3SW5kZXhNYXAgPSBuZXcgTWFwKCk7XHJcbiAgICAgICAgICAgIGZvciAoaSA9IHMyOyBpIDw9IGUyOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5leHRDaGlsZCA9IChjMltpXSA9IG9wdGltaXplZFxyXG4gICAgICAgICAgICAgICAgICAgID8gY2xvbmVJZk1vdW50ZWQoYzJbaV0pXHJcbiAgICAgICAgICAgICAgICAgICAgOiBub3JtYWxpemVWTm9kZShjMltpXSkpO1xyXG4gICAgICAgICAgICAgICAgaWYgKG5leHRDaGlsZC5rZXkgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYga2V5VG9OZXdJbmRleE1hcC5oYXMobmV4dENoaWxkLmtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2FybihgRHVwbGljYXRlIGtleXMgZm91bmQgZHVyaW5nIHVwZGF0ZTpgLCBKU09OLnN0cmluZ2lmeShuZXh0Q2hpbGQua2V5KSwgYE1ha2Ugc3VyZSBrZXlzIGFyZSB1bmlxdWUuYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGtleVRvTmV3SW5kZXhNYXAuc2V0KG5leHRDaGlsZC5rZXksIGkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIDUuMiBsb29wIHRocm91Z2ggb2xkIGNoaWxkcmVuIGxlZnQgdG8gYmUgcGF0Y2hlZCBhbmQgdHJ5IHRvIHBhdGNoXHJcbiAgICAgICAgICAgIC8vIG1hdGNoaW5nIG5vZGVzICYgcmVtb3ZlIG5vZGVzIHRoYXQgYXJlIG5vIGxvbmdlciBwcmVzZW50XHJcbiAgICAgICAgICAgIGxldCBqO1xyXG4gICAgICAgICAgICBsZXQgcGF0Y2hlZCA9IDA7XHJcbiAgICAgICAgICAgIGNvbnN0IHRvQmVQYXRjaGVkID0gZTIgLSBzMiArIDE7XHJcbiAgICAgICAgICAgIGxldCBtb3ZlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAvLyB1c2VkIHRvIHRyYWNrIHdoZXRoZXIgYW55IG5vZGUgaGFzIG1vdmVkXHJcbiAgICAgICAgICAgIGxldCBtYXhOZXdJbmRleFNvRmFyID0gMDtcclxuICAgICAgICAgICAgLy8gd29ya3MgYXMgTWFwPG5ld0luZGV4LCBvbGRJbmRleD5cclxuICAgICAgICAgICAgLy8gTm90ZSB0aGF0IG9sZEluZGV4IGlzIG9mZnNldCBieSArMVxyXG4gICAgICAgICAgICAvLyBhbmQgb2xkSW5kZXggPSAwIGlzIGEgc3BlY2lhbCB2YWx1ZSBpbmRpY2F0aW5nIHRoZSBuZXcgbm9kZSBoYXNcclxuICAgICAgICAgICAgLy8gbm8gY29ycmVzcG9uZGluZyBvbGQgbm9kZS5cclxuICAgICAgICAgICAgLy8gdXNlZCBmb3IgZGV0ZXJtaW5pbmcgbG9uZ2VzdCBzdGFibGUgc3Vic2VxdWVuY2VcclxuICAgICAgICAgICAgY29uc3QgbmV3SW5kZXhUb09sZEluZGV4TWFwID0gbmV3IEFycmF5KHRvQmVQYXRjaGVkKTtcclxuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHRvQmVQYXRjaGVkOyBpKyspXHJcbiAgICAgICAgICAgICAgICBuZXdJbmRleFRvT2xkSW5kZXhNYXBbaV0gPSAwO1xyXG4gICAgICAgICAgICBmb3IgKGkgPSBzMTsgaSA8PSBlMTsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2Q2hpbGQgPSBjMVtpXTtcclxuICAgICAgICAgICAgICAgIGlmIChwYXRjaGVkID49IHRvQmVQYXRjaGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gYWxsIG5ldyBjaGlsZHJlbiBoYXZlIGJlZW4gcGF0Y2hlZCBzbyB0aGlzIGNhbiBvbmx5IGJlIGEgcmVtb3ZhbFxyXG4gICAgICAgICAgICAgICAgICAgIHVubW91bnQocHJldkNoaWxkLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGxldCBuZXdJbmRleDtcclxuICAgICAgICAgICAgICAgIGlmIChwcmV2Q2hpbGQua2V5ICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBuZXdJbmRleCA9IGtleVRvTmV3SW5kZXhNYXAuZ2V0KHByZXZDaGlsZC5rZXkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8ga2V5LWxlc3Mgbm9kZSwgdHJ5IHRvIGxvY2F0ZSBhIGtleS1sZXNzIG5vZGUgb2YgdGhlIHNhbWUgdHlwZVxyXG4gICAgICAgICAgICAgICAgICAgIGZvciAoaiA9IHMyOyBqIDw9IGUyOyBqKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5ld0luZGV4VG9PbGRJbmRleE1hcFtqIC0gczJdID09PSAwICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1NhbWVWTm9kZVR5cGUocHJldkNoaWxkLCBjMltqXSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0luZGV4ID0gajtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKG5ld0luZGV4ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB1bm1vdW50KHByZXZDaGlsZCwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBuZXdJbmRleFRvT2xkSW5kZXhNYXBbbmV3SW5kZXggLSBzMl0gPSBpICsgMTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobmV3SW5kZXggPj0gbWF4TmV3SW5kZXhTb0Zhcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhOZXdJbmRleFNvRmFyID0gbmV3SW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb3ZlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHBhdGNoKHByZXZDaGlsZCwgYzJbbmV3SW5kZXhdLCBjb250YWluZXIsIG51bGwsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcGF0Y2hlZCsrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIDUuMyBtb3ZlIGFuZCBtb3VudFxyXG4gICAgICAgICAgICAvLyBnZW5lcmF0ZSBsb25nZXN0IHN0YWJsZSBzdWJzZXF1ZW5jZSBvbmx5IHdoZW4gbm9kZXMgaGF2ZSBtb3ZlZFxyXG4gICAgICAgICAgICBjb25zdCBpbmNyZWFzaW5nTmV3SW5kZXhTZXF1ZW5jZSA9IG1vdmVkXHJcbiAgICAgICAgICAgICAgICA/IGdldFNlcXVlbmNlKG5ld0luZGV4VG9PbGRJbmRleE1hcClcclxuICAgICAgICAgICAgICAgIDogRU1QVFlfQVJSO1xyXG4gICAgICAgICAgICBqID0gaW5jcmVhc2luZ05ld0luZGV4U2VxdWVuY2UubGVuZ3RoIC0gMTtcclxuICAgICAgICAgICAgLy8gbG9vcGluZyBiYWNrd2FyZHMgc28gdGhhdCB3ZSBjYW4gdXNlIGxhc3QgcGF0Y2hlZCBub2RlIGFzIGFuY2hvclxyXG4gICAgICAgICAgICBmb3IgKGkgPSB0b0JlUGF0Y2hlZCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0SW5kZXggPSBzMiArIGk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0Q2hpbGQgPSBjMltuZXh0SW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYW5jaG9yID0gbmV4dEluZGV4ICsgMSA8IGwyID8gYzJbbmV4dEluZGV4ICsgMV0uZWwgOiBwYXJlbnRBbmNob3I7XHJcbiAgICAgICAgICAgICAgICBpZiAobmV3SW5kZXhUb09sZEluZGV4TWFwW2ldID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gbW91bnQgbmV3XHJcbiAgICAgICAgICAgICAgICAgICAgcGF0Y2gobnVsbCwgbmV4dENoaWxkLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1vdmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gbW92ZSBpZjpcclxuICAgICAgICAgICAgICAgICAgICAvLyBUaGVyZSBpcyBubyBzdGFibGUgc3Vic2VxdWVuY2UgKGUuZy4gYSByZXZlcnNlKVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIE9SIGN1cnJlbnQgbm9kZSBpcyBub3QgYW1vbmcgdGhlIHN0YWJsZSBzZXF1ZW5jZVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChqIDwgMCB8fCBpICE9PSBpbmNyZWFzaW5nTmV3SW5kZXhTZXF1ZW5jZVtqXSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb3ZlKG5leHRDaGlsZCwgY29udGFpbmVyLCBhbmNob3IsIDIgLyogTW92ZVR5cGUuUkVPUkRFUiAqLyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBqLS07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IG1vdmUgPSAodm5vZGUsIGNvbnRhaW5lciwgYW5jaG9yLCBtb3ZlVHlwZSwgcGFyZW50U3VzcGVuc2UgPSBudWxsKSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBlbCwgdHlwZSwgdHJhbnNpdGlvbiwgY2hpbGRyZW4sIHNoYXBlRmxhZyB9ID0gdm5vZGU7XHJcbiAgICAgICAgaWYgKHNoYXBlRmxhZyAmIDYgLyogU2hhcGVGbGFncy5DT01QT05FTlQgKi8pIHtcclxuICAgICAgICAgICAgbW92ZSh2bm9kZS5jb21wb25lbnQuc3ViVHJlZSwgY29udGFpbmVyLCBhbmNob3IsIG1vdmVUeXBlKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2hhcGVGbGFnICYgMTI4IC8qIFNoYXBlRmxhZ3MuU1VTUEVOU0UgKi8pIHtcclxuICAgICAgICAgICAgdm5vZGUuc3VzcGVuc2UubW92ZShjb250YWluZXIsIGFuY2hvciwgbW92ZVR5cGUpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzaGFwZUZsYWcgJiA2NCAvKiBTaGFwZUZsYWdzLlRFTEVQT1JUICovKSB7XHJcbiAgICAgICAgICAgIHR5cGUubW92ZSh2bm9kZSwgY29udGFpbmVyLCBhbmNob3IsIGludGVybmFscyk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGUgPT09IEZyYWdtZW50KSB7XHJcbiAgICAgICAgICAgIGhvc3RJbnNlcnQoZWwsIGNvbnRhaW5lciwgYW5jaG9yKTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgbW92ZShjaGlsZHJlbltpXSwgY29udGFpbmVyLCBhbmNob3IsIG1vdmVUeXBlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBob3N0SW5zZXJ0KHZub2RlLmFuY2hvciwgY29udGFpbmVyLCBhbmNob3IpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0eXBlID09PSBTdGF0aWMpIHtcclxuICAgICAgICAgICAgbW92ZVN0YXRpY05vZGUodm5vZGUsIGNvbnRhaW5lciwgYW5jaG9yKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBzaW5nbGUgbm9kZXNcclxuICAgICAgICBjb25zdCBuZWVkVHJhbnNpdGlvbiA9IG1vdmVUeXBlICE9PSAyIC8qIE1vdmVUeXBlLlJFT1JERVIgKi8gJiZcclxuICAgICAgICAgICAgc2hhcGVGbGFnICYgMSAvKiBTaGFwZUZsYWdzLkVMRU1FTlQgKi8gJiZcclxuICAgICAgICAgICAgdHJhbnNpdGlvbjtcclxuICAgICAgICBpZiAobmVlZFRyYW5zaXRpb24pIHtcclxuICAgICAgICAgICAgaWYgKG1vdmVUeXBlID09PSAwIC8qIE1vdmVUeXBlLkVOVEVSICovKSB7XHJcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uLmJlZm9yZUVudGVyKGVsKTtcclxuICAgICAgICAgICAgICAgIGhvc3RJbnNlcnQoZWwsIGNvbnRhaW5lciwgYW5jaG9yKTtcclxuICAgICAgICAgICAgICAgIHF1ZXVlUG9zdFJlbmRlckVmZmVjdCgoKSA9PiB0cmFuc2l0aW9uLmVudGVyKGVsKSwgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeyBsZWF2ZSwgZGVsYXlMZWF2ZSwgYWZ0ZXJMZWF2ZSB9ID0gdHJhbnNpdGlvbjtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlbW92ZSA9ICgpID0+IGhvc3RJbnNlcnQoZWwsIGNvbnRhaW5lciwgYW5jaG9yKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHBlcmZvcm1MZWF2ZSA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBsZWF2ZShlbCwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXJMZWF2ZSAmJiBhZnRlckxlYXZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgaWYgKGRlbGF5TGVhdmUpIHtcclxuICAgICAgICAgICAgICAgICAgICBkZWxheUxlYXZlKGVsLCByZW1vdmUsIHBlcmZvcm1MZWF2ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBwZXJmb3JtTGVhdmUoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaG9zdEluc2VydChlbCwgY29udGFpbmVyLCBhbmNob3IpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCB1bm1vdW50ID0gKHZub2RlLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBkb1JlbW92ZSA9IGZhbHNlLCBvcHRpbWl6ZWQgPSBmYWxzZSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsgdHlwZSwgcHJvcHMsIHJlZiwgY2hpbGRyZW4sIGR5bmFtaWNDaGlsZHJlbiwgc2hhcGVGbGFnLCBwYXRjaEZsYWcsIGRpcnMgfSA9IHZub2RlO1xyXG4gICAgICAgIC8vIHVuc2V0IHJlZlxyXG4gICAgICAgIGlmIChyZWYgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBzZXRSZWYocmVmLCBudWxsLCBwYXJlbnRTdXNwZW5zZSwgdm5vZGUsIHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2hhcGVGbGFnICYgMjU2IC8qIFNoYXBlRmxhZ3MuQ09NUE9ORU5UX1NIT1VMRF9LRUVQX0FMSVZFICovKSB7XHJcbiAgICAgICAgICAgIHBhcmVudENvbXBvbmVudC5jdHguZGVhY3RpdmF0ZSh2bm9kZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc2hvdWxkSW52b2tlRGlycyA9IHNoYXBlRmxhZyAmIDEgLyogU2hhcGVGbGFncy5FTEVNRU5UICovICYmIGRpcnM7XHJcbiAgICAgICAgY29uc3Qgc2hvdWxkSW52b2tlVm5vZGVIb29rID0gIWlzQXN5bmNXcmFwcGVyKHZub2RlKTtcclxuICAgICAgICBsZXQgdm5vZGVIb29rO1xyXG4gICAgICAgIGlmIChzaG91bGRJbnZva2VWbm9kZUhvb2sgJiZcclxuICAgICAgICAgICAgKHZub2RlSG9vayA9IHByb3BzICYmIHByb3BzLm9uVm5vZGVCZWZvcmVVbm1vdW50KSkge1xyXG4gICAgICAgICAgICBpbnZva2VWTm9kZUhvb2sodm5vZGVIb29rLCBwYXJlbnRDb21wb25lbnQsIHZub2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHNoYXBlRmxhZyAmIDYgLyogU2hhcGVGbGFncy5DT01QT05FTlQgKi8pIHtcclxuICAgICAgICAgICAgdW5tb3VudENvbXBvbmVudCh2bm9kZS5jb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBkb1JlbW92ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoc2hhcGVGbGFnICYgMTI4IC8qIFNoYXBlRmxhZ3MuU1VTUEVOU0UgKi8pIHtcclxuICAgICAgICAgICAgICAgIHZub2RlLnN1c3BlbnNlLnVubW91bnQocGFyZW50U3VzcGVuc2UsIGRvUmVtb3ZlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoc2hvdWxkSW52b2tlRGlycykge1xyXG4gICAgICAgICAgICAgICAgaW52b2tlRGlyZWN0aXZlSG9vayh2bm9kZSwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCAnYmVmb3JlVW5tb3VudCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChzaGFwZUZsYWcgJiA2NCAvKiBTaGFwZUZsYWdzLlRFTEVQT1JUICovKSB7XHJcbiAgICAgICAgICAgICAgICB2bm9kZS50eXBlLnJlbW92ZSh2bm9kZSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgb3B0aW1pemVkLCBpbnRlcm5hbHMsIGRvUmVtb3ZlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChkeW5hbWljQ2hpbGRyZW4gJiZcclxuICAgICAgICAgICAgICAgIC8vICMxMTUzOiBmYXN0IHBhdGggc2hvdWxkIG5vdCBiZSB0YWtlbiBmb3Igbm9uLXN0YWJsZSAodi1mb3IpIGZyYWdtZW50c1xyXG4gICAgICAgICAgICAgICAgKHR5cGUgIT09IEZyYWdtZW50IHx8XHJcbiAgICAgICAgICAgICAgICAgICAgKHBhdGNoRmxhZyA+IDAgJiYgcGF0Y2hGbGFnICYgNjQgLyogUGF0Y2hGbGFncy5TVEFCTEVfRlJBR01FTlQgKi8pKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gZmFzdCBwYXRoIGZvciBibG9jayBub2Rlczogb25seSBuZWVkIHRvIHVubW91bnQgZHluYW1pYyBjaGlsZHJlbi5cclxuICAgICAgICAgICAgICAgIHVubW91bnRDaGlsZHJlbihkeW5hbWljQ2hpbGRyZW4sIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGZhbHNlLCB0cnVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICgodHlwZSA9PT0gRnJhZ21lbnQgJiZcclxuICAgICAgICAgICAgICAgIHBhdGNoRmxhZyAmXHJcbiAgICAgICAgICAgICAgICAgICAgKDEyOCAvKiBQYXRjaEZsYWdzLktFWUVEX0ZSQUdNRU5UICovIHwgMjU2IC8qIFBhdGNoRmxhZ3MuVU5LRVlFRF9GUkFHTUVOVCAqLykpIHx8XHJcbiAgICAgICAgICAgICAgICAoIW9wdGltaXplZCAmJiBzaGFwZUZsYWcgJiAxNiAvKiBTaGFwZUZsYWdzLkFSUkFZX0NISUxEUkVOICovKSkge1xyXG4gICAgICAgICAgICAgICAgdW5tb3VudENoaWxkcmVuKGNoaWxkcmVuLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZG9SZW1vdmUpIHtcclxuICAgICAgICAgICAgICAgIHJlbW92ZSh2bm9kZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKChzaG91bGRJbnZva2VWbm9kZUhvb2sgJiZcclxuICAgICAgICAgICAgKHZub2RlSG9vayA9IHByb3BzICYmIHByb3BzLm9uVm5vZGVVbm1vdW50ZWQpKSB8fFxyXG4gICAgICAgICAgICBzaG91bGRJbnZva2VEaXJzKSB7XHJcbiAgICAgICAgICAgIHF1ZXVlUG9zdFJlbmRlckVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB2bm9kZUhvb2sgJiYgaW52b2tlVk5vZGVIb29rKHZub2RlSG9vaywgcGFyZW50Q29tcG9uZW50LCB2bm9kZSk7XHJcbiAgICAgICAgICAgICAgICBzaG91bGRJbnZva2VEaXJzICYmXHJcbiAgICAgICAgICAgICAgICAgICAgaW52b2tlRGlyZWN0aXZlSG9vayh2bm9kZSwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCAndW5tb3VudGVkJyk7XHJcbiAgICAgICAgICAgIH0sIHBhcmVudFN1c3BlbnNlKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgcmVtb3ZlID0gdm5vZGUgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsgdHlwZSwgZWwsIGFuY2hvciwgdHJhbnNpdGlvbiB9ID0gdm5vZGU7XHJcbiAgICAgICAgaWYgKHR5cGUgPT09IEZyYWdtZW50KSB7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgICAgIHZub2RlLnBhdGNoRmxhZyA+IDAgJiZcclxuICAgICAgICAgICAgICAgIHZub2RlLnBhdGNoRmxhZyAmIDIwNDggLyogUGF0Y2hGbGFncy5ERVZfUk9PVF9GUkFHTUVOVCAqLyAmJlxyXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbiAmJlxyXG4gICAgICAgICAgICAgICAgIXRyYW5zaXRpb24ucGVyc2lzdGVkKSB7XHJcbiAgICAgICAgICAgICAgICB2bm9kZS5jaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQudHlwZSA9PT0gQ29tbWVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBob3N0UmVtb3ZlKGNoaWxkLmVsKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZShjaGlsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZW1vdmVGcmFnbWVudChlbCwgYW5jaG9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0eXBlID09PSBTdGF0aWMpIHtcclxuICAgICAgICAgICAgcmVtb3ZlU3RhdGljTm9kZSh2bm9kZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcGVyZm9ybVJlbW92ZSA9ICgpID0+IHtcclxuICAgICAgICAgICAgaG9zdFJlbW92ZShlbCk7XHJcbiAgICAgICAgICAgIGlmICh0cmFuc2l0aW9uICYmICF0cmFuc2l0aW9uLnBlcnNpc3RlZCAmJiB0cmFuc2l0aW9uLmFmdGVyTGVhdmUpIHtcclxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb24uYWZ0ZXJMZWF2ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICBpZiAodm5vZGUuc2hhcGVGbGFnICYgMSAvKiBTaGFwZUZsYWdzLkVMRU1FTlQgKi8gJiZcclxuICAgICAgICAgICAgdHJhbnNpdGlvbiAmJlxyXG4gICAgICAgICAgICAhdHJhbnNpdGlvbi5wZXJzaXN0ZWQpIHtcclxuICAgICAgICAgICAgY29uc3QgeyBsZWF2ZSwgZGVsYXlMZWF2ZSB9ID0gdHJhbnNpdGlvbjtcclxuICAgICAgICAgICAgY29uc3QgcGVyZm9ybUxlYXZlID0gKCkgPT4gbGVhdmUoZWwsIHBlcmZvcm1SZW1vdmUpO1xyXG4gICAgICAgICAgICBpZiAoZGVsYXlMZWF2ZSkge1xyXG4gICAgICAgICAgICAgICAgZGVsYXlMZWF2ZSh2bm9kZS5lbCwgcGVyZm9ybVJlbW92ZSwgcGVyZm9ybUxlYXZlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHBlcmZvcm1MZWF2ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBwZXJmb3JtUmVtb3ZlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHJlbW92ZUZyYWdtZW50ID0gKGN1ciwgZW5kKSA9PiB7XHJcbiAgICAgICAgLy8gRm9yIGZyYWdtZW50cywgZGlyZWN0bHkgcmVtb3ZlIGFsbCBjb250YWluZWQgRE9NIG5vZGVzLlxyXG4gICAgICAgIC8vIChmcmFnbWVudCBjaGlsZCBub2RlcyBjYW5ub3QgaGF2ZSB0cmFuc2l0aW9uKVxyXG4gICAgICAgIGxldCBuZXh0O1xyXG4gICAgICAgIHdoaWxlIChjdXIgIT09IGVuZCkge1xyXG4gICAgICAgICAgICBuZXh0ID0gaG9zdE5leHRTaWJsaW5nKGN1cik7XHJcbiAgICAgICAgICAgIGhvc3RSZW1vdmUoY3VyKTtcclxuICAgICAgICAgICAgY3VyID0gbmV4dDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaG9zdFJlbW92ZShlbmQpO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IHVubW91bnRDb21wb25lbnQgPSAoaW5zdGFuY2UsIHBhcmVudFN1c3BlbnNlLCBkb1JlbW92ZSkgPT4ge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgaW5zdGFuY2UudHlwZS5fX2htcklkKSB7XHJcbiAgICAgICAgICAgIHVucmVnaXN0ZXJITVIoaW5zdGFuY2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB7IGJ1bSwgc2NvcGUsIHVwZGF0ZSwgc3ViVHJlZSwgdW0gfSA9IGluc3RhbmNlO1xyXG4gICAgICAgIC8vIGJlZm9yZVVubW91bnQgaG9va1xyXG4gICAgICAgIGlmIChidW0pIHtcclxuICAgICAgICAgICAgaW52b2tlQXJyYXlGbnMoYnVtKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gc3RvcCBlZmZlY3RzIGluIGNvbXBvbmVudCBzY29wZVxyXG4gICAgICAgIHNjb3BlLnN0b3AoKTtcclxuICAgICAgICAvLyB1cGRhdGUgbWF5IGJlIG51bGwgaWYgYSBjb21wb25lbnQgaXMgdW5tb3VudGVkIGJlZm9yZSBpdHMgYXN5bmNcclxuICAgICAgICAvLyBzZXR1cCBoYXMgcmVzb2x2ZWQuXHJcbiAgICAgICAgaWYgKHVwZGF0ZSkge1xyXG4gICAgICAgICAgICAvLyBzbyB0aGF0IHNjaGVkdWxlciB3aWxsIG5vIGxvbmdlciBpbnZva2UgaXRcclxuICAgICAgICAgICAgdXBkYXRlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB1bm1vdW50KHN1YlRyZWUsIGluc3RhbmNlLCBwYXJlbnRTdXNwZW5zZSwgZG9SZW1vdmUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyB1bm1vdW50ZWQgaG9va1xyXG4gICAgICAgIGlmICh1bSkge1xyXG4gICAgICAgICAgICBxdWV1ZVBvc3RSZW5kZXJFZmZlY3QodW0sIHBhcmVudFN1c3BlbnNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcXVldWVQb3N0UmVuZGVyRWZmZWN0KCgpID0+IHtcclxuICAgICAgICAgICAgaW5zdGFuY2UuaXNVbm1vdW50ZWQgPSB0cnVlO1xyXG4gICAgICAgIH0sIHBhcmVudFN1c3BlbnNlKTtcclxuICAgICAgICAvLyBBIGNvbXBvbmVudCB3aXRoIGFzeW5jIGRlcCBpbnNpZGUgYSBwZW5kaW5nIHN1c3BlbnNlIGlzIHVubW91bnRlZCBiZWZvcmVcclxuICAgICAgICAvLyBpdHMgYXN5bmMgZGVwIHJlc29sdmVzLiBUaGlzIHNob3VsZCByZW1vdmUgdGhlIGRlcCBmcm9tIHRoZSBzdXNwZW5zZSwgYW5kXHJcbiAgICAgICAgLy8gY2F1c2UgdGhlIHN1c3BlbnNlIHRvIHJlc29sdmUgaW1tZWRpYXRlbHkgaWYgdGhhdCB3YXMgdGhlIGxhc3QgZGVwLlxyXG4gICAgICAgIGlmIChwYXJlbnRTdXNwZW5zZSAmJlxyXG4gICAgICAgICAgICBwYXJlbnRTdXNwZW5zZS5wZW5kaW5nQnJhbmNoICYmXHJcbiAgICAgICAgICAgICFwYXJlbnRTdXNwZW5zZS5pc1VubW91bnRlZCAmJlxyXG4gICAgICAgICAgICBpbnN0YW5jZS5hc3luY0RlcCAmJlxyXG4gICAgICAgICAgICAhaW5zdGFuY2UuYXN5bmNSZXNvbHZlZCAmJlxyXG4gICAgICAgICAgICBpbnN0YW5jZS5zdXNwZW5zZUlkID09PSBwYXJlbnRTdXNwZW5zZS5wZW5kaW5nSWQpIHtcclxuICAgICAgICAgICAgcGFyZW50U3VzcGVuc2UuZGVwcy0tO1xyXG4gICAgICAgICAgICBpZiAocGFyZW50U3VzcGVuc2UuZGVwcyA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgcGFyZW50U3VzcGVuc2UucmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSB7XHJcbiAgICAgICAgICAgIGRldnRvb2xzQ29tcG9uZW50UmVtb3ZlZChpbnN0YW5jZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHVubW91bnRDaGlsZHJlbiA9IChjaGlsZHJlbiwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgZG9SZW1vdmUgPSBmYWxzZSwgb3B0aW1pemVkID0gZmFsc2UsIHN0YXJ0ID0gMCkgPT4ge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHVubW91bnQoY2hpbGRyZW5baV0sIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGRvUmVtb3ZlLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBnZXROZXh0SG9zdE5vZGUgPSB2bm9kZSA9PiB7XHJcbiAgICAgICAgaWYgKHZub2RlLnNoYXBlRmxhZyAmIDYgLyogU2hhcGVGbGFncy5DT01QT05FTlQgKi8pIHtcclxuICAgICAgICAgICAgcmV0dXJuIGdldE5leHRIb3N0Tm9kZSh2bm9kZS5jb21wb25lbnQuc3ViVHJlZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh2bm9kZS5zaGFwZUZsYWcgJiAxMjggLyogU2hhcGVGbGFncy5TVVNQRU5TRSAqLykge1xyXG4gICAgICAgICAgICByZXR1cm4gdm5vZGUuc3VzcGVuc2UubmV4dCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaG9zdE5leHRTaWJsaW5nKCh2bm9kZS5hbmNob3IgfHwgdm5vZGUuZWwpKTtcclxuICAgIH07XHJcbiAgICBjb25zdCByZW5kZXIgPSAodm5vZGUsIGNvbnRhaW5lciwgaXNTVkcpID0+IHtcclxuICAgICAgICBpZiAodm5vZGUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBpZiAoY29udGFpbmVyLl92bm9kZSkge1xyXG4gICAgICAgICAgICAgICAgdW5tb3VudChjb250YWluZXIuX3Zub2RlLCBudWxsLCBudWxsLCB0cnVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcGF0Y2goY29udGFpbmVyLl92bm9kZSB8fCBudWxsLCB2bm9kZSwgY29udGFpbmVyLCBudWxsLCBudWxsLCBudWxsLCBpc1NWRyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZsdXNoUHJlRmx1c2hDYnMoKTtcclxuICAgICAgICBmbHVzaFBvc3RGbHVzaENicygpO1xyXG4gICAgICAgIGNvbnRhaW5lci5fdm5vZGUgPSB2bm9kZTtcclxuICAgIH07XHJcbiAgICBjb25zdCBpbnRlcm5hbHMgPSB7XHJcbiAgICAgICAgcDogcGF0Y2gsXHJcbiAgICAgICAgdW06IHVubW91bnQsXHJcbiAgICAgICAgbTogbW92ZSxcclxuICAgICAgICByOiByZW1vdmUsXHJcbiAgICAgICAgbXQ6IG1vdW50Q29tcG9uZW50LFxyXG4gICAgICAgIG1jOiBtb3VudENoaWxkcmVuLFxyXG4gICAgICAgIHBjOiBwYXRjaENoaWxkcmVuLFxyXG4gICAgICAgIHBiYzogcGF0Y2hCbG9ja0NoaWxkcmVuLFxyXG4gICAgICAgIG46IGdldE5leHRIb3N0Tm9kZSxcclxuICAgICAgICBvOiBvcHRpb25zXHJcbiAgICB9O1xyXG4gICAgbGV0IGh5ZHJhdGU7XHJcbiAgICBsZXQgaHlkcmF0ZU5vZGU7XHJcbiAgICBpZiAoY3JlYXRlSHlkcmF0aW9uRm5zKSB7XHJcbiAgICAgICAgW2h5ZHJhdGUsIGh5ZHJhdGVOb2RlXSA9IGNyZWF0ZUh5ZHJhdGlvbkZucyhpbnRlcm5hbHMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICByZW5kZXIsXHJcbiAgICAgICAgaHlkcmF0ZSxcclxuICAgICAgICBjcmVhdGVBcHA6IGNyZWF0ZUFwcEFQSShyZW5kZXIsIGh5ZHJhdGUpXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIHRvZ2dsZVJlY3Vyc2UoeyBlZmZlY3QsIHVwZGF0ZSB9LCBhbGxvd2VkKSB7XHJcbiAgICBlZmZlY3QuYWxsb3dSZWN1cnNlID0gdXBkYXRlLmFsbG93UmVjdXJzZSA9IGFsbG93ZWQ7XHJcbn1cclxuLyoqXHJcbiAqICMxMTU2XHJcbiAqIFdoZW4gYSBjb21wb25lbnQgaXMgSE1SLWVuYWJsZWQsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgYWxsIHN0YXRpYyBub2Rlc1xyXG4gKiBpbnNpZGUgYSBibG9jayBhbHNvIGluaGVyaXQgdGhlIERPTSBlbGVtZW50IGZyb20gdGhlIHByZXZpb3VzIHRyZWUgc28gdGhhdFxyXG4gKiBITVIgdXBkYXRlcyAod2hpY2ggYXJlIGZ1bGwgdXBkYXRlcykgY2FuIHJldHJpZXZlIHRoZSBlbGVtZW50IGZvciBwYXRjaGluZy5cclxuICpcclxuICogIzIwODBcclxuICogSW5zaWRlIGtleWVkIGB0ZW1wbGF0ZWAgZnJhZ21lbnQgc3RhdGljIGNoaWxkcmVuLCBpZiBhIGZyYWdtZW50IGlzIG1vdmVkLFxyXG4gKiB0aGUgY2hpbGRyZW4gd2lsbCBhbHdheXMgYmUgbW92ZWQuIFRoZXJlZm9yZSwgaW4gb3JkZXIgdG8gZW5zdXJlIGNvcnJlY3QgbW92ZVxyXG4gKiBwb3NpdGlvbiwgZWwgc2hvdWxkIGJlIGluaGVyaXRlZCBmcm9tIHByZXZpb3VzIG5vZGVzLlxyXG4gKi9cclxuZnVuY3Rpb24gdHJhdmVyc2VTdGF0aWNDaGlsZHJlbihuMSwgbjIsIHNoYWxsb3cgPSBmYWxzZSkge1xyXG4gICAgY29uc3QgY2gxID0gbjEuY2hpbGRyZW47XHJcbiAgICBjb25zdCBjaDIgPSBuMi5jaGlsZHJlbjtcclxuICAgIGlmIChpc0FycmF5KGNoMSkgJiYgaXNBcnJheShjaDIpKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaDEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgLy8gdGhpcyBpcyBvbmx5IGNhbGxlZCBpbiB0aGUgb3B0aW1pemVkIHBhdGggc28gYXJyYXkgY2hpbGRyZW4gYXJlXHJcbiAgICAgICAgICAgIC8vIGd1YXJhbnRlZWQgdG8gYmUgdm5vZGVzXHJcbiAgICAgICAgICAgIGNvbnN0IGMxID0gY2gxW2ldO1xyXG4gICAgICAgICAgICBsZXQgYzIgPSBjaDJbaV07XHJcbiAgICAgICAgICAgIGlmIChjMi5zaGFwZUZsYWcgJiAxIC8qIFNoYXBlRmxhZ3MuRUxFTUVOVCAqLyAmJiAhYzIuZHluYW1pY0NoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYzIucGF0Y2hGbGFnIDw9IDAgfHwgYzIucGF0Y2hGbGFnID09PSAzMiAvKiBQYXRjaEZsYWdzLkhZRFJBVEVfRVZFTlRTICovKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYzIgPSBjaDJbaV0gPSBjbG9uZUlmTW91bnRlZChjaDJbaV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGMyLmVsID0gYzEuZWw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoIXNoYWxsb3cpXHJcbiAgICAgICAgICAgICAgICAgICAgdHJhdmVyc2VTdGF0aWNDaGlsZHJlbihjMSwgYzIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGFsc28gaW5oZXJpdCBmb3IgY29tbWVudCBub2RlcywgYnV0IG5vdCBwbGFjZWhvbGRlcnMgKGUuZy4gdi1pZiB3aGljaFxyXG4gICAgICAgICAgICAvLyB3b3VsZCBoYXZlIHJlY2VpdmVkIC5lbCBkdXJpbmcgYmxvY2sgcGF0Y2gpXHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgYzIudHlwZSA9PT0gQ29tbWVudCAmJiAhYzIuZWwpIHtcclxuICAgICAgICAgICAgICAgIGMyLmVsID0gYzEuZWw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTG9uZ2VzdF9pbmNyZWFzaW5nX3N1YnNlcXVlbmNlXHJcbmZ1bmN0aW9uIGdldFNlcXVlbmNlKGFycikge1xyXG4gICAgY29uc3QgcCA9IGFyci5zbGljZSgpO1xyXG4gICAgY29uc3QgcmVzdWx0ID0gWzBdO1xyXG4gICAgbGV0IGksIGosIHUsIHYsIGM7XHJcbiAgICBjb25zdCBsZW4gPSBhcnIubGVuZ3RoO1xyXG4gICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgYXJySSA9IGFycltpXTtcclxuICAgICAgICBpZiAoYXJySSAhPT0gMCkge1xyXG4gICAgICAgICAgICBqID0gcmVzdWx0W3Jlc3VsdC5sZW5ndGggLSAxXTtcclxuICAgICAgICAgICAgaWYgKGFycltqXSA8IGFyckkpIHtcclxuICAgICAgICAgICAgICAgIHBbaV0gPSBqO1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goaSk7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB1ID0gMDtcclxuICAgICAgICAgICAgdiA9IHJlc3VsdC5sZW5ndGggLSAxO1xyXG4gICAgICAgICAgICB3aGlsZSAodSA8IHYpIHtcclxuICAgICAgICAgICAgICAgIGMgPSAodSArIHYpID4+IDE7XHJcbiAgICAgICAgICAgICAgICBpZiAoYXJyW3Jlc3VsdFtjXV0gPCBhcnJJKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdSA9IGMgKyAxO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdiA9IGM7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGFyckkgPCBhcnJbcmVzdWx0W3VdXSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHUgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcFtpXSA9IHJlc3VsdFt1IC0gMV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXN1bHRbdV0gPSBpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgdSA9IHJlc3VsdC5sZW5ndGg7XHJcbiAgICB2ID0gcmVzdWx0W3UgLSAxXTtcclxuICAgIHdoaWxlICh1LS0gPiAwKSB7XHJcbiAgICAgICAgcmVzdWx0W3VdID0gdjtcclxuICAgICAgICB2ID0gcFt2XTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cblxuY29uc3QgaXNUZWxlcG9ydCA9ICh0eXBlKSA9PiB0eXBlLl9faXNUZWxlcG9ydDtcclxuY29uc3QgaXNUZWxlcG9ydERpc2FibGVkID0gKHByb3BzKSA9PiBwcm9wcyAmJiAocHJvcHMuZGlzYWJsZWQgfHwgcHJvcHMuZGlzYWJsZWQgPT09ICcnKTtcclxuY29uc3QgaXNUYXJnZXRTVkcgPSAodGFyZ2V0KSA9PiB0eXBlb2YgU1ZHRWxlbWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGFyZ2V0IGluc3RhbmNlb2YgU1ZHRWxlbWVudDtcclxuY29uc3QgcmVzb2x2ZVRhcmdldCA9IChwcm9wcywgc2VsZWN0KSA9PiB7XHJcbiAgICBjb25zdCB0YXJnZXRTZWxlY3RvciA9IHByb3BzICYmIHByb3BzLnRvO1xyXG4gICAgaWYgKGlzU3RyaW5nKHRhcmdldFNlbGVjdG9yKSkge1xyXG4gICAgICAgIGlmICghc2VsZWN0KSB7XHJcbiAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgICAgICAgICAgd2FybihgQ3VycmVudCByZW5kZXJlciBkb2VzIG5vdCBzdXBwb3J0IHN0cmluZyB0YXJnZXQgZm9yIFRlbGVwb3J0cy4gYCArXHJcbiAgICAgICAgICAgICAgICAgICAgYChtaXNzaW5nIHF1ZXJ5U2VsZWN0b3IgcmVuZGVyZXIgb3B0aW9uKWApO1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IHNlbGVjdCh0YXJnZXRTZWxlY3Rvcik7XHJcbiAgICAgICAgICAgIGlmICghdGFyZ2V0KSB7XHJcbiAgICAgICAgICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgICAgICAgICB3YXJuKGBGYWlsZWQgdG8gbG9jYXRlIFRlbGVwb3J0IHRhcmdldCB3aXRoIHNlbGVjdG9yIFwiJHt0YXJnZXRTZWxlY3Rvcn1cIi4gYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBOb3RlIHRoZSB0YXJnZXQgZWxlbWVudCBtdXN0IGV4aXN0IGJlZm9yZSB0aGUgY29tcG9uZW50IGlzIG1vdW50ZWQgLSBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYGkuZS4gdGhlIHRhcmdldCBjYW5ub3QgYmUgcmVuZGVyZWQgYnkgdGhlIGNvbXBvbmVudCBpdHNlbGYsIGFuZCBgICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYGlkZWFsbHkgc2hvdWxkIGJlIG91dHNpZGUgb2YgdGhlIGVudGlyZSBWdWUgY29tcG9uZW50IHRyZWUuYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHRhcmdldDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICF0YXJnZXRTZWxlY3RvciAmJiAhaXNUZWxlcG9ydERpc2FibGVkKHByb3BzKSkge1xyXG4gICAgICAgICAgICB3YXJuKGBJbnZhbGlkIFRlbGVwb3J0IHRhcmdldDogJHt0YXJnZXRTZWxlY3Rvcn1gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRhcmdldFNlbGVjdG9yO1xyXG4gICAgfVxyXG59O1xyXG5jb25zdCBUZWxlcG9ydEltcGwgPSB7XHJcbiAgICBfX2lzVGVsZXBvcnQ6IHRydWUsXHJcbiAgICBwcm9jZXNzKG4xLCBuMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCwgaW50ZXJuYWxzKSB7XHJcbiAgICAgICAgY29uc3QgeyBtYzogbW91bnRDaGlsZHJlbiwgcGM6IHBhdGNoQ2hpbGRyZW4sIHBiYzogcGF0Y2hCbG9ja0NoaWxkcmVuLCBvOiB7IGluc2VydCwgcXVlcnlTZWxlY3RvciwgY3JlYXRlVGV4dCwgY3JlYXRlQ29tbWVudCB9IH0gPSBpbnRlcm5hbHM7XHJcbiAgICAgICAgY29uc3QgZGlzYWJsZWQgPSBpc1RlbGVwb3J0RGlzYWJsZWQobjIucHJvcHMpO1xyXG4gICAgICAgIGxldCB7IHNoYXBlRmxhZywgY2hpbGRyZW4sIGR5bmFtaWNDaGlsZHJlbiB9ID0gbjI7XHJcbiAgICAgICAgLy8gIzMzMDJcclxuICAgICAgICAvLyBITVIgdXBkYXRlZCwgZm9yY2UgZnVsbCBkaWZmXHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBpc0htclVwZGF0aW5nKSB7XHJcbiAgICAgICAgICAgIG9wdGltaXplZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBkeW5hbWljQ2hpbGRyZW4gPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobjEgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAvLyBpbnNlcnQgYW5jaG9ycyBpbiB0aGUgbWFpbiB2aWV3XHJcbiAgICAgICAgICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gKG4yLmVsID0gKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpXHJcbiAgICAgICAgICAgICAgICA/IGNyZWF0ZUNvbW1lbnQoJ3RlbGVwb3J0IHN0YXJ0JylcclxuICAgICAgICAgICAgICAgIDogY3JlYXRlVGV4dCgnJykpO1xyXG4gICAgICAgICAgICBjb25zdCBtYWluQW5jaG9yID0gKG4yLmFuY2hvciA9IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKVxyXG4gICAgICAgICAgICAgICAgPyBjcmVhdGVDb21tZW50KCd0ZWxlcG9ydCBlbmQnKVxyXG4gICAgICAgICAgICAgICAgOiBjcmVhdGVUZXh0KCcnKSk7XHJcbiAgICAgICAgICAgIGluc2VydChwbGFjZWhvbGRlciwgY29udGFpbmVyLCBhbmNob3IpO1xyXG4gICAgICAgICAgICBpbnNlcnQobWFpbkFuY2hvciwgY29udGFpbmVyLCBhbmNob3IpO1xyXG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSAobjIudGFyZ2V0ID0gcmVzb2x2ZVRhcmdldChuMi5wcm9wcywgcXVlcnlTZWxlY3RvcikpO1xyXG4gICAgICAgICAgICBjb25zdCB0YXJnZXRBbmNob3IgPSAobjIudGFyZ2V0QW5jaG9yID0gY3JlYXRlVGV4dCgnJykpO1xyXG4gICAgICAgICAgICBpZiAodGFyZ2V0KSB7XHJcbiAgICAgICAgICAgICAgICBpbnNlcnQodGFyZ2V0QW5jaG9yLCB0YXJnZXQpO1xyXG4gICAgICAgICAgICAgICAgLy8gIzI2NTIgd2UgY291bGQgYmUgdGVsZXBvcnRpbmcgZnJvbSBhIG5vbi1TVkcgdHJlZSBpbnRvIGFuIFNWRyB0cmVlXHJcbiAgICAgICAgICAgICAgICBpc1NWRyA9IGlzU1ZHIHx8IGlzVGFyZ2V0U1ZHKHRhcmdldCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFkaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgd2FybignSW52YWxpZCBUZWxlcG9ydCB0YXJnZXQgb24gbW91bnQ6JywgdGFyZ2V0LCBgKCR7dHlwZW9mIHRhcmdldH0pYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgbW91bnQgPSAoY29udGFpbmVyLCBhbmNob3IpID0+IHtcclxuICAgICAgICAgICAgICAgIC8vIFRlbGVwb3J0ICphbHdheXMqIGhhcyBBcnJheSBjaGlsZHJlbi4gVGhpcyBpcyBlbmZvcmNlZCBpbiBib3RoIHRoZVxyXG4gICAgICAgICAgICAgICAgLy8gY29tcGlsZXIgYW5kIHZub2RlIGNoaWxkcmVuIG5vcm1hbGl6YXRpb24uXHJcbiAgICAgICAgICAgICAgICBpZiAoc2hhcGVGbGFnICYgMTYgLyogU2hhcGVGbGFncy5BUlJBWV9DSElMRFJFTiAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIG1vdW50Q2hpbGRyZW4oY2hpbGRyZW4sIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBpc1NWRywgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBpZiAoZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgICAgIG1vdW50KGNvbnRhaW5lciwgbWFpbkFuY2hvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAodGFyZ2V0KSB7XHJcbiAgICAgICAgICAgICAgICBtb3VudCh0YXJnZXQsIHRhcmdldEFuY2hvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIHVwZGF0ZSBjb250ZW50XHJcbiAgICAgICAgICAgIG4yLmVsID0gbjEuZWw7XHJcbiAgICAgICAgICAgIGNvbnN0IG1haW5BbmNob3IgPSAobjIuYW5jaG9yID0gbjEuYW5jaG9yKTtcclxuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gKG4yLnRhcmdldCA9IG4xLnRhcmdldCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldEFuY2hvciA9IChuMi50YXJnZXRBbmNob3IgPSBuMS50YXJnZXRBbmNob3IpO1xyXG4gICAgICAgICAgICBjb25zdCB3YXNEaXNhYmxlZCA9IGlzVGVsZXBvcnREaXNhYmxlZChuMS5wcm9wcyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRDb250YWluZXIgPSB3YXNEaXNhYmxlZCA/IGNvbnRhaW5lciA6IHRhcmdldDtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudEFuY2hvciA9IHdhc0Rpc2FibGVkID8gbWFpbkFuY2hvciA6IHRhcmdldEFuY2hvcjtcclxuICAgICAgICAgICAgaXNTVkcgPSBpc1NWRyB8fCBpc1RhcmdldFNWRyh0YXJnZXQpO1xyXG4gICAgICAgICAgICBpZiAoZHluYW1pY0NoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBmYXN0IHBhdGggd2hlbiB0aGUgdGVsZXBvcnQgaGFwcGVucyB0byBiZSBhIGJsb2NrIHJvb3RcclxuICAgICAgICAgICAgICAgIHBhdGNoQmxvY2tDaGlsZHJlbihuMS5keW5hbWljQ2hpbGRyZW4sIGR5bmFtaWNDaGlsZHJlbiwgY3VycmVudENvbnRhaW5lciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgaXNTVkcsIHNsb3RTY29wZUlkcyk7XHJcbiAgICAgICAgICAgICAgICAvLyBldmVuIGluIGJsb2NrIHRyZWUgbW9kZSB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSBhbGwgcm9vdC1sZXZlbCBub2Rlc1xyXG4gICAgICAgICAgICAgICAgLy8gaW4gdGhlIHRlbGVwb3J0IGluaGVyaXQgcHJldmlvdXMgRE9NIHJlZmVyZW5jZXMgc28gdGhhdCB0aGV5IGNhblxyXG4gICAgICAgICAgICAgICAgLy8gYmUgbW92ZWQgaW4gZnV0dXJlIHBhdGNoZXMuXHJcbiAgICAgICAgICAgICAgICB0cmF2ZXJzZVN0YXRpY0NoaWxkcmVuKG4xLCBuMiwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoIW9wdGltaXplZCkge1xyXG4gICAgICAgICAgICAgICAgcGF0Y2hDaGlsZHJlbihuMSwgbjIsIGN1cnJlbnRDb250YWluZXIsIGN1cnJlbnRBbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGlzU1ZHLCBzbG90U2NvcGVJZHMsIGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgICAgIGlmICghd2FzRGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVkIC0+IGRpc2FibGVkXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gbW92ZSBpbnRvIG1haW4gY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgbW92ZVRlbGVwb3J0KG4yLCBjb250YWluZXIsIG1haW5BbmNob3IsIGludGVybmFscywgMSAvKiBUZWxlcG9ydE1vdmVUeXBlcy5UT0dHTEUgKi8pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gdGFyZ2V0IGNoYW5nZWRcclxuICAgICAgICAgICAgICAgIGlmICgobjIucHJvcHMgJiYgbjIucHJvcHMudG8pICE9PSAobjEucHJvcHMgJiYgbjEucHJvcHMudG8pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dFRhcmdldCA9IChuMi50YXJnZXQgPSByZXNvbHZlVGFyZ2V0KG4yLnByb3BzLCBxdWVyeVNlbGVjdG9yKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRUYXJnZXQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW92ZVRlbGVwb3J0KG4yLCBuZXh0VGFyZ2V0LCBudWxsLCBpbnRlcm5hbHMsIDAgLyogVGVsZXBvcnRNb3ZlVHlwZXMuVEFSR0VUX0NIQU5HRSAqLyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3YXJuKCdJbnZhbGlkIFRlbGVwb3J0IHRhcmdldCBvbiB1cGRhdGU6JywgdGFyZ2V0LCBgKCR7dHlwZW9mIHRhcmdldH0pYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAod2FzRGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBkaXNhYmxlZCAtPiBlbmFibGVkXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gbW92ZSBpbnRvIHRlbGVwb3J0IHRhcmdldFxyXG4gICAgICAgICAgICAgICAgICAgIG1vdmVUZWxlcG9ydChuMiwgdGFyZ2V0LCB0YXJnZXRBbmNob3IsIGludGVybmFscywgMSAvKiBUZWxlcG9ydE1vdmVUeXBlcy5UT0dHTEUgKi8pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIHJlbW92ZSh2bm9kZSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgb3B0aW1pemVkLCB7IHVtOiB1bm1vdW50LCBvOiB7IHJlbW92ZTogaG9zdFJlbW92ZSB9IH0sIGRvUmVtb3ZlKSB7XHJcbiAgICAgICAgY29uc3QgeyBzaGFwZUZsYWcsIGNoaWxkcmVuLCBhbmNob3IsIHRhcmdldEFuY2hvciwgdGFyZ2V0LCBwcm9wcyB9ID0gdm5vZGU7XHJcbiAgICAgICAgaWYgKHRhcmdldCkge1xyXG4gICAgICAgICAgICBob3N0UmVtb3ZlKHRhcmdldEFuY2hvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGFuIHVubW91bnRlZCB0ZWxlcG9ydCBzaG91bGQgYWx3YXlzIHJlbW92ZSBpdHMgY2hpbGRyZW4gaWYgbm90IGRpc2FibGVkXHJcbiAgICAgICAgaWYgKGRvUmVtb3ZlIHx8ICFpc1RlbGVwb3J0RGlzYWJsZWQocHJvcHMpKSB7XHJcbiAgICAgICAgICAgIGhvc3RSZW1vdmUoYW5jaG9yKTtcclxuICAgICAgICAgICAgaWYgKHNoYXBlRmxhZyAmIDE2IC8qIFNoYXBlRmxhZ3MuQVJSQVlfQ0hJTERSRU4gKi8pIHtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGlsZCA9IGNoaWxkcmVuW2ldO1xyXG4gICAgICAgICAgICAgICAgICAgIHVubW91bnQoY2hpbGQsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHRydWUsICEhY2hpbGQuZHluYW1pY0NoaWxkcmVuKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBtb3ZlOiBtb3ZlVGVsZXBvcnQsXHJcbiAgICBoeWRyYXRlOiBoeWRyYXRlVGVsZXBvcnRcclxufTtcclxuZnVuY3Rpb24gbW92ZVRlbGVwb3J0KHZub2RlLCBjb250YWluZXIsIHBhcmVudEFuY2hvciwgeyBvOiB7IGluc2VydCB9LCBtOiBtb3ZlIH0sIG1vdmVUeXBlID0gMiAvKiBUZWxlcG9ydE1vdmVUeXBlcy5SRU9SREVSICovKSB7XHJcbiAgICAvLyBtb3ZlIHRhcmdldCBhbmNob3IgaWYgdGhpcyBpcyBhIHRhcmdldCBjaGFuZ2UuXHJcbiAgICBpZiAobW92ZVR5cGUgPT09IDAgLyogVGVsZXBvcnRNb3ZlVHlwZXMuVEFSR0VUX0NIQU5HRSAqLykge1xyXG4gICAgICAgIGluc2VydCh2bm9kZS50YXJnZXRBbmNob3IsIGNvbnRhaW5lciwgcGFyZW50QW5jaG9yKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgZWwsIGFuY2hvciwgc2hhcGVGbGFnLCBjaGlsZHJlbiwgcHJvcHMgfSA9IHZub2RlO1xyXG4gICAgY29uc3QgaXNSZW9yZGVyID0gbW92ZVR5cGUgPT09IDIgLyogVGVsZXBvcnRNb3ZlVHlwZXMuUkVPUkRFUiAqLztcclxuICAgIC8vIG1vdmUgbWFpbiB2aWV3IGFuY2hvciBpZiB0aGlzIGlzIGEgcmUtb3JkZXIuXHJcbiAgICBpZiAoaXNSZW9yZGVyKSB7XHJcbiAgICAgICAgaW5zZXJ0KGVsLCBjb250YWluZXIsIHBhcmVudEFuY2hvcik7XHJcbiAgICB9XHJcbiAgICAvLyBpZiB0aGlzIGlzIGEgcmUtb3JkZXIgYW5kIHRlbGVwb3J0IGlzIGVuYWJsZWQgKGNvbnRlbnQgaXMgaW4gdGFyZ2V0KVxyXG4gICAgLy8gZG8gbm90IG1vdmUgY2hpbGRyZW4uIFNvIHRoZSBvcHBvc2l0ZSBpczogb25seSBtb3ZlIGNoaWxkcmVuIGlmIHRoaXNcclxuICAgIC8vIGlzIG5vdCBhIHJlb3JkZXIsIG9yIHRoZSB0ZWxlcG9ydCBpcyBkaXNhYmxlZFxyXG4gICAgaWYgKCFpc1Jlb3JkZXIgfHwgaXNUZWxlcG9ydERpc2FibGVkKHByb3BzKSkge1xyXG4gICAgICAgIC8vIFRlbGVwb3J0IGhhcyBlaXRoZXIgQXJyYXkgY2hpbGRyZW4gb3Igbm8gY2hpbGRyZW4uXHJcbiAgICAgICAgaWYgKHNoYXBlRmxhZyAmIDE2IC8qIFNoYXBlRmxhZ3MuQVJSQVlfQ0hJTERSRU4gKi8pIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgbW92ZShjaGlsZHJlbltpXSwgY29udGFpbmVyLCBwYXJlbnRBbmNob3IsIDIgLyogTW92ZVR5cGUuUkVPUkRFUiAqLyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBtb3ZlIG1haW4gdmlldyBhbmNob3IgaWYgdGhpcyBpcyBhIHJlLW9yZGVyLlxyXG4gICAgaWYgKGlzUmVvcmRlcikge1xyXG4gICAgICAgIGluc2VydChhbmNob3IsIGNvbnRhaW5lciwgcGFyZW50QW5jaG9yKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBoeWRyYXRlVGVsZXBvcnQobm9kZSwgdm5vZGUsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkLCB7IG86IHsgbmV4dFNpYmxpbmcsIHBhcmVudE5vZGUsIHF1ZXJ5U2VsZWN0b3IgfSB9LCBoeWRyYXRlQ2hpbGRyZW4pIHtcclxuICAgIGNvbnN0IHRhcmdldCA9ICh2bm9kZS50YXJnZXQgPSByZXNvbHZlVGFyZ2V0KHZub2RlLnByb3BzLCBxdWVyeVNlbGVjdG9yKSk7XHJcbiAgICBpZiAodGFyZ2V0KSB7XHJcbiAgICAgICAgLy8gaWYgbXVsdGlwbGUgdGVsZXBvcnRzIHJlbmRlcmVkIHRvIHRoZSBzYW1lIHRhcmdldCBlbGVtZW50LCB3ZSBuZWVkIHRvXHJcbiAgICAgICAgLy8gcGljayB1cCBmcm9tIHdoZXJlIHRoZSBsYXN0IHRlbGVwb3J0IGZpbmlzaGVkIGluc3RlYWQgb2YgdGhlIGZpcnN0IG5vZGVcclxuICAgICAgICBjb25zdCB0YXJnZXROb2RlID0gdGFyZ2V0Ll9scGEgfHwgdGFyZ2V0LmZpcnN0Q2hpbGQ7XHJcbiAgICAgICAgaWYgKHZub2RlLnNoYXBlRmxhZyAmIDE2IC8qIFNoYXBlRmxhZ3MuQVJSQVlfQ0hJTERSRU4gKi8pIHtcclxuICAgICAgICAgICAgaWYgKGlzVGVsZXBvcnREaXNhYmxlZCh2bm9kZS5wcm9wcykpIHtcclxuICAgICAgICAgICAgICAgIHZub2RlLmFuY2hvciA9IGh5ZHJhdGVDaGlsZHJlbihuZXh0U2libGluZyhub2RlKSwgdm5vZGUsIHBhcmVudE5vZGUobm9kZSksIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgICAgIHZub2RlLnRhcmdldEFuY2hvciA9IHRhcmdldE5vZGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB2bm9kZS5hbmNob3IgPSBuZXh0U2libGluZyhub2RlKTtcclxuICAgICAgICAgICAgICAgIC8vIGxvb2thaGVhZCB1bnRpbCB3ZSBmaW5kIHRoZSB0YXJnZXQgYW5jaG9yXHJcbiAgICAgICAgICAgICAgICAvLyB3ZSBjYW5ub3QgcmVseSBvbiByZXR1cm4gdmFsdWUgb2YgaHlkcmF0ZUNoaWxkcmVuKCkgYmVjYXVzZSB0aGVyZVxyXG4gICAgICAgICAgICAgICAgLy8gY291bGQgYmUgbmVzdGVkIHRlbGVwb3J0c1xyXG4gICAgICAgICAgICAgICAgbGV0IHRhcmdldEFuY2hvciA9IHRhcmdldE5vZGU7XHJcbiAgICAgICAgICAgICAgICB3aGlsZSAodGFyZ2V0QW5jaG9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0QW5jaG9yID0gbmV4dFNpYmxpbmcodGFyZ2V0QW5jaG9yKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0QW5jaG9yICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldEFuY2hvci5ub2RlVHlwZSA9PT0gOCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRBbmNob3IuZGF0YSA9PT0gJ3RlbGVwb3J0IGFuY2hvcicpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdm5vZGUudGFyZ2V0QW5jaG9yID0gdGFyZ2V0QW5jaG9yO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuX2xwYSA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bm9kZS50YXJnZXRBbmNob3IgJiYgbmV4dFNpYmxpbmcodm5vZGUudGFyZ2V0QW5jaG9yKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaHlkcmF0ZUNoaWxkcmVuKHRhcmdldE5vZGUsIHZub2RlLCB0YXJnZXQsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB2bm9kZS5hbmNob3IgJiYgbmV4dFNpYmxpbmcodm5vZGUuYW5jaG9yKTtcclxufVxyXG4vLyBGb3JjZS1jYXN0ZWQgcHVibGljIHR5cGluZyBmb3IgaCBhbmQgVFNYIHByb3BzIGluZmVyZW5jZVxyXG5jb25zdCBUZWxlcG9ydCA9IFRlbGVwb3J0SW1wbDtcblxuY29uc3QgRnJhZ21lbnQgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gJ0ZyYWdtZW50JyA6IHVuZGVmaW5lZCk7XHJcbmNvbnN0IFRleHQgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gJ1RleHQnIDogdW5kZWZpbmVkKTtcclxuY29uc3QgQ29tbWVudCA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyAnQ29tbWVudCcgOiB1bmRlZmluZWQpO1xyXG5jb25zdCBTdGF0aWMgPSBTeW1ib2woKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gJ1N0YXRpYycgOiB1bmRlZmluZWQpO1xyXG4vLyBTaW5jZSB2LWlmIGFuZCB2LWZvciBhcmUgdGhlIHR3byBwb3NzaWJsZSB3YXlzIG5vZGUgc3RydWN0dXJlIGNhbiBkeW5hbWljYWxseVxyXG4vLyBjaGFuZ2UsIG9uY2Ugd2UgY29uc2lkZXIgdi1pZiBicmFuY2hlcyBhbmQgZWFjaCB2LWZvciBmcmFnbWVudCBhIGJsb2NrLCB3ZVxyXG4vLyBjYW4gZGl2aWRlIGEgdGVtcGxhdGUgaW50byBuZXN0ZWQgYmxvY2tzLCBhbmQgd2l0aGluIGVhY2ggYmxvY2sgdGhlIG5vZGVcclxuLy8gc3RydWN0dXJlIHdvdWxkIGJlIHN0YWJsZS4gVGhpcyBhbGxvd3MgdXMgdG8gc2tpcCBtb3N0IGNoaWxkcmVuIGRpZmZpbmdcclxuLy8gYW5kIG9ubHkgd29ycnkgYWJvdXQgdGhlIGR5bmFtaWMgbm9kZXMgKGluZGljYXRlZCBieSBwYXRjaCBmbGFncykuXHJcbmNvbnN0IGJsb2NrU3RhY2sgPSBbXTtcclxubGV0IGN1cnJlbnRCbG9jayA9IG51bGw7XHJcbi8qKlxyXG4gKiBPcGVuIGEgYmxvY2suXHJcbiAqIFRoaXMgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGBjcmVhdGVCbG9ja2AuIEl0IGNhbm5vdCBiZSBwYXJ0IG9mIGBjcmVhdGVCbG9ja2BcclxuICogYmVjYXVzZSB0aGUgY2hpbGRyZW4gb2YgdGhlIGJsb2NrIGFyZSBldmFsdWF0ZWQgYmVmb3JlIGBjcmVhdGVCbG9ja2AgaXRzZWxmXHJcbiAqIGlzIGNhbGxlZC4gVGhlIGdlbmVyYXRlZCBjb2RlIHR5cGljYWxseSBsb29rcyBsaWtlIHRoaXM6XHJcbiAqXHJcbiAqIGBgYGpzXHJcbiAqIGZ1bmN0aW9uIHJlbmRlcigpIHtcclxuICogICByZXR1cm4gKG9wZW5CbG9jaygpLGNyZWF0ZUJsb2NrKCdkaXYnLCBudWxsLCBbLi4uXSkpXHJcbiAqIH1cclxuICogYGBgXHJcbiAqIGRpc2FibGVUcmFja2luZyBpcyB0cnVlIHdoZW4gY3JlYXRpbmcgYSB2LWZvciBmcmFnbWVudCBibG9jaywgc2luY2UgYSB2LWZvclxyXG4gKiBmcmFnbWVudCBhbHdheXMgZGlmZnMgaXRzIGNoaWxkcmVuLlxyXG4gKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuZnVuY3Rpb24gb3BlbkJsb2NrKGRpc2FibGVUcmFja2luZyA9IGZhbHNlKSB7XHJcbiAgICBibG9ja1N0YWNrLnB1c2goKGN1cnJlbnRCbG9jayA9IGRpc2FibGVUcmFja2luZyA/IG51bGwgOiBbXSkpO1xyXG59XHJcbmZ1bmN0aW9uIGNsb3NlQmxvY2soKSB7XHJcbiAgICBibG9ja1N0YWNrLnBvcCgpO1xyXG4gICAgY3VycmVudEJsb2NrID0gYmxvY2tTdGFja1tibG9ja1N0YWNrLmxlbmd0aCAtIDFdIHx8IG51bGw7XHJcbn1cclxuLy8gV2hldGhlciB3ZSBzaG91bGQgYmUgdHJhY2tpbmcgZHluYW1pYyBjaGlsZCBub2RlcyBpbnNpZGUgYSBibG9jay5cclxuLy8gT25seSB0cmFja3Mgd2hlbiB0aGlzIHZhbHVlIGlzID4gMFxyXG4vLyBXZSBhcmUgbm90IHVzaW5nIGEgc2ltcGxlIGJvb2xlYW4gYmVjYXVzZSB0aGlzIHZhbHVlIG1heSBuZWVkIHRvIGJlXHJcbi8vIGluY3JlbWVudGVkL2RlY3JlbWVudGVkIGJ5IG5lc3RlZCB1c2FnZSBvZiB2LW9uY2UgKHNlZSBiZWxvdylcclxubGV0IGlzQmxvY2tUcmVlRW5hYmxlZCA9IDE7XHJcbi8qKlxyXG4gKiBCbG9jayB0cmFja2luZyBzb21ldGltZXMgbmVlZHMgdG8gYmUgZGlzYWJsZWQsIGZvciBleGFtcGxlIGR1cmluZyB0aGVcclxuICogY3JlYXRpb24gb2YgYSB0cmVlIHRoYXQgbmVlZHMgdG8gYmUgY2FjaGVkIGJ5IHYtb25jZS4gVGhlIGNvbXBpbGVyIGdlbmVyYXRlc1xyXG4gKiBjb2RlIGxpa2UgdGhpczpcclxuICpcclxuICogYGBgIGpzXHJcbiAqIF9jYWNoZVsxXSB8fCAoXHJcbiAqICAgc2V0QmxvY2tUcmFja2luZygtMSksXHJcbiAqICAgX2NhY2hlWzFdID0gY3JlYXRlVk5vZGUoLi4uKSxcclxuICogICBzZXRCbG9ja1RyYWNraW5nKDEpLFxyXG4gKiAgIF9jYWNoZVsxXVxyXG4gKiApXHJcbiAqIGBgYFxyXG4gKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuZnVuY3Rpb24gc2V0QmxvY2tUcmFja2luZyh2YWx1ZSkge1xyXG4gICAgaXNCbG9ja1RyZWVFbmFibGVkICs9IHZhbHVlO1xyXG59XHJcbmZ1bmN0aW9uIHNldHVwQmxvY2sodm5vZGUpIHtcclxuICAgIC8vIHNhdmUgY3VycmVudCBibG9jayBjaGlsZHJlbiBvbiB0aGUgYmxvY2sgdm5vZGVcclxuICAgIHZub2RlLmR5bmFtaWNDaGlsZHJlbiA9XHJcbiAgICAgICAgaXNCbG9ja1RyZWVFbmFibGVkID4gMCA/IGN1cnJlbnRCbG9jayB8fCBFTVBUWV9BUlIgOiBudWxsO1xyXG4gICAgLy8gY2xvc2UgYmxvY2tcclxuICAgIGNsb3NlQmxvY2soKTtcclxuICAgIC8vIGEgYmxvY2sgaXMgYWx3YXlzIGdvaW5nIHRvIGJlIHBhdGNoZWQsIHNvIHRyYWNrIGl0IGFzIGEgY2hpbGQgb2YgaXRzXHJcbiAgICAvLyBwYXJlbnQgYmxvY2tcclxuICAgIGlmIChpc0Jsb2NrVHJlZUVuYWJsZWQgPiAwICYmIGN1cnJlbnRCbG9jaykge1xyXG4gICAgICAgIGN1cnJlbnRCbG9jay5wdXNoKHZub2RlKTtcclxuICAgIH1cclxuICAgIHJldHVybiB2bm9kZTtcclxufVxyXG4vKipcclxuICogQHByaXZhdGVcclxuICovXHJcbmZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnRCbG9jayh0eXBlLCBwcm9wcywgY2hpbGRyZW4sIHBhdGNoRmxhZywgZHluYW1pY1Byb3BzLCBzaGFwZUZsYWcpIHtcclxuICAgIHJldHVybiBzZXR1cEJsb2NrKGNyZWF0ZUJhc2VWTm9kZSh0eXBlLCBwcm9wcywgY2hpbGRyZW4sIHBhdGNoRmxhZywgZHluYW1pY1Byb3BzLCBzaGFwZUZsYWcsIHRydWUgLyogaXNCbG9jayAqLykpO1xyXG59XHJcbi8qKlxyXG4gKiBDcmVhdGUgYSBibG9jayByb290IHZub2RlLiBUYWtlcyB0aGUgc2FtZSBleGFjdCBhcmd1bWVudHMgYXMgYGNyZWF0ZVZOb2RlYC5cclxuICogQSBibG9jayByb290IGtlZXBzIHRyYWNrIG9mIGR5bmFtaWMgbm9kZXMgd2l0aGluIHRoZSBibG9jayBpbiB0aGVcclxuICogYGR5bmFtaWNDaGlsZHJlbmAgYXJyYXkuXHJcbiAqXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVCbG9jayh0eXBlLCBwcm9wcywgY2hpbGRyZW4sIHBhdGNoRmxhZywgZHluYW1pY1Byb3BzKSB7XHJcbiAgICByZXR1cm4gc2V0dXBCbG9jayhjcmVhdGVWTm9kZSh0eXBlLCBwcm9wcywgY2hpbGRyZW4sIHBhdGNoRmxhZywgZHluYW1pY1Byb3BzLCB0cnVlIC8qIGlzQmxvY2s6IHByZXZlbnQgYSBibG9jayBmcm9tIHRyYWNraW5nIGl0c2VsZiAqLykpO1xyXG59XHJcbmZ1bmN0aW9uIGlzVk5vZGUodmFsdWUpIHtcclxuICAgIHJldHVybiB2YWx1ZSA/IHZhbHVlLl9fdl9pc1ZOb2RlID09PSB0cnVlIDogZmFsc2U7XHJcbn1cclxuZnVuY3Rpb24gaXNTYW1lVk5vZGVUeXBlKG4xLCBuMikge1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxyXG4gICAgICAgIG4yLnNoYXBlRmxhZyAmIDYgLyogU2hhcGVGbGFncy5DT01QT05FTlQgKi8gJiZcclxuICAgICAgICBobXJEaXJ0eUNvbXBvbmVudHMuaGFzKG4yLnR5cGUpKSB7XHJcbiAgICAgICAgLy8gSE1SIG9ubHk6IGlmIHRoZSBjb21wb25lbnQgaGFzIGJlZW4gaG90LXVwZGF0ZWQsIGZvcmNlIGEgcmVsb2FkLlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiBuMS50eXBlID09PSBuMi50eXBlICYmIG4xLmtleSA9PT0gbjIua2V5O1xyXG59XHJcbmxldCB2bm9kZUFyZ3NUcmFuc2Zvcm1lcjtcclxuLyoqXHJcbiAqIEludGVybmFsIEFQSSBmb3IgcmVnaXN0ZXJpbmcgYW4gYXJndW1lbnRzIHRyYW5zZm9ybSBmb3IgY3JlYXRlVk5vZGVcclxuICogdXNlZCBmb3IgY3JlYXRpbmcgc3R1YnMgaW4gdGhlIHRlc3QtdXRpbHNcclxuICogSXQgaXMgKmludGVybmFsKiBidXQgbmVlZHMgdG8gYmUgZXhwb3NlZCBmb3IgdGVzdC11dGlscyB0byBwaWNrIHVwIHByb3BlclxyXG4gKiB0eXBpbmdzXHJcbiAqL1xyXG5mdW5jdGlvbiB0cmFuc2Zvcm1WTm9kZUFyZ3ModHJhbnNmb3JtZXIpIHtcclxuICAgIHZub2RlQXJnc1RyYW5zZm9ybWVyID0gdHJhbnNmb3JtZXI7XHJcbn1cclxuY29uc3QgY3JlYXRlVk5vZGVXaXRoQXJnc1RyYW5zZm9ybSA9ICguLi5hcmdzKSA9PiB7XHJcbiAgICByZXR1cm4gX2NyZWF0ZVZOb2RlKC4uLih2bm9kZUFyZ3NUcmFuc2Zvcm1lclxyXG4gICAgICAgID8gdm5vZGVBcmdzVHJhbnNmb3JtZXIoYXJncywgY3VycmVudFJlbmRlcmluZ0luc3RhbmNlKVxyXG4gICAgICAgIDogYXJncykpO1xyXG59O1xyXG5jb25zdCBJbnRlcm5hbE9iamVjdEtleSA9IGBfX3ZJbnRlcm5hbGA7XHJcbmNvbnN0IG5vcm1hbGl6ZUtleSA9ICh7IGtleSB9KSA9PiBrZXkgIT0gbnVsbCA/IGtleSA6IG51bGw7XHJcbmNvbnN0IG5vcm1hbGl6ZVJlZiA9ICh7IHJlZiwgcmVmX2tleSwgcmVmX2ZvciB9KSA9PiB7XHJcbiAgICByZXR1cm4gKHJlZiAhPSBudWxsXHJcbiAgICAgICAgPyBpc1N0cmluZyhyZWYpIHx8IGlzUmVmKHJlZikgfHwgaXNGdW5jdGlvbihyZWYpXHJcbiAgICAgICAgICAgID8geyBpOiBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UsIHI6IHJlZiwgazogcmVmX2tleSwgZjogISFyZWZfZm9yIH1cclxuICAgICAgICAgICAgOiByZWZcclxuICAgICAgICA6IG51bGwpO1xyXG59O1xyXG5mdW5jdGlvbiBjcmVhdGVCYXNlVk5vZGUodHlwZSwgcHJvcHMgPSBudWxsLCBjaGlsZHJlbiA9IG51bGwsIHBhdGNoRmxhZyA9IDAsIGR5bmFtaWNQcm9wcyA9IG51bGwsIHNoYXBlRmxhZyA9IHR5cGUgPT09IEZyYWdtZW50ID8gMCA6IDEgLyogU2hhcGVGbGFncy5FTEVNRU5UICovLCBpc0Jsb2NrTm9kZSA9IGZhbHNlLCBuZWVkRnVsbENoaWxkcmVuTm9ybWFsaXphdGlvbiA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCB2bm9kZSA9IHtcclxuICAgICAgICBfX3ZfaXNWTm9kZTogdHJ1ZSxcclxuICAgICAgICBfX3Zfc2tpcDogdHJ1ZSxcclxuICAgICAgICB0eXBlLFxyXG4gICAgICAgIHByb3BzLFxyXG4gICAgICAgIGtleTogcHJvcHMgJiYgbm9ybWFsaXplS2V5KHByb3BzKSxcclxuICAgICAgICByZWY6IHByb3BzICYmIG5vcm1hbGl6ZVJlZihwcm9wcyksXHJcbiAgICAgICAgc2NvcGVJZDogY3VycmVudFNjb3BlSWQsXHJcbiAgICAgICAgc2xvdFNjb3BlSWRzOiBudWxsLFxyXG4gICAgICAgIGNoaWxkcmVuLFxyXG4gICAgICAgIGNvbXBvbmVudDogbnVsbCxcclxuICAgICAgICBzdXNwZW5zZTogbnVsbCxcclxuICAgICAgICBzc0NvbnRlbnQ6IG51bGwsXHJcbiAgICAgICAgc3NGYWxsYmFjazogbnVsbCxcclxuICAgICAgICBkaXJzOiBudWxsLFxyXG4gICAgICAgIHRyYW5zaXRpb246IG51bGwsXHJcbiAgICAgICAgZWw6IG51bGwsXHJcbiAgICAgICAgYW5jaG9yOiBudWxsLFxyXG4gICAgICAgIHRhcmdldDogbnVsbCxcclxuICAgICAgICB0YXJnZXRBbmNob3I6IG51bGwsXHJcbiAgICAgICAgc3RhdGljQ291bnQ6IDAsXHJcbiAgICAgICAgc2hhcGVGbGFnLFxyXG4gICAgICAgIHBhdGNoRmxhZyxcclxuICAgICAgICBkeW5hbWljUHJvcHMsXHJcbiAgICAgICAgZHluYW1pY0NoaWxkcmVuOiBudWxsLFxyXG4gICAgICAgIGFwcENvbnRleHQ6IG51bGxcclxuICAgIH07XHJcbiAgICBpZiAobmVlZEZ1bGxDaGlsZHJlbk5vcm1hbGl6YXRpb24pIHtcclxuICAgICAgICBub3JtYWxpemVDaGlsZHJlbih2bm9kZSwgY2hpbGRyZW4pO1xyXG4gICAgICAgIC8vIG5vcm1hbGl6ZSBzdXNwZW5zZSBjaGlsZHJlblxyXG4gICAgICAgIGlmIChzaGFwZUZsYWcgJiAxMjggLyogU2hhcGVGbGFncy5TVVNQRU5TRSAqLykge1xyXG4gICAgICAgICAgICB0eXBlLm5vcm1hbGl6ZSh2bm9kZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgICAvLyBjb21waWxlZCBlbGVtZW50IHZub2RlIC0gaWYgY2hpbGRyZW4gaXMgcGFzc2VkLCBvbmx5IHBvc3NpYmxlIHR5cGVzIGFyZVxyXG4gICAgICAgIC8vIHN0cmluZyBvciBBcnJheS5cclxuICAgICAgICB2bm9kZS5zaGFwZUZsYWcgfD0gaXNTdHJpbmcoY2hpbGRyZW4pXHJcbiAgICAgICAgICAgID8gOCAvKiBTaGFwZUZsYWdzLlRFWFRfQ0hJTERSRU4gKi9cclxuICAgICAgICAgICAgOiAxNiAvKiBTaGFwZUZsYWdzLkFSUkFZX0NISUxEUkVOICovO1xyXG4gICAgfVxyXG4gICAgLy8gdmFsaWRhdGUga2V5XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHZub2RlLmtleSAhPT0gdm5vZGUua2V5KSB7XHJcbiAgICAgICAgd2FybihgVk5vZGUgY3JlYXRlZCB3aXRoIGludmFsaWQga2V5IChOYU4pLiBWTm9kZSB0eXBlOmAsIHZub2RlLnR5cGUpO1xyXG4gICAgfVxyXG4gICAgLy8gdHJhY2sgdm5vZGUgZm9yIGJsb2NrIHRyZWVcclxuICAgIGlmIChpc0Jsb2NrVHJlZUVuYWJsZWQgPiAwICYmXHJcbiAgICAgICAgLy8gYXZvaWQgYSBibG9jayBub2RlIGZyb20gdHJhY2tpbmcgaXRzZWxmXHJcbiAgICAgICAgIWlzQmxvY2tOb2RlICYmXHJcbiAgICAgICAgLy8gaGFzIGN1cnJlbnQgcGFyZW50IGJsb2NrXHJcbiAgICAgICAgY3VycmVudEJsb2NrICYmXHJcbiAgICAgICAgLy8gcHJlc2VuY2Ugb2YgYSBwYXRjaCBmbGFnIGluZGljYXRlcyB0aGlzIG5vZGUgbmVlZHMgcGF0Y2hpbmcgb24gdXBkYXRlcy5cclxuICAgICAgICAvLyBjb21wb25lbnQgbm9kZXMgYWxzbyBzaG91bGQgYWx3YXlzIGJlIHBhdGNoZWQsIGJlY2F1c2UgZXZlbiBpZiB0aGVcclxuICAgICAgICAvLyBjb21wb25lbnQgZG9lc24ndCBuZWVkIHRvIHVwZGF0ZSwgaXQgbmVlZHMgdG8gcGVyc2lzdCB0aGUgaW5zdGFuY2Ugb24gdG9cclxuICAgICAgICAvLyB0aGUgbmV4dCB2bm9kZSBzbyB0aGF0IGl0IGNhbiBiZSBwcm9wZXJseSB1bm1vdW50ZWQgbGF0ZXIuXHJcbiAgICAgICAgKHZub2RlLnBhdGNoRmxhZyA+IDAgfHwgc2hhcGVGbGFnICYgNiAvKiBTaGFwZUZsYWdzLkNPTVBPTkVOVCAqLykgJiZcclxuICAgICAgICAvLyB0aGUgRVZFTlRTIGZsYWcgaXMgb25seSBmb3IgaHlkcmF0aW9uIGFuZCBpZiBpdCBpcyB0aGUgb25seSBmbGFnLCB0aGVcclxuICAgICAgICAvLyB2bm9kZSBzaG91bGQgbm90IGJlIGNvbnNpZGVyZWQgZHluYW1pYyBkdWUgdG8gaGFuZGxlciBjYWNoaW5nLlxyXG4gICAgICAgIHZub2RlLnBhdGNoRmxhZyAhPT0gMzIgLyogUGF0Y2hGbGFncy5IWURSQVRFX0VWRU5UUyAqLykge1xyXG4gICAgICAgIGN1cnJlbnRCbG9jay5wdXNoKHZub2RlKTtcclxuICAgIH1cclxuICAgIHJldHVybiB2bm9kZTtcclxufVxyXG5jb25zdCBjcmVhdGVWTm9kZSA9ICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBjcmVhdGVWTm9kZVdpdGhBcmdzVHJhbnNmb3JtIDogX2NyZWF0ZVZOb2RlKTtcclxuZnVuY3Rpb24gX2NyZWF0ZVZOb2RlKHR5cGUsIHByb3BzID0gbnVsbCwgY2hpbGRyZW4gPSBudWxsLCBwYXRjaEZsYWcgPSAwLCBkeW5hbWljUHJvcHMgPSBudWxsLCBpc0Jsb2NrTm9kZSA9IGZhbHNlKSB7XHJcbiAgICBpZiAoIXR5cGUgfHwgdHlwZSA9PT0gTlVMTF9EWU5BTUlDX0NPTVBPTkVOVCkge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIXR5cGUpIHtcclxuICAgICAgICAgICAgd2FybihgSW52YWxpZCB2bm9kZSB0eXBlIHdoZW4gY3JlYXRpbmcgdm5vZGU6ICR7dHlwZX0uYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHR5cGUgPSBDb21tZW50O1xyXG4gICAgfVxyXG4gICAgaWYgKGlzVk5vZGUodHlwZSkpIHtcclxuICAgICAgICAvLyBjcmVhdGVWTm9kZSByZWNlaXZpbmcgYW4gZXhpc3Rpbmcgdm5vZGUuIFRoaXMgaGFwcGVucyBpbiBjYXNlcyBsaWtlXHJcbiAgICAgICAgLy8gPGNvbXBvbmVudCA6aXM9XCJ2bm9kZVwiLz5cclxuICAgICAgICAvLyAjMjA3OCBtYWtlIHN1cmUgdG8gbWVyZ2UgcmVmcyBkdXJpbmcgdGhlIGNsb25lIGluc3RlYWQgb2Ygb3ZlcndyaXRpbmcgaXRcclxuICAgICAgICBjb25zdCBjbG9uZWQgPSBjbG9uZVZOb2RlKHR5cGUsIHByb3BzLCB0cnVlIC8qIG1lcmdlUmVmOiB0cnVlICovKTtcclxuICAgICAgICBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgbm9ybWFsaXplQ2hpbGRyZW4oY2xvbmVkLCBjaGlsZHJlbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpc0Jsb2NrVHJlZUVuYWJsZWQgPiAwICYmICFpc0Jsb2NrTm9kZSAmJiBjdXJyZW50QmxvY2spIHtcclxuICAgICAgICAgICAgaWYgKGNsb25lZC5zaGFwZUZsYWcgJiA2IC8qIFNoYXBlRmxhZ3MuQ09NUE9ORU5UICovKSB7XHJcbiAgICAgICAgICAgICAgICBjdXJyZW50QmxvY2tbY3VycmVudEJsb2NrLmluZGV4T2YodHlwZSldID0gY2xvbmVkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY3VycmVudEJsb2NrLnB1c2goY2xvbmVkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjbG9uZWQucGF0Y2hGbGFnIHw9IC0yIC8qIFBhdGNoRmxhZ3MuQkFJTCAqLztcclxuICAgICAgICByZXR1cm4gY2xvbmVkO1xyXG4gICAgfVxyXG4gICAgLy8gY2xhc3MgY29tcG9uZW50IG5vcm1hbGl6YXRpb24uXHJcbiAgICBpZiAoaXNDbGFzc0NvbXBvbmVudCh0eXBlKSkge1xyXG4gICAgICAgIHR5cGUgPSB0eXBlLl9fdmNjT3B0cztcclxuICAgIH1cclxuICAgIC8vIGNsYXNzICYgc3R5bGUgbm9ybWFsaXphdGlvbi5cclxuICAgIGlmIChwcm9wcykge1xyXG4gICAgICAgIC8vIGZvciByZWFjdGl2ZSBvciBwcm94eSBvYmplY3RzLCB3ZSBuZWVkIHRvIGNsb25lIGl0IHRvIGVuYWJsZSBtdXRhdGlvbi5cclxuICAgICAgICBwcm9wcyA9IGd1YXJkUmVhY3RpdmVQcm9wcyhwcm9wcyk7XHJcbiAgICAgICAgbGV0IHsgY2xhc3M6IGtsYXNzLCBzdHlsZSB9ID0gcHJvcHM7XHJcbiAgICAgICAgaWYgKGtsYXNzICYmICFpc1N0cmluZyhrbGFzcykpIHtcclxuICAgICAgICAgICAgcHJvcHMuY2xhc3MgPSBub3JtYWxpemVDbGFzcyhrbGFzcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpc09iamVjdChzdHlsZSkpIHtcclxuICAgICAgICAgICAgLy8gcmVhY3RpdmUgc3RhdGUgb2JqZWN0cyBuZWVkIHRvIGJlIGNsb25lZCBzaW5jZSB0aGV5IGFyZSBsaWtlbHkgdG8gYmVcclxuICAgICAgICAgICAgLy8gbXV0YXRlZFxyXG4gICAgICAgICAgICBpZiAoaXNQcm94eShzdHlsZSkgJiYgIWlzQXJyYXkoc3R5bGUpKSB7XHJcbiAgICAgICAgICAgICAgICBzdHlsZSA9IGV4dGVuZCh7fSwgc3R5bGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHByb3BzLnN0eWxlID0gbm9ybWFsaXplU3R5bGUoc3R5bGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIGVuY29kZSB0aGUgdm5vZGUgdHlwZSBpbmZvcm1hdGlvbiBpbnRvIGEgYml0bWFwXHJcbiAgICBjb25zdCBzaGFwZUZsYWcgPSBpc1N0cmluZyh0eXBlKVxyXG4gICAgICAgID8gMSAvKiBTaGFwZUZsYWdzLkVMRU1FTlQgKi9cclxuICAgICAgICA6IGlzU3VzcGVuc2UodHlwZSlcclxuICAgICAgICAgICAgPyAxMjggLyogU2hhcGVGbGFncy5TVVNQRU5TRSAqL1xyXG4gICAgICAgICAgICA6IGlzVGVsZXBvcnQodHlwZSlcclxuICAgICAgICAgICAgICAgID8gNjQgLyogU2hhcGVGbGFncy5URUxFUE9SVCAqL1xyXG4gICAgICAgICAgICAgICAgOiBpc09iamVjdCh0eXBlKVxyXG4gICAgICAgICAgICAgICAgICAgID8gNCAvKiBTaGFwZUZsYWdzLlNUQVRFRlVMX0NPTVBPTkVOVCAqL1xyXG4gICAgICAgICAgICAgICAgICAgIDogaXNGdW5jdGlvbih0eXBlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IDIgLyogU2hhcGVGbGFncy5GVU5DVElPTkFMX0NPTVBPTkVOVCAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IDA7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHNoYXBlRmxhZyAmIDQgLyogU2hhcGVGbGFncy5TVEFURUZVTF9DT01QT05FTlQgKi8gJiYgaXNQcm94eSh0eXBlKSkge1xyXG4gICAgICAgIHR5cGUgPSB0b1Jhdyh0eXBlKTtcclxuICAgICAgICB3YXJuKGBWdWUgcmVjZWl2ZWQgYSBDb21wb25lbnQgd2hpY2ggd2FzIG1hZGUgYSByZWFjdGl2ZSBvYmplY3QuIFRoaXMgY2FuIGAgK1xyXG4gICAgICAgICAgICBgbGVhZCB0byB1bm5lY2Vzc2FyeSBwZXJmb3JtYW5jZSBvdmVyaGVhZCwgYW5kIHNob3VsZCBiZSBhdm9pZGVkIGJ5IGAgK1xyXG4gICAgICAgICAgICBgbWFya2luZyB0aGUgY29tcG9uZW50IHdpdGggXFxgbWFya1Jhd1xcYCBvciB1c2luZyBcXGBzaGFsbG93UmVmXFxgIGAgK1xyXG4gICAgICAgICAgICBgaW5zdGVhZCBvZiBcXGByZWZcXGAuYCwgYFxcbkNvbXBvbmVudCB0aGF0IHdhcyBtYWRlIHJlYWN0aXZlOiBgLCB0eXBlKTtcclxuICAgIH1cclxuICAgIHJldHVybiBjcmVhdGVCYXNlVk5vZGUodHlwZSwgcHJvcHMsIGNoaWxkcmVuLCBwYXRjaEZsYWcsIGR5bmFtaWNQcm9wcywgc2hhcGVGbGFnLCBpc0Jsb2NrTm9kZSwgdHJ1ZSk7XHJcbn1cclxuZnVuY3Rpb24gZ3VhcmRSZWFjdGl2ZVByb3BzKHByb3BzKSB7XHJcbiAgICBpZiAoIXByb3BzKVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgcmV0dXJuIGlzUHJveHkocHJvcHMpIHx8IEludGVybmFsT2JqZWN0S2V5IGluIHByb3BzXHJcbiAgICAgICAgPyBleHRlbmQoe30sIHByb3BzKVxyXG4gICAgICAgIDogcHJvcHM7XHJcbn1cclxuZnVuY3Rpb24gY2xvbmVWTm9kZSh2bm9kZSwgZXh0cmFQcm9wcywgbWVyZ2VSZWYgPSBmYWxzZSkge1xyXG4gICAgLy8gVGhpcyBpcyBpbnRlbnRpb25hbGx5IE5PVCB1c2luZyBzcHJlYWQgb3IgZXh0ZW5kIHRvIGF2b2lkIHRoZSBydW50aW1lXHJcbiAgICAvLyBrZXkgZW51bWVyYXRpb24gY29zdC5cclxuICAgIGNvbnN0IHsgcHJvcHMsIHJlZiwgcGF0Y2hGbGFnLCBjaGlsZHJlbiB9ID0gdm5vZGU7XHJcbiAgICBjb25zdCBtZXJnZWRQcm9wcyA9IGV4dHJhUHJvcHMgPyBtZXJnZVByb3BzKHByb3BzIHx8IHt9LCBleHRyYVByb3BzKSA6IHByb3BzO1xyXG4gICAgY29uc3QgY2xvbmVkID0ge1xyXG4gICAgICAgIF9fdl9pc1ZOb2RlOiB0cnVlLFxyXG4gICAgICAgIF9fdl9za2lwOiB0cnVlLFxyXG4gICAgICAgIHR5cGU6IHZub2RlLnR5cGUsXHJcbiAgICAgICAgcHJvcHM6IG1lcmdlZFByb3BzLFxyXG4gICAgICAgIGtleTogbWVyZ2VkUHJvcHMgJiYgbm9ybWFsaXplS2V5KG1lcmdlZFByb3BzKSxcclxuICAgICAgICByZWY6IGV4dHJhUHJvcHMgJiYgZXh0cmFQcm9wcy5yZWZcclxuICAgICAgICAgICAgPyAvLyAjMjA3OCBpbiB0aGUgY2FzZSBvZiA8Y29tcG9uZW50IDppcz1cInZub2RlXCIgcmVmPVwiZXh0cmFcIi8+XHJcbiAgICAgICAgICAgICAgICAvLyBpZiB0aGUgdm5vZGUgaXRzZWxmIGFscmVhZHkgaGFzIGEgcmVmLCBjbG9uZVZOb2RlIHdpbGwgbmVlZCB0byBtZXJnZVxyXG4gICAgICAgICAgICAgICAgLy8gdGhlIHJlZnMgc28gdGhlIHNpbmdsZSB2bm9kZSBjYW4gYmUgc2V0IG9uIG11bHRpcGxlIHJlZnNcclxuICAgICAgICAgICAgICAgIG1lcmdlUmVmICYmIHJlZlxyXG4gICAgICAgICAgICAgICAgICAgID8gaXNBcnJheShyZWYpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcmVmLmNvbmNhdChub3JtYWxpemVSZWYoZXh0cmFQcm9wcykpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogW3JlZiwgbm9ybWFsaXplUmVmKGV4dHJhUHJvcHMpXVxyXG4gICAgICAgICAgICAgICAgICAgIDogbm9ybWFsaXplUmVmKGV4dHJhUHJvcHMpXHJcbiAgICAgICAgICAgIDogcmVmLFxyXG4gICAgICAgIHNjb3BlSWQ6IHZub2RlLnNjb3BlSWQsXHJcbiAgICAgICAgc2xvdFNjb3BlSWRzOiB2bm9kZS5zbG90U2NvcGVJZHMsXHJcbiAgICAgICAgY2hpbGRyZW46IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBwYXRjaEZsYWcgPT09IC0xIC8qIFBhdGNoRmxhZ3MuSE9JU1RFRCAqLyAmJiBpc0FycmF5KGNoaWxkcmVuKVxyXG4gICAgICAgICAgICA/IGNoaWxkcmVuLm1hcChkZWVwQ2xvbmVWTm9kZSlcclxuICAgICAgICAgICAgOiBjaGlsZHJlbixcclxuICAgICAgICB0YXJnZXQ6IHZub2RlLnRhcmdldCxcclxuICAgICAgICB0YXJnZXRBbmNob3I6IHZub2RlLnRhcmdldEFuY2hvcixcclxuICAgICAgICBzdGF0aWNDb3VudDogdm5vZGUuc3RhdGljQ291bnQsXHJcbiAgICAgICAgc2hhcGVGbGFnOiB2bm9kZS5zaGFwZUZsYWcsXHJcbiAgICAgICAgLy8gaWYgdGhlIHZub2RlIGlzIGNsb25lZCB3aXRoIGV4dHJhIHByb3BzLCB3ZSBjYW4gbm8gbG9uZ2VyIGFzc3VtZSBpdHNcclxuICAgICAgICAvLyBleGlzdGluZyBwYXRjaCBmbGFnIHRvIGJlIHJlbGlhYmxlIGFuZCBuZWVkIHRvIGFkZCB0aGUgRlVMTF9QUk9QUyBmbGFnLlxyXG4gICAgICAgIC8vIG5vdGU6IHByZXNlcnZlIGZsYWcgZm9yIGZyYWdtZW50cyBzaW5jZSB0aGV5IHVzZSB0aGUgZmxhZyBmb3IgY2hpbGRyZW5cclxuICAgICAgICAvLyBmYXN0IHBhdGhzIG9ubHkuXHJcbiAgICAgICAgcGF0Y2hGbGFnOiBleHRyYVByb3BzICYmIHZub2RlLnR5cGUgIT09IEZyYWdtZW50XHJcbiAgICAgICAgICAgID8gcGF0Y2hGbGFnID09PSAtMSAvLyBob2lzdGVkIG5vZGVcclxuICAgICAgICAgICAgICAgID8gMTYgLyogUGF0Y2hGbGFncy5GVUxMX1BST1BTICovXHJcbiAgICAgICAgICAgICAgICA6IHBhdGNoRmxhZyB8IDE2IC8qIFBhdGNoRmxhZ3MuRlVMTF9QUk9QUyAqL1xyXG4gICAgICAgICAgICA6IHBhdGNoRmxhZyxcclxuICAgICAgICBkeW5hbWljUHJvcHM6IHZub2RlLmR5bmFtaWNQcm9wcyxcclxuICAgICAgICBkeW5hbWljQ2hpbGRyZW46IHZub2RlLmR5bmFtaWNDaGlsZHJlbixcclxuICAgICAgICBhcHBDb250ZXh0OiB2bm9kZS5hcHBDb250ZXh0LFxyXG4gICAgICAgIGRpcnM6IHZub2RlLmRpcnMsXHJcbiAgICAgICAgdHJhbnNpdGlvbjogdm5vZGUudHJhbnNpdGlvbixcclxuICAgICAgICAvLyBUaGVzZSBzaG91bGQgdGVjaG5pY2FsbHkgb25seSBiZSBub24tbnVsbCBvbiBtb3VudGVkIFZOb2Rlcy4gSG93ZXZlcixcclxuICAgICAgICAvLyB0aGV5ICpzaG91bGQqIGJlIGNvcGllZCBmb3Iga2VwdC1hbGl2ZSB2bm9kZXMuIFNvIHdlIGp1c3QgYWx3YXlzIGNvcHlcclxuICAgICAgICAvLyB0aGVtIHNpbmNlIHRoZW0gYmVpbmcgbm9uLW51bGwgZHVyaW5nIGEgbW91bnQgZG9lc24ndCBhZmZlY3QgdGhlIGxvZ2ljIGFzXHJcbiAgICAgICAgLy8gdGhleSB3aWxsIHNpbXBseSBiZSBvdmVyd3JpdHRlbi5cclxuICAgICAgICBjb21wb25lbnQ6IHZub2RlLmNvbXBvbmVudCxcclxuICAgICAgICBzdXNwZW5zZTogdm5vZGUuc3VzcGVuc2UsXHJcbiAgICAgICAgc3NDb250ZW50OiB2bm9kZS5zc0NvbnRlbnQgJiYgY2xvbmVWTm9kZSh2bm9kZS5zc0NvbnRlbnQpLFxyXG4gICAgICAgIHNzRmFsbGJhY2s6IHZub2RlLnNzRmFsbGJhY2sgJiYgY2xvbmVWTm9kZSh2bm9kZS5zc0ZhbGxiYWNrKSxcclxuICAgICAgICBlbDogdm5vZGUuZWwsXHJcbiAgICAgICAgYW5jaG9yOiB2bm9kZS5hbmNob3JcclxuICAgIH07XHJcbiAgICByZXR1cm4gY2xvbmVkO1xyXG59XHJcbi8qKlxyXG4gKiBEZXYgb25seSwgZm9yIEhNUiBvZiBob2lzdGVkIHZub2RlcyByZXVzZWQgaW4gdi1mb3JcclxuICogaHR0cHM6Ly9naXRodWIuY29tL3ZpdGVqcy92aXRlL2lzc3Vlcy8yMDIyXHJcbiAqL1xyXG5mdW5jdGlvbiBkZWVwQ2xvbmVWTm9kZSh2bm9kZSkge1xyXG4gICAgY29uc3QgY2xvbmVkID0gY2xvbmVWTm9kZSh2bm9kZSk7XHJcbiAgICBpZiAoaXNBcnJheSh2bm9kZS5jaGlsZHJlbikpIHtcclxuICAgICAgICBjbG9uZWQuY2hpbGRyZW4gPSB2bm9kZS5jaGlsZHJlbi5tYXAoZGVlcENsb25lVk5vZGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNsb25lZDtcclxufVxyXG4vKipcclxuICogQHByaXZhdGVcclxuICovXHJcbmZ1bmN0aW9uIGNyZWF0ZVRleHRWTm9kZSh0ZXh0ID0gJyAnLCBmbGFnID0gMCkge1xyXG4gICAgcmV0dXJuIGNyZWF0ZVZOb2RlKFRleHQsIG51bGwsIHRleHQsIGZsYWcpO1xyXG59XHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuZnVuY3Rpb24gY3JlYXRlU3RhdGljVk5vZGUoY29udGVudCwgbnVtYmVyT2ZOb2Rlcykge1xyXG4gICAgLy8gQSBzdGF0aWMgdm5vZGUgY2FuIGNvbnRhaW4gbXVsdGlwbGUgc3RyaW5naWZpZWQgZWxlbWVudHMsIGFuZCB0aGUgbnVtYmVyXHJcbiAgICAvLyBvZiBlbGVtZW50cyBpcyBuZWNlc3NhcnkgZm9yIGh5ZHJhdGlvbi5cclxuICAgIGNvbnN0IHZub2RlID0gY3JlYXRlVk5vZGUoU3RhdGljLCBudWxsLCBjb250ZW50KTtcclxuICAgIHZub2RlLnN0YXRpY0NvdW50ID0gbnVtYmVyT2ZOb2RlcztcclxuICAgIHJldHVybiB2bm9kZTtcclxufVxyXG4vKipcclxuICogQHByaXZhdGVcclxuICovXHJcbmZ1bmN0aW9uIGNyZWF0ZUNvbW1lbnRWTm9kZSh0ZXh0ID0gJycsIFxyXG4vLyB3aGVuIHVzZWQgYXMgdGhlIHYtZWxzZSBicmFuY2gsIHRoZSBjb21tZW50IG5vZGUgbXVzdCBiZSBjcmVhdGVkIGFzIGFcclxuLy8gYmxvY2sgdG8gZW5zdXJlIGNvcnJlY3QgdXBkYXRlcy5cclxuYXNCbG9jayA9IGZhbHNlKSB7XHJcbiAgICByZXR1cm4gYXNCbG9ja1xyXG4gICAgICAgID8gKG9wZW5CbG9jaygpLCBjcmVhdGVCbG9jayhDb21tZW50LCBudWxsLCB0ZXh0KSlcclxuICAgICAgICA6IGNyZWF0ZVZOb2RlKENvbW1lbnQsIG51bGwsIHRleHQpO1xyXG59XHJcbmZ1bmN0aW9uIG5vcm1hbGl6ZVZOb2RlKGNoaWxkKSB7XHJcbiAgICBpZiAoY2hpbGQgPT0gbnVsbCB8fCB0eXBlb2YgY2hpbGQgPT09ICdib29sZWFuJykge1xyXG4gICAgICAgIC8vIGVtcHR5IHBsYWNlaG9sZGVyXHJcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVZOb2RlKENvbW1lbnQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNBcnJheShjaGlsZCkpIHtcclxuICAgICAgICAvLyBmcmFnbWVudFxyXG4gICAgICAgIHJldHVybiBjcmVhdGVWTm9kZShGcmFnbWVudCwgbnVsbCwgXHJcbiAgICAgICAgLy8gIzM2NjYsIGF2b2lkIHJlZmVyZW5jZSBwb2xsdXRpb24gd2hlbiByZXVzaW5nIHZub2RlXHJcbiAgICAgICAgY2hpbGQuc2xpY2UoKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0eXBlb2YgY2hpbGQgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgLy8gYWxyZWFkeSB2bm9kZSwgdGhpcyBzaG91bGQgYmUgdGhlIG1vc3QgY29tbW9uIHNpbmNlIGNvbXBpbGVkIHRlbXBsYXRlc1xyXG4gICAgICAgIC8vIGFsd2F5cyBwcm9kdWNlIGFsbC12bm9kZSBjaGlsZHJlbiBhcnJheXNcclxuICAgICAgICByZXR1cm4gY2xvbmVJZk1vdW50ZWQoY2hpbGQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgLy8gc3RyaW5ncyBhbmQgbnVtYmVyc1xyXG4gICAgICAgIHJldHVybiBjcmVhdGVWTm9kZShUZXh0LCBudWxsLCBTdHJpbmcoY2hpbGQpKTtcclxuICAgIH1cclxufVxyXG4vLyBvcHRpbWl6ZWQgbm9ybWFsaXphdGlvbiBmb3IgdGVtcGxhdGUtY29tcGlsZWQgcmVuZGVyIGZuc1xyXG5mdW5jdGlvbiBjbG9uZUlmTW91bnRlZChjaGlsZCkge1xyXG4gICAgcmV0dXJuIGNoaWxkLmVsID09PSBudWxsIHx8IGNoaWxkLm1lbW8gPyBjaGlsZCA6IGNsb25lVk5vZGUoY2hpbGQpO1xyXG59XHJcbmZ1bmN0aW9uIG5vcm1hbGl6ZUNoaWxkcmVuKHZub2RlLCBjaGlsZHJlbikge1xyXG4gICAgbGV0IHR5cGUgPSAwO1xyXG4gICAgY29uc3QgeyBzaGFwZUZsYWcgfSA9IHZub2RlO1xyXG4gICAgaWYgKGNoaWxkcmVuID09IG51bGwpIHtcclxuICAgICAgICBjaGlsZHJlbiA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc0FycmF5KGNoaWxkcmVuKSkge1xyXG4gICAgICAgIHR5cGUgPSAxNiAvKiBTaGFwZUZsYWdzLkFSUkFZX0NISUxEUkVOICovO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodHlwZW9mIGNoaWxkcmVuID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgIGlmIChzaGFwZUZsYWcgJiAoMSAvKiBTaGFwZUZsYWdzLkVMRU1FTlQgKi8gfCA2NCAvKiBTaGFwZUZsYWdzLlRFTEVQT1JUICovKSkge1xyXG4gICAgICAgICAgICAvLyBOb3JtYWxpemUgc2xvdCB0byBwbGFpbiBjaGlsZHJlbiBmb3IgcGxhaW4gZWxlbWVudCBhbmQgVGVsZXBvcnRcclxuICAgICAgICAgICAgY29uc3Qgc2xvdCA9IGNoaWxkcmVuLmRlZmF1bHQ7XHJcbiAgICAgICAgICAgIGlmIChzbG90KSB7XHJcbiAgICAgICAgICAgICAgICAvLyBfYyBtYXJrZXIgaXMgYWRkZWQgYnkgd2l0aEN0eCgpIGluZGljYXRpbmcgdGhpcyBpcyBhIGNvbXBpbGVkIHNsb3RcclxuICAgICAgICAgICAgICAgIHNsb3QuX2MgJiYgKHNsb3QuX2QgPSBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICBub3JtYWxpemVDaGlsZHJlbih2bm9kZSwgc2xvdCgpKTtcclxuICAgICAgICAgICAgICAgIHNsb3QuX2MgJiYgKHNsb3QuX2QgPSB0cnVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0eXBlID0gMzIgLyogU2hhcGVGbGFncy5TTE9UU19DSElMRFJFTiAqLztcclxuICAgICAgICAgICAgY29uc3Qgc2xvdEZsYWcgPSBjaGlsZHJlbi5fO1xyXG4gICAgICAgICAgICBpZiAoIXNsb3RGbGFnICYmICEoSW50ZXJuYWxPYmplY3RLZXkgaW4gY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICAgICAgICBjaGlsZHJlbi5fY3R4ID0gY3VycmVudFJlbmRlcmluZ0luc3RhbmNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHNsb3RGbGFnID09PSAzIC8qIFNsb3RGbGFncy5GT1JXQVJERUQgKi8gJiYgY3VycmVudFJlbmRlcmluZ0luc3RhbmNlKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBhIGNoaWxkIGNvbXBvbmVudCByZWNlaXZlcyBmb3J3YXJkZWQgc2xvdHMgZnJvbSB0aGUgcGFyZW50LlxyXG4gICAgICAgICAgICAgICAgLy8gaXRzIHNsb3QgdHlwZSBpcyBkZXRlcm1pbmVkIGJ5IGl0cyBwYXJlbnQncyBzbG90IHR5cGUuXHJcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudFJlbmRlcmluZ0luc3RhbmNlLnNsb3RzLl8gPT09IDEgLyogU2xvdEZsYWdzLlNUQUJMRSAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLl8gPSAxIC8qIFNsb3RGbGFncy5TVEFCTEUgKi87XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbi5fID0gMiAvKiBTbG90RmxhZ3MuRFlOQU1JQyAqLztcclxuICAgICAgICAgICAgICAgICAgICB2bm9kZS5wYXRjaEZsYWcgfD0gMTAyNCAvKiBQYXRjaEZsYWdzLkRZTkFNSUNfU0xPVFMgKi87XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc0Z1bmN0aW9uKGNoaWxkcmVuKSkge1xyXG4gICAgICAgIGNoaWxkcmVuID0geyBkZWZhdWx0OiBjaGlsZHJlbiwgX2N0eDogY3VycmVudFJlbmRlcmluZ0luc3RhbmNlIH07XHJcbiAgICAgICAgdHlwZSA9IDMyIC8qIFNoYXBlRmxhZ3MuU0xPVFNfQ0hJTERSRU4gKi87XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBjaGlsZHJlbiA9IFN0cmluZyhjaGlsZHJlbik7XHJcbiAgICAgICAgLy8gZm9yY2UgdGVsZXBvcnQgY2hpbGRyZW4gdG8gYXJyYXkgc28gaXQgY2FuIGJlIG1vdmVkIGFyb3VuZFxyXG4gICAgICAgIGlmIChzaGFwZUZsYWcgJiA2NCAvKiBTaGFwZUZsYWdzLlRFTEVQT1JUICovKSB7XHJcbiAgICAgICAgICAgIHR5cGUgPSAxNiAvKiBTaGFwZUZsYWdzLkFSUkFZX0NISUxEUkVOICovO1xyXG4gICAgICAgICAgICBjaGlsZHJlbiA9IFtjcmVhdGVUZXh0Vk5vZGUoY2hpbGRyZW4pXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHR5cGUgPSA4IC8qIFNoYXBlRmxhZ3MuVEVYVF9DSElMRFJFTiAqLztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICB2bm9kZS5jaGlsZHJlbiA9IGNoaWxkcmVuO1xyXG4gICAgdm5vZGUuc2hhcGVGbGFnIHw9IHR5cGU7XHJcbn1cclxuZnVuY3Rpb24gbWVyZ2VQcm9wcyguLi5hcmdzKSB7XHJcbiAgICBjb25zdCByZXQgPSB7fTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IHRvTWVyZ2UgPSBhcmdzW2ldO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRvTWVyZ2UpIHtcclxuICAgICAgICAgICAgaWYgKGtleSA9PT0gJ2NsYXNzJykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJldC5jbGFzcyAhPT0gdG9NZXJnZS5jbGFzcykge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldC5jbGFzcyA9IG5vcm1hbGl6ZUNsYXNzKFtyZXQuY2xhc3MsIHRvTWVyZ2UuY2xhc3NdKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChrZXkgPT09ICdzdHlsZScpIHtcclxuICAgICAgICAgICAgICAgIHJldC5zdHlsZSA9IG5vcm1hbGl6ZVN0eWxlKFtyZXQuc3R5bGUsIHRvTWVyZ2Uuc3R5bGVdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChpc09uKGtleSkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nID0gcmV0W2tleV07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpbmNvbWluZyA9IHRvTWVyZ2Vba2V5XTtcclxuICAgICAgICAgICAgICAgIGlmIChpbmNvbWluZyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nICE9PSBpbmNvbWluZyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICEoaXNBcnJheShleGlzdGluZykgJiYgZXhpc3RpbmcuaW5jbHVkZXMoaW5jb21pbmcpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldFtrZXldID0gZXhpc3RpbmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyBbXS5jb25jYXQoZXhpc3RpbmcsIGluY29taW5nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGluY29taW5nO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGtleSAhPT0gJycpIHtcclxuICAgICAgICAgICAgICAgIHJldFtrZXldID0gdG9NZXJnZVtrZXldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJldDtcclxufVxyXG5mdW5jdGlvbiBpbnZva2VWTm9kZUhvb2soaG9vaywgaW5zdGFuY2UsIHZub2RlLCBwcmV2Vk5vZGUgPSBudWxsKSB7XHJcbiAgICBjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZyhob29rLCBpbnN0YW5jZSwgNyAvKiBFcnJvckNvZGVzLlZOT0RFX0hPT0sgKi8sIFtcclxuICAgICAgICB2bm9kZSxcclxuICAgICAgICBwcmV2Vk5vZGVcclxuICAgIF0pO1xyXG59XG5cbmNvbnN0IGVtcHR5QXBwQ29udGV4dCA9IGNyZWF0ZUFwcENvbnRleHQoKTtcclxubGV0IHVpZCQxID0gMDtcclxuZnVuY3Rpb24gY3JlYXRlQ29tcG9uZW50SW5zdGFuY2Uodm5vZGUsIHBhcmVudCwgc3VzcGVuc2UpIHtcclxuICAgIGNvbnN0IHR5cGUgPSB2bm9kZS50eXBlO1xyXG4gICAgLy8gaW5oZXJpdCBwYXJlbnQgYXBwIGNvbnRleHQgLSBvciAtIGlmIHJvb3QsIGFkb3B0IGZyb20gcm9vdCB2bm9kZVxyXG4gICAgY29uc3QgYXBwQ29udGV4dCA9IChwYXJlbnQgPyBwYXJlbnQuYXBwQ29udGV4dCA6IHZub2RlLmFwcENvbnRleHQpIHx8IGVtcHR5QXBwQ29udGV4dDtcclxuICAgIGNvbnN0IGluc3RhbmNlID0ge1xyXG4gICAgICAgIHVpZDogdWlkJDErKyxcclxuICAgICAgICB2bm9kZSxcclxuICAgICAgICB0eXBlLFxyXG4gICAgICAgIHBhcmVudCxcclxuICAgICAgICBhcHBDb250ZXh0LFxyXG4gICAgICAgIHJvb3Q6IG51bGwsXHJcbiAgICAgICAgbmV4dDogbnVsbCxcclxuICAgICAgICBzdWJUcmVlOiBudWxsLFxyXG4gICAgICAgIGVmZmVjdDogbnVsbCxcclxuICAgICAgICB1cGRhdGU6IG51bGwsXHJcbiAgICAgICAgc2NvcGU6IG5ldyBFZmZlY3RTY29wZSh0cnVlIC8qIGRldGFjaGVkICovKSxcclxuICAgICAgICByZW5kZXI6IG51bGwsXHJcbiAgICAgICAgcHJveHk6IG51bGwsXHJcbiAgICAgICAgZXhwb3NlZDogbnVsbCxcclxuICAgICAgICBleHBvc2VQcm94eTogbnVsbCxcclxuICAgICAgICB3aXRoUHJveHk6IG51bGwsXHJcbiAgICAgICAgcHJvdmlkZXM6IHBhcmVudCA/IHBhcmVudC5wcm92aWRlcyA6IE9iamVjdC5jcmVhdGUoYXBwQ29udGV4dC5wcm92aWRlcyksXHJcbiAgICAgICAgYWNjZXNzQ2FjaGU6IG51bGwsXHJcbiAgICAgICAgcmVuZGVyQ2FjaGU6IFtdLFxyXG4gICAgICAgIC8vIGxvY2FsIHJlc29sdmVkIGFzc2V0c1xyXG4gICAgICAgIGNvbXBvbmVudHM6IG51bGwsXHJcbiAgICAgICAgZGlyZWN0aXZlczogbnVsbCxcclxuICAgICAgICAvLyByZXNvbHZlZCBwcm9wcyBhbmQgZW1pdHMgb3B0aW9uc1xyXG4gICAgICAgIHByb3BzT3B0aW9uczogbm9ybWFsaXplUHJvcHNPcHRpb25zKHR5cGUsIGFwcENvbnRleHQpLFxyXG4gICAgICAgIGVtaXRzT3B0aW9uczogbm9ybWFsaXplRW1pdHNPcHRpb25zKHR5cGUsIGFwcENvbnRleHQpLFxyXG4gICAgICAgIC8vIGVtaXRcclxuICAgICAgICBlbWl0OiBudWxsLFxyXG4gICAgICAgIGVtaXR0ZWQ6IG51bGwsXHJcbiAgICAgICAgLy8gcHJvcHMgZGVmYXVsdCB2YWx1ZVxyXG4gICAgICAgIHByb3BzRGVmYXVsdHM6IEVNUFRZX09CSixcclxuICAgICAgICAvLyBpbmhlcml0QXR0cnNcclxuICAgICAgICBpbmhlcml0QXR0cnM6IHR5cGUuaW5oZXJpdEF0dHJzLFxyXG4gICAgICAgIC8vIHN0YXRlXHJcbiAgICAgICAgY3R4OiBFTVBUWV9PQkosXHJcbiAgICAgICAgZGF0YTogRU1QVFlfT0JKLFxyXG4gICAgICAgIHByb3BzOiBFTVBUWV9PQkosXHJcbiAgICAgICAgYXR0cnM6IEVNUFRZX09CSixcclxuICAgICAgICBzbG90czogRU1QVFlfT0JKLFxyXG4gICAgICAgIHJlZnM6IEVNUFRZX09CSixcclxuICAgICAgICBzZXR1cFN0YXRlOiBFTVBUWV9PQkosXHJcbiAgICAgICAgc2V0dXBDb250ZXh0OiBudWxsLFxyXG4gICAgICAgIC8vIHN1c3BlbnNlIHJlbGF0ZWRcclxuICAgICAgICBzdXNwZW5zZSxcclxuICAgICAgICBzdXNwZW5zZUlkOiBzdXNwZW5zZSA/IHN1c3BlbnNlLnBlbmRpbmdJZCA6IDAsXHJcbiAgICAgICAgYXN5bmNEZXA6IG51bGwsXHJcbiAgICAgICAgYXN5bmNSZXNvbHZlZDogZmFsc2UsXHJcbiAgICAgICAgLy8gbGlmZWN5Y2xlIGhvb2tzXHJcbiAgICAgICAgLy8gbm90IHVzaW5nIGVudW1zIGhlcmUgYmVjYXVzZSBpdCByZXN1bHRzIGluIGNvbXB1dGVkIHByb3BlcnRpZXNcclxuICAgICAgICBpc01vdW50ZWQ6IGZhbHNlLFxyXG4gICAgICAgIGlzVW5tb3VudGVkOiBmYWxzZSxcclxuICAgICAgICBpc0RlYWN0aXZhdGVkOiBmYWxzZSxcclxuICAgICAgICBiYzogbnVsbCxcclxuICAgICAgICBjOiBudWxsLFxyXG4gICAgICAgIGJtOiBudWxsLFxyXG4gICAgICAgIG06IG51bGwsXHJcbiAgICAgICAgYnU6IG51bGwsXHJcbiAgICAgICAgdTogbnVsbCxcclxuICAgICAgICB1bTogbnVsbCxcclxuICAgICAgICBidW06IG51bGwsXHJcbiAgICAgICAgZGE6IG51bGwsXHJcbiAgICAgICAgYTogbnVsbCxcclxuICAgICAgICBydGc6IG51bGwsXHJcbiAgICAgICAgcnRjOiBudWxsLFxyXG4gICAgICAgIGVjOiBudWxsLFxyXG4gICAgICAgIHNwOiBudWxsXHJcbiAgICB9O1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIGluc3RhbmNlLmN0eCA9IGNyZWF0ZURldlJlbmRlckNvbnRleHQoaW5zdGFuY2UpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgaW5zdGFuY2UuY3R4ID0geyBfOiBpbnN0YW5jZSB9O1xyXG4gICAgfVxyXG4gICAgaW5zdGFuY2Uucm9vdCA9IHBhcmVudCA/IHBhcmVudC5yb290IDogaW5zdGFuY2U7XHJcbiAgICBpbnN0YW5jZS5lbWl0ID0gZW1pdCQxLmJpbmQobnVsbCwgaW5zdGFuY2UpO1xyXG4gICAgLy8gYXBwbHkgY3VzdG9tIGVsZW1lbnQgc3BlY2lhbCBoYW5kbGluZ1xyXG4gICAgaWYgKHZub2RlLmNlKSB7XHJcbiAgICAgICAgdm5vZGUuY2UoaW5zdGFuY2UpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGluc3RhbmNlO1xyXG59XHJcbmxldCBjdXJyZW50SW5zdGFuY2UgPSBudWxsO1xyXG5jb25zdCBnZXRDdXJyZW50SW5zdGFuY2UgPSAoKSA9PiBjdXJyZW50SW5zdGFuY2UgfHwgY3VycmVudFJlbmRlcmluZ0luc3RhbmNlO1xyXG5jb25zdCBzZXRDdXJyZW50SW5zdGFuY2UgPSAoaW5zdGFuY2UpID0+IHtcclxuICAgIGN1cnJlbnRJbnN0YW5jZSA9IGluc3RhbmNlO1xyXG4gICAgaW5zdGFuY2Uuc2NvcGUub24oKTtcclxufTtcclxuY29uc3QgdW5zZXRDdXJyZW50SW5zdGFuY2UgPSAoKSA9PiB7XHJcbiAgICBjdXJyZW50SW5zdGFuY2UgJiYgY3VycmVudEluc3RhbmNlLnNjb3BlLm9mZigpO1xyXG4gICAgY3VycmVudEluc3RhbmNlID0gbnVsbDtcclxufTtcclxuY29uc3QgaXNCdWlsdEluVGFnID0gLyojX19QVVJFX18qLyBtYWtlTWFwKCdzbG90LGNvbXBvbmVudCcpO1xyXG5mdW5jdGlvbiB2YWxpZGF0ZUNvbXBvbmVudE5hbWUobmFtZSwgY29uZmlnKSB7XHJcbiAgICBjb25zdCBhcHBJc05hdGl2ZVRhZyA9IGNvbmZpZy5pc05hdGl2ZVRhZyB8fCBOTztcclxuICAgIGlmIChpc0J1aWx0SW5UYWcobmFtZSkgfHwgYXBwSXNOYXRpdmVUYWcobmFtZSkpIHtcclxuICAgICAgICB3YXJuKCdEbyBub3QgdXNlIGJ1aWx0LWluIG9yIHJlc2VydmVkIEhUTUwgZWxlbWVudHMgYXMgY29tcG9uZW50IGlkOiAnICsgbmFtZSk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gaXNTdGF0ZWZ1bENvbXBvbmVudChpbnN0YW5jZSkge1xyXG4gICAgcmV0dXJuIGluc3RhbmNlLnZub2RlLnNoYXBlRmxhZyAmIDQgLyogU2hhcGVGbGFncy5TVEFURUZVTF9DT01QT05FTlQgKi87XHJcbn1cclxubGV0IGlzSW5TU1JDb21wb25lbnRTZXR1cCA9IGZhbHNlO1xyXG5mdW5jdGlvbiBzZXR1cENvbXBvbmVudChpbnN0YW5jZSwgaXNTU1IgPSBmYWxzZSkge1xyXG4gICAgaXNJblNTUkNvbXBvbmVudFNldHVwID0gaXNTU1I7XHJcbiAgICBjb25zdCB7IHByb3BzLCBjaGlsZHJlbiB9ID0gaW5zdGFuY2Uudm5vZGU7XHJcbiAgICBjb25zdCBpc1N0YXRlZnVsID0gaXNTdGF0ZWZ1bENvbXBvbmVudChpbnN0YW5jZSk7XHJcbiAgICBpbml0UHJvcHMoaW5zdGFuY2UsIHByb3BzLCBpc1N0YXRlZnVsLCBpc1NTUik7XHJcbiAgICBpbml0U2xvdHMoaW5zdGFuY2UsIGNoaWxkcmVuKTtcclxuICAgIGNvbnN0IHNldHVwUmVzdWx0ID0gaXNTdGF0ZWZ1bFxyXG4gICAgICAgID8gc2V0dXBTdGF0ZWZ1bENvbXBvbmVudChpbnN0YW5jZSwgaXNTU1IpXHJcbiAgICAgICAgOiB1bmRlZmluZWQ7XHJcbiAgICBpc0luU1NSQ29tcG9uZW50U2V0dXAgPSBmYWxzZTtcclxuICAgIHJldHVybiBzZXR1cFJlc3VsdDtcclxufVxyXG5mdW5jdGlvbiBzZXR1cFN0YXRlZnVsQ29tcG9uZW50KGluc3RhbmNlLCBpc1NTUikge1xyXG4gICAgdmFyIF9hO1xyXG4gICAgY29uc3QgQ29tcG9uZW50ID0gaW5zdGFuY2UudHlwZTtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICBpZiAoQ29tcG9uZW50Lm5hbWUpIHtcclxuICAgICAgICAgICAgdmFsaWRhdGVDb21wb25lbnROYW1lKENvbXBvbmVudC5uYW1lLCBpbnN0YW5jZS5hcHBDb250ZXh0LmNvbmZpZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChDb21wb25lbnQuY29tcG9uZW50cykge1xyXG4gICAgICAgICAgICBjb25zdCBuYW1lcyA9IE9iamVjdC5rZXlzKENvbXBvbmVudC5jb21wb25lbnRzKTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgdmFsaWRhdGVDb21wb25lbnROYW1lKG5hbWVzW2ldLCBpbnN0YW5jZS5hcHBDb250ZXh0LmNvbmZpZyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKENvbXBvbmVudC5kaXJlY3RpdmVzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5hbWVzID0gT2JqZWN0LmtleXMoQ29tcG9uZW50LmRpcmVjdGl2ZXMpO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB2YWxpZGF0ZURpcmVjdGl2ZU5hbWUobmFtZXNbaV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChDb21wb25lbnQuY29tcGlsZXJPcHRpb25zICYmIGlzUnVudGltZU9ubHkoKSkge1xyXG4gICAgICAgICAgICB3YXJuKGBcImNvbXBpbGVyT3B0aW9uc1wiIGlzIG9ubHkgc3VwcG9ydGVkIHdoZW4gdXNpbmcgYSBidWlsZCBvZiBWdWUgdGhhdCBgICtcclxuICAgICAgICAgICAgICAgIGBpbmNsdWRlcyB0aGUgcnVudGltZSBjb21waWxlci4gU2luY2UgeW91IGFyZSB1c2luZyBhIHJ1bnRpbWUtb25seSBgICtcclxuICAgICAgICAgICAgICAgIGBidWlsZCwgdGhlIG9wdGlvbnMgc2hvdWxkIGJlIHBhc3NlZCB2aWEgeW91ciBidWlsZCB0b29sIGNvbmZpZyBpbnN0ZWFkLmApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIDAuIGNyZWF0ZSByZW5kZXIgcHJveHkgcHJvcGVydHkgYWNjZXNzIGNhY2hlXHJcbiAgICBpbnN0YW5jZS5hY2Nlc3NDYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XHJcbiAgICAvLyAxLiBjcmVhdGUgcHVibGljIGluc3RhbmNlIC8gcmVuZGVyIHByb3h5XHJcbiAgICAvLyBhbHNvIG1hcmsgaXQgcmF3IHNvIGl0J3MgbmV2ZXIgb2JzZXJ2ZWRcclxuICAgIGluc3RhbmNlLnByb3h5ID0gbWFya1JhdyhuZXcgUHJveHkoaW5zdGFuY2UuY3R4LCBQdWJsaWNJbnN0YW5jZVByb3h5SGFuZGxlcnMpKTtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICBleHBvc2VQcm9wc09uUmVuZGVyQ29udGV4dChpbnN0YW5jZSk7XHJcbiAgICB9XHJcbiAgICAvLyAyLiBjYWxsIHNldHVwKClcclxuICAgIGNvbnN0IHsgc2V0dXAgfSA9IENvbXBvbmVudDtcclxuICAgIGlmIChzZXR1cCkge1xyXG4gICAgICAgIGNvbnN0IHNldHVwQ29udGV4dCA9IChpbnN0YW5jZS5zZXR1cENvbnRleHQgPVxyXG4gICAgICAgICAgICBzZXR1cC5sZW5ndGggPiAxID8gY3JlYXRlU2V0dXBDb250ZXh0KGluc3RhbmNlKSA6IG51bGwpO1xyXG4gICAgICAgIHNldEN1cnJlbnRJbnN0YW5jZShpbnN0YW5jZSk7XHJcbiAgICAgICAgcGF1c2VUcmFja2luZygpO1xyXG4gICAgICAgIGNvbnN0IHNldHVwUmVzdWx0ID0gY2FsbFdpdGhFcnJvckhhbmRsaW5nKHNldHVwLCBpbnN0YW5jZSwgMCAvKiBFcnJvckNvZGVzLlNFVFVQX0ZVTkNUSU9OICovLCBbKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpID8gc2hhbGxvd1JlYWRvbmx5KGluc3RhbmNlLnByb3BzKSA6IGluc3RhbmNlLnByb3BzLCBzZXR1cENvbnRleHRdKTtcclxuICAgICAgICByZXNldFRyYWNraW5nKCk7XHJcbiAgICAgICAgdW5zZXRDdXJyZW50SW5zdGFuY2UoKTtcclxuICAgICAgICBpZiAoaXNQcm9taXNlKHNldHVwUmVzdWx0KSkge1xyXG4gICAgICAgICAgICBzZXR1cFJlc3VsdC50aGVuKHVuc2V0Q3VycmVudEluc3RhbmNlLCB1bnNldEN1cnJlbnRJbnN0YW5jZSk7XHJcbiAgICAgICAgICAgIGlmIChpc1NTUikge1xyXG4gICAgICAgICAgICAgICAgLy8gcmV0dXJuIHRoZSBwcm9taXNlIHNvIHNlcnZlci1yZW5kZXJlciBjYW4gd2FpdCBvbiBpdFxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNldHVwUmVzdWx0XHJcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKHJlc29sdmVkUmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlU2V0dXBSZXN1bHQoaW5zdGFuY2UsIHJlc29sdmVkUmVzdWx0LCBpc1NTUik7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVFcnJvcihlLCBpbnN0YW5jZSwgMCAvKiBFcnJvckNvZGVzLlNFVFVQX0ZVTkNUSU9OICovKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gYXN5bmMgc2V0dXAgcmV0dXJuZWQgUHJvbWlzZS5cclxuICAgICAgICAgICAgICAgIC8vIGJhaWwgaGVyZSBhbmQgd2FpdCBmb3IgcmUtZW50cnkuXHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5hc3luY0RlcCA9IHNldHVwUmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhaW5zdGFuY2Uuc3VzcGVuc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuYW1lID0gKF9hID0gQ29tcG9uZW50Lm5hbWUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICdBbm9ueW1vdXMnO1xyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oYENvbXBvbmVudCA8JHtuYW1lfT46IHNldHVwIGZ1bmN0aW9uIHJldHVybmVkIGEgcHJvbWlzZSwgYnV0IG5vIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgPFN1c3BlbnNlPiBib3VuZGFyeSB3YXMgZm91bmQgaW4gdGhlIHBhcmVudCBjb21wb25lbnQgdHJlZS4gYCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBBIGNvbXBvbmVudCB3aXRoIGFzeW5jIHNldHVwKCkgbXVzdCBiZSBuZXN0ZWQgaW4gYSA8U3VzcGVuc2U+IGAgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgaW4gb3JkZXIgdG8gYmUgcmVuZGVyZWQuYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGhhbmRsZVNldHVwUmVzdWx0KGluc3RhbmNlLCBzZXR1cFJlc3VsdCwgaXNTU1IpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGZpbmlzaENvbXBvbmVudFNldHVwKGluc3RhbmNlLCBpc1NTUik7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gaGFuZGxlU2V0dXBSZXN1bHQoaW5zdGFuY2UsIHNldHVwUmVzdWx0LCBpc1NTUikge1xyXG4gICAgaWYgKGlzRnVuY3Rpb24oc2V0dXBSZXN1bHQpKSB7XHJcbiAgICAgICAgLy8gc2V0dXAgcmV0dXJuZWQgYW4gaW5saW5lIHJlbmRlciBmdW5jdGlvblxyXG4gICAgICAgIGlmIChpbnN0YW5jZS50eXBlLl9fc3NySW5saW5lUmVuZGVyKSB7XHJcbiAgICAgICAgICAgIC8vIHdoZW4gdGhlIGZ1bmN0aW9uJ3MgbmFtZSBpcyBgc3NyUmVuZGVyYCAoY29tcGlsZWQgYnkgU0ZDIGlubGluZSBtb2RlKSxcclxuICAgICAgICAgICAgLy8gc2V0IGl0IGFzIHNzclJlbmRlciBpbnN0ZWFkLlxyXG4gICAgICAgICAgICBpbnN0YW5jZS5zc3JSZW5kZXIgPSBzZXR1cFJlc3VsdDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGluc3RhbmNlLnJlbmRlciA9IHNldHVwUmVzdWx0O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzT2JqZWN0KHNldHVwUmVzdWx0KSkge1xyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgaXNWTm9kZShzZXR1cFJlc3VsdCkpIHtcclxuICAgICAgICAgICAgd2Fybihgc2V0dXAoKSBzaG91bGQgbm90IHJldHVybiBWTm9kZXMgZGlyZWN0bHkgLSBgICtcclxuICAgICAgICAgICAgICAgIGByZXR1cm4gYSByZW5kZXIgZnVuY3Rpb24gaW5zdGVhZC5gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gc2V0dXAgcmV0dXJuZWQgYmluZGluZ3MuXHJcbiAgICAgICAgLy8gYXNzdW1pbmcgYSByZW5kZXIgZnVuY3Rpb24gY29tcGlsZWQgZnJvbSB0ZW1wbGF0ZSBpcyBwcmVzZW50LlxyXG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSB7XHJcbiAgICAgICAgICAgIGluc3RhbmNlLmRldnRvb2xzUmF3U2V0dXBTdGF0ZSA9IHNldHVwUmVzdWx0O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpbnN0YW5jZS5zZXR1cFN0YXRlID0gcHJveHlSZWZzKHNldHVwUmVzdWx0KTtcclxuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgIGV4cG9zZVNldHVwU3RhdGVPblJlbmRlckNvbnRleHQoaW5zdGFuY2UpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBzZXR1cFJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgd2Fybihgc2V0dXAoKSBzaG91bGQgcmV0dXJuIGFuIG9iamVjdC4gUmVjZWl2ZWQ6ICR7c2V0dXBSZXN1bHQgPT09IG51bGwgPyAnbnVsbCcgOiB0eXBlb2Ygc2V0dXBSZXN1bHR9YCk7XHJcbiAgICB9XHJcbiAgICBmaW5pc2hDb21wb25lbnRTZXR1cChpbnN0YW5jZSwgaXNTU1IpO1xyXG59XHJcbmxldCBjb21waWxlO1xyXG5sZXQgaW5zdGFsbFdpdGhQcm94eTtcclxuLyoqXHJcbiAqIEZvciBydW50aW1lLWRvbSB0byByZWdpc3RlciB0aGUgY29tcGlsZXIuXHJcbiAqIE5vdGUgdGhlIGV4cG9ydGVkIG1ldGhvZCB1c2VzIGFueSB0byBhdm9pZCBkLnRzIHJlbHlpbmcgb24gdGhlIGNvbXBpbGVyIHR5cGVzLlxyXG4gKi9cclxuZnVuY3Rpb24gcmVnaXN0ZXJSdW50aW1lQ29tcGlsZXIoX2NvbXBpbGUpIHtcclxuICAgIGNvbXBpbGUgPSBfY29tcGlsZTtcclxuICAgIGluc3RhbGxXaXRoUHJveHkgPSBpID0+IHtcclxuICAgICAgICBpZiAoaS5yZW5kZXIuX3JjKSB7XHJcbiAgICAgICAgICAgIGkud2l0aFByb3h5ID0gbmV3IFByb3h5KGkuY3R4LCBSdW50aW1lQ29tcGlsZWRQdWJsaWNJbnN0YW5jZVByb3h5SGFuZGxlcnMpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbn1cclxuLy8gZGV2IG9ubHlcclxuY29uc3QgaXNSdW50aW1lT25seSA9ICgpID0+ICFjb21waWxlO1xyXG5mdW5jdGlvbiBmaW5pc2hDb21wb25lbnRTZXR1cChpbnN0YW5jZSwgaXNTU1IsIHNraXBPcHRpb25zKSB7XHJcbiAgICBjb25zdCBDb21wb25lbnQgPSBpbnN0YW5jZS50eXBlO1xyXG4gICAgLy8gdGVtcGxhdGUgLyByZW5kZXIgZnVuY3Rpb24gbm9ybWFsaXphdGlvblxyXG4gICAgLy8gY291bGQgYmUgYWxyZWFkeSBzZXQgd2hlbiByZXR1cm5lZCBmcm9tIHNldHVwKClcclxuICAgIGlmICghaW5zdGFuY2UucmVuZGVyKSB7XHJcbiAgICAgICAgLy8gb25seSBkbyBvbi10aGUtZmx5IGNvbXBpbGUgaWYgbm90IGluIFNTUiAtIFNTUiBvbi10aGUtZmx5IGNvbXBpbGF0aW9uXHJcbiAgICAgICAgLy8gaXMgZG9uZSBieSBzZXJ2ZXItcmVuZGVyZXJcclxuICAgICAgICBpZiAoIWlzU1NSICYmIGNvbXBpbGUgJiYgIUNvbXBvbmVudC5yZW5kZXIpIHtcclxuICAgICAgICAgICAgY29uc3QgdGVtcGxhdGUgPSBDb21wb25lbnQudGVtcGxhdGU7XHJcbiAgICAgICAgICAgIGlmICh0ZW1wbGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0TWVhc3VyZShpbnN0YW5jZSwgYGNvbXBpbGVgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgaXNDdXN0b21FbGVtZW50LCBjb21waWxlck9wdGlvbnMgfSA9IGluc3RhbmNlLmFwcENvbnRleHQuY29uZmlnO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeyBkZWxpbWl0ZXJzLCBjb21waWxlck9wdGlvbnM6IGNvbXBvbmVudENvbXBpbGVyT3B0aW9ucyB9ID0gQ29tcG9uZW50O1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmluYWxDb21waWxlck9wdGlvbnMgPSBleHRlbmQoZXh0ZW5kKHtcclxuICAgICAgICAgICAgICAgICAgICBpc0N1c3RvbUVsZW1lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgZGVsaW1pdGVyc1xyXG4gICAgICAgICAgICAgICAgfSwgY29tcGlsZXJPcHRpb25zKSwgY29tcG9uZW50Q29tcGlsZXJPcHRpb25zKTtcclxuICAgICAgICAgICAgICAgIENvbXBvbmVudC5yZW5kZXIgPSBjb21waWxlKHRlbXBsYXRlLCBmaW5hbENvbXBpbGVyT3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZW5kTWVhc3VyZShpbnN0YW5jZSwgYGNvbXBpbGVgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpbnN0YW5jZS5yZW5kZXIgPSAoQ29tcG9uZW50LnJlbmRlciB8fCBOT09QKTtcclxuICAgICAgICAvLyBmb3IgcnVudGltZS1jb21waWxlZCByZW5kZXIgZnVuY3Rpb25zIHVzaW5nIGB3aXRoYCBibG9ja3MsIHRoZSByZW5kZXJcclxuICAgICAgICAvLyBwcm94eSB1c2VkIG5lZWRzIGEgZGlmZmVyZW50IGBoYXNgIGhhbmRsZXIgd2hpY2ggaXMgbW9yZSBwZXJmb3JtYW50IGFuZFxyXG4gICAgICAgIC8vIGFsc28gb25seSBhbGxvd3MgYSB3aGl0ZWxpc3Qgb2YgZ2xvYmFscyB0byBmYWxsdGhyb3VnaC5cclxuICAgICAgICBpZiAoaW5zdGFsbFdpdGhQcm94eSkge1xyXG4gICAgICAgICAgICBpbnN0YWxsV2l0aFByb3h5KGluc3RhbmNlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBzdXBwb3J0IGZvciAyLnggb3B0aW9uc1xyXG4gICAgaWYgKF9fVlVFX09QVElPTlNfQVBJX18gJiYgIShmYWxzZSApKSB7XHJcbiAgICAgICAgc2V0Q3VycmVudEluc3RhbmNlKGluc3RhbmNlKTtcclxuICAgICAgICBwYXVzZVRyYWNraW5nKCk7XHJcbiAgICAgICAgYXBwbHlPcHRpb25zKGluc3RhbmNlKTtcclxuICAgICAgICByZXNldFRyYWNraW5nKCk7XHJcbiAgICAgICAgdW5zZXRDdXJyZW50SW5zdGFuY2UoKTtcclxuICAgIH1cclxuICAgIC8vIHdhcm4gbWlzc2luZyB0ZW1wbGF0ZS9yZW5kZXJcclxuICAgIC8vIHRoZSBydW50aW1lIGNvbXBpbGF0aW9uIG9mIHRlbXBsYXRlIGluIFNTUiBpcyBkb25lIGJ5IHNlcnZlci1yZW5kZXJcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIUNvbXBvbmVudC5yZW5kZXIgJiYgaW5zdGFuY2UucmVuZGVyID09PSBOT09QICYmICFpc1NTUikge1xyXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xyXG4gICAgICAgIGlmICghY29tcGlsZSAmJiBDb21wb25lbnQudGVtcGxhdGUpIHtcclxuICAgICAgICAgICAgd2FybihgQ29tcG9uZW50IHByb3ZpZGVkIHRlbXBsYXRlIG9wdGlvbiBidXQgYCArXHJcbiAgICAgICAgICAgICAgICBgcnVudGltZSBjb21waWxhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgYnVpbGQgb2YgVnVlLmAgK1xyXG4gICAgICAgICAgICAgICAgKGAgQ29uZmlndXJlIHlvdXIgYnVuZGxlciB0byBhbGlhcyBcInZ1ZVwiIHRvIFwidnVlL2Rpc3QvdnVlLmVzbS1idW5kbGVyLmpzXCIuYFxyXG4gICAgICAgICAgICAgICAgICAgICkgLyogc2hvdWxkIG5vdCBoYXBwZW4gKi8pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgd2FybihgQ29tcG9uZW50IGlzIG1pc3NpbmcgdGVtcGxhdGUgb3IgcmVuZGVyIGZ1bmN0aW9uLmApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBjcmVhdGVBdHRyc1Byb3h5KGluc3RhbmNlKSB7XHJcbiAgICByZXR1cm4gbmV3IFByb3h5KGluc3RhbmNlLmF0dHJzLCAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylcclxuICAgICAgICA/IHtcclxuICAgICAgICAgICAgZ2V0KHRhcmdldCwga2V5KSB7XHJcbiAgICAgICAgICAgICAgICBtYXJrQXR0cnNBY2Nlc3NlZCgpO1xyXG4gICAgICAgICAgICAgICAgdHJhY2soaW5zdGFuY2UsIFwiZ2V0XCIgLyogVHJhY2tPcFR5cGVzLkdFVCAqLywgJyRhdHRycycpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldFtrZXldO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzZXQoKSB7XHJcbiAgICAgICAgICAgICAgICB3YXJuKGBzZXR1cENvbnRleHQuYXR0cnMgaXMgcmVhZG9ubHkuYCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGRlbGV0ZVByb3BlcnR5KCkge1xyXG4gICAgICAgICAgICAgICAgd2Fybihgc2V0dXBDb250ZXh0LmF0dHJzIGlzIHJlYWRvbmx5LmApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIDoge1xyXG4gICAgICAgICAgICBnZXQodGFyZ2V0LCBrZXkpIHtcclxuICAgICAgICAgICAgICAgIHRyYWNrKGluc3RhbmNlLCBcImdldFwiIC8qIFRyYWNrT3BUeXBlcy5HRVQgKi8sICckYXR0cnMnKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXRba2V5XTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG59XHJcbmZ1bmN0aW9uIGNyZWF0ZVNldHVwQ29udGV4dChpbnN0YW5jZSkge1xyXG4gICAgY29uc3QgZXhwb3NlID0gZXhwb3NlZCA9PiB7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiBpbnN0YW5jZS5leHBvc2VkKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYGV4cG9zZSgpIHNob3VsZCBiZSBjYWxsZWQgb25seSBvbmNlIHBlciBzZXR1cCgpLmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpbnN0YW5jZS5leHBvc2VkID0gZXhwb3NlZCB8fCB7fTtcclxuICAgIH07XHJcbiAgICBsZXQgYXR0cnM7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgLy8gV2UgdXNlIGdldHRlcnMgaW4gZGV2IGluIGNhc2UgbGlicyBsaWtlIHRlc3QtdXRpbHMgb3ZlcndyaXRlIGluc3RhbmNlXHJcbiAgICAgICAgLy8gcHJvcGVydGllcyAob3ZlcndyaXRlcyBzaG91bGQgbm90IGJlIGRvbmUgaW4gcHJvZClcclxuICAgICAgICByZXR1cm4gT2JqZWN0LmZyZWV6ZSh7XHJcbiAgICAgICAgICAgIGdldCBhdHRycygpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBhdHRycyB8fCAoYXR0cnMgPSBjcmVhdGVBdHRyc1Byb3h5KGluc3RhbmNlKSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGdldCBzbG90cygpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBzaGFsbG93UmVhZG9ubHkoaW5zdGFuY2Uuc2xvdHMpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBnZXQgZW1pdCgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAoZXZlbnQsIC4uLmFyZ3MpID0+IGluc3RhbmNlLmVtaXQoZXZlbnQsIC4uLmFyZ3MpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBleHBvc2VcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGdldCBhdHRycygpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBhdHRycyB8fCAoYXR0cnMgPSBjcmVhdGVBdHRyc1Byb3h5KGluc3RhbmNlKSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNsb3RzOiBpbnN0YW5jZS5zbG90cyxcclxuICAgICAgICAgICAgZW1pdDogaW5zdGFuY2UuZW1pdCxcclxuICAgICAgICAgICAgZXhwb3NlXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBnZXRFeHBvc2VQcm94eShpbnN0YW5jZSkge1xyXG4gICAgaWYgKGluc3RhbmNlLmV4cG9zZWQpIHtcclxuICAgICAgICByZXR1cm4gKGluc3RhbmNlLmV4cG9zZVByb3h5IHx8XHJcbiAgICAgICAgICAgIChpbnN0YW5jZS5leHBvc2VQcm94eSA9IG5ldyBQcm94eShwcm94eVJlZnMobWFya1JhdyhpbnN0YW5jZS5leHBvc2VkKSksIHtcclxuICAgICAgICAgICAgICAgIGdldCh0YXJnZXQsIGtleSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChrZXkgaW4gdGFyZ2V0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXRba2V5XTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoa2V5IGluIHB1YmxpY1Byb3BlcnRpZXNNYXApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHB1YmxpY1Byb3BlcnRpZXNNYXBba2V5XShpbnN0YW5jZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KSkpO1xyXG4gICAgfVxyXG59XHJcbmNvbnN0IGNsYXNzaWZ5UkUgPSAvKD86XnxbLV9dKShcXHcpL2c7XHJcbmNvbnN0IGNsYXNzaWZ5ID0gKHN0cikgPT4gc3RyLnJlcGxhY2UoY2xhc3NpZnlSRSwgYyA9PiBjLnRvVXBwZXJDYXNlKCkpLnJlcGxhY2UoL1stX10vZywgJycpO1xyXG5mdW5jdGlvbiBnZXRDb21wb25lbnROYW1lKENvbXBvbmVudCwgaW5jbHVkZUluZmVycmVkID0gdHJ1ZSkge1xyXG4gICAgcmV0dXJuIGlzRnVuY3Rpb24oQ29tcG9uZW50KVxyXG4gICAgICAgID8gQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lXHJcbiAgICAgICAgOiBDb21wb25lbnQubmFtZSB8fCAoaW5jbHVkZUluZmVycmVkICYmIENvbXBvbmVudC5fX25hbWUpO1xyXG59XHJcbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXHJcbmZ1bmN0aW9uIGZvcm1hdENvbXBvbmVudE5hbWUoaW5zdGFuY2UsIENvbXBvbmVudCwgaXNSb290ID0gZmFsc2UpIHtcclxuICAgIGxldCBuYW1lID0gZ2V0Q29tcG9uZW50TmFtZShDb21wb25lbnQpO1xyXG4gICAgaWYgKCFuYW1lICYmIENvbXBvbmVudC5fX2ZpbGUpIHtcclxuICAgICAgICBjb25zdCBtYXRjaCA9IENvbXBvbmVudC5fX2ZpbGUubWF0Y2goLyhbXi9cXFxcXSspXFwuXFx3KyQvKTtcclxuICAgICAgICBpZiAobWF0Y2gpIHtcclxuICAgICAgICAgICAgbmFtZSA9IG1hdGNoWzFdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghbmFtZSAmJiBpbnN0YW5jZSAmJiBpbnN0YW5jZS5wYXJlbnQpIHtcclxuICAgICAgICAvLyB0cnkgdG8gaW5mZXIgdGhlIG5hbWUgYmFzZWQgb24gcmV2ZXJzZSByZXNvbHV0aW9uXHJcbiAgICAgICAgY29uc3QgaW5mZXJGcm9tUmVnaXN0cnkgPSAocmVnaXN0cnkpID0+IHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcmVnaXN0cnkpIHtcclxuICAgICAgICAgICAgICAgIGlmIChyZWdpc3RyeVtrZXldID09PSBDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ga2V5O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICBuYW1lID1cclxuICAgICAgICAgICAgaW5mZXJGcm9tUmVnaXN0cnkoaW5zdGFuY2UuY29tcG9uZW50cyB8fFxyXG4gICAgICAgICAgICAgICAgaW5zdGFuY2UucGFyZW50LnR5cGUuY29tcG9uZW50cykgfHwgaW5mZXJGcm9tUmVnaXN0cnkoaW5zdGFuY2UuYXBwQ29udGV4dC5jb21wb25lbnRzKTtcclxuICAgIH1cclxuICAgIHJldHVybiBuYW1lID8gY2xhc3NpZnkobmFtZSkgOiBpc1Jvb3QgPyBgQXBwYCA6IGBBbm9ueW1vdXNgO1xyXG59XHJcbmZ1bmN0aW9uIGlzQ2xhc3NDb21wb25lbnQodmFsdWUpIHtcclxuICAgIHJldHVybiBpc0Z1bmN0aW9uKHZhbHVlKSAmJiAnX192Y2NPcHRzJyBpbiB2YWx1ZTtcclxufVxuXG5jb25zdCBjb21wdXRlZCA9ICgoZ2V0dGVyT3JPcHRpb25zLCBkZWJ1Z09wdGlvbnMpID0+IHtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHJldHVybiBjb21wdXRlZCQxKGdldHRlck9yT3B0aW9ucywgZGVidWdPcHRpb25zLCBpc0luU1NSQ29tcG9uZW50U2V0dXApO1xyXG59KTtcblxuLy8gZGV2IG9ubHlcclxuY29uc3Qgd2FyblJ1bnRpbWVVc2FnZSA9IChtZXRob2QpID0+IHdhcm4oYCR7bWV0aG9kfSgpIGlzIGEgY29tcGlsZXItaGludCBoZWxwZXIgdGhhdCBpcyBvbmx5IHVzYWJsZSBpbnNpZGUgYCArXHJcbiAgICBgPHNjcmlwdCBzZXR1cD4gb2YgYSBzaW5nbGUgZmlsZSBjb21wb25lbnQuIEl0cyBhcmd1bWVudHMgc2hvdWxkIGJlIGAgK1xyXG4gICAgYGNvbXBpbGVkIGF3YXkgYW5kIHBhc3NpbmcgaXQgYXQgcnVudGltZSBoYXMgbm8gZWZmZWN0LmApO1xyXG4vLyBpbXBsZW1lbnRhdGlvblxyXG5mdW5jdGlvbiBkZWZpbmVQcm9wcygpIHtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcclxuICAgICAgICB3YXJuUnVudGltZVVzYWdlKGBkZWZpbmVQcm9wc2ApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbn1cclxuLy8gaW1wbGVtZW50YXRpb25cclxuZnVuY3Rpb24gZGVmaW5lRW1pdHMoKSB7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgd2FyblJ1bnRpbWVVc2FnZShgZGVmaW5lRW1pdHNgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG59XHJcbi8qKlxyXG4gKiBWdWUgYDxzY3JpcHQgc2V0dXA+YCBjb21waWxlciBtYWNybyBmb3IgZGVjbGFyaW5nIGEgY29tcG9uZW50J3MgZXhwb3NlZFxyXG4gKiBpbnN0YW5jZSBwcm9wZXJ0aWVzIHdoZW4gaXQgaXMgYWNjZXNzZWQgYnkgYSBwYXJlbnQgY29tcG9uZW50IHZpYSB0ZW1wbGF0ZVxyXG4gKiByZWZzLlxyXG4gKlxyXG4gKiBgPHNjcmlwdCBzZXR1cD5gIGNvbXBvbmVudHMgYXJlIGNsb3NlZCBieSBkZWZhdWx0IC0gaS5lLiB2YXJpYWJsZXMgaW5zaWRlXHJcbiAqIHRoZSBgPHNjcmlwdCBzZXR1cD5gIHNjb3BlIGlzIG5vdCBleHBvc2VkIHRvIHBhcmVudCB1bmxlc3MgZXhwbGljaXRseSBleHBvc2VkXHJcbiAqIHZpYSBgZGVmaW5lRXhwb3NlYC5cclxuICpcclxuICogVGhpcyBpcyBvbmx5IHVzYWJsZSBpbnNpZGUgYDxzY3JpcHQgc2V0dXA+YCwgaXMgY29tcGlsZWQgYXdheSBpbiB0aGVcclxuICogb3V0cHV0IGFuZCBzaG91bGQgKipub3QqKiBiZSBhY3R1YWxseSBjYWxsZWQgYXQgcnVudGltZS5cclxuICovXHJcbmZ1bmN0aW9uIGRlZmluZUV4cG9zZShleHBvc2VkKSB7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgd2FyblJ1bnRpbWVVc2FnZShgZGVmaW5lRXhwb3NlYCk7XHJcbiAgICB9XHJcbn1cclxuLyoqXHJcbiAqIFZ1ZSBgPHNjcmlwdCBzZXR1cD5gIGNvbXBpbGVyIG1hY3JvIGZvciBwcm92aWRpbmcgcHJvcHMgZGVmYXVsdCB2YWx1ZXMgd2hlblxyXG4gKiB1c2luZyB0eXBlLWJhc2VkIGBkZWZpbmVQcm9wc2AgZGVjbGFyYXRpb24uXHJcbiAqXHJcbiAqIEV4YW1wbGUgdXNhZ2U6XHJcbiAqIGBgYHRzXHJcbiAqIHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczx7XHJcbiAqICAgc2l6ZT86IG51bWJlclxyXG4gKiAgIGxhYmVscz86IHN0cmluZ1tdXHJcbiAqIH0+KCksIHtcclxuICogICBzaXplOiAzLFxyXG4gKiAgIGxhYmVsczogKCkgPT4gWydkZWZhdWx0IGxhYmVsJ11cclxuICogfSlcclxuICogYGBgXHJcbiAqXHJcbiAqIFRoaXMgaXMgb25seSB1c2FibGUgaW5zaWRlIGA8c2NyaXB0IHNldHVwPmAsIGlzIGNvbXBpbGVkIGF3YXkgaW4gdGhlIG91dHB1dFxyXG4gKiBhbmQgc2hvdWxkICoqbm90KiogYmUgYWN0dWFsbHkgY2FsbGVkIGF0IHJ1bnRpbWUuXHJcbiAqL1xyXG5mdW5jdGlvbiB3aXRoRGVmYXVsdHMocHJvcHMsIGRlZmF1bHRzKSB7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgd2FyblJ1bnRpbWVVc2FnZShgd2l0aERlZmF1bHRzYCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxufVxyXG5mdW5jdGlvbiB1c2VTbG90cygpIHtcclxuICAgIHJldHVybiBnZXRDb250ZXh0KCkuc2xvdHM7XHJcbn1cclxuZnVuY3Rpb24gdXNlQXR0cnMoKSB7XHJcbiAgICByZXR1cm4gZ2V0Q29udGV4dCgpLmF0dHJzO1xyXG59XHJcbmZ1bmN0aW9uIGdldENvbnRleHQoKSB7XHJcbiAgICBjb25zdCBpID0gZ2V0Q3VycmVudEluc3RhbmNlKCk7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFpKSB7XHJcbiAgICAgICAgd2FybihgdXNlQ29udGV4dCgpIGNhbGxlZCB3aXRob3V0IGFjdGl2ZSBpbnN0YW5jZS5gKTtcclxuICAgIH1cclxuICAgIHJldHVybiBpLnNldHVwQ29udGV4dCB8fCAoaS5zZXR1cENvbnRleHQgPSBjcmVhdGVTZXR1cENvbnRleHQoaSkpO1xyXG59XHJcbi8qKlxyXG4gKiBSdW50aW1lIGhlbHBlciBmb3IgbWVyZ2luZyBkZWZhdWx0IGRlY2xhcmF0aW9ucy4gSW1wb3J0ZWQgYnkgY29tcGlsZWQgY29kZVxyXG4gKiBvbmx5LlxyXG4gKiBAaW50ZXJuYWxcclxuICovXHJcbmZ1bmN0aW9uIG1lcmdlRGVmYXVsdHMocmF3LCBkZWZhdWx0cykge1xyXG4gICAgY29uc3QgcHJvcHMgPSBpc0FycmF5KHJhdylcclxuICAgICAgICA/IHJhdy5yZWR1Y2UoKG5vcm1hbGl6ZWQsIHApID0+ICgobm9ybWFsaXplZFtwXSA9IHt9KSwgbm9ybWFsaXplZCksIHt9KVxyXG4gICAgICAgIDogcmF3O1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gZGVmYXVsdHMpIHtcclxuICAgICAgICBjb25zdCBvcHQgPSBwcm9wc1trZXldO1xyXG4gICAgICAgIGlmIChvcHQpIHtcclxuICAgICAgICAgICAgaWYgKGlzQXJyYXkob3B0KSB8fCBpc0Z1bmN0aW9uKG9wdCkpIHtcclxuICAgICAgICAgICAgICAgIHByb3BzW2tleV0gPSB7IHR5cGU6IG9wdCwgZGVmYXVsdDogZGVmYXVsdHNba2V5XSB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgb3B0LmRlZmF1bHQgPSBkZWZhdWx0c1trZXldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKG9wdCA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICBwcm9wc1trZXldID0geyBkZWZhdWx0OiBkZWZhdWx0c1trZXldIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICB3YXJuKGBwcm9wcyBkZWZhdWx0IGtleSBcIiR7a2V5fVwiIGhhcyBubyBjb3JyZXNwb25kaW5nIGRlY2xhcmF0aW9uLmApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBwcm9wcztcclxufVxyXG4vKipcclxuICogVXNlZCB0byBjcmVhdGUgYSBwcm94eSBmb3IgdGhlIHJlc3QgZWxlbWVudCB3aGVuIGRlc3RydWN0dXJpbmcgcHJvcHMgd2l0aFxyXG4gKiBkZWZpbmVQcm9wcygpLlxyXG4gKiBAaW50ZXJuYWxcclxuICovXHJcbmZ1bmN0aW9uIGNyZWF0ZVByb3BzUmVzdFByb3h5KHByb3BzLCBleGNsdWRlZEtleXMpIHtcclxuICAgIGNvbnN0IHJldCA9IHt9O1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gcHJvcHMpIHtcclxuICAgICAgICBpZiAoIWV4Y2x1ZGVkS2V5cy5pbmNsdWRlcyhrZXkpKSB7XHJcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXQsIGtleSwge1xyXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGdldDogKCkgPT4gcHJvcHNba2V5XVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmV0O1xyXG59XHJcbi8qKlxyXG4gKiBgPHNjcmlwdCBzZXR1cD5gIGhlbHBlciBmb3IgcGVyc2lzdGluZyB0aGUgY3VycmVudCBpbnN0YW5jZSBjb250ZXh0IG92ZXJcclxuICogYXN5bmMvYXdhaXQgZmxvd3MuXHJcbiAqXHJcbiAqIGBAdnVlL2NvbXBpbGVyLXNmY2AgY29udmVydHMgdGhlIGZvbGxvd2luZzpcclxuICpcclxuICogYGBgdHNcclxuICogY29uc3QgeCA9IGF3YWl0IGZvbygpXHJcbiAqIGBgYFxyXG4gKlxyXG4gKiBpbnRvOlxyXG4gKlxyXG4gKiBgYGB0c1xyXG4gKiBsZXQgX190ZW1wLCBfX3Jlc3RvcmVcclxuICogY29uc3QgeCA9ICgoW19fdGVtcCwgX19yZXN0b3JlXSA9IHdpdGhBc3luY0NvbnRleHQoKCkgPT4gZm9vKCkpKSxfX3RlbXA9YXdhaXQgX190ZW1wLF9fcmVzdG9yZSgpLF9fdGVtcClcclxuICogYGBgXHJcbiAqIEBpbnRlcm5hbFxyXG4gKi9cclxuZnVuY3Rpb24gd2l0aEFzeW5jQ29udGV4dChnZXRBd2FpdGFibGUpIHtcclxuICAgIGNvbnN0IGN0eCA9IGdldEN1cnJlbnRJbnN0YW5jZSgpO1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhY3R4KSB7XHJcbiAgICAgICAgd2Fybihgd2l0aEFzeW5jQ29udGV4dCBjYWxsZWQgd2l0aG91dCBhY3RpdmUgY3VycmVudCBpbnN0YW5jZS4gYCArXHJcbiAgICAgICAgICAgIGBUaGlzIGlzIGxpa2VseSBhIGJ1Zy5gKTtcclxuICAgIH1cclxuICAgIGxldCBhd2FpdGFibGUgPSBnZXRBd2FpdGFibGUoKTtcclxuICAgIHVuc2V0Q3VycmVudEluc3RhbmNlKCk7XHJcbiAgICBpZiAoaXNQcm9taXNlKGF3YWl0YWJsZSkpIHtcclxuICAgICAgICBhd2FpdGFibGUgPSBhd2FpdGFibGUuY2F0Y2goZSA9PiB7XHJcbiAgICAgICAgICAgIHNldEN1cnJlbnRJbnN0YW5jZShjdHgpO1xyXG4gICAgICAgICAgICB0aHJvdyBlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFthd2FpdGFibGUsICgpID0+IHNldEN1cnJlbnRJbnN0YW5jZShjdHgpXTtcclxufVxuXG4vLyBBY3R1YWwgaW1wbGVtZW50YXRpb25cclxuZnVuY3Rpb24gaCh0eXBlLCBwcm9wc09yQ2hpbGRyZW4sIGNoaWxkcmVuKSB7XHJcbiAgICBjb25zdCBsID0gYXJndW1lbnRzLmxlbmd0aDtcclxuICAgIGlmIChsID09PSAyKSB7XHJcbiAgICAgICAgaWYgKGlzT2JqZWN0KHByb3BzT3JDaGlsZHJlbikgJiYgIWlzQXJyYXkocHJvcHNPckNoaWxkcmVuKSkge1xyXG4gICAgICAgICAgICAvLyBzaW5nbGUgdm5vZGUgd2l0aG91dCBwcm9wc1xyXG4gICAgICAgICAgICBpZiAoaXNWTm9kZShwcm9wc09yQ2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlVk5vZGUodHlwZSwgbnVsbCwgW3Byb3BzT3JDaGlsZHJlbl0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHByb3BzIHdpdGhvdXQgY2hpbGRyZW5cclxuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVZOb2RlKHR5cGUsIHByb3BzT3JDaGlsZHJlbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBvbWl0IHByb3BzXHJcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVWTm9kZSh0eXBlLCBudWxsLCBwcm9wc09yQ2hpbGRyZW4pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGlmIChsID4gMykge1xyXG4gICAgICAgICAgICBjaGlsZHJlbiA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGwgPT09IDMgJiYgaXNWTm9kZShjaGlsZHJlbikpIHtcclxuICAgICAgICAgICAgY2hpbGRyZW4gPSBbY2hpbGRyZW5dO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY3JlYXRlVk5vZGUodHlwZSwgcHJvcHNPckNoaWxkcmVuLCBjaGlsZHJlbik7XHJcbiAgICB9XHJcbn1cblxuY29uc3Qgc3NyQ29udGV4dEtleSA9IFN5bWJvbCgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgPyBgc3NyQ29udGV4dGAgOiBgYCk7XHJcbmNvbnN0IHVzZVNTUkNvbnRleHQgPSAoKSA9PiB7XHJcbiAgICB7XHJcbiAgICAgICAgY29uc3QgY3R4ID0gaW5qZWN0KHNzckNvbnRleHRLZXkpO1xyXG4gICAgICAgIGlmICghY3R4KSB7XHJcbiAgICAgICAgICAgIHdhcm4oYFNlcnZlciByZW5kZXJpbmcgY29udGV4dCBub3QgcHJvdmlkZWQuIE1ha2Ugc3VyZSB0byBvbmx5IGNhbGwgYCArXHJcbiAgICAgICAgICAgICAgICBgdXNlU1NSQ29udGV4dCgpIGNvbmRpdGlvbmFsbHkgaW4gdGhlIHNlcnZlciBidWlsZC5gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGN0eDtcclxuICAgIH1cclxufTtcblxuZnVuY3Rpb24gaXNTaGFsbG93KHZhbHVlKSB7XHJcbiAgICByZXR1cm4gISEodmFsdWUgJiYgdmFsdWVbXCJfX3ZfaXNTaGFsbG93XCIgLyogUmVhY3RpdmVGbGFncy5JU19TSEFMTE9XICovXSk7XHJcbn1cblxuZnVuY3Rpb24gaW5pdEN1c3RvbUZvcm1hdHRlcigpIHtcclxuICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLXJlc3RyaWN0ZWQtZ2xvYmFscyAqL1xyXG4gICAgaWYgKCEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgfHwgdHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB2dWVTdHlsZSA9IHsgc3R5bGU6ICdjb2xvcjojM2JhNzc2JyB9O1xyXG4gICAgY29uc3QgbnVtYmVyU3R5bGUgPSB7IHN0eWxlOiAnY29sb3I6IzBiMWJjOScgfTtcclxuICAgIGNvbnN0IHN0cmluZ1N0eWxlID0geyBzdHlsZTogJ2NvbG9yOiNiNjJlMjQnIH07XHJcbiAgICBjb25zdCBrZXl3b3JkU3R5bGUgPSB7IHN0eWxlOiAnY29sb3I6IzlkMjg4YycgfTtcclxuICAgIC8vIGN1c3RvbSBmb3JtYXR0ZXIgZm9yIENocm9tZVxyXG4gICAgLy8gaHR0cHM6Ly93d3cubWF0dHpldW5lcnQuY29tLzIwMTYvMDIvMTkvY3VzdG9tLWNocm9tZS1kZXZ0b29scy1vYmplY3QtZm9ybWF0dGVycy5odG1sXHJcbiAgICBjb25zdCBmb3JtYXR0ZXIgPSB7XHJcbiAgICAgICAgaGVhZGVyKG9iaikge1xyXG4gICAgICAgICAgICAvLyBUT0RPIGFsc28gZm9ybWF0IENvbXBvbmVudFB1YmxpY0luc3RhbmNlICYgY3R4LnNsb3RzL2F0dHJzIGluIHNldHVwXHJcbiAgICAgICAgICAgIGlmICghaXNPYmplY3Qob2JqKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKG9iai5fX2lzVnVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gWydkaXYnLCB2dWVTdHlsZSwgYFZ1ZUluc3RhbmNlYF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoaXNSZWYob2JqKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgICAgICAgICAnZGl2JyxcclxuICAgICAgICAgICAgICAgICAgICB7fSxcclxuICAgICAgICAgICAgICAgICAgICBbJ3NwYW4nLCB2dWVTdHlsZSwgZ2VuUmVmRmxhZyhvYmopXSxcclxuICAgICAgICAgICAgICAgICAgICAnPCcsXHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0VmFsdWUob2JqLnZhbHVlKSxcclxuICAgICAgICAgICAgICAgICAgICBgPmBcclxuICAgICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoaXNSZWFjdGl2ZShvYmopKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICAgICAgICAgICdkaXYnLFxyXG4gICAgICAgICAgICAgICAgICAgIHt9LFxyXG4gICAgICAgICAgICAgICAgICAgIFsnc3BhbicsIHZ1ZVN0eWxlLCBpc1NoYWxsb3cob2JqKSA/ICdTaGFsbG93UmVhY3RpdmUnIDogJ1JlYWN0aXZlJ10sXHJcbiAgICAgICAgICAgICAgICAgICAgJzwnLFxyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1hdFZhbHVlKG9iaiksXHJcbiAgICAgICAgICAgICAgICAgICAgYD4ke2lzUmVhZG9ubHkob2JqKSA/IGAgKHJlYWRvbmx5KWAgOiBgYH1gXHJcbiAgICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGlzUmVhZG9ubHkob2JqKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgICAgICAgICAnZGl2JyxcclxuICAgICAgICAgICAgICAgICAgICB7fSxcclxuICAgICAgICAgICAgICAgICAgICBbJ3NwYW4nLCB2dWVTdHlsZSwgaXNTaGFsbG93KG9iaikgPyAnU2hhbGxvd1JlYWRvbmx5JyA6ICdSZWFkb25seSddLFxyXG4gICAgICAgICAgICAgICAgICAgICc8JyxcclxuICAgICAgICAgICAgICAgICAgICBmb3JtYXRWYWx1ZShvYmopLFxyXG4gICAgICAgICAgICAgICAgICAgICc+J1xyXG4gICAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGhhc0JvZHkob2JqKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBvYmogJiYgb2JqLl9faXNWdWU7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBib2R5KG9iaikge1xyXG4gICAgICAgICAgICBpZiAob2JqICYmIG9iai5fX2lzVnVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICAgICAgICAgICdkaXYnLFxyXG4gICAgICAgICAgICAgICAgICAgIHt9LFxyXG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1hdEluc3RhbmNlKG9iai4kKVxyXG4gICAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBmdW5jdGlvbiBmb3JtYXRJbnN0YW5jZShpbnN0YW5jZSkge1xyXG4gICAgICAgIGNvbnN0IGJsb2NrcyA9IFtdO1xyXG4gICAgICAgIGlmIChpbnN0YW5jZS50eXBlLnByb3BzICYmIGluc3RhbmNlLnByb3BzKSB7XHJcbiAgICAgICAgICAgIGJsb2Nrcy5wdXNoKGNyZWF0ZUluc3RhbmNlQmxvY2soJ3Byb3BzJywgdG9SYXcoaW5zdGFuY2UucHJvcHMpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpbnN0YW5jZS5zZXR1cFN0YXRlICE9PSBFTVBUWV9PQkopIHtcclxuICAgICAgICAgICAgYmxvY2tzLnB1c2goY3JlYXRlSW5zdGFuY2VCbG9jaygnc2V0dXAnLCBpbnN0YW5jZS5zZXR1cFN0YXRlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpbnN0YW5jZS5kYXRhICE9PSBFTVBUWV9PQkopIHtcclxuICAgICAgICAgICAgYmxvY2tzLnB1c2goY3JlYXRlSW5zdGFuY2VCbG9jaygnZGF0YScsIHRvUmF3KGluc3RhbmNlLmRhdGEpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGNvbXB1dGVkID0gZXh0cmFjdEtleXMoaW5zdGFuY2UsICdjb21wdXRlZCcpO1xyXG4gICAgICAgIGlmIChjb21wdXRlZCkge1xyXG4gICAgICAgICAgICBibG9ja3MucHVzaChjcmVhdGVJbnN0YW5jZUJsb2NrKCdjb21wdXRlZCcsIGNvbXB1dGVkKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGluamVjdGVkID0gZXh0cmFjdEtleXMoaW5zdGFuY2UsICdpbmplY3QnKTtcclxuICAgICAgICBpZiAoaW5qZWN0ZWQpIHtcclxuICAgICAgICAgICAgYmxvY2tzLnB1c2goY3JlYXRlSW5zdGFuY2VCbG9jaygnaW5qZWN0ZWQnLCBpbmplY3RlZCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBibG9ja3MucHVzaChbXHJcbiAgICAgICAgICAgICdkaXYnLFxyXG4gICAgICAgICAgICB7fSxcclxuICAgICAgICAgICAgW1xyXG4gICAgICAgICAgICAgICAgJ3NwYW4nLFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlOiBrZXl3b3JkU3R5bGUuc3R5bGUgKyAnO29wYWNpdHk6MC42NidcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAnJCAoaW50ZXJuYWwpOiAnXHJcbiAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIFsnb2JqZWN0JywgeyBvYmplY3Q6IGluc3RhbmNlIH1dXHJcbiAgICAgICAgXSk7XHJcbiAgICAgICAgcmV0dXJuIGJsb2NrcztcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGNyZWF0ZUluc3RhbmNlQmxvY2sodHlwZSwgdGFyZ2V0KSB7XHJcbiAgICAgICAgdGFyZ2V0ID0gZXh0ZW5kKHt9LCB0YXJnZXQpO1xyXG4gICAgICAgIGlmICghT2JqZWN0LmtleXModGFyZ2V0KS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFsnc3BhbicsIHt9XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgJ2RpdicsXHJcbiAgICAgICAgICAgIHsgc3R5bGU6ICdsaW5lLWhlaWdodDoxLjI1ZW07bWFyZ2luLWJvdHRvbTowLjZlbScgfSxcclxuICAgICAgICAgICAgW1xyXG4gICAgICAgICAgICAgICAgJ2RpdicsXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU6ICdjb2xvcjojNDc2NTgyJ1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHR5cGVcclxuICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgW1xyXG4gICAgICAgICAgICAgICAgJ2RpdicsXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU6ICdwYWRkaW5nLWxlZnQ6MS4yNWVtJ1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIC4uLk9iamVjdC5rZXlzKHRhcmdldCkubWFwKGtleSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ2RpdicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbJ3NwYW4nLCBrZXl3b3JkU3R5bGUsIGtleSArICc6ICddLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRWYWx1ZSh0YXJnZXRba2V5XSwgZmFsc2UpXHJcbiAgICAgICAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICBdO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gZm9ybWF0VmFsdWUodiwgYXNSYXcgPSB0cnVlKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB2ID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgICAgICByZXR1cm4gWydzcGFuJywgbnVtYmVyU3R5bGUsIHZdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0eXBlb2YgdiA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFsnc3BhbicsIHN0cmluZ1N0eWxlLCBKU09OLnN0cmluZ2lmeSh2KV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiB2ID09PSAnYm9vbGVhbicpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFsnc3BhbicsIGtleXdvcmRTdHlsZSwgdl07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGlzT2JqZWN0KHYpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbJ29iamVjdCcsIHsgb2JqZWN0OiBhc1JhdyA/IHRvUmF3KHYpIDogdiB9XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbJ3NwYW4nLCBzdHJpbmdTdHlsZSwgU3RyaW5nKHYpXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBleHRyYWN0S2V5cyhpbnN0YW5jZSwgdHlwZSkge1xyXG4gICAgICAgIGNvbnN0IENvbXAgPSBpbnN0YW5jZS50eXBlO1xyXG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKENvbXApKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZXh0cmFjdGVkID0ge307XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5zdGFuY2UuY3R4KSB7XHJcbiAgICAgICAgICAgIGlmIChpc0tleU9mVHlwZShDb21wLCBrZXksIHR5cGUpKSB7XHJcbiAgICAgICAgICAgICAgICBleHRyYWN0ZWRba2V5XSA9IGluc3RhbmNlLmN0eFtrZXldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBleHRyYWN0ZWQ7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBpc0tleU9mVHlwZShDb21wLCBrZXksIHR5cGUpIHtcclxuICAgICAgICBjb25zdCBvcHRzID0gQ29tcFt0eXBlXTtcclxuICAgICAgICBpZiAoKGlzQXJyYXkob3B0cykgJiYgb3B0cy5pbmNsdWRlcyhrZXkpKSB8fFxyXG4gICAgICAgICAgICAoaXNPYmplY3Qob3B0cykgJiYga2V5IGluIG9wdHMpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoQ29tcC5leHRlbmRzICYmIGlzS2V5T2ZUeXBlKENvbXAuZXh0ZW5kcywga2V5LCB0eXBlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKENvbXAubWl4aW5zICYmIENvbXAubWl4aW5zLnNvbWUobSA9PiBpc0tleU9mVHlwZShtLCBrZXksIHR5cGUpKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBnZW5SZWZGbGFnKHYpIHtcclxuICAgICAgICBpZiAoaXNTaGFsbG93KHYpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBgU2hhbGxvd1JlZmA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh2LmVmZmVjdCkge1xyXG4gICAgICAgICAgICByZXR1cm4gYENvbXB1dGVkUmVmYDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGBSZWZgO1xyXG4gICAgfVxyXG4gICAgaWYgKHdpbmRvdy5kZXZ0b29sc0Zvcm1hdHRlcnMpIHtcclxuICAgICAgICB3aW5kb3cuZGV2dG9vbHNGb3JtYXR0ZXJzLnB1c2goZm9ybWF0dGVyKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHdpbmRvdy5kZXZ0b29sc0Zvcm1hdHRlcnMgPSBbZm9ybWF0dGVyXTtcclxuICAgIH1cclxufVxuXG5mdW5jdGlvbiB3aXRoTWVtbyhtZW1vLCByZW5kZXIsIGNhY2hlLCBpbmRleCkge1xyXG4gICAgY29uc3QgY2FjaGVkID0gY2FjaGVbaW5kZXhdO1xyXG4gICAgaWYgKGNhY2hlZCAmJiBpc01lbW9TYW1lKGNhY2hlZCwgbWVtbykpIHtcclxuICAgICAgICByZXR1cm4gY2FjaGVkO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcmV0ID0gcmVuZGVyKCk7XHJcbiAgICAvLyBzaGFsbG93IGNsb25lXHJcbiAgICByZXQubWVtbyA9IG1lbW8uc2xpY2UoKTtcclxuICAgIHJldHVybiAoY2FjaGVbaW5kZXhdID0gcmV0KTtcclxufVxyXG5mdW5jdGlvbiBpc01lbW9TYW1lKGNhY2hlZCwgbWVtbykge1xyXG4gICAgY29uc3QgcHJldiA9IGNhY2hlZC5tZW1vO1xyXG4gICAgaWYgKHByZXYubGVuZ3RoICE9IG1lbW8ubGVuZ3RoKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcmV2Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGhhc0NoYW5nZWQocHJldltpXSwgbWVtb1tpXSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIG1ha2Ugc3VyZSB0byBsZXQgcGFyZW50IGJsb2NrIHRyYWNrIGl0IHdoZW4gcmV0dXJuaW5nIGNhY2hlZFxyXG4gICAgaWYgKGlzQmxvY2tUcmVlRW5hYmxlZCA+IDAgJiYgY3VycmVudEJsb2NrKSB7XHJcbiAgICAgICAgY3VycmVudEJsb2NrLnB1c2goY2FjaGVkKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG59XG5cbi8vIENvcmUgQVBJIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5jb25zdCB2ZXJzaW9uID0gXCIzLjIuMzhcIjtcclxuY29uc3QgX3NzclV0aWxzID0ge1xyXG4gICAgY3JlYXRlQ29tcG9uZW50SW5zdGFuY2UsXHJcbiAgICBzZXR1cENvbXBvbmVudCxcclxuICAgIHJlbmRlckNvbXBvbmVudFJvb3QsXHJcbiAgICBzZXRDdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UsXHJcbiAgICBpc1ZOb2RlLFxyXG4gICAgbm9ybWFsaXplVk5vZGVcclxufTtcclxuLyoqXHJcbiAqIFNTUiB1dGlscyBmb3IgXFxAdnVlL3NlcnZlci1yZW5kZXJlci4gT25seSBleHBvc2VkIGluIHNzci1wb3NzaWJsZSBidWlsZHMuXHJcbiAqIEBpbnRlcm5hbFxyXG4gKi9cclxuY29uc3Qgc3NyVXRpbHMgPSAoX3NzclV0aWxzICk7XHJcbi8qKlxyXG4gKiBAaW50ZXJuYWwgb25seSBleHBvc2VkIGluIGNvbXBhdCBidWlsZHNcclxuICovXHJcbmNvbnN0IHJlc29sdmVGaWx0ZXIgPSBudWxsO1xyXG4vKipcclxuICogQGludGVybmFsIG9ubHkgZXhwb3NlZCBpbiBjb21wYXQgYnVpbGRzLlxyXG4gKi9cclxuY29uc3QgY29tcGF0VXRpbHMgPSAobnVsbCk7XG5cbmV4cG9ydCB7IEJhc2VUcmFuc2l0aW9uLCBDb21tZW50LCBGcmFnbWVudCwgS2VlcEFsaXZlLCBTdGF0aWMsIFN1c3BlbnNlLCBUZWxlcG9ydCwgVGV4dCwgY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcsIGNhbGxXaXRoRXJyb3JIYW5kbGluZywgY2xvbmVWTm9kZSwgY29tcGF0VXRpbHMsIGNvbXB1dGVkLCBjcmVhdGVCbG9jaywgY3JlYXRlQ29tbWVudFZOb2RlLCBjcmVhdGVFbGVtZW50QmxvY2ssIGNyZWF0ZUJhc2VWTm9kZSBhcyBjcmVhdGVFbGVtZW50Vk5vZGUsIGNyZWF0ZUh5ZHJhdGlvblJlbmRlcmVyLCBjcmVhdGVQcm9wc1Jlc3RQcm94eSwgY3JlYXRlUmVuZGVyZXIsIGNyZWF0ZVNsb3RzLCBjcmVhdGVTdGF0aWNWTm9kZSwgY3JlYXRlVGV4dFZOb2RlLCBjcmVhdGVWTm9kZSwgZGVmaW5lQXN5bmNDb21wb25lbnQsIGRlZmluZUNvbXBvbmVudCwgZGVmaW5lRW1pdHMsIGRlZmluZUV4cG9zZSwgZGVmaW5lUHJvcHMsIGRldnRvb2xzLCBnZXRDdXJyZW50SW5zdGFuY2UsIGdldFRyYW5zaXRpb25SYXdDaGlsZHJlbiwgZ3VhcmRSZWFjdGl2ZVByb3BzLCBoLCBoYW5kbGVFcnJvciwgaW5pdEN1c3RvbUZvcm1hdHRlciwgaW5qZWN0LCBpc01lbW9TYW1lLCBpc1J1bnRpbWVPbmx5LCBpc1ZOb2RlLCBtZXJnZURlZmF1bHRzLCBtZXJnZVByb3BzLCBuZXh0VGljaywgb25BY3RpdmF0ZWQsIG9uQmVmb3JlTW91bnQsIG9uQmVmb3JlVW5tb3VudCwgb25CZWZvcmVVcGRhdGUsIG9uRGVhY3RpdmF0ZWQsIG9uRXJyb3JDYXB0dXJlZCwgb25Nb3VudGVkLCBvblJlbmRlclRyYWNrZWQsIG9uUmVuZGVyVHJpZ2dlcmVkLCBvblNlcnZlclByZWZldGNoLCBvblVubW91bnRlZCwgb25VcGRhdGVkLCBvcGVuQmxvY2ssIHBvcFNjb3BlSWQsIHByb3ZpZGUsIHB1c2hTY29wZUlkLCBxdWV1ZVBvc3RGbHVzaENiLCByZWdpc3RlclJ1bnRpbWVDb21waWxlciwgcmVuZGVyTGlzdCwgcmVuZGVyU2xvdCwgcmVzb2x2ZUNvbXBvbmVudCwgcmVzb2x2ZURpcmVjdGl2ZSwgcmVzb2x2ZUR5bmFtaWNDb21wb25lbnQsIHJlc29sdmVGaWx0ZXIsIHJlc29sdmVUcmFuc2l0aW9uSG9va3MsIHNldEJsb2NrVHJhY2tpbmcsIHNldERldnRvb2xzSG9vaywgc2V0VHJhbnNpdGlvbkhvb2tzLCBzc3JDb250ZXh0S2V5LCBzc3JVdGlscywgdG9IYW5kbGVycywgdHJhbnNmb3JtVk5vZGVBcmdzLCB1c2VBdHRycywgdXNlU1NSQ29udGV4dCwgdXNlU2xvdHMsIHVzZVRyYW5zaXRpb25TdGF0ZSwgdmVyc2lvbiwgd2Fybiwgd2F0Y2gsIHdhdGNoRWZmZWN0LCB3YXRjaFBvc3RFZmZlY3QsIHdhdGNoU3luY0VmZmVjdCwgd2l0aEFzeW5jQ29udGV4dCwgd2l0aEN0eCwgd2l0aERlZmF1bHRzLCB3aXRoRGlyZWN0aXZlcywgd2l0aE1lbW8sIHdpdGhTY29wZUlkIH07XG4iLCJpbXBvcnQgeyBjYW1lbGl6ZSwgd2FybiwgY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcsIGRlZmluZUNvbXBvbmVudCwgbmV4dFRpY2ssIGNyZWF0ZVZOb2RlLCBnZXRDdXJyZW50SW5zdGFuY2UsIHdhdGNoUG9zdEVmZmVjdCwgb25Nb3VudGVkLCBvblVubW91bnRlZCwgRnJhZ21lbnQsIFN0YXRpYywgaCwgQmFzZVRyYW5zaXRpb24sIHVzZVRyYW5zaXRpb25TdGF0ZSwgb25VcGRhdGVkLCB0b1JhdywgZ2V0VHJhbnNpdGlvblJhd0NoaWxkcmVuLCBzZXRUcmFuc2l0aW9uSG9va3MsIHJlc29sdmVUcmFuc2l0aW9uSG9va3MsIGNyZWF0ZVJlbmRlcmVyLCBpc1J1bnRpbWVPbmx5LCBjcmVhdGVIeWRyYXRpb25SZW5kZXJlciB9IGZyb20gJ0B2dWUvcnVudGltZS1jb3JlJztcbmV4cG9ydCAqIGZyb20gJ0B2dWUvcnVudGltZS1jb3JlJztcbmltcG9ydCB7IGlzU3RyaW5nLCBpc0FycmF5LCBoeXBoZW5hdGUsIGNhcGl0YWxpemUsIGlzU3BlY2lhbEJvb2xlYW5BdHRyLCBpbmNsdWRlQm9vbGVhbkF0dHIsIGlzT24sIGlzTW9kZWxMaXN0ZW5lciwgaXNGdW5jdGlvbiwgdG9OdW1iZXIsIGNhbWVsaXplIGFzIGNhbWVsaXplJDEsIGV4dGVuZCwgRU1QVFlfT0JKLCBpc09iamVjdCwgaW52b2tlQXJyYXlGbnMsIGxvb3NlSW5kZXhPZiwgaXNTZXQsIGxvb3NlRXF1YWwsIGlzSFRNTFRhZywgaXNTVkdUYWcgfSBmcm9tICdAdnVlL3NoYXJlZCc7XG5cbmNvbnN0IHN2Z05TID0gJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJztcclxuY29uc3QgZG9jID0gKHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgPyBkb2N1bWVudCA6IG51bGwpO1xyXG5jb25zdCB0ZW1wbGF0ZUNvbnRhaW5lciA9IGRvYyAmJiAvKiNfX1BVUkVfXyovIGRvYy5jcmVhdGVFbGVtZW50KCd0ZW1wbGF0ZScpO1xyXG5jb25zdCBub2RlT3BzID0ge1xyXG4gICAgaW5zZXJ0OiAoY2hpbGQsIHBhcmVudCwgYW5jaG9yKSA9PiB7XHJcbiAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShjaGlsZCwgYW5jaG9yIHx8IG51bGwpO1xyXG4gICAgfSxcclxuICAgIHJlbW92ZTogY2hpbGQgPT4ge1xyXG4gICAgICAgIGNvbnN0IHBhcmVudCA9IGNoaWxkLnBhcmVudE5vZGU7XHJcbiAgICAgICAgaWYgKHBhcmVudCkge1xyXG4gICAgICAgICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQoY2hpbGQpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBjcmVhdGVFbGVtZW50OiAodGFnLCBpc1NWRywgaXMsIHByb3BzKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZWwgPSBpc1NWR1xyXG4gICAgICAgICAgICA/IGRvYy5jcmVhdGVFbGVtZW50TlMoc3ZnTlMsIHRhZylcclxuICAgICAgICAgICAgOiBkb2MuY3JlYXRlRWxlbWVudCh0YWcsIGlzID8geyBpcyB9IDogdW5kZWZpbmVkKTtcclxuICAgICAgICBpZiAodGFnID09PSAnc2VsZWN0JyAmJiBwcm9wcyAmJiBwcm9wcy5tdWx0aXBsZSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnbXVsdGlwbGUnLCBwcm9wcy5tdWx0aXBsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBlbDtcclxuICAgIH0sXHJcbiAgICBjcmVhdGVUZXh0OiB0ZXh0ID0+IGRvYy5jcmVhdGVUZXh0Tm9kZSh0ZXh0KSxcclxuICAgIGNyZWF0ZUNvbW1lbnQ6IHRleHQgPT4gZG9jLmNyZWF0ZUNvbW1lbnQodGV4dCksXHJcbiAgICBzZXRUZXh0OiAobm9kZSwgdGV4dCkgPT4ge1xyXG4gICAgICAgIG5vZGUubm9kZVZhbHVlID0gdGV4dDtcclxuICAgIH0sXHJcbiAgICBzZXRFbGVtZW50VGV4dDogKGVsLCB0ZXh0KSA9PiB7XHJcbiAgICAgICAgZWwudGV4dENvbnRlbnQgPSB0ZXh0O1xyXG4gICAgfSxcclxuICAgIHBhcmVudE5vZGU6IG5vZGUgPT4gbm9kZS5wYXJlbnROb2RlLFxyXG4gICAgbmV4dFNpYmxpbmc6IG5vZGUgPT4gbm9kZS5uZXh0U2libGluZyxcclxuICAgIHF1ZXJ5U2VsZWN0b3I6IHNlbGVjdG9yID0+IGRvYy5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKSxcclxuICAgIHNldFNjb3BlSWQoZWwsIGlkKSB7XHJcbiAgICAgICAgZWwuc2V0QXR0cmlidXRlKGlkLCAnJyk7XHJcbiAgICB9LFxyXG4gICAgY2xvbmVOb2RlKGVsKSB7XHJcbiAgICAgICAgY29uc3QgY2xvbmVkID0gZWwuY2xvbmVOb2RlKHRydWUpO1xyXG4gICAgICAgIC8vICMzMDcyXHJcbiAgICAgICAgLy8gLSBpbiBgcGF0Y2hET01Qcm9wYCwgd2Ugc3RvcmUgdGhlIGFjdHVhbCB2YWx1ZSBpbiB0aGUgYGVsLl92YWx1ZWAgcHJvcGVydHkuXHJcbiAgICAgICAgLy8gLSBub3JtYWxseSwgZWxlbWVudHMgdXNpbmcgYDp2YWx1ZWAgYmluZGluZ3Mgd2lsbCBub3QgYmUgaG9pc3RlZCwgYnV0IGlmXHJcbiAgICAgICAgLy8gICB0aGUgYm91bmQgdmFsdWUgaXMgYSBjb25zdGFudCwgZS5nLiBgOnZhbHVlPVwidHJ1ZVwiYCAtIHRoZXkgZG8gZ2V0XHJcbiAgICAgICAgLy8gICBob2lzdGVkLlxyXG4gICAgICAgIC8vIC0gaW4gcHJvZHVjdGlvbiwgaG9pc3RlZCBub2RlcyBhcmUgY2xvbmVkIHdoZW4gc3Vic2VxdWVudCBpbnNlcnRzLCBidXRcclxuICAgICAgICAvLyAgIGNsb25lTm9kZSgpIGRvZXMgbm90IGNvcHkgdGhlIGN1c3RvbSBwcm9wZXJ0eSB3ZSBhdHRhY2hlZC5cclxuICAgICAgICAvLyAtIFRoaXMgbWF5IG5lZWQgdG8gYWNjb3VudCBmb3Igb3RoZXIgY3VzdG9tIERPTSBwcm9wZXJ0aWVzIHdlIGF0dGFjaCB0b1xyXG4gICAgICAgIC8vICAgZWxlbWVudHMgaW4gYWRkaXRpb24gdG8gYF92YWx1ZWAgaW4gdGhlIGZ1dHVyZS5cclxuICAgICAgICBpZiAoYF92YWx1ZWAgaW4gZWwpIHtcclxuICAgICAgICAgICAgY2xvbmVkLl92YWx1ZSA9IGVsLl92YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGNsb25lZDtcclxuICAgIH0sXHJcbiAgICAvLyBfX1VOU0FGRV9fXHJcbiAgICAvLyBSZWFzb246IGlubmVySFRNTC5cclxuICAgIC8vIFN0YXRpYyBjb250ZW50IGhlcmUgY2FuIG9ubHkgY29tZSBmcm9tIGNvbXBpbGVkIHRlbXBsYXRlcy5cclxuICAgIC8vIEFzIGxvbmcgYXMgdGhlIHVzZXIgb25seSB1c2VzIHRydXN0ZWQgdGVtcGxhdGVzLCB0aGlzIGlzIHNhZmUuXHJcbiAgICBpbnNlcnRTdGF0aWNDb250ZW50KGNvbnRlbnQsIHBhcmVudCwgYW5jaG9yLCBpc1NWRywgc3RhcnQsIGVuZCkge1xyXG4gICAgICAgIC8vIDxwYXJlbnQ+IGJlZm9yZSB8IGZpcnN0IC4uLiBsYXN0IHwgYW5jaG9yIDwvcGFyZW50PlxyXG4gICAgICAgIGNvbnN0IGJlZm9yZSA9IGFuY2hvciA/IGFuY2hvci5wcmV2aW91c1NpYmxpbmcgOiBwYXJlbnQubGFzdENoaWxkO1xyXG4gICAgICAgIC8vICM1MzA4IGNhbiBvbmx5IHRha2UgY2FjaGVkIHBhdGggaWY6XHJcbiAgICAgICAgLy8gLSBoYXMgYSBzaW5nbGUgcm9vdCBub2RlXHJcbiAgICAgICAgLy8gLSBuZXh0U2libGluZyBpbmZvIGlzIHN0aWxsIGF2YWlsYWJsZVxyXG4gICAgICAgIGlmIChzdGFydCAmJiAoc3RhcnQgPT09IGVuZCB8fCBzdGFydC5uZXh0U2libGluZykpIHtcclxuICAgICAgICAgICAgLy8gY2FjaGVkXHJcbiAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKHN0YXJ0LmNsb25lTm9kZSh0cnVlKSwgYW5jaG9yKTtcclxuICAgICAgICAgICAgICAgIGlmIChzdGFydCA9PT0gZW5kIHx8ICEoc3RhcnQgPSBzdGFydC5uZXh0U2libGluZykpXHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIGZyZXNoIGluc2VydFxyXG4gICAgICAgICAgICB0ZW1wbGF0ZUNvbnRhaW5lci5pbm5lckhUTUwgPSBpc1NWRyA/IGA8c3ZnPiR7Y29udGVudH08L3N2Zz5gIDogY29udGVudDtcclxuICAgICAgICAgICAgY29uc3QgdGVtcGxhdGUgPSB0ZW1wbGF0ZUNvbnRhaW5lci5jb250ZW50O1xyXG4gICAgICAgICAgICBpZiAoaXNTVkcpIHtcclxuICAgICAgICAgICAgICAgIC8vIHJlbW92ZSBvdXRlciBzdmcgd3JhcHBlclxyXG4gICAgICAgICAgICAgICAgY29uc3Qgd3JhcHBlciA9IHRlbXBsYXRlLmZpcnN0Q2hpbGQ7XHJcbiAgICAgICAgICAgICAgICB3aGlsZSAod3JhcHBlci5maXJzdENoaWxkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGUuYXBwZW5kQ2hpbGQod3JhcHBlci5maXJzdENoaWxkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRlbXBsYXRlLnJlbW92ZUNoaWxkKHdyYXBwZXIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUodGVtcGxhdGUsIGFuY2hvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgIC8vIGZpcnN0XHJcbiAgICAgICAgICAgIGJlZm9yZSA/IGJlZm9yZS5uZXh0U2libGluZyA6IHBhcmVudC5maXJzdENoaWxkLFxyXG4gICAgICAgICAgICAvLyBsYXN0XHJcbiAgICAgICAgICAgIGFuY2hvciA/IGFuY2hvci5wcmV2aW91c1NpYmxpbmcgOiBwYXJlbnQubGFzdENoaWxkXHJcbiAgICAgICAgXTtcclxuICAgIH1cclxufTtcblxuLy8gY29tcGlsZXIgc2hvdWxkIG5vcm1hbGl6ZSBjbGFzcyArIDpjbGFzcyBiaW5kaW5ncyBvbiB0aGUgc2FtZSBlbGVtZW50XHJcbi8vIGludG8gYSBzaW5nbGUgYmluZGluZyBbJ3N0YXRpY0NsYXNzJywgZHluYW1pY11cclxuZnVuY3Rpb24gcGF0Y2hDbGFzcyhlbCwgdmFsdWUsIGlzU1ZHKSB7XHJcbiAgICAvLyBkaXJlY3RseSBzZXR0aW5nIGNsYXNzTmFtZSBzaG91bGQgYmUgZmFzdGVyIHRoYW4gc2V0QXR0cmlidXRlIGluIHRoZW9yeVxyXG4gICAgLy8gaWYgdGhpcyBpcyBhbiBlbGVtZW50IGR1cmluZyBhIHRyYW5zaXRpb24sIHRha2UgdGhlIHRlbXBvcmFyeSB0cmFuc2l0aW9uXHJcbiAgICAvLyBjbGFzc2VzIGludG8gYWNjb3VudC5cclxuICAgIGNvbnN0IHRyYW5zaXRpb25DbGFzc2VzID0gZWwuX3Z0YztcclxuICAgIGlmICh0cmFuc2l0aW9uQ2xhc3Nlcykge1xyXG4gICAgICAgIHZhbHVlID0gKHZhbHVlID8gW3ZhbHVlLCAuLi50cmFuc2l0aW9uQ2xhc3Nlc10gOiBbLi4udHJhbnNpdGlvbkNsYXNzZXNdKS5qb2luKCcgJyk7XHJcbiAgICB9XHJcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZSgnY2xhc3MnKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzU1ZHKSB7XHJcbiAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdjbGFzcycsIHZhbHVlKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGVsLmNsYXNzTmFtZSA9IHZhbHVlO1xyXG4gICAgfVxyXG59XG5cbmZ1bmN0aW9uIHBhdGNoU3R5bGUoZWwsIHByZXYsIG5leHQpIHtcclxuICAgIGNvbnN0IHN0eWxlID0gZWwuc3R5bGU7XHJcbiAgICBjb25zdCBpc0Nzc1N0cmluZyA9IGlzU3RyaW5nKG5leHQpO1xyXG4gICAgaWYgKG5leHQgJiYgIWlzQ3NzU3RyaW5nKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbmV4dCkge1xyXG4gICAgICAgICAgICBzZXRTdHlsZShzdHlsZSwga2V5LCBuZXh0W2tleV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocHJldiAmJiAhaXNTdHJpbmcocHJldikpIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcHJldikge1xyXG4gICAgICAgICAgICAgICAgaWYgKG5leHRba2V5XSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0U3R5bGUoc3R5bGUsIGtleSwgJycpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3QgY3VycmVudERpc3BsYXkgPSBzdHlsZS5kaXNwbGF5O1xyXG4gICAgICAgIGlmIChpc0Nzc1N0cmluZykge1xyXG4gICAgICAgICAgICBpZiAocHJldiAhPT0gbmV4dCkge1xyXG4gICAgICAgICAgICAgICAgc3R5bGUuY3NzVGV4dCA9IG5leHQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAocHJldikge1xyXG4gICAgICAgICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoJ3N0eWxlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGluZGljYXRlcyB0aGF0IHRoZSBgZGlzcGxheWAgb2YgdGhlIGVsZW1lbnQgaXMgY29udHJvbGxlZCBieSBgdi1zaG93YCxcclxuICAgICAgICAvLyBzbyB3ZSBhbHdheXMga2VlcCB0aGUgY3VycmVudCBgZGlzcGxheWAgdmFsdWUgcmVnYXJkbGVzcyBvZiB0aGUgYHN0eWxlYFxyXG4gICAgICAgIC8vIHZhbHVlLCB0aHVzIGhhbmRpbmcgb3ZlciBjb250cm9sIHRvIGB2LXNob3dgLlxyXG4gICAgICAgIGlmICgnX3ZvZCcgaW4gZWwpIHtcclxuICAgICAgICAgICAgc3R5bGUuZGlzcGxheSA9IGN1cnJlbnREaXNwbGF5O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5jb25zdCBpbXBvcnRhbnRSRSA9IC9cXHMqIWltcG9ydGFudCQvO1xyXG5mdW5jdGlvbiBzZXRTdHlsZShzdHlsZSwgbmFtZSwgdmFsKSB7XHJcbiAgICBpZiAoaXNBcnJheSh2YWwpKSB7XHJcbiAgICAgICAgdmFsLmZvckVhY2godiA9PiBzZXRTdHlsZShzdHlsZSwgbmFtZSwgdikpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKHZhbCA9PSBudWxsKVxyXG4gICAgICAgICAgICB2YWwgPSAnJztcclxuICAgICAgICBpZiAobmFtZS5zdGFydHNXaXRoKCctLScpKSB7XHJcbiAgICAgICAgICAgIC8vIGN1c3RvbSBwcm9wZXJ0eSBkZWZpbml0aW9uXHJcbiAgICAgICAgICAgIHN0eWxlLnNldFByb3BlcnR5KG5hbWUsIHZhbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBwcmVmaXhlZCA9IGF1dG9QcmVmaXgoc3R5bGUsIG5hbWUpO1xyXG4gICAgICAgICAgICBpZiAoaW1wb3J0YW50UkUudGVzdCh2YWwpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyAhaW1wb3J0YW50XHJcbiAgICAgICAgICAgICAgICBzdHlsZS5zZXRQcm9wZXJ0eShoeXBoZW5hdGUocHJlZml4ZWQpLCB2YWwucmVwbGFjZShpbXBvcnRhbnRSRSwgJycpLCAnaW1wb3J0YW50Jyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBzdHlsZVtwcmVmaXhlZF0gPSB2YWw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuY29uc3QgcHJlZml4ZXMgPSBbJ1dlYmtpdCcsICdNb3onLCAnbXMnXTtcclxuY29uc3QgcHJlZml4Q2FjaGUgPSB7fTtcclxuZnVuY3Rpb24gYXV0b1ByZWZpeChzdHlsZSwgcmF3TmFtZSkge1xyXG4gICAgY29uc3QgY2FjaGVkID0gcHJlZml4Q2FjaGVbcmF3TmFtZV07XHJcbiAgICBpZiAoY2FjaGVkKSB7XHJcbiAgICAgICAgcmV0dXJuIGNhY2hlZDtcclxuICAgIH1cclxuICAgIGxldCBuYW1lID0gY2FtZWxpemUocmF3TmFtZSk7XHJcbiAgICBpZiAobmFtZSAhPT0gJ2ZpbHRlcicgJiYgbmFtZSBpbiBzdHlsZSkge1xyXG4gICAgICAgIHJldHVybiAocHJlZml4Q2FjaGVbcmF3TmFtZV0gPSBuYW1lKTtcclxuICAgIH1cclxuICAgIG5hbWUgPSBjYXBpdGFsaXplKG5hbWUpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcmVmaXhlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IHByZWZpeGVkID0gcHJlZml4ZXNbaV0gKyBuYW1lO1xyXG4gICAgICAgIGlmIChwcmVmaXhlZCBpbiBzdHlsZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gKHByZWZpeENhY2hlW3Jhd05hbWVdID0gcHJlZml4ZWQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByYXdOYW1lO1xyXG59XG5cbmNvbnN0IHhsaW5rTlMgPSAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayc7XHJcbmZ1bmN0aW9uIHBhdGNoQXR0cihlbCwga2V5LCB2YWx1ZSwgaXNTVkcsIGluc3RhbmNlKSB7XHJcbiAgICBpZiAoaXNTVkcgJiYga2V5LnN0YXJ0c1dpdGgoJ3hsaW5rOicpKSB7XHJcbiAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcclxuICAgICAgICAgICAgZWwucmVtb3ZlQXR0cmlidXRlTlMoeGxpbmtOUywga2V5LnNsaWNlKDYsIGtleS5sZW5ndGgpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZU5TKHhsaW5rTlMsIGtleSwgdmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIG5vdGUgd2UgYXJlIG9ubHkgY2hlY2tpbmcgYm9vbGVhbiBhdHRyaWJ1dGVzIHRoYXQgZG9uJ3QgaGF2ZSBhXHJcbiAgICAgICAgLy8gY29ycmVzcG9uZGluZyBkb20gcHJvcCBvZiB0aGUgc2FtZSBuYW1lIGhlcmUuXHJcbiAgICAgICAgY29uc3QgaXNCb29sZWFuID0gaXNTcGVjaWFsQm9vbGVhbkF0dHIoa2V5KTtcclxuICAgICAgICBpZiAodmFsdWUgPT0gbnVsbCB8fCAoaXNCb29sZWFuICYmICFpbmNsdWRlQm9vbGVhbkF0dHIodmFsdWUpKSkge1xyXG4gICAgICAgICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoa2V5KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShrZXksIGlzQm9vbGVhbiA/ICcnIDogdmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxuXG4vLyBfX1VOU0FGRV9fXHJcbi8vIGZ1bmN0aW9ucy4gVGhlIHVzZXIgaXMgcmVzcG9uc2libGUgZm9yIHVzaW5nIHRoZW0gd2l0aCBvbmx5IHRydXN0ZWQgY29udGVudC5cclxuZnVuY3Rpb24gcGF0Y2hET01Qcm9wKGVsLCBrZXksIHZhbHVlLCBcclxuLy8gdGhlIGZvbGxvd2luZyBhcmdzIGFyZSBwYXNzZWQgb25seSBkdWUgdG8gcG90ZW50aWFsIGlubmVySFRNTC90ZXh0Q29udGVudFxyXG4vLyBvdmVycmlkaW5nIGV4aXN0aW5nIFZOb2RlcywgaW4gd2hpY2ggY2FzZSB0aGUgb2xkIHRyZWUgbXVzdCBiZSBwcm9wZXJseVxyXG4vLyB1bm1vdW50ZWQuXHJcbnByZXZDaGlsZHJlbiwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgdW5tb3VudENoaWxkcmVuKSB7XHJcbiAgICBpZiAoa2V5ID09PSAnaW5uZXJIVE1MJyB8fCBrZXkgPT09ICd0ZXh0Q29udGVudCcpIHtcclxuICAgICAgICBpZiAocHJldkNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgIHVubW91bnRDaGlsZHJlbihwcmV2Q2hpbGRyZW4sIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbFtrZXldID0gdmFsdWUgPT0gbnVsbCA/ICcnIDogdmFsdWU7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKGtleSA9PT0gJ3ZhbHVlJyAmJlxyXG4gICAgICAgIGVsLnRhZ05hbWUgIT09ICdQUk9HUkVTUycgJiZcclxuICAgICAgICAvLyBjdXN0b20gZWxlbWVudHMgbWF5IHVzZSBfdmFsdWUgaW50ZXJuYWxseVxyXG4gICAgICAgICFlbC50YWdOYW1lLmluY2x1ZGVzKCctJykpIHtcclxuICAgICAgICAvLyBzdG9yZSB2YWx1ZSBhcyBfdmFsdWUgYXMgd2VsbCBzaW5jZVxyXG4gICAgICAgIC8vIG5vbi1zdHJpbmcgdmFsdWVzIHdpbGwgYmUgc3RyaW5naWZpZWQuXHJcbiAgICAgICAgZWwuX3ZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB2YWx1ZSA9PSBudWxsID8gJycgOiB2YWx1ZTtcclxuICAgICAgICBpZiAoZWwudmFsdWUgIT09IG5ld1ZhbHVlIHx8XHJcbiAgICAgICAgICAgIC8vICM0OTU2OiBhbHdheXMgc2V0IGZvciBPUFRJT04gZWxlbWVudHMgYmVjYXVzZSBpdHMgdmFsdWUgZmFsbHMgYmFjayB0b1xyXG4gICAgICAgICAgICAvLyB0ZXh0Q29udGVudCBpZiBubyB2YWx1ZSBhdHRyaWJ1dGUgaXMgcHJlc2VudC4gQW5kIHNldHRpbmcgLnZhbHVlIGZvclxyXG4gICAgICAgICAgICAvLyBPUFRJT04gaGFzIG5vIHNpZGUgZWZmZWN0XHJcbiAgICAgICAgICAgIGVsLnRhZ05hbWUgPT09ICdPUFRJT04nKSB7XHJcbiAgICAgICAgICAgIGVsLnZhbHVlID0gbmV3VmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZShrZXkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgbmVlZFJlbW92ZSA9IGZhbHNlO1xyXG4gICAgaWYgKHZhbHVlID09PSAnJyB8fCB2YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgY29uc3QgdHlwZSA9IHR5cGVvZiBlbFtrZXldO1xyXG4gICAgICAgIGlmICh0eXBlID09PSAnYm9vbGVhbicpIHtcclxuICAgICAgICAgICAgLy8gZS5nLiA8c2VsZWN0IG11bHRpcGxlPiBjb21waWxlcyB0byB7IG11bHRpcGxlOiAnJyB9XHJcbiAgICAgICAgICAgIHZhbHVlID0gaW5jbHVkZUJvb2xlYW5BdHRyKHZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodmFsdWUgPT0gbnVsbCAmJiB0eXBlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICAvLyBlLmcuIDxkaXYgOmlkPVwibnVsbFwiPlxyXG4gICAgICAgICAgICB2YWx1ZSA9ICcnO1xyXG4gICAgICAgICAgICBuZWVkUmVtb3ZlID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodHlwZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICAgICAgLy8gZS5nLiA8aW1nIDp3aWR0aD1cIm51bGxcIj5cclxuICAgICAgICAgICAgLy8gdGhlIHZhbHVlIG9mIHNvbWUgSURMIGF0dHIgbXVzdCBiZSBncmVhdGVyIHRoYW4gMCwgZS5nLiBpbnB1dC5zaXplID0gMCAtPiBlcnJvclxyXG4gICAgICAgICAgICB2YWx1ZSA9IDA7XHJcbiAgICAgICAgICAgIG5lZWRSZW1vdmUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIHNvbWUgcHJvcGVydGllcyBwZXJmb3JtIHZhbHVlIHZhbGlkYXRpb24gYW5kIHRocm93LFxyXG4gICAgLy8gc29tZSBwcm9wZXJ0aWVzIGhhcyBnZXR0ZXIsIG5vIHNldHRlciwgd2lsbCBlcnJvciBpbiAndXNlIHN0cmljdCdcclxuICAgIC8vIGVnLiA8c2VsZWN0IDp0eXBlPVwibnVsbFwiPjwvc2VsZWN0PiA8c2VsZWN0IDp3aWxsVmFsaWRhdGU9XCJudWxsXCI+PC9zZWxlY3Q+XHJcbiAgICB0cnkge1xyXG4gICAgICAgIGVsW2tleV0gPSB2YWx1ZTtcclxuICAgIH1cclxuICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICB3YXJuKGBGYWlsZWQgc2V0dGluZyBwcm9wIFwiJHtrZXl9XCIgb24gPCR7ZWwudGFnTmFtZS50b0xvd2VyQ2FzZSgpfT46IGAgK1xyXG4gICAgICAgICAgICAgICAgYHZhbHVlICR7dmFsdWV9IGlzIGludmFsaWQuYCwgZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgbmVlZFJlbW92ZSAmJiBlbC5yZW1vdmVBdHRyaWJ1dGUoa2V5KTtcclxufVxuXG4vLyBBc3luYyBlZGdlIGNhc2UgZml4IHJlcXVpcmVzIHN0b3JpbmcgYW4gZXZlbnQgbGlzdGVuZXIncyBhdHRhY2ggdGltZXN0YW1wLlxyXG5jb25zdCBbX2dldE5vdywgc2tpcFRpbWVzdGFtcENoZWNrXSA9IC8qI19fUFVSRV9fKi8gKCgpID0+IHtcclxuICAgIGxldCBfZ2V0Tm93ID0gRGF0ZS5ub3c7XHJcbiAgICBsZXQgc2tpcFRpbWVzdGFtcENoZWNrID0gZmFsc2U7XHJcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAvLyBEZXRlcm1pbmUgd2hhdCBldmVudCB0aW1lc3RhbXAgdGhlIGJyb3dzZXIgaXMgdXNpbmcuIEFubm95aW5nbHksIHRoZVxyXG4gICAgICAgIC8vIHRpbWVzdGFtcCBjYW4gZWl0aGVyIGJlIGhpLXJlcyAocmVsYXRpdmUgdG8gcGFnZSBsb2FkKSBvciBsb3ctcmVzXHJcbiAgICAgICAgLy8gKHJlbGF0aXZlIHRvIFVOSVggZXBvY2gpLCBzbyBpbiBvcmRlciB0byBjb21wYXJlIHRpbWUgd2UgaGF2ZSB0byB1c2UgdGhlXHJcbiAgICAgICAgLy8gc2FtZSB0aW1lc3RhbXAgdHlwZSB3aGVuIHNhdmluZyB0aGUgZmx1c2ggdGltZXN0YW1wLlxyXG4gICAgICAgIGlmIChEYXRlLm5vdygpID4gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50JykudGltZVN0YW1wKSB7XHJcbiAgICAgICAgICAgIC8vIGlmIHRoZSBsb3ctcmVzIHRpbWVzdGFtcCB3aGljaCBpcyBiaWdnZXIgdGhhbiB0aGUgZXZlbnQgdGltZXN0YW1wXHJcbiAgICAgICAgICAgIC8vICh3aGljaCBpcyBldmFsdWF0ZWQgQUZURVIpIGl0IG1lYW5zIHRoZSBldmVudCBpcyB1c2luZyBhIGhpLXJlcyB0aW1lc3RhbXAsXHJcbiAgICAgICAgICAgIC8vIGFuZCB3ZSBuZWVkIHRvIHVzZSB0aGUgaGktcmVzIHZlcnNpb24gZm9yIGV2ZW50IGxpc3RlbmVycyBhcyB3ZWxsLlxyXG4gICAgICAgICAgICBfZ2V0Tm93ID0gcGVyZm9ybWFuY2Uubm93LmJpbmQocGVyZm9ybWFuY2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyAjMzQ4NTogRmlyZWZveCA8PSA1MyBoYXMgaW5jb3JyZWN0IEV2ZW50LnRpbWVTdGFtcCBpbXBsZW1lbnRhdGlvblxyXG4gICAgICAgIC8vIGFuZCBkb2VzIG5vdCBmaXJlIG1pY3JvdGFza3MgaW4gYmV0d2VlbiBldmVudCBwcm9wYWdhdGlvbiwgc28gc2FmZSB0byBleGNsdWRlLlxyXG4gICAgICAgIGNvbnN0IGZmTWF0Y2ggPSBuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9maXJlZm94XFwvKFxcZCspL2kpO1xyXG4gICAgICAgIHNraXBUaW1lc3RhbXBDaGVjayA9ICEhKGZmTWF0Y2ggJiYgTnVtYmVyKGZmTWF0Y2hbMV0pIDw9IDUzKTtcclxuICAgIH1cclxuICAgIHJldHVybiBbX2dldE5vdywgc2tpcFRpbWVzdGFtcENoZWNrXTtcclxufSkoKTtcclxuLy8gVG8gYXZvaWQgdGhlIG92ZXJoZWFkIG9mIHJlcGVhdGVkbHkgY2FsbGluZyBwZXJmb3JtYW5jZS5ub3coKSwgd2UgY2FjaGVcclxuLy8gYW5kIHVzZSB0aGUgc2FtZSB0aW1lc3RhbXAgZm9yIGFsbCBldmVudCBsaXN0ZW5lcnMgYXR0YWNoZWQgaW4gdGhlIHNhbWUgdGljay5cclxubGV0IGNhY2hlZE5vdyA9IDA7XHJcbmNvbnN0IHAgPSAvKiNfX1BVUkVfXyovIFByb21pc2UucmVzb2x2ZSgpO1xyXG5jb25zdCByZXNldCA9ICgpID0+IHtcclxuICAgIGNhY2hlZE5vdyA9IDA7XHJcbn07XHJcbmNvbnN0IGdldE5vdyA9ICgpID0+IGNhY2hlZE5vdyB8fCAocC50aGVuKHJlc2V0KSwgKGNhY2hlZE5vdyA9IF9nZXROb3coKSkpO1xyXG5mdW5jdGlvbiBhZGRFdmVudExpc3RlbmVyKGVsLCBldmVudCwgaGFuZGxlciwgb3B0aW9ucykge1xyXG4gICAgZWwuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgaGFuZGxlciwgb3B0aW9ucyk7XHJcbn1cclxuZnVuY3Rpb24gcmVtb3ZlRXZlbnRMaXN0ZW5lcihlbCwgZXZlbnQsIGhhbmRsZXIsIG9wdGlvbnMpIHtcclxuICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQsIGhhbmRsZXIsIG9wdGlvbnMpO1xyXG59XHJcbmZ1bmN0aW9uIHBhdGNoRXZlbnQoZWwsIHJhd05hbWUsIHByZXZWYWx1ZSwgbmV4dFZhbHVlLCBpbnN0YW5jZSA9IG51bGwpIHtcclxuICAgIC8vIHZlaSA9IHZ1ZSBldmVudCBpbnZva2Vyc1xyXG4gICAgY29uc3QgaW52b2tlcnMgPSBlbC5fdmVpIHx8IChlbC5fdmVpID0ge30pO1xyXG4gICAgY29uc3QgZXhpc3RpbmdJbnZva2VyID0gaW52b2tlcnNbcmF3TmFtZV07XHJcbiAgICBpZiAobmV4dFZhbHVlICYmIGV4aXN0aW5nSW52b2tlcikge1xyXG4gICAgICAgIC8vIHBhdGNoXHJcbiAgICAgICAgZXhpc3RpbmdJbnZva2VyLnZhbHVlID0gbmV4dFZhbHVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3QgW25hbWUsIG9wdGlvbnNdID0gcGFyc2VOYW1lKHJhd05hbWUpO1xyXG4gICAgICAgIGlmIChuZXh0VmFsdWUpIHtcclxuICAgICAgICAgICAgLy8gYWRkXHJcbiAgICAgICAgICAgIGNvbnN0IGludm9rZXIgPSAoaW52b2tlcnNbcmF3TmFtZV0gPSBjcmVhdGVJbnZva2VyKG5leHRWYWx1ZSwgaW5zdGFuY2UpKTtcclxuICAgICAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcihlbCwgbmFtZSwgaW52b2tlciwgb3B0aW9ucyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGV4aXN0aW5nSW52b2tlcikge1xyXG4gICAgICAgICAgICAvLyByZW1vdmVcclxuICAgICAgICAgICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcihlbCwgbmFtZSwgZXhpc3RpbmdJbnZva2VyLCBvcHRpb25zKTtcclxuICAgICAgICAgICAgaW52b2tlcnNbcmF3TmFtZV0gPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmNvbnN0IG9wdGlvbnNNb2RpZmllclJFID0gLyg/Ok9uY2V8UGFzc2l2ZXxDYXB0dXJlKSQvO1xyXG5mdW5jdGlvbiBwYXJzZU5hbWUobmFtZSkge1xyXG4gICAgbGV0IG9wdGlvbnM7XHJcbiAgICBpZiAob3B0aW9uc01vZGlmaWVyUkUudGVzdChuYW1lKSkge1xyXG4gICAgICAgIG9wdGlvbnMgPSB7fTtcclxuICAgICAgICBsZXQgbTtcclxuICAgICAgICB3aGlsZSAoKG0gPSBuYW1lLm1hdGNoKG9wdGlvbnNNb2RpZmllclJFKSkpIHtcclxuICAgICAgICAgICAgbmFtZSA9IG5hbWUuc2xpY2UoMCwgbmFtZS5sZW5ndGggLSBtWzBdLmxlbmd0aCk7XHJcbiAgICAgICAgICAgIG9wdGlvbnNbbVswXS50b0xvd2VyQ2FzZSgpXSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgZXZlbnQgPSBuYW1lWzJdID09PSAnOicgPyBuYW1lLnNsaWNlKDMpIDogaHlwaGVuYXRlKG5hbWUuc2xpY2UoMikpO1xyXG4gICAgcmV0dXJuIFtldmVudCwgb3B0aW9uc107XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlSW52b2tlcihpbml0aWFsVmFsdWUsIGluc3RhbmNlKSB7XHJcbiAgICBjb25zdCBpbnZva2VyID0gKGUpID0+IHtcclxuICAgICAgICAvLyBhc3luYyBlZGdlIGNhc2UgIzY1NjY6IGlubmVyIGNsaWNrIGV2ZW50IHRyaWdnZXJzIHBhdGNoLCBldmVudCBoYW5kbGVyXHJcbiAgICAgICAgLy8gYXR0YWNoZWQgdG8gb3V0ZXIgZWxlbWVudCBkdXJpbmcgcGF0Y2gsIGFuZCB0cmlnZ2VyZWQgYWdhaW4uIFRoaXNcclxuICAgICAgICAvLyBoYXBwZW5zIGJlY2F1c2UgYnJvd3NlcnMgZmlyZSBtaWNyb3Rhc2sgdGlja3MgYmV0d2VlbiBldmVudCBwcm9wYWdhdGlvbi5cclxuICAgICAgICAvLyB0aGUgc29sdXRpb24gaXMgc2ltcGxlOiB3ZSBzYXZlIHRoZSB0aW1lc3RhbXAgd2hlbiBhIGhhbmRsZXIgaXMgYXR0YWNoZWQsXHJcbiAgICAgICAgLy8gYW5kIHRoZSBoYW5kbGVyIHdvdWxkIG9ubHkgZmlyZSBpZiB0aGUgZXZlbnQgcGFzc2VkIHRvIGl0IHdhcyBmaXJlZFxyXG4gICAgICAgIC8vIEFGVEVSIGl0IHdhcyBhdHRhY2hlZC5cclxuICAgICAgICBjb25zdCB0aW1lU3RhbXAgPSBlLnRpbWVTdGFtcCB8fCBfZ2V0Tm93KCk7XHJcbiAgICAgICAgaWYgKHNraXBUaW1lc3RhbXBDaGVjayB8fCB0aW1lU3RhbXAgPj0gaW52b2tlci5hdHRhY2hlZCAtIDEpIHtcclxuICAgICAgICAgICAgY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcocGF0Y2hTdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oZSwgaW52b2tlci52YWx1ZSksIGluc3RhbmNlLCA1IC8qIEVycm9yQ29kZXMuTkFUSVZFX0VWRU5UX0hBTkRMRVIgKi8sIFtlXSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGludm9rZXIudmFsdWUgPSBpbml0aWFsVmFsdWU7XHJcbiAgICBpbnZva2VyLmF0dGFjaGVkID0gZ2V0Tm93KCk7XHJcbiAgICByZXR1cm4gaW52b2tlcjtcclxufVxyXG5mdW5jdGlvbiBwYXRjaFN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbihlLCB2YWx1ZSkge1xyXG4gICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxTdG9wID0gZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb247XHJcbiAgICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24gPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIG9yaWdpbmFsU3RvcC5jYWxsKGUpO1xyXG4gICAgICAgICAgICBlLl9zdG9wcGVkID0gdHJ1ZTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiB2YWx1ZS5tYXAoZm4gPT4gKGUpID0+ICFlLl9zdG9wcGVkICYmIGZuICYmIGZuKGUpKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxufVxuXG5jb25zdCBuYXRpdmVPblJFID0gL15vblthLXpdLztcclxuY29uc3QgcGF0Y2hQcm9wID0gKGVsLCBrZXksIHByZXZWYWx1ZSwgbmV4dFZhbHVlLCBpc1NWRyA9IGZhbHNlLCBwcmV2Q2hpbGRyZW4sIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHVubW91bnRDaGlsZHJlbikgPT4ge1xyXG4gICAgaWYgKGtleSA9PT0gJ2NsYXNzJykge1xyXG4gICAgICAgIHBhdGNoQ2xhc3MoZWwsIG5leHRWYWx1ZSwgaXNTVkcpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoa2V5ID09PSAnc3R5bGUnKSB7XHJcbiAgICAgICAgcGF0Y2hTdHlsZShlbCwgcHJldlZhbHVlLCBuZXh0VmFsdWUpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNPbihrZXkpKSB7XHJcbiAgICAgICAgLy8gaWdub3JlIHYtbW9kZWwgbGlzdGVuZXJzXHJcbiAgICAgICAgaWYgKCFpc01vZGVsTGlzdGVuZXIoa2V5KSkge1xyXG4gICAgICAgICAgICBwYXRjaEV2ZW50KGVsLCBrZXksIHByZXZWYWx1ZSwgbmV4dFZhbHVlLCBwYXJlbnRDb21wb25lbnQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGtleVswXSA9PT0gJy4nXHJcbiAgICAgICAgPyAoKGtleSA9IGtleS5zbGljZSgxKSksIHRydWUpXHJcbiAgICAgICAgOiBrZXlbMF0gPT09ICdeJ1xyXG4gICAgICAgICAgICA/ICgoa2V5ID0ga2V5LnNsaWNlKDEpKSwgZmFsc2UpXHJcbiAgICAgICAgICAgIDogc2hvdWxkU2V0QXNQcm9wKGVsLCBrZXksIG5leHRWYWx1ZSwgaXNTVkcpKSB7XHJcbiAgICAgICAgcGF0Y2hET01Qcm9wKGVsLCBrZXksIG5leHRWYWx1ZSwgcHJldkNoaWxkcmVuLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCB1bm1vdW50Q2hpbGRyZW4pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgLy8gc3BlY2lhbCBjYXNlIGZvciA8aW5wdXQgdi1tb2RlbCB0eXBlPVwiY2hlY2tib3hcIj4gd2l0aFxyXG4gICAgICAgIC8vIDp0cnVlLXZhbHVlICYgOmZhbHNlLXZhbHVlXHJcbiAgICAgICAgLy8gc3RvcmUgdmFsdWUgYXMgZG9tIHByb3BlcnRpZXMgc2luY2Ugbm9uLXN0cmluZyB2YWx1ZXMgd2lsbCBiZVxyXG4gICAgICAgIC8vIHN0cmluZ2lmaWVkLlxyXG4gICAgICAgIGlmIChrZXkgPT09ICd0cnVlLXZhbHVlJykge1xyXG4gICAgICAgICAgICBlbC5fdHJ1ZVZhbHVlID0gbmV4dFZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChrZXkgPT09ICdmYWxzZS12YWx1ZScpIHtcclxuICAgICAgICAgICAgZWwuX2ZhbHNlVmFsdWUgPSBuZXh0VmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHBhdGNoQXR0cihlbCwga2V5LCBuZXh0VmFsdWUsIGlzU1ZHKTtcclxuICAgIH1cclxufTtcclxuZnVuY3Rpb24gc2hvdWxkU2V0QXNQcm9wKGVsLCBrZXksIHZhbHVlLCBpc1NWRykge1xyXG4gICAgaWYgKGlzU1ZHKSB7XHJcbiAgICAgICAgLy8gbW9zdCBrZXlzIG11c3QgYmUgc2V0IGFzIGF0dHJpYnV0ZSBvbiBzdmcgZWxlbWVudHMgdG8gd29ya1xyXG4gICAgICAgIC8vIC4uLmV4Y2VwdCBpbm5lckhUTUwgJiB0ZXh0Q29udGVudFxyXG4gICAgICAgIGlmIChrZXkgPT09ICdpbm5lckhUTUwnIHx8IGtleSA9PT0gJ3RleHRDb250ZW50Jykge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gb3IgbmF0aXZlIG9uY2xpY2sgd2l0aCBmdW5jdGlvbiB2YWx1ZXNcclxuICAgICAgICBpZiAoa2V5IGluIGVsICYmIG5hdGl2ZU9uUkUudGVzdChrZXkpICYmIGlzRnVuY3Rpb24odmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyB0aGVzZSBhcmUgZW51bWVyYXRlZCBhdHRycywgaG93ZXZlciB0aGVpciBjb3JyZXNwb25kaW5nIERPTSBwcm9wZXJ0aWVzXHJcbiAgICAvLyBhcmUgYWN0dWFsbHkgYm9vbGVhbnMgLSB0aGlzIGxlYWRzIHRvIHNldHRpbmcgaXQgd2l0aCBhIHN0cmluZyBcImZhbHNlXCJcclxuICAgIC8vIHZhbHVlIGxlYWRpbmcgaXQgdG8gYmUgY29lcmNlZCB0byBgdHJ1ZWAsIHNvIHdlIG5lZWQgdG8gYWx3YXlzIHRyZWF0XHJcbiAgICAvLyB0aGVtIGFzIGF0dHJpYnV0ZXMuXHJcbiAgICAvLyBOb3RlIHRoYXQgYGNvbnRlbnRFZGl0YWJsZWAgZG9lc24ndCBoYXZlIHRoaXMgcHJvYmxlbTogaXRzIERPTVxyXG4gICAgLy8gcHJvcGVydHkgaXMgYWxzbyBlbnVtZXJhdGVkIHN0cmluZyB2YWx1ZXMuXHJcbiAgICBpZiAoa2V5ID09PSAnc3BlbGxjaGVjaycgfHwga2V5ID09PSAnZHJhZ2dhYmxlJyB8fCBrZXkgPT09ICd0cmFuc2xhdGUnKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gIzE3ODcsICMyODQwIGZvcm0gcHJvcGVydHkgb24gZm9ybSBlbGVtZW50cyBpcyByZWFkb25seSBhbmQgbXVzdCBiZSBzZXQgYXNcclxuICAgIC8vIGF0dHJpYnV0ZS5cclxuICAgIGlmIChrZXkgPT09ICdmb3JtJykge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vICMxNTI2IDxpbnB1dCBsaXN0PiBtdXN0IGJlIHNldCBhcyBhdHRyaWJ1dGVcclxuICAgIGlmIChrZXkgPT09ICdsaXN0JyAmJiBlbC50YWdOYW1lID09PSAnSU5QVVQnKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gIzI3NjYgPHRleHRhcmVhIHR5cGU+IG11c3QgYmUgc2V0IGFzIGF0dHJpYnV0ZVxyXG4gICAgaWYgKGtleSA9PT0gJ3R5cGUnICYmIGVsLnRhZ05hbWUgPT09ICdURVhUQVJFQScpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBuYXRpdmUgb25jbGljayB3aXRoIHN0cmluZyB2YWx1ZSwgbXVzdCBiZSBzZXQgYXMgYXR0cmlidXRlXHJcbiAgICBpZiAobmF0aXZlT25SRS50ZXN0KGtleSkgJiYgaXNTdHJpbmcodmFsdWUpKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGtleSBpbiBlbDtcclxufVxuXG5mdW5jdGlvbiBkZWZpbmVDdXN0b21FbGVtZW50KG9wdGlvbnMsIGh5ZHJhdGUpIHtcclxuICAgIGNvbnN0IENvbXAgPSBkZWZpbmVDb21wb25lbnQob3B0aW9ucyk7XHJcbiAgICBjbGFzcyBWdWVDdXN0b21FbGVtZW50IGV4dGVuZHMgVnVlRWxlbWVudCB7XHJcbiAgICAgICAgY29uc3RydWN0b3IoaW5pdGlhbFByb3BzKSB7XHJcbiAgICAgICAgICAgIHN1cGVyKENvbXAsIGluaXRpYWxQcm9wcywgaHlkcmF0ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgVnVlQ3VzdG9tRWxlbWVudC5kZWYgPSBDb21wO1xyXG4gICAgcmV0dXJuIFZ1ZUN1c3RvbUVsZW1lbnQ7XHJcbn1cclxuY29uc3QgZGVmaW5lU1NSQ3VzdG9tRWxlbWVudCA9ICgob3B0aW9ucykgPT4ge1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgcmV0dXJuIGRlZmluZUN1c3RvbUVsZW1lbnQob3B0aW9ucywgaHlkcmF0ZSk7XHJcbn0pO1xyXG5jb25zdCBCYXNlQ2xhc3MgPSAodHlwZW9mIEhUTUxFbGVtZW50ICE9PSAndW5kZWZpbmVkJyA/IEhUTUxFbGVtZW50IDogY2xhc3Mge1xyXG59KTtcclxuY2xhc3MgVnVlRWxlbWVudCBleHRlbmRzIEJhc2VDbGFzcyB7XHJcbiAgICBjb25zdHJ1Y3RvcihfZGVmLCBfcHJvcHMgPSB7fSwgaHlkcmF0ZSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy5fZGVmID0gX2RlZjtcclxuICAgICAgICB0aGlzLl9wcm9wcyA9IF9wcm9wcztcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBAaW50ZXJuYWxcclxuICAgICAgICAgKi9cclxuICAgICAgICB0aGlzLl9pbnN0YW5jZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5fY29ubmVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5fcmVzb2x2ZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLl9udW1iZXJQcm9wcyA9IG51bGw7XHJcbiAgICAgICAgaWYgKHRoaXMuc2hhZG93Um9vdCAmJiBoeWRyYXRlKSB7XHJcbiAgICAgICAgICAgIGh5ZHJhdGUodGhpcy5fY3JlYXRlVk5vZGUoKSwgdGhpcy5zaGFkb3dSb290KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgdGhpcy5zaGFkb3dSb290KSB7XHJcbiAgICAgICAgICAgICAgICB3YXJuKGBDdXN0b20gZWxlbWVudCBoYXMgcHJlLXJlbmRlcmVkIGRlY2xhcmF0aXZlIHNoYWRvdyByb290IGJ1dCBpcyBub3QgYCArXHJcbiAgICAgICAgICAgICAgICAgICAgYGRlZmluZWQgYXMgaHlkcmF0YWJsZS4gVXNlIFxcYGRlZmluZVNTUkN1c3RvbUVsZW1lbnRcXGAuYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5hdHRhY2hTaGFkb3coeyBtb2RlOiAnb3BlbicgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29ubmVjdGVkQ2FsbGJhY2soKSB7XHJcbiAgICAgICAgdGhpcy5fY29ubmVjdGVkID0gdHJ1ZTtcclxuICAgICAgICBpZiAoIXRoaXMuX2luc3RhbmNlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3Jlc29sdmVEZWYoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjaygpIHtcclxuICAgICAgICB0aGlzLl9jb25uZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICBuZXh0VGljaygoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5fY29ubmVjdGVkKSB7XHJcbiAgICAgICAgICAgICAgICByZW5kZXIobnVsbCwgdGhpcy5zaGFkb3dSb290KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2luc3RhbmNlID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiByZXNvbHZlIGlubmVyIGNvbXBvbmVudCBkZWZpbml0aW9uIChoYW5kbGUgcG9zc2libGUgYXN5bmMgY29tcG9uZW50KVxyXG4gICAgICovXHJcbiAgICBfcmVzb2x2ZURlZigpIHtcclxuICAgICAgICBpZiAodGhpcy5fcmVzb2x2ZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9yZXNvbHZlZCA9IHRydWU7XHJcbiAgICAgICAgLy8gc2V0IGluaXRpYWwgYXR0cnNcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICB0aGlzLl9zZXRBdHRyKHRoaXMuYXR0cmlidXRlc1tpXS5uYW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gd2F0Y2ggZnV0dXJlIGF0dHIgY2hhbmdlc1xyXG4gICAgICAgIG5ldyBNdXRhdGlvbk9ic2VydmVyKG11dGF0aW9ucyA9PiB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgbSBvZiBtdXRhdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3NldEF0dHIobS5hdHRyaWJ1dGVOYW1lKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pLm9ic2VydmUodGhpcywgeyBhdHRyaWJ1dGVzOiB0cnVlIH0pO1xyXG4gICAgICAgIGNvbnN0IHJlc29sdmUgPSAoZGVmKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgcHJvcHMsIHN0eWxlcyB9ID0gZGVmO1xyXG4gICAgICAgICAgICBjb25zdCBoYXNPcHRpb25zID0gIWlzQXJyYXkocHJvcHMpO1xyXG4gICAgICAgICAgICBjb25zdCByYXdLZXlzID0gcHJvcHMgPyAoaGFzT3B0aW9ucyA/IE9iamVjdC5rZXlzKHByb3BzKSA6IHByb3BzKSA6IFtdO1xyXG4gICAgICAgICAgICAvLyBjYXN0IE51bWJlci10eXBlIHByb3BzIHNldCBiZWZvcmUgcmVzb2x2ZVxyXG4gICAgICAgICAgICBsZXQgbnVtYmVyUHJvcHM7XHJcbiAgICAgICAgICAgIGlmIChoYXNPcHRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLl9wcm9wcykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG9wdCA9IHByb3BzW2tleV07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdCA9PT0gTnVtYmVyIHx8IChvcHQgJiYgb3B0LnR5cGUgPT09IE51bWJlcikpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcHJvcHNba2V5XSA9IHRvTnVtYmVyKHRoaXMuX3Byb3BzW2tleV0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAobnVtYmVyUHJvcHMgfHwgKG51bWJlclByb3BzID0gT2JqZWN0LmNyZWF0ZShudWxsKSkpW2tleV0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLl9udW1iZXJQcm9wcyA9IG51bWJlclByb3BzO1xyXG4gICAgICAgICAgICAvLyBjaGVjayBpZiB0aGVyZSBhcmUgcHJvcHMgc2V0IHByZS11cGdyYWRlIG9yIGNvbm5lY3RcclxuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcykpIHtcclxuICAgICAgICAgICAgICAgIGlmIChrZXlbMF0gIT09ICdfJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NldFByb3Aoa2V5LCB0aGlzW2tleV0sIHRydWUsIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBkZWZpbmluZyBnZXR0ZXIvc2V0dGVycyBvbiBwcm90b3R5cGVcclxuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgcmF3S2V5cy5tYXAoY2FtZWxpemUkMSkpIHtcclxuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBrZXksIHtcclxuICAgICAgICAgICAgICAgICAgICBnZXQoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9nZXRQcm9wKGtleSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBzZXQodmFsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NldFByb3Aoa2V5LCB2YWwpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGFwcGx5IENTU1xyXG4gICAgICAgICAgICB0aGlzLl9hcHBseVN0eWxlcyhzdHlsZXMpO1xyXG4gICAgICAgICAgICAvLyBpbml0aWFsIHJlbmRlclxyXG4gICAgICAgICAgICB0aGlzLl91cGRhdGUoKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnN0IGFzeW5jRGVmID0gdGhpcy5fZGVmLl9fYXN5bmNMb2FkZXI7XHJcbiAgICAgICAgaWYgKGFzeW5jRGVmKSB7XHJcbiAgICAgICAgICAgIGFzeW5jRGVmKCkudGhlbihyZXNvbHZlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHJlc29sdmUodGhpcy5fZGVmKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBfc2V0QXR0cihrZXkpIHtcclxuICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLmdldEF0dHJpYnV0ZShrZXkpO1xyXG4gICAgICAgIGlmICh0aGlzLl9udW1iZXJQcm9wcyAmJiB0aGlzLl9udW1iZXJQcm9wc1trZXldKSB7XHJcbiAgICAgICAgICAgIHZhbHVlID0gdG9OdW1iZXIodmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9zZXRQcm9wKGNhbWVsaXplJDEoa2V5KSwgdmFsdWUsIGZhbHNlKTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogQGludGVybmFsXHJcbiAgICAgKi9cclxuICAgIF9nZXRQcm9wKGtleSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9wcm9wc1trZXldO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBAaW50ZXJuYWxcclxuICAgICAqL1xyXG4gICAgX3NldFByb3Aoa2V5LCB2YWwsIHNob3VsZFJlZmxlY3QgPSB0cnVlLCBzaG91bGRVcGRhdGUgPSB0cnVlKSB7XHJcbiAgICAgICAgaWYgKHZhbCAhPT0gdGhpcy5fcHJvcHNba2V5XSkge1xyXG4gICAgICAgICAgICB0aGlzLl9wcm9wc1trZXldID0gdmFsO1xyXG4gICAgICAgICAgICBpZiAoc2hvdWxkVXBkYXRlICYmIHRoaXMuX2luc3RhbmNlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyByZWZsZWN0XHJcbiAgICAgICAgICAgIGlmIChzaG91bGRSZWZsZWN0KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoaHlwaGVuYXRlKGtleSksICcnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoaHlwaGVuYXRlKGtleSksIHZhbCArICcnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKCF2YWwpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUF0dHJpYnV0ZShoeXBoZW5hdGUoa2V5KSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBfdXBkYXRlKCkge1xyXG4gICAgICAgIHJlbmRlcih0aGlzLl9jcmVhdGVWTm9kZSgpLCB0aGlzLnNoYWRvd1Jvb3QpO1xyXG4gICAgfVxyXG4gICAgX2NyZWF0ZVZOb2RlKCkge1xyXG4gICAgICAgIGNvbnN0IHZub2RlID0gY3JlYXRlVk5vZGUodGhpcy5fZGVmLCBleHRlbmQoe30sIHRoaXMuX3Byb3BzKSk7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9pbnN0YW5jZSkge1xyXG4gICAgICAgICAgICB2bm9kZS5jZSA9IGluc3RhbmNlID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2luc3RhbmNlID0gaW5zdGFuY2U7XHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5pc0NFID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIC8vIEhNUlxyXG4gICAgICAgICAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLmNlUmVsb2FkID0gbmV3U3R5bGVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWx3YXlzIHJlc2V0IHN0eWxlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fc3R5bGVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdHlsZXMuZm9yRWFjaChzID0+IHRoaXMuc2hhZG93Um9vdC5yZW1vdmVDaGlsZChzKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdHlsZXMubGVuZ3RoID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9hcHBseVN0eWxlcyhuZXdTdHlsZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGlzIGlzIGFuIGFzeW5jIGNvbXBvbmVudCwgY2VSZWxvYWQgaXMgY2FsbGVkIGZyb20gdGhlIGlubmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbXBvbmVudCBzbyBubyBuZWVkIHRvIHJlbG9hZCB0aGUgYXN5bmMgd3JhcHBlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2RlZi5fX2FzeW5jTG9hZGVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWxvYWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2luc3RhbmNlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIGludGVyY2VwdCBlbWl0XHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5lbWl0ID0gKGV2ZW50LCAuLi5hcmdzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChldmVudCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6IGFyZ3NcclxuICAgICAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgLy8gbG9jYXRlIG5lYXJlc3QgVnVlIGN1c3RvbSBlbGVtZW50IHBhcmVudCBmb3IgcHJvdmlkZS9pbmplY3RcclxuICAgICAgICAgICAgICAgIGxldCBwYXJlbnQgPSB0aGlzO1xyXG4gICAgICAgICAgICAgICAgd2hpbGUgKChwYXJlbnQgPVxyXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudCAmJiAocGFyZW50LnBhcmVudE5vZGUgfHwgcGFyZW50Lmhvc3QpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnQgaW5zdGFuY2VvZiBWdWVFbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLnBhcmVudCA9IHBhcmVudC5faW5zdGFuY2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHZub2RlO1xyXG4gICAgfVxyXG4gICAgX2FwcGx5U3R5bGVzKHN0eWxlcykge1xyXG4gICAgICAgIGlmIChzdHlsZXMpIHtcclxuICAgICAgICAgICAgc3R5bGVzLmZvckVhY2goY3NzID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xyXG4gICAgICAgICAgICAgICAgcy50ZXh0Q29udGVudCA9IGNzcztcclxuICAgICAgICAgICAgICAgIHRoaXMuc2hhZG93Um9vdC5hcHBlbmRDaGlsZChzKTtcclxuICAgICAgICAgICAgICAgIC8vIHJlY29yZCBmb3IgSE1SXHJcbiAgICAgICAgICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuX3N0eWxlcyB8fCAodGhpcy5fc3R5bGVzID0gW10pKS5wdXNoKHMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cblxuZnVuY3Rpb24gdXNlQ3NzTW9kdWxlKG5hbWUgPSAnJHN0eWxlJykge1xyXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cclxuICAgIHtcclxuICAgICAgICBjb25zdCBpbnN0YW5jZSA9IGdldEN1cnJlbnRJbnN0YW5jZSgpO1xyXG4gICAgICAgIGlmICghaW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmIHdhcm4oYHVzZUNzc01vZHVsZSBtdXN0IGJlIGNhbGxlZCBpbnNpZGUgc2V0dXAoKWApO1xyXG4gICAgICAgICAgICByZXR1cm4gRU1QVFlfT0JKO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBtb2R1bGVzID0gaW5zdGFuY2UudHlwZS5fX2Nzc01vZHVsZXM7XHJcbiAgICAgICAgaWYgKCFtb2R1bGVzKSB7XHJcbiAgICAgICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiB3YXJuKGBDdXJyZW50IGluc3RhbmNlIGRvZXMgbm90IGhhdmUgQ1NTIG1vZHVsZXMgaW5qZWN0ZWQuYCk7XHJcbiAgICAgICAgICAgIHJldHVybiBFTVBUWV9PQko7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IG1vZCA9IG1vZHVsZXNbbmFtZV07XHJcbiAgICAgICAgaWYgKCFtb2QpIHtcclxuICAgICAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgICAgICB3YXJuKGBDdXJyZW50IGluc3RhbmNlIGRvZXMgbm90IGhhdmUgQ1NTIG1vZHVsZSBuYW1lZCBcIiR7bmFtZX1cIi5gKTtcclxuICAgICAgICAgICAgcmV0dXJuIEVNUFRZX09CSjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG1vZDtcclxuICAgIH1cclxufVxuXG4vKipcclxuICogUnVudGltZSBoZWxwZXIgZm9yIFNGQydzIENTUyB2YXJpYWJsZSBpbmplY3Rpb24gZmVhdHVyZS5cclxuICogQHByaXZhdGVcclxuICovXHJcbmZ1bmN0aW9uIHVzZUNzc1ZhcnMoZ2V0dGVyKSB7XHJcbiAgICBjb25zdCBpbnN0YW5jZSA9IGdldEN1cnJlbnRJbnN0YW5jZSgpO1xyXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cclxuICAgIGlmICghaW5zdGFuY2UpIHtcclxuICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcclxuICAgICAgICAgICAgd2FybihgdXNlQ3NzVmFycyBpcyBjYWxsZWQgd2l0aG91dCBjdXJyZW50IGFjdGl2ZSBjb21wb25lbnQgaW5zdGFuY2UuYCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgc2V0VmFycyA9ICgpID0+IHNldFZhcnNPblZOb2RlKGluc3RhbmNlLnN1YlRyZWUsIGdldHRlcihpbnN0YW5jZS5wcm94eSkpO1xyXG4gICAgd2F0Y2hQb3N0RWZmZWN0KHNldFZhcnMpO1xyXG4gICAgb25Nb3VudGVkKCgpID0+IHtcclxuICAgICAgICBjb25zdCBvYiA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKHNldFZhcnMpO1xyXG4gICAgICAgIG9iLm9ic2VydmUoaW5zdGFuY2Uuc3ViVHJlZS5lbC5wYXJlbnROb2RlLCB7IGNoaWxkTGlzdDogdHJ1ZSB9KTtcclxuICAgICAgICBvblVubW91bnRlZCgoKSA9PiBvYi5kaXNjb25uZWN0KCkpO1xyXG4gICAgfSk7XHJcbn1cclxuZnVuY3Rpb24gc2V0VmFyc09uVk5vZGUodm5vZGUsIHZhcnMpIHtcclxuICAgIGlmICh2bm9kZS5zaGFwZUZsYWcgJiAxMjggLyogU2hhcGVGbGFncy5TVVNQRU5TRSAqLykge1xyXG4gICAgICAgIGNvbnN0IHN1c3BlbnNlID0gdm5vZGUuc3VzcGVuc2U7XHJcbiAgICAgICAgdm5vZGUgPSBzdXNwZW5zZS5hY3RpdmVCcmFuY2g7XHJcbiAgICAgICAgaWYgKHN1c3BlbnNlLnBlbmRpbmdCcmFuY2ggJiYgIXN1c3BlbnNlLmlzSHlkcmF0aW5nKSB7XHJcbiAgICAgICAgICAgIHN1c3BlbnNlLmVmZmVjdHMucHVzaCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBzZXRWYXJzT25WTm9kZShzdXNwZW5zZS5hY3RpdmVCcmFuY2gsIHZhcnMpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBkcmlsbCBkb3duIEhPQ3MgdW50aWwgaXQncyBhIG5vbi1jb21wb25lbnQgdm5vZGVcclxuICAgIHdoaWxlICh2bm9kZS5jb21wb25lbnQpIHtcclxuICAgICAgICB2bm9kZSA9IHZub2RlLmNvbXBvbmVudC5zdWJUcmVlO1xyXG4gICAgfVxyXG4gICAgaWYgKHZub2RlLnNoYXBlRmxhZyAmIDEgLyogU2hhcGVGbGFncy5FTEVNRU5UICovICYmIHZub2RlLmVsKSB7XHJcbiAgICAgICAgc2V0VmFyc09uTm9kZSh2bm9kZS5lbCwgdmFycyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh2bm9kZS50eXBlID09PSBGcmFnbWVudCkge1xyXG4gICAgICAgIHZub2RlLmNoaWxkcmVuLmZvckVhY2goYyA9PiBzZXRWYXJzT25WTm9kZShjLCB2YXJzKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh2bm9kZS50eXBlID09PSBTdGF0aWMpIHtcclxuICAgICAgICBsZXQgeyBlbCwgYW5jaG9yIH0gPSB2bm9kZTtcclxuICAgICAgICB3aGlsZSAoZWwpIHtcclxuICAgICAgICAgICAgc2V0VmFyc09uTm9kZShlbCwgdmFycyk7XHJcbiAgICAgICAgICAgIGlmIChlbCA9PT0gYW5jaG9yKVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGVsID0gZWwubmV4dFNpYmxpbmc7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHNldFZhcnNPbk5vZGUoZWwsIHZhcnMpIHtcclxuICAgIGlmIChlbC5ub2RlVHlwZSA9PT0gMSkge1xyXG4gICAgICAgIGNvbnN0IHN0eWxlID0gZWwuc3R5bGU7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdmFycykge1xyXG4gICAgICAgICAgICBzdHlsZS5zZXRQcm9wZXJ0eShgLS0ke2tleX1gLCB2YXJzW2tleV0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxuXG5jb25zdCBUUkFOU0lUSU9OID0gJ3RyYW5zaXRpb24nO1xyXG5jb25zdCBBTklNQVRJT04gPSAnYW5pbWF0aW9uJztcclxuLy8gRE9NIFRyYW5zaXRpb24gaXMgYSBoaWdoZXItb3JkZXItY29tcG9uZW50IGJhc2VkIG9uIHRoZSBwbGF0Zm9ybS1hZ25vc3RpY1xyXG4vLyBiYXNlIFRyYW5zaXRpb24gY29tcG9uZW50LCB3aXRoIERPTS1zcGVjaWZpYyBsb2dpYy5cclxuY29uc3QgVHJhbnNpdGlvbiA9IChwcm9wcywgeyBzbG90cyB9KSA9PiBoKEJhc2VUcmFuc2l0aW9uLCByZXNvbHZlVHJhbnNpdGlvblByb3BzKHByb3BzKSwgc2xvdHMpO1xyXG5UcmFuc2l0aW9uLmRpc3BsYXlOYW1lID0gJ1RyYW5zaXRpb24nO1xyXG5jb25zdCBET01UcmFuc2l0aW9uUHJvcHNWYWxpZGF0b3JzID0ge1xyXG4gICAgbmFtZTogU3RyaW5nLFxyXG4gICAgdHlwZTogU3RyaW5nLFxyXG4gICAgY3NzOiB7XHJcbiAgICAgICAgdHlwZTogQm9vbGVhbixcclxuICAgICAgICBkZWZhdWx0OiB0cnVlXHJcbiAgICB9LFxyXG4gICAgZHVyYXRpb246IFtTdHJpbmcsIE51bWJlciwgT2JqZWN0XSxcclxuICAgIGVudGVyRnJvbUNsYXNzOiBTdHJpbmcsXHJcbiAgICBlbnRlckFjdGl2ZUNsYXNzOiBTdHJpbmcsXHJcbiAgICBlbnRlclRvQ2xhc3M6IFN0cmluZyxcclxuICAgIGFwcGVhckZyb21DbGFzczogU3RyaW5nLFxyXG4gICAgYXBwZWFyQWN0aXZlQ2xhc3M6IFN0cmluZyxcclxuICAgIGFwcGVhclRvQ2xhc3M6IFN0cmluZyxcclxuICAgIGxlYXZlRnJvbUNsYXNzOiBTdHJpbmcsXHJcbiAgICBsZWF2ZUFjdGl2ZUNsYXNzOiBTdHJpbmcsXHJcbiAgICBsZWF2ZVRvQ2xhc3M6IFN0cmluZ1xyXG59O1xyXG5jb25zdCBUcmFuc2l0aW9uUHJvcHNWYWxpZGF0b3JzID0gKFRyYW5zaXRpb24ucHJvcHMgPVxyXG4gICAgLyojX19QVVJFX18qLyBleHRlbmQoe30sIEJhc2VUcmFuc2l0aW9uLnByb3BzLCBET01UcmFuc2l0aW9uUHJvcHNWYWxpZGF0b3JzKSk7XHJcbi8qKlxyXG4gKiAjMzIyNyBJbmNvbWluZyBob29rcyBtYXkgYmUgbWVyZ2VkIGludG8gYXJyYXlzIHdoZW4gd3JhcHBpbmcgVHJhbnNpdGlvblxyXG4gKiB3aXRoIGN1c3RvbSBIT0NzLlxyXG4gKi9cclxuY29uc3QgY2FsbEhvb2sgPSAoaG9vaywgYXJncyA9IFtdKSA9PiB7XHJcbiAgICBpZiAoaXNBcnJheShob29rKSkge1xyXG4gICAgICAgIGhvb2suZm9yRWFjaChoID0+IGgoLi4uYXJncykpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaG9vaykge1xyXG4gICAgICAgIGhvb2soLi4uYXJncyk7XHJcbiAgICB9XHJcbn07XHJcbi8qKlxyXG4gKiBDaGVjayBpZiBhIGhvb2sgZXhwZWN0cyBhIGNhbGxiYWNrICgybmQgYXJnKSwgd2hpY2ggbWVhbnMgdGhlIHVzZXJcclxuICogaW50ZW5kcyB0byBleHBsaWNpdGx5IGNvbnRyb2wgdGhlIGVuZCBvZiB0aGUgdHJhbnNpdGlvbi5cclxuICovXHJcbmNvbnN0IGhhc0V4cGxpY2l0Q2FsbGJhY2sgPSAoaG9vaykgPT4ge1xyXG4gICAgcmV0dXJuIGhvb2tcclxuICAgICAgICA/IGlzQXJyYXkoaG9vaylcclxuICAgICAgICAgICAgPyBob29rLnNvbWUoaCA9PiBoLmxlbmd0aCA+IDEpXHJcbiAgICAgICAgICAgIDogaG9vay5sZW5ndGggPiAxXHJcbiAgICAgICAgOiBmYWxzZTtcclxufTtcclxuZnVuY3Rpb24gcmVzb2x2ZVRyYW5zaXRpb25Qcm9wcyhyYXdQcm9wcykge1xyXG4gICAgY29uc3QgYmFzZVByb3BzID0ge307XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiByYXdQcm9wcykge1xyXG4gICAgICAgIGlmICghKGtleSBpbiBET01UcmFuc2l0aW9uUHJvcHNWYWxpZGF0b3JzKSkge1xyXG4gICAgICAgICAgICBiYXNlUHJvcHNba2V5XSA9IHJhd1Byb3BzW2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHJhd1Byb3BzLmNzcyA9PT0gZmFsc2UpIHtcclxuICAgICAgICByZXR1cm4gYmFzZVByb3BzO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBuYW1lID0gJ3YnLCB0eXBlLCBkdXJhdGlvbiwgZW50ZXJGcm9tQ2xhc3MgPSBgJHtuYW1lfS1lbnRlci1mcm9tYCwgZW50ZXJBY3RpdmVDbGFzcyA9IGAke25hbWV9LWVudGVyLWFjdGl2ZWAsIGVudGVyVG9DbGFzcyA9IGAke25hbWV9LWVudGVyLXRvYCwgYXBwZWFyRnJvbUNsYXNzID0gZW50ZXJGcm9tQ2xhc3MsIGFwcGVhckFjdGl2ZUNsYXNzID0gZW50ZXJBY3RpdmVDbGFzcywgYXBwZWFyVG9DbGFzcyA9IGVudGVyVG9DbGFzcywgbGVhdmVGcm9tQ2xhc3MgPSBgJHtuYW1lfS1sZWF2ZS1mcm9tYCwgbGVhdmVBY3RpdmVDbGFzcyA9IGAke25hbWV9LWxlYXZlLWFjdGl2ZWAsIGxlYXZlVG9DbGFzcyA9IGAke25hbWV9LWxlYXZlLXRvYCB9ID0gcmF3UHJvcHM7XHJcbiAgICBjb25zdCBkdXJhdGlvbnMgPSBub3JtYWxpemVEdXJhdGlvbihkdXJhdGlvbik7XHJcbiAgICBjb25zdCBlbnRlckR1cmF0aW9uID0gZHVyYXRpb25zICYmIGR1cmF0aW9uc1swXTtcclxuICAgIGNvbnN0IGxlYXZlRHVyYXRpb24gPSBkdXJhdGlvbnMgJiYgZHVyYXRpb25zWzFdO1xyXG4gICAgY29uc3QgeyBvbkJlZm9yZUVudGVyLCBvbkVudGVyLCBvbkVudGVyQ2FuY2VsbGVkLCBvbkxlYXZlLCBvbkxlYXZlQ2FuY2VsbGVkLCBvbkJlZm9yZUFwcGVhciA9IG9uQmVmb3JlRW50ZXIsIG9uQXBwZWFyID0gb25FbnRlciwgb25BcHBlYXJDYW5jZWxsZWQgPSBvbkVudGVyQ2FuY2VsbGVkIH0gPSBiYXNlUHJvcHM7XHJcbiAgICBjb25zdCBmaW5pc2hFbnRlciA9IChlbCwgaXNBcHBlYXIsIGRvbmUpID0+IHtcclxuICAgICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIGlzQXBwZWFyID8gYXBwZWFyVG9DbGFzcyA6IGVudGVyVG9DbGFzcyk7XHJcbiAgICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBpc0FwcGVhciA/IGFwcGVhckFjdGl2ZUNsYXNzIDogZW50ZXJBY3RpdmVDbGFzcyk7XHJcbiAgICAgICAgZG9uZSAmJiBkb25lKCk7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgZmluaXNoTGVhdmUgPSAoZWwsIGRvbmUpID0+IHtcclxuICAgICAgICBlbC5faXNMZWF2aW5nID0gZmFsc2U7XHJcbiAgICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZUZyb21DbGFzcyk7XHJcbiAgICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZVRvQ2xhc3MpO1xyXG4gICAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgbGVhdmVBY3RpdmVDbGFzcyk7XHJcbiAgICAgICAgZG9uZSAmJiBkb25lKCk7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgbWFrZUVudGVySG9vayA9IChpc0FwcGVhcikgPT4ge1xyXG4gICAgICAgIHJldHVybiAoZWwsIGRvbmUpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaG9vayA9IGlzQXBwZWFyID8gb25BcHBlYXIgOiBvbkVudGVyO1xyXG4gICAgICAgICAgICBjb25zdCByZXNvbHZlID0gKCkgPT4gZmluaXNoRW50ZXIoZWwsIGlzQXBwZWFyLCBkb25lKTtcclxuICAgICAgICAgICAgY2FsbEhvb2soaG9vaywgW2VsLCByZXNvbHZlXSk7XHJcbiAgICAgICAgICAgIG5leHRGcmFtZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIGlzQXBwZWFyID8gYXBwZWFyRnJvbUNsYXNzIDogZW50ZXJGcm9tQ2xhc3MpO1xyXG4gICAgICAgICAgICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBpc0FwcGVhciA/IGFwcGVhclRvQ2xhc3MgOiBlbnRlclRvQ2xhc3MpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFoYXNFeHBsaWNpdENhbGxiYWNrKGhvb2spKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2hlblRyYW5zaXRpb25FbmRzKGVsLCB0eXBlLCBlbnRlckR1cmF0aW9uLCByZXNvbHZlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gZXh0ZW5kKGJhc2VQcm9wcywge1xyXG4gICAgICAgIG9uQmVmb3JlRW50ZXIoZWwpIHtcclxuICAgICAgICAgICAgY2FsbEhvb2sob25CZWZvcmVFbnRlciwgW2VsXSk7XHJcbiAgICAgICAgICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgZW50ZXJGcm9tQ2xhc3MpO1xyXG4gICAgICAgICAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIGVudGVyQWN0aXZlQ2xhc3MpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25CZWZvcmVBcHBlYXIoZWwpIHtcclxuICAgICAgICAgICAgY2FsbEhvb2sob25CZWZvcmVBcHBlYXIsIFtlbF0pO1xyXG4gICAgICAgICAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIGFwcGVhckZyb21DbGFzcyk7XHJcbiAgICAgICAgICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgYXBwZWFyQWN0aXZlQ2xhc3MpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25FbnRlcjogbWFrZUVudGVySG9vayhmYWxzZSksXHJcbiAgICAgICAgb25BcHBlYXI6IG1ha2VFbnRlckhvb2sodHJ1ZSksXHJcbiAgICAgICAgb25MZWF2ZShlbCwgZG9uZSkge1xyXG4gICAgICAgICAgICBlbC5faXNMZWF2aW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgY29uc3QgcmVzb2x2ZSA9ICgpID0+IGZpbmlzaExlYXZlKGVsLCBkb25lKTtcclxuICAgICAgICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZUZyb21DbGFzcyk7XHJcbiAgICAgICAgICAgIC8vIGZvcmNlIHJlZmxvdyBzbyAqLWxlYXZlLWZyb20gY2xhc3NlcyBpbW1lZGlhdGVseSB0YWtlIGVmZmVjdCAoIzI1OTMpXHJcbiAgICAgICAgICAgIGZvcmNlUmVmbG93KCk7XHJcbiAgICAgICAgICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgbGVhdmVBY3RpdmVDbGFzcyk7XHJcbiAgICAgICAgICAgIG5leHRGcmFtZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWVsLl9pc0xlYXZpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjYW5jZWxsZWRcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlRnJvbUNsYXNzKTtcclxuICAgICAgICAgICAgICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgbGVhdmVUb0NsYXNzKTtcclxuICAgICAgICAgICAgICAgIGlmICghaGFzRXhwbGljaXRDYWxsYmFjayhvbkxlYXZlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdoZW5UcmFuc2l0aW9uRW5kcyhlbCwgdHlwZSwgbGVhdmVEdXJhdGlvbiwgcmVzb2x2ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBjYWxsSG9vayhvbkxlYXZlLCBbZWwsIHJlc29sdmVdKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uRW50ZXJDYW5jZWxsZWQoZWwpIHtcclxuICAgICAgICAgICAgZmluaXNoRW50ZXIoZWwsIGZhbHNlKTtcclxuICAgICAgICAgICAgY2FsbEhvb2sob25FbnRlckNhbmNlbGxlZCwgW2VsXSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBvbkFwcGVhckNhbmNlbGxlZChlbCkge1xyXG4gICAgICAgICAgICBmaW5pc2hFbnRlcihlbCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIGNhbGxIb29rKG9uQXBwZWFyQ2FuY2VsbGVkLCBbZWxdKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uTGVhdmVDYW5jZWxsZWQoZWwpIHtcclxuICAgICAgICAgICAgZmluaXNoTGVhdmUoZWwpO1xyXG4gICAgICAgICAgICBjYWxsSG9vayhvbkxlYXZlQ2FuY2VsbGVkLCBbZWxdKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxufVxyXG5mdW5jdGlvbiBub3JtYWxpemVEdXJhdGlvbihkdXJhdGlvbikge1xyXG4gICAgaWYgKGR1cmF0aW9uID09IG51bGwpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzT2JqZWN0KGR1cmF0aW9uKSkge1xyXG4gICAgICAgIHJldHVybiBbTnVtYmVyT2YoZHVyYXRpb24uZW50ZXIpLCBOdW1iZXJPZihkdXJhdGlvbi5sZWF2ZSldO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3QgbiA9IE51bWJlck9mKGR1cmF0aW9uKTtcclxuICAgICAgICByZXR1cm4gW24sIG5dO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIE51bWJlck9mKHZhbCkge1xyXG4gICAgY29uc3QgcmVzID0gdG9OdW1iZXIodmFsKTtcclxuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpXHJcbiAgICAgICAgdmFsaWRhdGVEdXJhdGlvbihyZXMpO1xyXG4gICAgcmV0dXJuIHJlcztcclxufVxyXG5mdW5jdGlvbiB2YWxpZGF0ZUR1cmF0aW9uKHZhbCkge1xyXG4gICAgaWYgKHR5cGVvZiB2YWwgIT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgd2FybihgPHRyYW5zaXRpb24+IGV4cGxpY2l0IGR1cmF0aW9uIGlzIG5vdCBhIHZhbGlkIG51bWJlciAtIGAgK1xyXG4gICAgICAgICAgICBgZ290ICR7SlNPTi5zdHJpbmdpZnkodmFsKX0uYCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc05hTih2YWwpKSB7XHJcbiAgICAgICAgd2FybihgPHRyYW5zaXRpb24+IGV4cGxpY2l0IGR1cmF0aW9uIGlzIE5hTiAtIGAgK1xyXG4gICAgICAgICAgICAndGhlIGR1cmF0aW9uIGV4cHJlc3Npb24gbWlnaHQgYmUgaW5jb3JyZWN0LicpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgY2xzKSB7XHJcbiAgICBjbHMuc3BsaXQoL1xccysvKS5mb3JFYWNoKGMgPT4gYyAmJiBlbC5jbGFzc0xpc3QuYWRkKGMpKTtcclxuICAgIChlbC5fdnRjIHx8XHJcbiAgICAgICAgKGVsLl92dGMgPSBuZXcgU2V0KCkpKS5hZGQoY2xzKTtcclxufVxyXG5mdW5jdGlvbiByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIGNscykge1xyXG4gICAgY2xzLnNwbGl0KC9cXHMrLykuZm9yRWFjaChjID0+IGMgJiYgZWwuY2xhc3NMaXN0LnJlbW92ZShjKSk7XHJcbiAgICBjb25zdCB7IF92dGMgfSA9IGVsO1xyXG4gICAgaWYgKF92dGMpIHtcclxuICAgICAgICBfdnRjLmRlbGV0ZShjbHMpO1xyXG4gICAgICAgIGlmICghX3Z0Yy5zaXplKSB7XHJcbiAgICAgICAgICAgIGVsLl92dGMgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIG5leHRGcmFtZShjYikge1xyXG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcclxuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2IpO1xyXG4gICAgfSk7XHJcbn1cclxubGV0IGVuZElkID0gMDtcclxuZnVuY3Rpb24gd2hlblRyYW5zaXRpb25FbmRzKGVsLCBleHBlY3RlZFR5cGUsIGV4cGxpY2l0VGltZW91dCwgcmVzb2x2ZSkge1xyXG4gICAgY29uc3QgaWQgPSAoZWwuX2VuZElkID0gKytlbmRJZCk7XHJcbiAgICBjb25zdCByZXNvbHZlSWZOb3RTdGFsZSA9ICgpID0+IHtcclxuICAgICAgICBpZiAoaWQgPT09IGVsLl9lbmRJZCkge1xyXG4gICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGlmIChleHBsaWNpdFRpbWVvdXQpIHtcclxuICAgICAgICByZXR1cm4gc2V0VGltZW91dChyZXNvbHZlSWZOb3RTdGFsZSwgZXhwbGljaXRUaW1lb3V0KTtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgdHlwZSwgdGltZW91dCwgcHJvcENvdW50IH0gPSBnZXRUcmFuc2l0aW9uSW5mbyhlbCwgZXhwZWN0ZWRUeXBlKTtcclxuICAgIGlmICghdHlwZSkge1xyXG4gICAgICAgIHJldHVybiByZXNvbHZlKCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBlbmRFdmVudCA9IHR5cGUgKyAnZW5kJztcclxuICAgIGxldCBlbmRlZCA9IDA7XHJcbiAgICBjb25zdCBlbmQgPSAoKSA9PiB7XHJcbiAgICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihlbmRFdmVudCwgb25FbmQpO1xyXG4gICAgICAgIHJlc29sdmVJZk5vdFN0YWxlKCk7XHJcbiAgICB9O1xyXG4gICAgY29uc3Qgb25FbmQgPSAoZSkgPT4ge1xyXG4gICAgICAgIGlmIChlLnRhcmdldCA9PT0gZWwgJiYgKytlbmRlZCA+PSBwcm9wQ291bnQpIHtcclxuICAgICAgICAgICAgZW5kKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGlmIChlbmRlZCA8IHByb3BDb3VudCkge1xyXG4gICAgICAgICAgICBlbmQoKTtcclxuICAgICAgICB9XHJcbiAgICB9LCB0aW1lb3V0ICsgMSk7XHJcbiAgICBlbC5hZGRFdmVudExpc3RlbmVyKGVuZEV2ZW50LCBvbkVuZCk7XHJcbn1cclxuZnVuY3Rpb24gZ2V0VHJhbnNpdGlvbkluZm8oZWwsIGV4cGVjdGVkVHlwZSkge1xyXG4gICAgY29uc3Qgc3R5bGVzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWwpO1xyXG4gICAgLy8gSlNET00gbWF5IHJldHVybiB1bmRlZmluZWQgZm9yIHRyYW5zaXRpb24gcHJvcGVydGllc1xyXG4gICAgY29uc3QgZ2V0U3R5bGVQcm9wZXJ0aWVzID0gKGtleSkgPT4gKHN0eWxlc1trZXldIHx8ICcnKS5zcGxpdCgnLCAnKTtcclxuICAgIGNvbnN0IHRyYW5zaXRpb25EZWxheXMgPSBnZXRTdHlsZVByb3BlcnRpZXMoVFJBTlNJVElPTiArICdEZWxheScpO1xyXG4gICAgY29uc3QgdHJhbnNpdGlvbkR1cmF0aW9ucyA9IGdldFN0eWxlUHJvcGVydGllcyhUUkFOU0lUSU9OICsgJ0R1cmF0aW9uJyk7XHJcbiAgICBjb25zdCB0cmFuc2l0aW9uVGltZW91dCA9IGdldFRpbWVvdXQodHJhbnNpdGlvbkRlbGF5cywgdHJhbnNpdGlvbkR1cmF0aW9ucyk7XHJcbiAgICBjb25zdCBhbmltYXRpb25EZWxheXMgPSBnZXRTdHlsZVByb3BlcnRpZXMoQU5JTUFUSU9OICsgJ0RlbGF5Jyk7XHJcbiAgICBjb25zdCBhbmltYXRpb25EdXJhdGlvbnMgPSBnZXRTdHlsZVByb3BlcnRpZXMoQU5JTUFUSU9OICsgJ0R1cmF0aW9uJyk7XHJcbiAgICBjb25zdCBhbmltYXRpb25UaW1lb3V0ID0gZ2V0VGltZW91dChhbmltYXRpb25EZWxheXMsIGFuaW1hdGlvbkR1cmF0aW9ucyk7XHJcbiAgICBsZXQgdHlwZSA9IG51bGw7XHJcbiAgICBsZXQgdGltZW91dCA9IDA7XHJcbiAgICBsZXQgcHJvcENvdW50ID0gMDtcclxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xyXG4gICAgaWYgKGV4cGVjdGVkVHlwZSA9PT0gVFJBTlNJVElPTikge1xyXG4gICAgICAgIGlmICh0cmFuc2l0aW9uVGltZW91dCA+IDApIHtcclxuICAgICAgICAgICAgdHlwZSA9IFRSQU5TSVRJT047XHJcbiAgICAgICAgICAgIHRpbWVvdXQgPSB0cmFuc2l0aW9uVGltZW91dDtcclxuICAgICAgICAgICAgcHJvcENvdW50ID0gdHJhbnNpdGlvbkR1cmF0aW9ucy5sZW5ndGg7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZXhwZWN0ZWRUeXBlID09PSBBTklNQVRJT04pIHtcclxuICAgICAgICBpZiAoYW5pbWF0aW9uVGltZW91dCA+IDApIHtcclxuICAgICAgICAgICAgdHlwZSA9IEFOSU1BVElPTjtcclxuICAgICAgICAgICAgdGltZW91dCA9IGFuaW1hdGlvblRpbWVvdXQ7XHJcbiAgICAgICAgICAgIHByb3BDb3VudCA9IGFuaW1hdGlvbkR1cmF0aW9ucy5sZW5ndGg7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgdGltZW91dCA9IE1hdGgubWF4KHRyYW5zaXRpb25UaW1lb3V0LCBhbmltYXRpb25UaW1lb3V0KTtcclxuICAgICAgICB0eXBlID1cclxuICAgICAgICAgICAgdGltZW91dCA+IDBcclxuICAgICAgICAgICAgICAgID8gdHJhbnNpdGlvblRpbWVvdXQgPiBhbmltYXRpb25UaW1lb3V0XHJcbiAgICAgICAgICAgICAgICAgICAgPyBUUkFOU0lUSU9OXHJcbiAgICAgICAgICAgICAgICAgICAgOiBBTklNQVRJT05cclxuICAgICAgICAgICAgICAgIDogbnVsbDtcclxuICAgICAgICBwcm9wQ291bnQgPSB0eXBlXHJcbiAgICAgICAgICAgID8gdHlwZSA9PT0gVFJBTlNJVElPTlxyXG4gICAgICAgICAgICAgICAgPyB0cmFuc2l0aW9uRHVyYXRpb25zLmxlbmd0aFxyXG4gICAgICAgICAgICAgICAgOiBhbmltYXRpb25EdXJhdGlvbnMubGVuZ3RoXHJcbiAgICAgICAgICAgIDogMDtcclxuICAgIH1cclxuICAgIGNvbnN0IGhhc1RyYW5zZm9ybSA9IHR5cGUgPT09IFRSQU5TSVRJT04gJiZcclxuICAgICAgICAvXFxiKHRyYW5zZm9ybXxhbGwpKCx8JCkvLnRlc3Qoc3R5bGVzW1RSQU5TSVRJT04gKyAnUHJvcGVydHknXSk7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHR5cGUsXHJcbiAgICAgICAgdGltZW91dCxcclxuICAgICAgICBwcm9wQ291bnQsXHJcbiAgICAgICAgaGFzVHJhbnNmb3JtXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGdldFRpbWVvdXQoZGVsYXlzLCBkdXJhdGlvbnMpIHtcclxuICAgIHdoaWxlIChkZWxheXMubGVuZ3RoIDwgZHVyYXRpb25zLmxlbmd0aCkge1xyXG4gICAgICAgIGRlbGF5cyA9IGRlbGF5cy5jb25jYXQoZGVsYXlzKTtcclxuICAgIH1cclxuICAgIHJldHVybiBNYXRoLm1heCguLi5kdXJhdGlvbnMubWFwKChkLCBpKSA9PiB0b01zKGQpICsgdG9NcyhkZWxheXNbaV0pKSk7XHJcbn1cclxuLy8gT2xkIHZlcnNpb25zIG9mIENocm9taXVtIChiZWxvdyA2MS4wLjMxNjMuMTAwKSBmb3JtYXRzIGZsb2F0aW5nIHBvaW50ZXJcclxuLy8gbnVtYmVycyBpbiBhIGxvY2FsZS1kZXBlbmRlbnQgd2F5LCB1c2luZyBhIGNvbW1hIGluc3RlYWQgb2YgYSBkb3QuXHJcbi8vIElmIGNvbW1hIGlzIG5vdCByZXBsYWNlZCB3aXRoIGEgZG90LCB0aGUgaW5wdXQgd2lsbCBiZSByb3VuZGVkIGRvd25cclxuLy8gKGkuZS4gYWN0aW5nIGFzIGEgZmxvb3IgZnVuY3Rpb24pIGNhdXNpbmcgdW5leHBlY3RlZCBiZWhhdmlvcnNcclxuZnVuY3Rpb24gdG9NcyhzKSB7XHJcbiAgICByZXR1cm4gTnVtYmVyKHMuc2xpY2UoMCwgLTEpLnJlcGxhY2UoJywnLCAnLicpKSAqIDEwMDA7XHJcbn1cclxuLy8gc3luY2hyb25vdXNseSBmb3JjZSBsYXlvdXQgdG8gcHV0IGVsZW1lbnRzIGludG8gYSBjZXJ0YWluIHN0YXRlXHJcbmZ1bmN0aW9uIGZvcmNlUmVmbG93KCkge1xyXG4gICAgcmV0dXJuIGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0O1xyXG59XG5cbmNvbnN0IHBvc2l0aW9uTWFwID0gbmV3IFdlYWtNYXAoKTtcclxuY29uc3QgbmV3UG9zaXRpb25NYXAgPSBuZXcgV2Vha01hcCgpO1xyXG5jb25zdCBUcmFuc2l0aW9uR3JvdXBJbXBsID0ge1xyXG4gICAgbmFtZTogJ1RyYW5zaXRpb25Hcm91cCcsXHJcbiAgICBwcm9wczogLyojX19QVVJFX18qLyBleHRlbmQoe30sIFRyYW5zaXRpb25Qcm9wc1ZhbGlkYXRvcnMsIHtcclxuICAgICAgICB0YWc6IFN0cmluZyxcclxuICAgICAgICBtb3ZlQ2xhc3M6IFN0cmluZ1xyXG4gICAgfSksXHJcbiAgICBzZXR1cChwcm9wcywgeyBzbG90cyB9KSB7XHJcbiAgICAgICAgY29uc3QgaW5zdGFuY2UgPSBnZXRDdXJyZW50SW5zdGFuY2UoKTtcclxuICAgICAgICBjb25zdCBzdGF0ZSA9IHVzZVRyYW5zaXRpb25TdGF0ZSgpO1xyXG4gICAgICAgIGxldCBwcmV2Q2hpbGRyZW47XHJcbiAgICAgICAgbGV0IGNoaWxkcmVuO1xyXG4gICAgICAgIG9uVXBkYXRlZCgoKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIGNoaWxkcmVuIGlzIGd1YXJhbnRlZWQgdG8gZXhpc3QgYWZ0ZXIgaW5pdGlhbCByZW5kZXJcclxuICAgICAgICAgICAgaWYgKCFwcmV2Q2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgbW92ZUNsYXNzID0gcHJvcHMubW92ZUNsYXNzIHx8IGAke3Byb3BzLm5hbWUgfHwgJ3YnfS1tb3ZlYDtcclxuICAgICAgICAgICAgaWYgKCFoYXNDU1NUcmFuc2Zvcm0ocHJldkNoaWxkcmVuWzBdLmVsLCBpbnN0YW5jZS52bm9kZS5lbCwgbW92ZUNsYXNzKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHdlIGRpdmlkZSB0aGUgd29yayBpbnRvIHRocmVlIGxvb3BzIHRvIGF2b2lkIG1peGluZyBET00gcmVhZHMgYW5kIHdyaXRlc1xyXG4gICAgICAgICAgICAvLyBpbiBlYWNoIGl0ZXJhdGlvbiAtIHdoaWNoIGhlbHBzIHByZXZlbnQgbGF5b3V0IHRocmFzaGluZy5cclxuICAgICAgICAgICAgcHJldkNoaWxkcmVuLmZvckVhY2goY2FsbFBlbmRpbmdDYnMpO1xyXG4gICAgICAgICAgICBwcmV2Q2hpbGRyZW4uZm9yRWFjaChyZWNvcmRQb3NpdGlvbik7XHJcbiAgICAgICAgICAgIGNvbnN0IG1vdmVkQ2hpbGRyZW4gPSBwcmV2Q2hpbGRyZW4uZmlsdGVyKGFwcGx5VHJhbnNsYXRpb24pO1xyXG4gICAgICAgICAgICAvLyBmb3JjZSByZWZsb3cgdG8gcHV0IGV2ZXJ5dGhpbmcgaW4gcG9zaXRpb25cclxuICAgICAgICAgICAgZm9yY2VSZWZsb3coKTtcclxuICAgICAgICAgICAgbW92ZWRDaGlsZHJlbi5mb3JFYWNoKGMgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZWwgPSBjLmVsO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3R5bGUgPSBlbC5zdHlsZTtcclxuICAgICAgICAgICAgICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgbW92ZUNsYXNzKTtcclxuICAgICAgICAgICAgICAgIHN0eWxlLnRyYW5zZm9ybSA9IHN0eWxlLndlYmtpdFRyYW5zZm9ybSA9IHN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbiA9ICcnO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2IgPSAoZWwuX21vdmVDYiA9IChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGUgJiYgZS50YXJnZXQgIT09IGVsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFlIHx8IC90cmFuc2Zvcm0kLy50ZXN0KGUucHJvcGVydHlOYW1lKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgY2IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbC5fbW92ZUNiID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBtb3ZlQ2xhc3MpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIGNiKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgcmF3UHJvcHMgPSB0b1Jhdyhwcm9wcyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGNzc1RyYW5zaXRpb25Qcm9wcyA9IHJlc29sdmVUcmFuc2l0aW9uUHJvcHMocmF3UHJvcHMpO1xyXG4gICAgICAgICAgICBsZXQgdGFnID0gcmF3UHJvcHMudGFnIHx8IEZyYWdtZW50O1xyXG4gICAgICAgICAgICBwcmV2Q2hpbGRyZW4gPSBjaGlsZHJlbjtcclxuICAgICAgICAgICAgY2hpbGRyZW4gPSBzbG90cy5kZWZhdWx0ID8gZ2V0VHJhbnNpdGlvblJhd0NoaWxkcmVuKHNsb3RzLmRlZmF1bHQoKSkgOiBbXTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGQgPSBjaGlsZHJlbltpXTtcclxuICAgICAgICAgICAgICAgIGlmIChjaGlsZC5rZXkgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNldFRyYW5zaXRpb25Ib29rcyhjaGlsZCwgcmVzb2x2ZVRyYW5zaXRpb25Ib29rcyhjaGlsZCwgY3NzVHJhbnNpdGlvblByb3BzLCBzdGF0ZSwgaW5zdGFuY2UpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhcm4oYDxUcmFuc2l0aW9uR3JvdXA+IGNoaWxkcmVuIG11c3QgYmUga2V5ZWQuYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHByZXZDaGlsZHJlbikge1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcmV2Q2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGlsZCA9IHByZXZDaGlsZHJlbltpXTtcclxuICAgICAgICAgICAgICAgICAgICBzZXRUcmFuc2l0aW9uSG9va3MoY2hpbGQsIHJlc29sdmVUcmFuc2l0aW9uSG9va3MoY2hpbGQsIGNzc1RyYW5zaXRpb25Qcm9wcywgc3RhdGUsIGluc3RhbmNlKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25NYXAuc2V0KGNoaWxkLCBjaGlsZC5lbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVZOb2RlKHRhZywgbnVsbCwgY2hpbGRyZW4pO1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn07XHJcbmNvbnN0IFRyYW5zaXRpb25Hcm91cCA9IFRyYW5zaXRpb25Hcm91cEltcGw7XHJcbmZ1bmN0aW9uIGNhbGxQZW5kaW5nQ2JzKGMpIHtcclxuICAgIGNvbnN0IGVsID0gYy5lbDtcclxuICAgIGlmIChlbC5fbW92ZUNiKSB7XHJcbiAgICAgICAgZWwuX21vdmVDYigpO1xyXG4gICAgfVxyXG4gICAgaWYgKGVsLl9lbnRlckNiKSB7XHJcbiAgICAgICAgZWwuX2VudGVyQ2IoKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiByZWNvcmRQb3NpdGlvbihjKSB7XHJcbiAgICBuZXdQb3NpdGlvbk1hcC5zZXQoYywgYy5lbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7XHJcbn1cclxuZnVuY3Rpb24gYXBwbHlUcmFuc2xhdGlvbihjKSB7XHJcbiAgICBjb25zdCBvbGRQb3MgPSBwb3NpdGlvbk1hcC5nZXQoYyk7XHJcbiAgICBjb25zdCBuZXdQb3MgPSBuZXdQb3NpdGlvbk1hcC5nZXQoYyk7XHJcbiAgICBjb25zdCBkeCA9IG9sZFBvcy5sZWZ0IC0gbmV3UG9zLmxlZnQ7XHJcbiAgICBjb25zdCBkeSA9IG9sZFBvcy50b3AgLSBuZXdQb3MudG9wO1xyXG4gICAgaWYgKGR4IHx8IGR5KSB7XHJcbiAgICAgICAgY29uc3QgcyA9IGMuZWwuc3R5bGU7XHJcbiAgICAgICAgcy50cmFuc2Zvcm0gPSBzLndlYmtpdFRyYW5zZm9ybSA9IGB0cmFuc2xhdGUoJHtkeH1weCwke2R5fXB4KWA7XHJcbiAgICAgICAgcy50cmFuc2l0aW9uRHVyYXRpb24gPSAnMHMnO1xyXG4gICAgICAgIHJldHVybiBjO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGhhc0NTU1RyYW5zZm9ybShlbCwgcm9vdCwgbW92ZUNsYXNzKSB7XHJcbiAgICAvLyBEZXRlY3Qgd2hldGhlciBhbiBlbGVtZW50IHdpdGggdGhlIG1vdmUgY2xhc3MgYXBwbGllZCBoYXNcclxuICAgIC8vIENTUyB0cmFuc2l0aW9ucy4gU2luY2UgdGhlIGVsZW1lbnQgbWF5IGJlIGluc2lkZSBhbiBlbnRlcmluZ1xyXG4gICAgLy8gdHJhbnNpdGlvbiBhdCB0aGlzIHZlcnkgbW9tZW50LCB3ZSBtYWtlIGEgY2xvbmUgb2YgaXQgYW5kIHJlbW92ZVxyXG4gICAgLy8gYWxsIG90aGVyIHRyYW5zaXRpb24gY2xhc3NlcyBhcHBsaWVkIHRvIGVuc3VyZSBvbmx5IHRoZSBtb3ZlIGNsYXNzXHJcbiAgICAvLyBpcyBhcHBsaWVkLlxyXG4gICAgY29uc3QgY2xvbmUgPSBlbC5jbG9uZU5vZGUoKTtcclxuICAgIGlmIChlbC5fdnRjKSB7XHJcbiAgICAgICAgZWwuX3Z0Yy5mb3JFYWNoKGNscyA9PiB7XHJcbiAgICAgICAgICAgIGNscy5zcGxpdCgvXFxzKy8pLmZvckVhY2goYyA9PiBjICYmIGNsb25lLmNsYXNzTGlzdC5yZW1vdmUoYykpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgbW92ZUNsYXNzLnNwbGl0KC9cXHMrLykuZm9yRWFjaChjID0+IGMgJiYgY2xvbmUuY2xhc3NMaXN0LmFkZChjKSk7XHJcbiAgICBjbG9uZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgY29uc3QgY29udGFpbmVyID0gKHJvb3Qubm9kZVR5cGUgPT09IDEgPyByb290IDogcm9vdC5wYXJlbnROb2RlKTtcclxuICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChjbG9uZSk7XHJcbiAgICBjb25zdCB7IGhhc1RyYW5zZm9ybSB9ID0gZ2V0VHJhbnNpdGlvbkluZm8oY2xvbmUpO1xyXG4gICAgY29udGFpbmVyLnJlbW92ZUNoaWxkKGNsb25lKTtcclxuICAgIHJldHVybiBoYXNUcmFuc2Zvcm07XHJcbn1cblxuY29uc3QgZ2V0TW9kZWxBc3NpZ25lciA9ICh2bm9kZSkgPT4ge1xyXG4gICAgY29uc3QgZm4gPSB2bm9kZS5wcm9wc1snb25VcGRhdGU6bW9kZWxWYWx1ZSddIHx8XHJcbiAgICAgICAgKGZhbHNlICk7XHJcbiAgICByZXR1cm4gaXNBcnJheShmbikgPyB2YWx1ZSA9PiBpbnZva2VBcnJheUZucyhmbiwgdmFsdWUpIDogZm47XHJcbn07XHJcbmZ1bmN0aW9uIG9uQ29tcG9zaXRpb25TdGFydChlKSB7XHJcbiAgICBlLnRhcmdldC5jb21wb3NpbmcgPSB0cnVlO1xyXG59XHJcbmZ1bmN0aW9uIG9uQ29tcG9zaXRpb25FbmQoZSkge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gZS50YXJnZXQ7XHJcbiAgICBpZiAodGFyZ2V0LmNvbXBvc2luZykge1xyXG4gICAgICAgIHRhcmdldC5jb21wb3NpbmcgPSBmYWxzZTtcclxuICAgICAgICB0YXJnZXQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2lucHV0JykpO1xyXG4gICAgfVxyXG59XHJcbi8vIFdlIGFyZSBleHBvcnRpbmcgdGhlIHYtbW9kZWwgcnVudGltZSBkaXJlY3RseSBhcyB2bm9kZSBob29rcyBzbyB0aGF0IGl0IGNhblxyXG4vLyBiZSB0cmVlLXNoYWtlbiBpbiBjYXNlIHYtbW9kZWwgaXMgbmV2ZXIgdXNlZC5cclxuY29uc3Qgdk1vZGVsVGV4dCA9IHtcclxuICAgIGNyZWF0ZWQoZWwsIHsgbW9kaWZpZXJzOiB7IGxhenksIHRyaW0sIG51bWJlciB9IH0sIHZub2RlKSB7XHJcbiAgICAgICAgZWwuX2Fzc2lnbiA9IGdldE1vZGVsQXNzaWduZXIodm5vZGUpO1xyXG4gICAgICAgIGNvbnN0IGNhc3RUb051bWJlciA9IG51bWJlciB8fCAodm5vZGUucHJvcHMgJiYgdm5vZGUucHJvcHMudHlwZSA9PT0gJ251bWJlcicpO1xyXG4gICAgICAgIGFkZEV2ZW50TGlzdGVuZXIoZWwsIGxhenkgPyAnY2hhbmdlJyA6ICdpbnB1dCcsIGUgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZS50YXJnZXQuY29tcG9zaW5nKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICBsZXQgZG9tVmFsdWUgPSBlbC52YWx1ZTtcclxuICAgICAgICAgICAgaWYgKHRyaW0pIHtcclxuICAgICAgICAgICAgICAgIGRvbVZhbHVlID0gZG9tVmFsdWUudHJpbSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChjYXN0VG9OdW1iZXIpIHtcclxuICAgICAgICAgICAgICAgIGRvbVZhbHVlID0gdG9OdW1iZXIoZG9tVmFsdWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsLl9hc3NpZ24oZG9tVmFsdWUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmICh0cmltKSB7XHJcbiAgICAgICAgICAgIGFkZEV2ZW50TGlzdGVuZXIoZWwsICdjaGFuZ2UnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBlbC52YWx1ZSA9IGVsLnZhbHVlLnRyaW0oKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghbGF6eSkge1xyXG4gICAgICAgICAgICBhZGRFdmVudExpc3RlbmVyKGVsLCAnY29tcG9zaXRpb25zdGFydCcsIG9uQ29tcG9zaXRpb25TdGFydCk7XHJcbiAgICAgICAgICAgIGFkZEV2ZW50TGlzdGVuZXIoZWwsICdjb21wb3NpdGlvbmVuZCcsIG9uQ29tcG9zaXRpb25FbmQpO1xyXG4gICAgICAgICAgICAvLyBTYWZhcmkgPCAxMC4yICYgVUlXZWJWaWV3IGRvZXNuJ3QgZmlyZSBjb21wb3NpdGlvbmVuZCB3aGVuXHJcbiAgICAgICAgICAgIC8vIHN3aXRjaGluZyBmb2N1cyBiZWZvcmUgY29uZmlybWluZyBjb21wb3NpdGlvbiBjaG9pY2VcclxuICAgICAgICAgICAgLy8gdGhpcyBhbHNvIGZpeGVzIHRoZSBpc3N1ZSB3aGVyZSBzb21lIGJyb3dzZXJzIGUuZy4gaU9TIENocm9tZVxyXG4gICAgICAgICAgICAvLyBmaXJlcyBcImNoYW5nZVwiIGluc3RlYWQgb2YgXCJpbnB1dFwiIG9uIGF1dG9jb21wbGV0ZS5cclxuICAgICAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcihlbCwgJ2NoYW5nZScsIG9uQ29tcG9zaXRpb25FbmQpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICAvLyBzZXQgdmFsdWUgb24gbW91bnRlZCBzbyBpdCdzIGFmdGVyIG1pbi9tYXggZm9yIHR5cGU9XCJyYW5nZVwiXHJcbiAgICBtb3VudGVkKGVsLCB7IHZhbHVlIH0pIHtcclxuICAgICAgICBlbC52YWx1ZSA9IHZhbHVlID09IG51bGwgPyAnJyA6IHZhbHVlO1xyXG4gICAgfSxcclxuICAgIGJlZm9yZVVwZGF0ZShlbCwgeyB2YWx1ZSwgbW9kaWZpZXJzOiB7IGxhenksIHRyaW0sIG51bWJlciB9IH0sIHZub2RlKSB7XHJcbiAgICAgICAgZWwuX2Fzc2lnbiA9IGdldE1vZGVsQXNzaWduZXIodm5vZGUpO1xyXG4gICAgICAgIC8vIGF2b2lkIGNsZWFyaW5nIHVucmVzb2x2ZWQgdGV4dC4gIzIzMDJcclxuICAgICAgICBpZiAoZWwuY29tcG9zaW5nKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGVsICYmIGVsLnR5cGUgIT09ICdyYW5nZScpIHtcclxuICAgICAgICAgICAgaWYgKGxhenkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodHJpbSAmJiBlbC52YWx1ZS50cmltKCkgPT09IHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKChudW1iZXIgfHwgZWwudHlwZSA9PT0gJ251bWJlcicpICYmIHRvTnVtYmVyKGVsLnZhbHVlKSA9PT0gdmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHZhbHVlID09IG51bGwgPyAnJyA6IHZhbHVlO1xyXG4gICAgICAgIGlmIChlbC52YWx1ZSAhPT0gbmV3VmFsdWUpIHtcclxuICAgICAgICAgICAgZWwudmFsdWUgPSBuZXdWYWx1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XHJcbmNvbnN0IHZNb2RlbENoZWNrYm94ID0ge1xyXG4gICAgLy8gIzQwOTYgYXJyYXkgY2hlY2tib3hlcyBuZWVkIHRvIGJlIGRlZXAgdHJhdmVyc2VkXHJcbiAgICBkZWVwOiB0cnVlLFxyXG4gICAgY3JlYXRlZChlbCwgXywgdm5vZGUpIHtcclxuICAgICAgICBlbC5fYXNzaWduID0gZ2V0TW9kZWxBc3NpZ25lcih2bm9kZSk7XHJcbiAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcihlbCwgJ2NoYW5nZScsICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgbW9kZWxWYWx1ZSA9IGVsLl9tb2RlbFZhbHVlO1xyXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50VmFsdWUgPSBnZXRWYWx1ZShlbCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoZWNrZWQgPSBlbC5jaGVja2VkO1xyXG4gICAgICAgICAgICBjb25zdCBhc3NpZ24gPSBlbC5fYXNzaWduO1xyXG4gICAgICAgICAgICBpZiAoaXNBcnJheShtb2RlbFZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSBsb29zZUluZGV4T2YobW9kZWxWYWx1ZSwgZWxlbWVudFZhbHVlKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZvdW5kID0gaW5kZXggIT09IC0xO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNoZWNrZWQgJiYgIWZvdW5kKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXNzaWduKG1vZGVsVmFsdWUuY29uY2F0KGVsZW1lbnRWYWx1ZSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoIWNoZWNrZWQgJiYgZm91bmQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZCA9IFsuLi5tb2RlbFZhbHVlXTtcclxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJlZC5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgIGFzc2lnbihmaWx0ZXJlZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoaXNTZXQobW9kZWxWYWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNsb25lZCA9IG5ldyBTZXQobW9kZWxWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2hlY2tlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNsb25lZC5hZGQoZWxlbWVudFZhbHVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGNsb25lZC5kZWxldGUoZWxlbWVudFZhbHVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGFzc2lnbihjbG9uZWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgYXNzaWduKGdldENoZWNrYm94VmFsdWUoZWwsIGNoZWNrZWQpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSxcclxuICAgIC8vIHNldCBpbml0aWFsIGNoZWNrZWQgb24gbW91bnQgdG8gd2FpdCBmb3IgdHJ1ZS12YWx1ZS9mYWxzZS12YWx1ZVxyXG4gICAgbW91bnRlZDogc2V0Q2hlY2tlZCxcclxuICAgIGJlZm9yZVVwZGF0ZShlbCwgYmluZGluZywgdm5vZGUpIHtcclxuICAgICAgICBlbC5fYXNzaWduID0gZ2V0TW9kZWxBc3NpZ25lcih2bm9kZSk7XHJcbiAgICAgICAgc2V0Q2hlY2tlZChlbCwgYmluZGluZywgdm5vZGUpO1xyXG4gICAgfVxyXG59O1xyXG5mdW5jdGlvbiBzZXRDaGVja2VkKGVsLCB7IHZhbHVlLCBvbGRWYWx1ZSB9LCB2bm9kZSkge1xyXG4gICAgZWwuX21vZGVsVmFsdWUgPSB2YWx1ZTtcclxuICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICAgIGVsLmNoZWNrZWQgPSBsb29zZUluZGV4T2YodmFsdWUsIHZub2RlLnByb3BzLnZhbHVlKSA+IC0xO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNTZXQodmFsdWUpKSB7XHJcbiAgICAgICAgZWwuY2hlY2tlZCA9IHZhbHVlLmhhcyh2bm9kZS5wcm9wcy52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh2YWx1ZSAhPT0gb2xkVmFsdWUpIHtcclxuICAgICAgICBlbC5jaGVja2VkID0gbG9vc2VFcXVhbCh2YWx1ZSwgZ2V0Q2hlY2tib3hWYWx1ZShlbCwgdHJ1ZSkpO1xyXG4gICAgfVxyXG59XHJcbmNvbnN0IHZNb2RlbFJhZGlvID0ge1xyXG4gICAgY3JlYXRlZChlbCwgeyB2YWx1ZSB9LCB2bm9kZSkge1xyXG4gICAgICAgIGVsLmNoZWNrZWQgPSBsb29zZUVxdWFsKHZhbHVlLCB2bm9kZS5wcm9wcy52YWx1ZSk7XHJcbiAgICAgICAgZWwuX2Fzc2lnbiA9IGdldE1vZGVsQXNzaWduZXIodm5vZGUpO1xyXG4gICAgICAgIGFkZEV2ZW50TGlzdGVuZXIoZWwsICdjaGFuZ2UnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGVsLl9hc3NpZ24oZ2V0VmFsdWUoZWwpKTtcclxuICAgICAgICB9KTtcclxuICAgIH0sXHJcbiAgICBiZWZvcmVVcGRhdGUoZWwsIHsgdmFsdWUsIG9sZFZhbHVlIH0sIHZub2RlKSB7XHJcbiAgICAgICAgZWwuX2Fzc2lnbiA9IGdldE1vZGVsQXNzaWduZXIodm5vZGUpO1xyXG4gICAgICAgIGlmICh2YWx1ZSAhPT0gb2xkVmFsdWUpIHtcclxuICAgICAgICAgICAgZWwuY2hlY2tlZCA9IGxvb3NlRXF1YWwodmFsdWUsIHZub2RlLnByb3BzLnZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XHJcbmNvbnN0IHZNb2RlbFNlbGVjdCA9IHtcclxuICAgIC8vIDxzZWxlY3QgbXVsdGlwbGU+IHZhbHVlIG5lZWQgdG8gYmUgZGVlcCB0cmF2ZXJzZWRcclxuICAgIGRlZXA6IHRydWUsXHJcbiAgICBjcmVhdGVkKGVsLCB7IHZhbHVlLCBtb2RpZmllcnM6IHsgbnVtYmVyIH0gfSwgdm5vZGUpIHtcclxuICAgICAgICBjb25zdCBpc1NldE1vZGVsID0gaXNTZXQodmFsdWUpO1xyXG4gICAgICAgIGFkZEV2ZW50TGlzdGVuZXIoZWwsICdjaGFuZ2UnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkVmFsID0gQXJyYXkucHJvdG90eXBlLmZpbHRlclxyXG4gICAgICAgICAgICAgICAgLmNhbGwoZWwub3B0aW9ucywgKG8pID0+IG8uc2VsZWN0ZWQpXHJcbiAgICAgICAgICAgICAgICAubWFwKChvKSA9PiBudW1iZXIgPyB0b051bWJlcihnZXRWYWx1ZShvKSkgOiBnZXRWYWx1ZShvKSk7XHJcbiAgICAgICAgICAgIGVsLl9hc3NpZ24oZWwubXVsdGlwbGVcclxuICAgICAgICAgICAgICAgID8gaXNTZXRNb2RlbFxyXG4gICAgICAgICAgICAgICAgICAgID8gbmV3IFNldChzZWxlY3RlZFZhbClcclxuICAgICAgICAgICAgICAgICAgICA6IHNlbGVjdGVkVmFsXHJcbiAgICAgICAgICAgICAgICA6IHNlbGVjdGVkVmFsWzBdKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBlbC5fYXNzaWduID0gZ2V0TW9kZWxBc3NpZ25lcih2bm9kZSk7XHJcbiAgICB9LFxyXG4gICAgLy8gc2V0IHZhbHVlIGluIG1vdW50ZWQgJiB1cGRhdGVkIGJlY2F1c2UgPHNlbGVjdD4gcmVsaWVzIG9uIGl0cyBjaGlsZHJlblxyXG4gICAgLy8gPG9wdGlvbj5zLlxyXG4gICAgbW91bnRlZChlbCwgeyB2YWx1ZSB9KSB7XHJcbiAgICAgICAgc2V0U2VsZWN0ZWQoZWwsIHZhbHVlKTtcclxuICAgIH0sXHJcbiAgICBiZWZvcmVVcGRhdGUoZWwsIF9iaW5kaW5nLCB2bm9kZSkge1xyXG4gICAgICAgIGVsLl9hc3NpZ24gPSBnZXRNb2RlbEFzc2lnbmVyKHZub2RlKTtcclxuICAgIH0sXHJcbiAgICB1cGRhdGVkKGVsLCB7IHZhbHVlIH0pIHtcclxuICAgICAgICBzZXRTZWxlY3RlZChlbCwgdmFsdWUpO1xyXG4gICAgfVxyXG59O1xyXG5mdW5jdGlvbiBzZXRTZWxlY3RlZChlbCwgdmFsdWUpIHtcclxuICAgIGNvbnN0IGlzTXVsdGlwbGUgPSBlbC5tdWx0aXBsZTtcclxuICAgIGlmIChpc011bHRpcGxlICYmICFpc0FycmF5KHZhbHVlKSAmJiAhaXNTZXQodmFsdWUpKSB7XHJcbiAgICAgICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgICAgIHdhcm4oYDxzZWxlY3QgbXVsdGlwbGUgdi1tb2RlbD4gZXhwZWN0cyBhbiBBcnJheSBvciBTZXQgdmFsdWUgZm9yIGl0cyBiaW5kaW5nLCBgICtcclxuICAgICAgICAgICAgICAgIGBidXQgZ290ICR7T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKS5zbGljZSg4LCAtMSl9LmApO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGZvciAobGV0IGkgPSAwLCBsID0gZWwub3B0aW9ucy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICBjb25zdCBvcHRpb24gPSBlbC5vcHRpb25zW2ldO1xyXG4gICAgICAgIGNvbnN0IG9wdGlvblZhbHVlID0gZ2V0VmFsdWUob3B0aW9uKTtcclxuICAgICAgICBpZiAoaXNNdWx0aXBsZSkge1xyXG4gICAgICAgICAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIG9wdGlvbi5zZWxlY3RlZCA9IGxvb3NlSW5kZXhPZih2YWx1ZSwgb3B0aW9uVmFsdWUpID4gLTE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBvcHRpb24uc2VsZWN0ZWQgPSB2YWx1ZS5oYXMob3B0aW9uVmFsdWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAobG9vc2VFcXVhbChnZXRWYWx1ZShvcHRpb24pLCB2YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIGlmIChlbC5zZWxlY3RlZEluZGV4ICE9PSBpKVxyXG4gICAgICAgICAgICAgICAgICAgIGVsLnNlbGVjdGVkSW5kZXggPSBpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCFpc011bHRpcGxlICYmIGVsLnNlbGVjdGVkSW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgZWwuc2VsZWN0ZWRJbmRleCA9IC0xO1xyXG4gICAgfVxyXG59XHJcbi8vIHJldHJpZXZlIHJhdyB2YWx1ZSBzZXQgdmlhIDp2YWx1ZSBiaW5kaW5nc1xyXG5mdW5jdGlvbiBnZXRWYWx1ZShlbCkge1xyXG4gICAgcmV0dXJuICdfdmFsdWUnIGluIGVsID8gZWwuX3ZhbHVlIDogZWwudmFsdWU7XHJcbn1cclxuLy8gcmV0cmlldmUgcmF3IHZhbHVlIGZvciB0cnVlLXZhbHVlIGFuZCBmYWxzZS12YWx1ZSBzZXQgdmlhIDp0cnVlLXZhbHVlIG9yIDpmYWxzZS12YWx1ZSBiaW5kaW5nc1xyXG5mdW5jdGlvbiBnZXRDaGVja2JveFZhbHVlKGVsLCBjaGVja2VkKSB7XHJcbiAgICBjb25zdCBrZXkgPSBjaGVja2VkID8gJ190cnVlVmFsdWUnIDogJ19mYWxzZVZhbHVlJztcclxuICAgIHJldHVybiBrZXkgaW4gZWwgPyBlbFtrZXldIDogY2hlY2tlZDtcclxufVxyXG5jb25zdCB2TW9kZWxEeW5hbWljID0ge1xyXG4gICAgY3JlYXRlZChlbCwgYmluZGluZywgdm5vZGUpIHtcclxuICAgICAgICBjYWxsTW9kZWxIb29rKGVsLCBiaW5kaW5nLCB2bm9kZSwgbnVsbCwgJ2NyZWF0ZWQnKTtcclxuICAgIH0sXHJcbiAgICBtb3VudGVkKGVsLCBiaW5kaW5nLCB2bm9kZSkge1xyXG4gICAgICAgIGNhbGxNb2RlbEhvb2soZWwsIGJpbmRpbmcsIHZub2RlLCBudWxsLCAnbW91bnRlZCcpO1xyXG4gICAgfSxcclxuICAgIGJlZm9yZVVwZGF0ZShlbCwgYmluZGluZywgdm5vZGUsIHByZXZWTm9kZSkge1xyXG4gICAgICAgIGNhbGxNb2RlbEhvb2soZWwsIGJpbmRpbmcsIHZub2RlLCBwcmV2Vk5vZGUsICdiZWZvcmVVcGRhdGUnKTtcclxuICAgIH0sXHJcbiAgICB1cGRhdGVkKGVsLCBiaW5kaW5nLCB2bm9kZSwgcHJldlZOb2RlKSB7XHJcbiAgICAgICAgY2FsbE1vZGVsSG9vayhlbCwgYmluZGluZywgdm5vZGUsIHByZXZWTm9kZSwgJ3VwZGF0ZWQnKTtcclxuICAgIH1cclxufTtcclxuZnVuY3Rpb24gcmVzb2x2ZUR5bmFtaWNNb2RlbCh0YWdOYW1lLCB0eXBlKSB7XHJcbiAgICBzd2l0Y2ggKHRhZ05hbWUpIHtcclxuICAgICAgICBjYXNlICdTRUxFQ1QnOlxyXG4gICAgICAgICAgICByZXR1cm4gdk1vZGVsU2VsZWN0O1xyXG4gICAgICAgIGNhc2UgJ1RFWFRBUkVBJzpcclxuICAgICAgICAgICAgcmV0dXJuIHZNb2RlbFRleHQ7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdjaGVja2JveCc6XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZNb2RlbENoZWNrYm94O1xyXG4gICAgICAgICAgICAgICAgY2FzZSAncmFkaW8nOlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2TW9kZWxSYWRpbztcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZNb2RlbFRleHQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBjYWxsTW9kZWxIb29rKGVsLCBiaW5kaW5nLCB2bm9kZSwgcHJldlZOb2RlLCBob29rKSB7XHJcbiAgICBjb25zdCBtb2RlbFRvVXNlID0gcmVzb2x2ZUR5bmFtaWNNb2RlbChlbC50YWdOYW1lLCB2bm9kZS5wcm9wcyAmJiB2bm9kZS5wcm9wcy50eXBlKTtcclxuICAgIGNvbnN0IGZuID0gbW9kZWxUb1VzZVtob29rXTtcclxuICAgIGZuICYmIGZuKGVsLCBiaW5kaW5nLCB2bm9kZSwgcHJldlZOb2RlKTtcclxufVxyXG4vLyBTU1Igdm5vZGUgdHJhbnNmb3Jtcywgb25seSB1c2VkIHdoZW4gdXNlciBpbmNsdWRlcyBjbGllbnQtb3JpZW50ZWQgcmVuZGVyXHJcbi8vIGZ1bmN0aW9uIGluIFNTUlxyXG5mdW5jdGlvbiBpbml0Vk1vZGVsRm9yU1NSKCkge1xyXG4gICAgdk1vZGVsVGV4dC5nZXRTU1JQcm9wcyA9ICh7IHZhbHVlIH0pID0+ICh7IHZhbHVlIH0pO1xyXG4gICAgdk1vZGVsUmFkaW8uZ2V0U1NSUHJvcHMgPSAoeyB2YWx1ZSB9LCB2bm9kZSkgPT4ge1xyXG4gICAgICAgIGlmICh2bm9kZS5wcm9wcyAmJiBsb29zZUVxdWFsKHZub2RlLnByb3BzLnZhbHVlLCB2YWx1ZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHsgY2hlY2tlZDogdHJ1ZSB9O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICB2TW9kZWxDaGVja2JveC5nZXRTU1JQcm9wcyA9ICh7IHZhbHVlIH0sIHZub2RlKSA9PiB7XHJcbiAgICAgICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgICAgICAgIGlmICh2bm9kZS5wcm9wcyAmJiBsb29zZUluZGV4T2YodmFsdWUsIHZub2RlLnByb3BzLnZhbHVlKSA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4geyBjaGVja2VkOiB0cnVlIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaXNTZXQodmFsdWUpKSB7XHJcbiAgICAgICAgICAgIGlmICh2bm9kZS5wcm9wcyAmJiB2YWx1ZS5oYXModm5vZGUucHJvcHMudmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4geyBjaGVja2VkOiB0cnVlIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHsgY2hlY2tlZDogdHJ1ZSB9O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICB2TW9kZWxEeW5hbWljLmdldFNTUlByb3BzID0gKGJpbmRpbmcsIHZub2RlKSA9PiB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB2bm9kZS50eXBlICE9PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IG1vZGVsVG9Vc2UgPSByZXNvbHZlRHluYW1pY01vZGVsKFxyXG4gICAgICAgIC8vIHJlc29sdmVEeW5hbWljTW9kZWwgZXhwZWN0cyBhbiB1cHBlcmNhc2UgdGFnIG5hbWUsIGJ1dCB2bm9kZS50eXBlIGlzIGxvd2VyY2FzZVxyXG4gICAgICAgIHZub2RlLnR5cGUudG9VcHBlckNhc2UoKSwgdm5vZGUucHJvcHMgJiYgdm5vZGUucHJvcHMudHlwZSk7XHJcbiAgICAgICAgaWYgKG1vZGVsVG9Vc2UuZ2V0U1NSUHJvcHMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG1vZGVsVG9Vc2UuZ2V0U1NSUHJvcHMoYmluZGluZywgdm5vZGUpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbn1cblxuY29uc3Qgc3lzdGVtTW9kaWZpZXJzID0gWydjdHJsJywgJ3NoaWZ0JywgJ2FsdCcsICdtZXRhJ107XHJcbmNvbnN0IG1vZGlmaWVyR3VhcmRzID0ge1xyXG4gICAgc3RvcDogZSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpLFxyXG4gICAgcHJldmVudDogZSA9PiBlLnByZXZlbnREZWZhdWx0KCksXHJcbiAgICBzZWxmOiBlID0+IGUudGFyZ2V0ICE9PSBlLmN1cnJlbnRUYXJnZXQsXHJcbiAgICBjdHJsOiBlID0+ICFlLmN0cmxLZXksXHJcbiAgICBzaGlmdDogZSA9PiAhZS5zaGlmdEtleSxcclxuICAgIGFsdDogZSA9PiAhZS5hbHRLZXksXHJcbiAgICBtZXRhOiBlID0+ICFlLm1ldGFLZXksXHJcbiAgICBsZWZ0OiBlID0+ICdidXR0b24nIGluIGUgJiYgZS5idXR0b24gIT09IDAsXHJcbiAgICBtaWRkbGU6IGUgPT4gJ2J1dHRvbicgaW4gZSAmJiBlLmJ1dHRvbiAhPT0gMSxcclxuICAgIHJpZ2h0OiBlID0+ICdidXR0b24nIGluIGUgJiYgZS5idXR0b24gIT09IDIsXHJcbiAgICBleGFjdDogKGUsIG1vZGlmaWVycykgPT4gc3lzdGVtTW9kaWZpZXJzLnNvbWUobSA9PiBlW2Ake219S2V5YF0gJiYgIW1vZGlmaWVycy5pbmNsdWRlcyhtKSlcclxufTtcclxuLyoqXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5jb25zdCB3aXRoTW9kaWZpZXJzID0gKGZuLCBtb2RpZmllcnMpID0+IHtcclxuICAgIHJldHVybiAoZXZlbnQsIC4uLmFyZ3MpID0+IHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1vZGlmaWVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBndWFyZCA9IG1vZGlmaWVyR3VhcmRzW21vZGlmaWVyc1tpXV07XHJcbiAgICAgICAgICAgIGlmIChndWFyZCAmJiBndWFyZChldmVudCwgbW9kaWZpZXJzKSlcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZuKGV2ZW50LCAuLi5hcmdzKTtcclxuICAgIH07XHJcbn07XHJcbi8vIEtlcHQgZm9yIDIueCBjb21wYXQuXHJcbi8vIE5vdGU6IElFMTEgY29tcGF0IGZvciBgc3BhY2ViYXJgIGFuZCBgZGVsYCBpcyByZW1vdmVkIGZvciBub3cuXHJcbmNvbnN0IGtleU5hbWVzID0ge1xyXG4gICAgZXNjOiAnZXNjYXBlJyxcclxuICAgIHNwYWNlOiAnICcsXHJcbiAgICB1cDogJ2Fycm93LXVwJyxcclxuICAgIGxlZnQ6ICdhcnJvdy1sZWZ0JyxcclxuICAgIHJpZ2h0OiAnYXJyb3ctcmlnaHQnLFxyXG4gICAgZG93bjogJ2Fycm93LWRvd24nLFxyXG4gICAgZGVsZXRlOiAnYmFja3NwYWNlJ1xyXG59O1xyXG4vKipcclxuICogQHByaXZhdGVcclxuICovXHJcbmNvbnN0IHdpdGhLZXlzID0gKGZuLCBtb2RpZmllcnMpID0+IHtcclxuICAgIHJldHVybiAoZXZlbnQpID0+IHtcclxuICAgICAgICBpZiAoISgna2V5JyBpbiBldmVudCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBldmVudEtleSA9IGh5cGhlbmF0ZShldmVudC5rZXkpO1xyXG4gICAgICAgIGlmIChtb2RpZmllcnMuc29tZShrID0+IGsgPT09IGV2ZW50S2V5IHx8IGtleU5hbWVzW2tdID09PSBldmVudEtleSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZuKGV2ZW50KTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59O1xuXG5jb25zdCB2U2hvdyA9IHtcclxuICAgIGJlZm9yZU1vdW50KGVsLCB7IHZhbHVlIH0sIHsgdHJhbnNpdGlvbiB9KSB7XHJcbiAgICAgICAgZWwuX3ZvZCA9IGVsLnN0eWxlLmRpc3BsYXkgPT09ICdub25lJyA/ICcnIDogZWwuc3R5bGUuZGlzcGxheTtcclxuICAgICAgICBpZiAodHJhbnNpdGlvbiAmJiB2YWx1ZSkge1xyXG4gICAgICAgICAgICB0cmFuc2l0aW9uLmJlZm9yZUVudGVyKGVsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHNldERpc3BsYXkoZWwsIHZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgbW91bnRlZChlbCwgeyB2YWx1ZSB9LCB7IHRyYW5zaXRpb24gfSkge1xyXG4gICAgICAgIGlmICh0cmFuc2l0aW9uICYmIHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRyYW5zaXRpb24uZW50ZXIoZWwpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICB1cGRhdGVkKGVsLCB7IHZhbHVlLCBvbGRWYWx1ZSB9LCB7IHRyYW5zaXRpb24gfSkge1xyXG4gICAgICAgIGlmICghdmFsdWUgPT09ICFvbGRWYWx1ZSlcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIGlmICh0cmFuc2l0aW9uKSB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbi5iZWZvcmVFbnRlcihlbCk7XHJcbiAgICAgICAgICAgICAgICBzZXREaXNwbGF5KGVsLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb24uZW50ZXIoZWwpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbi5sZWF2ZShlbCwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHNldERpc3BsYXkoZWwsIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBzZXREaXNwbGF5KGVsLCB2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIGJlZm9yZVVubW91bnQoZWwsIHsgdmFsdWUgfSkge1xyXG4gICAgICAgIHNldERpc3BsYXkoZWwsIHZhbHVlKTtcclxuICAgIH1cclxufTtcclxuZnVuY3Rpb24gc2V0RGlzcGxheShlbCwgdmFsdWUpIHtcclxuICAgIGVsLnN0eWxlLmRpc3BsYXkgPSB2YWx1ZSA/IGVsLl92b2QgOiAnbm9uZSc7XHJcbn1cclxuLy8gU1NSIHZub2RlIHRyYW5zZm9ybXMsIG9ubHkgdXNlZCB3aGVuIHVzZXIgaW5jbHVkZXMgY2xpZW50LW9yaWVudGVkIHJlbmRlclxyXG4vLyBmdW5jdGlvbiBpbiBTU1JcclxuZnVuY3Rpb24gaW5pdFZTaG93Rm9yU1NSKCkge1xyXG4gICAgdlNob3cuZ2V0U1NSUHJvcHMgPSAoeyB2YWx1ZSB9KSA9PiB7XHJcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4geyBzdHlsZTogeyBkaXNwbGF5OiAnbm9uZScgfSB9O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbn1cblxuY29uc3QgcmVuZGVyZXJPcHRpb25zID0gLyojX19QVVJFX18qLyBleHRlbmQoeyBwYXRjaFByb3AgfSwgbm9kZU9wcyk7XHJcbi8vIGxhenkgY3JlYXRlIHRoZSByZW5kZXJlciAtIHRoaXMgbWFrZXMgY29yZSByZW5kZXJlciBsb2dpYyB0cmVlLXNoYWthYmxlXHJcbi8vIGluIGNhc2UgdGhlIHVzZXIgb25seSBpbXBvcnRzIHJlYWN0aXZpdHkgdXRpbGl0aWVzIGZyb20gVnVlLlxyXG5sZXQgcmVuZGVyZXI7XHJcbmxldCBlbmFibGVkSHlkcmF0aW9uID0gZmFsc2U7XHJcbmZ1bmN0aW9uIGVuc3VyZVJlbmRlcmVyKCkge1xyXG4gICAgcmV0dXJuIChyZW5kZXJlciB8fFxyXG4gICAgICAgIChyZW5kZXJlciA9IGNyZWF0ZVJlbmRlcmVyKHJlbmRlcmVyT3B0aW9ucykpKTtcclxufVxyXG5mdW5jdGlvbiBlbnN1cmVIeWRyYXRpb25SZW5kZXJlcigpIHtcclxuICAgIHJlbmRlcmVyID0gZW5hYmxlZEh5ZHJhdGlvblxyXG4gICAgICAgID8gcmVuZGVyZXJcclxuICAgICAgICA6IGNyZWF0ZUh5ZHJhdGlvblJlbmRlcmVyKHJlbmRlcmVyT3B0aW9ucyk7XHJcbiAgICBlbmFibGVkSHlkcmF0aW9uID0gdHJ1ZTtcclxuICAgIHJldHVybiByZW5kZXJlcjtcclxufVxyXG4vLyB1c2UgZXhwbGljaXQgdHlwZSBjYXN0cyBoZXJlIHRvIGF2b2lkIGltcG9ydCgpIGNhbGxzIGluIHJvbGxlZC11cCBkLnRzXHJcbmNvbnN0IHJlbmRlciA9ICgoLi4uYXJncykgPT4ge1xyXG4gICAgZW5zdXJlUmVuZGVyZXIoKS5yZW5kZXIoLi4uYXJncyk7XHJcbn0pO1xyXG5jb25zdCBoeWRyYXRlID0gKCguLi5hcmdzKSA9PiB7XHJcbiAgICBlbnN1cmVIeWRyYXRpb25SZW5kZXJlcigpLmh5ZHJhdGUoLi4uYXJncyk7XHJcbn0pO1xyXG5jb25zdCBjcmVhdGVBcHAgPSAoKC4uLmFyZ3MpID0+IHtcclxuICAgIGNvbnN0IGFwcCA9IGVuc3VyZVJlbmRlcmVyKCkuY3JlYXRlQXBwKC4uLmFyZ3MpO1xyXG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xyXG4gICAgICAgIGluamVjdE5hdGl2ZVRhZ0NoZWNrKGFwcCk7XHJcbiAgICAgICAgaW5qZWN0Q29tcGlsZXJPcHRpb25zQ2hlY2soYXBwKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgbW91bnQgfSA9IGFwcDtcclxuICAgIGFwcC5tb3VudCA9IChjb250YWluZXJPclNlbGVjdG9yKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gbm9ybWFsaXplQ29udGFpbmVyKGNvbnRhaW5lck9yU2VsZWN0b3IpO1xyXG4gICAgICAgIGlmICghY29udGFpbmVyKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gYXBwLl9jb21wb25lbnQ7XHJcbiAgICAgICAgaWYgKCFpc0Z1bmN0aW9uKGNvbXBvbmVudCkgJiYgIWNvbXBvbmVudC5yZW5kZXIgJiYgIWNvbXBvbmVudC50ZW1wbGF0ZSkge1xyXG4gICAgICAgICAgICAvLyBfX1VOU0FGRV9fXHJcbiAgICAgICAgICAgIC8vIFJlYXNvbjogcG90ZW50aWFsIGV4ZWN1dGlvbiBvZiBKUyBleHByZXNzaW9ucyBpbiBpbi1ET00gdGVtcGxhdGUuXHJcbiAgICAgICAgICAgIC8vIFRoZSB1c2VyIG11c3QgbWFrZSBzdXJlIHRoZSBpbi1ET00gdGVtcGxhdGUgaXMgdHJ1c3RlZC4gSWYgaXQnc1xyXG4gICAgICAgICAgICAvLyByZW5kZXJlZCBieSB0aGUgc2VydmVyLCB0aGUgdGVtcGxhdGUgc2hvdWxkIG5vdCBjb250YWluIGFueSB1c2VyIGRhdGEuXHJcbiAgICAgICAgICAgIGNvbXBvbmVudC50ZW1wbGF0ZSA9IGNvbnRhaW5lci5pbm5lckhUTUw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNsZWFyIGNvbnRlbnQgYmVmb3JlIG1vdW50aW5nXHJcbiAgICAgICAgY29udGFpbmVyLmlubmVySFRNTCA9ICcnO1xyXG4gICAgICAgIGNvbnN0IHByb3h5ID0gbW91bnQoY29udGFpbmVyLCBmYWxzZSwgY29udGFpbmVyIGluc3RhbmNlb2YgU1ZHRWxlbWVudCk7XHJcbiAgICAgICAgaWYgKGNvbnRhaW5lciBpbnN0YW5jZW9mIEVsZW1lbnQpIHtcclxuICAgICAgICAgICAgY29udGFpbmVyLnJlbW92ZUF0dHJpYnV0ZSgndi1jbG9haycpO1xyXG4gICAgICAgICAgICBjb250YWluZXIuc2V0QXR0cmlidXRlKCdkYXRhLXYtYXBwJywgJycpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcHJveHk7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGFwcDtcclxufSk7XHJcbmNvbnN0IGNyZWF0ZVNTUkFwcCA9ICgoLi4uYXJncykgPT4ge1xyXG4gICAgY29uc3QgYXBwID0gZW5zdXJlSHlkcmF0aW9uUmVuZGVyZXIoKS5jcmVhdGVBcHAoLi4uYXJncyk7XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XHJcbiAgICAgICAgaW5qZWN0TmF0aXZlVGFnQ2hlY2soYXBwKTtcclxuICAgICAgICBpbmplY3RDb21waWxlck9wdGlvbnNDaGVjayhhcHApO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBtb3VudCB9ID0gYXBwO1xyXG4gICAgYXBwLm1vdW50ID0gKGNvbnRhaW5lck9yU2VsZWN0b3IpID0+IHtcclxuICAgICAgICBjb25zdCBjb250YWluZXIgPSBub3JtYWxpemVDb250YWluZXIoY29udGFpbmVyT3JTZWxlY3Rvcik7XHJcbiAgICAgICAgaWYgKGNvbnRhaW5lcikge1xyXG4gICAgICAgICAgICByZXR1cm4gbW91bnQoY29udGFpbmVyLCB0cnVlLCBjb250YWluZXIgaW5zdGFuY2VvZiBTVkdFbGVtZW50KTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGFwcDtcclxufSk7XHJcbmZ1bmN0aW9uIGluamVjdE5hdGl2ZVRhZ0NoZWNrKGFwcCkge1xyXG4gICAgLy8gSW5qZWN0IGBpc05hdGl2ZVRhZ2BcclxuICAgIC8vIHRoaXMgaXMgdXNlZCBmb3IgY29tcG9uZW50IG5hbWUgdmFsaWRhdGlvbiAoZGV2IG9ubHkpXHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYXBwLmNvbmZpZywgJ2lzTmF0aXZlVGFnJywge1xyXG4gICAgICAgIHZhbHVlOiAodGFnKSA9PiBpc0hUTUxUYWcodGFnKSB8fCBpc1NWR1RhZyh0YWcpLFxyXG4gICAgICAgIHdyaXRhYmxlOiBmYWxzZVxyXG4gICAgfSk7XHJcbn1cclxuLy8gZGV2IG9ubHlcclxuZnVuY3Rpb24gaW5qZWN0Q29tcGlsZXJPcHRpb25zQ2hlY2soYXBwKSB7XHJcbiAgICBpZiAoaXNSdW50aW1lT25seSgpKSB7XHJcbiAgICAgICAgY29uc3QgaXNDdXN0b21FbGVtZW50ID0gYXBwLmNvbmZpZy5pc0N1c3RvbUVsZW1lbnQ7XHJcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGFwcC5jb25maWcsICdpc0N1c3RvbUVsZW1lbnQnLCB7XHJcbiAgICAgICAgICAgIGdldCgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBpc0N1c3RvbUVsZW1lbnQ7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNldCgpIHtcclxuICAgICAgICAgICAgICAgIHdhcm4oYFRoZSBcXGBpc0N1c3RvbUVsZW1lbnRcXGAgY29uZmlnIG9wdGlvbiBpcyBkZXByZWNhdGVkLiBVc2UgYCArXHJcbiAgICAgICAgICAgICAgICAgICAgYFxcYGNvbXBpbGVyT3B0aW9ucy5pc0N1c3RvbUVsZW1lbnRcXGAgaW5zdGVhZC5gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvbnN0IGNvbXBpbGVyT3B0aW9ucyA9IGFwcC5jb25maWcuY29tcGlsZXJPcHRpb25zO1xyXG4gICAgICAgIGNvbnN0IG1zZyA9IGBUaGUgXFxgY29tcGlsZXJPcHRpb25zXFxgIGNvbmZpZyBvcHRpb24gaXMgb25seSByZXNwZWN0ZWQgd2hlbiB1c2luZyBgICtcclxuICAgICAgICAgICAgYGEgYnVpbGQgb2YgVnVlLmpzIHRoYXQgaW5jbHVkZXMgdGhlIHJ1bnRpbWUgY29tcGlsZXIgKGFrYSBcImZ1bGwgYnVpbGRcIikuIGAgK1xyXG4gICAgICAgICAgICBgU2luY2UgeW91IGFyZSB1c2luZyB0aGUgcnVudGltZS1vbmx5IGJ1aWxkLCBcXGBjb21waWxlck9wdGlvbnNcXGAgYCArXHJcbiAgICAgICAgICAgIGBtdXN0IGJlIHBhc3NlZCB0byBcXGBAdnVlL2NvbXBpbGVyLWRvbVxcYCBpbiB0aGUgYnVpbGQgc2V0dXAgaW5zdGVhZC5cXG5gICtcclxuICAgICAgICAgICAgYC0gRm9yIHZ1ZS1sb2FkZXI6IHBhc3MgaXQgdmlhIHZ1ZS1sb2FkZXIncyBcXGBjb21waWxlck9wdGlvbnNcXGAgbG9hZGVyIG9wdGlvbi5cXG5gICtcclxuICAgICAgICAgICAgYC0gRm9yIHZ1ZS1jbGk6IHNlZSBodHRwczovL2NsaS52dWVqcy5vcmcvZ3VpZGUvd2VicGFjay5odG1sI21vZGlmeWluZy1vcHRpb25zLW9mLWEtbG9hZGVyXFxuYCArXHJcbiAgICAgICAgICAgIGAtIEZvciB2aXRlOiBwYXNzIGl0IHZpYSBAdml0ZWpzL3BsdWdpbi12dWUgb3B0aW9ucy4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS92aXRlanMvdml0ZS90cmVlL21haW4vcGFja2FnZXMvcGx1Z2luLXZ1ZSNleGFtcGxlLWZvci1wYXNzaW5nLW9wdGlvbnMtdG8tdnVlY29tcGlsZXItZG9tYDtcclxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYXBwLmNvbmZpZywgJ2NvbXBpbGVyT3B0aW9ucycsIHtcclxuICAgICAgICAgICAgZ2V0KCkge1xyXG4gICAgICAgICAgICAgICAgd2Fybihtc2cpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVyT3B0aW9ucztcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc2V0KCkge1xyXG4gICAgICAgICAgICAgICAgd2Fybihtc2cpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gbm9ybWFsaXplQ29udGFpbmVyKGNvbnRhaW5lcikge1xyXG4gICAgaWYgKGlzU3RyaW5nKGNvbnRhaW5lcikpIHtcclxuICAgICAgICBjb25zdCByZXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGNvbnRhaW5lcik7XHJcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhcmVzKSB7XHJcbiAgICAgICAgICAgIHdhcm4oYEZhaWxlZCB0byBtb3VudCBhcHA6IG1vdW50IHRhcmdldCBzZWxlY3RvciBcIiR7Y29udGFpbmVyfVwiIHJldHVybmVkIG51bGwuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXM7XHJcbiAgICB9XHJcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXHJcbiAgICAgICAgd2luZG93LlNoYWRvd1Jvb3QgJiZcclxuICAgICAgICBjb250YWluZXIgaW5zdGFuY2VvZiB3aW5kb3cuU2hhZG93Um9vdCAmJlxyXG4gICAgICAgIGNvbnRhaW5lci5tb2RlID09PSAnY2xvc2VkJykge1xyXG4gICAgICAgIHdhcm4oYG1vdW50aW5nIG9uIGEgU2hhZG93Um9vdCB3aXRoIFxcYHttb2RlOiBcImNsb3NlZFwifVxcYCBtYXkgbGVhZCB0byB1bnByZWRpY3RhYmxlIGJ1Z3NgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBjb250YWluZXI7XHJcbn1cclxubGV0IHNzckRpcmVjdGl2ZUluaXRpYWxpemVkID0gZmFsc2U7XHJcbi8qKlxyXG4gKiBAaW50ZXJuYWxcclxuICovXHJcbmNvbnN0IGluaXREaXJlY3RpdmVzRm9yU1NSID0gKCkgPT4ge1xyXG4gICAgICAgIGlmICghc3NyRGlyZWN0aXZlSW5pdGlhbGl6ZWQpIHtcclxuICAgICAgICAgICAgc3NyRGlyZWN0aXZlSW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICBpbml0Vk1vZGVsRm9yU1NSKCk7XHJcbiAgICAgICAgICAgIGluaXRWU2hvd0ZvclNTUigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIDtcblxuZXhwb3J0IHsgVHJhbnNpdGlvbiwgVHJhbnNpdGlvbkdyb3VwLCBWdWVFbGVtZW50LCBjcmVhdGVBcHAsIGNyZWF0ZVNTUkFwcCwgZGVmaW5lQ3VzdG9tRWxlbWVudCwgZGVmaW5lU1NSQ3VzdG9tRWxlbWVudCwgaHlkcmF0ZSwgaW5pdERpcmVjdGl2ZXNGb3JTU1IsIHJlbmRlciwgdXNlQ3NzTW9kdWxlLCB1c2VDc3NWYXJzLCB2TW9kZWxDaGVja2JveCwgdk1vZGVsRHluYW1pYywgdk1vZGVsUmFkaW8sIHZNb2RlbFNlbGVjdCwgdk1vZGVsVGV4dCwgdlNob3csIHdpdGhLZXlzLCB3aXRoTW9kaWZpZXJzIH07XG4iLCIvKipcclxuICogTWFrZSBhIG1hcCBhbmQgcmV0dXJuIGEgZnVuY3Rpb24gZm9yIGNoZWNraW5nIGlmIGEga2V5XHJcbiAqIGlzIGluIHRoYXQgbWFwLlxyXG4gKiBJTVBPUlRBTlQ6IGFsbCBjYWxscyBvZiB0aGlzIGZ1bmN0aW9uIG11c3QgYmUgcHJlZml4ZWQgd2l0aFxyXG4gKiBcXC9cXCojXFxfXFxfUFVSRVxcX1xcX1xcKlxcL1xyXG4gKiBTbyB0aGF0IHJvbGx1cCBjYW4gdHJlZS1zaGFrZSB0aGVtIGlmIG5lY2Vzc2FyeS5cclxuICovXHJcbmZ1bmN0aW9uIG1ha2VNYXAoc3RyLCBleHBlY3RzTG93ZXJDYXNlKSB7XHJcbiAgICBjb25zdCBtYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xyXG4gICAgY29uc3QgbGlzdCA9IHN0ci5zcGxpdCgnLCcpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbWFwW2xpc3RbaV1dID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBleHBlY3RzTG93ZXJDYXNlID8gdmFsID0+ICEhbWFwW3ZhbC50b0xvd2VyQ2FzZSgpXSA6IHZhbCA9PiAhIW1hcFt2YWxdO1xyXG59XG5cbi8qKlxyXG4gKiBkZXYgb25seSBmbGFnIC0+IG5hbWUgbWFwcGluZ1xyXG4gKi9cclxuY29uc3QgUGF0Y2hGbGFnTmFtZXMgPSB7XHJcbiAgICBbMSAvKiBQYXRjaEZsYWdzLlRFWFQgKi9dOiBgVEVYVGAsXHJcbiAgICBbMiAvKiBQYXRjaEZsYWdzLkNMQVNTICovXTogYENMQVNTYCxcclxuICAgIFs0IC8qIFBhdGNoRmxhZ3MuU1RZTEUgKi9dOiBgU1RZTEVgLFxyXG4gICAgWzggLyogUGF0Y2hGbGFncy5QUk9QUyAqL106IGBQUk9QU2AsXHJcbiAgICBbMTYgLyogUGF0Y2hGbGFncy5GVUxMX1BST1BTICovXTogYEZVTExfUFJPUFNgLFxyXG4gICAgWzMyIC8qIFBhdGNoRmxhZ3MuSFlEUkFURV9FVkVOVFMgKi9dOiBgSFlEUkFURV9FVkVOVFNgLFxyXG4gICAgWzY0IC8qIFBhdGNoRmxhZ3MuU1RBQkxFX0ZSQUdNRU5UICovXTogYFNUQUJMRV9GUkFHTUVOVGAsXHJcbiAgICBbMTI4IC8qIFBhdGNoRmxhZ3MuS0VZRURfRlJBR01FTlQgKi9dOiBgS0VZRURfRlJBR01FTlRgLFxyXG4gICAgWzI1NiAvKiBQYXRjaEZsYWdzLlVOS0VZRURfRlJBR01FTlQgKi9dOiBgVU5LRVlFRF9GUkFHTUVOVGAsXHJcbiAgICBbNTEyIC8qIFBhdGNoRmxhZ3MuTkVFRF9QQVRDSCAqL106IGBORUVEX1BBVENIYCxcclxuICAgIFsxMDI0IC8qIFBhdGNoRmxhZ3MuRFlOQU1JQ19TTE9UUyAqL106IGBEWU5BTUlDX1NMT1RTYCxcclxuICAgIFsyMDQ4IC8qIFBhdGNoRmxhZ3MuREVWX1JPT1RfRlJBR01FTlQgKi9dOiBgREVWX1JPT1RfRlJBR01FTlRgLFxyXG4gICAgWy0xIC8qIFBhdGNoRmxhZ3MuSE9JU1RFRCAqL106IGBIT0lTVEVEYCxcclxuICAgIFstMiAvKiBQYXRjaEZsYWdzLkJBSUwgKi9dOiBgQkFJTGBcclxufTtcblxuLyoqXHJcbiAqIERldiBvbmx5XHJcbiAqL1xyXG5jb25zdCBzbG90RmxhZ3NUZXh0ID0ge1xyXG4gICAgWzEgLyogU2xvdEZsYWdzLlNUQUJMRSAqL106ICdTVEFCTEUnLFxyXG4gICAgWzIgLyogU2xvdEZsYWdzLkRZTkFNSUMgKi9dOiAnRFlOQU1JQycsXHJcbiAgICBbMyAvKiBTbG90RmxhZ3MuRk9SV0FSREVEICovXTogJ0ZPUldBUkRFRCdcclxufTtcblxuY29uc3QgR0xPQkFMU19XSElURV9MSVNURUQgPSAnSW5maW5pdHksdW5kZWZpbmVkLE5hTixpc0Zpbml0ZSxpc05hTixwYXJzZUZsb2F0LHBhcnNlSW50LGRlY29kZVVSSSwnICtcclxuICAgICdkZWNvZGVVUklDb21wb25lbnQsZW5jb2RlVVJJLGVuY29kZVVSSUNvbXBvbmVudCxNYXRoLE51bWJlcixEYXRlLEFycmF5LCcgK1xyXG4gICAgJ09iamVjdCxCb29sZWFuLFN0cmluZyxSZWdFeHAsTWFwLFNldCxKU09OLEludGwsQmlnSW50JztcclxuY29uc3QgaXNHbG9iYWxseVdoaXRlbGlzdGVkID0gLyojX19QVVJFX18qLyBtYWtlTWFwKEdMT0JBTFNfV0hJVEVfTElTVEVEKTtcblxuY29uc3QgcmFuZ2UgPSAyO1xyXG5mdW5jdGlvbiBnZW5lcmF0ZUNvZGVGcmFtZShzb3VyY2UsIHN0YXJ0ID0gMCwgZW5kID0gc291cmNlLmxlbmd0aCkge1xyXG4gICAgLy8gU3BsaXQgdGhlIGNvbnRlbnQgaW50byBpbmRpdmlkdWFsIGxpbmVzIGJ1dCBjYXB0dXJlIHRoZSBuZXdsaW5lIHNlcXVlbmNlXHJcbiAgICAvLyB0aGF0IHNlcGFyYXRlZCBlYWNoIGxpbmUuIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgdGhlIGFjdHVhbCBzZXF1ZW5jZSBpc1xyXG4gICAgLy8gbmVlZGVkIHRvIHByb3Blcmx5IHRha2UgaW50byBhY2NvdW50IHRoZSBmdWxsIGxpbmUgbGVuZ3RoIGZvciBvZmZzZXRcclxuICAgIC8vIGNvbXBhcmlzb25cclxuICAgIGxldCBsaW5lcyA9IHNvdXJjZS5zcGxpdCgvKFxccj9cXG4pLyk7XHJcbiAgICAvLyBTZXBhcmF0ZSB0aGUgbGluZXMgYW5kIG5ld2xpbmUgc2VxdWVuY2VzIGludG8gc2VwYXJhdGUgYXJyYXlzIGZvciBlYXNpZXIgcmVmZXJlbmNpbmdcclxuICAgIGNvbnN0IG5ld2xpbmVTZXF1ZW5jZXMgPSBsaW5lcy5maWx0ZXIoKF8sIGlkeCkgPT4gaWR4ICUgMiA9PT0gMSk7XHJcbiAgICBsaW5lcyA9IGxpbmVzLmZpbHRlcigoXywgaWR4KSA9PiBpZHggJSAyID09PSAwKTtcclxuICAgIGxldCBjb3VudCA9IDA7XHJcbiAgICBjb25zdCByZXMgPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb3VudCArPVxyXG4gICAgICAgICAgICBsaW5lc1tpXS5sZW5ndGggK1xyXG4gICAgICAgICAgICAgICAgKChuZXdsaW5lU2VxdWVuY2VzW2ldICYmIG5ld2xpbmVTZXF1ZW5jZXNbaV0ubGVuZ3RoKSB8fCAwKTtcclxuICAgICAgICBpZiAoY291bnQgPj0gc3RhcnQpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaiA9IGkgLSByYW5nZTsgaiA8PSBpICsgcmFuZ2UgfHwgZW5kID4gY291bnQ7IGorKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGogPCAwIHx8IGogPj0gbGluZXMubGVuZ3RoKVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbGluZSA9IGogKyAxO1xyXG4gICAgICAgICAgICAgICAgcmVzLnB1c2goYCR7bGluZX0keycgJy5yZXBlYXQoTWF0aC5tYXgoMyAtIFN0cmluZyhsaW5lKS5sZW5ndGgsIDApKX18ICAke2xpbmVzW2pdfWApO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbGluZUxlbmd0aCA9IGxpbmVzW2pdLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0xpbmVTZXFMZW5ndGggPSAobmV3bGluZVNlcXVlbmNlc1tqXSAmJiBuZXdsaW5lU2VxdWVuY2VzW2pdLmxlbmd0aCkgfHwgMDtcclxuICAgICAgICAgICAgICAgIGlmIChqID09PSBpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gcHVzaCB1bmRlcmxpbmVcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYWQgPSBzdGFydCAtIChjb3VudCAtIChsaW5lTGVuZ3RoICsgbmV3TGluZVNlcUxlbmd0aCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxlbmd0aCA9IE1hdGgubWF4KDEsIGVuZCA+IGNvdW50ID8gbGluZUxlbmd0aCAtIHBhZCA6IGVuZCAtIHN0YXJ0KTtcclxuICAgICAgICAgICAgICAgICAgICByZXMucHVzaChgICAgfCAgYCArICcgJy5yZXBlYXQocGFkKSArICdeJy5yZXBlYXQobGVuZ3RoKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChqID4gaSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlbmQgPiBjb3VudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsZW5ndGggPSBNYXRoLm1heChNYXRoLm1pbihlbmQgLSBjb3VudCwgbGluZUxlbmd0aCksIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXMucHVzaChgICAgfCAgYCArICdeJy5yZXBlYXQobGVuZ3RoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvdW50ICs9IGxpbmVMZW5ndGggKyBuZXdMaW5lU2VxTGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXMuam9pbignXFxuJyk7XHJcbn1cblxuLyoqXHJcbiAqIE9uIHRoZSBjbGllbnQgd2Ugb25seSBuZWVkIHRvIG9mZmVyIHNwZWNpYWwgY2FzZXMgZm9yIGJvb2xlYW4gYXR0cmlidXRlcyB0aGF0XHJcbiAqIGhhdmUgZGlmZmVyZW50IG5hbWVzIGZyb20gdGhlaXIgY29ycmVzcG9uZGluZyBkb20gcHJvcGVydGllczpcclxuICogLSBpdGVtc2NvcGUgLT4gTi9BXHJcbiAqIC0gYWxsb3dmdWxsc2NyZWVuIC0+IGFsbG93RnVsbHNjcmVlblxyXG4gKiAtIGZvcm1ub3ZhbGlkYXRlIC0+IGZvcm1Ob1ZhbGlkYXRlXHJcbiAqIC0gaXNtYXAgLT4gaXNNYXBcclxuICogLSBub21vZHVsZSAtPiBub01vZHVsZVxyXG4gKiAtIG5vdmFsaWRhdGUgLT4gbm9WYWxpZGF0ZVxyXG4gKiAtIHJlYWRvbmx5IC0+IHJlYWRPbmx5XHJcbiAqL1xyXG5jb25zdCBzcGVjaWFsQm9vbGVhbkF0dHJzID0gYGl0ZW1zY29wZSxhbGxvd2Z1bGxzY3JlZW4sZm9ybW5vdmFsaWRhdGUsaXNtYXAsbm9tb2R1bGUsbm92YWxpZGF0ZSxyZWFkb25seWA7XHJcbmNvbnN0IGlzU3BlY2lhbEJvb2xlYW5BdHRyID0gLyojX19QVVJFX18qLyBtYWtlTWFwKHNwZWNpYWxCb29sZWFuQXR0cnMpO1xyXG4vKipcclxuICogVGhlIGZ1bGwgbGlzdCBpcyBuZWVkZWQgZHVyaW5nIFNTUiB0byBwcm9kdWNlIHRoZSBjb3JyZWN0IGluaXRpYWwgbWFya3VwLlxyXG4gKi9cclxuY29uc3QgaXNCb29sZWFuQXR0ciA9IC8qI19fUFVSRV9fKi8gbWFrZU1hcChzcGVjaWFsQm9vbGVhbkF0dHJzICtcclxuICAgIGAsYXN5bmMsYXV0b2ZvY3VzLGF1dG9wbGF5LGNvbnRyb2xzLGRlZmF1bHQsZGVmZXIsZGlzYWJsZWQsaGlkZGVuLGAgK1xyXG4gICAgYGxvb3Asb3BlbixyZXF1aXJlZCxyZXZlcnNlZCxzY29wZWQsc2VhbWxlc3MsYCArXHJcbiAgICBgY2hlY2tlZCxtdXRlZCxtdWx0aXBsZSxzZWxlY3RlZGApO1xyXG4vKipcclxuICogQm9vbGVhbiBhdHRyaWJ1dGVzIHNob3VsZCBiZSBpbmNsdWRlZCBpZiB0aGUgdmFsdWUgaXMgdHJ1dGh5IG9yICcnLlxyXG4gKiBlLmcuIGA8c2VsZWN0IG11bHRpcGxlPmAgY29tcGlsZXMgdG8gYHsgbXVsdGlwbGU6ICcnIH1gXHJcbiAqL1xyXG5mdW5jdGlvbiBpbmNsdWRlQm9vbGVhbkF0dHIodmFsdWUpIHtcclxuICAgIHJldHVybiAhIXZhbHVlIHx8IHZhbHVlID09PSAnJztcclxufVxyXG5jb25zdCB1bnNhZmVBdHRyQ2hhclJFID0gL1s+Lz1cIidcXHUwMDA5XFx1MDAwYVxcdTAwMGNcXHUwMDIwXS87XHJcbmNvbnN0IGF0dHJWYWxpZGF0aW9uQ2FjaGUgPSB7fTtcclxuZnVuY3Rpb24gaXNTU1JTYWZlQXR0ck5hbWUobmFtZSkge1xyXG4gICAgaWYgKGF0dHJWYWxpZGF0aW9uQ2FjaGUuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcclxuICAgICAgICByZXR1cm4gYXR0clZhbGlkYXRpb25DYWNoZVtuYW1lXTtcclxuICAgIH1cclxuICAgIGNvbnN0IGlzVW5zYWZlID0gdW5zYWZlQXR0ckNoYXJSRS50ZXN0KG5hbWUpO1xyXG4gICAgaWYgKGlzVW5zYWZlKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihgdW5zYWZlIGF0dHJpYnV0ZSBuYW1lOiAke25hbWV9YCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKGF0dHJWYWxpZGF0aW9uQ2FjaGVbbmFtZV0gPSAhaXNVbnNhZmUpO1xyXG59XHJcbmNvbnN0IHByb3BzVG9BdHRyTWFwID0ge1xyXG4gICAgYWNjZXB0Q2hhcnNldDogJ2FjY2VwdC1jaGFyc2V0JyxcclxuICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcclxuICAgIGh0bWxGb3I6ICdmb3InLFxyXG4gICAgaHR0cEVxdWl2OiAnaHR0cC1lcXVpdidcclxufTtcclxuLyoqXHJcbiAqIENTUyBwcm9wZXJ0aWVzIHRoYXQgYWNjZXB0IHBsYWluIG51bWJlcnNcclxuICovXHJcbmNvbnN0IGlzTm9Vbml0TnVtZXJpY1N0eWxlUHJvcCA9IC8qI19fUFVSRV9fKi8gbWFrZU1hcChgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCxib3JkZXItaW1hZ2Utb3V0c2V0LGJvcmRlci1pbWFnZS1zbGljZSxgICtcclxuICAgIGBib3JkZXItaW1hZ2Utd2lkdGgsYm94LWZsZXgsYm94LWZsZXgtZ3JvdXAsYm94LW9yZGluYWwtZ3JvdXAsY29sdW1uLWNvdW50LGAgK1xyXG4gICAgYGNvbHVtbnMsZmxleCxmbGV4LWdyb3csZmxleC1wb3NpdGl2ZSxmbGV4LXNocmluayxmbGV4LW5lZ2F0aXZlLGZsZXgtb3JkZXIsYCArXHJcbiAgICBgZ3JpZC1yb3csZ3JpZC1yb3ctZW5kLGdyaWQtcm93LXNwYW4sZ3JpZC1yb3ctc3RhcnQsZ3JpZC1jb2x1bW4sYCArXHJcbiAgICBgZ3JpZC1jb2x1bW4tZW5kLGdyaWQtY29sdW1uLXNwYW4sZ3JpZC1jb2x1bW4tc3RhcnQsZm9udC13ZWlnaHQsbGluZS1jbGFtcCxgICtcclxuICAgIGBsaW5lLWhlaWdodCxvcGFjaXR5LG9yZGVyLG9ycGhhbnMsdGFiLXNpemUsd2lkb3dzLHotaW5kZXgsem9vbSxgICtcclxuICAgIC8vIFNWR1xyXG4gICAgYGZpbGwtb3BhY2l0eSxmbG9vZC1vcGFjaXR5LHN0b3Atb3BhY2l0eSxzdHJva2UtZGFzaGFycmF5LHN0cm9rZS1kYXNob2Zmc2V0LGAgK1xyXG4gICAgYHN0cm9rZS1taXRlcmxpbWl0LHN0cm9rZS1vcGFjaXR5LHN0cm9rZS13aWR0aGApO1xyXG4vKipcclxuICogS25vd24gYXR0cmlidXRlcywgdGhpcyBpcyB1c2VkIGZvciBzdHJpbmdpZmljYXRpb24gb2YgcnVudGltZSBzdGF0aWMgbm9kZXNcclxuICogc28gdGhhdCB3ZSBkb24ndCBzdHJpbmdpZnkgYmluZGluZ3MgdGhhdCBjYW5ub3QgYmUgc2V0IGZyb20gSFRNTC5cclxuICogRG9uJ3QgYWxzbyBmb3JnZXQgdG8gYWxsb3cgYGRhdGEtKmAgYW5kIGBhcmlhLSpgIVxyXG4gKiBHZW5lcmF0ZWQgZnJvbSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0F0dHJpYnV0ZXNcclxuICovXHJcbmNvbnN0IGlzS25vd25IdG1sQXR0ciA9IC8qI19fUFVSRV9fKi8gbWFrZU1hcChgYWNjZXB0LGFjY2VwdC1jaGFyc2V0LGFjY2Vzc2tleSxhY3Rpb24sYWxpZ24sYWxsb3csYWx0LGFzeW5jLGAgK1xyXG4gICAgYGF1dG9jYXBpdGFsaXplLGF1dG9jb21wbGV0ZSxhdXRvZm9jdXMsYXV0b3BsYXksYmFja2dyb3VuZCxiZ2NvbG9yLGAgK1xyXG4gICAgYGJvcmRlcixidWZmZXJlZCxjYXB0dXJlLGNoYWxsZW5nZSxjaGFyc2V0LGNoZWNrZWQsY2l0ZSxjbGFzcyxjb2RlLGAgK1xyXG4gICAgYGNvZGViYXNlLGNvbG9yLGNvbHMsY29sc3Bhbixjb250ZW50LGNvbnRlbnRlZGl0YWJsZSxjb250ZXh0bWVudSxjb250cm9scyxgICtcclxuICAgIGBjb29yZHMsY3Jvc3NvcmlnaW4sY3NwLGRhdGEsZGF0ZXRpbWUsZGVjb2RpbmcsZGVmYXVsdCxkZWZlcixkaXIsZGlybmFtZSxgICtcclxuICAgIGBkaXNhYmxlZCxkb3dubG9hZCxkcmFnZ2FibGUsZHJvcHpvbmUsZW5jdHlwZSxlbnRlcmtleWhpbnQsZm9yLGZvcm0sYCArXHJcbiAgICBgZm9ybWFjdGlvbixmb3JtZW5jdHlwZSxmb3JtbWV0aG9kLGZvcm1ub3ZhbGlkYXRlLGZvcm10YXJnZXQsaGVhZGVycyxgICtcclxuICAgIGBoZWlnaHQsaGlkZGVuLGhpZ2gsaHJlZixocmVmbGFuZyxodHRwLWVxdWl2LGljb24saWQsaW1wb3J0YW5jZSxpbnRlZ3JpdHksYCArXHJcbiAgICBgaXNtYXAsaXRlbXByb3Asa2V5dHlwZSxraW5kLGxhYmVsLGxhbmcsbGFuZ3VhZ2UsbG9hZGluZyxsaXN0LGxvb3AsbG93LGAgK1xyXG4gICAgYG1hbmlmZXN0LG1heCxtYXhsZW5ndGgsbWlubGVuZ3RoLG1lZGlhLG1pbixtdWx0aXBsZSxtdXRlZCxuYW1lLG5vdmFsaWRhdGUsYCArXHJcbiAgICBgb3BlbixvcHRpbXVtLHBhdHRlcm4scGluZyxwbGFjZWhvbGRlcixwb3N0ZXIscHJlbG9hZCxyYWRpb2dyb3VwLHJlYWRvbmx5LGAgK1xyXG4gICAgYHJlZmVycmVycG9saWN5LHJlbCxyZXF1aXJlZCxyZXZlcnNlZCxyb3dzLHJvd3NwYW4sc2FuZGJveCxzY29wZSxzY29wZWQsYCArXHJcbiAgICBgc2VsZWN0ZWQsc2hhcGUsc2l6ZSxzaXplcyxzbG90LHNwYW4sc3BlbGxjaGVjayxzcmMsc3JjZG9jLHNyY2xhbmcsc3Jjc2V0LGAgK1xyXG4gICAgYHN0YXJ0LHN0ZXAsc3R5bGUsc3VtbWFyeSx0YWJpbmRleCx0YXJnZXQsdGl0bGUsdHJhbnNsYXRlLHR5cGUsdXNlbWFwLGAgK1xyXG4gICAgYHZhbHVlLHdpZHRoLHdyYXBgKTtcclxuLyoqXHJcbiAqIEdlbmVyYXRlZCBmcm9tIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL1NWRy9BdHRyaWJ1dGVcclxuICovXHJcbmNvbnN0IGlzS25vd25TdmdBdHRyID0gLyojX19QVVJFX18qLyBtYWtlTWFwKGB4bWxucyxhY2NlbnQtaGVpZ2h0LGFjY3VtdWxhdGUsYWRkaXRpdmUsYWxpZ25tZW50LWJhc2VsaW5lLGFscGhhYmV0aWMsYW1wbGl0dWRlLGAgK1xyXG4gICAgYGFyYWJpYy1mb3JtLGFzY2VudCxhdHRyaWJ1dGVOYW1lLGF0dHJpYnV0ZVR5cGUsYXppbXV0aCxiYXNlRnJlcXVlbmN5LGAgK1xyXG4gICAgYGJhc2VsaW5lLXNoaWZ0LGJhc2VQcm9maWxlLGJib3gsYmVnaW4sYmlhcyxieSxjYWxjTW9kZSxjYXAtaGVpZ2h0LGNsYXNzLGAgK1xyXG4gICAgYGNsaXAsY2xpcFBhdGhVbml0cyxjbGlwLXBhdGgsY2xpcC1ydWxlLGNvbG9yLGNvbG9yLWludGVycG9sYXRpb24sYCArXHJcbiAgICBgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzLGNvbG9yLXByb2ZpbGUsY29sb3ItcmVuZGVyaW5nLGAgK1xyXG4gICAgYGNvbnRlbnRTY3JpcHRUeXBlLGNvbnRlbnRTdHlsZVR5cGUsY3Jvc3NvcmlnaW4sY3Vyc29yLGN4LGN5LGQsZGVjZWxlcmF0ZSxgICtcclxuICAgIGBkZXNjZW50LGRpZmZ1c2VDb25zdGFudCxkaXJlY3Rpb24sZGlzcGxheSxkaXZpc29yLGRvbWluYW50LWJhc2VsaW5lLGR1cixkeCxgICtcclxuICAgIGBkeSxlZGdlTW9kZSxlbGV2YXRpb24sZW5hYmxlLWJhY2tncm91bmQsZW5kLGV4cG9uZW50LGZpbGwsZmlsbC1vcGFjaXR5LGAgK1xyXG4gICAgYGZpbGwtcnVsZSxmaWx0ZXIsZmlsdGVyUmVzLGZpbHRlclVuaXRzLGZsb29kLWNvbG9yLGZsb29kLW9wYWNpdHksYCArXHJcbiAgICBgZm9udC1mYW1pbHksZm9udC1zaXplLGZvbnQtc2l6ZS1hZGp1c3QsZm9udC1zdHJldGNoLGZvbnQtc3R5bGUsYCArXHJcbiAgICBgZm9udC12YXJpYW50LGZvbnQtd2VpZ2h0LGZvcm1hdCxmcm9tLGZyLGZ4LGZ5LGcxLGcyLGdseXBoLW5hbWUsYCArXHJcbiAgICBgZ2x5cGgtb3JpZW50YXRpb24taG9yaXpvbnRhbCxnbHlwaC1vcmllbnRhdGlvbi12ZXJ0aWNhbCxnbHlwaFJlZixgICtcclxuICAgIGBncmFkaWVudFRyYW5zZm9ybSxncmFkaWVudFVuaXRzLGhhbmdpbmcsaGVpZ2h0LGhyZWYsaHJlZmxhbmcsaG9yaXotYWR2LXgsYCArXHJcbiAgICBgaG9yaXotb3JpZ2luLXgsaWQsaWRlb2dyYXBoaWMsaW1hZ2UtcmVuZGVyaW5nLGluLGluMixpbnRlcmNlcHQsayxrMSxrMixrMyxgICtcclxuICAgIGBrNCxrZXJuZWxNYXRyaXgsa2VybmVsVW5pdExlbmd0aCxrZXJuaW5nLGtleVBvaW50cyxrZXlTcGxpbmVzLGtleVRpbWVzLGAgK1xyXG4gICAgYGxhbmcsbGVuZ3RoQWRqdXN0LGxldHRlci1zcGFjaW5nLGxpZ2h0aW5nLWNvbG9yLGxpbWl0aW5nQ29uZUFuZ2xlLGxvY2FsLGAgK1xyXG4gICAgYG1hcmtlci1lbmQsbWFya2VyLW1pZCxtYXJrZXItc3RhcnQsbWFya2VySGVpZ2h0LG1hcmtlclVuaXRzLG1hcmtlcldpZHRoLGAgK1xyXG4gICAgYG1hc2ssbWFza0NvbnRlbnRVbml0cyxtYXNrVW5pdHMsbWF0aGVtYXRpY2FsLG1heCxtZWRpYSxtZXRob2QsbWluLG1vZGUsYCArXHJcbiAgICBgbmFtZSxudW1PY3RhdmVzLG9mZnNldCxvcGFjaXR5LG9wZXJhdG9yLG9yZGVyLG9yaWVudCxvcmllbnRhdGlvbixvcmlnaW4sYCArXHJcbiAgICBgb3ZlcmZsb3csb3ZlcmxpbmUtcG9zaXRpb24sb3ZlcmxpbmUtdGhpY2tuZXNzLHBhbm9zZS0xLHBhaW50LW9yZGVyLHBhdGgsYCArXHJcbiAgICBgcGF0aExlbmd0aCxwYXR0ZXJuQ29udGVudFVuaXRzLHBhdHRlcm5UcmFuc2Zvcm0scGF0dGVyblVuaXRzLHBpbmcsYCArXHJcbiAgICBgcG9pbnRlci1ldmVudHMscG9pbnRzLHBvaW50c0F0WCxwb2ludHNBdFkscG9pbnRzQXRaLHByZXNlcnZlQWxwaGEsYCArXHJcbiAgICBgcHJlc2VydmVBc3BlY3RSYXRpbyxwcmltaXRpdmVVbml0cyxyLHJhZGl1cyxyZWZlcnJlclBvbGljeSxyZWZYLHJlZlkscmVsLGAgK1xyXG4gICAgYHJlbmRlcmluZy1pbnRlbnQscmVwZWF0Q291bnQscmVwZWF0RHVyLHJlcXVpcmVkRXh0ZW5zaW9ucyxyZXF1aXJlZEZlYXR1cmVzLGAgK1xyXG4gICAgYHJlc3RhcnQscmVzdWx0LHJvdGF0ZSxyeCxyeSxzY2FsZSxzZWVkLHNoYXBlLXJlbmRlcmluZyxzbG9wZSxzcGFjaW5nLGAgK1xyXG4gICAgYHNwZWN1bGFyQ29uc3RhbnQsc3BlY3VsYXJFeHBvbmVudCxzcGVlZCxzcHJlYWRNZXRob2Qsc3RhcnRPZmZzZXQsYCArXHJcbiAgICBgc3RkRGV2aWF0aW9uLHN0ZW1oLHN0ZW12LHN0aXRjaFRpbGVzLHN0b3AtY29sb3Isc3RvcC1vcGFjaXR5LGAgK1xyXG4gICAgYHN0cmlrZXRocm91Z2gtcG9zaXRpb24sc3RyaWtldGhyb3VnaC10aGlja25lc3Msc3RyaW5nLHN0cm9rZSxgICtcclxuICAgIGBzdHJva2UtZGFzaGFycmF5LHN0cm9rZS1kYXNob2Zmc2V0LHN0cm9rZS1saW5lY2FwLHN0cm9rZS1saW5lam9pbixgICtcclxuICAgIGBzdHJva2UtbWl0ZXJsaW1pdCxzdHJva2Utb3BhY2l0eSxzdHJva2Utd2lkdGgsc3R5bGUsc3VyZmFjZVNjYWxlLGAgK1xyXG4gICAgYHN5c3RlbUxhbmd1YWdlLHRhYmluZGV4LHRhYmxlVmFsdWVzLHRhcmdldCx0YXJnZXRYLHRhcmdldFksdGV4dC1hbmNob3IsYCArXHJcbiAgICBgdGV4dC1kZWNvcmF0aW9uLHRleHQtcmVuZGVyaW5nLHRleHRMZW5ndGgsdG8sdHJhbnNmb3JtLHRyYW5zZm9ybS1vcmlnaW4sYCArXHJcbiAgICBgdHlwZSx1MSx1Mix1bmRlcmxpbmUtcG9zaXRpb24sdW5kZXJsaW5lLXRoaWNrbmVzcyx1bmljb2RlLHVuaWNvZGUtYmlkaSxgICtcclxuICAgIGB1bmljb2RlLXJhbmdlLHVuaXRzLXBlci1lbSx2LWFscGhhYmV0aWMsdi1oYW5naW5nLHYtaWRlb2dyYXBoaWMsYCArXHJcbiAgICBgdi1tYXRoZW1hdGljYWwsdmFsdWVzLHZlY3Rvci1lZmZlY3QsdmVyc2lvbix2ZXJ0LWFkdi15LHZlcnQtb3JpZ2luLXgsYCArXHJcbiAgICBgdmVydC1vcmlnaW4teSx2aWV3Qm94LHZpZXdUYXJnZXQsdmlzaWJpbGl0eSx3aWR0aCx3aWR0aHMsd29yZC1zcGFjaW5nLGAgK1xyXG4gICAgYHdyaXRpbmctbW9kZSx4LHgtaGVpZ2h0LHgxLHgyLHhDaGFubmVsU2VsZWN0b3IseGxpbms6YWN0dWF0ZSx4bGluazphcmNyb2xlLGAgK1xyXG4gICAgYHhsaW5rOmhyZWYseGxpbms6cm9sZSx4bGluazpzaG93LHhsaW5rOnRpdGxlLHhsaW5rOnR5cGUseG1sOmJhc2UseG1sOmxhbmcsYCArXHJcbiAgICBgeG1sOnNwYWNlLHkseTEseTIseUNoYW5uZWxTZWxlY3Rvcix6LHpvb21BbmRQYW5gKTtcblxuZnVuY3Rpb24gbm9ybWFsaXplU3R5bGUodmFsdWUpIHtcclxuICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICAgIGNvbnN0IHJlcyA9IHt9O1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgaXRlbSA9IHZhbHVlW2ldO1xyXG4gICAgICAgICAgICBjb25zdCBub3JtYWxpemVkID0gaXNTdHJpbmcoaXRlbSlcclxuICAgICAgICAgICAgICAgID8gcGFyc2VTdHJpbmdTdHlsZShpdGVtKVxyXG4gICAgICAgICAgICAgICAgOiBub3JtYWxpemVTdHlsZShpdGVtKTtcclxuICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWQpIHtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIG5vcm1hbGl6ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXNba2V5XSA9IG5vcm1hbGl6ZWRba2V5XTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNPYmplY3QodmFsdWUpKSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG59XHJcbmNvbnN0IGxpc3REZWxpbWl0ZXJSRSA9IC87KD8hW14oXSpcXCkpL2c7XHJcbmNvbnN0IHByb3BlcnR5RGVsaW1pdGVyUkUgPSAvOiguKykvO1xyXG5mdW5jdGlvbiBwYXJzZVN0cmluZ1N0eWxlKGNzc1RleHQpIHtcclxuICAgIGNvbnN0IHJldCA9IHt9O1xyXG4gICAgY3NzVGV4dC5zcGxpdChsaXN0RGVsaW1pdGVyUkUpLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0pIHtcclxuICAgICAgICAgICAgY29uc3QgdG1wID0gaXRlbS5zcGxpdChwcm9wZXJ0eURlbGltaXRlclJFKTtcclxuICAgICAgICAgICAgdG1wLmxlbmd0aCA+IDEgJiYgKHJldFt0bXBbMF0udHJpbSgpXSA9IHRtcFsxXS50cmltKCkpO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHJldDtcclxufVxyXG5mdW5jdGlvbiBzdHJpbmdpZnlTdHlsZShzdHlsZXMpIHtcclxuICAgIGxldCByZXQgPSAnJztcclxuICAgIGlmICghc3R5bGVzIHx8IGlzU3RyaW5nKHN0eWxlcykpIHtcclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfVxyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gc3R5bGVzKSB7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSBzdHlsZXNba2V5XTtcclxuICAgICAgICBjb25zdCBub3JtYWxpemVkS2V5ID0ga2V5LnN0YXJ0c1dpdGgoYC0tYCkgPyBrZXkgOiBoeXBoZW5hdGUoa2V5KTtcclxuICAgICAgICBpZiAoaXNTdHJpbmcodmFsdWUpIHx8XHJcbiAgICAgICAgICAgICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIGlzTm9Vbml0TnVtZXJpY1N0eWxlUHJvcChub3JtYWxpemVkS2V5KSkpIHtcclxuICAgICAgICAgICAgLy8gb25seSByZW5kZXIgdmFsaWQgdmFsdWVzXHJcbiAgICAgICAgICAgIHJldCArPSBgJHtub3JtYWxpemVkS2V5fToke3ZhbHVlfTtgO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXQ7XHJcbn1cclxuZnVuY3Rpb24gbm9ybWFsaXplQ2xhc3ModmFsdWUpIHtcclxuICAgIGxldCByZXMgPSAnJztcclxuICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcclxuICAgICAgICByZXMgPSB2YWx1ZTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplQ2xhc3ModmFsdWVbaV0pO1xyXG4gICAgICAgICAgICBpZiAobm9ybWFsaXplZCkge1xyXG4gICAgICAgICAgICAgICAgcmVzICs9IG5vcm1hbGl6ZWQgKyAnICc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc09iamVjdCh2YWx1ZSkpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IG5hbWUgaW4gdmFsdWUpIHtcclxuICAgICAgICAgICAgaWYgKHZhbHVlW25hbWVdKSB7XHJcbiAgICAgICAgICAgICAgICByZXMgKz0gbmFtZSArICcgJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXMudHJpbSgpO1xyXG59XHJcbmZ1bmN0aW9uIG5vcm1hbGl6ZVByb3BzKHByb3BzKSB7XHJcbiAgICBpZiAoIXByb3BzKVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgbGV0IHsgY2xhc3M6IGtsYXNzLCBzdHlsZSB9ID0gcHJvcHM7XHJcbiAgICBpZiAoa2xhc3MgJiYgIWlzU3RyaW5nKGtsYXNzKSkge1xyXG4gICAgICAgIHByb3BzLmNsYXNzID0gbm9ybWFsaXplQ2xhc3Moa2xhc3MpO1xyXG4gICAgfVxyXG4gICAgaWYgKHN0eWxlKSB7XHJcbiAgICAgICAgcHJvcHMuc3R5bGUgPSBub3JtYWxpemVTdHlsZShzdHlsZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcHJvcHM7XHJcbn1cblxuLy8gVGhlc2UgdGFnIGNvbmZpZ3MgYXJlIHNoYXJlZCBiZXR3ZWVuIGNvbXBpbGVyLWRvbSBhbmQgcnVudGltZS1kb20sIHNvIHRoZXlcclxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50XHJcbmNvbnN0IEhUTUxfVEFHUyA9ICdodG1sLGJvZHksYmFzZSxoZWFkLGxpbmssbWV0YSxzdHlsZSx0aXRsZSxhZGRyZXNzLGFydGljbGUsYXNpZGUsZm9vdGVyLCcgK1xyXG4gICAgJ2hlYWRlcixoMSxoMixoMyxoNCxoNSxoNixuYXYsc2VjdGlvbixkaXYsZGQsZGwsZHQsZmlnY2FwdGlvbiwnICtcclxuICAgICdmaWd1cmUscGljdHVyZSxocixpbWcsbGksbWFpbixvbCxwLHByZSx1bCxhLGIsYWJicixiZGksYmRvLGJyLGNpdGUsY29kZSwnICtcclxuICAgICdkYXRhLGRmbixlbSxpLGtiZCxtYXJrLHEscnAscnQscnVieSxzLHNhbXAsc21hbGwsc3BhbixzdHJvbmcsc3ViLHN1cCwnICtcclxuICAgICd0aW1lLHUsdmFyLHdicixhcmVhLGF1ZGlvLG1hcCx0cmFjayx2aWRlbyxlbWJlZCxvYmplY3QscGFyYW0sc291cmNlLCcgK1xyXG4gICAgJ2NhbnZhcyxzY3JpcHQsbm9zY3JpcHQsZGVsLGlucyxjYXB0aW9uLGNvbCxjb2xncm91cCx0YWJsZSx0aGVhZCx0Ym9keSx0ZCwnICtcclxuICAgICd0aCx0cixidXR0b24sZGF0YWxpc3QsZmllbGRzZXQsZm9ybSxpbnB1dCxsYWJlbCxsZWdlbmQsbWV0ZXIsb3B0Z3JvdXAsJyArXHJcbiAgICAnb3B0aW9uLG91dHB1dCxwcm9ncmVzcyxzZWxlY3QsdGV4dGFyZWEsZGV0YWlscyxkaWFsb2csbWVudSwnICtcclxuICAgICdzdW1tYXJ5LHRlbXBsYXRlLGJsb2NrcXVvdGUsaWZyYW1lLHRmb290JztcclxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvU1ZHL0VsZW1lbnRcclxuY29uc3QgU1ZHX1RBR1MgPSAnc3ZnLGFuaW1hdGUsYW5pbWF0ZU1vdGlvbixhbmltYXRlVHJhbnNmb3JtLGNpcmNsZSxjbGlwUGF0aCxjb2xvci1wcm9maWxlLCcgK1xyXG4gICAgJ2RlZnMsZGVzYyxkaXNjYXJkLGVsbGlwc2UsZmVCbGVuZCxmZUNvbG9yTWF0cml4LGZlQ29tcG9uZW50VHJhbnNmZXIsJyArXHJcbiAgICAnZmVDb21wb3NpdGUsZmVDb252b2x2ZU1hdHJpeCxmZURpZmZ1c2VMaWdodGluZyxmZURpc3BsYWNlbWVudE1hcCwnICtcclxuICAgICdmZURpc3RhbmNlTGlnaHQsZmVEcm9wU2hhZG93LGZlRmxvb2QsZmVGdW5jQSxmZUZ1bmNCLGZlRnVuY0csZmVGdW5jUiwnICtcclxuICAgICdmZUdhdXNzaWFuQmx1cixmZUltYWdlLGZlTWVyZ2UsZmVNZXJnZU5vZGUsZmVNb3JwaG9sb2d5LGZlT2Zmc2V0LCcgK1xyXG4gICAgJ2ZlUG9pbnRMaWdodCxmZVNwZWN1bGFyTGlnaHRpbmcsZmVTcG90TGlnaHQsZmVUaWxlLGZlVHVyYnVsZW5jZSxmaWx0ZXIsJyArXHJcbiAgICAnZm9yZWlnbk9iamVjdCxnLGhhdGNoLGhhdGNocGF0aCxpbWFnZSxsaW5lLGxpbmVhckdyYWRpZW50LG1hcmtlcixtYXNrLCcgK1xyXG4gICAgJ21lc2gsbWVzaGdyYWRpZW50LG1lc2hwYXRjaCxtZXNocm93LG1ldGFkYXRhLG1wYXRoLHBhdGgscGF0dGVybiwnICtcclxuICAgICdwb2x5Z29uLHBvbHlsaW5lLHJhZGlhbEdyYWRpZW50LHJlY3Qsc2V0LHNvbGlkY29sb3Isc3RvcCxzd2l0Y2gsc3ltYm9sLCcgK1xyXG4gICAgJ3RleHQsdGV4dFBhdGgsdGl0bGUsdHNwYW4sdW5rbm93bix1c2Usdmlldyc7XHJcbmNvbnN0IFZPSURfVEFHUyA9ICdhcmVhLGJhc2UsYnIsY29sLGVtYmVkLGhyLGltZyxpbnB1dCxsaW5rLG1ldGEscGFyYW0sc291cmNlLHRyYWNrLHdicic7XHJcbi8qKlxyXG4gKiBDb21waWxlciBvbmx5LlxyXG4gKiBEbyBOT1QgdXNlIGluIHJ1bnRpbWUgY29kZSBwYXRocyB1bmxlc3MgYmVoaW5kIGAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylgIGZsYWcuXHJcbiAqL1xyXG5jb25zdCBpc0hUTUxUYWcgPSAvKiNfX1BVUkVfXyovIG1ha2VNYXAoSFRNTF9UQUdTKTtcclxuLyoqXHJcbiAqIENvbXBpbGVyIG9ubHkuXHJcbiAqIERvIE5PVCB1c2UgaW4gcnVudGltZSBjb2RlIHBhdGhzIHVubGVzcyBiZWhpbmQgYChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKWAgZmxhZy5cclxuICovXHJcbmNvbnN0IGlzU1ZHVGFnID0gLyojX19QVVJFX18qLyBtYWtlTWFwKFNWR19UQUdTKTtcclxuLyoqXHJcbiAqIENvbXBpbGVyIG9ubHkuXHJcbiAqIERvIE5PVCB1c2UgaW4gcnVudGltZSBjb2RlIHBhdGhzIHVubGVzcyBiZWhpbmQgYChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKWAgZmxhZy5cclxuICovXHJcbmNvbnN0IGlzVm9pZFRhZyA9IC8qI19fUFVSRV9fKi8gbWFrZU1hcChWT0lEX1RBR1MpO1xuXG5jb25zdCBlc2NhcGVSRSA9IC9bXCInJjw+XS87XHJcbmZ1bmN0aW9uIGVzY2FwZUh0bWwoc3RyaW5nKSB7XHJcbiAgICBjb25zdCBzdHIgPSAnJyArIHN0cmluZztcclxuICAgIGNvbnN0IG1hdGNoID0gZXNjYXBlUkUuZXhlYyhzdHIpO1xyXG4gICAgaWYgKCFtYXRjaCkge1xyXG4gICAgICAgIHJldHVybiBzdHI7XHJcbiAgICB9XHJcbiAgICBsZXQgaHRtbCA9ICcnO1xyXG4gICAgbGV0IGVzY2FwZWQ7XHJcbiAgICBsZXQgaW5kZXg7XHJcbiAgICBsZXQgbGFzdEluZGV4ID0gMDtcclxuICAgIGZvciAoaW5kZXggPSBtYXRjaC5pbmRleDsgaW5kZXggPCBzdHIubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgc3dpdGNoIChzdHIuY2hhckNvZGVBdChpbmRleCkpIHtcclxuICAgICAgICAgICAgY2FzZSAzNDogLy8gXCJcclxuICAgICAgICAgICAgICAgIGVzY2FwZWQgPSAnJnF1b3Q7JztcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDM4OiAvLyAmXHJcbiAgICAgICAgICAgICAgICBlc2NhcGVkID0gJyZhbXA7JztcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDM5OiAvLyAnXHJcbiAgICAgICAgICAgICAgICBlc2NhcGVkID0gJyYjMzk7JztcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDYwOiAvLyA8XHJcbiAgICAgICAgICAgICAgICBlc2NhcGVkID0gJyZsdDsnO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgNjI6IC8vID5cclxuICAgICAgICAgICAgICAgIGVzY2FwZWQgPSAnJmd0Oyc7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobGFzdEluZGV4ICE9PSBpbmRleCkge1xyXG4gICAgICAgICAgICBodG1sICs9IHN0ci5zbGljZShsYXN0SW5kZXgsIGluZGV4KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGFzdEluZGV4ID0gaW5kZXggKyAxO1xyXG4gICAgICAgIGh0bWwgKz0gZXNjYXBlZDtcclxuICAgIH1cclxuICAgIHJldHVybiBsYXN0SW5kZXggIT09IGluZGV4ID8gaHRtbCArIHN0ci5zbGljZShsYXN0SW5kZXgsIGluZGV4KSA6IGh0bWw7XHJcbn1cclxuLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL2h0bWw1Mi9zeW50YXguaHRtbCNjb21tZW50c1xyXG5jb25zdCBjb21tZW50U3RyaXBSRSA9IC9eLT8+fDwhLS18LS0+fC0tIT58PCEtJC9nO1xyXG5mdW5jdGlvbiBlc2NhcGVIdG1sQ29tbWVudChzcmMpIHtcclxuICAgIHJldHVybiBzcmMucmVwbGFjZShjb21tZW50U3RyaXBSRSwgJycpO1xyXG59XG5cbmZ1bmN0aW9uIGxvb3NlQ29tcGFyZUFycmF5cyhhLCBiKSB7XHJcbiAgICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIGxldCBlcXVhbCA9IHRydWU7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgZXF1YWwgJiYgaSA8IGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBlcXVhbCA9IGxvb3NlRXF1YWwoYVtpXSwgYltpXSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZXF1YWw7XHJcbn1cclxuZnVuY3Rpb24gbG9vc2VFcXVhbChhLCBiKSB7XHJcbiAgICBpZiAoYSA9PT0gYilcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIGxldCBhVmFsaWRUeXBlID0gaXNEYXRlKGEpO1xyXG4gICAgbGV0IGJWYWxpZFR5cGUgPSBpc0RhdGUoYik7XHJcbiAgICBpZiAoYVZhbGlkVHlwZSB8fCBiVmFsaWRUeXBlKSB7XHJcbiAgICAgICAgcmV0dXJuIGFWYWxpZFR5cGUgJiYgYlZhbGlkVHlwZSA/IGEuZ2V0VGltZSgpID09PSBiLmdldFRpbWUoKSA6IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgYVZhbGlkVHlwZSA9IGlzU3ltYm9sKGEpO1xyXG4gICAgYlZhbGlkVHlwZSA9IGlzU3ltYm9sKGIpO1xyXG4gICAgaWYgKGFWYWxpZFR5cGUgfHwgYlZhbGlkVHlwZSkge1xyXG4gICAgICAgIHJldHVybiBhID09PSBiO1xyXG4gICAgfVxyXG4gICAgYVZhbGlkVHlwZSA9IGlzQXJyYXkoYSk7XHJcbiAgICBiVmFsaWRUeXBlID0gaXNBcnJheShiKTtcclxuICAgIGlmIChhVmFsaWRUeXBlIHx8IGJWYWxpZFR5cGUpIHtcclxuICAgICAgICByZXR1cm4gYVZhbGlkVHlwZSAmJiBiVmFsaWRUeXBlID8gbG9vc2VDb21wYXJlQXJyYXlzKGEsIGIpIDogZmFsc2U7XHJcbiAgICB9XHJcbiAgICBhVmFsaWRUeXBlID0gaXNPYmplY3QoYSk7XHJcbiAgICBiVmFsaWRUeXBlID0gaXNPYmplY3QoYik7XHJcbiAgICBpZiAoYVZhbGlkVHlwZSB8fCBiVmFsaWRUeXBlKSB7XHJcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmOiB0aGlzIGlmIHdpbGwgcHJvYmFibHkgbmV2ZXIgYmUgY2FsbGVkICovXHJcbiAgICAgICAgaWYgKCFhVmFsaWRUeXBlIHx8ICFiVmFsaWRUeXBlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgYUtleXNDb3VudCA9IE9iamVjdC5rZXlzKGEpLmxlbmd0aDtcclxuICAgICAgICBjb25zdCBiS2V5c0NvdW50ID0gT2JqZWN0LmtleXMoYikubGVuZ3RoO1xyXG4gICAgICAgIGlmIChhS2V5c0NvdW50ICE9PSBiS2V5c0NvdW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gYSkge1xyXG4gICAgICAgICAgICBjb25zdCBhSGFzS2V5ID0gYS5oYXNPd25Qcm9wZXJ0eShrZXkpO1xyXG4gICAgICAgICAgICBjb25zdCBiSGFzS2V5ID0gYi5oYXNPd25Qcm9wZXJ0eShrZXkpO1xyXG4gICAgICAgICAgICBpZiAoKGFIYXNLZXkgJiYgIWJIYXNLZXkpIHx8XHJcbiAgICAgICAgICAgICAgICAoIWFIYXNLZXkgJiYgYkhhc0tleSkgfHxcclxuICAgICAgICAgICAgICAgICFsb29zZUVxdWFsKGFba2V5XSwgYltrZXldKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIFN0cmluZyhhKSA9PT0gU3RyaW5nKGIpO1xyXG59XHJcbmZ1bmN0aW9uIGxvb3NlSW5kZXhPZihhcnIsIHZhbCkge1xyXG4gICAgcmV0dXJuIGFyci5maW5kSW5kZXgoaXRlbSA9PiBsb29zZUVxdWFsKGl0ZW0sIHZhbCkpO1xyXG59XG5cbi8qKlxyXG4gKiBGb3IgY29udmVydGluZyB7eyBpbnRlcnBvbGF0aW9uIH19IHZhbHVlcyB0byBkaXNwbGF5ZWQgc3RyaW5ncy5cclxuICogQHByaXZhdGVcclxuICovXHJcbmNvbnN0IHRvRGlzcGxheVN0cmluZyA9ICh2YWwpID0+IHtcclxuICAgIHJldHVybiBpc1N0cmluZyh2YWwpXHJcbiAgICAgICAgPyB2YWxcclxuICAgICAgICA6IHZhbCA9PSBudWxsXHJcbiAgICAgICAgICAgID8gJydcclxuICAgICAgICAgICAgOiBpc0FycmF5KHZhbCkgfHxcclxuICAgICAgICAgICAgICAgIChpc09iamVjdCh2YWwpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbC50b1N0cmluZyA9PT0gb2JqZWN0VG9TdHJpbmcgfHwgIWlzRnVuY3Rpb24odmFsLnRvU3RyaW5nKSkpXHJcbiAgICAgICAgICAgICAgICA/IEpTT04uc3RyaW5naWZ5KHZhbCwgcmVwbGFjZXIsIDIpXHJcbiAgICAgICAgICAgICAgICA6IFN0cmluZyh2YWwpO1xyXG59O1xyXG5jb25zdCByZXBsYWNlciA9IChfa2V5LCB2YWwpID0+IHtcclxuICAgIC8vIGNhbid0IHVzZSBpc1JlZiBoZXJlIHNpbmNlIEB2dWUvc2hhcmVkIGhhcyBubyBkZXBzXHJcbiAgICBpZiAodmFsICYmIHZhbC5fX3ZfaXNSZWYpIHtcclxuICAgICAgICByZXR1cm4gcmVwbGFjZXIoX2tleSwgdmFsLnZhbHVlKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzTWFwKHZhbCkpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBbYE1hcCgke3ZhbC5zaXplfSlgXTogWy4uLnZhbC5lbnRyaWVzKCldLnJlZHVjZSgoZW50cmllcywgW2tleSwgdmFsXSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgZW50cmllc1tgJHtrZXl9ID0+YF0gPSB2YWw7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZW50cmllcztcclxuICAgICAgICAgICAgfSwge30pXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzU2V0KHZhbCkpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBbYFNldCgke3ZhbC5zaXplfSlgXTogWy4uLnZhbC52YWx1ZXMoKV1cclxuICAgICAgICB9O1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNPYmplY3QodmFsKSAmJiAhaXNBcnJheSh2YWwpICYmICFpc1BsYWluT2JqZWN0KHZhbCkpIHtcclxuICAgICAgICByZXR1cm4gU3RyaW5nKHZhbCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsO1xyXG59O1xuXG5jb25zdCBFTVBUWV9PQkogPSAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylcclxuICAgID8gT2JqZWN0LmZyZWV6ZSh7fSlcclxuICAgIDoge307XHJcbmNvbnN0IEVNUFRZX0FSUiA9IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSA/IE9iamVjdC5mcmVlemUoW10pIDogW107XHJcbmNvbnN0IE5PT1AgPSAoKSA9PiB7IH07XHJcbi8qKlxyXG4gKiBBbHdheXMgcmV0dXJuIGZhbHNlLlxyXG4gKi9cclxuY29uc3QgTk8gPSAoKSA9PiBmYWxzZTtcclxuY29uc3Qgb25SRSA9IC9eb25bXmEtel0vO1xyXG5jb25zdCBpc09uID0gKGtleSkgPT4gb25SRS50ZXN0KGtleSk7XHJcbmNvbnN0IGlzTW9kZWxMaXN0ZW5lciA9IChrZXkpID0+IGtleS5zdGFydHNXaXRoKCdvblVwZGF0ZTonKTtcclxuY29uc3QgZXh0ZW5kID0gT2JqZWN0LmFzc2lnbjtcclxuY29uc3QgcmVtb3ZlID0gKGFyciwgZWwpID0+IHtcclxuICAgIGNvbnN0IGkgPSBhcnIuaW5kZXhPZihlbCk7XHJcbiAgICBpZiAoaSA+IC0xKSB7XHJcbiAgICAgICAgYXJyLnNwbGljZShpLCAxKTtcclxuICAgIH1cclxufTtcclxuY29uc3QgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xyXG5jb25zdCBoYXNPd24gPSAodmFsLCBrZXkpID0+IGhhc093blByb3BlcnR5LmNhbGwodmFsLCBrZXkpO1xyXG5jb25zdCBpc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcclxuY29uc3QgaXNNYXAgPSAodmFsKSA9PiB0b1R5cGVTdHJpbmcodmFsKSA9PT0gJ1tvYmplY3QgTWFwXSc7XHJcbmNvbnN0IGlzU2V0ID0gKHZhbCkgPT4gdG9UeXBlU3RyaW5nKHZhbCkgPT09ICdbb2JqZWN0IFNldF0nO1xyXG5jb25zdCBpc0RhdGUgPSAodmFsKSA9PiB0b1R5cGVTdHJpbmcodmFsKSA9PT0gJ1tvYmplY3QgRGF0ZV0nO1xyXG5jb25zdCBpc0Z1bmN0aW9uID0gKHZhbCkgPT4gdHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJztcclxuY29uc3QgaXNTdHJpbmcgPSAodmFsKSA9PiB0eXBlb2YgdmFsID09PSAnc3RyaW5nJztcclxuY29uc3QgaXNTeW1ib2wgPSAodmFsKSA9PiB0eXBlb2YgdmFsID09PSAnc3ltYm9sJztcclxuY29uc3QgaXNPYmplY3QgPSAodmFsKSA9PiB2YWwgIT09IG51bGwgJiYgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCc7XHJcbmNvbnN0IGlzUHJvbWlzZSA9ICh2YWwpID0+IHtcclxuICAgIHJldHVybiBpc09iamVjdCh2YWwpICYmIGlzRnVuY3Rpb24odmFsLnRoZW4pICYmIGlzRnVuY3Rpb24odmFsLmNhdGNoKTtcclxufTtcclxuY29uc3Qgb2JqZWN0VG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xyXG5jb25zdCB0b1R5cGVTdHJpbmcgPSAodmFsdWUpID0+IG9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xyXG5jb25zdCB0b1Jhd1R5cGUgPSAodmFsdWUpID0+IHtcclxuICAgIC8vIGV4dHJhY3QgXCJSYXdUeXBlXCIgZnJvbSBzdHJpbmdzIGxpa2UgXCJbb2JqZWN0IFJhd1R5cGVdXCJcclxuICAgIHJldHVybiB0b1R5cGVTdHJpbmcodmFsdWUpLnNsaWNlKDgsIC0xKTtcclxufTtcclxuY29uc3QgaXNQbGFpbk9iamVjdCA9ICh2YWwpID0+IHRvVHlwZVN0cmluZyh2YWwpID09PSAnW29iamVjdCBPYmplY3RdJztcclxuY29uc3QgaXNJbnRlZ2VyS2V5ID0gKGtleSkgPT4gaXNTdHJpbmcoa2V5KSAmJlxyXG4gICAga2V5ICE9PSAnTmFOJyAmJlxyXG4gICAga2V5WzBdICE9PSAnLScgJiZcclxuICAgICcnICsgcGFyc2VJbnQoa2V5LCAxMCkgPT09IGtleTtcclxuY29uc3QgaXNSZXNlcnZlZFByb3AgPSAvKiNfX1BVUkVfXyovIG1ha2VNYXAoXHJcbi8vIHRoZSBsZWFkaW5nIGNvbW1hIGlzIGludGVudGlvbmFsIHNvIGVtcHR5IHN0cmluZyBcIlwiIGlzIGFsc28gaW5jbHVkZWRcclxuJyxrZXkscmVmLHJlZl9mb3IscmVmX2tleSwnICtcclxuICAgICdvblZub2RlQmVmb3JlTW91bnQsb25Wbm9kZU1vdW50ZWQsJyArXHJcbiAgICAnb25Wbm9kZUJlZm9yZVVwZGF0ZSxvblZub2RlVXBkYXRlZCwnICtcclxuICAgICdvblZub2RlQmVmb3JlVW5tb3VudCxvblZub2RlVW5tb3VudGVkJyk7XHJcbmNvbnN0IGlzQnVpbHRJbkRpcmVjdGl2ZSA9IC8qI19fUFVSRV9fKi8gbWFrZU1hcCgnYmluZCxjbG9hayxlbHNlLWlmLGVsc2UsZm9yLGh0bWwsaWYsbW9kZWwsb24sb25jZSxwcmUsc2hvdyxzbG90LHRleHQsbWVtbycpO1xyXG5jb25zdCBjYWNoZVN0cmluZ0Z1bmN0aW9uID0gKGZuKSA9PiB7XHJcbiAgICBjb25zdCBjYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XHJcbiAgICByZXR1cm4gKChzdHIpID0+IHtcclxuICAgICAgICBjb25zdCBoaXQgPSBjYWNoZVtzdHJdO1xyXG4gICAgICAgIHJldHVybiBoaXQgfHwgKGNhY2hlW3N0cl0gPSBmbihzdHIpKTtcclxuICAgIH0pO1xyXG59O1xyXG5jb25zdCBjYW1lbGl6ZVJFID0gLy0oXFx3KS9nO1xyXG4vKipcclxuICogQHByaXZhdGVcclxuICovXHJcbmNvbnN0IGNhbWVsaXplID0gY2FjaGVTdHJpbmdGdW5jdGlvbigoc3RyKSA9PiB7XHJcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoY2FtZWxpemVSRSwgKF8sIGMpID0+IChjID8gYy50b1VwcGVyQ2FzZSgpIDogJycpKTtcclxufSk7XHJcbmNvbnN0IGh5cGhlbmF0ZVJFID0gL1xcQihbQS1aXSkvZztcclxuLyoqXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5jb25zdCBoeXBoZW5hdGUgPSBjYWNoZVN0cmluZ0Z1bmN0aW9uKChzdHIpID0+IHN0ci5yZXBsYWNlKGh5cGhlbmF0ZVJFLCAnLSQxJykudG9Mb3dlckNhc2UoKSk7XHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuY29uc3QgY2FwaXRhbGl6ZSA9IGNhY2hlU3RyaW5nRnVuY3Rpb24oKHN0cikgPT4gc3RyLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyLnNsaWNlKDEpKTtcclxuLyoqXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5jb25zdCB0b0hhbmRsZXJLZXkgPSBjYWNoZVN0cmluZ0Z1bmN0aW9uKChzdHIpID0+IHN0ciA/IGBvbiR7Y2FwaXRhbGl6ZShzdHIpfWAgOiBgYCk7XHJcbi8vIGNvbXBhcmUgd2hldGhlciBhIHZhbHVlIGhhcyBjaGFuZ2VkLCBhY2NvdW50aW5nIGZvciBOYU4uXHJcbmNvbnN0IGhhc0NoYW5nZWQgPSAodmFsdWUsIG9sZFZhbHVlKSA9PiAhT2JqZWN0LmlzKHZhbHVlLCBvbGRWYWx1ZSk7XHJcbmNvbnN0IGludm9rZUFycmF5Rm5zID0gKGZucywgYXJnKSA9PiB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGZuc1tpXShhcmcpO1xyXG4gICAgfVxyXG59O1xyXG5jb25zdCBkZWYgPSAob2JqLCBrZXksIHZhbHVlKSA9PiB7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHtcclxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXHJcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXHJcbiAgICAgICAgdmFsdWVcclxuICAgIH0pO1xyXG59O1xyXG5jb25zdCB0b051bWJlciA9ICh2YWwpID0+IHtcclxuICAgIGNvbnN0IG4gPSBwYXJzZUZsb2F0KHZhbCk7XHJcbiAgICByZXR1cm4gaXNOYU4obikgPyB2YWwgOiBuO1xyXG59O1xyXG5sZXQgX2dsb2JhbFRoaXM7XHJcbmNvbnN0IGdldEdsb2JhbFRoaXMgPSAoKSA9PiB7XHJcbiAgICByZXR1cm4gKF9nbG9iYWxUaGlzIHx8XHJcbiAgICAgICAgKF9nbG9iYWxUaGlzID1cclxuICAgICAgICAgICAgdHlwZW9mIGdsb2JhbFRoaXMgIT09ICd1bmRlZmluZWQnXHJcbiAgICAgICAgICAgICAgICA/IGdsb2JhbFRoaXNcclxuICAgICAgICAgICAgICAgIDogdHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnXHJcbiAgICAgICAgICAgICAgICAgICAgPyBzZWxmXHJcbiAgICAgICAgICAgICAgICAgICAgOiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHdpbmRvd1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGdsb2JhbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fSkpO1xyXG59O1xyXG5jb25zdCBpZGVudFJFID0gL15bXyRhLXpBLVpcXHhBMC1cXHVGRkZGXVtfJGEtekEtWjAtOVxceEEwLVxcdUZGRkZdKiQvO1xyXG5mdW5jdGlvbiBnZW5Qcm9wc0FjY2Vzc0V4cChuYW1lKSB7XHJcbiAgICByZXR1cm4gaWRlbnRSRS50ZXN0KG5hbWUpXHJcbiAgICAgICAgPyBgX19wcm9wcy4ke25hbWV9YFxyXG4gICAgICAgIDogYF9fcHJvcHNbJHtKU09OLnN0cmluZ2lmeShuYW1lKX1dYDtcclxufVxuXG5leHBvcnQgeyBFTVBUWV9BUlIsIEVNUFRZX09CSiwgTk8sIE5PT1AsIFBhdGNoRmxhZ05hbWVzLCBjYW1lbGl6ZSwgY2FwaXRhbGl6ZSwgZGVmLCBlc2NhcGVIdG1sLCBlc2NhcGVIdG1sQ29tbWVudCwgZXh0ZW5kLCBnZW5Qcm9wc0FjY2Vzc0V4cCwgZ2VuZXJhdGVDb2RlRnJhbWUsIGdldEdsb2JhbFRoaXMsIGhhc0NoYW5nZWQsIGhhc093biwgaHlwaGVuYXRlLCBpbmNsdWRlQm9vbGVhbkF0dHIsIGludm9rZUFycmF5Rm5zLCBpc0FycmF5LCBpc0Jvb2xlYW5BdHRyLCBpc0J1aWx0SW5EaXJlY3RpdmUsIGlzRGF0ZSwgaXNGdW5jdGlvbiwgaXNHbG9iYWxseVdoaXRlbGlzdGVkLCBpc0hUTUxUYWcsIGlzSW50ZWdlcktleSwgaXNLbm93bkh0bWxBdHRyLCBpc0tub3duU3ZnQXR0ciwgaXNNYXAsIGlzTW9kZWxMaXN0ZW5lciwgaXNOb1VuaXROdW1lcmljU3R5bGVQcm9wLCBpc09iamVjdCwgaXNPbiwgaXNQbGFpbk9iamVjdCwgaXNQcm9taXNlLCBpc1Jlc2VydmVkUHJvcCwgaXNTU1JTYWZlQXR0ck5hbWUsIGlzU1ZHVGFnLCBpc1NldCwgaXNTcGVjaWFsQm9vbGVhbkF0dHIsIGlzU3RyaW5nLCBpc1N5bWJvbCwgaXNWb2lkVGFnLCBsb29zZUVxdWFsLCBsb29zZUluZGV4T2YsIG1ha2VNYXAsIG5vcm1hbGl6ZUNsYXNzLCBub3JtYWxpemVQcm9wcywgbm9ybWFsaXplU3R5bGUsIG9iamVjdFRvU3RyaW5nLCBwYXJzZVN0cmluZ1N0eWxlLCBwcm9wc1RvQXR0ck1hcCwgcmVtb3ZlLCBzbG90RmxhZ3NUZXh0LCBzdHJpbmdpZnlTdHlsZSwgdG9EaXNwbGF5U3RyaW5nLCB0b0hhbmRsZXJLZXksIHRvTnVtYmVyLCB0b1Jhd1R5cGUsIHRvVHlwZVN0cmluZyB9O1xuIiwiaW1wb3J0IHsgdG9SZWZzLCBnZXRDdXJyZW50SW5zdGFuY2UsIHJlZiwgY29tcHV0ZWQsIHdhdGNoLCBuZXh0VGljaywgb25Nb3VudGVkLCBvcGVuQmxvY2ssIGNyZWF0ZUVsZW1lbnRCbG9jaywgbm9ybWFsaXplQ2xhc3MsIGNyZWF0ZUNvbW1lbnRWTm9kZSwgbWVyZ2VQcm9wcywgd2l0aE1vZGlmaWVycywgRnJhZ21lbnQsIHJlbmRlckxpc3QsIHJlbmRlclNsb3QsIGNyZWF0ZVRleHRWTm9kZSwgdG9EaXNwbGF5U3RyaW5nLCBjcmVhdGVFbGVtZW50Vk5vZGUgfSBmcm9tICd2dWUnO1xuXG5mdW5jdGlvbiBpc051bGxpc2ggKHZhbCkge1xuICByZXR1cm4gW251bGwsIHVuZGVmaW5lZF0uaW5kZXhPZih2YWwpICE9PSAtMVxufVxuXG5mdW5jdGlvbiB1c2VEYXRhIChwcm9wcywgY29udGV4dCwgZGVwKVxue1xuICBjb25zdCB7IG9iamVjdCwgdmFsdWVQcm9wLCBtb2RlIH0gPSB0b1JlZnMocHJvcHMpO1xuXG4gIGNvbnN0ICR0aGlzID0gZ2V0Q3VycmVudEluc3RhbmNlKCkucHJveHk7XG5cbiAgLy8gPT09PT09PT09PT09IERFUEVOREVOQ0lFUyA9PT09PT09PT09PT1cblxuICBjb25zdCBpdiA9IGRlcC5pdjtcblxuICAvLyA9PT09PT09PT09PT09PT0gTUVUSE9EUyA9PT09PT09PT09PT09PVxuXG4gIGNvbnN0IHVwZGF0ZSA9ICh2YWwpID0+IHtcbiAgICAvLyBTZXR0aW5nIG9iamVjdChzKSBhcyBpbnRlcm5hbCB2YWx1ZVxuICAgIGl2LnZhbHVlID0gbWFrZUludGVybmFsKHZhbCk7XG5cbiAgICAvLyBTZXR0aW5nIG9iamVjdChzKSBvciBwbGFpbiB2YWx1ZSBhcyBleHRlcm5hbCBcbiAgICAvLyB2YWx1ZSBiYXNlZCBvbiBgb3B0aW9uYCBzZXR0aW5nXG4gICAgY29uc3QgZXh0ZXJuYWxWYWwgPSBtYWtlRXh0ZXJuYWwodmFsKTtcblxuICAgIGNvbnRleHQuZW1pdCgnY2hhbmdlJywgZXh0ZXJuYWxWYWwsICR0aGlzKTtcbiAgICBjb250ZXh0LmVtaXQoJ2lucHV0JywgZXh0ZXJuYWxWYWwpO1xuICAgIGNvbnRleHQuZW1pdCgndXBkYXRlOm1vZGVsVmFsdWUnLCBleHRlcm5hbFZhbCk7XG4gIH07IFxuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBtYWtlRXh0ZXJuYWwgPSAodmFsKSA9PiB7XG4gICAgLy8gSWYgZXh0ZXJuYWwgdmFsdWUgc2hvdWxkIGJlIG9iamVjdFxuICAgIC8vIG5vIHRyYW5zZm9ybWF0aW9uIGlzIHJlcXVpcmVkXG4gICAgaWYgKG9iamVjdC52YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbFxuICAgIH1cblxuICAgIC8vIE5vIG5lZWQgdG8gdHJhbnNmb3JtIGlmIGVtcHR5IHZhbHVlXG4gICAgaWYgKGlzTnVsbGlzaCh2YWwpKSB7XG4gICAgICByZXR1cm4gdmFsXG4gICAgfVxuXG4gICAgLy8gSWYgZXh0ZXJuYWwgc2hvdWxkIGJlIHBsYWluIHRyYW5zZm9ybVxuICAgIC8vIHZhbHVlIG9iamVjdCB0byBwbGFpbiB2YWx1ZXNcbiAgICByZXR1cm4gIUFycmF5LmlzQXJyYXkodmFsKSA/IHZhbFt2YWx1ZVByb3AudmFsdWVdIDogdmFsLm1hcCh2ID0+IHZbdmFsdWVQcm9wLnZhbHVlXSlcbiAgfTtcblxuICAvLyBubyBleHBvcnRcbiAgY29uc3QgbWFrZUludGVybmFsID0gKHZhbCkgPT4ge1xuICAgIGlmIChpc051bGxpc2godmFsKSkge1xuICAgICAgcmV0dXJuIG1vZGUudmFsdWUgPT09ICdzaW5nbGUnID8ge30gOiBbXVxuICAgIH1cblxuICAgIHJldHVybiB2YWxcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIHVwZGF0ZSxcbiAgfVxufVxuXG5mdW5jdGlvbiB1c2VWYWx1ZSAocHJvcHMsIGNvbnRleHQpXG57XG4gIGNvbnN0IHsgdmFsdWUsIG1vZGVsVmFsdWUsIG1vZGUsIHZhbHVlUHJvcCB9ID0gdG9SZWZzKHByb3BzKTtcblxuICAvLyA9PT09PT09PT09PT09PT09IERBVEEgPT09PT09PT09PT09PT09PVxuXG4gIC8vIGludGVybmFsVmFsdWVcbiAgY29uc3QgaXYgPSByZWYobW9kZS52YWx1ZSAhPT0gJ3NpbmdsZScgPyBbXSA6IHt9KTtcblxuICAvLyA9PT09PT09PT09PT09PSBDT01QVVRFRCA9PT09PT09PT09PT09PVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIC8vIGV4dGVybmFsVmFsdWVcbiAgY29uc3QgZXYgPSBtb2RlbFZhbHVlICYmIG1vZGVsVmFsdWUudmFsdWUgIT09IHVuZGVmaW5lZCA/IG1vZGVsVmFsdWUgOiB2YWx1ZTtcblxuICBjb25zdCBwbGFpblZhbHVlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiBtb2RlLnZhbHVlID09PSAnc2luZ2xlJyA/IGl2LnZhbHVlW3ZhbHVlUHJvcC52YWx1ZV0gOiBpdi52YWx1ZS5tYXAodj0+dlt2YWx1ZVByb3AudmFsdWVdKVxuICB9KTtcblxuICBjb25zdCB0ZXh0VmFsdWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIG1vZGUudmFsdWUgIT09ICdzaW5nbGUnID8gaXYudmFsdWUubWFwKHY9PnZbdmFsdWVQcm9wLnZhbHVlXSkuam9pbignLCcpIDogaXYudmFsdWVbdmFsdWVQcm9wLnZhbHVlXVxuICB9KTtcblxuICByZXR1cm4ge1xuICAgIGl2LFxuICAgIGludGVybmFsVmFsdWU6IGl2LFxuICAgIGV2LFxuICAgIGV4dGVybmFsVmFsdWU6IGV2LFxuICAgIHRleHRWYWx1ZSxcbiAgICBwbGFpblZhbHVlLFxuICB9XG59XG5cbmZ1bmN0aW9uIHVzZVNlYXJjaCAocHJvcHMsIGNvbnRleHQsIGRlcClcbnsgIGNvbnN0IHsgcmVnZXggfSA9IHRvUmVmcyhwcm9wcyk7XG5cbiAgY29uc3QgJHRoaXMgPSBnZXRDdXJyZW50SW5zdGFuY2UoKS5wcm94eTtcblxuICAvLyA9PT09PT09PT09PT0gREVQRU5ERU5DSUVTID09PT09PT09PT09PVxuXG4gIGNvbnN0IGlzT3BlbiA9IGRlcC5pc09wZW47XG4gIGNvbnN0IG9wZW4gPSBkZXAub3BlbjtcblxuICAvLyA9PT09PT09PT09PT09PT09IERBVEEgPT09PT09PT09PT09PT09PVxuXG4gIGNvbnN0IHNlYXJjaCA9IHJlZihudWxsKTtcblxuICBjb25zdCBpbnB1dCA9IHJlZihudWxsKTtcblxuICAvLyA9PT09PT09PT09PT09PT0gTUVUSE9EUyA9PT09PT09PT09PT09PVxuXG4gIGNvbnN0IGNsZWFyU2VhcmNoID0gKCkgPT4ge1xuICAgIHNlYXJjaC52YWx1ZSA9ICcnO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVNlYXJjaElucHV0ID0gKGUpID0+IHtcbiAgICBzZWFyY2gudmFsdWUgPSBlLnRhcmdldC52YWx1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVLZXlwcmVzcyA9IChlKSA9PiB7XG4gICAgaWYgKHJlZ2V4ICYmIHJlZ2V4LnZhbHVlKSB7XG4gICAgICBsZXQgcmVnZXhwID0gcmVnZXgudmFsdWU7XG5cbiAgICAgIGlmICh0eXBlb2YgcmVnZXhwID09PSAnc3RyaW5nJykge1xuICAgICAgICByZWdleHAgPSBuZXcgUmVnRXhwKHJlZ2V4cCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghZS5rZXkubWF0Y2gocmVnZXhwKSkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVBhc3RlID0gKGUpID0+IHtcbiAgICBpZiAocmVnZXggJiYgcmVnZXgudmFsdWUpIHtcbiAgICAgIGxldCBjbGlwYm9hcmREYXRhID0gZS5jbGlwYm9hcmREYXRhIHx8IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIHdpbmRvdy5jbGlwYm9hcmREYXRhO1xuICAgICAgbGV0IHBhc3RlZERhdGEgPSBjbGlwYm9hcmREYXRhLmdldERhdGEoJ1RleHQnKTtcblxuICAgICAgbGV0IHJlZ2V4cCA9IHJlZ2V4LnZhbHVlO1xuXG4gICAgICBpZiAodHlwZW9mIHJlZ2V4cCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmVnZXhwID0gbmV3IFJlZ0V4cChyZWdleHApO1xuICAgICAgfVxuICAgICAgXG4gICAgICBpZiAoIXBhc3RlZERhdGEuc3BsaXQoJycpLmV2ZXJ5KGMgPT4gISFjLm1hdGNoKHJlZ2V4cCkpKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb250ZXh0LmVtaXQoJ3Bhc3RlJywgZSwgJHRoaXMpO1xuICB9O1xuXG4gIC8vID09PT09PT09PT09PT09IFdBVENIRVJTID09PT09PT09PT09PT09XG5cbiAgd2F0Y2goc2VhcmNoLCAodmFsKSA9PiB7XG4gICAgaWYgKCFpc09wZW4udmFsdWUgJiYgdmFsKSB7XG4gICAgICBvcGVuKCk7XG4gICAgfVxuXG4gICAgY29udGV4dC5lbWl0KCdzZWFyY2gtY2hhbmdlJywgdmFsLCAkdGhpcyk7XG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgc2VhcmNoLFxuICAgIGlucHV0LFxuICAgIGNsZWFyU2VhcmNoLFxuICAgIGhhbmRsZVNlYXJjaElucHV0LFxuICAgIGhhbmRsZUtleXByZXNzLFxuICAgIGhhbmRsZVBhc3RlLFxuICB9XG59XG5cbmZ1bmN0aW9uIHVzZVBvaW50ZXIkMSAocHJvcHMsIGNvbnRleHQsIGRlcClcbntcbiAgY29uc3QgeyBncm91cFNlbGVjdCwgbW9kZSwgZ3JvdXBzLCBkaXNhYmxlZFByb3AgfSA9IHRvUmVmcyhwcm9wcyk7XG5cbiAgLy8gPT09PT09PT09PT09PT09PSBEQVRBID09PT09PT09PT09PT09PT1cblxuICBjb25zdCBwb2ludGVyID0gcmVmKG51bGwpO1xuXG4gIC8vID09PT09PT09PT09PT09PSBNRVRIT0RTID09PT09PT09PT09PT09XG5cbiAgY29uc3Qgc2V0UG9pbnRlciA9IChvcHRpb24pID0+IHtcbiAgICBpZiAob3B0aW9uID09PSB1bmRlZmluZWQgfHwgKG9wdGlvbiAhPT0gbnVsbCAmJiBvcHRpb25bZGlzYWJsZWRQcm9wLnZhbHVlXSkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChncm91cHMudmFsdWUgJiYgb3B0aW9uICYmIG9wdGlvbi5ncm91cCAmJiAobW9kZS52YWx1ZSA9PT0gJ3NpbmdsZScgfHwgIWdyb3VwU2VsZWN0LnZhbHVlKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgcG9pbnRlci52YWx1ZSA9IG9wdGlvbjtcbiAgfTtcblxuICBjb25zdCBjbGVhclBvaW50ZXIgPSAoKSA9PiB7XG4gICAgc2V0UG9pbnRlcihudWxsKTtcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIHBvaW50ZXIsXG4gICAgc2V0UG9pbnRlcixcbiAgICBjbGVhclBvaW50ZXIsXG4gIH1cbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplIChzdHIsIHN0cmljdCA9IHRydWUpIHtcbiAgcmV0dXJuIHN0cmljdFxuICAgID8gU3RyaW5nKHN0cikudG9Mb3dlckNhc2UoKS50cmltKClcbiAgICA6IFN0cmluZyhzdHIpLm5vcm1hbGl6ZSgnTkZEJykucmVwbGFjZSgvXFxwe0RpYWNyaXRpY30vZ3UsICcnKS50b0xvd2VyQ2FzZSgpLnRyaW0oKVxufVxuXG5mdW5jdGlvbiBpc09iamVjdCAodmFyaWFibGUpIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YXJpYWJsZSkgPT09ICdbb2JqZWN0IE9iamVjdF0nXG59XG5cbmZ1bmN0aW9uIGFycmF5c0VxdWFsIChhcnJheTEsIGFycmF5Mikge1xuICBjb25zdCBhcnJheTJTb3J0ZWQgPSBhcnJheTIuc2xpY2UoKS5zb3J0KCk7XG5cbiAgcmV0dXJuIGFycmF5MS5sZW5ndGggPT09IGFycmF5Mi5sZW5ndGggJiYgYXJyYXkxLnNsaWNlKCkuc29ydCgpLmV2ZXJ5KGZ1bmN0aW9uKHZhbHVlLCBpbmRleCkge1xuICAgICAgcmV0dXJuIHZhbHVlID09PSBhcnJheTJTb3J0ZWRbaW5kZXhdO1xuICB9KVxufVxuXG5mdW5jdGlvbiB1c2VPcHRpb25zIChwcm9wcywgY29udGV4dCwgZGVwKVxue1xuICBjb25zdCB7IFxuICAgIG9wdGlvbnMsIG1vZGUsIHRyYWNrQnk6IHRyYWNrQnlfLCBsaW1pdCwgaGlkZVNlbGVjdGVkLCBjcmVhdGVUYWcsIGNyZWF0ZU9wdGlvbjogY3JlYXRlT3B0aW9uXywgbGFiZWwsXG4gICAgYXBwZW5kTmV3VGFnLCBhcHBlbmROZXdPcHRpb246IGFwcGVuZE5ld09wdGlvbl8sIG11bHRpcGxlTGFiZWwsIG9iamVjdCwgbG9hZGluZywgZGVsYXksIHJlc29sdmVPbkxvYWQsXG4gICAgbWluQ2hhcnMsIGZpbHRlclJlc3VsdHMsIGNsZWFyT25TZWFyY2gsIGNsZWFyT25TZWxlY3QsIHZhbHVlUHJvcCxcbiAgICBjYW5EZXNlbGVjdCwgbWF4LCBzdHJpY3QsIGNsb3NlT25TZWxlY3QsIGdyb3VwczogZ3JvdXBwZWQsIHJldmVyc2UsIGluZmluaXRlLFxuICAgIGdyb3VwT3B0aW9ucywgZ3JvdXBIaWRlRW1wdHksIGdyb3VwU2VsZWN0LCBvbkNyZWF0ZSwgZGlzYWJsZWRQcm9wLCBzZWFyY2hTdGFydCxcbiAgfSA9IHRvUmVmcyhwcm9wcyk7XG5cbiAgY29uc3QgJHRoaXMgPSBnZXRDdXJyZW50SW5zdGFuY2UoKS5wcm94eTtcblxuICAvLyA9PT09PT09PT09PT0gREVQRU5ERU5DSUVTID09PT09PT09PT09PVxuXG4gIGNvbnN0IGl2ID0gZGVwLml2O1xuICBjb25zdCBldiA9IGRlcC5ldjtcbiAgY29uc3Qgc2VhcmNoID0gZGVwLnNlYXJjaDtcbiAgY29uc3QgY2xlYXJTZWFyY2ggPSBkZXAuY2xlYXJTZWFyY2g7XG4gIGNvbnN0IHVwZGF0ZSA9IGRlcC51cGRhdGU7XG4gIGNvbnN0IHBvaW50ZXIgPSBkZXAucG9pbnRlcjtcbiAgY29uc3QgY2xlYXJQb2ludGVyID0gZGVwLmNsZWFyUG9pbnRlcjtcbiAgY29uc3QgZm9jdXMgPSBkZXAuZm9jdXM7XG4gIGNvbnN0IGRlYWN0aXZhdGUgPSBkZXAuZGVhY3RpdmF0ZTtcbiAgY29uc3QgY2xvc2UgPSBkZXAuY2xvc2U7XG5cbiAgLy8gPT09PT09PT09PT09PT09PSBEQVRBID09PT09PT09PT09PT09PT1cblxuICAvLyBubyBleHBvcnRcbiAgLy8gYXBwZW5kZWRPcHRpb25zXG4gIGNvbnN0IGFwID0gcmVmKFtdKTtcblxuICAvLyBubyBleHBvcnRcbiAgLy8gcmVzb2x2ZWRPcHRpb25zXG4gIGNvbnN0IHJvID0gcmVmKFtdKTtcblxuICBjb25zdCByZXNvbHZpbmcgPSByZWYoZmFsc2UpO1xuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBzZWFyY2hXYXRjaGVyID0gcmVmKG51bGwpO1xuXG4gIGNvbnN0IG9mZnNldCA9IHJlZihpbmZpbml0ZS52YWx1ZSAmJiBsaW1pdC52YWx1ZSA9PT0gLTEgPyAxMCA6IGxpbWl0LnZhbHVlKTtcblxuICAvLyA9PT09PT09PT09PT09PSBDT01QVVRFRCA9PT09PT09PT09PT09PVxuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBjcmVhdGVPcHRpb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIGNyZWF0ZVRhZy52YWx1ZSB8fCBjcmVhdGVPcHRpb25fLnZhbHVlIHx8IGZhbHNlXG4gIH0pO1xuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBhcHBlbmROZXdPcHRpb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKGFwcGVuZE5ld1RhZy52YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gYXBwZW5kTmV3VGFnLnZhbHVlXG4gICAgfSBlbHNlIGlmIChhcHBlbmROZXdPcHRpb25fLnZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBhcHBlbmROZXdPcHRpb25fLnZhbHVlXG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfSk7XG5cbiAgLy8gbm8gZXhwb3J0XG4gIC8vIGV4dGVuZGVkT3B0aW9uc1xuICBjb25zdCBlbyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoZ3JvdXBwZWQudmFsdWUpIHtcbiAgICAgIGxldCBncm91cHMgPSByby52YWx1ZSB8fCAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyBbXTtcblxuICAgICAgbGV0IGVvID0gW107XG5cbiAgICAgIGdyb3Vwcy5mb3JFYWNoKChncm91cCkgPT4ge1xuICAgICAgICBvcHRpb25zVG9BcnJheShncm91cFtncm91cE9wdGlvbnMudmFsdWVdKS5mb3JFYWNoKChvcHRpb24pID0+IHtcbiAgICAgICAgICBlby5wdXNoKE9iamVjdC5hc3NpZ24oe30sIG9wdGlvbiwgZ3JvdXBbZGlzYWJsZWRQcm9wLnZhbHVlXSA/IHsgW2Rpc2FibGVkUHJvcC52YWx1ZV06IHRydWUgfSA6IHt9KSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBlb1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgZW8gPSBvcHRpb25zVG9BcnJheShyby52YWx1ZSB8fCAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyBbXSk7XG5cbiAgICAgIGlmIChhcC52YWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgZW8gPSBlby5jb25jYXQoYXAudmFsdWUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZW9cbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IGZnID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICghZ3JvdXBwZWQudmFsdWUpIHtcbiAgICAgIHJldHVybiBbXVxuICAgIH1cblxuICAgIHJldHVybiBmaWx0ZXJHcm91cHMoKHJvLnZhbHVlIHx8IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIFtdKS5tYXAoKGdyb3VwKSA9PiB7XG4gICAgICBjb25zdCBhcnJheU9wdGlvbnMgPSBvcHRpb25zVG9BcnJheShncm91cFtncm91cE9wdGlvbnMudmFsdWVdKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZ3JvdXAsXG4gICAgICAgIGdyb3VwOiB0cnVlLFxuICAgICAgICBbZ3JvdXBPcHRpb25zLnZhbHVlXTogZmlsdGVyT3B0aW9ucyhhcnJheU9wdGlvbnMsIGZhbHNlKS5tYXAobyA9PiBPYmplY3QuYXNzaWduKHt9LCBvLCBncm91cFtkaXNhYmxlZFByb3AudmFsdWVdID8geyBbZGlzYWJsZWRQcm9wLnZhbHVlXTogdHJ1ZSB9IDoge30pKSxcbiAgICAgICAgX19WSVNJQkxFX186IGZpbHRlck9wdGlvbnMoYXJyYXlPcHRpb25zKS5tYXAobyA9PiBPYmplY3QuYXNzaWduKHt9LCBvLCBncm91cFtkaXNhYmxlZFByb3AudmFsdWVdID8geyBbZGlzYWJsZWRQcm9wLnZhbHVlXTogdHJ1ZSB9IDoge30pKSxcbiAgICAgIH1cbiAgICAgIC8vIERpZmZlcmVuY2UgYmV0d2VlbiBfX1ZJU0lCTEVfXyBhbmQge2dyb3VwT3B0aW9uc306IHZpc2libGUgZG9lcyBub3QgY29udGFpbiBzZWxlY3RlZCBvcHRpb25zIHdoZW4gaGlkZVNlbGVjdGVkPXRydWVcbiAgICB9KSlcbiAgfSk7XG5cbiAgLy8gcHJlRmlsdGVyZWRPcHRpb25zXG4gIGNvbnN0IHBmbyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBsZXQgb3B0aW9ucyA9IGVvLnZhbHVlO1xuXG4gICAgaWYgKHJldmVyc2UudmFsdWUpIHtcbiAgICAgIG9wdGlvbnMgPSBvcHRpb25zLnJldmVyc2UoKTtcbiAgICB9XG5cbiAgICBpZiAoY3JlYXRlZE9wdGlvbi52YWx1ZS5sZW5ndGgpIHtcbiAgICAgIG9wdGlvbnMgPSBjcmVhdGVkT3B0aW9uLnZhbHVlLmNvbmNhdChvcHRpb25zKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmlsdGVyT3B0aW9ucyhvcHRpb25zKVxuICB9KTtcblxuICAvLyBmaWx0ZXJlZE9wdGlvbnNcbiAgY29uc3QgZm8gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgbGV0IG9wdGlvbnMgPSBwZm8udmFsdWU7XG5cbiAgICBpZiAob2Zmc2V0LnZhbHVlID4gMCkge1xuICAgICAgb3B0aW9ucyA9IG9wdGlvbnMuc2xpY2UoMCwgb2Zmc2V0LnZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3B0aW9uc1xuICB9KTtcblxuICBjb25zdCBoYXNTZWxlY3RlZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBzd2l0Y2ggKG1vZGUudmFsdWUpIHtcbiAgICAgIGNhc2UgJ3NpbmdsZSc6XG4gICAgICAgIHJldHVybiAhaXNOdWxsaXNoKGl2LnZhbHVlW3ZhbHVlUHJvcC52YWx1ZV0pXG5cbiAgICAgIGNhc2UgJ211bHRpcGxlJzpcbiAgICAgIGNhc2UgJ3RhZ3MnOlxuICAgICAgICByZXR1cm4gIWlzTnVsbGlzaChpdi52YWx1ZSkgJiYgaXYudmFsdWUubGVuZ3RoID4gMFxuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgbXVsdGlwbGVMYWJlbFRleHQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIG11bHRpcGxlTGFiZWwgIT09IHVuZGVmaW5lZCAmJiBtdWx0aXBsZUxhYmVsLnZhbHVlICE9PSB1bmRlZmluZWRcbiAgICAgID8gbXVsdGlwbGVMYWJlbC52YWx1ZShpdi52YWx1ZSwgJHRoaXMpXG4gICAgICA6IChpdi52YWx1ZSAmJiBpdi52YWx1ZS5sZW5ndGggPiAxID8gYCR7aXYudmFsdWUubGVuZ3RofSBvcHRpb25zIHNlbGVjdGVkYCA6IGAxIG9wdGlvbiBzZWxlY3RlZGApXG4gIH0pO1xuXG4gIGNvbnN0IG5vT3B0aW9ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gIWVvLnZhbHVlLmxlbmd0aCAmJiAhcmVzb2x2aW5nLnZhbHVlICYmICFjcmVhdGVkT3B0aW9uLnZhbHVlLmxlbmd0aFxuICB9KTtcblxuXG4gIGNvbnN0IG5vUmVzdWx0cyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gZW8udmFsdWUubGVuZ3RoID4gMCAmJiBmby52YWx1ZS5sZW5ndGggPT0gMCAmJiAoKHNlYXJjaC52YWx1ZSAmJiBncm91cHBlZC52YWx1ZSkgfHwgIWdyb3VwcGVkLnZhbHVlKVxuICB9KTtcblxuICAvLyBubyBleHBvcnRcbiAgY29uc3QgY3JlYXRlZE9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoY3JlYXRlT3B0aW9uLnZhbHVlID09PSBmYWxzZSB8fCAhc2VhcmNoLnZhbHVlKSB7XG4gICAgICByZXR1cm4gW11cbiAgICB9XG5cbiAgICByZXR1cm4gZ2V0T3B0aW9uQnlUcmFja0J5KHNlYXJjaC52YWx1ZSkgIT09IC0xID8gW10gOiBbe1xuICAgICAgW3ZhbHVlUHJvcC52YWx1ZV06IHNlYXJjaC52YWx1ZSxcbiAgICAgIFtsYWJlbC52YWx1ZV06IHNlYXJjaC52YWx1ZSxcbiAgICAgIFt0cmFja0J5LnZhbHVlXTogc2VhcmNoLnZhbHVlLFxuICAgICAgX19DUkVBVEVfXzogdHJ1ZSxcbiAgICB9XVxuICB9KTtcblxuICBjb25zdCB0cmFja0J5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0cmFja0J5Xy52YWx1ZSB8fCBsYWJlbC52YWx1ZVxuICB9KTtcblxuICAvLyBubyBleHBvcnRcbiAgY29uc3QgbnVsbFZhbHVlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHN3aXRjaCAobW9kZS52YWx1ZSkge1xuICAgICAgY2FzZSAnc2luZ2xlJzpcbiAgICAgICAgcmV0dXJuIG51bGxcblxuICAgICAgY2FzZSAnbXVsdGlwbGUnOlxuICAgICAgY2FzZSAndGFncyc6XG4gICAgICAgIHJldHVybiBbXVxuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgYnVzeSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gbG9hZGluZy52YWx1ZSB8fCByZXNvbHZpbmcudmFsdWVcbiAgfSk7XG5cbiAgLy8gPT09PT09PT09PT09PT09IE1FVEhPRFMgPT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogQHBhcmFtIHthcnJheXxvYmplY3R8c3RyaW5nfG51bWJlcn0gb3B0aW9uIFxuICAgKi9cbiAgY29uc3Qgc2VsZWN0ID0gKG9wdGlvbikgPT4ge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9uICE9PSAnb2JqZWN0Jykge1xuICAgICAgb3B0aW9uID0gZ2V0T3B0aW9uKG9wdGlvbik7XG4gICAgfVxuXG4gICAgc3dpdGNoIChtb2RlLnZhbHVlKSB7XG4gICAgICBjYXNlICdzaW5nbGUnOlxuICAgICAgICB1cGRhdGUob3B0aW9uKTtcbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSAnbXVsdGlwbGUnOlxuICAgICAgY2FzZSAndGFncyc6XG4gICAgICAgIHVwZGF0ZSgoaXYudmFsdWUpLmNvbmNhdChvcHRpb24pKTtcbiAgICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjb250ZXh0LmVtaXQoJ3NlbGVjdCcsIGZpbmFsVmFsdWUob3B0aW9uKSwgb3B0aW9uLCAkdGhpcyk7XG4gIH07XG5cbiAgY29uc3QgZGVzZWxlY3QgPSAob3B0aW9uKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb24gIT09ICdvYmplY3QnKSB7XG4gICAgICBvcHRpb24gPSBnZXRPcHRpb24ob3B0aW9uKTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKG1vZGUudmFsdWUpIHtcbiAgICAgIGNhc2UgJ3NpbmdsZSc6XG4gICAgICAgIGNsZWFyKCk7XG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgJ3RhZ3MnOlxuICAgICAgY2FzZSAnbXVsdGlwbGUnOlxuICAgICAgICB1cGRhdGUoQXJyYXkuaXNBcnJheShvcHRpb24pXG4gICAgICAgICAgPyBpdi52YWx1ZS5maWx0ZXIodiA9PiBvcHRpb24ubWFwKG8gPT4gb1t2YWx1ZVByb3AudmFsdWVdKS5pbmRleE9mKHZbdmFsdWVQcm9wLnZhbHVlXSkgPT09IC0xKVxuICAgICAgICAgIDogaXYudmFsdWUuZmlsdGVyKHYgPT4gdlt2YWx1ZVByb3AudmFsdWVdICE9IG9wdGlvblt2YWx1ZVByb3AudmFsdWVdKSk7XG4gICAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgY29udGV4dC5lbWl0KCdkZXNlbGVjdCcsIGZpbmFsVmFsdWUob3B0aW9uKSwgb3B0aW9uLCAkdGhpcyk7XG4gIH07XG5cbiAgLy8gbm8gZXhwb3J0XG4gIGNvbnN0IGZpbmFsVmFsdWUgPSAob3B0aW9uKSA9PiB7XG4gICAgcmV0dXJuIG9iamVjdC52YWx1ZSA/IG9wdGlvbiA6IG9wdGlvblt2YWx1ZVByb3AudmFsdWVdXG4gIH07XG5cbiAgY29uc3QgcmVtb3ZlID0gKG9wdGlvbikgPT4ge1xuICAgIGRlc2VsZWN0KG9wdGlvbik7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlVGFnUmVtb3ZlID0gKG9wdGlvbiwgZSkgPT4ge1xuICAgIGlmIChlLmJ1dHRvbiAhPT0gMCkge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgcmVtb3ZlKG9wdGlvbik7XG4gIH07XG5cbiAgY29uc3QgY2xlYXIgPSAoKSA9PiB7XG4gICAgY29udGV4dC5lbWl0KCdjbGVhcicsICR0aGlzKTtcbiAgICB1cGRhdGUobnVsbFZhbHVlLnZhbHVlKTtcbiAgfTtcblxuICBjb25zdCBpc1NlbGVjdGVkID0gKG9wdGlvbikgPT4ge1xuICAgIGlmIChvcHRpb24uZ3JvdXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIG1vZGUudmFsdWUgPT09ICdzaW5nbGUnID8gZmFsc2UgOiBhcmVBbGxTZWxlY3RlZChvcHRpb25bZ3JvdXBPcHRpb25zLnZhbHVlXSkgJiYgb3B0aW9uW2dyb3VwT3B0aW9ucy52YWx1ZV0ubGVuZ3RoXG4gICAgfVxuXG4gICAgc3dpdGNoIChtb2RlLnZhbHVlKSB7XG4gICAgICBjYXNlICdzaW5nbGUnOlxuICAgICAgICByZXR1cm4gIWlzTnVsbGlzaChpdi52YWx1ZSkgJiYgaXYudmFsdWVbdmFsdWVQcm9wLnZhbHVlXSA9PSBvcHRpb25bdmFsdWVQcm9wLnZhbHVlXVxuXG4gICAgICBjYXNlICd0YWdzJzpcbiAgICAgIGNhc2UgJ211bHRpcGxlJzpcbiAgICAgICAgcmV0dXJuICFpc051bGxpc2goaXYudmFsdWUpICYmIGl2LnZhbHVlLm1hcChvID0+IG9bdmFsdWVQcm9wLnZhbHVlXSkuaW5kZXhPZihvcHRpb25bdmFsdWVQcm9wLnZhbHVlXSkgIT09IC0xXG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGlzRGlzYWJsZWQgPSAob3B0aW9uKSA9PiB7XG4gICAgcmV0dXJuIG9wdGlvbltkaXNhYmxlZFByb3AudmFsdWVdID09PSB0cnVlXG4gIH07XG5cbiAgY29uc3QgaXNNYXggPSAoKSA9PiB7XG4gICAgaWYgKG1heCA9PT0gdW5kZWZpbmVkIHx8IG1heC52YWx1ZSA9PT0gLTEgfHwgKCFoYXNTZWxlY3RlZC52YWx1ZSAmJiBtYXgudmFsdWUgPiAwKSkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICAgIFxuICAgIHJldHVybiBpdi52YWx1ZS5sZW5ndGggPj0gbWF4LnZhbHVlXG4gIH07XG5cbiAgY29uc3QgaGFuZGxlT3B0aW9uQ2xpY2sgPSAob3B0aW9uKSA9PiB7XG4gICAgaWYgKGlzRGlzYWJsZWQob3B0aW9uKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKG9uQ3JlYXRlICYmIG9uQ3JlYXRlLnZhbHVlICYmICFpc1NlbGVjdGVkKG9wdGlvbikgJiYgb3B0aW9uLl9fQ1JFQVRFX18pIHtcbiAgICAgIG9wdGlvbiA9IHsgLi4ub3B0aW9uIH07XG4gICAgICBkZWxldGUgb3B0aW9uLl9fQ1JFQVRFX187XG5cbiAgICAgIG9wdGlvbiA9IG9uQ3JlYXRlLnZhbHVlKG9wdGlvbiwgJHRoaXMpO1xuICAgICAgXG4gICAgICBpZiAob3B0aW9uIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICByZXNvbHZpbmcudmFsdWUgPSB0cnVlO1xuICAgICAgICBvcHRpb24udGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgcmVzb2x2aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgaGFuZGxlT3B0aW9uU2VsZWN0KHJlc3VsdCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVyblxuICAgICAgfSBcbiAgICB9XG5cbiAgICBoYW5kbGVPcHRpb25TZWxlY3Qob3B0aW9uKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVPcHRpb25TZWxlY3QgPSAob3B0aW9uKSA9PiB7XG4gICAgaWYgKG9wdGlvbi5fX0NSRUFURV9fKSB7XG4gICAgICBvcHRpb24gPSB7IC4uLm9wdGlvbiB9O1xuICAgICAgZGVsZXRlIG9wdGlvbi5fX0NSRUFURV9fO1xuICAgIH1cbiAgICBcbiAgICBzd2l0Y2ggKG1vZGUudmFsdWUpIHtcbiAgICAgIGNhc2UgJ3NpbmdsZSc6XG4gICAgICAgIGlmIChvcHRpb24gJiYgaXNTZWxlY3RlZChvcHRpb24pKSB7XG4gICAgICAgICAgaWYgKGNhbkRlc2VsZWN0LnZhbHVlKSB7XG4gICAgICAgICAgICBkZXNlbGVjdChvcHRpb24pO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb24pIHtcbiAgICAgICAgICBoYW5kbGVPcHRpb25BcHBlbmQob3B0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChjbGVhck9uU2VsZWN0LnZhbHVlKSB7XG4gICAgICAgICAgY2xlYXJTZWFyY2goKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjbG9zZU9uU2VsZWN0LnZhbHVlKSB7XG4gICAgICAgICAgY2xlYXJQb2ludGVyKCk7XG4gICAgICAgICAgY2xvc2UoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb24pIHtcbiAgICAgICAgICBzZWxlY3Qob3B0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlICdtdWx0aXBsZSc6XG4gICAgICAgIGlmIChvcHRpb24gJiYgaXNTZWxlY3RlZChvcHRpb24pKSB7XG4gICAgICAgICAgZGVzZWxlY3Qob3B0aW9uKTtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc01heCgpKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9uKSB7XG4gICAgICAgICAgaGFuZGxlT3B0aW9uQXBwZW5kKG9wdGlvbik7XG4gICAgICAgICAgc2VsZWN0KG9wdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2xlYXJPblNlbGVjdC52YWx1ZSkge1xuICAgICAgICAgIGNsZWFyU2VhcmNoKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaGlkZVNlbGVjdGVkLnZhbHVlKSB7XG4gICAgICAgICAgY2xlYXJQb2ludGVyKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2xvc2VPblNlbGVjdC52YWx1ZSkge1xuICAgICAgICAgIGNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSAndGFncyc6XG4gICAgICAgIGlmIChvcHRpb24gJiYgaXNTZWxlY3RlZChvcHRpb24pKSB7XG4gICAgICAgICAgZGVzZWxlY3Qob3B0aW9uKTtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc01heCgpKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9uKSB7XG4gICAgICAgICAgaGFuZGxlT3B0aW9uQXBwZW5kKG9wdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2xlYXJPblNlbGVjdC52YWx1ZSkge1xuICAgICAgICAgIGNsZWFyU2VhcmNoKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9uKSB7XG4gICAgICAgICAgc2VsZWN0KG9wdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaGlkZVNlbGVjdGVkLnZhbHVlKSB7XG4gICAgICAgICAgY2xlYXJQb2ludGVyKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2xvc2VPblNlbGVjdC52YWx1ZSkge1xuICAgICAgICAgIGNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBpZiAoIWNsb3NlT25TZWxlY3QudmFsdWUpIHtcbiAgICAgIGZvY3VzKCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUdyb3VwQ2xpY2sgPSAoZ3JvdXApID0+IHtcbiAgICBpZiAoaXNEaXNhYmxlZChncm91cCkgfHwgbW9kZS52YWx1ZSA9PT0gJ3NpbmdsZScgfHwgIWdyb3VwU2VsZWN0LnZhbHVlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBzd2l0Y2ggKG1vZGUudmFsdWUpIHtcbiAgICAgIGNhc2UgJ211bHRpcGxlJzpcbiAgICAgIGNhc2UgJ3RhZ3MnOlxuICAgICAgICBpZiAoYXJlQWxsRW5hYmxlZFNlbGVjdGVkKGdyb3VwW2dyb3VwT3B0aW9ucy52YWx1ZV0pKSB7XG4gICAgICAgICAgZGVzZWxlY3QoZ3JvdXBbZ3JvdXBPcHRpb25zLnZhbHVlXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VsZWN0KGdyb3VwW2dyb3VwT3B0aW9ucy52YWx1ZV1cbiAgICAgICAgICAgIC5maWx0ZXIobyA9PiBpdi52YWx1ZS5tYXAodiA9PiB2W3ZhbHVlUHJvcC52YWx1ZV0pLmluZGV4T2Yob1t2YWx1ZVByb3AudmFsdWVdKSA9PT0gLTEpXG4gICAgICAgICAgICAuZmlsdGVyKG8gPT4gIW9bZGlzYWJsZWRQcm9wLnZhbHVlXSlcbiAgICAgICAgICAgIC5maWx0ZXIoKG8sIGspID0+IGl2LnZhbHVlLmxlbmd0aCArIDEgKyBrIDw9IG1heC52YWx1ZSB8fCBtYXgudmFsdWUgPT09IC0xKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBpZiAoY2xvc2VPblNlbGVjdC52YWx1ZSkge1xuICAgICAgZGVhY3RpdmF0ZSgpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVPcHRpb25BcHBlbmQgPSAob3B0aW9uKSA9PiB7XG4gICAgaWYgKGdldE9wdGlvbihvcHRpb25bdmFsdWVQcm9wLnZhbHVlXSkgPT09IHVuZGVmaW5lZCAmJiBjcmVhdGVPcHRpb24udmFsdWUpIHtcbiAgICAgIGNvbnRleHQuZW1pdCgndGFnJywgb3B0aW9uW3ZhbHVlUHJvcC52YWx1ZV0sICR0aGlzKTtcbiAgICAgIGNvbnRleHQuZW1pdCgnb3B0aW9uJywgb3B0aW9uW3ZhbHVlUHJvcC52YWx1ZV0sICR0aGlzKTtcblxuICAgICAgaWYgKGFwcGVuZE5ld09wdGlvbi52YWx1ZSkge1xuICAgICAgICBhcHBlbmRPcHRpb24ob3B0aW9uKTtcbiAgICAgIH1cblxuICAgICAgY2xlYXJTZWFyY2goKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgc2VsZWN0QWxsID0gKCkgPT4ge1xuICAgIGlmIChtb2RlLnZhbHVlID09PSAnc2luZ2xlJykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgc2VsZWN0KGZvLnZhbHVlKTtcbiAgfTtcblxuICAvLyBubyBleHBvcnRcbiAgY29uc3QgYXJlQWxsRW5hYmxlZFNlbGVjdGVkID0gKG9wdGlvbnMpID0+IHtcbiAgICByZXR1cm4gb3B0aW9ucy5maW5kKG8gPT4gIWlzU2VsZWN0ZWQobykgJiYgIW9bZGlzYWJsZWRQcm9wLnZhbHVlXSkgPT09IHVuZGVmaW5lZFxuICB9O1xuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBhcmVBbGxTZWxlY3RlZCA9IChvcHRpb25zKSA9PiB7XG4gICAgcmV0dXJuIG9wdGlvbnMuZmluZChvID0+ICFpc1NlbGVjdGVkKG8pKSA9PT0gdW5kZWZpbmVkXG4gIH07XG5cbiAgY29uc3QgZ2V0T3B0aW9uID0gKHZhbCkgPT4ge1xuICAgIHJldHVybiBlby52YWx1ZVtlby52YWx1ZS5tYXAobyA9PiBTdHJpbmcob1t2YWx1ZVByb3AudmFsdWVdKSkuaW5kZXhPZihTdHJpbmcodmFsKSldXG4gIH07XG5cbiAgLy8gbm8gZXhwb3J0XG4gIGNvbnN0IGdldE9wdGlvbkJ5VHJhY2tCeSA9ICh2YWwsIG5vcm0gPSB0cnVlKSA9PiB7XG4gICAgcmV0dXJuIGVvLnZhbHVlLm1hcChvID0+IHBhcnNlSW50KG9bdHJhY2tCeS52YWx1ZV0pID09IG9bdHJhY2tCeS52YWx1ZV0gPyBwYXJzZUludChvW3RyYWNrQnkudmFsdWVdKSA6IG9bdHJhY2tCeS52YWx1ZV0pLmluZGV4T2YoXG4gICAgICBwYXJzZUludCh2YWwpID09IHZhbCA/IHBhcnNlSW50KHZhbCkgOiB2YWxcbiAgICApXG4gIH07XG5cbiAgLy8gbm8gZXhwb3J0XG4gIGNvbnN0IHNob3VsZEhpZGVPcHRpb24gPSAob3B0aW9uKSA9PiB7XG4gICAgcmV0dXJuIFsndGFncycsICdtdWx0aXBsZSddLmluZGV4T2YobW9kZS52YWx1ZSkgIT09IC0xICYmIGhpZGVTZWxlY3RlZC52YWx1ZSAmJiBpc1NlbGVjdGVkKG9wdGlvbilcbiAgfTtcblxuICAvLyBubyBleHBvcnRcbiAgY29uc3QgYXBwZW5kT3B0aW9uID0gKG9wdGlvbikgPT4ge1xuICAgIGFwLnZhbHVlLnB1c2gob3B0aW9uKTtcbiAgfTtcblxuICAvLyBubyBleHBvcnRcbiAgY29uc3QgZmlsdGVyR3JvdXBzID0gKGdyb3VwcykgPT4ge1xuICAgIC8vIElmIHRoZSBzZWFyY2ggaGFzIHZhbHVlIHdlIG5lZWQgdG8gZmlsdGVyIGFtb25nIFxuICAgIC8vIGhlIG9uZXMgdGhhdCBhcmUgdmlzaWJsZSB0byB0aGUgdXNlciB0byBhdm9pZFxuICAgIC8vIGRpc3BsYXlpbmcgZ3JvdXBzIHdoaWNoIHRlY2huaWNhbGx5IGhhdmUgb3B0aW9uc1xuICAgIC8vIGJhc2VkIG9uIHNlYXJjaCBidXQgdGhhdCBvcHRpb24gaXMgYWxyZWFkeSBzZWxlY3RlZC5cbiAgICByZXR1cm4gZ3JvdXBIaWRlRW1wdHkudmFsdWVcbiAgICAgID8gZ3JvdXBzLmZpbHRlcihnID0+IHNlYXJjaC52YWx1ZVxuICAgICAgICAgID8gZy5fX1ZJU0lCTEVfXy5sZW5ndGhcbiAgICAgICAgICA6IGdbZ3JvdXBPcHRpb25zLnZhbHVlXS5sZW5ndGhcbiAgICAgICAgKVxuICAgICAgOiBncm91cHMuZmlsdGVyKGcgPT4gc2VhcmNoLnZhbHVlID8gZy5fX1ZJU0lCTEVfXy5sZW5ndGggOiB0cnVlKVxuICB9O1xuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBmaWx0ZXJPcHRpb25zID0gKG9wdGlvbnMsIGV4Y2x1ZGVIaWRlU2VsZWN0ZWQgPSB0cnVlKSA9PiB7XG4gICAgbGV0IGZvID0gb3B0aW9ucztcbiAgICBcbiAgICBpZiAoc2VhcmNoLnZhbHVlICYmIGZpbHRlclJlc3VsdHMudmFsdWUpIHtcbiAgICAgIGZvID0gZm8uZmlsdGVyKChvcHRpb24pID0+IHtcbiAgICAgICAgcmV0dXJuIHNlYXJjaFN0YXJ0LnZhbHVlXG4gICAgICAgICAgPyBub3JtYWxpemUob3B0aW9uW3RyYWNrQnkudmFsdWVdLCBzdHJpY3QudmFsdWUpLnN0YXJ0c1dpdGgobm9ybWFsaXplKHNlYXJjaC52YWx1ZSwgc3RyaWN0LnZhbHVlKSlcbiAgICAgICAgICA6IG5vcm1hbGl6ZShvcHRpb25bdHJhY2tCeS52YWx1ZV0sIHN0cmljdC52YWx1ZSkuaW5kZXhPZihub3JtYWxpemUoc2VhcmNoLnZhbHVlLCBzdHJpY3QudmFsdWUpKSAhPT0gLTFcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChoaWRlU2VsZWN0ZWQudmFsdWUgJiYgZXhjbHVkZUhpZGVTZWxlY3RlZCkge1xuICAgICAgZm8gPSBmby5maWx0ZXIoKG9wdGlvbikgPT4gIXNob3VsZEhpZGVPcHRpb24ob3B0aW9uKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvXG4gIH07XG5cbiAgLy8gbm8gZXhwb3J0XG4gIGNvbnN0IG9wdGlvbnNUb0FycmF5ID0gKG9wdGlvbnMpID0+IHtcbiAgICBsZXQgdW8gPSBvcHRpb25zO1xuICAgIFxuICAgIC8vIFRyYW5zZm9ybWluZyBhbiBvYmplY3QgdG8gYW4gYXJyYXkgb2Ygb2JqZWN0c1xuICAgIGlmIChpc09iamVjdCh1bykpIHtcbiAgICAgIHVvID0gT2JqZWN0LmtleXModW8pLm1hcCgoa2V5KSA9PiB7XG4gICAgICAgIGxldCB2YWwgPSB1b1trZXldO1xuXG4gICAgICAgIHJldHVybiB7IFt2YWx1ZVByb3AudmFsdWVdOiBrZXksIFt0cmFja0J5LnZhbHVlXTogdmFsLCBbbGFiZWwudmFsdWVdOiB2YWx9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBUcmFuc2Zvcm1pbmcgYW4gcGxhaW4gYXJyYXlzIHRvIGFuIGFycmF5IG9mIG9iamVjdHNcbiAgICB1byA9IHVvLm1hcCgodmFsKSA9PiB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgPyB2YWwgOiB7IFt2YWx1ZVByb3AudmFsdWVdOiB2YWwsIFt0cmFja0J5LnZhbHVlXTogdmFsLCBbbGFiZWwudmFsdWVdOiB2YWx9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdW9cbiAgfTtcblxuICAvLyBubyBleHBvcnRcbiAgY29uc3QgaW5pdEludGVybmFsVmFsdWUgPSAoKSA9PiB7XG4gICAgaWYgKCFpc051bGxpc2goZXYudmFsdWUpKSB7XG4gICAgICBpdi52YWx1ZSA9IG1ha2VJbnRlcm5hbChldi52YWx1ZSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHJlc29sdmVPcHRpb25zID0gKGNhbGxiYWNrKSA9PiB7XG4gICAgcmVzb2x2aW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBvcHRpb25zLnZhbHVlKHNlYXJjaC52YWx1ZSwgJHRoaXMpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHJvLnZhbHVlID0gcmVzcG9uc2UgfHwgW107XG5cbiAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgY2FsbGJhY2socmVzcG9uc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzb2x2aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICB9KS5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuXG4gICAgICAgIHJvLnZhbHVlID0gW107XG5cbiAgICAgICAgcmVzb2x2aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICB9KS5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfSk7XG4gICAgfSlcbiAgfTtcblxuICAvLyBubyBleHBvcnRcbiAgY29uc3QgcmVmcmVzaExhYmVscyA9ICgpID0+IHtcbiAgICBpZiAoIWhhc1NlbGVjdGVkLnZhbHVlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAobW9kZS52YWx1ZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgIGxldCBvcHRpb24gPSBnZXRPcHRpb24oaXYudmFsdWVbdmFsdWVQcm9wLnZhbHVlXSk7XG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAob3B0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbGV0IG5ld0xhYmVsID0gb3B0aW9uW2xhYmVsLnZhbHVlXTtcblxuICAgICAgICBpdi52YWx1ZVtsYWJlbC52YWx1ZV0gPSBuZXdMYWJlbDtcblxuICAgICAgICBpZiAob2JqZWN0LnZhbHVlKSB7XG4gICAgICAgICAgZXYudmFsdWVbbGFiZWwudmFsdWVdID0gbmV3TGFiZWw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaXYudmFsdWUuZm9yRWFjaCgodmFsLCBpKSA9PiB7XG4gICAgICAgIGxldCBvcHRpb24gPSBnZXRPcHRpb24oaXYudmFsdWVbaV1bdmFsdWVQcm9wLnZhbHVlXSk7XG5cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKG9wdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgbGV0IG5ld0xhYmVsID0gb3B0aW9uW2xhYmVsLnZhbHVlXTtcblxuICAgICAgICAgIGl2LnZhbHVlW2ldW2xhYmVsLnZhbHVlXSA9IG5ld0xhYmVsO1xuXG4gICAgICAgICAgaWYgKG9iamVjdC52YWx1ZSkge1xuICAgICAgICAgICAgZXYudmFsdWVbaV1bbGFiZWwudmFsdWVdID0gbmV3TGFiZWw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgcmVmcmVzaE9wdGlvbnMgPSAoY2FsbGJhY2spID0+IHtcbiAgICByZXNvbHZlT3B0aW9ucyhjYWxsYmFjayk7XG4gIH07XG5cbiAgLy8gbm8gZXhwb3J0XG4gIGNvbnN0IG1ha2VJbnRlcm5hbCA9ICh2YWwpID0+IHtcbiAgICBpZiAoaXNOdWxsaXNoKHZhbCkpIHtcbiAgICAgIHJldHVybiBtb2RlLnZhbHVlID09PSAnc2luZ2xlJyA/IHt9IDogW11cbiAgICB9XG5cbiAgICBpZiAob2JqZWN0LnZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsXG4gICAgfVxuXG4gICAgLy8gSWYgZXh0ZXJuYWwgc2hvdWxkIGJlIHBsYWluIHRyYW5zZm9ybVxuICAgIC8vIHZhbHVlIG9iamVjdCB0byBwbGFpbiB2YWx1ZXNcbiAgICByZXR1cm4gbW9kZS52YWx1ZSA9PT0gJ3NpbmdsZScgPyBnZXRPcHRpb24odmFsKSB8fCB7fSA6IHZhbC5maWx0ZXIodiA9PiAhISBnZXRPcHRpb24odikpLm1hcCh2ID0+IGdldE9wdGlvbih2KSlcbiAgfTtcblxuICAvLyBubyBleHBvcnRcbiAgY29uc3QgaW5pdFNlYXJjaFdhdGNoZXIgPSAoKSA9PiB7XG4gICAgc2VhcmNoV2F0Y2hlci52YWx1ZSA9IHdhdGNoKHNlYXJjaCwgKHF1ZXJ5KSA9PiB7XG4gICAgICBpZiAocXVlcnkubGVuZ3RoIDwgbWluQ2hhcnMudmFsdWUgfHwgKCFxdWVyeSAmJiBtaW5DaGFycy52YWx1ZSAhPT0gMCkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHJlc29sdmluZy52YWx1ZSA9IHRydWU7XG5cbiAgICAgIGlmIChjbGVhck9uU2VhcmNoLnZhbHVlKSB7XG4gICAgICAgIHJvLnZhbHVlID0gW107XG4gICAgICB9XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHF1ZXJ5ICE9IHNlYXJjaC52YWx1ZSkge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgb3B0aW9ucy52YWx1ZShzZWFyY2gudmFsdWUsICR0aGlzKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgIGlmIChxdWVyeSA9PSBzZWFyY2gudmFsdWUgfHwgIXNlYXJjaC52YWx1ZSkge1xuICAgICAgICAgICAgcm8udmFsdWUgPSByZXNwb25zZTtcbiAgICAgICAgICAgIHBvaW50ZXIudmFsdWUgPSBmby52YWx1ZS5maWx0ZXIobyA9PiBvW2Rpc2FibGVkUHJvcC52YWx1ZV0gIT09IHRydWUpWzBdIHx8IG51bGw7XG4gICAgICAgICAgICByZXNvbHZpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLmNhdGNoKCAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyAoZSkgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSwgZGVsYXkudmFsdWUpO1xuXG4gICAgfSwgeyBmbHVzaDogJ3N5bmMnIH0pO1xuICB9O1xuXG4gIC8vID09PT09PT09PT09PT09PT0gSE9PS1MgPT09PT09PT09PT09PT09XG5cbiAgaWYgKG1vZGUudmFsdWUgIT09ICdzaW5nbGUnICYmICFpc051bGxpc2goZXYudmFsdWUpICYmICFBcnJheS5pc0FycmF5KGV2LnZhbHVlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgdi1tb2RlbCBtdXN0IGJlIGFuIGFycmF5IHdoZW4gdXNpbmcgXCIke21vZGUudmFsdWV9XCIgbW9kZWApXG4gIH1cblxuICBpZiAob3B0aW9ucyAmJiB0eXBlb2Ygb3B0aW9ucy52YWx1ZSA9PSAnZnVuY3Rpb24nKSB7XG4gICAgaWYgKHJlc29sdmVPbkxvYWQudmFsdWUpIHtcbiAgICAgIHJlc29sdmVPcHRpb25zKGluaXRJbnRlcm5hbFZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKG9iamVjdC52YWx1ZSA9PSB0cnVlKSB7XG4gICAgICBpbml0SW50ZXJuYWxWYWx1ZSgpO1xuICAgIH1cbiAgfVxuICBlbHNlIHtcbiAgICByby52YWx1ZSA9IG9wdGlvbnMudmFsdWU7XG5cbiAgICBpbml0SW50ZXJuYWxWYWx1ZSgpO1xuICB9XG4gIFxuICAvLyA9PT09PT09PT09PT09PSBXQVRDSEVSUyA9PT09PT09PT09PT09PVxuXG4gIGlmIChkZWxheS52YWx1ZSA+IC0xKSB7XG4gICAgaW5pdFNlYXJjaFdhdGNoZXIoKTtcbiAgfVxuXG4gIHdhdGNoKGRlbGF5LCAodmFsdWUsIG9sZCkgPT4ge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHNlYXJjaFdhdGNoZXIudmFsdWUpIHtcbiAgICAgIHNlYXJjaFdhdGNoZXIudmFsdWUoKTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPj0gMCkge1xuICAgICAgaW5pdFNlYXJjaFdhdGNoZXIoKTtcbiAgICB9XG4gIH0pO1xuXG4gIHdhdGNoKGV2LCAobmV3VmFsdWUpID0+IHtcbiAgICBpZiAoaXNOdWxsaXNoKG5ld1ZhbHVlKSkge1xuICAgICAgaXYudmFsdWUgPSBtYWtlSW50ZXJuYWwobmV3VmFsdWUpO1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgc3dpdGNoIChtb2RlLnZhbHVlKSB7XG4gICAgICBjYXNlICdzaW5nbGUnOlxuICAgICAgICBpZiAob2JqZWN0LnZhbHVlID8gbmV3VmFsdWVbdmFsdWVQcm9wLnZhbHVlXSAhPSBpdi52YWx1ZVt2YWx1ZVByb3AudmFsdWVdIDogbmV3VmFsdWUgIT0gaXYudmFsdWVbdmFsdWVQcm9wLnZhbHVlXSkge1xuICAgICAgICAgIGl2LnZhbHVlID0gbWFrZUludGVybmFsKG5ld1ZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlICdtdWx0aXBsZSc6XG4gICAgICBjYXNlICd0YWdzJzpcbiAgICAgICAgaWYgKCFhcnJheXNFcXVhbChvYmplY3QudmFsdWUgPyBuZXdWYWx1ZS5tYXAobyA9PiBvW3ZhbHVlUHJvcC52YWx1ZV0pIDogbmV3VmFsdWUsIGl2LnZhbHVlLm1hcChvID0+IG9bdmFsdWVQcm9wLnZhbHVlXSkpKSB7XG4gICAgICAgICAgaXYudmFsdWUgPSBtYWtlSW50ZXJuYWwobmV3VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgfVxuICB9LCB7IGRlZXA6IHRydWUgfSk7XG5cbiAgd2F0Y2gob3B0aW9ucywgKG4sIG8pID0+IHtcbiAgICBpZiAodHlwZW9mIHByb3BzLm9wdGlvbnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGlmIChyZXNvbHZlT25Mb2FkLnZhbHVlKSB7XG4gICAgICAgIHJlc29sdmVPcHRpb25zKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvLnZhbHVlID0gcHJvcHMub3B0aW9ucztcblxuICAgICAgaWYgKCFPYmplY3Qua2V5cyhpdi52YWx1ZSkubGVuZ3RoKSB7XG4gICAgICAgIGluaXRJbnRlcm5hbFZhbHVlKCk7XG4gICAgICB9XG5cbiAgICAgIHJlZnJlc2hMYWJlbHMoKTtcbiAgICB9XG4gIH0pO1xuXG4gIHdhdGNoKGxhYmVsLCByZWZyZXNoTGFiZWxzKTtcblxuICByZXR1cm4ge1xuICAgIHBmbyxcbiAgICBmbyxcbiAgICBmaWx0ZXJlZE9wdGlvbnM6IGZvLFxuICAgIGhhc1NlbGVjdGVkLFxuICAgIG11bHRpcGxlTGFiZWxUZXh0LFxuICAgIGVvLFxuICAgIGV4dGVuZGVkT3B0aW9uczogZW8sXG4gICAgZmcsXG4gICAgZmlsdGVyZWRHcm91cHM6IGZnLFxuICAgIG5vT3B0aW9ucyxcbiAgICBub1Jlc3VsdHMsXG4gICAgcmVzb2x2aW5nLFxuICAgIGJ1c3ksXG4gICAgb2Zmc2V0LFxuICAgIHNlbGVjdCxcbiAgICBkZXNlbGVjdCxcbiAgICByZW1vdmUsXG4gICAgc2VsZWN0QWxsLFxuICAgIGNsZWFyLFxuICAgIGlzU2VsZWN0ZWQsXG4gICAgaXNEaXNhYmxlZCxcbiAgICBpc01heCxcbiAgICBnZXRPcHRpb24sXG4gICAgaGFuZGxlT3B0aW9uQ2xpY2ssXG4gICAgaGFuZGxlR3JvdXBDbGljayxcbiAgICBoYW5kbGVUYWdSZW1vdmUsXG4gICAgcmVmcmVzaE9wdGlvbnMsXG4gICAgcmVzb2x2ZU9wdGlvbnMsXG4gICAgcmVmcmVzaExhYmVscyxcbiAgfVxufVxuXG5mdW5jdGlvbiB1c2VQb2ludGVyIChwcm9wcywgY29udGV4dCwgZGVwKVxue1xuICBjb25zdCB7XG4gICAgdmFsdWVQcm9wLCBzaG93T3B0aW9ucywgc2VhcmNoYWJsZSwgZ3JvdXBMYWJlbCxcbiAgICBncm91cHM6IGdyb3VwcGVkLCBtb2RlLCBncm91cFNlbGVjdCwgZGlzYWJsZWRQcm9wLFxuICB9ID0gdG9SZWZzKHByb3BzKTtcblxuICAvLyA9PT09PT09PT09PT0gREVQRU5ERU5DSUVTID09PT09PT09PT09PVxuXG4gIGNvbnN0IGZvID0gZGVwLmZvO1xuICBjb25zdCBmZyA9IGRlcC5mZztcbiAgY29uc3QgaGFuZGxlT3B0aW9uQ2xpY2sgPSBkZXAuaGFuZGxlT3B0aW9uQ2xpY2s7XG4gIGNvbnN0IGhhbmRsZUdyb3VwQ2xpY2sgPSBkZXAuaGFuZGxlR3JvdXBDbGljaztcbiAgY29uc3Qgc2VhcmNoID0gZGVwLnNlYXJjaDtcbiAgY29uc3QgcG9pbnRlciA9IGRlcC5wb2ludGVyO1xuICBjb25zdCBzZXRQb2ludGVyID0gZGVwLnNldFBvaW50ZXI7XG4gIGNvbnN0IGNsZWFyUG9pbnRlciA9IGRlcC5jbGVhclBvaW50ZXI7XG4gIGNvbnN0IG11bHRpc2VsZWN0ID0gZGVwLm11bHRpc2VsZWN0O1xuICBjb25zdCBpc09wZW4gPSBkZXAuaXNPcGVuO1xuXG4gIC8vID09PT09PT09PT09PT09IENPTVBVVEVEID09PT09PT09PT09PT09XG5cbiAgLy8gbm8gZXhwb3J0XG4gIGNvbnN0IG9wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIGZvLnZhbHVlLmZpbHRlcihvID0+ICFvW2Rpc2FibGVkUHJvcC52YWx1ZV0pXG4gIH0pO1xuXG4gIGNvbnN0IGdyb3VwcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gZmcudmFsdWUuZmlsdGVyKG8gPT4gIW9bZGlzYWJsZWRQcm9wLnZhbHVlXSlcbiAgfSk7XG5cbiAgY29uc3QgY2FuUG9pbnRHcm91cHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIG1vZGUudmFsdWUgIT09ICdzaW5nbGUnICYmIGdyb3VwU2VsZWN0LnZhbHVlXG4gIH0pO1xuXG4gIGNvbnN0IGlzUG9pbnRlckdyb3VwID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiBwb2ludGVyLnZhbHVlICYmIHBvaW50ZXIudmFsdWUuZ3JvdXBcbiAgfSk7XG5cbiAgY29uc3QgY3VycmVudEdyb3VwID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiBnZXRQYXJlbnRHcm91cChwb2ludGVyLnZhbHVlKVxuICB9KTtcblxuICBjb25zdCBwcmV2R3JvdXAgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZ3JvdXAgPSBpc1BvaW50ZXJHcm91cC52YWx1ZSA/IHBvaW50ZXIudmFsdWUgOiAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyBnZXRQYXJlbnRHcm91cChwb2ludGVyLnZhbHVlKTtcbiAgICBjb25zdCBncm91cEluZGV4ID0gZ3JvdXBzLnZhbHVlLm1hcChnID0+IGdbZ3JvdXBMYWJlbC52YWx1ZV0pLmluZGV4T2YoZ3JvdXBbZ3JvdXBMYWJlbC52YWx1ZV0pO1xuICAgIGxldCBwcmV2R3JvdXAgPSBncm91cHMudmFsdWVbZ3JvdXBJbmRleCAtIDFdO1xuXG4gICAgaWYgKHByZXZHcm91cCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBwcmV2R3JvdXAgPSBsYXN0R3JvdXAudmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZXZHcm91cFxuICB9KTtcbiAgXG4gIGNvbnN0IG5leHRHcm91cCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBsZXQgbmV4dEluZGV4ID0gZ3JvdXBzLnZhbHVlLm1hcChnID0+IGcubGFiZWwpLmluZGV4T2YoaXNQb2ludGVyR3JvdXAudmFsdWVcbiAgICAgID8gcG9pbnRlci52YWx1ZVtncm91cExhYmVsLnZhbHVlXVxuICAgICAgOiBnZXRQYXJlbnRHcm91cChwb2ludGVyLnZhbHVlKVtncm91cExhYmVsLnZhbHVlXSkgKyAxO1xuXG4gICAgaWYgKGdyb3Vwcy52YWx1ZS5sZW5ndGggPD0gbmV4dEluZGV4KSB7XG4gICAgICBuZXh0SW5kZXggPSAwO1xuICAgIH1cblxuICAgIHJldHVybiBncm91cHMudmFsdWVbbmV4dEluZGV4XVxuICB9KTtcblxuICBjb25zdCBsYXN0R3JvdXAgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIFsuLi5ncm91cHMudmFsdWVdLnNsaWNlKC0xKVswXVxuICB9KTtcbiAgXG4gIGNvbnN0IGN1cnJlbnRHcm91cEZpcnN0RW5hYmxlZE9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gcG9pbnRlci52YWx1ZS5fX1ZJU0lCTEVfXy5maWx0ZXIobyA9PiAhb1tkaXNhYmxlZFByb3AudmFsdWVdKVswXVxuICB9KTtcblxuICBjb25zdCBjdXJyZW50R3JvdXBQcmV2RW5hYmxlZE9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0gY3VycmVudEdyb3VwLnZhbHVlLl9fVklTSUJMRV9fLmZpbHRlcihvID0+ICFvW2Rpc2FibGVkUHJvcC52YWx1ZV0pO1xuICAgIHJldHVybiBvcHRpb25zW29wdGlvbnMubWFwKG8gPT4gb1t2YWx1ZVByb3AudmFsdWVdKS5pbmRleE9mKHBvaW50ZXIudmFsdWVbdmFsdWVQcm9wLnZhbHVlXSkgLSAxXVxuICB9KTtcbiAgXG4gIGNvbnN0IGN1cnJlbnRHcm91cE5leHRFbmFibGVkT3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBnZXRQYXJlbnRHcm91cChwb2ludGVyLnZhbHVlKS5fX1ZJU0lCTEVfXy5maWx0ZXIobyA9PiAhb1tkaXNhYmxlZFByb3AudmFsdWVdKTtcbiAgICByZXR1cm4gb3B0aW9uc1tvcHRpb25zLm1hcChvID0+IG9bdmFsdWVQcm9wLnZhbHVlXSkuaW5kZXhPZihwb2ludGVyLnZhbHVlW3ZhbHVlUHJvcC52YWx1ZV0pICsgMV1cbiAgfSk7XG5cbiAgY29uc3QgcHJldkdyb3VwTGFzdEVuYWJsZWRPcHRpb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIFsuLi5wcmV2R3JvdXAudmFsdWUuX19WSVNJQkxFX18uZmlsdGVyKG8gPT4gIW9bZGlzYWJsZWRQcm9wLnZhbHVlXSldLnNsaWNlKC0xKVswXVxuICB9KTtcblxuICBjb25zdCBsYXN0R3JvdXBMYXN0RW5hYmxlZE9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gWy4uLmxhc3RHcm91cC52YWx1ZS5fX1ZJU0lCTEVfXy5maWx0ZXIobyA9PiAhb1tkaXNhYmxlZFByb3AudmFsdWVdKV0uc2xpY2UoLTEpWzBdXG4gIH0pO1xuXG4gIC8vID09PT09PT09PT09PT09PSBNRVRIT0RTID09PT09PT09PT09PT09XG5cbiAgY29uc3QgaXNQb2ludGVkID0gKG9wdGlvbikgPT4ge1xuICAgIHJldHVybiAoISFwb2ludGVyLnZhbHVlICYmIChcbiAgICAgICghb3B0aW9uLmdyb3VwICYmwqBwb2ludGVyLnZhbHVlW3ZhbHVlUHJvcC52YWx1ZV0gPT0gb3B0aW9uW3ZhbHVlUHJvcC52YWx1ZV0pIHx8XG4gICAgICAob3B0aW9uLmdyb3VwICE9PSB1bmRlZmluZWQgJibCoHBvaW50ZXIudmFsdWVbZ3JvdXBMYWJlbC52YWx1ZV0gPT0gb3B0aW9uW2dyb3VwTGFiZWwudmFsdWVdKVxuICAgICkpID8gdHJ1ZSA6IHVuZGVmaW5lZFxuICB9O1xuXG4gIGNvbnN0IHNldFBvaW50ZXJGaXJzdCA9ICgpID0+IHtcbiAgICBzZXRQb2ludGVyKG9wdGlvbnMudmFsdWVbMF0gfHwgbnVsbCk7XG4gIH07XG5cbiAgY29uc3Qgc2VsZWN0UG9pbnRlciA9ICgpID0+IHtcbiAgICBpZiAoIXBvaW50ZXIudmFsdWUgfHwgcG9pbnRlci52YWx1ZVtkaXNhYmxlZFByb3AudmFsdWVdID09PSB0cnVlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoaXNQb2ludGVyR3JvdXAudmFsdWUpIHtcbiAgICAgIGhhbmRsZUdyb3VwQ2xpY2socG9pbnRlci52YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGhhbmRsZU9wdGlvbkNsaWNrKHBvaW50ZXIudmFsdWUpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBmb3J3YXJkUG9pbnRlciA9ICgpID0+IHtcbiAgICBpZiAocG9pbnRlci52YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgc2V0UG9pbnRlcigoZ3JvdXBwZWQudmFsdWUgJiYgY2FuUG9pbnRHcm91cHMudmFsdWUgPyBncm91cHMudmFsdWVbMF0gOiBvcHRpb25zLnZhbHVlWzBdKSB8fCBudWxsKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoZ3JvdXBwZWQudmFsdWUgJiYgY2FuUG9pbnRHcm91cHMudmFsdWUpIHtcbiAgICAgIGxldCBuZXh0UG9pbnRlciA9IGlzUG9pbnRlckdyb3VwLnZhbHVlID8gY3VycmVudEdyb3VwRmlyc3RFbmFibGVkT3B0aW9uLnZhbHVlIDogY3VycmVudEdyb3VwTmV4dEVuYWJsZWRPcHRpb24udmFsdWU7XG5cbiAgICAgIGlmIChuZXh0UG9pbnRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG5leHRQb2ludGVyID0gbmV4dEdyb3VwLnZhbHVlO1xuICAgICAgfVxuXG4gICAgICBzZXRQb2ludGVyKG5leHRQb2ludGVyIHx8IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIG51bGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgbmV4dCA9IG9wdGlvbnMudmFsdWUubWFwKG8gPT4gb1t2YWx1ZVByb3AudmFsdWVdKS5pbmRleE9mKHBvaW50ZXIudmFsdWVbdmFsdWVQcm9wLnZhbHVlXSkgKyAxO1xuXG4gICAgICBpZiAob3B0aW9ucy52YWx1ZS5sZW5ndGggPD0gbmV4dCkge1xuICAgICAgICBuZXh0ID0gMDtcbiAgICAgIH1cblxuICAgICAgc2V0UG9pbnRlcihvcHRpb25zLnZhbHVlW25leHRdIHx8IG51bGwpO1xuICAgIH1cblxuICAgIG5leHRUaWNrKCgpID0+IHtcbiAgICAgIGFkanVzdFdyYXBwZXJTY3JvbGxUb1BvaW50ZXIoKTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBiYWNrd2FyZFBvaW50ZXIgPSAoKSA9PiB7XG4gICAgaWYgKHBvaW50ZXIudmFsdWUgPT09IG51bGwpIHtcbiAgICAgIGxldCBwcmV2UG9pbnRlciA9IG9wdGlvbnMudmFsdWVbb3B0aW9ucy52YWx1ZS5sZW5ndGggLSAxXTtcblxuICAgICAgaWYgKGdyb3VwcGVkLnZhbHVlICYmIGNhblBvaW50R3JvdXBzLnZhbHVlKSB7XG4gICAgICAgIHByZXZQb2ludGVyID0gbGFzdEdyb3VwTGFzdEVuYWJsZWRPcHRpb24udmFsdWU7XG5cbiAgICAgICAgaWYgKHByZXZQb2ludGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBwcmV2UG9pbnRlciA9IGxhc3RHcm91cC52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBzZXRQb2ludGVyKHByZXZQb2ludGVyICB8fCBudWxsKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoZ3JvdXBwZWQudmFsdWUgJiYgY2FuUG9pbnRHcm91cHMudmFsdWUpIHtcbiAgICAgIGxldCBwcmV2UG9pbnRlciA9IGlzUG9pbnRlckdyb3VwLnZhbHVlID8gcHJldkdyb3VwTGFzdEVuYWJsZWRPcHRpb24udmFsdWUgOiBjdXJyZW50R3JvdXBQcmV2RW5hYmxlZE9wdGlvbi52YWx1ZTtcblxuICAgICAgaWYgKHByZXZQb2ludGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcHJldlBvaW50ZXIgPSBpc1BvaW50ZXJHcm91cC52YWx1ZSA/IHByZXZHcm91cC52YWx1ZSA6IGN1cnJlbnRHcm91cC52YWx1ZTtcbiAgICAgIH1cblxuICAgICAgc2V0UG9pbnRlcihwcmV2UG9pbnRlciB8fCAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyBudWxsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHByZXZJbmRleCA9IG9wdGlvbnMudmFsdWUubWFwKG8gPT4gb1t2YWx1ZVByb3AudmFsdWVdKS5pbmRleE9mKHBvaW50ZXIudmFsdWVbdmFsdWVQcm9wLnZhbHVlXSkgLSAxO1xuXG4gICAgICBpZiAocHJldkluZGV4IDwgMCkge1xuICAgICAgICBwcmV2SW5kZXggPSBvcHRpb25zLnZhbHVlLmxlbmd0aCAtIDE7XG4gICAgICB9XG5cbiAgICAgIHNldFBvaW50ZXIob3B0aW9ucy52YWx1ZVtwcmV2SW5kZXhdIHx8IG51bGwpO1xuICAgIH1cblxuICAgIG5leHRUaWNrKCgpID0+IHtcbiAgICAgIGFkanVzdFdyYXBwZXJTY3JvbGxUb1BvaW50ZXIoKTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBnZXRQYXJlbnRHcm91cCA9IChvcHRpb24pID0+IHtcbiAgICByZXR1cm4gZ3JvdXBzLnZhbHVlLmZpbmQoKGdyb3VwKSA9PiB7XG4gICAgICByZXR1cm4gZ3JvdXAuX19WSVNJQkxFX18ubWFwKG8gPT4gb1t2YWx1ZVByb3AudmFsdWVdKS5pbmRleE9mKG9wdGlvblt2YWx1ZVByb3AudmFsdWVdKSAhPT0gLTFcbiAgICB9KVxuICB9O1xuXG4gIC8vIG5vIGV4cG9ydFxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBjb25zdCBhZGp1c3RXcmFwcGVyU2Nyb2xsVG9Qb2ludGVyID0gKCkgPT4ge1xuICAgIGxldCBwb2ludGVkT3B0aW9uID0gbXVsdGlzZWxlY3QudmFsdWUucXVlcnlTZWxlY3RvcihgW2RhdGEtcG9pbnRlZF1gKTtcblxuICAgIGlmICghcG9pbnRlZE9wdGlvbikge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgbGV0IHdyYXBwZXIgPSBwb2ludGVkT3B0aW9uLnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudDtcblxuICAgIGlmIChncm91cHBlZC52YWx1ZSkge1xuICAgICAgd3JhcHBlciA9IGlzUG9pbnRlckdyb3VwLnZhbHVlXG4gICAgICAgID8gcG9pbnRlZE9wdGlvbi5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudFxuICAgICAgICA6IHBvaW50ZWRPcHRpb24ucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICB9XG5cbiAgICBpZiAocG9pbnRlZE9wdGlvbi5vZmZzZXRUb3AgKyBwb2ludGVkT3B0aW9uLm9mZnNldEhlaWdodCA+IHdyYXBwZXIuY2xpZW50SGVpZ2h0ICsgd3JhcHBlci5zY3JvbGxUb3ApIHtcbiAgICAgIHdyYXBwZXIuc2Nyb2xsVG9wID0gcG9pbnRlZE9wdGlvbi5vZmZzZXRUb3AgKyBwb2ludGVkT3B0aW9uLm9mZnNldEhlaWdodCAtIHdyYXBwZXIuY2xpZW50SGVpZ2h0O1xuICAgIH1cbiAgICBcbiAgICBpZiAocG9pbnRlZE9wdGlvbi5vZmZzZXRUb3AgPCB3cmFwcGVyLnNjcm9sbFRvcCkge1xuICAgICAgd3JhcHBlci5zY3JvbGxUb3AgPSBwb2ludGVkT3B0aW9uLm9mZnNldFRvcDtcbiAgICB9XG4gIH07XG5cbiAgLy8gPT09PT09PT09PT09PT0gV0FUQ0hFUlMgPT09PT09PT09PT09PT1cblxuICB3YXRjaChzZWFyY2gsICh2YWwpID0+IHtcbiAgICBpZiAoc2VhcmNoYWJsZS52YWx1ZSkge1xuICAgICAgaWYgKHZhbC5sZW5ndGggJiYgc2hvd09wdGlvbnMudmFsdWUpIHtcbiAgICAgICAgc2V0UG9pbnRlckZpcnN0KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjbGVhclBvaW50ZXIoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIHdhdGNoKGlzT3BlbiwgKHZhbCkgPT4ge1xuICAgIGlmICh2YWwpIHtcbiAgICAgIGxldCBmaXJzdFNlbGVjdGVkID0gbXVsdGlzZWxlY3QudmFsdWUucXVlcnlTZWxlY3RvckFsbChgW2RhdGEtc2VsZWN0ZWRdYClbMF07XG5cbiAgICAgIGlmICghZmlyc3RTZWxlY3RlZCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgbGV0IHdyYXBwZXIgPSBmaXJzdFNlbGVjdGVkLnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICAgIFxuICAgICAgbmV4dFRpY2soKCkgPT4ge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBpZiAod3JhcHBlci5zY3JvbGxUb3AgPiAwKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICB3cmFwcGVyLnNjcm9sbFRvcCA9IGZpcnN0U2VsZWN0ZWQub2Zmc2V0VG9wO1xuICAgICAgfSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4ge1xuICAgIHBvaW50ZXIsXG4gICAgY2FuUG9pbnRHcm91cHMsXG4gICAgaXNQb2ludGVkLFxuICAgIHNldFBvaW50ZXJGaXJzdCxcbiAgICBzZWxlY3RQb2ludGVyLFxuICAgIGZvcndhcmRQb2ludGVyLFxuICAgIGJhY2t3YXJkUG9pbnRlcixcbiAgfVxufVxuXG5mdW5jdGlvbiB1c2VEcm9wZG93biAocHJvcHMsIGNvbnRleHQsIGRlcClcbntcbiAgY29uc3QgeyBkaXNhYmxlZCB9ID0gdG9SZWZzKHByb3BzKTtcblxuICBjb25zdCAkdGhpcyA9IGdldEN1cnJlbnRJbnN0YW5jZSgpLnByb3h5O1xuXG4gIC8vID09PT09PT09PT09PT09PT0gREFUQSA9PT09PT09PT09PT09PT09XG5cbiAgY29uc3QgaXNPcGVuID0gcmVmKGZhbHNlKTtcblxuICAvLyA9PT09PT09PT09PT09PT0gTUVUSE9EUyA9PT09PT09PT09PT09PVxuXG4gIGNvbnN0IG9wZW4gPSAoKSA9PiB7XG4gICAgaWYgKGlzT3Blbi52YWx1ZSB8fCBkaXNhYmxlZC52YWx1ZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaXNPcGVuLnZhbHVlID0gdHJ1ZTtcbiAgICBjb250ZXh0LmVtaXQoJ29wZW4nLCAkdGhpcyk7XG4gIH07XG5cbiAgY29uc3QgY2xvc2UgPSAoKSA9PiB7XG4gICAgaWYgKCFpc09wZW4udmFsdWUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlzT3Blbi52YWx1ZSA9IGZhbHNlO1xuICAgIGNvbnRleHQuZW1pdCgnY2xvc2UnLCAkdGhpcyk7XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBpc09wZW4sXG4gICAgb3BlbixcbiAgICBjbG9zZSxcbiAgfVxufVxuXG5mdW5jdGlvbiB1c2VNdWx0aXNlbGVjdCAocHJvcHMsIGNvbnRleHQsIGRlcClcbntcbiAgY29uc3QgeyBzZWFyY2hhYmxlLCBkaXNhYmxlZCB9ID0gdG9SZWZzKHByb3BzKTtcblxuICAvLyA9PT09PT09PT09PT0gREVQRU5ERU5DSUVTID09PT09PT09PT09PVxuXG4gIGNvbnN0IGlucHV0ID0gZGVwLmlucHV0O1xuICBjb25zdCBvcGVuID0gZGVwLm9wZW47XG4gIGNvbnN0IGNsb3NlID0gZGVwLmNsb3NlO1xuICBjb25zdCBjbGVhclNlYXJjaCA9IGRlcC5jbGVhclNlYXJjaDtcbiAgY29uc3QgaXNPcGVuID0gZGVwLmlzT3BlbjtcblxuICAvLyA9PT09PT09PT09PT09PT09IERBVEEgPT09PT09PT09PT09PT09PVxuXG4gIGNvbnN0IG11bHRpc2VsZWN0ID0gcmVmKG51bGwpO1xuICBjb25zdCB0YWdzID0gcmVmKG51bGwpO1xuXG4gIGNvbnN0IGlzQWN0aXZlID0gcmVmKGZhbHNlKTtcblxuICAvLyA9PT09PT09PT09PT09PSBDT01QVVRFRCA9PT09PT09PT09PT09PVxuXG4gIGNvbnN0IHRhYmluZGV4ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiBzZWFyY2hhYmxlLnZhbHVlIHx8IGRpc2FibGVkLnZhbHVlID8gLTEgOiAwXG4gIH0pO1xuXG4gIC8vID09PT09PT09PT09PT09PSBNRVRIT0RTID09PT09PT09PT09PT09XG5cbiAgY29uc3QgYmx1ciA9ICgpID0+IHtcbiAgICBpZiAoc2VhcmNoYWJsZS52YWx1ZSkge1xuICAgICAgaW5wdXQudmFsdWUuYmx1cigpO1xuICAgIH1cblxuICAgIG11bHRpc2VsZWN0LnZhbHVlLmJsdXIoKTtcbiAgfTtcblxuICBjb25zdCBmb2N1cyA9ICgpID0+IHtcbiAgICBpZiAoc2VhcmNoYWJsZS52YWx1ZSAmJiAhZGlzYWJsZWQudmFsdWUpIHtcbiAgICAgIGlucHV0LnZhbHVlLmZvY3VzKCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGZvY3VzKCk7XG4gIH07XG5cbiAgY29uc3QgYWN0aXZhdGUgPSAoKSA9PiB7XG4gICAgaWYgKGRpc2FibGVkLnZhbHVlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpc0FjdGl2ZS52YWx1ZSA9IHRydWU7XG5cbiAgICBvcGVuKCk7XG4gIH07XG5cbiAgY29uc3QgZGVhY3RpdmF0ZSA9ICgpID0+IHtcbiAgICBpc0FjdGl2ZS52YWx1ZSA9IGZhbHNlO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoIWlzQWN0aXZlLnZhbHVlKSB7XG4gICAgICAgIGNsb3NlKCk7XG4gICAgICAgIGNsZWFyU2VhcmNoKCk7XG4gICAgICB9XG4gICAgfSwgMSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQ2FyZXRDbGljayA9ICgpID0+IHtcbiAgICBkZWFjdGl2YXRlKCk7XG4gICAgYmx1cigpO1xuICB9O1xuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGNvbnN0IGhhbmRsZU1vdXNlZG93biA9IChlKSA9PiB7XG4gICAgaWYgKGlzT3Blbi52YWx1ZSAmJiAoZS50YXJnZXQuaXNFcXVhbE5vZGUobXVsdGlzZWxlY3QudmFsdWUpIHx8IGUudGFyZ2V0LmlzRXF1YWxOb2RlKHRhZ3MudmFsdWUpKSkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGRlYWN0aXZhdGUoKTtcbiAgICAgIH0sIDApO1xuICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5pc0VxdWFsTm9kZShtdWx0aXNlbGVjdC52YWx1ZSkgJiYgIWlzT3Blbi52YWx1ZSkge1xuICAgICAgYWN0aXZhdGUoKTsgICAgXG4gICAgfVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgbXVsdGlzZWxlY3QsXG4gICAgdGFncyxcbiAgICB0YWJpbmRleCxcbiAgICBpc0FjdGl2ZSxcbiAgICBibHVyLFxuICAgIGZvY3VzLFxuICAgIGhhbmRsZUZvY3VzLFxuICAgIGFjdGl2YXRlLFxuICAgIGRlYWN0aXZhdGUsXG4gICAgaGFuZGxlQ2FyZXRDbGljayxcbiAgICBoYW5kbGVNb3VzZWRvd24sXG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlS2V5Ym9hcmQgKHByb3BzLCBjb250ZXh0LCBkZXApXG57XG4gIGNvbnN0IHtcbiAgICBtb2RlLCBhZGRUYWdPbiwgb3BlbkRpcmVjdGlvbiwgc2VhcmNoYWJsZSxcbiAgICBzaG93T3B0aW9ucywgdmFsdWVQcm9wLCBncm91cHM6IGdyb3VwcGVkLFxuICAgIGFkZE9wdGlvbk9uOiBhZGRPcHRpb25Pbl8sIGNyZWF0ZVRhZywgY3JlYXRlT3B0aW9uOiBjcmVhdGVPcHRpb25fLFxuICAgIHJldmVyc2UsXG4gIH0gPSB0b1JlZnMocHJvcHMpO1xuXG4gIGNvbnN0ICR0aGlzID0gZ2V0Q3VycmVudEluc3RhbmNlKCkucHJveHk7XG5cbiAgLy8gPT09PT09PT09PT09IERFUEVOREVOQ0lFUyA9PT09PT09PT09PT1cblxuICBjb25zdCBpdiA9IGRlcC5pdjtcbiAgY29uc3QgdXBkYXRlID0gZGVwLnVwZGF0ZTtcbiAgY29uc3Qgc2VhcmNoID0gZGVwLnNlYXJjaDtcbiAgY29uc3Qgc2V0UG9pbnRlciA9IGRlcC5zZXRQb2ludGVyO1xuICBjb25zdCBzZWxlY3RQb2ludGVyID0gZGVwLnNlbGVjdFBvaW50ZXI7XG4gIGNvbnN0IGJhY2t3YXJkUG9pbnRlciA9IGRlcC5iYWNrd2FyZFBvaW50ZXI7XG4gIGNvbnN0IGZvcndhcmRQb2ludGVyID0gZGVwLmZvcndhcmRQb2ludGVyO1xuICBjb25zdCBpc09wZW4gPSBkZXAuaXNPcGVuO1xuICBjb25zdCBvcGVuID0gZGVwLm9wZW47XG4gIGNvbnN0IGJsdXIgPSBkZXAuYmx1cjtcbiAgY29uc3QgZm8gPSBkZXAuZm87XG5cbiAgLy8gPT09PT09PT09PT09PT0gQ09NUFVURUQgPT09PT09PT09PT09PT1cblxuICAvLyBubyBleHBvcnRcbiAgY29uc3QgY3JlYXRlT3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiBjcmVhdGVUYWcudmFsdWUgfHwgY3JlYXRlT3B0aW9uXy52YWx1ZSB8fCBmYWxzZVxuICB9KTtcblxuICAvLyBubyBleHBvcnRcbiAgY29uc3QgYWRkT3B0aW9uT24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKGFkZFRhZ09uLnZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBhZGRUYWdPbi52YWx1ZVxuICAgIH1cbiAgICBlbHNlIGlmIChhZGRPcHRpb25Pbl8udmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGFkZE9wdGlvbk9uXy52YWx1ZVxuICAgIH1cblxuICAgIHJldHVybiBbJ2VudGVyJ11cbiAgfSk7XG5cbiAgLy8gPT09PT09PT09PT09PT09IE1FVEhPRFMgPT09PT09PT09PT09PT1cblxuICAvLyBubyBleHBvcnRcbiAgY29uc3QgcHJlcGFyZVBvaW50ZXIgPSAoKSA9PiB7XG4gICAgLy8gV2hlbiBvcHRpb25zIGFyZSBoaWRkZW4gYW5kIGNyZWF0aW5nIHRhZ3MgaXMgYWxsb3dlZFxuICAgIC8vIG5vIHBvaW50ZXIgd2lsbCBiZSBzZXQgKGJlY2F1c2Ugb3B0aW9ucyBhcmUgaGlkZGVuKS5cbiAgICAvLyBJbiBzdWNoIGNhc2Ugd2UgbmVlZCB0byBzZXQgdGhlIHBvaW50ZXIgbWFudWFsbHkgdG8gdGhlIFxuICAgIC8vIGZpcnN0IG9wdGlvbiwgd2hpY2ggZXF1YWxzIHRvIHRoZSBvcHRpb24gY3JlYXRlZCBmcm9tXG4gICAgLy8gdGhlIHNlYXJjaCB2YWx1ZS5cbiAgICBpZiAobW9kZS52YWx1ZSA9PT0gJ3RhZ3MnICYmICFzaG93T3B0aW9ucy52YWx1ZSAmJiBjcmVhdGVPcHRpb24udmFsdWUgJiYgc2VhcmNoYWJsZS52YWx1ZSAmJiAhZ3JvdXBwZWQudmFsdWUpIHtcbiAgICAgIHNldFBvaW50ZXIoZm8udmFsdWVbZm8udmFsdWUubWFwKG8gPT4gb1t2YWx1ZVByb3AudmFsdWVdKS5pbmRleE9mKHNlYXJjaC52YWx1ZSldKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlS2V5ZG93biA9IChlKSA9PiB7XG4gICAgY29udGV4dC5lbWl0KCdrZXlkb3duJywgZSwgJHRoaXMpO1xuXG4gICAgc3dpdGNoIChlLmtleSkge1xuICAgICAgY2FzZSAnQmFja3NwYWNlJzpcbiAgICAgICAgaWYgKG1vZGUudmFsdWUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2VhcmNoYWJsZS52YWx1ZSAmJiBbbnVsbCwgJyddLmluZGV4T2Yoc2VhcmNoLnZhbHVlKSA9PT0gLTEpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpdi52YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgdXBkYXRlKFsuLi5pdi52YWx1ZV0uc2xpY2UoMCwtMSkpO1xuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICBpZiAoYWRkT3B0aW9uT24udmFsdWUuaW5kZXhPZignZW50ZXInKSA9PT0gLTEgJiYgY3JlYXRlT3B0aW9uLnZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIHByZXBhcmVQb2ludGVyKCk7XG4gICAgICAgIHNlbGVjdFBvaW50ZXIoKTtcbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSAnICc6XG4gICAgICAgIGlmICghY3JlYXRlT3B0aW9uLnZhbHVlICYmICFzZWFyY2hhYmxlLnZhbHVlKSB7XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIFxuICAgICAgICAgIHByZXBhcmVQb2ludGVyKCk7XG4gICAgICAgICAgc2VsZWN0UG9pbnRlcigpO1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFjcmVhdGVPcHRpb24udmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfSBcblxuICAgICAgICBpZiAoYWRkT3B0aW9uT24udmFsdWUuaW5kZXhPZignc3BhY2UnKSA9PT0gLTEgJiYgY3JlYXRlT3B0aW9uLnZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIFxuICAgICAgICBwcmVwYXJlUG9pbnRlcigpO1xuICAgICAgICBzZWxlY3RQb2ludGVyKCk7XG4gICAgICAgIGJyZWFrXG4gICAgICBcbiAgICAgIGNhc2UgJ1RhYic6XG4gICAgICBjYXNlICc7JzpcbiAgICAgIGNhc2UgJywnOlxuICAgICAgICBpZiAoYWRkT3B0aW9uT24udmFsdWUuaW5kZXhPZihlLmtleS50b0xvd2VyQ2FzZSgpKSA9PT0gLTEgfHwgIWNyZWF0ZU9wdGlvbi52YWx1ZSkge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgcHJlcGFyZVBvaW50ZXIoKTtcbiAgICAgICAgc2VsZWN0UG9pbnRlcigpO1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgJ0VzY2FwZSc6XG4gICAgICAgIGJsdXIoKTtcbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICBpZiAoIXNob3dPcHRpb25zLnZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoIWlzT3Blbi52YWx1ZSkge1xuICAgICAgICAgIG9wZW4oKTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgYmFja3dhcmRQb2ludGVyKCk7XG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICBpZiAoIXNob3dPcHRpb25zLnZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoIWlzT3Blbi52YWx1ZSkge1xuICAgICAgICAgIG9wZW4oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvcndhcmRQb2ludGVyKCk7XG4gICAgICAgIGJyZWFrXG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUtleXVwID0gKGUpID0+IHtcbiAgICBjb250ZXh0LmVtaXQoJ2tleXVwJywgZSwgJHRoaXMpO1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgaGFuZGxlS2V5ZG93bixcbiAgICBoYW5kbGVLZXl1cCxcbiAgICBwcmVwYXJlUG9pbnRlcixcbiAgfVxufVxuXG5mdW5jdGlvbiB1c2VDbGFzc2VzIChwcm9wcywgY29udGV4dCwgZGVwZW5kZW5jaWVzKVxue2NvbnN0IHsgXG4gICAgY2xhc3NlczogY2xhc3Nlc18sIGRpc2FibGVkLCBvcGVuRGlyZWN0aW9uLCBzaG93T3B0aW9uc1xuICB9ID0gdG9SZWZzKHByb3BzKTtcblxuICAvLyA9PT09PT09PT09PT0gREVQRU5ERU5DSUVTID09PT09PT09PT09PVxuXG4gIGNvbnN0IGlzT3BlbiA9IGRlcGVuZGVuY2llcy5pc09wZW47XG4gIGNvbnN0IGlzUG9pbnRlZCA9IGRlcGVuZGVuY2llcy5pc1BvaW50ZWQ7XG4gIGNvbnN0IGlzU2VsZWN0ZWQgPSBkZXBlbmRlbmNpZXMuaXNTZWxlY3RlZDtcbiAgY29uc3QgaXNEaXNhYmxlZCA9IGRlcGVuZGVuY2llcy5pc0Rpc2FibGVkO1xuICBjb25zdCBpc0FjdGl2ZSA9IGRlcGVuZGVuY2llcy5pc0FjdGl2ZTtcbiAgY29uc3QgY2FuUG9pbnRHcm91cHMgPSBkZXBlbmRlbmNpZXMuY2FuUG9pbnRHcm91cHM7XG4gIGNvbnN0IHJlc29sdmluZyA9IGRlcGVuZGVuY2llcy5yZXNvbHZpbmc7XG4gIGNvbnN0IGZvID0gZGVwZW5kZW5jaWVzLmZvO1xuXG4gIGNvbnN0IGNsYXNzZXMgPSBjb21wdXRlZCgoKSA9PiAoe1xuICAgIGNvbnRhaW5lcjogJ211bHRpc2VsZWN0JyxcbiAgICBjb250YWluZXJEaXNhYmxlZDogJ2lzLWRpc2FibGVkJyxcbiAgICBjb250YWluZXJPcGVuOiAnaXMtb3BlbicsXG4gICAgY29udGFpbmVyT3BlblRvcDogJ2lzLW9wZW4tdG9wJyxcbiAgICBjb250YWluZXJBY3RpdmU6ICdpcy1hY3RpdmUnLFxuICAgIHNpbmdsZUxhYmVsOiAnbXVsdGlzZWxlY3Qtc2luZ2xlLWxhYmVsJyxcbiAgICBzaW5nbGVMYWJlbFRleHQ6ICdtdWx0aXNlbGVjdC1zaW5nbGUtbGFiZWwtdGV4dCcsXG4gICAgbXVsdGlwbGVMYWJlbDogJ211bHRpc2VsZWN0LW11bHRpcGxlLWxhYmVsJyxcbiAgICBzZWFyY2g6ICdtdWx0aXNlbGVjdC1zZWFyY2gnLFxuICAgIHRhZ3M6ICdtdWx0aXNlbGVjdC10YWdzJyxcbiAgICB0YWc6ICdtdWx0aXNlbGVjdC10YWcnLFxuICAgIHRhZ0Rpc2FibGVkOiAnaXMtZGlzYWJsZWQnLFxuICAgIHRhZ1JlbW92ZTogJ211bHRpc2VsZWN0LXRhZy1yZW1vdmUnLFxuICAgIHRhZ1JlbW92ZUljb246ICdtdWx0aXNlbGVjdC10YWctcmVtb3ZlLWljb24nLFxuICAgIHRhZ3NTZWFyY2hXcmFwcGVyOiAnbXVsdGlzZWxlY3QtdGFncy1zZWFyY2gtd3JhcHBlcicsXG4gICAgdGFnc1NlYXJjaDogJ211bHRpc2VsZWN0LXRhZ3Mtc2VhcmNoJyxcbiAgICB0YWdzU2VhcmNoQ29weTogJ211bHRpc2VsZWN0LXRhZ3Mtc2VhcmNoLWNvcHknLFxuICAgIHBsYWNlaG9sZGVyOiAnbXVsdGlzZWxlY3QtcGxhY2Vob2xkZXInLFxuICAgIGNhcmV0OiAnbXVsdGlzZWxlY3QtY2FyZXQnLFxuICAgIGNhcmV0T3BlbjogJ2lzLW9wZW4nLFxuICAgIGNsZWFyOiAnbXVsdGlzZWxlY3QtY2xlYXInLFxuICAgIGNsZWFySWNvbjogJ211bHRpc2VsZWN0LWNsZWFyLWljb24nLFxuICAgIHNwaW5uZXI6ICdtdWx0aXNlbGVjdC1zcGlubmVyJyxcbiAgICBpbmlmaW5pdGU6ICdtdWx0aXNlbGVjdC1pbmlmaXRlJyxcbiAgICBpbmlmaW5pdGVTcGlubmVyOiAnbXVsdGlzZWxlY3QtaW5pZml0ZS1zcGlubmVyJyxcbiAgICBkcm9wZG93bjogJ211bHRpc2VsZWN0LWRyb3Bkb3duJyxcbiAgICBkcm9wZG93blRvcDogJ2lzLXRvcCcsXG4gICAgZHJvcGRvd25IaWRkZW46ICdpcy1oaWRkZW4nLFxuICAgIG9wdGlvbnM6ICdtdWx0aXNlbGVjdC1vcHRpb25zJyxcbiAgICBvcHRpb25zVG9wOiAnaXMtdG9wJyxcbiAgICBncm91cDogJ211bHRpc2VsZWN0LWdyb3VwJyxcbiAgICBncm91cExhYmVsOiAnbXVsdGlzZWxlY3QtZ3JvdXAtbGFiZWwnLFxuICAgIGdyb3VwTGFiZWxQb2ludGFibGU6ICdpcy1wb2ludGFibGUnLFxuICAgIGdyb3VwTGFiZWxQb2ludGVkOiAnaXMtcG9pbnRlZCcsXG4gICAgZ3JvdXBMYWJlbFNlbGVjdGVkOiAnaXMtc2VsZWN0ZWQnLFxuICAgIGdyb3VwTGFiZWxEaXNhYmxlZDogJ2lzLWRpc2FibGVkJyxcbiAgICBncm91cExhYmVsU2VsZWN0ZWRQb2ludGVkOiAnaXMtc2VsZWN0ZWQgaXMtcG9pbnRlZCcsXG4gICAgZ3JvdXBMYWJlbFNlbGVjdGVkRGlzYWJsZWQ6ICdpcy1zZWxlY3RlZCBpcy1kaXNhYmxlZCcsXG4gICAgZ3JvdXBPcHRpb25zOiAnbXVsdGlzZWxlY3QtZ3JvdXAtb3B0aW9ucycsXG4gICAgb3B0aW9uOiAnbXVsdGlzZWxlY3Qtb3B0aW9uJyxcbiAgICBvcHRpb25Qb2ludGVkOiAnaXMtcG9pbnRlZCcsXG4gICAgb3B0aW9uU2VsZWN0ZWQ6ICdpcy1zZWxlY3RlZCcsXG4gICAgb3B0aW9uRGlzYWJsZWQ6ICdpcy1kaXNhYmxlZCcsXG4gICAgb3B0aW9uU2VsZWN0ZWRQb2ludGVkOiAnaXMtc2VsZWN0ZWQgaXMtcG9pbnRlZCcsXG4gICAgb3B0aW9uU2VsZWN0ZWREaXNhYmxlZDogJ2lzLXNlbGVjdGVkIGlzLWRpc2FibGVkJyxcbiAgICBub09wdGlvbnM6ICdtdWx0aXNlbGVjdC1uby1vcHRpb25zJyxcbiAgICBub1Jlc3VsdHM6ICdtdWx0aXNlbGVjdC1uby1yZXN1bHRzJyxcbiAgICBmYWtlSW5wdXQ6ICdtdWx0aXNlbGVjdC1mYWtlLWlucHV0JyxcbiAgICBzcGFjZXI6ICdtdWx0aXNlbGVjdC1zcGFjZXInLFxuICAgIC4uLmNsYXNzZXNfLnZhbHVlLFxuICB9KSk7XG5cbiAgLy8gPT09PT09PT09PT09PT0gQ09NUFVURUQgPT09PT09PT09PT09PT1cblxuICBjb25zdCBzaG93RHJvcGRvd24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuICEhKGlzT3Blbi52YWx1ZSAmJiBzaG93T3B0aW9ucy52YWx1ZSAmJiAoIXJlc29sdmluZy52YWx1ZSB8fCAocmVzb2x2aW5nLnZhbHVlICYmIGZvLnZhbHVlLmxlbmd0aCkpKVxuICB9KTtcblxuICBjb25zdCBjbGFzc0xpc3QgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgYyA9IGNsYXNzZXMudmFsdWU7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29udGFpbmVyOiBbYy5jb250YWluZXJdXG4gICAgICAgIC5jb25jYXQoZGlzYWJsZWQudmFsdWUgPyBjLmNvbnRhaW5lckRpc2FibGVkIDogW10pXG4gICAgICAgIC5jb25jYXQoc2hvd0Ryb3Bkb3duLnZhbHVlICYmIG9wZW5EaXJlY3Rpb24udmFsdWUgPT09ICd0b3AnICA/IGMuY29udGFpbmVyT3BlblRvcCA6IFtdKVxuICAgICAgICAuY29uY2F0KHNob3dEcm9wZG93bi52YWx1ZSAmJiBvcGVuRGlyZWN0aW9uLnZhbHVlICE9PSAndG9wJyA/IGMuY29udGFpbmVyT3BlbiA6IFtdKVxuICAgICAgICAuY29uY2F0KGlzQWN0aXZlLnZhbHVlID8gYy5jb250YWluZXJBY3RpdmUgOiBbXSksXG4gICAgICBzcGFjZXI6IGMuc3BhY2VyLFxuICAgICAgc2luZ2xlTGFiZWw6IGMuc2luZ2xlTGFiZWwsXG4gICAgICBzaW5nbGVMYWJlbFRleHQ6IGMuc2luZ2xlTGFiZWxUZXh0LFxuICAgICAgbXVsdGlwbGVMYWJlbDogYy5tdWx0aXBsZUxhYmVsLFxuICAgICAgc2VhcmNoOiBjLnNlYXJjaCxcbiAgICAgIHRhZ3M6IGMudGFncyxcbiAgICAgIHRhZzogW2MudGFnXVxuICAgICAgICAuY29uY2F0KGRpc2FibGVkLnZhbHVlID8gYy50YWdEaXNhYmxlZCA6IFtdKSxcbiAgICAgIHRhZ1JlbW92ZTogYy50YWdSZW1vdmUsXG4gICAgICB0YWdSZW1vdmVJY29uOiBjLnRhZ1JlbW92ZUljb24sXG4gICAgICB0YWdzU2VhcmNoV3JhcHBlcjogYy50YWdzU2VhcmNoV3JhcHBlcixcbiAgICAgIHRhZ3NTZWFyY2g6IGMudGFnc1NlYXJjaCxcbiAgICAgIHRhZ3NTZWFyY2hDb3B5OiBjLnRhZ3NTZWFyY2hDb3B5LFxuICAgICAgcGxhY2Vob2xkZXI6IGMucGxhY2Vob2xkZXIsXG4gICAgICBjYXJldDogW2MuY2FyZXRdXG4gICAgICAgIC5jb25jYXQoaXNPcGVuLnZhbHVlID8gYy5jYXJldE9wZW4gOiBbXSksXG4gICAgICBjbGVhcjogYy5jbGVhcixcbiAgICAgIGNsZWFySWNvbjogYy5jbGVhckljb24sXG4gICAgICBzcGlubmVyOiBjLnNwaW5uZXIsXG4gICAgICBpbmlmaW5pdGU6IGMuaW5pZmluaXRlLFxuICAgICAgaW5pZmluaXRlU3Bpbm5lcjogYy5pbmlmaW5pdGVTcGlubmVyLFxuICAgICAgZHJvcGRvd246IFtjLmRyb3Bkb3duXVxuICAgICAgICAuY29uY2F0KG9wZW5EaXJlY3Rpb24udmFsdWUgPT09ICd0b3AnID8gYy5kcm9wZG93blRvcCA6IFtdKVxuICAgICAgICAuY29uY2F0KCFpc09wZW4udmFsdWUgfHwgIXNob3dPcHRpb25zLnZhbHVlIHx8ICFzaG93RHJvcGRvd24udmFsdWUgPyBjLmRyb3Bkb3duSGlkZGVuIDogW10pLFxuICAgICAgb3B0aW9uczogW2Mub3B0aW9uc11cbiAgICAgICAgLmNvbmNhdChvcGVuRGlyZWN0aW9uLnZhbHVlID09PSAndG9wJyA/IGMub3B0aW9uc1RvcCA6IFtdKSxcbiAgICAgIGdyb3VwOiBjLmdyb3VwLFxuICAgICAgZ3JvdXBMYWJlbDogKGcpID0+IHtcbiAgICAgICAgbGV0IGdyb3VwTGFiZWwgPSBbYy5ncm91cExhYmVsXTtcblxuICAgICAgICBpZiAoaXNQb2ludGVkKGcpKSB7XG4gICAgICAgICAgZ3JvdXBMYWJlbC5wdXNoKGlzU2VsZWN0ZWQoZykgPyBjLmdyb3VwTGFiZWxTZWxlY3RlZFBvaW50ZWQgOiBjLmdyb3VwTGFiZWxQb2ludGVkKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc1NlbGVjdGVkKGcpICYmIGNhblBvaW50R3JvdXBzLnZhbHVlKSB7XG4gICAgICAgICAgZ3JvdXBMYWJlbC5wdXNoKGlzRGlzYWJsZWQoZykgPyBjLmdyb3VwTGFiZWxTZWxlY3RlZERpc2FibGVkIDogYy5ncm91cExhYmVsU2VsZWN0ZWQpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzRGlzYWJsZWQoZykpIHtcbiAgICAgICAgICBncm91cExhYmVsLnB1c2goYy5ncm91cExhYmVsRGlzYWJsZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNhblBvaW50R3JvdXBzLnZhbHVlKSB7XG4gICAgICAgICAgZ3JvdXBMYWJlbC5wdXNoKGMuZ3JvdXBMYWJlbFBvaW50YWJsZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZ3JvdXBMYWJlbFxuICAgICAgfSxcbiAgICAgIGdyb3VwT3B0aW9uczogYy5ncm91cE9wdGlvbnMsXG4gICAgICBvcHRpb246IChvLCBnKSA9PiB7XG4gICAgICAgIGxldCBvcHRpb24gPSBbYy5vcHRpb25dO1xuXG4gICAgICAgIGlmIChpc1BvaW50ZWQobykpIHtcbiAgICAgICAgICBvcHRpb24ucHVzaChpc1NlbGVjdGVkKG8pID8gYy5vcHRpb25TZWxlY3RlZFBvaW50ZWQgOiBjLm9wdGlvblBvaW50ZWQpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzU2VsZWN0ZWQobykpIHtcbiAgICAgICAgICBvcHRpb24ucHVzaChpc0Rpc2FibGVkKG8pID8gYy5vcHRpb25TZWxlY3RlZERpc2FibGVkIDogYy5vcHRpb25TZWxlY3RlZCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNEaXNhYmxlZChvKSB8fCAoZyAmJiBpc0Rpc2FibGVkKGcpKSkge1xuICAgICAgICAgIG9wdGlvbi5wdXNoKGMub3B0aW9uRGlzYWJsZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9wdGlvblxuICAgICAgfSxcbiAgICAgIG5vT3B0aW9uczogYy5ub09wdGlvbnMsXG4gICAgICBub1Jlc3VsdHM6IGMubm9SZXN1bHRzLFxuICAgICAgZmFrZUlucHV0OiBjLmZha2VJbnB1dCxcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgY2xhc3NMaXN0LFxuICAgIHNob3dEcm9wZG93bixcbiAgfVxufVxuXG5mdW5jdGlvbiB1c2VTY3JvbGwkMSAocHJvcHMsIGNvbnRleHQsIGRlcClcbntcbiAgY29uc3Qge1xuICAgIGxpbWl0LCBpbmZpbml0ZSxcbiAgfSA9IHRvUmVmcyhwcm9wcyk7XG5cbiAgLy8gPT09PT09PT09PT09IERFUEVOREVOQ0lFUyA9PT09PT09PT09PT1cblxuICBjb25zdCBpc09wZW4gPSBkZXAuaXNPcGVuO1xuICBjb25zdCBvZmZzZXQgPSBkZXAub2Zmc2V0O1xuICBjb25zdCBzZWFyY2ggPSBkZXAuc2VhcmNoO1xuICBjb25zdCBwZm8gPSBkZXAucGZvO1xuICBjb25zdCBlbyA9IGRlcC5lbztcblxuICAvLyA9PT09PT09PT09PT09PT09IERBVEEgPT09PT09PT09PT09PT09PVxuXG4gIC8vIG5vIGV4cG9ydFxuICBjb25zdCBvYnNlcnZlciA9IHJlZihudWxsKTtcblxuICBjb25zdCBpbmZpbml0ZUxvYWRlciA9IHJlZihudWxsKTtcblxuICAvLyA9PT09PT09PT09PT09PSBDT01QVVRFRCA9PT09PT09PT09PT09PVxuXG4gIGNvbnN0IGhhc01vcmUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIG9mZnNldC52YWx1ZSA8IHBmby52YWx1ZS5sZW5ndGhcbiAgfSk7XG5cbiAgLy8gPT09PT09PT09PT09PT09IE1FVEhPRFMgPT09PT09PT09PT09PT1cblxuICAvLyBubyBleHBvcnRcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgY29uc3QgaGFuZGxlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSAoZW50cmllcykgPT4ge1xuICAgIGNvbnN0IHsgaXNJbnRlcnNlY3RpbmcsIHRhcmdldCB9ID0gZW50cmllc1swXTtcblxuICAgIGlmIChpc0ludGVyc2VjdGluZykge1xuICAgICAgY29uc3QgcGFyZW50ID0gdGFyZ2V0Lm9mZnNldFBhcmVudDtcbiAgICAgIGNvbnN0IHNjcm9sbFRvcCA9IHBhcmVudC5zY3JvbGxUb3A7XG5cbiAgICAgIG9mZnNldC52YWx1ZSArPSBsaW1pdC52YWx1ZSA9PSAtMSA/IDEwIDogbGltaXQudmFsdWU7XG5cbiAgICAgIG5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgcGFyZW50LnNjcm9sbFRvcCA9IHNjcm9sbFRvcDtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBvYnNlcnZlID0gKCkgPT4ge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGlzT3Blbi52YWx1ZSAmJiBvZmZzZXQudmFsdWUgPCBwZm8udmFsdWUubGVuZ3RoKSB7XG4gICAgICBvYnNlcnZlci52YWx1ZS5vYnNlcnZlKGluZmluaXRlTG9hZGVyLnZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKCFpc09wZW4udmFsdWUgJiYgb2JzZXJ2ZXIudmFsdWUpIHtcbiAgICAgIG9ic2VydmVyLnZhbHVlLmRpc2Nvbm5lY3QoKTtcbiAgICB9XG4gIH07XG5cbiAgLy8gPT09PT09PT09PT09PT0gV0FUQ0hFUlMgPT09PT09PT09PT09PT1cblxuICB3YXRjaChpc09wZW4sICgpID0+IHtcbiAgICBpZiAoIWluZmluaXRlLnZhbHVlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBvYnNlcnZlKCk7XG4gIH0pO1xuXG4gIHdhdGNoKHNlYXJjaCwgKCkgPT4ge1xuICAgIGlmICghaW5maW5pdGUudmFsdWUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIG9mZnNldC52YWx1ZSA9IGxpbWl0LnZhbHVlO1xuXG4gICAgb2JzZXJ2ZSgpO1xuICB9LCB7IGZsdXNoOiAncG9zdCcgfSk7XG5cbiAgd2F0Y2goZW8sICgpID0+IHtcbiAgICBpZiAoIWluZmluaXRlLnZhbHVlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBvYnNlcnZlKCk7XG4gIH0sIHsgaW1tZWRpYXRlOiBmYWxzZSwgZmx1c2g6ICdwb3N0JyB9KTtcblxuICAvLyA9PT09PT09PT09PT09PT09IEhPT0tTID09PT09PT09PT09PT09PVxuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAod2luZG93ICYmIHdpbmRvdy5JbnRlcnNlY3Rpb25PYnNlcnZlcikge1xuICAgICAgb2JzZXJ2ZXIudmFsdWUgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoaGFuZGxlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBoYXNNb3JlLFxuICAgIGluZmluaXRlTG9hZGVyLFxuICB9XG59XG5cbmZ1bmN0aW9uIHVzZVNjcm9sbCAocHJvcHMsIGNvbnRleHQsIGRlcClcbntcbiAgY29uc3QgeyBwbGFjZWhvbGRlciwgaWQsIHZhbHVlUHJvcCwgbGFiZWw6IGxhYmVsUHJvcCwgbW9kZSwgZ3JvdXBMYWJlbCB9ID0gdG9SZWZzKHByb3BzKTtcblxuICAvLyA9PT09PT09PT09PT0gREVQRU5ERU5DSUVTID09PT09PT09PT09PVxuXG4gIGNvbnN0IHBvaW50ZXIgPSBkZXAucG9pbnRlcjtcbiAgY29uc3QgaXYgPSBkZXAuaXY7XG4gIGNvbnN0IGlzU2VsZWN0ZWQgPSBkZXAuaXNTZWxlY3RlZDtcbiAgY29uc3QgaGFzU2VsZWN0ZWQgPSBkZXAuaGFzU2VsZWN0ZWQ7XG4gIGNvbnN0IG11bHRpcGxlTGFiZWxUZXh0ID0gZGVwLm11bHRpcGxlTGFiZWxUZXh0O1xuXG4gIC8vID09PT09PT09PT09PT09PT0gREFUQSA9PT09PT09PT09PT09PT09XG5cbiAgY29uc3QgbGFiZWwgPSByZWYobnVsbCk7XG5cbiAgLy8gPT09PT09PT09PT09PT0gQ09NUFVURUQgPT09PT09PT09PT09PT1cblxuICBjb25zdCBhcmlhT3ducyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBsZXQgdGV4dHMgPSBbXTtcblxuICAgIGlmIChpZCAmJiBpZC52YWx1ZSkge1xuICAgICAgdGV4dHMucHVzaChpZC52YWx1ZSk7XG4gICAgfVxuXG4gICAgdGV4dHMucHVzaCgnbXVsdGlzZWxlY3Qtb3B0aW9ucycpO1xuXG4gICAgcmV0dXJuIHRleHRzLmpvaW4oJy0nKVxuICB9KTtcblxuICBjb25zdCBhcmlhQWN0aXZlRGVzY2VuZGFudCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBsZXQgdGV4dHMgPSBbXTtcblxuICAgIGlmIChpZCAmJiBpZC52YWx1ZSkge1xuICAgICAgdGV4dHMucHVzaChpZC52YWx1ZSk7XG4gICAgfVxuXG4gICAgdGV4dHMucHVzaCgnbXVsdGlzZWxlY3Qtb3B0aW9uJyk7XG5cbiAgICBpZiAocG9pbnRlci52YWx1ZSAmJiBwb2ludGVyLnZhbHVlW3ZhbHVlUHJvcC52YWx1ZV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGV4dHMucHVzaChwb2ludGVyLnZhbHVlW3ZhbHVlUHJvcC52YWx1ZV0pO1xuXG4gICAgICByZXR1cm4gdGV4dHMuam9pbignLScpXG4gICAgfVxuICB9KTtcblxuICBjb25zdCBhcmlhTGFiZWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgbGV0IHRleHRzID0gW107XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmIChsYWJlbC52YWx1ZSkge1xuICAgICAgdGV4dHMucHVzaChsYWJlbC52YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHBsYWNlaG9sZGVyLnZhbHVlICYmICFoYXNTZWxlY3RlZC52YWx1ZSkge1xuICAgICAgdGV4dHMucHVzaChwbGFjZWhvbGRlci52YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKG1vZGUudmFsdWUgPT09ICdzaW5nbGUnICYmIGl2LnZhbHVlICYmIGl2LnZhbHVlW2xhYmVsUHJvcC52YWx1ZV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGV4dHMucHVzaChpdi52YWx1ZVtsYWJlbFByb3AudmFsdWVdKTtcbiAgICB9XG5cbiAgICBpZiAobW9kZS52YWx1ZSA9PT0gJ211bHRpcGxlJyAmJiBoYXNTZWxlY3RlZC52YWx1ZSkge1xuICAgICAgdGV4dHMucHVzaChtdWx0aXBsZUxhYmVsVGV4dC52YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKG1vZGUudmFsdWUgPT09ICd0YWdzJyAmJiBoYXNTZWxlY3RlZC52YWx1ZSkge1xuICAgICAgdGV4dHMucHVzaCguLi5pdi52YWx1ZS5tYXAodiA9PiB2W2xhYmVsUHJvcC52YWx1ZV0pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGV4dHMuam9pbignLCAnKVxuICB9KTtcblxuICBjb25zdCBhcmlhUGxhY2Vob2xkZXIgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIGFyaWFMYWJlbC52YWx1ZVxuICB9KTtcblxuICAvLyA9PT09PT09PT09PT09PT0gTUVUSE9EUyA9PT09PT09PT09PT09PVxuXG4gIGNvbnN0IGFyaWFPcHRpb25JZCA9IChvcHRpb24pID0+IHtcbiAgICBsZXQgdGV4dHMgPSBbXTtcblxuICAgIGlmIChpZCAmJiBpZC52YWx1ZSkge1xuICAgICAgdGV4dHMucHVzaChpZC52YWx1ZSk7XG4gICAgfVxuXG4gICAgdGV4dHMucHVzaCgnbXVsdGlzZWxlY3Qtb3B0aW9uJyk7XG5cbiAgICB0ZXh0cy5wdXNoKG9wdGlvblt2YWx1ZVByb3AudmFsdWVdKTtcblxuICAgIHJldHVybiB0ZXh0cy5qb2luKCctJylcbiAgfTtcblxuICBjb25zdCBhcmlhT3B0aW9uTGFiZWwgPSAob3B0aW9uKSA9PiB7XG4gICAgbGV0IHRleHRzID0gW107XG5cbiAgICBpZiAoaXNTZWxlY3RlZChvcHRpb24pKSB7XG4gICAgICB0ZXh0cy5wdXNoKCfinJMnKTtcbiAgICB9XG5cbiAgICB0ZXh0cy5wdXNoKG9wdGlvbltsYWJlbFByb3AudmFsdWVdKTtcblxuICAgIHJldHVybiB0ZXh0cy5qb2luKCcgJylcbiAgfTtcblxuICBjb25zdCBhcmlhR3JvdXBMYWJlbCA9IChncm91cCkgPT4ge1xuICAgIGxldCB0ZXh0cyA9IFtdO1xuXG4gICAgdGV4dHMucHVzaChncm91cFtncm91cExhYmVsLnZhbHVlXSk7XG5cbiAgICByZXR1cm4gdGV4dHMuam9pbignICcpXG4gIH07XG5cbiAgLy8gPT09PT09PT09PT09PT09IEhPT0tTID09PT09PT09PT09PT09PT1cblxuICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgaWYgKGlkICYmIGlkLnZhbHVlICYmIGRvY3VtZW50ICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IpIHtcbiAgICAgIGxldCBmb3JUYWcgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBbZm9yPVwiJHtpZC52YWx1ZX1cIl1gKTtcbiAgICAgIGxhYmVsLnZhbHVlID0gZm9yVGFnID8gZm9yVGFnLmlubmVyVGV4dCA6IG51bGw7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4ge1xuICAgIGFyaWFPd25zLFxuICAgIGFyaWFMYWJlbCxcbiAgICBhcmlhUGxhY2Vob2xkZXIsXG4gICAgYXJpYUFjdGl2ZURlc2NlbmRhbnQsXG4gICAgYXJpYU9wdGlvbklkLFxuICAgIGFyaWFPcHRpb25MYWJlbCxcbiAgICBhcmlhR3JvdXBMYWJlbCxcbiAgfVxufVxuXG5mdW5jdGlvbiByZXNvbHZlRGVwcyAocHJvcHMsIGNvbnRleHQsIGZlYXR1cmVzLCBkZXBzID0ge30pIHtcbiAgZmVhdHVyZXMuZm9yRWFjaCgoY29tcG9zYWJsZSkgPT4ge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGNvbXBvc2FibGUpIHtcbiAgICAgIGRlcHMgPSB7XG4gICAgICAgIC4uLmRlcHMsXG4gICAgICAgIC4uLmNvbXBvc2FibGUocHJvcHMsIGNvbnRleHQsIGRlcHMpXG4gICAgICB9O1xuICAgIH1cblxuICB9KTtcbiAgXG4gIHJldHVybiBkZXBzXG59XG5cbnZhciBzY3JpcHQgPSB7XG4gICAgbmFtZTogJ011bHRpc2VsZWN0JyxcbiAgICBlbWl0czogW1xuICAgICAgJ3Bhc3RlJywgJ29wZW4nLCAnY2xvc2UnLCAnc2VsZWN0JywgJ2Rlc2VsZWN0JywgXG4gICAgICAnaW5wdXQnLCAnc2VhcmNoLWNoYW5nZScsICd0YWcnLCAnb3B0aW9uJywgJ3VwZGF0ZTptb2RlbFZhbHVlJyxcbiAgICAgICdjaGFuZ2UnLCAnY2xlYXInLCAna2V5ZG93bicsICdrZXl1cCcsXG4gICAgXSxcbiAgICBwcm9wczoge1xuICAgICAgdmFsdWU6IHtcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIG1vZGVsVmFsdWU6IHtcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgdHlwZTogW0FycmF5LCBPYmplY3QsIEZ1bmN0aW9uXSxcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiAoKSA9PiAoW10pXG4gICAgICB9LFxuICAgICAgaWQ6IHtcbiAgICAgICAgdHlwZTogW1N0cmluZywgTnVtYmVyXSxcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIG5hbWU6IHtcbiAgICAgICAgdHlwZTogW1N0cmluZywgTnVtYmVyXSxcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiAnbXVsdGlzZWxlY3QnLFxuICAgICAgfSxcbiAgICAgIGRpc2FibGVkOiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB9LFxuICAgICAgbGFiZWw6IHtcbiAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6ICdsYWJlbCcsXG4gICAgICB9LFxuICAgICAgdHJhY2tCeToge1xuICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICAgIHZhbHVlUHJvcDoge1xuICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogJ3ZhbHVlJyxcbiAgICAgIH0sXG4gICAgICBwbGFjZWhvbGRlcjoge1xuICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgIH0sXG4gICAgICBtb2RlOiB7XG4gICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiAnc2luZ2xlJywgLy8gc2luZ2xlfG11bHRpcGxlfHRhZ3NcbiAgICAgIH0sXG4gICAgICBzZWFyY2hhYmxlOiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB9LFxuICAgICAgbGltaXQ6IHtcbiAgICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IC0xLFxuICAgICAgfSxcbiAgICAgIGhpZGVTZWxlY3RlZDoge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICB9LFxuICAgICAgY3JlYXRlVGFnOiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICAgIGNyZWF0ZU9wdGlvbjoge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgICBhcHBlbmROZXdUYWc6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgICAgYXBwZW5kTmV3T3B0aW9uOiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICAgIGFkZFRhZ09uOiB7XG4gICAgICAgIHR5cGU6IEFycmF5LFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgICBhZGRPcHRpb25Pbjoge1xuICAgICAgICB0eXBlOiBBcnJheSxcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgICAgY2FyZXQ6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgfSxcbiAgICAgIGxvYWRpbmc6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBub09wdGlvbnNUZXh0OiB7XG4gICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiAnVGhlIGxpc3QgaXMgZW1wdHknLFxuICAgICAgfSxcbiAgICAgIG5vUmVzdWx0c1RleHQ6IHtcbiAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6ICdObyByZXN1bHRzIGZvdW5kJyxcbiAgICAgIH0sXG4gICAgICBtdWx0aXBsZUxhYmVsOiB7XG4gICAgICAgIHR5cGU6IEZ1bmN0aW9uLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICB9LFxuICAgICAgb2JqZWN0OiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB9LFxuICAgICAgZGVsYXk6IHtcbiAgICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IC0xLFxuICAgICAgfSxcbiAgICAgIG1pbkNoYXJzOiB7XG4gICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiAwLFxuICAgICAgfSxcbiAgICAgIHJlc29sdmVPbkxvYWQ6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgfSxcbiAgICAgIGZpbHRlclJlc3VsdHM6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgfSxcbiAgICAgIGNsZWFyT25TZWFyY2g6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBjbGVhck9uU2VsZWN0OiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICBjYW5EZXNlbGVjdDoge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICB9LFxuICAgICAgY2FuQ2xlYXI6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgfSxcbiAgICAgIG1heDoge1xuICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogLTEsXG4gICAgICB9LFxuICAgICAgc2hvd09wdGlvbnM6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgfSxcbiAgICAgIHJlcXVpcmVkOiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB9LFxuICAgICAgb3BlbkRpcmVjdGlvbjoge1xuICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogJ2JvdHRvbScsXG4gICAgICB9LFxuICAgICAgbmF0aXZlU3VwcG9ydDoge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGNsYXNzZXM6IHtcbiAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6ICgpID0+ICh7fSlcbiAgICAgIH0sXG4gICAgICBzdHJpY3Q6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgfSxcbiAgICAgIGNsb3NlT25TZWxlY3Q6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgfSxcbiAgICAgIGF1dG9jb21wbGV0ZToge1xuICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBncm91cHM6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBncm91cExhYmVsOiB7XG4gICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiAnbGFiZWwnLFxuICAgICAgfSxcbiAgICAgIGdyb3VwT3B0aW9uczoge1xuICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogJ29wdGlvbnMnLFxuICAgICAgfSxcbiAgICAgIGdyb3VwSGlkZUVtcHR5OiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB9LFxuICAgICAgZ3JvdXBTZWxlY3Q6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgfSxcbiAgICAgIGlucHV0VHlwZToge1xuICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogJ3RleHQnLFxuICAgICAgfSxcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICBkZWZhdWx0OiAoKSA9PiAoe30pLFxuICAgICAgfSxcbiAgICAgIG9uQ3JlYXRlOiB7XG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgdHlwZTogRnVuY3Rpb24sXG4gICAgICB9LFxuICAgICAgZGlzYWJsZWRQcm9wOiB7XG4gICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiAnZGlzYWJsZWQnLFxuICAgICAgfSxcbiAgICAgIHNlYXJjaFN0YXJ0OiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB9LFxuICAgICAgcmV2ZXJzZToge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIHJlZ2V4OiB7XG4gICAgICAgIHR5cGU6IFtPYmplY3QsIFN0cmluZywgUmVnRXhwXSxcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgICAgcnRsOiB7XG4gICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICB9LFxuICAgICAgaW5maW5pdGU6IHtcbiAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cChwcm9wcywgY29udGV4dClcbiAgICB7IFxuICAgICAgcmV0dXJuIHJlc29sdmVEZXBzKHByb3BzLCBjb250ZXh0LCBbXG4gICAgICAgIHVzZVZhbHVlLFxuICAgICAgICB1c2VQb2ludGVyJDEsXG4gICAgICAgIHVzZURyb3Bkb3duLFxuICAgICAgICB1c2VTZWFyY2gsXG4gICAgICAgIHVzZURhdGEsXG4gICAgICAgIHVzZU11bHRpc2VsZWN0LFxuICAgICAgICB1c2VPcHRpb25zLFxuICAgICAgICB1c2VTY3JvbGwkMSxcbiAgICAgICAgdXNlUG9pbnRlcixcbiAgICAgICAgdXNlS2V5Ym9hcmQsXG4gICAgICAgIHVzZUNsYXNzZXMsXG4gICAgICAgIHVzZVNjcm9sbCxcbiAgICAgIF0pXG4gICAgfVxuICB9O1xuXG5jb25zdCBfaG9pc3RlZF8xID0gW1widGFiaW5kZXhcIiwgXCJpZFwiLCBcImRpclwiLCBcImFyaWEtb3duc1wiLCBcImFyaWEtZXhwYW5kZWRcIiwgXCJhcmlhLWxhYmVsXCIsIFwiYXJpYS1wbGFjZWhvbGRlclwiLCBcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiXTtcbmNvbnN0IF9ob2lzdGVkXzIgPSBbXCJ0eXBlXCIsIFwibW9kZWxWYWx1ZVwiLCBcInZhbHVlXCIsIFwiYXV0b2NvbXBsZXRlXCIsIFwiaWRcIiwgXCJhcmlhLW93bnNcIiwgXCJhcmlhLWV4cGFuZGVkXCIsIFwiYXJpYS1sYWJlbFwiLCBcImFyaWEtcGxhY2Vob2xkZXJcIiwgXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIl07XG5jb25zdCBfaG9pc3RlZF8zID0gW1wib25DbGlja1wiXTtcbmNvbnN0IF9ob2lzdGVkXzQgPSBbXCJ0eXBlXCIsIFwibW9kZWxWYWx1ZVwiLCBcInZhbHVlXCIsIFwiaWRcIiwgXCJhdXRvY29tcGxldGVcIiwgXCJhcmlhLW93bnNcIiwgXCJhcmlhLWV4cGFuZGVkXCIsIFwiYXJpYS1sYWJlbFwiLCBcImFyaWEtcGxhY2Vob2xkZXJcIiwgXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIl07XG5jb25zdCBfaG9pc3RlZF81ID0gW1wiaW5uZXJIVE1MXCJdO1xuY29uc3QgX2hvaXN0ZWRfNiA9IFtcImlubmVySFRNTFwiXTtcbmNvbnN0IF9ob2lzdGVkXzcgPSBbXCJpZFwiXTtcbmNvbnN0IF9ob2lzdGVkXzggPSBbXCJkYXRhLXBvaW50ZWRcIiwgXCJvbk1vdXNlZW50ZXJcIiwgXCJvbkNsaWNrXCJdO1xuY29uc3QgX2hvaXN0ZWRfOSA9IFtcImlubmVySFRNTFwiXTtcbmNvbnN0IF9ob2lzdGVkXzEwID0gW1wiYXJpYS1sYWJlbFwiXTtcbmNvbnN0IF9ob2lzdGVkXzExID0gW1wiZGF0YS1wb2ludGVkXCIsIFwiZGF0YS1zZWxlY3RlZFwiLCBcImlkXCIsIFwiYXJpYS1sYWJlbFwiLCBcIm9uTW91c2VlbnRlclwiLCBcIm9uQ2xpY2tcIl07XG5jb25zdCBfaG9pc3RlZF8xMiA9IFtcImlubmVySFRNTFwiXTtcbmNvbnN0IF9ob2lzdGVkXzEzID0gW1wiaWRcIiwgXCJhcmlhLWxhYmVsXCIsIFwiZGF0YS1wb2ludGVkXCIsIFwiZGF0YS1zZWxlY3RlZFwiLCBcIm9uTW91c2VlbnRlclwiLCBcIm9uQ2xpY2tcIl07XG5jb25zdCBfaG9pc3RlZF8xNCA9IFtcImlubmVySFRNTFwiXTtcbmNvbnN0IF9ob2lzdGVkXzE1ID0gW1wiaW5uZXJIVE1MXCJdO1xuY29uc3QgX2hvaXN0ZWRfMTYgPSBbXCJpbm5lckhUTUxcIl07XG5jb25zdCBfaG9pc3RlZF8xNyA9IFtcInZhbHVlXCJdO1xuY29uc3QgX2hvaXN0ZWRfMTggPSBbXCJuYW1lXCIsIFwidmFsdWVcIl07XG5jb25zdCBfaG9pc3RlZF8xOSA9IFtcIm5hbWVcIiwgXCJ2YWx1ZVwiXTtcblxuZnVuY3Rpb24gcmVuZGVyKF9jdHgsIF9jYWNoZSwgJHByb3BzLCAkc2V0dXAsICRkYXRhLCAkb3B0aW9ucykge1xuICByZXR1cm4gKG9wZW5CbG9jaygpLCBjcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIiwge1xuICAgIHJlZjogXCJtdWx0aXNlbGVjdFwiLFxuICAgIHRhYmluZGV4OiBfY3R4LnRhYmluZGV4LFxuICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC5jb250YWluZXIpLFxuICAgIGlkOiAkcHJvcHMuc2VhcmNoYWJsZSA/IHVuZGVmaW5lZCA6ICRwcm9wcy5pZCxcbiAgICBkaXI6ICRwcm9wcy5ydGwgPyAncnRsJyA6IHVuZGVmaW5lZCxcbiAgICBcImFyaWEtb3duc1wiOiBfY3R4LmFyaWFPd25zLFxuICAgIFwiYXJpYS1leHBhbmRlZFwiOiBfY3R4LmlzT3BlbixcbiAgICBcImFyaWEtbGFiZWxcIjogX2N0eC5hcmlhTGFiZWwsXG4gICAgXCJhcmlhLXBsYWNlaG9sZGVyXCI6IF9jdHguYXJpYVBsYWNlaG9sZGVyLFxuICAgIFwiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCI6IF9jdHguYXJpYUFjdGl2ZURlc2NlbmRhbnQsXG4gICAgb25Gb2N1c2luOiBfY2FjaGVbOF0gfHwgKF9jYWNoZVs4XSA9ICguLi5hcmdzKSA9PiAoX2N0eC5hY3RpdmF0ZSAmJiBfY3R4LmFjdGl2YXRlKC4uLmFyZ3MpKSksXG4gICAgb25Gb2N1c291dDogX2NhY2hlWzldIHx8IChfY2FjaGVbOV0gPSAoLi4uYXJncykgPT4gKF9jdHguZGVhY3RpdmF0ZSAmJiBfY3R4LmRlYWN0aXZhdGUoLi4uYXJncykpKSxcbiAgICBvbktleWRvd246IF9jYWNoZVsxMF0gfHwgKF9jYWNoZVsxMF0gPSAoLi4uYXJncykgPT4gKF9jdHguaGFuZGxlS2V5ZG93biAmJiBfY3R4LmhhbmRsZUtleWRvd24oLi4uYXJncykpKSxcbiAgICBvbktleXVwOiBfY2FjaGVbMTFdIHx8IChfY2FjaGVbMTFdID0gKC4uLmFyZ3MpID0+IChfY3R4LmhhbmRsZUtleXVwICYmIF9jdHguaGFuZGxlS2V5dXAoLi4uYXJncykpKSxcbiAgICBvbkZvY3VzOiBfY2FjaGVbMTJdIHx8IChfY2FjaGVbMTJdID0gKC4uLmFyZ3MpID0+IChfY3R4LmhhbmRsZUZvY3VzICYmIF9jdHguaGFuZGxlRm9jdXMoLi4uYXJncykpKSxcbiAgICBvbk1vdXNlZG93bjogX2NhY2hlWzEzXSB8fCAoX2NhY2hlWzEzXSA9ICguLi5hcmdzKSA9PiAoX2N0eC5oYW5kbGVNb3VzZWRvd24gJiYgX2N0eC5oYW5kbGVNb3VzZWRvd24oLi4uYXJncykpKSxcbiAgICByb2xlOiBcImNvbWJvYm94XCJcbiAgfSwgW1xuICAgIGNyZWF0ZUNvbW1lbnRWTm9kZShcIiBTZWFyY2ggXCIpLFxuICAgICgkcHJvcHMubW9kZSAhPT0gJ3RhZ3MnICYmICRwcm9wcy5zZWFyY2hhYmxlICYmICEkcHJvcHMuZGlzYWJsZWQpXG4gICAgICA/IChvcGVuQmxvY2soKSwgY3JlYXRlRWxlbWVudEJsb2NrKFwiaW5wdXRcIiwgbWVyZ2VQcm9wcyh7XG4gICAgICAgICAga2V5OiAwLFxuICAgICAgICAgIHR5cGU6ICRwcm9wcy5pbnB1dFR5cGUsXG4gICAgICAgICAgbW9kZWxWYWx1ZTogX2N0eC5zZWFyY2gsXG4gICAgICAgICAgdmFsdWU6IF9jdHguc2VhcmNoLFxuICAgICAgICAgIGNsYXNzOiBfY3R4LmNsYXNzTGlzdC5zZWFyY2gsXG4gICAgICAgICAgYXV0b2NvbXBsZXRlOiAkcHJvcHMuYXV0b2NvbXBsZXRlLFxuICAgICAgICAgIGlkOiAkcHJvcHMuc2VhcmNoYWJsZSA/ICRwcm9wcy5pZCA6IHVuZGVmaW5lZFxuICAgICAgICB9LCAkcHJvcHMuYXR0cnMsIHtcbiAgICAgICAgICBcImFyaWEtb3duc1wiOiBfY3R4LmFyaWFPd25zLFxuICAgICAgICAgIFwiYXJpYS1leHBhbmRlZFwiOiBfY3R4LmlzT3BlbixcbiAgICAgICAgICBcImFyaWEtbGFiZWxcIjogX2N0eC5hcmlhTGFiZWwsXG4gICAgICAgICAgXCJhcmlhLXBsYWNlaG9sZGVyXCI6IF9jdHguYXJpYVBsYWNlaG9sZGVyLFxuICAgICAgICAgIFwiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCI6IF9jdHguYXJpYUFjdGl2ZURlc2NlbmRhbnQsXG4gICAgICAgICAgb25JbnB1dDogX2NhY2hlWzBdIHx8IChfY2FjaGVbMF0gPSAoLi4uYXJncykgPT4gKF9jdHguaGFuZGxlU2VhcmNoSW5wdXQgJiYgX2N0eC5oYW5kbGVTZWFyY2hJbnB1dCguLi5hcmdzKSkpLFxuICAgICAgICAgIG9uS2V5cHJlc3M6IF9jYWNoZVsxXSB8fCAoX2NhY2hlWzFdID0gKC4uLmFyZ3MpID0+IChfY3R4LmhhbmRsZUtleXByZXNzICYmIF9jdHguaGFuZGxlS2V5cHJlc3MoLi4uYXJncykpKSxcbiAgICAgICAgICBvblBhc3RlOiBfY2FjaGVbMl0gfHwgKF9jYWNoZVsyXSA9IHdpdGhNb2RpZmllcnMoKC4uLmFyZ3MpID0+IChfY3R4LmhhbmRsZVBhc3RlICYmIF9jdHguaGFuZGxlUGFzdGUoLi4uYXJncykpLCBbXCJzdG9wXCJdKSksXG4gICAgICAgICAgcmVmOiBcImlucHV0XCIsXG4gICAgICAgICAgcm9sZTogXCJjb21ib2JveFwiXG4gICAgICAgIH0pLCBudWxsLCAxNiAvKiBGVUxMX1BST1BTICovLCBfaG9pc3RlZF8yKSlcbiAgICAgIDogY3JlYXRlQ29tbWVudFZOb2RlKFwidi1pZlwiLCB0cnVlKSxcbiAgICBjcmVhdGVDb21tZW50Vk5vZGUoXCIgVGFncyAod2l0aCBzZWFyY2gpIFwiKSxcbiAgICAoJHByb3BzLm1vZGUgPT0gJ3RhZ3MnKVxuICAgICAgPyAob3BlbkJsb2NrKCksIGNyZWF0ZUVsZW1lbnRCbG9jayhcImRpdlwiLCB7XG4gICAgICAgICAga2V5OiAxLFxuICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC50YWdzKVxuICAgICAgICB9LCBbXG4gICAgICAgICAgKG9wZW5CbG9jayh0cnVlKSwgY3JlYXRlRWxlbWVudEJsb2NrKEZyYWdtZW50LCBudWxsLCByZW5kZXJMaXN0KF9jdHguaXYsIChvcHRpb24sIGksIGtleSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHJlbmRlclNsb3QoX2N0eC4kc2xvdHMsIFwidGFnXCIsIHtcbiAgICAgICAgICAgICAgb3B0aW9uOiBvcHRpb24sXG4gICAgICAgICAgICAgIGhhbmRsZVRhZ1JlbW92ZTogX2N0eC5oYW5kbGVUYWdSZW1vdmUsXG4gICAgICAgICAgICAgIGRpc2FibGVkOiAkcHJvcHMuZGlzYWJsZWRcbiAgICAgICAgICAgIH0sICgpID0+IFtcbiAgICAgICAgICAgICAgKG9wZW5CbG9jaygpLCBjcmVhdGVFbGVtZW50QmxvY2soXCJzcGFuXCIsIHtcbiAgICAgICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3QudGFnKSxcbiAgICAgICAgICAgICAgICBrZXk6IGtleVxuICAgICAgICAgICAgICB9LCBbXG4gICAgICAgICAgICAgICAgY3JlYXRlVGV4dFZOb2RlKHRvRGlzcGxheVN0cmluZyhvcHRpb25bJHByb3BzLmxhYmVsXSkgKyBcIiBcIiwgMSAvKiBURVhUICovKSxcbiAgICAgICAgICAgICAgICAoISRwcm9wcy5kaXNhYmxlZClcbiAgICAgICAgICAgICAgICAgID8gKG9wZW5CbG9jaygpLCBjcmVhdGVFbGVtZW50QmxvY2soXCJzcGFuXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICBrZXk6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKF9jdHguY2xhc3NMaXN0LnRhZ1JlbW92ZSksXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljazogJGV2ZW50ID0+IChfY3R4LmhhbmRsZVRhZ1JlbW92ZShvcHRpb24sICRldmVudCkpXG4gICAgICAgICAgICAgICAgICAgIH0sIFtcbiAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50Vk5vZGUoXCJzcGFuXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC50YWdSZW1vdmVJY29uKVxuICAgICAgICAgICAgICAgICAgICAgIH0sIG51bGwsIDIgLyogQ0xBU1MgKi8pXG4gICAgICAgICAgICAgICAgICAgIF0sIDEwIC8qIENMQVNTLCBQUk9QUyAqLywgX2hvaXN0ZWRfMykpXG4gICAgICAgICAgICAgICAgICA6IGNyZWF0ZUNvbW1lbnRWTm9kZShcInYtaWZcIiwgdHJ1ZSlcbiAgICAgICAgICAgICAgXSwgMiAvKiBDTEFTUyAqLykpXG4gICAgICAgICAgICBdKVxuICAgICAgICAgIH0pLCAyNTYgLyogVU5LRVlFRF9GUkFHTUVOVCAqLykpLFxuICAgICAgICAgIGNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLCB7XG4gICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3QudGFnc1NlYXJjaFdyYXBwZXIpLFxuICAgICAgICAgICAgcmVmOiBcInRhZ3NcIlxuICAgICAgICAgIH0sIFtcbiAgICAgICAgICAgIGNyZWF0ZUNvbW1lbnRWTm9kZShcIiBVc2VkIGZvciBtZWFzdXJpbmcgc2VhcmNoIHdpZHRoIFwiKSxcbiAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnRWTm9kZShcInNwYW5cIiwge1xuICAgICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3QudGFnc1NlYXJjaENvcHkpXG4gICAgICAgICAgICB9LCB0b0Rpc3BsYXlTdHJpbmcoX2N0eC5zZWFyY2gpLCAzIC8qIFRFWFQsIENMQVNTICovKSxcbiAgICAgICAgICAgIGNyZWF0ZUNvbW1lbnRWTm9kZShcIiBBY3R1YWwgc2VhcmNoIGlucHV0IFwiKSxcbiAgICAgICAgICAgICgkcHJvcHMuc2VhcmNoYWJsZSAmJiAhJHByb3BzLmRpc2FibGVkKVxuICAgICAgICAgICAgICA/IChvcGVuQmxvY2soKSwgY3JlYXRlRWxlbWVudEJsb2NrKFwiaW5wdXRcIiwgbWVyZ2VQcm9wcyh7XG4gICAgICAgICAgICAgICAgICBrZXk6IDAsXG4gICAgICAgICAgICAgICAgICB0eXBlOiAkcHJvcHMuaW5wdXRUeXBlLFxuICAgICAgICAgICAgICAgICAgbW9kZWxWYWx1ZTogX2N0eC5zZWFyY2gsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogX2N0eC5zZWFyY2gsXG4gICAgICAgICAgICAgICAgICBjbGFzczogX2N0eC5jbGFzc0xpc3QudGFnc1NlYXJjaCxcbiAgICAgICAgICAgICAgICAgIGlkOiAkcHJvcHMuc2VhcmNoYWJsZSA/ICRwcm9wcy5pZCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZTogJHByb3BzLmF1dG9jb21wbGV0ZVxuICAgICAgICAgICAgICAgIH0sICRwcm9wcy5hdHRycywge1xuICAgICAgICAgICAgICAgICAgXCJhcmlhLW93bnNcIjogX2N0eC5hcmlhT3ducyxcbiAgICAgICAgICAgICAgICAgIFwiYXJpYS1leHBhbmRlZFwiOiBfY3R4LmlzT3BlbixcbiAgICAgICAgICAgICAgICAgIFwiYXJpYS1sYWJlbFwiOiBfY3R4LmFyaWFMYWJlbCxcbiAgICAgICAgICAgICAgICAgIFwiYXJpYS1wbGFjZWhvbGRlclwiOiBfY3R4LmFyaWFQbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICAgIFwiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCI6IF9jdHguYXJpYUFjdGl2ZURlc2NlbmRhbnQsXG4gICAgICAgICAgICAgICAgICBvbklucHV0OiBfY2FjaGVbM10gfHwgKF9jYWNoZVszXSA9ICguLi5hcmdzKSA9PiAoX2N0eC5oYW5kbGVTZWFyY2hJbnB1dCAmJiBfY3R4LmhhbmRsZVNlYXJjaElucHV0KC4uLmFyZ3MpKSksXG4gICAgICAgICAgICAgICAgICBvbktleXByZXNzOiBfY2FjaGVbNF0gfHwgKF9jYWNoZVs0XSA9ICguLi5hcmdzKSA9PiAoX2N0eC5oYW5kbGVLZXlwcmVzcyAmJiBfY3R4LmhhbmRsZUtleXByZXNzKC4uLmFyZ3MpKSksXG4gICAgICAgICAgICAgICAgICBvblBhc3RlOiBfY2FjaGVbNV0gfHwgKF9jYWNoZVs1XSA9IHdpdGhNb2RpZmllcnMoKC4uLmFyZ3MpID0+IChfY3R4LmhhbmRsZVBhc3RlICYmIF9jdHguaGFuZGxlUGFzdGUoLi4uYXJncykpLCBbXCJzdG9wXCJdKSksXG4gICAgICAgICAgICAgICAgICByZWY6IFwiaW5wdXRcIixcbiAgICAgICAgICAgICAgICAgIHJvbGU6IFwiY29tYm9ib3hcIlxuICAgICAgICAgICAgICAgIH0pLCBudWxsLCAxNiAvKiBGVUxMX1BST1BTICovLCBfaG9pc3RlZF80KSlcbiAgICAgICAgICAgICAgOiBjcmVhdGVDb21tZW50Vk5vZGUoXCJ2LWlmXCIsIHRydWUpXG4gICAgICAgICAgXSwgMiAvKiBDTEFTUyAqLylcbiAgICAgICAgXSwgMiAvKiBDTEFTUyAqLykpXG4gICAgICA6IGNyZWF0ZUNvbW1lbnRWTm9kZShcInYtaWZcIiwgdHJ1ZSksXG4gICAgY3JlYXRlQ29tbWVudFZOb2RlKFwiIFNpbmdsZSBsYWJlbCBcIiksXG4gICAgKCRwcm9wcy5tb2RlID09ICdzaW5nbGUnICYmIF9jdHguaGFzU2VsZWN0ZWQgJiYgIV9jdHguc2VhcmNoICYmIF9jdHguaXYpXG4gICAgICA/IHJlbmRlclNsb3QoX2N0eC4kc2xvdHMsIFwic2luZ2xlbGFiZWxcIiwge1xuICAgICAgICAgIGtleTogMixcbiAgICAgICAgICB2YWx1ZTogX2N0eC5pdlxuICAgICAgICB9LCAoKSA9PiBbXG4gICAgICAgICAgY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIsIHtcbiAgICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC5zaW5nbGVMYWJlbClcbiAgICAgICAgICB9LCBbXG4gICAgICAgICAgICBjcmVhdGVFbGVtZW50Vk5vZGUoXCJzcGFuXCIsIHtcbiAgICAgICAgICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKF9jdHguY2xhc3NMaXN0LnNpbmdsZUxhYmVsVGV4dCksXG4gICAgICAgICAgICAgIGlubmVySFRNTDogX2N0eC5pdlskcHJvcHMubGFiZWxdXG4gICAgICAgICAgICB9LCBudWxsLCAxMCAvKiBDTEFTUywgUFJPUFMgKi8sIF9ob2lzdGVkXzUpXG4gICAgICAgICAgXSwgMiAvKiBDTEFTUyAqLylcbiAgICAgICAgXSlcbiAgICAgIDogY3JlYXRlQ29tbWVudFZOb2RlKFwidi1pZlwiLCB0cnVlKSxcbiAgICBjcmVhdGVDb21tZW50Vk5vZGUoXCIgTXVsdGlwbGUgbGFiZWwgXCIpLFxuICAgICgkcHJvcHMubW9kZSA9PSAnbXVsdGlwbGUnICYmIF9jdHguaGFzU2VsZWN0ZWQgJiYgIV9jdHguc2VhcmNoKVxuICAgICAgPyByZW5kZXJTbG90KF9jdHguJHNsb3RzLCBcIm11bHRpcGxlbGFiZWxcIiwge1xuICAgICAgICAgIGtleTogMyxcbiAgICAgICAgICB2YWx1ZXM6IF9jdHguaXZcbiAgICAgICAgfSwgKCkgPT4gW1xuICAgICAgICAgIGNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLCB7XG4gICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3QubXVsdGlwbGVMYWJlbCksXG4gICAgICAgICAgICBpbm5lckhUTUw6IF9jdHgubXVsdGlwbGVMYWJlbFRleHRcbiAgICAgICAgICB9LCBudWxsLCAxMCAvKiBDTEFTUywgUFJPUFMgKi8sIF9ob2lzdGVkXzYpXG4gICAgICAgIF0pXG4gICAgICA6IGNyZWF0ZUNvbW1lbnRWTm9kZShcInYtaWZcIiwgdHJ1ZSksXG4gICAgY3JlYXRlQ29tbWVudFZOb2RlKFwiIFBsYWNlaG9sZGVyIFwiKSxcbiAgICAoJHByb3BzLnBsYWNlaG9sZGVyICYmICFfY3R4Lmhhc1NlbGVjdGVkICYmICFfY3R4LnNlYXJjaClcbiAgICAgID8gcmVuZGVyU2xvdChfY3R4LiRzbG90cywgXCJwbGFjZWhvbGRlclwiLCB7IGtleTogNCB9LCAoKSA9PiBbXG4gICAgICAgICAgY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIsIHtcbiAgICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC5wbGFjZWhvbGRlcilcbiAgICAgICAgICB9LCB0b0Rpc3BsYXlTdHJpbmcoJHByb3BzLnBsYWNlaG9sZGVyKSwgMyAvKiBURVhULCBDTEFTUyAqLylcbiAgICAgICAgXSlcbiAgICAgIDogY3JlYXRlQ29tbWVudFZOb2RlKFwidi1pZlwiLCB0cnVlKSxcbiAgICBjcmVhdGVDb21tZW50Vk5vZGUoXCIgU3Bpbm5lciBcIiksXG4gICAgKCRwcm9wcy5sb2FkaW5nIHx8IF9jdHgucmVzb2x2aW5nKVxuICAgICAgPyByZW5kZXJTbG90KF9jdHguJHNsb3RzLCBcInNwaW5uZXJcIiwgeyBrZXk6IDUgfSwgKCkgPT4gW1xuICAgICAgICAgIGNyZWF0ZUVsZW1lbnRWTm9kZShcInNwYW5cIiwge1xuICAgICAgICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKF9jdHguY2xhc3NMaXN0LnNwaW5uZXIpXG4gICAgICAgICAgfSwgbnVsbCwgMiAvKiBDTEFTUyAqLylcbiAgICAgICAgXSlcbiAgICAgIDogY3JlYXRlQ29tbWVudFZOb2RlKFwidi1pZlwiLCB0cnVlKSxcbiAgICBjcmVhdGVDb21tZW50Vk5vZGUoXCIgQ2xlYXIgXCIpLFxuICAgIChfY3R4Lmhhc1NlbGVjdGVkICYmICEkcHJvcHMuZGlzYWJsZWQgJiYgJHByb3BzLmNhbkNsZWFyICYmICFfY3R4LmJ1c3kpXG4gICAgICA/IHJlbmRlclNsb3QoX2N0eC4kc2xvdHMsIFwiY2xlYXJcIiwge1xuICAgICAgICAgIGtleTogNixcbiAgICAgICAgICBjbGVhcjogX2N0eC5jbGVhclxuICAgICAgICB9LCAoKSA9PiBbXG4gICAgICAgICAgY3JlYXRlRWxlbWVudFZOb2RlKFwic3BhblwiLCB7XG4gICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3QuY2xlYXIpLFxuICAgICAgICAgICAgb25DbGljazogX2NhY2hlWzZdIHx8IChfY2FjaGVbNl0gPSAoLi4uYXJncykgPT4gKF9jdHguY2xlYXIgJiYgX2N0eC5jbGVhciguLi5hcmdzKSkpXG4gICAgICAgICAgfSwgW1xuICAgICAgICAgICAgY3JlYXRlRWxlbWVudFZOb2RlKFwic3BhblwiLCB7XG4gICAgICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC5jbGVhckljb24pXG4gICAgICAgICAgICB9LCBudWxsLCAyIC8qIENMQVNTICovKVxuICAgICAgICAgIF0sIDIgLyogQ0xBU1MgKi8pXG4gICAgICAgIF0pXG4gICAgICA6IGNyZWF0ZUNvbW1lbnRWTm9kZShcInYtaWZcIiwgdHJ1ZSksXG4gICAgY3JlYXRlQ29tbWVudFZOb2RlKFwiIENhcmV0IFwiKSxcbiAgICAoJHByb3BzLmNhcmV0ICYmICRwcm9wcy5zaG93T3B0aW9ucylcbiAgICAgID8gcmVuZGVyU2xvdChfY3R4LiRzbG90cywgXCJjYXJldFwiLCB7IGtleTogNyB9LCAoKSA9PiBbXG4gICAgICAgICAgY3JlYXRlRWxlbWVudFZOb2RlKFwic3BhblwiLCB7XG4gICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3QuY2FyZXQpLFxuICAgICAgICAgICAgb25DbGljazogX2NhY2hlWzddIHx8IChfY2FjaGVbN10gPSAoLi4uYXJncykgPT4gKF9jdHguaGFuZGxlQ2FyZXRDbGljayAmJiBfY3R4LmhhbmRsZUNhcmV0Q2xpY2soLi4uYXJncykpKVxuICAgICAgICAgIH0sIG51bGwsIDIgLyogQ0xBU1MgKi8pXG4gICAgICAgIF0pXG4gICAgICA6IGNyZWF0ZUNvbW1lbnRWTm9kZShcInYtaWZcIiwgdHJ1ZSksXG4gICAgY3JlYXRlQ29tbWVudFZOb2RlKFwiIE9wdGlvbnMgXCIpLFxuICAgIGNyZWF0ZUVsZW1lbnRWTm9kZShcImRpdlwiLCB7XG4gICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3QuZHJvcGRvd24pLFxuICAgICAgdGFiaW5kZXg6IFwiLTFcIlxuICAgIH0sIFtcbiAgICAgIHJlbmRlclNsb3QoX2N0eC4kc2xvdHMsIFwiYmVmb3JlbGlzdFwiLCB7IG9wdGlvbnM6IF9jdHguZm8gfSksXG4gICAgICBjcmVhdGVFbGVtZW50Vk5vZGUoXCJ1bFwiLCB7XG4gICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC5vcHRpb25zKSxcbiAgICAgICAgaWQ6IF9jdHguYXJpYU93bnMsXG4gICAgICAgIHJvbGU6IFwibGlzdGJveFwiXG4gICAgICB9LCBbXG4gICAgICAgICgkcHJvcHMuZ3JvdXBzKVxuICAgICAgICAgID8gKG9wZW5CbG9jayh0cnVlKSwgY3JlYXRlRWxlbWVudEJsb2NrKEZyYWdtZW50LCB7IGtleTogMCB9LCByZW5kZXJMaXN0KF9jdHguZmcsIChncm91cCwgaSwga2V5KSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiAob3BlbkJsb2NrKCksIGNyZWF0ZUVsZW1lbnRCbG9jayhcImxpXCIsIHtcbiAgICAgICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3QuZ3JvdXApLFxuICAgICAgICAgICAgICAgIGtleToga2V5XG4gICAgICAgICAgICAgIH0sIFtcbiAgICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIiwge1xuICAgICAgICAgICAgICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKF9jdHguY2xhc3NMaXN0Lmdyb3VwTGFiZWwoZ3JvdXApKSxcbiAgICAgICAgICAgICAgICAgIFwiZGF0YS1wb2ludGVkXCI6IF9jdHguaXNQb2ludGVkKGdyb3VwKSxcbiAgICAgICAgICAgICAgICAgIG9uTW91c2VlbnRlcjogJGV2ZW50ID0+IChfY3R4LnNldFBvaW50ZXIoZ3JvdXApKSxcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6ICRldmVudCA9PiAoX2N0eC5oYW5kbGVHcm91cENsaWNrKGdyb3VwKSksXG4gICAgICAgICAgICAgICAgICByb2xlOiBcIm5vbmVcIlxuICAgICAgICAgICAgICAgIH0sIFtcbiAgICAgICAgICAgICAgICAgIHJlbmRlclNsb3QoX2N0eC4kc2xvdHMsIFwiZ3JvdXBsYWJlbFwiLCB7XG4gICAgICAgICAgICAgICAgICAgIGdyb3VwOiBncm91cCxcbiAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZDogX2N0eC5pc1NlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICBpc1BvaW50ZWQ6IF9jdHguaXNQb2ludGVkXG4gICAgICAgICAgICAgICAgICB9LCAoKSA9PiBbXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnRWTm9kZShcInNwYW5cIiwge1xuICAgICAgICAgICAgICAgICAgICAgIGlubmVySFRNTDogZ3JvdXBbJHByb3BzLmdyb3VwTGFiZWxdXG4gICAgICAgICAgICAgICAgICAgIH0sIG51bGwsIDggLyogUFJPUFMgKi8sIF9ob2lzdGVkXzkpXG4gICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgIF0sIDQyIC8qIENMQVNTLCBQUk9QUywgSFlEUkFURV9FVkVOVFMgKi8sIF9ob2lzdGVkXzgpLFxuICAgICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnRWTm9kZShcInVsXCIsIHtcbiAgICAgICAgICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC5ncm91cE9wdGlvbnMpLFxuICAgICAgICAgICAgICAgICAgXCJhcmlhLWxhYmVsXCI6IF9jdHguYXJpYUdyb3VwTGFiZWwoZ3JvdXApLFxuICAgICAgICAgICAgICAgICAgcm9sZTogXCJncm91cFwiXG4gICAgICAgICAgICAgICAgfSwgW1xuICAgICAgICAgICAgICAgICAgKG9wZW5CbG9jayh0cnVlKSwgY3JlYXRlRWxlbWVudEJsb2NrKEZyYWdtZW50LCBudWxsLCByZW5kZXJMaXN0KGdyb3VwLl9fVklTSUJMRV9fLCAob3B0aW9uLCBpLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChvcGVuQmxvY2soKSwgY3JlYXRlRWxlbWVudEJsb2NrKFwibGlcIiwge1xuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC5vcHRpb24ob3B0aW9uLCBncm91cCkpLFxuICAgICAgICAgICAgICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgICAgICAgICAgICAgIFwiZGF0YS1wb2ludGVkXCI6IF9jdHguaXNQb2ludGVkKG9wdGlvbiksXG4gICAgICAgICAgICAgICAgICAgICAgXCJkYXRhLXNlbGVjdGVkXCI6IF9jdHguaXNTZWxlY3RlZChvcHRpb24pIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICBpZDogX2N0eC5hcmlhT3B0aW9uSWQob3B0aW9uKSxcbiAgICAgICAgICAgICAgICAgICAgICBcImFyaWEtbGFiZWxcIjogX2N0eC5hcmlhT3B0aW9uTGFiZWwob3B0aW9uKSxcbiAgICAgICAgICAgICAgICAgICAgICBvbk1vdXNlZW50ZXI6ICRldmVudCA9PiAoX2N0eC5zZXRQb2ludGVyKG9wdGlvbikpLFxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6ICRldmVudCA9PiAoX2N0eC5oYW5kbGVPcHRpb25DbGljayhvcHRpb24pKSxcbiAgICAgICAgICAgICAgICAgICAgICByb2xlOiBcIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIH0sIFtcbiAgICAgICAgICAgICAgICAgICAgICByZW5kZXJTbG90KF9jdHguJHNsb3RzLCBcIm9wdGlvblwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb246IG9wdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWQ6IF9jdHguaXNTZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzUG9pbnRlZDogX2N0eC5pc1BvaW50ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2g6IF9jdHguc2VhcmNoXG4gICAgICAgICAgICAgICAgICAgICAgfSwgKCkgPT4gW1xuICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudFZOb2RlKFwic3BhblwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlubmVySFRNTDogb3B0aW9uWyRwcm9wcy5sYWJlbF1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIG51bGwsIDggLyogUFJPUFMgKi8sIF9ob2lzdGVkXzEyKVxuICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgIF0sIDQyIC8qIENMQVNTLCBQUk9QUywgSFlEUkFURV9FVkVOVFMgKi8sIF9ob2lzdGVkXzExKSlcbiAgICAgICAgICAgICAgICAgIH0pLCAxMjggLyogS0VZRURfRlJBR01FTlQgKi8pKVxuICAgICAgICAgICAgICAgIF0sIDEwIC8qIENMQVNTLCBQUk9QUyAqLywgX2hvaXN0ZWRfMTApXG4gICAgICAgICAgICAgIF0sIDIgLyogQ0xBU1MgKi8pKVxuICAgICAgICAgICAgfSksIDEyOCAvKiBLRVlFRF9GUkFHTUVOVCAqLykpXG4gICAgICAgICAgOiAob3BlbkJsb2NrKHRydWUpLCBjcmVhdGVFbGVtZW50QmxvY2soRnJhZ21lbnQsIHsga2V5OiAxIH0sIHJlbmRlckxpc3QoX2N0eC5mbywgKG9wdGlvbiwgaSwga2V5KSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiAob3BlbkJsb2NrKCksIGNyZWF0ZUVsZW1lbnRCbG9jayhcImxpXCIsIHtcbiAgICAgICAgICAgICAgICBpZDogX2N0eC5hcmlhT3B0aW9uSWQob3B0aW9uKSxcbiAgICAgICAgICAgICAgICBcImFyaWEtbGFiZWxcIjogX2N0eC5hcmlhT3B0aW9uTGFiZWwob3B0aW9uKSxcbiAgICAgICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3Qub3B0aW9uKG9wdGlvbikpLFxuICAgICAgICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgICAgICAgIFwiZGF0YS1wb2ludGVkXCI6IF9jdHguaXNQb2ludGVkKG9wdGlvbiksXG4gICAgICAgICAgICAgICAgXCJkYXRhLXNlbGVjdGVkXCI6IF9jdHguaXNTZWxlY3RlZChvcHRpb24pIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBvbk1vdXNlZW50ZXI6ICRldmVudCA9PiAoX2N0eC5zZXRQb2ludGVyKG9wdGlvbikpLFxuICAgICAgICAgICAgICAgIG9uQ2xpY2s6ICRldmVudCA9PiAoX2N0eC5oYW5kbGVPcHRpb25DbGljayhvcHRpb24pKSxcbiAgICAgICAgICAgICAgICByb2xlOiBcIm9wdGlvblwiXG4gICAgICAgICAgICAgIH0sIFtcbiAgICAgICAgICAgICAgICByZW5kZXJTbG90KF9jdHguJHNsb3RzLCBcIm9wdGlvblwiLCB7XG4gICAgICAgICAgICAgICAgICBvcHRpb246IG9wdGlvbixcbiAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWQ6IF9jdHguaXNTZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgIGlzUG9pbnRlZDogX2N0eC5pc1BvaW50ZWQsXG4gICAgICAgICAgICAgICAgICBzZWFyY2g6IF9jdHguc2VhcmNoXG4gICAgICAgICAgICAgICAgfSwgKCkgPT4gW1xuICAgICAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudFZOb2RlKFwic3BhblwiLCB7XG4gICAgICAgICAgICAgICAgICAgIGlubmVySFRNTDogb3B0aW9uWyRwcm9wcy5sYWJlbF1cbiAgICAgICAgICAgICAgICAgIH0sIG51bGwsIDggLyogUFJPUFMgKi8sIF9ob2lzdGVkXzE0KVxuICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgIF0sIDQyIC8qIENMQVNTLCBQUk9QUywgSFlEUkFURV9FVkVOVFMgKi8sIF9ob2lzdGVkXzEzKSlcbiAgICAgICAgICAgIH0pLCAxMjggLyogS0VZRURfRlJBR01FTlQgKi8pKVxuICAgICAgXSwgMTAgLyogQ0xBU1MsIFBST1BTICovLCBfaG9pc3RlZF83KSxcbiAgICAgIChfY3R4Lm5vT3B0aW9ucylcbiAgICAgICAgPyByZW5kZXJTbG90KF9jdHguJHNsb3RzLCBcIm5vb3B0aW9uc1wiLCB7IGtleTogMCB9LCAoKSA9PiBbXG4gICAgICAgICAgICBjcmVhdGVFbGVtZW50Vk5vZGUoXCJkaXZcIiwge1xuICAgICAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3Qubm9PcHRpb25zKSxcbiAgICAgICAgICAgICAgaW5uZXJIVE1MOiAkcHJvcHMubm9PcHRpb25zVGV4dFxuICAgICAgICAgICAgfSwgbnVsbCwgMTAgLyogQ0xBU1MsIFBST1BTICovLCBfaG9pc3RlZF8xNSlcbiAgICAgICAgICBdKVxuICAgICAgICA6IGNyZWF0ZUNvbW1lbnRWTm9kZShcInYtaWZcIiwgdHJ1ZSksXG4gICAgICAoX2N0eC5ub1Jlc3VsdHMpXG4gICAgICAgID8gcmVuZGVyU2xvdChfY3R4LiRzbG90cywgXCJub3Jlc3VsdHNcIiwgeyBrZXk6IDEgfSwgKCkgPT4gW1xuICAgICAgICAgICAgY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIsIHtcbiAgICAgICAgICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKF9jdHguY2xhc3NMaXN0Lm5vUmVzdWx0cyksXG4gICAgICAgICAgICAgIGlubmVySFRNTDogJHByb3BzLm5vUmVzdWx0c1RleHRcbiAgICAgICAgICAgIH0sIG51bGwsIDEwIC8qIENMQVNTLCBQUk9QUyAqLywgX2hvaXN0ZWRfMTYpXG4gICAgICAgICAgXSlcbiAgICAgICAgOiBjcmVhdGVDb21tZW50Vk5vZGUoXCJ2LWlmXCIsIHRydWUpLFxuICAgICAgKCRwcm9wcy5pbmZpbml0ZSAmJiBfY3R4Lmhhc01vcmUpXG4gICAgICAgID8gKG9wZW5CbG9jaygpLCBjcmVhdGVFbGVtZW50QmxvY2soXCJkaXZcIiwge1xuICAgICAgICAgICAga2V5OiAyLFxuICAgICAgICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKF9jdHguY2xhc3NMaXN0LmluaWZpbml0ZSksXG4gICAgICAgICAgICByZWY6IFwiaW5maW5pdGVMb2FkZXJcIlxuICAgICAgICAgIH0sIFtcbiAgICAgICAgICAgIHJlbmRlclNsb3QoX2N0eC4kc2xvdHMsIFwiaW5maW5pdGVcIiwge30sICgpID0+IFtcbiAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudFZOb2RlKFwic3BhblwiLCB7XG4gICAgICAgICAgICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKF9jdHguY2xhc3NMaXN0LmluaWZpbml0ZVNwaW5uZXIpXG4gICAgICAgICAgICAgIH0sIG51bGwsIDIgLyogQ0xBU1MgKi8pXG4gICAgICAgICAgICBdKVxuICAgICAgICAgIF0sIDIgLyogQ0xBU1MgKi8pKVxuICAgICAgICA6IGNyZWF0ZUNvbW1lbnRWTm9kZShcInYtaWZcIiwgdHJ1ZSksXG4gICAgICByZW5kZXJTbG90KF9jdHguJHNsb3RzLCBcImFmdGVybGlzdFwiLCB7IG9wdGlvbnM6IF9jdHguZm8gfSlcbiAgICBdLCAyIC8qIENMQVNTICovKSxcbiAgICBjcmVhdGVDb21tZW50Vk5vZGUoXCIgSGFja3kgaW5wdXQgZWxlbWVudCB0byBzaG93IEhUTUw1IHJlcXVpcmVkIHdhcm5pbmcgXCIpLFxuICAgICgkcHJvcHMucmVxdWlyZWQpXG4gICAgICA/IChvcGVuQmxvY2soKSwgY3JlYXRlRWxlbWVudEJsb2NrKFwiaW5wdXRcIiwge1xuICAgICAgICAgIGtleTogOCxcbiAgICAgICAgICBjbGFzczogbm9ybWFsaXplQ2xhc3MoX2N0eC5jbGFzc0xpc3QuZmFrZUlucHV0KSxcbiAgICAgICAgICB0YWJpbmRleDogXCItMVwiLFxuICAgICAgICAgIHZhbHVlOiBfY3R4LnRleHRWYWx1ZSxcbiAgICAgICAgICByZXF1aXJlZDogXCJcIlxuICAgICAgICB9LCBudWxsLCAxMCAvKiBDTEFTUywgUFJPUFMgKi8sIF9ob2lzdGVkXzE3KSlcbiAgICAgIDogY3JlYXRlQ29tbWVudFZOb2RlKFwidi1pZlwiLCB0cnVlKSxcbiAgICBjcmVhdGVDb21tZW50Vk5vZGUoXCIgTmF0aXZlIGlucHV0IHN1cHBvcnQgXCIpLFxuICAgICgkcHJvcHMubmF0aXZlU3VwcG9ydClcbiAgICAgID8gKG9wZW5CbG9jaygpLCBjcmVhdGVFbGVtZW50QmxvY2soRnJhZ21lbnQsIHsga2V5OiA5IH0sIFtcbiAgICAgICAgICAoJHByb3BzLm1vZGUgPT0gJ3NpbmdsZScpXG4gICAgICAgICAgICA/IChvcGVuQmxvY2soKSwgY3JlYXRlRWxlbWVudEJsb2NrKFwiaW5wdXRcIiwge1xuICAgICAgICAgICAgICAgIGtleTogMCxcbiAgICAgICAgICAgICAgICB0eXBlOiBcImhpZGRlblwiLFxuICAgICAgICAgICAgICAgIG5hbWU6ICRwcm9wcy5uYW1lLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBfY3R4LnBsYWluVmFsdWUgIT09IHVuZGVmaW5lZCA/IF9jdHgucGxhaW5WYWx1ZSA6ICcnXG4gICAgICAgICAgICAgIH0sIG51bGwsIDggLyogUFJPUFMgKi8sIF9ob2lzdGVkXzE4KSlcbiAgICAgICAgICAgIDogKG9wZW5CbG9jayh0cnVlKSwgY3JlYXRlRWxlbWVudEJsb2NrKEZyYWdtZW50LCB7IGtleTogMSB9LCByZW5kZXJMaXN0KF9jdHgucGxhaW5WYWx1ZSwgKHYsIGkpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKG9wZW5CbG9jaygpLCBjcmVhdGVFbGVtZW50QmxvY2soXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBcImhpZGRlblwiLFxuICAgICAgICAgICAgICAgICAgbmFtZTogYCR7JHByb3BzLm5hbWV9W11gLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IHYsXG4gICAgICAgICAgICAgICAgICBrZXk6IGlcbiAgICAgICAgICAgICAgICB9LCBudWxsLCA4IC8qIFBST1BTICovLCBfaG9pc3RlZF8xOSkpXG4gICAgICAgICAgICAgIH0pLCAxMjggLyogS0VZRURfRlJBR01FTlQgKi8pKVxuICAgICAgICBdLCA2NCAvKiBTVEFCTEVfRlJBR01FTlQgKi8pKVxuICAgICAgOiBjcmVhdGVDb21tZW50Vk5vZGUoXCJ2LWlmXCIsIHRydWUpLFxuICAgIGNyZWF0ZUNvbW1lbnRWTm9kZShcIiBDcmVhdGUgaGVpZ2h0IGZvciBlbXB0eSBpbnB1dCBcIiksXG4gICAgY3JlYXRlRWxlbWVudFZOb2RlKFwiZGl2XCIsIHtcbiAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhfY3R4LmNsYXNzTGlzdC5zcGFjZXIpXG4gICAgfSwgbnVsbCwgMiAvKiBDTEFTUyAqLylcbiAgXSwgNDIgLyogQ0xBU1MsIFBST1BTLCBIWURSQVRFX0VWRU5UUyAqLywgX2hvaXN0ZWRfMSkpXG59XG5cbnNjcmlwdC5yZW5kZXIgPSByZW5kZXI7XG5zY3JpcHQuX19maWxlID0gXCJzcmMvTXVsdGlzZWxlY3QudnVlXCI7XG5cbmV4cG9ydCB7IHNjcmlwdCBhcyBkZWZhdWx0IH07XG4iLCIvKiFcbiAqIEFwZXhDaGFydHMgdjMuNDAuMFxuICogKGMpIDIwMTgtMjAyMyBBcGV4Q2hhcnRzXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXG4gKi9cblwidXNlIHN0cmljdFwiO2Z1bmN0aW9uIHQodCxlKXt2YXIgaT1PYmplY3Qua2V5cyh0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpO2UmJihhPWEuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGUpLmVudW1lcmFibGV9KSkpLGkucHVzaC5hcHBseShpLGEpfXJldHVybiBpfWZ1bmN0aW9uIGUoZSl7Zm9yKHZhciBpPTE7aTxhcmd1bWVudHMubGVuZ3RoO2krKyl7dmFyIGE9bnVsbCE9YXJndW1lbnRzW2ldP2FyZ3VtZW50c1tpXTp7fTtpJTI/dChPYmplY3QoYSksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe28oZSx0LGFbdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoYSkpOnQoT2JqZWN0KGEpKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYSx0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gaSh0KXtyZXR1cm4gaT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiB0fSxpKHQpfWZ1bmN0aW9uIGEodCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfWZ1bmN0aW9uIHModCxlKXtmb3IodmFyIGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIGE9ZVtpXTthLmVudW1lcmFibGU9YS5lbnVtZXJhYmxlfHwhMSxhLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiBhJiYoYS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsYS5rZXksYSl9fWZ1bmN0aW9uIHIodCxlLGkpe3JldHVybiBlJiZzKHQucHJvdG90eXBlLGUpLGkmJnModCxpKSx0fWZ1bmN0aW9uIG8odCxlLGkpe3JldHVybiBlIGluIHQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6aSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnRbZV09aSx0fWZ1bmN0aW9uIG4odCxlKXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlJiZudWxsIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7dC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLGUmJmgodCxlKX1mdW5jdGlvbiBsKHQpe3JldHVybiBsPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24odCl7cmV0dXJuIHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCl9LGwodCl9ZnVuY3Rpb24gaCh0LGUpe3JldHVybiBoPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5fX3Byb3RvX189ZSx0fSxoKHQsZSl9ZnVuY3Rpb24gYyh0LGUpe2lmKGUmJihcIm9iamVjdFwiPT10eXBlb2YgZXx8XCJmdW5jdGlvblwiPT10eXBlb2YgZSkpcmV0dXJuIGU7aWYodm9pZCAwIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWRcIik7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKHZvaWQgMD09PXQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO3JldHVybiB0fSh0KX1mdW5jdGlvbiBkKHQpe3ZhciBlPWZ1bmN0aW9uKCl7aWYoXCJ1bmRlZmluZWRcIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sKGZ1bmN0aW9uKCl7fSkpKSwhMH1jYXRjaCh0KXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGksYT1sKHQpO2lmKGUpe3ZhciBzPWwodGhpcykuY29uc3RydWN0b3I7aT1SZWZsZWN0LmNvbnN0cnVjdChhLGFyZ3VtZW50cyxzKX1lbHNlIGk9YS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGModGhpcyxpKX19ZnVuY3Rpb24gZyh0LGUpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB0fSh0KXx8ZnVuY3Rpb24odCxlKXt2YXIgaT1udWxsPT10P251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmdFtTeW1ib2wuaXRlcmF0b3JdfHx0W1wiQEBpdGVyYXRvclwiXTtpZihudWxsPT1pKXJldHVybjt2YXIgYSxzLHI9W10sbz0hMCxuPSExO3RyeXtmb3IoaT1pLmNhbGwodCk7IShvPShhPWkubmV4dCgpKS5kb25lKSYmKHIucHVzaChhLnZhbHVlKSwhZXx8ci5sZW5ndGghPT1lKTtvPSEwKTt9Y2F0Y2godCl7bj0hMCxzPXR9ZmluYWxseXt0cnl7b3x8bnVsbD09aS5yZXR1cm58fGkucmV0dXJuKCl9ZmluYWxseXtpZihuKXRocm93IHN9fXJldHVybiByfSh0LGUpfHxwKHQsZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiB1KHQpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiBmKHQpfSh0KXx8ZnVuY3Rpb24odCl7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9dFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT10W1wiQEBpdGVyYXRvclwiXSlyZXR1cm4gQXJyYXkuZnJvbSh0KX0odCl8fHAodCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gcCh0LGUpe2lmKHQpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0KXJldHVybiBmKHQsZSk7dmFyIGk9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpLnNsaWNlKDgsLTEpO3JldHVyblwiT2JqZWN0XCI9PT1pJiZ0LmNvbnN0cnVjdG9yJiYoaT10LmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1pfHxcIlNldFwiPT09aT9BcnJheS5mcm9tKHQpOlwiQXJndW1lbnRzXCI9PT1pfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChpKT9mKHQsZSk6dm9pZCAwfX1mdW5jdGlvbiBmKHQsZSl7KG51bGw9PWV8fGU+dC5sZW5ndGgpJiYoZT10Lmxlbmd0aCk7Zm9yKHZhciBpPTAsYT1uZXcgQXJyYXkoZSk7aTxlO2krKylhW2ldPXRbaV07cmV0dXJuIGF9dmFyIHg9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7YSh0aGlzLHQpfXJldHVybiByKHQsW3trZXk6XCJzaGFkZVJHQkNvbG9yXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1lLnNwbGl0KFwiLFwiKSxhPXQ8MD8wOjI1NSxzPXQ8MD8tMSp0OnQscj1wYXJzZUludChpWzBdLnNsaWNlKDQpLDEwKSxvPXBhcnNlSW50KGlbMV0sMTApLG49cGFyc2VJbnQoaVsyXSwxMCk7cmV0dXJuXCJyZ2IoXCIrKE1hdGgucm91bmQoKGEtcikqcykrcikrXCIsXCIrKE1hdGgucm91bmQoKGEtbykqcykrbykrXCIsXCIrKE1hdGgucm91bmQoKGEtbikqcykrbikrXCIpXCJ9fSx7a2V5Olwic2hhZGVIZXhDb2xvclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9cGFyc2VJbnQoZS5zbGljZSgxKSwxNiksYT10PDA/MDoyNTUscz10PDA/LTEqdDp0LHI9aT4+MTYsbz1pPj44JjI1NSxuPTI1NSZpO3JldHVyblwiI1wiKygxNjc3NzIxNis2NTUzNiooTWF0aC5yb3VuZCgoYS1yKSpzKStyKSsyNTYqKE1hdGgucm91bmQoKGEtbykqcykrbykrKE1hdGgucm91bmQoKGEtbikqcykrbikpLnRvU3RyaW5nKDE2KS5zbGljZSgxKX19LHtrZXk6XCJzaGFkZUNvbG9yXCIsdmFsdWU6ZnVuY3Rpb24oZSxpKXtyZXR1cm4gdC5pc0NvbG9ySGV4KGkpP3RoaXMuc2hhZGVIZXhDb2xvcihlLGkpOnRoaXMuc2hhZGVSR0JDb2xvcihlLGkpfX1dLFt7a2V5OlwiYmluZFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkoZSxhcmd1bWVudHMpfX19LHtrZXk6XCJpc09iamVjdFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0JiZcIm9iamVjdFwiPT09aSh0KSYmIUFycmF5LmlzQXJyYXkodCkmJm51bGwhPXR9fSx7a2V5OlwiaXNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSk9PT1cIltvYmplY3QgXCIrdCtcIl1cIn19LHtrZXk6XCJsaXN0VG9BcnJheVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGk9W107Zm9yKGU9MDtlPHQubGVuZ3RoO2UrKylpW2VdPXRbZV07cmV0dXJuIGl9fSx7a2V5OlwiZXh0ZW5kXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzO1wiZnVuY3Rpb25cIiE9dHlwZW9mIE9iamVjdC5hc3NpZ24mJihPYmplY3QuYXNzaWduPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjb252ZXJ0IHVuZGVmaW5lZCBvciBudWxsIHRvIG9iamVjdFwiKTtmb3IodmFyIGU9T2JqZWN0KHQpLGk9MTtpPGFyZ3VtZW50cy5sZW5ndGg7aSsrKXt2YXIgYT1hcmd1bWVudHNbaV07aWYobnVsbCE9YSlmb3IodmFyIHMgaW4gYSlhLmhhc093blByb3BlcnR5KHMpJiYoZVtzXT1hW3NdKX1yZXR1cm4gZX0pO3ZhciBhPU9iamVjdC5hc3NpZ24oe30sdCk7cmV0dXJuIHRoaXMuaXNPYmplY3QodCkmJnRoaXMuaXNPYmplY3QoZSkmJk9iamVjdC5rZXlzKGUpLmZvckVhY2goKGZ1bmN0aW9uKHMpe2kuaXNPYmplY3QoZVtzXSkmJnMgaW4gdD9hW3NdPWkuZXh0ZW5kKHRbc10sZVtzXSk6T2JqZWN0LmFzc2lnbihhLG8oe30scyxlW3NdKSl9KSksYX19LHtrZXk6XCJleHRlbmRBcnJheVwiLHZhbHVlOmZ1bmN0aW9uKGUsaSl7dmFyIGE9W107cmV0dXJuIGUubWFwKChmdW5jdGlvbihlKXthLnB1c2godC5leHRlbmQoaSxlKSl9KSksZT1hfX0se2tleTpcIm1vbnRoTW9kXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQlMTJ9fSx7a2V5OlwiY2xvbmVcIix2YWx1ZTpmdW5jdGlvbihlKXtpZih0LmlzKFwiQXJyYXlcIixlKSl7Zm9yKHZhciBhPVtdLHM9MDtzPGUubGVuZ3RoO3MrKylhW3NdPXRoaXMuY2xvbmUoZVtzXSk7cmV0dXJuIGF9aWYodC5pcyhcIk51bGxcIixlKSlyZXR1cm4gbnVsbDtpZih0LmlzKFwiRGF0ZVwiLGUpKXJldHVybiBlO2lmKFwib2JqZWN0XCI9PT1pKGUpKXt2YXIgcj17fTtmb3IodmFyIG8gaW4gZSllLmhhc093blByb3BlcnR5KG8pJiYocltvXT10aGlzLmNsb25lKGVbb10pKTtyZXR1cm4gcn1yZXR1cm4gZX19LHtrZXk6XCJsb2cxMFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLmxvZyh0KS9NYXRoLkxOMTB9fSx7a2V5Olwicm91bmRUb0Jhc2UxMFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnBvdygxMCxNYXRoLmZsb29yKE1hdGgubG9nMTAodCkpKX19LHtrZXk6XCJyb3VuZFRvQmFzZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgucG93KGUsTWF0aC5mbG9vcihNYXRoLmxvZyh0KS9NYXRoLmxvZyhlKSkpfX0se2tleTpcInBhcnNlTnVtYmVyXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PT10P3Q6cGFyc2VGbG9hdCh0KX19LHtrZXk6XCJyYW5kb21JZFwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuKE1hdGgucmFuZG9tKCkrMSkudG9TdHJpbmcoMzYpLnN1YnN0cmluZyg0KX19LHtrZXk6XCJub0V4cG9uZW50c1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPVN0cmluZyh0KS5zcGxpdCgvW2VFXS8pO2lmKDE9PT1lLmxlbmd0aClyZXR1cm4gZVswXTt2YXIgaT1cIlwiLGE9dDwwP1wiLVwiOlwiXCIscz1lWzBdLnJlcGxhY2UoXCIuXCIsXCJcIikscj1OdW1iZXIoZVsxXSkrMTtpZihyPDApe2ZvcihpPWErXCIwLlwiO3IrKzspaSs9XCIwXCI7cmV0dXJuIGkrcy5yZXBsYWNlKC9eLS8sXCJcIil9Zm9yKHItPXMubGVuZ3RoO3ItLTspaSs9XCIwXCI7cmV0dXJuIHMraX19LHtrZXk6XCJnZXREaW1lbnNpb25zXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9Z2V0Q29tcHV0ZWRTdHlsZSh0LG51bGwpLGk9dC5jbGllbnRIZWlnaHQsYT10LmNsaWVudFdpZHRoO3JldHVybiBpLT1wYXJzZUZsb2F0KGUucGFkZGluZ1RvcCkrcGFyc2VGbG9hdChlLnBhZGRpbmdCb3R0b20pLFthLT1wYXJzZUZsb2F0KGUucGFkZGluZ0xlZnQpK3BhcnNlRmxvYXQoZS5wYWRkaW5nUmlnaHQpLGldfX0se2tleTpcImdldEJvdW5kaW5nQ2xpZW50UmVjdFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJue3RvcDplLnRvcCxyaWdodDplLnJpZ2h0LGJvdHRvbTplLmJvdHRvbSxsZWZ0OmUubGVmdCx3aWR0aDp0LmNsaWVudFdpZHRoLGhlaWdodDp0LmNsaWVudEhlaWdodCx4OmUubGVmdCx5OmUudG9wfX19LHtrZXk6XCJnZXRMYXJnZXN0U3RyaW5nRnJvbUFyclwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKSYmKGU9ZS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQubGVuZ3RoPmUubGVuZ3RoP3Q6ZX0pKSksdC5sZW5ndGg+ZS5sZW5ndGg/dDplfSksMCl9fSx7a2V5OlwiaGV4VG9SZ2JhXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06XCIjOTk5OTk5XCIsZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06LjY7XCIjXCIhPT10LnN1YnN0cmluZygwLDEpJiYodD1cIiM5OTk5OTlcIik7dmFyIGk9dC5yZXBsYWNlKFwiI1wiLFwiXCIpO2k9aS5tYXRjaChuZXcgUmVnRXhwKFwiKC57XCIraS5sZW5ndGgvMytcIn0pXCIsXCJnXCIpKTtmb3IodmFyIGE9MDthPGkubGVuZ3RoO2ErKylpW2FdPXBhcnNlSW50KDE9PT1pW2FdLmxlbmd0aD9pW2FdK2lbYV06aVthXSwxNik7cmV0dXJuIHZvaWQgMCE9PWUmJmkucHVzaChlKSxcInJnYmEoXCIraS5qb2luKFwiLFwiKStcIilcIn19LHtrZXk6XCJnZXRPcGFjaXR5RnJvbVJHQkFcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gcGFyc2VGbG9hdCh0LnJlcGxhY2UoL14uKiwoLispXFwpLyxcIiQxXCIpKX19LHtrZXk6XCJyZ2IyaGV4XCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuKHQ9dC5tYXRjaCgvXnJnYmE/W1xccytdP1xcKFtcXHMrXT8oXFxkKylbXFxzK10/LFtcXHMrXT8oXFxkKylbXFxzK10/LFtcXHMrXT8oXFxkKylbXFxzK10/L2kpKSYmND09PXQubGVuZ3RoP1wiI1wiKyhcIjBcIitwYXJzZUludCh0WzFdLDEwKS50b1N0cmluZygxNikpLnNsaWNlKC0yKSsoXCIwXCIrcGFyc2VJbnQodFsyXSwxMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtMikrKFwiMFwiK3BhcnNlSW50KHRbM10sMTApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpOlwiXCJ9fSx7a2V5OlwiaXNDb2xvckhleFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybi8oXiNbMC05QS1GXXs2fSQpfCheI1swLTlBLUZdezN9JCl8KF4jWzAtOUEtRl17OH0kKS9pLnRlc3QodCl9fSx7a2V5OlwiZ2V0UG9seWdvblBvc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpPVtdLGE9MipNYXRoLlBJL2Uscz0wO3M8ZTtzKyspe3ZhciByPXt9O3IueD10Kk1hdGguc2luKHMqYSksci55PS10Kk1hdGguY29zKHMqYSksaS5wdXNoKHIpfXJldHVybiBpfX0se2tleTpcInBvbGFyVG9DYXJ0ZXNpYW5cIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt2YXIgcz0oYS05MCkqTWF0aC5QSS8xODA7cmV0dXJue3g6dCtpKk1hdGguY29zKHMpLHk6ZStpKk1hdGguc2luKHMpfX19LHtrZXk6XCJlc2NhcGVTdHJpbmdcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06XCJ4XCIsaT10LnRvU3RyaW5nKCkuc2xpY2UoKTtyZXR1cm4gaT1pLnJlcGxhY2UoL1tgIH4hQCMkJV4mKigpfCtcXD0/OzonXCIsLjw+e31bXFxdXFxcXC9dL2dpLGUpfX0se2tleTpcIm5lZ1RvWmVyb1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0PDA/MDp0fX0se2tleTpcIm1vdmVJbmRleEluQXJyYXlcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7aWYoaT49dC5sZW5ndGgpZm9yKHZhciBhPWktdC5sZW5ndGgrMTthLS07KXQucHVzaCh2b2lkIDApO3JldHVybiB0LnNwbGljZShpLDAsdC5zcGxpY2UoZSwxKVswXSksdH19LHtrZXk6XCJleHRyYWN0TnVtYmVyXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHBhcnNlRmxvYXQodC5yZXBsYWNlKC9bXlxcZC5dKi9nLFwiXCIpKX19LHtrZXk6XCJmaW5kQW5jZXN0b3JcIix2YWx1ZTpmdW5jdGlvbih0LGUpe2Zvcig7KHQ9dC5wYXJlbnRFbGVtZW50KSYmIXQuY2xhc3NMaXN0LmNvbnRhaW5zKGUpOyk7cmV0dXJuIHR9fSx7a2V5Olwic2V0RUxzdHlsZXNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe2Zvcih2YXIgaSBpbiBlKWUuaGFzT3duUHJvcGVydHkoaSkmJih0LnN0eWxlLmtleT1lW2ldKX19LHtrZXk6XCJpc051bWJlclwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiFpc05hTih0KSYmcGFyc2VGbG9hdChOdW1iZXIodCkpPT09dCYmIWlzTmFOKHBhcnNlSW50KHQsMTApKX19LHtrZXk6XCJpc0Zsb2F0XCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIE51bWJlcih0KT09PXQmJnQlMSE9MH19LHtrZXk6XCJpc1NhZmFyaVwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuL14oKD8hY2hyb21lfGFuZHJvaWQpLikqc2FmYXJpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KX19LHtrZXk6XCJpc0ZpcmVmb3hcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcImZpcmVmb3hcIik+LTF9fSx7a2V5OlwiaXNJRTExXCIsdmFsdWU6ZnVuY3Rpb24oKXtpZigtMSE9PXdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoXCJNU0lFXCIpfHx3aW5kb3cubmF2aWdhdG9yLmFwcFZlcnNpb24uaW5kZXhPZihcIlRyaWRlbnQvXCIpPi0xKXJldHVybiEwfX0se2tleTpcImlzSUVcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LGU9dC5pbmRleE9mKFwiTVNJRSBcIik7aWYoZT4wKXJldHVybiBwYXJzZUludCh0LnN1YnN0cmluZyhlKzUsdC5pbmRleE9mKFwiLlwiLGUpKSwxMCk7aWYodC5pbmRleE9mKFwiVHJpZGVudC9cIik+MCl7dmFyIGk9dC5pbmRleE9mKFwicnY6XCIpO3JldHVybiBwYXJzZUludCh0LnN1YnN0cmluZyhpKzMsdC5pbmRleE9mKFwiLlwiLGkpKSwxMCl9dmFyIGE9dC5pbmRleE9mKFwiRWRnZS9cIik7cmV0dXJuIGE+MCYmcGFyc2VJbnQodC5zdWJzdHJpbmcoYSs1LHQuaW5kZXhPZihcIi5cIixhKSksMTApfX1dKSx0fSgpLGI9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5zZXRFYXNpbmdGdW5jdGlvbnMoKX1yZXR1cm4gcih0LFt7a2V5Olwic2V0RWFzaW5nRnVuY3Rpb25zXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdDtpZighdGhpcy53Lmdsb2JhbHMuZWFzaW5nKXtzd2l0Y2godGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmVhc2luZyl7Y2FzZVwibGluZWFyXCI6dD1cIi1cIjticmVhaztjYXNlXCJlYXNlaW5cIjp0PVwiPFwiO2JyZWFrO2Nhc2VcImVhc2VvdXRcIjp0PVwiPlwiO2JyZWFrO2Nhc2VcImVhc2Vpbm91dFwiOmRlZmF1bHQ6dD1cIjw+XCI7YnJlYWs7Y2FzZVwic3dpbmdcIjp0PWZ1bmN0aW9uKHQpe3ZhciBlPTEuNzAxNTg7cmV0dXJuKHQtPTEpKnQqKChlKzEpKnQrZSkrMX07YnJlYWs7Y2FzZVwiYm91bmNlXCI6dD1mdW5jdGlvbih0KXtyZXR1cm4gdDwxLzIuNzU/Ny41NjI1KnQqdDp0PDIvMi43NT83LjU2MjUqKHQtPTEuNS8yLjc1KSp0Ky43NTp0PDIuNS8yLjc1PzcuNTYyNSoodC09Mi4yNS8yLjc1KSp0Ky45Mzc1OjcuNTYyNSoodC09Mi42MjUvMi43NSkqdCsuOTg0Mzc1fTticmVhaztjYXNlXCJlbGFzdGljXCI6dD1mdW5jdGlvbih0KXtyZXR1cm4gdD09PSEhdD90Ok1hdGgucG93KDIsLTEwKnQpKk1hdGguc2luKCh0LS4wNzUpKigyKk1hdGguUEkpLy4zKSsxfX10aGlzLncuZ2xvYmFscy5lYXNpbmc9dH19fSx7a2V5OlwiYW5pbWF0ZUxpbmVcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt0LmF0dHIoZSkuYW5pbWF0ZShhKS5hdHRyKGkpfX0se2tleTpcImFuaW1hdGVNYXJrZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMscil7ZXx8KGU9MCksdC5hdHRyKHtyOmUsd2lkdGg6ZSxoZWlnaHQ6ZX0pLmFuaW1hdGUoYSxzKS5hdHRyKHtyOmksd2lkdGg6aS53aWR0aCxoZWlnaHQ6aS5oZWlnaHR9KS5hZnRlckFsbCgoZnVuY3Rpb24oKXtyKCl9KSl9fSx7a2V5OlwiYW5pbWF0ZUNpcmNsZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyl7dC5hdHRyKHtyOmUucixjeDplLmN4LGN5OmUuY3l9KS5hbmltYXRlKGEscykuYXR0cih7cjppLnIsY3g6aS5jeCxjeTppLmN5fSl9fSx7a2V5OlwiYW5pbWF0ZVJlY3RcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMpe3QuYXR0cihlKS5hbmltYXRlKGEpLmF0dHIoaSkuYWZ0ZXJBbGwoKGZ1bmN0aW9uKCl7cmV0dXJuIHMoKX0pKX19LHtrZXk6XCJhbmltYXRlUGF0aHNHcmFkdWFsbHlcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmVsLGk9dC5yZWFsSW5kZXgsYT10Lmoscz10LmZpbGwscj10LnBhdGhGcm9tLG89dC5wYXRoVG8sbj10LnNwZWVkLGw9dC5kZWxheSxoPXRoaXMudyxjPTA7aC5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5hbmltYXRlR3JhZHVhbGx5LmVuYWJsZWQmJihjPWguY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuYW5pbWF0ZUdyYWR1YWxseS5kZWxheSksaC5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQmJmguZ2xvYmFscy5kYXRhQ2hhbmdlZCYmXCJiYXJcIiE9PWguY29uZmlnLmNoYXJ0LnR5cGUmJihjPTApLHRoaXMubW9ycGhTVkcoZSxpLGEsXCJsaW5lXCIhPT1oLmNvbmZpZy5jaGFydC50eXBlfHxoLmdsb2JhbHMuY29tYm9DaGFydHM/czpcInN0cm9rZVwiLHIsbyxuLGwqYyl9fSx7a2V5Olwic2hvd0RlbGF5ZWRFbGVtZW50c1wiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy53Lmdsb2JhbHMuZGVsYXllZEVsZW1lbnRzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QuZWwuY2xhc3NMaXN0LnJlbW92ZShcImFwZXhjaGFydHMtZWxlbWVudC1oaWRkZW5cIil9KSl9fSx7a2V5OlwiYW5pbWF0aW9uQ29tcGxldGVkXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53O2UuZ2xvYmFscy5hbmltYXRpb25FbmRlZHx8KGUuZ2xvYmFscy5hbmltYXRpb25FbmRlZD0hMCx0aGlzLnNob3dEZWxheWVkRWxlbWVudHMoKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmNvbmZpZy5jaGFydC5ldmVudHMuYW5pbWF0aW9uRW5kJiZlLmNvbmZpZy5jaGFydC5ldmVudHMuYW5pbWF0aW9uRW5kKHRoaXMuY3R4LHtlbDp0LHc6ZX0pKX19LHtrZXk6XCJtb3JwaFNWR1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyxyLG8sbil7dmFyIGw9dGhpcyxoPXRoaXMudztzfHwocz10LmF0dHIoXCJwYXRoRnJvbVwiKSkscnx8KHI9dC5hdHRyKFwicGF0aFRvXCIpKTt2YXIgYz1mdW5jdGlvbih0KXtyZXR1cm5cInJhZGFyXCI9PT1oLmNvbmZpZy5jaGFydC50eXBlJiYobz0xKSxcIk0gMCBcIi5jb25jYXQoaC5nbG9iYWxzLmdyaWRIZWlnaHQpfTsoIXN8fHMuaW5kZXhPZihcInVuZGVmaW5lZFwiKT4tMXx8cy5pbmRleE9mKFwiTmFOXCIpPi0xKSYmKHM9YygpKSwoIXJ8fHIuaW5kZXhPZihcInVuZGVmaW5lZFwiKT4tMXx8ci5pbmRleE9mKFwiTmFOXCIpPi0xKSYmKHI9YygpKSxoLmdsb2JhbHMuc2hvdWxkQW5pbWF0ZXx8KG89MSksdC5wbG90KHMpLmFuaW1hdGUoMSxoLmdsb2JhbHMuZWFzaW5nLG4pLnBsb3QocykuYW5pbWF0ZShvLGguZ2xvYmFscy5lYXNpbmcsbikucGxvdChyKS5hZnRlckFsbCgoZnVuY3Rpb24oKXt4LmlzTnVtYmVyKGkpP2k9PT1oLmdsb2JhbHMuc2VyaWVzW2guZ2xvYmFscy5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGgtMiYmaC5nbG9iYWxzLnNob3VsZEFuaW1hdGUmJmwuYW5pbWF0aW9uQ29tcGxldGVkKHQpOlwibm9uZVwiIT09YSYmaC5nbG9iYWxzLnNob3VsZEFuaW1hdGUmJighaC5nbG9iYWxzLmNvbWJvQ2hhcnRzJiZlPT09aC5nbG9iYWxzLnNlcmllcy5sZW5ndGgtMXx8aC5nbG9iYWxzLmNvbWJvQ2hhcnRzKSYmbC5hbmltYXRpb25Db21wbGV0ZWQodCksbC5zaG93RGVsYXllZEVsZW1lbnRzKCl9KSl9fV0pLHR9KCksdj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5OlwiZ2V0RGVmYXVsdEZpbHRlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O3QudW5maWx0ZXIoITApLChuZXcgd2luZG93LlNWRy5GaWx0ZXIpLnNpemUoXCIxMjAlXCIsXCIxODAlXCIsXCItNSVcIixcIi00MCVcIiksXCJub25lXCIhPT1pLmNvbmZpZy5zdGF0ZXMubm9ybWFsLmZpbHRlcj90aGlzLmFwcGx5RmlsdGVyKHQsZSxpLmNvbmZpZy5zdGF0ZXMubm9ybWFsLmZpbHRlci50eXBlLGkuY29uZmlnLnN0YXRlcy5ub3JtYWwuZmlsdGVyLnZhbHVlKTppLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWQmJnRoaXMuZHJvcFNoYWRvdyh0LGkuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3csZSl9fSx7a2V5OlwiYWRkTm9ybWFsRmlsdGVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7aS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkJiYhdC5ub2RlLmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtbWFya2VyXCIpJiZ0aGlzLmRyb3BTaGFkb3codCxpLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LGUpfX0se2tleTpcImFkZExpZ2h0ZW5GaWx0ZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcyxzPXRoaXMudyxyPWkuaW50ZW5zaXR5O3QudW5maWx0ZXIoITApO25ldyB3aW5kb3cuU1ZHLkZpbHRlcjt0LmZpbHRlcigoZnVuY3Rpb24odCl7dmFyIGk9cy5jb25maWcuY2hhcnQuZHJvcFNoYWRvdzsoaS5lbmFibGVkP2EuYWRkU2hhZG93KHQsZSxpKTp0KS5jb21wb25lbnRUcmFuc2Zlcih7cmdiOnt0eXBlOlwibGluZWFyXCIsc2xvcGU6MS41LGludGVyY2VwdDpyfX0pfSkpLHQuZmlsdGVyZXIubm9kZS5zZXRBdHRyaWJ1dGUoXCJmaWx0ZXJVbml0c1wiLFwidXNlclNwYWNlT25Vc2VcIiksdGhpcy5fc2NhbGVGaWx0ZXJTaXplKHQuZmlsdGVyZXIubm9kZSl9fSx7a2V5OlwiYWRkRGFya2VuRmlsdGVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMscz10aGlzLncscj1pLmludGVuc2l0eTt0LnVuZmlsdGVyKCEwKTtuZXcgd2luZG93LlNWRy5GaWx0ZXI7dC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3ZhciBpPXMuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3c7KGkuZW5hYmxlZD9hLmFkZFNoYWRvdyh0LGUsaSk6dCkuY29tcG9uZW50VHJhbnNmZXIoe3JnYjp7dHlwZTpcImxpbmVhclwiLHNsb3BlOnJ9fSl9KSksdC5maWx0ZXJlci5ub2RlLnNldEF0dHJpYnV0ZShcImZpbHRlclVuaXRzXCIsXCJ1c2VyU3BhY2VPblVzZVwiKSx0aGlzLl9zY2FsZUZpbHRlclNpemUodC5maWx0ZXJlci5ub2RlKX19LHtrZXk6XCJhcHBseUZpbHRlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106LjU7c3dpdGNoKGkpe2Nhc2VcIm5vbmVcIjp0aGlzLmFkZE5vcm1hbEZpbHRlcih0LGUpO2JyZWFrO2Nhc2VcImxpZ2h0ZW5cIjp0aGlzLmFkZExpZ2h0ZW5GaWx0ZXIodCxlLHtpbnRlbnNpdHk6YX0pO2JyZWFrO2Nhc2VcImRhcmtlblwiOnRoaXMuYWRkRGFya2VuRmlsdGVyKHQsZSx7aW50ZW5zaXR5OmF9KX19fSx7a2V5OlwiYWRkU2hhZG93XCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPWkuYmx1cixzPWkudG9wLHI9aS5sZWZ0LG89aS5jb2xvcixuPWkub3BhY2l0eSxsPXQuZmxvb2QoQXJyYXkuaXNBcnJheShvKT9vW2VdOm8sbikuY29tcG9zaXRlKHQuc291cmNlQWxwaGEsXCJpblwiKS5vZmZzZXQocixzKS5nYXVzc2lhbkJsdXIoYSkubWVyZ2UodC5zb3VyY2UpO3JldHVybiB0LmJsZW5kKHQuc291cmNlLGwpfX0se2tleTpcImRyb3BTaGFkb3dcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTowLGE9ZS50b3Ascz1lLmxlZnQscj1lLmJsdXIsbz1lLmNvbG9yLG49ZS5vcGFjaXR5LGw9ZS5ub1VzZXJTcGFjZU9uVXNlLGg9dGhpcy53O3JldHVybiB0LnVuZmlsdGVyKCEwKSx4LmlzSUUoKSYmXCJyYWRpYWxCYXJcIj09PWguY29uZmlnLmNoYXJ0LnR5cGV8fChvPUFycmF5LmlzQXJyYXkobyk/b1tpXTpvLHQuZmlsdGVyKChmdW5jdGlvbih0KXt2YXIgZT1udWxsO2U9eC5pc1NhZmFyaSgpfHx4LmlzRmlyZWZveCgpfHx4LmlzSUUoKT90LmZsb29kKG8sbikuY29tcG9zaXRlKHQuc291cmNlQWxwaGEsXCJpblwiKS5vZmZzZXQocyxhKS5nYXVzc2lhbkJsdXIocik6dC5mbG9vZChvLG4pLmNvbXBvc2l0ZSh0LnNvdXJjZUFscGhhLFwiaW5cIikub2Zmc2V0KHMsYSkuZ2F1c3NpYW5CbHVyKHIpLm1lcmdlKHQuc291cmNlKSx0LmJsZW5kKHQuc291cmNlLGUpfSkpLGx8fHQuZmlsdGVyZXIubm9kZS5zZXRBdHRyaWJ1dGUoXCJmaWx0ZXJVbml0c1wiLFwidXNlclNwYWNlT25Vc2VcIiksdGhpcy5fc2NhbGVGaWx0ZXJTaXplKHQuZmlsdGVyZXIubm9kZSkpLHR9fSx7a2V5Olwic2V0U2VsZWN0aW9uRmlsdGVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMudztpZih2b2lkIDAhPT1hLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzW2VdJiZhLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzW2VdLmluZGV4T2YoaSk+LTEpe3Qubm9kZS5zZXRBdHRyaWJ1dGUoXCJzZWxlY3RlZFwiLCEwKTt2YXIgcz1hLmNvbmZpZy5zdGF0ZXMuYWN0aXZlLmZpbHRlcjtcIm5vbmVcIiE9PXMmJnRoaXMuYXBwbHlGaWx0ZXIodCxlLHMudHlwZSxzLnZhbHVlKX19fSx7a2V5OlwiX3NjYWxlRmlsdGVyU2l6ZVwiLHZhbHVlOmZ1bmN0aW9uKHQpeyFmdW5jdGlvbihlKXtmb3IodmFyIGkgaW4gZSllLmhhc093blByb3BlcnR5KGkpJiZ0LnNldEF0dHJpYnV0ZShpLGVbaV0pfSh7d2lkdGg6XCIyMDAlXCIsaGVpZ2h0OlwiMjAwJVwiLHg6XCItNTAlXCIseTpcIi01MCVcIn0pfX1dKSx0fSgpLG09ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIHIodCxbe2tleTpcInJvdW5kUGF0aENvcm5lcnNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIGkodCxlLGkpe3ZhciBzPWUueC10Lngscj1lLnktdC55LG89TWF0aC5zcXJ0KHMqcytyKnIpO3JldHVybiBhKHQsZSxNYXRoLm1pbigxLGkvbykpfWZ1bmN0aW9uIGEodCxlLGkpe3JldHVybnt4OnQueCsoZS54LXQueCkqaSx5OnQueSsoZS55LXQueSkqaX19ZnVuY3Rpb24gcyh0LGUpe3QubGVuZ3RoPjImJih0W3QubGVuZ3RoLTJdPWUueCx0W3QubGVuZ3RoLTFdPWUueSl9ZnVuY3Rpb24gcih0KXtyZXR1cm57eDpwYXJzZUZsb2F0KHRbdC5sZW5ndGgtMl0pLHk6cGFyc2VGbG9hdCh0W3QubGVuZ3RoLTFdKX19dC5pbmRleE9mKFwiTmFOXCIpPi0xJiYodD1cIlwiKTt2YXIgbz10LnNwbGl0KC9bLFxcc10vKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7dmFyIGk9ZS5tYXRjaChcIihbYS16QS1aXSkoLispXCIpO3JldHVybiBpPyh0LnB1c2goaVsxXSksdC5wdXNoKGlbMl0pKTp0LnB1c2goZSksdH0pLFtdKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHBhcnNlRmxvYXQoZSk9PWUmJnQubGVuZ3RoP3RbdC5sZW5ndGgtMV0ucHVzaChlKTp0LnB1c2goW2VdKSx0fSksW10pLG49W107aWYoby5sZW5ndGg+MSl7dmFyIGw9cihvWzBdKSxoPW51bGw7XCJaXCI9PW9bby5sZW5ndGgtMV1bMF0mJm9bMF0ubGVuZ3RoPjImJihoPVtcIkxcIixsLngsbC55XSxvW28ubGVuZ3RoLTFdPWgpLG4ucHVzaChvWzBdKTtmb3IodmFyIGM9MTtjPG8ubGVuZ3RoO2MrKyl7dmFyIGQ9bltuLmxlbmd0aC0xXSxnPW9bY10sdT1nPT1oP29bMV06b1tjKzFdO2lmKHUmJmQmJmQubGVuZ3RoPjImJlwiTFwiPT1nWzBdJiZ1Lmxlbmd0aD4yJiZcIkxcIj09dVswXSl7dmFyIHAsZix4PXIoZCksYj1yKGcpLHY9cih1KTtwPWkoYix4LGUpLGY9aShiLHYsZSkscyhnLHApLGcub3JpZ1BvaW50PWIsbi5wdXNoKGcpO3ZhciBtPWEocCxiLC41KSx5PWEoYixmLC41KSx3PVtcIkNcIixtLngsbS55LHkueCx5LnksZi54LGYueV07dy5vcmlnUG9pbnQ9YixuLnB1c2godyl9ZWxzZSBuLnB1c2goZyl9aWYoaCl7dmFyIGs9cihuW24ubGVuZ3RoLTFdKTtuLnB1c2goW1wiWlwiXSkscyhuWzBdLGspfX1lbHNlIG49bztyZXR1cm4gbi5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZS5qb2luKFwiIFwiKStcIiBcIn0pLFwiXCIpfX0se2tleTpcImRyYXdMaW5lXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSl7dmFyIHM9YXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0/YXJndW1lbnRzWzRdOlwiI2E4YThhOFwiLHI9YXJndW1lbnRzLmxlbmd0aD41JiZ2b2lkIDAhPT1hcmd1bWVudHNbNV0/YXJndW1lbnRzWzVdOjAsbz1hcmd1bWVudHMubGVuZ3RoPjYmJnZvaWQgMCE9PWFyZ3VtZW50c1s2XT9hcmd1bWVudHNbNl06bnVsbCxuPWFyZ3VtZW50cy5sZW5ndGg+NyYmdm9pZCAwIT09YXJndW1lbnRzWzddP2FyZ3VtZW50c1s3XTpcImJ1dHRcIjtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuZG9tLlBhcGVyLmxpbmUoKS5hdHRyKHt4MTp0LHkxOmUseDI6aSx5MjphLHN0cm9rZTpzLFwic3Ryb2tlLWRhc2hhcnJheVwiOnIsXCJzdHJva2Utd2lkdGhcIjpvLFwic3Ryb2tlLWxpbmVjYXBcIjpufSl9fSx7a2V5OlwiZHJhd1JlY3RcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjAsaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MCxhPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTowLHM9YXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0/YXJndW1lbnRzWzRdOjAscj1hcmd1bWVudHMubGVuZ3RoPjUmJnZvaWQgMCE9PWFyZ3VtZW50c1s1XT9hcmd1bWVudHNbNV06XCIjZmVmZWZlXCIsbz1hcmd1bWVudHMubGVuZ3RoPjYmJnZvaWQgMCE9PWFyZ3VtZW50c1s2XT9hcmd1bWVudHNbNl06MSxuPWFyZ3VtZW50cy5sZW5ndGg+NyYmdm9pZCAwIT09YXJndW1lbnRzWzddP2FyZ3VtZW50c1s3XTpudWxsLGw9YXJndW1lbnRzLmxlbmd0aD44JiZ2b2lkIDAhPT1hcmd1bWVudHNbOF0/YXJndW1lbnRzWzhdOm51bGwsaD1hcmd1bWVudHMubGVuZ3RoPjkmJnZvaWQgMCE9PWFyZ3VtZW50c1s5XT9hcmd1bWVudHNbOV06MCxjPXRoaXMudy5nbG9iYWxzLmRvbS5QYXBlci5yZWN0KCk7cmV0dXJuIGMuYXR0cih7eDp0LHk6ZSx3aWR0aDppPjA/aTowLGhlaWdodDphPjA/YTowLHJ4OnMscnk6cyxvcGFjaXR5Om8sXCJzdHJva2Utd2lkdGhcIjpudWxsIT09bj9uOjAsc3Ryb2tlOm51bGwhPT1sP2w6XCJub25lXCIsXCJzdHJva2UtZGFzaGFycmF5XCI6aH0pLGMubm9kZS5zZXRBdHRyaWJ1dGUoXCJmaWxsXCIsciksY319LHtrZXk6XCJkcmF3UG9seWdvblwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpcIiNlMWUxZTFcIixpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXToxLGE9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOlwibm9uZVwiO3JldHVybiB0aGlzLncuZ2xvYmFscy5kb20uUGFwZXIucG9seWdvbih0KS5hdHRyKHtmaWxsOmEsc3Ryb2tlOmUsXCJzdHJva2Utd2lkdGhcIjppfSl9fSx7a2V5OlwiZHJhd0NpcmNsZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpudWxsO3Q8MCYmKHQ9MCk7dmFyIGk9dGhpcy53Lmdsb2JhbHMuZG9tLlBhcGVyLmNpcmNsZSgyKnQpO3JldHVybiBudWxsIT09ZSYmaS5hdHRyKGUpLGl9fSx7a2V5OlwiZHJhd1BhdGhcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmQsaT12b2lkIDA9PT1lP1wiXCI6ZSxhPXQuc3Ryb2tlLHM9dm9pZCAwPT09YT9cIiNhOGE4YThcIjphLHI9dC5zdHJva2VXaWR0aCxvPXZvaWQgMD09PXI/MTpyLG49dC5maWxsLGw9dC5maWxsT3BhY2l0eSxoPXZvaWQgMD09PWw/MTpsLGM9dC5zdHJva2VPcGFjaXR5LGQ9dm9pZCAwPT09Yz8xOmMsZz10LmNsYXNzZXMsdT10LnN0cm9rZUxpbmVjYXAscD12b2lkIDA9PT11P251bGw6dSxmPXQuc3Ryb2tlRGFzaEFycmF5LHg9dm9pZCAwPT09Zj8wOmYsYj10aGlzLnc7cmV0dXJuIG51bGw9PT1wJiYocD1iLmNvbmZpZy5zdHJva2UubGluZUNhcCksKGkuaW5kZXhPZihcInVuZGVmaW5lZFwiKT4tMXx8aS5pbmRleE9mKFwiTmFOXCIpPi0xKSYmKGk9XCJNIDAgXCIuY29uY2F0KGIuZ2xvYmFscy5ncmlkSGVpZ2h0KSksYi5nbG9iYWxzLmRvbS5QYXBlci5wYXRoKGkpLmF0dHIoe2ZpbGw6bixcImZpbGwtb3BhY2l0eVwiOmgsc3Ryb2tlOnMsXCJzdHJva2Utb3BhY2l0eVwiOmQsXCJzdHJva2UtbGluZWNhcFwiOnAsXCJzdHJva2Utd2lkdGhcIjpvLFwic3Ryb2tlLWRhc2hhcnJheVwiOngsY2xhc3M6Z30pfX0se2tleTpcImdyb3VwXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbCxlPXRoaXMudy5nbG9iYWxzLmRvbS5QYXBlci5ncm91cCgpO3JldHVybiBudWxsIT09dCYmZS5hdHRyKHQpLGV9fSx7a2V5OlwibW92ZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9W1wiTVwiLHQsZV0uam9pbihcIiBcIik7cmV0dXJuIGl9fSx7a2V5OlwibGluZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm51bGwsYT1udWxsO3JldHVybiBudWxsPT09aT9hPVtcIiBMXCIsdCxlXS5qb2luKFwiIFwiKTpcIkhcIj09PWk/YT1bXCIgSFwiLHRdLmpvaW4oXCIgXCIpOlwiVlwiPT09aSYmKGE9W1wiIFZcIixlXS5qb2luKFwiIFwiKSksYX19LHtrZXk6XCJjdXJ2ZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyxyKXt2YXIgbz1bXCJDXCIsdCxlLGksYSxzLHJdLmpvaW4oXCIgXCIpO3JldHVybiBvfX0se2tleTpcInF1YWRyYXRpY0N1cnZlXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSl7cmV0dXJuW1wiUVwiLHQsZSxpLGFdLmpvaW4oXCIgXCIpfX0se2tleTpcImFyY1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyxyLG8pe3ZhciBuPVwiQVwiO2FyZ3VtZW50cy5sZW5ndGg+NyYmdm9pZCAwIT09YXJndW1lbnRzWzddJiZhcmd1bWVudHNbN10mJihuPVwiYVwiKTt2YXIgbD1bbix0LGUsaSxhLHMscixvXS5qb2luKFwiIFwiKTtyZXR1cm4gbH19LHtrZXk6XCJyZW5kZXJQYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBpLGE9dC5qLHM9dC5yZWFsSW5kZXgscj10LnBhdGhGcm9tLG89dC5wYXRoVG8sbj10LnN0cm9rZSxsPXQuc3Ryb2tlV2lkdGgsaD10LnN0cm9rZUxpbmVjYXAsYz10LmZpbGwsZD10LmFuaW1hdGlvbkRlbGF5LGc9dC5pbml0aWFsU3BlZWQsdT10LmRhdGFDaGFuZ2VTcGVlZCxwPXQuY2xhc3NOYW1lLGY9dC5zaG91bGRDbGlwVG9HcmlkLHg9dm9pZCAwPT09Znx8ZixtPXQuYmluZEV2ZW50c09uUGF0aHMseT12b2lkIDA9PT1tfHxtLHc9dC5kcmF3U2hhZG93LGs9dm9pZCAwPT09d3x8dyxBPXRoaXMudyxTPW5ldyB2KHRoaXMuY3R4KSxDPW5ldyBiKHRoaXMuY3R4KSxMPXRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5lbmFibGVkLFA9TCYmdGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCxJPSEhKEwmJiFBLmdsb2JhbHMucmVzaXplZHx8UCYmQS5nbG9iYWxzLmRhdGFDaGFuZ2VkJiZBLmdsb2JhbHMuc2hvdWxkQW5pbWF0ZSk7ST9pPXI6KGk9byxBLmdsb2JhbHMuYW5pbWF0aW9uRW5kZWQ9ITApO3ZhciBUPUEuY29uZmlnLnN0cm9rZS5kYXNoQXJyYXksTT0wO009QXJyYXkuaXNBcnJheShUKT9UW3NdOkEuY29uZmlnLnN0cm9rZS5kYXNoQXJyYXk7dmFyIFg9dGhpcy5kcmF3UGF0aCh7ZDppLHN0cm9rZTpuLHN0cm9rZVdpZHRoOmwsZmlsbDpjLGZpbGxPcGFjaXR5OjEsY2xhc3NlczpwLHN0cm9rZUxpbmVjYXA6aCxzdHJva2VEYXNoQXJyYXk6TX0pO2lmKFguYXR0cihcImluZGV4XCIscykseCYmWC5hdHRyKHtcImNsaXAtcGF0aFwiOlwidXJsKCNncmlkUmVjdE1hc2tcIi5jb25jYXQoQS5nbG9iYWxzLmN1aWQsXCIpXCIpfSksXCJub25lXCIhPT1BLmNvbmZpZy5zdGF0ZXMubm9ybWFsLmZpbHRlci50eXBlKVMuZ2V0RGVmYXVsdEZpbHRlcihYLHMpO2Vsc2UgaWYoQS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkJiZrJiYoIUEuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZE9uU2VyaWVzfHxBLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWRPblNlcmllcyYmLTEhPT1BLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWRPblNlcmllcy5pbmRleE9mKHMpKSl7dmFyIHo9QS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdztTLmRyb3BTaGFkb3coWCx6LHMpfXkmJihYLm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZW50ZXJcIix0aGlzLnBhdGhNb3VzZUVudGVyLmJpbmQodGhpcyxYKSksWC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsdGhpcy5wYXRoTW91c2VMZWF2ZS5iaW5kKHRoaXMsWCkpLFgubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsdGhpcy5wYXRoTW91c2VEb3duLmJpbmQodGhpcyxYKSkpLFguYXR0cih7cGF0aFRvOm8scGF0aEZyb206cn0pO3ZhciBFPXtlbDpYLGo6YSxyZWFsSW5kZXg6cyxwYXRoRnJvbTpyLHBhdGhUbzpvLGZpbGw6YyxzdHJva2VXaWR0aDpsLGRlbGF5OmR9O3JldHVybiFMfHxBLmdsb2JhbHMucmVzaXplZHx8QS5nbG9iYWxzLmRhdGFDaGFuZ2VkPyFBLmdsb2JhbHMucmVzaXplZCYmQS5nbG9iYWxzLmRhdGFDaGFuZ2VkfHxDLnNob3dEZWxheWVkRWxlbWVudHMoKTpDLmFuaW1hdGVQYXRoc0dyYWR1YWxseShlKGUoe30sRSkse30se3NwZWVkOmd9KSksQS5nbG9iYWxzLmRhdGFDaGFuZ2VkJiZQJiZJJiZDLmFuaW1hdGVQYXRoc0dyYWR1YWxseShlKGUoe30sRSkse30se3NwZWVkOnV9KSksWH19LHtrZXk6XCJkcmF3UGF0dGVyblwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106XCIjYThhOGE4XCIscz1hcmd1bWVudHMubGVuZ3RoPjQmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XT9hcmd1bWVudHNbNF06MDtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuZG9tLlBhcGVyLnBhdHRlcm4oZSxpLChmdW5jdGlvbihyKXtcImhvcml6b250YWxMaW5lc1wiPT09dD9yLmxpbmUoMCwwLGksMCkuc3Ryb2tlKHtjb2xvcjphLHdpZHRoOnMrMX0pOlwidmVydGljYWxMaW5lc1wiPT09dD9yLmxpbmUoMCwwLDAsZSkuc3Ryb2tlKHtjb2xvcjphLHdpZHRoOnMrMX0pOlwic2xhbnRlZExpbmVzXCI9PT10P3IubGluZSgwLDAsZSxpKS5zdHJva2Uoe2NvbG9yOmEsd2lkdGg6c30pOlwic3F1YXJlc1wiPT09dD9yLnJlY3QoZSxpKS5maWxsKFwibm9uZVwiKS5zdHJva2Uoe2NvbG9yOmEsd2lkdGg6c30pOlwiY2lyY2xlc1wiPT09dCYmci5jaXJjbGUoZSkuZmlsbChcIm5vbmVcIikuc3Ryb2tlKHtjb2xvcjphLHdpZHRoOnN9KX0pKX19LHtrZXk6XCJkcmF3R3JhZGllbnRcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMpe3ZhciByLG89YXJndW1lbnRzLmxlbmd0aD41JiZ2b2lkIDAhPT1hcmd1bWVudHNbNV0/YXJndW1lbnRzWzVdOm51bGwsbj1hcmd1bWVudHMubGVuZ3RoPjYmJnZvaWQgMCE9PWFyZ3VtZW50c1s2XT9hcmd1bWVudHNbNl06bnVsbCxsPWFyZ3VtZW50cy5sZW5ndGg+NyYmdm9pZCAwIT09YXJndW1lbnRzWzddP2FyZ3VtZW50c1s3XTpudWxsLGg9YXJndW1lbnRzLmxlbmd0aD44JiZ2b2lkIDAhPT1hcmd1bWVudHNbOF0/YXJndW1lbnRzWzhdOjAsYz10aGlzLnc7ZS5sZW5ndGg8OSYmMD09PWUuaW5kZXhPZihcIiNcIikmJihlPXguaGV4VG9SZ2JhKGUsYSkpLGkubGVuZ3RoPDkmJjA9PT1pLmluZGV4T2YoXCIjXCIpJiYoaT14LmhleFRvUmdiYShpLHMpKTt2YXIgZD0wLGc9MSx1PTEscD1udWxsO251bGwhPT1uJiYoZD12b2lkIDAhPT1uWzBdP25bMF0vMTAwOjAsZz12b2lkIDAhPT1uWzFdP25bMV0vMTAwOjEsdT12b2lkIDAhPT1uWzJdP25bMl0vMTAwOjEscD12b2lkIDAhPT1uWzNdP25bM10vMTAwOm51bGwpO3ZhciBmPSEoXCJkb251dFwiIT09Yy5jb25maWcuY2hhcnQudHlwZSYmXCJwaWVcIiE9PWMuY29uZmlnLmNoYXJ0LnR5cGUmJlwicG9sYXJBcmVhXCIhPT1jLmNvbmZpZy5jaGFydC50eXBlJiZcImJ1YmJsZVwiIT09Yy5jb25maWcuY2hhcnQudHlwZSk7aWYocj1udWxsPT09bHx8MD09PWwubGVuZ3RoP2MuZ2xvYmFscy5kb20uUGFwZXIuZ3JhZGllbnQoZj9cInJhZGlhbFwiOlwibGluZWFyXCIsKGZ1bmN0aW9uKHQpe3QuYXQoZCxlLGEpLHQuYXQoZyxpLHMpLHQuYXQodSxpLHMpLG51bGwhPT1wJiZ0LmF0KHAsZSxhKX0pKTpjLmdsb2JhbHMuZG9tLlBhcGVyLmdyYWRpZW50KGY/XCJyYWRpYWxcIjpcImxpbmVhclwiLChmdW5jdGlvbih0KXsoQXJyYXkuaXNBcnJheShsW2hdKT9sW2hdOmwpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3QuYXQoZS5vZmZzZXQvMTAwLGUuY29sb3IsZS5vcGFjaXR5KX0pKX0pKSxmKXt2YXIgYj1jLmdsb2JhbHMuZ3JpZFdpZHRoLzIsdj1jLmdsb2JhbHMuZ3JpZEhlaWdodC8yO1wiYnViYmxlXCIhPT1jLmNvbmZpZy5jaGFydC50eXBlP3IuYXR0cih7Z3JhZGllbnRVbml0czpcInVzZXJTcGFjZU9uVXNlXCIsY3g6YixjeTp2LHI6b30pOnIuYXR0cih7Y3g6LjUsY3k6LjUscjouOCxmeDouMixmeTouMn0pfWVsc2VcInZlcnRpY2FsXCI9PT10P3IuZnJvbSgwLDApLnRvKDAsMSk6XCJkaWFnb25hbFwiPT09dD9yLmZyb20oMCwwKS50bygxLDEpOlwiaG9yaXpvbnRhbFwiPT09dD9yLmZyb20oMCwxKS50bygxLDEpOlwiZGlhZ29uYWwyXCI9PT10JiZyLmZyb20oMSwwKS50bygwLDEpO3JldHVybiByfX0se2tleTpcImdldFRleHRCYXNlZE9uTWF4V2lkdGhcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LnRleHQsaT10Lm1heFdpZHRoLGE9dC5mb250U2l6ZSxzPXQuZm9udEZhbWlseSxyPXRoaXMuZ2V0VGV4dFJlY3RzKGUsYSxzKSxvPXIud2lkdGgvZS5sZW5ndGgsbj1NYXRoLmZsb29yKGkvbyk7cmV0dXJuIGk8ci53aWR0aD9lLnNsaWNlKDAsbi0zKStcIi4uLlwiOmV9fSx7a2V5OlwiZHJhd1RleHRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgaT10aGlzLGE9dC54LHM9dC55LHI9dC50ZXh0LG89dC50ZXh0QW5jaG9yLG49dC5mb250U2l6ZSxsPXQuZm9udEZhbWlseSxoPXQuZm9udFdlaWdodCxjPXQuZm9yZUNvbG9yLGQ9dC5vcGFjaXR5LGc9dC5tYXhXaWR0aCx1PXQuY3NzQ2xhc3MscD12b2lkIDA9PT11P1wiXCI6dSxmPXQuaXNQbGFpblRleHQseD12b2lkIDA9PT1mfHxmLGI9dGhpcy53O3ZvaWQgMD09PXImJihyPVwiXCIpO3ZhciB2PXI7b3x8KG89XCJzdGFydFwiKSxjJiZjLmxlbmd0aHx8KGM9Yi5jb25maWcuY2hhcnQuZm9yZUNvbG9yKSxsPWx8fGIuY29uZmlnLmNoYXJ0LmZvbnRGYW1pbHksaD1ofHxcInJlZ3VsYXJcIjt2YXIgbSx5PXttYXhXaWR0aDpnLGZvbnRTaXplOm49bnx8XCIxMXB4XCIsZm9udEZhbWlseTpsfTtyZXR1cm4gQXJyYXkuaXNBcnJheShyKT9tPWIuZ2xvYmFscy5kb20uUGFwZXIudGV4dCgoZnVuY3Rpb24odCl7Zm9yKHZhciBhPTA7YTxyLmxlbmd0aDthKyspdj1yW2FdLGcmJih2PWkuZ2V0VGV4dEJhc2VkT25NYXhXaWR0aChlKHt0ZXh0OnJbYV19LHkpKSksMD09PWE/dC50c3Bhbih2KTp0LnRzcGFuKHYpLm5ld0xpbmUoKX0pKTooZyYmKHY9dGhpcy5nZXRUZXh0QmFzZWRPbk1heFdpZHRoKGUoe3RleHQ6cn0seSkpKSxtPXg/Yi5nbG9iYWxzLmRvbS5QYXBlci5wbGFpbihyKTpiLmdsb2JhbHMuZG9tLlBhcGVyLnRleHQoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnRzcGFuKHYpfSkpKSxtLmF0dHIoe3g6YSx5OnMsXCJ0ZXh0LWFuY2hvclwiOm8sXCJkb21pbmFudC1iYXNlbGluZVwiOlwiYXV0b1wiLFwiZm9udC1zaXplXCI6bixcImZvbnQtZmFtaWx5XCI6bCxcImZvbnQtd2VpZ2h0XCI6aCxmaWxsOmMsY2xhc3M6XCJhcGV4Y2hhcnRzLXRleHQgXCIrcH0pLG0ubm9kZS5zdHlsZS5mb250RmFtaWx5PWwsbS5ub2RlLnN0eWxlLm9wYWNpdHk9ZCxtfX0se2tleTpcImRyYXdNYXJrZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dD10fHwwO3ZhciBhPWkucFNpemV8fDAscz1udWxsO2lmKFwic3F1YXJlXCI9PT1pLnNoYXBlfHxcInJlY3RcIj09PWkuc2hhcGUpe3ZhciByPXZvaWQgMD09PWkucFJhZGl1cz9hLzI6aS5wUmFkaXVzO251bGwhPT1lJiZhfHwoYT0wLHI9MCk7dmFyIG89MS4yKmErcixuPXRoaXMuZHJhd1JlY3QobyxvLG8sbyxyKTtuLmF0dHIoe3g6dC1vLzIseTplLW8vMixjeDp0LGN5OmUsY2xhc3M6aS5jbGFzcz9pLmNsYXNzOlwiXCIsZmlsbDppLnBvaW50RmlsbENvbG9yLFwiZmlsbC1vcGFjaXR5XCI6aS5wb2ludEZpbGxPcGFjaXR5P2kucG9pbnRGaWxsT3BhY2l0eToxLHN0cm9rZTppLnBvaW50U3Ryb2tlQ29sb3IsXCJzdHJva2Utd2lkdGhcIjppLnBvaW50U3Ryb2tlV2lkdGg/aS5wb2ludFN0cm9rZVdpZHRoOjAsXCJzdHJva2Utb3BhY2l0eVwiOmkucG9pbnRTdHJva2VPcGFjaXR5P2kucG9pbnRTdHJva2VPcGFjaXR5OjF9KSxzPW59ZWxzZVwiY2lyY2xlXCIhPT1pLnNoYXBlJiZpLnNoYXBlfHwoeC5pc051bWJlcihlKXx8KGE9MCxlPTApLHM9dGhpcy5kcmF3Q2lyY2xlKGEse2N4OnQsY3k6ZSxjbGFzczppLmNsYXNzP2kuY2xhc3M6XCJcIixzdHJva2U6aS5wb2ludFN0cm9rZUNvbG9yLGZpbGw6aS5wb2ludEZpbGxDb2xvcixcImZpbGwtb3BhY2l0eVwiOmkucG9pbnRGaWxsT3BhY2l0eT9pLnBvaW50RmlsbE9wYWNpdHk6MSxcInN0cm9rZS13aWR0aFwiOmkucG9pbnRTdHJva2VXaWR0aD9pLnBvaW50U3Ryb2tlV2lkdGg6MCxcInN0cm9rZS1vcGFjaXR5XCI6aS5wb2ludFN0cm9rZU9wYWNpdHk/aS5wb2ludFN0cm9rZU9wYWNpdHk6MX0pKTtyZXR1cm4gc319LHtrZXk6XCJwYXRoTW91c2VFbnRlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9bmV3IHYodGhpcy5jdHgpLHM9cGFyc2VJbnQodC5ub2RlLmdldEF0dHJpYnV0ZShcImluZGV4XCIpLDEwKSxyPXBhcnNlSW50KHQubm9kZS5nZXRBdHRyaWJ1dGUoXCJqXCIpLDEwKTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBpLmNvbmZpZy5jaGFydC5ldmVudHMuZGF0YVBvaW50TW91c2VFbnRlciYmaS5jb25maWcuY2hhcnQuZXZlbnRzLmRhdGFQb2ludE1vdXNlRW50ZXIoZSx0aGlzLmN0eCx7c2VyaWVzSW5kZXg6cyxkYXRhUG9pbnRJbmRleDpyLHc6aX0pLHRoaXMuY3R4LmV2ZW50cy5maXJlRXZlbnQoXCJkYXRhUG9pbnRNb3VzZUVudGVyXCIsW2UsdGhpcy5jdHgse3Nlcmllc0luZGV4OnMsZGF0YVBvaW50SW5kZXg6cix3Oml9XSksKFwibm9uZVwiPT09aS5jb25maWcuc3RhdGVzLmFjdGl2ZS5maWx0ZXIudHlwZXx8XCJ0cnVlXCIhPT10Lm5vZGUuZ2V0QXR0cmlidXRlKFwic2VsZWN0ZWRcIikpJiZcIm5vbmVcIiE9PWkuY29uZmlnLnN0YXRlcy5ob3Zlci5maWx0ZXIudHlwZSYmIWkuZ2xvYmFscy5pc1RvdWNoRGV2aWNlKXt2YXIgbz1pLmNvbmZpZy5zdGF0ZXMuaG92ZXIuZmlsdGVyO2EuYXBwbHlGaWx0ZXIodCxzLG8udHlwZSxvLnZhbHVlKX19fSx7a2V5OlwicGF0aE1vdXNlTGVhdmVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPW5ldyB2KHRoaXMuY3R4KSxzPXBhcnNlSW50KHQubm9kZS5nZXRBdHRyaWJ1dGUoXCJpbmRleFwiKSwxMCkscj1wYXJzZUludCh0Lm5vZGUuZ2V0QXR0cmlidXRlKFwialwiKSwxMCk7XCJmdW5jdGlvblwiPT10eXBlb2YgaS5jb25maWcuY2hhcnQuZXZlbnRzLmRhdGFQb2ludE1vdXNlTGVhdmUmJmkuY29uZmlnLmNoYXJ0LmV2ZW50cy5kYXRhUG9pbnRNb3VzZUxlYXZlKGUsdGhpcy5jdHgse3Nlcmllc0luZGV4OnMsZGF0YVBvaW50SW5kZXg6cix3Oml9KSx0aGlzLmN0eC5ldmVudHMuZmlyZUV2ZW50KFwiZGF0YVBvaW50TW91c2VMZWF2ZVwiLFtlLHRoaXMuY3R4LHtzZXJpZXNJbmRleDpzLGRhdGFQb2ludEluZGV4OnIsdzppfV0pLFwibm9uZVwiIT09aS5jb25maWcuc3RhdGVzLmFjdGl2ZS5maWx0ZXIudHlwZSYmXCJ0cnVlXCI9PT10Lm5vZGUuZ2V0QXR0cmlidXRlKFwic2VsZWN0ZWRcIil8fFwibm9uZVwiIT09aS5jb25maWcuc3RhdGVzLmhvdmVyLmZpbHRlci50eXBlJiZhLmdldERlZmF1bHRGaWx0ZXIodCxzKX19LHtrZXk6XCJwYXRoTW91c2VEb3duXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT1uZXcgdih0aGlzLmN0eCkscz1wYXJzZUludCh0Lm5vZGUuZ2V0QXR0cmlidXRlKFwiaW5kZXhcIiksMTApLHI9cGFyc2VJbnQodC5ub2RlLmdldEF0dHJpYnV0ZShcImpcIiksMTApLG89XCJmYWxzZVwiO2lmKFwidHJ1ZVwiPT09dC5ub2RlLmdldEF0dHJpYnV0ZShcInNlbGVjdGVkXCIpKXtpZih0Lm5vZGUuc2V0QXR0cmlidXRlKFwic2VsZWN0ZWRcIixcImZhbHNlXCIpLGkuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbc10uaW5kZXhPZihyKT4tMSl7dmFyIG49aS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1tzXS5pbmRleE9mKHIpO2kuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbc10uc3BsaWNlKG4sMSl9fWVsc2V7aWYoIWkuY29uZmlnLnN0YXRlcy5hY3RpdmUuYWxsb3dNdWx0aXBsZURhdGFQb2ludHNTZWxlY3Rpb24mJmkuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHMubGVuZ3RoPjApe2kuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHM9W107dmFyIGw9aS5nbG9iYWxzLmRvbS5QYXBlci5zZWxlY3QoXCIuYXBleGNoYXJ0cy1zZXJpZXMgcGF0aFwiKS5tZW1iZXJzLGg9aS5nbG9iYWxzLmRvbS5QYXBlci5zZWxlY3QoXCIuYXBleGNoYXJ0cy1zZXJpZXMgY2lyY2xlLCAuYXBleGNoYXJ0cy1zZXJpZXMgcmVjdFwiKS5tZW1iZXJzLGM9ZnVuY3Rpb24odCl7QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbCh0LChmdW5jdGlvbih0KXt0Lm5vZGUuc2V0QXR0cmlidXRlKFwic2VsZWN0ZWRcIixcImZhbHNlXCIpLGEuZ2V0RGVmYXVsdEZpbHRlcih0LHMpfSkpfTtjKGwpLGMoaCl9dC5ub2RlLnNldEF0dHJpYnV0ZShcInNlbGVjdGVkXCIsXCJ0cnVlXCIpLG89XCJ0cnVlXCIsdm9pZCAwPT09aS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1tzXSYmKGkuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbc109W10pLGkuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbc10ucHVzaChyKX1pZihcInRydWVcIj09PW8pe3ZhciBkPWkuY29uZmlnLnN0YXRlcy5hY3RpdmUuZmlsdGVyO2lmKFwibm9uZVwiIT09ZClhLmFwcGx5RmlsdGVyKHQscyxkLnR5cGUsZC52YWx1ZSk7ZWxzZSBpZihcIm5vbmVcIiE9PWkuY29uZmlnLnN0YXRlcy5ob3Zlci5maWx0ZXImJiFpLmdsb2JhbHMuaXNUb3VjaERldmljZSl7dmFyIGc9aS5jb25maWcuc3RhdGVzLmhvdmVyLmZpbHRlcjthLmFwcGx5RmlsdGVyKHQscyxnLnR5cGUsZy52YWx1ZSl9fWVsc2UgaWYoXCJub25lXCIhPT1pLmNvbmZpZy5zdGF0ZXMuYWN0aXZlLmZpbHRlci50eXBlKWlmKFwibm9uZVwiPT09aS5jb25maWcuc3RhdGVzLmhvdmVyLmZpbHRlci50eXBlfHxpLmdsb2JhbHMuaXNUb3VjaERldmljZSlhLmdldERlZmF1bHRGaWx0ZXIodCxzKTtlbHNle2c9aS5jb25maWcuc3RhdGVzLmhvdmVyLmZpbHRlcjthLmFwcGx5RmlsdGVyKHQscyxnLnR5cGUsZy52YWx1ZSl9XCJmdW5jdGlvblwiPT10eXBlb2YgaS5jb25maWcuY2hhcnQuZXZlbnRzLmRhdGFQb2ludFNlbGVjdGlvbiYmaS5jb25maWcuY2hhcnQuZXZlbnRzLmRhdGFQb2ludFNlbGVjdGlvbihlLHRoaXMuY3R4LHtzZWxlY3RlZERhdGFQb2ludHM6aS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50cyxzZXJpZXNJbmRleDpzLGRhdGFQb2ludEluZGV4OnIsdzppfSksZSYmdGhpcy5jdHguZXZlbnRzLmZpcmVFdmVudChcImRhdGFQb2ludFNlbGVjdGlvblwiLFtlLHRoaXMuY3R4LHtzZWxlY3RlZERhdGFQb2ludHM6aS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50cyxzZXJpZXNJbmRleDpzLGRhdGFQb2ludEluZGV4OnIsdzppfV0pfX0se2tleTpcInJvdGF0ZUFyb3VuZENlbnRlclwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXt9O3JldHVybiB0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmdldEJCb3gmJihlPXQuZ2V0QkJveCgpKSx7eDplLngrZS53aWR0aC8yLHk6ZS55K2UuaGVpZ2h0LzJ9fX0se2tleTpcImdldFRleHRSZWN0c1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzPSEoYXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0pfHxhcmd1bWVudHNbNF0scj10aGlzLncsbz10aGlzLmRyYXdUZXh0KHt4Oi0yMDAseTotMjAwLHRleHQ6dCx0ZXh0QW5jaG9yOlwic3RhcnRcIixmb250U2l6ZTplLGZvbnRGYW1pbHk6aSxmb3JlQ29sb3I6XCIjZmZmXCIsb3BhY2l0eTowfSk7YSYmby5hdHRyKFwidHJhbnNmb3JtXCIsYSksci5nbG9iYWxzLmRvbS5QYXBlci5hZGQobyk7dmFyIG49by5iYm94KCk7cmV0dXJuIHN8fChuPW8ubm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSksby5yZW1vdmUoKSx7d2lkdGg6bi53aWR0aCxoZWlnaHQ6bi5oZWlnaHR9fX0se2tleTpcInBsYWNlVGV4dFdpdGhFbGxpcHNpc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmdldENvbXB1dGVkVGV4dExlbmd0aCYmKHQudGV4dENvbnRlbnQ9ZSxlLmxlbmd0aD4wJiZ0LmdldENvbXB1dGVkVGV4dExlbmd0aCgpPj1pLzEuMSkpe2Zvcih2YXIgYT1lLmxlbmd0aC0zO2E+MDthLT0zKWlmKHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsYSk8PWkvMS4xKXJldHVybiB2b2lkKHQudGV4dENvbnRlbnQ9ZS5zdWJzdHJpbmcoMCxhKStcIi4uLlwiKTt0LnRleHRDb250ZW50PVwiLlwifX19XSxbe2tleTpcInNldEF0dHJzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtmb3IodmFyIGkgaW4gZSllLmhhc093blByb3BlcnR5KGkpJiZ0LnNldEF0dHJpYnV0ZShpLGVbaV0pfX1dKSx0fSgpLHk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIHIodCxbe2tleTpcImdldFN0YWNrZWRTZXJpZXNUb3RhbHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpbXSxlPXRoaXMudyxpPVtdO2lmKDA9PT1lLmdsb2JhbHMuc2VyaWVzLmxlbmd0aClyZXR1cm4gaTtmb3IodmFyIGE9MDthPGUuZ2xvYmFscy5zZXJpZXNbZS5nbG9iYWxzLm1heFZhbHNJbkFycmF5SW5kZXhdLmxlbmd0aDthKyspe2Zvcih2YXIgcz0wLHI9MDtyPGUuZ2xvYmFscy5zZXJpZXMubGVuZ3RoO3IrKyl2b2lkIDAhPT1lLmdsb2JhbHMuc2VyaWVzW3JdW2FdJiYtMT09PXQuaW5kZXhPZihyKSYmKHMrPWUuZ2xvYmFscy5zZXJpZXNbcl1bYV0pO2kucHVzaChzKX1yZXR1cm4gaX19LHtrZXk6XCJnZXRTZXJpZXNUb3RhbEJ5SW5kZXhcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsO3JldHVybiBudWxsPT09dD90aGlzLncuY29uZmlnLnNlcmllcy5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZX0pLDApOnRoaXMudy5nbG9iYWxzLnNlcmllc1t0XS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZX0pLDApfX0se2tleTpcImlzU2VyaWVzTnVsbFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOm51bGw7cmV0dXJuIDA9PT0obnVsbD09PXQ/dGhpcy53LmNvbmZpZy5zZXJpZXMuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9PXR9KSk6dGhpcy53LmNvbmZpZy5zZXJpZXNbdF0uZGF0YS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT09dH0pKSkubGVuZ3RofX0se2tleTpcInNlcmllc0hhdmVTYW1lVmFsdWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLnNlcmllc1t0XS5ldmVyeSgoZnVuY3Rpb24odCxlLGkpe3JldHVybiB0PT09aVswXX0pKX19LHtrZXk6XCJnZXRDYXRlZ29yeUxhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPXQuc2xpY2UoKTtyZXR1cm4gZS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiYoaT10Lm1hcCgoZnVuY3Rpb24odCxpKXtyZXR1cm4gZS5jb25maWcueGF4aXMubGFiZWxzLmZvcm1hdHRlcih0LWUuZ2xvYmFscy5taW5YKzEpfSkpKSxpfX0se2tleTpcImdldExhcmdlc3RTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudzt0Lmdsb2JhbHMubWF4VmFsc0luQXJyYXlJbmRleD10Lmdsb2JhbHMuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQubGVuZ3RofSkpLmluZGV4T2YoTWF0aC5tYXguYXBwbHkoTWF0aCx0Lmdsb2JhbHMuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQubGVuZ3RofSkpKSl9fSx7a2V5OlwiZ2V0TGFyZ2VzdE1hcmtlclNpemVcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPTA7cmV0dXJuIHQuZ2xvYmFscy5tYXJrZXJzLnNpemUuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZT1NYXRoLm1heChlLHQpfSkpLHQuY29uZmlnLm1hcmtlcnMuZGlzY3JldGUmJnQuY29uZmlnLm1hcmtlcnMuZGlzY3JldGUubGVuZ3RoJiZ0LmNvbmZpZy5tYXJrZXJzLmRpc2NyZXRlLmZvckVhY2goKGZ1bmN0aW9uKHQpe2U9TWF0aC5tYXgoZSx0LnNpemUpfSkpLGU+MCYmKGUrPXQuY29uZmlnLm1hcmtlcnMuaG92ZXIuc2l6ZU9mZnNldCsxKSx0Lmdsb2JhbHMubWFya2Vycy5sYXJnZXN0U2l6ZT1lLGV9fSx7a2V5OlwiZ2V0U2VyaWVzVG90YWxzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7dC5nbG9iYWxzLnNlcmllc1RvdGFscz10Lmdsb2JhbHMuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCxlKXt2YXIgaT0wO2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKHZhciBhPTA7YTx0Lmxlbmd0aDthKyspaSs9dFthXTtlbHNlIGkrPXQ7cmV0dXJuIGl9KSl9fSx7a2V5OlwiZ2V0U2VyaWVzVG90YWxzWFJhbmdlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7cmV0dXJuIGkuZ2xvYmFscy5zZXJpZXMubWFwKChmdW5jdGlvbihhLHMpe2Zvcih2YXIgcj0wLG89MDtvPGEubGVuZ3RoO28rKylpLmdsb2JhbHMuc2VyaWVzWFtzXVtvXT50JiZpLmdsb2JhbHMuc2VyaWVzWFtzXVtvXTxlJiYocis9YVtvXSk7cmV0dXJuIHJ9KSl9fSx7a2V5OlwiZ2V0UGVyY2VudFNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O3QuZ2xvYmFscy5zZXJpZXNQZXJjZW50PXQuZ2xvYmFscy5zZXJpZXMubWFwKChmdW5jdGlvbihlLGkpe3ZhciBhPVtdO2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKHZhciBzPTA7czxlLmxlbmd0aDtzKyspe3ZhciByPXQuZ2xvYmFscy5zdGFja2VkU2VyaWVzVG90YWxzW3NdLG89MDtyJiYobz0xMDAqZVtzXS9yKSxhLnB1c2gobyl9ZWxzZXt2YXIgbj0xMDAqZS90Lmdsb2JhbHMuc2VyaWVzVG90YWxzLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlfSksMCk7YS5wdXNoKG4pfXJldHVybiBhfSkpfX0se2tleTpcImdldENhbGN1bGF0ZWRSYXRpb3NcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0LGUsaSxhLHM9dGhpcy53Lmdsb2JhbHMscj1bXSxvPTAsbj1bXSxsPS4xLGg9MDtpZihzLnlSYW5nZT1bXSxzLmlzTXVsdGlwbGVZQXhpcylmb3IodmFyIGM9MDtjPHMubWluWUFyci5sZW5ndGg7YysrKXMueVJhbmdlLnB1c2goTWF0aC5hYnMocy5taW5ZQXJyW2NdLXMubWF4WUFycltjXSkpLG4ucHVzaCgwKTtlbHNlIHMueVJhbmdlLnB1c2goTWF0aC5hYnMocy5taW5ZLXMubWF4WSkpO3MueFJhbmdlPU1hdGguYWJzKHMubWF4WC1zLm1pblgpLHMuelJhbmdlPU1hdGguYWJzKHMubWF4Wi1zLm1pblopO2Zvcih2YXIgZD0wO2Q8cy55UmFuZ2UubGVuZ3RoO2QrKylyLnB1c2gocy55UmFuZ2VbZF0vcy5ncmlkSGVpZ2h0KTtpZihlPXMueFJhbmdlL3MuZ3JpZFdpZHRoLGk9TWF0aC5hYnMocy5pbml0aWFsTWF4WC1zLmluaXRpYWxNaW5YKS9zLmdyaWRXaWR0aCx0PXMueVJhbmdlL3MuZ3JpZFdpZHRoLGE9cy54UmFuZ2Uvcy5ncmlkSGVpZ2h0LChvPXMuelJhbmdlL3MuZ3JpZEhlaWdodCoxNil8fChvPTEpLHMubWluWSE9PU51bWJlci5NSU5fVkFMVUUmJjAhPT1NYXRoLmFicyhzLm1pblkpJiYocy5oYXNOZWdzPSEwKSxzLmlzTXVsdGlwbGVZQXhpcyl7bj1bXTtmb3IodmFyIGc9MDtnPHIubGVuZ3RoO2crKyluLnB1c2goLXMubWluWUFycltnXS9yW2ddKX1lbHNlIG4ucHVzaCgtcy5taW5ZL3JbMF0pLHMubWluWSE9PU51bWJlci5NSU5fVkFMVUUmJjAhPT1NYXRoLmFicyhzLm1pblkpJiYobD0tcy5taW5ZL3QsaD1zLm1pblgvZSk7cmV0dXJue3lSYXRpbzpyLGludmVydGVkWVJhdGlvOnQselJhdGlvOm8seFJhdGlvOmUsaW5pdGlhbFhSYXRpbzppLGludmVydGVkWFJhdGlvOmEsYmFzZUxpbmVJbnZlcnRlZFk6bCxiYXNlTGluZVk6bixiYXNlTGluZVg6aH19fSx7a2V5OlwiZ2V0TG9nU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXRoaXMudztyZXR1cm4gaS5nbG9iYWxzLnNlcmllc0xvZz10Lm1hcCgoZnVuY3Rpb24odCxhKXtyZXR1cm4gaS5jb25maWcueWF4aXNbYV0mJmkuY29uZmlnLnlheGlzW2FdLmxvZ2FyaXRobWljP3QubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09PXQ/bnVsbDplLmdldExvZ1ZhbChpLmNvbmZpZy55YXhpc1thXS5sb2dCYXNlLHQsYSl9KSk6dH0pKSxpLmdsb2JhbHMuaW52YWxpZExvZ1NjYWxlP3Q6aS5nbG9iYWxzLnNlcmllc0xvZ319LHtrZXk6XCJnZXRCYXNlTG9nXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gTWF0aC5sb2coZSkvTWF0aC5sb2codCl9fSx7a2V5OlwiZ2V0TG9nVmFsXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe2lmKDA9PT1lKXJldHVybiAwO3ZhciBhPXRoaXMudyxzPTA9PT1hLmdsb2JhbHMubWluWUFycltpXT8tMTp0aGlzLmdldEJhc2VMb2codCxhLmdsb2JhbHMubWluWUFycltpXSkscj0oMD09PWEuZ2xvYmFscy5tYXhZQXJyW2ldPzA6dGhpcy5nZXRCYXNlTG9nKHQsYS5nbG9iYWxzLm1heFlBcnJbaV0pKS1zO3JldHVybiBlPDE/ZS9yOih0aGlzLmdldEJhc2VMb2codCxlKS1zKS9yfX0se2tleTpcImdldExvZ1lSYXRpb3NcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dGhpcy53LGE9dGhpcy53Lmdsb2JhbHM7cmV0dXJuIGEueUxvZ1JhdGlvPXQuc2xpY2UoKSxhLmxvZ1lSYW5nZT1hLnlSYW5nZS5tYXAoKGZ1bmN0aW9uKHQscyl7aWYoaS5jb25maWcueWF4aXNbc10mJmUudy5jb25maWcueWF4aXNbc10ubG9nYXJpdGhtaWMpe3ZhciByLG89LU51bWJlci5NQVhfVkFMVUUsbj1OdW1iZXIuTUlOX1ZBTFVFO3JldHVybiBhLnNlcmllc0xvZy5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7aS5jb25maWcueWF4aXNbZV0mJmkuY29uZmlnLnlheGlzW2VdLmxvZ2FyaXRobWljJiYobz1NYXRoLm1heCh0LG8pLG49TWF0aC5taW4odCxuKSl9KSl9KSkscj1NYXRoLnBvdyhhLnlSYW5nZVtzXSxNYXRoLmFicyhuLW8pL2EueVJhbmdlW3NdKSxhLnlMb2dSYXRpb1tzXT1yL2EuZ3JpZEhlaWdodCxyfX0pKSxhLmludmFsaWRMb2dTY2FsZT90LnNsaWNlKCk6YS55TG9nUmF0aW99fV0sW3trZXk6XCJjaGVja0NvbWJvU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9ITEsaT0wLGE9MDtyZXR1cm4gdC5sZW5ndGgmJnZvaWQgMCE9PXRbMF0udHlwZSYmdC5mb3JFYWNoKChmdW5jdGlvbih0KXtcImJhclwiIT09dC50eXBlJiZcImNvbHVtblwiIT09dC50eXBlJiZcImNhbmRsZXN0aWNrXCIhPT10LnR5cGUmJlwiYm94UGxvdFwiIT09dC50eXBlfHxpKyssdm9pZCAwIT09dC50eXBlJiZhKyt9KSksYT4wJiYoZT0hMCkse2NvbWJvQmFyQ291bnQ6aSxjb21ib0NoYXJ0czplfX19LHtrZXk6XCJleHRlbmRBcnJheVByb3BzXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3JldHVybiBlLnlheGlzJiYoZT10LmV4dGVuZFlBeGlzKGUsaSkpLGUuYW5ub3RhdGlvbnMmJihlLmFubm90YXRpb25zLnlheGlzJiYoZT10LmV4dGVuZFlBeGlzQW5ub3RhdGlvbnMoZSkpLGUuYW5ub3RhdGlvbnMueGF4aXMmJihlPXQuZXh0ZW5kWEF4aXNBbm5vdGF0aW9ucyhlKSksZS5hbm5vdGF0aW9ucy5wb2ludHMmJihlPXQuZXh0ZW5kUG9pbnRBbm5vdGF0aW9ucyhlKSkpLGV9fV0pLHR9KCksdz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy5hbm5vQ3R4PWV9cmV0dXJuIHIodCxbe2tleTpcInNldE9yaWVudGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpudWxsLGk9dGhpcy53O2lmKFwidmVydGljYWxcIj09PXQubGFiZWwub3JpZW50YXRpb24pe3ZhciBhPW51bGwhPT1lP2U6MCxzPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy14YXhpcy1hbm5vdGF0aW9ucyAuYXBleGNoYXJ0cy14YXhpcy1hbm5vdGF0aW9uLWxhYmVsW3JlbD0nXCIuY29uY2F0KGEsXCInXVwiKSk7aWYobnVsbCE9PXMpe3ZhciByPXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cy5zZXRBdHRyaWJ1dGUoXCJ4XCIscGFyc2VGbG9hdChzLmdldEF0dHJpYnV0ZShcInhcIikpLXIuaGVpZ2h0KzQpLFwidG9wXCI9PT10LmxhYmVsLnBvc2l0aW9uP3Muc2V0QXR0cmlidXRlKFwieVwiLHBhcnNlRmxvYXQocy5nZXRBdHRyaWJ1dGUoXCJ5XCIpKStyLndpZHRoKTpzLnNldEF0dHJpYnV0ZShcInlcIixwYXJzZUZsb2F0KHMuZ2V0QXR0cmlidXRlKFwieVwiKSktci53aWR0aCk7dmFyIG89dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLnJvdGF0ZUFyb3VuZENlbnRlcihzKSxuPW8ueCxsPW8ueTtzLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLFwicm90YXRlKC05MCBcIi5jb25jYXQobixcIiBcIikuY29uY2F0KGwsXCIpXCIpKX19fX0se2tleTpcImFkZEJhY2tncm91bmRUb0Fubm9cIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztpZighdHx8dm9pZCAwPT09ZS5sYWJlbC50ZXh0fHx2b2lkIDAhPT1lLmxhYmVsLnRleHQmJiFTdHJpbmcoZS5sYWJlbC50ZXh0KS50cmltKCkpcmV0dXJuIG51bGw7dmFyIGE9aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWdyaWRcIikuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscz10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHI9ZS5sYWJlbC5zdHlsZS5wYWRkaW5nLmxlZnQsbz1lLmxhYmVsLnN0eWxlLnBhZGRpbmcucmlnaHQsbj1lLmxhYmVsLnN0eWxlLnBhZGRpbmcudG9wLGw9ZS5sYWJlbC5zdHlsZS5wYWRkaW5nLmJvdHRvbTtcInZlcnRpY2FsXCI9PT1lLmxhYmVsLm9yaWVudGF0aW9uJiYobj1lLmxhYmVsLnN0eWxlLnBhZGRpbmcubGVmdCxsPWUubGFiZWwuc3R5bGUucGFkZGluZy5yaWdodCxyPWUubGFiZWwuc3R5bGUucGFkZGluZy50b3Asbz1lLmxhYmVsLnN0eWxlLnBhZGRpbmcuYm90dG9tKTt2YXIgaD1zLmxlZnQtYS5sZWZ0LXIsYz1zLnRvcC1hLnRvcC1uLGQ9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmRyYXdSZWN0KGgtaS5nbG9iYWxzLmJhclBhZEZvck51bWVyaWNBeGlzLGMscy53aWR0aCtyK28scy5oZWlnaHQrbitsLGUubGFiZWwuYm9yZGVyUmFkaXVzLGUubGFiZWwuc3R5bGUuYmFja2dyb3VuZCwxLGUubGFiZWwuYm9yZGVyV2lkdGgsZS5sYWJlbC5ib3JkZXJDb2xvciwwKTtyZXR1cm4gZS5pZCYmZC5ub2RlLmNsYXNzTGlzdC5hZGQoZS5pZCksZH19LHtrZXk6XCJhbm5vdGF0aW9uc0JhY2tncm91bmRcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncsaT1mdW5jdGlvbihpLGEscyl7dmFyIHI9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLVwiLmNvbmNhdChzLFwiLWFubm90YXRpb25zIC5hcGV4Y2hhcnRzLVwiKS5jb25jYXQocyxcIi1hbm5vdGF0aW9uLWxhYmVsW3JlbD0nXCIpLmNvbmNhdChhLFwiJ11cIikpO2lmKHIpe3ZhciBvPXIucGFyZW50Tm9kZSxuPXQuYWRkQmFja2dyb3VuZFRvQW5ubyhyLGkpO24mJihvLmluc2VydEJlZm9yZShuLm5vZGUsciksaS5sYWJlbC5tb3VzZUVudGVyJiZuLm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZW50ZXJcIixpLmxhYmVsLm1vdXNlRW50ZXIuYmluZCh0LGkpKSxpLmxhYmVsLm1vdXNlTGVhdmUmJm4ubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VsZWF2ZVwiLGkubGFiZWwubW91c2VMZWF2ZS5iaW5kKHQsaSkpLGkubGFiZWwuY2xpY2smJm4ubm9kZS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIixpLmxhYmVsLmNsaWNrLmJpbmQodCxpKSkpfX07ZS5jb25maWcuYW5ub3RhdGlvbnMueGF4aXMubWFwKChmdW5jdGlvbih0LGUpe2kodCxlLFwieGF4aXNcIil9KSksZS5jb25maWcuYW5ub3RhdGlvbnMueWF4aXMubWFwKChmdW5jdGlvbih0LGUpe2kodCxlLFwieWF4aXNcIil9KSksZS5jb25maWcuYW5ub3RhdGlvbnMucG9pbnRzLm1hcCgoZnVuY3Rpb24odCxlKXtpKHQsZSxcInBvaW50XCIpfSkpfX0se2tleTpcImdldFkxWTJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpLGE9XCJ5MVwiPT09dD9lLnk6ZS55MixzPXRoaXMudztpZih0aGlzLmFubm9DdHguaW52ZXJ0QXhpcyl7dmFyIHI9cy5nbG9iYWxzLmxhYmVscy5pbmRleE9mKGEpO3MuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmKHI9cy5nbG9iYWxzLmNhdGVnb3J5TGFiZWxzLmluZGV4T2YoYSkpO3ZhciBvPXMuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy15YXhpcy10ZXh0cy1nIHRleHQ6bnRoLWNoaWxkKFwiKyhyKzEpK1wiKVwiKTtvJiYoaT1wYXJzZUZsb2F0KG8uZ2V0QXR0cmlidXRlKFwieVwiKSkpfWVsc2V7dmFyIG47aWYocy5jb25maWcueWF4aXNbZS55QXhpc0luZGV4XS5sb2dhcml0aG1pYyluPShhPW5ldyB5KHRoaXMuYW5ub0N0eC5jdHgpLmdldExvZ1ZhbChhLGUueUF4aXNJbmRleCkpL3MuZ2xvYmFscy55TG9nUmF0aW9bZS55QXhpc0luZGV4XTtlbHNlIG49KGEtcy5nbG9iYWxzLm1pbllBcnJbZS55QXhpc0luZGV4XSkvKHMuZ2xvYmFscy55UmFuZ2VbZS55QXhpc0luZGV4XS9zLmdsb2JhbHMuZ3JpZEhlaWdodCk7aT1zLmdsb2JhbHMuZ3JpZEhlaWdodC1uLCFlLm1hcmtlcnx8dm9pZCAwIT09ZS55JiZudWxsIT09ZS55fHwoaT0wKSxzLmNvbmZpZy55YXhpc1tlLnlBeGlzSW5kZXhdJiZzLmNvbmZpZy55YXhpc1tlLnlBeGlzSW5kZXhdLnJldmVyc2VkJiYoaT1uKX1yZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgYSYmYS5pbmRleE9mKFwicHhcIik+LTEmJihpPXBhcnNlRmxvYXQoYSkpLGl9fSx7a2V5OlwiZ2V0WDFYMlwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9dGhpcy5hbm5vQ3R4LmludmVydEF4aXM/aS5nbG9iYWxzLm1pblk6aS5nbG9iYWxzLm1pblgscz10aGlzLmFubm9DdHguaW52ZXJ0QXhpcz9pLmdsb2JhbHMubWF4WTppLmdsb2JhbHMubWF4WCxyPXRoaXMuYW5ub0N0eC5pbnZlcnRBeGlzP2kuZ2xvYmFscy55UmFuZ2VbMF06aS5nbG9iYWxzLnhSYW5nZSxvPShlLngtYSkvKHIvaS5nbG9iYWxzLmdyaWRXaWR0aCk7dGhpcy5hbm5vQ3R4LmludmVyc2VkUmV2ZXJzZWRBeGlzJiYobz0ocy1lLngpLyhyL2kuZ2xvYmFscy5ncmlkV2lkdGgpKSxcImNhdGVnb3J5XCIhPT1pLmNvbmZpZy54YXhpcy50eXBlJiYhaS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljfHx0aGlzLmFubm9DdHguaW52ZXJ0QXhpc3x8aS5nbG9iYWxzLmRhdGFGb3JtYXRYTnVtZXJpY3x8KG89dGhpcy5nZXRTdHJpbmdYKGUueCkpO3ZhciBuPShlLngyLWEpLyhyL2kuZ2xvYmFscy5ncmlkV2lkdGgpO3JldHVybiB0aGlzLmFubm9DdHguaW52ZXJzZWRSZXZlcnNlZEF4aXMmJihuPShzLWUueDIpLyhyL2kuZ2xvYmFscy5ncmlkV2lkdGgpKSxcImNhdGVnb3J5XCIhPT1pLmNvbmZpZy54YXhpcy50eXBlJiYhaS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljfHx0aGlzLmFubm9DdHguaW52ZXJ0QXhpc3x8aS5nbG9iYWxzLmRhdGFGb3JtYXRYTnVtZXJpY3x8KG49dGhpcy5nZXRTdHJpbmdYKGUueDIpKSx2b2lkIDAhPT1lLngmJm51bGwhPT1lLnh8fCFlLm1hcmtlcnx8KG89aS5nbG9iYWxzLmdyaWRXaWR0aCksXCJ4MVwiPT09dCYmXCJzdHJpbmdcIj09dHlwZW9mIGUueCYmZS54LmluZGV4T2YoXCJweFwiKT4tMSYmKG89cGFyc2VGbG9hdChlLngpKSxcIngyXCI9PT10JiZcInN0cmluZ1wiPT10eXBlb2YgZS54MiYmZS54Mi5pbmRleE9mKFwicHhcIik+LTEmJihuPXBhcnNlRmxvYXQoZS54MikpLFwieDFcIj09PXQ/bzpufX0se2tleTpcImdldFN0cmluZ1hcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT10O2UuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmZS5nbG9iYWxzLmNhdGVnb3J5TGFiZWxzLmxlbmd0aCYmKHQ9ZS5nbG9iYWxzLmNhdGVnb3J5TGFiZWxzLmluZGV4T2YodCkrMSk7dmFyIGE9ZS5nbG9iYWxzLmxhYmVscy5pbmRleE9mKHQpLHM9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXhheGlzLXRleHRzLWcgdGV4dDpudGgtY2hpbGQoXCIrKGErMSkrXCIpXCIpO3JldHVybiBzJiYoaT1wYXJzZUZsb2F0KHMuZ2V0QXR0cmlidXRlKFwieFwiKSkpLGl9fV0pLHR9KCksaz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy5hbm5vQ3R4PWUsdGhpcy5pbnZlcnRBeGlzPXRoaXMuYW5ub0N0eC5pbnZlcnRBeGlzLHRoaXMuaGVscGVycz1uZXcgdyh0aGlzLmFubm9DdHgpfXJldHVybiByKHQsW3trZXk6XCJhZGRYYXhpc0Fubm90YXRpb25cIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGEscz10aGlzLncscj10aGlzLmhlbHBlcnMuZ2V0WDFYMihcIngxXCIsdCksbz10LmxhYmVsLnRleHQsbj10LnN0cm9rZURhc2hBcnJheTtpZih4LmlzTnVtYmVyKHIpKXtpZihudWxsPT09dC54Mnx8dm9pZCAwPT09dC54Mil7dmFyIGw9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmRyYXdMaW5lKHIrdC5vZmZzZXRYLDArdC5vZmZzZXRZLHIrdC5vZmZzZXRYLHMuZ2xvYmFscy5ncmlkSGVpZ2h0K3Qub2Zmc2V0WSx0LmJvcmRlckNvbG9yLG4sdC5ib3JkZXJXaWR0aCk7ZS5hcHBlbmRDaGlsZChsLm5vZGUpLHQuaWQmJmwubm9kZS5jbGFzc0xpc3QuYWRkKHQuaWQpfWVsc2V7aWYoKGE9dGhpcy5oZWxwZXJzLmdldFgxWDIoXCJ4MlwiLHQpKTxyKXt2YXIgaD1yO3I9YSxhPWh9dmFyIGM9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmRyYXdSZWN0KHIrdC5vZmZzZXRYLDArdC5vZmZzZXRZLGEtcixzLmdsb2JhbHMuZ3JpZEhlaWdodCt0Lm9mZnNldFksMCx0LmZpbGxDb2xvcix0Lm9wYWNpdHksMSx0LmJvcmRlckNvbG9yLG4pO2Mubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1hbm5vdGF0aW9uLXJlY3RcIiksYy5hdHRyKFwiY2xpcC1wYXRoXCIsXCJ1cmwoI2dyaWRSZWN0TWFza1wiLmNvbmNhdChzLmdsb2JhbHMuY3VpZCxcIilcIikpLGUuYXBwZW5kQ2hpbGQoYy5ub2RlKSx0LmlkJiZjLm5vZGUuY2xhc3NMaXN0LmFkZCh0LmlkKX12YXIgZD10aGlzLmFubm9DdHguZ3JhcGhpY3MuZ2V0VGV4dFJlY3RzKG8scGFyc2VGbG9hdCh0LmxhYmVsLnN0eWxlLmZvbnRTaXplKSksZz1cInRvcFwiPT09dC5sYWJlbC5wb3NpdGlvbj80OlwiY2VudGVyXCI9PT10LmxhYmVsLnBvc2l0aW9uP3MuZ2xvYmFscy5ncmlkSGVpZ2h0LzIrKFwidmVydGljYWxcIj09PXQubGFiZWwub3JpZW50YXRpb24/ZC53aWR0aC8yOjApOnMuZ2xvYmFscy5ncmlkSGVpZ2h0LHU9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmRyYXdUZXh0KHt4OnIrdC5sYWJlbC5vZmZzZXRYLHk6Zyt0LmxhYmVsLm9mZnNldFktKFwidmVydGljYWxcIj09PXQubGFiZWwub3JpZW50YXRpb24/XCJ0b3BcIj09PXQubGFiZWwucG9zaXRpb24/ZC53aWR0aC8yLTEyOi1kLndpZHRoLzI6MCksdGV4dDpvLHRleHRBbmNob3I6dC5sYWJlbC50ZXh0QW5jaG9yLGZvbnRTaXplOnQubGFiZWwuc3R5bGUuZm9udFNpemUsZm9udEZhbWlseTp0LmxhYmVsLnN0eWxlLmZvbnRGYW1pbHksZm9udFdlaWdodDp0LmxhYmVsLnN0eWxlLmZvbnRXZWlnaHQsZm9yZUNvbG9yOnQubGFiZWwuc3R5bGUuY29sb3IsY3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzLWFubm90YXRpb24tbGFiZWwgXCIuY29uY2F0KHQubGFiZWwuc3R5bGUuY3NzQ2xhc3MsXCIgXCIpLmNvbmNhdCh0LmlkP3QuaWQ6XCJcIil9KTt1LmF0dHIoe3JlbDppfSksZS5hcHBlbmRDaGlsZCh1Lm5vZGUpLHRoaXMuYW5ub0N0eC5oZWxwZXJzLnNldE9yaWVudGF0aW9ucyh0LGkpfX19LHtrZXk6XCJkcmF3WEF4aXNBbm5vdGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudyxpPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzLWFubm90YXRpb25zXCJ9KTtyZXR1cm4gZS5jb25maWcuYW5ub3RhdGlvbnMueGF4aXMubWFwKChmdW5jdGlvbihlLGEpe3QuYWRkWGF4aXNBbm5vdGF0aW9uKGUsaS5ub2RlLGEpfSkpLGl9fV0pLHR9KCksQT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy5hbm5vQ3R4PWUsdGhpcy5oZWxwZXJzPW5ldyB3KHRoaXMuYW5ub0N0eCl9cmV0dXJuIHIodCxbe2tleTpcImFkZFlheGlzQW5ub3RhdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYSxzPXRoaXMudyxyPXQuc3Ryb2tlRGFzaEFycmF5LG89dGhpcy5oZWxwZXJzLmdldFkxWTIoXCJ5MVwiLHQpLG49dC5sYWJlbC50ZXh0O2lmKG51bGw9PT10LnkyfHx2b2lkIDA9PT10LnkyKXt2YXIgbD10aGlzLmFubm9DdHguZ3JhcGhpY3MuZHJhd0xpbmUoMCt0Lm9mZnNldFgsbyt0Lm9mZnNldFksdGhpcy5fZ2V0WUF4aXNBbm5vdGF0aW9uV2lkdGgodCksbyt0Lm9mZnNldFksdC5ib3JkZXJDb2xvcixyLHQuYm9yZGVyV2lkdGgpO2UuYXBwZW5kQ2hpbGQobC5ub2RlKSx0LmlkJiZsLm5vZGUuY2xhc3NMaXN0LmFkZCh0LmlkKX1lbHNle2lmKChhPXRoaXMuaGVscGVycy5nZXRZMVkyKFwieTJcIix0KSk+byl7dmFyIGg9bztvPWEsYT1ofXZhciBjPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5kcmF3UmVjdCgwK3Qub2Zmc2V0WCxhK3Qub2Zmc2V0WSx0aGlzLl9nZXRZQXhpc0Fubm90YXRpb25XaWR0aCh0KSxvLWEsMCx0LmZpbGxDb2xvcix0Lm9wYWNpdHksMSx0LmJvcmRlckNvbG9yLHIpO2Mubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1hbm5vdGF0aW9uLXJlY3RcIiksYy5hdHRyKFwiY2xpcC1wYXRoXCIsXCJ1cmwoI2dyaWRSZWN0TWFza1wiLmNvbmNhdChzLmdsb2JhbHMuY3VpZCxcIilcIikpLGUuYXBwZW5kQ2hpbGQoYy5ub2RlKSx0LmlkJiZjLm5vZGUuY2xhc3NMaXN0LmFkZCh0LmlkKX12YXIgZD1cInJpZ2h0XCI9PT10LmxhYmVsLnBvc2l0aW9uP3MuZ2xvYmFscy5ncmlkV2lkdGg6XCJjZW50ZXJcIj09PXQubGFiZWwucG9zaXRpb24/cy5nbG9iYWxzLmdyaWRXaWR0aC8yOjAsZz10aGlzLmFubm9DdHguZ3JhcGhpY3MuZHJhd1RleHQoe3g6ZCt0LmxhYmVsLm9mZnNldFgseToobnVsbCE9YT9hOm8pK3QubGFiZWwub2Zmc2V0WS0zLHRleHQ6bix0ZXh0QW5jaG9yOnQubGFiZWwudGV4dEFuY2hvcixmb250U2l6ZTp0LmxhYmVsLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6dC5sYWJlbC5zdHlsZS5mb250RmFtaWx5LGZvbnRXZWlnaHQ6dC5sYWJlbC5zdHlsZS5mb250V2VpZ2h0LGZvcmVDb2xvcjp0LmxhYmVsLnN0eWxlLmNvbG9yLGNzc0NsYXNzOlwiYXBleGNoYXJ0cy15YXhpcy1hbm5vdGF0aW9uLWxhYmVsIFwiLmNvbmNhdCh0LmxhYmVsLnN0eWxlLmNzc0NsYXNzLFwiIFwiKS5jb25jYXQodC5pZD90LmlkOlwiXCIpfSk7Zy5hdHRyKHtyZWw6aX0pLGUuYXBwZW5kQ2hpbGQoZy5ub2RlKX19LHtrZXk6XCJfZ2V0WUF4aXNBbm5vdGF0aW9uV2lkdGhcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnc7ZS5nbG9iYWxzLmdyaWRXaWR0aDtyZXR1cm4odC53aWR0aC5pbmRleE9mKFwiJVwiKT4tMT9lLmdsb2JhbHMuZ3JpZFdpZHRoKnBhcnNlSW50KHQud2lkdGgsMTApLzEwMDpwYXJzZUludCh0LndpZHRoLDEwKSkrdC5vZmZzZXRYfX0se2tleTpcImRyYXdZQXhpc0Fubm90YXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteWF4aXMtYW5ub3RhdGlvbnNcIn0pO3JldHVybiBlLmNvbmZpZy5hbm5vdGF0aW9ucy55YXhpcy5tYXAoKGZ1bmN0aW9uKGUsYSl7dC5hZGRZYXhpc0Fubm90YXRpb24oZSxpLm5vZGUsYSl9KSksaX19XSksdH0oKSxTPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLmFubm9DdHg9ZSx0aGlzLmhlbHBlcnM9bmV3IHcodGhpcy5hbm5vQ3R4KX1yZXR1cm4gcih0LFt7a2V5OlwiYWRkUG9pbnRBbm5vdGF0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3RoaXMudzt2YXIgYT10aGlzLmhlbHBlcnMuZ2V0WDFYMihcIngxXCIsdCkscz10aGlzLmhlbHBlcnMuZ2V0WTFZMihcInkxXCIsdCk7aWYoeC5pc051bWJlcihhKSl7dmFyIHI9e3BTaXplOnQubWFya2VyLnNpemUscG9pbnRTdHJva2VXaWR0aDp0Lm1hcmtlci5zdHJva2VXaWR0aCxwb2ludEZpbGxDb2xvcjp0Lm1hcmtlci5maWxsQ29sb3IscG9pbnRTdHJva2VDb2xvcjp0Lm1hcmtlci5zdHJva2VDb2xvcixzaGFwZTp0Lm1hcmtlci5zaGFwZSxwUmFkaXVzOnQubWFya2VyLnJhZGl1cyxjbGFzczpcImFwZXhjaGFydHMtcG9pbnQtYW5ub3RhdGlvbi1tYXJrZXIgXCIuY29uY2F0KHQubWFya2VyLmNzc0NsYXNzLFwiIFwiKS5jb25jYXQodC5pZD90LmlkOlwiXCIpfSxvPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5kcmF3TWFya2VyKGErdC5tYXJrZXIub2Zmc2V0WCxzK3QubWFya2VyLm9mZnNldFkscik7ZS5hcHBlbmRDaGlsZChvLm5vZGUpO3ZhciBuPXQubGFiZWwudGV4dD90LmxhYmVsLnRleHQ6XCJcIixsPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5kcmF3VGV4dCh7eDphK3QubGFiZWwub2Zmc2V0WCx5OnMrdC5sYWJlbC5vZmZzZXRZLXQubWFya2VyLnNpemUtcGFyc2VGbG9hdCh0LmxhYmVsLnN0eWxlLmZvbnRTaXplKS8xLjYsdGV4dDpuLHRleHRBbmNob3I6dC5sYWJlbC50ZXh0QW5jaG9yLGZvbnRTaXplOnQubGFiZWwuc3R5bGUuZm9udFNpemUsZm9udEZhbWlseTp0LmxhYmVsLnN0eWxlLmZvbnRGYW1pbHksZm9udFdlaWdodDp0LmxhYmVsLnN0eWxlLmZvbnRXZWlnaHQsZm9yZUNvbG9yOnQubGFiZWwuc3R5bGUuY29sb3IsY3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLXBvaW50LWFubm90YXRpb24tbGFiZWwgXCIuY29uY2F0KHQubGFiZWwuc3R5bGUuY3NzQ2xhc3MsXCIgXCIpLmNvbmNhdCh0LmlkP3QuaWQ6XCJcIil9KTtpZihsLmF0dHIoe3JlbDppfSksZS5hcHBlbmRDaGlsZChsLm5vZGUpLHQuY3VzdG9tU1ZHLlNWRyl7dmFyIGg9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtcG9pbnQtYW5ub3RhdGlvbnMtY3VzdG9tLXN2ZyBcIit0LmN1c3RvbVNWRy5jc3NDbGFzc30pO2guYXR0cih7dHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiLmNvbmNhdChhK3QuY3VzdG9tU1ZHLm9mZnNldFgsXCIsIFwiKS5jb25jYXQocyt0LmN1c3RvbVNWRy5vZmZzZXRZLFwiKVwiKX0pLGgubm9kZS5pbm5lckhUTUw9dC5jdXN0b21TVkcuU1ZHLGUuYXBwZW5kQ2hpbGQoaC5ub2RlKX1pZih0LmltYWdlLnBhdGgpe3ZhciBjPXQuaW1hZ2Uud2lkdGg/dC5pbWFnZS53aWR0aDoyMCxkPXQuaW1hZ2UuaGVpZ2h0P3QuaW1hZ2UuaGVpZ2h0OjIwO289dGhpcy5hbm5vQ3R4LmFkZEltYWdlKHt4OmErdC5pbWFnZS5vZmZzZXRYLWMvMix5OnMrdC5pbWFnZS5vZmZzZXRZLWQvMix3aWR0aDpjLGhlaWdodDpkLHBhdGg6dC5pbWFnZS5wYXRoLGFwcGVuZFRvOlwiLmFwZXhjaGFydHMtcG9pbnQtYW5ub3RhdGlvbnNcIn0pfXQubW91c2VFbnRlciYmby5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWVudGVyXCIsdC5tb3VzZUVudGVyLmJpbmQodGhpcyx0KSksdC5tb3VzZUxlYXZlJiZvLm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIix0Lm1vdXNlTGVhdmUuYmluZCh0aGlzLHQpKSx0LmNsaWNrJiZvLm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdC5jbGljay5iaW5kKHRoaXMsdCkpfX19LHtrZXk6XCJkcmF3UG9pbnRBbm5vdGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudyxpPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXBvaW50LWFubm90YXRpb25zXCJ9KTtyZXR1cm4gZS5jb25maWcuYW5ub3RhdGlvbnMucG9pbnRzLm1hcCgoZnVuY3Rpb24oZSxhKXt0LmFkZFBvaW50QW5ub3RhdGlvbihlLGkubm9kZSxhKX0pKSxpfX1dKSx0fSgpO3ZhciBDPXtuYW1lOlwiZW5cIixvcHRpb25zOnttb250aHM6W1wiSmFudWFyeVwiLFwiRmVicnVhcnlcIixcIk1hcmNoXCIsXCJBcHJpbFwiLFwiTWF5XCIsXCJKdW5lXCIsXCJKdWx5XCIsXCJBdWd1c3RcIixcIlNlcHRlbWJlclwiLFwiT2N0b2JlclwiLFwiTm92ZW1iZXJcIixcIkRlY2VtYmVyXCJdLHNob3J0TW9udGhzOltcIkphblwiLFwiRmViXCIsXCJNYXJcIixcIkFwclwiLFwiTWF5XCIsXCJKdW5cIixcIkp1bFwiLFwiQXVnXCIsXCJTZXBcIixcIk9jdFwiLFwiTm92XCIsXCJEZWNcIl0sZGF5czpbXCJTdW5kYXlcIixcIk1vbmRheVwiLFwiVHVlc2RheVwiLFwiV2VkbmVzZGF5XCIsXCJUaHVyc2RheVwiLFwiRnJpZGF5XCIsXCJTYXR1cmRheVwiXSxzaG9ydERheXM6W1wiU3VuXCIsXCJNb25cIixcIlR1ZVwiLFwiV2VkXCIsXCJUaHVcIixcIkZyaVwiLFwiU2F0XCJdLHRvb2xiYXI6e2V4cG9ydFRvU1ZHOlwiRG93bmxvYWQgU1ZHXCIsZXhwb3J0VG9QTkc6XCJEb3dubG9hZCBQTkdcIixleHBvcnRUb0NTVjpcIkRvd25sb2FkIENTVlwiLG1lbnU6XCJNZW51XCIsc2VsZWN0aW9uOlwiU2VsZWN0aW9uXCIsc2VsZWN0aW9uWm9vbTpcIlNlbGVjdGlvbiBab29tXCIsem9vbUluOlwiWm9vbSBJblwiLHpvb21PdXQ6XCJab29tIE91dFwiLHBhbjpcIlBhbm5pbmdcIixyZXNldDpcIlJlc2V0IFpvb21cIn19fSxMPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe2EodGhpcyx0KSx0aGlzLnlBeGlzPXtzaG93OiEwLHNob3dBbHdheXM6ITEsc2hvd0Zvck51bGxTZXJpZXM6ITAsc2VyaWVzTmFtZTp2b2lkIDAsb3Bwb3NpdGU6ITEscmV2ZXJzZWQ6ITEsbG9nYXJpdGhtaWM6ITEsbG9nQmFzZToxMCx0aWNrQW1vdW50OnZvaWQgMCxmb3JjZU5pY2VTY2FsZTohMSxtYXg6dm9pZCAwLG1pbjp2b2lkIDAsZmxvYXRpbmc6ITEsZGVjaW1hbHNJbkZsb2F0OnZvaWQgMCxsYWJlbHM6e3Nob3c6ITAsbWluV2lkdGg6MCxtYXhXaWR0aDoxNjAsb2Zmc2V0WDowLG9mZnNldFk6MCxhbGlnbjp2b2lkIDAscm90YXRlOjAscGFkZGluZzoyMCxzdHlsZTp7Y29sb3JzOltdLGZvbnRTaXplOlwiMTFweFwiLGZvbnRXZWlnaHQ6NDAwLGZvbnRGYW1pbHk6dm9pZCAwLGNzc0NsYXNzOlwiXCJ9LGZvcm1hdHRlcjp2b2lkIDB9LGF4aXNCb3JkZXI6e3Nob3c6ITEsY29sb3I6XCIjZTBlMGUwXCIsd2lkdGg6MSxvZmZzZXRYOjAsb2Zmc2V0WTowfSxheGlzVGlja3M6e3Nob3c6ITEsY29sb3I6XCIjZTBlMGUwXCIsd2lkdGg6NixvZmZzZXRYOjAsb2Zmc2V0WTowfSx0aXRsZTp7dGV4dDp2b2lkIDAscm90YXRlOi05MCxvZmZzZXRZOjAsb2Zmc2V0WDowLHN0eWxlOntjb2xvcjp2b2lkIDAsZm9udFNpemU6XCIxMXB4XCIsZm9udFdlaWdodDo5MDAsZm9udEZhbWlseTp2b2lkIDAsY3NzQ2xhc3M6XCJcIn19LHRvb2x0aXA6e2VuYWJsZWQ6ITEsb2Zmc2V0WDowfSxjcm9zc2hhaXJzOntzaG93OiEwLHBvc2l0aW9uOlwiZnJvbnRcIixzdHJva2U6e2NvbG9yOlwiI2I2YjZiNlwiLHdpZHRoOjEsZGFzaEFycmF5OjB9fX0sdGhpcy5wb2ludEFubm90YXRpb249e2lkOnZvaWQgMCx4OjAseTpudWxsLHlBeGlzSW5kZXg6MCxzZXJpZXNJbmRleDowLG1vdXNlRW50ZXI6dm9pZCAwLG1vdXNlTGVhdmU6dm9pZCAwLGNsaWNrOnZvaWQgMCxtYXJrZXI6e3NpemU6NCxmaWxsQ29sb3I6XCIjZmZmXCIsc3Ryb2tlV2lkdGg6MixzdHJva2VDb2xvcjpcIiMzMzNcIixzaGFwZTpcImNpcmNsZVwiLG9mZnNldFg6MCxvZmZzZXRZOjAscmFkaXVzOjIsY3NzQ2xhc3M6XCJcIn0sbGFiZWw6e2JvcmRlckNvbG9yOlwiI2MyYzJjMlwiLGJvcmRlcldpZHRoOjEsYm9yZGVyUmFkaXVzOjIsdGV4dDp2b2lkIDAsdGV4dEFuY2hvcjpcIm1pZGRsZVwiLG9mZnNldFg6MCxvZmZzZXRZOjAsbW91c2VFbnRlcjp2b2lkIDAsbW91c2VMZWF2ZTp2b2lkIDAsY2xpY2s6dm9pZCAwLHN0eWxlOntiYWNrZ3JvdW5kOlwiI2ZmZlwiLGNvbG9yOnZvaWQgMCxmb250U2l6ZTpcIjExcHhcIixmb250RmFtaWx5OnZvaWQgMCxmb250V2VpZ2h0OjQwMCxjc3NDbGFzczpcIlwiLHBhZGRpbmc6e2xlZnQ6NSxyaWdodDo1LHRvcDoyLGJvdHRvbToyfX19LGN1c3RvbVNWRzp7U1ZHOnZvaWQgMCxjc3NDbGFzczp2b2lkIDAsb2Zmc2V0WDowLG9mZnNldFk6MH0saW1hZ2U6e3BhdGg6dm9pZCAwLHdpZHRoOjIwLGhlaWdodDoyMCxvZmZzZXRYOjAsb2Zmc2V0WTowfX0sdGhpcy55QXhpc0Fubm90YXRpb249e2lkOnZvaWQgMCx5OjAseTI6bnVsbCxzdHJva2VEYXNoQXJyYXk6MSxmaWxsQ29sb3I6XCIjYzJjMmMyXCIsYm9yZGVyQ29sb3I6XCIjYzJjMmMyXCIsYm9yZGVyV2lkdGg6MSxvcGFjaXR5Oi4zLG9mZnNldFg6MCxvZmZzZXRZOjAsd2lkdGg6XCIxMDAlXCIseUF4aXNJbmRleDowLGxhYmVsOntib3JkZXJDb2xvcjpcIiNjMmMyYzJcIixib3JkZXJXaWR0aDoxLGJvcmRlclJhZGl1czoyLHRleHQ6dm9pZCAwLHRleHRBbmNob3I6XCJlbmRcIixwb3NpdGlvbjpcInJpZ2h0XCIsb2Zmc2V0WDowLG9mZnNldFk6LTMsbW91c2VFbnRlcjp2b2lkIDAsbW91c2VMZWF2ZTp2b2lkIDAsY2xpY2s6dm9pZCAwLHN0eWxlOntiYWNrZ3JvdW5kOlwiI2ZmZlwiLGNvbG9yOnZvaWQgMCxmb250U2l6ZTpcIjExcHhcIixmb250RmFtaWx5OnZvaWQgMCxmb250V2VpZ2h0OjQwMCxjc3NDbGFzczpcIlwiLHBhZGRpbmc6e2xlZnQ6NSxyaWdodDo1LHRvcDoyLGJvdHRvbToyfX19fSx0aGlzLnhBeGlzQW5ub3RhdGlvbj17aWQ6dm9pZCAwLHg6MCx4MjpudWxsLHN0cm9rZURhc2hBcnJheToxLGZpbGxDb2xvcjpcIiNjMmMyYzJcIixib3JkZXJDb2xvcjpcIiNjMmMyYzJcIixib3JkZXJXaWR0aDoxLG9wYWNpdHk6LjMsb2Zmc2V0WDowLG9mZnNldFk6MCxsYWJlbDp7Ym9yZGVyQ29sb3I6XCIjYzJjMmMyXCIsYm9yZGVyV2lkdGg6MSxib3JkZXJSYWRpdXM6Mix0ZXh0OnZvaWQgMCx0ZXh0QW5jaG9yOlwibWlkZGxlXCIsb3JpZW50YXRpb246XCJ2ZXJ0aWNhbFwiLHBvc2l0aW9uOlwidG9wXCIsb2Zmc2V0WDowLG9mZnNldFk6MCxtb3VzZUVudGVyOnZvaWQgMCxtb3VzZUxlYXZlOnZvaWQgMCxjbGljazp2b2lkIDAsc3R5bGU6e2JhY2tncm91bmQ6XCIjZmZmXCIsY29sb3I6dm9pZCAwLGZvbnRTaXplOlwiMTFweFwiLGZvbnRGYW1pbHk6dm9pZCAwLGZvbnRXZWlnaHQ6NDAwLGNzc0NsYXNzOlwiXCIscGFkZGluZzp7bGVmdDo1LHJpZ2h0OjUsdG9wOjIsYm90dG9tOjJ9fX19LHRoaXMudGV4dD17eDowLHk6MCx0ZXh0OlwiXCIsdGV4dEFuY2hvcjpcInN0YXJ0XCIsZm9yZUNvbG9yOnZvaWQgMCxmb250U2l6ZTpcIjEzcHhcIixmb250RmFtaWx5OnZvaWQgMCxmb250V2VpZ2h0OjQwMCxhcHBlbmRUbzpcIi5hcGV4Y2hhcnRzLWFubm90YXRpb25zXCIsYmFja2dyb3VuZENvbG9yOlwidHJhbnNwYXJlbnRcIixib3JkZXJDb2xvcjpcIiNjMmMyYzJcIixib3JkZXJSYWRpdXM6MCxib3JkZXJXaWR0aDowLHBhZGRpbmdMZWZ0OjQscGFkZGluZ1JpZ2h0OjQscGFkZGluZ1RvcDoyLHBhZGRpbmdCb3R0b206Mn19cmV0dXJuIHIodCxbe2tleTpcImluaXRcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybnthbm5vdGF0aW9uczp7eWF4aXM6W3RoaXMueUF4aXNBbm5vdGF0aW9uXSx4YXhpczpbdGhpcy54QXhpc0Fubm90YXRpb25dLHBvaW50czpbdGhpcy5wb2ludEFubm90YXRpb25dLHRleHRzOltdLGltYWdlczpbXSxzaGFwZXM6W119LGNoYXJ0OnthbmltYXRpb25zOntlbmFibGVkOiEwLGVhc2luZzpcImVhc2Vpbm91dFwiLHNwZWVkOjgwMCxhbmltYXRlR3JhZHVhbGx5OntkZWxheToxNTAsZW5hYmxlZDohMH0sZHluYW1pY0FuaW1hdGlvbjp7ZW5hYmxlZDohMCxzcGVlZDozNTB9fSxiYWNrZ3JvdW5kOlwidHJhbnNwYXJlbnRcIixsb2NhbGVzOltDXSxkZWZhdWx0TG9jYWxlOlwiZW5cIixkcm9wU2hhZG93OntlbmFibGVkOiExLGVuYWJsZWRPblNlcmllczp2b2lkIDAsdG9wOjIsbGVmdDoyLGJsdXI6NCxjb2xvcjpcIiMwMDBcIixvcGFjaXR5Oi4zNX0sZXZlbnRzOnthbmltYXRpb25FbmQ6dm9pZCAwLGJlZm9yZU1vdW50OnZvaWQgMCxtb3VudGVkOnZvaWQgMCx1cGRhdGVkOnZvaWQgMCxjbGljazp2b2lkIDAsbW91c2VNb3ZlOnZvaWQgMCxtb3VzZUxlYXZlOnZvaWQgMCx4QXhpc0xhYmVsQ2xpY2s6dm9pZCAwLGxlZ2VuZENsaWNrOnZvaWQgMCxtYXJrZXJDbGljazp2b2lkIDAsc2VsZWN0aW9uOnZvaWQgMCxkYXRhUG9pbnRTZWxlY3Rpb246dm9pZCAwLGRhdGFQb2ludE1vdXNlRW50ZXI6dm9pZCAwLGRhdGFQb2ludE1vdXNlTGVhdmU6dm9pZCAwLGJlZm9yZVpvb206dm9pZCAwLGJlZm9yZVJlc2V0Wm9vbTp2b2lkIDAsem9vbWVkOnZvaWQgMCxzY3JvbGxlZDp2b2lkIDAsYnJ1c2hTY3JvbGxlZDp2b2lkIDB9LGZvcmVDb2xvcjpcIiMzNzNkM2ZcIixmb250RmFtaWx5OlwiSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZlwiLGhlaWdodDpcImF1dG9cIixwYXJlbnRIZWlnaHRPZmZzZXQ6MTUscmVkcmF3T25QYXJlbnRSZXNpemU6ITAscmVkcmF3T25XaW5kb3dSZXNpemU6ITAsaWQ6dm9pZCAwLGdyb3VwOnZvaWQgMCxvZmZzZXRYOjAsb2Zmc2V0WTowLHNlbGVjdGlvbjp7ZW5hYmxlZDohMSx0eXBlOlwieFwiLGZpbGw6e2NvbG9yOlwiIzI0MjkyZVwiLG9wYWNpdHk6LjF9LHN0cm9rZTp7d2lkdGg6MSxjb2xvcjpcIiMyNDI5MmVcIixvcGFjaXR5Oi40LGRhc2hBcnJheTozfSx4YXhpczp7bWluOnZvaWQgMCxtYXg6dm9pZCAwfSx5YXhpczp7bWluOnZvaWQgMCxtYXg6dm9pZCAwfX0sc3BhcmtsaW5lOntlbmFibGVkOiExfSxicnVzaDp7ZW5hYmxlZDohMSxhdXRvU2NhbGVZYXhpczohMCx0YXJnZXQ6dm9pZCAwfSxzdGFja2VkOiExLHN0YWNrVHlwZTpcIm5vcm1hbFwiLHRvb2xiYXI6e3Nob3c6ITAsb2Zmc2V0WDowLG9mZnNldFk6MCx0b29sczp7ZG93bmxvYWQ6ITAsc2VsZWN0aW9uOiEwLHpvb206ITAsem9vbWluOiEwLHpvb21vdXQ6ITAscGFuOiEwLHJlc2V0OiEwLGN1c3RvbUljb25zOltdfSxleHBvcnQ6e2Nzdjp7ZmlsZW5hbWU6dm9pZCAwLGNvbHVtbkRlbGltaXRlcjpcIixcIixoZWFkZXJDYXRlZ29yeTpcImNhdGVnb3J5XCIsaGVhZGVyVmFsdWU6XCJ2YWx1ZVwiLGRhdGVGb3JtYXR0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBEYXRlKHQpLnRvRGF0ZVN0cmluZygpfX0scG5nOntmaWxlbmFtZTp2b2lkIDB9LHN2Zzp7ZmlsZW5hbWU6dm9pZCAwfX0sYXV0b1NlbGVjdGVkOlwiem9vbVwifSx0eXBlOlwibGluZVwiLHdpZHRoOlwiMTAwJVwiLHpvb206e2VuYWJsZWQ6ITAsdHlwZTpcInhcIixhdXRvU2NhbGVZYXhpczohMSx6b29tZWRBcmVhOntmaWxsOntjb2xvcjpcIiM5MENBRjlcIixvcGFjaXR5Oi40fSxzdHJva2U6e2NvbG9yOlwiIzBENDdBMVwiLG9wYWNpdHk6LjQsd2lkdGg6MX19fX0scGxvdE9wdGlvbnM6e2FyZWE6e2ZpbGxUbzpcIm9yaWdpblwifSxiYXI6e2hvcml6b250YWw6ITEsY29sdW1uV2lkdGg6XCI3MCVcIixiYXJIZWlnaHQ6XCI3MCVcIixkaXN0cmlidXRlZDohMSxib3JkZXJSYWRpdXM6MCxib3JkZXJSYWRpdXNBcHBsaWNhdGlvbjpcImFyb3VuZFwiLGJvcmRlclJhZGl1c1doZW5TdGFja2VkOlwibGFzdFwiLHJhbmdlQmFyT3ZlcmxhcDohMCxyYW5nZUJhckdyb3VwUm93czohMSxoaWRlWmVyb0JhcnNXaGVuR3JvdXBlZDohMSxpc0R1bWJiZWxsOiExLGR1bWJiZWxsQ29sb3JzOnZvaWQgMCxjb2xvcnM6e3JhbmdlczpbXSxiYWNrZ3JvdW5kQmFyQ29sb3JzOltdLGJhY2tncm91bmRCYXJPcGFjaXR5OjEsYmFja2dyb3VuZEJhclJhZGl1czowfSxkYXRhTGFiZWxzOntwb3NpdGlvbjpcInRvcFwiLG1heEl0ZW1zOjEwMCxoaWRlT3ZlcmZsb3dpbmdMYWJlbHM6ITAsb3JpZW50YXRpb246XCJob3Jpem9udGFsXCIsdG90YWw6e2VuYWJsZWQ6ITEsZm9ybWF0dGVyOnZvaWQgMCxvZmZzZXRYOjAsb2Zmc2V0WTowLHN0eWxlOntjb2xvcjpcIiMzNzNkM2ZcIixmb250U2l6ZTpcIjEycHhcIixmb250RmFtaWx5OnZvaWQgMCxmb250V2VpZ2h0OjYwMH19fX0sYnViYmxlOnt6U2NhbGluZzohMCxtaW5CdWJibGVSYWRpdXM6dm9pZCAwLG1heEJ1YmJsZVJhZGl1czp2b2lkIDB9LGNhbmRsZXN0aWNrOntjb2xvcnM6e3Vwd2FyZDpcIiMwMEI3NDZcIixkb3dud2FyZDpcIiNFRjQwM0NcIn0sd2ljazp7dXNlRmlsbENvbG9yOiEwfX0sYm94UGxvdDp7Y29sb3JzOnt1cHBlcjpcIiMwMEUzOTZcIixsb3dlcjpcIiMwMDhGRkJcIn19LGhlYXRtYXA6e3JhZGl1czoyLGVuYWJsZVNoYWRlczohMCxzaGFkZUludGVuc2l0eTouNSxyZXZlcnNlTmVnYXRpdmVTaGFkZTohMSxkaXN0cmlidXRlZDohMSx1c2VGaWxsQ29sb3JBc1N0cm9rZTohMSxjb2xvclNjYWxlOntpbnZlcnNlOiExLHJhbmdlczpbXSxtaW46dm9pZCAwLG1heDp2b2lkIDB9fSx0cmVlbWFwOntlbmFibGVTaGFkZXM6ITAsc2hhZGVJbnRlbnNpdHk6LjUsZGlzdHJpYnV0ZWQ6ITEscmV2ZXJzZU5lZ2F0aXZlU2hhZGU6ITEsdXNlRmlsbENvbG9yQXNTdHJva2U6ITEsY29sb3JTY2FsZTp7aW52ZXJzZTohMSxyYW5nZXM6W10sbWluOnZvaWQgMCxtYXg6dm9pZCAwfX0scmFkaWFsQmFyOntpbnZlcnNlT3JkZXI6ITEsc3RhcnRBbmdsZTowLGVuZEFuZ2xlOjM2MCxvZmZzZXRYOjAsb2Zmc2V0WTowLGhvbGxvdzp7bWFyZ2luOjUsc2l6ZTpcIjUwJVwiLGJhY2tncm91bmQ6XCJ0cmFuc3BhcmVudFwiLGltYWdlOnZvaWQgMCxpbWFnZVdpZHRoOjE1MCxpbWFnZUhlaWdodDoxNTAsaW1hZ2VPZmZzZXRYOjAsaW1hZ2VPZmZzZXRZOjAsaW1hZ2VDbGlwcGVkOiEwLHBvc2l0aW9uOlwiZnJvbnRcIixkcm9wU2hhZG93OntlbmFibGVkOiExLHRvcDowLGxlZnQ6MCxibHVyOjMsY29sb3I6XCIjMDAwXCIsb3BhY2l0eTouNX19LHRyYWNrOntzaG93OiEwLHN0YXJ0QW5nbGU6dm9pZCAwLGVuZEFuZ2xlOnZvaWQgMCxiYWNrZ3JvdW5kOlwiI2YyZjJmMlwiLHN0cm9rZVdpZHRoOlwiOTclXCIsb3BhY2l0eToxLG1hcmdpbjo1LGRyb3BTaGFkb3c6e2VuYWJsZWQ6ITEsdG9wOjAsbGVmdDowLGJsdXI6Myxjb2xvcjpcIiMwMDBcIixvcGFjaXR5Oi41fX0sZGF0YUxhYmVsczp7c2hvdzohMCxuYW1lOntzaG93OiEwLGZvbnRTaXplOlwiMTZweFwiLGZvbnRGYW1pbHk6dm9pZCAwLGZvbnRXZWlnaHQ6NjAwLGNvbG9yOnZvaWQgMCxvZmZzZXRZOjAsZm9ybWF0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0fX0sdmFsdWU6e3Nob3c6ITAsZm9udFNpemU6XCIxNHB4XCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo0MDAsY29sb3I6dm9pZCAwLG9mZnNldFk6MTYsZm9ybWF0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0K1wiJVwifX0sdG90YWw6e3Nob3c6ITEsbGFiZWw6XCJUb3RhbFwiLGZvbnRTaXplOlwiMTZweFwiLGZvbnRXZWlnaHQ6NjAwLGZvbnRGYW1pbHk6dm9pZCAwLGNvbG9yOnZvaWQgMCxmb3JtYXR0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2xvYmFscy5zZXJpZXNUb3RhbHMucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2V9KSwwKS90Lmdsb2JhbHMuc2VyaWVzLmxlbmd0aCtcIiVcIn19fX0scGllOntjdXN0b21TY2FsZToxLG9mZnNldFg6MCxvZmZzZXRZOjAsc3RhcnRBbmdsZTowLGVuZEFuZ2xlOjM2MCxleHBhbmRPbkNsaWNrOiEwLGRhdGFMYWJlbHM6e29mZnNldDowLG1pbkFuZ2xlVG9TaG93TGFiZWw6MTB9LGRvbnV0OntzaXplOlwiNjUlXCIsYmFja2dyb3VuZDpcInRyYW5zcGFyZW50XCIsbGFiZWxzOntzaG93OiExLG5hbWU6e3Nob3c6ITAsZm9udFNpemU6XCIxNnB4XCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo2MDAsY29sb3I6dm9pZCAwLG9mZnNldFk6LTEwLGZvcm1hdHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdH19LHZhbHVlOntzaG93OiEwLGZvbnRTaXplOlwiMjBweFwiLGZvbnRGYW1pbHk6dm9pZCAwLGZvbnRXZWlnaHQ6NDAwLGNvbG9yOnZvaWQgMCxvZmZzZXRZOjEwLGZvcm1hdHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdH19LHRvdGFsOntzaG93OiExLHNob3dBbHdheXM6ITEsbGFiZWw6XCJUb3RhbFwiLGZvbnRTaXplOlwiMTZweFwiLGZvbnRXZWlnaHQ6NDAwLGZvbnRGYW1pbHk6dm9pZCAwLGNvbG9yOnZvaWQgMCxmb3JtYXR0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2xvYmFscy5zZXJpZXNUb3RhbHMucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2V9KSwwKX19fX19LHBvbGFyQXJlYTp7cmluZ3M6e3N0cm9rZVdpZHRoOjEsc3Ryb2tlQ29sb3I6XCIjZThlOGU4XCJ9LHNwb2tlczp7c3Ryb2tlV2lkdGg6MSxjb25uZWN0b3JDb2xvcnM6XCIjZThlOGU4XCJ9fSxyYWRhcjp7c2l6ZTp2b2lkIDAsb2Zmc2V0WDowLG9mZnNldFk6MCxwb2x5Z29uczp7c3Ryb2tlV2lkdGg6MSxzdHJva2VDb2xvcnM6XCIjZThlOGU4XCIsY29ubmVjdG9yQ29sb3JzOlwiI2U4ZThlOFwiLGZpbGw6e2NvbG9yczp2b2lkIDB9fX19LGNvbG9yczp2b2lkIDAsZGF0YUxhYmVsczp7ZW5hYmxlZDohMCxlbmFibGVkT25TZXJpZXM6dm9pZCAwLGZvcm1hdHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9PXQ/dDpcIlwifSx0ZXh0QW5jaG9yOlwibWlkZGxlXCIsZGlzdHJpYnV0ZWQ6ITEsb2Zmc2V0WDowLG9mZnNldFk6MCxzdHlsZTp7Zm9udFNpemU6XCIxMnB4XCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo2MDAsY29sb3JzOnZvaWQgMH0sYmFja2dyb3VuZDp7ZW5hYmxlZDohMCxmb3JlQ29sb3I6XCIjZmZmXCIsYm9yZGVyUmFkaXVzOjIscGFkZGluZzo0LG9wYWNpdHk6LjksYm9yZGVyV2lkdGg6MSxib3JkZXJDb2xvcjpcIiNmZmZcIixkcm9wU2hhZG93OntlbmFibGVkOiExLHRvcDoxLGxlZnQ6MSxibHVyOjEsY29sb3I6XCIjMDAwXCIsb3BhY2l0eTouNDV9fSxkcm9wU2hhZG93OntlbmFibGVkOiExLHRvcDoxLGxlZnQ6MSxibHVyOjEsY29sb3I6XCIjMDAwXCIsb3BhY2l0eTouNDV9fSxmaWxsOnt0eXBlOlwic29saWRcIixjb2xvcnM6dm9pZCAwLG9wYWNpdHk6Ljg1LGdyYWRpZW50OntzaGFkZTpcImRhcmtcIix0eXBlOlwiaG9yaXpvbnRhbFwiLHNoYWRlSW50ZW5zaXR5Oi41LGdyYWRpZW50VG9Db2xvcnM6dm9pZCAwLGludmVyc2VDb2xvcnM6ITAsb3BhY2l0eUZyb206MSxvcGFjaXR5VG86MSxzdG9wczpbMCw1MCwxMDBdLGNvbG9yU3RvcHM6W119LGltYWdlOntzcmM6W10sd2lkdGg6dm9pZCAwLGhlaWdodDp2b2lkIDB9LHBhdHRlcm46e3N0eWxlOlwic3F1YXJlc1wiLHdpZHRoOjYsaGVpZ2h0OjYsc3Ryb2tlV2lkdGg6Mn19LGZvcmVjYXN0RGF0YVBvaW50czp7Y291bnQ6MCxmaWxsT3BhY2l0eTouNSxzdHJva2VXaWR0aDp2b2lkIDAsZGFzaEFycmF5OjR9LGdyaWQ6e3Nob3c6ITAsYm9yZGVyQ29sb3I6XCIjZTBlMGUwXCIsc3Ryb2tlRGFzaEFycmF5OjAscG9zaXRpb246XCJiYWNrXCIseGF4aXM6e2xpbmVzOntzaG93OiExfX0seWF4aXM6e2xpbmVzOntzaG93OiEwfX0scm93Ontjb2xvcnM6dm9pZCAwLG9wYWNpdHk6LjV9LGNvbHVtbjp7Y29sb3JzOnZvaWQgMCxvcGFjaXR5Oi41fSxwYWRkaW5nOnt0b3A6MCxyaWdodDoxMCxib3R0b206MCxsZWZ0OjEyfX0sbGFiZWxzOltdLGxlZ2VuZDp7c2hvdzohMCxzaG93Rm9yU2luZ2xlU2VyaWVzOiExLHNob3dGb3JOdWxsU2VyaWVzOiEwLHNob3dGb3JaZXJvU2VyaWVzOiEwLGZsb2F0aW5nOiExLHBvc2l0aW9uOlwiYm90dG9tXCIsaG9yaXpvbnRhbEFsaWduOlwiY2VudGVyXCIsaW52ZXJzZU9yZGVyOiExLGZvbnRTaXplOlwiMTJweFwiLGZvbnRGYW1pbHk6dm9pZCAwLGZvbnRXZWlnaHQ6NDAwLHdpZHRoOnZvaWQgMCxoZWlnaHQ6dm9pZCAwLGZvcm1hdHRlcjp2b2lkIDAsdG9vbHRpcEhvdmVyRm9ybWF0dGVyOnZvaWQgMCxvZmZzZXRYOi0yMCxvZmZzZXRZOjQsY3VzdG9tTGVnZW5kSXRlbXM6W10sbGFiZWxzOntjb2xvcnM6dm9pZCAwLHVzZVNlcmllc0NvbG9yczohMX0sbWFya2Vyczp7d2lkdGg6MTIsaGVpZ2h0OjEyLHN0cm9rZVdpZHRoOjAsZmlsbENvbG9yczp2b2lkIDAsc3Ryb2tlQ29sb3I6XCIjZmZmXCIscmFkaXVzOjEyLGN1c3RvbUhUTUw6dm9pZCAwLG9mZnNldFg6MCxvZmZzZXRZOjAsb25DbGljazp2b2lkIDB9LGl0ZW1NYXJnaW46e2hvcml6b250YWw6NSx2ZXJ0aWNhbDoyfSxvbkl0ZW1DbGljazp7dG9nZ2xlRGF0YVNlcmllczohMH0sb25JdGVtSG92ZXI6e2hpZ2hsaWdodERhdGFTZXJpZXM6ITB9fSxtYXJrZXJzOntkaXNjcmV0ZTpbXSxzaXplOjAsY29sb3JzOnZvaWQgMCxzdHJva2VDb2xvcnM6XCIjZmZmXCIsc3Ryb2tlV2lkdGg6MixzdHJva2VPcGFjaXR5Oi45LHN0cm9rZURhc2hBcnJheTowLGZpbGxPcGFjaXR5OjEsc2hhcGU6XCJjaXJjbGVcIix3aWR0aDo4LGhlaWdodDo4LHJhZGl1czoyLG9mZnNldFg6MCxvZmZzZXRZOjAsb25DbGljazp2b2lkIDAsb25EYmxDbGljazp2b2lkIDAsc2hvd051bGxEYXRhUG9pbnRzOiEwLGhvdmVyOntzaXplOnZvaWQgMCxzaXplT2Zmc2V0OjN9fSxub0RhdGE6e3RleHQ6dm9pZCAwLGFsaWduOlwiY2VudGVyXCIsdmVydGljYWxBbGlnbjpcIm1pZGRsZVwiLG9mZnNldFg6MCxvZmZzZXRZOjAsc3R5bGU6e2NvbG9yOnZvaWQgMCxmb250U2l6ZTpcIjE0cHhcIixmb250RmFtaWx5OnZvaWQgMH19LHJlc3BvbnNpdmU6W10sc2VyaWVzOnZvaWQgMCxzdGF0ZXM6e25vcm1hbDp7ZmlsdGVyOnt0eXBlOlwibm9uZVwiLHZhbHVlOjB9fSxob3Zlcjp7ZmlsdGVyOnt0eXBlOlwibGlnaHRlblwiLHZhbHVlOi4xfX0sYWN0aXZlOnthbGxvd011bHRpcGxlRGF0YVBvaW50c1NlbGVjdGlvbjohMSxmaWx0ZXI6e3R5cGU6XCJkYXJrZW5cIix2YWx1ZTouNX19fSx0aXRsZTp7dGV4dDp2b2lkIDAsYWxpZ246XCJsZWZ0XCIsbWFyZ2luOjUsb2Zmc2V0WDowLG9mZnNldFk6MCxmbG9hdGluZzohMSxzdHlsZTp7Zm9udFNpemU6XCIxNHB4XCIsZm9udFdlaWdodDo5MDAsZm9udEZhbWlseTp2b2lkIDAsY29sb3I6dm9pZCAwfX0sc3VidGl0bGU6e3RleHQ6dm9pZCAwLGFsaWduOlwibGVmdFwiLG1hcmdpbjo1LG9mZnNldFg6MCxvZmZzZXRZOjMwLGZsb2F0aW5nOiExLHN0eWxlOntmb250U2l6ZTpcIjEycHhcIixmb250V2VpZ2h0OjQwMCxmb250RmFtaWx5OnZvaWQgMCxjb2xvcjp2b2lkIDB9fSxzdHJva2U6e3Nob3c6ITAsY3VydmU6XCJzbW9vdGhcIixsaW5lQ2FwOlwiYnV0dFwiLHdpZHRoOjIsY29sb3JzOnZvaWQgMCxkYXNoQXJyYXk6MCxmaWxsOnt0eXBlOlwic29saWRcIixjb2xvcnM6dm9pZCAwLG9wYWNpdHk6Ljg1LGdyYWRpZW50OntzaGFkZTpcImRhcmtcIix0eXBlOlwiaG9yaXpvbnRhbFwiLHNoYWRlSW50ZW5zaXR5Oi41LGdyYWRpZW50VG9Db2xvcnM6dm9pZCAwLGludmVyc2VDb2xvcnM6ITAsb3BhY2l0eUZyb206MSxvcGFjaXR5VG86MSxzdG9wczpbMCw1MCwxMDBdLGNvbG9yU3RvcHM6W119fX0sdG9vbHRpcDp7ZW5hYmxlZDohMCxlbmFibGVkT25TZXJpZXM6dm9pZCAwLHNoYXJlZDohMCxmb2xsb3dDdXJzb3I6ITEsaW50ZXJzZWN0OiExLGludmVyc2VPcmRlcjohMSxjdXN0b206dm9pZCAwLGZpbGxTZXJpZXNDb2xvcjohMSx0aGVtZTpcImxpZ2h0XCIsY3NzQ2xhc3M6XCJcIixzdHlsZTp7Zm9udFNpemU6XCIxMnB4XCIsZm9udEZhbWlseTp2b2lkIDB9LG9uRGF0YXNldEhvdmVyOntoaWdobGlnaHREYXRhU2VyaWVzOiExfSx4OntzaG93OiEwLGZvcm1hdDpcImRkIE1NTVwiLGZvcm1hdHRlcjp2b2lkIDB9LHk6e2Zvcm1hdHRlcjp2b2lkIDAsdGl0bGU6e2Zvcm1hdHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD90K1wiOiBcIjpcIlwifX19LHo6e2Zvcm1hdHRlcjp2b2lkIDAsdGl0bGU6XCJTaXplOiBcIn0sbWFya2VyOntzaG93OiEwLGZpbGxDb2xvcnM6dm9pZCAwfSxpdGVtczp7ZGlzcGxheTpcImZsZXhcIn0sZml4ZWQ6e2VuYWJsZWQ6ITEscG9zaXRpb246XCJ0b3BSaWdodFwiLG9mZnNldFg6MCxvZmZzZXRZOjB9fSx4YXhpczp7dHlwZTpcImNhdGVnb3J5XCIsY2F0ZWdvcmllczpbXSxjb252ZXJ0ZWRDYXRUb051bWVyaWM6ITEsb2Zmc2V0WDowLG9mZnNldFk6MCxvdmVyd3JpdGVDYXRlZ29yaWVzOnZvaWQgMCxsYWJlbHM6e3Nob3c6ITAscm90YXRlOi00NSxyb3RhdGVBbHdheXM6ITEsaGlkZU92ZXJsYXBwaW5nTGFiZWxzOiEwLHRyaW06ITEsbWluSGVpZ2h0OnZvaWQgMCxtYXhIZWlnaHQ6MTIwLHNob3dEdXBsaWNhdGVzOiEwLHN0eWxlOntjb2xvcnM6W10sZm9udFNpemU6XCIxMnB4XCIsZm9udFdlaWdodDo0MDAsZm9udEZhbWlseTp2b2lkIDAsY3NzQ2xhc3M6XCJcIn0sb2Zmc2V0WDowLG9mZnNldFk6MCxmb3JtYXQ6dm9pZCAwLGZvcm1hdHRlcjp2b2lkIDAsZGF0ZXRpbWVVVEM6ITAsZGF0ZXRpbWVGb3JtYXR0ZXI6e3llYXI6XCJ5eXl5XCIsbW9udGg6XCJNTU0gJ3l5XCIsZGF5OlwiZGQgTU1NXCIsaG91cjpcIkhIOm1tXCIsbWludXRlOlwiSEg6bW06c3NcIixzZWNvbmQ6XCJISDptbTpzc1wifX0sZ3JvdXA6e2dyb3VwczpbXSxzdHlsZTp7Y29sb3JzOltdLGZvbnRTaXplOlwiMTJweFwiLGZvbnRXZWlnaHQ6NDAwLGZvbnRGYW1pbHk6dm9pZCAwLGNzc0NsYXNzOlwiXCJ9fSxheGlzQm9yZGVyOntzaG93OiEwLGNvbG9yOlwiI2UwZTBlMFwiLHdpZHRoOlwiMTAwJVwiLGhlaWdodDoxLG9mZnNldFg6MCxvZmZzZXRZOjB9LGF4aXNUaWNrczp7c2hvdzohMCxjb2xvcjpcIiNlMGUwZTBcIixoZWlnaHQ6NixvZmZzZXRYOjAsb2Zmc2V0WTowfSx0aWNrQW1vdW50OnZvaWQgMCx0aWNrUGxhY2VtZW50Olwib25cIixtaW46dm9pZCAwLG1heDp2b2lkIDAscmFuZ2U6dm9pZCAwLGZsb2F0aW5nOiExLGRlY2ltYWxzSW5GbG9hdDp2b2lkIDAscG9zaXRpb246XCJib3R0b21cIix0aXRsZTp7dGV4dDp2b2lkIDAsb2Zmc2V0WDowLG9mZnNldFk6MCxzdHlsZTp7Y29sb3I6dm9pZCAwLGZvbnRTaXplOlwiMTJweFwiLGZvbnRXZWlnaHQ6OTAwLGZvbnRGYW1pbHk6dm9pZCAwLGNzc0NsYXNzOlwiXCJ9fSxjcm9zc2hhaXJzOntzaG93OiEwLHdpZHRoOjEscG9zaXRpb246XCJiYWNrXCIsb3BhY2l0eTouOSxzdHJva2U6e2NvbG9yOlwiI2I2YjZiNlwiLHdpZHRoOjEsZGFzaEFycmF5OjN9LGZpbGw6e3R5cGU6XCJzb2xpZFwiLGNvbG9yOlwiI0IxQjlDNFwiLGdyYWRpZW50Ontjb2xvckZyb206XCIjRDhFM0YwXCIsY29sb3JUbzpcIiNCRUQxRTZcIixzdG9wczpbMCwxMDBdLG9wYWNpdHlGcm9tOi40LG9wYWNpdHlUbzouNX19LGRyb3BTaGFkb3c6e2VuYWJsZWQ6ITEsbGVmdDowLHRvcDowLGJsdXI6MSxvcGFjaXR5Oi40fX0sdG9vbHRpcDp7ZW5hYmxlZDohMCxvZmZzZXRZOjAsZm9ybWF0dGVyOnZvaWQgMCxzdHlsZTp7Zm9udFNpemU6XCIxMnB4XCIsZm9udEZhbWlseTp2b2lkIDB9fX0seWF4aXM6dGhpcy55QXhpcyx0aGVtZTp7bW9kZTpcImxpZ2h0XCIscGFsZXR0ZTpcInBhbGV0dGUxXCIsbW9ub2Nocm9tZTp7ZW5hYmxlZDohMSxjb2xvcjpcIiMwMDhGRkJcIixzaGFkZVRvOlwibGlnaHRcIixzaGFkZUludGVuc2l0eTouNjV9fX19fV0pLHR9KCksUD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLmdyYXBoaWNzPW5ldyBtKHRoaXMuY3R4KSx0aGlzLncuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJih0aGlzLmludmVydEF4aXM9ITApLHRoaXMuaGVscGVycz1uZXcgdyh0aGlzKSx0aGlzLnhBeGlzQW5ub3RhdGlvbnM9bmV3IGsodGhpcyksdGhpcy55QXhpc0Fubm90YXRpb25zPW5ldyBBKHRoaXMpLHRoaXMucG9pbnRzQW5ub3RhdGlvbnM9bmV3IFModGhpcyksdGhpcy53Lmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiZ0aGlzLncuY29uZmlnLnlheGlzWzBdLnJldmVyc2VkJiYodGhpcy5pbnZlcnNlZFJldmVyc2VkQXhpcz0hMCksdGhpcy54RGl2aXNpb249dGhpcy53Lmdsb2JhbHMuZ3JpZFdpZHRoL3RoaXMudy5nbG9iYWxzLmRhdGFQb2ludHN9cmV0dXJuIHIodCxbe2tleTpcImRyYXdBeGVzQW5ub3RhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudztpZih0Lmdsb2JhbHMuYXhpc0NoYXJ0cyl7Zm9yKHZhciBlPXRoaXMueUF4aXNBbm5vdGF0aW9ucy5kcmF3WUF4aXNBbm5vdGF0aW9ucygpLGk9dGhpcy54QXhpc0Fubm90YXRpb25zLmRyYXdYQXhpc0Fubm90YXRpb25zKCksYT10aGlzLnBvaW50c0Fubm90YXRpb25zLmRyYXdQb2ludEFubm90YXRpb25zKCkscz10LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmVuYWJsZWQscj1bZSxpLGFdLG89W2kubm9kZSxlLm5vZGUsYS5ub2RlXSxuPTA7bjwzO24rKyl0Lmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZChyW25dKSwhc3x8dC5nbG9iYWxzLnJlc2l6ZWR8fHQuZ2xvYmFscy5kYXRhQ2hhbmdlZHx8XCJzY2F0dGVyXCIhPT10LmNvbmZpZy5jaGFydC50eXBlJiZcImJ1YmJsZVwiIT09dC5jb25maWcuY2hhcnQudHlwZSYmdC5nbG9iYWxzLmRhdGFQb2ludHM+MSYmb1tuXS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1lbGVtZW50LWhpZGRlblwiKSx0Lmdsb2JhbHMuZGVsYXllZEVsZW1lbnRzLnB1c2goe2VsOm9bbl0saW5kZXg6MH0pO3RoaXMuaGVscGVycy5hbm5vdGF0aW9uc0JhY2tncm91bmQoKX19fSx7a2V5OlwiZHJhd0ltYWdlQW5ub3NcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy53LmNvbmZpZy5hbm5vdGF0aW9ucy5pbWFnZXMubWFwKChmdW5jdGlvbihlLGkpe3QuYWRkSW1hZ2UoZSxpKX0pKX19LHtrZXk6XCJkcmF3VGV4dEFubm9zXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMudy5jb25maWcuYW5ub3RhdGlvbnMudGV4dHMubWFwKChmdW5jdGlvbihlLGkpe3QuYWRkVGV4dChlLGkpfSkpfX0se2tleTpcImFkZFhheGlzQW5ub3RhdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt0aGlzLnhBeGlzQW5ub3RhdGlvbnMuYWRkWGF4aXNBbm5vdGF0aW9uKHQsZSxpKX19LHtrZXk6XCJhZGRZYXhpc0Fubm90YXRpb25cIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dGhpcy55QXhpc0Fubm90YXRpb25zLmFkZFlheGlzQW5ub3RhdGlvbih0LGUsaSl9fSx7a2V5OlwiYWRkUG9pbnRBbm5vdGF0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3RoaXMucG9pbnRzQW5ub3RhdGlvbnMuYWRkUG9pbnRBbm5vdGF0aW9uKHQsZSxpKX19LHtrZXk6XCJhZGRUZXh0XCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10LngsYT10Lnkscz10LnRleHQscj10LnRleHRBbmNob3Isbz10LmZvcmVDb2xvcixuPXQuZm9udFNpemUsbD10LmZvbnRGYW1pbHksaD10LmZvbnRXZWlnaHQsYz10LmNzc0NsYXNzLGQ9dC5iYWNrZ3JvdW5kQ29sb3IsZz10LmJvcmRlcldpZHRoLHU9dC5zdHJva2VEYXNoQXJyYXkscD10LmJvcmRlclJhZGl1cyxmPXQuYm9yZGVyQ29sb3IseD10LmFwcGVuZFRvLGI9dm9pZCAwPT09eD9cIi5hcGV4Y2hhcnRzLWFubm90YXRpb25zXCI6eCx2PXQucGFkZGluZ0xlZnQsbT12b2lkIDA9PT12PzQ6dix5PXQucGFkZGluZ1JpZ2h0LHc9dm9pZCAwPT09eT80Onksaz10LnBhZGRpbmdCb3R0b20sQT12b2lkIDA9PT1rPzI6ayxTPXQucGFkZGluZ1RvcCxDPXZvaWQgMD09PVM/MjpTLEw9dGhpcy53LFA9dGhpcy5ncmFwaGljcy5kcmF3VGV4dCh7eDppLHk6YSx0ZXh0OnMsdGV4dEFuY2hvcjpyfHxcInN0YXJ0XCIsZm9udFNpemU6bnx8XCIxMnB4XCIsZm9udFdlaWdodDpofHxcInJlZ3VsYXJcIixmb250RmFtaWx5Omx8fEwuY29uZmlnLmNoYXJ0LmZvbnRGYW1pbHksZm9yZUNvbG9yOm98fEwuY29uZmlnLmNoYXJ0LmZvcmVDb2xvcixjc3NDbGFzczpjfSksST1MLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKGIpO0kmJkkuYXBwZW5kQ2hpbGQoUC5ub2RlKTt2YXIgVD1QLmJib3goKTtpZihzKXt2YXIgTT10aGlzLmdyYXBoaWNzLmRyYXdSZWN0KFQueC1tLFQueS1DLFQud2lkdGgrbSt3LFQuaGVpZ2h0K0ErQyxwLGR8fFwidHJhbnNwYXJlbnRcIiwxLGcsZix1KTtJLmluc2VydEJlZm9yZShNLm5vZGUsUC5ub2RlKX19fSx7a2V5OlwiYWRkSW1hZ2VcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPXQucGF0aCxzPXQueCxyPXZvaWQgMD09PXM/MDpzLG89dC55LG49dm9pZCAwPT09bz8wOm8sbD10LndpZHRoLGg9dm9pZCAwPT09bD8yMDpsLGM9dC5oZWlnaHQsZD12b2lkIDA9PT1jPzIwOmMsZz10LmFwcGVuZFRvLHU9dm9pZCAwPT09Zz9cIi5hcGV4Y2hhcnRzLWFubm90YXRpb25zXCI6ZyxwPWkuZ2xvYmFscy5kb20uUGFwZXIuaW1hZ2UoYSk7cC5zaXplKGgsZCkubW92ZShyLG4pO3ZhciBmPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IodSk7cmV0dXJuIGYmJmYuYXBwZW5kQ2hpbGQocC5ub2RlKSxwfX0se2tleTpcImFkZFhheGlzQW5ub3RhdGlvbkV4dGVybmFsXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLmFkZEFubm90YXRpb25FeHRlcm5hbCh7cGFyYW1zOnQscHVzaFRvTWVtb3J5OmUsY29udGV4dDppLHR5cGU6XCJ4YXhpc1wiLGNvbnRleHRNZXRob2Q6aS5hZGRYYXhpc0Fubm90YXRpb259KSxpfX0se2tleTpcImFkZFlheGlzQW5ub3RhdGlvbkV4dGVybmFsXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLmFkZEFubm90YXRpb25FeHRlcm5hbCh7cGFyYW1zOnQscHVzaFRvTWVtb3J5OmUsY29udGV4dDppLHR5cGU6XCJ5YXhpc1wiLGNvbnRleHRNZXRob2Q6aS5hZGRZYXhpc0Fubm90YXRpb259KSxpfX0se2tleTpcImFkZFBvaW50QW5ub3RhdGlvbkV4dGVybmFsXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB2b2lkIDA9PT10aGlzLmludmVydEF4aXMmJih0aGlzLmludmVydEF4aXM9aS53Lmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsKSx0aGlzLmFkZEFubm90YXRpb25FeHRlcm5hbCh7cGFyYW1zOnQscHVzaFRvTWVtb3J5OmUsY29udGV4dDppLHR5cGU6XCJwb2ludFwiLGNvbnRleHRNZXRob2Q6aS5hZGRQb2ludEFubm90YXRpb259KSxpfX0se2tleTpcImFkZEFubm90YXRpb25FeHRlcm5hbFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQucGFyYW1zLGk9dC5wdXNoVG9NZW1vcnksYT10LmNvbnRleHQscz10LnR5cGUscj10LmNvbnRleHRNZXRob2Qsbz1hLG49by53LGw9bi5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLVwiLmNvbmNhdChzLFwiLWFubm90YXRpb25zXCIpKSxoPWwuY2hpbGROb2Rlcy5sZW5ndGgrMSxjPW5ldyBMLGQ9T2JqZWN0LmFzc2lnbih7fSxcInhheGlzXCI9PT1zP2MueEF4aXNBbm5vdGF0aW9uOlwieWF4aXNcIj09PXM/Yy55QXhpc0Fubm90YXRpb246Yy5wb2ludEFubm90YXRpb24pLGc9eC5leHRlbmQoZCxlKTtzd2l0Y2gocyl7Y2FzZVwieGF4aXNcIjp0aGlzLmFkZFhheGlzQW5ub3RhdGlvbihnLGwsaCk7YnJlYWs7Y2FzZVwieWF4aXNcIjp0aGlzLmFkZFlheGlzQW5ub3RhdGlvbihnLGwsaCk7YnJlYWs7Y2FzZVwicG9pbnRcIjp0aGlzLmFkZFBvaW50QW5ub3RhdGlvbihnLGwsaCl9dmFyIHU9bi5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLVwiLmNvbmNhdChzLFwiLWFubm90YXRpb25zIC5hcGV4Y2hhcnRzLVwiKS5jb25jYXQocyxcIi1hbm5vdGF0aW9uLWxhYmVsW3JlbD0nXCIpLmNvbmNhdChoLFwiJ11cIikpLHA9dGhpcy5oZWxwZXJzLmFkZEJhY2tncm91bmRUb0Fubm8odSxnKTtyZXR1cm4gcCYmbC5pbnNlcnRCZWZvcmUocC5ub2RlLHUpLGkmJm4uZ2xvYmFscy5tZW1vcnkubWV0aG9kc1RvRXhlYy5wdXNoKHtjb250ZXh0Om8saWQ6Zy5pZD9nLmlkOngucmFuZG9tSWQoKSxtZXRob2Q6cixsYWJlbDpcImFkZEFubm90YXRpb25cIixwYXJhbXM6ZX0pLGF9fSx7a2V5OlwiY2xlYXJBbm5vdGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQudyxpPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy15YXhpcy1hbm5vdGF0aW9ucywgLmFwZXhjaGFydHMteGF4aXMtYW5ub3RhdGlvbnMsIC5hcGV4Y2hhcnRzLXBvaW50LWFubm90YXRpb25zXCIpO2UuZ2xvYmFscy5tZW1vcnkubWV0aG9kc1RvRXhlYy5tYXAoKGZ1bmN0aW9uKHQsaSl7XCJhZGRUZXh0XCIhPT10LmxhYmVsJiZcImFkZEFubm90YXRpb25cIiE9PXQubGFiZWx8fGUuZ2xvYmFscy5tZW1vcnkubWV0aG9kc1RvRXhlYy5zcGxpY2UoaSwxKX0pKSxpPXgubGlzdFRvQXJyYXkoaSksQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChpLChmdW5jdGlvbih0KXtmb3IoO3QuZmlyc3RDaGlsZDspdC5yZW1vdmVDaGlsZCh0LmZpcnN0Q2hpbGQpfSkpfX0se2tleTpcInJlbW92ZUFubm90YXRpb25cIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXQudyxhPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuXCIuY29uY2F0KGUpKTthJiYoaS5nbG9iYWxzLm1lbW9yeS5tZXRob2RzVG9FeGVjLm1hcCgoZnVuY3Rpb24odCxhKXt0LmlkPT09ZSYmaS5nbG9iYWxzLm1lbW9yeS5tZXRob2RzVG9FeGVjLnNwbGljZShhLDEpfSkpLEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoYSwoZnVuY3Rpb24odCl7dC5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKHQpfSkpKX19XSksdH0oKSxJPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMubW9udGhzMzE9WzEsMyw1LDcsOCwxMCwxMl0sdGhpcy5tb250aHMzMD1bMiw0LDYsOSwxMV0sdGhpcy5kYXlzQ250T2ZZZWFyPVswLDMxLDU5LDkwLDEyMCwxNTEsMTgxLDIxMiwyNDMsMjczLDMwNCwzMzRdfXJldHVybiByKHQsW3trZXk6XCJpc1ZhbGlkRGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiFpc05hTih0aGlzLnBhcnNlRGF0ZSh0KSl9fSx7a2V5OlwiZ2V0VGltZVN0YW1wXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIERhdGUucGFyc2UodCk/dGhpcy53LmNvbmZpZy54YXhpcy5sYWJlbHMuZGF0ZXRpbWVVVEM/bmV3IERhdGUobmV3IERhdGUodCkudG9JU09TdHJpbmcoKS5zdWJzdHIoMCwyNSkpLmdldFRpbWUoKTpuZXcgRGF0ZSh0KS5nZXRUaW1lKCk6dH19LHtrZXk6XCJnZXREYXRlXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudy5jb25maWcueGF4aXMubGFiZWxzLmRhdGV0aW1lVVRDP25ldyBEYXRlKG5ldyBEYXRlKHQpLnRvVVRDU3RyaW5nKCkpOm5ldyBEYXRlKHQpfX0se2tleTpcInBhcnNlRGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPURhdGUucGFyc2UodCk7aWYoIWlzTmFOKGUpKXJldHVybiB0aGlzLmdldFRpbWVTdGFtcCh0KTt2YXIgaT1EYXRlLnBhcnNlKHQucmVwbGFjZSgvLS9nLFwiL1wiKS5yZXBsYWNlKC9bYS16XSsvZ2ksXCIgXCIpKTtyZXR1cm4gaT10aGlzLmdldFRpbWVTdGFtcChpKX19LHtrZXk6XCJwYXJzZURhdGVXaXRoVGltZXpvbmVcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gRGF0ZS5wYXJzZSh0LnJlcGxhY2UoLy0vZyxcIi9cIikucmVwbGFjZSgvW2Etel0rL2dpLFwiIFwiKSl9fSx7a2V5OlwiZm9ybWF0RGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53Lmdsb2JhbHMubG9jYWxlLGE9dGhpcy53LmNvbmZpZy54YXhpcy5sYWJlbHMuZGF0ZXRpbWVVVEMscz1bXCJcXDBcIl0uY29uY2F0KHUoaS5tb250aHMpKSxyPVtcIlxceDAxXCJdLmNvbmNhdCh1KGkuc2hvcnRNb250aHMpKSxvPVtcIlxceDAyXCJdLmNvbmNhdCh1KGkuZGF5cykpLG49W1wiXFx4MDNcIl0uY29uY2F0KHUoaS5zaG9ydERheXMpKTtmdW5jdGlvbiBsKHQsZSl7dmFyIGk9dCtcIlwiO2ZvcihlPWV8fDI7aS5sZW5ndGg8ZTspaT1cIjBcIitpO3JldHVybiBpfXZhciBoPWE/dC5nZXRVVENGdWxsWWVhcigpOnQuZ2V0RnVsbFllYXIoKTtlPShlPShlPWUucmVwbGFjZSgvKF58W15cXFxcXSl5eXl5Ky9nLFwiJDFcIitoKSkucmVwbGFjZSgvKF58W15cXFxcXSl5eS9nLFwiJDFcIitoLnRvU3RyaW5nKCkuc3Vic3RyKDIsMikpKS5yZXBsYWNlKC8oXnxbXlxcXFxdKXkvZyxcIiQxXCIraCk7dmFyIGM9KGE/dC5nZXRVVENNb250aCgpOnQuZ2V0TW9udGgoKSkrMTtlPShlPShlPShlPWUucmVwbGFjZSgvKF58W15cXFxcXSlNTU1NKy9nLFwiJDFcIitzWzBdKSkucmVwbGFjZSgvKF58W15cXFxcXSlNTU0vZyxcIiQxXCIrclswXSkpLnJlcGxhY2UoLyhefFteXFxcXF0pTU0vZyxcIiQxXCIrbChjKSkpLnJlcGxhY2UoLyhefFteXFxcXF0pTS9nLFwiJDFcIitjKTt2YXIgZD1hP3QuZ2V0VVRDRGF0ZSgpOnQuZ2V0RGF0ZSgpO2U9KGU9KGU9KGU9ZS5yZXBsYWNlKC8oXnxbXlxcXFxdKWRkZGQrL2csXCIkMVwiK29bMF0pKS5yZXBsYWNlKC8oXnxbXlxcXFxdKWRkZC9nLFwiJDFcIituWzBdKSkucmVwbGFjZSgvKF58W15cXFxcXSlkZC9nLFwiJDFcIitsKGQpKSkucmVwbGFjZSgvKF58W15cXFxcXSlkL2csXCIkMVwiK2QpO3ZhciBnPWE/dC5nZXRVVENIb3VycygpOnQuZ2V0SG91cnMoKSxwPWc+MTI/Zy0xMjowPT09Zz8xMjpnO2U9KGU9KGU9KGU9ZS5yZXBsYWNlKC8oXnxbXlxcXFxdKUhIKy9nLFwiJDFcIitsKGcpKSkucmVwbGFjZSgvKF58W15cXFxcXSlIL2csXCIkMVwiK2cpKS5yZXBsYWNlKC8oXnxbXlxcXFxdKWhoKy9nLFwiJDFcIitsKHApKSkucmVwbGFjZSgvKF58W15cXFxcXSloL2csXCIkMVwiK3ApO3ZhciBmPWE/dC5nZXRVVENNaW51dGVzKCk6dC5nZXRNaW51dGVzKCk7ZT0oZT1lLnJlcGxhY2UoLyhefFteXFxcXF0pbW0rL2csXCIkMVwiK2woZikpKS5yZXBsYWNlKC8oXnxbXlxcXFxdKW0vZyxcIiQxXCIrZik7dmFyIHg9YT90LmdldFVUQ1NlY29uZHMoKTp0LmdldFNlY29uZHMoKTtlPShlPWUucmVwbGFjZSgvKF58W15cXFxcXSlzcysvZyxcIiQxXCIrbCh4KSkpLnJlcGxhY2UoLyhefFteXFxcXF0pcy9nLFwiJDFcIit4KTt2YXIgYj1hP3QuZ2V0VVRDTWlsbGlzZWNvbmRzKCk6dC5nZXRNaWxsaXNlY29uZHMoKTtlPWUucmVwbGFjZSgvKF58W15cXFxcXSlmZmYrL2csXCIkMVwiK2woYiwzKSksYj1NYXRoLnJvdW5kKGIvMTApLGU9ZS5yZXBsYWNlKC8oXnxbXlxcXFxdKWZmL2csXCIkMVwiK2woYikpLGI9TWF0aC5yb3VuZChiLzEwKTt2YXIgdj1nPDEyP1wiQU1cIjpcIlBNXCI7ZT0oZT0oZT1lLnJlcGxhY2UoLyhefFteXFxcXF0pZi9nLFwiJDFcIitiKSkucmVwbGFjZSgvKF58W15cXFxcXSlUVCsvZyxcIiQxXCIrdikpLnJlcGxhY2UoLyhefFteXFxcXF0pVC9nLFwiJDFcIit2LmNoYXJBdCgwKSk7dmFyIG09di50b0xvd2VyQ2FzZSgpO2U9KGU9ZS5yZXBsYWNlKC8oXnxbXlxcXFxdKXR0Ky9nLFwiJDFcIittKSkucmVwbGFjZSgvKF58W15cXFxcXSl0L2csXCIkMVwiK20uY2hhckF0KDApKTt2YXIgeT0tdC5nZXRUaW1lem9uZU9mZnNldCgpLHc9YXx8IXk/XCJaXCI6eT4wP1wiK1wiOlwiLVwiO2lmKCFhKXt2YXIgaz0oeT1NYXRoLmFicyh5KSklNjA7dys9bChNYXRoLmZsb29yKHkvNjApKStcIjpcIitsKGspfWU9ZS5yZXBsYWNlKC8oXnxbXlxcXFxdKUsvZyxcIiQxXCIrdyk7dmFyIEE9KGE/dC5nZXRVVENEYXkoKTp0LmdldERheSgpKSsxO3JldHVybiBlPShlPShlPShlPShlPWUucmVwbGFjZShuZXcgUmVnRXhwKG9bMF0sXCJnXCIpLG9bQV0pKS5yZXBsYWNlKG5ldyBSZWdFeHAoblswXSxcImdcIiksbltBXSkpLnJlcGxhY2UobmV3IFJlZ0V4cChzWzBdLFwiZ1wiKSxzW2NdKSkucmVwbGFjZShuZXcgUmVnRXhwKHJbMF0sXCJnXCIpLHJbY10pKS5yZXBsYWNlKC9cXFxcKC4pL2csXCIkMVwiKX19LHtrZXk6XCJnZXRUaW1lVW5pdHNmcm9tVGltZXN0YW1wXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMudzt2b2lkIDAhPT1hLmNvbmZpZy54YXhpcy5taW4mJih0PWEuY29uZmlnLnhheGlzLm1pbiksdm9pZCAwIT09YS5jb25maWcueGF4aXMubWF4JiYoZT1hLmNvbmZpZy54YXhpcy5tYXgpO3ZhciBzPXRoaXMuZ2V0RGF0ZSh0KSxyPXRoaXMuZ2V0RGF0ZShlKSxvPXRoaXMuZm9ybWF0RGF0ZShzLFwieXl5eSBNTSBkZCBISCBtbSBzcyBmZmZcIikuc3BsaXQoXCIgXCIpLG49dGhpcy5mb3JtYXREYXRlKHIsXCJ5eXl5IE1NIGRkIEhIIG1tIHNzIGZmZlwiKS5zcGxpdChcIiBcIik7cmV0dXJue21pbk1pbGxpc2Vjb25kOnBhcnNlSW50KG9bNl0sMTApLG1heE1pbGxpc2Vjb25kOnBhcnNlSW50KG5bNl0sMTApLG1pblNlY29uZDpwYXJzZUludChvWzVdLDEwKSxtYXhTZWNvbmQ6cGFyc2VJbnQobls1XSwxMCksbWluTWludXRlOnBhcnNlSW50KG9bNF0sMTApLG1heE1pbnV0ZTpwYXJzZUludChuWzRdLDEwKSxtaW5Ib3VyOnBhcnNlSW50KG9bM10sMTApLG1heEhvdXI6cGFyc2VJbnQoblszXSwxMCksbWluRGF0ZTpwYXJzZUludChvWzJdLDEwKSxtYXhEYXRlOnBhcnNlSW50KG5bMl0sMTApLG1pbk1vbnRoOnBhcnNlSW50KG9bMV0sMTApLTEsbWF4TW9udGg6cGFyc2VJbnQoblsxXSwxMCktMSxtaW5ZZWFyOnBhcnNlSW50KG9bMF0sMTApLG1heFllYXI6cGFyc2VJbnQoblswXSwxMCl9fX0se2tleTpcImlzTGVhcFllYXJcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdCU0PT0wJiZ0JTEwMCE9MHx8dCU0MDA9PTB9fSx7a2V5OlwiY2FsY3VsY2F0ZUxhc3REYXlzT2ZNb250aFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5kZXRlcm1pbmVEYXlzT2ZNb250aHModCxlKS1pfX0se2tleTpcImRldGVybWluZURheXNPZlllYXJcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT0zNjU7cmV0dXJuIHRoaXMuaXNMZWFwWWVhcih0KSYmKGU9MzY2KSxlfX0se2tleTpcImRldGVybWluZVJlbWFpbmluZ0RheXNPZlllYXJcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy5kYXlzQ250T2ZZZWFyW2VdK2k7cmV0dXJuIGU+MSYmdGhpcy5pc0xlYXBZZWFyKCkmJmErKyxhfX0se2tleTpcImRldGVybWluZURheXNPZk1vbnRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9MzA7c3dpdGNoKHQ9eC5tb250aE1vZCh0KSwhMCl7Y2FzZSB0aGlzLm1vbnRoczMwLmluZGV4T2YodCk+LTE6Mj09PXQmJihpPXRoaXMuaXNMZWFwWWVhcihlKT8yOToyOCk7YnJlYWs7Y2FzZSB0aGlzLm1vbnRoczMxLmluZGV4T2YodCk+LTE6ZGVmYXVsdDppPTMxfXJldHVybiBpfX1dKSx0fSgpLFQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy50b29sdGlwS2V5Rm9ybWF0PVwiZGQgTU1NXCJ9cmV0dXJuIHIodCxbe2tleTpcInhMYWJlbEZvcm1hdFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzPXRoaXMudztpZihcImRhdGV0aW1lXCI9PT1zLmNvbmZpZy54YXhpcy50eXBlJiZ2b2lkIDA9PT1zLmNvbmZpZy54YXhpcy5sYWJlbHMuZm9ybWF0dGVyJiZ2b2lkIDA9PT1zLmNvbmZpZy50b29sdGlwLnguZm9ybWF0dGVyKXt2YXIgcj1uZXcgSSh0aGlzLmN0eCk7cmV0dXJuIHIuZm9ybWF0RGF0ZShyLmdldERhdGUoZSkscy5jb25maWcudG9vbHRpcC54LmZvcm1hdCl9cmV0dXJuIHQoZSxpLGEpfX0se2tleTpcImRlZmF1bHRHZW5lcmFsRm9ybWF0dGVyXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/dC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0fSkpOnR9fSx7a2V5OlwiZGVmYXVsdFlGb3JtYXR0ZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy53O3JldHVybiB4LmlzTnVtYmVyKHQpJiYodD0wIT09YS5nbG9iYWxzLnlWYWx1ZURlY2ltYWw/dC50b0ZpeGVkKHZvaWQgMCE9PWUuZGVjaW1hbHNJbkZsb2F0P2UuZGVjaW1hbHNJbkZsb2F0OmEuZ2xvYmFscy55VmFsdWVEZWNpbWFsKTphLmdsb2JhbHMubWF4WUFycltpXS1hLmdsb2JhbHMubWluWUFycltpXTw1P3QudG9GaXhlZCgxKTp0LnRvRml4ZWQoMCkpLHR9fSx7a2V5Olwic2V0TGFiZWxGb3JtYXR0ZXJzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53O3JldHVybiBlLmdsb2JhbHMueGF4aXNUb29sdGlwRm9ybWF0dGVyPWZ1bmN0aW9uKGUpe3JldHVybiB0LmRlZmF1bHRHZW5lcmFsRm9ybWF0dGVyKGUpfSxlLmdsb2JhbHMudHRLZXlGb3JtYXR0ZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHQuZGVmYXVsdEdlbmVyYWxGb3JtYXR0ZXIoZSl9LGUuZ2xvYmFscy50dFpGb3JtYXR0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHR9LGUuZ2xvYmFscy5sZWdlbmRGb3JtYXR0ZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHQuZGVmYXVsdEdlbmVyYWxGb3JtYXR0ZXIoZSl9LHZvaWQgMCE9PWUuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXR0ZXI/ZS5nbG9iYWxzLnhMYWJlbEZvcm1hdHRlcj1lLmNvbmZpZy54YXhpcy5sYWJlbHMuZm9ybWF0dGVyOmUuZ2xvYmFscy54TGFiZWxGb3JtYXR0ZXI9ZnVuY3Rpb24odCl7aWYoeC5pc051bWJlcih0KSl7aWYoIWUuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmXCJudW1lcmljXCI9PT1lLmNvbmZpZy54YXhpcy50eXBlKXtpZih4LmlzTnVtYmVyKGUuY29uZmlnLnhheGlzLmRlY2ltYWxzSW5GbG9hdCkpcmV0dXJuIHQudG9GaXhlZChlLmNvbmZpZy54YXhpcy5kZWNpbWFsc0luRmxvYXQpO3ZhciBpPWUuZ2xvYmFscy5tYXhYLWUuZ2xvYmFscy5taW5YO3JldHVybiBpPjAmJmk8MTAwP3QudG9GaXhlZCgxKTp0LnRvRml4ZWQoMCl9aWYoZS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbClpZihlLmdsb2JhbHMubWF4WS1lLmdsb2JhbHMubWluWUFycjw0KXJldHVybiB0LnRvRml4ZWQoMSk7cmV0dXJuIHQudG9GaXhlZCgwKX1yZXR1cm4gdH0sXCJmdW5jdGlvblwiPT10eXBlb2YgZS5jb25maWcudG9vbHRpcC54LmZvcm1hdHRlcj9lLmdsb2JhbHMudHRLZXlGb3JtYXR0ZXI9ZS5jb25maWcudG9vbHRpcC54LmZvcm1hdHRlcjplLmdsb2JhbHMudHRLZXlGb3JtYXR0ZXI9ZS5nbG9iYWxzLnhMYWJlbEZvcm1hdHRlcixcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmNvbmZpZy54YXhpcy50b29sdGlwLmZvcm1hdHRlciYmKGUuZ2xvYmFscy54YXhpc1Rvb2x0aXBGb3JtYXR0ZXI9ZS5jb25maWcueGF4aXMudG9vbHRpcC5mb3JtYXR0ZXIpLChBcnJheS5pc0FycmF5KGUuY29uZmlnLnRvb2x0aXAueSl8fHZvaWQgMCE9PWUuY29uZmlnLnRvb2x0aXAueS5mb3JtYXR0ZXIpJiYoZS5nbG9iYWxzLnR0VmFsPWUuY29uZmlnLnRvb2x0aXAueSksdm9pZCAwIT09ZS5jb25maWcudG9vbHRpcC56LmZvcm1hdHRlciYmKGUuZ2xvYmFscy50dFpGb3JtYXR0ZXI9ZS5jb25maWcudG9vbHRpcC56LmZvcm1hdHRlciksdm9pZCAwIT09ZS5jb25maWcubGVnZW5kLmZvcm1hdHRlciYmKGUuZ2xvYmFscy5sZWdlbmRGb3JtYXR0ZXI9ZS5jb25maWcubGVnZW5kLmZvcm1hdHRlciksZS5jb25maWcueWF4aXMuZm9yRWFjaCgoZnVuY3Rpb24oaSxhKXt2b2lkIDAhPT1pLmxhYmVscy5mb3JtYXR0ZXI/ZS5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbYV09aS5sYWJlbHMuZm9ybWF0dGVyOmUuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzW2FdPWZ1bmN0aW9uKHMpe3JldHVybiBlLmdsb2JhbHMueHlDaGFydHM/QXJyYXkuaXNBcnJheShzKT9zLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQuZGVmYXVsdFlGb3JtYXR0ZXIoZSxpLGEpfSkpOnQuZGVmYXVsdFlGb3JtYXR0ZXIocyxpLGEpOnN9fSkpLGUuZ2xvYmFsc319LHtrZXk6XCJoZWF0bWFwTGFiZWxGb3JtYXR0ZXJzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7aWYoXCJoZWF0bWFwXCI9PT10LmNvbmZpZy5jaGFydC50eXBlKXt0Lmdsb2JhbHMueUF4aXNTY2FsZVswXS5yZXN1bHQ9dC5nbG9iYWxzLnNlcmllc05hbWVzLnNsaWNlKCk7dmFyIGU9dC5nbG9iYWxzLnNlcmllc05hbWVzLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5sZW5ndGg+ZS5sZW5ndGg/dDplfSksMCk7dC5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ubmljZU1heD1lLHQuZ2xvYmFscy55QXhpc1NjYWxlWzBdLm5pY2VNaW49ZX19fV0pLHR9KCksTT1mdW5jdGlvbih0KXt2YXIgZSxpPXQuaXNUaW1lbGluZSxhPXQuY3R4LHM9dC5zZXJpZXNJbmRleCxyPXQuZGF0YVBvaW50SW5kZXgsbz10LnkxLG49dC55MixsPXQudyxoPWwuZ2xvYmFscy5zZXJpZXNSYW5nZVN0YXJ0W3NdW3JdLGM9bC5nbG9iYWxzLnNlcmllc1JhbmdlRW5kW3NdW3JdLGQ9bC5nbG9iYWxzLmxhYmVsc1tyXSxnPWwuY29uZmlnLnNlcmllc1tzXS5uYW1lP2wuY29uZmlnLnNlcmllc1tzXS5uYW1lOlwiXCIsdT1sLmdsb2JhbHMudHRLZXlGb3JtYXR0ZXIscD1sLmNvbmZpZy50b29sdGlwLnkudGl0bGUuZm9ybWF0dGVyLGY9e3c6bCxzZXJpZXNJbmRleDpzLGRhdGFQb2ludEluZGV4OnIsc3RhcnQ6aCxlbmQ6Y307KFwiZnVuY3Rpb25cIj09dHlwZW9mIHAmJihnPXAoZyxmKSksbnVsbCE9PShlPWwuY29uZmlnLnNlcmllc1tzXS5kYXRhW3JdKSYmdm9pZCAwIT09ZSYmZS54JiYoZD1sLmNvbmZpZy5zZXJpZXNbc10uZGF0YVtyXS54KSxpKXx8XCJkYXRldGltZVwiPT09bC5jb25maWcueGF4aXMudHlwZSYmKGQ9bmV3IFQoYSkueExhYmVsRm9ybWF0KGwuZ2xvYmFscy50dEtleUZvcm1hdHRlcixkLGQse2k6dm9pZCAwLGRhdGVGb3JtYXR0ZXI6bmV3IEkoYSkuZm9ybWF0RGF0ZSx3Omx9KSk7XCJmdW5jdGlvblwiPT10eXBlb2YgdSYmKGQ9dShkLGYpKSxOdW1iZXIuaXNGaW5pdGUobykmJk51bWJlci5pc0Zpbml0ZShuKSYmKGg9byxjPW4pO3ZhciB4PVwiXCIsYj1cIlwiLHY9bC5nbG9iYWxzLmNvbG9yc1tzXTtpZih2b2lkIDA9PT1sLmNvbmZpZy50b29sdGlwLnguZm9ybWF0dGVyKWlmKFwiZGF0ZXRpbWVcIj09PWwuY29uZmlnLnhheGlzLnR5cGUpe3ZhciBtPW5ldyBJKGEpO3g9bS5mb3JtYXREYXRlKG0uZ2V0RGF0ZShoKSxsLmNvbmZpZy50b29sdGlwLnguZm9ybWF0KSxiPW0uZm9ybWF0RGF0ZShtLmdldERhdGUoYyksbC5jb25maWcudG9vbHRpcC54LmZvcm1hdCl9ZWxzZSB4PWgsYj1jO2Vsc2UgeD1sLmNvbmZpZy50b29sdGlwLnguZm9ybWF0dGVyKGgpLGI9bC5jb25maWcudG9vbHRpcC54LmZvcm1hdHRlcihjKTtyZXR1cm57c3RhcnQ6aCxlbmQ6YyxzdGFydFZhbDp4LGVuZFZhbDpiLHlsYWJlbDpkLGNvbG9yOnYsc2VyaWVzTmFtZTpnfX0sWD1mdW5jdGlvbih0KXt2YXIgZT10LmNvbG9yLGk9dC5zZXJpZXNOYW1lLGE9dC55bGFiZWwscz10LnN0YXJ0LHI9dC5lbmQsbz10LnNlcmllc0luZGV4LG49dC5kYXRhUG9pbnRJbmRleCxsPXQuY3R4LnRvb2x0aXAudG9vbHRpcExhYmVscy5nZXRGb3JtYXR0ZXJzKG8pO3M9bC55TGJGb3JtYXR0ZXIocykscj1sLnlMYkZvcm1hdHRlcihyKTt2YXIgaD1sLnlMYkZvcm1hdHRlcih0LncuZ2xvYmFscy5zZXJpZXNbb11bbl0pLGM9JzxzcGFuIGNsYXNzPVwidmFsdWUgc3RhcnQtdmFsdWVcIj5cXG4gICcuY29uY2F0KHMsJ1xcbiAgPC9zcGFuPiA8c3BhbiBjbGFzcz1cInNlcGFyYXRvclwiPi08L3NwYW4+IDxzcGFuIGNsYXNzPVwidmFsdWUgZW5kLXZhbHVlXCI+XFxuICAnKS5jb25jYXQocixcIlxcbiAgPC9zcGFuPlwiKTtyZXR1cm4nPGRpdiBjbGFzcz1cImFwZXhjaGFydHMtdG9vbHRpcC1yYW5nZWJhclwiPjxkaXY+IDxzcGFuIGNsYXNzPVwic2VyaWVzLW5hbWVcIiBzdHlsZT1cImNvbG9yOiAnK2UrJ1wiPicrKGl8fFwiXCIpKyc8L3NwYW4+PC9kaXY+PGRpdj4gPHNwYW4gY2xhc3M9XCJjYXRlZ29yeVwiPicrYStcIjogPC9zcGFuPiBcIisodC53Lmdsb2JhbHMuY29tYm9DaGFydHM/XCJyYW5nZUFyZWFcIj09PXQudy5jb25maWcuc2VyaWVzW29dLnR5cGV8fFwicmFuZ2VCYXJcIj09PXQudy5jb25maWcuc2VyaWVzW29dLnR5cGU/YzpcIjxzcGFuPlwiLmNvbmNhdChoLFwiPC9zcGFuPlwiKTpjKStcIiA8L2Rpdj48L2Rpdj5cIn0sej1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMub3B0cz1lfXJldHVybiByKHQsW3trZXk6XCJsaW5lXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57Y2hhcnQ6e2FuaW1hdGlvbnM6e2Vhc2luZzpcInN3aW5nXCJ9fSxkYXRhTGFiZWxzOntlbmFibGVkOiExfSxzdHJva2U6e3dpZHRoOjUsY3VydmU6XCJzdHJhaWdodFwifSxtYXJrZXJzOntzaXplOjAsaG92ZXI6e3NpemVPZmZzZXQ6Nn19LHhheGlzOntjcm9zc2hhaXJzOnt3aWR0aDoxfX19fX0se2tleTpcInNwYXJrbGluZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMub3B0cy55YXhpc1swXS5zaG93PSExLHRoaXMub3B0cy55YXhpc1swXS50aXRsZS50ZXh0PVwiXCIsdGhpcy5vcHRzLnlheGlzWzBdLmF4aXNCb3JkZXIuc2hvdz0hMSx0aGlzLm9wdHMueWF4aXNbMF0uYXhpc1RpY2tzLnNob3c9ITEsdGhpcy5vcHRzLnlheGlzWzBdLmZsb2F0aW5nPSEwO3JldHVybiB4LmV4dGVuZCh0LHtncmlkOntzaG93OiExLHBhZGRpbmc6e2xlZnQ6MCxyaWdodDowLHRvcDowLGJvdHRvbTowfX0sbGVnZW5kOntzaG93OiExfSx4YXhpczp7bGFiZWxzOntzaG93OiExfSx0b29sdGlwOntlbmFibGVkOiExfSxheGlzQm9yZGVyOntzaG93OiExfSxheGlzVGlja3M6e3Nob3c6ITF9fSxjaGFydDp7dG9vbGJhcjp7c2hvdzohMX0sem9vbTp7ZW5hYmxlZDohMX19LGRhdGFMYWJlbHM6e2VuYWJsZWQ6ITF9fSl9fSx7a2V5OlwiYmFyXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57Y2hhcnQ6e3N0YWNrZWQ6ITEsYW5pbWF0aW9uczp7ZWFzaW5nOlwic3dpbmdcIn19LHBsb3RPcHRpb25zOntiYXI6e2RhdGFMYWJlbHM6e3Bvc2l0aW9uOlwiY2VudGVyXCJ9fX0sZGF0YUxhYmVsczp7c3R5bGU6e2NvbG9yczpbXCIjZmZmXCJdfSxiYWNrZ3JvdW5kOntlbmFibGVkOiExfX0sc3Ryb2tlOnt3aWR0aDowLGxpbmVDYXA6XCJyb3VuZFwifSxmaWxsOntvcGFjaXR5Oi44NX0sbGVnZW5kOnttYXJrZXJzOntzaGFwZTpcInNxdWFyZVwiLHJhZGl1czoyLHNpemU6OH19LHRvb2x0aXA6e3NoYXJlZDohMSxpbnRlcnNlY3Q6ITB9LHhheGlzOnt0b29sdGlwOntlbmFibGVkOiExfSx0aWNrUGxhY2VtZW50OlwiYmV0d2VlblwiLGNyb3NzaGFpcnM6e3dpZHRoOlwiYmFyV2lkdGhcIixwb3NpdGlvbjpcImJhY2tcIixmaWxsOnt0eXBlOlwiZ3JhZGllbnRcIn0sZHJvcFNoYWRvdzp7ZW5hYmxlZDohMX0sc3Ryb2tlOnt3aWR0aDowfX19fX19LHtrZXk6XCJjYW5kbGVzdGlja1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm57c3Ryb2tlOnt3aWR0aDoxLGNvbG9yczpbXCIjMzMzXCJdfSxmaWxsOntvcGFjaXR5OjF9LGRhdGFMYWJlbHM6e2VuYWJsZWQ6ITF9LHRvb2x0aXA6e3NoYXJlZDohMCxjdXN0b206ZnVuY3Rpb24oZSl7dmFyIGk9ZS5zZXJpZXNJbmRleCxhPWUuZGF0YVBvaW50SW5kZXgscz1lLnc7cmV0dXJuIHQuX2dldEJveFRvb2x0aXAocyxpLGEsW1wiT3BlblwiLFwiSGlnaFwiLFwiXCIsXCJMb3dcIixcIkNsb3NlXCJdLFwiY2FuZGxlc3RpY2tcIil9fSxzdGF0ZXM6e2FjdGl2ZTp7ZmlsdGVyOnt0eXBlOlwibm9uZVwifX19LHhheGlzOntjcm9zc2hhaXJzOnt3aWR0aDoxfX19fX0se2tleTpcImJveFBsb3RcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJue2NoYXJ0OnthbmltYXRpb25zOntkeW5hbWljQW5pbWF0aW9uOntlbmFibGVkOiExfX19LHN0cm9rZTp7d2lkdGg6MSxjb2xvcnM6W1wiIzI0MjkyZVwiXX0sZGF0YUxhYmVsczp7ZW5hYmxlZDohMX0sdG9vbHRpcDp7c2hhcmVkOiEwLGN1c3RvbTpmdW5jdGlvbihlKXt2YXIgaT1lLnNlcmllc0luZGV4LGE9ZS5kYXRhUG9pbnRJbmRleCxzPWUudztyZXR1cm4gdC5fZ2V0Qm94VG9vbHRpcChzLGksYSxbXCJNaW5pbXVtXCIsXCJRMVwiLFwiTWVkaWFuXCIsXCJRM1wiLFwiTWF4aW11bVwiXSxcImJveFBsb3RcIil9fSxtYXJrZXJzOntzaXplOjUsc3Ryb2tlV2lkdGg6MSxzdHJva2VDb2xvcnM6XCIjMTExXCJ9LHhheGlzOntjcm9zc2hhaXJzOnt3aWR0aDoxfX19fX0se2tleTpcInJhbmdlQmFyXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57Y2hhcnQ6e2FuaW1hdGlvbnM6e2FuaW1hdGVHcmFkdWFsbHk6ITF9fSxzdHJva2U6e3dpZHRoOjAsbGluZUNhcDpcInNxdWFyZVwifSxwbG90T3B0aW9uczp7YmFyOntib3JkZXJSYWRpdXM6MCxkYXRhTGFiZWxzOntwb3NpdGlvbjpcImNlbnRlclwifX19LGRhdGFMYWJlbHM6e2VuYWJsZWQ6ITEsZm9ybWF0dGVyOmZ1bmN0aW9uKHQsZSl7ZS5jdHg7dmFyIGk9ZS5zZXJpZXNJbmRleCxhPWUuZGF0YVBvaW50SW5kZXgscz1lLncscj1mdW5jdGlvbigpe3ZhciB0PXMuZ2xvYmFscy5zZXJpZXNSYW5nZVN0YXJ0W2ldW2FdO3JldHVybiBzLmdsb2JhbHMuc2VyaWVzUmFuZ2VFbmRbaV1bYV0tdH07cmV0dXJuIHMuZ2xvYmFscy5jb21ib0NoYXJ0cz9cInJhbmdlQmFyXCI9PT1zLmNvbmZpZy5zZXJpZXNbaV0udHlwZXx8XCJyYW5nZUFyZWFcIj09PXMuY29uZmlnLnNlcmllc1tpXS50eXBlP3IoKTp0OnIoKX0sYmFja2dyb3VuZDp7ZW5hYmxlZDohMX0sc3R5bGU6e2NvbG9yczpbXCIjZmZmXCJdfX0sbWFya2Vyczp7c2l6ZToxMH0sdG9vbHRpcDp7c2hhcmVkOiExLGZvbGxvd0N1cnNvcjohMCxjdXN0b206ZnVuY3Rpb24odCl7cmV0dXJuIHQudy5jb25maWcucGxvdE9wdGlvbnMmJnQudy5jb25maWcucGxvdE9wdGlvbnMuYmFyJiZ0LncuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ob3Jpem9udGFsP2Z1bmN0aW9uKHQpe3ZhciBpPU0oZShlKHt9LHQpLHt9LHtpc1RpbWVsaW5lOiEwfSkpLGE9aS5jb2xvcixzPWkuc2VyaWVzTmFtZSxyPWkueWxhYmVsLG89aS5zdGFydFZhbCxuPWkuZW5kVmFsO3JldHVybiBYKGUoZSh7fSx0KSx7fSx7Y29sb3I6YSxzZXJpZXNOYW1lOnMseWxhYmVsOnIsc3RhcnQ6byxlbmQ6bn0pKX0odCk6ZnVuY3Rpb24odCl7dmFyIGk9TSh0KSxhPWkuY29sb3Iscz1pLnNlcmllc05hbWUscj1pLnlsYWJlbCxvPWkuc3RhcnQsbj1pLmVuZDtyZXR1cm4gWChlKGUoe30sdCkse30se2NvbG9yOmEsc2VyaWVzTmFtZTpzLHlsYWJlbDpyLHN0YXJ0Om8sZW5kOm59KSl9KHQpfX0seGF4aXM6e3RpY2tQbGFjZW1lbnQ6XCJiZXR3ZWVuXCIsdG9vbHRpcDp7ZW5hYmxlZDohMX0sY3Jvc3NoYWlyczp7c3Ryb2tlOnt3aWR0aDowfX19fX19LHtrZXk6XCJkdW1iYmVsbFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGk7cmV0dXJuIG51bGwhPT0oZT10LnBsb3RPcHRpb25zLmJhcikmJnZvaWQgMCE9PWUmJmUuYmFySGVpZ2h0fHwodC5wbG90T3B0aW9ucy5iYXIuYmFySGVpZ2h0PTIpLG51bGwhPT0oaT10LnBsb3RPcHRpb25zLmJhcikmJnZvaWQgMCE9PWkmJmkuY29sdW1uV2lkdGh8fCh0LnBsb3RPcHRpb25zLmJhci5jb2x1bW5XaWR0aD0yKSx0fX0se2tleTpcImFyZWFcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntzdHJva2U6e3dpZHRoOjQsZmlsbDp7dHlwZTpcInNvbGlkXCIsZ3JhZGllbnQ6e2ludmVyc2VDb2xvcnM6ITEsc2hhZGU6XCJsaWdodFwiLHR5cGU6XCJ2ZXJ0aWNhbFwiLG9wYWNpdHlGcm9tOi42NSxvcGFjaXR5VG86LjUsc3RvcHM6WzAsMTAwLDEwMF19fX0sZmlsbDp7dHlwZTpcImdyYWRpZW50XCIsZ3JhZGllbnQ6e2ludmVyc2VDb2xvcnM6ITEsc2hhZGU6XCJsaWdodFwiLHR5cGU6XCJ2ZXJ0aWNhbFwiLG9wYWNpdHlGcm9tOi42NSxvcGFjaXR5VG86LjUsc3RvcHM6WzAsMTAwLDEwMF19fSxtYXJrZXJzOntzaXplOjAsaG92ZXI6e3NpemVPZmZzZXQ6Nn19LHRvb2x0aXA6e2ZvbGxvd0N1cnNvcjohMX19fX0se2tleTpcInJhbmdlQXJlYVwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue3N0cm9rZTp7Y3VydmU6XCJzdHJhaWdodFwiLHdpZHRoOjB9LGZpbGw6e3R5cGU6XCJzb2xpZFwiLG9wYWNpdHk6LjZ9LG1hcmtlcnM6e3NpemU6MH0sc3RhdGVzOntob3Zlcjp7ZmlsdGVyOnt0eXBlOlwibm9uZVwifX0sYWN0aXZlOntmaWx0ZXI6e3R5cGU6XCJub25lXCJ9fX0sdG9vbHRpcDp7aW50ZXJzZWN0OiExLHNoYXJlZDohMCxmb2xsb3dDdXJzb3I6ITAsY3VzdG9tOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbih0KXt2YXIgaT1NKHQpLGE9aS5jb2xvcixzPWkuc2VyaWVzTmFtZSxyPWkueWxhYmVsLG89aS5zdGFydCxuPWkuZW5kO3JldHVybiBYKGUoZSh7fSx0KSx7fSx7Y29sb3I6YSxzZXJpZXNOYW1lOnMseWxhYmVsOnIsc3RhcnQ6byxlbmQ6bn0pKX0odCl9fX19fSx7a2V5OlwiYnJ1c2hcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4geC5leHRlbmQodCx7Y2hhcnQ6e3Rvb2xiYXI6e2F1dG9TZWxlY3RlZDpcInNlbGVjdGlvblwiLHNob3c6ITF9LHpvb206e2VuYWJsZWQ6ITF9fSxkYXRhTGFiZWxzOntlbmFibGVkOiExfSxzdHJva2U6e3dpZHRoOjF9LHRvb2x0aXA6e2VuYWJsZWQ6ITF9LHhheGlzOnt0b29sdGlwOntlbmFibGVkOiExfX19KX19LHtrZXk6XCJzdGFja2VkMTAwXCIsdmFsdWU6ZnVuY3Rpb24odCl7dC5kYXRhTGFiZWxzPXQuZGF0YUxhYmVsc3x8e30sdC5kYXRhTGFiZWxzLmZvcm1hdHRlcj10LmRhdGFMYWJlbHMuZm9ybWF0dGVyfHx2b2lkIDA7dmFyIGU9dC5kYXRhTGFiZWxzLmZvcm1hdHRlcjtyZXR1cm4gdC55YXhpcy5mb3JFYWNoKChmdW5jdGlvbihlLGkpe3QueWF4aXNbaV0ubWluPTAsdC55YXhpc1tpXS5tYXg9MTAwfSkpLFwiYmFyXCI9PT10LmNoYXJ0LnR5cGUmJih0LmRhdGFMYWJlbHMuZm9ybWF0dGVyPWV8fGZ1bmN0aW9uKHQpe3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiB0JiZ0P3QudG9GaXhlZCgwKStcIiVcIjp0fSksdH19LHtrZXk6XCJzdGFja2VkQmFyc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5iYXIoKTtyZXR1cm4gZShlKHt9LHQpLHt9LHtwbG90T3B0aW9uczplKGUoe30sdC5wbG90T3B0aW9ucykse30se2JhcjplKGUoe30sdC5wbG90T3B0aW9ucy5iYXIpLHt9LHtib3JkZXJSYWRpdXNBcHBsaWNhdGlvbjpcImVuZFwiLGJvcmRlclJhZGl1c1doZW5TdGFja2VkOlwibGFzdFwifSl9KX0pfX0se2tleTpcImNvbnZlcnRDYXRUb051bWVyaWNcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWM9ITAsdH19LHtrZXk6XCJjb252ZXJ0Q2F0VG9OdW1lcmljWGF4aXNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dC54YXhpcy50eXBlPVwibnVtZXJpY1wiLHQueGF4aXMubGFiZWxzPXQueGF4aXMubGFiZWxzfHx7fSx0LnhheGlzLmxhYmVscy5mb3JtYXR0ZXI9dC54YXhpcy5sYWJlbHMuZm9ybWF0dGVyfHxmdW5jdGlvbih0KXtyZXR1cm4geC5pc051bWJlcih0KT9NYXRoLmZsb29yKHQpOnR9O3ZhciBhPXQueGF4aXMubGFiZWxzLmZvcm1hdHRlcixzPXQueGF4aXMuY2F0ZWdvcmllcyYmdC54YXhpcy5jYXRlZ29yaWVzLmxlbmd0aD90LnhheGlzLmNhdGVnb3JpZXM6dC5sYWJlbHM7cmV0dXJuIGkmJmkubGVuZ3RoJiYocz1pLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/dDpTdHJpbmcodCl9KSkpLHMmJnMubGVuZ3RoJiYodC54YXhpcy5sYWJlbHMuZm9ybWF0dGVyPWZ1bmN0aW9uKHQpe3JldHVybiB4LmlzTnVtYmVyKHQpP2Eoc1tNYXRoLmZsb29yKHQpLTFdKTphKHQpfSksdC54YXhpcy5jYXRlZ29yaWVzPVtdLHQubGFiZWxzPVtdLHQueGF4aXMudGlja0Ftb3VudD10LnhheGlzLnRpY2tBbW91bnR8fFwiZGF0YVBvaW50c1wiLHR9fSx7a2V5OlwiYnViYmxlXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57ZGF0YUxhYmVsczp7c3R5bGU6e2NvbG9yczpbXCIjZmZmXCJdfX0sdG9vbHRpcDp7c2hhcmVkOiExLGludGVyc2VjdDohMH0seGF4aXM6e2Nyb3NzaGFpcnM6e3dpZHRoOjB9fSxmaWxsOnt0eXBlOlwic29saWRcIixncmFkaWVudDp7c2hhZGU6XCJsaWdodFwiLGludmVyc2U6ITAsc2hhZGVJbnRlbnNpdHk6LjU1LG9wYWNpdHlGcm9tOi40LG9wYWNpdHlUbzouOH19fX19LHtrZXk6XCJzY2F0dGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57ZGF0YUxhYmVsczp7ZW5hYmxlZDohMX0sdG9vbHRpcDp7c2hhcmVkOiExLGludGVyc2VjdDohMH0sbWFya2Vyczp7c2l6ZTo2LHN0cm9rZVdpZHRoOjEsaG92ZXI6e3NpemVPZmZzZXQ6Mn19fX19LHtrZXk6XCJoZWF0bWFwXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57Y2hhcnQ6e3N0YWNrZWQ6ITF9LGZpbGw6e29wYWNpdHk6MX0sZGF0YUxhYmVsczp7c3R5bGU6e2NvbG9yczpbXCIjZmZmXCJdfX0sc3Ryb2tlOntjb2xvcnM6W1wiI2ZmZlwiXX0sdG9vbHRpcDp7Zm9sbG93Q3Vyc29yOiEwLG1hcmtlcjp7c2hvdzohMX0seDp7c2hvdzohMX19LGxlZ2VuZDp7cG9zaXRpb246XCJ0b3BcIixtYXJrZXJzOntzaGFwZTpcInNxdWFyZVwiLHNpemU6MTAsb2Zmc2V0WToyfX0sZ3JpZDp7cGFkZGluZzp7cmlnaHQ6MjB9fX19fSx7a2V5OlwidHJlZW1hcFwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue2NoYXJ0Ont6b29tOntlbmFibGVkOiExfX0sZGF0YUxhYmVsczp7c3R5bGU6e2ZvbnRTaXplOjE0LGZvbnRXZWlnaHQ6NjAwLGNvbG9yczpbXCIjZmZmXCJdfX0sc3Ryb2tlOntzaG93OiEwLHdpZHRoOjIsY29sb3JzOltcIiNmZmZcIl19LGxlZ2VuZDp7c2hvdzohMX0sZmlsbDp7Z3JhZGllbnQ6e3N0b3BzOlswLDEwMF19fSx0b29sdGlwOntmb2xsb3dDdXJzb3I6ITAseDp7c2hvdzohMX19LGdyaWQ6e3BhZGRpbmc6e2xlZnQ6MCxyaWdodDowfX0seGF4aXM6e2Nyb3NzaGFpcnM6e3Nob3c6ITF9LHRvb2x0aXA6e2VuYWJsZWQ6ITF9fX19fSx7a2V5OlwicGllXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57Y2hhcnQ6e3Rvb2xiYXI6e3Nob3c6ITF9fSxwbG90T3B0aW9uczp7cGllOntkb251dDp7bGFiZWxzOntzaG93OiExfX19fSxkYXRhTGFiZWxzOntmb3JtYXR0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQudG9GaXhlZCgxKStcIiVcIn0sc3R5bGU6e2NvbG9yczpbXCIjZmZmXCJdfSxiYWNrZ3JvdW5kOntlbmFibGVkOiExfSxkcm9wU2hhZG93OntlbmFibGVkOiEwfX0sc3Ryb2tlOntjb2xvcnM6W1wiI2ZmZlwiXX0sZmlsbDp7b3BhY2l0eToxLGdyYWRpZW50OntzaGFkZTpcImxpZ2h0XCIsc3RvcHM6WzAsMTAwXX19LHRvb2x0aXA6e3RoZW1lOlwiZGFya1wiLGZpbGxTZXJpZXNDb2xvcjohMH0sbGVnZW5kOntwb3NpdGlvbjpcInJpZ2h0XCJ9fX19LHtrZXk6XCJkb251dFwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue2NoYXJ0Ont0b29sYmFyOntzaG93OiExfX0sZGF0YUxhYmVsczp7Zm9ybWF0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0LnRvRml4ZWQoMSkrXCIlXCJ9LHN0eWxlOntjb2xvcnM6W1wiI2ZmZlwiXX0sYmFja2dyb3VuZDp7ZW5hYmxlZDohMX0sZHJvcFNoYWRvdzp7ZW5hYmxlZDohMH19LHN0cm9rZTp7Y29sb3JzOltcIiNmZmZcIl19LGZpbGw6e29wYWNpdHk6MSxncmFkaWVudDp7c2hhZGU6XCJsaWdodFwiLHNoYWRlSW50ZW5zaXR5Oi4zNSxzdG9wczpbODAsMTAwXSxvcGFjaXR5RnJvbToxLG9wYWNpdHlUbzoxfX0sdG9vbHRpcDp7dGhlbWU6XCJkYXJrXCIsZmlsbFNlcmllc0NvbG9yOiEwfSxsZWdlbmQ6e3Bvc2l0aW9uOlwicmlnaHRcIn19fX0se2tleTpcInBvbGFyQXJlYVwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0cy55YXhpc1swXS50aWNrQW1vdW50PXRoaXMub3B0cy55YXhpc1swXS50aWNrQW1vdW50P3RoaXMub3B0cy55YXhpc1swXS50aWNrQW1vdW50OjYse2NoYXJ0Ont0b29sYmFyOntzaG93OiExfX0sZGF0YUxhYmVsczp7Zm9ybWF0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0LnRvRml4ZWQoMSkrXCIlXCJ9LGVuYWJsZWQ6ITF9LHN0cm9rZTp7c2hvdzohMCx3aWR0aDoyfSxmaWxsOntvcGFjaXR5Oi43fSx0b29sdGlwOnt0aGVtZTpcImRhcmtcIixmaWxsU2VyaWVzQ29sb3I6ITB9LGxlZ2VuZDp7cG9zaXRpb246XCJyaWdodFwifX19fSx7a2V5OlwicmFkYXJcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdHMueWF4aXNbMF0ubGFiZWxzLm9mZnNldFk9dGhpcy5vcHRzLnlheGlzWzBdLmxhYmVscy5vZmZzZXRZP3RoaXMub3B0cy55YXhpc1swXS5sYWJlbHMub2Zmc2V0WTo2LHtkYXRhTGFiZWxzOntlbmFibGVkOiExLHN0eWxlOntmb250U2l6ZTpcIjExcHhcIn19LHN0cm9rZTp7d2lkdGg6Mn0sbWFya2Vyczp7c2l6ZTozLHN0cm9rZVdpZHRoOjEsc3Ryb2tlT3BhY2l0eToxfSxmaWxsOntvcGFjaXR5Oi4yfSx0b29sdGlwOntzaGFyZWQ6ITEsaW50ZXJzZWN0OiEwLGZvbGxvd0N1cnNvcjohMH0sZ3JpZDp7c2hvdzohMX0seGF4aXM6e2xhYmVsczp7Zm9ybWF0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0fSxzdHlsZTp7Y29sb3JzOltcIiNhOGE4YThcIl0sZm9udFNpemU6XCIxMXB4XCJ9fSx0b29sdGlwOntlbmFibGVkOiExfSxjcm9zc2hhaXJzOntzaG93OiExfX19fX0se2tleTpcInJhZGlhbEJhclwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue2NoYXJ0OnthbmltYXRpb25zOntkeW5hbWljQW5pbWF0aW9uOntlbmFibGVkOiEwLHNwZWVkOjgwMH19LHRvb2xiYXI6e3Nob3c6ITF9fSxmaWxsOntncmFkaWVudDp7c2hhZGU6XCJkYXJrXCIsc2hhZGVJbnRlbnNpdHk6LjQsaW52ZXJzZUNvbG9yczohMSx0eXBlOlwiZGlhZ29uYWwyXCIsb3BhY2l0eUZyb206MSxvcGFjaXR5VG86MSxzdG9wczpbNzAsOTgsMTAwXX19LGxlZ2VuZDp7c2hvdzohMSxwb3NpdGlvbjpcInJpZ2h0XCJ9LHRvb2x0aXA6e2VuYWJsZWQ6ITEsZmlsbFNlcmllc0NvbG9yOiEwfX19fSx7a2V5OlwiX2dldEJveFRvb2x0aXBcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMpe3ZhciByPXQuZ2xvYmFscy5zZXJpZXNDYW5kbGVPW2VdW2ldLG89dC5nbG9iYWxzLnNlcmllc0NhbmRsZUhbZV1baV0sbj10Lmdsb2JhbHMuc2VyaWVzQ2FuZGxlTVtlXVtpXSxsPXQuZ2xvYmFscy5zZXJpZXNDYW5kbGVMW2VdW2ldLGg9dC5nbG9iYWxzLnNlcmllc0NhbmRsZUNbZV1baV07cmV0dXJuIHQuY29uZmlnLnNlcmllc1tlXS50eXBlJiZ0LmNvbmZpZy5zZXJpZXNbZV0udHlwZSE9PXM/JzxkaXYgY2xhc3M9XCJhcGV4Y2hhcnRzLWN1c3RvbS10b29sdGlwXCI+XFxuICAgICAgICAgICcuY29uY2F0KHQuY29uZmlnLnNlcmllc1tlXS5uYW1lP3QuY29uZmlnLnNlcmllc1tlXS5uYW1lOlwic2VyaWVzLVwiKyhlKzEpLFwiOiA8c3Ryb25nPlwiKS5jb25jYXQodC5nbG9iYWxzLnNlcmllc1tlXVtpXSxcIjwvc3Ryb25nPlxcbiAgICAgICAgPC9kaXY+XCIpOic8ZGl2IGNsYXNzPVwiYXBleGNoYXJ0cy10b29sdGlwLWJveCBhcGV4Y2hhcnRzLXRvb2x0aXAtJy5jb25jYXQodC5jb25maWcuY2hhcnQudHlwZSwnXCI+JykrXCI8ZGl2PlwiLmNvbmNhdChhWzBdLCc6IDxzcGFuIGNsYXNzPVwidmFsdWVcIj4nKStyK1wiPC9zcGFuPjwvZGl2PlwiK1wiPGRpdj5cIi5jb25jYXQoYVsxXSwnOiA8c3BhbiBjbGFzcz1cInZhbHVlXCI+JykrbytcIjwvc3Bhbj48L2Rpdj5cIisobj9cIjxkaXY+XCIuY29uY2F0KGFbMl0sJzogPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPicpK24rXCI8L3NwYW4+PC9kaXY+XCI6XCJcIikrXCI8ZGl2PlwiLmNvbmNhdChhWzNdLCc6IDxzcGFuIGNsYXNzPVwidmFsdWVcIj4nKStsK1wiPC9zcGFuPjwvZGl2PlwiK1wiPGRpdj5cIi5jb25jYXQoYVs0XSwnOiA8c3BhbiBjbGFzcz1cInZhbHVlXCI+JykraCtcIjwvc3Bhbj48L2Rpdj48L2Rpdj5cIn19XSksdH0oKSxFPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5vcHRzPWV9cmV0dXJuIHIodCxbe2tleTpcImluaXRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LnJlc3BvbnNpdmVPdmVycmlkZSxhPXRoaXMub3B0cyxzPW5ldyBMLHI9bmV3IHooYSk7dGhpcy5jaGFydFR5cGU9YS5jaGFydC50eXBlLGE9dGhpcy5leHRlbmRZQXhpcyhhKSxhPXRoaXMuZXh0ZW5kQW5ub3RhdGlvbnMoYSk7dmFyIG89cy5pbml0KCksbj17fTtpZihhJiZcIm9iamVjdFwiPT09aShhKSl7dmFyIGwsaCxjLGQsZyx1LHA9e307cD0tMSE9PVtcImxpbmVcIixcImFyZWFcIixcImJhclwiLFwiY2FuZGxlc3RpY2tcIixcImJveFBsb3RcIixcInJhbmdlQmFyXCIsXCJyYW5nZUFyZWFcIixcImJ1YmJsZVwiLFwic2NhdHRlclwiLFwiaGVhdG1hcFwiLFwidHJlZW1hcFwiLFwicGllXCIsXCJwb2xhckFyZWFcIixcImRvbnV0XCIsXCJyYWRhclwiLFwicmFkaWFsQmFyXCJdLmluZGV4T2YoYS5jaGFydC50eXBlKT9yW2EuY2hhcnQudHlwZV0oKTpyLmxpbmUoKSxhLmNoYXJ0LnN0YWNrZWQmJlwiYmFyXCI9PT1hLmNoYXJ0LnR5cGUmJihwPXIuc3RhY2tlZEJhcnMoKSksbnVsbCE9PShsPWEuY2hhcnQuYnJ1c2gpJiZ2b2lkIDAhPT1sJiZsLmVuYWJsZWQmJihwPXIuYnJ1c2gocCkpLGEuY2hhcnQuc3RhY2tlZCYmXCIxMDAlXCI9PT1hLmNoYXJ0LnN0YWNrVHlwZSYmKGE9ci5zdGFja2VkMTAwKGEpKSxudWxsIT09KGg9YS5wbG90T3B0aW9ucykmJnZvaWQgMCE9PWgmJm51bGwhPT0oYz1oLmJhcikmJnZvaWQgMCE9PWMmJmMuaXNEdW1iYmVsbCYmKGE9ci5kdW1iYmVsbChhKSksdGhpcy5jaGVja0ZvckRhcmtUaGVtZSh3aW5kb3cuQXBleCksdGhpcy5jaGVja0ZvckRhcmtUaGVtZShhKSxhLnhheGlzPWEueGF4aXN8fHdpbmRvdy5BcGV4LnhheGlzfHx7fSxlfHwoYS54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWM9ITEpLChudWxsIT09KGQ9KGE9dGhpcy5jaGVja0ZvckNhdFRvTnVtZXJpY1hBeGlzKHRoaXMuY2hhcnRUeXBlLHAsYSkpLmNoYXJ0LnNwYXJrbGluZSkmJnZvaWQgMCE9PWQmJmQuZW5hYmxlZHx8bnVsbCE9PShnPXdpbmRvdy5BcGV4LmNoYXJ0KSYmdm9pZCAwIT09ZyYmbnVsbCE9PSh1PWcuc3BhcmtsaW5lKSYmdm9pZCAwIT09dSYmdS5lbmFibGVkKSYmKHA9ci5zcGFya2xpbmUocCkpLG49eC5leHRlbmQobyxwKX12YXIgZj14LmV4dGVuZChuLHdpbmRvdy5BcGV4KTtyZXR1cm4gbz14LmV4dGVuZChmLGEpLG89dGhpcy5oYW5kbGVVc2VySW5wdXRFcnJvcnMobyl9fSx7a2V5OlwiY2hlY2tGb3JDYXRUb051bWVyaWNYQXhpc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYSxzLHI9bmV3IHooaSksbz0oXCJiYXJcIj09PXR8fFwiYm94UGxvdFwiPT09dCkmJihudWxsPT09KGE9aS5wbG90T3B0aW9ucyl8fHZvaWQgMD09PWF8fG51bGw9PT0ocz1hLmJhcil8fHZvaWQgMD09PXM/dm9pZCAwOnMuaG9yaXpvbnRhbCksbj1cInBpZVwiPT09dHx8XCJwb2xhckFyZWFcIj09PXR8fFwiZG9udXRcIj09PXR8fFwicmFkYXJcIj09PXR8fFwicmFkaWFsQmFyXCI9PT10fHxcImhlYXRtYXBcIj09PXQsbD1cImRhdGV0aW1lXCIhPT1pLnhheGlzLnR5cGUmJlwibnVtZXJpY1wiIT09aS54YXhpcy50eXBlLGg9aS54YXhpcy50aWNrUGxhY2VtZW50P2kueGF4aXMudGlja1BsYWNlbWVudDplLnhheGlzJiZlLnhheGlzLnRpY2tQbGFjZW1lbnQ7cmV0dXJuIG98fG58fCFsfHxcImJldHdlZW5cIj09PWh8fChpPXIuY29udmVydENhdFRvTnVtZXJpYyhpKSksaX19LHtrZXk6XCJleHRlbmRZQXhpc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9bmV3IEw7KHZvaWQgMD09PXQueWF4aXN8fCF0LnlheGlzfHxBcnJheS5pc0FycmF5KHQueWF4aXMpJiYwPT09dC55YXhpcy5sZW5ndGgpJiYodC55YXhpcz17fSksdC55YXhpcy5jb25zdHJ1Y3RvciE9PUFycmF5JiZ3aW5kb3cuQXBleC55YXhpcyYmd2luZG93LkFwZXgueWF4aXMuY29uc3RydWN0b3IhPT1BcnJheSYmKHQueWF4aXM9eC5leHRlbmQodC55YXhpcyx3aW5kb3cuQXBleC55YXhpcykpLHQueWF4aXMuY29uc3RydWN0b3IhPT1BcnJheT90LnlheGlzPVt4LmV4dGVuZChpLnlBeGlzLHQueWF4aXMpXTp0LnlheGlzPXguZXh0ZW5kQXJyYXkodC55YXhpcyxpLnlBeGlzKTt2YXIgYT0hMTt0LnlheGlzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QubG9nYXJpdGhtaWMmJihhPSEwKX0pKTt2YXIgcz10LnNlcmllcztyZXR1cm4gZSYmIXMmJihzPWUuY29uZmlnLnNlcmllcyksYSYmcy5sZW5ndGghPT10LnlheGlzLmxlbmd0aCYmcy5sZW5ndGgmJih0LnlheGlzPXMubWFwKChmdW5jdGlvbihlLGEpe2lmKGUubmFtZXx8KHNbYV0ubmFtZT1cInNlcmllcy1cIi5jb25jYXQoYSsxKSksdC55YXhpc1thXSlyZXR1cm4gdC55YXhpc1thXS5zZXJpZXNOYW1lPXNbYV0ubmFtZSx0LnlheGlzW2FdO3ZhciByPXguZXh0ZW5kKGkueUF4aXMsdC55YXhpc1swXSk7cmV0dXJuIHIuc2hvdz0hMSxyfSkpKSxhJiZzLmxlbmd0aD4xJiZzLmxlbmd0aCE9PXQueWF4aXMubGVuZ3RoJiZjb25zb2xlLndhcm4oXCJBIG11bHRpLXNlcmllcyBsb2dhcml0aG1pYyBjaGFydCBzaG91bGQgaGF2ZSBlcXVhbCBudW1iZXIgb2Ygc2VyaWVzIGFuZCB5LWF4ZXMuIFBsZWFzZSBtYWtlIHN1cmUgdG8gZXF1YWxpemUgYm90aC5cIiksdH19LHtrZXk6XCJleHRlbmRBbm5vdGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10LmFubm90YXRpb25zJiYodC5hbm5vdGF0aW9ucz17fSx0LmFubm90YXRpb25zLnlheGlzPVtdLHQuYW5ub3RhdGlvbnMueGF4aXM9W10sdC5hbm5vdGF0aW9ucy5wb2ludHM9W10pLHQ9dGhpcy5leHRlbmRZQXhpc0Fubm90YXRpb25zKHQpLHQ9dGhpcy5leHRlbmRYQXhpc0Fubm90YXRpb25zKHQpLHQ9dGhpcy5leHRlbmRQb2ludEFubm90YXRpb25zKHQpfX0se2tleTpcImV4dGVuZFlBeGlzQW5ub3RhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1uZXcgTDtyZXR1cm4gdC5hbm5vdGF0aW9ucy55YXhpcz14LmV4dGVuZEFycmF5KHZvaWQgMCE9PXQuYW5ub3RhdGlvbnMueWF4aXM/dC5hbm5vdGF0aW9ucy55YXhpczpbXSxlLnlBeGlzQW5ub3RhdGlvbiksdH19LHtrZXk6XCJleHRlbmRYQXhpc0Fubm90YXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9bmV3IEw7cmV0dXJuIHQuYW5ub3RhdGlvbnMueGF4aXM9eC5leHRlbmRBcnJheSh2b2lkIDAhPT10LmFubm90YXRpb25zLnhheGlzP3QuYW5ub3RhdGlvbnMueGF4aXM6W10sZS54QXhpc0Fubm90YXRpb24pLHR9fSx7a2V5OlwiZXh0ZW5kUG9pbnRBbm5vdGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBMO3JldHVybiB0LmFubm90YXRpb25zLnBvaW50cz14LmV4dGVuZEFycmF5KHZvaWQgMCE9PXQuYW5ub3RhdGlvbnMucG9pbnRzP3QuYW5ub3RhdGlvbnMucG9pbnRzOltdLGUucG9pbnRBbm5vdGF0aW9uKSx0fX0se2tleTpcImNoZWNrRm9yRGFya1RoZW1lXCIsdmFsdWU6ZnVuY3Rpb24odCl7dC50aGVtZSYmXCJkYXJrXCI9PT10LnRoZW1lLm1vZGUmJih0LnRvb2x0aXB8fCh0LnRvb2x0aXA9e30pLFwibGlnaHRcIiE9PXQudG9vbHRpcC50aGVtZSYmKHQudG9vbHRpcC50aGVtZT1cImRhcmtcIiksdC5jaGFydC5mb3JlQ29sb3J8fCh0LmNoYXJ0LmZvcmVDb2xvcj1cIiNmNmY3ZjhcIiksdC5jaGFydC5iYWNrZ3JvdW5kfHwodC5jaGFydC5iYWNrZ3JvdW5kPVwiIzQyNDI0MlwiKSx0LnRoZW1lLnBhbGV0dGV8fCh0LnRoZW1lLnBhbGV0dGU9XCJwYWxldHRlNFwiKSl9fSx7a2V5OlwiaGFuZGxlVXNlcklucHV0RXJyb3JzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dDtpZihlLnRvb2x0aXAuc2hhcmVkJiZlLnRvb2x0aXAuaW50ZXJzZWN0KXRocm93IG5ldyBFcnJvcihcInRvb2x0aXAuc2hhcmVkIGNhbm5vdCBiZSBlbmFibGVkIHdoZW4gdG9vbHRpcC5pbnRlcnNlY3QgaXMgdHJ1ZS4gVHVybiBvZmYgYW55IG90aGVyIG9wdGlvbiBieSBzZXR0aW5nIGl0IHRvIGZhbHNlLlwiKTtpZihcImJhclwiPT09ZS5jaGFydC50eXBlJiZlLnBsb3RPcHRpb25zLmJhci5ob3Jpem9udGFsKXtpZihlLnlheGlzLmxlbmd0aD4xKXRocm93IG5ldyBFcnJvcihcIk11bHRpcGxlIFkgQXhpcyBmb3IgYmFycyBhcmUgbm90IHN1cHBvcnRlZC4gU3dpdGNoIHRvIGNvbHVtbiBjaGFydCBieSBzZXR0aW5nIHBsb3RPcHRpb25zLmJhci5ob3Jpem9udGFsPWZhbHNlXCIpO2UueWF4aXNbMF0ucmV2ZXJzZWQmJihlLnlheGlzWzBdLm9wcG9zaXRlPSEwKSxlLnhheGlzLnRvb2x0aXAuZW5hYmxlZD0hMSxlLnlheGlzWzBdLnRvb2x0aXAuZW5hYmxlZD0hMSxlLmNoYXJ0Lnpvb20uZW5hYmxlZD0hMX1yZXR1cm5cImJhclwiIT09ZS5jaGFydC50eXBlJiZcInJhbmdlQmFyXCIhPT1lLmNoYXJ0LnR5cGV8fGUudG9vbHRpcC5zaGFyZWQmJlwiYmFyV2lkdGhcIj09PWUueGF4aXMuY3Jvc3NoYWlycy53aWR0aCYmZS5zZXJpZXMubGVuZ3RoPjEmJihlLnhheGlzLmNyb3NzaGFpcnMud2lkdGg9XCJ0aWNrV2lkdGhcIiksXCJjYW5kbGVzdGlja1wiIT09ZS5jaGFydC50eXBlJiZcImJveFBsb3RcIiE9PWUuY2hhcnQudHlwZXx8ZS55YXhpc1swXS5yZXZlcnNlZCYmKGNvbnNvbGUud2FybihcIlJldmVyc2VkIHktYXhpcyBpbiBcIi5jb25jYXQoZS5jaGFydC50eXBlLFwiIGNoYXJ0IGlzIG5vdCBzdXBwb3J0ZWQuXCIpKSxlLnlheGlzWzBdLnJldmVyc2VkPSExKSxlfX1dKSx0fSgpLFk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7YSh0aGlzLHQpfXJldHVybiByKHQsW3trZXk6XCJpbml0R2xvYmFsVmFyc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3Quc2VyaWVzPVtdLHQuc2VyaWVzQ2FuZGxlTz1bXSx0LnNlcmllc0NhbmRsZUg9W10sdC5zZXJpZXNDYW5kbGVNPVtdLHQuc2VyaWVzQ2FuZGxlTD1bXSx0LnNlcmllc0NhbmRsZUM9W10sdC5zZXJpZXNSYW5nZVN0YXJ0PVtdLHQuc2VyaWVzUmFuZ2VFbmQ9W10sdC5zZXJpZXNSYW5nZT1bXSx0LnNlcmllc1BlcmNlbnQ9W10sdC5zZXJpZXNHb2Fscz1bXSx0LnNlcmllc1g9W10sdC5zZXJpZXNaPVtdLHQuc2VyaWVzTmFtZXM9W10sdC5zZXJpZXNUb3RhbHM9W10sdC5zZXJpZXNMb2c9W10sdC5zZXJpZXNDb2xvcnM9W10sdC5zdGFja2VkU2VyaWVzVG90YWxzPVtdLHQuc2VyaWVzWHZhbHVlcz1bXSx0LnNlcmllc1l2YWx1ZXM9W10sdC5sYWJlbHM9W10sdC5oYXNYYXhpc0dyb3Vwcz0hMSx0Lmdyb3Vwcz1bXSx0Lmhhc1Nlcmllc0dyb3Vwcz0hMSx0LnNlcmllc0dyb3Vwcz1bXSx0LmNhdGVnb3J5TGFiZWxzPVtdLHQudGltZXNjYWxlTGFiZWxzPVtdLHQubm9MYWJlbHNQcm92aWRlZD0hMSx0LnJlc2l6ZVRpbWVyPW51bGwsdC5zZWxlY3Rpb25SZXNpemVUaW1lcj1udWxsLHQuZGVsYXllZEVsZW1lbnRzPVtdLHQucG9pbnRzQXJyYXk9W10sdC5kYXRhTGFiZWxzUmVjdHM9W10sdC5pc1hOdW1lcmljPSExLHQuc2tpcExhc3RUaW1lbGluZWxhYmVsPSExLHQuc2tpcEZpcnN0VGltZWxpbmVsYWJlbD0hMSx0LmlzRGF0YVhZWj0hMSx0LmlzTXVsdGlMaW5lWD0hMSx0LmlzTXVsdGlwbGVZQXhpcz0hMSx0Lm1heFk9LU51bWJlci5NQVhfVkFMVUUsdC5taW5ZPU51bWJlci5NSU5fVkFMVUUsdC5taW5ZQXJyPVtdLHQubWF4WUFycj1bXSx0Lm1heFg9LU51bWJlci5NQVhfVkFMVUUsdC5taW5YPU51bWJlci5NQVhfVkFMVUUsdC5pbml0aWFsTWF4WD0tTnVtYmVyLk1BWF9WQUxVRSx0LmluaXRpYWxNaW5YPU51bWJlci5NQVhfVkFMVUUsdC5tYXhEYXRlPTAsdC5taW5EYXRlPU51bWJlci5NQVhfVkFMVUUsdC5taW5aPU51bWJlci5NQVhfVkFMVUUsdC5tYXhaPS1OdW1iZXIuTUFYX1ZBTFVFLHQubWluWERpZmY9TnVtYmVyLk1BWF9WQUxVRSx0LnlBeGlzU2NhbGU9W10sdC54QXhpc1NjYWxlPW51bGwsdC54QXhpc1RpY2tzUG9zaXRpb25zPVtdLHQueUxhYmVsc0Nvb3Jkcz1bXSx0LnlUaXRsZUNvb3Jkcz1bXSx0LmJhclBhZEZvck51bWVyaWNBeGlzPTAsdC5wYWRIb3Jpem9udGFsPTAsdC54UmFuZ2U9MCx0LnlSYW5nZT1bXSx0LnpSYW5nZT0wLHQuZGF0YVBvaW50cz0wLHQueFRpY2tBbW91bnQ9MH19LHtrZXk6XCJnbG9iYWxWYXJzXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJue2NoYXJ0SUQ6bnVsbCxjdWlkOm51bGwsZXZlbnRzOntiZWZvcmVNb3VudDpbXSxtb3VudGVkOltdLHVwZGF0ZWQ6W10sY2xpY2tlZDpbXSxzZWxlY3Rpb246W10sZGF0YVBvaW50U2VsZWN0aW9uOltdLHpvb21lZDpbXSxzY3JvbGxlZDpbXX0sY29sb3JzOltdLGNsaWVudFg6bnVsbCxjbGllbnRZOm51bGwsZmlsbDp7Y29sb3JzOltdfSxzdHJva2U6e2NvbG9yczpbXX0sZGF0YUxhYmVsczp7c3R5bGU6e2NvbG9yczpbXX19LHJhZGFyUG9seWdvbnM6e2ZpbGw6e2NvbG9yczpbXX19LG1hcmtlcnM6e2NvbG9yczpbXSxzaXplOnQubWFya2Vycy5zaXplLGxhcmdlc3RTaXplOjB9LGFuaW1hdGlvbkVuZGVkOiExLGlzVG91Y2hEZXZpY2U6XCJvbnRvdWNoc3RhcnRcImluIHdpbmRvd3x8bmF2aWdhdG9yLm1zTWF4VG91Y2hQb2ludHMsaXNEaXJ0eTohMSxpc0V4ZWNDYWxsZWQ6ITEsaW5pdGlhbENvbmZpZzpudWxsLGluaXRpYWxTZXJpZXM6W10sbGFzdFhBeGlzOltdLGxhc3RZQXhpczpbXSxjb2x1bW5TZXJpZXM6bnVsbCxsYWJlbHM6W10sdGltZXNjYWxlTGFiZWxzOltdLG5vTGFiZWxzUHJvdmlkZWQ6ITEsYWxsU2VyaWVzQ29sbGFwc2VkOiExLGNvbGxhcHNlZFNlcmllczpbXSxjb2xsYXBzZWRTZXJpZXNJbmRpY2VzOltdLGFuY2lsbGFyeUNvbGxhcHNlZFNlcmllczpbXSxhbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzOltdLHJpc2luZ1NlcmllczpbXSxkYXRhRm9ybWF0WE51bWVyaWM6ITEsY2FwdHVyZWRTZXJpZXNJbmRleDotMSxjYXB0dXJlZERhdGFQb2ludEluZGV4Oi0xLHNlbGVjdGVkRGF0YVBvaW50czpbXSxnb2xkZW5QYWRkaW5nOjM1LGludmFsaWRMb2dTY2FsZTohMSxpZ25vcmVZQXhpc0luZGV4ZXM6W10seUF4aXNTYW1lU2NhbGVJbmRpY2VzOltdLG1heFZhbHNJbkFycmF5SW5kZXg6MCxyYWRpYWxTaXplOjAsc2VsZWN0aW9uOnZvaWQgMCx6b29tRW5hYmxlZDpcInpvb21cIj09PXQuY2hhcnQudG9vbGJhci5hdXRvU2VsZWN0ZWQmJnQuY2hhcnQudG9vbGJhci50b29scy56b29tJiZ0LmNoYXJ0Lnpvb20uZW5hYmxlZCxwYW5FbmFibGVkOlwicGFuXCI9PT10LmNoYXJ0LnRvb2xiYXIuYXV0b1NlbGVjdGVkJiZ0LmNoYXJ0LnRvb2xiYXIudG9vbHMucGFuLHNlbGVjdGlvbkVuYWJsZWQ6XCJzZWxlY3Rpb25cIj09PXQuY2hhcnQudG9vbGJhci5hdXRvU2VsZWN0ZWQmJnQuY2hhcnQudG9vbGJhci50b29scy5zZWxlY3Rpb24seWF4aXM6bnVsbCxtb3VzZWRvd246ITEsbGFzdENsaWVudFBvc2l0aW9uOnt9LHZpc2libGVYUmFuZ2U6dm9pZCAwLHlWYWx1ZURlY2ltYWw6MCx0b3RhbDowLFNWR05TOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixzdmdXaWR0aDowLHN2Z0hlaWdodDowLG5vRGF0YTohMSxsb2NhbGU6e30sZG9tOnt9LG1lbW9yeTp7bWV0aG9kc1RvRXhlYzpbXX0sc2hvdWxkQW5pbWF0ZTohMCxza2lwTGFzdFRpbWVsaW5lbGFiZWw6ITEsc2tpcEZpcnN0VGltZWxpbmVsYWJlbDohMSxkZWxheWVkRWxlbWVudHM6W10sYXhpc0NoYXJ0czohMCxpc0RhdGFYWVo6ITEscmVzaXplZDohMSxyZXNpemVUaW1lcjpudWxsLGNvbWJvQ2hhcnRzOiExLGRhdGFDaGFuZ2VkOiExLHByZXZpb3VzUGF0aHM6W10sYWxsU2VyaWVzSGFzRXF1YWxYOiEwLHBvaW50c0FycmF5OltdLGRhdGFMYWJlbHNSZWN0czpbXSxsYXN0RHJhd25EYXRhTGFiZWxzSW5kZXhlczpbXSxoYXNOdWxsVmFsdWVzOiExLGVhc2luZzpudWxsLHpvb21lZDohMSxncmlkV2lkdGg6MCxncmlkSGVpZ2h0OjAscm90YXRlWExhYmVsczohMSxkZWZhdWx0TGFiZWxzOiExLHhMYWJlbEZvcm1hdHRlcjp2b2lkIDAseUxhYmVsRm9ybWF0dGVyczpbXSx4YXhpc1Rvb2x0aXBGb3JtYXR0ZXI6dm9pZCAwLHR0S2V5Rm9ybWF0dGVyOnZvaWQgMCx0dFZhbDp2b2lkIDAsdHRaRm9ybWF0dGVyOnZvaWQgMCxMSU5FX0hFSUdIVF9SQVRJTzoxLjYxOCx4QXhpc0xhYmVsc0hlaWdodDowLHhBeGlzR3JvdXBMYWJlbHNIZWlnaHQ6MCx4QXhpc0xhYmVsc1dpZHRoOjAseUF4aXNMYWJlbHNXaWR0aDowLHNjYWxlWDoxLHNjYWxlWToxLHRyYW5zbGF0ZVg6MCx0cmFuc2xhdGVZOjAsdHJhbnNsYXRlWUF4aXNYOltdLHlBeGlzV2lkdGhzOltdLHRyYW5zbGF0ZVhBeGlzWTowLHRyYW5zbGF0ZVhBeGlzWDowLHRvb2x0aXA6bnVsbH19fSx7a2V5OlwiaW5pdFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2xvYmFsVmFycyh0KTtyZXR1cm4gdGhpcy5pbml0R2xvYmFsVmFycyhlKSxlLmluaXRpYWxDb25maWc9eC5leHRlbmQoe30sdCksZS5pbml0aWFsU2VyaWVzPXguY2xvbmUodC5zZXJpZXMpLGUubGFzdFhBeGlzPXguY2xvbmUoZS5pbml0aWFsQ29uZmlnLnhheGlzKSxlLmxhc3RZQXhpcz14LmNsb25lKGUuaW5pdGlhbENvbmZpZy55YXhpcyksZX19XSksdH0oKSxGPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5vcHRzPWV9cmV0dXJuIHIodCxbe2tleTpcImluaXRcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PW5ldyBFKHRoaXMub3B0cykuaW5pdCh7cmVzcG9uc2l2ZU92ZXJyaWRlOiExfSk7cmV0dXJue2NvbmZpZzp0LGdsb2JhbHM6KG5ldyBZKS5pbml0KHQpfX19XSksdH0oKSxSPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMub3B0cz1udWxsLHRoaXMuc2VyaWVzSW5kZXg9MH1yZXR1cm4gcih0LFt7a2V5OlwiY2xpcHBlZEltZ0FyZWFcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1lLmNvbmZpZyxhPXBhcnNlSW50KGUuZ2xvYmFscy5ncmlkV2lkdGgsMTApLHM9cGFyc2VJbnQoZS5nbG9iYWxzLmdyaWRIZWlnaHQsMTApLHI9YT5zP2E6cyxvPXQuaW1hZ2Usbj0wLGw9MDt2b2lkIDA9PT10LndpZHRoJiZ2b2lkIDA9PT10LmhlaWdodD92b2lkIDAhPT1pLmZpbGwuaW1hZ2Uud2lkdGgmJnZvaWQgMCE9PWkuZmlsbC5pbWFnZS5oZWlnaHQ/KG49aS5maWxsLmltYWdlLndpZHRoKzEsbD1pLmZpbGwuaW1hZ2UuaGVpZ2h0KToobj1yKzEsbD1yKToobj10LndpZHRoLGw9dC5oZWlnaHQpO3ZhciBoPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhlLmdsb2JhbHMuU1ZHTlMsXCJwYXR0ZXJuXCIpO20uc2V0QXR0cnMoaCx7aWQ6dC5wYXR0ZXJuSUQscGF0dGVyblVuaXRzOnQucGF0dGVyblVuaXRzP3QucGF0dGVyblVuaXRzOlwidXNlclNwYWNlT25Vc2VcIix3aWR0aDpuK1wicHhcIixoZWlnaHQ6bCtcInB4XCJ9KTt2YXIgYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoZS5nbG9iYWxzLlNWR05TLFwiaW1hZ2VcIik7aC5hcHBlbmRDaGlsZChjKSxjLnNldEF0dHJpYnV0ZU5TKHdpbmRvdy5TVkcueGxpbmssXCJocmVmXCIsbyksbS5zZXRBdHRycyhjLHt4OjAseTowLHByZXNlcnZlQXNwZWN0UmF0aW86XCJub25lXCIsd2lkdGg6bitcInB4XCIsaGVpZ2h0OmwrXCJweFwifSksYy5zdHlsZS5vcGFjaXR5PXQub3BhY2l0eSxlLmdsb2JhbHMuZG9tLmVsRGVmcy5ub2RlLmFwcGVuZENoaWxkKGgpfX0se2tleTpcImdldFNlcmllc0luZGV4XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53O3JldHVybihcImJhclwiPT09ZS5jb25maWcuY2hhcnQudHlwZXx8XCJyYW5nZUJhclwiPT09ZS5jb25maWcuY2hhcnQudHlwZSkmJmUuY29uZmlnLnBsb3RPcHRpb25zLmJhci5kaXN0cmlidXRlZHx8XCJoZWF0bWFwXCI9PT1lLmNvbmZpZy5jaGFydC50eXBlfHxcInRyZWVtYXBcIj09PWUuY29uZmlnLmNoYXJ0LnR5cGU/dGhpcy5zZXJpZXNJbmRleD10LnNlcmllc051bWJlcjp0aGlzLnNlcmllc0luZGV4PXQuc2VyaWVzTnVtYmVyJWUuZ2xvYmFscy5zZXJpZXMubGVuZ3RoLHRoaXMuc2VyaWVzSW5kZXh9fSx7a2V5OlwiZmlsbFBhdGhcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnc7dGhpcy5vcHRzPXQ7dmFyIGksYSxzLHI9dGhpcy53LmNvbmZpZzt0aGlzLnNlcmllc0luZGV4PXRoaXMuZ2V0U2VyaWVzSW5kZXgodCk7dmFyIG89dGhpcy5nZXRGaWxsQ29sb3JzKClbdGhpcy5zZXJpZXNJbmRleF07dm9pZCAwIT09ZS5nbG9iYWxzLnNlcmllc0NvbG9yc1t0aGlzLnNlcmllc0luZGV4XSYmKG89ZS5nbG9iYWxzLnNlcmllc0NvbG9yc1t0aGlzLnNlcmllc0luZGV4XSksXCJmdW5jdGlvblwiPT10eXBlb2YgbyYmKG89byh7c2VyaWVzSW5kZXg6dGhpcy5zZXJpZXNJbmRleCxkYXRhUG9pbnRJbmRleDp0LmRhdGFQb2ludEluZGV4LHZhbHVlOnQudmFsdWUsdzplfSkpO3ZhciBuPXQuZmlsbFR5cGU/dC5maWxsVHlwZTp0aGlzLmdldEZpbGxUeXBlKHRoaXMuc2VyaWVzSW5kZXgpLGw9QXJyYXkuaXNBcnJheShyLmZpbGwub3BhY2l0eSk/ci5maWxsLm9wYWNpdHlbdGhpcy5zZXJpZXNJbmRleF06ci5maWxsLm9wYWNpdHk7dC5jb2xvciYmKG89dC5jb2xvcik7dmFyIGg9bztpZigtMT09PW8uaW5kZXhPZihcInJnYlwiKT9vLmxlbmd0aDw5JiYoaD14LmhleFRvUmdiYShvLGwpKTpvLmluZGV4T2YoXCJyZ2JhXCIpPi0xJiYobD14LmdldE9wYWNpdHlGcm9tUkdCQShvKSksdC5vcGFjaXR5JiYobD10Lm9wYWNpdHkpLFwicGF0dGVyblwiPT09biYmKGE9dGhpcy5oYW5kbGVQYXR0ZXJuRmlsbCh7ZmlsbENvbmZpZzp0LmZpbGxDb25maWcscGF0dGVybkZpbGw6YSxmaWxsQ29sb3I6byxmaWxsT3BhY2l0eTpsLGRlZmF1bHRDb2xvcjpofSkpLFwiZ3JhZGllbnRcIj09PW4mJihzPXRoaXMuaGFuZGxlR3JhZGllbnRGaWxsKHtmaWxsQ29uZmlnOnQuZmlsbENvbmZpZyxmaWxsQ29sb3I6byxmaWxsT3BhY2l0eTpsLGk6dGhpcy5zZXJpZXNJbmRleH0pKSxcImltYWdlXCI9PT1uKXt2YXIgYz1yLmZpbGwuaW1hZ2Uuc3JjLGQ9dC5wYXR0ZXJuSUQ/dC5wYXR0ZXJuSUQ6XCJcIjt0aGlzLmNsaXBwZWRJbWdBcmVhKHtvcGFjaXR5OmwsaW1hZ2U6QXJyYXkuaXNBcnJheShjKT90LnNlcmllc051bWJlcjxjLmxlbmd0aD9jW3Quc2VyaWVzTnVtYmVyXTpjWzBdOmMsd2lkdGg6dC53aWR0aD90LndpZHRoOnZvaWQgMCxoZWlnaHQ6dC5oZWlnaHQ/dC5oZWlnaHQ6dm9pZCAwLHBhdHRlcm5Vbml0czp0LnBhdHRlcm5Vbml0cyxwYXR0ZXJuSUQ6XCJwYXR0ZXJuXCIuY29uY2F0KGUuZ2xvYmFscy5jdWlkKS5jb25jYXQodC5zZXJpZXNOdW1iZXIrMSkuY29uY2F0KGQpfSksaT1cInVybCgjcGF0dGVyblwiLmNvbmNhdChlLmdsb2JhbHMuY3VpZCkuY29uY2F0KHQuc2VyaWVzTnVtYmVyKzEpLmNvbmNhdChkLFwiKVwiKX1lbHNlIGk9XCJncmFkaWVudFwiPT09bj9zOlwicGF0dGVyblwiPT09bj9hOmg7cmV0dXJuIHQuc29saWQmJihpPWgpLGl9fSx7a2V5OlwiZ2V0RmlsbFR5cGVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnc7cmV0dXJuIEFycmF5LmlzQXJyYXkoZS5jb25maWcuZmlsbC50eXBlKT9lLmNvbmZpZy5maWxsLnR5cGVbdF06ZS5jb25maWcuZmlsbC50eXBlfX0se2tleTpcImdldEZpbGxDb2xvcnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXQuY29uZmlnLGk9dGhpcy5vcHRzLGE9W107cmV0dXJuIHQuZ2xvYmFscy5jb21ib0NoYXJ0cz9cImxpbmVcIj09PXQuY29uZmlnLnNlcmllc1t0aGlzLnNlcmllc0luZGV4XS50eXBlP0FycmF5LmlzQXJyYXkodC5nbG9iYWxzLnN0cm9rZS5jb2xvcnMpP2E9dC5nbG9iYWxzLnN0cm9rZS5jb2xvcnM6YS5wdXNoKHQuZ2xvYmFscy5zdHJva2UuY29sb3JzKTpBcnJheS5pc0FycmF5KHQuZ2xvYmFscy5maWxsLmNvbG9ycyk/YT10Lmdsb2JhbHMuZmlsbC5jb2xvcnM6YS5wdXNoKHQuZ2xvYmFscy5maWxsLmNvbG9ycyk6XCJsaW5lXCI9PT1lLmNoYXJ0LnR5cGU/QXJyYXkuaXNBcnJheSh0Lmdsb2JhbHMuc3Ryb2tlLmNvbG9ycyk/YT10Lmdsb2JhbHMuc3Ryb2tlLmNvbG9yczphLnB1c2godC5nbG9iYWxzLnN0cm9rZS5jb2xvcnMpOkFycmF5LmlzQXJyYXkodC5nbG9iYWxzLmZpbGwuY29sb3JzKT9hPXQuZ2xvYmFscy5maWxsLmNvbG9yczphLnB1c2godC5nbG9iYWxzLmZpbGwuY29sb3JzKSx2b2lkIDAhPT1pLmZpbGxDb2xvcnMmJihhPVtdLEFycmF5LmlzQXJyYXkoaS5maWxsQ29sb3JzKT9hPWkuZmlsbENvbG9ycy5zbGljZSgpOmEucHVzaChpLmZpbGxDb2xvcnMpKSxhfX0se2tleTpcImhhbmRsZVBhdHRlcm5GaWxsXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5maWxsQ29uZmlnLGk9dC5wYXR0ZXJuRmlsbCxhPXQuZmlsbENvbG9yLHM9dC5maWxsT3BhY2l0eSxyPXQuZGVmYXVsdENvbG9yLG89dGhpcy53LmNvbmZpZy5maWxsO2UmJihvPWUpO3ZhciBuPXRoaXMub3B0cyxsPW5ldyBtKHRoaXMuY3R4KSxoPUFycmF5LmlzQXJyYXkoby5wYXR0ZXJuLnN0cm9rZVdpZHRoKT9vLnBhdHRlcm4uc3Ryb2tlV2lkdGhbdGhpcy5zZXJpZXNJbmRleF06by5wYXR0ZXJuLnN0cm9rZVdpZHRoLGM9YTtBcnJheS5pc0FycmF5KG8ucGF0dGVybi5zdHlsZSk/aT12b2lkIDAhPT1vLnBhdHRlcm4uc3R5bGVbbi5zZXJpZXNOdW1iZXJdP2wuZHJhd1BhdHRlcm4oby5wYXR0ZXJuLnN0eWxlW24uc2VyaWVzTnVtYmVyXSxvLnBhdHRlcm4ud2lkdGgsby5wYXR0ZXJuLmhlaWdodCxjLGgscyk6cjppPWwuZHJhd1BhdHRlcm4oby5wYXR0ZXJuLnN0eWxlLG8ucGF0dGVybi53aWR0aCxvLnBhdHRlcm4uaGVpZ2h0LGMsaCxzKTtyZXR1cm4gaX19LHtrZXk6XCJoYW5kbGVHcmFkaWVudEZpbGxcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgaT10LmZpbGxDb2xvcixhPXQuZmlsbE9wYWNpdHkscz10LmZpbGxDb25maWcscj10Lmksbz10aGlzLncuY29uZmlnLmZpbGw7cyYmKG89ZShlKHt9LG8pLHMpKTt2YXIgbixsPXRoaXMub3B0cyxoPW5ldyBtKHRoaXMuY3R4KSxjPW5ldyB4LGQ9by5ncmFkaWVudC50eXBlLGc9aSx1PXZvaWQgMD09PW8uZ3JhZGllbnQub3BhY2l0eUZyb20/YTpBcnJheS5pc0FycmF5KG8uZ3JhZGllbnQub3BhY2l0eUZyb20pP28uZ3JhZGllbnQub3BhY2l0eUZyb21bcl06by5ncmFkaWVudC5vcGFjaXR5RnJvbTtnLmluZGV4T2YoXCJyZ2JhXCIpPi0xJiYodT14LmdldE9wYWNpdHlGcm9tUkdCQShnKSk7dmFyIHA9dm9pZCAwPT09by5ncmFkaWVudC5vcGFjaXR5VG8/YTpBcnJheS5pc0FycmF5KG8uZ3JhZGllbnQub3BhY2l0eVRvKT9vLmdyYWRpZW50Lm9wYWNpdHlUb1tyXTpvLmdyYWRpZW50Lm9wYWNpdHlUbztpZih2b2lkIDA9PT1vLmdyYWRpZW50LmdyYWRpZW50VG9Db2xvcnN8fDA9PT1vLmdyYWRpZW50LmdyYWRpZW50VG9Db2xvcnMubGVuZ3RoKW49XCJkYXJrXCI9PT1vLmdyYWRpZW50LnNoYWRlP2Muc2hhZGVDb2xvcigtMSpwYXJzZUZsb2F0KG8uZ3JhZGllbnQuc2hhZGVJbnRlbnNpdHkpLGkuaW5kZXhPZihcInJnYlwiKT4tMT94LnJnYjJoZXgoaSk6aSk6Yy5zaGFkZUNvbG9yKHBhcnNlRmxvYXQoby5ncmFkaWVudC5zaGFkZUludGVuc2l0eSksaS5pbmRleE9mKFwicmdiXCIpPi0xP3gucmdiMmhleChpKTppKTtlbHNlIGlmKG8uZ3JhZGllbnQuZ3JhZGllbnRUb0NvbG9yc1tsLnNlcmllc051bWJlcl0pe3ZhciBmPW8uZ3JhZGllbnQuZ3JhZGllbnRUb0NvbG9yc1tsLnNlcmllc051bWJlcl07bj1mLGYuaW5kZXhPZihcInJnYmFcIik+LTEmJihwPXguZ2V0T3BhY2l0eUZyb21SR0JBKGYpKX1lbHNlIG49aTtpZihvLmdyYWRpZW50LmdyYWRpZW50RnJvbSYmKGc9by5ncmFkaWVudC5ncmFkaWVudEZyb20pLG8uZ3JhZGllbnQuZ3JhZGllbnRUbyYmKG49by5ncmFkaWVudC5ncmFkaWVudFRvKSxvLmdyYWRpZW50LmludmVyc2VDb2xvcnMpe3ZhciBiPWc7Zz1uLG49Yn1yZXR1cm4gZy5pbmRleE9mKFwicmdiXCIpPi0xJiYoZz14LnJnYjJoZXgoZykpLG4uaW5kZXhPZihcInJnYlwiKT4tMSYmKG49eC5yZ2IyaGV4KG4pKSxoLmRyYXdHcmFkaWVudChkLGcsbix1LHAsbC5zaXplLG8uZ3JhZGllbnQuc3RvcHMsby5ncmFkaWVudC5jb2xvclN0b3BzLHIpfX1dKSx0fSgpLEQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsaSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5Olwic2V0R2xvYmFsTWFya2VyU2l6ZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O2lmKHQuZ2xvYmFscy5tYXJrZXJzLnNpemU9QXJyYXkuaXNBcnJheSh0LmNvbmZpZy5tYXJrZXJzLnNpemUpP3QuY29uZmlnLm1hcmtlcnMuc2l6ZTpbdC5jb25maWcubWFya2Vycy5zaXplXSx0Lmdsb2JhbHMubWFya2Vycy5zaXplLmxlbmd0aD4wKXtpZih0Lmdsb2JhbHMubWFya2Vycy5zaXplLmxlbmd0aDx0Lmdsb2JhbHMuc2VyaWVzLmxlbmd0aCsxKWZvcih2YXIgZT0wO2U8PXQuZ2xvYmFscy5zZXJpZXMubGVuZ3RoO2UrKyl2b2lkIDA9PT10Lmdsb2JhbHMubWFya2Vycy5zaXplW2VdJiZ0Lmdsb2JhbHMubWFya2Vycy5zaXplLnB1c2godC5nbG9iYWxzLm1hcmtlcnMuc2l6ZVswXSl9ZWxzZSB0Lmdsb2JhbHMubWFya2Vycy5zaXplPXQuY29uZmlnLnNlcmllcy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB0LmNvbmZpZy5tYXJrZXJzLnNpemV9KSl9fSx7a2V5OlwicGxvdENoYXJ0TWFya2Vyc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzLHI9YXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0mJmFyZ3VtZW50c1s0XSxvPXRoaXMudyxuPWUsbD10LGg9bnVsbCxjPW5ldyBtKHRoaXMuY3R4KSxkPW8uY29uZmlnLm1hcmtlcnMuZGlzY3JldGUmJm8uY29uZmlnLm1hcmtlcnMuZGlzY3JldGUubGVuZ3RoO2lmKChvLmdsb2JhbHMubWFya2Vycy5zaXplW2VdPjB8fHJ8fGQpJiYoaD1jLmdyb3VwKHtjbGFzczpyfHxkP1wiXCI6XCJhcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzXCJ9KSkuYXR0cihcImNsaXAtcGF0aFwiLFwidXJsKCNncmlkUmVjdE1hcmtlck1hc2tcIi5jb25jYXQoby5nbG9iYWxzLmN1aWQsXCIpXCIpKSxBcnJheS5pc0FycmF5KGwueCkpZm9yKHZhciBnPTA7ZzxsLngubGVuZ3RoO2crKyl7dmFyIHU9aTsxPT09aSYmMD09PWcmJih1PTApLDE9PT1pJiYxPT09ZyYmKHU9MSk7dmFyIHA9XCJhcGV4Y2hhcnRzLW1hcmtlclwiO2lmKFwibGluZVwiIT09by5jb25maWcuY2hhcnQudHlwZSYmXCJhcmVhXCIhPT1vLmNvbmZpZy5jaGFydC50eXBlfHxvLmdsb2JhbHMuY29tYm9DaGFydHN8fG8uY29uZmlnLnRvb2x0aXAuaW50ZXJzZWN0fHwocCs9XCIgbm8tcG9pbnRlci1ldmVudHNcIiksKEFycmF5LmlzQXJyYXkoby5jb25maWcubWFya2Vycy5zaXplKT9vLmdsb2JhbHMubWFya2Vycy5zaXplW2VdPjA6by5jb25maWcubWFya2Vycy5zaXplPjApfHxyfHxkKXt4LmlzTnVtYmVyKGwueVtnXSk/cCs9XCIgd1wiLmNvbmNhdCh4LnJhbmRvbUlkKCkpOnA9XCJhcGV4Y2hhcnRzLW51bGxwb2ludFwiO3ZhciBmPXRoaXMuZ2V0TWFya2VyQ29uZmlnKHtjc3NDbGFzczpwLHNlcmllc0luZGV4OmUsZGF0YVBvaW50SW5kZXg6dX0pO28uY29uZmlnLnNlcmllc1tuXS5kYXRhW3VdJiYoby5jb25maWcuc2VyaWVzW25dLmRhdGFbdV0uZmlsbENvbG9yJiYoZi5wb2ludEZpbGxDb2xvcj1vLmNvbmZpZy5zZXJpZXNbbl0uZGF0YVt1XS5maWxsQ29sb3IpLG8uY29uZmlnLnNlcmllc1tuXS5kYXRhW3VdLnN0cm9rZUNvbG9yJiYoZi5wb2ludFN0cm9rZUNvbG9yPW8uY29uZmlnLnNlcmllc1tuXS5kYXRhW3VdLnN0cm9rZUNvbG9yKSksYSYmKGYucFNpemU9YSksKGwueFtnXTwwfHxsLnhbZ10+by5nbG9iYWxzLmdyaWRXaWR0aHx8bC55W2ddPDB8fGwueVtnXT5vLmdsb2JhbHMuZ3JpZEhlaWdodCkmJihmLnBTaXplPTApLChzPWMuZHJhd01hcmtlcihsLnhbZ10sbC55W2ddLGYpKS5hdHRyKFwicmVsXCIsdSkscy5hdHRyKFwialwiLHUpLHMuYXR0cihcImluZGV4XCIsZSkscy5ub2RlLnNldEF0dHJpYnV0ZShcImRlZmF1bHQtbWFya2VyLXNpemVcIixmLnBTaXplKSxuZXcgdih0aGlzLmN0eCkuc2V0U2VsZWN0aW9uRmlsdGVyKHMsZSx1KSx0aGlzLmFkZEV2ZW50cyhzKSxoJiZoLmFkZChzKX1lbHNlIHZvaWQgMD09PW8uZ2xvYmFscy5wb2ludHNBcnJheVtlXSYmKG8uZ2xvYmFscy5wb2ludHNBcnJheVtlXT1bXSksby5nbG9iYWxzLnBvaW50c0FycmF5W2VdLnB1c2goW2wueFtnXSxsLnlbZ11dKX1yZXR1cm4gaH19LHtrZXk6XCJnZXRNYXJrZXJDb25maWdcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmNzc0NsYXNzLGk9dC5zZXJpZXNJbmRleCxhPXQuZGF0YVBvaW50SW5kZXgscz12b2lkIDA9PT1hP251bGw6YSxyPXQuZmluaXNoUmFkaXVzLG89dm9pZCAwPT09cj9udWxsOnIsbj10aGlzLncsbD10aGlzLmdldE1hcmtlclN0eWxlKGkpLGg9bi5nbG9iYWxzLm1hcmtlcnMuc2l6ZVtpXSxjPW4uY29uZmlnLm1hcmtlcnM7cmV0dXJuIG51bGwhPT1zJiZjLmRpc2NyZXRlLmxlbmd0aCYmYy5kaXNjcmV0ZS5tYXAoKGZ1bmN0aW9uKHQpe3Quc2VyaWVzSW5kZXg9PT1pJiZ0LmRhdGFQb2ludEluZGV4PT09cyYmKGwucG9pbnRTdHJva2VDb2xvcj10LnN0cm9rZUNvbG9yLGwucG9pbnRGaWxsQ29sb3I9dC5maWxsQ29sb3IsaD10LnNpemUsbC5wb2ludFNoYXBlPXQuc2hhcGUpfSkpLHtwU2l6ZTpudWxsPT09bz9oOm8scFJhZGl1czpjLnJhZGl1cyx3aWR0aDpBcnJheS5pc0FycmF5KGMud2lkdGgpP2Mud2lkdGhbaV06Yy53aWR0aCxoZWlnaHQ6QXJyYXkuaXNBcnJheShjLmhlaWdodCk/Yy5oZWlnaHRbaV06Yy5oZWlnaHQscG9pbnRTdHJva2VXaWR0aDpBcnJheS5pc0FycmF5KGMuc3Ryb2tlV2lkdGgpP2Muc3Ryb2tlV2lkdGhbaV06Yy5zdHJva2VXaWR0aCxwb2ludFN0cm9rZUNvbG9yOmwucG9pbnRTdHJva2VDb2xvcixwb2ludEZpbGxDb2xvcjpsLnBvaW50RmlsbENvbG9yLHNoYXBlOmwucG9pbnRTaGFwZXx8KEFycmF5LmlzQXJyYXkoYy5zaGFwZSk/Yy5zaGFwZVtpXTpjLnNoYXBlKSxjbGFzczplLHBvaW50U3Ryb2tlT3BhY2l0eTpBcnJheS5pc0FycmF5KGMuc3Ryb2tlT3BhY2l0eSk/Yy5zdHJva2VPcGFjaXR5W2ldOmMuc3Ryb2tlT3BhY2l0eSxwb2ludFN0cm9rZURhc2hBcnJheTpBcnJheS5pc0FycmF5KGMuc3Ryb2tlRGFzaEFycmF5KT9jLnN0cm9rZURhc2hBcnJheVtpXTpjLnN0cm9rZURhc2hBcnJheSxwb2ludEZpbGxPcGFjaXR5OkFycmF5LmlzQXJyYXkoYy5maWxsT3BhY2l0eSk/Yy5maWxsT3BhY2l0eVtpXTpjLmZpbGxPcGFjaXR5LHNlcmllc0luZGV4Oml9fX0se2tleTpcImFkZEV2ZW50c1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPW5ldyBtKHRoaXMuY3R4KTt0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZW50ZXJcIixpLnBhdGhNb3VzZUVudGVyLmJpbmQodGhpcy5jdHgsdCkpLHQubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VsZWF2ZVwiLGkucGF0aE1vdXNlTGVhdmUuYmluZCh0aGlzLmN0eCx0KSksdC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIixpLnBhdGhNb3VzZURvd24uYmluZCh0aGlzLmN0eCx0KSksdC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLGUuY29uZmlnLm1hcmtlcnMub25DbGljayksdC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJkYmxjbGlja1wiLGUuY29uZmlnLm1hcmtlcnMub25EYmxDbGljayksdC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaHN0YXJ0XCIsaS5wYXRoTW91c2VEb3duLmJpbmQodGhpcy5jdHgsdCkse3Bhc3NpdmU6ITB9KX19LHtrZXk6XCJnZXRNYXJrZXJTdHlsZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPWUuZ2xvYmFscy5tYXJrZXJzLmNvbG9ycyxhPWUuY29uZmlnLm1hcmtlcnMuc3Ryb2tlQ29sb3J8fGUuY29uZmlnLm1hcmtlcnMuc3Ryb2tlQ29sb3JzO3JldHVybntwb2ludFN0cm9rZUNvbG9yOkFycmF5LmlzQXJyYXkoYSk/YVt0XTphLHBvaW50RmlsbENvbG9yOkFycmF5LmlzQXJyYXkoaSk/aVt0XTppfX19XSksdH0oKSxIPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMuaW5pdGlhbEFuaW09dGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmVuYWJsZWQsdGhpcy5keW5hbWljQW5pbT10aGlzLmluaXRpYWxBbmltJiZ0aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5lbmFibGVkfXJldHVybiByKHQsW3trZXk6XCJkcmF3XCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMudyxzPW5ldyBtKHRoaXMuY3R4KSxyPWkucmVhbEluZGV4LG89aS5wb2ludHNQb3Msbj1pLnpSYXRpbyxsPWkuZWxQYXJlbnQsaD1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMgYXBleGNoYXJ0cy1zZXJpZXMtXCIuY29uY2F0KGEuY29uZmlnLmNoYXJ0LnR5cGUpfSk7aWYoaC5hdHRyKFwiY2xpcC1wYXRoXCIsXCJ1cmwoI2dyaWRSZWN0TWFya2VyTWFza1wiLmNvbmNhdChhLmdsb2JhbHMuY3VpZCxcIilcIikpLEFycmF5LmlzQXJyYXkoby54KSlmb3IodmFyIGM9MDtjPG8ueC5sZW5ndGg7YysrKXt2YXIgZD1lKzEsZz0hMDswPT09ZSYmMD09PWMmJihkPTApLDA9PT1lJiYxPT09YyYmKGQ9MSk7dmFyIHU9MCxwPWEuZ2xvYmFscy5tYXJrZXJzLnNpemVbcl07aWYobiE9PTEvMCl7dmFyIGY9YS5jb25maWcucGxvdE9wdGlvbnMuYnViYmxlO3A9YS5nbG9iYWxzLnNlcmllc1pbcl1bZF0sZi56U2NhbGluZyYmKHAvPW4pLGYubWluQnViYmxlUmFkaXVzJiZwPGYubWluQnViYmxlUmFkaXVzJiYocD1mLm1pbkJ1YmJsZVJhZGl1cyksZi5tYXhCdWJibGVSYWRpdXMmJnA+Zi5tYXhCdWJibGVSYWRpdXMmJihwPWYubWF4QnViYmxlUmFkaXVzKX1hLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmVuYWJsZWR8fCh1PXApO3ZhciB4PW8ueFtjXSxiPW8ueVtjXTtpZih1PXV8fDAsbnVsbCE9PWImJnZvaWQgMCE9PWEuZ2xvYmFscy5zZXJpZXNbcl1bZF18fChnPSExKSxnKXt2YXIgdj10aGlzLmRyYXdQb2ludCh4LGIsdSxwLHIsZCxlKTtoLmFkZCh2KX1sLmFkZChoKX19fSx7a2V5OlwiZHJhd1BvaW50XCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSxzLHIsbyl7dmFyIG49dGhpcy53LGw9cyxoPW5ldyBiKHRoaXMuY3R4KSxjPW5ldyB2KHRoaXMuY3R4KSxkPW5ldyBSKHRoaXMuY3R4KSxnPW5ldyBEKHRoaXMuY3R4KSx1PW5ldyBtKHRoaXMuY3R4KSxwPWcuZ2V0TWFya2VyQ29uZmlnKHtjc3NDbGFzczpcImFwZXhjaGFydHMtbWFya2VyXCIsc2VyaWVzSW5kZXg6bCxkYXRhUG9pbnRJbmRleDpyLGZpbmlzaFJhZGl1czpcImJ1YmJsZVwiPT09bi5jb25maWcuY2hhcnQudHlwZXx8bi5nbG9iYWxzLmNvbWJvQ2hhcnRzJiZuLmNvbmZpZy5zZXJpZXNbc10mJlwiYnViYmxlXCI9PT1uLmNvbmZpZy5zZXJpZXNbc10udHlwZT9hOm51bGx9KTthPXAucFNpemU7dmFyIGYseD1kLmZpbGxQYXRoKHtzZXJpZXNOdW1iZXI6cyxkYXRhUG9pbnRJbmRleDpyLGNvbG9yOnAucG9pbnRGaWxsQ29sb3IscGF0dGVyblVuaXRzOlwib2JqZWN0Qm91bmRpbmdCb3hcIix2YWx1ZTpuLmdsb2JhbHMuc2VyaWVzW3NdW29dfSk7aWYoXCJjaXJjbGVcIj09PXAuc2hhcGU/Zj11LmRyYXdDaXJjbGUoaSk6XCJzcXVhcmVcIiE9PXAuc2hhcGUmJlwicmVjdFwiIT09cC5zaGFwZXx8KGY9dS5kcmF3UmVjdCgwLDAscC53aWR0aC1wLnBvaW50U3Ryb2tlV2lkdGgvMixwLmhlaWdodC1wLnBvaW50U3Ryb2tlV2lkdGgvMixwLnBSYWRpdXMpKSxuLmNvbmZpZy5zZXJpZXNbbF0uZGF0YVtyXSYmbi5jb25maWcuc2VyaWVzW2xdLmRhdGFbcl0uZmlsbENvbG9yJiYoeD1uLmNvbmZpZy5zZXJpZXNbbF0uZGF0YVtyXS5maWxsQ29sb3IpLGYuYXR0cih7eDp0LXAud2lkdGgvMi1wLnBvaW50U3Ryb2tlV2lkdGgvMix5OmUtcC5oZWlnaHQvMi1wLnBvaW50U3Ryb2tlV2lkdGgvMixjeDp0LGN5OmUsZmlsbDp4LFwiZmlsbC1vcGFjaXR5XCI6cC5wb2ludEZpbGxPcGFjaXR5LHN0cm9rZTpwLnBvaW50U3Ryb2tlQ29sb3IscjphLFwic3Ryb2tlLXdpZHRoXCI6cC5wb2ludFN0cm9rZVdpZHRoLFwic3Ryb2tlLWRhc2hhcnJheVwiOnAucG9pbnRTdHJva2VEYXNoQXJyYXksXCJzdHJva2Utb3BhY2l0eVwiOnAucG9pbnRTdHJva2VPcGFjaXR5fSksbi5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkKXt2YXIgeT1uLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93O2MuZHJvcFNoYWRvdyhmLHkscyl9aWYoIXRoaXMuaW5pdGlhbEFuaW18fG4uZ2xvYmFscy5kYXRhQ2hhbmdlZHx8bi5nbG9iYWxzLnJlc2l6ZWQpbi5nbG9iYWxzLmFuaW1hdGlvbkVuZGVkPSEwO2Vsc2V7dmFyIHc9bi5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5zcGVlZDtoLmFuaW1hdGVNYXJrZXIoZiwwLFwiY2lyY2xlXCI9PT1wLnNoYXBlP2E6e3dpZHRoOnAud2lkdGgsaGVpZ2h0OnAuaGVpZ2h0fSx3LG4uZ2xvYmFscy5lYXNpbmcsKGZ1bmN0aW9uKCl7d2luZG93LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7aC5hbmltYXRpb25Db21wbGV0ZWQoZil9KSwxMDApfSkpfWlmKG4uZ2xvYmFscy5kYXRhQ2hhbmdlZCYmXCJjaXJjbGVcIj09PXAuc2hhcGUpaWYodGhpcy5keW5hbWljQW5pbSl7dmFyIGssQSxTLEMsTD1uLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uc3BlZWQ7bnVsbCE9KEM9bi5nbG9iYWxzLnByZXZpb3VzUGF0aHNbc10mJm4uZ2xvYmFscy5wcmV2aW91c1BhdGhzW3NdW29dKSYmKGs9Qy54LEE9Qy55LFM9dm9pZCAwIT09Qy5yP0MucjphKTtmb3IodmFyIFA9MDtQPG4uZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMubGVuZ3RoO1ArKyluLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzW1BdLmluZGV4PT09cyYmKEw9MSxhPTApOzA9PT10JiYwPT09ZSYmKGE9MCksaC5hbmltYXRlQ2lyY2xlKGYse2N4OmssY3k6QSxyOlN9LHtjeDp0LGN5OmUscjphfSxMLG4uZ2xvYmFscy5lYXNpbmcpfWVsc2UgZi5hdHRyKHtyOmF9KTtyZXR1cm4gZi5hdHRyKHtyZWw6cixqOnIsaW5kZXg6cyxcImRlZmF1bHQtbWFya2VyLXNpemVcIjphfSksYy5zZXRTZWxlY3Rpb25GaWx0ZXIoZixzLHIpLGcuYWRkRXZlbnRzKGYpLGYubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1tYXJrZXJcIiksZn19LHtrZXk6XCJjZW50ZXJUZXh0SW5CdWJibGVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnc7cmV0dXJue3k6dCs9cGFyc2VJbnQoZS5jb25maWcuZGF0YUxhYmVscy5zdHlsZS5mb250U2l6ZSwxMCkvNH19fV0pLHR9KCksTz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5OlwiZGF0YUxhYmVsc0NvcnJlY3Rpb25cIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMscixvKXt2YXIgbj10aGlzLncsbD0hMSxoPW5ldyBtKHRoaXMuY3R4KS5nZXRUZXh0UmVjdHMoaSxvKSxjPWgud2lkdGgsZD1oLmhlaWdodDtlPDAmJihlPTApLGU+bi5nbG9iYWxzLmdyaWRIZWlnaHQrZCYmKGU9bi5nbG9iYWxzLmdyaWRIZWlnaHQrZC8yKSx2b2lkIDA9PT1uLmdsb2JhbHMuZGF0YUxhYmVsc1JlY3RzW2FdJiYobi5nbG9iYWxzLmRhdGFMYWJlbHNSZWN0c1thXT1bXSksbi5nbG9iYWxzLmRhdGFMYWJlbHNSZWN0c1thXS5wdXNoKHt4OnQseTplLHdpZHRoOmMsaGVpZ2h0OmR9KTt2YXIgZz1uLmdsb2JhbHMuZGF0YUxhYmVsc1JlY3RzW2FdLmxlbmd0aC0yLHU9dm9pZCAwIT09bi5nbG9iYWxzLmxhc3REcmF3bkRhdGFMYWJlbHNJbmRleGVzW2FdP24uZ2xvYmFscy5sYXN0RHJhd25EYXRhTGFiZWxzSW5kZXhlc1thXVtuLmdsb2JhbHMubGFzdERyYXduRGF0YUxhYmVsc0luZGV4ZXNbYV0ubGVuZ3RoLTFdOjA7aWYodm9pZCAwIT09bi5nbG9iYWxzLmRhdGFMYWJlbHNSZWN0c1thXVtnXSl7dmFyIHA9bi5nbG9iYWxzLmRhdGFMYWJlbHNSZWN0c1thXVt1XTsodD5wLngrcC53aWR0aCsyfHxlPnAueStwLmhlaWdodCsyfHx0K2M8cC54KSYmKGw9ITApfXJldHVybigwPT09c3x8cikmJihsPSEwKSx7eDp0LHk6ZSx0ZXh0UmVjdHM6aCxkcmF3bmV4dExhYmVsOmx9fX0se2tleTpcImRyYXdEYXRhTGFiZWxcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dC50eXBlLGE9dC5wb3Mscz10Lmkscj10Lmosbz10LmlzUmFuZ2VTdGFydCxuPXQuc3Ryb2tlV2lkdGgsbD12b2lkIDA9PT1uPzI6bixoPXRoaXMudyxjPW5ldyBtKHRoaXMuY3R4KSxkPWguY29uZmlnLmRhdGFMYWJlbHMsZz0wLHU9MCxwPXIsZj1udWxsO2lmKCFkLmVuYWJsZWR8fCFBcnJheS5pc0FycmF5KGEueCkpcmV0dXJuIGY7Zj1jLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZGF0YS1sYWJlbHNcIn0pO2Zvcih2YXIgeD0wO3g8YS54Lmxlbmd0aDt4KyspaWYoZz1hLnhbeF0rZC5vZmZzZXRYLHU9YS55W3hdK2Qub2Zmc2V0WStsLCFpc05hTihnKSl7MT09PXImJjA9PT14JiYocD0wKSwxPT09ciYmMT09PXgmJihwPTEpO3ZhciBiPWguZ2xvYmFscy5zZXJpZXNbc11bcF07XCJyYW5nZUFyZWFcIj09PWkmJihiPW8/aC5nbG9iYWxzLnNlcmllc1JhbmdlU3RhcnRbc11bcF06aC5nbG9iYWxzLnNlcmllc1JhbmdlRW5kW3NdW3BdKTt2YXIgdj1cIlwiLHk9ZnVuY3Rpb24odCl7cmV0dXJuIGguY29uZmlnLmRhdGFMYWJlbHMuZm9ybWF0dGVyKHQse2N0eDplLmN0eCxzZXJpZXNJbmRleDpzLGRhdGFQb2ludEluZGV4OnAsdzpofSl9O2lmKFwiYnViYmxlXCI9PT1oLmNvbmZpZy5jaGFydC50eXBlKXY9eShiPWguZ2xvYmFscy5zZXJpZXNaW3NdW3BdKSx1PWEueVt4XSx1PW5ldyBIKHRoaXMuY3R4KS5jZW50ZXJUZXh0SW5CdWJibGUodSxzLHApLnk7ZWxzZSB2b2lkIDAhPT1iJiYodj15KGIpKTt0aGlzLnBsb3REYXRhTGFiZWxzVGV4dCh7eDpnLHk6dSx0ZXh0OnYsaTpzLGo6cCxwYXJlbnQ6ZixvZmZzZXRDb3JyZWN0aW9uOiEwLGRhdGFMYWJlbHNDb25maWc6aC5jb25maWcuZGF0YUxhYmVsc30pfXJldHVybiBmfX0se2tleTpcInBsb3REYXRhTGFiZWxzVGV4dFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPW5ldyBtKHRoaXMuY3R4KSxhPXQueCxzPXQueSxyPXQuaSxvPXQuaixuPXQudGV4dCxsPXQudGV4dEFuY2hvcixoPXQuZm9udFNpemUsYz10LnBhcmVudCxkPXQuZGF0YUxhYmVsc0NvbmZpZyxnPXQuY29sb3IsdT10LmFsd2F5c0RyYXdEYXRhTGFiZWwscD10Lm9mZnNldENvcnJlY3Rpb247aWYoIShBcnJheS5pc0FycmF5KGUuY29uZmlnLmRhdGFMYWJlbHMuZW5hYmxlZE9uU2VyaWVzKSYmZS5jb25maWcuZGF0YUxhYmVscy5lbmFibGVkT25TZXJpZXMuaW5kZXhPZihyKTwwKSl7dmFyIGY9e3g6YSx5OnMsZHJhd25leHRMYWJlbDohMCx0ZXh0UmVjdHM6bnVsbH07cCYmKGY9dGhpcy5kYXRhTGFiZWxzQ29ycmVjdGlvbihhLHMsbixyLG8sdSxwYXJzZUludChkLnN0eWxlLmZvbnRTaXplLDEwKSkpLGUuZ2xvYmFscy56b29tZWR8fChhPWYueCxzPWYueSksZi50ZXh0UmVjdHMmJihhPC0xMC1mLnRleHRSZWN0cy53aWR0aHx8YT5lLmdsb2JhbHMuZ3JpZFdpZHRoK2YudGV4dFJlY3RzLndpZHRoKzEwKSYmKG49XCJcIik7dmFyIHg9ZS5nbG9iYWxzLmRhdGFMYWJlbHMuc3R5bGUuY29sb3JzW3JdOygoXCJiYXJcIj09PWUuY29uZmlnLmNoYXJ0LnR5cGV8fFwicmFuZ2VCYXJcIj09PWUuY29uZmlnLmNoYXJ0LnR5cGUpJiZlLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuZGlzdHJpYnV0ZWR8fGUuY29uZmlnLmRhdGFMYWJlbHMuZGlzdHJpYnV0ZWQpJiYoeD1lLmdsb2JhbHMuZGF0YUxhYmVscy5zdHlsZS5jb2xvcnNbb10pLFwiZnVuY3Rpb25cIj09dHlwZW9mIHgmJih4PXgoe3NlcmllczplLmdsb2JhbHMuc2VyaWVzLHNlcmllc0luZGV4OnIsZGF0YVBvaW50SW5kZXg6byx3OmV9KSksZyYmKHg9Zyk7dmFyIGI9ZC5vZmZzZXRYLHk9ZC5vZmZzZXRZO2lmKFwiYmFyXCIhPT1lLmNvbmZpZy5jaGFydC50eXBlJiZcInJhbmdlQmFyXCIhPT1lLmNvbmZpZy5jaGFydC50eXBlfHwoYj0wLHk9MCksZi5kcmF3bmV4dExhYmVsKXt2YXIgdz1pLmRyYXdUZXh0KHt3aWR0aDoxMDAsaGVpZ2h0OnBhcnNlSW50KGQuc3R5bGUuZm9udFNpemUsMTApLHg6YStiLHk6cyt5LGZvcmVDb2xvcjp4LHRleHRBbmNob3I6bHx8ZC50ZXh0QW5jaG9yLHRleHQ6bixmb250U2l6ZTpofHxkLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6ZC5zdHlsZS5mb250RmFtaWx5LGZvbnRXZWlnaHQ6ZC5zdHlsZS5mb250V2VpZ2h0fHxcIm5vcm1hbFwifSk7aWYody5hdHRyKHtjbGFzczpcImFwZXhjaGFydHMtZGF0YWxhYmVsXCIsY3g6YSxjeTpzfSksZC5kcm9wU2hhZG93LmVuYWJsZWQpe3ZhciBrPWQuZHJvcFNoYWRvdztuZXcgdih0aGlzLmN0eCkuZHJvcFNoYWRvdyh3LGspfWMuYWRkKHcpLHZvaWQgMD09PWUuZ2xvYmFscy5sYXN0RHJhd25EYXRhTGFiZWxzSW5kZXhlc1tyXSYmKGUuZ2xvYmFscy5sYXN0RHJhd25EYXRhTGFiZWxzSW5kZXhlc1tyXT1bXSksZS5nbG9iYWxzLmxhc3REcmF3bkRhdGFMYWJlbHNJbmRleGVzW3JdLnB1c2gobyl9fX19LHtrZXk6XCJhZGRCYWNrZ3JvdW5kVG9EYXRhTGFiZWxcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPWkuY29uZmlnLmRhdGFMYWJlbHMuYmFja2dyb3VuZCxzPWEucGFkZGluZyxyPWEucGFkZGluZy8yLG89ZS53aWR0aCxuPWUuaGVpZ2h0LGw9bmV3IG0odGhpcy5jdHgpLmRyYXdSZWN0KGUueC1zLGUueS1yLzIsbysyKnMsbityLGEuYm9yZGVyUmFkaXVzLFwidHJhbnNwYXJlbnRcIj09PWkuY29uZmlnLmNoYXJ0LmJhY2tncm91bmQ/XCIjZmZmXCI6aS5jb25maWcuY2hhcnQuYmFja2dyb3VuZCxhLm9wYWNpdHksYS5ib3JkZXJXaWR0aCxhLmJvcmRlckNvbG9yKTthLmRyb3BTaGFkb3cuZW5hYmxlZCYmbmV3IHYodGhpcy5jdHgpLmRyb3BTaGFkb3cobCxhLmRyb3BTaGFkb3cpO3JldHVybiBsfX0se2tleTpcImRhdGFMYWJlbHNCYWNrZ3JvdW5kXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7aWYoXCJidWJibGVcIiE9PXQuY29uZmlnLmNoYXJ0LnR5cGUpZm9yKHZhciBlPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1kYXRhbGFiZWxzIHRleHRcIiksaT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgYT1lW2ldLHM9YS5nZXRCQm94KCkscj1udWxsO2lmKHMud2lkdGgmJnMuaGVpZ2h0JiYocj10aGlzLmFkZEJhY2tncm91bmRUb0RhdGFMYWJlbChhLHMpKSxyKXthLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHIubm9kZSxhKTt2YXIgbz1hLmdldEF0dHJpYnV0ZShcImZpbGxcIik7dC5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5lbmFibGVkJiYhdC5nbG9iYWxzLnJlc2l6ZWQmJiF0Lmdsb2JhbHMuZGF0YUNoYW5nZWQ/ci5hbmltYXRlKCkuYXR0cih7ZmlsbDpvfSk6ci5hdHRyKHtmaWxsOm99KSxhLnNldEF0dHJpYnV0ZShcImZpbGxcIix0LmNvbmZpZy5kYXRhTGFiZWxzLmJhY2tncm91bmQuZm9yZUNvbG9yKX19fX0se2tleTpcImJyaW5nRm9yd2FyZFwiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMudyxlPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1kYXRhbGFiZWxzXCIpLGk9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXBsb3Qtc2VyaWVzOmxhc3QtY2hpbGRcIiksYT0wO2E8ZS5sZW5ndGg7YSsrKWkmJmkuaW5zZXJ0QmVmb3JlKGVbYV0saS5uZXh0U2libGluZyl9fV0pLHR9KCksTj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLmxlZ2VuZEluYWN0aXZlQ2xhc3M9XCJsZWdlbmQtbW91c2VvdmVyLWluYWN0aXZlXCJ9cmV0dXJuIHIodCxbe2tleTpcImdldEFsbFNlcmllc0Vsc1wiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImFwZXhjaGFydHMtc2VyaWVzXCIpfX0se2tleTpcImdldFNlcmllc0J5TmFtZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1pbm5lciAuYXBleGNoYXJ0cy1zZXJpZXNbc2VyaWVzTmFtZT0nXCIuY29uY2F0KHguZXNjYXBlU3RyaW5nKHQpLFwiJ11cIikpfX0se2tleTpcImlzU2VyaWVzSGlkZGVuXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXRTZXJpZXNCeU5hbWUodCksaT1wYXJzZUludChlLmdldEF0dHJpYnV0ZShcImRhdGE6cmVhbEluZGV4XCIpLDEwKTtyZXR1cm57aXNIaWRkZW46ZS5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLXNlcmllcy1jb2xsYXBzZWRcIikscmVhbEluZGV4Oml9fX0se2tleTpcImFkZENvbGxhcHNlZENsYXNzVG9TZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztmdW5jdGlvbiBhKGkpe2Zvcih2YXIgYT0wO2E8aS5sZW5ndGg7YSsrKWlbYV0uaW5kZXg9PT1lJiZ0Lm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtc2VyaWVzLWNvbGxhcHNlZFwiKX1hKGkuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMpLGEoaS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllcyl9fSx7a2V5OlwidG9nZ2xlU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5pc1Nlcmllc0hpZGRlbih0KTtyZXR1cm4gdGhpcy5jdHgubGVnZW5kLmxlZ2VuZEhlbHBlcnMudG9nZ2xlRGF0YVNlcmllcyhlLnJlYWxJbmRleCxlLmlzSGlkZGVuKSxlLmlzSGlkZGVufX0se2tleTpcInNob3dTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmlzU2VyaWVzSGlkZGVuKHQpO2UuaXNIaWRkZW4mJnRoaXMuY3R4LmxlZ2VuZC5sZWdlbmRIZWxwZXJzLnRvZ2dsZURhdGFTZXJpZXMoZS5yZWFsSW5kZXgsITApfX0se2tleTpcImhpZGVTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmlzU2VyaWVzSGlkZGVuKHQpO2UuaXNIaWRkZW58fHRoaXMuY3R4LmxlZ2VuZC5sZWdlbmRIZWxwZXJzLnRvZ2dsZURhdGFTZXJpZXMoZS5yZWFsSW5kZXgsITEpfX0se2tleTpcInJlc2V0U2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD0hKGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdKXx8YXJndW1lbnRzWzBdLGU9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSxpPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl0sYT10aGlzLncscz14LmNsb25lKGEuZ2xvYmFscy5pbml0aWFsU2VyaWVzKTthLmdsb2JhbHMucHJldmlvdXNQYXRocz1bXSxpPyhhLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzPVtdLGEuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXM9W10sYS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXM9W10sYS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXM9W10pOnM9dGhpcy5lbXB0eUNvbGxhcHNlZFNlcmllcyhzKSxhLmNvbmZpZy5zZXJpZXM9cyx0JiYoZSYmKGEuZ2xvYmFscy56b29tZWQ9ITEsdGhpcy5jdHgudXBkYXRlSGVscGVycy5yZXZlcnREZWZhdWx0QXhpc01pbk1heCgpKSx0aGlzLmN0eC51cGRhdGVIZWxwZXJzLl91cGRhdGVTZXJpZXMocyxhLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCkpfX0se2tleTpcImVtcHR5Q29sbGFwc2VkU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudyxpPTA7aTx0Lmxlbmd0aDtpKyspZS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihpKT4tMSYmKHRbaV0uZGF0YT1bXSk7cmV0dXJuIHR9fSx7a2V5OlwidG9nZ2xlU2VyaWVzT25Ib3ZlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O2V8fChlPXQudGFyZ2V0KTt2YXIgYT1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtc2VyaWVzLCAuYXBleGNoYXJ0cy1kYXRhbGFiZWxzXCIpO2lmKFwibW91c2Vtb3ZlXCI9PT10LnR5cGUpe3ZhciBzPXBhcnNlSW50KGUuZ2V0QXR0cmlidXRlKFwicmVsXCIpLDEwKS0xLHI9bnVsbCxvPW51bGw7aS5nbG9iYWxzLmF4aXNDaGFydHN8fFwicmFkaWFsQmFyXCI9PT1pLmNvbmZpZy5jaGFydC50eXBlP2kuZ2xvYmFscy5heGlzQ2hhcnRzPyhyPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcXFw6cmVhbEluZGV4PSdcIi5jb25jYXQocyxcIiddXCIpKSxvPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1kYXRhbGFiZWxzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIuY29uY2F0KHMsXCInXVwiKSkpOnI9aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXNlcmllc1tyZWw9J1wiLmNvbmNhdChzKzEsXCInXVwiKSk6cj1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtc2VyaWVzW3JlbD0nXCIuY29uY2F0KHMrMSxcIiddIHBhdGhcIikpO2Zvcih2YXIgbj0wO248YS5sZW5ndGg7bisrKWFbbl0uY2xhc3NMaXN0LmFkZCh0aGlzLmxlZ2VuZEluYWN0aXZlQ2xhc3MpO251bGwhPT1yJiYoaS5nbG9iYWxzLmF4aXNDaGFydHN8fHIucGFyZW50Tm9kZS5jbGFzc0xpc3QucmVtb3ZlKHRoaXMubGVnZW5kSW5hY3RpdmVDbGFzcyksci5jbGFzc0xpc3QucmVtb3ZlKHRoaXMubGVnZW5kSW5hY3RpdmVDbGFzcyksbnVsbCE9PW8mJm8uY2xhc3NMaXN0LnJlbW92ZSh0aGlzLmxlZ2VuZEluYWN0aXZlQ2xhc3MpKX1lbHNlIGlmKFwibW91c2VvdXRcIj09PXQudHlwZSlmb3IodmFyIGw9MDtsPGEubGVuZ3RoO2wrKylhW2xdLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5sZWdlbmRJbmFjdGl2ZUNsYXNzKX19LHtrZXk6XCJoaWdobGlnaHRSYW5nZUluU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLGE9dGhpcy53LHM9YS5nbG9iYWxzLmRvbS5iYXNlRWwuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImFwZXhjaGFydHMtaGVhdG1hcC1yZWN0XCIpLHI9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTxzLmxlbmd0aDtlKyspc1tlXS5jbGFzc0xpc3RbdF0oaS5sZWdlbmRJbmFjdGl2ZUNsYXNzKX07aWYoXCJtb3VzZW1vdmVcIj09PXQudHlwZSl7dmFyIG89cGFyc2VJbnQoZS5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksMTApLTE7cihcImFkZFwiKSxmdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPHMubGVuZ3RoO2UrKyl7dmFyIGE9cGFyc2VJbnQoc1tlXS5nZXRBdHRyaWJ1dGUoXCJ2YWxcIiksMTApO2E+PXQuZnJvbSYmYTw9dC50byYmc1tlXS5jbGFzc0xpc3QucmVtb3ZlKGkubGVnZW5kSW5hY3RpdmVDbGFzcyl9fShhLmNvbmZpZy5wbG90T3B0aW9ucy5oZWF0bWFwLmNvbG9yU2NhbGUucmFuZ2VzW29dKX1lbHNlXCJtb3VzZW91dFwiPT09dC50eXBlJiZyKFwicmVtb3ZlXCIpfX0se2tleTpcImdldEFjdGl2ZUNvbmZpZ1Nlcmllc0luZGV4XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06XCJhc2NcIixlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpbXSxpPXRoaXMudyxhPTA7aWYoaS5jb25maWcuc2VyaWVzLmxlbmd0aD4xKWZvcih2YXIgcz1pLmNvbmZpZy5zZXJpZXMubWFwKChmdW5jdGlvbih0LGEpe3JldHVybiB0LmRhdGEmJnQuZGF0YS5sZW5ndGg+MCYmLTE9PT1pLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGEpJiYoIWkuZ2xvYmFscy5jb21ib0NoYXJ0c3x8MD09PWUubGVuZ3RofHxlLmxlbmd0aCYmZS5pbmRleE9mKGkuY29uZmlnLnNlcmllc1thXS50eXBlKT4tMSk/YTotMX0pKSxyPVwiYXNjXCI9PT10PzA6cy5sZW5ndGgtMTtcImFzY1wiPT09dD9yPHMubGVuZ3RoOnI+PTA7XCJhc2NcIj09PXQ/cisrOnItLSlpZigtMSE9PXNbcl0pe2E9c1tyXTticmVha31yZXR1cm4gYX19LHtrZXk6XCJnZXRCYXJTZXJpZXNJbmRpY2VzXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuY29tYm9DaGFydHM/dGhpcy53LmNvbmZpZy5zZXJpZXMubWFwKChmdW5jdGlvbih0LGUpe3JldHVyblwiYmFyXCI9PT10LnR5cGV8fFwiY29sdW1uXCI9PT10LnR5cGU/ZTotMX0pKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybi0xIT09dH0pKTp0aGlzLncuY29uZmlnLnNlcmllcy5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV9KSl9fSx7a2V5OlwiZ2V0UHJldmlvdXNQYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O2Z1bmN0aW9uIGUoZSxpLGEpe2Zvcih2YXIgcz1lW2ldLmNoaWxkTm9kZXMscj17dHlwZTphLHBhdGhzOltdLHJlYWxJbmRleDplW2ldLmdldEF0dHJpYnV0ZShcImRhdGE6cmVhbEluZGV4XCIpfSxvPTA7bzxzLmxlbmd0aDtvKyspaWYoc1tvXS5oYXNBdHRyaWJ1dGUoXCJwYXRoVG9cIikpe3ZhciBuPXNbb10uZ2V0QXR0cmlidXRlKFwicGF0aFRvXCIpO3IucGF0aHMucHVzaCh7ZDpufSl9dC5nbG9iYWxzLnByZXZpb3VzUGF0aHMucHVzaChyKX10Lmdsb2JhbHMucHJldmlvdXNQYXRocz1bXTtbXCJsaW5lXCIsXCJhcmVhXCIsXCJiYXJcIixcInJhbmdlYmFyXCIsXCJyYW5nZUFyZWFcIixcImNhbmRsZXN0aWNrXCIsXCJyYWRhclwiXS5mb3JFYWNoKChmdW5jdGlvbihpKXtmb3IodmFyIGEscz0oYT1pLHQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1cIi5jb25jYXQoYSxcIi1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzXCIpKSkscj0wO3I8cy5sZW5ndGg7cisrKWUocyxyLGkpfSkpLHRoaXMuaGFuZGxlUHJldkJ1YmJsZVNjYXR0ZXJQYXRocyhcImJ1YmJsZVwiKSx0aGlzLmhhbmRsZVByZXZCdWJibGVTY2F0dGVyUGF0aHMoXCJzY2F0dGVyXCIpO3ZhciBpPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1cIi5jb25jYXQodC5jb25maWcuY2hhcnQudHlwZSxcIiAuYXBleGNoYXJ0cy1zZXJpZXNcIikpO2lmKGkubGVuZ3RoPjApZm9yKHZhciBhPWZ1bmN0aW9uKGUpe2Zvcih2YXIgaT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtXCIuY29uY2F0KHQuY29uZmlnLmNoYXJ0LnR5cGUsXCIgLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIpLmNvbmNhdChlLFwiJ10gcmVjdFwiKSksYT1bXSxzPWZ1bmN0aW9uKHQpe3ZhciBlPWZ1bmN0aW9uKGUpe3JldHVybiBpW3RdLmdldEF0dHJpYnV0ZShlKX0scz17eDpwYXJzZUZsb2F0KGUoXCJ4XCIpKSx5OnBhcnNlRmxvYXQoZShcInlcIikpLHdpZHRoOnBhcnNlRmxvYXQoZShcIndpZHRoXCIpKSxoZWlnaHQ6cGFyc2VGbG9hdChlKFwiaGVpZ2h0XCIpKX07YS5wdXNoKHtyZWN0OnMsY29sb3I6aVt0XS5nZXRBdHRyaWJ1dGUoXCJjb2xvclwiKX0pfSxyPTA7cjxpLmxlbmd0aDtyKyspcyhyKTt0Lmdsb2JhbHMucHJldmlvdXNQYXRocy5wdXNoKGEpfSxzPTA7czxpLmxlbmd0aDtzKyspYShzKTt0Lmdsb2JhbHMuYXhpc0NoYXJ0c3x8KHQuZ2xvYmFscy5wcmV2aW91c1BhdGhzPXQuZ2xvYmFscy5zZXJpZXMpfX0se2tleTpcImhhbmRsZVByZXZCdWJibGVTY2F0dGVyUGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtXCIuY29uY2F0KHQsXCItc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1wiKSk7aWYoaS5sZW5ndGg+MClmb3IodmFyIGE9MDthPGkubGVuZ3RoO2ErKyl7Zm9yKHZhciBzPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1cIi5jb25jYXQodCxcIi1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIpLmNvbmNhdChhLFwiJ10gY2lyY2xlXCIpKSxyPVtdLG89MDtvPHMubGVuZ3RoO28rKylyLnB1c2goe3g6c1tvXS5nZXRBdHRyaWJ1dGUoXCJjeFwiKSx5OnNbb10uZ2V0QXR0cmlidXRlKFwiY3lcIikscjpzW29dLmdldEF0dHJpYnV0ZShcInJcIil9KTtlLmdsb2JhbHMucHJldmlvdXNQYXRocy5wdXNoKHIpfX19LHtrZXk6XCJjbGVhclByZXZpb3VzUGF0aHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudzt0Lmdsb2JhbHMucHJldmlvdXNQYXRocz1bXSx0Lmdsb2JhbHMuYWxsU2VyaWVzQ29sbGFwc2VkPSExfX0se2tleTpcImhhbmRsZU5vRGF0YVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dC5jb25maWcubm9EYXRhLGk9bmV3IG0odGhpcy5jdHgpLGE9dC5nbG9iYWxzLnN2Z1dpZHRoLzIscz10Lmdsb2JhbHMuc3ZnSGVpZ2h0LzIscj1cIm1pZGRsZVwiO2lmKHQuZ2xvYmFscy5ub0RhdGE9ITAsdC5nbG9iYWxzLmFuaW1hdGlvbkVuZGVkPSEwLFwibGVmdFwiPT09ZS5hbGlnbj8oYT0xMCxyPVwic3RhcnRcIik6XCJyaWdodFwiPT09ZS5hbGlnbiYmKGE9dC5nbG9iYWxzLnN2Z1dpZHRoLTEwLHI9XCJlbmRcIiksXCJ0b3BcIj09PWUudmVydGljYWxBbGlnbj9zPTUwOlwiYm90dG9tXCI9PT1lLnZlcnRpY2FsQWxpZ24mJihzPXQuZ2xvYmFscy5zdmdIZWlnaHQtNTApLGErPWUub2Zmc2V0WCxzPXMrcGFyc2VJbnQoZS5zdHlsZS5mb250U2l6ZSwxMCkrMitlLm9mZnNldFksdm9pZCAwIT09ZS50ZXh0JiZcIlwiIT09ZS50ZXh0KXt2YXIgbz1pLmRyYXdUZXh0KHt4OmEseTpzLHRleHQ6ZS50ZXh0LHRleHRBbmNob3I6cixmb250U2l6ZTplLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6ZS5zdHlsZS5mb250RmFtaWx5LGZvcmVDb2xvcjplLnN0eWxlLmNvbG9yLG9wYWNpdHk6MSxjbGFzczpcImFwZXhjaGFydHMtdGV4dC1ub2RhdGFcIn0pO3QuZ2xvYmFscy5kb20uUGFwZXIuYWRkKG8pfX19LHtrZXk6XCJzZXROdWxsU2VyaWVzVG9aZXJvVmFsdWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudyxpPTA7aTx0Lmxlbmd0aDtpKyspaWYoMD09PXRbaV0ubGVuZ3RoKWZvcih2YXIgYT0wO2E8dFtlLmdsb2JhbHMubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoO2ErKyl0W2ldLnB1c2goMCk7cmV0dXJuIHR9fSx7a2V5OlwiaGFzQWxsU2VyaWVzRXF1YWxYXCIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9ITAsZT10aGlzLncsaT10aGlzLmZpbHRlcmVkU2VyaWVzWCgpLGE9MDthPGkubGVuZ3RoLTE7YSsrKWlmKGlbYV1bMF0hPT1pW2ErMV1bMF0pe3Q9ITE7YnJlYWt9cmV0dXJuIGUuZ2xvYmFscy5hbGxTZXJpZXNIYXNFcXVhbFg9dCx0fX0se2tleTpcImZpbHRlcmVkU2VyaWVzWFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53Lmdsb2JhbHMuc2VyaWVzWC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lmxlbmd0aD4wP3Q6W119KSk7cmV0dXJuIHR9fV0pLHR9KCksVz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLnR3b0RTZXJpZXM9W10sdGhpcy50aHJlZURTZXJpZXM9W10sdGhpcy50d29EU2VyaWVzWD1bXSx0aGlzLnNlcmllc0dvYWxzPVtdLHRoaXMuY29yZVV0aWxzPW5ldyB5KHRoaXMuY3R4KX1yZXR1cm4gcih0LFt7a2V5OlwiaXNNdWx0aUZvcm1hdFwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNGb3JtYXRYWSgpfHx0aGlzLmlzRm9ybWF0MkRBcnJheSgpfX0se2tleTpcImlzRm9ybWF0WFlcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5jb25maWcuc2VyaWVzLnNsaWNlKCksZT1uZXcgTih0aGlzLmN0eCk7aWYodGhpcy5hY3RpdmVTZXJpZXNJbmRleD1lLmdldEFjdGl2ZUNvbmZpZ1Nlcmllc0luZGV4KCksdm9pZCAwIT09dFt0aGlzLmFjdGl2ZVNlcmllc0luZGV4XS5kYXRhJiZ0W3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGEubGVuZ3RoPjAmJm51bGwhPT10W3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGFbMF0mJnZvaWQgMCE9PXRbdGhpcy5hY3RpdmVTZXJpZXNJbmRleF0uZGF0YVswXS54JiZudWxsIT09dFt0aGlzLmFjdGl2ZVNlcmllc0luZGV4XS5kYXRhWzBdKXJldHVybiEwfX0se2tleTpcImlzRm9ybWF0MkRBcnJheVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LmNvbmZpZy5zZXJpZXMuc2xpY2UoKSxlPW5ldyBOKHRoaXMuY3R4KTtpZih0aGlzLmFjdGl2ZVNlcmllc0luZGV4PWUuZ2V0QWN0aXZlQ29uZmlnU2VyaWVzSW5kZXgoKSx2b2lkIDAhPT10W3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGEmJnRbdGhpcy5hY3RpdmVTZXJpZXNJbmRleF0uZGF0YS5sZW5ndGg+MCYmdm9pZCAwIT09dFt0aGlzLmFjdGl2ZVNlcmllc0luZGV4XS5kYXRhWzBdJiZudWxsIT09dFt0aGlzLmFjdGl2ZVNlcmllc0luZGV4XS5kYXRhWzBdJiZ0W3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGFbMF0uY29uc3RydWN0b3I9PT1BcnJheSlyZXR1cm4hMH19LHtrZXk6XCJoYW5kbGVGb3JtYXQyREFycmF5XCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtmb3IodmFyIGk9dGhpcy53LmNvbmZpZyxhPXRoaXMudy5nbG9iYWxzLHM9XCJib3hQbG90XCI9PT1pLmNoYXJ0LnR5cGV8fFwiYm94UGxvdFwiPT09aS5zZXJpZXNbZV0udHlwZSxyPTA7cjx0W2VdLmRhdGEubGVuZ3RoO3IrKylpZih2b2lkIDAhPT10W2VdLmRhdGFbcl1bMV0mJihBcnJheS5pc0FycmF5KHRbZV0uZGF0YVtyXVsxXSkmJjQ9PT10W2VdLmRhdGFbcl1bMV0ubGVuZ3RoJiYhcz90aGlzLnR3b0RTZXJpZXMucHVzaCh4LnBhcnNlTnVtYmVyKHRbZV0uZGF0YVtyXVsxXVszXSkpOnRbZV0uZGF0YVtyXS5sZW5ndGg+PTU/dGhpcy50d29EU2VyaWVzLnB1c2goeC5wYXJzZU51bWJlcih0W2VdLmRhdGFbcl1bNF0pKTp0aGlzLnR3b0RTZXJpZXMucHVzaCh4LnBhcnNlTnVtYmVyKHRbZV0uZGF0YVtyXVsxXSkpLGEuZGF0YUZvcm1hdFhOdW1lcmljPSEwKSxcImRhdGV0aW1lXCI9PT1pLnhheGlzLnR5cGUpe3ZhciBvPW5ldyBEYXRlKHRbZV0uZGF0YVtyXVswXSk7bz1uZXcgRGF0ZShvKS5nZXRUaW1lKCksdGhpcy50d29EU2VyaWVzWC5wdXNoKG8pfWVsc2UgdGhpcy50d29EU2VyaWVzWC5wdXNoKHRbZV0uZGF0YVtyXVswXSk7Zm9yKHZhciBuPTA7bjx0W2VdLmRhdGEubGVuZ3RoO24rKyl2b2lkIDAhPT10W2VdLmRhdGFbbl1bMl0mJih0aGlzLnRocmVlRFNlcmllcy5wdXNoKHRbZV0uZGF0YVtuXVsyXSksYS5pc0RhdGFYWVo9ITApfX0se2tleTpcImhhbmRsZUZvcm1hdFhZXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncuY29uZmlnLGE9dGhpcy53Lmdsb2JhbHMscz1uZXcgSSh0aGlzLmN0eCkscj1lO2EuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGUpPi0xJiYocj10aGlzLmFjdGl2ZVNlcmllc0luZGV4KTtmb3IodmFyIG89MDtvPHRbZV0uZGF0YS5sZW5ndGg7bysrKXZvaWQgMCE9PXRbZV0uZGF0YVtvXS55JiYoQXJyYXkuaXNBcnJheSh0W2VdLmRhdGFbb10ueSk/dGhpcy50d29EU2VyaWVzLnB1c2goeC5wYXJzZU51bWJlcih0W2VdLmRhdGFbb10ueVt0W2VdLmRhdGFbb10ueS5sZW5ndGgtMV0pKTp0aGlzLnR3b0RTZXJpZXMucHVzaCh4LnBhcnNlTnVtYmVyKHRbZV0uZGF0YVtvXS55KSkpLHZvaWQgMCE9PXRbZV0uZGF0YVtvXS5nb2FscyYmQXJyYXkuaXNBcnJheSh0W2VdLmRhdGFbb10uZ29hbHMpPyh2b2lkIDA9PT10aGlzLnNlcmllc0dvYWxzW2VdJiYodGhpcy5zZXJpZXNHb2Fsc1tlXT1bXSksdGhpcy5zZXJpZXNHb2Fsc1tlXS5wdXNoKHRbZV0uZGF0YVtvXS5nb2FscykpOih2b2lkIDA9PT10aGlzLnNlcmllc0dvYWxzW2VdJiYodGhpcy5zZXJpZXNHb2Fsc1tlXT1bXSksdGhpcy5zZXJpZXNHb2Fsc1tlXS5wdXNoKG51bGwpKTtmb3IodmFyIG49MDtuPHRbcl0uZGF0YS5sZW5ndGg7bisrKXt2YXIgbD1cInN0cmluZ1wiPT10eXBlb2YgdFtyXS5kYXRhW25dLngsaD1BcnJheS5pc0FycmF5KHRbcl0uZGF0YVtuXS54KSxjPSFoJiYhIXMuaXNWYWxpZERhdGUodFtyXS5kYXRhW25dLngudG9TdHJpbmcoKSk7aWYobHx8YylpZihsfHxpLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyl7dmFyIGQ9YS5pc0Jhckhvcml6b250YWwmJmEuaXNSYW5nZURhdGE7XCJkYXRldGltZVwiIT09aS54YXhpcy50eXBlfHxkPyh0aGlzLmZhbGxiYWNrVG9DYXRlZ29yeT0hMCx0aGlzLnR3b0RTZXJpZXNYLnB1c2godFtyXS5kYXRhW25dLngpKTp0aGlzLnR3b0RTZXJpZXNYLnB1c2gocy5wYXJzZURhdGUodFtyXS5kYXRhW25dLngpKX1lbHNlXCJkYXRldGltZVwiPT09aS54YXhpcy50eXBlP3RoaXMudHdvRFNlcmllc1gucHVzaChzLnBhcnNlRGF0ZSh0W3JdLmRhdGFbbl0ueC50b1N0cmluZygpKSk6KGEuZGF0YUZvcm1hdFhOdW1lcmljPSEwLGEuaXNYTnVtZXJpYz0hMCx0aGlzLnR3b0RTZXJpZXNYLnB1c2gocGFyc2VGbG9hdCh0W3JdLmRhdGFbbl0ueCkpKTtlbHNlIGg/KHRoaXMuZmFsbGJhY2tUb0NhdGVnb3J5PSEwLHRoaXMudHdvRFNlcmllc1gucHVzaCh0W3JdLmRhdGFbbl0ueCkpOihhLmlzWE51bWVyaWM9ITAsYS5kYXRhRm9ybWF0WE51bWVyaWM9ITAsdGhpcy50d29EU2VyaWVzWC5wdXNoKHRbcl0uZGF0YVtuXS54KSl9aWYodFtlXS5kYXRhWzBdJiZ2b2lkIDAhPT10W2VdLmRhdGFbMF0ueil7Zm9yKHZhciBnPTA7Zzx0W2VdLmRhdGEubGVuZ3RoO2crKyl0aGlzLnRocmVlRFNlcmllcy5wdXNoKHRbZV0uZGF0YVtnXS56KTthLmlzRGF0YVhZWj0hMH19fSx7a2V5OlwiaGFuZGxlUmFuZ2VEYXRhXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncuZ2xvYmFscyxhPXt9O3JldHVybiB0aGlzLmlzRm9ybWF0MkRBcnJheSgpP2E9dGhpcy5oYW5kbGVSYW5nZURhdGFGb3JtYXQoXCJhcnJheVwiLHQsZSk6dGhpcy5pc0Zvcm1hdFhZKCkmJihhPXRoaXMuaGFuZGxlUmFuZ2VEYXRhRm9ybWF0KFwieHlcIix0LGUpKSxpLnNlcmllc1JhbmdlU3RhcnQucHVzaChhLnN0YXJ0KSxpLnNlcmllc1JhbmdlRW5kLnB1c2goYS5lbmQpLGkuc2VyaWVzUmFuZ2UucHVzaChhLnJhbmdlVW5pcXVlcyksaS5zZXJpZXNSYW5nZS5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3QmJnQuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0LnkuZm9yRWFjaCgoZnVuY3Rpb24oZSxpKXtmb3IodmFyIGE9MDthPHQueS5sZW5ndGg7YSsrKWlmKGkhPT1hKXt2YXIgcz1lLnkxLHI9ZS55MixvPXQueVthXS55MTtzPD10LnlbYV0ueTImJm88PXImJih0Lm92ZXJsYXBzLmluZGV4T2YoZS5yYW5nZU5hbWUpPDAmJnQub3ZlcmxhcHMucHVzaChlLnJhbmdlTmFtZSksdC5vdmVybGFwcy5pbmRleE9mKHQueVthXS5yYW5nZU5hbWUpPDAmJnQub3ZlcmxhcHMucHVzaCh0LnlbYV0ucmFuZ2VOYW1lKSl9fSkpfSkpfSkpLGF9fSx7a2V5OlwiaGFuZGxlQ2FuZGxlU3RpY2tCb3hEYXRhXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncuZ2xvYmFscyxhPXt9O3JldHVybiB0aGlzLmlzRm9ybWF0MkRBcnJheSgpP2E9dGhpcy5oYW5kbGVDYW5kbGVTdGlja0JveERhdGFGb3JtYXQoXCJhcnJheVwiLHQsZSk6dGhpcy5pc0Zvcm1hdFhZKCkmJihhPXRoaXMuaGFuZGxlQ2FuZGxlU3RpY2tCb3hEYXRhRm9ybWF0KFwieHlcIix0LGUpKSxpLnNlcmllc0NhbmRsZU9bZV09YS5vLGkuc2VyaWVzQ2FuZGxlSFtlXT1hLmgsaS5zZXJpZXNDYW5kbGVNW2VdPWEubSxpLnNlcmllc0NhbmRsZUxbZV09YS5sLGkuc2VyaWVzQ2FuZGxlQ1tlXT1hLmMsYX19LHtrZXk6XCJoYW5kbGVSYW5nZURhdGFGb3JtYXRcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9W10scz1bXSxyPWVbaV0uZGF0YS5maWx0ZXIoKGZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gZT09PWkuZmluZEluZGV4KChmdW5jdGlvbihlKXtyZXR1cm4gZS54PT09dC54fSkpfSkpLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm57eDp0Lngsb3ZlcmxhcHM6W10seTpbXX19KSk7aWYoXCJhcnJheVwiPT09dClmb3IodmFyIG89MDtvPGVbaV0uZGF0YS5sZW5ndGg7bysrKUFycmF5LmlzQXJyYXkoZVtpXS5kYXRhW29dKT8oYS5wdXNoKGVbaV0uZGF0YVtvXVsxXVswXSkscy5wdXNoKGVbaV0uZGF0YVtvXVsxXVsxXSkpOihhLnB1c2goZVtpXS5kYXRhW29dKSxzLnB1c2goZVtpXS5kYXRhW29dKSk7ZWxzZSBpZihcInh5XCI9PT10KWZvcih2YXIgbj1mdW5jdGlvbih0KXt2YXIgbz1BcnJheS5pc0FycmF5KGVbaV0uZGF0YVt0XS55KSxuPXgucmFuZG9tSWQoKSxsPWVbaV0uZGF0YVt0XS54LGg9e3kxOm8/ZVtpXS5kYXRhW3RdLnlbMF06ZVtpXS5kYXRhW3RdLnkseTI6bz9lW2ldLmRhdGFbdF0ueVsxXTplW2ldLmRhdGFbdF0ueSxyYW5nZU5hbWU6bn07ZVtpXS5kYXRhW3RdLnJhbmdlTmFtZT1uO3ZhciBjPXIuZmluZEluZGV4KChmdW5jdGlvbih0KXtyZXR1cm4gdC54PT09bH0pKTtyW2NdLnkucHVzaChoKSxhLnB1c2goaC55MSkscy5wdXNoKGgueTIpfSxsPTA7bDxlW2ldLmRhdGEubGVuZ3RoO2wrKyluKGwpO3JldHVybntzdGFydDphLGVuZDpzLHJhbmdlVW5pcXVlczpyfX19LHtrZXk6XCJoYW5kbGVDYW5kbGVTdGlja0JveERhdGFGb3JtYXRcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy53LHM9XCJib3hQbG90XCI9PT1hLmNvbmZpZy5jaGFydC50eXBlfHxcImJveFBsb3RcIj09PWEuY29uZmlnLnNlcmllc1tpXS50eXBlLHI9W10sbz1bXSxuPVtdLGw9W10saD1bXTtpZihcImFycmF5XCI9PT10KWlmKHMmJjY9PT1lW2ldLmRhdGFbMF0ubGVuZ3RofHwhcyYmNT09PWVbaV0uZGF0YVswXS5sZW5ndGgpZm9yKHZhciBjPTA7YzxlW2ldLmRhdGEubGVuZ3RoO2MrKylyLnB1c2goZVtpXS5kYXRhW2NdWzFdKSxvLnB1c2goZVtpXS5kYXRhW2NdWzJdKSxzPyhuLnB1c2goZVtpXS5kYXRhW2NdWzNdKSxsLnB1c2goZVtpXS5kYXRhW2NdWzRdKSxoLnB1c2goZVtpXS5kYXRhW2NdWzVdKSk6KGwucHVzaChlW2ldLmRhdGFbY11bM10pLGgucHVzaChlW2ldLmRhdGFbY11bNF0pKTtlbHNlIGZvcih2YXIgZD0wO2Q8ZVtpXS5kYXRhLmxlbmd0aDtkKyspQXJyYXkuaXNBcnJheShlW2ldLmRhdGFbZF1bMV0pJiYoci5wdXNoKGVbaV0uZGF0YVtkXVsxXVswXSksby5wdXNoKGVbaV0uZGF0YVtkXVsxXVsxXSkscz8obi5wdXNoKGVbaV0uZGF0YVtkXVsxXVsyXSksbC5wdXNoKGVbaV0uZGF0YVtkXVsxXVszXSksaC5wdXNoKGVbaV0uZGF0YVtkXVsxXVs0XSkpOihsLnB1c2goZVtpXS5kYXRhW2RdWzFdWzJdKSxoLnB1c2goZVtpXS5kYXRhW2RdWzFdWzNdKSkpO2Vsc2UgaWYoXCJ4eVwiPT09dClmb3IodmFyIGc9MDtnPGVbaV0uZGF0YS5sZW5ndGg7ZysrKUFycmF5LmlzQXJyYXkoZVtpXS5kYXRhW2ddLnkpJiYoci5wdXNoKGVbaV0uZGF0YVtnXS55WzBdKSxvLnB1c2goZVtpXS5kYXRhW2ddLnlbMV0pLHM/KG4ucHVzaChlW2ldLmRhdGFbZ10ueVsyXSksbC5wdXNoKGVbaV0uZGF0YVtnXS55WzNdKSxoLnB1c2goZVtpXS5kYXRhW2ddLnlbNF0pKToobC5wdXNoKGVbaV0uZGF0YVtnXS55WzJdKSxoLnB1c2goZVtpXS5kYXRhW2ddLnlbM10pKSk7cmV0dXJue286cixoOm8sbTpuLGw6bCxjOmh9fX0se2tleTpcInBhcnNlRGF0YUF4aXNDaGFydHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpPXRoaXMsYT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGhpcy5jdHgscz10aGlzLncuY29uZmlnLHI9dGhpcy53Lmdsb2JhbHMsbz1uZXcgSShhKSxuPXMubGFiZWxzLmxlbmd0aD4wP3MubGFiZWxzLnNsaWNlKCk6cy54YXhpcy5jYXRlZ29yaWVzLnNsaWNlKCk7aWYoci5pc1JhbmdlQmFyPVwicmFuZ2VCYXJcIj09PXMuY2hhcnQudHlwZSYmci5pc0Jhckhvcml6b250YWwsci5oYXNYYXhpc0dyb3Vwcz1cImNhdGVnb3J5XCI9PT1zLnhheGlzLnR5cGUmJnMueGF4aXMuZ3JvdXAuZ3JvdXBzLmxlbmd0aD4wLHIuaGFzWGF4aXNHcm91cHMmJihyLmdyb3Vwcz1zLnhheGlzLmdyb3VwLmdyb3Vwcyksci5oYXNTZXJpZXNHcm91cHM9bnVsbD09PShlPXRbMF0pfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmdyb3VwLHIuaGFzU2VyaWVzR3JvdXBzKXt2YXIgbD1bXSxoPXUobmV3IFNldCh0Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ3JvdXB9KSkpKTt0LmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dmFyIGk9aC5pbmRleE9mKHQuZ3JvdXApO2xbaV18fChsW2ldPVtdKSxsW2ldLnB1c2godC5uYW1lKX0pKSxyLnNlcmllc0dyb3Vwcz1sfWZvcih2YXIgYz1mdW5jdGlvbigpe2Zvcih2YXIgdD0wO3Q8bi5sZW5ndGg7dCsrKWlmKFwic3RyaW5nXCI9PXR5cGVvZiBuW3RdKXtpZighby5pc1ZhbGlkRGF0ZShuW3RdKSl0aHJvdyBuZXcgRXJyb3IoXCJZb3UgaGF2ZSBwcm92aWRlZCBpbnZhbGlkIERhdGUgZm9ybWF0LiBQbGVhc2UgcHJvdmlkZSBhIHZhbGlkIEphdmFTY3JpcHQgRGF0ZVwiKTtpLnR3b0RTZXJpZXNYLnB1c2goby5wYXJzZURhdGUoblt0XSkpfWVsc2UgaS50d29EU2VyaWVzWC5wdXNoKG5bdF0pfSxkPTA7ZDx0Lmxlbmd0aDtkKyspe2lmKHRoaXMudHdvRFNlcmllcz1bXSx0aGlzLnR3b0RTZXJpZXNYPVtdLHRoaXMudGhyZWVEU2VyaWVzPVtdLHZvaWQgMD09PXRbZF0uZGF0YSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKFwiSXQgaXMgYSBwb3NzaWJpbGl0eSB0aGF0IHlvdSBtYXkgaGF2ZSBub3QgaW5jbHVkZWQgJ2RhdGEnIHByb3BlcnR5IGluIHNlcmllcy5cIik7aWYoXCJyYW5nZUJhclwiIT09cy5jaGFydC50eXBlJiZcInJhbmdlQXJlYVwiIT09cy5jaGFydC50eXBlJiZcInJhbmdlQmFyXCIhPT10W2RdLnR5cGUmJlwicmFuZ2VBcmVhXCIhPT10W2RdLnR5cGV8fChyLmlzUmFuZ2VEYXRhPSEwLHIuaXNDb21ib0NoYXJ0cz9cInJhbmdlQmFyXCIhPT10W2RdLnR5cGUmJlwicmFuZ2VBcmVhXCIhPT10W2RdLnR5cGV8fHRoaXMuaGFuZGxlUmFuZ2VEYXRhKHQsZCk6XCJyYW5nZUJhclwiIT09cy5jaGFydC50eXBlJiZcInJhbmdlQXJlYVwiIT09cy5jaGFydC50eXBlfHx0aGlzLmhhbmRsZVJhbmdlRGF0YSh0LGQpKSx0aGlzLmlzTXVsdGlGb3JtYXQoKSl0aGlzLmlzRm9ybWF0MkRBcnJheSgpP3RoaXMuaGFuZGxlRm9ybWF0MkRBcnJheSh0LGQpOnRoaXMuaXNGb3JtYXRYWSgpJiZ0aGlzLmhhbmRsZUZvcm1hdFhZKHQsZCksXCJjYW5kbGVzdGlja1wiIT09cy5jaGFydC50eXBlJiZcImNhbmRsZXN0aWNrXCIhPT10W2RdLnR5cGUmJlwiYm94UGxvdFwiIT09cy5jaGFydC50eXBlJiZcImJveFBsb3RcIiE9PXRbZF0udHlwZXx8dGhpcy5oYW5kbGVDYW5kbGVTdGlja0JveERhdGEodCxkKSxyLnNlcmllcy5wdXNoKHRoaXMudHdvRFNlcmllcyksci5sYWJlbHMucHVzaCh0aGlzLnR3b0RTZXJpZXNYKSxyLnNlcmllc1gucHVzaCh0aGlzLnR3b0RTZXJpZXNYKSxyLnNlcmllc0dvYWxzPXRoaXMuc2VyaWVzR29hbHMsZCE9PXRoaXMuYWN0aXZlU2VyaWVzSW5kZXh8fHRoaXMuZmFsbGJhY2tUb0NhdGVnb3J5fHwoci5pc1hOdW1lcmljPSEwKTtlbHNle1wiZGF0ZXRpbWVcIj09PXMueGF4aXMudHlwZT8oci5pc1hOdW1lcmljPSEwLGMoKSxyLnNlcmllc1gucHVzaCh0aGlzLnR3b0RTZXJpZXNYKSk6XCJudW1lcmljXCI9PT1zLnhheGlzLnR5cGUmJihyLmlzWE51bWVyaWM9ITAsbi5sZW5ndGg+MCYmKHRoaXMudHdvRFNlcmllc1g9bixyLnNlcmllc1gucHVzaCh0aGlzLnR3b0RTZXJpZXNYKSkpLHIubGFiZWxzLnB1c2godGhpcy50d29EU2VyaWVzWCk7dmFyIGc9dFtkXS5kYXRhLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHgucGFyc2VOdW1iZXIodCl9KSk7ci5zZXJpZXMucHVzaChnKX1yLnNlcmllc1oucHVzaCh0aGlzLnRocmVlRFNlcmllcyksdm9pZCAwIT09dFtkXS5uYW1lP3Iuc2VyaWVzTmFtZXMucHVzaCh0W2RdLm5hbWUpOnIuc2VyaWVzTmFtZXMucHVzaChcInNlcmllcy1cIitwYXJzZUludChkKzEsMTApKSx2b2lkIDAhPT10W2RdLmNvbG9yP3Iuc2VyaWVzQ29sb3JzLnB1c2godFtkXS5jb2xvcik6ci5zZXJpZXNDb2xvcnMucHVzaCh2b2lkIDApfXJldHVybiB0aGlzLnd9fSx7a2V5OlwicGFyc2VEYXRhTm9uQXhpc0NoYXJ0c1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudy5nbG9iYWxzLGk9dGhpcy53LmNvbmZpZztlLnNlcmllcz10LnNsaWNlKCksZS5zZXJpZXNOYW1lcz1pLmxhYmVscy5zbGljZSgpO2Zvcih2YXIgYT0wO2E8ZS5zZXJpZXMubGVuZ3RoO2ErKyl2b2lkIDA9PT1lLnNlcmllc05hbWVzW2FdJiZlLnNlcmllc05hbWVzLnB1c2goXCJzZXJpZXMtXCIrKGErMSkpO3JldHVybiB0aGlzLnd9fSx7a2V5OlwiaGFuZGxlRXh0ZXJuYWxMYWJlbHNEYXRhXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LmNvbmZpZyxpPXRoaXMudy5nbG9iYWxzO2lmKGUueGF4aXMuY2F0ZWdvcmllcy5sZW5ndGg+MClpLmxhYmVscz1lLnhheGlzLmNhdGVnb3JpZXM7ZWxzZSBpZihlLmxhYmVscy5sZW5ndGg+MClpLmxhYmVscz1lLmxhYmVscy5zbGljZSgpO2Vsc2UgaWYodGhpcy5mYWxsYmFja1RvQ2F0ZWdvcnkpe2lmKGkubGFiZWxzPWkubGFiZWxzWzBdLGkuc2VyaWVzUmFuZ2UubGVuZ3RoJiYoaS5zZXJpZXNSYW5nZS5tYXAoKGZ1bmN0aW9uKHQpe3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7aS5sYWJlbHMuaW5kZXhPZih0LngpPDAmJnQueCYmaS5sYWJlbHMucHVzaCh0LngpfSkpfSkpLGkubGFiZWxzPWkubGFiZWxzLmZpbHRlcigoZnVuY3Rpb24odCxlLGkpe3JldHVybiBpLmluZGV4T2YodCk9PT1lfSkpKSxlLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyluZXcgeihlKS5jb252ZXJ0Q2F0VG9OdW1lcmljWGF4aXMoZSx0aGlzLmN0eCxpLnNlcmllc1hbMF0pLHRoaXMuX2dlbmVyYXRlRXh0ZXJuYWxMYWJlbHModCl9ZWxzZSB0aGlzLl9nZW5lcmF0ZUV4dGVybmFsTGFiZWxzKHQpfX0se2tleTpcIl9nZW5lcmF0ZUV4dGVybmFsTGFiZWxzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53Lmdsb2JhbHMsaT10aGlzLncuY29uZmlnLGE9W107aWYoZS5heGlzQ2hhcnRzKXtpZihlLnNlcmllcy5sZW5ndGg+MClpZih0aGlzLmlzRm9ybWF0WFkoKSlmb3IodmFyIHM9aS5zZXJpZXMubWFwKChmdW5jdGlvbih0LGUpe3JldHVybiB0LmRhdGEuZmlsdGVyKChmdW5jdGlvbih0LGUsaSl7cmV0dXJuIGkuZmluZEluZGV4KChmdW5jdGlvbihlKXtyZXR1cm4gZS54PT09dC54fSkpPT09ZX0pKX0pKSxyPXMucmVkdWNlKChmdW5jdGlvbih0LGUsaSxhKXtyZXR1cm4gYVt0XS5sZW5ndGg+ZS5sZW5ndGg/dDppfSksMCksbz0wO288c1tyXS5sZW5ndGg7bysrKWEucHVzaChvKzEpO2Vsc2UgZm9yKHZhciBuPTA7bjxlLnNlcmllc1tlLm1heFZhbHNJbkFycmF5SW5kZXhdLmxlbmd0aDtuKyspYS5wdXNoKG4rMSk7ZS5zZXJpZXNYPVtdO2Zvcih2YXIgbD0wO2w8dC5sZW5ndGg7bCsrKWUuc2VyaWVzWC5wdXNoKGEpO2UuaXNYTnVtZXJpYz0hMH1pZigwPT09YS5sZW5ndGgpe2E9ZS5heGlzQ2hhcnRzP1tdOmUuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gZSsxfSkpO2Zvcih2YXIgaD0wO2g8dC5sZW5ndGg7aCsrKWUuc2VyaWVzWC5wdXNoKGEpfWUubGFiZWxzPWEsaS54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJihlLmNhdGVnb3J5TGFiZWxzPWEubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gaS54YXhpcy5sYWJlbHMuZm9ybWF0dGVyKHQpfSkpKSxlLm5vTGFiZWxzUHJvdmlkZWQ9ITB9fSx7a2V5OlwicGFyc2VEYXRhXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9ZS5jb25maWcsYT1lLmdsb2JhbHM7aWYodGhpcy5leGNsdWRlQ29sbGFwc2VkU2VyaWVzSW5ZQXhpcygpLHRoaXMuZmFsbGJhY2tUb0NhdGVnb3J5PSExLHRoaXMuY3R4LmNvcmUucmVzZXRHbG9iYWxzKCksdGhpcy5jdHguY29yZS5pc011bHRpcGxlWSgpLGEuYXhpc0NoYXJ0cz8odGhpcy5wYXJzZURhdGFBeGlzQ2hhcnRzKHQpLHRoaXMuY29yZVV0aWxzLmdldExhcmdlc3RTZXJpZXMoKSk6dGhpcy5wYXJzZURhdGFOb25BeGlzQ2hhcnRzKHQpLFwiYmFyXCI9PT1pLmNoYXJ0LnR5cGUmJmkuY2hhcnQuc3RhY2tlZCl7dmFyIHM9bmV3IE4odGhpcy5jdHgpO2Euc2VyaWVzPXMuc2V0TnVsbFNlcmllc1RvWmVyb1ZhbHVlcyhhLnNlcmllcyl9dGhpcy5jb3JlVXRpbHMuZ2V0U2VyaWVzVG90YWxzKCksYS5heGlzQ2hhcnRzJiYoYS5zdGFja2VkU2VyaWVzVG90YWxzPXRoaXMuY29yZVV0aWxzLmdldFN0YWNrZWRTZXJpZXNUb3RhbHMoKSksdGhpcy5jb3JlVXRpbHMuZ2V0UGVyY2VudFNlcmllcygpLGEuZGF0YUZvcm1hdFhOdW1lcmljfHxhLmlzWE51bWVyaWMmJihcIm51bWVyaWNcIiE9PWkueGF4aXMudHlwZXx8MCE9PWkubGFiZWxzLmxlbmd0aHx8MCE9PWkueGF4aXMuY2F0ZWdvcmllcy5sZW5ndGgpfHx0aGlzLmhhbmRsZUV4dGVybmFsTGFiZWxzRGF0YSh0KTtmb3IodmFyIHI9dGhpcy5jb3JlVXRpbHMuZ2V0Q2F0ZWdvcnlMYWJlbHMoYS5sYWJlbHMpLG89MDtvPHIubGVuZ3RoO28rKylpZihBcnJheS5pc0FycmF5KHJbb10pKXthLmlzTXVsdGlMaW5lWD0hMDticmVha319fSx7a2V5OlwiZXhjbHVkZUNvbGxhcHNlZFNlcmllc0luWUF4aXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLnc7ZS5nbG9iYWxzLmlnbm9yZVlBeGlzSW5kZXhlcz1lLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLm1hcCgoZnVuY3Rpb24oaSxhKXtpZih0LncuZ2xvYmFscy5pc011bHRpcGxlWUF4aXMmJiFlLmNvbmZpZy5jaGFydC5zdGFja2VkKXJldHVybiBpLmluZGV4fSkpfX1dKSx0fSgpLEI9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIHIodCxbe2tleTpcImdldExhYmVsXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSl7dmFyIHM9YXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0/YXJndW1lbnRzWzRdOltdLHI9YXJndW1lbnRzLmxlbmd0aD41JiZ2b2lkIDAhPT1hcmd1bWVudHNbNV0/YXJndW1lbnRzWzVdOlwiMTJweFwiLG89IShhcmd1bWVudHMubGVuZ3RoPjYmJnZvaWQgMCE9PWFyZ3VtZW50c1s2XSl8fGFyZ3VtZW50c1s2XSxuPXRoaXMudyxsPXZvaWQgMD09PXRbYV0/XCJcIjp0W2FdLGg9bCxjPW4uZ2xvYmFscy54TGFiZWxGb3JtYXR0ZXIsZD1uLmNvbmZpZy54YXhpcy5sYWJlbHMuZm9ybWF0dGVyLGc9ITEsdT1uZXcgVCh0aGlzLmN0eCkscD1sO28mJihoPXUueExhYmVsRm9ybWF0KGMsbCxwLHtpOmEsZGF0ZUZvcm1hdHRlcjpuZXcgSSh0aGlzLmN0eCkuZm9ybWF0RGF0ZSx3Om59KSx2b2lkIDAhPT1kJiYoaD1kKGwsdFthXSx7aTphLGRhdGVGb3JtYXR0ZXI6bmV3IEkodGhpcy5jdHgpLmZvcm1hdERhdGUsdzpufSkpKTt2YXIgZix4O2UubGVuZ3RoPjA/KGY9ZVthXS51bml0LHg9bnVsbCxlLmZvckVhY2goKGZ1bmN0aW9uKHQpe1wibW9udGhcIj09PXQudW5pdD94PVwieWVhclwiOlwiZGF5XCI9PT10LnVuaXQ/eD1cIm1vbnRoXCI6XCJob3VyXCI9PT10LnVuaXQ/eD1cImRheVwiOlwibWludXRlXCI9PT10LnVuaXQmJih4PVwiaG91clwiKX0pKSxnPXg9PT1mLGk9ZVthXS5wb3NpdGlvbixoPWVbYV0udmFsdWUpOlwiZGF0ZXRpbWVcIj09PW4uY29uZmlnLnhheGlzLnR5cGUmJnZvaWQgMD09PWQmJihoPVwiXCIpLHZvaWQgMD09PWgmJihoPVwiXCIpLGg9QXJyYXkuaXNBcnJheShoKT9oOmgudG9TdHJpbmcoKTt2YXIgYj1uZXcgbSh0aGlzLmN0eCksdj17fTt2PW4uZ2xvYmFscy5yb3RhdGVYTGFiZWxzJiZvP2IuZ2V0VGV4dFJlY3RzKGgscGFyc2VJbnQociwxMCksbnVsbCxcInJvdGF0ZShcIi5jb25jYXQobi5jb25maWcueGF4aXMubGFiZWxzLnJvdGF0ZSxcIiAwIDApXCIpLCExKTpiLmdldFRleHRSZWN0cyhoLHBhcnNlSW50KHIsMTApKTt2YXIgeT0hbi5jb25maWcueGF4aXMubGFiZWxzLnNob3dEdXBsaWNhdGVzJiZ0aGlzLmN0eC50aW1lU2NhbGU7cmV0dXJuIUFycmF5LmlzQXJyYXkoaCkmJigwPT09aC5pbmRleE9mKFwiTmFOXCIpfHwwPT09aC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoXCJpbnZhbGlkXCIpfHxoLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcImluZmluaXR5XCIpPj0wfHxzLmluZGV4T2YoaCk+PTAmJnkpJiYoaD1cIlwiKSx7eDppLHRleHQ6aCx0ZXh0UmVjdDp2LGlzQm9sZDpnfX19LHtrZXk6XCJjaGVja0xhYmVsQmFzZWRPblRpY2thbW91bnRcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy53LHM9YS5jb25maWcueGF4aXMudGlja0Ftb3VudDtyZXR1cm5cImRhdGFQb2ludHNcIj09PXMmJihzPU1hdGgucm91bmQoYS5nbG9iYWxzLmdyaWRXaWR0aC8xMjApKSxzPml8fHQlTWF0aC5yb3VuZChpLyhzKzEpKT09MHx8KGUudGV4dD1cIlwiKSxlfX0se2tleTpcImNoZWNrRm9yT3ZlcmZsb3dpbmdMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMpe3ZhciByPXRoaXMudztpZigwPT09dCYmci5nbG9iYWxzLnNraXBGaXJzdFRpbWVsaW5lbGFiZWwmJihlLnRleHQ9XCJcIiksdD09PWktMSYmci5nbG9iYWxzLnNraXBMYXN0VGltZWxpbmVsYWJlbCYmKGUudGV4dD1cIlwiKSxyLmNvbmZpZy54YXhpcy5sYWJlbHMuaGlkZU92ZXJsYXBwaW5nTGFiZWxzJiZhLmxlbmd0aD4wKXt2YXIgbz1zW3MubGVuZ3RoLTFdO2UueDxvLnRleHRSZWN0LndpZHRoLyhyLmdsb2JhbHMucm90YXRlWExhYmVscz9NYXRoLmFicyhyLmNvbmZpZy54YXhpcy5sYWJlbHMucm90YXRlKS8xMjoxLjAxKStvLngmJihlLnRleHQ9XCJcIil9cmV0dXJuIGV9fSx7a2V5OlwiY2hlY2tGb3JSZXZlcnNlZExhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O3JldHVybiBpLmNvbmZpZy55YXhpc1t0XSYmaS5jb25maWcueWF4aXNbdF0ucmV2ZXJzZWQmJmUucmV2ZXJzZSgpLGV9fSx7a2V5OlwiaXNZQXhpc0hpZGRlblwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPW5ldyB5KHRoaXMuY3R4KTtyZXR1cm4hZS5jb25maWcueWF4aXNbdF0uc2hvd3x8IWUuY29uZmlnLnlheGlzW3RdLnNob3dGb3JOdWxsU2VyaWVzJiZpLmlzU2VyaWVzTnVsbCh0KSYmLTE9PT1lLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKHQpfX0se2tleTpcImdldFlBeGlzRm9yZUNvbG9yXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7cmV0dXJuIEFycmF5LmlzQXJyYXkodCkmJmkuZ2xvYmFscy55QXhpc1NjYWxlW2VdJiZ0aGlzLmN0eC50aGVtZS5wdXNoRXh0cmFDb2xvcnModCxpLmdsb2JhbHMueUF4aXNTY2FsZVtlXS5yZXN1bHQubGVuZ3RoLCExKSx0fX0se2tleTpcImRyYXdZQXhpc1RpY2tzXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSxzLHIsbyl7dmFyIG49dGhpcy53LGw9bmV3IG0odGhpcy5jdHgpLGg9bi5nbG9iYWxzLnRyYW5zbGF0ZVk7aWYoYS5zaG93JiZlPjApeyEwPT09bi5jb25maWcueWF4aXNbc10ub3Bwb3NpdGUmJih0Kz1hLndpZHRoKTtmb3IodmFyIGM9ZTtjPj0wO2MtLSl7dmFyIGQ9aCtlLzEwK24uY29uZmlnLnlheGlzW3NdLmxhYmVscy5vZmZzZXRZLTE7bi5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKGQ9cipjKSxcImhlYXRtYXBcIj09PW4uY29uZmlnLmNoYXJ0LnR5cGUmJihkKz1yLzIpO3ZhciBnPWwuZHJhd0xpbmUodCtpLm9mZnNldFgtYS53aWR0aCthLm9mZnNldFgsZCthLm9mZnNldFksdCtpLm9mZnNldFgrYS5vZmZzZXRYLGQrYS5vZmZzZXRZLGEuY29sb3IpO28uYWRkKGcpLGgrPXJ9fX19XSksdH0oKSxHPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJzY2FsZVN2Z05vZGVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXBhcnNlRmxvYXQodC5nZXRBdHRyaWJ1dGVOUyhudWxsLFwid2lkdGhcIikpLGE9cGFyc2VGbG9hdCh0LmdldEF0dHJpYnV0ZU5TKG51bGwsXCJoZWlnaHRcIikpO3Quc2V0QXR0cmlidXRlTlMobnVsbCxcIndpZHRoXCIsaSplKSx0LnNldEF0dHJpYnV0ZU5TKG51bGwsXCJoZWlnaHRcIixhKmUpLHQuc2V0QXR0cmlidXRlTlMobnVsbCxcInZpZXdCb3hcIixcIjAgMCBcIitpK1wiIFwiK2EpfX0se2tleTpcImZpeFN2Z1N0cmluZ0ZvckllMTFcIix2YWx1ZTpmdW5jdGlvbih0KXtpZigheC5pc0lFMTEoKSlyZXR1cm4gdC5yZXBsYWNlKC8mbmJzcDsvZyxcIiYjMTYwO1wiKTt2YXIgZT0wLGk9dC5yZXBsYWNlKC94bWxucz1cImh0dHA6XFwvXFwvd3d3LnczLm9yZ1xcLzIwMDBcXC9zdmdcIi9nLChmdW5jdGlvbih0KXtyZXR1cm4gMj09PSsrZT8neG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIgeG1sbnM6c3ZnanM9XCJodHRwOi8vc3ZnanMuZGV2XCInOnR9KSk7cmV0dXJuIGk9KGk9aS5yZXBsYWNlKC94bWxuczpOU1xcZCs9XCJcIi9nLFwiXCIpKS5yZXBsYWNlKC9OU1xcZCs6KFxcdys6XFx3Kz1cIikvZyxcIiQxXCIpfX0se2tleTpcImdldFN2Z1N0cmluZ1wiLHZhbHVlOmZ1bmN0aW9uKHQpe251bGw9PXQmJih0PTEpO3ZhciBlPXRoaXMudy5nbG9iYWxzLmRvbS5QYXBlci5zdmcoKTtpZigxIT09dCl7dmFyIGk9dGhpcy53Lmdsb2JhbHMuZG9tLlBhcGVyLm5vZGUuY2xvbmVOb2RlKCEwKTt0aGlzLnNjYWxlU3ZnTm9kZShpLHQpLGU9KG5ldyBYTUxTZXJpYWxpemVyKS5zZXJpYWxpemVUb1N0cmluZyhpKX1yZXR1cm4gdGhpcy5maXhTdmdTdHJpbmdGb3JJZTExKGUpfX0se2tleTpcImNsZWFudXBcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXQuZ2xvYmFscy5kb20uYmFzZUVsLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJhcGV4Y2hhcnRzLXhjcm9zc2hhaXJzXCIpLGk9dC5nbG9iYWxzLmRvbS5iYXNlRWwuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImFwZXhjaGFydHMteWNyb3NzaGFpcnNcIiksYT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtem9vbS1yZWN0LCAuYXBleGNoYXJ0cy1zZWxlY3Rpb24tcmVjdFwiKTtBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGEsKGZ1bmN0aW9uKHQpe3Quc2V0QXR0cmlidXRlKFwid2lkdGhcIiwwKX0pKSxlJiZlWzBdJiYoZVswXS5zZXRBdHRyaWJ1dGUoXCJ4XCIsLTUwMCksZVswXS5zZXRBdHRyaWJ1dGUoXCJ4MVwiLC01MDApLGVbMF0uc2V0QXR0cmlidXRlKFwieDJcIiwtNTAwKSksaSYmaVswXSYmKGlbMF0uc2V0QXR0cmlidXRlKFwieVwiLC0xMDApLGlbMF0uc2V0QXR0cmlidXRlKFwieTFcIiwtMTAwKSxpWzBdLnNldEF0dHJpYnV0ZShcInkyXCIsLTEwMCkpfX0se2tleTpcInN2Z1VybFwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jbGVhbnVwKCk7dmFyIHQ9dGhpcy5nZXRTdmdTdHJpbmcoKSxlPW5ldyBCbG9iKFt0XSx7dHlwZTpcImltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOFwifSk7cmV0dXJuIFVSTC5jcmVhdGVPYmplY3RVUkwoZSl9fSx7a2V5OlwiZGF0YVVSSVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihpKXt2YXIgYT1lLncscz10P3Quc2NhbGV8fHQud2lkdGgvYS5nbG9iYWxzLnN2Z1dpZHRoOjE7ZS5jbGVhbnVwKCk7dmFyIHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtyLndpZHRoPWEuZ2xvYmFscy5zdmdXaWR0aCpzLHIuaGVpZ2h0PXBhcnNlSW50KGEuZ2xvYmFscy5kb20uZWxXcmFwLnN0eWxlLmhlaWdodCwxMCkqczt2YXIgbz1cInRyYW5zcGFyZW50XCI9PT1hLmNvbmZpZy5jaGFydC5iYWNrZ3JvdW5kP1wiI2ZmZlwiOmEuY29uZmlnLmNoYXJ0LmJhY2tncm91bmQsbj1yLmdldENvbnRleHQoXCIyZFwiKTtuLmZpbGxTdHlsZT1vLG4uZmlsbFJlY3QoMCwwLHIud2lkdGgqcyxyLmhlaWdodCpzKTt2YXIgbD1lLmdldFN2Z1N0cmluZyhzKTtpZih3aW5kb3cuY2FudmcmJnguaXNJRTExKCkpe3ZhciBoPXdpbmRvdy5jYW52Zy5DYW52Zy5mcm9tU3RyaW5nKG4sbCx7aWdub3JlQ2xlYXI6ITAsaWdub3JlRGltZW5zaW9uczohMH0pO2guc3RhcnQoKTt2YXIgYz1yLm1zVG9CbG9iKCk7aC5zdG9wKCksaSh7YmxvYjpjfSl9ZWxzZXt2YXIgZD1cImRhdGE6aW1hZ2Uvc3ZnK3htbCxcIitlbmNvZGVVUklDb21wb25lbnQobCksZz1uZXcgSW1hZ2U7Zy5jcm9zc09yaWdpbj1cImFub255bW91c1wiLGcub25sb2FkPWZ1bmN0aW9uKCl7aWYobi5kcmF3SW1hZ2UoZywwLDApLHIubXNUb0Jsb2Ipe3ZhciB0PXIubXNUb0Jsb2IoKTtpKHtibG9iOnR9KX1lbHNle3ZhciBlPXIudG9EYXRhVVJMKFwiaW1hZ2UvcG5nXCIpO2koe2ltZ1VSSTplfSl9fSxnLnNyYz1kfX0pKX19LHtrZXk6XCJleHBvcnRUb1NWR1wiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy50cmlnZ2VyRG93bmxvYWQodGhpcy5zdmdVcmwoKSx0aGlzLncuY29uZmlnLmNoYXJ0LnRvb2xiYXIuZXhwb3J0LnN2Zy5maWxlbmFtZSxcIi5zdmdcIil9fSx7a2V5OlwiZXhwb3J0VG9QbmdcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5kYXRhVVJJKCkudGhlbigoZnVuY3Rpb24oZSl7dmFyIGk9ZS5pbWdVUkksYT1lLmJsb2I7YT9uYXZpZ2F0b3IubXNTYXZlT3JPcGVuQmxvYihhLHQudy5nbG9iYWxzLmNoYXJ0SUQrXCIucG5nXCIpOnQudHJpZ2dlckRvd25sb2FkKGksdC53LmNvbmZpZy5jaGFydC50b29sYmFyLmV4cG9ydC5wbmcuZmlsZW5hbWUsXCIucG5nXCIpfSkpfX0se2tleTpcImV4cG9ydFRvQ1NWXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXQuc2VyaWVzLGE9dC5maWxlTmFtZSxzPXQuY29sdW1uRGVsaW1pdGVyLHI9dm9pZCAwPT09cz9cIixcIjpzLG89dC5saW5lRGVsaW1pdGVyLG49dm9pZCAwPT09bz9cIlxcblwiOm8sbD10aGlzLnc7aXx8KGk9bC5jb25maWcuc2VyaWVzKTt2YXIgaD1bXSxjPVtdLGQ9XCJcIixnPWwuZ2xvYmFscy5zZXJpZXMubWFwKChmdW5jdGlvbih0LGUpe3JldHVybi0xPT09bC5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihlKT90OltdfSkpLHA9TWF0aC5tYXguYXBwbHkoTWF0aCx1KGkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kYXRhP3QuZGF0YS5sZW5ndGg6MH0pKSkpLGY9bmV3IFcodGhpcy5jdHgpLGI9bmV3IEIodGhpcy5jdHgpLHY9ZnVuY3Rpb24odCl7dmFyIGk9XCJcIjtpZihsLmdsb2JhbHMuYXhpc0NoYXJ0cyl7aWYoXCJjYXRlZ29yeVwiPT09bC5jb25maWcueGF4aXMudHlwZXx8bC5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljKWlmKGwuZ2xvYmFscy5pc0Jhckhvcml6b250YWwpe3ZhciBhPWwuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzWzBdLHM9bmV3IE4oZS5jdHgpLmdldEFjdGl2ZUNvbmZpZ1Nlcmllc0luZGV4KCk7aT1hKGwuZ2xvYmFscy5sYWJlbHNbdF0se3Nlcmllc0luZGV4OnMsZGF0YVBvaW50SW5kZXg6dCx3Omx9KX1lbHNlIGk9Yi5nZXRMYWJlbChsLmdsb2JhbHMubGFiZWxzLGwuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHMsMCx0KS50ZXh0O1wiZGF0ZXRpbWVcIj09PWwuY29uZmlnLnhheGlzLnR5cGUmJihsLmNvbmZpZy54YXhpcy5jYXRlZ29yaWVzLmxlbmd0aD9pPWwuY29uZmlnLnhheGlzLmNhdGVnb3JpZXNbdF06bC5jb25maWcubGFiZWxzLmxlbmd0aCYmKGk9bC5jb25maWcubGFiZWxzW3RdKSl9ZWxzZSBpPWwuY29uZmlnLmxhYmVsc1t0XTtyZXR1cm4gQXJyYXkuaXNBcnJheShpKSYmKGk9aS5qb2luKFwiIFwiKSkseC5pc051bWJlcihpKT9pOmkuc3BsaXQocikuam9pbihcIlwiKX0sbT1mdW5jdGlvbih0LGUpe2lmKGgubGVuZ3RoJiYwPT09ZSYmYy5wdXNoKGguam9pbihyKSksdC5kYXRhKXt0LmRhdGE9dC5kYXRhLmxlbmd0aCYmdC5kYXRhfHx1KEFycmF5KHApKS5tYXAoKGZ1bmN0aW9uKCl7cmV0dXJuXCJcIn0pKTtmb3IodmFyIGE9MDthPHQuZGF0YS5sZW5ndGg7YSsrKXtoPVtdO3ZhciBzPXYoYSk7aWYoc3x8KGYuaXNGb3JtYXRYWSgpP3M9aVtlXS5kYXRhW2FdLng6Zi5pc0Zvcm1hdDJEQXJyYXkoKSYmKHM9aVtlXS5kYXRhW2FdP2lbZV0uZGF0YVthXVswXTpcIlwiKSksMD09PWUpe2gucHVzaCgobj1zLFwiZGF0ZXRpbWVcIj09PWwuY29uZmlnLnhheGlzLnR5cGUmJlN0cmluZyhuKS5sZW5ndGg+PTEwP2wuY29uZmlnLmNoYXJ0LnRvb2xiYXIuZXhwb3J0LmNzdi5kYXRlRm9ybWF0dGVyKHMpOnguaXNOdW1iZXIocyk/czpzLnNwbGl0KHIpLmpvaW4oXCJcIikpKTtmb3IodmFyIG89MDtvPGwuZ2xvYmFscy5zZXJpZXMubGVuZ3RoO28rKylmLmlzRm9ybWF0WFkoKT9oLnB1c2goaVtvXS5kYXRhW2FdLnkpOmgucHVzaChnW29dW2FdKX0oXCJjYW5kbGVzdGlja1wiPT09bC5jb25maWcuY2hhcnQudHlwZXx8dC50eXBlJiZcImNhbmRsZXN0aWNrXCI9PT10LnR5cGUpJiYoaC5wb3AoKSxoLnB1c2gobC5nbG9iYWxzLnNlcmllc0NhbmRsZU9bZV1bYV0pLGgucHVzaChsLmdsb2JhbHMuc2VyaWVzQ2FuZGxlSFtlXVthXSksaC5wdXNoKGwuZ2xvYmFscy5zZXJpZXNDYW5kbGVMW2VdW2FdKSxoLnB1c2gobC5nbG9iYWxzLnNlcmllc0NhbmRsZUNbZV1bYV0pKSwoXCJib3hQbG90XCI9PT1sLmNvbmZpZy5jaGFydC50eXBlfHx0LnR5cGUmJlwiYm94UGxvdFwiPT09dC50eXBlKSYmKGgucG9wKCksaC5wdXNoKGwuZ2xvYmFscy5zZXJpZXNDYW5kbGVPW2VdW2FdKSxoLnB1c2gobC5nbG9iYWxzLnNlcmllc0NhbmRsZUhbZV1bYV0pLGgucHVzaChsLmdsb2JhbHMuc2VyaWVzQ2FuZGxlTVtlXVthXSksaC5wdXNoKGwuZ2xvYmFscy5zZXJpZXNDYW5kbGVMW2VdW2FdKSxoLnB1c2gobC5nbG9iYWxzLnNlcmllc0NhbmRsZUNbZV1bYV0pKSxcInJhbmdlQmFyXCI9PT1sLmNvbmZpZy5jaGFydC50eXBlJiYoaC5wb3AoKSxoLnB1c2gobC5nbG9iYWxzLnNlcmllc1JhbmdlU3RhcnRbZV1bYV0pLGgucHVzaChsLmdsb2JhbHMuc2VyaWVzUmFuZ2VFbmRbZV1bYV0pKSxoLmxlbmd0aCYmYy5wdXNoKGguam9pbihyKSl9fXZhciBufTtoLnB1c2gobC5jb25maWcuY2hhcnQudG9vbGJhci5leHBvcnQuY3N2LmhlYWRlckNhdGVnb3J5KSxcImJveFBsb3RcIj09PWwuY29uZmlnLmNoYXJ0LnR5cGU/KGgucHVzaChcIm1pbmltdW1cIiksaC5wdXNoKFwicTFcIiksaC5wdXNoKFwibWVkaWFuXCIpLGgucHVzaChcInEzXCIpLGgucHVzaChcIm1heGltdW1cIikpOlwiY2FuZGxlc3RpY2tcIj09PWwuY29uZmlnLmNoYXJ0LnR5cGU/KGgucHVzaChcIm9wZW5cIiksaC5wdXNoKFwiaGlnaFwiKSxoLnB1c2goXCJsb3dcIiksaC5wdXNoKFwiY2xvc2VcIikpOlwicmFuZ2VCYXJcIj09PWwuY29uZmlnLmNoYXJ0LnR5cGU/KGgucHVzaChcIm1pbmltdW1cIiksaC5wdXNoKFwibWF4aW11bVwiKSk6aS5tYXAoKGZ1bmN0aW9uKHQsZSl7dmFyIGk9dC5uYW1lP3QubmFtZTpcInNlcmllcy1cIi5jb25jYXQoZSk7bC5nbG9iYWxzLmF4aXNDaGFydHMmJmgucHVzaChpLnNwbGl0KHIpLmpvaW4oXCJcIik/aS5zcGxpdChyKS5qb2luKFwiXCIpOlwic2VyaWVzLVwiLmNvbmNhdChlKSl9KSksbC5nbG9iYWxzLmF4aXNDaGFydHN8fChoLnB1c2gobC5jb25maWcuY2hhcnQudG9vbGJhci5leHBvcnQuY3N2LmhlYWRlclZhbHVlKSxjLnB1c2goaC5qb2luKHIpKSksaS5tYXAoKGZ1bmN0aW9uKHQsZSl7bC5nbG9iYWxzLmF4aXNDaGFydHM/bSh0LGUpOigoaD1bXSkucHVzaChsLmdsb2JhbHMubGFiZWxzW2VdLnNwbGl0KHIpLmpvaW4oXCJcIikpLGgucHVzaChnW2VdKSxjLnB1c2goaC5qb2luKHIpKSl9KSksZCs9Yy5qb2luKG4pLHRoaXMudHJpZ2dlckRvd25sb2FkKFwiZGF0YTp0ZXh0L2NzdjsgY2hhcnNldD11dGYtOCxcIitlbmNvZGVVUklDb21wb25lbnQoXCJcXHVmZWZmXCIrZCksYXx8bC5jb25maWcuY2hhcnQudG9vbGJhci5leHBvcnQuY3N2LmZpbGVuYW1lLFwiLmNzdlwiKX19LHtrZXk6XCJ0cmlnZ2VyRG93bmxvYWRcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7YS5ocmVmPXQsYS5kb3dubG9hZD0oZXx8dGhpcy53Lmdsb2JhbHMuY2hhcnRJRCkraSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpLGEuY2xpY2soKSxkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGEpfX1dKSx0fSgpLFY9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsaSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy5lbGdyaWQ9aSx0aGlzLnc9ZS53O3ZhciBzPXRoaXMudzt0aGlzLmF4ZXNVdGlscz1uZXcgQihlKSx0aGlzLnhheGlzTGFiZWxzPXMuZ2xvYmFscy5sYWJlbHMuc2xpY2UoKSxzLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLmxlbmd0aD4wJiYhcy5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKHRoaXMueGF4aXNMYWJlbHM9cy5nbG9iYWxzLnRpbWVzY2FsZUxhYmVscy5zbGljZSgpKSxzLmNvbmZpZy54YXhpcy5vdmVyd3JpdGVDYXRlZ29yaWVzJiYodGhpcy54YXhpc0xhYmVscz1zLmNvbmZpZy54YXhpcy5vdmVyd3JpdGVDYXRlZ29yaWVzKSx0aGlzLmRyYXduTGFiZWxzPVtdLHRoaXMuZHJhd25MYWJlbHNSZWN0cz1bXSxcInRvcFwiPT09cy5jb25maWcueGF4aXMucG9zaXRpb24/dGhpcy5vZmZZPTA6dGhpcy5vZmZZPXMuZ2xvYmFscy5ncmlkSGVpZ2h0KzEsdGhpcy5vZmZZPXRoaXMub2ZmWStzLmNvbmZpZy54YXhpcy5heGlzQm9yZGVyLm9mZnNldFksdGhpcy5pc0NhdGVnb3J5QmFySG9yaXpvbnRhbD1cImJhclwiPT09cy5jb25maWcuY2hhcnQudHlwZSYmcy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmhvcml6b250YWwsdGhpcy54YXhpc0ZvbnRTaXplPXMuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250U2l6ZSx0aGlzLnhheGlzRm9udEZhbWlseT1zLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udEZhbWlseSx0aGlzLnhheGlzRm9yZUNvbG9ycz1zLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuY29sb3JzLHRoaXMueGF4aXNCb3JkZXJXaWR0aD1zLmNvbmZpZy54YXhpcy5heGlzQm9yZGVyLndpZHRoLHRoaXMuaXNDYXRlZ29yeUJhckhvcml6b250YWwmJih0aGlzLnhheGlzQm9yZGVyV2lkdGg9cy5jb25maWcueWF4aXNbMF0uYXhpc0JvcmRlci53aWR0aC50b1N0cmluZygpKSx0aGlzLnhheGlzQm9yZGVyV2lkdGguaW5kZXhPZihcIiVcIik+LTE/dGhpcy54YXhpc0JvcmRlcldpZHRoPXMuZ2xvYmFscy5ncmlkV2lkdGgqcGFyc2VJbnQodGhpcy54YXhpc0JvcmRlcldpZHRoLDEwKS8xMDA6dGhpcy54YXhpc0JvcmRlcldpZHRoPXBhcnNlSW50KHRoaXMueGF4aXNCb3JkZXJXaWR0aCwxMCksdGhpcy54YXhpc0JvcmRlckhlaWdodD1zLmNvbmZpZy54YXhpcy5heGlzQm9yZGVyLmhlaWdodCx0aGlzLnlheGlzPXMuY29uZmlnLnlheGlzWzBdfXJldHVybiByKHQsW3trZXk6XCJkcmF3WGF4aXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPW5ldyBtKHRoaXMuY3R4KSxpPWUuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy14YXhpc1wiLHRyYW5zZm9ybTpcInRyYW5zbGF0ZShcIi5jb25jYXQodC5jb25maWcueGF4aXMub2Zmc2V0WCxcIiwgXCIpLmNvbmNhdCh0LmNvbmZpZy54YXhpcy5vZmZzZXRZLFwiKVwiKX0pLGE9ZS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzLXRleHRzLWdcIix0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIuY29uY2F0KHQuZ2xvYmFscy50cmFuc2xhdGVYQXhpc1gsXCIsIFwiKS5jb25jYXQodC5nbG9iYWxzLnRyYW5zbGF0ZVhBeGlzWSxcIilcIil9KTtpLmFkZChhKTtmb3IodmFyIHM9W10scj0wO3I8dGhpcy54YXhpc0xhYmVscy5sZW5ndGg7cisrKXMucHVzaCh0aGlzLnhheGlzTGFiZWxzW3JdKTtpZih0aGlzLmRyYXdYQXhpc0xhYmVsQW5kR3JvdXAoITAsZSxhLHMsdC5nbG9iYWxzLmlzWE51bWVyaWMsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV9KSksdC5nbG9iYWxzLmhhc1hheGlzR3JvdXBzKXt2YXIgbz10Lmdsb2JhbHMuZ3JvdXBzO3M9W107Zm9yKHZhciBuPTA7bjxvLmxlbmd0aDtuKyspcy5wdXNoKG9bbl0udGl0bGUpO3ZhciBsPXt9O3QuY29uZmlnLnhheGlzLmdyb3VwLnN0eWxlJiYobC54YXhpc0ZvbnRTaXplPXQuY29uZmlnLnhheGlzLmdyb3VwLnN0eWxlLmZvbnRTaXplLGwueGF4aXNGb250RmFtaWx5PXQuY29uZmlnLnhheGlzLmdyb3VwLnN0eWxlLmZvbnRGYW1pbHksbC54YXhpc0ZvcmVDb2xvcnM9dC5jb25maWcueGF4aXMuZ3JvdXAuc3R5bGUuY29sb3JzLGwuZm9udFdlaWdodD10LmNvbmZpZy54YXhpcy5ncm91cC5zdHlsZS5mb250V2VpZ2h0LGwuY3NzQ2xhc3M9dC5jb25maWcueGF4aXMuZ3JvdXAuc3R5bGUuY3NzQ2xhc3MpLHRoaXMuZHJhd1hBeGlzTGFiZWxBbmRHcm91cCghMSxlLGEscywhMSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gb1t0XS5jb2xzKmV9KSxsKX1pZih2b2lkIDAhPT10LmNvbmZpZy54YXhpcy50aXRsZS50ZXh0KXt2YXIgaD1lLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteGF4aXMtdGl0bGVcIn0pLGM9ZS5kcmF3VGV4dCh7eDp0Lmdsb2JhbHMuZ3JpZFdpZHRoLzIrdC5jb25maWcueGF4aXMudGl0bGUub2Zmc2V0WCx5OnRoaXMub2ZmWStwYXJzZUZsb2F0KHRoaXMueGF4aXNGb250U2l6ZSkrKFwiYm90dG9tXCI9PT10LmNvbmZpZy54YXhpcy5wb3NpdGlvbj90Lmdsb2JhbHMueEF4aXNMYWJlbHNIZWlnaHQ6LXQuZ2xvYmFscy54QXhpc0xhYmVsc0hlaWdodC0xMCkrdC5jb25maWcueGF4aXMudGl0bGUub2Zmc2V0WSx0ZXh0OnQuY29uZmlnLnhheGlzLnRpdGxlLnRleHQsdGV4dEFuY2hvcjpcIm1pZGRsZVwiLGZvbnRTaXplOnQuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6dC5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuZm9udEZhbWlseSxmb250V2VpZ2h0OnQuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmZvbnRXZWlnaHQsZm9yZUNvbG9yOnQuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmNvbG9yLGNzc0NsYXNzOlwiYXBleGNoYXJ0cy14YXhpcy10aXRsZS10ZXh0IFwiK3QuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmNzc0NsYXNzfSk7aC5hZGQoYyksaS5hZGQoaCl9aWYodC5jb25maWcueGF4aXMuYXhpc0JvcmRlci5zaG93KXt2YXIgZD10Lmdsb2JhbHMuYmFyUGFkRm9yTnVtZXJpY0F4aXMsZz1lLmRyYXdMaW5lKHQuZ2xvYmFscy5wYWRIb3Jpem9udGFsK3QuY29uZmlnLnhheGlzLmF4aXNCb3JkZXIub2Zmc2V0WC1kLHRoaXMub2ZmWSx0aGlzLnhheGlzQm9yZGVyV2lkdGgrZCx0aGlzLm9mZlksdC5jb25maWcueGF4aXMuYXhpc0JvcmRlci5jb2xvciwwLHRoaXMueGF4aXNCb3JkZXJIZWlnaHQpO3RoaXMuZWxncmlkJiZ0aGlzLmVsZ3JpZC5lbEdyaWRCb3JkZXJzJiZ0LmNvbmZpZy5ncmlkLnNob3c/dGhpcy5lbGdyaWQuZWxHcmlkQm9yZGVycy5hZGQoZyk6aS5hZGQoZyl9cmV0dXJuIGl9fSx7a2V5OlwiZHJhd1hBeGlzTGFiZWxBbmRHcm91cFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyxyKXt2YXIgbyxuPXRoaXMsbD1hcmd1bWVudHMubGVuZ3RoPjYmJnZvaWQgMCE9PWFyZ3VtZW50c1s2XT9hcmd1bWVudHNbNl06e30saD1bXSxjPVtdLGQ9dGhpcy53LGc9bC54YXhpc0ZvbnRTaXplfHx0aGlzLnhheGlzRm9udFNpemUsdT1sLnhheGlzRm9udEZhbWlseXx8dGhpcy54YXhpc0ZvbnRGYW1pbHkscD1sLnhheGlzRm9yZUNvbG9yc3x8dGhpcy54YXhpc0ZvcmVDb2xvcnMsZj1sLmZvbnRXZWlnaHR8fGQuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250V2VpZ2h0LHg9bC5jc3NDbGFzc3x8ZC5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmNzc0NsYXNzLGI9ZC5nbG9iYWxzLnBhZEhvcml6b250YWwsdj1hLmxlbmd0aCxtPVwiY2F0ZWdvcnlcIj09PWQuY29uZmlnLnhheGlzLnR5cGU/ZC5nbG9iYWxzLmRhdGFQb2ludHM6djtpZigwPT09bSYmdj5tJiYobT12KSxzKXt2YXIgeT1tPjE/bS0xOm07bz1kLmdsb2JhbHMuZ3JpZFdpZHRoL3ksYj1iK3IoMCxvKS8yK2QuY29uZmlnLnhheGlzLmxhYmVscy5vZmZzZXRYfWVsc2Ugbz1kLmdsb2JhbHMuZ3JpZFdpZHRoL20sYj1iK3IoMCxvKStkLmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WDtmb3IodmFyIHc9ZnVuY3Rpb24ocyl7dmFyIGw9Yi1yKHMsbykvMitkLmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WDswPT09cyYmMT09PXYmJm8vMj09PWImJjE9PT1tJiYobD1kLmdsb2JhbHMuZ3JpZFdpZHRoLzIpO3ZhciB5PW4uYXhlc1V0aWxzLmdldExhYmVsKGEsZC5nbG9iYWxzLnRpbWVzY2FsZUxhYmVscyxsLHMsaCxnLHQpLHc9Mjg7ZC5nbG9iYWxzLnJvdGF0ZVhMYWJlbHMmJnQmJih3PTIyKSxkLmNvbmZpZy54YXhpcy50aXRsZS50ZXh0JiZcInRvcFwiPT09ZC5jb25maWcueGF4aXMucG9zaXRpb24mJih3Kz1wYXJzZUZsb2F0KGQuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmZvbnRTaXplKSsyKSx0fHwodz13K3BhcnNlRmxvYXQoZykrKGQuZ2xvYmFscy54QXhpc0xhYmVsc0hlaWdodC1kLmdsb2JhbHMueEF4aXNHcm91cExhYmVsc0hlaWdodCkrKGQuZ2xvYmFscy5yb3RhdGVYTGFiZWxzPzEwOjApKSx5PXZvaWQgMCE9PWQuY29uZmlnLnhheGlzLnRpY2tBbW91bnQmJlwiZGF0YVBvaW50c1wiIT09ZC5jb25maWcueGF4aXMudGlja0Ftb3VudCYmXCJkYXRldGltZVwiIT09ZC5jb25maWcueGF4aXMudHlwZT9uLmF4ZXNVdGlscy5jaGVja0xhYmVsQmFzZWRPblRpY2thbW91bnQocyx5LHYpOm4uYXhlc1V0aWxzLmNoZWNrRm9yT3ZlcmZsb3dpbmdMYWJlbHMocyx5LHYsaCxjKTtpZihkLmNvbmZpZy54YXhpcy5sYWJlbHMuc2hvdyl7dmFyIGs9ZS5kcmF3VGV4dCh7eDp5LngseTpuLm9mZlkrZC5jb25maWcueGF4aXMubGFiZWxzLm9mZnNldFkrdy0oXCJ0b3BcIj09PWQuY29uZmlnLnhheGlzLnBvc2l0aW9uP2QuZ2xvYmFscy54QXhpc0hlaWdodCtkLmNvbmZpZy54YXhpcy5heGlzVGlja3MuaGVpZ2h0LTI6MCksdGV4dDp5LnRleHQsdGV4dEFuY2hvcjpcIm1pZGRsZVwiLGZvbnRXZWlnaHQ6eS5pc0JvbGQ/NjAwOmYsZm9udFNpemU6Zyxmb250RmFtaWx5OnUsZm9yZUNvbG9yOkFycmF5LmlzQXJyYXkocCk/dCYmZC5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljP3BbZC5nbG9iYWxzLm1pblgrcy0xXTpwW3NdOnAsaXNQbGFpblRleHQ6ITEsY3NzQ2xhc3M6KHQ/XCJhcGV4Y2hhcnRzLXhheGlzLWxhYmVsIFwiOlwiYXBleGNoYXJ0cy14YXhpcy1ncm91cC1sYWJlbCBcIikreH0pO2lmKGkuYWRkKGspLGsub24oXCJjbGlja1wiLChmdW5jdGlvbih0KXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBkLmNvbmZpZy5jaGFydC5ldmVudHMueEF4aXNMYWJlbENsaWNrKXt2YXIgZT1PYmplY3QuYXNzaWduKHt9LGQse2xhYmVsSW5kZXg6c30pO2QuY29uZmlnLmNoYXJ0LmV2ZW50cy54QXhpc0xhYmVsQ2xpY2sodCxuLmN0eCxlKX19KSksdCl7dmFyIEE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGQuZ2xvYmFscy5TVkdOUyxcInRpdGxlXCIpO0EudGV4dENvbnRlbnQ9QXJyYXkuaXNBcnJheSh5LnRleHQpP3kudGV4dC5qb2luKFwiIFwiKTp5LnRleHQsay5ub2RlLmFwcGVuZENoaWxkKEEpLFwiXCIhPT15LnRleHQmJihoLnB1c2goeS50ZXh0KSxjLnB1c2goeSkpfX1zPHYtMSYmKGIrPXIocysxLG8pKX0saz0wO2s8PXYtMTtrKyspdyhrKX19LHtrZXk6XCJkcmF3WGF4aXNJbnZlcnNlZFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGksYT10aGlzLHM9dGhpcy53LHI9bmV3IG0odGhpcy5jdHgpLG89cy5jb25maWcueWF4aXNbMF0ub3Bwb3NpdGU/cy5nbG9iYWxzLnRyYW5zbGF0ZVlBeGlzWFt0XTowLG49ci5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzIGFwZXhjaGFydHMteGF4aXMtaW52ZXJzZWRcIixyZWw6dH0pLGw9ci5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzLXRleHRzLWcgYXBleGNoYXJ0cy14YXhpcy1pbnZlcnNlZC10ZXh0cy1nXCIsdHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiK28rXCIsIDApXCJ9KTtuLmFkZChsKTt2YXIgaD1bXTtpZihzLmNvbmZpZy55YXhpc1t0XS5zaG93KWZvcih2YXIgYz0wO2M8dGhpcy54YXhpc0xhYmVscy5sZW5ndGg7YysrKWgucHVzaCh0aGlzLnhheGlzTGFiZWxzW2NdKTtlPXMuZ2xvYmFscy5ncmlkSGVpZ2h0L2gubGVuZ3RoLGk9LWUvMi4yO3ZhciBkPXMuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzWzBdLGc9cy5jb25maWcueWF4aXNbMF0ubGFiZWxzO2lmKGcuc2hvdylmb3IodmFyIHU9ZnVuY3Rpb24obyl7dmFyIG49dm9pZCAwPT09aFtvXT9cIlwiOmhbb107bj1kKG4se3Nlcmllc0luZGV4OnQsZGF0YVBvaW50SW5kZXg6byx3OnN9KTt2YXIgYz1hLmF4ZXNVdGlscy5nZXRZQXhpc0ZvcmVDb2xvcihnLnN0eWxlLmNvbG9ycyx0KSx1PTA7QXJyYXkuaXNBcnJheShuKSYmKHU9bi5sZW5ndGgvMipwYXJzZUludChnLnN0eWxlLmZvbnRTaXplLDEwKSk7dmFyIHA9Zy5vZmZzZXRYLTE1LGY9XCJlbmRcIjthLnlheGlzLm9wcG9zaXRlJiYoZj1cInN0YXJ0XCIpLFwibGVmdFwiPT09cy5jb25maWcueWF4aXNbMF0ubGFiZWxzLmFsaWduPyhwPWcub2Zmc2V0WCxmPVwic3RhcnRcIik6XCJjZW50ZXJcIj09PXMuY29uZmlnLnlheGlzWzBdLmxhYmVscy5hbGlnbj8ocD1nLm9mZnNldFgsZj1cIm1pZGRsZVwiKTpcInJpZ2h0XCI9PT1zLmNvbmZpZy55YXhpc1swXS5sYWJlbHMuYWxpZ24mJihmPVwiZW5kXCIpO3ZhciB4PXIuZHJhd1RleHQoe3g6cCx5OmkrZStnLm9mZnNldFktdSx0ZXh0Om4sdGV4dEFuY2hvcjpmLGZvcmVDb2xvcjpBcnJheS5pc0FycmF5KGMpP2Nbb106Yyxmb250U2l6ZTpnLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6Zy5zdHlsZS5mb250RmFtaWx5LGZvbnRXZWlnaHQ6Zy5zdHlsZS5mb250V2VpZ2h0LGlzUGxhaW5UZXh0OiExLGNzc0NsYXNzOlwiYXBleGNoYXJ0cy15YXhpcy1sYWJlbCBcIitnLnN0eWxlLmNzc0NsYXNzLG1heFdpZHRoOmcubWF4V2lkdGh9KTtsLmFkZCh4KSx4Lm9uKFwiY2xpY2tcIiwoZnVuY3Rpb24odCl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2Ygcy5jb25maWcuY2hhcnQuZXZlbnRzLnhBeGlzTGFiZWxDbGljayl7dmFyIGU9T2JqZWN0LmFzc2lnbih7fSxzLHtsYWJlbEluZGV4Om99KTtzLmNvbmZpZy5jaGFydC5ldmVudHMueEF4aXNMYWJlbENsaWNrKHQsYS5jdHgsZSl9fSkpO3ZhciBiPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhzLmdsb2JhbHMuU1ZHTlMsXCJ0aXRsZVwiKTtpZihiLnRleHRDb250ZW50PUFycmF5LmlzQXJyYXkobik/bi5qb2luKFwiIFwiKTpuLHgubm9kZS5hcHBlbmRDaGlsZChiKSwwIT09cy5jb25maWcueWF4aXNbdF0ubGFiZWxzLnJvdGF0ZSl7dmFyIHY9ci5yb3RhdGVBcm91bmRDZW50ZXIoeC5ub2RlKTt4Lm5vZGUuc2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIsXCJyb3RhdGUoXCIuY29uY2F0KHMuY29uZmlnLnlheGlzW3RdLmxhYmVscy5yb3RhdGUsXCIgMCBcIikuY29uY2F0KHYueSxcIilcIikpfWkrPWV9LHA9MDtwPD1oLmxlbmd0aC0xO3ArKyl1KHApO2lmKHZvaWQgMCE9PXMuY29uZmlnLnlheGlzWzBdLnRpdGxlLnRleHQpe3ZhciBmPXIuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy15YXhpcy10aXRsZSBhcGV4Y2hhcnRzLXhheGlzLXRpdGxlLWludmVyc2VkXCIsdHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiK28rXCIsIDApXCJ9KSx4PXIuZHJhd1RleHQoe3g6cy5jb25maWcueWF4aXNbMF0udGl0bGUub2Zmc2V0WCx5OnMuZ2xvYmFscy5ncmlkSGVpZ2h0LzIrcy5jb25maWcueWF4aXNbMF0udGl0bGUub2Zmc2V0WSx0ZXh0OnMuY29uZmlnLnlheGlzWzBdLnRpdGxlLnRleHQsdGV4dEFuY2hvcjpcIm1pZGRsZVwiLGZvcmVDb2xvcjpzLmNvbmZpZy55YXhpc1swXS50aXRsZS5zdHlsZS5jb2xvcixmb250U2l6ZTpzLmNvbmZpZy55YXhpc1swXS50aXRsZS5zdHlsZS5mb250U2l6ZSxmb250V2VpZ2h0OnMuY29uZmlnLnlheGlzWzBdLnRpdGxlLnN0eWxlLmZvbnRXZWlnaHQsZm9udEZhbWlseTpzLmNvbmZpZy55YXhpc1swXS50aXRsZS5zdHlsZS5mb250RmFtaWx5LGNzc0NsYXNzOlwiYXBleGNoYXJ0cy15YXhpcy10aXRsZS10ZXh0IFwiK3MuY29uZmlnLnlheGlzWzBdLnRpdGxlLnN0eWxlLmNzc0NsYXNzfSk7Zi5hZGQoeCksbi5hZGQoZil9dmFyIGI9MDt0aGlzLmlzQ2F0ZWdvcnlCYXJIb3Jpem9udGFsJiZzLmNvbmZpZy55YXhpc1swXS5vcHBvc2l0ZSYmKGI9cy5nbG9iYWxzLmdyaWRXaWR0aCk7dmFyIHY9cy5jb25maWcueGF4aXMuYXhpc0JvcmRlcjtpZih2LnNob3cpe3ZhciB5PXIuZHJhd0xpbmUocy5nbG9iYWxzLnBhZEhvcml6b250YWwrdi5vZmZzZXRYK2IsMSt2Lm9mZnNldFkscy5nbG9iYWxzLnBhZEhvcml6b250YWwrdi5vZmZzZXRYK2Iscy5nbG9iYWxzLmdyaWRIZWlnaHQrdi5vZmZzZXRZLHYuY29sb3IsMCk7dGhpcy5lbGdyaWQmJnRoaXMuZWxncmlkLmVsR3JpZEJvcmRlcnMmJnMuY29uZmlnLmdyaWQuc2hvdz90aGlzLmVsZ3JpZC5lbEdyaWRCb3JkZXJzLmFkZCh5KTpuLmFkZCh5KX1yZXR1cm4gcy5jb25maWcueWF4aXNbMF0uYXhpc1RpY2tzLnNob3cmJnRoaXMuYXhlc1V0aWxzLmRyYXdZQXhpc1RpY2tzKGIsaC5sZW5ndGgscy5jb25maWcueWF4aXNbMF0uYXhpc0JvcmRlcixzLmNvbmZpZy55YXhpc1swXS5heGlzVGlja3MsMCxlLG4pLG59fSx7a2V5OlwiZHJhd1hheGlzVGlja3NcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy53LHM9dDtpZighKHQ8MHx8dC0yPmEuZ2xvYmFscy5ncmlkV2lkdGgpKXt2YXIgcj10aGlzLm9mZlkrYS5jb25maWcueGF4aXMuYXhpc1RpY2tzLm9mZnNldFk7aWYoZT1lK3IrYS5jb25maWcueGF4aXMuYXhpc1RpY2tzLmhlaWdodCxcInRvcFwiPT09YS5jb25maWcueGF4aXMucG9zaXRpb24mJihlPXItYS5jb25maWcueGF4aXMuYXhpc1RpY2tzLmhlaWdodCksYS5jb25maWcueGF4aXMuYXhpc1RpY2tzLnNob3cpe3ZhciBvPW5ldyBtKHRoaXMuY3R4KS5kcmF3TGluZSh0K2EuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5vZmZzZXRYLHIrYS5jb25maWcueGF4aXMub2Zmc2V0WSxzK2EuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5vZmZzZXRYLGUrYS5jb25maWcueGF4aXMub2Zmc2V0WSxhLmNvbmZpZy54YXhpcy5heGlzVGlja3MuY29sb3IpO2kuYWRkKG8pLG8ubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy14YXhpcy10aWNrXCIpfX19fSx7a2V5OlwiZ2V0WEF4aXNUaWNrc1Bvc2l0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9W10saT10aGlzLnhheGlzTGFiZWxzLmxlbmd0aCxhPXQuZ2xvYmFscy5wYWRIb3Jpem9udGFsO2lmKHQuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHMubGVuZ3RoPjApZm9yKHZhciBzPTA7czxpO3MrKylhPXRoaXMueGF4aXNMYWJlbHNbc10ucG9zaXRpb24sZS5wdXNoKGEpO2Vsc2UgZm9yKHZhciByPWksbz0wO288cjtvKyspe3ZhciBuPXI7dC5nbG9iYWxzLmlzWE51bWVyaWMmJlwiYmFyXCIhPT10LmNvbmZpZy5jaGFydC50eXBlJiYobi09MSksYSs9dC5nbG9iYWxzLmdyaWRXaWR0aC9uLGUucHVzaChhKX1yZXR1cm4gZX19LHtrZXk6XCJ4QXhpc0xhYmVsQ29ycmVjdGlvbnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPW5ldyBtKHRoaXMuY3R4KSxpPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy14YXhpcy10ZXh0cy1nXCIpLGE9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXhheGlzLXRleHRzLWcgdGV4dDpub3QoLmFwZXhjaGFydHMteGF4aXMtZ3JvdXAtbGFiZWwpXCIpLHM9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXlheGlzLWludmVyc2VkIHRleHRcIikscj10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMteGF4aXMtaW52ZXJzZWQtdGV4dHMtZyB0ZXh0IHRzcGFuXCIpO2lmKHQuZ2xvYmFscy5yb3RhdGVYTGFiZWxzfHx0LmNvbmZpZy54YXhpcy5sYWJlbHMucm90YXRlQWx3YXlzKWZvcih2YXIgbz0wO288YS5sZW5ndGg7bysrKXt2YXIgbj1lLnJvdGF0ZUFyb3VuZENlbnRlcihhW29dKTtuLnk9bi55LTEsbi54PW4ueCsxLGFbb10uc2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIsXCJyb3RhdGUoXCIuY29uY2F0KHQuY29uZmlnLnhheGlzLmxhYmVscy5yb3RhdGUsXCIgXCIpLmNvbmNhdChuLngsXCIgXCIpLmNvbmNhdChuLnksXCIpXCIpKSxhW29dLnNldEF0dHJpYnV0ZShcInRleHQtYW5jaG9yXCIsXCJlbmRcIik7aS5zZXRBdHRyaWJ1dGUoXCJ0cmFuc2Zvcm1cIixcInRyYW5zbGF0ZSgwLCBcIi5jb25jYXQoLTEwLFwiKVwiKSk7dmFyIGw9YVtvXS5jaGlsZE5vZGVzO3QuY29uZmlnLnhheGlzLmxhYmVscy50cmltJiZBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGwsKGZ1bmN0aW9uKGkpe2UucGxhY2VUZXh0V2l0aEVsbGlwc2lzKGksaS50ZXh0Q29udGVudCx0Lmdsb2JhbHMueEF4aXNMYWJlbHNIZWlnaHQtKFwiYm90dG9tXCI9PT10LmNvbmZpZy5sZWdlbmQucG9zaXRpb24/MjA6MTApKX0pKX1lbHNlIWZ1bmN0aW9uKCl7Zm9yKHZhciBpPXQuZ2xvYmFscy5ncmlkV2lkdGgvKHQuZ2xvYmFscy5sYWJlbHMubGVuZ3RoKzEpLHM9MDtzPGEubGVuZ3RoO3MrKyl7dmFyIHI9YVtzXS5jaGlsZE5vZGVzO3QuY29uZmlnLnhheGlzLmxhYmVscy50cmltJiZcImRhdGV0aW1lXCIhPT10LmNvbmZpZy54YXhpcy50eXBlJiZBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHIsKGZ1bmN0aW9uKHQpe2UucGxhY2VUZXh0V2l0aEVsbGlwc2lzKHQsdC50ZXh0Q29udGVudCxpKX0pKX19KCk7aWYocy5sZW5ndGg+MCl7dmFyIGg9c1tzLmxlbmd0aC0xXS5nZXRCQm94KCksYz1zWzBdLmdldEJCb3goKTtoLng8LTIwJiZzW3MubGVuZ3RoLTFdLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc1tzLmxlbmd0aC0xXSksYy54K2Mud2lkdGg+dC5nbG9iYWxzLmdyaWRXaWR0aCYmIXQuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJnNbMF0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzWzBdKTtmb3IodmFyIGQ9MDtkPHIubGVuZ3RoO2QrKyllLnBsYWNlVGV4dFdpdGhFbGxpcHNpcyhyW2RdLHJbZF0udGV4dENvbnRlbnQsdC5jb25maWcueWF4aXNbMF0ubGFiZWxzLm1heFdpZHRoLSh0LmNvbmZpZy55YXhpc1swXS50aXRsZS50ZXh0PzIqcGFyc2VGbG9hdCh0LmNvbmZpZy55YXhpc1swXS50aXRsZS5zdHlsZS5mb250U2l6ZSk6MCktMTUpfX19XSksdH0oKSxqPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53O3ZhciBpPXRoaXMudzt0aGlzLnhheGlzTGFiZWxzPWkuZ2xvYmFscy5sYWJlbHMuc2xpY2UoKSx0aGlzLmF4ZXNVdGlscz1uZXcgQihlKSx0aGlzLmlzUmFuZ2VCYXI9aS5nbG9iYWxzLnNlcmllc1JhbmdlLmxlbmd0aCxpLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLmxlbmd0aD4wJiYodGhpcy54YXhpc0xhYmVscz1pLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLnNsaWNlKCkpfXJldHVybiByKHQsW3trZXk6XCJkcmF3R3JpZEFyZWFcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsLGU9dGhpcy53LGk9bmV3IG0odGhpcy5jdHgpO251bGw9PT10JiYodD1pLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZ3JpZFwifSkpO3ZhciBhPWkuZHJhd0xpbmUoZS5nbG9iYWxzLnBhZEhvcml6b250YWwsMSxlLmdsb2JhbHMucGFkSG9yaXpvbnRhbCxlLmdsb2JhbHMuZ3JpZEhlaWdodCxcInRyYW5zcGFyZW50XCIpLHM9aS5kcmF3TGluZShlLmdsb2JhbHMucGFkSG9yaXpvbnRhbCxlLmdsb2JhbHMuZ3JpZEhlaWdodCxlLmdsb2JhbHMuZ3JpZFdpZHRoLGUuZ2xvYmFscy5ncmlkSGVpZ2h0LFwidHJhbnNwYXJlbnRcIik7cmV0dXJuIHQuYWRkKHMpLHQuYWRkKGEpLHR9fSx7a2V5OlwiZHJhd0dyaWRcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PW51bGw7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmF4aXNDaGFydHMmJih0PXRoaXMucmVuZGVyR3JpZCgpLHRoaXMuZHJhd0dyaWRBcmVhKHQuZWwpKSx0fX0se2tleTpcImNyZWF0ZUdyaWRNYXNrXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10Lmdsb2JhbHMsaT1uZXcgbSh0aGlzLmN0eCksYT1BcnJheS5pc0FycmF5KHQuY29uZmlnLnN0cm9rZS53aWR0aCk/MDp0LmNvbmZpZy5zdHJva2Uud2lkdGg7aWYoQXJyYXkuaXNBcnJheSh0LmNvbmZpZy5zdHJva2Uud2lkdGgpKXt2YXIgcz0wO3QuY29uZmlnLnN0cm9rZS53aWR0aC5mb3JFYWNoKChmdW5jdGlvbih0KXtzPU1hdGgubWF4KHMsdCl9KSksYT1zfWUuZG9tLmVsR3JpZFJlY3RNYXNrPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhlLlNWR05TLFwiY2xpcFBhdGhcIiksZS5kb20uZWxHcmlkUmVjdE1hc2suc2V0QXR0cmlidXRlKFwiaWRcIixcImdyaWRSZWN0TWFza1wiLmNvbmNhdChlLmN1aWQpKSxlLmRvbS5lbEdyaWRSZWN0TWFya2VyTWFzaz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoZS5TVkdOUyxcImNsaXBQYXRoXCIpLGUuZG9tLmVsR3JpZFJlY3RNYXJrZXJNYXNrLnNldEF0dHJpYnV0ZShcImlkXCIsXCJncmlkUmVjdE1hcmtlck1hc2tcIi5jb25jYXQoZS5jdWlkKSksZS5kb20uZWxGb3JlY2FzdE1hc2s9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGUuU1ZHTlMsXCJjbGlwUGF0aFwiKSxlLmRvbS5lbEZvcmVjYXN0TWFzay5zZXRBdHRyaWJ1dGUoXCJpZFwiLFwiZm9yZWNhc3RNYXNrXCIuY29uY2F0KGUuY3VpZCkpLGUuZG9tLmVsTm9uRm9yZWNhc3RNYXNrPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhlLlNWR05TLFwiY2xpcFBhdGhcIiksZS5kb20uZWxOb25Gb3JlY2FzdE1hc2suc2V0QXR0cmlidXRlKFwiaWRcIixcIm5vbkZvcmVjYXN0TWFza1wiLmNvbmNhdChlLmN1aWQpKTt2YXIgcj10LmNvbmZpZy5jaGFydC50eXBlLG89MCxuPTA7KFwiYmFyXCI9PT1yfHxcInJhbmdlQmFyXCI9PT1yfHxcImNhbmRsZXN0aWNrXCI9PT1yfHxcImJveFBsb3RcIj09PXJ8fHQuZ2xvYmFscy5jb21ib0JhckNvdW50PjApJiZ0Lmdsb2JhbHMuaXNYTnVtZXJpYyYmIXQuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJihvPXQuY29uZmlnLmdyaWQucGFkZGluZy5sZWZ0LG49dC5jb25maWcuZ3JpZC5wYWRkaW5nLnJpZ2h0LGUuYmFyUGFkRm9yTnVtZXJpY0F4aXM+byYmKG89ZS5iYXJQYWRGb3JOdW1lcmljQXhpcyxuPWUuYmFyUGFkRm9yTnVtZXJpY0F4aXMpKSxlLmRvbS5lbEdyaWRSZWN0PWkuZHJhd1JlY3QoLWEvMi1vLTIsLWEvMixlLmdyaWRXaWR0aCthK24rbys0LGUuZ3JpZEhlaWdodCthLDAsXCIjZmZmXCIpO3ZhciBsPXQuZ2xvYmFscy5tYXJrZXJzLmxhcmdlc3RTaXplKzE7ZS5kb20uZWxHcmlkUmVjdE1hcmtlcj1pLmRyYXdSZWN0KDIqLWwsMiotbCxlLmdyaWRXaWR0aCs0KmwsZS5ncmlkSGVpZ2h0KzQqbCwwLFwiI2ZmZlwiKSxlLmRvbS5lbEdyaWRSZWN0TWFzay5hcHBlbmRDaGlsZChlLmRvbS5lbEdyaWRSZWN0Lm5vZGUpLGUuZG9tLmVsR3JpZFJlY3RNYXJrZXJNYXNrLmFwcGVuZENoaWxkKGUuZG9tLmVsR3JpZFJlY3RNYXJrZXIubm9kZSk7dmFyIGg9ZS5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCJkZWZzXCIpO2guYXBwZW5kQ2hpbGQoZS5kb20uZWxHcmlkUmVjdE1hc2spLGguYXBwZW5kQ2hpbGQoZS5kb20uZWxGb3JlY2FzdE1hc2spLGguYXBwZW5kQ2hpbGQoZS5kb20uZWxOb25Gb3JlY2FzdE1hc2spLGguYXBwZW5kQ2hpbGQoZS5kb20uZWxHcmlkUmVjdE1hcmtlck1hc2spfX0se2tleTpcIl9kcmF3R3JpZExpbmVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5pLGk9dC54MSxhPXQueTEscz10LngyLHI9dC55MixvPXQueENvdW50LG49dC5wYXJlbnQsbD10aGlzLnc7aWYoISgwPT09ZSYmbC5nbG9iYWxzLnNraXBGaXJzdFRpbWVsaW5lbGFiZWx8fGU9PT1vLTEmJmwuZ2xvYmFscy5za2lwTGFzdFRpbWVsaW5lbGFiZWwmJiFsLmNvbmZpZy54YXhpcy5sYWJlbHMuZm9ybWF0dGVyfHxcInJhZGFyXCI9PT1sLmNvbmZpZy5jaGFydC50eXBlKSl7bC5jb25maWcuZ3JpZC54YXhpcy5saW5lcy5zaG93JiZ0aGlzLl9kcmF3R3JpZExpbmUoe2k6ZSx4MTppLHkxOmEseDI6cyx5MjpyLHhDb3VudDpvLHBhcmVudDpufSk7dmFyIGg9MDtpZihsLmdsb2JhbHMuaGFzWGF4aXNHcm91cHMmJlwiYmV0d2VlblwiPT09bC5jb25maWcueGF4aXMudGlja1BsYWNlbWVudCl7dmFyIGM9bC5nbG9iYWxzLmdyb3VwcztpZihjKXtmb3IodmFyIGQ9MCxnPTA7ZDxlJiZnPGMubGVuZ3RoO2crKylkKz1jW2ddLmNvbHM7ZD09PWUmJihoPS42KmwuZ2xvYmFscy54QXhpc0xhYmVsc0hlaWdodCl9fW5ldyBWKHRoaXMuY3R4KS5kcmF3WGF4aXNUaWNrcyhpLGgsbC5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbCl9fX0se2tleTpcIl9kcmF3R3JpZExpbmVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmksaT10LngxLGE9dC55MSxzPXQueDIscj10LnkyLG89dC54Q291bnQsbj10LnBhcmVudCxsPXRoaXMudyxoPSExLGM9bi5ub2RlLmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtZ3JpZGxpbmVzLWhvcml6b250YWxcIiksZD1sLmNvbmZpZy5ncmlkLnN0cm9rZURhc2hBcnJheSxnPWwuZ2xvYmFscy5iYXJQYWRGb3JOdW1lcmljQXhpczsoMD09PWEmJjA9PT1yfHwwPT09aSYmMD09PXMpJiYoaD0hMCksYT09PWwuZ2xvYmFscy5ncmlkSGVpZ2h0JiZyPT09bC5nbG9iYWxzLmdyaWRIZWlnaHQmJihoPSEwKSwhbC5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbHx8MCE9PWUmJmUhPT1vLTF8fChoPSEwKTt2YXIgdT1uZXcgbSh0aGlzKS5kcmF3TGluZShpLShjP2c6MCksYSxzKyhjP2c6MCkscixsLmNvbmZpZy5ncmlkLmJvcmRlckNvbG9yLGQpO3Uubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1ncmlkbGluZVwiKSxoJiZsLmNvbmZpZy5ncmlkLnNob3c/dGhpcy5lbEdyaWRCb3JkZXJzLmFkZCh1KTpuLmFkZCh1KX19LHtrZXk6XCJfZHJhd0dyaWRCYW5kUmVjdFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuYyxpPXQueDEsYT10LnkxLHM9dC54MixyPXQueTIsbz10LnR5cGUsbj10aGlzLncsbD1uZXcgbSh0aGlzLmN0eCksaD1uLmdsb2JhbHMuYmFyUGFkRm9yTnVtZXJpY0F4aXM7aWYoXCJjb2x1bW5cIiE9PW98fFwiZGF0ZXRpbWVcIiE9PW4uY29uZmlnLnhheGlzLnR5cGUpe3ZhciBjPW4uY29uZmlnLmdyaWRbb10uY29sb3JzW2VdLGQ9bC5kcmF3UmVjdChpLShcInJvd1wiPT09bz9oOjApLGEscysoXCJyb3dcIj09PW8/MipoOjApLHIsMCxjLG4uY29uZmlnLmdyaWRbb10ub3BhY2l0eSk7dGhpcy5lbGcuYWRkKGQpLGQuYXR0cihcImNsaXAtcGF0aFwiLFwidXJsKCNncmlkUmVjdE1hc2tcIi5jb25jYXQobi5nbG9iYWxzLmN1aWQsXCIpXCIpKSxkLm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtZ3JpZC1cIi5jb25jYXQobykpfX19LHtrZXk6XCJfZHJhd1hZTGluZXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dC54Q291bnQsYT10LnRpY2tBbW91bnQscz10aGlzLnc7aWYocy5jb25maWcuZ3JpZC54YXhpcy5saW5lcy5zaG93fHxzLmNvbmZpZy54YXhpcy5heGlzVGlja3Muc2hvdyl7dmFyIHIsbz1zLmdsb2JhbHMucGFkSG9yaXpvbnRhbCxuPXMuZ2xvYmFscy5ncmlkSGVpZ2h0O3MuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHMubGVuZ3RoP2Z1bmN0aW9uKHQpe2Zvcih2YXIgYT10LnhDLHM9dC54MSxyPXQueTEsbz10LngyLG49dC55MixsPTA7bDxhO2wrKylzPWUueGF4aXNMYWJlbHNbbF0ucG9zaXRpb24sbz1lLnhheGlzTGFiZWxzW2xdLnBvc2l0aW9uLGUuX2RyYXdHcmlkTGluZXMoe2k6bCx4MTpzLHkxOnIseDI6byx5MjpuLHhDb3VudDppLHBhcmVudDplLmVsZ3JpZExpbmVzVn0pfSh7eEM6aSx4MTpvLHkxOjAseDI6cix5MjpufSk6KHMuZ2xvYmFscy5pc1hOdW1lcmljJiYoaT1zLmdsb2JhbHMueEF4aXNTY2FsZS5yZXN1bHQubGVuZ3RoKSxmdW5jdGlvbih0KXtmb3IodmFyIGE9dC54QyxyPXQueDEsbz10LnkxLG49dC54MixsPXQueTIsaD0wO2g8YSsocy5nbG9iYWxzLmlzWE51bWVyaWM/MDoxKTtoKyspMD09PWgmJjE9PT1hJiYxPT09cy5nbG9iYWxzLmRhdGFQb2ludHMmJihuPXI9cy5nbG9iYWxzLmdyaWRXaWR0aC8yKSxlLl9kcmF3R3JpZExpbmVzKHtpOmgseDE6cix5MTpvLHgyOm4seTI6bCx4Q291bnQ6aSxwYXJlbnQ6ZS5lbGdyaWRMaW5lc1Z9KSxuPXIrPXMuZ2xvYmFscy5ncmlkV2lkdGgvKHMuZ2xvYmFscy5pc1hOdW1lcmljP2EtMTphKX0oe3hDOmkseDE6byx5MTowLHgyOnIseTI6bn0pKX1pZihzLmNvbmZpZy5ncmlkLnlheGlzLmxpbmVzLnNob3cpe3ZhciBsPTAsaD0wLGM9cy5nbG9iYWxzLmdyaWRXaWR0aCxkPWErMTt0aGlzLmlzUmFuZ2VCYXImJihkPXMuZ2xvYmFscy5sYWJlbHMubGVuZ3RoKTtmb3IodmFyIGc9MDtnPGQrKHRoaXMuaXNSYW5nZUJhcj8xOjApO2crKyl0aGlzLl9kcmF3R3JpZExpbmUoe2k6Zyx4Q291bnQ6ZCsodGhpcy5pc1JhbmdlQmFyPzE6MCkseDE6MCx5MTpsLHgyOmMseTI6aCxwYXJlbnQ6dGhpcy5lbGdyaWRMaW5lc0h9KSxoPWwrPXMuZ2xvYmFscy5ncmlkSGVpZ2h0Lyh0aGlzLmlzUmFuZ2VCYXI/ZDphKX19fSx7a2V5OlwiX2RyYXdJbnZlcnRlZFhZTGluZXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LnhDb3VudCxpPXRoaXMudztpZihpLmNvbmZpZy5ncmlkLnhheGlzLmxpbmVzLnNob3d8fGkuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5zaG93KWZvcih2YXIgYSxzPWkuZ2xvYmFscy5wYWRIb3Jpem9udGFsLHI9aS5nbG9iYWxzLmdyaWRIZWlnaHQsbz0wO288ZSsxO28rKyl7aS5jb25maWcuZ3JpZC54YXhpcy5saW5lcy5zaG93JiZ0aGlzLl9kcmF3R3JpZExpbmUoe2k6byx4Q291bnQ6ZSsxLHgxOnMseTE6MCx4MjphLHkyOnIscGFyZW50OnRoaXMuZWxncmlkTGluZXNWfSksbmV3IFYodGhpcy5jdHgpLmRyYXdYYXhpc1RpY2tzKHMsMCxpLmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsKSxhPXM9cytpLmdsb2JhbHMuZ3JpZFdpZHRoL2UrLjN9aWYoaS5jb25maWcuZ3JpZC55YXhpcy5saW5lcy5zaG93KWZvcih2YXIgbj0wLGw9MCxoPWkuZ2xvYmFscy5ncmlkV2lkdGgsYz0wO2M8aS5nbG9iYWxzLmRhdGFQb2ludHMrMTtjKyspdGhpcy5fZHJhd0dyaWRMaW5lKHtpOmMseENvdW50OmkuZ2xvYmFscy5kYXRhUG9pbnRzKzEseDE6MCx5MTpuLHgyOmgseTI6bCxwYXJlbnQ6dGhpcy5lbGdyaWRMaW5lc0h9KSxsPW4rPWkuZ2xvYmFscy5ncmlkSGVpZ2h0L2kuZ2xvYmFscy5kYXRhUG9pbnRzfX0se2tleTpcInJlbmRlckdyaWRcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPW5ldyBtKHRoaXMuY3R4KTt0aGlzLmVsZz1lLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZ3JpZFwifSksdGhpcy5lbGdyaWRMaW5lc0g9ZS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWdyaWRsaW5lcy1ob3Jpem9udGFsXCJ9KSx0aGlzLmVsZ3JpZExpbmVzVj1lLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZ3JpZGxpbmVzLXZlcnRpY2FsXCJ9KSx0aGlzLmVsR3JpZEJvcmRlcnM9ZS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWdyaWQtYm9yZGVyc1wifSksdGhpcy5lbGcuYWRkKHRoaXMuZWxncmlkTGluZXNIKSx0aGlzLmVsZy5hZGQodGhpcy5lbGdyaWRMaW5lc1YpLHQuY29uZmlnLmdyaWQuc2hvd3x8KHRoaXMuZWxncmlkTGluZXNWLmhpZGUoKSx0aGlzLmVsZ3JpZExpbmVzSC5oaWRlKCksdGhpcy5lbEdyaWRCb3JkZXJzLmhpZGUoKSk7Zm9yKHZhciBpLGE9dC5nbG9iYWxzLnlBeGlzU2NhbGUubGVuZ3RoP3QuZ2xvYmFscy55QXhpc1NjYWxlWzBdLnJlc3VsdC5sZW5ndGgtMTo1LHM9MDtzPHQuZ2xvYmFscy5zZXJpZXMubGVuZ3RoJiYodm9pZCAwIT09dC5nbG9iYWxzLnlBeGlzU2NhbGVbc10mJihhPXQuZ2xvYmFscy55QXhpc1NjYWxlW3NdLnJlc3VsdC5sZW5ndGgtMSksIShhPjIpKTtzKyspO3JldHVybiF0Lmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsfHx0aGlzLmlzUmFuZ2VCYXI/KGk9dGhpcy54YXhpc0xhYmVscy5sZW5ndGgsdGhpcy5pc1JhbmdlQmFyJiYoaS0tLGE9dC5nbG9iYWxzLmxhYmVscy5sZW5ndGgsdC5jb25maWcueGF4aXMudGlja0Ftb3VudCYmdC5jb25maWcueGF4aXMubGFiZWxzLmZvcm1hdHRlciYmKGk9dC5jb25maWcueGF4aXMudGlja0Ftb3VudCkpLHRoaXMuX2RyYXdYWUxpbmVzKHt4Q291bnQ6aSx0aWNrQW1vdW50OmF9KSk6KGk9YSxhPXQuZ2xvYmFscy54VGlja0Ftb3VudCx0aGlzLl9kcmF3SW52ZXJ0ZWRYWUxpbmVzKHt4Q291bnQ6aSx0aWNrQW1vdW50OmF9KSksdGhpcy5kcmF3R3JpZEJhbmRzKGksYSkse2VsOnRoaXMuZWxnLGVsR3JpZEJvcmRlcnM6dGhpcy5lbEdyaWRCb3JkZXJzLHhBeGlzVGlja1dpZHRoOnQuZ2xvYmFscy5ncmlkV2lkdGgvaX19fSx7a2V5OlwiZHJhd0dyaWRCYW5kc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O2lmKHZvaWQgMCE9PWkuY29uZmlnLmdyaWQucm93LmNvbG9ycyYmaS5jb25maWcuZ3JpZC5yb3cuY29sb3JzLmxlbmd0aD4wKWZvcih2YXIgYT0wLHM9aS5nbG9iYWxzLmdyaWRIZWlnaHQvZSxyPWkuZ2xvYmFscy5ncmlkV2lkdGgsbz0wLG49MDtvPGU7bysrLG4rKyluPj1pLmNvbmZpZy5ncmlkLnJvdy5jb2xvcnMubGVuZ3RoJiYobj0wKSx0aGlzLl9kcmF3R3JpZEJhbmRSZWN0KHtjOm4seDE6MCx5MTphLHgyOnIseTI6cyx0eXBlOlwicm93XCJ9KSxhKz1pLmdsb2JhbHMuZ3JpZEhlaWdodC9lO2lmKHZvaWQgMCE9PWkuY29uZmlnLmdyaWQuY29sdW1uLmNvbG9ycyYmaS5jb25maWcuZ3JpZC5jb2x1bW4uY29sb3JzLmxlbmd0aD4wKWZvcih2YXIgbD1pLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsfHxcImNhdGVnb3J5XCIhPT1pLmNvbmZpZy54YXhpcy50eXBlJiYhaS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljP3Q6dC0xLGg9aS5nbG9iYWxzLnBhZEhvcml6b250YWwsYz1pLmdsb2JhbHMucGFkSG9yaXpvbnRhbCtpLmdsb2JhbHMuZ3JpZFdpZHRoL2wsZD1pLmdsb2JhbHMuZ3JpZEhlaWdodCxnPTAsdT0wO2c8dDtnKyssdSsrKXU+PWkuY29uZmlnLmdyaWQuY29sdW1uLmNvbG9ycy5sZW5ndGgmJih1PTApLHRoaXMuX2RyYXdHcmlkQmFuZFJlY3Qoe2M6dSx4MTpoLHkxOjAseDI6Yyx5MjpkLHR5cGU6XCJjb2x1bW5cIn0pLGgrPWkuZ2xvYmFscy5ncmlkV2lkdGgvbH19XSksdH0oKSxfPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJuaWNlU2NhbGVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXToxMCxhPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTowLHM9YXJndW1lbnRzLmxlbmd0aD40P2FyZ3VtZW50c1s0XTp2b2lkIDAscj10aGlzLncsbz1NYXRoLmFicyhlLXQpO2lmKFwiZGF0YVBvaW50c1wiPT09KGk9dGhpcy5fYWRqdXN0VGlja3NGb3JTbWFsbFJhbmdlKGksYSxvKSkmJihpPXIuZ2xvYmFscy5kYXRhUG9pbnRzLTEpLHQ9PT1OdW1iZXIuTUlOX1ZBTFVFJiYwPT09ZXx8IXguaXNOdW1iZXIodCkmJiF4LmlzTnVtYmVyKGUpfHx0PT09TnVtYmVyLk1JTl9WQUxVRSYmZT09PS1OdW1iZXIuTUFYX1ZBTFVFKXJldHVybiB0PTAsZT1pLHRoaXMubGluZWFyU2NhbGUodCxlLGkpO3Q+ZT8oY29uc29sZS53YXJuKFwiYXhpcy5taW4gY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiBheGlzLm1heFwiKSxlPXQrLjEpOnQ9PT1lJiYodD0wPT09dD8wOnQtLjUsZT0wPT09ZT8yOmUrLjUpO3ZhciBuPVtdO288MSYmcyYmKFwiY2FuZGxlc3RpY2tcIj09PXIuY29uZmlnLmNoYXJ0LnR5cGV8fFwiY2FuZGxlc3RpY2tcIj09PXIuY29uZmlnLnNlcmllc1thXS50eXBlfHxcImJveFBsb3RcIj09PXIuY29uZmlnLmNoYXJ0LnR5cGV8fFwiYm94UGxvdFwiPT09ci5jb25maWcuc2VyaWVzW2FdLnR5cGV8fHIuZ2xvYmFscy5pc1JhbmdlRGF0YSkmJihlKj0xLjAxKTt2YXIgbD1pKzE7bDwyP2w9MjpsPjImJihsLT0yKTt2YXIgaD1vL2wsYz1NYXRoLmZsb29yKHgubG9nMTAoaCkpLGQ9TWF0aC5wb3coMTAsYyksZz1NYXRoLnJvdW5kKGgvZCk7ZzwxJiYoZz0xKTt2YXIgdT1nKmQscD11Kk1hdGguZmxvb3IodC91KSxmPXUqTWF0aC5jZWlsKGUvdSksYj1wO2lmKHMmJm8+Mil7Zm9yKDtuLnB1c2goYiksISgoYis9dSk+Zik7KTtyZXR1cm57cmVzdWx0Om4sbmljZU1pbjpuWzBdLG5pY2VNYXg6bltuLmxlbmd0aC0xXX19dmFyIHY9dDsobj1bXSkucHVzaCh2KTtmb3IodmFyIG09TWF0aC5hYnMoZS10KS9pLHk9MDt5PD1pO3krKyl2Kz1tLG4ucHVzaCh2KTtyZXR1cm4gbltuLmxlbmd0aC0yXT49ZSYmbi5wb3AoKSx7cmVzdWx0Om4sbmljZU1pbjpuWzBdLG5pY2VNYXg6bltuLmxlbmd0aC0xXX19fSx7a2V5OlwibGluZWFyU2NhbGVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXToxMCxhPWFyZ3VtZW50cy5sZW5ndGg+Mz9hcmd1bWVudHNbM106dm9pZCAwLHM9TWF0aC5hYnMoZS10KTtcImRhdGFQb2ludHNcIj09PShpPXRoaXMuX2FkanVzdFRpY2tzRm9yU21hbGxSYW5nZShpLGEscykpJiYoaT10aGlzLncuZ2xvYmFscy5kYXRhUG9pbnRzLTEpO3ZhciByPXMvaTtpPT09TnVtYmVyLk1BWF9WQUxVRSYmKGk9MTAscj0xKTtmb3IodmFyIG89W10sbj10O2k+PTA7KW8ucHVzaChuKSxuKz1yLGktPTE7cmV0dXJue3Jlc3VsdDpvLG5pY2VNaW46b1swXSxuaWNlTWF4Om9bby5sZW5ndGgtMV19fX0se2tleTpcImxvZ2FyaXRobWljU2NhbGVOaWNlXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe2U8PTAmJihlPU1hdGgubWF4KHQsaSkpLHQ8PTAmJih0PU1hdGgubWluKGUsaSkpO2Zvcih2YXIgYT1bXSxzPU1hdGguY2VpbChNYXRoLmxvZyhlKS9NYXRoLmxvZyhpKSsxKSxyPU1hdGguZmxvb3IoTWF0aC5sb2codCkvTWF0aC5sb2coaSkpO3I8cztyKyspYS5wdXNoKE1hdGgucG93KGkscikpO3JldHVybntyZXN1bHQ6YSxuaWNlTWluOmFbMF0sbmljZU1heDphW2EubGVuZ3RoLTFdfX19LHtrZXk6XCJsb2dhcml0aG1pY1NjYWxlXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe2U8PTAmJihlPU1hdGgubWF4KHQsaSkpLHQ8PTAmJih0PU1hdGgubWluKGUsaSkpO2Zvcih2YXIgYT1bXSxzPU1hdGgubG9nKGUpL01hdGgubG9nKGkpLHI9TWF0aC5sb2codCkvTWF0aC5sb2coaSksbz1zLXIsbj1NYXRoLnJvdW5kKG8pLGw9by9uLGg9MCxjPXI7aDxuO2grKyxjKz1sKWEucHVzaChNYXRoLnBvdyhpLGMpKTtyZXR1cm4gYS5wdXNoKE1hdGgucG93KGkscykpLHtyZXN1bHQ6YSxuaWNlTWluOnQsbmljZU1heDplfX19LHtrZXk6XCJfYWRqdXN0VGlja3NGb3JTbWFsbFJhbmdlXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXQ7aWYodm9pZCAwIT09ZSYmdGhpcy53LmNvbmZpZy55YXhpc1tlXS5sYWJlbHMuZm9ybWF0dGVyJiZ2b2lkIDA9PT10aGlzLncuY29uZmlnLnlheGlzW2VdLnRpY2tBbW91bnQpe3ZhciBzPU51bWJlcih0aGlzLncuY29uZmlnLnlheGlzW2VdLmxhYmVscy5mb3JtYXR0ZXIoMSkpO3guaXNOdW1iZXIocykmJjA9PT10aGlzLncuZ2xvYmFscy55VmFsdWVEZWNpbWFsJiYoYT1NYXRoLmNlaWwoaSkpfXJldHVybiBhPHQ/YTp0fX0se2tleTpcInNldFlTY2FsZUZvckluZGV4XCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMudy5nbG9iYWxzLHM9dGhpcy53LmNvbmZpZyxyPWEuaXNCYXJIb3Jpem9udGFsP3MueGF4aXM6cy55YXhpc1t0XTt2b2lkIDA9PT1hLnlBeGlzU2NhbGVbdF0mJihhLnlBeGlzU2NhbGVbdF09W10pO3ZhciBvPU1hdGguYWJzKGktZSk7aWYoci5sb2dhcml0aG1pYyYmbzw9NSYmKGEuaW52YWxpZExvZ1NjYWxlPSEwKSxyLmxvZ2FyaXRobWljJiZvPjUpYS5hbGxTZXJpZXNDb2xsYXBzZWQ9ITEsYS55QXhpc1NjYWxlW3RdPXRoaXMubG9nYXJpdGhtaWNTY2FsZShlLGksci5sb2dCYXNlKSxhLnlBeGlzU2NhbGVbdF09ci5mb3JjZU5pY2VTY2FsZT90aGlzLmxvZ2FyaXRobWljU2NhbGVOaWNlKGUsaSxyLmxvZ0Jhc2UpOnRoaXMubG9nYXJpdGhtaWNTY2FsZShlLGksci5sb2dCYXNlKTtlbHNlIGlmKGkhPT0tTnVtYmVyLk1BWF9WQUxVRSYmeC5pc051bWJlcihpKSlpZihhLmFsbFNlcmllc0NvbGxhcHNlZD0hMSx2b2lkIDA9PT1yLm1pbiYmdm9pZCAwPT09ci5tYXh8fHIuZm9yY2VOaWNlU2NhbGUpe3ZhciBuPXZvaWQgMD09PXMueWF4aXNbdF0ubWF4JiZ2b2lkIDA9PT1zLnlheGlzW3RdLm1pbnx8cy55YXhpc1t0XS5mb3JjZU5pY2VTY2FsZTthLnlBeGlzU2NhbGVbdF09dGhpcy5uaWNlU2NhbGUoZSxpLHIudGlja0Ftb3VudD9yLnRpY2tBbW91bnQ6bzw1JiZvPjE/bysxOjUsdCxuKX1lbHNlIGEueUF4aXNTY2FsZVt0XT10aGlzLmxpbmVhclNjYWxlKGUsaSxyLnRpY2tBbW91bnQsdCk7ZWxzZSBhLnlBeGlzU2NhbGVbdF09dGhpcy5saW5lYXJTY2FsZSgwLDUsNSl9fSx7a2V5Olwic2V0WFNjYWxlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT1pLmdsb2JhbHMscz1pLmNvbmZpZy54YXhpcyxyPU1hdGguYWJzKGUtdCk7cmV0dXJuIGUhPT0tTnVtYmVyLk1BWF9WQUxVRSYmeC5pc051bWJlcihlKT9hLnhBeGlzU2NhbGU9dGhpcy5saW5lYXJTY2FsZSh0LGUscy50aWNrQW1vdW50P3MudGlja0Ftb3VudDpyPDUmJnI+MT9yKzE6NSwwKTphLnhBeGlzU2NhbGU9dGhpcy5saW5lYXJTY2FsZSgwLDUsNSksYS54QXhpc1NjYWxlfX0se2tleTpcInNldE11bHRpcGxlWVNjYWxlc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudy5nbG9iYWxzLGk9dGhpcy53LmNvbmZpZyxhPWUubWluWUFyci5jb25jYXQoW10pLHM9ZS5tYXhZQXJyLmNvbmNhdChbXSkscj1bXTtpLnlheGlzLmZvckVhY2goKGZ1bmN0aW9uKGUsbyl7dmFyIG49bztpLnNlcmllcy5mb3JFYWNoKChmdW5jdGlvbih0LGkpe3QubmFtZT09PWUuc2VyaWVzTmFtZSYmKG49aSxvIT09aT9yLnB1c2goe2luZGV4Omksc2ltaWxhckluZGV4Om8sYWxyZWFkeUV4aXN0czohMH0pOnIucHVzaCh7aW5kZXg6aX0pKX0pKTt2YXIgbD1hW25dLGg9c1tuXTt0LnNldFlTY2FsZUZvckluZGV4KG8sbCxoKX0pKSx0aGlzLnNhbWVTY2FsZUluTXVsdGlwbGVBeGVzKGEscyxyKX19LHtrZXk6XCJzYW1lU2NhbGVJbk11bHRpcGxlQXhlc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLHM9dGhpcy53LmNvbmZpZyxyPXRoaXMudy5nbG9iYWxzLG89W107aS5mb3JFYWNoKChmdW5jdGlvbih0KXt0LmFscmVhZHlFeGlzdHMmJih2b2lkIDA9PT1vW3QuaW5kZXhdJiYob1t0LmluZGV4XT1bXSksb1t0LmluZGV4XS5wdXNoKHQuaW5kZXgpLG9bdC5pbmRleF0ucHVzaCh0LnNpbWlsYXJJbmRleCkpfSkpLHIueUF4aXNTYW1lU2NhbGVJbmRpY2VzPW8sby5mb3JFYWNoKChmdW5jdGlvbih0LGUpe28uZm9yRWFjaCgoZnVuY3Rpb24oaSxhKXt2YXIgcyxyO2UhPT1hJiYocz10LHI9aSxzLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuLTEhPT1yLmluZGV4T2YodCl9KSkpLmxlbmd0aD4wJiYob1tlXT1vW2VdLmNvbmNhdChvW2FdKSl9KSl9KSk7dmFyIG49by5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmZpbHRlcigoZnVuY3Rpb24oZSxpKXtyZXR1cm4gdC5pbmRleE9mKGUpPT09aX0pKX0pKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnNvcnQoKX0pKTtvPW8uZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4hIXR9KSk7dmFyIGw9bi5zbGljZSgpLGg9bC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBKU09OLnN0cmluZ2lmeSh0KX0pKTtsPWwuZmlsdGVyKChmdW5jdGlvbih0LGUpe3JldHVybiBoLmluZGV4T2YoSlNPTi5zdHJpbmdpZnkodCkpPT09ZX0pKTt2YXIgYz1bXSxkPVtdO3QuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXtsLmZvckVhY2goKGZ1bmN0aW9uKGEscyl7YS5pbmRleE9mKGkpPi0xJiYodm9pZCAwPT09Y1tzXSYmKGNbc109W10sZFtzXT1bXSksY1tzXS5wdXNoKHtrZXk6aSx2YWx1ZTp0fSksZFtzXS5wdXNoKHtrZXk6aSx2YWx1ZTplW2ldfSkpfSkpfSkpO3ZhciBnPUFycmF5LmFwcGx5KG51bGwsQXJyYXkobC5sZW5ndGgpKS5tYXAoTnVtYmVyLnByb3RvdHlwZS52YWx1ZU9mLE51bWJlci5NSU5fVkFMVUUpLHU9QXJyYXkuYXBwbHkobnVsbCxBcnJheShsLmxlbmd0aCkpLm1hcChOdW1iZXIucHJvdG90eXBlLnZhbHVlT2YsLU51bWJlci5NQVhfVkFMVUUpO2MuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0LmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7Z1tlXT1NYXRoLm1pbih0LnZhbHVlLGdbZV0pfSkpfSkpLGQuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0LmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7dVtlXT1NYXRoLm1heCh0LnZhbHVlLHVbZV0pfSkpfSkpLHQuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXtkLmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7dmFyIG89Z1tpXSxuPXVbaV07cy5jaGFydC5zdGFja2VkJiYobj0wLHQuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0LnZhbHVlIT09LU51bWJlci5NQVhfVkFMVUUmJihuKz10LnZhbHVlKSxvIT09TnVtYmVyLk1JTl9WQUxVRSYmKG8rPWNbaV1bZV0udmFsdWUpfSkpKSx0LmZvckVhY2goKGZ1bmN0aW9uKGksbCl7dFtsXS5rZXk9PT1lJiYodm9pZCAwIT09cy55YXhpc1tlXS5taW4mJihvPVwiZnVuY3Rpb25cIj09dHlwZW9mIHMueWF4aXNbZV0ubWluP3MueWF4aXNbZV0ubWluKHIubWluWSk6cy55YXhpc1tlXS5taW4pLHZvaWQgMCE9PXMueWF4aXNbZV0ubWF4JiYobj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBzLnlheGlzW2VdLm1heD9zLnlheGlzW2VdLm1heChyLm1heFkpOnMueWF4aXNbZV0ubWF4KSxhLnNldFlTY2FsZUZvckluZGV4KGUsbyxuKSl9KSl9KSl9KSl9fSx7a2V5OlwiYXV0b1NjYWxlWVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt0fHwodD10aGlzKTt2YXIgYT10Lnc7aWYoYS5nbG9iYWxzLmlzTXVsdGlwbGVZQXhpc3x8YS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5sZW5ndGgpcmV0dXJuIGNvbnNvbGUud2FybihcImF1dG9TY2FsZVlheGlzIGlzIG5vdCBzdXBwb3J0ZWQgaW4gYSBtdWx0aS15YXhpcyBjaGFydC5cIiksZTt2YXIgcz1hLmdsb2JhbHMuc2VyaWVzWFswXSxyPWEuY29uZmlnLmNoYXJ0LnN0YWNrZWQ7cmV0dXJuIGUuZm9yRWFjaCgoZnVuY3Rpb24odCxvKXtmb3IodmFyIG49MCxsPTA7bDxzLmxlbmd0aDtsKyspaWYoc1tsXT49aS54YXhpcy5taW4pe249bDticmVha312YXIgaCxjLGQ9YS5nbG9iYWxzLm1pbllBcnJbb10sZz1hLmdsb2JhbHMubWF4WUFycltvXSx1PWEuZ2xvYmFscy5zdGFja2VkU2VyaWVzVG90YWxzO2EuZ2xvYmFscy5zZXJpZXMuZm9yRWFjaCgoZnVuY3Rpb24obyxsKXt2YXIgcD1vW25dO3I/KHA9dVtuXSxoPWM9cCx1LmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7c1tlXTw9aS54YXhpcy5tYXgmJnNbZV0+PWkueGF4aXMubWluJiYodD5jJiZudWxsIT09dCYmKGM9dCksb1tlXTxoJiZudWxsIT09b1tlXSYmKGg9b1tlXSkpfSkpKTooaD1jPXAsby5mb3JFYWNoKChmdW5jdGlvbih0LGUpe2lmKHNbZV08PWkueGF4aXMubWF4JiZzW2VdPj1pLnhheGlzLm1pbil7dmFyIHI9dCxvPXQ7YS5nbG9iYWxzLnNlcmllcy5mb3JFYWNoKChmdW5jdGlvbihpLGEpe251bGwhPT10JiYocj1NYXRoLm1pbihpW2VdLHIpLG89TWF0aC5tYXgoaVtlXSxvKSl9KSksbz5jJiZudWxsIT09byYmKGM9bykscjxoJiZudWxsIT09ciYmKGg9cil9fSkpKSx2b2lkIDA9PT1oJiZ2b2lkIDA9PT1jJiYoaD1kLGM9ZyksYyo9YzwwPy45OjEuMSwwPT09KGgqPWg8MD8xLjE6LjkpJiYwPT09YyYmKGg9LTEsYz0xKSxjPDAmJmM8ZyYmKGM9ZyksaDwwJiZoPmQmJihoPWQpLGUubGVuZ3RoPjE/KGVbbF0ubWluPXZvaWQgMD09PXQubWluP2g6dC5taW4sZVtsXS5tYXg9dm9pZCAwPT09dC5tYXg/Yzp0Lm1heCk6KGVbMF0ubWluPXZvaWQgMD09PXQubWluP2g6dC5taW4sZVswXS5tYXg9dm9pZCAwPT09dC5tYXg/Yzp0Lm1heCl9KSl9KSksZX19XSksdH0oKSxVPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMuc2NhbGVzPW5ldyBfKGUpfXJldHVybiByKHQsW3trZXk6XCJpbml0XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnNldFlSYW5nZSgpLHRoaXMuc2V0WFJhbmdlKCksdGhpcy5zZXRaUmFuZ2UoKX19LHtrZXk6XCJnZXRNaW5ZTWF4WVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpOdW1iZXIuTUFYX1ZBTFVFLGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOi1OdW1iZXIuTUFYX1ZBTFVFLGE9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOm51bGwscz10aGlzLncuY29uZmlnLHI9dGhpcy53Lmdsb2JhbHMsbz0tTnVtYmVyLk1BWF9WQUxVRSxuPU51bWJlci5NSU5fVkFMVUU7bnVsbD09PWEmJihhPXQrMSk7dmFyIGw9ci5zZXJpZXMsaD1sLGM9bDtcImNhbmRsZXN0aWNrXCI9PT1zLmNoYXJ0LnR5cGU/KGg9ci5zZXJpZXNDYW5kbGVMLGM9ci5zZXJpZXNDYW5kbGVIKTpcImJveFBsb3RcIj09PXMuY2hhcnQudHlwZT8oaD1yLnNlcmllc0NhbmRsZU8sYz1yLnNlcmllc0NhbmRsZUMpOnIuaXNSYW5nZURhdGEmJihoPXIuc2VyaWVzUmFuZ2VTdGFydCxjPXIuc2VyaWVzUmFuZ2VFbmQpO2Zvcih2YXIgZD10O2Q8YTtkKyspe3IuZGF0YVBvaW50cz1NYXRoLm1heChyLmRhdGFQb2ludHMsbFtkXS5sZW5ndGgpLHIuY2F0ZWdvcnlMYWJlbHMubGVuZ3RoJiYoci5kYXRhUG9pbnRzPXIuY2F0ZWdvcnlMYWJlbHMuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwIT09dH0pKS5sZW5ndGgpO2Zvcih2YXIgZz0wO2c8ci5zZXJpZXNbZF0ubGVuZ3RoO2crKyl7dmFyIHU9bFtkXVtnXTtudWxsIT09dSYmeC5pc051bWJlcih1KT8odm9pZCAwIT09Y1tkXVtnXSYmKG89TWF0aC5tYXgobyxjW2RdW2ddKSxlPU1hdGgubWluKGUsY1tkXVtnXSkpLHZvaWQgMCE9PWhbZF1bZ10mJihlPU1hdGgubWluKGUsaFtkXVtnXSksaT1NYXRoLm1heChpLGhbZF1bZ10pKSxcImNhbmRsZXN0aWNrXCIhPT10aGlzLncuY29uZmlnLmNoYXJ0LnR5cGUmJlwiYm94UGxvdFwiIT09dGhpcy53LmNvbmZpZy5jaGFydC50eXBlJiZcInJhbmdlQXJlYVwiPT09dGhpcy53LmNvbmZpZy5jaGFydC50eXBlJiZcInJhbmdlQmFyXCI9PT10aGlzLncuY29uZmlnLmNoYXJ0LnR5cGV8fChcImNhbmRsZXN0aWNrXCIhPT10aGlzLncuY29uZmlnLmNoYXJ0LnR5cGUmJlwiYm94UGxvdFwiIT09dGhpcy53LmNvbmZpZy5jaGFydC50eXBlfHx2b2lkIDAhPT1yLnNlcmllc0NhbmRsZUNbZF1bZ10mJihvPU1hdGgubWF4KG8sci5zZXJpZXNDYW5kbGVPW2RdW2ddKSxvPU1hdGgubWF4KG8sci5zZXJpZXNDYW5kbGVIW2RdW2ddKSxvPU1hdGgubWF4KG8sci5zZXJpZXNDYW5kbGVMW2RdW2ddKSxvPU1hdGgubWF4KG8sci5zZXJpZXNDYW5kbGVDW2RdW2ddKSxcImJveFBsb3RcIj09PXRoaXMudy5jb25maWcuY2hhcnQudHlwZSYmKG89TWF0aC5tYXgobyxyLnNlcmllc0NhbmRsZU1bZF1bZ10pKSksIXMuc2VyaWVzW2RdLnR5cGV8fFwiY2FuZGxlc3RpY2tcIj09PXMuc2VyaWVzW2RdLnR5cGUmJlwiYm94UGxvdFwiPT09cy5zZXJpZXNbZF0udHlwZSYmXCJyYW5nZUFyZWFcIj09PXMuc2VyaWVzW2RdLnR5cGUmJlwicmFuZ2VCYXJcIj09PXMuc2VyaWVzW2RdLnR5cGV8fChvPU1hdGgubWF4KG8sci5zZXJpZXNbZF1bZ10pLGU9TWF0aC5taW4oZSxyLnNlcmllc1tkXVtnXSkpLGk9byksci5zZXJpZXNHb2Fsc1tkXSYmci5zZXJpZXNHb2Fsc1tkXVtnXSYmQXJyYXkuaXNBcnJheShyLnNlcmllc0dvYWxzW2RdW2ddKSYmci5zZXJpZXNHb2Fsc1tkXVtnXS5mb3JFYWNoKChmdW5jdGlvbih0KXtuIT09TnVtYmVyLk1JTl9WQUxVRSYmKG49TWF0aC5taW4obix0LnZhbHVlKSxlPW4pLG89TWF0aC5tYXgobyx0LnZhbHVlKSxpPW99KSkseC5pc0Zsb2F0KHUpJiYodT14Lm5vRXhwb25lbnRzKHUpLHIueVZhbHVlRGVjaW1hbD1NYXRoLm1heChyLnlWYWx1ZURlY2ltYWwsdS50b1N0cmluZygpLnNwbGl0KFwiLlwiKVsxXS5sZW5ndGgpKSxuPmhbZF1bZ10mJmhbZF1bZ108MCYmKG49aFtkXVtnXSkpOnIuaGFzTnVsbFZhbHVlcz0hMH19cmV0dXJuXCJyYW5nZUJhclwiPT09cy5jaGFydC50eXBlJiZyLnNlcmllc1JhbmdlU3RhcnQubGVuZ3RoJiZyLmlzQmFySG9yaXpvbnRhbCYmKG49ZSksXCJiYXJcIj09PXMuY2hhcnQudHlwZSYmKG48MCYmbzwwJiYobz0wKSxuPT09TnVtYmVyLk1JTl9WQUxVRSYmKG49MCkpLHttaW5ZOm4sbWF4WTpvLGxvd2VzdFk6ZSxoaWdoZXN0WTppfX19LHtrZXk6XCJzZXRZUmFuZ2VcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5nbG9iYWxzLGU9dGhpcy53LmNvbmZpZzt0Lm1heFk9LU51bWJlci5NQVhfVkFMVUUsdC5taW5ZPU51bWJlci5NSU5fVkFMVUU7dmFyIGk9TnVtYmVyLk1BWF9WQUxVRTtpZih0LmlzTXVsdGlwbGVZQXhpcylmb3IodmFyIGE9MDthPHQuc2VyaWVzLmxlbmd0aDthKyspe3ZhciBzPXRoaXMuZ2V0TWluWU1heFkoYSxpLG51bGwsYSsxKTt0Lm1pbllBcnIucHVzaChzLm1pblkpLHQubWF4WUFyci5wdXNoKHMubWF4WSksaT1zLmxvd2VzdFl9dmFyIHI9dGhpcy5nZXRNaW5ZTWF4WSgwLGksbnVsbCx0LnNlcmllcy5sZW5ndGgpO2lmKHQubWluWT1yLm1pblksdC5tYXhZPXIubWF4WSxpPXIubG93ZXN0WSxlLmNoYXJ0LnN0YWNrZWQmJnRoaXMuX3NldFN0YWNrZWRNaW5NYXgoKSwoXCJsaW5lXCI9PT1lLmNoYXJ0LnR5cGV8fFwiYXJlYVwiPT09ZS5jaGFydC50eXBlfHxcImNhbmRsZXN0aWNrXCI9PT1lLmNoYXJ0LnR5cGV8fFwiYm94UGxvdFwiPT09ZS5jaGFydC50eXBlfHxcInJhbmdlQmFyXCI9PT1lLmNoYXJ0LnR5cGUmJiF0LmlzQmFySG9yaXpvbnRhbCkmJnQubWluWT09PU51bWJlci5NSU5fVkFMVUUmJmkhPT0tTnVtYmVyLk1BWF9WQUxVRSYmaSE9PXQubWF4WSl7dmFyIG89dC5tYXhZLWk7KGk+PTAmJmk8PTEwfHx2b2lkIDAhPT1lLnlheGlzWzBdLm1pbnx8dm9pZCAwIT09ZS55YXhpc1swXS5tYXgpJiYobz0wKSx0Lm1pblk9aS01Km8vMTAwLGk+MCYmdC5taW5ZPDAmJih0Lm1pblk9MCksdC5tYXhZPXQubWF4WSs1Km8vMTAwfWlmKGUueWF4aXMuZm9yRWFjaCgoZnVuY3Rpb24oZSxpKXt2b2lkIDAhPT1lLm1heCYmKFwibnVtYmVyXCI9PXR5cGVvZiBlLm1heD90Lm1heFlBcnJbaV09ZS5tYXg6XCJmdW5jdGlvblwiPT10eXBlb2YgZS5tYXgmJih0Lm1heFlBcnJbaV09ZS5tYXgodC5pc011bHRpcGxlWUF4aXM/dC5tYXhZQXJyW2ldOnQubWF4WSkpLHQubWF4WT10Lm1heFlBcnJbaV0pLHZvaWQgMCE9PWUubWluJiYoXCJudW1iZXJcIj09dHlwZW9mIGUubWluP3QubWluWUFycltpXT1lLm1pbjpcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLm1pbiYmKHQubWluWUFycltpXT1lLm1pbih0LmlzTXVsdGlwbGVZQXhpcz90Lm1pbllBcnJbaV09PT1OdW1iZXIuTUlOX1ZBTFVFPzA6dC5taW5ZQXJyW2ldOnQubWluWSkpLHQubWluWT10Lm1pbllBcnJbaV0pfSkpLHQuaXNCYXJIb3Jpem9udGFsKXtbXCJtaW5cIixcIm1heFwiXS5mb3JFYWNoKChmdW5jdGlvbihpKXt2b2lkIDAhPT1lLnhheGlzW2ldJiZcIm51bWJlclwiPT10eXBlb2YgZS54YXhpc1tpXSYmKFwibWluXCI9PT1pP3QubWluWT1lLnhheGlzW2ldOnQubWF4WT1lLnhheGlzW2ldKX0pKX1yZXR1cm4gdC5pc011bHRpcGxlWUF4aXM/KHRoaXMuc2NhbGVzLnNldE11bHRpcGxlWVNjYWxlcygpLHQubWluWT1pLHQueUF4aXNTY2FsZS5mb3JFYWNoKChmdW5jdGlvbihlLGkpe3QubWluWUFycltpXT1lLm5pY2VNaW4sdC5tYXhZQXJyW2ldPWUubmljZU1heH0pKSk6KHRoaXMuc2NhbGVzLnNldFlTY2FsZUZvckluZGV4KDAsdC5taW5ZLHQubWF4WSksdC5taW5ZPXQueUF4aXNTY2FsZVswXS5uaWNlTWluLHQubWF4WT10LnlBeGlzU2NhbGVbMF0ubmljZU1heCx0Lm1pbllBcnJbMF09dC55QXhpc1NjYWxlWzBdLm5pY2VNaW4sdC5tYXhZQXJyWzBdPXQueUF4aXNTY2FsZVswXS5uaWNlTWF4KSx7bWluWTp0Lm1pblksbWF4WTp0Lm1heFksbWluWUFycjp0Lm1pbllBcnIsbWF4WUFycjp0Lm1heFlBcnIseUF4aXNTY2FsZTp0LnlBeGlzU2NhbGV9fX0se2tleTpcInNldFhSYW5nZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53Lmdsb2JhbHMsZT10aGlzLncuY29uZmlnLGk9XCJudW1lcmljXCI9PT1lLnhheGlzLnR5cGV8fFwiZGF0ZXRpbWVcIj09PWUueGF4aXMudHlwZXx8XCJjYXRlZ29yeVwiPT09ZS54YXhpcy50eXBlJiYhdC5ub0xhYmVsc1Byb3ZpZGVkfHx0Lm5vTGFiZWxzUHJvdmlkZWR8fHQuaXNYTnVtZXJpYztpZih0LmlzWE51bWVyaWMmJmZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTx0LnNlcmllcy5sZW5ndGg7ZSsrKWlmKHQubGFiZWxzW2VdKWZvcih2YXIgaT0wO2k8dC5sYWJlbHNbZV0ubGVuZ3RoO2krKyludWxsIT09dC5sYWJlbHNbZV1baV0mJnguaXNOdW1iZXIodC5sYWJlbHNbZV1baV0pJiYodC5tYXhYPU1hdGgubWF4KHQubWF4WCx0LmxhYmVsc1tlXVtpXSksdC5pbml0aWFsTWF4WD1NYXRoLm1heCh0Lm1heFgsdC5sYWJlbHNbZV1baV0pLHQubWluWD1NYXRoLm1pbih0Lm1pblgsdC5sYWJlbHNbZV1baV0pLHQuaW5pdGlhbE1pblg9TWF0aC5taW4odC5taW5YLHQubGFiZWxzW2VdW2ldKSl9KCksdC5ub0xhYmVsc1Byb3ZpZGVkJiYwPT09ZS54YXhpcy5jYXRlZ29yaWVzLmxlbmd0aCYmKHQubWF4WD10LmxhYmVsc1t0LmxhYmVscy5sZW5ndGgtMV0sdC5pbml0aWFsTWF4WD10LmxhYmVsc1t0LmxhYmVscy5sZW5ndGgtMV0sdC5taW5YPTEsdC5pbml0aWFsTWluWD0xKSx0LmlzWE51bWVyaWN8fHQubm9MYWJlbHNQcm92aWRlZHx8dC5kYXRhRm9ybWF0WE51bWVyaWMpe3ZhciBhO2lmKHZvaWQgMD09PWUueGF4aXMudGlja0Ftb3VudD8oYT1NYXRoLnJvdW5kKHQuc3ZnV2lkdGgvMTUwKSxcIm51bWVyaWNcIj09PWUueGF4aXMudHlwZSYmdC5kYXRhUG9pbnRzPDMwJiYoYT10LmRhdGFQb2ludHMtMSksYT50LmRhdGFQb2ludHMmJjAhPT10LmRhdGFQb2ludHMmJihhPXQuZGF0YVBvaW50cy0xKSk6XCJkYXRhUG9pbnRzXCI9PT1lLnhheGlzLnRpY2tBbW91bnQ/KHQuc2VyaWVzLmxlbmd0aD4xJiYoYT10LnNlcmllc1t0Lm1heFZhbHNJbkFycmF5SW5kZXhdLmxlbmd0aC0xKSx0LmlzWE51bWVyaWMmJihhPXQubWF4WC10Lm1pblgtMSkpOmE9ZS54YXhpcy50aWNrQW1vdW50LHQueFRpY2tBbW91bnQ9YSx2b2lkIDAhPT1lLnhheGlzLm1heCYmXCJudW1iZXJcIj09dHlwZW9mIGUueGF4aXMubWF4JiYodC5tYXhYPWUueGF4aXMubWF4KSx2b2lkIDAhPT1lLnhheGlzLm1pbiYmXCJudW1iZXJcIj09dHlwZW9mIGUueGF4aXMubWluJiYodC5taW5YPWUueGF4aXMubWluKSx2b2lkIDAhPT1lLnhheGlzLnJhbmdlJiYodC5taW5YPXQubWF4WC1lLnhheGlzLnJhbmdlKSx0Lm1pblghPT1OdW1iZXIuTUFYX1ZBTFVFJiZ0Lm1heFghPT0tTnVtYmVyLk1BWF9WQUxVRSlpZihlLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmIXQuZGF0YUZvcm1hdFhOdW1lcmljKXtmb3IodmFyIHM9W10scj10Lm1pblgtMTtyPHQubWF4WDtyKyspcy5wdXNoKHIrMSk7dC54QXhpc1NjYWxlPXtyZXN1bHQ6cyxuaWNlTWluOnNbMF0sbmljZU1heDpzW3MubGVuZ3RoLTFdfX1lbHNlIHQueEF4aXNTY2FsZT10aGlzLnNjYWxlcy5zZXRYU2NhbGUodC5taW5YLHQubWF4WCk7ZWxzZSB0LnhBeGlzU2NhbGU9dGhpcy5zY2FsZXMubGluZWFyU2NhbGUoMSxhLGEpLHQubm9MYWJlbHNQcm92aWRlZCYmdC5sYWJlbHMubGVuZ3RoPjAmJih0LnhBeGlzU2NhbGU9dGhpcy5zY2FsZXMubGluZWFyU2NhbGUoMSx0LmxhYmVscy5sZW5ndGgsYS0xKSx0LnNlcmllc1g9dC5sYWJlbHMuc2xpY2UoKSk7aSYmKHQubGFiZWxzPXQueEF4aXNTY2FsZS5yZXN1bHQuc2xpY2UoKSl9cmV0dXJuIHQuaXNCYXJIb3Jpem9udGFsJiZ0LmxhYmVscy5sZW5ndGgmJih0LnhUaWNrQW1vdW50PXQubGFiZWxzLmxlbmd0aCksdGhpcy5faGFuZGxlU2luZ2xlRGF0YVBvaW50KCksdGhpcy5fZ2V0TWluWERpZmYoKSx7bWluWDp0Lm1pblgsbWF4WDp0Lm1heFh9fX0se2tleTpcInNldFpSYW5nZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53Lmdsb2JhbHM7aWYodC5pc0RhdGFYWVopZm9yKHZhciBlPTA7ZTx0LnNlcmllcy5sZW5ndGg7ZSsrKWlmKHZvaWQgMCE9PXQuc2VyaWVzWltlXSlmb3IodmFyIGk9MDtpPHQuc2VyaWVzWltlXS5sZW5ndGg7aSsrKW51bGwhPT10LnNlcmllc1pbZV1baV0mJnguaXNOdW1iZXIodC5zZXJpZXNaW2VdW2ldKSYmKHQubWF4Wj1NYXRoLm1heCh0Lm1heFosdC5zZXJpZXNaW2VdW2ldKSx0Lm1pblo9TWF0aC5taW4odC5taW5aLHQuc2VyaWVzWltlXVtpXSkpfX0se2tleTpcIl9oYW5kbGVTaW5nbGVEYXRhUG9pbnRcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5nbG9iYWxzLGU9dGhpcy53LmNvbmZpZztpZih0Lm1pblg9PT10Lm1heFgpe3ZhciBpPW5ldyBJKHRoaXMuY3R4KTtpZihcImRhdGV0aW1lXCI9PT1lLnhheGlzLnR5cGUpe3ZhciBhPWkuZ2V0RGF0ZSh0Lm1pblgpO2UueGF4aXMubGFiZWxzLmRhdGV0aW1lVVRDP2Euc2V0VVRDRGF0ZShhLmdldFVUQ0RhdGUoKS0yKTphLnNldERhdGUoYS5nZXREYXRlKCktMiksdC5taW5YPW5ldyBEYXRlKGEpLmdldFRpbWUoKTt2YXIgcz1pLmdldERhdGUodC5tYXhYKTtlLnhheGlzLmxhYmVscy5kYXRldGltZVVUQz9zLnNldFVUQ0RhdGUocy5nZXRVVENEYXRlKCkrMik6cy5zZXREYXRlKHMuZ2V0RGF0ZSgpKzIpLHQubWF4WD1uZXcgRGF0ZShzKS5nZXRUaW1lKCl9ZWxzZShcIm51bWVyaWNcIj09PWUueGF4aXMudHlwZXx8XCJjYXRlZ29yeVwiPT09ZS54YXhpcy50eXBlJiYhdC5ub0xhYmVsc1Byb3ZpZGVkKSYmKHQubWluWD10Lm1pblgtMix0LmluaXRpYWxNaW5YPXQubWluWCx0Lm1heFg9dC5tYXhYKzIsdC5pbml0aWFsTWF4WD10Lm1heFgpfX19LHtrZXk6XCJfZ2V0TWluWERpZmZcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5nbG9iYWxzO3QuaXNYTnVtZXJpYyYmdC5zZXJpZXNYLmZvckVhY2goKGZ1bmN0aW9uKGUsaSl7MT09PWUubGVuZ3RoJiZlLnB1c2godC5zZXJpZXNYW3QubWF4VmFsc0luQXJyYXlJbmRleF1bdC5zZXJpZXNYW3QubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoLTFdKTt2YXIgYT1lLnNsaWNlKCk7YS5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiB0LWV9KSksYS5mb3JFYWNoKChmdW5jdGlvbihlLGkpe2lmKGk+MCl7dmFyIHM9ZS1hW2ktMV07cz4wJiYodC5taW5YRGlmZj1NYXRoLm1pbihzLHQubWluWERpZmYpKX19KSksMSE9PXQuZGF0YVBvaW50cyYmdC5taW5YRGlmZiE9PU51bWJlci5NQVhfVkFMVUV8fCh0Lm1pblhEaWZmPS41KX0pKX19LHtrZXk6XCJfc2V0U3RhY2tlZE1pbk1heFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudy5nbG9iYWxzO2lmKGUuc2VyaWVzLmxlbmd0aCl7dmFyIGk9ZS5zZXJpZXNHcm91cHM7aS5sZW5ndGh8fChpPVt0aGlzLncuY29uZmlnLnNlcmllcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5hbWV9KSldKTt2YXIgYT17fSxzPXt9O2kuZm9yRWFjaCgoZnVuY3Rpb24oaSl7YVtpXT1bXSxzW2ldPVtdLHQudy5jb25maWcuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gaS5pbmRleE9mKHQubmFtZSk+LTE/ZTpudWxsfSkpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPT10fSkpLmZvckVhY2goKGZ1bmN0aW9uKHQpe2Zvcih2YXIgcj0wO3I8ZS5zZXJpZXNbZS5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGg7cisrKXZvaWQgMD09PWFbaV1bcl0mJihhW2ldW3JdPTAsc1tpXVtyXT0wKSxudWxsIT09ZS5zZXJpZXNbdF1bcl0mJnguaXNOdW1iZXIoZS5zZXJpZXNbdF1bcl0pJiYoZS5zZXJpZXNbdF1bcl0+MD9hW2ldW3JdKz1wYXJzZUZsb2F0KGUuc2VyaWVzW3RdW3JdKSsxZS00OnNbaV1bcl0rPXBhcnNlRmxvYXQoZS5zZXJpZXNbdF1bcl0pKX0pKX0pKSxPYmplY3QuZW50cmllcyhhKS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgaT1nKHQsMSlbMF07YVtpXS5mb3JFYWNoKChmdW5jdGlvbih0LHIpe2UubWF4WT1NYXRoLm1heChlLm1heFksYVtpXVtyXSksZS5taW5ZPU1hdGgubWluKGUubWluWSxzW2ldW3JdKX0pKX0pKX19fV0pLHR9KCkscT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxpKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLmVsZ3JpZD1pLHRoaXMudz1lLnc7dmFyIHM9dGhpcy53O3RoaXMueGF4aXNGb250U2l6ZT1zLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udFNpemUsdGhpcy5heGlzRm9udEZhbWlseT1zLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udEZhbWlseSx0aGlzLnhheGlzRm9yZUNvbG9ycz1zLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuY29sb3JzLHRoaXMuaXNDYXRlZ29yeUJhckhvcml6b250YWw9XCJiYXJcIj09PXMuY29uZmlnLmNoYXJ0LnR5cGUmJnMuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ob3Jpem9udGFsLHRoaXMueEF4aXNvZmZYPTAsXCJib3R0b21cIj09PXMuY29uZmlnLnhheGlzLnBvc2l0aW9uJiYodGhpcy54QXhpc29mZlg9cy5nbG9iYWxzLmdyaWRIZWlnaHQpLHRoaXMuZHJhd25MYWJlbHM9W10sdGhpcy5heGVzVXRpbHM9bmV3IEIoZSl9cmV0dXJuIHIodCxbe2tleTpcImRyYXdZYXhpc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10aGlzLncsYT1uZXcgbSh0aGlzLmN0eCkscz1pLmNvbmZpZy55YXhpc1t0XS5sYWJlbHMuc3R5bGUscj1zLmZvbnRTaXplLG89cy5mb250RmFtaWx5LG49cy5mb250V2VpZ2h0LGw9YS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzXCIscmVsOnQsdHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiK2kuZ2xvYmFscy50cmFuc2xhdGVZQXhpc1hbdF0rXCIsIDApXCJ9KTtpZih0aGlzLmF4ZXNVdGlscy5pc1lBeGlzSGlkZGVuKHQpKXJldHVybiBsO3ZhciBoPWEuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy15YXhpcy10ZXh0cy1nXCJ9KTtsLmFkZChoKTt2YXIgYz1pLmdsb2JhbHMueUF4aXNTY2FsZVt0XS5yZXN1bHQubGVuZ3RoLTEsZD1pLmdsb2JhbHMuZ3JpZEhlaWdodC9jLGc9aS5nbG9iYWxzLnRyYW5zbGF0ZVksdT1pLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1t0XSxwPWkuZ2xvYmFscy55QXhpc1NjYWxlW3RdLnJlc3VsdC5zbGljZSgpO3A9dGhpcy5heGVzVXRpbHMuY2hlY2tGb3JSZXZlcnNlZExhYmVscyh0LHApO3ZhciBmPVwiXCI7aWYoaS5jb25maWcueWF4aXNbdF0ubGFiZWxzLnNob3cpZm9yKHZhciB4PWZ1bmN0aW9uKGwpe3ZhciB4PXBbbF07eD11KHgsbCxpKTt2YXIgYj1pLmNvbmZpZy55YXhpc1t0XS5sYWJlbHMucGFkZGluZztpLmNvbmZpZy55YXhpc1t0XS5vcHBvc2l0ZSYmMCE9PWkuY29uZmlnLnlheGlzLmxlbmd0aCYmKGIqPS0xKTt2YXIgdj1cImVuZFwiO2kuY29uZmlnLnlheGlzW3RdLm9wcG9zaXRlJiYodj1cInN0YXJ0XCIpLFwibGVmdFwiPT09aS5jb25maWcueWF4aXNbdF0ubGFiZWxzLmFsaWduP3Y9XCJzdGFydFwiOlwiY2VudGVyXCI9PT1pLmNvbmZpZy55YXhpc1t0XS5sYWJlbHMuYWxpZ24/dj1cIm1pZGRsZVwiOlwicmlnaHRcIj09PWkuY29uZmlnLnlheGlzW3RdLmxhYmVscy5hbGlnbiYmKHY9XCJlbmRcIik7dmFyIG09ZS5heGVzVXRpbHMuZ2V0WUF4aXNGb3JlQ29sb3Iocy5jb2xvcnMsdCkseT1hLmRyYXdUZXh0KHt4OmIseTpnK2MvMTAraS5jb25maWcueWF4aXNbdF0ubGFiZWxzLm9mZnNldFkrMSx0ZXh0OngsdGV4dEFuY2hvcjp2LGZvbnRTaXplOnIsZm9udEZhbWlseTpvLGZvbnRXZWlnaHQ6bixtYXhXaWR0aDppLmNvbmZpZy55YXhpc1t0XS5sYWJlbHMubWF4V2lkdGgsZm9yZUNvbG9yOkFycmF5LmlzQXJyYXkobSk/bVtsXTptLGlzUGxhaW5UZXh0OiExLGNzc0NsYXNzOlwiYXBleGNoYXJ0cy15YXhpcy1sYWJlbCBcIitzLmNzc0NsYXNzfSk7bD09PWMmJihmPXkpLGguYWRkKHkpO3ZhciB3PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhpLmdsb2JhbHMuU1ZHTlMsXCJ0aXRsZVwiKTtpZih3LnRleHRDb250ZW50PUFycmF5LmlzQXJyYXkoeCk/eC5qb2luKFwiIFwiKTp4LHkubm9kZS5hcHBlbmRDaGlsZCh3KSwwIT09aS5jb25maWcueWF4aXNbdF0ubGFiZWxzLnJvdGF0ZSl7dmFyIGs9YS5yb3RhdGVBcm91bmRDZW50ZXIoZi5ub2RlKSxBPWEucm90YXRlQXJvdW5kQ2VudGVyKHkubm9kZSk7eS5ub2RlLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLFwicm90YXRlKFwiLmNvbmNhdChpLmNvbmZpZy55YXhpc1t0XS5sYWJlbHMucm90YXRlLFwiIFwiKS5jb25jYXQoay54LFwiIFwiKS5jb25jYXQoQS55LFwiKVwiKSl9Zys9ZH0sYj1jO2I+PTA7Yi0tKXgoYik7aWYodm9pZCAwIT09aS5jb25maWcueWF4aXNbdF0udGl0bGUudGV4dCl7dmFyIHY9YS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzLXRpdGxlXCJ9KSx5PTA7aS5jb25maWcueWF4aXNbdF0ub3Bwb3NpdGUmJih5PWkuZ2xvYmFscy50cmFuc2xhdGVZQXhpc1hbdF0pO3ZhciB3PWEuZHJhd1RleHQoe3g6eSx5OmkuZ2xvYmFscy5ncmlkSGVpZ2h0LzIraS5nbG9iYWxzLnRyYW5zbGF0ZVkraS5jb25maWcueWF4aXNbdF0udGl0bGUub2Zmc2V0WSx0ZXh0OmkuY29uZmlnLnlheGlzW3RdLnRpdGxlLnRleHQsdGV4dEFuY2hvcjpcImVuZFwiLGZvcmVDb2xvcjppLmNvbmZpZy55YXhpc1t0XS50aXRsZS5zdHlsZS5jb2xvcixmb250U2l6ZTppLmNvbmZpZy55YXhpc1t0XS50aXRsZS5zdHlsZS5mb250U2l6ZSxmb250V2VpZ2h0OmkuY29uZmlnLnlheGlzW3RdLnRpdGxlLnN0eWxlLmZvbnRXZWlnaHQsZm9udEZhbWlseTppLmNvbmZpZy55YXhpc1t0XS50aXRsZS5zdHlsZS5mb250RmFtaWx5LGNzc0NsYXNzOlwiYXBleGNoYXJ0cy15YXhpcy10aXRsZS10ZXh0IFwiK2kuY29uZmlnLnlheGlzW3RdLnRpdGxlLnN0eWxlLmNzc0NsYXNzfSk7di5hZGQodyksbC5hZGQodil9dmFyIGs9aS5jb25maWcueWF4aXNbdF0uYXhpc0JvcmRlcixBPTMxK2sub2Zmc2V0WDtpZihpLmNvbmZpZy55YXhpc1t0XS5vcHBvc2l0ZSYmKEE9LTMxLWsub2Zmc2V0WCksay5zaG93KXt2YXIgUz1hLmRyYXdMaW5lKEEsaS5nbG9iYWxzLnRyYW5zbGF0ZVkray5vZmZzZXRZLTIsQSxpLmdsb2JhbHMuZ3JpZEhlaWdodCtpLmdsb2JhbHMudHJhbnNsYXRlWStrLm9mZnNldFkrMixrLmNvbG9yLDAsay53aWR0aCk7bC5hZGQoUyl9cmV0dXJuIGkuY29uZmlnLnlheGlzW3RdLmF4aXNUaWNrcy5zaG93JiZ0aGlzLmF4ZXNVdGlscy5kcmF3WUF4aXNUaWNrcyhBLGMsayxpLmNvbmZpZy55YXhpc1t0XS5heGlzVGlja3MsdCxkLGwpLGx9fSx7a2V5OlwiZHJhd1lheGlzSW52ZXJzZWRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1uZXcgbSh0aGlzLmN0eCksYT1pLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteGF4aXMgYXBleGNoYXJ0cy15YXhpcy1pbnZlcnNlZFwifSkscz1pLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteGF4aXMtdGV4dHMtZ1wiLHRyYW5zZm9ybTpcInRyYW5zbGF0ZShcIi5jb25jYXQoZS5nbG9iYWxzLnRyYW5zbGF0ZVhBeGlzWCxcIiwgXCIpLmNvbmNhdChlLmdsb2JhbHMudHJhbnNsYXRlWEF4aXNZLFwiKVwiKX0pO2EuYWRkKHMpO3ZhciByPWUuZ2xvYmFscy55QXhpc1NjYWxlW3RdLnJlc3VsdC5sZW5ndGgtMSxvPWUuZ2xvYmFscy5ncmlkV2lkdGgvcisuMSxuPW8rZS5jb25maWcueGF4aXMubGFiZWxzLm9mZnNldFgsbD1lLmdsb2JhbHMueExhYmVsRm9ybWF0dGVyLGg9ZS5nbG9iYWxzLnlBeGlzU2NhbGVbdF0ucmVzdWx0LnNsaWNlKCksYz1lLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzO2MubGVuZ3RoPjAmJih0aGlzLnhheGlzTGFiZWxzPWMuc2xpY2UoKSxyPShoPWMuc2xpY2UoKSkubGVuZ3RoKSxoPXRoaXMuYXhlc1V0aWxzLmNoZWNrRm9yUmV2ZXJzZWRMYWJlbHModCxoKTt2YXIgZD1jLmxlbmd0aDtpZihlLmNvbmZpZy54YXhpcy5sYWJlbHMuc2hvdylmb3IodmFyIGc9ZD8wOnI7ZD9nPGQ6Zz49MDtkP2crKzpnLS0pe3ZhciB1PWhbZ107dT1sKHUsZyxlKTt2YXIgcD1lLmdsb2JhbHMuZ3JpZFdpZHRoK2UuZ2xvYmFscy5wYWRIb3Jpem9udGFsLShuLW8rZS5jb25maWcueGF4aXMubGFiZWxzLm9mZnNldFgpO2lmKGMubGVuZ3RoKXt2YXIgZj10aGlzLmF4ZXNVdGlscy5nZXRMYWJlbChoLGMscCxnLHRoaXMuZHJhd25MYWJlbHMsdGhpcy54YXhpc0ZvbnRTaXplKTtwPWYueCx1PWYudGV4dCx0aGlzLmRyYXduTGFiZWxzLnB1c2goZi50ZXh0KSwwPT09ZyYmZS5nbG9iYWxzLnNraXBGaXJzdFRpbWVsaW5lbGFiZWwmJih1PVwiXCIpLGc9PT1oLmxlbmd0aC0xJiZlLmdsb2JhbHMuc2tpcExhc3RUaW1lbGluZWxhYmVsJiYodT1cIlwiKX12YXIgeD1pLmRyYXdUZXh0KHt4OnAseTp0aGlzLnhBeGlzb2ZmWCtlLmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WSszMC0oXCJ0b3BcIj09PWUuY29uZmlnLnhheGlzLnBvc2l0aW9uP2UuZ2xvYmFscy54QXhpc0hlaWdodCtlLmNvbmZpZy54YXhpcy5heGlzVGlja3MuaGVpZ2h0LTI6MCksdGV4dDp1LHRleHRBbmNob3I6XCJtaWRkbGVcIixmb3JlQ29sb3I6QXJyYXkuaXNBcnJheSh0aGlzLnhheGlzRm9yZUNvbG9ycyk/dGhpcy54YXhpc0ZvcmVDb2xvcnNbdF06dGhpcy54YXhpc0ZvcmVDb2xvcnMsZm9udFNpemU6dGhpcy54YXhpc0ZvbnRTaXplLGZvbnRGYW1pbHk6dGhpcy54YXhpc0ZvbnRGYW1pbHksZm9udFdlaWdodDplLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udFdlaWdodCxpc1BsYWluVGV4dDohMSxjc3NDbGFzczpcImFwZXhjaGFydHMteGF4aXMtbGFiZWwgXCIrZS5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmNzc0NsYXNzfSk7cy5hZGQoeCkseC50c3Bhbih1KTt2YXIgYj1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoZS5nbG9iYWxzLlNWR05TLFwidGl0bGVcIik7Yi50ZXh0Q29udGVudD11LHgubm9kZS5hcHBlbmRDaGlsZChiKSxuKz1vfXJldHVybiB0aGlzLmludmVyc2VkWUF4aXNUaXRsZVRleHQoYSksdGhpcy5pbnZlcnNlZFlBeGlzQm9yZGVyKGEpLGF9fSx7a2V5OlwiaW52ZXJzZWRZQXhpc0JvcmRlclwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPW5ldyBtKHRoaXMuY3R4KSxhPWUuY29uZmlnLnhheGlzLmF4aXNCb3JkZXI7aWYoYS5zaG93KXt2YXIgcz0wO1wiYmFyXCI9PT1lLmNvbmZpZy5jaGFydC50eXBlJiZlLmdsb2JhbHMuaXNYTnVtZXJpYyYmKHMtPTE1KTt2YXIgcj1pLmRyYXdMaW5lKGUuZ2xvYmFscy5wYWRIb3Jpem9udGFsK3MrYS5vZmZzZXRYLHRoaXMueEF4aXNvZmZYLGUuZ2xvYmFscy5ncmlkV2lkdGgsdGhpcy54QXhpc29mZlgsYS5jb2xvciwwLGEuaGVpZ2h0KTt0aGlzLmVsZ3JpZCYmdGhpcy5lbGdyaWQuZWxHcmlkQm9yZGVycyYmZS5jb25maWcuZ3JpZC5zaG93P3RoaXMuZWxncmlkLmVsR3JpZEJvcmRlcnMuYWRkKHIpOnQuYWRkKHIpfX19LHtrZXk6XCJpbnZlcnNlZFlBeGlzVGl0bGVUZXh0XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9bmV3IG0odGhpcy5jdHgpO2lmKHZvaWQgMCE9PWUuY29uZmlnLnhheGlzLnRpdGxlLnRleHQpe3ZhciBhPWkuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy14YXhpcy10aXRsZSBhcGV4Y2hhcnRzLXlheGlzLXRpdGxlLWludmVyc2VkXCJ9KSxzPWkuZHJhd1RleHQoe3g6ZS5nbG9iYWxzLmdyaWRXaWR0aC8yK2UuY29uZmlnLnhheGlzLnRpdGxlLm9mZnNldFgseTp0aGlzLnhBeGlzb2ZmWCtwYXJzZUZsb2F0KHRoaXMueGF4aXNGb250U2l6ZSkrcGFyc2VGbG9hdChlLmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5mb250U2l6ZSkrZS5jb25maWcueGF4aXMudGl0bGUub2Zmc2V0WSsyMCx0ZXh0OmUuY29uZmlnLnhheGlzLnRpdGxlLnRleHQsdGV4dEFuY2hvcjpcIm1pZGRsZVwiLGZvbnRTaXplOmUuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6ZS5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuZm9udEZhbWlseSxmb250V2VpZ2h0OmUuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmZvbnRXZWlnaHQsZm9yZUNvbG9yOmUuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmNvbG9yLGNzc0NsYXNzOlwiYXBleGNoYXJ0cy14YXhpcy10aXRsZS10ZXh0IFwiK2UuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmNzc0NsYXNzfSk7YS5hZGQocyksdC5hZGQoYSl9fX0se2tleTpcInlBeGlzVGl0bGVSb3RhdGVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPW5ldyBtKHRoaXMuY3R4KSxzPXt3aWR0aDowLGhlaWdodDowfSxyPXt3aWR0aDowLGhlaWdodDowfSxvPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIgLmFwZXhjaGFydHMteWF4aXNbcmVsPSdcIi5jb25jYXQodCxcIiddIC5hcGV4Y2hhcnRzLXlheGlzLXRleHRzLWdcIikpO251bGwhPT1vJiYocz1vLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTt2YXIgbj1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMteWF4aXNbcmVsPSdcIi5jb25jYXQodCxcIiddIC5hcGV4Y2hhcnRzLXlheGlzLXRpdGxlIHRleHRcIikpO2lmKG51bGwhPT1uJiYocj1uLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKSxudWxsIT09bil7dmFyIGw9dGhpcy54UGFkZGluZ0ZvcllBeGlzVGl0bGUodCxzLHIsZSk7bi5zZXRBdHRyaWJ1dGUoXCJ4XCIsbC54UG9zLShlPzEwOjApKX1pZihudWxsIT09bil7dmFyIGg9YS5yb3RhdGVBcm91bmRDZW50ZXIobik7bi5zZXRBdHRyaWJ1dGUoXCJ0cmFuc2Zvcm1cIixcInJvdGF0ZShcIi5jb25jYXQoZT8tMSppLmNvbmZpZy55YXhpc1t0XS50aXRsZS5yb3RhdGU6aS5jb25maWcueWF4aXNbdF0udGl0bGUucm90YXRlLFwiIFwiKS5jb25jYXQoaC54LFwiIFwiKS5jb25jYXQoaC55LFwiKVwiKSl9fX0se2tleTpcInhQYWRkaW5nRm9yWUF4aXNUaXRsZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzPXRoaXMudyxyPTAsbz0wLG49MTA7cmV0dXJuIHZvaWQgMD09PXMuY29uZmlnLnlheGlzW3RdLnRpdGxlLnRleHR8fHQ8MD97eFBvczpvLHBhZGQ6MH06KGE/KG89ZS53aWR0aCtzLmNvbmZpZy55YXhpc1t0XS50aXRsZS5vZmZzZXRYK2kud2lkdGgvMituLzIsMD09PShyKz0xKSYmKG8tPW4vMikpOihvPS0xKmUud2lkdGgrcy5jb25maWcueWF4aXNbdF0udGl0bGUub2Zmc2V0WCtuLzIraS53aWR0aC8yLHMuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJihuPTI1LG89LTEqZS53aWR0aC1zLmNvbmZpZy55YXhpc1t0XS50aXRsZS5vZmZzZXRYLW4pKSx7eFBvczpvLHBhZGQ6bn0pfX0se2tleTpcInNldFlBeGlzWFBvc2l0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT0wLHM9MCxyPTE4LG89MTtpLmNvbmZpZy55YXhpcy5sZW5ndGg+MSYmKHRoaXMubXVsdGlwbGVZcz0hMCksaS5jb25maWcueWF4aXMubWFwKChmdW5jdGlvbihuLGwpe3ZhciBoPWkuZ2xvYmFscy5pZ25vcmVZQXhpc0luZGV4ZXMuaW5kZXhPZihsKT4tMXx8IW4uc2hvd3x8bi5mbG9hdGluZ3x8MD09PXRbbF0ud2lkdGgsYz10W2xdLndpZHRoK2VbbF0ud2lkdGg7bi5vcHBvc2l0ZT9pLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsPyhzPWkuZ2xvYmFscy5ncmlkV2lkdGgraS5nbG9iYWxzLnRyYW5zbGF0ZVgtMSxpLmdsb2JhbHMudHJhbnNsYXRlWUF4aXNYW2xdPXMtbi5sYWJlbHMub2Zmc2V0WCk6KHM9aS5nbG9iYWxzLmdyaWRXaWR0aCtpLmdsb2JhbHMudHJhbnNsYXRlWCtvLGh8fChvPW8rYysyMCksaS5nbG9iYWxzLnRyYW5zbGF0ZVlBeGlzWFtsXT1zLW4ubGFiZWxzLm9mZnNldFgrMjApOihhPWkuZ2xvYmFscy50cmFuc2xhdGVYLXIsaHx8KHI9citjKzIwKSxpLmdsb2JhbHMudHJhbnNsYXRlWUF4aXNYW2xdPWErbi5sYWJlbHMub2Zmc2V0WCl9KSl9fSx7a2V5Olwic2V0WUF4aXNUZXh0QWxpZ25tZW50c1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dC5nbG9iYWxzLmRvbS5iYXNlRWwuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImFwZXhjaGFydHMteWF4aXNcIik7KGU9eC5saXN0VG9BcnJheShlKSkuZm9yRWFjaCgoZnVuY3Rpb24oZSxpKXt2YXIgYT10LmNvbmZpZy55YXhpc1tpXTtpZihhJiYhYS5mbG9hdGluZyYmdm9pZCAwIT09YS5sYWJlbHMuYWxpZ24pe3ZhciBzPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy15YXhpc1tyZWw9J1wiLmNvbmNhdChpLFwiJ10gLmFwZXhjaGFydHMteWF4aXMtdGV4dHMtZ1wiKSkscj10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMteWF4aXNbcmVsPSdcIi5jb25jYXQoaSxcIiddIC5hcGV4Y2hhcnRzLXlheGlzLWxhYmVsXCIpKTtyPXgubGlzdFRvQXJyYXkocik7dmFyIG89cy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcImxlZnRcIj09PWEubGFiZWxzLmFsaWduPyhyLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dC5zZXRBdHRyaWJ1dGUoXCJ0ZXh0LWFuY2hvclwiLFwic3RhcnRcIil9KSksYS5vcHBvc2l0ZXx8cy5zZXRBdHRyaWJ1dGUoXCJ0cmFuc2Zvcm1cIixcInRyYW5zbGF0ZSgtXCIuY29uY2F0KG8ud2lkdGgsXCIsIDApXCIpKSk6XCJjZW50ZXJcIj09PWEubGFiZWxzLmFsaWduPyhyLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dC5zZXRBdHRyaWJ1dGUoXCJ0ZXh0LWFuY2hvclwiLFwibWlkZGxlXCIpfSkpLHMuc2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIsXCJ0cmFuc2xhdGUoXCIuY29uY2F0KG8ud2lkdGgvMiooYS5vcHBvc2l0ZT8xOi0xKSxcIiwgMClcIikpKTpcInJpZ2h0XCI9PT1hLmxhYmVscy5hbGlnbiYmKHIuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0LnNldEF0dHJpYnV0ZShcInRleHQtYW5jaG9yXCIsXCJlbmRcIil9KSksYS5vcHBvc2l0ZSYmcy5zZXRBdHRyaWJ1dGUoXCJ0cmFuc2Zvcm1cIixcInRyYW5zbGF0ZShcIi5jb25jYXQoby53aWR0aCxcIiwgMClcIikpKX19KSl9fV0pLHR9KCksWj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLmRvY3VtZW50RXZlbnQ9eC5iaW5kKHRoaXMuZG9jdW1lbnRFdmVudCx0aGlzKX1yZXR1cm4gcih0LFt7a2V5OlwiYWRkRXZlbnRMaXN0ZW5lclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O2kuZ2xvYmFscy5ldmVudHMuaGFzT3duUHJvcGVydHkodCk/aS5nbG9iYWxzLmV2ZW50c1t0XS5wdXNoKGUpOmkuZ2xvYmFscy5ldmVudHNbdF09W2VdfX0se2tleTpcInJlbW92ZUV2ZW50TGlzdGVuZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztpZihpLmdsb2JhbHMuZXZlbnRzLmhhc093blByb3BlcnR5KHQpKXt2YXIgYT1pLmdsb2JhbHMuZXZlbnRzW3RdLmluZGV4T2YoZSk7LTEhPT1hJiZpLmdsb2JhbHMuZXZlbnRzW3RdLnNwbGljZShhLDEpfX19LHtrZXk6XCJmaXJlRXZlbnRcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztpZihpLmdsb2JhbHMuZXZlbnRzLmhhc093blByb3BlcnR5KHQpKXtlJiZlLmxlbmd0aHx8KGU9W10pO2Zvcih2YXIgYT1pLmdsb2JhbHMuZXZlbnRzW3RdLHM9YS5sZW5ndGgscj0wO3I8cztyKyspYVtyXS5hcHBseShudWxsLGUpfX19LHtrZXk6XCJzZXR1cEV2ZW50SGFuZGxlcnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncsaT10aGlzLmN0eCxhPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoZS5nbG9iYWxzLmNoYXJ0Q2xhc3MpO3RoaXMuY3R4LmV2ZW50TGlzdC5mb3JFYWNoKChmdW5jdGlvbih0KXthLmFkZEV2ZW50TGlzdGVuZXIodCwoZnVuY3Rpb24odCl7dmFyIGE9T2JqZWN0LmFzc2lnbih7fSxlLHtzZXJpZXNJbmRleDplLmdsb2JhbHMuY2FwdHVyZWRTZXJpZXNJbmRleCxkYXRhUG9pbnRJbmRleDplLmdsb2JhbHMuY2FwdHVyZWREYXRhUG9pbnRJbmRleH0pO1wibW91c2Vtb3ZlXCI9PT10LnR5cGV8fFwidG91Y2htb3ZlXCI9PT10LnR5cGU/XCJmdW5jdGlvblwiPT10eXBlb2YgZS5jb25maWcuY2hhcnQuZXZlbnRzLm1vdXNlTW92ZSYmZS5jb25maWcuY2hhcnQuZXZlbnRzLm1vdXNlTW92ZSh0LGksYSk6XCJtb3VzZWxlYXZlXCI9PT10LnR5cGV8fFwidG91Y2hsZWF2ZVwiPT09dC50eXBlP1wiZnVuY3Rpb25cIj09dHlwZW9mIGUuY29uZmlnLmNoYXJ0LmV2ZW50cy5tb3VzZUxlYXZlJiZlLmNvbmZpZy5jaGFydC5ldmVudHMubW91c2VMZWF2ZSh0LGksYSk6KFwibW91c2V1cFwiPT09dC50eXBlJiYxPT09dC53aGljaHx8XCJ0b3VjaGVuZFwiPT09dC50eXBlKSYmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGUuY29uZmlnLmNoYXJ0LmV2ZW50cy5jbGljayYmZS5jb25maWcuY2hhcnQuZXZlbnRzLmNsaWNrKHQsaSxhKSxpLmN0eC5ldmVudHMuZmlyZUV2ZW50KFwiY2xpY2tcIixbdCxpLGFdKSl9KSx7Y2FwdHVyZTohMSxwYXNzaXZlOiEwfSl9KSksdGhpcy5jdHguZXZlbnRMaXN0LmZvckVhY2goKGZ1bmN0aW9uKGkpe2UuZ2xvYmFscy5kb20uYmFzZUVsLmFkZEV2ZW50TGlzdGVuZXIoaSx0LmRvY3VtZW50RXZlbnQse3Bhc3NpdmU6ITB9KX0pKSx0aGlzLmN0eC5jb3JlLnNldHVwQnJ1c2hIYW5kbGVyKCl9fSx7a2V5OlwiZG9jdW1lbnRFdmVudFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPXQudGFyZ2V0LmNsYXNzTmFtZTtpZihcImNsaWNrXCI9PT10LnR5cGUpe3ZhciBhPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1tZW51XCIpO2EmJmEuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1tZW51LW9wZW5cIikmJlwiYXBleGNoYXJ0cy1tZW51LWljb25cIiE9PWkmJmEuY2xhc3NMaXN0LnJlbW92ZShcImFwZXhjaGFydHMtbWVudS1vcGVuXCIpfWUuZ2xvYmFscy5jbGllbnRYPVwidG91Y2htb3ZlXCI9PT10LnR5cGU/dC50b3VjaGVzWzBdLmNsaWVudFg6dC5jbGllbnRYLGUuZ2xvYmFscy5jbGllbnRZPVwidG91Y2htb3ZlXCI9PT10LnR5cGU/dC50b3VjaGVzWzBdLmNsaWVudFk6dC5jbGllbnRZfX1dKSx0fSgpLCQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIHIodCxbe2tleTpcInNldEN1cnJlbnRMb2NhbGVWYWx1ZXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncuY29uZmlnLmNoYXJ0LmxvY2FsZXM7d2luZG93LkFwZXguY2hhcnQmJndpbmRvdy5BcGV4LmNoYXJ0LmxvY2FsZXMmJndpbmRvdy5BcGV4LmNoYXJ0LmxvY2FsZXMubGVuZ3RoPjAmJihlPXRoaXMudy5jb25maWcuY2hhcnQubG9jYWxlcy5jb25jYXQod2luZG93LkFwZXguY2hhcnQubG9jYWxlcykpO3ZhciBpPWUuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gZS5uYW1lPT09dH0pKVswXTtpZighaSl0aHJvdyBuZXcgRXJyb3IoXCJXcm9uZyBsb2NhbGUgbmFtZSBwcm92aWRlZC4gUGxlYXNlIG1ha2Ugc3VyZSB5b3Ugc2V0IHRoZSBjb3JyZWN0IGxvY2FsZSBuYW1lIGluIG9wdGlvbnNcIik7dmFyIGE9eC5leHRlbmQoQyxpKTt0aGlzLncuZ2xvYmFscy5sb2NhbGU9YS5vcHRpb25zfX1dKSx0fSgpLEo9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIHIodCxbe2tleTpcImRyYXdBeGlzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaSxhLHM9dGhpcyxyPXRoaXMudy5nbG9iYWxzLG89dGhpcy53LmNvbmZpZyxuPW5ldyBWKHRoaXMuY3R4LGUpLGw9bmV3IHEodGhpcy5jdHgsZSk7ci5heGlzQ2hhcnRzJiZcInJhZGFyXCIhPT10JiYoci5pc0Jhckhvcml6b250YWw/KGE9bC5kcmF3WWF4aXNJbnZlcnNlZCgwKSxpPW4uZHJhd1hheGlzSW52ZXJzZWQoMCksci5kb20uZWxHcmFwaGljYWwuYWRkKGkpLHIuZG9tLmVsR3JhcGhpY2FsLmFkZChhKSk6KGk9bi5kcmF3WGF4aXMoKSxyLmRvbS5lbEdyYXBoaWNhbC5hZGQoaSksby55YXhpcy5tYXAoKGZ1bmN0aW9uKHQsZSl7aWYoLTE9PT1yLmlnbm9yZVlBeGlzSW5kZXhlcy5pbmRleE9mKGUpJiYoYT1sLmRyYXdZYXhpcyhlKSxyLmRvbS5QYXBlci5hZGQoYSksXCJiYWNrXCI9PT1zLncuY29uZmlnLmdyaWQucG9zaXRpb24pKXt2YXIgaT1yLmRvbS5QYXBlci5jaGlsZHJlbigpWzFdO2kucmVtb3ZlKCksci5kb20uUGFwZXIuYWRkKGkpfX0pKSkpfX1dKSx0fSgpLFE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIHIodCxbe2tleTpcImRyYXdYQ3Jvc3NoYWlyc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9bmV3IG0odGhpcy5jdHgpLGk9bmV3IHYodGhpcy5jdHgpLGE9dC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5maWxsLmdyYWRpZW50LHM9dC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5kcm9wU2hhZG93LHI9dC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5maWxsLnR5cGUsbz1hLmNvbG9yRnJvbSxuPWEuY29sb3JUbyxsPWEub3BhY2l0eUZyb20saD1hLm9wYWNpdHlUbyxjPWEuc3RvcHMsZD1zLmVuYWJsZWQsZz1zLmxlZnQsdT1zLnRvcCxwPXMuYmx1cixmPXMuY29sb3IsYj1zLm9wYWNpdHkseT10LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLmZpbGwuY29sb3I7aWYodC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5zaG93KXtcImdyYWRpZW50XCI9PT1yJiYoeT1lLmRyYXdHcmFkaWVudChcInZlcnRpY2FsXCIsbyxuLGwsaCxudWxsLGMsbnVsbCkpO3ZhciB3PWUuZHJhd1JlY3QoKTsxPT09dC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy53aWR0aCYmKHc9ZS5kcmF3TGluZSgpKTt2YXIgaz10Lmdsb2JhbHMuZ3JpZEhlaWdodDsoIXguaXNOdW1iZXIoayl8fGs8MCkmJihrPTApO3ZhciBBPXQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMud2lkdGg7KCF4LmlzTnVtYmVyKEEpfHxBPDApJiYoQT0wKSx3LmF0dHIoe2NsYXNzOlwiYXBleGNoYXJ0cy14Y3Jvc3NoYWlyc1wiLHg6MCx5OjAseTI6ayx3aWR0aDpBLGhlaWdodDprLGZpbGw6eSxmaWx0ZXI6XCJub25lXCIsXCJmaWxsLW9wYWNpdHlcIjp0LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLm9wYWNpdHksc3Ryb2tlOnQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMuc3Ryb2tlLmNvbG9yLFwic3Ryb2tlLXdpZHRoXCI6dC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5zdHJva2Uud2lkdGgsXCJzdHJva2UtZGFzaGFycmF5XCI6dC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5zdHJva2UuZGFzaEFycmF5fSksZCYmKHc9aS5kcm9wU2hhZG93KHcse2xlZnQ6Zyx0b3A6dSxibHVyOnAsY29sb3I6ZixvcGFjaXR5OmJ9KSksdC5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQodyl9fX0se2tleTpcImRyYXdZQ3Jvc3NoYWlyc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9bmV3IG0odGhpcy5jdHgpLGk9dC5jb25maWcueWF4aXNbMF0uY3Jvc3NoYWlycyxhPXQuZ2xvYmFscy5iYXJQYWRGb3JOdW1lcmljQXhpcztpZih0LmNvbmZpZy55YXhpc1swXS5jcm9zc2hhaXJzLnNob3cpe3ZhciBzPWUuZHJhd0xpbmUoLWEsMCx0Lmdsb2JhbHMuZ3JpZFdpZHRoK2EsMCxpLnN0cm9rZS5jb2xvcixpLnN0cm9rZS5kYXNoQXJyYXksaS5zdHJva2Uud2lkdGgpO3MuYXR0cih7Y2xhc3M6XCJhcGV4Y2hhcnRzLXljcm9zc2hhaXJzXCJ9KSx0Lmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZChzKX12YXIgcj1lLmRyYXdMaW5lKC1hLDAsdC5nbG9iYWxzLmdyaWRXaWR0aCthLDAsaS5zdHJva2UuY29sb3IsMCwwKTtyLmF0dHIoe2NsYXNzOlwiYXBleGNoYXJ0cy15Y3Jvc3NoYWlycy1oaWRkZW5cIn0pLHQuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKHIpfX1dKSx0fSgpLEs9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIHIodCxbe2tleTpcImNoZWNrUmVzcG9uc2l2ZUNvbmZpZ1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10aGlzLncsYT1pLmNvbmZpZztpZigwIT09YS5yZXNwb25zaXZlLmxlbmd0aCl7dmFyIHM9YS5yZXNwb25zaXZlLnNsaWNlKCk7cy5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiB0LmJyZWFrcG9pbnQ+ZS5icmVha3BvaW50PzE6ZS5icmVha3BvaW50PnQuYnJlYWtwb2ludD8tMTowfSkpLnJldmVyc2UoKTt2YXIgcj1uZXcgRSh7fSksbz1mdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSxhPXNbMF0uYnJlYWtwb2ludCxvPXdpbmRvdy5pbm5lcldpZHRoPjA/d2luZG93LmlubmVyV2lkdGg6c2NyZWVuLndpZHRoO2lmKG8+YSl7dmFyIG49eS5leHRlbmRBcnJheVByb3BzKHIsaS5nbG9iYWxzLmluaXRpYWxDb25maWcsaSk7dD14LmV4dGVuZChuLHQpLHQ9eC5leHRlbmQoaS5jb25maWcsdCksZS5vdmVycmlkZVJlc3BvbnNpdmVPcHRpb25zKHQpfWVsc2UgZm9yKHZhciBsPTA7bDxzLmxlbmd0aDtsKyspbzxzW2xdLmJyZWFrcG9pbnQmJih0PXkuZXh0ZW5kQXJyYXlQcm9wcyhyLHNbbF0ub3B0aW9ucyxpKSx0PXguZXh0ZW5kKGkuY29uZmlnLHQpLGUub3ZlcnJpZGVSZXNwb25zaXZlT3B0aW9ucyh0KSl9O2lmKHQpe3ZhciBuPXkuZXh0ZW5kQXJyYXlQcm9wcyhyLHQsaSk7bj14LmV4dGVuZChpLmNvbmZpZyxuKSxvKG49eC5leHRlbmQobix0KSl9ZWxzZSBvKHt9KX19fSx7a2V5Olwib3ZlcnJpZGVSZXNwb25zaXZlT3B0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBFKHQpLmluaXQoe3Jlc3BvbnNpdmVPdmVycmlkZTohMH0pO3RoaXMudy5jb25maWc9ZX19XSksdH0oKSx0dD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy5jb2xvcnM9W10sdGhpcy53PWUudzt2YXIgaT10aGlzLnc7dGhpcy5pc0NvbG9yRm49ITEsdGhpcy5pc0hlYXRtYXBEaXN0cmlidXRlZD1cInRyZWVtYXBcIj09PWkuY29uZmlnLmNoYXJ0LnR5cGUmJmkuY29uZmlnLnBsb3RPcHRpb25zLnRyZWVtYXAuZGlzdHJpYnV0ZWR8fFwiaGVhdG1hcFwiPT09aS5jb25maWcuY2hhcnQudHlwZSYmaS5jb25maWcucGxvdE9wdGlvbnMuaGVhdG1hcC5kaXN0cmlidXRlZCx0aGlzLmlzQmFyRGlzdHJpYnV0ZWQ9aS5jb25maWcucGxvdE9wdGlvbnMuYmFyLmRpc3RyaWJ1dGVkJiYoXCJiYXJcIj09PWkuY29uZmlnLmNoYXJ0LnR5cGV8fFwicmFuZ2VCYXJcIj09PWkuY29uZmlnLmNoYXJ0LnR5cGUpfXJldHVybiByKHQsW3trZXk6XCJpbml0XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnNldERlZmF1bHRDb2xvcnMoKX19LHtrZXk6XCJzZXREZWZhdWx0Q29sb3JzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9bmV3IHg7aWYoZS5nbG9iYWxzLmRvbS5lbFdyYXAuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtdGhlbWUtXCIuY29uY2F0KGUuY29uZmlnLnRoZW1lLm1vZGUpKSx2b2lkIDA9PT1lLmNvbmZpZy5jb2xvcnM/ZS5nbG9iYWxzLmNvbG9ycz10aGlzLnByZWRlZmluZWQoKTooZS5nbG9iYWxzLmNvbG9ycz1lLmNvbmZpZy5jb2xvcnMsQXJyYXkuaXNBcnJheShlLmNvbmZpZy5jb2xvcnMpJiZlLmNvbmZpZy5jb2xvcnMubGVuZ3RoPjAmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGUuY29uZmlnLmNvbG9yc1swXSYmKGUuZ2xvYmFscy5jb2xvcnM9ZS5jb25maWcuc2VyaWVzLm1hcCgoZnVuY3Rpb24oaSxhKXt2YXIgcz1lLmNvbmZpZy5jb2xvcnNbYV07cmV0dXJuIHN8fChzPWUuY29uZmlnLmNvbG9yc1swXSksXCJmdW5jdGlvblwiPT10eXBlb2Ygcz8odC5pc0NvbG9yRm49ITAscyh7dmFsdWU6ZS5nbG9iYWxzLmF4aXNDaGFydHM/ZS5nbG9iYWxzLnNlcmllc1thXVswXT9lLmdsb2JhbHMuc2VyaWVzW2FdWzBdOjA6ZS5nbG9iYWxzLnNlcmllc1thXSxzZXJpZXNJbmRleDphLGRhdGFQb2ludEluZGV4OmEsdzplfSkpOnN9KSkpKSxlLmdsb2JhbHMuc2VyaWVzQ29sb3JzLm1hcCgoZnVuY3Rpb24odCxpKXt0JiYoZS5nbG9iYWxzLmNvbG9yc1tpXT10KX0pKSxlLmNvbmZpZy50aGVtZS5tb25vY2hyb21lLmVuYWJsZWQpe3ZhciBhPVtdLHM9ZS5nbG9iYWxzLnNlcmllcy5sZW5ndGg7KHRoaXMuaXNCYXJEaXN0cmlidXRlZHx8dGhpcy5pc0hlYXRtYXBEaXN0cmlidXRlZCkmJihzPWUuZ2xvYmFscy5zZXJpZXNbMF0ubGVuZ3RoKmUuZ2xvYmFscy5zZXJpZXMubGVuZ3RoKTtmb3IodmFyIHI9ZS5jb25maWcudGhlbWUubW9ub2Nocm9tZS5jb2xvcixvPTEvKHMvZS5jb25maWcudGhlbWUubW9ub2Nocm9tZS5zaGFkZUludGVuc2l0eSksbj1lLmNvbmZpZy50aGVtZS5tb25vY2hyb21lLnNoYWRlVG8sbD0wLGg9MDtoPHM7aCsrKXt2YXIgYz12b2lkIDA7XCJkYXJrXCI9PT1uPyhjPWkuc2hhZGVDb2xvcigtMSpsLHIpLGwrPW8pOihjPWkuc2hhZGVDb2xvcihsLHIpLGwrPW8pLGEucHVzaChjKX1lLmdsb2JhbHMuY29sb3JzPWEuc2xpY2UoKX12YXIgZD1lLmdsb2JhbHMuY29sb3JzLnNsaWNlKCk7dGhpcy5wdXNoRXh0cmFDb2xvcnMoZS5nbG9iYWxzLmNvbG9ycyk7W1wiZmlsbFwiLFwic3Ryb2tlXCJdLmZvckVhY2goKGZ1bmN0aW9uKGkpe3ZvaWQgMD09PWUuY29uZmlnW2ldLmNvbG9ycz9lLmdsb2JhbHNbaV0uY29sb3JzPXQuaXNDb2xvckZuP2UuY29uZmlnLmNvbG9yczpkOmUuZ2xvYmFsc1tpXS5jb2xvcnM9ZS5jb25maWdbaV0uY29sb3JzLnNsaWNlKCksdC5wdXNoRXh0cmFDb2xvcnMoZS5nbG9iYWxzW2ldLmNvbG9ycyl9KSksdm9pZCAwPT09ZS5jb25maWcuZGF0YUxhYmVscy5zdHlsZS5jb2xvcnM/ZS5nbG9iYWxzLmRhdGFMYWJlbHMuc3R5bGUuY29sb3JzPWQ6ZS5nbG9iYWxzLmRhdGFMYWJlbHMuc3R5bGUuY29sb3JzPWUuY29uZmlnLmRhdGFMYWJlbHMuc3R5bGUuY29sb3JzLnNsaWNlKCksdGhpcy5wdXNoRXh0cmFDb2xvcnMoZS5nbG9iYWxzLmRhdGFMYWJlbHMuc3R5bGUuY29sb3JzLDUwKSx2b2lkIDA9PT1lLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRhci5wb2x5Z29ucy5maWxsLmNvbG9ycz9lLmdsb2JhbHMucmFkYXJQb2x5Z29ucy5maWxsLmNvbG9ycz1bXCJkYXJrXCI9PT1lLmNvbmZpZy50aGVtZS5tb2RlP1wiIzQyNDI0MlwiOlwibm9uZVwiXTplLmdsb2JhbHMucmFkYXJQb2x5Z29ucy5maWxsLmNvbG9ycz1lLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRhci5wb2x5Z29ucy5maWxsLmNvbG9ycy5zbGljZSgpLHRoaXMucHVzaEV4dHJhQ29sb3JzKGUuZ2xvYmFscy5yYWRhclBvbHlnb25zLmZpbGwuY29sb3JzLDIwKSx2b2lkIDA9PT1lLmNvbmZpZy5tYXJrZXJzLmNvbG9ycz9lLmdsb2JhbHMubWFya2Vycy5jb2xvcnM9ZDplLmdsb2JhbHMubWFya2Vycy5jb2xvcnM9ZS5jb25maWcubWFya2Vycy5jb2xvcnMuc2xpY2UoKSx0aGlzLnB1c2hFeHRyYUNvbG9ycyhlLmdsb2JhbHMubWFya2Vycy5jb2xvcnMpfX0se2tleTpcInB1c2hFeHRyYUNvbG9yc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm51bGwsYT10aGlzLncscz1lfHxhLmdsb2JhbHMuc2VyaWVzLmxlbmd0aDtpZihudWxsPT09aSYmKGk9dGhpcy5pc0JhckRpc3RyaWJ1dGVkfHx0aGlzLmlzSGVhdG1hcERpc3RyaWJ1dGVkfHxcImhlYXRtYXBcIj09PWEuY29uZmlnLmNoYXJ0LnR5cGUmJmEuY29uZmlnLnBsb3RPcHRpb25zLmhlYXRtYXAuY29sb3JTY2FsZS5pbnZlcnNlKSxpJiZhLmdsb2JhbHMuc2VyaWVzLmxlbmd0aCYmKHM9YS5nbG9iYWxzLnNlcmllc1thLmdsb2JhbHMubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoKmEuZ2xvYmFscy5zZXJpZXMubGVuZ3RoKSx0Lmxlbmd0aDxzKWZvcih2YXIgcj1zLXQubGVuZ3RoLG89MDtvPHI7bysrKXQucHVzaCh0W29dKX19LHtrZXk6XCJ1cGRhdGVUaGVtZU9wdGlvbnNcIix2YWx1ZTpmdW5jdGlvbih0KXt0LmNoYXJ0PXQuY2hhcnR8fHt9LHQudG9vbHRpcD10LnRvb2x0aXB8fHt9O3ZhciBlPXQudGhlbWUubW9kZXx8XCJsaWdodFwiLGk9dC50aGVtZS5wYWxldHRlP3QudGhlbWUucGFsZXR0ZTpcImRhcmtcIj09PWU/XCJwYWxldHRlNFwiOlwicGFsZXR0ZTFcIixhPXQuY2hhcnQuZm9yZUNvbG9yP3QuY2hhcnQuZm9yZUNvbG9yOlwiZGFya1wiPT09ZT9cIiNmNmY3ZjhcIjpcIiMzNzNkM2ZcIjtyZXR1cm4gdC50b29sdGlwLnRoZW1lPWUsdC5jaGFydC5mb3JlQ29sb3I9YSx0LnRoZW1lLnBhbGV0dGU9aSx0fX0se2tleTpcInByZWRlZmluZWRcIix2YWx1ZTpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLncuY29uZmlnLnRoZW1lLnBhbGV0dGUpe2Nhc2VcInBhbGV0dGUxXCI6ZGVmYXVsdDp0aGlzLmNvbG9ycz1bXCIjMDA4RkZCXCIsXCIjMDBFMzk2XCIsXCIjRkVCMDE5XCIsXCIjRkY0NTYwXCIsXCIjNzc1REQwXCJdO2JyZWFrO2Nhc2VcInBhbGV0dGUyXCI6dGhpcy5jb2xvcnM9W1wiIzNmNTFiNVwiLFwiIzAzYTlmNFwiLFwiIzRjYWY1MFwiLFwiI2Y5Y2UxZFwiLFwiI0ZGOTgwMFwiXTticmVhaztjYXNlXCJwYWxldHRlM1wiOnRoaXMuY29sb3JzPVtcIiMzM2IyZGZcIixcIiM1NDZFN0FcIixcIiNkNDUyNmVcIixcIiMxM2Q4YWFcIixcIiNBNTk3OEJcIl07YnJlYWs7Y2FzZVwicGFsZXR0ZTRcIjp0aGlzLmNvbG9ycz1bXCIjNGVjZGM0XCIsXCIjYzdmNDY0XCIsXCIjODFENEZBXCIsXCIjZmQ2YTZhXCIsXCIjNTQ2RTdBXCJdO2JyZWFrO2Nhc2VcInBhbGV0dGU1XCI6dGhpcy5jb2xvcnM9W1wiIzJiOTA4ZlwiLFwiI2Y5YTNhNFwiLFwiIzkwZWU3ZVwiLFwiI2ZhNDQ0M1wiLFwiIzY5ZDJlN1wiXTticmVhaztjYXNlXCJwYWxldHRlNlwiOnRoaXMuY29sb3JzPVtcIiM0NDlERDFcIixcIiNGODY2MjRcIixcIiNFQTM1NDZcIixcIiM2NjJFOUJcIixcIiNDNUQ4NkRcIl07YnJlYWs7Y2FzZVwicGFsZXR0ZTdcIjp0aGlzLmNvbG9ycz1bXCIjRDcyNjNEXCIsXCIjMUI5OThCXCIsXCIjMkUyOTRFXCIsXCIjRjQ2MDM2XCIsXCIjRTJDMDQ0XCJdO2JyZWFrO2Nhc2VcInBhbGV0dGU4XCI6dGhpcy5jb2xvcnM9W1wiIzY2MkU5QlwiLFwiI0Y4NjYyNFwiLFwiI0Y5QzgwRVwiLFwiI0VBMzU0NlwiLFwiIzQzQkNDRFwiXTticmVhaztjYXNlXCJwYWxldHRlOVwiOnRoaXMuY29sb3JzPVtcIiM1QzQ3NDJcIixcIiNBNTk3OEJcIixcIiM4RDVCNENcIixcIiM1QTJBMjdcIixcIiNDNEJCQUZcIl07YnJlYWs7Y2FzZVwicGFsZXR0ZTEwXCI6dGhpcy5jb2xvcnM9W1wiI0EzMDBENlwiLFwiIzdEMDJFQlwiLFwiIzU2NTNGRVwiLFwiIzI5ODNGRlwiLFwiIzAwQjFGMlwiXX1yZXR1cm4gdGhpcy5jb2xvcnN9fV0pLHR9KCksZXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIHIodCxbe2tleTpcImRyYXdcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZHJhd1RpdGxlU3VidGl0bGUoXCJ0aXRsZVwiKSx0aGlzLmRyYXdUaXRsZVN1YnRpdGxlKFwic3VidGl0bGVcIil9fSx7a2V5OlwiZHJhd1RpdGxlU3VidGl0bGVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1cInRpdGxlXCI9PT10P2UuY29uZmlnLnRpdGxlOmUuY29uZmlnLnN1YnRpdGxlLGE9ZS5nbG9iYWxzLnN2Z1dpZHRoLzIscz1pLm9mZnNldFkscj1cIm1pZGRsZVwiO2lmKFwibGVmdFwiPT09aS5hbGlnbj8oYT0xMCxyPVwic3RhcnRcIik6XCJyaWdodFwiPT09aS5hbGlnbiYmKGE9ZS5nbG9iYWxzLnN2Z1dpZHRoLTEwLHI9XCJlbmRcIiksYSs9aS5vZmZzZXRYLHM9cytwYXJzZUludChpLnN0eWxlLmZvbnRTaXplLDEwKStpLm1hcmdpbi8yLHZvaWQgMCE9PWkudGV4dCl7dmFyIG89bmV3IG0odGhpcy5jdHgpLmRyYXdUZXh0KHt4OmEseTpzLHRleHQ6aS50ZXh0LHRleHRBbmNob3I6cixmb250U2l6ZTppLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6aS5zdHlsZS5mb250RmFtaWx5LGZvbnRXZWlnaHQ6aS5zdHlsZS5mb250V2VpZ2h0LGZvcmVDb2xvcjppLnN0eWxlLmNvbG9yLG9wYWNpdHk6MX0pO28ubm9kZS5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLFwiYXBleGNoYXJ0cy1cIi5jb25jYXQodCxcIi10ZXh0XCIpKSxlLmdsb2JhbHMuZG9tLlBhcGVyLmFkZChvKX19fV0pLHR9KCksaXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMuZEN0eD1lfXJldHVybiByKHQsW3trZXk6XCJnZXRUaXRsZVN1YnRpdGxlQ29vcmRzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9MCxhPTAscz1cInRpdGxlXCI9PT10P2UuY29uZmlnLnRpdGxlLmZsb2F0aW5nOmUuY29uZmlnLnN1YnRpdGxlLmZsb2F0aW5nLHI9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLVwiLmNvbmNhdCh0LFwiLXRleHRcIikpO2lmKG51bGwhPT1yJiYhcyl7dmFyIG89ci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpPW8ud2lkdGgsYT1lLmdsb2JhbHMuYXhpc0NoYXJ0cz9vLmhlaWdodCs1Om8uaGVpZ2h0fXJldHVybnt3aWR0aDppLGhlaWdodDphfX19LHtrZXk6XCJnZXRMZWdlbmRzUmVjdFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dC5nbG9iYWxzLmRvbS5lbExlZ2VuZFdyYXA7dC5jb25maWcubGVnZW5kLmhlaWdodHx8XCJ0b3BcIiE9PXQuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiYmXCJib3R0b21cIiE9PXQuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbnx8KGUuc3R5bGUubWF4SGVpZ2h0PXQuZ2xvYmFscy5zdmdIZWlnaHQvMitcInB4XCIpO3ZhciBpPU9iamVjdC5hc3NpZ24oe30seC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoZSkpO3JldHVybiBudWxsIT09ZSYmIXQuY29uZmlnLmxlZ2VuZC5mbG9hdGluZyYmdC5jb25maWcubGVnZW5kLnNob3c/dGhpcy5kQ3R4LmxnUmVjdD17eDppLngseTppLnksaGVpZ2h0OmkuaGVpZ2h0LHdpZHRoOjA9PT1pLmhlaWdodD8wOmkud2lkdGh9OnRoaXMuZEN0eC5sZ1JlY3Q9e3g6MCx5OjAsaGVpZ2h0OjAsd2lkdGg6MH0sXCJsZWZ0XCIhPT10LmNvbmZpZy5sZWdlbmQucG9zaXRpb24mJlwicmlnaHRcIiE9PXQuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbnx8MS41KnRoaXMuZEN0eC5sZ1JlY3Qud2lkdGg+dC5nbG9iYWxzLnN2Z1dpZHRoJiYodGhpcy5kQ3R4LmxnUmVjdC53aWR0aD10Lmdsb2JhbHMuc3ZnV2lkdGgvMS41KSx0aGlzLmRDdHgubGdSZWN0fX0se2tleTpcImdldExhcmdlc3RTdHJpbmdGcm9tTXVsdGlBcnJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXQ7aWYodGhpcy53Lmdsb2JhbHMuaXNNdWx0aUxpbmVYKXt2YXIgYT1lLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT90Lmxlbmd0aDoxfSkpLHM9TWF0aC5tYXguYXBwbHkoTWF0aCx1KGEpKTtpPWVbYS5pbmRleE9mKHMpXX1yZXR1cm4gaX19XSksdH0oKSxhdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy5kQ3R4PWV9cmV0dXJuIHIodCxbe2tleTpcImdldHhBeGlzTGFiZWxzQ29vcmRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMudyxpPWUuZ2xvYmFscy5sYWJlbHMuc2xpY2UoKTtpZihlLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJjA9PT1pLmxlbmd0aCYmKGk9ZS5nbG9iYWxzLmNhdGVnb3J5TGFiZWxzKSxlLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLmxlbmd0aD4wKXt2YXIgYT10aGlzLmdldHhBeGlzVGltZVNjYWxlTGFiZWxzQ29vcmRzKCk7dD17d2lkdGg6YS53aWR0aCxoZWlnaHQ6YS5oZWlnaHR9LGUuZ2xvYmFscy5yb3RhdGVYTGFiZWxzPSExfWVsc2V7dGhpcy5kQ3R4LmxnV2lkdGhGb3JTaWRlTGVnZW5kcz1cImxlZnRcIiE9PWUuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiYmXCJyaWdodFwiIT09ZS5jb25maWcubGVnZW5kLnBvc2l0aW9ufHxlLmNvbmZpZy5sZWdlbmQuZmxvYXRpbmc/MDp0aGlzLmRDdHgubGdSZWN0LndpZHRoO3ZhciBzPWUuZ2xvYmFscy54TGFiZWxGb3JtYXR0ZXIscj14LmdldExhcmdlc3RTdHJpbmdGcm9tQXJyKGkpLG89dGhpcy5kQ3R4LmRpbUhlbHBlcnMuZ2V0TGFyZ2VzdFN0cmluZ0Zyb21NdWx0aUFycihyLGkpO2UuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJihvPXI9ZS5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ucmVzdWx0LnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5sZW5ndGg+ZS5sZW5ndGg/dDplfSksMCkpO3ZhciBuPW5ldyBUKHRoaXMuZEN0eC5jdHgpLGw9cjtyPW4ueExhYmVsRm9ybWF0KHMscixsLHtpOnZvaWQgMCxkYXRlRm9ybWF0dGVyOm5ldyBJKHRoaXMuZEN0eC5jdHgpLmZvcm1hdERhdGUsdzplfSksbz1uLnhMYWJlbEZvcm1hdChzLG8sbCx7aTp2b2lkIDAsZGF0ZUZvcm1hdHRlcjpuZXcgSSh0aGlzLmRDdHguY3R4KS5mb3JtYXREYXRlLHc6ZX0pLChlLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJnZvaWQgMD09PXJ8fFwiXCI9PT1TdHJpbmcocikudHJpbSgpKSYmKG89cj1cIjFcIik7dmFyIGg9bmV3IG0odGhpcy5kQ3R4LmN0eCksYz1oLmdldFRleHRSZWN0cyhyLGUuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250U2l6ZSksZD1jO2lmKHIhPT1vJiYoZD1oLmdldFRleHRSZWN0cyhvLGUuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250U2l6ZSkpLCh0PXt3aWR0aDpjLndpZHRoPj1kLndpZHRoP2Mud2lkdGg6ZC53aWR0aCxoZWlnaHQ6Yy5oZWlnaHQ+PWQuaGVpZ2h0P2MuaGVpZ2h0OmQuaGVpZ2h0fSkud2lkdGgqaS5sZW5ndGg+ZS5nbG9iYWxzLnN2Z1dpZHRoLXRoaXMuZEN0eC5sZ1dpZHRoRm9yU2lkZUxlZ2VuZHMtdGhpcy5kQ3R4LnlBeGlzV2lkdGgtdGhpcy5kQ3R4LmdyaWRQYWQubGVmdC10aGlzLmRDdHguZ3JpZFBhZC5yaWdodCYmMCE9PWUuY29uZmlnLnhheGlzLmxhYmVscy5yb3RhdGV8fGUuY29uZmlnLnhheGlzLmxhYmVscy5yb3RhdGVBbHdheXMpe2lmKCFlLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsKXtlLmdsb2JhbHMucm90YXRlWExhYmVscz0hMDt2YXIgZz1mdW5jdGlvbih0KXtyZXR1cm4gaC5nZXRUZXh0UmVjdHModCxlLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udFNpemUsZS5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRGYW1pbHksXCJyb3RhdGUoXCIuY29uY2F0KGUuY29uZmlnLnhheGlzLmxhYmVscy5yb3RhdGUsXCIgMCAwKVwiKSwhMSl9O2M9ZyhyKSxyIT09byYmKGQ9ZyhvKSksdC5oZWlnaHQ9KGMuaGVpZ2h0PmQuaGVpZ2h0P2MuaGVpZ2h0OmQuaGVpZ2h0KS8xLjUsdC53aWR0aD1jLndpZHRoPmQud2lkdGg/Yy53aWR0aDpkLndpZHRofX1lbHNlIGUuZ2xvYmFscy5yb3RhdGVYTGFiZWxzPSExfXJldHVybiBlLmNvbmZpZy54YXhpcy5sYWJlbHMuc2hvd3x8KHQ9e3dpZHRoOjAsaGVpZ2h0OjB9KSx7d2lkdGg6dC53aWR0aCxoZWlnaHQ6dC5oZWlnaHR9fX0se2tleTpcImdldHhBeGlzR3JvdXBMYWJlbHNDb29yZHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0LGU9dGhpcy53O2lmKCFlLmdsb2JhbHMuaGFzWGF4aXNHcm91cHMpcmV0dXJue3dpZHRoOjAsaGVpZ2h0OjB9O3ZhciBpLGE9KG51bGw9PT0odD1lLmNvbmZpZy54YXhpcy5ncm91cC5zdHlsZSl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuZm9udFNpemUpfHxlLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udFNpemUscz1lLmdsb2JhbHMuZ3JvdXBzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQudGl0bGV9KSkscj14LmdldExhcmdlc3RTdHJpbmdGcm9tQXJyKHMpLG89dGhpcy5kQ3R4LmRpbUhlbHBlcnMuZ2V0TGFyZ2VzdFN0cmluZ0Zyb21NdWx0aUFycihyLHMpLG49bmV3IG0odGhpcy5kQ3R4LmN0eCksbD1uLmdldFRleHRSZWN0cyhyLGEpLGg9bDtyZXR1cm4gciE9PW8mJihoPW4uZ2V0VGV4dFJlY3RzKG8sYSkpLGk9e3dpZHRoOmwud2lkdGg+PWgud2lkdGg/bC53aWR0aDpoLndpZHRoLGhlaWdodDpsLmhlaWdodD49aC5oZWlnaHQ/bC5oZWlnaHQ6aC5oZWlnaHR9LGUuY29uZmlnLnhheGlzLmxhYmVscy5zaG93fHwoaT17d2lkdGg6MCxoZWlnaHQ6MH0pLHt3aWR0aDppLndpZHRoLGhlaWdodDppLmhlaWdodH19fSx7a2V5OlwiZ2V0eEF4aXNUaXRsZUNvb3Jkc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9MCxpPTA7aWYodm9pZCAwIT09dC5jb25maWcueGF4aXMudGl0bGUudGV4dCl7dmFyIGE9bmV3IG0odGhpcy5kQ3R4LmN0eCkuZ2V0VGV4dFJlY3RzKHQuY29uZmlnLnhheGlzLnRpdGxlLnRleHQsdC5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuZm9udFNpemUpO2U9YS53aWR0aCxpPWEuaGVpZ2h0fXJldHVybnt3aWR0aDplLGhlaWdodDppfX19LHtrZXk6XCJnZXR4QXhpc1RpbWVTY2FsZUxhYmVsc0Nvb3Jkc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLnc7dGhpcy5kQ3R4LnRpbWVzY2FsZUxhYmVscz1lLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLnNsaWNlKCk7dmFyIGk9dGhpcy5kQ3R4LnRpbWVzY2FsZUxhYmVscy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnZhbHVlfSkpLGE9aS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PXQ/KGNvbnNvbGUuZXJyb3IoXCJZb3UgaGF2ZSBwb3NzaWJseSBzdXBwbGllZCBpbnZhbGlkIERhdGUgZm9ybWF0LiBQbGVhc2Ugc3VwcGx5IGEgdmFsaWQgSmF2YVNjcmlwdCBEYXRlXCIpLDApOnQubGVuZ3RoPmUubGVuZ3RoP3Q6ZX0pLDApO3JldHVybiAxLjA1Kih0PW5ldyBtKHRoaXMuZEN0eC5jdHgpLmdldFRleHRSZWN0cyhhLGUuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250U2l6ZSkpLndpZHRoKmkubGVuZ3RoPmUuZ2xvYmFscy5ncmlkV2lkdGgmJjAhPT1lLmNvbmZpZy54YXhpcy5sYWJlbHMucm90YXRlJiYoZS5nbG9iYWxzLm92ZXJsYXBwaW5nWExhYmVscz0hMCksdH19LHtrZXk6XCJhZGRpdGlvbmFsUGFkZGluZ1hMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dGhpcy53LGE9aS5nbG9iYWxzLHM9aS5jb25maWcscj1zLnhheGlzLnR5cGUsbz10LndpZHRoO2Euc2tpcExhc3RUaW1lbGluZWxhYmVsPSExLGEuc2tpcEZpcnN0VGltZWxpbmVsYWJlbD0hMTt2YXIgbj1pLmNvbmZpZy55YXhpc1swXS5vcHBvc2l0ZSYmaS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCxsPWZ1bmN0aW9uKHQsbil7cy55YXhpcy5sZW5ndGg+MSYmZnVuY3Rpb24odCl7cmV0dXJuLTEhPT1hLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZih0KX0obil8fGZ1bmN0aW9uKHQpe2lmKGUuZEN0eC50aW1lc2NhbGVMYWJlbHMmJmUuZEN0eC50aW1lc2NhbGVMYWJlbHMubGVuZ3RoKXt2YXIgbj1lLmRDdHgudGltZXNjYWxlTGFiZWxzWzBdLGw9ZS5kQ3R4LnRpbWVzY2FsZUxhYmVsc1tlLmRDdHgudGltZXNjYWxlTGFiZWxzLmxlbmd0aC0xXS5wb3NpdGlvbitvLzEuNzUtZS5kQ3R4LnlBeGlzV2lkdGhSaWdodCxoPW4ucG9zaXRpb24tby8xLjc1K2UuZEN0eC55QXhpc1dpZHRoTGVmdCxjPVwicmlnaHRcIj09PWkuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiYmZS5kQ3R4LmxnUmVjdC53aWR0aD4wP2UuZEN0eC5sZ1JlY3Qud2lkdGg6MDtsPmEuc3ZnV2lkdGgtYS50cmFuc2xhdGVYLWMmJihhLnNraXBMYXN0VGltZWxpbmVsYWJlbD0hMCksaDwtKHQuc2hvdyYmIXQuZmxvYXRpbmd8fFwiYmFyXCIhPT1zLmNoYXJ0LnR5cGUmJlwiY2FuZGxlc3RpY2tcIiE9PXMuY2hhcnQudHlwZSYmXCJyYW5nZUJhclwiIT09cy5jaGFydC50eXBlJiZcImJveFBsb3RcIiE9PXMuY2hhcnQudHlwZT8xMDpvLzEuNzUpJiYoYS5za2lwRmlyc3RUaW1lbGluZWxhYmVsPSEwKX1lbHNlXCJkYXRldGltZVwiPT09cj9lLmRDdHguZ3JpZFBhZC5yaWdodDxvJiYhYS5yb3RhdGVYTGFiZWxzJiYoYS5za2lwTGFzdFRpbWVsaW5lbGFiZWw9ITApOlwiZGF0ZXRpbWVcIiE9PXImJmUuZEN0eC5ncmlkUGFkLnJpZ2h0PG8vMi1lLmRDdHgueUF4aXNXaWR0aFJpZ2h0JiYhYS5yb3RhdGVYTGFiZWxzJiYhaS5jb25maWcueGF4aXMubGFiZWxzLnRyaW0mJihcImJldHdlZW5cIiE9PWkuY29uZmlnLnhheGlzLnRpY2tQbGFjZW1lbnR8fGkuZ2xvYmFscy5pc0Jhckhvcml6b250YWwpJiYoZS5kQ3R4LnhQYWRSaWdodD1vLzIrMSl9KHQpfTtzLnlheGlzLmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7bj8oZS5kQ3R4LmdyaWRQYWQubGVmdDxvJiYoZS5kQ3R4LnhQYWRMZWZ0PW8vMisxKSxlLmRDdHgueFBhZFJpZ2h0PW8vMisxKTpsKHQsaSl9KSl9fV0pLHR9KCksc3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMuZEN0eD1lfXJldHVybiByKHQsW3trZXk6XCJnZXR5QXhpc0xhYmVsc0Nvb3Jkc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudyxpPVtdLGE9MTAscz1uZXcgQih0aGlzLmRDdHguY3R4KTtyZXR1cm4gZS5jb25maWcueWF4aXMubWFwKChmdW5jdGlvbihyLG8pe3ZhciBuPWUuZ2xvYmFscy55QXhpc1NjYWxlW29dLGw9MDtpZighcy5pc1lBeGlzSGlkZGVuKG8pJiZyLmxhYmVscy5zaG93JiZ2b2lkIDAhPT1yLmxhYmVscy5taW5XaWR0aCYmKGw9ci5sYWJlbHMubWluV2lkdGgpLCFzLmlzWUF4aXNIaWRkZW4obykmJnIubGFiZWxzLnNob3cmJm4ucmVzdWx0Lmxlbmd0aCl7dmFyIGg9ZS5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbb10sYz1uLm5pY2VNaW49PT1OdW1iZXIuTUlOX1ZBTFVFPzA6bi5uaWNlTWluLGQ9U3RyaW5nKGMpLmxlbmd0aD5TdHJpbmcobi5uaWNlTWF4KS5sZW5ndGg/YzpuLm5pY2VNYXgsZz1oKGQse3Nlcmllc0luZGV4Om8sZGF0YVBvaW50SW5kZXg6LTEsdzplfSksdT1nO2lmKHZvaWQgMCE9PWcmJjAhPT1nLmxlbmd0aHx8KGc9ZCksZS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCl7YT0wO3ZhciBwPWUuZ2xvYmFscy5sYWJlbHMuc2xpY2UoKTtnPWgoZz14LmdldExhcmdlc3RTdHJpbmdGcm9tQXJyKHApLHtzZXJpZXNJbmRleDpvLGRhdGFQb2ludEluZGV4Oi0xLHc6ZX0pLHU9dC5kQ3R4LmRpbUhlbHBlcnMuZ2V0TGFyZ2VzdFN0cmluZ0Zyb21NdWx0aUFycihnLHApfXZhciBmPW5ldyBtKHQuZEN0eC5jdHgpLGI9XCJyb3RhdGUoXCIuY29uY2F0KHIubGFiZWxzLnJvdGF0ZSxcIiAwIDApXCIpLHY9Zi5nZXRUZXh0UmVjdHMoZyxyLmxhYmVscy5zdHlsZS5mb250U2l6ZSxyLmxhYmVscy5zdHlsZS5mb250RmFtaWx5LGIsITEpLHk9djtnIT09dSYmKHk9Zi5nZXRUZXh0UmVjdHModSxyLmxhYmVscy5zdHlsZS5mb250U2l6ZSxyLmxhYmVscy5zdHlsZS5mb250RmFtaWx5LGIsITEpKSxpLnB1c2goe3dpZHRoOihsPnkud2lkdGh8fGw+di53aWR0aD9sOnkud2lkdGg+di53aWR0aD95LndpZHRoOnYud2lkdGgpK2EsaGVpZ2h0OnkuaGVpZ2h0PnYuaGVpZ2h0P3kuaGVpZ2h0OnYuaGVpZ2h0fSl9ZWxzZSBpLnB1c2goe3dpZHRoOjAsaGVpZ2h0OjB9KX0pKSxpfX0se2tleTpcImdldHlBeGlzVGl0bGVDb29yZHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncsaT1bXTtyZXR1cm4gZS5jb25maWcueWF4aXMubWFwKChmdW5jdGlvbihlLGEpe2lmKGUuc2hvdyYmdm9pZCAwIT09ZS50aXRsZS50ZXh0KXt2YXIgcz1uZXcgbSh0LmRDdHguY3R4KSxyPVwicm90YXRlKFwiLmNvbmNhdChlLnRpdGxlLnJvdGF0ZSxcIiAwIDApXCIpLG89cy5nZXRUZXh0UmVjdHMoZS50aXRsZS50ZXh0LGUudGl0bGUuc3R5bGUuZm9udFNpemUsZS50aXRsZS5zdHlsZS5mb250RmFtaWx5LHIsITEpO2kucHVzaCh7d2lkdGg6by53aWR0aCxoZWlnaHQ6by5oZWlnaHR9KX1lbHNlIGkucHVzaCh7d2lkdGg6MCxoZWlnaHQ6MH0pfSkpLGl9fSx7a2V5OlwiZ2V0VG90YWxZQXhpc1dpZHRoXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT0wLGk9MCxhPTAscz10Lmdsb2JhbHMueUF4aXNTY2FsZS5sZW5ndGg+MT8xMDowLHI9bmV3IEIodGhpcy5kQ3R4LmN0eCksbz1mdW5jdGlvbihvLG4pe3ZhciBsPXQuY29uZmlnLnlheGlzW25dLmZsb2F0aW5nLGg9MDtvLndpZHRoPjAmJiFsPyhoPW8ud2lkdGgrcyxmdW5jdGlvbihlKXtyZXR1cm4gdC5nbG9iYWxzLmlnbm9yZVlBeGlzSW5kZXhlcy5pbmRleE9mKGUpPi0xfShuKSYmKGg9aC1vLndpZHRoLXMpKTpoPWx8fHIuaXNZQXhpc0hpZGRlbihuKT8wOjUsdC5jb25maWcueWF4aXNbbl0ub3Bwb3NpdGU/YSs9aDppKz1oLGUrPWh9O3JldHVybiB0Lmdsb2JhbHMueUxhYmVsc0Nvb3Jkcy5tYXAoKGZ1bmN0aW9uKHQsZSl7byh0LGUpfSkpLHQuZ2xvYmFscy55VGl0bGVDb29yZHMubWFwKChmdW5jdGlvbih0LGUpe28odCxlKX0pKSx0Lmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYhdC5jb25maWcueWF4aXNbMF0uZmxvYXRpbmcmJihlPXQuZ2xvYmFscy55TGFiZWxzQ29vcmRzWzBdLndpZHRoK3QuZ2xvYmFscy55VGl0bGVDb29yZHNbMF0ud2lkdGgrMTUpLHRoaXMuZEN0eC55QXhpc1dpZHRoTGVmdD1pLHRoaXMuZEN0eC55QXhpc1dpZHRoUmlnaHQ9YSxlfX1dKSx0fSgpLHJ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLmRDdHg9ZX1yZXR1cm4gcih0LFt7a2V5OlwiZ3JpZFBhZEZvckNvbHVtbnNJbk51bWVyaWNBeGlzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53O2lmKGUuZ2xvYmFscy5ub0RhdGF8fGUuZ2xvYmFscy5hbGxTZXJpZXNDb2xsYXBzZWQpcmV0dXJuIDA7dmFyIGk9ZnVuY3Rpb24odCl7cmV0dXJuXCJiYXJcIj09PXR8fFwicmFuZ2VCYXJcIj09PXR8fFwiY2FuZGxlc3RpY2tcIj09PXR8fFwiYm94UGxvdFwiPT09dH0sYT1lLmNvbmZpZy5jaGFydC50eXBlLHM9MCxyPWkoYSk/ZS5jb25maWcuc2VyaWVzLmxlbmd0aDoxO2lmKGUuZ2xvYmFscy5jb21ib0JhckNvdW50PjAmJihyPWUuZ2xvYmFscy5jb21ib0JhckNvdW50KSxlLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLmZvckVhY2goKGZ1bmN0aW9uKHQpe2kodC50eXBlKSYmKHItPTEpfSkpLGUuY29uZmlnLmNoYXJ0LnN0YWNrZWQmJihyPTEpLChpKGEpfHxlLmdsb2JhbHMuY29tYm9CYXJDb3VudD4wKSYmZS5nbG9iYWxzLmlzWE51bWVyaWMmJiFlLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiZyPjApe3ZhciBvLG4sbD1NYXRoLmFicyhlLmdsb2JhbHMuaW5pdGlhbE1heFgtZS5nbG9iYWxzLmluaXRpYWxNaW5YKTtsPD0zJiYobD1lLmdsb2JhbHMuZGF0YVBvaW50cyksbz1sL3QsZS5nbG9iYWxzLm1pblhEaWZmJiZlLmdsb2JhbHMubWluWERpZmYvbz4wJiYobj1lLmdsb2JhbHMubWluWERpZmYvbyksbj50LzImJihuLz0yKSwocz1uL3IqcGFyc2VJbnQoZS5jb25maWcucGxvdE9wdGlvbnMuYmFyLmNvbHVtbldpZHRoLDEwKS8xMDApPDEmJihzPTEpLHM9cy8ocj4xPzE6MS41KSs1LGUuZ2xvYmFscy5iYXJQYWRGb3JOdW1lcmljQXhpcz1zfXJldHVybiBzfX0se2tleTpcImdyaWRQYWRGb3J0aXRsZVN1YnRpdGxlXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9ZS5nbG9iYWxzLGE9dGhpcy5kQ3R4LmlzU3BhcmtsaW5lfHwhZS5nbG9iYWxzLmF4aXNDaGFydHM/MDoxMDtbXCJ0aXRsZVwiLFwic3VidGl0bGVcIl0uZm9yRWFjaCgoZnVuY3Rpb24oaSl7dm9pZCAwIT09ZS5jb25maWdbaV0udGV4dD9hKz1lLmNvbmZpZ1tpXS5tYXJnaW46YSs9dC5kQ3R4LmlzU3BhcmtsaW5lfHwhZS5nbG9iYWxzLmF4aXNDaGFydHM/MDo1fSkpLCFlLmNvbmZpZy5sZWdlbmQuc2hvd3x8XCJib3R0b21cIiE9PWUuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbnx8ZS5jb25maWcubGVnZW5kLmZsb2F0aW5nfHxlLmdsb2JhbHMuYXhpc0NoYXJ0c3x8KGErPTEwKTt2YXIgcz10aGlzLmRDdHguZGltSGVscGVycy5nZXRUaXRsZVN1YnRpdGxlQ29vcmRzKFwidGl0bGVcIikscj10aGlzLmRDdHguZGltSGVscGVycy5nZXRUaXRsZVN1YnRpdGxlQ29vcmRzKFwic3VidGl0bGVcIik7aS5ncmlkSGVpZ2h0PWkuZ3JpZEhlaWdodC1zLmhlaWdodC1yLmhlaWdodC1hLGkudHJhbnNsYXRlWT1pLnRyYW5zbGF0ZVkrcy5oZWlnaHQrci5oZWlnaHQrYX19LHtrZXk6XCJzZXRHcmlkWFBvc0ZvckR1YWxZQXhpc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9bmV3IEIodGhpcy5kQ3R4LmN0eCk7aS5jb25maWcueWF4aXMubWFwKChmdW5jdGlvbihzLHIpey0xIT09aS5nbG9iYWxzLmlnbm9yZVlBeGlzSW5kZXhlcy5pbmRleE9mKHIpfHxzLmZsb2F0aW5nfHxhLmlzWUF4aXNIaWRkZW4ocil8fChzLm9wcG9zaXRlJiYoaS5nbG9iYWxzLnRyYW5zbGF0ZVg9aS5nbG9iYWxzLnRyYW5zbGF0ZVgtKGVbcl0ud2lkdGgrdFtyXS53aWR0aCktcGFyc2VJbnQoaS5jb25maWcueWF4aXNbcl0ubGFiZWxzLnN0eWxlLmZvbnRTaXplLDEwKS8xLjItMTIpLGkuZ2xvYmFscy50cmFuc2xhdGVYPDImJihpLmdsb2JhbHMudHJhbnNsYXRlWD0yKSl9KSl9fV0pLHR9KCksb3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5sZ1JlY3Q9e30sdGhpcy55QXhpc1dpZHRoPTAsdGhpcy55QXhpc1dpZHRoTGVmdD0wLHRoaXMueUF4aXNXaWR0aFJpZ2h0PTAsdGhpcy54QXhpc0hlaWdodD0wLHRoaXMuaXNTcGFya2xpbmU9dGhpcy53LmNvbmZpZy5jaGFydC5zcGFya2xpbmUuZW5hYmxlZCx0aGlzLmRpbUhlbHBlcnM9bmV3IGl0KHRoaXMpLHRoaXMuZGltWUF4aXM9bmV3IHN0KHRoaXMpLHRoaXMuZGltWEF4aXM9bmV3IGF0KHRoaXMpLHRoaXMuZGltR3JpZD1uZXcgcnQodGhpcyksdGhpcy5sZ1dpZHRoRm9yU2lkZUxlZ2VuZHM9MCx0aGlzLmdyaWRQYWQ9dGhpcy53LmNvbmZpZy5ncmlkLnBhZGRpbmcsdGhpcy54UGFkUmlnaHQ9MCx0aGlzLnhQYWRMZWZ0PTB9cmV0dXJuIHIodCxbe2tleTpcInBsb3RDb29yZHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncsaT1lLmdsb2JhbHM7dGhpcy5sZ1JlY3Q9dGhpcy5kaW1IZWxwZXJzLmdldExlZ2VuZHNSZWN0KCksdGhpcy5pc1NwYXJrbGluZSYmKGUuY29uZmlnLm1hcmtlcnMuZGlzY3JldGUubGVuZ3RoPjB8fGUuY29uZmlnLm1hcmtlcnMuc2l6ZT4wKSYmT2JqZWN0LmVudHJpZXModGhpcy5ncmlkUGFkKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgaT1nKGUsMiksYT1pWzBdLHM9aVsxXTt0LmdyaWRQYWRbYV09TWF0aC5tYXgocyx0LncuZ2xvYmFscy5tYXJrZXJzLmxhcmdlc3RTaXplLzEuNSl9KSksaS5heGlzQ2hhcnRzP3RoaXMuc2V0RGltZW5zaW9uc0ZvckF4aXNDaGFydHMoKTp0aGlzLnNldERpbWVuc2lvbnNGb3JOb25BeGlzQ2hhcnRzKCksdGhpcy5kaW1HcmlkLmdyaWRQYWRGb3J0aXRsZVN1YnRpdGxlKCksaS5ncmlkSGVpZ2h0PWkuZ3JpZEhlaWdodC10aGlzLmdyaWRQYWQudG9wLXRoaXMuZ3JpZFBhZC5ib3R0b20saS5ncmlkV2lkdGg9aS5ncmlkV2lkdGgtdGhpcy5ncmlkUGFkLmxlZnQtdGhpcy5ncmlkUGFkLnJpZ2h0LXRoaXMueFBhZFJpZ2h0LXRoaXMueFBhZExlZnQ7dmFyIGE9dGhpcy5kaW1HcmlkLmdyaWRQYWRGb3JDb2x1bW5zSW5OdW1lcmljQXhpcyhpLmdyaWRXaWR0aCk7aS5ncmlkV2lkdGg9aS5ncmlkV2lkdGgtMiphLGkudHJhbnNsYXRlWD1pLnRyYW5zbGF0ZVgrdGhpcy5ncmlkUGFkLmxlZnQrdGhpcy54UGFkTGVmdCsoYT4wP2ErNDowKSxpLnRyYW5zbGF0ZVk9aS50cmFuc2xhdGVZK3RoaXMuZ3JpZFBhZC50b3B9fSx7a2V5Olwic2V0RGltZW5zaW9uc0ZvckF4aXNDaGFydHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncsaT1lLmdsb2JhbHMsYT10aGlzLmRpbVlBeGlzLmdldHlBeGlzTGFiZWxzQ29vcmRzKCkscz10aGlzLmRpbVlBeGlzLmdldHlBeGlzVGl0bGVDb29yZHMoKTtlLmdsb2JhbHMueUxhYmVsc0Nvb3Jkcz1bXSxlLmdsb2JhbHMueVRpdGxlQ29vcmRzPVtdLGUuY29uZmlnLnlheGlzLm1hcCgoZnVuY3Rpb24odCxpKXtlLmdsb2JhbHMueUxhYmVsc0Nvb3Jkcy5wdXNoKHt3aWR0aDphW2ldLndpZHRoLGluZGV4Oml9KSxlLmdsb2JhbHMueVRpdGxlQ29vcmRzLnB1c2goe3dpZHRoOnNbaV0ud2lkdGgsaW5kZXg6aX0pfSkpLHRoaXMueUF4aXNXaWR0aD10aGlzLmRpbVlBeGlzLmdldFRvdGFsWUF4aXNXaWR0aCgpO3ZhciByPXRoaXMuZGltWEF4aXMuZ2V0eEF4aXNMYWJlbHNDb29yZHMoKSxvPXRoaXMuZGltWEF4aXMuZ2V0eEF4aXNHcm91cExhYmVsc0Nvb3JkcygpLG49dGhpcy5kaW1YQXhpcy5nZXR4QXhpc1RpdGxlQ29vcmRzKCk7dGhpcy5jb25kaXRpb25hbENoZWNrc0ZvckF4aXNDb29yZHMocixuLG8pLGkudHJhbnNsYXRlWEF4aXNZPWUuZ2xvYmFscy5yb3RhdGVYTGFiZWxzP3RoaXMueEF4aXNIZWlnaHQvODotNCxpLnRyYW5zbGF0ZVhBeGlzWD1lLmdsb2JhbHMucm90YXRlWExhYmVscyYmZS5nbG9iYWxzLmlzWE51bWVyaWMmJmUuY29uZmlnLnhheGlzLmxhYmVscy5yb3RhdGU8PS00NT8tdGhpcy54QXhpc1dpZHRoLzQ6MCxlLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYoaS5yb3RhdGVYTGFiZWxzPSExLGkudHJhbnNsYXRlWEF4aXNZPXBhcnNlSW50KGUuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250U2l6ZSwxMCkvMS41Ki0xKSxpLnRyYW5zbGF0ZVhBeGlzWT1pLnRyYW5zbGF0ZVhBeGlzWStlLmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WSxpLnRyYW5zbGF0ZVhBeGlzWD1pLnRyYW5zbGF0ZVhBeGlzWCtlLmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WDt2YXIgbD10aGlzLnlBeGlzV2lkdGgsaD10aGlzLnhBeGlzSGVpZ2h0O2kueEF4aXNMYWJlbHNIZWlnaHQ9dGhpcy54QXhpc0hlaWdodC1uLmhlaWdodCxpLnhBeGlzR3JvdXBMYWJlbHNIZWlnaHQ9aS54QXhpc0xhYmVsc0hlaWdodC1yLmhlaWdodCxpLnhBeGlzTGFiZWxzV2lkdGg9dGhpcy54QXhpc1dpZHRoLGkueEF4aXNIZWlnaHQ9dGhpcy54QXhpc0hlaWdodDt2YXIgYz0xMDsoXCJyYWRhclwiPT09ZS5jb25maWcuY2hhcnQudHlwZXx8dGhpcy5pc1NwYXJrbGluZSkmJihsPTAsaD1pLmdvbGRlblBhZGRpbmcpLHRoaXMuaXNTcGFya2xpbmUmJih0aGlzLmxnUmVjdD17aGVpZ2h0OjAsd2lkdGg6MH0pLCh0aGlzLmlzU3BhcmtsaW5lfHxcInRyZWVtYXBcIj09PWUuY29uZmlnLmNoYXJ0LnR5cGUpJiYobD0wLGg9MCxjPTApLHRoaXMuaXNTcGFya2xpbmV8fHRoaXMuZGltWEF4aXMuYWRkaXRpb25hbFBhZGRpbmdYTGFiZWxzKHIpO3ZhciBkPWZ1bmN0aW9uKCl7aS50cmFuc2xhdGVYPWwsaS5ncmlkSGVpZ2h0PWkuc3ZnSGVpZ2h0LXQubGdSZWN0LmhlaWdodC1oLSh0LmlzU3BhcmtsaW5lfHxcInRyZWVtYXBcIj09PWUuY29uZmlnLmNoYXJ0LnR5cGU/MDplLmdsb2JhbHMucm90YXRlWExhYmVscz8xMDoxNSksaS5ncmlkV2lkdGg9aS5zdmdXaWR0aC1sfTtzd2l0Y2goXCJ0b3BcIj09PWUuY29uZmlnLnhheGlzLnBvc2l0aW9uJiYoYz1pLnhBeGlzSGVpZ2h0LWUuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5oZWlnaHQtNSksZS5jb25maWcubGVnZW5kLnBvc2l0aW9uKXtjYXNlXCJib3R0b21cIjppLnRyYW5zbGF0ZVk9YyxkKCk7YnJlYWs7Y2FzZVwidG9wXCI6aS50cmFuc2xhdGVZPXRoaXMubGdSZWN0LmhlaWdodCtjLGQoKTticmVhaztjYXNlXCJsZWZ0XCI6aS50cmFuc2xhdGVZPWMsaS50cmFuc2xhdGVYPXRoaXMubGdSZWN0LndpZHRoK2wsaS5ncmlkSGVpZ2h0PWkuc3ZnSGVpZ2h0LWgtMTIsaS5ncmlkV2lkdGg9aS5zdmdXaWR0aC10aGlzLmxnUmVjdC53aWR0aC1sO2JyZWFrO2Nhc2VcInJpZ2h0XCI6aS50cmFuc2xhdGVZPWMsaS50cmFuc2xhdGVYPWwsaS5ncmlkSGVpZ2h0PWkuc3ZnSGVpZ2h0LWgtMTIsaS5ncmlkV2lkdGg9aS5zdmdXaWR0aC10aGlzLmxnUmVjdC53aWR0aC1sLTU7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJMZWdlbmQgcG9zaXRpb24gbm90IHN1cHBvcnRlZFwiKX10aGlzLmRpbUdyaWQuc2V0R3JpZFhQb3NGb3JEdWFsWUF4aXMocyxhKSxuZXcgcSh0aGlzLmN0eCkuc2V0WUF4aXNYUG9zaXRpb24oYSxzKX19LHtrZXk6XCJzZXREaW1lbnNpb25zRm9yTm9uQXhpc0NoYXJ0c1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dC5nbG9iYWxzLGk9dC5jb25maWcsYT0wO3QuY29uZmlnLmxlZ2VuZC5zaG93JiYhdC5jb25maWcubGVnZW5kLmZsb2F0aW5nJiYoYT0yMCk7dmFyIHM9XCJwaWVcIj09PWkuY2hhcnQudHlwZXx8XCJwb2xhckFyZWFcIj09PWkuY2hhcnQudHlwZXx8XCJkb251dFwiPT09aS5jaGFydC50eXBlP1wicGllXCI6XCJyYWRpYWxCYXJcIixyPWkucGxvdE9wdGlvbnNbc10ub2Zmc2V0WSxvPWkucGxvdE9wdGlvbnNbc10ub2Zmc2V0WDtpZighaS5sZWdlbmQuc2hvd3x8aS5sZWdlbmQuZmxvYXRpbmcpcmV0dXJuIGUuZ3JpZEhlaWdodD1lLnN2Z0hlaWdodC1pLmdyaWQucGFkZGluZy5sZWZ0K2kuZ3JpZC5wYWRkaW5nLnJpZ2h0LGUuZ3JpZFdpZHRoPWUuZ3JpZEhlaWdodCxlLnRyYW5zbGF0ZVk9cix2b2lkKGUudHJhbnNsYXRlWD1vKyhlLnN2Z1dpZHRoLWUuZ3JpZFdpZHRoKS8yKTtzd2l0Y2goaS5sZWdlbmQucG9zaXRpb24pe2Nhc2VcImJvdHRvbVwiOmUuZ3JpZEhlaWdodD1lLnN2Z0hlaWdodC10aGlzLmxnUmVjdC5oZWlnaHQtZS5nb2xkZW5QYWRkaW5nLGUuZ3JpZFdpZHRoPWUuc3ZnV2lkdGgsZS50cmFuc2xhdGVZPXItMTAsZS50cmFuc2xhdGVYPW8rKGUuc3ZnV2lkdGgtZS5ncmlkV2lkdGgpLzI7YnJlYWs7Y2FzZVwidG9wXCI6ZS5ncmlkSGVpZ2h0PWUuc3ZnSGVpZ2h0LXRoaXMubGdSZWN0LmhlaWdodC1lLmdvbGRlblBhZGRpbmcsZS5ncmlkV2lkdGg9ZS5zdmdXaWR0aCxlLnRyYW5zbGF0ZVk9dGhpcy5sZ1JlY3QuaGVpZ2h0K3IrMTAsZS50cmFuc2xhdGVYPW8rKGUuc3ZnV2lkdGgtZS5ncmlkV2lkdGgpLzI7YnJlYWs7Y2FzZVwibGVmdFwiOmUuZ3JpZFdpZHRoPWUuc3ZnV2lkdGgtdGhpcy5sZ1JlY3Qud2lkdGgtYSxlLmdyaWRIZWlnaHQ9XCJhdXRvXCIhPT1pLmNoYXJ0LmhlaWdodD9lLnN2Z0hlaWdodDplLmdyaWRXaWR0aCxlLnRyYW5zbGF0ZVk9cixlLnRyYW5zbGF0ZVg9byt0aGlzLmxnUmVjdC53aWR0aCthO2JyZWFrO2Nhc2VcInJpZ2h0XCI6ZS5ncmlkV2lkdGg9ZS5zdmdXaWR0aC10aGlzLmxnUmVjdC53aWR0aC1hLTUsZS5ncmlkSGVpZ2h0PVwiYXV0b1wiIT09aS5jaGFydC5oZWlnaHQ/ZS5zdmdIZWlnaHQ6ZS5ncmlkV2lkdGgsZS50cmFuc2xhdGVZPXIsZS50cmFuc2xhdGVYPW8rMTA7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJMZWdlbmQgcG9zaXRpb24gbm90IHN1cHBvcnRlZFwiKX19fSx7a2V5OlwiY29uZGl0aW9uYWxDaGVja3NGb3JBeGlzQ29vcmRzXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMudyxzPWEuZ2xvYmFscy5oYXNYYXhpc0dyb3Vwcz8yOjEscj1pLmhlaWdodCt0LmhlaWdodCtlLmhlaWdodCxvPWEuZ2xvYmFscy5pc011bHRpTGluZVg/MS4yOmEuZ2xvYmFscy5MSU5FX0hFSUdIVF9SQVRJTyxuPWEuZ2xvYmFscy5yb3RhdGVYTGFiZWxzPzIyOjEwLGw9YS5nbG9iYWxzLnJvdGF0ZVhMYWJlbHMmJlwiYm90dG9tXCI9PT1hLmNvbmZpZy5sZWdlbmQucG9zaXRpb24/MTA6MDt0aGlzLnhBeGlzSGVpZ2h0PXIqbytzKm4rbCx0aGlzLnhBeGlzV2lkdGg9dC53aWR0aCx0aGlzLnhBeGlzSGVpZ2h0LWUuaGVpZ2h0PmEuY29uZmlnLnhheGlzLmxhYmVscy5tYXhIZWlnaHQmJih0aGlzLnhBeGlzSGVpZ2h0PWEuY29uZmlnLnhheGlzLmxhYmVscy5tYXhIZWlnaHQpLGEuY29uZmlnLnhheGlzLmxhYmVscy5taW5IZWlnaHQmJnRoaXMueEF4aXNIZWlnaHQ8YS5jb25maWcueGF4aXMubGFiZWxzLm1pbkhlaWdodCYmKHRoaXMueEF4aXNIZWlnaHQ9YS5jb25maWcueGF4aXMubGFiZWxzLm1pbkhlaWdodCksYS5jb25maWcueGF4aXMuZmxvYXRpbmcmJih0aGlzLnhBeGlzSGVpZ2h0PTApO3ZhciBoPTAsYz0wO2EuY29uZmlnLnlheGlzLmZvckVhY2goKGZ1bmN0aW9uKHQpe2grPXQubGFiZWxzLm1pbldpZHRoLGMrPXQubGFiZWxzLm1heFdpZHRofSkpLHRoaXMueUF4aXNXaWR0aDxoJiYodGhpcy55QXhpc1dpZHRoPWgpLHRoaXMueUF4aXNXaWR0aD5jJiYodGhpcy55QXhpc1dpZHRoPWMpfX1dKSx0fSgpLG50PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLmxnQ3R4PWV9cmV0dXJuIHIodCxbe2tleTpcImdldExlZ2VuZFN0eWxlc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO3Quc2V0QXR0cmlidXRlKFwidHlwZVwiLFwidGV4dC9jc3NcIik7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoXCJcXHRcXG4gICAgXFx0XFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kIHtcXHRcXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XFx0XFxuICAgICAgICBvdmVyZmxvdzogYXV0bztcXHRcXG4gICAgICAgIHBhZGRpbmc6IDAgMTBweDtcXHRcXG4gICAgICB9XFx0XFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tYm90dG9tLCAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi10b3Age1xcdFxcbiAgICAgICAgZmxleC13cmFwOiB3cmFwXFx0XFxuICAgICAgfVxcdFxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLXJpZ2h0LCAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi1sZWZ0IHtcXHRcXG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFx0XFxuICAgICAgICBib3R0b206IDA7XFx0XFxuICAgICAgfVxcdFxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLWJvdHRvbS5hcGV4Y2hhcnRzLWFsaWduLWxlZnQsIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLXRvcC5hcGV4Y2hhcnRzLWFsaWduLWxlZnQsIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLXJpZ2h0LCAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi1sZWZ0IHtcXHRcXG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcXHRcXG4gICAgICB9XFx0XFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tYm90dG9tLmFwZXhjaGFydHMtYWxpZ24tY2VudGVyLCAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi10b3AuYXBleGNoYXJ0cy1hbGlnbi1jZW50ZXIge1xcdFxcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7ICBcXHRcXG4gICAgICB9XFx0XFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tYm90dG9tLmFwZXhjaGFydHMtYWxpZ24tcmlnaHQsIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLXRvcC5hcGV4Y2hhcnRzLWFsaWduLXJpZ2h0IHtcXHRcXG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XFx0XFxuICAgICAgfVxcdFxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC1zZXJpZXMge1xcdFxcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xcdFxcbiAgICAgICAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcXHRcXG4gICAgICB9XFx0XFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tYm90dG9tIC5hcGV4Y2hhcnRzLWxlZ2VuZC1zZXJpZXMsIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLXRvcCAuYXBleGNoYXJ0cy1sZWdlbmQtc2VyaWVze1xcdFxcbiAgICAgICAgZGlzcGxheTogZmxleDtcXHRcXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFx0XFxuICAgICAgfVxcdFxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC10ZXh0IHtcXHRcXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXHRcXG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcXHRcXG4gICAgICB9XFx0XFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLXRleHQgKiwgLmFwZXhjaGFydHMtbGVnZW5kLW1hcmtlciAqIHtcXHRcXG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xcdFxcbiAgICAgIH1cXHRcXG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQtbWFya2VyIHtcXHRcXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXHRcXG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXHRcXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcXHRcXG4gICAgICAgIG1hcmdpbi1yaWdodDogM3B4O1xcdFxcbiAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcXG4gICAgICB9XFx0XFxuICAgICAgXFx0XFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLmFwZXhjaGFydHMtYWxpZ24tcmlnaHQgLmFwZXhjaGFydHMtbGVnZW5kLXNlcmllcywgLmFwZXhjaGFydHMtbGVnZW5kLmFwZXhjaGFydHMtYWxpZ24tbGVmdCAuYXBleGNoYXJ0cy1sZWdlbmQtc2VyaWVze1xcdFxcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcdFxcbiAgICAgIH1cXHRcXG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQtc2VyaWVzLmFwZXhjaGFydHMtbm8tY2xpY2sge1xcdFxcbiAgICAgICAgY3Vyc29yOiBhdXRvO1xcdFxcbiAgICAgIH1cXHRcXG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQgLmFwZXhjaGFydHMtaGlkZGVuLXplcm8tc2VyaWVzLCAuYXBleGNoYXJ0cy1sZWdlbmQgLmFwZXhjaGFydHMtaGlkZGVuLW51bGwtc2VyaWVzIHtcXHRcXG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcXHRcXG4gICAgICB9XFx0XFxuICAgICAgLmFwZXhjaGFydHMtaW5hY3RpdmUtbGVnZW5kIHtcXHRcXG4gICAgICAgIG9wYWNpdHk6IDAuNDU7XFx0XFxuICAgICAgfVwiKTtyZXR1cm4gdC5hcHBlbmRDaGlsZChlKSx0fX0se2tleTpcImdldExlZ2VuZEJCb3hcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWxlZ2VuZFwiKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxlPXQud2lkdGg7cmV0dXJue2Nsd2g6dC5oZWlnaHQsY2x3dzplfX19LHtrZXk6XCJhcHBlbmRUb0ZvcmVpZ25PYmplY3RcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMudy5nbG9iYWxzLmRvbS5lbExlZ2VuZEZvcmVpZ24uYXBwZW5kQ2hpbGQodGhpcy5nZXRMZWdlbmRTdHlsZXMoKSl9fSx7a2V5OlwidG9nZ2xlRGF0YVNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcyxhPXRoaXMudztpZihhLmdsb2JhbHMuYXhpc0NoYXJ0c3x8XCJyYWRpYWxCYXJcIj09PWEuY29uZmlnLmNoYXJ0LnR5cGUpe2EuZ2xvYmFscy5yZXNpemVkPSEwO3ZhciBzPW51bGwscj1udWxsO2lmKGEuZ2xvYmFscy5yaXNpbmdTZXJpZXM9W10sYS5nbG9iYWxzLmF4aXNDaGFydHM/KHM9YS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiLmNvbmNhdCh0LFwiJ11cIikpLHI9cGFyc2VJbnQocy5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKSwxMCkpOihzPWEuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1zZXJpZXNbcmVsPSdcIi5jb25jYXQodCsxLFwiJ11cIikpLHI9cGFyc2VJbnQocy5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksMTApLTEpLGUpW3tjczphLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLGNzaTphLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlc30se2NzOmEuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXMsY3NpOmEuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzfV0uZm9yRWFjaCgoZnVuY3Rpb24odCl7aS5yaXNlQ29sbGFwc2VkU2VyaWVzKHQuY3MsdC5jc2kscil9KSk7ZWxzZSB0aGlzLmhpZGVTZXJpZXMoe3Nlcmllc0VsOnMscmVhbEluZGV4OnJ9KX1lbHNle3ZhciBvPWEuZ2xvYmFscy5kb20uUGFwZXIuc2VsZWN0KFwiIC5hcGV4Y2hhcnRzLXNlcmllc1tyZWw9J1wiLmNvbmNhdCh0KzEsXCInXSBwYXRoXCIpKSxuPWEuY29uZmlnLmNoYXJ0LnR5cGU7aWYoXCJwaWVcIj09PW58fFwicG9sYXJBcmVhXCI9PT1ufHxcImRvbnV0XCI9PT1uKXt2YXIgbD1hLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZG9udXQubGFiZWxzO25ldyBtKHRoaXMubGdDdHguY3R4KS5wYXRoTW91c2VEb3duKG8ubWVtYmVyc1swXSxudWxsKSx0aGlzLmxnQ3R4LmN0eC5waWUucHJpbnREYXRhTGFiZWxzSW5uZXIoby5tZW1iZXJzWzBdLm5vZGUsbCl9by5maXJlKFwiY2xpY2tcIil9fX0se2tleTpcImhpZGVTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LnNlcmllc0VsLGk9dC5yZWFsSW5kZXgsYT10aGlzLncscz14LmNsb25lKGEuY29uZmlnLnNlcmllcyk7aWYoYS5nbG9iYWxzLmF4aXNDaGFydHMpe3ZhciByPSExO2lmKGEuY29uZmlnLnlheGlzW2ldJiZhLmNvbmZpZy55YXhpc1tpXS5zaG93JiZhLmNvbmZpZy55YXhpc1tpXS5zaG93QWx3YXlzJiYocj0hMCxhLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGkpPDAmJihhLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzLnB1c2goe2luZGV4OmksZGF0YTpzW2ldLmRhdGEuc2xpY2UoKSx0eXBlOmUucGFyZW50Tm9kZS5jbGFzc05hbWUuYmFzZVZhbC5zcGxpdChcIi1cIilbMV19KSxhLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlcy5wdXNoKGkpKSksIXIpe2EuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMucHVzaCh7aW5kZXg6aSxkYXRhOnNbaV0uZGF0YS5zbGljZSgpLHR5cGU6ZS5wYXJlbnROb2RlLmNsYXNzTmFtZS5iYXNlVmFsLnNwbGl0KFwiLVwiKVsxXX0pLGEuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLnB1c2goaSk7dmFyIG89YS5nbG9iYWxzLnJpc2luZ1Nlcmllcy5pbmRleE9mKGkpO2EuZ2xvYmFscy5yaXNpbmdTZXJpZXMuc3BsaWNlKG8sMSl9fWVsc2UgYS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5wdXNoKHtpbmRleDppLGRhdGE6c1tpXX0pLGEuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLnB1c2goaSk7Zm9yKHZhciBuPWUuY2hpbGROb2RlcyxsPTA7bDxuLmxlbmd0aDtsKyspbltsXS5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzLXdyYXBcIikmJihuW2xdLmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtaGlkZVwiKT9uW2xdLmNsYXNzTGlzdC5yZW1vdmUoXCJhcGV4Y2hhcnRzLWhpZGVcIik6bltsXS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1oaWRlXCIpKTthLmdsb2JhbHMuYWxsU2VyaWVzQ29sbGFwc2VkPWEuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMubGVuZ3RoPT09YS5jb25maWcuc2VyaWVzLmxlbmd0aCxzPXRoaXMuX2dldFNlcmllc0Jhc2VkT25Db2xsYXBzZWRTdGF0ZShzKSx0aGlzLmxnQ3R4LmN0eC51cGRhdGVIZWxwZXJzLl91cGRhdGVTZXJpZXMocyxhLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCl9fSx7a2V5OlwicmlzZUNvbGxhcHNlZFNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLncscz14LmNsb25lKGEuY29uZmlnLnNlcmllcyk7aWYodC5sZW5ndGg+MCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspdFtyXS5pbmRleD09PWkmJihhLmdsb2JhbHMuYXhpc0NoYXJ0cz8oc1tpXS5kYXRhPXRbcl0uZGF0YS5zbGljZSgpLHQuc3BsaWNlKHIsMSksZS5zcGxpY2UociwxKSxhLmdsb2JhbHMucmlzaW5nU2VyaWVzLnB1c2goaSkpOihzW2ldPXRbcl0uZGF0YSx0LnNwbGljZShyLDEpLGUuc3BsaWNlKHIsMSksYS5nbG9iYWxzLnJpc2luZ1Nlcmllcy5wdXNoKGkpKSk7cz10aGlzLl9nZXRTZXJpZXNCYXNlZE9uQ29sbGFwc2VkU3RhdGUocyksdGhpcy5sZ0N0eC5jdHgudXBkYXRlSGVscGVycy5fdXBkYXRlU2VyaWVzKHMsYS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQpfX19LHtrZXk6XCJfZ2V0U2VyaWVzQmFzZWRPbkNvbGxhcHNlZFN0YXRlXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53O3JldHVybiBlLmdsb2JhbHMuYXhpc0NoYXJ0cz90LmZvckVhY2goKGZ1bmN0aW9uKGksYSl7ZS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihhKT4tMSYmKHRbYV0uZGF0YT1bXSl9KSk6dC5mb3JFYWNoKChmdW5jdGlvbihpLGEpe2UuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YoYSk+LTEmJih0W2FdPTApfSkpLHR9fV0pLHR9KCksbHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5vbkxlZ2VuZENsaWNrPXRoaXMub25MZWdlbmRDbGljay5iaW5kKHRoaXMpLHRoaXMub25MZWdlbmRIb3ZlcmVkPXRoaXMub25MZWdlbmRIb3ZlcmVkLmJpbmQodGhpcyksdGhpcy5pc0JhcnNEaXN0cmlidXRlZD1cImJhclwiPT09dGhpcy53LmNvbmZpZy5jaGFydC50eXBlJiZ0aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLmJhci5kaXN0cmlidXRlZCYmMT09PXRoaXMudy5jb25maWcuc2VyaWVzLmxlbmd0aCx0aGlzLmxlZ2VuZEhlbHBlcnM9bmV3IG50KHRoaXMpfXJldHVybiByKHQsW3trZXk6XCJpbml0XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10Lmdsb2JhbHMsaT10LmNvbmZpZztpZigoaS5sZWdlbmQuc2hvd0ZvclNpbmdsZVNlcmllcyYmMT09PWUuc2VyaWVzLmxlbmd0aHx8dGhpcy5pc0JhcnNEaXN0cmlidXRlZHx8ZS5zZXJpZXMubGVuZ3RoPjF8fCFlLmF4aXNDaGFydHMpJiZpLmxlZ2VuZC5zaG93KXtmb3IoO2UuZG9tLmVsTGVnZW5kV3JhcC5maXJzdENoaWxkOyllLmRvbS5lbExlZ2VuZFdyYXAucmVtb3ZlQ2hpbGQoZS5kb20uZWxMZWdlbmRXcmFwLmZpcnN0Q2hpbGQpO3RoaXMuZHJhd0xlZ2VuZHMoKSx4LmlzSUUxMSgpP2RvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXS5hcHBlbmRDaGlsZCh0aGlzLmxlZ2VuZEhlbHBlcnMuZ2V0TGVnZW5kU3R5bGVzKCkpOnRoaXMubGVnZW5kSGVscGVycy5hcHBlbmRUb0ZvcmVpZ25PYmplY3QoKSxcImJvdHRvbVwiPT09aS5sZWdlbmQucG9zaXRpb258fFwidG9wXCI9PT1pLmxlZ2VuZC5wb3NpdGlvbj90aGlzLmxlZ2VuZEFsaWduSG9yaXpvbnRhbCgpOlwicmlnaHRcIiE9PWkubGVnZW5kLnBvc2l0aW9uJiZcImxlZnRcIiE9PWkubGVnZW5kLnBvc2l0aW9ufHx0aGlzLmxlZ2VuZEFsaWduVmVydGljYWwoKX19fSx7a2V5OlwiZHJhd0xlZ2VuZHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncsaT1lLmNvbmZpZy5sZWdlbmQuZm9udEZhbWlseSxhPWUuZ2xvYmFscy5zZXJpZXNOYW1lcyxzPWUuZ2xvYmFscy5jb2xvcnMuc2xpY2UoKTtpZihcImhlYXRtYXBcIj09PWUuY29uZmlnLmNoYXJ0LnR5cGUpe3ZhciByPWUuY29uZmlnLnBsb3RPcHRpb25zLmhlYXRtYXAuY29sb3JTY2FsZS5yYW5nZXM7YT1yLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQubmFtZT90Lm5hbWU6dC5mcm9tK1wiIC0gXCIrdC50b30pKSxzPXIubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5jb2xvcn0pKX1lbHNlIHRoaXMuaXNCYXJzRGlzdHJpYnV0ZWQmJihhPWUuZ2xvYmFscy5sYWJlbHMuc2xpY2UoKSk7ZS5jb25maWcubGVnZW5kLmN1c3RvbUxlZ2VuZEl0ZW1zLmxlbmd0aCYmKGE9ZS5jb25maWcubGVnZW5kLmN1c3RvbUxlZ2VuZEl0ZW1zKTtmb3IodmFyIG89ZS5nbG9iYWxzLmxlZ2VuZEZvcm1hdHRlcixuPWUuY29uZmlnLmxlZ2VuZC5pbnZlcnNlT3JkZXIsbD1uP2EubGVuZ3RoLTE6MDtuP2w+PTA6bDw9YS5sZW5ndGgtMTtuP2wtLTpsKyspe3ZhciBoPW8oYVtsXSx7c2VyaWVzSW5kZXg6bCx3OmV9KSxjPSExLGQ9ITE7aWYoZS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5sZW5ndGg+MClmb3IodmFyIGc9MDtnPGUuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMubGVuZ3RoO2crKyllLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzW2ddLmluZGV4PT09bCYmKGM9ITApO2lmKGUuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmxlbmd0aD4wKWZvcih2YXIgdT0wO3U8ZS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXMubGVuZ3RoO3UrKyllLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlc1t1XT09PWwmJihkPSEwKTt2YXIgcD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKTtwLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWxlZ2VuZC1tYXJrZXJcIik7dmFyIGY9ZS5jb25maWcubGVnZW5kLm1hcmtlcnMub2Zmc2V0WCxiPWUuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLm9mZnNldFksdj1lLmNvbmZpZy5sZWdlbmQubWFya2Vycy5oZWlnaHQsdz1lLmNvbmZpZy5sZWdlbmQubWFya2Vycy53aWR0aCxrPWUuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLnN0cm9rZVdpZHRoLEE9ZS5jb25maWcubGVnZW5kLm1hcmtlcnMuc3Ryb2tlQ29sb3IsUz1lLmNvbmZpZy5sZWdlbmQubWFya2Vycy5yYWRpdXMsQz1wLnN0eWxlO0MuYmFja2dyb3VuZD1zW2xdLEMuY29sb3I9c1tsXSxDLnNldFByb3BlcnR5KFwiYmFja2dyb3VuZFwiLHNbbF0sXCJpbXBvcnRhbnRcIiksZS5jb25maWcubGVnZW5kLm1hcmtlcnMuZmlsbENvbG9ycyYmZS5jb25maWcubGVnZW5kLm1hcmtlcnMuZmlsbENvbG9yc1tsXSYmKEMuYmFja2dyb3VuZD1lLmNvbmZpZy5sZWdlbmQubWFya2Vycy5maWxsQ29sb3JzW2xdKSx2b2lkIDAhPT1lLmdsb2JhbHMuc2VyaWVzQ29sb3JzW2xdJiYoQy5iYWNrZ3JvdW5kPWUuZ2xvYmFscy5zZXJpZXNDb2xvcnNbbF0sQy5jb2xvcj1lLmdsb2JhbHMuc2VyaWVzQ29sb3JzW2xdKSxDLmhlaWdodD1BcnJheS5pc0FycmF5KHYpP3BhcnNlRmxvYXQodltsXSkrXCJweFwiOnBhcnNlRmxvYXQodikrXCJweFwiLEMud2lkdGg9QXJyYXkuaXNBcnJheSh3KT9wYXJzZUZsb2F0KHdbbF0pK1wicHhcIjpwYXJzZUZsb2F0KHcpK1wicHhcIixDLmxlZnQ9KEFycmF5LmlzQXJyYXkoZik/cGFyc2VGbG9hdChmW2xdKTpwYXJzZUZsb2F0KGYpKStcInB4XCIsQy50b3A9KEFycmF5LmlzQXJyYXkoYik/cGFyc2VGbG9hdChiW2xdKTpwYXJzZUZsb2F0KGIpKStcInB4XCIsQy5ib3JkZXJXaWR0aD1BcnJheS5pc0FycmF5KGspP2tbbF06ayxDLmJvcmRlckNvbG9yPUFycmF5LmlzQXJyYXkoQSk/QVtsXTpBLEMuYm9yZGVyUmFkaXVzPUFycmF5LmlzQXJyYXkoUyk/cGFyc2VGbG9hdChTW2xdKStcInB4XCI6cGFyc2VGbG9hdChTKStcInB4XCIsZS5jb25maWcubGVnZW5kLm1hcmtlcnMuY3VzdG9tSFRNTCYmKEFycmF5LmlzQXJyYXkoZS5jb25maWcubGVnZW5kLm1hcmtlcnMuY3VzdG9tSFRNTCk/ZS5jb25maWcubGVnZW5kLm1hcmtlcnMuY3VzdG9tSFRNTFtsXSYmKHAuaW5uZXJIVE1MPWUuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLmN1c3RvbUhUTUxbbF0oKSk6cC5pbm5lckhUTUw9ZS5jb25maWcubGVnZW5kLm1hcmtlcnMuY3VzdG9tSFRNTCgpKSxtLnNldEF0dHJzKHAse3JlbDpsKzEsXCJkYXRhOmNvbGxhcHNlZFwiOmN8fGR9KSwoY3x8ZCkmJnAuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtaW5hY3RpdmUtbGVnZW5kXCIpO3ZhciBMPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksUD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKTtQLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWxlZ2VuZC10ZXh0XCIpLFAuaW5uZXJIVE1MPUFycmF5LmlzQXJyYXkoaCk/aC5qb2luKFwiIFwiKTpoO3ZhciBJPWUuY29uZmlnLmxlZ2VuZC5sYWJlbHMudXNlU2VyaWVzQ29sb3JzP2UuZ2xvYmFscy5jb2xvcnNbbF06ZS5jb25maWcubGVnZW5kLmxhYmVscy5jb2xvcnM7SXx8KEk9ZS5jb25maWcuY2hhcnQuZm9yZUNvbG9yKSxQLnN0eWxlLmNvbG9yPUksUC5zdHlsZS5mb250U2l6ZT1wYXJzZUZsb2F0KGUuY29uZmlnLmxlZ2VuZC5mb250U2l6ZSkrXCJweFwiLFAuc3R5bGUuZm9udFdlaWdodD1lLmNvbmZpZy5sZWdlbmQuZm9udFdlaWdodCxQLnN0eWxlLmZvbnRGYW1pbHk9aXx8ZS5jb25maWcuY2hhcnQuZm9udEZhbWlseSxtLnNldEF0dHJzKFAse3JlbDpsKzEsaTpsLFwiZGF0YTpkZWZhdWx0LXRleHRcIjplbmNvZGVVUklDb21wb25lbnQoaCksXCJkYXRhOmNvbGxhcHNlZFwiOmN8fGR9KSxMLmFwcGVuZENoaWxkKHApLEwuYXBwZW5kQ2hpbGQoUCk7dmFyIFQ9bmV3IHkodGhpcy5jdHgpO2lmKCFlLmNvbmZpZy5sZWdlbmQuc2hvd0Zvclplcm9TZXJpZXMpMD09PVQuZ2V0U2VyaWVzVG90YWxCeUluZGV4KGwpJiZULnNlcmllc0hhdmVTYW1lVmFsdWVzKGwpJiYhVC5pc1Nlcmllc051bGwobCkmJi0xPT09ZS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihsKSYmLTE9PT1lLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGwpJiZMLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWhpZGRlbi16ZXJvLXNlcmllc1wiKTtlLmNvbmZpZy5sZWdlbmQuc2hvd0Zvck51bGxTZXJpZXN8fFQuaXNTZXJpZXNOdWxsKGwpJiYtMT09PWUuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YobCkmJi0xPT09ZS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihsKSYmTC5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1oaWRkZW4tbnVsbC1zZXJpZXNcIiksZS5nbG9iYWxzLmRvbS5lbExlZ2VuZFdyYXAuYXBwZW5kQ2hpbGQoTCksZS5nbG9iYWxzLmRvbS5lbExlZ2VuZFdyYXAuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYWxpZ24tXCIuY29uY2F0KGUuY29uZmlnLmxlZ2VuZC5ob3Jpem9udGFsQWxpZ24pKSxlLmdsb2JhbHMuZG9tLmVsTGVnZW5kV3JhcC5jbGFzc0xpc3QuYWRkKFwiYXB4LWxlZ2VuZC1wb3NpdGlvbi1cIitlLmNvbmZpZy5sZWdlbmQucG9zaXRpb24pLEwuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtbGVnZW5kLXNlcmllc1wiKSxMLnN0eWxlLm1hcmdpbj1cIlwiLmNvbmNhdChlLmNvbmZpZy5sZWdlbmQuaXRlbU1hcmdpbi52ZXJ0aWNhbCxcInB4IFwiKS5jb25jYXQoZS5jb25maWcubGVnZW5kLml0ZW1NYXJnaW4uaG9yaXpvbnRhbCxcInB4XCIpLGUuZ2xvYmFscy5kb20uZWxMZWdlbmRXcmFwLnN0eWxlLndpZHRoPWUuY29uZmlnLmxlZ2VuZC53aWR0aD9lLmNvbmZpZy5sZWdlbmQud2lkdGgrXCJweFwiOlwiXCIsZS5nbG9iYWxzLmRvbS5lbExlZ2VuZFdyYXAuc3R5bGUuaGVpZ2h0PWUuY29uZmlnLmxlZ2VuZC5oZWlnaHQ/ZS5jb25maWcubGVnZW5kLmhlaWdodCtcInB4XCI6XCJcIixtLnNldEF0dHJzKEwse3JlbDpsKzEsc2VyaWVzTmFtZTp4LmVzY2FwZVN0cmluZyhhW2xdKSxcImRhdGE6Y29sbGFwc2VkXCI6Y3x8ZH0pLChjfHxkKSYmTC5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1pbmFjdGl2ZS1sZWdlbmRcIiksZS5jb25maWcubGVnZW5kLm9uSXRlbUNsaWNrLnRvZ2dsZURhdGFTZXJpZXN8fEwuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtbm8tY2xpY2tcIil9ZS5nbG9iYWxzLmRvbS5lbFdyYXAuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdC5vbkxlZ2VuZENsaWNrLCEwKSxlLmNvbmZpZy5sZWdlbmQub25JdGVtSG92ZXIuaGlnaGxpZ2h0RGF0YVNlcmllcyYmMD09PWUuY29uZmlnLmxlZ2VuZC5jdXN0b21MZWdlbmRJdGVtcy5sZW5ndGgmJihlLmdsb2JhbHMuZG9tLmVsV3JhcC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsdC5vbkxlZ2VuZEhvdmVyZWQsITApLGUuZ2xvYmFscy5kb20uZWxXcmFwLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW91dFwiLHQub25MZWdlbmRIb3ZlcmVkLCEwKSl9fSx7a2V5Olwic2V0TGVnZW5kV3JhcFhZXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT1pLmdsb2JhbHMuZG9tLmVsTGVnZW5kV3JhcCxzPWEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscj0wLG89MDtpZihcImJvdHRvbVwiPT09aS5jb25maWcubGVnZW5kLnBvc2l0aW9uKW8rPWkuZ2xvYmFscy5zdmdIZWlnaHQtcy5oZWlnaHQvMjtlbHNlIGlmKFwidG9wXCI9PT1pLmNvbmZpZy5sZWdlbmQucG9zaXRpb24pe3ZhciBuPW5ldyBvdCh0aGlzLmN0eCksbD1uLmRpbUhlbHBlcnMuZ2V0VGl0bGVTdWJ0aXRsZUNvb3JkcyhcInRpdGxlXCIpLmhlaWdodCxoPW4uZGltSGVscGVycy5nZXRUaXRsZVN1YnRpdGxlQ29vcmRzKFwic3VidGl0bGVcIikuaGVpZ2h0O289bysobD4wP2wtMTA6MCkrKGg+MD9oLTEwOjApfWEuc3R5bGUucG9zaXRpb249XCJhYnNvbHV0ZVwiLHI9cit0K2kuY29uZmlnLmxlZ2VuZC5vZmZzZXRYLG89bytlK2kuY29uZmlnLmxlZ2VuZC5vZmZzZXRZLGEuc3R5bGUubGVmdD1yK1wicHhcIixhLnN0eWxlLnRvcD1vK1wicHhcIixcImJvdHRvbVwiPT09aS5jb25maWcubGVnZW5kLnBvc2l0aW9uPyhhLnN0eWxlLnRvcD1cImF1dG9cIixhLnN0eWxlLmJvdHRvbT01LWkuY29uZmlnLmxlZ2VuZC5vZmZzZXRZK1wicHhcIik6XCJyaWdodFwiPT09aS5jb25maWcubGVnZW5kLnBvc2l0aW9uJiYoYS5zdHlsZS5sZWZ0PVwiYXV0b1wiLGEuc3R5bGUucmlnaHQ9MjUraS5jb25maWcubGVnZW5kLm9mZnNldFgrXCJweFwiKTtbXCJ3aWR0aFwiLFwiaGVpZ2h0XCJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe2Euc3R5bGVbdF0mJihhLnN0eWxlW3RdPXBhcnNlSW50KGkuY29uZmlnLmxlZ2VuZFt0XSwxMCkrXCJweFwiKX0pKX19LHtrZXk6XCJsZWdlbmRBbGlnbkhvcml6b250YWxcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudzt0Lmdsb2JhbHMuZG9tLmVsTGVnZW5kV3JhcC5zdHlsZS5yaWdodD0wO3ZhciBlPXRoaXMubGVnZW5kSGVscGVycy5nZXRMZWdlbmRCQm94KCksaT1uZXcgb3QodGhpcy5jdHgpLGE9aS5kaW1IZWxwZXJzLmdldFRpdGxlU3VidGl0bGVDb29yZHMoXCJ0aXRsZVwiKSxzPWkuZGltSGVscGVycy5nZXRUaXRsZVN1YnRpdGxlQ29vcmRzKFwic3VidGl0bGVcIikscj0wO1wiYm90dG9tXCI9PT10LmNvbmZpZy5sZWdlbmQucG9zaXRpb24/cj0tZS5jbHdoLzEuODpcInRvcFwiPT09dC5jb25maWcubGVnZW5kLnBvc2l0aW9uJiYocj1hLmhlaWdodCtzLmhlaWdodCt0LmNvbmZpZy50aXRsZS5tYXJnaW4rdC5jb25maWcuc3VidGl0bGUubWFyZ2luLTEwKSx0aGlzLnNldExlZ2VuZFdyYXBYWSgyMCxyKX19LHtrZXk6XCJsZWdlbmRBbGlnblZlcnRpY2FsXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10aGlzLmxlZ2VuZEhlbHBlcnMuZ2V0TGVnZW5kQkJveCgpLGk9MDtcImxlZnRcIj09PXQuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiYmKGk9MjApLFwicmlnaHRcIj09PXQuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiYmKGk9dC5nbG9iYWxzLnN2Z1dpZHRoLWUuY2x3dy0xMCksdGhpcy5zZXRMZWdlbmRXcmFwWFkoaSwyMCl9fSx7a2V5Olwib25MZWdlbmRIb3ZlcmVkXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9dC50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1sZWdlbmQtdGV4dFwiKXx8dC50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1sZWdlbmQtbWFya2VyXCIpO2lmKFwiaGVhdG1hcFwiPT09ZS5jb25maWcuY2hhcnQudHlwZXx8dGhpcy5pc0JhcnNEaXN0cmlidXRlZCl7aWYoaSl7dmFyIGE9cGFyc2VJbnQodC50YXJnZXQuZ2V0QXR0cmlidXRlKFwicmVsXCIpLDEwKS0xO3RoaXMuY3R4LmV2ZW50cy5maXJlRXZlbnQoXCJsZWdlbmRIb3ZlclwiLFt0aGlzLmN0eCxhLHRoaXMud10pLG5ldyBOKHRoaXMuY3R4KS5oaWdobGlnaHRSYW5nZUluU2VyaWVzKHQsdC50YXJnZXQpfX1lbHNlIXQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtaW5hY3RpdmUtbGVnZW5kXCIpJiZpJiZuZXcgTih0aGlzLmN0eCkudG9nZ2xlU2VyaWVzT25Ib3Zlcih0LHQudGFyZ2V0KX19LHtrZXk6XCJvbkxlZ2VuZENsaWNrXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53O2lmKCFlLmNvbmZpZy5sZWdlbmQuY3VzdG9tTGVnZW5kSXRlbXMubGVuZ3RoJiYodC50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1sZWdlbmQtdGV4dFwiKXx8dC50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1sZWdlbmQtbWFya2VyXCIpKSl7dmFyIGk9cGFyc2VJbnQodC50YXJnZXQuZ2V0QXR0cmlidXRlKFwicmVsXCIpLDEwKS0xLGE9XCJ0cnVlXCI9PT10LnRhcmdldC5nZXRBdHRyaWJ1dGUoXCJkYXRhOmNvbGxhcHNlZFwiKSxzPXRoaXMudy5jb25maWcuY2hhcnQuZXZlbnRzLmxlZ2VuZENsaWNrO1wiZnVuY3Rpb25cIj09dHlwZW9mIHMmJnModGhpcy5jdHgsaSx0aGlzLncpLHRoaXMuY3R4LmV2ZW50cy5maXJlRXZlbnQoXCJsZWdlbmRDbGlja1wiLFt0aGlzLmN0eCxpLHRoaXMud10pO3ZhciByPXRoaXMudy5jb25maWcubGVnZW5kLm1hcmtlcnMub25DbGljaztcImZ1bmN0aW9uXCI9PXR5cGVvZiByJiZ0LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWxlZ2VuZC1tYXJrZXJcIikmJihyKHRoaXMuY3R4LGksdGhpcy53KSx0aGlzLmN0eC5ldmVudHMuZmlyZUV2ZW50KFwibGVnZW5kTWFya2VyQ2xpY2tcIixbdGhpcy5jdHgsaSx0aGlzLnddKSksXCJ0cmVlbWFwXCIhPT1lLmNvbmZpZy5jaGFydC50eXBlJiZcImhlYXRtYXBcIiE9PWUuY29uZmlnLmNoYXJ0LnR5cGUmJiF0aGlzLmlzQmFyc0Rpc3RyaWJ1dGVkJiZlLmNvbmZpZy5sZWdlbmQub25JdGVtQ2xpY2sudG9nZ2xlRGF0YVNlcmllcyYmdGhpcy5sZWdlbmRIZWxwZXJzLnRvZ2dsZURhdGFTZXJpZXMoaSxhKX19fV0pLHR9KCksaHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnc7dmFyIGk9dGhpcy53O3RoaXMuZXY9dGhpcy53LmNvbmZpZy5jaGFydC5ldmVudHMsdGhpcy5zZWxlY3RlZENsYXNzPVwiYXBleGNoYXJ0cy1zZWxlY3RlZFwiLHRoaXMubG9jYWxlVmFsdWVzPXRoaXMudy5nbG9iYWxzLmxvY2FsZS50b29sYmFyLHRoaXMubWluWD1pLmdsb2JhbHMubWluWCx0aGlzLm1heFg9aS5nbG9iYWxzLm1heFh9cmV0dXJuIHIodCxbe2tleTpcImNyZWF0ZVRvb2xiYXJcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncsaT1mdW5jdGlvbigpe3JldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpfSxhPWkoKTtpZihhLnNldEF0dHJpYnV0ZShcImNsYXNzXCIsXCJhcGV4Y2hhcnRzLXRvb2xiYXJcIiksYS5zdHlsZS50b3A9ZS5jb25maWcuY2hhcnQudG9vbGJhci5vZmZzZXRZK1wicHhcIixhLnN0eWxlLnJpZ2h0PTMtZS5jb25maWcuY2hhcnQudG9vbGJhci5vZmZzZXRYK1wicHhcIixlLmdsb2JhbHMuZG9tLmVsV3JhcC5hcHBlbmRDaGlsZChhKSx0aGlzLmVsWm9vbT1pKCksdGhpcy5lbFpvb21Jbj1pKCksdGhpcy5lbFpvb21PdXQ9aSgpLHRoaXMuZWxQYW49aSgpLHRoaXMuZWxTZWxlY3Rpb249aSgpLHRoaXMuZWxab29tUmVzZXQ9aSgpLHRoaXMuZWxNZW51SWNvbj1pKCksdGhpcy5lbE1lbnU9aSgpLHRoaXMuZWxDdXN0b21JY29ucz1bXSx0aGlzLnQ9ZS5jb25maWcuY2hhcnQudG9vbGJhci50b29scyxBcnJheS5pc0FycmF5KHRoaXMudC5jdXN0b21JY29ucykpZm9yKHZhciBzPTA7czx0aGlzLnQuY3VzdG9tSWNvbnMubGVuZ3RoO3MrKyl0aGlzLmVsQ3VzdG9tSWNvbnMucHVzaChpKCkpO3ZhciByPVtdLG89ZnVuY3Rpb24oaSxhLHMpe3ZhciBvPWkudG9Mb3dlckNhc2UoKTt0LnRbb10mJmUuY29uZmlnLmNoYXJ0Lnpvb20uZW5hYmxlZCYmci5wdXNoKHtlbDphLGljb246XCJzdHJpbmdcIj09dHlwZW9mIHQudFtvXT90LnRbb106cyx0aXRsZTp0LmxvY2FsZVZhbHVlc1tpXSxjbGFzczpcImFwZXhjaGFydHMtXCIuY29uY2F0KG8sXCItaWNvblwiKX0pfTtvKFwiem9vbUluXCIsdGhpcy5lbFpvb21JbiwnPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxcbiAgICA8cGF0aCBkPVwiTTAgMGgyNHYyNEgwelwiIGZpbGw9XCJub25lXCIvPlxcbiAgICA8cGF0aCBkPVwiTTEzIDdoLTJ2NEg3djJoNHY0aDJ2LTRoNHYtMmgtNFY3em0tMS01QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpcIi8+XFxuPC9zdmc+XFxuJyksbyhcInpvb21PdXRcIix0aGlzLmVsWm9vbU91dCwnPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxcbiAgICA8cGF0aCBkPVwiTTAgMGgyNHYyNEgwelwiIGZpbGw9XCJub25lXCIvPlxcbiAgICA8cGF0aCBkPVwiTTcgMTF2MmgxMHYtMkg3em01LTlDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4elwiLz5cXG48L3N2Zz5cXG4nKTt2YXIgbj1mdW5jdGlvbihpKXt0LnRbaV0mJmUuY29uZmlnLmNoYXJ0W2ldLmVuYWJsZWQmJnIucHVzaCh7ZWw6XCJ6b29tXCI9PT1pP3QuZWxab29tOnQuZWxTZWxlY3Rpb24saWNvbjpcInN0cmluZ1wiPT10eXBlb2YgdC50W2ldP3QudFtpXTpcInpvb21cIj09PWk/JzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCIjMDAwMDAwXCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyNFwiPlxcbiAgICA8cGF0aCBkPVwiTTE1LjUgMTRoLS43OWwtLjI4LS4yN0MxNS40MSAxMi41OSAxNiAxMS4xMSAxNiA5LjUgMTYgNS45MSAxMy4wOSAzIDkuNSAzUzMgNS45MSAzIDkuNSA1LjkxIDE2IDkuNSAxNmMxLjYxIDAgMy4wOS0uNTkgNC4yMy0xLjU3bC4yNy4yOHYuNzlsNSA0Ljk5TDIwLjQ5IDE5bC00Ljk5LTV6bS02IDBDNy4wMSAxNCA1IDExLjk5IDUgOS41UzcuMDEgNSA5LjUgNSAxNCA3LjAxIDE0IDkuNSAxMS45OSAxNCA5LjUgMTR6XCIvPlxcbiAgICA8cGF0aCBkPVwiTTAgMGgyNHYyNEgwVjB6XCIgZmlsbD1cIm5vbmVcIi8+XFxuICAgIDxwYXRoIGQ9XCJNMTIgMTBoLTJ2Mkg5di0ySDdWOWgyVjdoMXYyaDJ2MXpcIi8+XFxuPC9zdmc+JzonPHN2ZyBmaWxsPVwiIzZFODE5MlwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XFxuICAgIDxwYXRoIGQ9XCJNMCAwaDI0djI0SDB6XCIgZmlsbD1cIm5vbmVcIi8+XFxuICAgIDxwYXRoIGQ9XCJNMyA1aDJWM2MtMS4xIDAtMiAuOS0yIDJ6bTAgOGgydi0ySDN2MnptNCA4aDJ2LTJIN3Yyek0zIDloMlY3SDN2MnptMTAtNmgtMnYyaDJWM3ptNiAwdjJoMmMwLTEuMS0uOS0yLTItMnpNNSAyMXYtMkgzYzAgMS4xLjkgMiAyIDJ6bS0yLTRoMnYtMkgzdjJ6TTkgM0g3djJoMlYzem0yIDE4aDJ2LTJoLTJ2MnptOC04aDJ2LTJoLTJ2MnptMCA4YzEuMSAwIDItLjkgMi0yaC0ydjJ6bTAtMTJoMlY3aC0ydjJ6bTAgOGgydi0yaC0ydjJ6bS00IDRoMnYtMmgtMnYyem0wLTE2aDJWM2gtMnYyelwiLz5cXG48L3N2Zz4nLHRpdGxlOnQubG9jYWxlVmFsdWVzW1wiem9vbVwiPT09aT9cInNlbGVjdGlvblpvb21cIjpcInNlbGVjdGlvblwiXSxjbGFzczplLmdsb2JhbHMuaXNUb3VjaERldmljZT9cImFwZXhjaGFydHMtZWxlbWVudC1oaWRkZW5cIjpcImFwZXhjaGFydHMtXCIuY29uY2F0KGksXCItaWNvblwiKX0pfTtuKFwiem9vbVwiKSxuKFwic2VsZWN0aW9uXCIpLHRoaXMudC5wYW4mJmUuY29uZmlnLmNoYXJ0Lnpvb20uZW5hYmxlZCYmci5wdXNoKHtlbDp0aGlzLmVsUGFuLGljb246XCJzdHJpbmdcIj09dHlwZW9mIHRoaXMudC5wYW4/dGhpcy50LnBhbjonPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgeG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIgZmlsbD1cIiMwMDAwMDBcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjI0XCI+XFxuICAgIDxkZWZzPlxcbiAgICAgICAgPHBhdGggZD1cIk0wIDBoMjR2MjRIMHpcIiBpZD1cImFcIi8+XFxuICAgIDwvZGVmcz5cXG4gICAgPGNsaXBQYXRoIGlkPVwiYlwiPlxcbiAgICAgICAgPHVzZSBvdmVyZmxvdz1cInZpc2libGVcIiB4bGluazpocmVmPVwiI2FcIi8+XFxuICAgIDwvY2xpcFBhdGg+XFxuICAgIDxwYXRoIGNsaXAtcGF0aD1cInVybCgjYilcIiBkPVwiTTIzIDUuNVYyMGMwIDIuMi0xLjggNC00IDRoLTcuM2MtMS4wOCAwLTIuMS0uNDMtMi44NS0xLjE5TDEgMTQuODNzMS4yNi0xLjIzIDEuMy0xLjI1Yy4yMi0uMTkuNDktLjI5Ljc5LS4yOS4yMiAwIC40Mi4wNi42LjE2LjA0LjAxIDQuMzEgMi40NiA0LjMxIDIuNDZWNGMwLS44My42Ny0xLjUgMS41LTEuNVMxMSAzLjE3IDExIDR2N2gxVjEuNWMwLS44My42Ny0xLjUgMS41LTEuNVMxNSAuNjcgMTUgMS41VjExaDFWMi41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41VjExaDFWNS41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41elwiLz5cXG48L3N2Zz4nLHRpdGxlOnRoaXMubG9jYWxlVmFsdWVzLnBhbixjbGFzczplLmdsb2JhbHMuaXNUb3VjaERldmljZT9cImFwZXhjaGFydHMtZWxlbWVudC1oaWRkZW5cIjpcImFwZXhjaGFydHMtcGFuLWljb25cIn0pLG8oXCJyZXNldFwiLHRoaXMuZWxab29tUmVzZXQsJzxzdmcgZmlsbD1cIiMwMDAwMDBcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjI0XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxcbiAgICA8cGF0aCBkPVwiTTEwIDIwdi02aDR2Nmg1di04aDNMMTIgMyAyIDEyaDN2OHpcIi8+XFxuICAgIDxwYXRoIGQ9XCJNMCAwaDI0djI0SDB6XCIgZmlsbD1cIm5vbmVcIi8+XFxuPC9zdmc+JyksdGhpcy50LmRvd25sb2FkJiZyLnB1c2goe2VsOnRoaXMuZWxNZW51SWNvbixpY29uOlwic3RyaW5nXCI9PXR5cGVvZiB0aGlzLnQuZG93bmxvYWQ/dGhpcy50LmRvd25sb2FkOic8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+PHBhdGggZmlsbD1cIm5vbmVcIiBkPVwiTTAgMGgyNHYyNEgwVjB6XCIvPjxwYXRoIGQ9XCJNMyAxOGgxOHYtMkgzdjJ6bTAtNWgxOHYtMkgzdjJ6bTAtN3YyaDE4VjZIM3pcIi8+PC9zdmc+Jyx0aXRsZTp0aGlzLmxvY2FsZVZhbHVlcy5tZW51LGNsYXNzOlwiYXBleGNoYXJ0cy1tZW51LWljb25cIn0pO2Zvcih2YXIgbD0wO2w8dGhpcy5lbEN1c3RvbUljb25zLmxlbmd0aDtsKyspci5wdXNoKHtlbDp0aGlzLmVsQ3VzdG9tSWNvbnNbbF0saWNvbjp0aGlzLnQuY3VzdG9tSWNvbnNbbF0uaWNvbix0aXRsZTp0aGlzLnQuY3VzdG9tSWNvbnNbbF0udGl0bGUsaW5kZXg6dGhpcy50LmN1c3RvbUljb25zW2xdLmluZGV4LGNsYXNzOlwiYXBleGNoYXJ0cy10b29sYmFyLWN1c3RvbS1pY29uIFwiK3RoaXMudC5jdXN0b21JY29uc1tsXS5jbGFzc30pO3IuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0LmluZGV4JiZ4Lm1vdmVJbmRleEluQXJyYXkocixlLHQuaW5kZXgpfSkpO2Zvcih2YXIgaD0wO2g8ci5sZW5ndGg7aCsrKW0uc2V0QXR0cnMocltoXS5lbCx7Y2xhc3M6cltoXS5jbGFzcyx0aXRsZTpyW2hdLnRpdGxlfSkscltoXS5lbC5pbm5lckhUTUw9cltoXS5pY29uLGEuYXBwZW5kQ2hpbGQocltoXS5lbCk7dGhpcy5fY3JlYXRlSGFtYnVyZ2VyTWVudShhKSxlLmdsb2JhbHMuem9vbUVuYWJsZWQ/dGhpcy5lbFpvb20uY2xhc3NMaXN0LmFkZCh0aGlzLnNlbGVjdGVkQ2xhc3MpOmUuZ2xvYmFscy5wYW5FbmFibGVkP3RoaXMuZWxQYW4uY2xhc3NMaXN0LmFkZCh0aGlzLnNlbGVjdGVkQ2xhc3MpOmUuZ2xvYmFscy5zZWxlY3Rpb25FbmFibGVkJiZ0aGlzLmVsU2VsZWN0aW9uLmNsYXNzTGlzdC5hZGQodGhpcy5zZWxlY3RlZENsYXNzKSx0aGlzLmFkZFRvb2xiYXJFdmVudExpc3RlbmVycygpfX0se2tleTpcIl9jcmVhdGVIYW1idXJnZXJNZW51XCIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5lbE1lbnVJdGVtcz1bXSx0LmFwcGVuZENoaWxkKHRoaXMuZWxNZW51KSxtLnNldEF0dHJzKHRoaXMuZWxNZW51LHtjbGFzczpcImFwZXhjaGFydHMtbWVudVwifSk7dmFyIGU9W3tuYW1lOlwiZXhwb3J0U1ZHXCIsdGl0bGU6dGhpcy5sb2NhbGVWYWx1ZXMuZXhwb3J0VG9TVkd9LHtuYW1lOlwiZXhwb3J0UE5HXCIsdGl0bGU6dGhpcy5sb2NhbGVWYWx1ZXMuZXhwb3J0VG9QTkd9LHtuYW1lOlwiZXhwb3J0Q1NWXCIsdGl0bGU6dGhpcy5sb2NhbGVWYWx1ZXMuZXhwb3J0VG9DU1Z9XTt0aGlzLncuZ2xvYmFscy5hbGxTZXJpZXNIYXNFcXVhbFh8fGUuc3BsaWNlKDIsMSk7Zm9yKHZhciBpPTA7aTxlLmxlbmd0aDtpKyspdGhpcy5lbE1lbnVJdGVtcy5wdXNoKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikpLHRoaXMuZWxNZW51SXRlbXNbaV0uaW5uZXJIVE1MPWVbaV0udGl0bGUsbS5zZXRBdHRycyh0aGlzLmVsTWVudUl0ZW1zW2ldLHtjbGFzczpcImFwZXhjaGFydHMtbWVudS1pdGVtIFwiLmNvbmNhdChlW2ldLm5hbWUpLHRpdGxlOmVbaV0udGl0bGV9KSx0aGlzLmVsTWVudS5hcHBlbmRDaGlsZCh0aGlzLmVsTWVudUl0ZW1zW2ldKX19LHtrZXk6XCJhZGRUb29sYmFyRXZlbnRMaXN0ZW5lcnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5lbFpvb21SZXNldC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0aGlzLmhhbmRsZVpvb21SZXNldC5iaW5kKHRoaXMpKSx0aGlzLmVsU2VsZWN0aW9uLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHRoaXMudG9nZ2xlWm9vbVNlbGVjdGlvbi5iaW5kKHRoaXMsXCJzZWxlY3Rpb25cIikpLHRoaXMuZWxab29tLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHRoaXMudG9nZ2xlWm9vbVNlbGVjdGlvbi5iaW5kKHRoaXMsXCJ6b29tXCIpKSx0aGlzLmVsWm9vbUluLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHRoaXMuaGFuZGxlWm9vbUluLmJpbmQodGhpcykpLHRoaXMuZWxab29tT3V0LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHRoaXMuaGFuZGxlWm9vbU91dC5iaW5kKHRoaXMpKSx0aGlzLmVsUGFuLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHRoaXMudG9nZ2xlUGFubmluZy5iaW5kKHRoaXMpKSx0aGlzLmVsTWVudUljb24uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy50b2dnbGVNZW51LmJpbmQodGhpcykpLHRoaXMuZWxNZW51SXRlbXMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5jbGFzc0xpc3QuY29udGFpbnMoXCJleHBvcnRTVkdcIik/ZS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0LmhhbmRsZURvd25sb2FkLmJpbmQodCxcInN2Z1wiKSk6ZS5jbGFzc0xpc3QuY29udGFpbnMoXCJleHBvcnRQTkdcIik/ZS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0LmhhbmRsZURvd25sb2FkLmJpbmQodCxcInBuZ1wiKSk6ZS5jbGFzc0xpc3QuY29udGFpbnMoXCJleHBvcnRDU1ZcIikmJmUuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdC5oYW5kbGVEb3dubG9hZC5iaW5kKHQsXCJjc3ZcIikpfSkpO2Zvcih2YXIgZT0wO2U8dGhpcy50LmN1c3RvbUljb25zLmxlbmd0aDtlKyspdGhpcy5lbEN1c3RvbUljb25zW2VdLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHRoaXMudC5jdXN0b21JY29uc1tlXS5jbGljay5iaW5kKHRoaXMsdGhpcy5jdHgsdGhpcy5jdHgudykpfX0se2tleTpcInRvZ2dsZVpvb21TZWxlY3Rpb25cIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmN0eC5nZXRTeW5jZWRDaGFydHMoKS5mb3JFYWNoKChmdW5jdGlvbihlKXtlLmN0eC50b29sYmFyLnRvZ2dsZU90aGVyQ29udHJvbHMoKTt2YXIgaT1cInNlbGVjdGlvblwiPT09dD9lLmN0eC50b29sYmFyLmVsU2VsZWN0aW9uOmUuY3R4LnRvb2xiYXIuZWxab29tLGE9XCJzZWxlY3Rpb25cIj09PXQ/XCJzZWxlY3Rpb25FbmFibGVkXCI6XCJ6b29tRW5hYmxlZFwiO2Uudy5nbG9iYWxzW2FdPSFlLncuZ2xvYmFsc1thXSxpLmNsYXNzTGlzdC5jb250YWlucyhlLmN0eC50b29sYmFyLnNlbGVjdGVkQ2xhc3MpP2kuY2xhc3NMaXN0LnJlbW92ZShlLmN0eC50b29sYmFyLnNlbGVjdGVkQ2xhc3MpOmkuY2xhc3NMaXN0LmFkZChlLmN0eC50b29sYmFyLnNlbGVjdGVkQ2xhc3MpfSkpfX0se2tleTpcImdldFRvb2xiYXJJY29uc1JlZmVyZW5jZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O3RoaXMuZWxab29tfHwodGhpcy5lbFpvb209dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXpvb20taWNvblwiKSksdGhpcy5lbFBhbnx8KHRoaXMuZWxQYW49dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXBhbi1pY29uXCIpKSx0aGlzLmVsU2VsZWN0aW9ufHwodGhpcy5lbFNlbGVjdGlvbj10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtc2VsZWN0aW9uLWljb25cIikpfX0se2tleTpcImVuYWJsZVpvb21QYW5Gcm9tVG9vbGJhclwiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMudG9nZ2xlT3RoZXJDb250cm9scygpLFwicGFuXCI9PT10P3RoaXMudy5nbG9iYWxzLnBhbkVuYWJsZWQ9ITA6dGhpcy53Lmdsb2JhbHMuem9vbUVuYWJsZWQ9ITA7dmFyIGU9XCJwYW5cIj09PXQ/dGhpcy5lbFBhbjp0aGlzLmVsWm9vbSxpPVwicGFuXCI9PT10P3RoaXMuZWxab29tOnRoaXMuZWxQYW47ZSYmZS5jbGFzc0xpc3QuYWRkKHRoaXMuc2VsZWN0ZWRDbGFzcyksaSYmaS5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuc2VsZWN0ZWRDbGFzcyl9fSx7a2V5OlwidG9nZ2xlUGFubmluZ1wiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jdHguZ2V0U3luY2VkQ2hhcnRzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5jdHgudG9vbGJhci50b2dnbGVPdGhlckNvbnRyb2xzKCksdC53Lmdsb2JhbHMucGFuRW5hYmxlZD0hdC53Lmdsb2JhbHMucGFuRW5hYmxlZCx0LmN0eC50b29sYmFyLmVsUGFuLmNsYXNzTGlzdC5jb250YWlucyh0LmN0eC50b29sYmFyLnNlbGVjdGVkQ2xhc3MpP3QuY3R4LnRvb2xiYXIuZWxQYW4uY2xhc3NMaXN0LnJlbW92ZSh0LmN0eC50b29sYmFyLnNlbGVjdGVkQ2xhc3MpOnQuY3R4LnRvb2xiYXIuZWxQYW4uY2xhc3NMaXN0LmFkZCh0LmN0eC50b29sYmFyLnNlbGVjdGVkQ2xhc3MpfSkpfX0se2tleTpcInRvZ2dsZU90aGVyQ29udHJvbHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLnc7ZS5nbG9iYWxzLnBhbkVuYWJsZWQ9ITEsZS5nbG9iYWxzLnpvb21FbmFibGVkPSExLGUuZ2xvYmFscy5zZWxlY3Rpb25FbmFibGVkPSExLHRoaXMuZ2V0VG9vbGJhckljb25zUmVmZXJlbmNlKCksW3RoaXMuZWxQYW4sdGhpcy5lbFNlbGVjdGlvbix0aGlzLmVsWm9vbV0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZSYmZS5jbGFzc0xpc3QucmVtb3ZlKHQuc2VsZWN0ZWRDbGFzcyl9KSl9fSx7a2V5OlwiaGFuZGxlWm9vbUluXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7dC5nbG9iYWxzLmlzUmFuZ2VCYXImJih0aGlzLm1pblg9dC5nbG9iYWxzLm1pblksdGhpcy5tYXhYPXQuZ2xvYmFscy5tYXhZKTt2YXIgZT0odGhpcy5taW5YK3RoaXMubWF4WCkvMixpPSh0aGlzLm1pblgrZSkvMixhPSh0aGlzLm1heFgrZSkvMixzPXRoaXMuX2dldE5ld01pblhNYXhYKGksYSk7dC5nbG9iYWxzLmRpc2FibGVab29tSW58fHRoaXMuem9vbVVwZGF0ZU9wdGlvbnMocy5taW5YLHMubWF4WCl9fSx7a2V5OlwiaGFuZGxlWm9vbU91dFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O2lmKHQuZ2xvYmFscy5pc1JhbmdlQmFyJiYodGhpcy5taW5YPXQuZ2xvYmFscy5taW5ZLHRoaXMubWF4WD10Lmdsb2JhbHMubWF4WSksIShcImRhdGV0aW1lXCI9PT10LmNvbmZpZy54YXhpcy50eXBlJiZuZXcgRGF0ZSh0aGlzLm1pblgpLmdldFVUQ0Z1bGxZZWFyKCk8MWUzKSl7dmFyIGU9KHRoaXMubWluWCt0aGlzLm1heFgpLzIsaT10aGlzLm1pblgtKGUtdGhpcy5taW5YKSxhPXRoaXMubWF4WC0oZS10aGlzLm1heFgpLHM9dGhpcy5fZ2V0TmV3TWluWE1heFgoaSxhKTt0Lmdsb2JhbHMuZGlzYWJsZVpvb21PdXR8fHRoaXMuem9vbVVwZGF0ZU9wdGlvbnMocy5taW5YLHMubWF4WCl9fX0se2tleTpcIl9nZXROZXdNaW5YTWF4WFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWM7cmV0dXJue21pblg6aT9NYXRoLmZsb29yKHQpOnQsbWF4WDppP01hdGguZmxvb3IoZSk6ZX19fSx7a2V5Olwiem9vbVVwZGF0ZU9wdGlvbnNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztpZih2b2lkIDAhPT10fHx2b2lkIDAhPT1lKXtpZighKGkuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmKHQ8MSYmKHQ9MSxlPWkuZ2xvYmFscy5kYXRhUG9pbnRzKSxlLXQ8MikpKXt2YXIgYT17bWluOnQsbWF4OmV9LHM9dGhpcy5nZXRCZWZvcmVab29tUmFuZ2UoYSk7cyYmKGE9cy54YXhpcyk7dmFyIHI9e3hheGlzOmF9LG89eC5jbG9uZShpLmdsb2JhbHMuaW5pdGlhbENvbmZpZy55YXhpcyk7aWYoaS5jb25maWcuY2hhcnQuem9vbS5hdXRvU2NhbGVZYXhpcylvPW5ldyBfKHRoaXMuY3R4KS5hdXRvU2NhbGVZKHRoaXMuY3R4LG8se3hheGlzOmF9KTtpLmNvbmZpZy5jaGFydC5ncm91cHx8KHIueWF4aXM9byksdGhpcy53Lmdsb2JhbHMuem9vbWVkPSEwLHRoaXMuY3R4LnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZU9wdGlvbnMociwhMSx0aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5lbmFibGVkKSx0aGlzLnpvb21DYWxsYmFjayhhLG8pfX1lbHNlIHRoaXMuaGFuZGxlWm9vbVJlc2V0KCl9fSx7a2V5Olwiem9vbUNhbGxiYWNrXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtcImZ1bmN0aW9uXCI9PXR5cGVvZiB0aGlzLmV2Lnpvb21lZCYmdGhpcy5ldi56b29tZWQodGhpcy5jdHgse3hheGlzOnQseWF4aXM6ZX0pfX0se2tleTpcImdldEJlZm9yZVpvb21SYW5nZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9bnVsbDtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiB0aGlzLmV2LmJlZm9yZVpvb20mJihpPXRoaXMuZXYuYmVmb3JlWm9vbSh0aGlzLHt4YXhpczp0LHlheGlzOmV9KSksaX19LHtrZXk6XCJ0b2dnbGVNZW51XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3dpbmRvdy5zZXRUaW1lb3V0KChmdW5jdGlvbigpe3QuZWxNZW51LmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtbWVudS1vcGVuXCIpP3QuZWxNZW51LmNsYXNzTGlzdC5yZW1vdmUoXCJhcGV4Y2hhcnRzLW1lbnUtb3BlblwiKTp0LmVsTWVudS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1tZW51LW9wZW5cIil9KSwwKX19LHtrZXk6XCJoYW5kbGVEb3dubG9hZFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPW5ldyBHKHRoaXMuY3R4KTtzd2l0Y2godCl7Y2FzZVwic3ZnXCI6aS5leHBvcnRUb1NWRyh0aGlzLmN0eCk7YnJlYWs7Y2FzZVwicG5nXCI6aS5leHBvcnRUb1BuZyh0aGlzLmN0eCk7YnJlYWs7Y2FzZVwiY3N2XCI6aS5leHBvcnRUb0NTVih7c2VyaWVzOmUuY29uZmlnLnNlcmllcyxjb2x1bW5EZWxpbWl0ZXI6ZS5jb25maWcuY2hhcnQudG9vbGJhci5leHBvcnQuY3N2LmNvbHVtbkRlbGltaXRlcn0pfX19LHtrZXk6XCJoYW5kbGVab29tUmVzZXRcIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmN0eC5nZXRTeW5jZWRDaGFydHMoKS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT10Lnc7aWYoZS5nbG9iYWxzLmxhc3RYQXhpcy5taW49dm9pZCAwLGUuZ2xvYmFscy5sYXN0WEF4aXMubWF4PXZvaWQgMCx0LnVwZGF0ZUhlbHBlcnMucmV2ZXJ0RGVmYXVsdEF4aXNNaW5NYXgoKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmNvbmZpZy5jaGFydC5ldmVudHMuYmVmb3JlUmVzZXRab29tKXt2YXIgaT1lLmNvbmZpZy5jaGFydC5ldmVudHMuYmVmb3JlUmVzZXRab29tKHQsZSk7aSYmdC51cGRhdGVIZWxwZXJzLnJldmVydERlZmF1bHRBeGlzTWluTWF4KGkpfVwiZnVuY3Rpb25cIj09dHlwZW9mIGUuY29uZmlnLmNoYXJ0LmV2ZW50cy56b29tZWQmJnQuY3R4LnRvb2xiYXIuem9vbUNhbGxiYWNrKHttaW46ZS5jb25maWcueGF4aXMubWluLG1heDplLmNvbmZpZy54YXhpcy5tYXh9KSxlLmdsb2JhbHMuem9vbWVkPSExO3ZhciBhPXQuY3R4LnNlcmllcy5lbXB0eUNvbGxhcHNlZFNlcmllcyh4LmNsb25lKGUuZ2xvYmFscy5pbml0aWFsU2VyaWVzKSk7dC51cGRhdGVIZWxwZXJzLl91cGRhdGVTZXJpZXMoYSxlLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCl9KSl9fSx7a2V5OlwiZGVzdHJveVwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5lbFpvb209bnVsbCx0aGlzLmVsWm9vbUluPW51bGwsdGhpcy5lbFpvb21PdXQ9bnVsbCx0aGlzLmVsUGFuPW51bGwsdGhpcy5lbFNlbGVjdGlvbj1udWxsLHRoaXMuZWxab29tUmVzZXQ9bnVsbCx0aGlzLmVsTWVudUljb249bnVsbH19XSksdH0oKSxjdD1mdW5jdGlvbih0KXtuKGksaHQpO3ZhciBlPWQoaSk7ZnVuY3Rpb24gaSh0KXt2YXIgcztyZXR1cm4gYSh0aGlzLGkpLChzPWUuY2FsbCh0aGlzLHQpKS5jdHg9dCxzLnc9dC53LHMuZHJhZ2dlZD0hMSxzLmdyYXBoaWNzPW5ldyBtKHMuY3R4KSxzLmV2ZW50TGlzdD1bXCJtb3VzZWRvd25cIixcIm1vdXNlbGVhdmVcIixcIm1vdXNlbW92ZVwiLFwidG91Y2hzdGFydFwiLFwidG91Y2htb3ZlXCIsXCJtb3VzZXVwXCIsXCJ0b3VjaGVuZFwiXSxzLmNsaWVudFg9MCxzLmNsaWVudFk9MCxzLnN0YXJ0WD0wLHMuZW5kWD0wLHMuZHJhZ1g9MCxzLnN0YXJ0WT0wLHMuZW5kWT0wLHMuZHJhZ1k9MCxzLm1vdmVEaXJlY3Rpb249XCJub25lXCIsc31yZXR1cm4gcihpLFt7a2V5OlwiaW5pdFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10Lnh5UmF0aW9zLGE9dGhpcy53LHM9dGhpczt0aGlzLnh5UmF0aW9zPWksdGhpcy56b29tUmVjdD10aGlzLmdyYXBoaWNzLmRyYXdSZWN0KDAsMCwwLDApLHRoaXMuc2VsZWN0aW9uUmVjdD10aGlzLmdyYXBoaWNzLmRyYXdSZWN0KDAsMCwwLDApLHRoaXMuZ3JpZFJlY3Q9YS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWdyaWRcIiksdGhpcy56b29tUmVjdC5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXpvb20tcmVjdFwiKSx0aGlzLnNlbGVjdGlvblJlY3Qubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1zZWxlY3Rpb24tcmVjdFwiKSxhLmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZCh0aGlzLnpvb21SZWN0KSxhLmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZCh0aGlzLnNlbGVjdGlvblJlY3QpLFwieFwiPT09YS5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnR5cGU/dGhpcy5zbERyYWdnYWJsZVJlY3Q9dGhpcy5zZWxlY3Rpb25SZWN0LmRyYWdnYWJsZSh7bWluWDowLG1pblk6MCxtYXhYOmEuZ2xvYmFscy5ncmlkV2lkdGgsbWF4WTphLmdsb2JhbHMuZ3JpZEhlaWdodH0pLm9uKFwiZHJhZ21vdmVcIix0aGlzLnNlbGVjdGlvbkRyYWdnaW5nLmJpbmQodGhpcyxcImRyYWdnaW5nXCIpKTpcInlcIj09PWEuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi50eXBlP3RoaXMuc2xEcmFnZ2FibGVSZWN0PXRoaXMuc2VsZWN0aW9uUmVjdC5kcmFnZ2FibGUoe21pblg6MCxtYXhYOmEuZ2xvYmFscy5ncmlkV2lkdGh9KS5vbihcImRyYWdtb3ZlXCIsdGhpcy5zZWxlY3Rpb25EcmFnZ2luZy5iaW5kKHRoaXMsXCJkcmFnZ2luZ1wiKSk6dGhpcy5zbERyYWdnYWJsZVJlY3Q9dGhpcy5zZWxlY3Rpb25SZWN0LmRyYWdnYWJsZSgpLm9uKFwiZHJhZ21vdmVcIix0aGlzLnNlbGVjdGlvbkRyYWdnaW5nLmJpbmQodGhpcyxcImRyYWdnaW5nXCIpKSx0aGlzLnByZXNlbGVjdGVkU2VsZWN0aW9uKCksdGhpcy5ob3ZlckFyZWE9YS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIlwiLmNvbmNhdChhLmdsb2JhbHMuY2hhcnRDbGFzcyxcIiAuYXBleGNoYXJ0cy1zdmdcIikpLHRoaXMuaG92ZXJBcmVhLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXpvb21hYmxlXCIpLHRoaXMuZXZlbnRMaXN0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2UuaG92ZXJBcmVhLmFkZEV2ZW50TGlzdGVuZXIodCxzLnN2Z01vdXNlRXZlbnRzLmJpbmQocyxpKSx7Y2FwdHVyZTohMSxwYXNzaXZlOiEwfSl9KSl9fSx7a2V5OlwiZGVzdHJveVwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zbERyYWdnYWJsZVJlY3QmJih0aGlzLnNsRHJhZ2dhYmxlUmVjdC5kcmFnZ2FibGUoITEpLHRoaXMuc2xEcmFnZ2FibGVSZWN0Lm9mZigpLHRoaXMuc2VsZWN0aW9uUmVjdC5vZmYoKSksdGhpcy5zZWxlY3Rpb25SZWN0PW51bGwsdGhpcy56b29tUmVjdD1udWxsLHRoaXMuZ3JpZFJlY3Q9bnVsbH19LHtrZXk6XCJzdmdNb3VzZUV2ZW50c1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9dGhpcyxzPXRoaXMuY3R4LnRvb2xiYXIscj1pLmdsb2JhbHMuem9vbUVuYWJsZWQ/aS5jb25maWcuY2hhcnQuem9vbS50eXBlOmkuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi50eXBlLG89aS5jb25maWcuY2hhcnQudG9vbGJhci5hdXRvU2VsZWN0ZWQ7aWYoZS5zaGlmdEtleT8odGhpcy5zaGlmdFdhc1ByZXNzZWQ9ITAscy5lbmFibGVab29tUGFuRnJvbVRvb2xiYXIoXCJwYW5cIj09PW8/XCJ6b29tXCI6XCJwYW5cIikpOnRoaXMuc2hpZnRXYXNQcmVzc2VkJiYocy5lbmFibGVab29tUGFuRnJvbVRvb2xiYXIobyksdGhpcy5zaGlmdFdhc1ByZXNzZWQ9ITEpLGUudGFyZ2V0KXt2YXIgbixsPWUudGFyZ2V0LmNsYXNzTGlzdDtpZihlLnRhcmdldC5wYXJlbnROb2RlJiZudWxsIT09ZS50YXJnZXQucGFyZW50Tm9kZSYmKG49ZS50YXJnZXQucGFyZW50Tm9kZS5jbGFzc0xpc3QpLCEobC5jb250YWlucyhcImFwZXhjaGFydHMtc2VsZWN0aW9uLXJlY3RcIil8fGwuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWxlZ2VuZC1tYXJrZXJcIil8fGwuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWxlZ2VuZC10ZXh0XCIpfHxuJiZuLmNvbnRhaW5zKFwiYXBleGNoYXJ0cy10b29sYmFyXCIpKSl7aWYoYS5jbGllbnRYPVwidG91Y2htb3ZlXCI9PT1lLnR5cGV8fFwidG91Y2hzdGFydFwiPT09ZS50eXBlP2UudG91Y2hlc1swXS5jbGllbnRYOlwidG91Y2hlbmRcIj09PWUudHlwZT9lLmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFg6ZS5jbGllbnRYLGEuY2xpZW50WT1cInRvdWNobW92ZVwiPT09ZS50eXBlfHxcInRvdWNoc3RhcnRcIj09PWUudHlwZT9lLnRvdWNoZXNbMF0uY2xpZW50WTpcInRvdWNoZW5kXCI9PT1lLnR5cGU/ZS5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRZOmUuY2xpZW50WSxcIm1vdXNlZG93blwiPT09ZS50eXBlJiYxPT09ZS53aGljaCl7dmFyIGg9YS5ncmlkUmVjdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTthLnN0YXJ0WD1hLmNsaWVudFgtaC5sZWZ0LGEuc3RhcnRZPWEuY2xpZW50WS1oLnRvcCxhLmRyYWdnZWQ9ITEsYS53Lmdsb2JhbHMubW91c2Vkb3duPSEwfWlmKChcIm1vdXNlbW92ZVwiPT09ZS50eXBlJiYxPT09ZS53aGljaHx8XCJ0b3VjaG1vdmVcIj09PWUudHlwZSkmJihhLmRyYWdnZWQ9ITAsaS5nbG9iYWxzLnBhbkVuYWJsZWQ/KGkuZ2xvYmFscy5zZWxlY3Rpb249bnVsbCxhLncuZ2xvYmFscy5tb3VzZWRvd24mJmEucGFuRHJhZ2dpbmcoe2NvbnRleHQ6YSx6b29tdHlwZTpyLHh5UmF0aW9zOnR9KSk6KGEudy5nbG9iYWxzLm1vdXNlZG93biYmaS5nbG9iYWxzLnpvb21FbmFibGVkfHxhLncuZ2xvYmFscy5tb3VzZWRvd24mJmkuZ2xvYmFscy5zZWxlY3Rpb25FbmFibGVkKSYmKGEuc2VsZWN0aW9uPWEuc2VsZWN0aW9uRHJhd2luZyh7Y29udGV4dDphLHpvb210eXBlOnJ9KSkpLFwibW91c2V1cFwiPT09ZS50eXBlfHxcInRvdWNoZW5kXCI9PT1lLnR5cGV8fFwibW91c2VsZWF2ZVwiPT09ZS50eXBlKXt2YXIgYz1hLmdyaWRSZWN0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2Eudy5nbG9iYWxzLm1vdXNlZG93biYmKGEuZW5kWD1hLmNsaWVudFgtYy5sZWZ0LGEuZW5kWT1hLmNsaWVudFktYy50b3AsYS5kcmFnWD1NYXRoLmFicyhhLmVuZFgtYS5zdGFydFgpLGEuZHJhZ1k9TWF0aC5hYnMoYS5lbmRZLWEuc3RhcnRZKSwoaS5nbG9iYWxzLnpvb21FbmFibGVkfHxpLmdsb2JhbHMuc2VsZWN0aW9uRW5hYmxlZCkmJmEuc2VsZWN0aW9uRHJhd24oe2NvbnRleHQ6YSx6b29tdHlwZTpyfSksaS5nbG9iYWxzLnBhbkVuYWJsZWQmJmkuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmYS5kZWxheWVkUGFuU2Nyb2xsZWQoKSksaS5nbG9iYWxzLnpvb21FbmFibGVkJiZhLmhpZGVTZWxlY3Rpb25SZWN0KHRoaXMuc2VsZWN0aW9uUmVjdCksYS5kcmFnZ2VkPSExLGEudy5nbG9iYWxzLm1vdXNlZG93bj0hMX10aGlzLm1ha2VTZWxlY3Rpb25SZWN0RHJhZ2dhYmxlKCl9fX19LHtrZXk6XCJtYWtlU2VsZWN0aW9uUmVjdERyYWdnYWJsZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O2lmKHRoaXMuc2VsZWN0aW9uUmVjdCl7dmFyIGU9dGhpcy5zZWxlY3Rpb25SZWN0Lm5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7ZS53aWR0aD4wJiZlLmhlaWdodD4wJiZ0aGlzLnNsRHJhZ2dhYmxlUmVjdC5zZWxlY3RpemUoe3BvaW50czpcImwsIHJcIixwb2ludFNpemU6OCxwb2ludFR5cGU6XCJyZWN0XCJ9KS5yZXNpemUoe2NvbnN0cmFpbnQ6e21pblg6MCxtaW5ZOjAsbWF4WDp0Lmdsb2JhbHMuZ3JpZFdpZHRoLG1heFk6dC5nbG9iYWxzLmdyaWRIZWlnaHR9fSkub24oXCJyZXNpemluZ1wiLHRoaXMuc2VsZWN0aW9uRHJhZ2dpbmcuYmluZCh0aGlzLFwicmVzaXppbmdcIikpfX19LHtrZXk6XCJwcmVzZWxlY3RlZFNlbGVjdGlvblwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dGhpcy54eVJhdGlvcztpZighdC5nbG9iYWxzLnpvb21FbmFibGVkKWlmKHZvaWQgMCE9PXQuZ2xvYmFscy5zZWxlY3Rpb24mJm51bGwhPT10Lmdsb2JhbHMuc2VsZWN0aW9uKXRoaXMuZHJhd1NlbGVjdGlvblJlY3QodC5nbG9iYWxzLnNlbGVjdGlvbik7ZWxzZSBpZih2b2lkIDAhPT10LmNvbmZpZy5jaGFydC5zZWxlY3Rpb24ueGF4aXMubWluJiZ2b2lkIDAhPT10LmNvbmZpZy5jaGFydC5zZWxlY3Rpb24ueGF4aXMubWF4KXt2YXIgaT0odC5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnhheGlzLm1pbi10Lmdsb2JhbHMubWluWCkvZS54UmF0aW8sYT17eDppLHk6MCx3aWR0aDp0Lmdsb2JhbHMuZ3JpZFdpZHRoLSh0Lmdsb2JhbHMubWF4WC10LmNvbmZpZy5jaGFydC5zZWxlY3Rpb24ueGF4aXMubWF4KS9lLnhSYXRpby1pLGhlaWdodDp0Lmdsb2JhbHMuZ3JpZEhlaWdodCx0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowLHNlbGVjdGlvbkVuYWJsZWQ6ITB9O3RoaXMuZHJhd1NlbGVjdGlvblJlY3QoYSksdGhpcy5tYWtlU2VsZWN0aW9uUmVjdERyYWdnYWJsZSgpLFwiZnVuY3Rpb25cIj09dHlwZW9mIHQuY29uZmlnLmNoYXJ0LmV2ZW50cy5zZWxlY3Rpb24mJnQuY29uZmlnLmNoYXJ0LmV2ZW50cy5zZWxlY3Rpb24odGhpcy5jdHgse3hheGlzOnttaW46dC5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnhheGlzLm1pbixtYXg6dC5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnhheGlzLm1heH0seWF4aXM6e319KX19fSx7a2V5OlwiZHJhd1NlbGVjdGlvblJlY3RcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LngsaT10LnksYT10LndpZHRoLHM9dC5oZWlnaHQscj10LnRyYW5zbGF0ZVgsbz12b2lkIDA9PT1yPzA6cixuPXQudHJhbnNsYXRlWSxsPXZvaWQgMD09PW4/MDpuLGg9dGhpcy53LGM9dGhpcy56b29tUmVjdCxkPXRoaXMuc2VsZWN0aW9uUmVjdDtpZih0aGlzLmRyYWdnZWR8fG51bGwhPT1oLmdsb2JhbHMuc2VsZWN0aW9uKXt2YXIgZz17dHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiK28rXCIsIFwiK2wrXCIpXCJ9O2guZ2xvYmFscy56b29tRW5hYmxlZCYmdGhpcy5kcmFnZ2VkJiYoYTwwJiYoYT0xKSxjLmF0dHIoe3g6ZSx5Omksd2lkdGg6YSxoZWlnaHQ6cyxmaWxsOmguY29uZmlnLmNoYXJ0Lnpvb20uem9vbWVkQXJlYS5maWxsLmNvbG9yLFwiZmlsbC1vcGFjaXR5XCI6aC5jb25maWcuY2hhcnQuem9vbS56b29tZWRBcmVhLmZpbGwub3BhY2l0eSxzdHJva2U6aC5jb25maWcuY2hhcnQuem9vbS56b29tZWRBcmVhLnN0cm9rZS5jb2xvcixcInN0cm9rZS13aWR0aFwiOmguY29uZmlnLmNoYXJ0Lnpvb20uem9vbWVkQXJlYS5zdHJva2Uud2lkdGgsXCJzdHJva2Utb3BhY2l0eVwiOmguY29uZmlnLmNoYXJ0Lnpvb20uem9vbWVkQXJlYS5zdHJva2Uub3BhY2l0eX0pLG0uc2V0QXR0cnMoYy5ub2RlLGcpKSxoLmdsb2JhbHMuc2VsZWN0aW9uRW5hYmxlZCYmKGQuYXR0cih7eDplLHk6aSx3aWR0aDphPjA/YTowLGhlaWdodDpzPjA/czowLGZpbGw6aC5jb25maWcuY2hhcnQuc2VsZWN0aW9uLmZpbGwuY29sb3IsXCJmaWxsLW9wYWNpdHlcIjpoLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24uZmlsbC5vcGFjaXR5LHN0cm9rZTpoLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24uc3Ryb2tlLmNvbG9yLFwic3Ryb2tlLXdpZHRoXCI6aC5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnN0cm9rZS53aWR0aCxcInN0cm9rZS1kYXNoYXJyYXlcIjpoLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24uc3Ryb2tlLmRhc2hBcnJheSxcInN0cm9rZS1vcGFjaXR5XCI6aC5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnN0cm9rZS5vcGFjaXR5fSksbS5zZXRBdHRycyhkLm5vZGUsZykpfX19LHtrZXk6XCJoaWRlU2VsZWN0aW9uUmVjdFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3QmJnQuYXR0cih7eDowLHk6MCx3aWR0aDowLGhlaWdodDowfSl9fSx7a2V5Olwic2VsZWN0aW9uRHJhd2luZ1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuY29udGV4dCxpPXQuem9vbXR5cGUsYT10aGlzLncscz1lLHI9dGhpcy5ncmlkUmVjdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxvPXMuc3RhcnRYLTEsbj1zLnN0YXJ0WSxsPSExLGg9ITEsYz1zLmNsaWVudFgtci5sZWZ0LW8sZD1zLmNsaWVudFktci50b3AtbixnPXt9O3JldHVybiBNYXRoLmFicyhjK28pPmEuZ2xvYmFscy5ncmlkV2lkdGg/Yz1hLmdsb2JhbHMuZ3JpZFdpZHRoLW86cy5jbGllbnRYLXIubGVmdDwwJiYoYz1vKSxvPnMuY2xpZW50WC1yLmxlZnQmJihsPSEwLGM9TWF0aC5hYnMoYykpLG4+cy5jbGllbnRZLXIudG9wJiYoaD0hMCxkPU1hdGguYWJzKGQpKSxnPVwieFwiPT09aT97eDpsP28tYzpvLHk6MCx3aWR0aDpjLGhlaWdodDphLmdsb2JhbHMuZ3JpZEhlaWdodH06XCJ5XCI9PT1pP3t4OjAseTpoP24tZDpuLHdpZHRoOmEuZ2xvYmFscy5ncmlkV2lkdGgsaGVpZ2h0OmR9Ont4Omw/by1jOm8seTpoP24tZDpuLHdpZHRoOmMsaGVpZ2h0OmR9LHMuZHJhd1NlbGVjdGlvblJlY3QoZykscy5zZWxlY3Rpb25EcmFnZ2luZyhcInJlc2l6aW5nXCIpLGd9fSx7a2V5Olwic2VsZWN0aW9uRHJhZ2dpbmdcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMsYT10aGlzLncscz10aGlzLnh5UmF0aW9zLHI9dGhpcy5zZWxlY3Rpb25SZWN0LG89MDtcInJlc2l6aW5nXCI9PT10JiYobz0zMCk7dmFyIG49ZnVuY3Rpb24odCl7cmV0dXJuIHBhcnNlRmxvYXQoci5ub2RlLmdldEF0dHJpYnV0ZSh0KSl9LGw9e3g6bihcInhcIikseTpuKFwieVwiKSx3aWR0aDpuKFwid2lkdGhcIiksaGVpZ2h0Om4oXCJoZWlnaHRcIil9O2EuZ2xvYmFscy5zZWxlY3Rpb249bCxcImZ1bmN0aW9uXCI9PXR5cGVvZiBhLmNvbmZpZy5jaGFydC5ldmVudHMuc2VsZWN0aW9uJiZhLmdsb2JhbHMuc2VsZWN0aW9uRW5hYmxlZCYmKGNsZWFyVGltZW91dCh0aGlzLncuZ2xvYmFscy5zZWxlY3Rpb25SZXNpemVUaW1lciksdGhpcy53Lmdsb2JhbHMuc2VsZWN0aW9uUmVzaXplVGltZXI9d2luZG93LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dmFyIHQ9aS5ncmlkUmVjdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxlPXIubm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxvPXt4YXhpczp7bWluOmEuZ2xvYmFscy54QXhpc1NjYWxlLm5pY2VNaW4rKGUubGVmdC10LmxlZnQpKnMueFJhdGlvLG1heDphLmdsb2JhbHMueEF4aXNTY2FsZS5uaWNlTWluKyhlLnJpZ2h0LXQubGVmdCkqcy54UmF0aW99LHlheGlzOnttaW46YS5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ubmljZU1pbisodC5ib3R0b20tZS5ib3R0b20pKnMueVJhdGlvWzBdLG1heDphLmdsb2JhbHMueUF4aXNTY2FsZVswXS5uaWNlTWF4LShlLnRvcC10LnRvcCkqcy55UmF0aW9bMF19fTthLmNvbmZpZy5jaGFydC5ldmVudHMuc2VsZWN0aW9uKGkuY3R4LG8pLGEuY29uZmlnLmNoYXJ0LmJydXNoLmVuYWJsZWQmJnZvaWQgMCE9PWEuY29uZmlnLmNoYXJ0LmV2ZW50cy5icnVzaFNjcm9sbGVkJiZhLmNvbmZpZy5jaGFydC5ldmVudHMuYnJ1c2hTY3JvbGxlZChpLmN0eCxvKX0pLG8pKX19LHtrZXk6XCJzZWxlY3Rpb25EcmF3blwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuY29udGV4dCxpPXQuem9vbXR5cGUsYT10aGlzLncscz1lLHI9dGhpcy54eVJhdGlvcyxvPXRoaXMuY3R4LnRvb2xiYXI7aWYocy5zdGFydFg+cy5lbmRYKXt2YXIgbj1zLnN0YXJ0WDtzLnN0YXJ0WD1zLmVuZFgscy5lbmRYPW59aWYocy5zdGFydFk+cy5lbmRZKXt2YXIgbD1zLnN0YXJ0WTtzLnN0YXJ0WT1zLmVuZFkscy5lbmRZPWx9dmFyIGg9dm9pZCAwLGM9dm9pZCAwO2EuZ2xvYmFscy5pc1JhbmdlQmFyPyhoPWEuZ2xvYmFscy55QXhpc1NjYWxlWzBdLm5pY2VNaW4rcy5zdGFydFgqci5pbnZlcnRlZFlSYXRpbyxjPWEuZ2xvYmFscy55QXhpc1NjYWxlWzBdLm5pY2VNaW4rcy5lbmRYKnIuaW52ZXJ0ZWRZUmF0aW8pOihoPWEuZ2xvYmFscy54QXhpc1NjYWxlLm5pY2VNaW4rcy5zdGFydFgqci54UmF0aW8sYz1hLmdsb2JhbHMueEF4aXNTY2FsZS5uaWNlTWluK3MuZW5kWCpyLnhSYXRpbyk7dmFyIGQ9W10sZz1bXTtpZihhLmNvbmZpZy55YXhpcy5mb3JFYWNoKChmdW5jdGlvbih0LGUpe2QucHVzaChhLmdsb2JhbHMueUF4aXNTY2FsZVtlXS5uaWNlTWF4LXIueVJhdGlvW2VdKnMuc3RhcnRZKSxnLnB1c2goYS5nbG9iYWxzLnlBeGlzU2NhbGVbZV0ubmljZU1heC1yLnlSYXRpb1tlXSpzLmVuZFkpfSkpLHMuZHJhZ2dlZCYmKHMuZHJhZ1g+MTB8fHMuZHJhZ1k+MTApJiZoIT09YylpZihhLmdsb2JhbHMuem9vbUVuYWJsZWQpe3ZhciB1PXguY2xvbmUoYS5nbG9iYWxzLmluaXRpYWxDb25maWcueWF4aXMpLHA9eC5jbG9uZShhLmdsb2JhbHMuaW5pdGlhbENvbmZpZy54YXhpcyk7aWYoYS5nbG9iYWxzLnpvb21lZD0hMCxhLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJihoPU1hdGguZmxvb3IoaCksYz1NYXRoLmZsb29yKGMpLGg8MSYmKGg9MSxjPWEuZ2xvYmFscy5kYXRhUG9pbnRzKSxjLWg8MiYmKGM9aCsxKSksXCJ4eVwiIT09aSYmXCJ4XCIhPT1pfHwocD17bWluOmgsbWF4OmN9KSxcInh5XCIhPT1pJiZcInlcIiE9PWl8fHUuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt1W2VdLm1pbj1nW2VdLHVbZV0ubWF4PWRbZV19KSksYS5jb25maWcuY2hhcnQuem9vbS5hdXRvU2NhbGVZYXhpcyl7dmFyIGY9bmV3IF8ocy5jdHgpO3U9Zi5hdXRvU2NhbGVZKHMuY3R4LHUse3hheGlzOnB9KX1pZihvKXt2YXIgYj1vLmdldEJlZm9yZVpvb21SYW5nZShwLHUpO2ImJihwPWIueGF4aXM/Yi54YXhpczpwLHU9Yi55YXhpcz9iLnlheGlzOnUpfXZhciB2PXt4YXhpczpwfTthLmNvbmZpZy5jaGFydC5ncm91cHx8KHYueWF4aXM9dSkscy5jdHgudXBkYXRlSGVscGVycy5fdXBkYXRlT3B0aW9ucyh2LCExLHMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGEuY29uZmlnLmNoYXJ0LmV2ZW50cy56b29tZWQmJm8uem9vbUNhbGxiYWNrKHAsdSl9ZWxzZSBpZihhLmdsb2JhbHMuc2VsZWN0aW9uRW5hYmxlZCl7dmFyIG0seT1udWxsO209e21pbjpoLG1heDpjfSxcInh5XCIhPT1pJiZcInlcIiE9PWl8fCh5PXguY2xvbmUoYS5jb25maWcueWF4aXMpKS5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3lbZV0ubWluPWdbZV0seVtlXS5tYXg9ZFtlXX0pKSxhLmdsb2JhbHMuc2VsZWN0aW9uPXMuc2VsZWN0aW9uLFwiZnVuY3Rpb25cIj09dHlwZW9mIGEuY29uZmlnLmNoYXJ0LmV2ZW50cy5zZWxlY3Rpb24mJmEuY29uZmlnLmNoYXJ0LmV2ZW50cy5zZWxlY3Rpb24ocy5jdHgse3hheGlzOm0seWF4aXM6eX0pfX19LHtrZXk6XCJwYW5EcmFnZ2luZ1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuY29udGV4dCxpPXRoaXMudyxhPWU7aWYodm9pZCAwIT09aS5nbG9iYWxzLmxhc3RDbGllbnRQb3NpdGlvbi54KXt2YXIgcz1pLmdsb2JhbHMubGFzdENsaWVudFBvc2l0aW9uLngtYS5jbGllbnRYLHI9aS5nbG9iYWxzLmxhc3RDbGllbnRQb3NpdGlvbi55LWEuY2xpZW50WTtNYXRoLmFicyhzKT5NYXRoLmFicyhyKSYmcz4wP3RoaXMubW92ZURpcmVjdGlvbj1cImxlZnRcIjpNYXRoLmFicyhzKT5NYXRoLmFicyhyKSYmczwwP3RoaXMubW92ZURpcmVjdGlvbj1cInJpZ2h0XCI6TWF0aC5hYnMocik+TWF0aC5hYnMocykmJnI+MD90aGlzLm1vdmVEaXJlY3Rpb249XCJ1cFwiOk1hdGguYWJzKHIpPk1hdGguYWJzKHMpJiZyPDAmJih0aGlzLm1vdmVEaXJlY3Rpb249XCJkb3duXCIpfWkuZ2xvYmFscy5sYXN0Q2xpZW50UG9zaXRpb249e3g6YS5jbGllbnRYLHk6YS5jbGllbnRZfTt2YXIgbz1pLmdsb2JhbHMuaXNSYW5nZUJhcj9pLmdsb2JhbHMubWluWTppLmdsb2JhbHMubWluWCxuPWkuZ2xvYmFscy5pc1JhbmdlQmFyP2kuZ2xvYmFscy5tYXhZOmkuZ2xvYmFscy5tYXhYO2kuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpY3x8YS5wYW5TY3JvbGxlZChvLG4pfX0se2tleTpcImRlbGF5ZWRQYW5TY3JvbGxlZFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dC5nbG9iYWxzLm1pblgsaT10Lmdsb2JhbHMubWF4WCxhPSh0Lmdsb2JhbHMubWF4WC10Lmdsb2JhbHMubWluWCkvMjtcImxlZnRcIj09PXRoaXMubW92ZURpcmVjdGlvbj8oZT10Lmdsb2JhbHMubWluWCthLGk9dC5nbG9iYWxzLm1heFgrYSk6XCJyaWdodFwiPT09dGhpcy5tb3ZlRGlyZWN0aW9uJiYoZT10Lmdsb2JhbHMubWluWC1hLGk9dC5nbG9iYWxzLm1heFgtYSksZT1NYXRoLmZsb29yKGUpLGk9TWF0aC5mbG9vcihpKSx0aGlzLnVwZGF0ZVNjcm9sbGVkQ2hhcnQoe3hheGlzOnttaW46ZSxtYXg6aX19LGUsaSl9fSx7a2V5OlwicGFuU2Nyb2xsZWRcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPXRoaXMueHlSYXRpb3Mscz14LmNsb25lKGkuZ2xvYmFscy5pbml0aWFsQ29uZmlnLnlheGlzKSxyPWEueFJhdGlvLG89aS5nbG9iYWxzLm1pblgsbj1pLmdsb2JhbHMubWF4WDtpLmdsb2JhbHMuaXNSYW5nZUJhciYmKHI9YS5pbnZlcnRlZFlSYXRpbyxvPWkuZ2xvYmFscy5taW5ZLG49aS5nbG9iYWxzLm1heFkpLFwibGVmdFwiPT09dGhpcy5tb3ZlRGlyZWN0aW9uPyh0PW8raS5nbG9iYWxzLmdyaWRXaWR0aC8xNSpyLGU9bitpLmdsb2JhbHMuZ3JpZFdpZHRoLzE1KnIpOlwicmlnaHRcIj09PXRoaXMubW92ZURpcmVjdGlvbiYmKHQ9by1pLmdsb2JhbHMuZ3JpZFdpZHRoLzE1KnIsZT1uLWkuZ2xvYmFscy5ncmlkV2lkdGgvMTUqciksaS5nbG9iYWxzLmlzUmFuZ2VCYXJ8fCh0PGkuZ2xvYmFscy5pbml0aWFsTWluWHx8ZT5pLmdsb2JhbHMuaW5pdGlhbE1heFgpJiYodD1vLGU9bik7dmFyIGw9e21pbjp0LG1heDplfTtpLmNvbmZpZy5jaGFydC56b29tLmF1dG9TY2FsZVlheGlzJiYocz1uZXcgXyh0aGlzLmN0eCkuYXV0b1NjYWxlWSh0aGlzLmN0eCxzLHt4YXhpczpsfSkpO3ZhciBoPXt4YXhpczp7bWluOnQsbWF4OmV9fTtpLmNvbmZpZy5jaGFydC5ncm91cHx8KGgueWF4aXM9cyksdGhpcy51cGRhdGVTY3JvbGxlZENoYXJ0KGgsdCxlKX19LHtrZXk6XCJ1cGRhdGVTY3JvbGxlZENoYXJ0XCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMudzt0aGlzLmN0eC51cGRhdGVIZWxwZXJzLl91cGRhdGVPcHRpb25zKHQsITEsITEpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGEuY29uZmlnLmNoYXJ0LmV2ZW50cy5zY3JvbGxlZCYmYS5jb25maWcuY2hhcnQuZXZlbnRzLnNjcm9sbGVkKHRoaXMuY3R4LHt4YXhpczp7bWluOmUsbWF4Oml9fSl9fV0pLGl9KCksZHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMudHRDdHg9ZSx0aGlzLmN0eD1lLmN0eH1yZXR1cm4gcih0LFt7a2V5OlwiZ2V0TmVhcmVzdFZhbHVlc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaG92ZXJBcmVhLGk9dC5lbEdyaWQsYT10LmNsaWVudFgscz10LmNsaWVudFkscj10aGlzLncsbz1pLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49by53aWR0aCxsPW8uaGVpZ2h0LGg9bi8oci5nbG9iYWxzLmRhdGFQb2ludHMtMSksYz1sL3IuZ2xvYmFscy5kYXRhUG9pbnRzLGQ9dGhpcy5oYXNCYXJzKCk7IXIuZ2xvYmFscy5jb21ib0NoYXJ0cyYmIWR8fHIuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpY3x8KGg9bi9yLmdsb2JhbHMuZGF0YVBvaW50cyk7dmFyIGc9YS1vLmxlZnQtci5nbG9iYWxzLmJhclBhZEZvck51bWVyaWNBeGlzLHU9cy1vLnRvcDtnPDB8fHU8MHx8Zz5ufHx1Pmw/KGUuY2xhc3NMaXN0LnJlbW92ZShcImhvdmVyaW5nLXpvb21cIiksZS5jbGFzc0xpc3QucmVtb3ZlKFwiaG92ZXJpbmctcGFuXCIpKTpyLmdsb2JhbHMuem9vbUVuYWJsZWQ/KGUuY2xhc3NMaXN0LnJlbW92ZShcImhvdmVyaW5nLXBhblwiKSxlLmNsYXNzTGlzdC5hZGQoXCJob3ZlcmluZy16b29tXCIpKTpyLmdsb2JhbHMucGFuRW5hYmxlZCYmKGUuY2xhc3NMaXN0LnJlbW92ZShcImhvdmVyaW5nLXpvb21cIiksZS5jbGFzc0xpc3QuYWRkKFwiaG92ZXJpbmctcGFuXCIpKTt2YXIgcD1NYXRoLnJvdW5kKGcvaCksZj1NYXRoLmZsb29yKHUvYyk7ZCYmIXIuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmKHA9TWF0aC5jZWlsKGcvaCkscC09MSk7dmFyIGI9bnVsbCx2PW51bGwsbT1bXSx5PVtdO2lmKHIuZ2xvYmFscy5zZXJpZXNYdmFsdWVzLmZvckVhY2goKGZ1bmN0aW9uKHQpe20ucHVzaChbdFswXSsxZS02XS5jb25jYXQodCkpfSkpLHIuZ2xvYmFscy5zZXJpZXNZdmFsdWVzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3kucHVzaChbdFswXSsxZS02XS5jb25jYXQodCkpfSkpLG09bS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHguaXNOdW1iZXIodCl9KSl9KSkseT15Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4geC5pc051bWJlcih0KX0pKX0pKSxyLmdsb2JhbHMuaXNYTnVtZXJpYyl7dmFyIHc9dGhpcy50dEN0eC5nZXRFbEdyaWQoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxrPWcqKHcud2lkdGgvbiksQT11Kih3LmhlaWdodC9sKTtiPSh2PXRoaXMuY2xvc2VzdEluTXVsdGlBcnJheShrLEEsbSx5KSkuaW5kZXgscD12LmosbnVsbCE9PWImJihtPXIuZ2xvYmFscy5zZXJpZXNYdmFsdWVzW2JdLHA9KHY9dGhpcy5jbG9zZXN0SW5BcnJheShrLG0pKS5pbmRleCl9cmV0dXJuIHIuZ2xvYmFscy5jYXB0dXJlZFNlcmllc0luZGV4PW51bGw9PT1iPy0xOmIsKCFwfHxwPDEpJiYocD0wKSxyLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsP3IuZ2xvYmFscy5jYXB0dXJlZERhdGFQb2ludEluZGV4PWY6ci5nbG9iYWxzLmNhcHR1cmVkRGF0YVBvaW50SW5kZXg9cCx7Y2FwdHVyZWRTZXJpZXM6YixqOnIuZ2xvYmFscy5pc0Jhckhvcml6b250YWw/ZjpwLGhvdmVyWDpnLGhvdmVyWTp1fX19LHtrZXk6XCJjbG9zZXN0SW5NdWx0aUFycmF5XCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSl7dmFyIHM9dGhpcy53LHI9MCxvPW51bGwsbj0tMTtzLmdsb2JhbHMuc2VyaWVzLmxlbmd0aD4xP3I9dGhpcy5nZXRGaXJzdEFjdGl2ZVhBcnJheShpKTpvPTA7dmFyIGw9aVtyXVswXSxoPU1hdGguYWJzKHQtbCk7aWYoaS5mb3JFYWNoKChmdW5jdGlvbihlKXtlLmZvckVhY2goKGZ1bmN0aW9uKGUsaSl7dmFyIGE9TWF0aC5hYnModC1lKTthPGgmJihoPWEsbj1pKX0pKX0pKSwtMSE9PW4pe3ZhciBjPWFbcl1bbl0sZD1NYXRoLmFicyhlLWMpO289cixhLmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7dmFyIGE9TWF0aC5hYnMoZS10W25dKTthPGQmJihkPWEsbz1pKX0pKX1yZXR1cm57aW5kZXg6byxqOm59fX0se2tleTpcImdldEZpcnN0QWN0aXZlWEFycmF5XCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudyxpPTAsYT10Lm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5sZW5ndGg+MD9lOi0xfSkpLHM9MDtzPGEubGVuZ3RoO3MrKylpZigtMSE9PWFbc10mJi0xPT09ZS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihzKSYmLTE9PT1lLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKHMpKXtpPWFbc107YnJlYWt9cmV0dXJuIGl9fSx7a2V5OlwiY2xvc2VzdEluQXJyYXlcIix2YWx1ZTpmdW5jdGlvbih0LGUpe2Zvcih2YXIgaT1lWzBdLGE9bnVsbCxzPU1hdGguYWJzKHQtaSkscj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbz1NYXRoLmFicyh0LWVbcl0pO288cyYmKHM9byxhPXIpfXJldHVybntpbmRleDphfX19LHtrZXk6XCJpc1hvdmVybGFwXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9W10saT10aGlzLncuZ2xvYmFscy5zZXJpZXNYLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMCE9PXRbMF19KSk7aWYoaS5sZW5ndGg+MClmb3IodmFyIGE9MDthPGkubGVuZ3RoLTE7YSsrKXZvaWQgMCE9PWlbYV1bdF0mJnZvaWQgMCE9PWlbYSsxXVt0XSYmaVthXVt0XSE9PWlbYSsxXVt0XSYmZS5wdXNoKFwidW5FcXVhbFwiKTtyZXR1cm4gMD09PWUubGVuZ3RofX0se2tleTpcImlzSW5pdGlhbFNlcmllc1NhbWVMZW5cIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgdD0hMCxlPXRoaXMudy5nbG9iYWxzLmluaXRpYWxTZXJpZXMsaT0wO2k8ZS5sZW5ndGgtMTtpKyspaWYoZVtpXS5kYXRhLmxlbmd0aCE9PWVbaSsxXS5kYXRhLmxlbmd0aCl7dD0hMTticmVha31yZXR1cm4gdH19LHtrZXk6XCJnZXRCYXJzSGVpZ2h0XCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHUodCkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2UuZ2V0QkJveCgpLmhlaWdodH0pLDApfX0se2tleTpcImdldEVsTWFya2Vyc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiB0P3RoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiLmNvbmNhdCh0LFwiJ10gLmFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMtd3JhcCA+ICpcIikpOnRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzLXdyYXAgPiAqXCIpfX0se2tleTpcImdldEFsbE1hcmtlcnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzLXdyYXBcIik7KHQ9dSh0KSkuc29ydCgoZnVuY3Rpb24odCxlKXt2YXIgaT1OdW1iZXIodC5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKSksYT1OdW1iZXIoZS5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKSk7cmV0dXJuIGE8aT8xOmE+aT8tMTowfSkpO3ZhciBlPVtdO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2UucHVzaCh0LnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1tYXJrZXJcIikpfSkpLGV9fSx7a2V5OlwiaGFzTWFya2Vyc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmdldEVsTWFya2Vycyh0KS5sZW5ndGg+MH19LHtrZXk6XCJnZXRFbEJhcnNcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1iYXItc2VyaWVzLCAgLmFwZXhjaGFydHMtY2FuZGxlc3RpY2stc2VyaWVzLCAuYXBleGNoYXJ0cy1ib3hQbG90LXNlcmllcywgLmFwZXhjaGFydHMtcmFuZ2ViYXItc2VyaWVzXCIpfX0se2tleTpcImhhc0JhcnNcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldEVsQmFycygpLmxlbmd0aD4wfX0se2tleTpcImdldEhvdmVyTWFya2VyU2l6ZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPWUuY29uZmlnLm1hcmtlcnMuaG92ZXIuc2l6ZTtyZXR1cm4gdm9pZCAwPT09aSYmKGk9ZS5nbG9iYWxzLm1hcmtlcnMuc2l6ZVt0XStlLmNvbmZpZy5tYXJrZXJzLmhvdmVyLnNpemVPZmZzZXQpLGl9fSx7a2V5OlwidG9nZ2xlQWxsVG9vbHRpcFNlcmllc0dyb3Vwc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPXRoaXMudHRDdHg7MD09PWkuYWxsVG9vbHRpcFNlcmllc0dyb3Vwcy5sZW5ndGgmJihpLmFsbFRvb2x0aXBTZXJpZXNHcm91cHM9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXRvb2x0aXAtc2VyaWVzLWdyb3VwXCIpKTtmb3IodmFyIGE9aS5hbGxUb29sdGlwU2VyaWVzR3JvdXBzLHM9MDtzPGEubGVuZ3RoO3MrKylcImVuYWJsZVwiPT09dD8oYVtzXS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1hY3RpdmVcIiksYVtzXS5zdHlsZS5kaXNwbGF5PWUuY29uZmlnLnRvb2x0aXAuaXRlbXMuZGlzcGxheSk6KGFbc10uY2xhc3NMaXN0LnJlbW92ZShcImFwZXhjaGFydHMtYWN0aXZlXCIpLGFbc10uc3R5bGUuZGlzcGxheT1cIm5vbmVcIil9fV0pLHR9KCksZ3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMuY3R4PWUuY3R4LHRoaXMudHRDdHg9ZSx0aGlzLnRvb2x0aXBVdGlsPW5ldyBkdChlKX1yZXR1cm4gcih0LFt7a2V5OlwiZHJhd1Nlcmllc1RleHRzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5zaGFyZWQsaT12b2lkIDA9PT1lfHxlLGE9dC50dEl0ZW1zLHM9dC5pLHI9dm9pZCAwPT09cz8wOnMsbz10Lmosbj12b2lkIDA9PT1vP251bGw6byxsPXQueTEsaD10LnkyLGM9dC5lLGQ9dGhpcy53O3ZvaWQgMCE9PWQuY29uZmlnLnRvb2x0aXAuY3VzdG9tP3RoaXMuaGFuZGxlQ3VzdG9tVG9vbHRpcCh7aTpyLGo6bix5MTpsLHkyOmgsdzpkfSk6dGhpcy50b2dnbGVBY3RpdmVJbmFjdGl2ZVNlcmllcyhpKTt2YXIgZz10aGlzLmdldFZhbHVlc1RvUHJpbnQoe2k6cixqOm59KTt0aGlzLnByaW50TGFiZWxzKHtpOnIsajpuLHZhbHVlczpnLHR0SXRlbXM6YSxzaGFyZWQ6aSxlOmN9KTt2YXIgdT10aGlzLnR0Q3R4LmdldEVsVG9vbHRpcCgpO3RoaXMudHRDdHgudG9vbHRpcFJlY3QudHRXaWR0aD11LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoLHRoaXMudHRDdHgudG9vbHRpcFJlY3QudHRIZWlnaHQ9dS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHR9fSx7a2V5OlwicHJpbnRMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgaSxhPXRoaXMscz10Lmkscj10Lmosbz10LnZhbHVlcyxuPXQudHRJdGVtcyxsPXQuc2hhcmVkLGg9dC5lLGM9dGhpcy53LGQ9W10sZz1mdW5jdGlvbih0KXtyZXR1cm4gYy5nbG9iYWxzLnNlcmllc0dvYWxzW3RdJiZjLmdsb2JhbHMuc2VyaWVzR29hbHNbdF1bcl0mJkFycmF5LmlzQXJyYXkoYy5nbG9iYWxzLnNlcmllc0dvYWxzW3RdW3JdKX0sdT1vLnhWYWwscD1vLnpWYWwsZj1vLnhBeGlzVFRWYWwseD1cIlwiLGI9Yy5nbG9iYWxzLmNvbG9yc1tzXTtudWxsIT09ciYmYy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmRpc3RyaWJ1dGVkJiYoYj1jLmdsb2JhbHMuY29sb3JzW3JdKTtmb3IodmFyIHY9ZnVuY3Rpb24odCxvKXt2YXIgdj1hLmdldEZvcm1hdHRlcnMocyk7eD1hLmdldFNlcmllc05hbWUoe2ZuOnYueUxiVGl0bGVGb3JtYXR0ZXIsaW5kZXg6cyxzZXJpZXNJbmRleDpzLGo6cn0pLFwidHJlZW1hcFwiPT09Yy5jb25maWcuY2hhcnQudHlwZSYmKHg9di55TGJUaXRsZUZvcm1hdHRlcihTdHJpbmcoYy5jb25maWcuc2VyaWVzW3NdLmRhdGFbcl0ueCkse3NlcmllczpjLmdsb2JhbHMuc2VyaWVzLHNlcmllc0luZGV4OnMsZGF0YVBvaW50SW5kZXg6cix3OmN9KSk7dmFyIG09Yy5jb25maWcudG9vbHRpcC5pbnZlcnNlT3JkZXI/bzp0O2lmKGMuZ2xvYmFscy5heGlzQ2hhcnRzKXt2YXIgeT1mdW5jdGlvbih0KXt2YXIgZSxpLGEscztyZXR1cm4gYy5nbG9iYWxzLmlzUmFuZ2VEYXRhP3YueUxiRm9ybWF0dGVyKG51bGw9PT0oZT1jLmdsb2JhbHMuc2VyaWVzUmFuZ2VTdGFydCl8fHZvaWQgMD09PWV8fG51bGw9PT0oaT1lW3RdKXx8dm9pZCAwPT09aT92b2lkIDA6aVtyXSx7c2VyaWVzOmMuZ2xvYmFscy5zZXJpZXNSYW5nZVN0YXJ0LHNlcmllc0luZGV4OnQsZGF0YVBvaW50SW5kZXg6cix3OmN9KStcIiAtIFwiK3YueUxiRm9ybWF0dGVyKG51bGw9PT0oYT1jLmdsb2JhbHMuc2VyaWVzUmFuZ2VFbmQpfHx2b2lkIDA9PT1hfHxudWxsPT09KHM9YVt0XSl8fHZvaWQgMD09PXM/dm9pZCAwOnNbcl0se3NlcmllczpjLmdsb2JhbHMuc2VyaWVzUmFuZ2VFbmQsc2VyaWVzSW5kZXg6dCxkYXRhUG9pbnRJbmRleDpyLHc6Y30pOnYueUxiRm9ybWF0dGVyKGMuZ2xvYmFscy5zZXJpZXNbdF1bcl0se3NlcmllczpjLmdsb2JhbHMuc2VyaWVzLHNlcmllc0luZGV4OnQsZGF0YVBvaW50SW5kZXg6cix3OmN9KX07aWYobCl2PWEuZ2V0Rm9ybWF0dGVycyhtKSx4PWEuZ2V0U2VyaWVzTmFtZSh7Zm46di55TGJUaXRsZUZvcm1hdHRlcixpbmRleDptLHNlcmllc0luZGV4OnMsajpyfSksYj1jLmdsb2JhbHMuY29sb3JzW21dLGk9eShtKSxnKG0pJiYoZD1jLmdsb2JhbHMuc2VyaWVzR29hbHNbbV1bcl0ubWFwKChmdW5jdGlvbih0KXtyZXR1cm57YXR0cnM6dCx2YWw6di55TGJGb3JtYXR0ZXIodC52YWx1ZSx7c2VyaWVzSW5kZXg6bSxkYXRhUG9pbnRJbmRleDpyLHc6Y30pfX0pKSk7ZWxzZXt2YXIgdyxrPW51bGw9PWh8fG51bGw9PT0odz1oLnRhcmdldCl8fHZvaWQgMD09PXc/dm9pZCAwOncuZ2V0QXR0cmlidXRlKFwiZmlsbFwiKTtrJiYoYj0tMSE9PWsuaW5kZXhPZihcInVybFwiKT9kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGsuc3Vic3RyKDQpLnNsaWNlKDAsLTEpKS5jaGlsZE5vZGVzWzBdLmdldEF0dHJpYnV0ZShcInN0cm9rZVwiKTprKSxpPXkocyksZyhzKSYmQXJyYXkuaXNBcnJheShjLmdsb2JhbHMuc2VyaWVzR29hbHNbc11bcl0pJiYoZD1jLmdsb2JhbHMuc2VyaWVzR29hbHNbc11bcl0ubWFwKChmdW5jdGlvbih0KXtyZXR1cm57YXR0cnM6dCx2YWw6di55TGJGb3JtYXR0ZXIodC52YWx1ZSx7c2VyaWVzSW5kZXg6cyxkYXRhUG9pbnRJbmRleDpyLHc6Y30pfX0pKSl9fW51bGw9PT1yJiYoaT12LnlMYkZvcm1hdHRlcihjLmdsb2JhbHMuc2VyaWVzW3NdLGUoZSh7fSxjKSx7fSx7c2VyaWVzSW5kZXg6cyxkYXRhUG9pbnRJbmRleDpzfSkpKSxhLkRPTUhhbmRsaW5nKHtpOnMsdDptLGo6cix0dEl0ZW1zOm4sdmFsdWVzOnt2YWw6aSxnb2FsVmFsczpkLHhWYWw6dSx4QXhpc1RUVmFsOmYselZhbDpwfSxzZXJpZXNOYW1lOngsc2hhcmVkOmwscENvbG9yOmJ9KX0sbT0wLHk9Yy5nbG9iYWxzLnNlcmllcy5sZW5ndGgtMTttPGMuZ2xvYmFscy5zZXJpZXMubGVuZ3RoO20rKyx5LS0pdihtLHkpfX0se2tleTpcImdldEZvcm1hdHRlcnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpPXRoaXMudyxhPWkuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzW3RdO3JldHVybiB2b2lkIDAhPT1pLmdsb2JhbHMudHRWYWw/QXJyYXkuaXNBcnJheShpLmdsb2JhbHMudHRWYWwpPyhhPWkuZ2xvYmFscy50dFZhbFt0XSYmaS5nbG9iYWxzLnR0VmFsW3RdLmZvcm1hdHRlcixlPWkuZ2xvYmFscy50dFZhbFt0XSYmaS5nbG9iYWxzLnR0VmFsW3RdLnRpdGxlJiZpLmdsb2JhbHMudHRWYWxbdF0udGl0bGUuZm9ybWF0dGVyKTooYT1pLmdsb2JhbHMudHRWYWwuZm9ybWF0dGVyLFwiZnVuY3Rpb25cIj09dHlwZW9mIGkuZ2xvYmFscy50dFZhbC50aXRsZS5mb3JtYXR0ZXImJihlPWkuZ2xvYmFscy50dFZhbC50aXRsZS5mb3JtYXR0ZXIpKTplPWkuY29uZmlnLnRvb2x0aXAueS50aXRsZS5mb3JtYXR0ZXIsXCJmdW5jdGlvblwiIT10eXBlb2YgYSYmKGE9aS5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbMF0/aS5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbMF06ZnVuY3Rpb24odCl7cmV0dXJuIHR9KSxcImZ1bmN0aW9uXCIhPXR5cGVvZiBlJiYoZT1mdW5jdGlvbih0KXtyZXR1cm4gdH0pLHt5TGJGb3JtYXR0ZXI6YSx5TGJUaXRsZUZvcm1hdHRlcjplfX19LHtrZXk6XCJnZXRTZXJpZXNOYW1lXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5mbixpPXQuaW5kZXgsYT10LnNlcmllc0luZGV4LHM9dC5qLHI9dGhpcy53O3JldHVybiBlKFN0cmluZyhyLmdsb2JhbHMuc2VyaWVzTmFtZXNbaV0pLHtzZXJpZXM6ci5nbG9iYWxzLnNlcmllcyxzZXJpZXNJbmRleDphLGRhdGFQb2ludEluZGV4OnMsdzpyfSl9fSx7a2V5OlwiRE9NSGFuZGxpbmdcIix2YWx1ZTpmdW5jdGlvbih0KXt0Lmk7dmFyIGU9dC50LGk9dC5qLGE9dC50dEl0ZW1zLHM9dC52YWx1ZXMscj10LnNlcmllc05hbWUsbz10LnNoYXJlZCxuPXQucENvbG9yLGw9dGhpcy53LGg9dGhpcy50dEN0eCxjPXMudmFsLGQ9cy5nb2FsVmFscyxnPXMueFZhbCx1PXMueEF4aXNUVFZhbCxwPXMuelZhbCxmPW51bGw7Zj1hW2VdLmNoaWxkcmVuLGwuY29uZmlnLnRvb2x0aXAuZmlsbFNlcmllc0NvbG9yJiYoYVtlXS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9bixmWzBdLnN0eWxlLmRpc3BsYXk9XCJub25lXCIpLGguc2hvd1Rvb2x0aXBUaXRsZSYmKG51bGw9PT1oLnRvb2x0aXBUaXRsZSYmKGgudG9vbHRpcFRpdGxlPWwuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy10b29sdGlwLXRpdGxlXCIpKSxoLnRvb2x0aXBUaXRsZS5pbm5lckhUTUw9ZyksaC5pc1hBeGlzVG9vbHRpcEVuYWJsZWQmJihoLnhheGlzVG9vbHRpcFRleHQuaW5uZXJIVE1MPVwiXCIhPT11P3U6Zyk7dmFyIHg9YVtlXS5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LXktbGFiZWxcIik7eCYmKHguaW5uZXJIVE1MPXJ8fFwiXCIpO3ZhciBiPWFbZV0ucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC15LXZhbHVlXCIpO2ImJihiLmlubmVySFRNTD12b2lkIDAhPT1jP2M6XCJcIiksZlswXSYmZlswXS5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLXRvb2x0aXAtbWFya2VyXCIpJiYobC5jb25maWcudG9vbHRpcC5tYXJrZXIuZmlsbENvbG9ycyYmQXJyYXkuaXNBcnJheShsLmNvbmZpZy50b29sdGlwLm1hcmtlci5maWxsQ29sb3JzKSYmKG49bC5jb25maWcudG9vbHRpcC5tYXJrZXIuZmlsbENvbG9yc1tlXSksZlswXS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9biksbC5jb25maWcudG9vbHRpcC5tYXJrZXIuc2hvd3x8KGZbMF0uc3R5bGUuZGlzcGxheT1cIm5vbmVcIik7dmFyIHY9YVtlXS5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLWxhYmVsXCIpLG09YVtlXS5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLXZhbHVlXCIpO2lmKGQubGVuZ3RoJiZsLmdsb2JhbHMuc2VyaWVzR29hbHNbZV0pe3ZhciB5PWZ1bmN0aW9uKCl7dmFyIHQ9XCI8ZGl2ID5cIixlPVwiPGRpdj5cIjtkLmZvckVhY2goKGZ1bmN0aW9uKGksYSl7dCs9JyA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleFwiPjxzcGFuIGNsYXNzPVwiYXBleGNoYXJ0cy10b29sdGlwLW1hcmtlclwiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogJy5jb25jYXQoaS5hdHRycy5zdHJva2VDb2xvciwnOyBoZWlnaHQ6IDNweDsgYm9yZGVyLXJhZGl1czogMDsgdG9wOiA1cHg7XCI+PC9zcGFuPiAnKS5jb25jYXQoaS5hdHRycy5uYW1lLFwiPC9kaXY+XCIpLGUrPVwiPGRpdj5cIi5jb25jYXQoaS52YWwsXCI8L2Rpdj5cIil9KSksdi5pbm5lckhUTUw9dCtcIjwvZGl2PlwiLG0uaW5uZXJIVE1MPWUrXCI8L2Rpdj5cIn07bz9sLmdsb2JhbHMuc2VyaWVzR29hbHNbZV1baV0mJkFycmF5LmlzQXJyYXkobC5nbG9iYWxzLnNlcmllc0dvYWxzW2VdW2ldKT95KCk6KHYuaW5uZXJIVE1MPVwiXCIsbS5pbm5lckhUTUw9XCJcIik6eSgpfWVsc2Ugdi5pbm5lckhUTUw9XCJcIixtLmlubmVySFRNTD1cIlwiO251bGwhPT1wJiYoYVtlXS5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LXotbGFiZWxcIikuaW5uZXJIVE1MPWwuY29uZmlnLnRvb2x0aXAuei50aXRsZSxhW2VdLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtei12YWx1ZVwiKS5pbm5lckhUTUw9dm9pZCAwIT09cD9wOlwiXCIpO28mJmZbMF0mJihudWxsPT1jfHxsLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGUpPi0xfHxsLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGUpPi0xP2ZbMF0ucGFyZW50Tm9kZS5zdHlsZS5kaXNwbGF5PVwibm9uZVwiOmZbMF0ucGFyZW50Tm9kZS5zdHlsZS5kaXNwbGF5PWwuY29uZmlnLnRvb2x0aXAuaXRlbXMuZGlzcGxheSl9fSx7a2V5OlwidG9nZ2xlQWN0aXZlSW5hY3RpdmVTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnc7aWYodCl0aGlzLnRvb2x0aXBVdGlsLnRvZ2dsZUFsbFRvb2x0aXBTZXJpZXNHcm91cHMoXCJlbmFibGVcIik7ZWxzZXt0aGlzLnRvb2x0aXBVdGlsLnRvZ2dsZUFsbFRvb2x0aXBTZXJpZXNHcm91cHMoXCJkaXNhYmxlXCIpO3ZhciBpPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy10b29sdGlwLXNlcmllcy1ncm91cFwiKTtpJiYoaS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1hY3RpdmVcIiksaS5zdHlsZS5kaXNwbGF5PWUuY29uZmlnLnRvb2x0aXAuaXRlbXMuZGlzcGxheSl9fX0se2tleTpcImdldFZhbHVlc1RvUHJpbnRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmksaT10LmosYT10aGlzLncscz10aGlzLmN0eC5zZXJpZXMuZmlsdGVyZWRTZXJpZXNYKCkscj1cIlwiLG89XCJcIixuPW51bGwsbD1udWxsLGg9e3NlcmllczphLmdsb2JhbHMuc2VyaWVzLHNlcmllc0luZGV4OmUsZGF0YVBvaW50SW5kZXg6aSx3OmF9LGM9YS5nbG9iYWxzLnR0WkZvcm1hdHRlcjtudWxsPT09aT9sPWEuZ2xvYmFscy5zZXJpZXNbZV06YS5nbG9iYWxzLmlzWE51bWVyaWMmJlwidHJlZW1hcFwiIT09YS5jb25maWcuY2hhcnQudHlwZT8ocj1zW2VdW2ldLDA9PT1zW2VdLmxlbmd0aCYmKHI9c1t0aGlzLnRvb2x0aXBVdGlsLmdldEZpcnN0QWN0aXZlWEFycmF5KHMpXVtpXSkpOnI9dm9pZCAwIT09YS5nbG9iYWxzLmxhYmVsc1tpXT9hLmdsb2JhbHMubGFiZWxzW2ldOlwiXCI7dmFyIGQ9cjthLmdsb2JhbHMuaXNYTnVtZXJpYyYmXCJkYXRldGltZVwiPT09YS5jb25maWcueGF4aXMudHlwZT9yPW5ldyBUKHRoaXMuY3R4KS54TGFiZWxGb3JtYXQoYS5nbG9iYWxzLnR0S2V5Rm9ybWF0dGVyLGQsZCx7aTp2b2lkIDAsZGF0ZUZvcm1hdHRlcjpuZXcgSSh0aGlzLmN0eCkuZm9ybWF0RGF0ZSx3OnRoaXMud30pOnI9YS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbD9hLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1swXShkLGgpOmEuZ2xvYmFscy54TGFiZWxGb3JtYXR0ZXIoZCxoKTtyZXR1cm4gdm9pZCAwIT09YS5jb25maWcudG9vbHRpcC54LmZvcm1hdHRlciYmKHI9YS5nbG9iYWxzLnR0S2V5Rm9ybWF0dGVyKGQsaCkpLGEuZ2xvYmFscy5zZXJpZXNaLmxlbmd0aD4wJiZhLmdsb2JhbHMuc2VyaWVzWltlXS5sZW5ndGg+MCYmKG49YyhhLmdsb2JhbHMuc2VyaWVzWltlXVtpXSxhKSksbz1cImZ1bmN0aW9uXCI9PXR5cGVvZiBhLmNvbmZpZy54YXhpcy50b29sdGlwLmZvcm1hdHRlcj9hLmdsb2JhbHMueGF4aXNUb29sdGlwRm9ybWF0dGVyKGQsaCk6cix7dmFsOkFycmF5LmlzQXJyYXkobCk/bC5qb2luKFwiIFwiKTpsLHhWYWw6QXJyYXkuaXNBcnJheShyKT9yLmpvaW4oXCIgXCIpOnIseEF4aXNUVFZhbDpBcnJheS5pc0FycmF5KG8pP28uam9pbihcIiBcIik6byx6VmFsOm59fX0se2tleTpcImhhbmRsZUN1c3RvbVRvb2x0aXBcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmksaT10LmosYT10LnkxLHM9dC55MixyPXQudyxvPXRoaXMudHRDdHguZ2V0RWxUb29sdGlwKCksbj1yLmNvbmZpZy50b29sdGlwLmN1c3RvbTtBcnJheS5pc0FycmF5KG4pJiZuW2VdJiYobj1uW2VdKSxvLmlubmVySFRNTD1uKHtjdHg6dGhpcy5jdHgsc2VyaWVzOnIuZ2xvYmFscy5zZXJpZXMsc2VyaWVzSW5kZXg6ZSxkYXRhUG9pbnRJbmRleDppLHkxOmEseTI6cyx3OnJ9KX19XSksdH0oKSx1dD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudHRDdHg9ZSx0aGlzLmN0eD1lLmN0eCx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJtb3ZlWENyb3NzaGFpcnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bnVsbCxpPXRoaXMudHRDdHgsYT10aGlzLncscz1pLmdldEVsWENyb3NzaGFpcnMoKSxyPXQtaS54Y3Jvc3NoYWlyc1dpZHRoLzIsbz1hLmdsb2JhbHMubGFiZWxzLnNsaWNlKCkubGVuZ3RoO2lmKG51bGwhPT1lJiYocj1hLmdsb2JhbHMuZ3JpZFdpZHRoL28qZSksbnVsbD09PXN8fGEuZ2xvYmFscy5pc0Jhckhvcml6b250YWx8fChzLnNldEF0dHJpYnV0ZShcInhcIixyKSxzLnNldEF0dHJpYnV0ZShcIngxXCIscikscy5zZXRBdHRyaWJ1dGUoXCJ4MlwiLHIpLHMuc2V0QXR0cmlidXRlKFwieTJcIixhLmdsb2JhbHMuZ3JpZEhlaWdodCkscy5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1hY3RpdmVcIikpLHI8MCYmKHI9MCkscj5hLmdsb2JhbHMuZ3JpZFdpZHRoJiYocj1hLmdsb2JhbHMuZ3JpZFdpZHRoKSxpLmlzWEF4aXNUb29sdGlwRW5hYmxlZCl7dmFyIG49cjtcInRpY2tXaWR0aFwiIT09YS5jb25maWcueGF4aXMuY3Jvc3NoYWlycy53aWR0aCYmXCJiYXJXaWR0aFwiIT09YS5jb25maWcueGF4aXMuY3Jvc3NoYWlycy53aWR0aHx8KG49citpLnhjcm9zc2hhaXJzV2lkdGgvMiksdGhpcy5tb3ZlWEF4aXNUb29sdGlwKG4pfX19LHtrZXk6XCJtb3ZlWUNyb3NzaGFpcnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnR0Q3R4O251bGwhPT1lLnljcm9zc2hhaXJzJiZtLnNldEF0dHJzKGUueWNyb3NzaGFpcnMse3kxOnQseTI6dH0pLG51bGwhPT1lLnljcm9zc2hhaXJzSGlkZGVuJiZtLnNldEF0dHJzKGUueWNyb3NzaGFpcnNIaWRkZW4se3kxOnQseTI6dH0pfX0se2tleTpcIm1vdmVYQXhpc1Rvb2x0aXBcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT10aGlzLnR0Q3R4O2lmKG51bGwhPT1pLnhheGlzVG9vbHRpcCYmMCE9PWkueGNyb3NzaGFpcnNXaWR0aCl7aS54YXhpc1Rvb2x0aXAuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYWN0aXZlXCIpO3ZhciBhPWkueGF4aXNPZmZZK2UuY29uZmlnLnhheGlzLnRvb2x0aXAub2Zmc2V0WStlLmdsb2JhbHMudHJhbnNsYXRlWSsxK2UuY29uZmlnLnhheGlzLm9mZnNldFk7aWYodC09aS54YXhpc1Rvb2x0aXAuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgvMiwhaXNOYU4odCkpe3QrPWUuZ2xvYmFscy50cmFuc2xhdGVYO3ZhciBzO3M9bmV3IG0odGhpcy5jdHgpLmdldFRleHRSZWN0cyhpLnhheGlzVG9vbHRpcFRleHQuaW5uZXJIVE1MKSxpLnhheGlzVG9vbHRpcFRleHQuc3R5bGUubWluV2lkdGg9cy53aWR0aCtcInB4XCIsaS54YXhpc1Rvb2x0aXAuc3R5bGUubGVmdD10K1wicHhcIixpLnhheGlzVG9vbHRpcC5zdHlsZS50b3A9YStcInB4XCJ9fX19LHtrZXk6XCJtb3ZlWUF4aXNUb29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9dGhpcy50dEN0eDtudWxsPT09aS55YXhpc1RURWxzJiYoaS55YXhpc1RURWxzPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXBcIikpO3ZhciBhPXBhcnNlSW50KGkueWNyb3NzaGFpcnNIaWRkZW4uZ2V0QXR0cmlidXRlKFwieTFcIiksMTApLHM9ZS5nbG9iYWxzLnRyYW5zbGF0ZVkrYSxyPWkueWF4aXNUVEVsc1t0XS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQsbz1lLmdsb2JhbHMudHJhbnNsYXRlWUF4aXNYW3RdLTI7ZS5jb25maWcueWF4aXNbdF0ub3Bwb3NpdGUmJihvLT0yNikscy09ci8yLC0xPT09ZS5nbG9iYWxzLmlnbm9yZVlBeGlzSW5kZXhlcy5pbmRleE9mKHQpPyhpLnlheGlzVFRFbHNbdF0uY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYWN0aXZlXCIpLGkueWF4aXNUVEVsc1t0XS5zdHlsZS50b3A9cytcInB4XCIsaS55YXhpc1RURWxzW3RdLnN0eWxlLmxlZnQ9bytlLmNvbmZpZy55YXhpc1t0XS50b29sdGlwLm9mZnNldFgrXCJweFwiKTppLnlheGlzVFRFbHNbdF0uY2xhc3NMaXN0LnJlbW92ZShcImFwZXhjaGFydHMtYWN0aXZlXCIpfX0se2tleTpcIm1vdmVUb29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbCxhPXRoaXMudyxzPXRoaXMudHRDdHgscj1zLmdldEVsVG9vbHRpcCgpLG89cy50b29sdGlwUmVjdCxuPW51bGwhPT1pP3BhcnNlRmxvYXQoaSk6MSxsPXBhcnNlRmxvYXQodCkrbis1LGg9cGFyc2VGbG9hdChlKStuLzI7aWYobD5hLmdsb2JhbHMuZ3JpZFdpZHRoLzImJihsPWwtby50dFdpZHRoLW4tMTApLGw+YS5nbG9iYWxzLmdyaWRXaWR0aC1vLnR0V2lkdGgtMTAmJihsPWEuZ2xvYmFscy5ncmlkV2lkdGgtby50dFdpZHRoKSxsPC0yMCYmKGw9LTIwKSxhLmNvbmZpZy50b29sdGlwLmZvbGxvd0N1cnNvcil7dmFyIGM9cy5nZXRFbEdyaWQoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsobD1zLmUuY2xpZW50WC1jLmxlZnQpPmEuZ2xvYmFscy5ncmlkV2lkdGgvMiYmKGwtPXMudG9vbHRpcFJlY3QudHRXaWR0aCksKGg9cy5lLmNsaWVudFkrYS5nbG9iYWxzLnRyYW5zbGF0ZVktYy50b3ApPmEuZ2xvYmFscy5ncmlkSGVpZ2h0LzImJihoLT1zLnRvb2x0aXBSZWN0LnR0SGVpZ2h0KX1lbHNlIGEuZ2xvYmFscy5pc0Jhckhvcml6b250YWx8fG8udHRIZWlnaHQvMitoPmEuZ2xvYmFscy5ncmlkSGVpZ2h0JiYoaD1hLmdsb2JhbHMuZ3JpZEhlaWdodC1vLnR0SGVpZ2h0K2EuZ2xvYmFscy50cmFuc2xhdGVZKTtpc05hTihsKXx8KGwrPWEuZ2xvYmFscy50cmFuc2xhdGVYLHIuc3R5bGUubGVmdD1sK1wicHhcIixyLnN0eWxlLnRvcD1oK1wicHhcIil9fSx7a2V5OlwibW92ZU1hcmtlcnNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPXRoaXMudHRDdHg7aWYoaS5nbG9iYWxzLm1hcmtlcnMuc2l6ZVt0XT4wKWZvcih2YXIgcz1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiIC5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiLmNvbmNhdCh0LFwiJ10gLmFwZXhjaGFydHMtbWFya2VyXCIpKSxyPTA7cjxzLmxlbmd0aDtyKyspcGFyc2VJbnQoc1tyXS5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksMTApPT09ZSYmKGEubWFya2VyLnJlc2V0UG9pbnRzU2l6ZSgpLGEubWFya2VyLmVubGFyZ2VDdXJyZW50UG9pbnQoZSxzW3JdKSk7ZWxzZSBhLm1hcmtlci5yZXNldFBvaW50c1NpemUoKSx0aGlzLm1vdmVEeW5hbWljUG9pbnRPbkhvdmVyKGUsdCl9fSx7a2V5OlwibW92ZUR5bmFtaWNQb2ludE9uSG92ZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpLGEscz10aGlzLncscj10aGlzLnR0Q3R4LG89cy5nbG9iYWxzLnBvaW50c0FycmF5LG49ci50b29sdGlwVXRpbC5nZXRIb3Zlck1hcmtlclNpemUoZSksbD1zLmNvbmZpZy5zZXJpZXNbZV0udHlwZTtpZighbHx8XCJjb2x1bW5cIiE9PWwmJlwiY2FuZGxlc3RpY2tcIiE9PWwmJlwiYm94UGxvdFwiIT09bCl7aT1vW2VdW3RdWzBdLGE9b1tlXVt0XVsxXT9vW2VdW3RdWzFdOjA7dmFyIGg9cy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiLmNvbmNhdChlLFwiJ10gLmFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMgY2lyY2xlXCIpKTtoJiZhPHMuZ2xvYmFscy5ncmlkSGVpZ2h0JiZhPjAmJihoLnNldEF0dHJpYnV0ZShcInJcIixuKSxoLnNldEF0dHJpYnV0ZShcImN4XCIsaSksaC5zZXRBdHRyaWJ1dGUoXCJjeVwiLGEpKSx0aGlzLm1vdmVYQ3Jvc3NoYWlycyhpKSxyLmZpeGVkVG9vbHRpcHx8dGhpcy5tb3ZlVG9vbHRpcChpLGEsbil9fX0se2tleTpcIm1vdmVEeW5hbWljUG9pbnRzT25Ib3ZlclwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGk9dGhpcy50dEN0eCxhPWkudyxzPTAscj0wLG89YS5nbG9iYWxzLnBvaW50c0FycmF5O2U9bmV3IE4odGhpcy5jdHgpLmdldEFjdGl2ZUNvbmZpZ1Nlcmllc0luZGV4KFwiYXNjXCIsW1wibGluZVwiLFwiYXJlYVwiLFwic2NhdHRlclwiLFwiYnViYmxlXCJdKTt2YXIgbj1pLnRvb2x0aXBVdGlsLmdldEhvdmVyTWFya2VyU2l6ZShlKTtvW2VdJiYocz1vW2VdW3RdWzBdLHI9b1tlXVt0XVsxXSk7dmFyIGw9aS50b29sdGlwVXRpbC5nZXRBbGxNYXJrZXJzKCk7aWYobnVsbCE9PWwpZm9yKHZhciBoPTA7aDxhLmdsb2JhbHMuc2VyaWVzLmxlbmd0aDtoKyspe3ZhciBjPW9baF07aWYoYS5nbG9iYWxzLmNvbWJvQ2hhcnRzJiZ2b2lkIDA9PT1jJiZsLnNwbGljZShoLDAsbnVsbCksYyYmYy5sZW5ndGgpe3ZhciBkPW9baF1bdF1bMV0sZz12b2lkIDA7aWYobFtoXS5zZXRBdHRyaWJ1dGUoXCJjeFwiLHMpLFwicmFuZ2VBcmVhXCI9PT1hLmNvbmZpZy5jaGFydC50eXBlJiYhYS5nbG9iYWxzLmNvbWJvQ2hhcnRzKXt2YXIgdT10K2EuZ2xvYmFscy5zZXJpZXNbaF0ubGVuZ3RoO2c9b1toXVt1XVsxXSxkLT1NYXRoLmFicyhkLWcpLzJ9bnVsbCE9PWQmJiFpc05hTihkKSYmZDxhLmdsb2JhbHMuZ3JpZEhlaWdodCtuJiZkK24+MD8obFtoXSYmbFtoXS5zZXRBdHRyaWJ1dGUoXCJyXCIsbiksbFtoXSYmbFtoXS5zZXRBdHRyaWJ1dGUoXCJjeVwiLGQpKTpsW2hdJiZsW2hdLnNldEF0dHJpYnV0ZShcInJcIiwwKX19dGhpcy5tb3ZlWENyb3NzaGFpcnMocyksaS5maXhlZFRvb2x0aXB8fHRoaXMubW92ZVRvb2x0aXAocyxyfHxhLmdsb2JhbHMuZ3JpZEhlaWdodCxuKX19LHtrZXk6XCJtb3ZlU3RpY2t5VG9vbHRpcE92ZXJCYXJzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT10aGlzLnR0Q3R4LHM9aS5nbG9iYWxzLmNvbHVtblNlcmllcz9pLmdsb2JhbHMuY29sdW1uU2VyaWVzLmxlbmd0aDppLmdsb2JhbHMuc2VyaWVzLmxlbmd0aCxyPXM+PTImJnMlMj09MD9NYXRoLmZsb29yKHMvMik6TWF0aC5mbG9vcihzLzIpKzE7aS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKHI9bmV3IE4odGhpcy5jdHgpLmdldEFjdGl2ZUNvbmZpZ1Nlcmllc0luZGV4KFwiZGVzY1wiKSsxKTt2YXIgbz1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtYmFyLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNbcmVsPSdcIi5jb25jYXQocixcIiddIHBhdGhbaj0nXCIpLmNvbmNhdCh0LFwiJ10sIC5hcGV4Y2hhcnRzLWNhbmRsZXN0aWNrLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNbcmVsPSdcIikuY29uY2F0KHIsXCInXSBwYXRoW2o9J1wiKS5jb25jYXQodCxcIiddLCAuYXBleGNoYXJ0cy1ib3hQbG90LXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNbcmVsPSdcIikuY29uY2F0KHIsXCInXSBwYXRoW2o9J1wiKS5jb25jYXQodCxcIiddLCAuYXBleGNoYXJ0cy1yYW5nZWJhci1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzW3JlbD0nXCIpLmNvbmNhdChyLFwiJ10gcGF0aFtqPSdcIikuY29uY2F0KHQsXCInXVwiKSk7b3x8XCJudW1iZXJcIiE9dHlwZW9mIGV8fChvPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1iYXItc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiLmNvbmNhdChlLFwiJ10gcGF0aFtqPSdcIikuY29uY2F0KHQsXCInXSxcXG4gICAgICAgIC5hcGV4Y2hhcnRzLWNhbmRsZXN0aWNrLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcXFw6cmVhbEluZGV4PSdcIikuY29uY2F0KGUsXCInXSBwYXRoW2o9J1wiKS5jb25jYXQodCxcIiddLFxcbiAgICAgICAgLmFwZXhjaGFydHMtYm94UGxvdC1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIpLmNvbmNhdChlLFwiJ10gcGF0aFtqPSdcIikuY29uY2F0KHQsXCInXSxcXG4gICAgICAgIC5hcGV4Y2hhcnRzLXJhbmdlYmFyLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcXFw6cmVhbEluZGV4PSdcIikuY29uY2F0KGUsXCInXSBwYXRoW2o9J1wiKS5jb25jYXQodCxcIiddXCIpKSk7dmFyIG49bz9wYXJzZUZsb2F0KG8uZ2V0QXR0cmlidXRlKFwiY3hcIikpOjAsbD1vP3BhcnNlRmxvYXQoby5nZXRBdHRyaWJ1dGUoXCJjeVwiKSk6MCxoPW8/cGFyc2VGbG9hdChvLmdldEF0dHJpYnV0ZShcImJhcldpZHRoXCIpKTowLGM9YS5nZXRFbEdyaWQoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxkPW8mJihvLmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtY2FuZGxlc3RpY2stYXJlYVwiKXx8by5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWJveFBsb3QtYXJlYVwiKSk7aS5nbG9iYWxzLmlzWE51bWVyaWM/KG8mJiFkJiYobi09cyUyIT0wP2gvMjowKSxvJiZkJiZpLmdsb2JhbHMuY29tYm9DaGFydHMmJihuLT1oLzIpKTppLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsfHwobj1hLnhBeGlzVGlja3NQb3NpdGlvbnNbdC0xXSthLmRhdGFQb2ludHNEaXZpZGVkV2lkdGgvMixpc05hTihuKSYmKG49YS54QXhpc1RpY2tzUG9zaXRpb25zW3RdLWEuZGF0YVBvaW50c0RpdmlkZWRXaWR0aC8yKSksaS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbD9sLT1hLnRvb2x0aXBSZWN0LnR0SGVpZ2h0OmkuY29uZmlnLnRvb2x0aXAuZm9sbG93Q3Vyc29yP2w9YS5lLmNsaWVudFktYy50b3AtYS50b29sdGlwUmVjdC50dEhlaWdodC8yOmwrYS50b29sdGlwUmVjdC50dEhlaWdodCsxNT5pLmdsb2JhbHMuZ3JpZEhlaWdodCYmKGw9aS5nbG9iYWxzLmdyaWRIZWlnaHQpLGkuZ2xvYmFscy5pc0Jhckhvcml6b250YWx8fHRoaXMubW92ZVhDcm9zc2hhaXJzKG4pLGEuZml4ZWRUb29sdGlwfHx0aGlzLm1vdmVUb29sdGlwKG4sbHx8aS5nbG9iYWxzLmdyaWRIZWlnaHQpfX1dKSx0fSgpLHB0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLnR0Q3R4PWUsdGhpcy5jdHg9ZS5jdHgsdGhpcy50b29sdGlwUG9zaXRpb249bmV3IHV0KGUpfXJldHVybiByKHQsW3trZXk6XCJkcmF3RHluYW1pY1BvaW50c1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9bmV3IG0odGhpcy5jdHgpLGk9bmV3IEQodGhpcy5jdHgpLGE9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllc1wiKTthPXUoYSksdC5jb25maWcuY2hhcnQuc3RhY2tlZCYmYS5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiBwYXJzZUZsb2F0KHQuZ2V0QXR0cmlidXRlKFwiZGF0YTpyZWFsSW5kZXhcIikpLXBhcnNlRmxvYXQoZS5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKSl9KSk7Zm9yKHZhciBzPTA7czxhLmxlbmd0aDtzKyspe3ZhciByPWFbc10ucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzLXdyYXBcIik7aWYobnVsbCE9PXIpe3ZhciBvPXZvaWQgMCxuPVwiYXBleGNoYXJ0cy1tYXJrZXIgd1wiLmNvbmNhdCgoTWF0aC5yYW5kb20oKSsxKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDQpKTtcImxpbmVcIiE9PXQuY29uZmlnLmNoYXJ0LnR5cGUmJlwiYXJlYVwiIT09dC5jb25maWcuY2hhcnQudHlwZXx8dC5nbG9iYWxzLmNvbWJvQ2hhcnRzfHx0LmNvbmZpZy50b29sdGlwLmludGVyc2VjdHx8KG4rPVwiIG5vLXBvaW50ZXItZXZlbnRzXCIpO3ZhciBsPWkuZ2V0TWFya2VyQ29uZmlnKHtjc3NDbGFzczpuLHNlcmllc0luZGV4Ok51bWJlcihyLmdldEF0dHJpYnV0ZShcImRhdGE6cmVhbEluZGV4XCIpKX0pOyhvPWUuZHJhd01hcmtlcigwLDAsbCkpLm5vZGUuc2V0QXR0cmlidXRlKFwiZGVmYXVsdC1tYXJrZXItc2l6ZVwiLDApO3ZhciBoPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0Lmdsb2JhbHMuU1ZHTlMsXCJnXCIpO2guY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnNcIiksaC5hcHBlbmRDaGlsZChvLm5vZGUpLHIuYXBwZW5kQ2hpbGQoaCl9fX19LHtrZXk6XCJlbmxhcmdlQ3VycmVudFBvaW50XCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbCxhPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpudWxsLHM9dGhpcy53O1wiYnViYmxlXCIhPT1zLmNvbmZpZy5jaGFydC50eXBlJiZ0aGlzLm5ld1BvaW50U2l6ZSh0LGUpO3ZhciByPWUuZ2V0QXR0cmlidXRlKFwiY3hcIiksbz1lLmdldEF0dHJpYnV0ZShcImN5XCIpO2lmKG51bGwhPT1pJiZudWxsIT09YSYmKHI9aSxvPWEpLHRoaXMudG9vbHRpcFBvc2l0aW9uLm1vdmVYQ3Jvc3NoYWlycyhyKSwhdGhpcy5maXhlZFRvb2x0aXApe2lmKFwicmFkYXJcIj09PXMuY29uZmlnLmNoYXJ0LnR5cGUpe3ZhciBuPXRoaXMudHRDdHguZ2V0RWxHcmlkKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cj10aGlzLnR0Q3R4LmUuY2xpZW50WC1uLmxlZnR9dGhpcy50b29sdGlwUG9zaXRpb24ubW92ZVRvb2x0aXAocixvLHMuY29uZmlnLm1hcmtlcnMuaG92ZXIuc2l6ZSl9fX0se2tleTpcImVubGFyZ2VQb2ludHNcIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy53LGk9dGhpcyxhPXRoaXMudHRDdHgscz10LHI9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllczpub3QoLmFwZXhjaGFydHMtc2VyaWVzLWNvbGxhcHNlZCkgLmFwZXhjaGFydHMtbWFya2VyXCIpLG89ZS5jb25maWcubWFya2Vycy5ob3Zlci5zaXplLG49MDtuPHIubGVuZ3RoO24rKyl7dmFyIGw9cltuXS5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksaD1yW25dLmdldEF0dHJpYnV0ZShcImluZGV4XCIpO2lmKHZvaWQgMD09PW8mJihvPWUuZ2xvYmFscy5tYXJrZXJzLnNpemVbaF0rZS5jb25maWcubWFya2Vycy5ob3Zlci5zaXplT2Zmc2V0KSxzPT09cGFyc2VJbnQobCwxMCkpe2kubmV3UG9pbnRTaXplKHMscltuXSk7dmFyIGM9cltuXS5nZXRBdHRyaWJ1dGUoXCJjeFwiKSxkPXJbbl0uZ2V0QXR0cmlidXRlKFwiY3lcIik7aS50b29sdGlwUG9zaXRpb24ubW92ZVhDcm9zc2hhaXJzKGMpLGEuZml4ZWRUb29sdGlwfHxpLnRvb2x0aXBQb3NpdGlvbi5tb3ZlVG9vbHRpcChjLGQsbyl9ZWxzZSBpLm9sZFBvaW50U2l6ZShyW25dKX19fSx7a2V5OlwibmV3UG9pbnRTaXplXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT1pLmNvbmZpZy5tYXJrZXJzLmhvdmVyLnNpemUscz0wPT09dD9lLnBhcmVudE5vZGUuZmlyc3RDaGlsZDplLnBhcmVudE5vZGUubGFzdENoaWxkO2lmKFwiMFwiIT09cy5nZXRBdHRyaWJ1dGUoXCJkZWZhdWx0LW1hcmtlci1zaXplXCIpKXt2YXIgcj1wYXJzZUludChzLmdldEF0dHJpYnV0ZShcImluZGV4XCIpLDEwKTt2b2lkIDA9PT1hJiYoYT1pLmdsb2JhbHMubWFya2Vycy5zaXplW3JdK2kuY29uZmlnLm1hcmtlcnMuaG92ZXIuc2l6ZU9mZnNldCksYTwwJiYoYT0wKSxzLnNldEF0dHJpYnV0ZShcInJcIixhKX19fSx7a2V5Olwib2xkUG9pbnRTaXplXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9cGFyc2VGbG9hdCh0LmdldEF0dHJpYnV0ZShcImRlZmF1bHQtbWFya2VyLXNpemVcIikpO3Quc2V0QXR0cmlidXRlKFwiclwiLGUpfX0se2tleTpcInJlc2V0UG9pbnRzU2l6ZVwiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllczpub3QoLmFwZXhjaGFydHMtc2VyaWVzLWNvbGxhcHNlZCkgLmFwZXhjaGFydHMtbWFya2VyXCIpLGU9MDtlPHQubGVuZ3RoO2UrKyl7dmFyIGk9cGFyc2VGbG9hdCh0W2VdLmdldEF0dHJpYnV0ZShcImRlZmF1bHQtbWFya2VyLXNpemVcIikpO3guaXNOdW1iZXIoaSkmJmk+PTA/dFtlXS5zZXRBdHRyaWJ1dGUoXCJyXCIsaSk6dFtlXS5zZXRBdHRyaWJ1dGUoXCJyXCIsMCl9fX1dKSx0fSgpLGZ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLnR0Q3R4PWV9cmV0dXJuIHIodCxbe2tleTpcImdldEF0dHJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiBwYXJzZUZsb2F0KHQudGFyZ2V0LmdldEF0dHJpYnV0ZShlKSl9fSx7a2V5OlwiaGFuZGxlSGVhdFRyZWVUb29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5lLGk9dC5vcHQsYT10Lngscz10Lnkscj10LnR5cGUsbz10aGlzLnR0Q3R4LG49dGhpcy53O2lmKGUudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtXCIuY29uY2F0KHIsXCItcmVjdFwiKSkpe3ZhciBsPXRoaXMuZ2V0QXR0cihlLFwiaVwiKSxoPXRoaXMuZ2V0QXR0cihlLFwialwiKSxjPXRoaXMuZ2V0QXR0cihlLFwiY3hcIiksZD10aGlzLmdldEF0dHIoZSxcImN5XCIpLGc9dGhpcy5nZXRBdHRyKGUsXCJ3aWR0aFwiKSx1PXRoaXMuZ2V0QXR0cihlLFwiaGVpZ2h0XCIpO2lmKG8udG9vbHRpcExhYmVscy5kcmF3U2VyaWVzVGV4dHMoe3R0SXRlbXM6aS50dEl0ZW1zLGk6bCxqOmgsc2hhcmVkOiExLGU6ZX0pLG4uZ2xvYmFscy5jYXB0dXJlZFNlcmllc0luZGV4PWwsbi5nbG9iYWxzLmNhcHR1cmVkRGF0YVBvaW50SW5kZXg9aCxhPWMrby50b29sdGlwUmVjdC50dFdpZHRoLzIrZyxzPWQrby50b29sdGlwUmVjdC50dEhlaWdodC8yLXUvMixvLnRvb2x0aXBQb3NpdGlvbi5tb3ZlWENyb3NzaGFpcnMoYytnLzIpLGE+bi5nbG9iYWxzLmdyaWRXaWR0aC8yJiYoYT1jLW8udG9vbHRpcFJlY3QudHRXaWR0aC8yK2cpLG8udy5jb25maWcudG9vbHRpcC5mb2xsb3dDdXJzb3Ipe3ZhciBwPW4uZ2xvYmFscy5kb20uZWxXcmFwLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2E9bi5nbG9iYWxzLmNsaWVudFgtcC5sZWZ0LShhPm4uZ2xvYmFscy5ncmlkV2lkdGgvMj9vLnRvb2x0aXBSZWN0LnR0V2lkdGg6MCkscz1uLmdsb2JhbHMuY2xpZW50WS1wLnRvcC0ocz5uLmdsb2JhbHMuZ3JpZEhlaWdodC8yP28udG9vbHRpcFJlY3QudHRIZWlnaHQ6MCl9fXJldHVybnt4OmEseTpzfX19LHtrZXk6XCJoYW5kbGVNYXJrZXJUb29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaSxhPXQuZSxzPXQub3B0LHI9dC54LG89dC55LG49dGhpcy53LGw9dGhpcy50dEN0eDtpZihhLnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLW1hcmtlclwiKSl7dmFyIGg9cGFyc2VJbnQocy5wYXRocy5nZXRBdHRyaWJ1dGUoXCJjeFwiKSwxMCksYz1wYXJzZUludChzLnBhdGhzLmdldEF0dHJpYnV0ZShcImN5XCIpLDEwKSxkPXBhcnNlRmxvYXQocy5wYXRocy5nZXRBdHRyaWJ1dGUoXCJ2YWxcIikpO2lmKGk9cGFyc2VJbnQocy5wYXRocy5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksMTApLGU9cGFyc2VJbnQocy5wYXRocy5wYXJlbnROb2RlLnBhcmVudE5vZGUucGFyZW50Tm9kZS5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksMTApLTEsbC5pbnRlcnNlY3Qpe3ZhciBnPXguZmluZEFuY2VzdG9yKHMucGF0aHMsXCJhcGV4Y2hhcnRzLXNlcmllc1wiKTtnJiYoZT1wYXJzZUludChnLmdldEF0dHJpYnV0ZShcImRhdGE6cmVhbEluZGV4XCIpLDEwKSl9aWYobC50b29sdGlwTGFiZWxzLmRyYXdTZXJpZXNUZXh0cyh7dHRJdGVtczpzLnR0SXRlbXMsaTplLGo6aSxzaGFyZWQ6IWwuc2hvd09uSW50ZXJzZWN0JiZuLmNvbmZpZy50b29sdGlwLnNoYXJlZCxlOmF9KSxcIm1vdXNldXBcIj09PWEudHlwZSYmbC5tYXJrZXJDbGljayhhLGUsaSksbi5nbG9iYWxzLmNhcHR1cmVkU2VyaWVzSW5kZXg9ZSxuLmdsb2JhbHMuY2FwdHVyZWREYXRhUG9pbnRJbmRleD1pLHI9aCxvPWMrbi5nbG9iYWxzLnRyYW5zbGF0ZVktMS40KmwudG9vbHRpcFJlY3QudHRIZWlnaHQsbC53LmNvbmZpZy50b29sdGlwLmZvbGxvd0N1cnNvcil7dmFyIHU9bC5nZXRFbEdyaWQoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtvPWwuZS5jbGllbnRZK24uZ2xvYmFscy50cmFuc2xhdGVZLXUudG9wfWQ8MCYmKG89YyksbC5tYXJrZXIuZW5sYXJnZUN1cnJlbnRQb2ludChpLHMucGF0aHMscixvKX1yZXR1cm57eDpyLHk6b319fSx7a2V5OlwiaGFuZGxlQmFyVG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGksYT10LmUscz10Lm9wdCxyPXRoaXMudyxvPXRoaXMudHRDdHgsbj1vLmdldEVsVG9vbHRpcCgpLGw9MCxoPTAsYz0wLGQ9dGhpcy5nZXRCYXJUb29sdGlwWFkoe2U6YSxvcHQ6c30pO2U9ZC5pO3ZhciBnPWQuYmFySGVpZ2h0LHU9ZC5qO3IuZ2xvYmFscy5jYXB0dXJlZFNlcmllc0luZGV4PWUsci5nbG9iYWxzLmNhcHR1cmVkRGF0YVBvaW50SW5kZXg9dSxyLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiZvLnRvb2x0aXBVdGlsLmhhc0JhcnMoKXx8IXIuY29uZmlnLnRvb2x0aXAuc2hhcmVkPyhoPWQueCxjPWQueSxpPUFycmF5LmlzQXJyYXkoci5jb25maWcuc3Ryb2tlLndpZHRoKT9yLmNvbmZpZy5zdHJva2Uud2lkdGhbZV06ci5jb25maWcuc3Ryb2tlLndpZHRoLGw9aCk6ci5nbG9iYWxzLmNvbWJvQ2hhcnRzfHxyLmNvbmZpZy50b29sdGlwLnNoYXJlZHx8KGwvPTIpLGlzTmFOKGMpJiYoYz1yLmdsb2JhbHMuc3ZnSGVpZ2h0LW8udG9vbHRpcFJlY3QudHRIZWlnaHQpO3ZhciBwPXBhcnNlSW50KHMucGF0aHMucGFyZW50Tm9kZS5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKSwxMCksZj1yLmdsb2JhbHMuaXNNdWx0aXBsZVlBeGlzP3IuY29uZmlnLnlheGlzW3BdJiZyLmNvbmZpZy55YXhpc1twXS5yZXZlcnNlZDpyLmNvbmZpZy55YXhpc1swXS5yZXZlcnNlZDtpZihoK28udG9vbHRpcFJlY3QudHRXaWR0aD5yLmdsb2JhbHMuZ3JpZFdpZHRoJiYhZj9oLT1vLnRvb2x0aXBSZWN0LnR0V2lkdGg6aDwwJiYoaD0wKSxvLncuY29uZmlnLnRvb2x0aXAuZm9sbG93Q3Vyc29yKXt2YXIgeD1vLmdldEVsR3JpZCgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2M9by5lLmNsaWVudFkteC50b3B9bnVsbD09PW8udG9vbHRpcCYmKG8udG9vbHRpcD1yLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtdG9vbHRpcFwiKSksci5jb25maWcudG9vbHRpcC5zaGFyZWR8fChyLmdsb2JhbHMuY29tYm9CYXJDb3VudD4wP28udG9vbHRpcFBvc2l0aW9uLm1vdmVYQ3Jvc3NoYWlycyhsK2kvMik6by50b29sdGlwUG9zaXRpb24ubW92ZVhDcm9zc2hhaXJzKGwpKSwhby5maXhlZFRvb2x0aXAmJighci5jb25maWcudG9vbHRpcC5zaGFyZWR8fHIuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJm8udG9vbHRpcFV0aWwuaGFzQmFycygpKSYmKGYmJihoLT1vLnRvb2x0aXBSZWN0LnR0V2lkdGgpPDAmJihoPTApLCFmfHxyLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiZvLnRvb2x0aXBVdGlsLmhhc0JhcnMoKXx8KGM9YytnLTIqKHIuZ2xvYmFscy5zZXJpZXNbZV1bdV08MD9nOjApKSxjPWMrci5nbG9iYWxzLnRyYW5zbGF0ZVktby50b29sdGlwUmVjdC50dEhlaWdodC8yLG4uc3R5bGUubGVmdD1oK3IuZ2xvYmFscy50cmFuc2xhdGVYK1wicHhcIixuLnN0eWxlLnRvcD1jK1wicHhcIil9fSx7a2V5OlwiZ2V0QmFyVG9vbHRpcFhZXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5lLGk9dC5vcHQsYT10aGlzLncscz1udWxsLHI9dGhpcy50dEN0eCxvPTAsbj0wLGw9MCxoPTAsYz0wLGQ9ZS50YXJnZXQuY2xhc3NMaXN0O2lmKGQuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWJhci1hcmVhXCIpfHxkLmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1jYW5kbGVzdGljay1hcmVhXCIpfHxkLmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1ib3hQbG90LWFyZWFcIil8fGQuY29udGFpbnMoXCJhcGV4Y2hhcnRzLXJhbmdlYmFyLWFyZWFcIikpe3ZhciBnPWUudGFyZ2V0LHU9Zy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxwPWkuZWxHcmlkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGY9dS5oZWlnaHQ7Yz11LmhlaWdodDt2YXIgeD11LndpZHRoLGI9cGFyc2VJbnQoZy5nZXRBdHRyaWJ1dGUoXCJjeFwiKSwxMCksdj1wYXJzZUludChnLmdldEF0dHJpYnV0ZShcImN5XCIpLDEwKTtoPXBhcnNlRmxvYXQoZy5nZXRBdHRyaWJ1dGUoXCJiYXJXaWR0aFwiKSk7dmFyIG09XCJ0b3VjaG1vdmVcIj09PWUudHlwZT9lLnRvdWNoZXNbMF0uY2xpZW50WDplLmNsaWVudFg7cz1wYXJzZUludChnLmdldEF0dHJpYnV0ZShcImpcIiksMTApLG89cGFyc2VJbnQoZy5wYXJlbnROb2RlLmdldEF0dHJpYnV0ZShcInJlbFwiKSwxMCktMTt2YXIgeT1nLmdldEF0dHJpYnV0ZShcImRhdGEtcmFuZ2UteTFcIiksdz1nLmdldEF0dHJpYnV0ZShcImRhdGEtcmFuZ2UteTJcIik7YS5nbG9iYWxzLmNvbWJvQ2hhcnRzJiYobz1wYXJzZUludChnLnBhcmVudE5vZGUuZ2V0QXR0cmlidXRlKFwiZGF0YTpyZWFsSW5kZXhcIiksMTApKSxyLnRvb2x0aXBMYWJlbHMuZHJhd1Nlcmllc1RleHRzKHt0dEl0ZW1zOmkudHRJdGVtcyxpOm8sajpzLHkxOnk/cGFyc2VJbnQoeSwxMCk6bnVsbCx5Mjp3P3BhcnNlSW50KHcsMTApOm51bGwsc2hhcmVkOiFyLnNob3dPbkludGVyc2VjdCYmYS5jb25maWcudG9vbHRpcC5zaGFyZWQsZTplfSksYS5jb25maWcudG9vbHRpcC5mb2xsb3dDdXJzb3I/YS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbD8obj1tLXAubGVmdCsxNSxsPXYtci5kYXRhUG9pbnRzRGl2aWRlZEhlaWdodCtmLzItci50b29sdGlwUmVjdC50dEhlaWdodC8yKToobj1hLmdsb2JhbHMuaXNYTnVtZXJpYz9iLXgvMjpiLXIuZGF0YVBvaW50c0RpdmlkZWRXaWR0aCt4LzIsbD1lLmNsaWVudFktcC50b3Atci50b29sdGlwUmVjdC50dEhlaWdodC8yLTE1KTphLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsPygobj1iKTxyLnh5UmF0aW9zLmJhc2VMaW5lSW52ZXJ0ZWRZJiYobj1iLXIudG9vbHRpcFJlY3QudHRXaWR0aCksbD12LXIuZGF0YVBvaW50c0RpdmlkZWRIZWlnaHQrZi8yLXIudG9vbHRpcFJlY3QudHRIZWlnaHQvMik6KG49YS5nbG9iYWxzLmlzWE51bWVyaWM/Yi14LzI6Yi1yLmRhdGFQb2ludHNEaXZpZGVkV2lkdGgreC8yLGw9dil9cmV0dXJue3g6bix5OmwsYmFySGVpZ2h0OmMsYmFyV2lkdGg6aCxpOm8sajpzfX19XSksdH0oKSx4dD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy50dEN0eD1lfXJldHVybiByKHQsW3trZXk6XCJkcmF3WGF4aXNUb29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10aGlzLnR0Q3R4LGk9XCJib3R0b21cIj09PXQuY29uZmlnLnhheGlzLnBvc2l0aW9uO2UueGF4aXNPZmZZPWk/dC5nbG9iYWxzLmdyaWRIZWlnaHQrMTotdC5nbG9iYWxzLnhBeGlzSGVpZ2h0LXQuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5oZWlnaHQrMzt2YXIgYT1pP1wiYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAgYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtYm90dG9tXCI6XCJhcGV4Y2hhcnRzLXhheGlzdG9vbHRpcCBhcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC10b3BcIixzPXQuZ2xvYmFscy5kb20uZWxXcmFwO2UuaXNYQXhpc1Rvb2x0aXBFbmFibGVkJiYobnVsbD09PXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXBcIikmJihlLnhheGlzVG9vbHRpcD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLGUueGF4aXNUb29sdGlwLnNldEF0dHJpYnV0ZShcImNsYXNzXCIsYStcIiBhcGV4Y2hhcnRzLXRoZW1lLVwiK3QuY29uZmlnLnRvb2x0aXAudGhlbWUpLHMuYXBwZW5kQ2hpbGQoZS54YXhpc1Rvb2x0aXApLGUueGF4aXNUb29sdGlwVGV4dD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLGUueGF4aXNUb29sdGlwVGV4dC5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtdGV4dFwiKSxlLnhheGlzVG9vbHRpcFRleHQuc3R5bGUuZm9udEZhbWlseT10LmNvbmZpZy54YXhpcy50b29sdGlwLnN0eWxlLmZvbnRGYW1pbHl8fHQuY29uZmlnLmNoYXJ0LmZvbnRGYW1pbHksZS54YXhpc1Rvb2x0aXBUZXh0LnN0eWxlLmZvbnRTaXplPXQuY29uZmlnLnhheGlzLnRvb2x0aXAuc3R5bGUuZm9udFNpemUsZS54YXhpc1Rvb2x0aXAuYXBwZW5kQ2hpbGQoZS54YXhpc1Rvb2x0aXBUZXh0KSkpfX0se2tleTpcImRyYXdZYXhpc1Rvb2x0aXBcIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLncsZT10aGlzLnR0Q3R4LGk9ZnVuY3Rpb24oaSl7dmFyIGE9dC5jb25maWcueWF4aXNbaV0ub3Bwb3NpdGV8fHQuY29uZmlnLnlheGlzW2ldLmNyb3NzaGFpcnMub3Bwb3NpdGU7ZS55YXhpc09mZlg9YT90Lmdsb2JhbHMuZ3JpZFdpZHRoKzE6MTt2YXIgcz1cImFwZXhjaGFydHMteWF4aXN0b29sdGlwIGFwZXhjaGFydHMteWF4aXN0b29sdGlwLVwiLmNvbmNhdChpLGE/XCIgYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtcmlnaHRcIjpcIiBhcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1sZWZ0XCIpO3QuZ2xvYmFscy55QXhpc1NhbWVTY2FsZUluZGljZXMubWFwKChmdW5jdGlvbihlLGEpe2UubWFwKChmdW5jdGlvbihlLGEpe2E9PT1pJiYocys9dC5jb25maWcueWF4aXNbYV0uc2hvdz9cIiBcIjpcIiBhcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1oaWRkZW5cIil9KSl9KSk7dmFyIHI9dC5nbG9iYWxzLmRvbS5lbFdyYXA7bnVsbD09PXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAgYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtXCIuY29uY2F0KGkpKSYmKGUueWF4aXNUb29sdGlwPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksZS55YXhpc1Rvb2x0aXAuc2V0QXR0cmlidXRlKFwiY2xhc3NcIixzK1wiIGFwZXhjaGFydHMtdGhlbWUtXCIrdC5jb25maWcudG9vbHRpcC50aGVtZSksci5hcHBlbmRDaGlsZChlLnlheGlzVG9vbHRpcCksMD09PWkmJihlLnlheGlzVG9vbHRpcFRleHQ9W10pLGUueWF4aXNUb29sdGlwVGV4dFtpXT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLGUueWF4aXNUb29sdGlwVGV4dFtpXS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtdGV4dFwiKSxlLnlheGlzVG9vbHRpcC5hcHBlbmRDaGlsZChlLnlheGlzVG9vbHRpcFRleHRbaV0pKX0sYT0wO2E8dC5jb25maWcueWF4aXMubGVuZ3RoO2ErKylpKGEpfX0se2tleTpcInNldFhDcm9zc2hhaXJXaWR0aFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dGhpcy50dEN0eCxpPWUuZ2V0RWxYQ3Jvc3NoYWlycygpO2lmKGUueGNyb3NzaGFpcnNXaWR0aD1wYXJzZUludCh0LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLndpZHRoLDEwKSx0Lmdsb2JhbHMuY29tYm9DaGFydHMpe3ZhciBhPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1iYXItYXJlYVwiKTtpZihudWxsIT09YSYmXCJiYXJXaWR0aFwiPT09dC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy53aWR0aCl7dmFyIHM9cGFyc2VGbG9hdChhLmdldEF0dHJpYnV0ZShcImJhcldpZHRoXCIpKTtlLnhjcm9zc2hhaXJzV2lkdGg9c31lbHNlIGlmKFwidGlja1dpZHRoXCI9PT10LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLndpZHRoKXt2YXIgcj10Lmdsb2JhbHMubGFiZWxzLmxlbmd0aDtlLnhjcm9zc2hhaXJzV2lkdGg9dC5nbG9iYWxzLmdyaWRXaWR0aC9yfX1lbHNlIGlmKFwidGlja1dpZHRoXCI9PT10LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLndpZHRoKXt2YXIgbz10Lmdsb2JhbHMubGFiZWxzLmxlbmd0aDtlLnhjcm9zc2hhaXJzV2lkdGg9dC5nbG9iYWxzLmdyaWRXaWR0aC9vfWVsc2UgaWYoXCJiYXJXaWR0aFwiPT09dC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy53aWR0aCl7dmFyIG49dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWJhci1hcmVhXCIpO2lmKG51bGwhPT1uKXt2YXIgbD1wYXJzZUZsb2F0KG4uZ2V0QXR0cmlidXRlKFwiYmFyV2lkdGhcIikpO2UueGNyb3NzaGFpcnNXaWR0aD1sfWVsc2UgZS54Y3Jvc3NoYWlyc1dpZHRoPTF9dC5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKGUueGNyb3NzaGFpcnNXaWR0aD0wKSxudWxsIT09aSYmZS54Y3Jvc3NoYWlyc1dpZHRoPjAmJmkuc2V0QXR0cmlidXRlKFwid2lkdGhcIixlLnhjcm9zc2hhaXJzV2lkdGgpfX0se2tleTpcImhhbmRsZVlDcm9zc2hhaXJcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXRoaXMudHRDdHg7ZS55Y3Jvc3NoYWlycz10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMteWNyb3NzaGFpcnNcIiksZS55Y3Jvc3NoYWlyc0hpZGRlbj10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMteWNyb3NzaGFpcnMtaGlkZGVuXCIpfX0se2tleTpcImRyYXdZYXhpc1Rvb2x0aXBUZXh0XCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMudHRDdHgscz10aGlzLncscj1zLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1t0XTtpZihhLnlheGlzVG9vbHRpcHNbdF0pe3ZhciBvPWEuZ2V0RWxHcmlkKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj0oZS1vLnRvcCkqaS55UmF0aW9bdF0sbD1zLmdsb2JhbHMubWF4WUFyclt0XS1zLmdsb2JhbHMubWluWUFyclt0XSxoPXMuZ2xvYmFscy5taW5ZQXJyW3RdKyhsLW4pO2EudG9vbHRpcFBvc2l0aW9uLm1vdmVZQ3Jvc3NoYWlycyhlLW8udG9wKSxhLnlheGlzVG9vbHRpcFRleHRbdF0uaW5uZXJIVE1MPXIoaCksYS50b29sdGlwUG9zaXRpb24ubW92ZVlBeGlzVG9vbHRpcCh0KX19fV0pLHR9KCksYnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnc7dmFyIGk9dGhpcy53O3RoaXMudENvbmZpZz1pLmNvbmZpZy50b29sdGlwLHRoaXMudG9vbHRpcFV0aWw9bmV3IGR0KHRoaXMpLHRoaXMudG9vbHRpcExhYmVscz1uZXcgZ3QodGhpcyksdGhpcy50b29sdGlwUG9zaXRpb249bmV3IHV0KHRoaXMpLHRoaXMubWFya2VyPW5ldyBwdCh0aGlzKSx0aGlzLmludGVyc2VjdD1uZXcgZnQodGhpcyksdGhpcy5heGVzVG9vbHRpcD1uZXcgeHQodGhpcyksdGhpcy5zaG93T25JbnRlcnNlY3Q9dGhpcy50Q29uZmlnLmludGVyc2VjdCx0aGlzLnNob3dUb29sdGlwVGl0bGU9dGhpcy50Q29uZmlnLnguc2hvdyx0aGlzLmZpeGVkVG9vbHRpcD10aGlzLnRDb25maWcuZml4ZWQuZW5hYmxlZCx0aGlzLnhheGlzVG9vbHRpcD1udWxsLHRoaXMueWF4aXNUVEVscz1udWxsLHRoaXMuaXNCYXJTaGFyZWQ9IWkuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJnRoaXMudENvbmZpZy5zaGFyZWQsdGhpcy5sYXN0SG92ZXJUaW1lPURhdGUubm93KCl9cmV0dXJuIHIodCxbe2tleTpcImdldEVsVG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0fHwodD10aGlzKSx0LncuZ2xvYmFscy5kb20uYmFzZUVsP3Qudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXRvb2x0aXBcIik6bnVsbH19LHtrZXk6XCJnZXRFbFhDcm9zc2hhaXJzXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMteGNyb3NzaGFpcnNcIil9fSx7a2V5OlwiZ2V0RWxHcmlkXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtZ3JpZFwiKX19LHtrZXk6XCJkcmF3VG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudzt0aGlzLnh5UmF0aW9zPXQsdGhpcy5pc1hBeGlzVG9vbHRpcEVuYWJsZWQ9ZS5jb25maWcueGF4aXMudG9vbHRpcC5lbmFibGVkJiZlLmdsb2JhbHMuYXhpc0NoYXJ0cyx0aGlzLnlheGlzVG9vbHRpcHM9ZS5jb25maWcueWF4aXMubWFwKChmdW5jdGlvbih0LGkpe3JldHVybiEhKHQuc2hvdyYmdC50b29sdGlwLmVuYWJsZWQmJmUuZ2xvYmFscy5heGlzQ2hhcnRzKX0pKSx0aGlzLmFsbFRvb2x0aXBTZXJpZXNHcm91cHM9W10sZS5nbG9iYWxzLmF4aXNDaGFydHN8fCh0aGlzLnNob3dUb29sdGlwVGl0bGU9ITEpO3ZhciBpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7aWYoaS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy10b29sdGlwXCIpLGUuY29uZmlnLnRvb2x0aXAuY3NzQ2xhc3MmJmkuY2xhc3NMaXN0LmFkZChlLmNvbmZpZy50b29sdGlwLmNzc0NsYXNzKSxpLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXRoZW1lLVwiLmNvbmNhdCh0aGlzLnRDb25maWcudGhlbWUpKSxlLmdsb2JhbHMuZG9tLmVsV3JhcC5hcHBlbmRDaGlsZChpKSxlLmdsb2JhbHMuYXhpc0NoYXJ0cyl7dGhpcy5heGVzVG9vbHRpcC5kcmF3WGF4aXNUb29sdGlwKCksdGhpcy5heGVzVG9vbHRpcC5kcmF3WWF4aXNUb29sdGlwKCksdGhpcy5heGVzVG9vbHRpcC5zZXRYQ3Jvc3NoYWlyV2lkdGgoKSx0aGlzLmF4ZXNUb29sdGlwLmhhbmRsZVlDcm9zc2hhaXIoKTt2YXIgYT1uZXcgVih0aGlzLmN0eCk7dGhpcy54QXhpc1RpY2tzUG9zaXRpb25zPWEuZ2V0WEF4aXNUaWNrc1Bvc2l0aW9ucygpfWlmKCFlLmdsb2JhbHMuY29tYm9DaGFydHMmJiF0aGlzLnRDb25maWcuaW50ZXJzZWN0JiZcInJhbmdlQmFyXCIhPT1lLmNvbmZpZy5jaGFydC50eXBlfHx0aGlzLnRDb25maWcuc2hhcmVkfHwodGhpcy5zaG93T25JbnRlcnNlY3Q9ITApLDAhPT1lLmNvbmZpZy5tYXJrZXJzLnNpemUmJjAhPT1lLmdsb2JhbHMubWFya2Vycy5sYXJnZXN0U2l6ZXx8dGhpcy5tYXJrZXIuZHJhd0R5bmFtaWNQb2ludHModGhpcyksZS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5sZW5ndGghPT1lLmdsb2JhbHMuc2VyaWVzLmxlbmd0aCl7dGhpcy5kYXRhUG9pbnRzRGl2aWRlZEhlaWdodD1lLmdsb2JhbHMuZ3JpZEhlaWdodC9lLmdsb2JhbHMuZGF0YVBvaW50cyx0aGlzLmRhdGFQb2ludHNEaXZpZGVkV2lkdGg9ZS5nbG9iYWxzLmdyaWRXaWR0aC9lLmdsb2JhbHMuZGF0YVBvaW50cyx0aGlzLnNob3dUb29sdGlwVGl0bGUmJih0aGlzLnRvb2x0aXBUaXRsZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLHRoaXMudG9vbHRpcFRpdGxlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXRvb2x0aXAtdGl0bGVcIiksdGhpcy50b29sdGlwVGl0bGUuc3R5bGUuZm9udEZhbWlseT10aGlzLnRDb25maWcuc3R5bGUuZm9udEZhbWlseXx8ZS5jb25maWcuY2hhcnQuZm9udEZhbWlseSx0aGlzLnRvb2x0aXBUaXRsZS5zdHlsZS5mb250U2l6ZT10aGlzLnRDb25maWcuc3R5bGUuZm9udFNpemUsaS5hcHBlbmRDaGlsZCh0aGlzLnRvb2x0aXBUaXRsZSkpO3ZhciBzPWUuZ2xvYmFscy5zZXJpZXMubGVuZ3RoOyhlLmdsb2JhbHMueHlDaGFydHN8fGUuZ2xvYmFscy5jb21ib0NoYXJ0cykmJnRoaXMudENvbmZpZy5zaGFyZWQmJihzPXRoaXMuc2hvd09uSW50ZXJzZWN0PzE6ZS5nbG9iYWxzLnNlcmllcy5sZW5ndGgpLHRoaXMubGVnZW5kTGFiZWxzPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1sZWdlbmQtdGV4dFwiKSx0aGlzLnR0SXRlbXM9dGhpcy5jcmVhdGVUVEVsZW1lbnRzKHMpLHRoaXMuYWRkU1ZHRXZlbnRzKCl9fX0se2tleTpcImNyZWF0ZVRURWxlbWVudHNcIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcyxpPXRoaXMudyxhPVtdLHM9dGhpcy5nZXRFbFRvb2x0aXAoKSxyPWZ1bmN0aW9uKHIpe3ZhciBvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7by5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy10b29sdGlwLXNlcmllcy1ncm91cFwiKSxvLnN0eWxlLm9yZGVyPWkuY29uZmlnLnRvb2x0aXAuaW52ZXJzZU9yZGVyP3QtcjpyKzEsZS50Q29uZmlnLnNoYXJlZCYmZS50Q29uZmlnLmVuYWJsZWRPblNlcmllcyYmQXJyYXkuaXNBcnJheShlLnRDb25maWcuZW5hYmxlZE9uU2VyaWVzKSYmZS50Q29uZmlnLmVuYWJsZWRPblNlcmllcy5pbmRleE9mKHIpPDAmJm8uY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtdG9vbHRpcC1zZXJpZXMtZ3JvdXAtaGlkZGVuXCIpO3ZhciBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO24uY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtdG9vbHRpcC1tYXJrZXJcIiksbi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9aS5nbG9iYWxzLmNvbG9yc1tyXSxvLmFwcGVuZENoaWxkKG4pO3ZhciBsPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7bC5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy10b29sdGlwLXRleHRcIiksbC5zdHlsZS5mb250RmFtaWx5PWUudENvbmZpZy5zdHlsZS5mb250RmFtaWx5fHxpLmNvbmZpZy5jaGFydC5mb250RmFtaWx5LGwuc3R5bGUuZm9udFNpemU9ZS50Q29uZmlnLnN0eWxlLmZvbnRTaXplLFtcInlcIixcImdvYWxzXCIsXCJ6XCJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7ZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy10b29sdGlwLVwiLmNvbmNhdCh0LFwiLWdyb3VwXCIpKTt2YXIgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKTtpLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC1cIi5jb25jYXQodCxcIi1sYWJlbFwiKSksZS5hcHBlbmRDaGlsZChpKTt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKTthLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC1cIi5jb25jYXQodCxcIi12YWx1ZVwiKSksZS5hcHBlbmRDaGlsZChhKSxsLmFwcGVuZENoaWxkKGUpfSkpLG8uYXBwZW5kQ2hpbGQobCkscy5hcHBlbmRDaGlsZChvKSxhLnB1c2gobyl9LG89MDtvPHQ7bysrKXIobyk7cmV0dXJuIGF9fSx7a2V5OlwiYWRkU1ZHRXZlbnRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10LmNvbmZpZy5jaGFydC50eXBlLGk9dGhpcy5nZXRFbFRvb2x0aXAoKSxhPSEoXCJiYXJcIiE9PWUmJlwiY2FuZGxlc3RpY2tcIiE9PWUmJlwiYm94UGxvdFwiIT09ZSYmXCJyYW5nZUJhclwiIT09ZSkscz1cImFyZWFcIj09PWV8fFwibGluZVwiPT09ZXx8XCJzY2F0dGVyXCI9PT1lfHxcImJ1YmJsZVwiPT09ZXx8XCJyYWRhclwiPT09ZSxyPXQuZ2xvYmFscy5kb20uUGFwZXIubm9kZSxvPXRoaXMuZ2V0RWxHcmlkKCk7byYmKHRoaXMuc2VyaWVzQm91bmQ9by5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7dmFyIG4sbD1bXSxoPVtdLGM9e2hvdmVyQXJlYTpyLGVsR3JpZDpvLHRvb2x0aXBFbDppLHRvb2x0aXBZOmwsdG9vbHRpcFg6aCx0dEl0ZW1zOnRoaXMudHRJdGVtc307aWYodC5nbG9iYWxzLmF4aXNDaGFydHMmJihzP249dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpsb25nZXN0U2VyaWVzPSd0cnVlJ10gLmFwZXhjaGFydHMtbWFya2VyXCIpOmE/bj10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtc2VyaWVzIC5hcGV4Y2hhcnRzLWJhci1hcmVhLCAuYXBleGNoYXJ0cy1zZXJpZXMgLmFwZXhjaGFydHMtY2FuZGxlc3RpY2stYXJlYSwgLmFwZXhjaGFydHMtc2VyaWVzIC5hcGV4Y2hhcnRzLWJveFBsb3QtYXJlYSwgLmFwZXhjaGFydHMtc2VyaWVzIC5hcGV4Y2hhcnRzLXJhbmdlYmFyLWFyZWFcIik6XCJoZWF0bWFwXCIhPT1lJiZcInRyZWVtYXBcIiE9PWV8fChuPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1zZXJpZXMgLmFwZXhjaGFydHMtaGVhdG1hcCwgLmFwZXhjaGFydHMtc2VyaWVzIC5hcGV4Y2hhcnRzLXRyZWVtYXBcIikpLG4mJm4ubGVuZ3RoKSlmb3IodmFyIGQ9MDtkPG4ubGVuZ3RoO2QrKylsLnB1c2gobltkXS5nZXRBdHRyaWJ1dGUoXCJjeVwiKSksaC5wdXNoKG5bZF0uZ2V0QXR0cmlidXRlKFwiY3hcIikpO2lmKHQuZ2xvYmFscy54eUNoYXJ0cyYmIXRoaXMuc2hvd09uSW50ZXJzZWN0fHx0Lmdsb2JhbHMuY29tYm9DaGFydHMmJiF0aGlzLnNob3dPbkludGVyc2VjdHx8YSYmdGhpcy50b29sdGlwVXRpbC5oYXNCYXJzKCkmJnRoaXMudENvbmZpZy5zaGFyZWQpdGhpcy5hZGRQYXRoc0V2ZW50TGlzdGVuZXJzKFtyXSxjKTtlbHNlIGlmKGEmJiF0Lmdsb2JhbHMuY29tYm9DaGFydHN8fHMmJnRoaXMuc2hvd09uSW50ZXJzZWN0KXRoaXMuYWRkRGF0YXBvaW50RXZlbnRzTGlzdGVuZXJzKGMpO2Vsc2UgaWYoIXQuZ2xvYmFscy5heGlzQ2hhcnRzfHxcImhlYXRtYXBcIj09PWV8fFwidHJlZW1hcFwiPT09ZSl7dmFyIGc9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllc1wiKTt0aGlzLmFkZFBhdGhzRXZlbnRMaXN0ZW5lcnMoZyxjKX1pZih0aGlzLnNob3dPbkludGVyc2VjdCl7dmFyIHU9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLWxpbmUtc2VyaWVzIC5hcGV4Y2hhcnRzLW1hcmtlciwgLmFwZXhjaGFydHMtYXJlYS1zZXJpZXMgLmFwZXhjaGFydHMtbWFya2VyXCIpO3UubGVuZ3RoPjAmJnRoaXMuYWRkUGF0aHNFdmVudExpc3RlbmVycyh1LGMpLHRoaXMudG9vbHRpcFV0aWwuaGFzQmFycygpJiYhdGhpcy50Q29uZmlnLnNoYXJlZCYmdGhpcy5hZGREYXRhcG9pbnRFdmVudHNMaXN0ZW5lcnMoYyl9fX0se2tleTpcImRyYXdGaXhlZFRvb2x0aXBSZWN0XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10aGlzLmdldEVsVG9vbHRpcCgpLGk9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxhPWkud2lkdGgrMTAscz1pLmhlaWdodCsxMCxyPXRoaXMudENvbmZpZy5maXhlZC5vZmZzZXRYLG89dGhpcy50Q29uZmlnLmZpeGVkLm9mZnNldFksbj10aGlzLnRDb25maWcuZml4ZWQucG9zaXRpb24udG9Mb3dlckNhc2UoKTtyZXR1cm4gbi5pbmRleE9mKFwicmlnaHRcIik+LTEmJihyPXIrdC5nbG9iYWxzLnN2Z1dpZHRoLWErMTApLG4uaW5kZXhPZihcImJvdHRvbVwiKT4tMSYmKG89byt0Lmdsb2JhbHMuc3ZnSGVpZ2h0LXMtMTApLGUuc3R5bGUubGVmdD1yK1wicHhcIixlLnN0eWxlLnRvcD1vK1wicHhcIix7eDpyLHk6byx0dFdpZHRoOmEsdHRIZWlnaHQ6c319fSx7a2V5OlwiYWRkRGF0YXBvaW50RXZlbnRzTGlzdGVuZXJzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMgLmFwZXhjaGFydHMtbWFya2VyLCAuYXBleGNoYXJ0cy1iYXItYXJlYSwgLmFwZXhjaGFydHMtY2FuZGxlc3RpY2stYXJlYSwgLmFwZXhjaGFydHMtYm94UGxvdC1hcmVhLCAuYXBleGNoYXJ0cy1yYW5nZWJhci1hcmVhXCIpO3RoaXMuYWRkUGF0aHNFdmVudExpc3RlbmVycyhlLHQpfX0se2tleTpcImFkZFBhdGhzRXZlbnRMaXN0ZW5lcnNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe2Zvcih2YXIgaT10aGlzLGE9ZnVuY3Rpb24oYSl7dmFyIHM9e3BhdGhzOnRbYV0sdG9vbHRpcEVsOmUudG9vbHRpcEVsLHRvb2x0aXBZOmUudG9vbHRpcFksdG9vbHRpcFg6ZS50b29sdGlwWCxlbEdyaWQ6ZS5lbEdyaWQsaG92ZXJBcmVhOmUuaG92ZXJBcmVhLHR0SXRlbXM6ZS50dEl0ZW1zfTtbXCJtb3VzZW1vdmVcIixcIm1vdXNldXBcIixcInRvdWNobW92ZVwiLFwibW91c2VvdXRcIixcInRvdWNoZW5kXCJdLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHRbYV0uYWRkRXZlbnRMaXN0ZW5lcihlLGkub25TZXJpZXNIb3Zlci5iaW5kKGkscykse2NhcHR1cmU6ITEscGFzc2l2ZTohMH0pfSkpfSxzPTA7czx0Lmxlbmd0aDtzKyspYShzKX19LHtrZXk6XCJvblNlcmllc0hvdmVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLGE9RGF0ZS5ub3coKS10aGlzLmxhc3RIb3ZlclRpbWU7YT49MTAwP3RoaXMuc2VyaWVzSG92ZXIodCxlKTooY2xlYXJUaW1lb3V0KHRoaXMuc2VyaWVzSG92ZXJUaW1lb3V0KSx0aGlzLnNlcmllc0hvdmVyVGltZW91dD1zZXRUaW1lb3V0KChmdW5jdGlvbigpe2kuc2VyaWVzSG92ZXIodCxlKX0pLDEwMC1hKSl9fSx7a2V5Olwic2VyaWVzSG92ZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXM7dGhpcy5sYXN0SG92ZXJUaW1lPURhdGUubm93KCk7dmFyIGE9W10scz10aGlzLnc7cy5jb25maWcuY2hhcnQuZ3JvdXAmJihhPXRoaXMuY3R4LmdldEdyb3VwZWRDaGFydHMoKSkscy5nbG9iYWxzLmF4aXNDaGFydHMmJihzLmdsb2JhbHMubWluWD09PS0xLzAmJnMuZ2xvYmFscy5tYXhYPT09MS8wfHwwPT09cy5nbG9iYWxzLmRhdGFQb2ludHMpfHwoYS5sZW5ndGg/YS5mb3JFYWNoKChmdW5jdGlvbihhKXt2YXIgcz1pLmdldEVsVG9vbHRpcChhKSxyPXtwYXRoczp0LnBhdGhzLHRvb2x0aXBFbDpzLHRvb2x0aXBZOnQudG9vbHRpcFksdG9vbHRpcFg6dC50b29sdGlwWCxlbEdyaWQ6dC5lbEdyaWQsaG92ZXJBcmVhOnQuaG92ZXJBcmVhLHR0SXRlbXM6YS53Lmdsb2JhbHMudG9vbHRpcC50dEl0ZW1zfTthLncuZ2xvYmFscy5taW5YPT09aS53Lmdsb2JhbHMubWluWCYmYS53Lmdsb2JhbHMubWF4WD09PWkudy5nbG9iYWxzLm1heFgmJmEudy5nbG9iYWxzLnRvb2x0aXAuc2VyaWVzSG92ZXJCeUNvbnRleHQoe2NoYXJ0Q3R4OmEsdHRDdHg6YS53Lmdsb2JhbHMudG9vbHRpcCxvcHQ6cixlOmV9KX0pKTp0aGlzLnNlcmllc0hvdmVyQnlDb250ZXh0KHtjaGFydEN0eDp0aGlzLmN0eCx0dEN0eDp0aGlzLncuZ2xvYmFscy50b29sdGlwLG9wdDp0LGU6ZX0pKX19LHtrZXk6XCJzZXJpZXNIb3ZlckJ5Q29udGV4dFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuY2hhcnRDdHgsaT10LnR0Q3R4LGE9dC5vcHQscz10LmUscj1lLncsbz10aGlzLmdldEVsVG9vbHRpcCgpO2lmKG8pe2lmKGkudG9vbHRpcFJlY3Q9e3g6MCx5OjAsdHRXaWR0aDpvLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoLHR0SGVpZ2h0Om8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0fSxpLmU9cyxpLnRvb2x0aXBVdGlsLmhhc0JhcnMoKSYmIXIuZ2xvYmFscy5jb21ib0NoYXJ0cyYmIWkuaXNCYXJTaGFyZWQpaWYodGhpcy50Q29uZmlnLm9uRGF0YXNldEhvdmVyLmhpZ2hsaWdodERhdGFTZXJpZXMpbmV3IE4oZSkudG9nZ2xlU2VyaWVzT25Ib3ZlcihzLHMudGFyZ2V0LnBhcmVudE5vZGUpO2kuZml4ZWRUb29sdGlwJiZpLmRyYXdGaXhlZFRvb2x0aXBSZWN0KCksci5nbG9iYWxzLmF4aXNDaGFydHM/aS5heGlzQ2hhcnRzVG9vbHRpcHMoe2U6cyxvcHQ6YSx0b29sdGlwUmVjdDppLnRvb2x0aXBSZWN0fSk6aS5ub25BeGlzQ2hhcnRzVG9vbHRpcHMoe2U6cyxvcHQ6YSx0b29sdGlwUmVjdDppLnRvb2x0aXBSZWN0fSl9fX0se2tleTpcImF4aXNDaGFydHNUb29sdGlwc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGksYT10LmUscz10Lm9wdCxyPXRoaXMudyxvPXMuZWxHcmlkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49XCJ0b3VjaG1vdmVcIj09PWEudHlwZT9hLnRvdWNoZXNbMF0uY2xpZW50WDphLmNsaWVudFgsbD1cInRvdWNobW92ZVwiPT09YS50eXBlP2EudG91Y2hlc1swXS5jbGllbnRZOmEuY2xpZW50WTtpZih0aGlzLmNsaWVudFk9bCx0aGlzLmNsaWVudFg9bixyLmdsb2JhbHMuY2FwdHVyZWRTZXJpZXNJbmRleD0tMSxyLmdsb2JhbHMuY2FwdHVyZWREYXRhUG9pbnRJbmRleD0tMSxsPG8udG9wfHxsPm8udG9wK28uaGVpZ2h0KXRoaXMuaGFuZGxlTW91c2VPdXQocyk7ZWxzZXtpZihBcnJheS5pc0FycmF5KHRoaXMudENvbmZpZy5lbmFibGVkT25TZXJpZXMpJiYhci5jb25maWcudG9vbHRpcC5zaGFyZWQpe3ZhciBoPXBhcnNlSW50KHMucGF0aHMuZ2V0QXR0cmlidXRlKFwiaW5kZXhcIiksMTApO2lmKHRoaXMudENvbmZpZy5lbmFibGVkT25TZXJpZXMuaW5kZXhPZihoKTwwKXJldHVybiB2b2lkIHRoaXMuaGFuZGxlTW91c2VPdXQocyl9dmFyIGM9dGhpcy5nZXRFbFRvb2x0aXAoKSxkPXRoaXMuZ2V0RWxYQ3Jvc3NoYWlycygpLGc9ci5nbG9iYWxzLnh5Q2hhcnRzfHxcImJhclwiPT09ci5jb25maWcuY2hhcnQudHlwZSYmIXIuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJnRoaXMudG9vbHRpcFV0aWwuaGFzQmFycygpJiZ0aGlzLnRDb25maWcuc2hhcmVkfHxyLmdsb2JhbHMuY29tYm9DaGFydHMmJnRoaXMudG9vbHRpcFV0aWwuaGFzQmFycygpO2lmKFwibW91c2Vtb3ZlXCI9PT1hLnR5cGV8fFwidG91Y2htb3ZlXCI9PT1hLnR5cGV8fFwibW91c2V1cFwiPT09YS50eXBlKXtpZihyLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLmxlbmd0aCtyLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzLmxlbmd0aD09PXIuZ2xvYmFscy5zZXJpZXMubGVuZ3RoKXJldHVybjtudWxsIT09ZCYmZC5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1hY3RpdmVcIik7dmFyIHU9dGhpcy55YXhpc1Rvb2x0aXBzLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuITA9PT10fSkpO2lmKG51bGwhPT10aGlzLnljcm9zc2hhaXJzJiZ1Lmxlbmd0aCYmdGhpcy55Y3Jvc3NoYWlycy5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1hY3RpdmVcIiksZyYmIXRoaXMuc2hvd09uSW50ZXJzZWN0KXRoaXMuaGFuZGxlU3RpY2t5VG9vbHRpcChhLG4sbCxzKTtlbHNlIGlmKFwiaGVhdG1hcFwiPT09ci5jb25maWcuY2hhcnQudHlwZXx8XCJ0cmVlbWFwXCI9PT1yLmNvbmZpZy5jaGFydC50eXBlKXt2YXIgcD10aGlzLmludGVyc2VjdC5oYW5kbGVIZWF0VHJlZVRvb2x0aXAoe2U6YSxvcHQ6cyx4OmUseTppLHR5cGU6ci5jb25maWcuY2hhcnQudHlwZX0pO2U9cC54LGk9cC55LGMuc3R5bGUubGVmdD1lK1wicHhcIixjLnN0eWxlLnRvcD1pK1wicHhcIn1lbHNlIHRoaXMudG9vbHRpcFV0aWwuaGFzQmFycygpJiZ0aGlzLmludGVyc2VjdC5oYW5kbGVCYXJUb29sdGlwKHtlOmEsb3B0OnN9KSx0aGlzLnRvb2x0aXBVdGlsLmhhc01hcmtlcnMoKSYmdGhpcy5pbnRlcnNlY3QuaGFuZGxlTWFya2VyVG9vbHRpcCh7ZTphLG9wdDpzLHg6ZSx5Oml9KTtpZih0aGlzLnlheGlzVG9vbHRpcHMubGVuZ3RoKWZvcih2YXIgZj0wO2Y8ci5jb25maWcueWF4aXMubGVuZ3RoO2YrKyl0aGlzLmF4ZXNUb29sdGlwLmRyYXdZYXhpc1Rvb2x0aXBUZXh0KGYsbCx0aGlzLnh5UmF0aW9zKTtzLnRvb2x0aXBFbC5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1hY3RpdmVcIil9ZWxzZVwibW91c2VvdXRcIiE9PWEudHlwZSYmXCJ0b3VjaGVuZFwiIT09YS50eXBlfHx0aGlzLmhhbmRsZU1vdXNlT3V0KHMpfX19LHtrZXk6XCJub25BeGlzQ2hhcnRzVG9vbHRpcHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmUsaT10Lm9wdCxhPXQudG9vbHRpcFJlY3Qscz10aGlzLncscj1pLnBhdGhzLmdldEF0dHJpYnV0ZShcInJlbFwiKSxvPXRoaXMuZ2V0RWxUb29sdGlwKCksbj1zLmdsb2JhbHMuZG9tLmVsV3JhcC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpZihcIm1vdXNlbW92ZVwiPT09ZS50eXBlfHxcInRvdWNobW92ZVwiPT09ZS50eXBlKXtvLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKSx0aGlzLnRvb2x0aXBMYWJlbHMuZHJhd1Nlcmllc1RleHRzKHt0dEl0ZW1zOmkudHRJdGVtcyxpOnBhcnNlSW50KHIsMTApLTEsc2hhcmVkOiExfSk7dmFyIGw9cy5nbG9iYWxzLmNsaWVudFgtbi5sZWZ0LWEudHRXaWR0aC8yLGg9cy5nbG9iYWxzLmNsaWVudFktbi50b3AtYS50dEhlaWdodC0xMDtpZihvLnN0eWxlLmxlZnQ9bCtcInB4XCIsby5zdHlsZS50b3A9aCtcInB4XCIscy5jb25maWcubGVnZW5kLnRvb2x0aXBIb3ZlckZvcm1hdHRlcil7dmFyIGM9ci0xLGQ9KDAscy5jb25maWcubGVnZW5kLnRvb2x0aXBIb3ZlckZvcm1hdHRlcikodGhpcy5sZWdlbmRMYWJlbHNbY10uZ2V0QXR0cmlidXRlKFwiZGF0YTpkZWZhdWx0LXRleHRcIikse3Nlcmllc0luZGV4OmMsZGF0YVBvaW50SW5kZXg6Yyx3OnN9KTt0aGlzLmxlZ2VuZExhYmVsc1tjXS5pbm5lckhUTUw9ZH19ZWxzZVwibW91c2VvdXRcIiE9PWUudHlwZSYmXCJ0b3VjaGVuZFwiIT09ZS50eXBlfHwoby5jbGFzc0xpc3QucmVtb3ZlKFwiYXBleGNoYXJ0cy1hY3RpdmVcIikscy5jb25maWcubGVnZW5kLnRvb2x0aXBIb3ZlckZvcm1hdHRlciYmdGhpcy5sZWdlbmRMYWJlbHMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9dC5nZXRBdHRyaWJ1dGUoXCJkYXRhOmRlZmF1bHQtdGV4dFwiKTt0LmlubmVySFRNTD1kZWNvZGVVUklDb21wb25lbnQoZSl9KSkpfX0se2tleTpcImhhbmRsZVN0aWNreVRvb2x0aXBcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt2YXIgcz10aGlzLncscj10aGlzLnRvb2x0aXBVdGlsLmdldE5lYXJlc3RWYWx1ZXMoe2NvbnRleHQ6dGhpcyxob3ZlckFyZWE6YS5ob3ZlckFyZWEsZWxHcmlkOmEuZWxHcmlkLGNsaWVudFg6ZSxjbGllbnRZOml9KSxvPXIuaixuPXIuY2FwdHVyZWRTZXJpZXM7cy5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5jbHVkZXMobikmJihuPW51bGwpO3ZhciBsPWEuZWxHcmlkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2lmKHIuaG92ZXJYPDB8fHIuaG92ZXJYPmwud2lkdGgpdGhpcy5oYW5kbGVNb3VzZU91dChhKTtlbHNlIGlmKG51bGwhPT1uKXRoaXMuaGFuZGxlU3RpY2t5Q2FwdHVyZWRTZXJpZXModCxuLGEsbyk7ZWxzZSBpZih0aGlzLnRvb2x0aXBVdGlsLmlzWG92ZXJsYXAobyl8fHMuZ2xvYmFscy5pc0Jhckhvcml6b250YWwpe3ZhciBoPXMuZ2xvYmFscy5zZXJpZXMuZmluZEluZGV4KChmdW5jdGlvbih0LGUpe3JldHVybiFzLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmNsdWRlcyhlKX0pKTt0aGlzLmNyZWF0ZSh0LHRoaXMsaCxvLGEudHRJdGVtcyl9fX0se2tleTpcImhhbmRsZVN0aWNreUNhcHR1cmVkU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSl7dmFyIHM9dGhpcy53O2lmKCF0aGlzLnRDb25maWcuc2hhcmVkJiZudWxsPT09cy5nbG9iYWxzLnNlcmllc1tlXVthXSlyZXR1cm4gdm9pZCB0aGlzLmhhbmRsZU1vdXNlT3V0KGkpO2lmKHZvaWQgMCE9PXMuZ2xvYmFscy5zZXJpZXNbZV1bYV0pdGhpcy50Q29uZmlnLnNoYXJlZCYmdGhpcy50b29sdGlwVXRpbC5pc1hvdmVybGFwKGEpJiZ0aGlzLnRvb2x0aXBVdGlsLmlzSW5pdGlhbFNlcmllc1NhbWVMZW4oKT90aGlzLmNyZWF0ZSh0LHRoaXMsZSxhLGkudHRJdGVtcyk6dGhpcy5jcmVhdGUodCx0aGlzLGUsYSxpLnR0SXRlbXMsITEpO2Vsc2UgaWYodGhpcy50b29sdGlwVXRpbC5pc1hvdmVybGFwKGEpKXt2YXIgcj1zLmdsb2JhbHMuc2VyaWVzLmZpbmRJbmRleCgoZnVuY3Rpb24odCxlKXtyZXR1cm4hcy5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5jbHVkZXMoZSl9KSk7dGhpcy5jcmVhdGUodCx0aGlzLHIsYSxpLnR0SXRlbXMpfX19LHtrZXk6XCJkZWFjdGl2YXRlSG92ZXJGaWx0ZXJcIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLncsZT1uZXcgbSh0aGlzLmN0eCksaT10Lmdsb2JhbHMuZG9tLlBhcGVyLnNlbGVjdChcIi5hcGV4Y2hhcnRzLWJhci1hcmVhXCIpLGE9MDthPGkubGVuZ3RoO2ErKyllLnBhdGhNb3VzZUxlYXZlKGlbYV0pfX0se2tleTpcImhhbmRsZU1vdXNlT3V0XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9dGhpcy5nZXRFbFhDcm9zc2hhaXJzKCk7aWYodC50b29sdGlwRWwuY2xhc3NMaXN0LnJlbW92ZShcImFwZXhjaGFydHMtYWN0aXZlXCIpLHRoaXMuZGVhY3RpdmF0ZUhvdmVyRmlsdGVyKCksXCJidWJibGVcIiE9PWUuY29uZmlnLmNoYXJ0LnR5cGUmJnRoaXMubWFya2VyLnJlc2V0UG9pbnRzU2l6ZSgpLG51bGwhPT1pJiZpLmNsYXNzTGlzdC5yZW1vdmUoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKSxudWxsIT09dGhpcy55Y3Jvc3NoYWlycyYmdGhpcy55Y3Jvc3NoYWlycy5jbGFzc0xpc3QucmVtb3ZlKFwiYXBleGNoYXJ0cy1hY3RpdmVcIiksdGhpcy5pc1hBeGlzVG9vbHRpcEVuYWJsZWQmJnRoaXMueGF4aXNUb29sdGlwLmNsYXNzTGlzdC5yZW1vdmUoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKSx0aGlzLnlheGlzVG9vbHRpcHMubGVuZ3RoKXtudWxsPT09dGhpcy55YXhpc1RURWxzJiYodGhpcy55YXhpc1RURWxzPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXBcIikpO2Zvcih2YXIgYT0wO2E8dGhpcy55YXhpc1RURWxzLmxlbmd0aDthKyspdGhpcy55YXhpc1RURWxzW2FdLmNsYXNzTGlzdC5yZW1vdmUoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKX1lLmNvbmZpZy5sZWdlbmQudG9vbHRpcEhvdmVyRm9ybWF0dGVyJiZ0aGlzLmxlZ2VuZExhYmVscy5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT10LmdldEF0dHJpYnV0ZShcImRhdGE6ZGVmYXVsdC10ZXh0XCIpO3QuaW5uZXJIVE1MPWRlY29kZVVSSUNvbXBvbmVudChlKX0pKX19LHtrZXk6XCJtYXJrZXJDbGlja1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLnc7XCJmdW5jdGlvblwiPT10eXBlb2YgYS5jb25maWcuY2hhcnQuZXZlbnRzLm1hcmtlckNsaWNrJiZhLmNvbmZpZy5jaGFydC5ldmVudHMubWFya2VyQ2xpY2sodCx0aGlzLmN0eCx7c2VyaWVzSW5kZXg6ZSxkYXRhUG9pbnRJbmRleDppLHc6YX0pLHRoaXMuY3R4LmV2ZW50cy5maXJlRXZlbnQoXCJtYXJrZXJDbGlja1wiLFt0LHRoaXMuY3R4LHtzZXJpZXNJbmRleDplLGRhdGFQb2ludEluZGV4OmksdzphfV0pfX0se2tleTpcImNyZWF0ZVwiLHZhbHVlOmZ1bmN0aW9uKHQsaSxhLHMscil7dmFyIG8sbixsLGgsYyxkLGcsdSxwLGYseCxiLHYseSx3LGssQT1hcmd1bWVudHMubGVuZ3RoPjUmJnZvaWQgMCE9PWFyZ3VtZW50c1s1XT9hcmd1bWVudHNbNV06bnVsbCxTPXRoaXMudyxDPWk7XCJtb3VzZXVwXCI9PT10LnR5cGUmJnRoaXMubWFya2VyQ2xpY2sodCxhLHMpLG51bGw9PT1BJiYoQT10aGlzLnRDb25maWcuc2hhcmVkKTt2YXIgTD10aGlzLnRvb2x0aXBVdGlsLmhhc01hcmtlcnMoYSksUD10aGlzLnRvb2x0aXBVdGlsLmdldEVsQmFycygpO2lmKFMuY29uZmlnLmxlZ2VuZC50b29sdGlwSG92ZXJGb3JtYXR0ZXIpe3ZhciBJPVMuY29uZmlnLmxlZ2VuZC50b29sdGlwSG92ZXJGb3JtYXR0ZXIsVD1BcnJheS5mcm9tKHRoaXMubGVnZW5kTGFiZWxzKTtULmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPXQuZ2V0QXR0cmlidXRlKFwiZGF0YTpkZWZhdWx0LXRleHRcIik7dC5pbm5lckhUTUw9ZGVjb2RlVVJJQ29tcG9uZW50KGUpfSkpO2Zvcih2YXIgTT0wO008VC5sZW5ndGg7TSsrKXt2YXIgWD1UW01dLHo9cGFyc2VJbnQoWC5nZXRBdHRyaWJ1dGUoXCJpXCIpLDEwKSxFPWRlY29kZVVSSUNvbXBvbmVudChYLmdldEF0dHJpYnV0ZShcImRhdGE6ZGVmYXVsdC10ZXh0XCIpKSxZPUkoRSx7c2VyaWVzSW5kZXg6QT96OmEsZGF0YVBvaW50SW5kZXg6cyx3OlN9KTtpZihBKVguaW5uZXJIVE1MPVMuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2Yoeik8MD9ZOkU7ZWxzZSBpZihYLmlubmVySFRNTD16PT09YT9ZOkUsYT09PXopYnJlYWt9fXZhciBGPWUoZSh7dHRJdGVtczpyLGk6YSxqOnN9LHZvaWQgMCE9PShudWxsPT09KG89Uy5nbG9iYWxzLnNlcmllc1JhbmdlKXx8dm9pZCAwPT09b3x8bnVsbD09PShuPW9bYV0pfHx2b2lkIDA9PT1ufHxudWxsPT09KGw9bltzXSl8fHZvaWQgMD09PWx8fG51bGw9PT0oaD1sLnlbMF0pfHx2b2lkIDA9PT1oP3ZvaWQgMDpoLnkxKSYme3kxOm51bGw9PT0oYz1TLmdsb2JhbHMuc2VyaWVzUmFuZ2UpfHx2b2lkIDA9PT1jfHxudWxsPT09KGQ9Y1thXSl8fHZvaWQgMD09PWR8fG51bGw9PT0oZz1kW3NdKXx8dm9pZCAwPT09Z3x8bnVsbD09PSh1PWcueVswXSl8fHZvaWQgMD09PXU/dm9pZCAwOnUueTF9KSx2b2lkIDAhPT0obnVsbD09PShwPVMuZ2xvYmFscy5zZXJpZXNSYW5nZSl8fHZvaWQgMD09PXB8fG51bGw9PT0oZj1wW2FdKXx8dm9pZCAwPT09Znx8bnVsbD09PSh4PWZbc10pfHx2b2lkIDA9PT14fHxudWxsPT09KGI9eC55WzBdKXx8dm9pZCAwPT09Yj92b2lkIDA6Yi55MikmJnt5MjpudWxsPT09KHY9Uy5nbG9iYWxzLnNlcmllc1JhbmdlKXx8dm9pZCAwPT09dnx8bnVsbD09PSh5PXZbYV0pfHx2b2lkIDA9PT15fHxudWxsPT09KHc9eVtzXSl8fHZvaWQgMD09PXd8fG51bGw9PT0oaz13LnlbMF0pfHx2b2lkIDA9PT1rP3ZvaWQgMDprLnkyfSk7aWYoQSl7aWYoQy50b29sdGlwTGFiZWxzLmRyYXdTZXJpZXNUZXh0cyhlKGUoe30sRikse30se3NoYXJlZDohdGhpcy5zaG93T25JbnRlcnNlY3QmJnRoaXMudENvbmZpZy5zaGFyZWR9KSksTClTLmdsb2JhbHMubWFya2Vycy5sYXJnZXN0U2l6ZT4wP0MubWFya2VyLmVubGFyZ2VQb2ludHMocyk6Qy50b29sdGlwUG9zaXRpb24ubW92ZUR5bmFtaWNQb2ludHNPbkhvdmVyKHMpO2Vsc2UgaWYodGhpcy50b29sdGlwVXRpbC5oYXNCYXJzKCkmJih0aGlzLmJhclNlcmllc0hlaWdodD10aGlzLnRvb2x0aXBVdGlsLmdldEJhcnNIZWlnaHQoUCksdGhpcy5iYXJTZXJpZXNIZWlnaHQ+MCkpe3ZhciBSPW5ldyBtKHRoaXMuY3R4KSxEPVMuZ2xvYmFscy5kb20uUGFwZXIuc2VsZWN0KFwiLmFwZXhjaGFydHMtYmFyLWFyZWFbaj0nXCIuY29uY2F0KHMsXCInXVwiKSk7dGhpcy5kZWFjdGl2YXRlSG92ZXJGaWx0ZXIoKSx0aGlzLnRvb2x0aXBQb3NpdGlvbi5tb3ZlU3RpY2t5VG9vbHRpcE92ZXJCYXJzKHMsYSk7Zm9yKHZhciBIPTA7SDxELmxlbmd0aDtIKyspUi5wYXRoTW91c2VFbnRlcihEW0hdKX19ZWxzZSBDLnRvb2x0aXBMYWJlbHMuZHJhd1Nlcmllc1RleHRzKGUoe3NoYXJlZDohMX0sRikpLHRoaXMudG9vbHRpcFV0aWwuaGFzQmFycygpJiZDLnRvb2x0aXBQb3NpdGlvbi5tb3ZlU3RpY2t5VG9vbHRpcE92ZXJCYXJzKHMsYSksTCYmQy50b29sdGlwUG9zaXRpb24ubW92ZU1hcmtlcnMoYSxzKX19XSksdH0oKSx2dD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy5iYXJDdHg9ZSx0aGlzLnRvdGFsRm9ybWF0dGVyPXRoaXMudy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmRhdGFMYWJlbHMudG90YWwuZm9ybWF0dGVyLHRoaXMudG90YWxGb3JtYXR0ZXJ8fCh0aGlzLnRvdGFsRm9ybWF0dGVyPXRoaXMudy5jb25maWcuZGF0YUxhYmVscy5mb3JtYXR0ZXIpfXJldHVybiByKHQsW3trZXk6XCJoYW5kbGVCYXJEYXRhTGFiZWxzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC54LGk9dC55LGE9dC55MSxzPXQueTIscj10Lmksbz10Lmosbj10LnJlYWxJbmRleCxsPXQuZ3JvdXBJbmRleCxoPXQuc2VyaWVzLGM9dC5iYXJIZWlnaHQsZD10LmJhcldpZHRoLGc9dC5iYXJZUG9zaXRpb24sdT10LnZpc2libGVTZXJpZXMscD10LnJlbmRlcmVkUGF0aCxmPXRoaXMudyx4PW5ldyBtKHRoaXMuYmFyQ3R4LmN0eCksYj1BcnJheS5pc0FycmF5KHRoaXMuYmFyQ3R4LnN0cm9rZVdpZHRoKT90aGlzLmJhckN0eC5zdHJva2VXaWR0aFtuXTp0aGlzLmJhckN0eC5zdHJva2VXaWR0aCx2PWUrcGFyc2VGbG9hdChkKnUpLHk9aStwYXJzZUZsb2F0KGMqdSk7Zi5nbG9iYWxzLmlzWE51bWVyaWMmJiFmLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYodj1lK3BhcnNlRmxvYXQoZCoodSsxKSkseT1pK3BhcnNlRmxvYXQoYyoodSsxKSktYik7dmFyIHcsaz1udWxsLEE9ZSxTPWksQz17fSxMPWYuY29uZmlnLmRhdGFMYWJlbHMsUD10aGlzLmJhckN0eC5iYXJPcHRpb25zLmRhdGFMYWJlbHMsST10aGlzLmJhckN0eC5iYXJPcHRpb25zLmRhdGFMYWJlbHMudG90YWw7dm9pZCAwIT09ZyYmdGhpcy5iYXJDdHguaXNSYW5nZUJhciYmKHk9ZyxTPWcpO3ZhciBUPUwub2Zmc2V0WCxNPUwub2Zmc2V0WSxYPXt3aWR0aDowLGhlaWdodDowfTtpZihmLmNvbmZpZy5kYXRhTGFiZWxzLmVuYWJsZWQpe3ZhciB6PXRoaXMuYmFyQ3R4LnNlcmllc1tyXVtvXTtYPXguZ2V0VGV4dFJlY3RzKGYuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzWzBdKHopLHBhcnNlRmxvYXQoTC5zdHlsZS5mb250U2l6ZSkpfXZhciBFPXt4OmUseTppLGk6cixqOm8scmVhbEluZGV4Om4sZ3JvdXBJbmRleDpsfHwtMSxyZW5kZXJlZFBhdGg6cCxiY3g6dixiY3k6eSxiYXJIZWlnaHQ6YyxiYXJXaWR0aDpkLHRleHRSZWN0czpYLHN0cm9rZVdpZHRoOmIsZGF0YUxhYmVsc1g6QSxkYXRhTGFiZWxzWTpTLGRhdGFMYWJlbHNDb25maWc6TCxiYXJEYXRhTGFiZWxzQ29uZmlnOlAsYmFyVG90YWxEYXRhTGFiZWxzQ29uZmlnOkksb2ZmWDpULG9mZlk6TX07cmV0dXJuIEM9dGhpcy5iYXJDdHguaXNIb3Jpem9udGFsP3RoaXMuY2FsY3VsYXRlQmFyc0RhdGFMYWJlbHNQb3NpdGlvbihFKTp0aGlzLmNhbGN1bGF0ZUNvbHVtbnNEYXRhTGFiZWxzUG9zaXRpb24oRSkscC5hdHRyKHtjeTpDLmJjeSxjeDpDLmJjeCxqOm8sdmFsOmhbcl1bb10sYmFySGVpZ2h0OmMsYmFyV2lkdGg6ZH0pLHc9dGhpcy5kcmF3Q2FsY3VsYXRlZERhdGFMYWJlbHMoe3g6Qy5kYXRhTGFiZWxzWCx5OkMuZGF0YUxhYmVsc1ksdmFsOnRoaXMuYmFyQ3R4LmlzUmFuZ2VCYXI/W2Esc106aFtyXVtvXSxpOm4sajpvLGJhcldpZHRoOmQsYmFySGVpZ2h0OmMsdGV4dFJlY3RzOlgsZGF0YUxhYmVsc0NvbmZpZzpMfSksZi5jb25maWcuY2hhcnQuc3RhY2tlZCYmSS5lbmFibGVkJiYoaz10aGlzLmRyYXdUb3RhbERhdGFMYWJlbHMoe3g6Qy50b3RhbERhdGFMYWJlbHNYLHk6Qy50b3RhbERhdGFMYWJlbHNZLHJlYWxJbmRleDpuLHRleHRBbmNob3I6Qy50b3RhbERhdGFMYWJlbHNBbmNob3IsdmFsOnRoaXMuZ2V0U3RhY2tlZFRvdGFsRGF0YUxhYmVsKHtyZWFsSW5kZXg6bixqOm99KSxkYXRhTGFiZWxzQ29uZmlnOkwsYmFyVG90YWxEYXRhTGFiZWxzQ29uZmlnOkl9KSkse2RhdGFMYWJlbHM6dyx0b3RhbERhdGFMYWJlbHM6a319fSx7a2V5OlwiZ2V0U3RhY2tlZFRvdGFsRGF0YUxhYmVsXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGk9dC5yZWFsSW5kZXgsYT10Lmoscz10aGlzLncscj10aGlzLmJhckN0eC5zdGFja2VkU2VyaWVzVG90YWxzW2FdO3JldHVybiB0aGlzLnRvdGFsRm9ybWF0dGVyJiYocj10aGlzLnRvdGFsRm9ybWF0dGVyKHIsZShlKHt9LHMpLHt9LHtzZXJpZXNJbmRleDppLGRhdGFQb2ludEluZGV4OmEsdzpzfSkpKSxyfX0se2tleTpcImNhbGN1bGF0ZUNvbHVtbnNEYXRhTGFiZWxzUG9zaXRpb25cIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpLGEscz10aGlzLncscj10Lmksbz10Lmosbj10LnJlYWxJbmRleCxsPXQuZ3JvdXBJbmRleCxoPXQueSxjPXQuYmN4LGQ9dC5iYXJXaWR0aCxnPXQuYmFySGVpZ2h0LHU9dC50ZXh0UmVjdHMscD10LmRhdGFMYWJlbHNZLGY9dC5kYXRhTGFiZWxzQ29uZmlnLHg9dC5iYXJEYXRhTGFiZWxzQ29uZmlnLGI9dC5iYXJUb3RhbERhdGFMYWJlbHNDb25maWcsdj10LnN0cm9rZVdpZHRoLHk9dC5vZmZYLHc9dC5vZmZZO2c9TWF0aC5hYnMoZyk7dmFyIGs9XCJ2ZXJ0aWNhbFwiPT09cy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmRhdGFMYWJlbHMub3JpZW50YXRpb247Yz1jLXYvMisoLTEhPT1sP2wqZDowKTt2YXIgQT1zLmdsb2JhbHMuZ3JpZFdpZHRoL3MuZ2xvYmFscy5kYXRhUG9pbnRzO2lmKGU9cy5nbG9iYWxzLmlzWE51bWVyaWM/Yy1kLzIreTpjLUErZC8yK3ksayl7ZT1lK3UuaGVpZ2h0LzItdi8yLTJ9dmFyIFM9dGhpcy5iYXJDdHguc2VyaWVzW3JdW29dPDAsQz1oO3N3aXRjaCh0aGlzLmJhckN0eC5pc1JldmVyc2VkJiYoQz1oLWcrKFM/MipnOjApLGgtPWcpLHgucG9zaXRpb24pe2Nhc2VcImNlbnRlclwiOnA9az9TP0MrZy8yK3c6QytnLzItdzpTP0MtZy8yK3UuaGVpZ2h0LzIrdzpDK2cvMit1LmhlaWdodC8yLXc7YnJlYWs7Y2FzZVwiYm90dG9tXCI6cD1rP1M/QytnK3c6QytnLXc6Uz9DLWcrdS5oZWlnaHQrdit3OkMrZy11LmhlaWdodC8yK3YtdzticmVhaztjYXNlXCJ0b3BcIjpwPWs/Uz9DK3c6Qy13OlM/Qy11LmhlaWdodC8yLXc6Qyt1LmhlaWdodCt3fWlmKHRoaXMuYmFyQ3R4Lmxhc3RBY3RpdmVCYXJTZXJpZUluZGV4PT09biYmYi5lbmFibGVkKXt2YXIgTD1uZXcgbSh0aGlzLmJhckN0eC5jdHgpLmdldFRleHRSZWN0cyh0aGlzLmdldFN0YWNrZWRUb3RhbERhdGFMYWJlbCh7cmVhbEluZGV4Om4sajpvfSksZi5mb250U2l6ZSk7aT1TP0MtTC5oZWlnaHQvMi13LWIub2Zmc2V0WSsxODpDK0wuaGVpZ2h0K3crYi5vZmZzZXRZLTE4LGE9ZStiLm9mZnNldFh9cmV0dXJuIHMuY29uZmlnLmNoYXJ0LnN0YWNrZWR8fChwPDA/cD0wK3Y6cCt1LmhlaWdodC8zPnMuZ2xvYmFscy5ncmlkSGVpZ2h0JiYocD1zLmdsb2JhbHMuZ3JpZEhlaWdodC12KSkse2JjeDpjLGJjeTpoLGRhdGFMYWJlbHNYOmUsZGF0YUxhYmVsc1k6cCx0b3RhbERhdGFMYWJlbHNYOmEsdG90YWxEYXRhTGFiZWxzWTppLHRvdGFsRGF0YUxhYmVsc0FuY2hvcjpcIm1pZGRsZVwifX19LHtrZXk6XCJjYWxjdWxhdGVCYXJzRGF0YUxhYmVsc1Bvc2l0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9dC54LGE9dC5pLHM9dC5qLHI9dC5yZWFsSW5kZXgsbz10Lmdyb3VwSW5kZXgsbj10LmJjeSxsPXQuYmFySGVpZ2h0LGg9dC5iYXJXaWR0aCxjPXQudGV4dFJlY3RzLGQ9dC5kYXRhTGFiZWxzWCxnPXQuc3Ryb2tlV2lkdGgsdT10LmRhdGFMYWJlbHNDb25maWcscD10LmJhckRhdGFMYWJlbHNDb25maWcsZj10LmJhclRvdGFsRGF0YUxhYmVsc0NvbmZpZyx4PXQub2ZmWCxiPXQub2ZmWSx2PWUuZ2xvYmFscy5ncmlkSGVpZ2h0L2UuZ2xvYmFscy5kYXRhUG9pbnRzO2g9TWF0aC5hYnMoaCk7dmFyIHksdyxrPShuKz0tMSE9PW8/bypsOjApLSh0aGlzLmJhckN0eC5pc1JhbmdlQmFyPzA6dikrbC8yK2MuaGVpZ2h0LzIrYi0zLEE9XCJzdGFydFwiLFM9dGhpcy5iYXJDdHguc2VyaWVzW2FdW3NdPDAsQz1pO3N3aXRjaCh0aGlzLmJhckN0eC5pc1JldmVyc2VkJiYoQz1pK2gtKFM/MipoOjApLGk9ZS5nbG9iYWxzLmdyaWRXaWR0aC1oKSxwLnBvc2l0aW9uKXtjYXNlXCJjZW50ZXJcIjpkPVM/QytoLzIteDpNYXRoLm1heChjLndpZHRoLzIsQy1oLzIpK3g7YnJlYWs7Y2FzZVwiYm90dG9tXCI6ZD1TP0MraC1nLU1hdGgucm91bmQoYy53aWR0aC8yKS14OkMtaCtnK01hdGgucm91bmQoYy53aWR0aC8yKSt4O2JyZWFrO2Nhc2VcInRvcFwiOmQ9Uz9DLWcrTWF0aC5yb3VuZChjLndpZHRoLzIpLXg6Qy1nLU1hdGgucm91bmQoYy53aWR0aC8yKSt4fWlmKHRoaXMuYmFyQ3R4Lmxhc3RBY3RpdmVCYXJTZXJpZUluZGV4PT09ciYmZi5lbmFibGVkKXt2YXIgTD1uZXcgbSh0aGlzLmJhckN0eC5jdHgpLmdldFRleHRSZWN0cyh0aGlzLmdldFN0YWNrZWRUb3RhbERhdGFMYWJlbCh7cmVhbEluZGV4OnIsajpzfSksdS5mb250U2l6ZSk7Uz8oeT1DLWcrTWF0aC5yb3VuZChMLndpZHRoLzIpLXgtZi5vZmZzZXRYLTE1LEE9XCJlbmRcIik6eT1DLWctTWF0aC5yb3VuZChMLndpZHRoLzIpK3grZi5vZmZzZXRYKzE1LHc9aytmLm9mZnNldFl9cmV0dXJuIGUuY29uZmlnLmNoYXJ0LnN0YWNrZWR8fChkPDA/ZD1kK2Mud2lkdGgrZzpkK2Mud2lkdGgvMj5lLmdsb2JhbHMuZ3JpZFdpZHRoJiYoZD1lLmdsb2JhbHMuZ3JpZFdpZHRoLWMud2lkdGgtZykpLHtiY3g6aSxiY3k6bixkYXRhTGFiZWxzWDpkLGRhdGFMYWJlbHNZOmssdG90YWxEYXRhTGFiZWxzWDp5LHRvdGFsRGF0YUxhYmVsc1k6dyx0b3RhbERhdGFMYWJlbHNBbmNob3I6QX19fSx7a2V5OlwiZHJhd0NhbGN1bGF0ZWREYXRhTGFiZWxzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGk9dC54LGE9dC55LHM9dC52YWwscj10Lmksbz10Lmosbj10LnRleHRSZWN0cyxsPXQuYmFySGVpZ2h0LGg9dC5iYXJXaWR0aCxjPXQuZGF0YUxhYmVsc0NvbmZpZyxkPXRoaXMudyxnPVwicm90YXRlKDApXCI7XCJ2ZXJ0aWNhbFwiPT09ZC5jb25maWcucGxvdE9wdGlvbnMuYmFyLmRhdGFMYWJlbHMub3JpZW50YXRpb24mJihnPVwicm90YXRlKC05MCwgXCIuY29uY2F0KGksXCIsIFwiKS5jb25jYXQoYSxcIilcIikpO3ZhciB1PW5ldyBPKHRoaXMuYmFyQ3R4LmN0eCkscD1uZXcgbSh0aGlzLmJhckN0eC5jdHgpLGY9Yy5mb3JtYXR0ZXIseD1udWxsLGI9ZC5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihyKT4tMTtpZihjLmVuYWJsZWQmJiFiKXt4PXAuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhLWxhYmVsc1wiLHRyYW5zZm9ybTpnfSk7dmFyIHY9XCJcIjt2b2lkIDAhPT1zJiYodj1mKHMsZShlKHt9LGQpLHt9LHtzZXJpZXNJbmRleDpyLGRhdGFQb2ludEluZGV4Om8sdzpkfSkpKSwhcyYmZC5jb25maWcucGxvdE9wdGlvbnMuYmFyLmhpZGVaZXJvQmFyc1doZW5Hcm91cGVkJiYodj1cIlwiKTt2YXIgeT1kLmdsb2JhbHMuc2VyaWVzW3JdW29dPDAsdz1kLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuZGF0YUxhYmVscy5wb3NpdGlvbjtpZihcInZlcnRpY2FsXCI9PT1kLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuZGF0YUxhYmVscy5vcmllbnRhdGlvbiYmKFwidG9wXCI9PT13JiYoYy50ZXh0QW5jaG9yPXk/XCJlbmRcIjpcInN0YXJ0XCIpLFwiY2VudGVyXCI9PT13JiYoYy50ZXh0QW5jaG9yPVwibWlkZGxlXCIpLFwiYm90dG9tXCI9PT13JiYoYy50ZXh0QW5jaG9yPXk/XCJlbmRcIjpcInN0YXJ0XCIpKSx0aGlzLmJhckN0eC5pc1JhbmdlQmFyJiZ0aGlzLmJhckN0eC5iYXJPcHRpb25zLmRhdGFMYWJlbHMuaGlkZU92ZXJmbG93aW5nTGFiZWxzKWg8cC5nZXRUZXh0UmVjdHModixwYXJzZUZsb2F0KGMuc3R5bGUuZm9udFNpemUpKS53aWR0aCYmKHY9XCJcIik7ZC5jb25maWcuY2hhcnQuc3RhY2tlZCYmdGhpcy5iYXJDdHguYmFyT3B0aW9ucy5kYXRhTGFiZWxzLmhpZGVPdmVyZmxvd2luZ0xhYmVscyYmKHRoaXMuYmFyQ3R4LmlzSG9yaXpvbnRhbD9uLndpZHRoLzEuNj5NYXRoLmFicyhoKSYmKHY9XCJcIik6bi5oZWlnaHQvMS42Pk1hdGguYWJzKGwpJiYodj1cIlwiKSk7dmFyIGs9ZSh7fSxjKTt0aGlzLmJhckN0eC5pc0hvcml6b250YWwmJnM8MCYmKFwic3RhcnRcIj09PWMudGV4dEFuY2hvcj9rLnRleHRBbmNob3I9XCJlbmRcIjpcImVuZFwiPT09Yy50ZXh0QW5jaG9yJiYoay50ZXh0QW5jaG9yPVwic3RhcnRcIikpLHUucGxvdERhdGFMYWJlbHNUZXh0KHt4OmkseTphLHRleHQ6dixpOnIsajpvLHBhcmVudDp4LGRhdGFMYWJlbHNDb25maWc6ayxhbHdheXNEcmF3RGF0YUxhYmVsOiEwLG9mZnNldENvcnJlY3Rpb246ITB9KX1yZXR1cm4geH19LHtrZXk6XCJkcmF3VG90YWxEYXRhTGFiZWxzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaT10LngsYT10Lnkscz10LnZhbCxyPXQucmVhbEluZGV4LG89dC50ZXh0QW5jaG9yLG49dC5iYXJUb3RhbERhdGFMYWJlbHNDb25maWcsbD1uZXcgbSh0aGlzLmJhckN0eC5jdHgpO3JldHVybiBuLmVuYWJsZWQmJnZvaWQgMCE9PWkmJnZvaWQgMCE9PWEmJnRoaXMuYmFyQ3R4Lmxhc3RBY3RpdmVCYXJTZXJpZUluZGV4PT09ciYmKGU9bC5kcmF3VGV4dCh7eDppLHk6YSxmb3JlQ29sb3I6bi5zdHlsZS5jb2xvcix0ZXh0OnMsdGV4dEFuY2hvcjpvLGZvbnRGYW1pbHk6bi5zdHlsZS5mb250RmFtaWx5LGZvbnRTaXplOm4uc3R5bGUuZm9udFNpemUsZm9udFdlaWdodDpuLnN0eWxlLmZvbnRXZWlnaHR9KSksZX19XSksdH0oKSxtdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy5iYXJDdHg9ZX1yZXR1cm4gcih0LFt7a2V5OlwiaW5pdFZhcmlhYmxlc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudzt0aGlzLmJhckN0eC5zZXJpZXM9dCx0aGlzLmJhckN0eC50b3RhbEl0ZW1zPTAsdGhpcy5iYXJDdHguc2VyaWVzTGVuPTAsdGhpcy5iYXJDdHgudmlzaWJsZUk9LTEsdGhpcy5iYXJDdHgudmlzaWJsZUl0ZW1zPTE7Zm9yKHZhciBpPTA7aTx0Lmxlbmd0aDtpKyspaWYodFtpXS5sZW5ndGg+MCYmKHRoaXMuYmFyQ3R4LnNlcmllc0xlbj10aGlzLmJhckN0eC5zZXJpZXNMZW4rMSx0aGlzLmJhckN0eC50b3RhbEl0ZW1zKz10W2ldLmxlbmd0aCksZS5nbG9iYWxzLmlzWE51bWVyaWMpZm9yKHZhciBhPTA7YTx0W2ldLmxlbmd0aDthKyspZS5nbG9iYWxzLnNlcmllc1hbaV1bYV0+ZS5nbG9iYWxzLm1pblgmJmUuZ2xvYmFscy5zZXJpZXNYW2ldW2FdPGUuZ2xvYmFscy5tYXhYJiZ0aGlzLmJhckN0eC52aXNpYmxlSXRlbXMrKztlbHNlIHRoaXMuYmFyQ3R4LnZpc2libGVJdGVtcz1lLmdsb2JhbHMuZGF0YVBvaW50czswPT09dGhpcy5iYXJDdHguc2VyaWVzTGVuJiYodGhpcy5iYXJDdHguc2VyaWVzTGVuPTEpLHRoaXMuYmFyQ3R4Lnplcm9TZXJpZXNlcz1bXSxlLmdsb2JhbHMuY29tYm9DaGFydHN8fHRoaXMuY2hlY2taZXJvU2VyaWVzKHtzZXJpZXM6dH0pfX0se2tleTpcImluaXRpYWxQb3NpdGlvbnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0LGUsaSxhLHMscixvLG4sbD10aGlzLncsaD1sLmdsb2JhbHMuZGF0YVBvaW50czt0aGlzLmJhckN0eC5pc1JhbmdlQmFyJiYoaD1sLmdsb2JhbHMubGFiZWxzLmxlbmd0aCk7dmFyIGM9dGhpcy5iYXJDdHguc2VyaWVzTGVuO2lmKGwuY29uZmlnLnBsb3RPcHRpb25zLmJhci5yYW5nZUJhckdyb3VwUm93cyYmKGM9MSksdGhpcy5iYXJDdHguaXNIb3Jpem9udGFsKXM9KGk9bC5nbG9iYWxzLmdyaWRIZWlnaHQvaCkvYyxsLmdsb2JhbHMuaXNYTnVtZXJpYyYmKHM9KGk9bC5nbG9iYWxzLmdyaWRIZWlnaHQvdGhpcy5iYXJDdHgudG90YWxJdGVtcykvdGhpcy5iYXJDdHguc2VyaWVzTGVuKSxzPXMqcGFyc2VJbnQodGhpcy5iYXJDdHguYmFyT3B0aW9ucy5iYXJIZWlnaHQsMTApLzEwMCwtMT09PVN0cmluZyh0aGlzLmJhckN0eC5iYXJPcHRpb25zLmJhckhlaWdodCkuaW5kZXhPZihcIiVcIikmJihzPXBhcnNlSW50KHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuYmFySGVpZ2h0LDEwKSksbj10aGlzLmJhckN0eC5iYXNlTGluZUludmVydGVkWStsLmdsb2JhbHMucGFkSG9yaXpvbnRhbCsodGhpcy5iYXJDdHguaXNSZXZlcnNlZD9sLmdsb2JhbHMuZ3JpZFdpZHRoOjApLSh0aGlzLmJhckN0eC5pc1JldmVyc2VkPzIqdGhpcy5iYXJDdHguYmFzZUxpbmVJbnZlcnRlZFk6MCksZT0oaS1zKnRoaXMuYmFyQ3R4LnNlcmllc0xlbikvMjtlbHNle2lmKGE9bC5nbG9iYWxzLmdyaWRXaWR0aC90aGlzLmJhckN0eC52aXNpYmxlSXRlbXMsbC5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiYoYT1sLmdsb2JhbHMuZ3JpZFdpZHRoL2wuZ2xvYmFscy5kYXRhUG9pbnRzKSxyPWEvdGhpcy5iYXJDdHguc2VyaWVzTGVuKnBhcnNlSW50KHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sdW1uV2lkdGgsMTApLzEwMCxsLmdsb2JhbHMuaXNYTnVtZXJpYyl7dmFyIGQ9dGhpcy5iYXJDdHgueFJhdGlvO2wuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmKGQ9dGhpcy5iYXJDdHguaW5pdGlhbFhSYXRpbyksbC5nbG9iYWxzLm1pblhEaWZmJiYuNSE9PWwuZ2xvYmFscy5taW5YRGlmZiYmbC5nbG9iYWxzLm1pblhEaWZmL2Q+MCYmKGE9bC5nbG9iYWxzLm1pblhEaWZmL2QpLChyPWEvdGhpcy5iYXJDdHguc2VyaWVzTGVuKnBhcnNlSW50KHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sdW1uV2lkdGgsMTApLzEwMCk8MSYmKHI9MSl9LTE9PT1TdHJpbmcodGhpcy5iYXJDdHguYmFyT3B0aW9ucy5jb2x1bW5XaWR0aCkuaW5kZXhPZihcIiVcIikmJihyPXBhcnNlSW50KHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sdW1uV2lkdGgsMTApKSxvPWwuZ2xvYmFscy5ncmlkSGVpZ2h0LXRoaXMuYmFyQ3R4LmJhc2VMaW5lWVt0aGlzLmJhckN0eC55YXhpc0luZGV4XS0odGhpcy5iYXJDdHguaXNSZXZlcnNlZD9sLmdsb2JhbHMuZ3JpZEhlaWdodDowKSsodGhpcy5iYXJDdHguaXNSZXZlcnNlZD8yKnRoaXMuYmFyQ3R4LmJhc2VMaW5lWVt0aGlzLmJhckN0eC55YXhpc0luZGV4XTowKSx0PWwuZ2xvYmFscy5wYWRIb3Jpem9udGFsKyhhLXIqdGhpcy5iYXJDdHguc2VyaWVzTGVuKS8yfXJldHVybnt4OnQseTplLHlEaXZpc2lvbjppLHhEaXZpc2lvbjphLGJhckhlaWdodDpzLGJhcldpZHRoOnIsemVyb0g6byx6ZXJvVzpufX19LHtrZXk6XCJpbml0aWFsaXplU3RhY2tlZFByZXZWYXJzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC53O2UuZ2xvYmFscy5oYXNTZXJpZXNHcm91cHM/ZS5nbG9iYWxzLnNlcmllc0dyb3Vwcy5mb3JFYWNoKChmdW5jdGlvbihlKXt0W2VdfHwodFtlXT17fSksdFtlXS5wcmV2WT1bXSx0W2VdLnByZXZYPVtdLHRbZV0ucHJldllGPVtdLHRbZV0ucHJldlhGPVtdLHRbZV0ucHJldllWYWw9W10sdFtlXS5wcmV2WFZhbD1bXX0pKToodC5wcmV2WT1bXSx0LnByZXZYPVtdLHQucHJldllGPVtdLHQucHJldlhGPVtdLHQucHJldllWYWw9W10sdC5wcmV2WFZhbD1bXSl9fSx7a2V5OlwiaW5pdGlhbGl6ZVN0YWNrZWRYWVZhcnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10Lnc7ZS5nbG9iYWxzLmhhc1Nlcmllc0dyb3Vwcz9lLmdsb2JhbHMuc2VyaWVzR3JvdXBzLmZvckVhY2goKGZ1bmN0aW9uKGUpe3RbZV18fCh0W2VdPXt9KSx0W2VdLnhBcnJqPVtdLHRbZV0ueEFycmpGPVtdLHRbZV0ueEFycmpWYWw9W10sdFtlXS55QXJyaj1bXSx0W2VdLnlBcnJqRj1bXSx0W2VdLnlBcnJqVmFsPVtdfSkpOih0LnhBcnJqPVtdLHQueEFycmpGPVtdLHQueEFycmpWYWw9W10sdC55QXJyaj1bXSx0LnlBcnJqRj1bXSx0LnlBcnJqVmFsPVtdKX19LHtrZXk6XCJnZXRQYXRoRmlsbENvbG9yXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSl7dmFyIHMscixvLG4sbD10aGlzLncsaD1uZXcgUih0aGlzLmJhckN0eC5jdHgpLGM9bnVsbCxkPXRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuZGlzdHJpYnV0ZWQ/aTplO3RoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sb3JzLnJhbmdlcy5sZW5ndGg+MCYmdGhpcy5iYXJDdHguYmFyT3B0aW9ucy5jb2xvcnMucmFuZ2VzLm1hcCgoZnVuY3Rpb24oYSl7dFtlXVtpXT49YS5mcm9tJiZ0W2VdW2ldPD1hLnRvJiYoYz1hLmNvbG9yKX0pKTtyZXR1cm4gbC5jb25maWcuc2VyaWVzW2VdLmRhdGFbaV0mJmwuY29uZmlnLnNlcmllc1tlXS5kYXRhW2ldLmZpbGxDb2xvciYmKGM9bC5jb25maWcuc2VyaWVzW2VdLmRhdGFbaV0uZmlsbENvbG9yKSxoLmZpbGxQYXRoKHtzZXJpZXNOdW1iZXI6dGhpcy5iYXJDdHguYmFyT3B0aW9ucy5kaXN0cmlidXRlZD9kOmEsZGF0YVBvaW50SW5kZXg6aSxjb2xvcjpjLHZhbHVlOnRbZV1baV0sZmlsbENvbmZpZzpudWxsPT09KHM9bC5jb25maWcuc2VyaWVzW2VdLmRhdGFbaV0pfHx2b2lkIDA9PT1zP3ZvaWQgMDpzLmZpbGwsZmlsbFR5cGU6bnVsbCE9PShyPWwuY29uZmlnLnNlcmllc1tlXS5kYXRhW2ldKSYmdm9pZCAwIT09ciYmbnVsbCE9PShvPXIuZmlsbCkmJnZvaWQgMCE9PW8mJm8udHlwZT9udWxsPT09KG49bC5jb25maWcuc2VyaWVzW2VdLmRhdGFbaV0pfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmZpbGwudHlwZTpsLmNvbmZpZy5maWxsLnR5cGV9KX19LHtrZXk6XCJnZXRTdHJva2VXaWR0aFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT0wLHM9dGhpcy53O3JldHVybiB0aGlzLmJhckN0eC5zZXJpZXNbdF1bZV0/dGhpcy5iYXJDdHguaXNOdWxsVmFsdWU9ITE6dGhpcy5iYXJDdHguaXNOdWxsVmFsdWU9ITAscy5jb25maWcuc3Ryb2tlLnNob3cmJih0aGlzLmJhckN0eC5pc051bGxWYWx1ZXx8KGE9QXJyYXkuaXNBcnJheSh0aGlzLmJhckN0eC5zdHJva2VXaWR0aCk/dGhpcy5iYXJDdHguc3Ryb2tlV2lkdGhbaV06dGhpcy5iYXJDdHguc3Ryb2tlV2lkdGgpKSxhfX0se2tleTpcInNob3VsZEFwcGx5UmFkaXVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9ITE7cmV0dXJuIGUuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ib3JkZXJSYWRpdXM+MCYmKGUuY29uZmlnLmNoYXJ0LnN0YWNrZWQmJlwibGFzdFwiPT09ZS5jb25maWcucGxvdE9wdGlvbnMuYmFyLmJvcmRlclJhZGl1c1doZW5TdGFja2VkP3RoaXMuYmFyQ3R4Lmxhc3RBY3RpdmVCYXJTZXJpZUluZGV4PT09dCYmKGk9ITApOmk9ITApLGl9fSx7a2V5OlwiYmFyQmFja2dyb3VuZFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaixpPXQuaSxhPXQueDEscz10LngyLHI9dC55MSxvPXQueTIsbj10LmVsU2VyaWVzLGw9dGhpcy53LGg9bmV3IG0odGhpcy5iYXJDdHguY3R4KSxjPW5ldyBOKHRoaXMuYmFyQ3R4LmN0eCkuZ2V0QWN0aXZlQ29uZmlnU2VyaWVzSW5kZXgoKTtpZih0aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbG9ycy5iYWNrZ3JvdW5kQmFyQ29sb3JzLmxlbmd0aD4wJiZjPT09aSl7ZT49dGhpcy5iYXJDdHguYmFyT3B0aW9ucy5jb2xvcnMuYmFja2dyb3VuZEJhckNvbG9ycy5sZW5ndGgmJihlJT10aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbG9ycy5iYWNrZ3JvdW5kQmFyQ29sb3JzLmxlbmd0aCk7dmFyIGQ9dGhpcy5iYXJDdHguYmFyT3B0aW9ucy5jb2xvcnMuYmFja2dyb3VuZEJhckNvbG9yc1tlXSxnPWguZHJhd1JlY3Qodm9pZCAwIT09YT9hOjAsdm9pZCAwIT09cj9yOjAsdm9pZCAwIT09cz9zOmwuZ2xvYmFscy5ncmlkV2lkdGgsdm9pZCAwIT09bz9vOmwuZ2xvYmFscy5ncmlkSGVpZ2h0LHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sb3JzLmJhY2tncm91bmRCYXJSYWRpdXMsZCx0aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbG9ycy5iYWNrZ3JvdW5kQmFyT3BhY2l0eSk7bi5hZGQoZyksZy5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWJhY2tncm91bmRCYXJcIil9fX0se2tleTpcImdldENvbHVtblBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaT10LmJhcldpZHRoLGE9dC5iYXJYUG9zaXRpb24scz10LnkxLHI9dC55MixvPXQuc3Ryb2tlV2lkdGgsbj10LnNlcmllc0dyb3VwLGw9dC5yZWFsSW5kZXgsaD10LmksYz10LmosZD10LncsZz1uZXcgbSh0aGlzLmJhckN0eC5jdHgpOyhvPUFycmF5LmlzQXJyYXkobyk/b1tsXTpvKXx8KG89MCk7dmFyIHU9aSxwPWE7bnVsbCE9PShlPWQuY29uZmlnLnNlcmllc1tsXS5kYXRhW2NdKSYmdm9pZCAwIT09ZSYmZS5jb2x1bW5XaWR0aE9mZnNldCYmKHA9YS1kLmNvbmZpZy5zZXJpZXNbbF0uZGF0YVtjXS5jb2x1bW5XaWR0aE9mZnNldC8yLHU9aStkLmNvbmZpZy5zZXJpZXNbbF0uZGF0YVtjXS5jb2x1bW5XaWR0aE9mZnNldCk7dmFyIGY9cCx4PXArdTtzKz0uMDAxLHIrPS4wMDE7dmFyIGI9Zy5tb3ZlKGYscyksdj1nLm1vdmUoZixzKSx5PWcubGluZSh4LW8scyk7aWYoZC5nbG9iYWxzLnByZXZpb3VzUGF0aHMubGVuZ3RoPjAmJih2PXRoaXMuYmFyQ3R4LmdldFByZXZpb3VzUGF0aChsLGMsITEpKSxiPWIrZy5saW5lKGYscikrZy5saW5lKHgtbyxyKStnLmxpbmUoeC1vLHMpKyhcImFyb3VuZFwiPT09ZC5jb25maWcucGxvdE9wdGlvbnMuYmFyLmJvcmRlclJhZGl1c0FwcGxpY2F0aW9uP1wiIFpcIjpcIiB6XCIpLHY9ditnLmxpbmUoZixzKSt5K3kreSt5K3krZy5saW5lKGYscykrKFwiYXJvdW5kXCI9PT1kLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuYm9yZGVyUmFkaXVzQXBwbGljYXRpb24/XCIgWlwiOlwiIHpcIiksdGhpcy5zaG91bGRBcHBseVJhZGl1cyhsKSYmKGI9Zy5yb3VuZFBhdGhDb3JuZXJzKGIsZC5jb25maWcucGxvdE9wdGlvbnMuYmFyLmJvcmRlclJhZGl1cykpLGQuY29uZmlnLmNoYXJ0LnN0YWNrZWQpe3ZhciB3PXRoaXMuYmFyQ3R4O2QuZ2xvYmFscy5oYXNTZXJpZXNHcm91cHMmJm4mJih3PXRoaXMuYmFyQ3R4W25dKSx3LnlBcnJqLnB1c2gociksdy55QXJyakYucHVzaChNYXRoLmFicyhzLXIpKSx3LnlBcnJqVmFsLnB1c2godGhpcy5iYXJDdHguc2VyaWVzW2hdW2NdKX1yZXR1cm57cGF0aFRvOmIscGF0aEZyb206dn19fSx7a2V5OlwiZ2V0QmFycGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpPXQuYmFyWVBvc2l0aW9uLGE9dC5iYXJIZWlnaHQscz10LngxLHI9dC54MixvPXQuc3Ryb2tlV2lkdGgsbj10LnNlcmllc0dyb3VwLGw9dC5yZWFsSW5kZXgsaD10LmksYz10LmosZD10LncsZz1uZXcgbSh0aGlzLmJhckN0eC5jdHgpOyhvPUFycmF5LmlzQXJyYXkobyk/b1tsXTpvKXx8KG89MCk7dmFyIHU9aSxwPWE7bnVsbCE9PShlPWQuY29uZmlnLnNlcmllc1tsXS5kYXRhW2NdKSYmdm9pZCAwIT09ZSYmZS5iYXJIZWlnaHRPZmZzZXQmJih1PWktZC5jb25maWcuc2VyaWVzW2xdLmRhdGFbY10uYmFySGVpZ2h0T2Zmc2V0LzIscD1hK2QuY29uZmlnLnNlcmllc1tsXS5kYXRhW2NdLmJhckhlaWdodE9mZnNldCk7dmFyIGY9dSx4PXUrcDtzKz0uMDAxLHIrPS4wMDE7dmFyIGI9Zy5tb3ZlKHMsZiksdj1nLm1vdmUocyxmKTtkLmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGg+MCYmKHY9dGhpcy5iYXJDdHguZ2V0UHJldmlvdXNQYXRoKGwsYywhMSkpO3ZhciB5PWcubGluZShzLHgtbyk7aWYoYj1iK2cubGluZShyLGYpK2cubGluZShyLHgtbykreSsoXCJhcm91bmRcIj09PWQuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ib3JkZXJSYWRpdXNBcHBsaWNhdGlvbj9cIiBaXCI6XCIgelwiKSx2PXYrZy5saW5lKHMsZikreSt5K3kreSt5K2cubGluZShzLGYpKyhcImFyb3VuZFwiPT09ZC5jb25maWcucGxvdE9wdGlvbnMuYmFyLmJvcmRlclJhZGl1c0FwcGxpY2F0aW9uP1wiIFpcIjpcIiB6XCIpLHRoaXMuc2hvdWxkQXBwbHlSYWRpdXMobCkmJihiPWcucm91bmRQYXRoQ29ybmVycyhiLGQuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ib3JkZXJSYWRpdXMpKSxkLmNvbmZpZy5jaGFydC5zdGFja2VkKXt2YXIgdz10aGlzLmJhckN0eDtkLmdsb2JhbHMuaGFzU2VyaWVzR3JvdXBzJiZuJiYodz10aGlzLmJhckN0eFtuXSksdy54QXJyai5wdXNoKHIpLHcueEFycmpGLnB1c2goTWF0aC5hYnMocy1yKSksdy54QXJyalZhbC5wdXNoKHRoaXMuYmFyQ3R4LnNlcmllc1toXVtjXSl9cmV0dXJue3BhdGhUbzpiLHBhdGhGcm9tOnZ9fX0se2tleTpcImNoZWNrWmVyb1Nlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10LnNlcmllcyxpPXRoaXMudyxhPTA7YTxlLmxlbmd0aDthKyspe2Zvcih2YXIgcz0wLHI9MDtyPGVbaS5nbG9iYWxzLm1heFZhbHNJbkFycmF5SW5kZXhdLmxlbmd0aDtyKyspcys9ZVthXVtyXTswPT09cyYmdGhpcy5iYXJDdHguemVyb1Nlcmllc2VzLnB1c2goYSl9fX0se2tleTpcImdldFhGb3JWYWx1ZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9IShhcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSl8fGFyZ3VtZW50c1syXT9lOm51bGw7cmV0dXJuIG51bGwhPXQmJihpPWUrdC90aGlzLmJhckN0eC5pbnZlcnRlZFlSYXRpby0yKih0aGlzLmJhckN0eC5pc1JldmVyc2VkP3QvdGhpcy5iYXJDdHguaW52ZXJ0ZWRZUmF0aW86MCkpLGl9fSx7a2V5OlwiZ2V0WUZvclZhbHVlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdP2U6bnVsbDtyZXR1cm4gbnVsbCE9dCYmKGk9ZS10L3RoaXMuYmFyQ3R4LnlSYXRpb1t0aGlzLmJhckN0eC55YXhpc0luZGV4XSsyKih0aGlzLmJhckN0eC5pc1JldmVyc2VkP3QvdGhpcy5iYXJDdHgueVJhdGlvW3RoaXMuYmFyQ3R4LnlheGlzSW5kZXhdOjApKSxpfX0se2tleTpcImdldEdvYWxWYWx1ZXNcIix2YWx1ZTpmdW5jdGlvbih0LGksYSxzLHIpe3ZhciBuPXRoaXMsbD10aGlzLncsaD1bXSxjPWZ1bmN0aW9uKGUscyl7dmFyIHI7aC5wdXNoKChvKHI9e30sdCxcInhcIj09PXQ/bi5nZXRYRm9yVmFsdWUoZSxpLCExKTpuLmdldFlGb3JWYWx1ZShlLGEsITEpKSxvKHIsXCJhdHRyc1wiLHMpLHIpKX07aWYobC5nbG9iYWxzLnNlcmllc0dvYWxzW3NdJiZsLmdsb2JhbHMuc2VyaWVzR29hbHNbc11bcl0mJkFycmF5LmlzQXJyYXkobC5nbG9iYWxzLnNlcmllc0dvYWxzW3NdW3JdKSYmbC5nbG9iYWxzLnNlcmllc0dvYWxzW3NdW3JdLmZvckVhY2goKGZ1bmN0aW9uKHQpe2ModC52YWx1ZSx0KX0pKSx0aGlzLmJhckN0eC5iYXJPcHRpb25zLmlzRHVtYmJlbGwmJmwuZ2xvYmFscy5zZXJpZXNSYW5nZS5sZW5ndGgpe3ZhciBkPXRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuZHVtYmJlbGxDb2xvcnM/dGhpcy5iYXJDdHguYmFyT3B0aW9ucy5kdW1iYmVsbENvbG9yczpsLmdsb2JhbHMuY29sb3JzLGc9e3N0cm9rZUhlaWdodDpcInhcIj09PXQ/MDpsLmdsb2JhbHMubWFya2Vycy5zaXplW3NdLHN0cm9rZVdpZHRoOlwieFwiPT09dD9sLmdsb2JhbHMubWFya2Vycy5zaXplW3NdOjAsc3Ryb2tlRGFzaEFycmF5OjAsc3Ryb2tlTGluZUNhcDpcInJvdW5kXCIsc3Ryb2tlQ29sb3I6QXJyYXkuaXNBcnJheShkW3NdKT9kW3NdWzBdOmRbc119O2MobC5nbG9iYWxzLnNlcmllc1JhbmdlU3RhcnRbc11bcl0sZyksYyhsLmdsb2JhbHMuc2VyaWVzUmFuZ2VFbmRbc11bcl0sZShlKHt9LGcpLHt9LHtzdHJva2VDb2xvcjpBcnJheS5pc0FycmF5KGRbc10pP2Rbc11bMV06ZFtzXX0pKX1yZXR1cm4gaH19LHtrZXk6XCJkcmF3R29hbExpbmVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmJhclhQb3NpdGlvbixpPXQuYmFyWVBvc2l0aW9uLGE9dC5nb2FsWCxzPXQuZ29hbFkscj10LmJhcldpZHRoLG89dC5iYXJIZWlnaHQsbj1uZXcgbSh0aGlzLmJhckN0eC5jdHgpLGw9bi5ncm91cCh7Y2xhc3NOYW1lOlwiYXBleGNoYXJ0cy1iYXItZ29hbHMtZ3JvdXBzXCJ9KTtsLm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtZWxlbWVudC1oaWRkZW5cIiksdGhpcy5iYXJDdHgudy5nbG9iYWxzLmRlbGF5ZWRFbGVtZW50cy5wdXNoKHtlbDpsLm5vZGV9KSxsLmF0dHIoXCJjbGlwLXBhdGhcIixcInVybCgjZ3JpZFJlY3RNYXJrZXJNYXNrXCIuY29uY2F0KHRoaXMuYmFyQ3R4LncuZ2xvYmFscy5jdWlkLFwiKVwiKSk7dmFyIGg9bnVsbDtyZXR1cm4gdGhpcy5iYXJDdHguaXNIb3Jpem9udGFsP0FycmF5LmlzQXJyYXkoYSkmJmEuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9dm9pZCAwIT09dC5hdHRycy5zdHJva2VIZWlnaHQ/dC5hdHRycy5zdHJva2VIZWlnaHQ6by8yLGE9aStlK28vMjtoPW4uZHJhd0xpbmUodC54LGEtMiplLHQueCxhLHQuYXR0cnMuc3Ryb2tlQ29sb3I/dC5hdHRycy5zdHJva2VDb2xvcjp2b2lkIDAsdC5hdHRycy5zdHJva2VEYXNoQXJyYXksdC5hdHRycy5zdHJva2VXaWR0aD90LmF0dHJzLnN0cm9rZVdpZHRoOjIsdC5hdHRycy5zdHJva2VMaW5lQ2FwKSxsLmFkZChoKX0pKTpBcnJheS5pc0FycmF5KHMpJiZzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBpPXZvaWQgMCE9PXQuYXR0cnMuc3Ryb2tlV2lkdGg/dC5hdHRycy5zdHJva2VXaWR0aDpyLzIsYT1lK2krci8yO2g9bi5kcmF3TGluZShhLTIqaSx0LnksYSx0LnksdC5hdHRycy5zdHJva2VDb2xvcj90LmF0dHJzLnN0cm9rZUNvbG9yOnZvaWQgMCx0LmF0dHJzLnN0cm9rZURhc2hBcnJheSx0LmF0dHJzLnN0cm9rZUhlaWdodD90LmF0dHJzLnN0cm9rZUhlaWdodDoyLHQuYXR0cnMuc3Ryb2tlTGluZUNhcCksbC5hZGQoaCl9KSksbH19XSksdH0oKSx5dD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxpKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53O3ZhciBzPXRoaXMudzt0aGlzLmJhck9wdGlvbnM9cy5jb25maWcucGxvdE9wdGlvbnMuYmFyLHRoaXMuaXNIb3Jpem9udGFsPXRoaXMuYmFyT3B0aW9ucy5ob3Jpem9udGFsLHRoaXMuc3Ryb2tlV2lkdGg9cy5jb25maWcuc3Ryb2tlLndpZHRoLHRoaXMuaXNOdWxsVmFsdWU9ITEsdGhpcy5pc1JhbmdlQmFyPXMuZ2xvYmFscy5zZXJpZXNSYW5nZS5sZW5ndGgmJnRoaXMuaXNIb3Jpem9udGFsLHRoaXMueHlSYXRpb3M9aSxudWxsIT09dGhpcy54eVJhdGlvcyYmKHRoaXMueFJhdGlvPWkueFJhdGlvLHRoaXMuaW5pdGlhbFhSYXRpbz1pLmluaXRpYWxYUmF0aW8sdGhpcy55UmF0aW89aS55UmF0aW8sdGhpcy5pbnZlcnRlZFhSYXRpbz1pLmludmVydGVkWFJhdGlvLHRoaXMuaW52ZXJ0ZWRZUmF0aW89aS5pbnZlcnRlZFlSYXRpbyx0aGlzLmJhc2VMaW5lWT1pLmJhc2VMaW5lWSx0aGlzLmJhc2VMaW5lSW52ZXJ0ZWRZPWkuYmFzZUxpbmVJbnZlcnRlZFkpLHRoaXMueWF4aXNJbmRleD0wLHRoaXMuc2VyaWVzTGVuPTA7dmFyIHI9bmV3IE4odGhpcy5jdHgpO3RoaXMubGFzdEFjdGl2ZUJhclNlcmllSW5kZXg9ci5nZXRBY3RpdmVDb25maWdTZXJpZXNJbmRleChcImRlc2NcIixbXCJiYXJcIixcImNvbHVtblwiXSk7dmFyIG89ci5nZXRCYXJTZXJpZXNJbmRpY2VzKCksbj1uZXcgeSh0aGlzLmN0eCk7dGhpcy5zdGFja2VkU2VyaWVzVG90YWxzPW4uZ2V0U3RhY2tlZFNlcmllc1RvdGFscyh0aGlzLncuY29uZmlnLnNlcmllcy5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuLTE9PT1vLmluZGV4T2YoZSk/ZTotMX0pKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybi0xIT09dH0pKSksdGhpcy5iYXJIZWxwZXJzPW5ldyBtdCh0aGlzKX1yZXR1cm4gcih0LFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKHQsaSl7dmFyIGE9dGhpcy53LHM9bmV3IG0odGhpcy5jdHgpLHI9bmV3IHkodGhpcy5jdHgsYSk7dD1yLmdldExvZ1Nlcmllcyh0KSx0aGlzLnNlcmllcz10LHRoaXMueVJhdGlvPXIuZ2V0TG9nWVJhdGlvcyh0aGlzLnlSYXRpbyksdGhpcy5iYXJIZWxwZXJzLmluaXRWYXJpYWJsZXModCk7dmFyIG89cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWJhci1zZXJpZXMgYXBleGNoYXJ0cy1wbG90LXNlcmllc1wifSk7YS5jb25maWcuZGF0YUxhYmVscy5lbmFibGVkJiZ0aGlzLnRvdGFsSXRlbXM+dGhpcy5iYXJPcHRpb25zLmRhdGFMYWJlbHMubWF4SXRlbXMmJmNvbnNvbGUud2FybihcIldBUk5JTkc6IERhdGFMYWJlbHMgYXJlIGVuYWJsZWQgYnV0IHRoZXJlIGFyZSB0b28gbWFueSB0byBkaXNwbGF5LiBUaGlzIG1heSBjYXVzZSBwZXJmb3JtYW5jZSBpc3N1ZSB3aGVuIHJlbmRlcmluZy5cIik7Zm9yKHZhciBuPTAsbD0wO248dC5sZW5ndGg7bisrLGwrKyl7dmFyIGgsYyxkLGcsdT12b2lkIDAscD12b2lkIDAsZj1bXSxiPVtdLHY9YS5nbG9iYWxzLmNvbWJvQ2hhcnRzP2lbbl06bix3PXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXNcIixyZWw6bisxLHNlcmllc05hbWU6eC5lc2NhcGVTdHJpbmcoYS5nbG9iYWxzLnNlcmllc05hbWVzW3ZdKSxcImRhdGE6cmVhbEluZGV4XCI6dn0pO3RoaXMuY3R4LnNlcmllcy5hZGRDb2xsYXBzZWRDbGFzc1RvU2VyaWVzKHcsdiksdFtuXS5sZW5ndGg+MCYmKHRoaXMudmlzaWJsZUk9dGhpcy52aXNpYmxlSSsxKTt2YXIgaz0wLEE9MDt0aGlzLnlSYXRpby5sZW5ndGg+MSYmKHRoaXMueWF4aXNJbmRleD12KSx0aGlzLmlzUmV2ZXJzZWQ9YS5jb25maWcueWF4aXNbdGhpcy55YXhpc0luZGV4XSYmYS5jb25maWcueWF4aXNbdGhpcy55YXhpc0luZGV4XS5yZXZlcnNlZDt2YXIgUz10aGlzLmJhckhlbHBlcnMuaW5pdGlhbFBvc2l0aW9ucygpO3A9Uy55LGs9Uy5iYXJIZWlnaHQsYz1TLnlEaXZpc2lvbixnPVMuemVyb1csdT1TLngsQT1TLmJhcldpZHRoLGg9Uy54RGl2aXNpb24sZD1TLnplcm9ILHRoaXMuaG9yaXpvbnRhbHx8Yi5wdXNoKHUrQS8yKTtmb3IodmFyIEM9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGFsYWJlbHNcIixcImRhdGE6cmVhbEluZGV4XCI6dn0pLEw9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWJhci1nb2Fscy1tYXJrZXJzXCIsc3R5bGU6XCJwb2ludGVyLWV2ZW50czogbm9uZVwifSksUD0wO1A8YS5nbG9iYWxzLmRhdGFQb2ludHM7UCsrKXt2YXIgST10aGlzLmJhckhlbHBlcnMuZ2V0U3Ryb2tlV2lkdGgobixQLHYpLFQ9bnVsbCxNPXtpbmRleGVzOntpOm4sajpQLHJlYWxJbmRleDp2LGJjOmx9LHg6dSx5OnAsc3Ryb2tlV2lkdGg6SSxlbFNlcmllczp3fTt0aGlzLmlzSG9yaXpvbnRhbD8oVD10aGlzLmRyYXdCYXJQYXRocyhlKGUoe30sTSkse30se2JhckhlaWdodDprLHplcm9XOmcseURpdmlzaW9uOmN9KSksQT10aGlzLnNlcmllc1tuXVtQXS90aGlzLmludmVydGVkWVJhdGlvKTooVD10aGlzLmRyYXdDb2x1bW5QYXRocyhlKGUoe30sTSkse30se3hEaXZpc2lvbjpoLGJhcldpZHRoOkEsemVyb0g6ZH0pKSxrPXRoaXMuc2VyaWVzW25dW1BdL3RoaXMueVJhdGlvW3RoaXMueWF4aXNJbmRleF0pO3ZhciBYPXRoaXMuYmFySGVscGVycy5kcmF3R29hbExpbmUoe2JhclhQb3NpdGlvbjpULmJhclhQb3NpdGlvbixiYXJZUG9zaXRpb246VC5iYXJZUG9zaXRpb24sZ29hbFg6VC5nb2FsWCxnb2FsWTpULmdvYWxZLGJhckhlaWdodDprLGJhcldpZHRoOkF9KTtYJiZMLmFkZChYKSxwPVQueSx1PVQueCxQPjAmJmIucHVzaCh1K0EvMiksZi5wdXNoKHApO3ZhciB6PXRoaXMuYmFySGVscGVycy5nZXRQYXRoRmlsbENvbG9yKHQsbixQLHYpO3RoaXMucmVuZGVyU2VyaWVzKHtyZWFsSW5kZXg6dixwYXRoRmlsbDp6LGo6UCxpOm4scGF0aEZyb206VC5wYXRoRnJvbSxwYXRoVG86VC5wYXRoVG8sc3Ryb2tlV2lkdGg6SSxlbFNlcmllczp3LHg6dSx5OnAsc2VyaWVzOnQsYmFySGVpZ2h0OlQuYmFySGVpZ2h0P1QuYmFySGVpZ2h0OmssYmFyV2lkdGg6VC5iYXJXaWR0aD9ULmJhcldpZHRoOkEsZWxEYXRhTGFiZWxzV3JhcDpDLGVsR29hbHNNYXJrZXJzOkwsdmlzaWJsZVNlcmllczp0aGlzLnZpc2libGVJLHR5cGU6XCJiYXJcIn0pfWEuZ2xvYmFscy5zZXJpZXNYdmFsdWVzW3ZdPWIsYS5nbG9iYWxzLnNlcmllc1l2YWx1ZXNbdl09ZixvLmFkZCh3KX1yZXR1cm4gb319LHtrZXk6XCJyZW5kZXJTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LnJlYWxJbmRleCxpPXQucGF0aEZpbGwsYT10LmxpbmVGaWxsLHM9dC5qLHI9dC5pLG89dC5ncm91cEluZGV4LG49dC5wYXRoRnJvbSxsPXQucGF0aFRvLGg9dC5zdHJva2VXaWR0aCxjPXQuZWxTZXJpZXMsZD10LngsZz10LnksdT10LnkxLHA9dC55MixmPXQuc2VyaWVzLHg9dC5iYXJIZWlnaHQsYj10LmJhcldpZHRoLHk9dC5iYXJZUG9zaXRpb24sdz10LmVsRGF0YUxhYmVsc1dyYXAsaz10LmVsR29hbHNNYXJrZXJzLEE9dC52aXNpYmxlU2VyaWVzLFM9dC50eXBlLEM9dGhpcy53LEw9bmV3IG0odGhpcy5jdHgpO2F8fChhPXRoaXMuYmFyT3B0aW9ucy5kaXN0cmlidXRlZD9DLmdsb2JhbHMuc3Ryb2tlLmNvbG9yc1tzXTpDLmdsb2JhbHMuc3Ryb2tlLmNvbG9yc1tlXSksQy5jb25maWcuc2VyaWVzW3JdLmRhdGFbc10mJkMuY29uZmlnLnNlcmllc1tyXS5kYXRhW3NdLnN0cm9rZUNvbG9yJiYoYT1DLmNvbmZpZy5zZXJpZXNbcl0uZGF0YVtzXS5zdHJva2VDb2xvciksdGhpcy5pc051bGxWYWx1ZSYmKGk9XCJub25lXCIpO3ZhciBQPXMvQy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5hbmltYXRlR3JhZHVhbGx5LmRlbGF5KihDLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLnNwZWVkL0MuZ2xvYmFscy5kYXRhUG9pbnRzKS8yLjQsST1MLnJlbmRlclBhdGhzKHtpOnIsajpzLHJlYWxJbmRleDplLHBhdGhGcm9tOm4scGF0aFRvOmwsc3Ryb2tlOmEsc3Ryb2tlV2lkdGg6aCxzdHJva2VMaW5lQ2FwOkMuY29uZmlnLnN0cm9rZS5saW5lQ2FwLGZpbGw6aSxhbmltYXRpb25EZWxheTpQLGluaXRpYWxTcGVlZDpDLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLnNwZWVkLGRhdGFDaGFuZ2VTcGVlZDpDLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uc3BlZWQsY2xhc3NOYW1lOlwiYXBleGNoYXJ0cy1cIi5jb25jYXQoUyxcIi1hcmVhXCIpfSk7SS5hdHRyKFwiY2xpcC1wYXRoXCIsXCJ1cmwoI2dyaWRSZWN0TWFza1wiLmNvbmNhdChDLmdsb2JhbHMuY3VpZCxcIilcIikpO3ZhciBUPUMuY29uZmlnLmZvcmVjYXN0RGF0YVBvaW50cztULmNvdW50PjAmJnM+PUMuZ2xvYmFscy5kYXRhUG9pbnRzLVQuY291bnQmJihJLm5vZGUuc2V0QXR0cmlidXRlKFwic3Ryb2tlLWRhc2hhcnJheVwiLFQuZGFzaEFycmF5KSxJLm5vZGUuc2V0QXR0cmlidXRlKFwic3Ryb2tlLXdpZHRoXCIsVC5zdHJva2VXaWR0aCksSS5ub2RlLnNldEF0dHJpYnV0ZShcImZpbGwtb3BhY2l0eVwiLFQuZmlsbE9wYWNpdHkpKSx2b2lkIDAhPT11JiZ2b2lkIDAhPT1wJiYoSS5hdHRyKFwiZGF0YS1yYW5nZS15MVwiLHUpLEkuYXR0cihcImRhdGEtcmFuZ2UteTJcIixwKSksbmV3IHYodGhpcy5jdHgpLnNldFNlbGVjdGlvbkZpbHRlcihJLGUscyksYy5hZGQoSSk7dmFyIE09bmV3IHZ0KHRoaXMpLmhhbmRsZUJhckRhdGFMYWJlbHMoe3g6ZCx5OmcseTE6dSx5MjpwLGk6cixqOnMsc2VyaWVzOmYscmVhbEluZGV4OmUsZ3JvdXBJbmRleDpvLGJhckhlaWdodDp4LGJhcldpZHRoOmIsYmFyWVBvc2l0aW9uOnkscmVuZGVyZWRQYXRoOkksdmlzaWJsZVNlcmllczpBfSk7cmV0dXJuIG51bGwhPT1NLmRhdGFMYWJlbHMmJncuYWRkKE0uZGF0YUxhYmVscyksTS50b3RhbERhdGFMYWJlbHMmJncuYWRkKE0udG90YWxEYXRhTGFiZWxzKSxjLmFkZCh3KSxrJiZjLmFkZChrKSxjfX0se2tleTpcImRyYXdCYXJQYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGk9dC5pbmRleGVzLGE9dC5iYXJIZWlnaHQscz10LnN0cm9rZVdpZHRoLHI9dC56ZXJvVyxvPXQueCxuPXQueSxsPXQueURpdmlzaW9uLGg9dC5lbFNlcmllcyxjPXRoaXMudyxkPWkuaSxnPWkuajtpZihjLmdsb2JhbHMuaXNYTnVtZXJpYyllPShuPShjLmdsb2JhbHMuc2VyaWVzWFtkXVtnXS1jLmdsb2JhbHMubWluWCkvdGhpcy5pbnZlcnRlZFhSYXRpby1hKSthKnRoaXMudmlzaWJsZUk7ZWxzZSBpZihjLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuaGlkZVplcm9CYXJzV2hlbkdyb3VwZWQpe3ZhciB1PTAscD0wO2MuZ2xvYmFscy5zZXJpZXNQZXJjZW50LmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dFtnXSYmdSsrLGU8ZCYmMD09PXRbZ10mJnArK30pKSx1PjAmJihhPXRoaXMuc2VyaWVzTGVuKmEvdSksZT1uK2EqdGhpcy52aXNpYmxlSSxlLT1hKnB9ZWxzZSBlPW4rYSp0aGlzLnZpc2libGVJO289dGhpcy5iYXJIZWxwZXJzLmdldFhGb3JWYWx1ZSh0aGlzLnNlcmllc1tkXVtnXSxyKTt2YXIgZj10aGlzLmJhckhlbHBlcnMuZ2V0QmFycGF0aHMoe2JhcllQb3NpdGlvbjplLGJhckhlaWdodDphLHgxOnIseDI6byxzdHJva2VXaWR0aDpzLHNlcmllczp0aGlzLnNlcmllcyxyZWFsSW5kZXg6aS5yZWFsSW5kZXgsaTpkLGo6Zyx3OmN9KTtyZXR1cm4gYy5nbG9iYWxzLmlzWE51bWVyaWN8fChuKz1sKSx0aGlzLmJhckhlbHBlcnMuYmFyQmFja2dyb3VuZCh7ajpnLGk6ZCx5MTplLWEqdGhpcy52aXNpYmxlSSx5MjphKnRoaXMuc2VyaWVzTGVuLGVsU2VyaWVzOmh9KSx7cGF0aFRvOmYucGF0aFRvLHBhdGhGcm9tOmYucGF0aEZyb20seDpvLHk6bixnb2FsWDp0aGlzLmJhckhlbHBlcnMuZ2V0R29hbFZhbHVlcyhcInhcIixyLG51bGwsZCxnKSxiYXJZUG9zaXRpb246ZSxiYXJIZWlnaHQ6YX19fSx7a2V5OlwiZHJhd0NvbHVtblBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaT10LmluZGV4ZXMsYT10Lngscz10Lnkscj10LnhEaXZpc2lvbixvPXQuYmFyV2lkdGgsbj10Lnplcm9ILGw9dC5zdHJva2VXaWR0aCxoPXQuZWxTZXJpZXMsYz10aGlzLncsZD1pLnJlYWxJbmRleCxnPWkuaSx1PWkuaixwPWkuYmM7aWYoYy5nbG9iYWxzLmlzWE51bWVyaWMpe3ZhciBmPWQ7Yy5nbG9iYWxzLnNlcmllc1hbZF0ubGVuZ3RofHwoZj1jLmdsb2JhbHMubWF4VmFsc0luQXJyYXlJbmRleCksYy5nbG9iYWxzLnNlcmllc1hbZl1bdV0mJihhPShjLmdsb2JhbHMuc2VyaWVzWFtmXVt1XS1jLmdsb2JhbHMubWluWCkvdGhpcy54UmF0aW8tbyp0aGlzLnNlcmllc0xlbi8yKSxlPWErbyp0aGlzLnZpc2libGVJfWVsc2UgaWYoYy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmhpZGVaZXJvQmFyc1doZW5Hcm91cGVkKXt2YXIgeD0wLGI9MDtjLmdsb2JhbHMuc2VyaWVzUGVyY2VudC5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3RbdV0mJngrKyxlPGcmJjA9PT10W3VdJiZiKyt9KSkseD4wJiYobz10aGlzLnNlcmllc0xlbipvL3gpLGU9YStvKnRoaXMudmlzaWJsZUksZS09bypifWVsc2UgZT1hK28qdGhpcy52aXNpYmxlSTtzPXRoaXMuYmFySGVscGVycy5nZXRZRm9yVmFsdWUodGhpcy5zZXJpZXNbZ11bdV0sbik7dmFyIHY9dGhpcy5iYXJIZWxwZXJzLmdldENvbHVtblBhdGhzKHtiYXJYUG9zaXRpb246ZSxiYXJXaWR0aDpvLHkxOm4seTI6cyxzdHJva2VXaWR0aDpsLHNlcmllczp0aGlzLnNlcmllcyxyZWFsSW5kZXg6aS5yZWFsSW5kZXgsaTpnLGo6dSx3OmN9KTtyZXR1cm4gYy5nbG9iYWxzLmlzWE51bWVyaWN8fChhKz1yKSx0aGlzLmJhckhlbHBlcnMuYmFyQmFja2dyb3VuZCh7YmM6cCxqOnUsaTpnLHgxOmUtbC8yLW8qdGhpcy52aXNpYmxlSSx4MjpvKnRoaXMuc2VyaWVzTGVuK2wvMixlbFNlcmllczpofSkse3BhdGhUbzp2LnBhdGhUbyxwYXRoRnJvbTp2LnBhdGhGcm9tLHg6YSx5OnMsZ29hbFk6dGhpcy5iYXJIZWxwZXJzLmdldEdvYWxWYWx1ZXMoXCJ5XCIsbnVsbCxuLGcsdSksYmFyWFBvc2l0aW9uOmUsYmFyV2lkdGg6b319fSx7a2V5OlwiZ2V0UHJldmlvdXNQYXRoXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtmb3IodmFyIGksYT10aGlzLncscz0wO3M8YS5nbG9iYWxzLnByZXZpb3VzUGF0aHMubGVuZ3RoO3MrKyl7dmFyIHI9YS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbc107ci5wYXRocyYmci5wYXRocy5sZW5ndGg+MCYmcGFyc2VJbnQoci5yZWFsSW5kZXgsMTApPT09cGFyc2VJbnQodCwxMCkmJnZvaWQgMCE9PWEuZ2xvYmFscy5wcmV2aW91c1BhdGhzW3NdLnBhdGhzW2VdJiYoaT1hLmdsb2JhbHMucHJldmlvdXNQYXRoc1tzXS5wYXRoc1tlXS5kKX1yZXR1cm4gaX19XSksdH0oKSx3dD1mdW5jdGlvbih0KXtuKHMseXQpO3ZhciBpPWQocyk7ZnVuY3Rpb24gcygpe3JldHVybiBhKHRoaXMscyksaS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHIocyxbe2tleTpcImRyYXdcIix2YWx1ZTpmdW5jdGlvbih0LGkpe3ZhciBhPXRoaXMscz10aGlzLnc7dGhpcy5ncmFwaGljcz1uZXcgbSh0aGlzLmN0eCksdGhpcy5iYXI9bmV3IHl0KHRoaXMuY3R4LHRoaXMueHlSYXRpb3MpO3ZhciByPW5ldyB5KHRoaXMuY3R4LHMpO3Q9ci5nZXRMb2dTZXJpZXModCksdGhpcy55UmF0aW89ci5nZXRMb2dZUmF0aW9zKHRoaXMueVJhdGlvKSx0aGlzLmJhckhlbHBlcnMuaW5pdFZhcmlhYmxlcyh0KSxcIjEwMCVcIj09PXMuY29uZmlnLmNoYXJ0LnN0YWNrVHlwZSYmKHQ9cy5nbG9iYWxzLnNlcmllc1BlcmNlbnQuc2xpY2UoKSksdGhpcy5zZXJpZXM9dCx0aGlzLmJhckhlbHBlcnMuaW5pdGlhbGl6ZVN0YWNrZWRQcmV2VmFycyh0aGlzKTtmb3IodmFyIG89dGhpcy5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWJhci1zZXJpZXMgYXBleGNoYXJ0cy1wbG90LXNlcmllc1wifSksbj0wLGw9MCxoPWZ1bmN0aW9uKHIsaCl7dmFyIGM9dm9pZCAwLGQ9dm9pZCAwLGc9dm9pZCAwLHU9dm9pZCAwLHA9LTE7YS5ncm91cEN0eD1hLHMuZ2xvYmFscy5zZXJpZXNHcm91cHMuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0LmluZGV4T2Yocy5jb25maWcuc2VyaWVzW3JdLm5hbWUpPi0xJiYocD1lKX0pKSwtMSE9PXAmJihhLmdyb3VwQ3R4PWFbcy5nbG9iYWxzLnNlcmllc0dyb3Vwc1twXV0pO3ZhciBmPVtdLGI9W10sdj1zLmdsb2JhbHMuY29tYm9DaGFydHM/aVtyXTpyO2EueVJhdGlvLmxlbmd0aD4xJiYoYS55YXhpc0luZGV4PXYpLGEuaXNSZXZlcnNlZD1zLmNvbmZpZy55YXhpc1thLnlheGlzSW5kZXhdJiZzLmNvbmZpZy55YXhpc1thLnlheGlzSW5kZXhdLnJldmVyc2VkO3ZhciBtPWEuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXNcIixzZXJpZXNOYW1lOnguZXNjYXBlU3RyaW5nKHMuZ2xvYmFscy5zZXJpZXNOYW1lc1t2XSkscmVsOnIrMSxcImRhdGE6cmVhbEluZGV4XCI6dn0pO2EuY3R4LnNlcmllcy5hZGRDb2xsYXBzZWRDbGFzc1RvU2VyaWVzKG0sdik7dmFyIHk9YS5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGFsYWJlbHNcIixcImRhdGE6cmVhbEluZGV4XCI6dn0pLHc9YS5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWJhci1nb2Fscy1tYXJrZXJzXCIsc3R5bGU6XCJwb2ludGVyLWV2ZW50czogbm9uZVwifSksaz0wLEE9MCxTPWEuaW5pdGlhbFBvc2l0aW9ucyhuLGwsYyxkLGcsdSk7bD1TLnksaz1TLmJhckhlaWdodCxkPVMueURpdmlzaW9uLHU9Uy56ZXJvVyxuPVMueCxBPVMuYmFyV2lkdGgsYz1TLnhEaXZpc2lvbixnPVMuemVyb0gsYS5iYXJIZWxwZXJzLmluaXRpYWxpemVTdGFja2VkWFlWYXJzKGEpLDE9PT1hLmdyb3VwQ3R4LnByZXZZLmxlbmd0aCYmYS5ncm91cEN0eC5wcmV2WVswXS5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIGlzTmFOKHQpfSkpJiYoYS5ncm91cEN0eC5wcmV2WVswXT1hLmdyb3VwQ3R4LnByZXZZWzBdLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGd9KSksYS5ncm91cEN0eC5wcmV2WUZbMF09YS5ncm91cEN0eC5wcmV2WUZbMF0ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gMH0pKSk7Zm9yKHZhciBDPTA7QzxzLmdsb2JhbHMuZGF0YVBvaW50cztDKyspe3ZhciBMPWEuYmFySGVscGVycy5nZXRTdHJva2VXaWR0aChyLEMsdiksUD17aW5kZXhlczp7aTpyLGo6QyxyZWFsSW5kZXg6dixiYzpofSxzdHJva2VXaWR0aDpMLHg6bix5OmwsZWxTZXJpZXM6bSxncm91cEluZGV4OnAsc2VyaWVzR3JvdXA6cy5nbG9iYWxzLnNlcmllc0dyb3Vwc1twXX0sST1udWxsO2EuaXNIb3Jpem9udGFsPyhJPWEuZHJhd1N0YWNrZWRCYXJQYXRocyhlKGUoe30sUCkse30se3plcm9XOnUsYmFySGVpZ2h0OmsseURpdmlzaW9uOmR9KSksQT1hLnNlcmllc1tyXVtDXS9hLmludmVydGVkWVJhdGlvKTooST1hLmRyYXdTdGFja2VkQ29sdW1uUGF0aHMoZShlKHt9LFApLHt9LHt4RGl2aXNpb246YyxiYXJXaWR0aDpBLHplcm9IOmd9KSksaz1hLnNlcmllc1tyXVtDXS9hLnlSYXRpb1thLnlheGlzSW5kZXhdKTt2YXIgVD1hLmJhckhlbHBlcnMuZHJhd0dvYWxMaW5lKHtiYXJYUG9zaXRpb246SS5iYXJYUG9zaXRpb24sYmFyWVBvc2l0aW9uOkkuYmFyWVBvc2l0aW9uLGdvYWxYOkkuZ29hbFgsZ29hbFk6SS5nb2FsWSxiYXJIZWlnaHQ6ayxiYXJXaWR0aDpBfSk7VCYmdy5hZGQoVCksbD1JLnksbj1JLngsZi5wdXNoKG4pLGIucHVzaChsKTt2YXIgTT1hLmJhckhlbHBlcnMuZ2V0UGF0aEZpbGxDb2xvcih0LHIsQyx2KTttPWEucmVuZGVyU2VyaWVzKHtyZWFsSW5kZXg6dixwYXRoRmlsbDpNLGo6QyxpOnIsZ3JvdXBJbmRleDpwLHBhdGhGcm9tOkkucGF0aEZyb20scGF0aFRvOkkucGF0aFRvLHN0cm9rZVdpZHRoOkwsZWxTZXJpZXM6bSx4Om4seTpsLHNlcmllczp0LGJhckhlaWdodDprLGJhcldpZHRoOkEsZWxEYXRhTGFiZWxzV3JhcDp5LGVsR29hbHNNYXJrZXJzOncsdHlwZTpcImJhclwiLHZpc2libGVTZXJpZXM6MH0pfXMuZ2xvYmFscy5zZXJpZXNYdmFsdWVzW3ZdPWYscy5nbG9iYWxzLnNlcmllc1l2YWx1ZXNbdl09YixhLmdyb3VwQ3R4LnByZXZZLnB1c2goYS5ncm91cEN0eC55QXJyaiksYS5ncm91cEN0eC5wcmV2WUYucHVzaChhLmdyb3VwQ3R4LnlBcnJqRiksYS5ncm91cEN0eC5wcmV2WVZhbC5wdXNoKGEuZ3JvdXBDdHgueUFycmpWYWwpLGEuZ3JvdXBDdHgucHJldlgucHVzaChhLmdyb3VwQ3R4LnhBcnJqKSxhLmdyb3VwQ3R4LnByZXZYRi5wdXNoKGEuZ3JvdXBDdHgueEFycmpGKSxhLmdyb3VwQ3R4LnByZXZYVmFsLnB1c2goYS5ncm91cEN0eC54QXJyalZhbCksby5hZGQobSl9LGM9MCxkPTA7Yzx0Lmxlbmd0aDtjKyssZCsrKWgoYyxkKTtyZXR1cm4gb319LHtrZXk6XCJpbml0aWFsUG9zaXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSxzLHIpe3ZhciBvLG4sbCxoLGM9dGhpcy53O3RoaXMuaXNIb3Jpem9udGFsPyhvPShvPWE9Yy5nbG9iYWxzLmdyaWRIZWlnaHQvYy5nbG9iYWxzLmRhdGFQb2ludHMpKnBhcnNlSW50KGMuY29uZmlnLnBsb3RPcHRpb25zLmJhci5iYXJIZWlnaHQsMTApLzEwMCxudWxsIT09KGw9Yy5nbG9iYWxzLnNlcmllc0dyb3VwcykmJnZvaWQgMCE9PWwmJmwubGVuZ3RoJiYoby89Yy5nbG9iYWxzLnNlcmllc0dyb3Vwcy5sZW5ndGgpLC0xPT09U3RyaW5nKGMuY29uZmlnLnBsb3RPcHRpb25zLmJhci5iYXJIZWlnaHQpLmluZGV4T2YoXCIlXCIpJiYobz1wYXJzZUludChjLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuYmFySGVpZ2h0LDEwKSkscj10aGlzLmJhc2VMaW5lSW52ZXJ0ZWRZK2MuZ2xvYmFscy5wYWRIb3Jpem9udGFsKyh0aGlzLmlzUmV2ZXJzZWQ/Yy5nbG9iYWxzLmdyaWRXaWR0aDowKS0odGhpcy5pc1JldmVyc2VkPzIqdGhpcy5iYXNlTGluZUludmVydGVkWTowKSxlPShhLW8pLzIpOihuPWk9Yy5nbG9iYWxzLmdyaWRXaWR0aC9jLmdsb2JhbHMuZGF0YVBvaW50cyxuPWMuZ2xvYmFscy5pc1hOdW1lcmljJiZjLmdsb2JhbHMuZGF0YVBvaW50cz4xPyhpPWMuZ2xvYmFscy5taW5YRGlmZi90aGlzLnhSYXRpbykqcGFyc2VJbnQodGhpcy5iYXJPcHRpb25zLmNvbHVtbldpZHRoLDEwKS8xMDA6bipwYXJzZUludChjLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuY29sdW1uV2lkdGgsMTApLzEwMCxudWxsIT09KGg9Yy5nbG9iYWxzLnNlcmllc0dyb3VwcykmJnZvaWQgMCE9PWgmJmgubGVuZ3RoJiYobi89Yy5nbG9iYWxzLnNlcmllc0dyb3Vwcy5sZW5ndGgpLC0xPT09U3RyaW5nKGMuY29uZmlnLnBsb3RPcHRpb25zLmJhci5jb2x1bW5XaWR0aCkuaW5kZXhPZihcIiVcIikmJihuPXBhcnNlSW50KGMuY29uZmlnLnBsb3RPcHRpb25zLmJhci5jb2x1bW5XaWR0aCwxMCkpLHM9Yy5nbG9iYWxzLmdyaWRIZWlnaHQtdGhpcy5iYXNlTGluZVlbdGhpcy55YXhpc0luZGV4XS0odGhpcy5pc1JldmVyc2VkP2MuZ2xvYmFscy5ncmlkSGVpZ2h0OjApKyh0aGlzLmlzUmV2ZXJzZWQ/Mip0aGlzLmJhc2VMaW5lWVt0aGlzLnlheGlzSW5kZXhdOjApLHQ9Yy5nbG9iYWxzLnBhZEhvcml6b250YWwrKGktbikvMik7cmV0dXJue3g6dCx5OmUseURpdmlzaW9uOmEseERpdmlzaW9uOmksYmFySGVpZ2h0Om8sYmFyV2lkdGg6bix6ZXJvSDpzLHplcm9XOnJ9fX0se2tleTpcImRyYXdTdGFja2VkQmFyUGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGUsaT10LmluZGV4ZXMsYT10LmJhckhlaWdodCxzPXQuc3Ryb2tlV2lkdGgscj10Lnplcm9XLG89dC54LG49dC55LGw9dC5ncm91cEluZGV4LGg9dC5zZXJpZXNHcm91cCxjPXQueURpdmlzaW9uLGQ9dC5lbFNlcmllcyxnPXRoaXMudyx1PW4rKC0xIT09bD9sKmE6MCkscD1pLmksZj1pLmoseD0wLGI9MDtiPHRoaXMuZ3JvdXBDdHgucHJldlhGLmxlbmd0aDtiKyspeCs9dGhpcy5ncm91cEN0eC5wcmV2WEZbYl1bZl07dmFyIHY9cDtpZihoJiYodj1oLmluZGV4T2YoZy5jb25maWcuc2VyaWVzW3BdLm5hbWUpKSx2PjApe3ZhciBtPXI7dGhpcy5ncm91cEN0eC5wcmV2WFZhbFt2LTFdW2ZdPDA/bT10aGlzLnNlcmllc1twXVtmXT49MD90aGlzLmdyb3VwQ3R4LnByZXZYW3YtMV1bZl0reC0yKih0aGlzLmlzUmV2ZXJzZWQ/eDowKTp0aGlzLmdyb3VwQ3R4LnByZXZYW3YtMV1bZl06dGhpcy5ncm91cEN0eC5wcmV2WFZhbFt2LTFdW2ZdPj0wJiYobT10aGlzLnNlcmllc1twXVtmXT49MD90aGlzLmdyb3VwQ3R4LnByZXZYW3YtMV1bZl06dGhpcy5ncm91cEN0eC5wcmV2WFt2LTFdW2ZdLXgrMioodGhpcy5pc1JldmVyc2VkP3g6MCkpLGU9bX1lbHNlIGU9cjtvPW51bGw9PT10aGlzLnNlcmllc1twXVtmXT9lOmUrdGhpcy5zZXJpZXNbcF1bZl0vdGhpcy5pbnZlcnRlZFlSYXRpby0yKih0aGlzLmlzUmV2ZXJzZWQ/dGhpcy5zZXJpZXNbcF1bZl0vdGhpcy5pbnZlcnRlZFlSYXRpbzowKTt2YXIgeT10aGlzLmJhckhlbHBlcnMuZ2V0QmFycGF0aHMoe2JhcllQb3NpdGlvbjp1LGJhckhlaWdodDphLHgxOmUseDI6byxzdHJva2VXaWR0aDpzLHNlcmllczp0aGlzLnNlcmllcyxyZWFsSW5kZXg6aS5yZWFsSW5kZXgsc2VyaWVzR3JvdXA6aCxpOnAsajpmLHc6Z30pO3JldHVybiB0aGlzLmJhckhlbHBlcnMuYmFyQmFja2dyb3VuZCh7ajpmLGk6cCx5MTp1LHkyOmEsZWxTZXJpZXM6ZH0pLG4rPWMse3BhdGhUbzp5LnBhdGhUbyxwYXRoRnJvbTp5LnBhdGhGcm9tLGdvYWxYOnRoaXMuYmFySGVscGVycy5nZXRHb2FsVmFsdWVzKFwieFwiLHIsbnVsbCxwLGYpLGJhcllQb3NpdGlvbjp1LHg6byx5Om59fX0se2tleTpcImRyYXdTdGFja2VkQ29sdW1uUGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmluZGV4ZXMsaT10LngsYT10Lnkscz10LnhEaXZpc2lvbixyPXQuYmFyV2lkdGgsbz10Lnplcm9ILG49dC5ncm91cEluZGV4LGw9dC5zZXJpZXNHcm91cCxoPXQuZWxTZXJpZXMsYz10aGlzLncsZD1lLmksZz1lLmosdT1lLmJjO2lmKGMuZ2xvYmFscy5pc1hOdW1lcmljKXt2YXIgcD1jLmdsb2JhbHMuc2VyaWVzWFtkXVtnXTtwfHwocD0wKSxpPShwLWMuZ2xvYmFscy5taW5YKS90aGlzLnhSYXRpby1yLzIsYy5nbG9iYWxzLnNlcmllc0dyb3Vwcy5sZW5ndGgmJihpPShwLWMuZ2xvYmFscy5taW5YKS90aGlzLnhSYXRpby1yLzIqYy5nbG9iYWxzLnNlcmllc0dyb3Vwcy5sZW5ndGgpfWZvcih2YXIgZix4PWkrKC0xIT09bj9uKnI6MCksYj0wLHY9MDt2PHRoaXMuZ3JvdXBDdHgucHJldllGLmxlbmd0aDt2KyspYis9aXNOYU4odGhpcy5ncm91cEN0eC5wcmV2WUZbdl1bZ10pPzA6dGhpcy5ncm91cEN0eC5wcmV2WUZbdl1bZ107dmFyIG09ZDtpZihsJiYobT1sLmluZGV4T2YoYy5jb25maWcuc2VyaWVzW2RdLm5hbWUpKSxtPjAmJiFjLmdsb2JhbHMuaXNYTnVtZXJpY3x8bT4wJiZjLmdsb2JhbHMuaXNYTnVtZXJpYyYmYy5nbG9iYWxzLnNlcmllc1hbZC0xXVtnXT09PWMuZ2xvYmFscy5zZXJpZXNYW2RdW2ddKXt2YXIgeSx3LGssQT1NYXRoLm1pbih0aGlzLnlSYXRpby5sZW5ndGgrMSxkKzEpO2lmKHZvaWQgMCE9PXRoaXMuZ3JvdXBDdHgucHJldllbbS0xXSYmdGhpcy5ncm91cEN0eC5wcmV2WVttLTFdLmxlbmd0aClmb3IodmFyIFM9MTtTPEE7UysrKXt2YXIgQztpZighaXNOYU4obnVsbD09PShDPXRoaXMuZ3JvdXBDdHgucHJldllbbS1TXSl8fHZvaWQgMD09PUM/dm9pZCAwOkNbZ10pKXtrPXRoaXMuZ3JvdXBDdHgucHJldllbbS1TXVtnXTticmVha319Zm9yKHZhciBMPTE7TDxBO0wrKyl7dmFyIFAsSTtpZigobnVsbD09PShQPXRoaXMuZ3JvdXBDdHgucHJldllWYWxbbS1MXSl8fHZvaWQgMD09PVA/dm9pZCAwOlBbZ10pPDApe3c9dGhpcy5zZXJpZXNbZF1bZ10+PTA/ay1iKzIqKHRoaXMuaXNSZXZlcnNlZD9iOjApOms7YnJlYWt9aWYoKG51bGw9PT0oST10aGlzLmdyb3VwQ3R4LnByZXZZVmFsW20tTF0pfHx2b2lkIDA9PT1JP3ZvaWQgMDpJW2ddKT49MCl7dz10aGlzLnNlcmllc1tkXVtnXT49MD9rOmsrYi0yKih0aGlzLmlzUmV2ZXJzZWQ/YjowKTticmVha319dm9pZCAwPT09dyYmKHc9Yy5nbG9iYWxzLmdyaWRIZWlnaHQpLGY9bnVsbCE9PSh5PXRoaXMuZ3JvdXBDdHgucHJldllGWzBdKSYmdm9pZCAwIT09eSYmeS5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIDA9PT10fSkpJiZ0aGlzLmdyb3VwQ3R4LnByZXZZRi5zbGljZSgxLG0pLmV2ZXJ5KChmdW5jdGlvbih0KXtyZXR1cm4gdC5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIGlzTmFOKHQpfSkpfSkpP286d31lbHNlIGY9bzthPXRoaXMuc2VyaWVzW2RdW2ddP2YtdGhpcy5zZXJpZXNbZF1bZ10vdGhpcy55UmF0aW9bdGhpcy55YXhpc0luZGV4XSsyKih0aGlzLmlzUmV2ZXJzZWQ/dGhpcy5zZXJpZXNbZF1bZ10vdGhpcy55UmF0aW9bdGhpcy55YXhpc0luZGV4XTowKTpmO3ZhciBUPXRoaXMuYmFySGVscGVycy5nZXRDb2x1bW5QYXRocyh7YmFyWFBvc2l0aW9uOngsYmFyV2lkdGg6cix5MTpmLHkyOmEseVJhdGlvOnRoaXMueVJhdGlvW3RoaXMueWF4aXNJbmRleF0sc3Ryb2tlV2lkdGg6dGhpcy5zdHJva2VXaWR0aCxzZXJpZXM6dGhpcy5zZXJpZXMsc2VyaWVzR3JvdXA6bCxyZWFsSW5kZXg6ZS5yZWFsSW5kZXgsaTpkLGo6Zyx3OmN9KTtyZXR1cm4gdGhpcy5iYXJIZWxwZXJzLmJhckJhY2tncm91bmQoe2JjOnUsajpnLGk6ZCx4MTp4LHgyOnIsZWxTZXJpZXM6aH0pLGkrPXMse3BhdGhUbzpULnBhdGhUbyxwYXRoRnJvbTpULnBhdGhGcm9tLGdvYWxZOnRoaXMuYmFySGVscGVycy5nZXRHb2FsVmFsdWVzKFwieVwiLG51bGwsbyxkLGcpLGJhclhQb3NpdGlvbjp4LHg6Yy5nbG9iYWxzLmlzWE51bWVyaWM/aS1zOmkseTphfX19XSksc30oKSxrdD1mdW5jdGlvbih0KXtuKHMseXQpO3ZhciBpPWQocyk7ZnVuY3Rpb24gcygpe3JldHVybiBhKHRoaXMscyksaS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHIocyxbe2tleTpcImRyYXdcIix2YWx1ZTpmdW5jdGlvbih0LGksYSl7dmFyIHM9dGhpcyxyPXRoaXMudyxvPW5ldyBtKHRoaXMuY3R4KSxuPXIuZ2xvYmFscy5jb21ib0NoYXJ0cz9pOnIuY29uZmlnLmNoYXJ0LnR5cGUsbD1uZXcgUih0aGlzLmN0eCk7dGhpcy5jYW5kbGVzdGlja09wdGlvbnM9dGhpcy53LmNvbmZpZy5wbG90T3B0aW9ucy5jYW5kbGVzdGljayx0aGlzLmJveE9wdGlvbnM9dGhpcy53LmNvbmZpZy5wbG90T3B0aW9ucy5ib3hQbG90LHRoaXMuaXNIb3Jpem9udGFsPXIuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ob3Jpem9udGFsO3ZhciBoPW5ldyB5KHRoaXMuY3R4LHIpO3Q9aC5nZXRMb2dTZXJpZXModCksdGhpcy5zZXJpZXM9dCx0aGlzLnlSYXRpbz1oLmdldExvZ1lSYXRpb3ModGhpcy55UmF0aW8pLHRoaXMuYmFySGVscGVycy5pbml0VmFyaWFibGVzKHQpO2Zvcih2YXIgYz1vLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtXCIuY29uY2F0KG4sXCItc2VyaWVzIGFwZXhjaGFydHMtcGxvdC1zZXJpZXNcIil9KSxkPWZ1bmN0aW9uKGkpe3MuaXNCb3hQbG90PVwiYm94UGxvdFwiPT09ci5jb25maWcuY2hhcnQudHlwZXx8XCJib3hQbG90XCI9PT1yLmNvbmZpZy5zZXJpZXNbaV0udHlwZTt2YXIgbixoLGQsZyx1PXZvaWQgMCxwPXZvaWQgMCxmPVtdLGI9W10sdj1yLmdsb2JhbHMuY29tYm9DaGFydHM/YVtpXTppLG09by5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllc1wiLHNlcmllc05hbWU6eC5lc2NhcGVTdHJpbmcoci5nbG9iYWxzLnNlcmllc05hbWVzW3ZdKSxyZWw6aSsxLFwiZGF0YTpyZWFsSW5kZXhcIjp2fSk7cy5jdHguc2VyaWVzLmFkZENvbGxhcHNlZENsYXNzVG9TZXJpZXMobSx2KSx0W2ldLmxlbmd0aD4wJiYocy52aXNpYmxlST1zLnZpc2libGVJKzEpO3ZhciB5LHc7cy55UmF0aW8ubGVuZ3RoPjEmJihzLnlheGlzSW5kZXg9dik7dmFyIGs9cy5iYXJIZWxwZXJzLmluaXRpYWxQb3NpdGlvbnMoKTtwPWsueSx5PWsuYmFySGVpZ2h0LGg9ay55RGl2aXNpb24sZz1rLnplcm9XLHU9ay54LHc9ay5iYXJXaWR0aCxuPWsueERpdmlzaW9uLGQ9ay56ZXJvSCxiLnB1c2godSt3LzIpO2Zvcih2YXIgQT1vLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZGF0YWxhYmVsc1wiLFwiZGF0YTpyZWFsSW5kZXhcIjp2fSksUz1mdW5jdGlvbihhKXt2YXIgbz1zLmJhckhlbHBlcnMuZ2V0U3Ryb2tlV2lkdGgoaSxhLHYpLGM9bnVsbCx4PXtpbmRleGVzOntpOmksajphLHJlYWxJbmRleDp2fSx4OnUseTpwLHN0cm9rZVdpZHRoOm8sZWxTZXJpZXM6bX07Yz1zLmlzSG9yaXpvbnRhbD9zLmRyYXdIb3Jpem9udGFsQm94UGF0aHMoZShlKHt9LHgpLHt9LHt5RGl2aXNpb246aCxiYXJIZWlnaHQ6eSx6ZXJvVzpnfSkpOnMuZHJhd1ZlcnRpY2FsQm94UGF0aHMoZShlKHt9LHgpLHt9LHt4RGl2aXNpb246bixiYXJXaWR0aDp3LHplcm9IOmR9KSkscD1jLnksdT1jLngsYT4wJiZiLnB1c2godSt3LzIpLGYucHVzaChwKSxjLnBhdGhUby5mb3JFYWNoKChmdW5jdGlvbihlLG4pe3ZhciBoPSFzLmlzQm94UGxvdCYmcy5jYW5kbGVzdGlja09wdGlvbnMud2ljay51c2VGaWxsQ29sb3I/Yy5jb2xvcltuXTpyLmdsb2JhbHMuc3Ryb2tlLmNvbG9yc1tpXSxkPWwuZmlsbFBhdGgoe3Nlcmllc051bWJlcjp2LGRhdGFQb2ludEluZGV4OmEsY29sb3I6Yy5jb2xvcltuXSx2YWx1ZTp0W2ldW2FdfSk7cy5yZW5kZXJTZXJpZXMoe3JlYWxJbmRleDp2LHBhdGhGaWxsOmQsbGluZUZpbGw6aCxqOmEsaTppLHBhdGhGcm9tOmMucGF0aEZyb20scGF0aFRvOmUsc3Ryb2tlV2lkdGg6byxlbFNlcmllczptLHg6dSx5OnAsc2VyaWVzOnQsYmFySGVpZ2h0OnksYmFyV2lkdGg6dyxlbERhdGFMYWJlbHNXcmFwOkEsdmlzaWJsZVNlcmllczpzLnZpc2libGVJLHR5cGU6ci5jb25maWcuY2hhcnQudHlwZX0pfSkpfSxDPTA7QzxyLmdsb2JhbHMuZGF0YVBvaW50cztDKyspUyhDKTtyLmdsb2JhbHMuc2VyaWVzWHZhbHVlc1t2XT1iLHIuZ2xvYmFscy5zZXJpZXNZdmFsdWVzW3ZdPWYsYy5hZGQobSl9LGc9MDtnPHQubGVuZ3RoO2crKylkKGcpO3JldHVybiBjfX0se2tleTpcImRyYXdWZXJ0aWNhbEJveFBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5pbmRleGVzLGk9dC54O3QueTt2YXIgYT10LnhEaXZpc2lvbixzPXQuYmFyV2lkdGgscj10Lnplcm9ILG89dC5zdHJva2VXaWR0aCxuPXRoaXMudyxsPW5ldyBtKHRoaXMuY3R4KSxoPWUuaSxjPWUuaixkPSEwLGc9bi5jb25maWcucGxvdE9wdGlvbnMuY2FuZGxlc3RpY2suY29sb3JzLnVwd2FyZCx1PW4uY29uZmlnLnBsb3RPcHRpb25zLmNhbmRsZXN0aWNrLmNvbG9ycy5kb3dud2FyZCxwPVwiXCI7dGhpcy5pc0JveFBsb3QmJihwPVt0aGlzLmJveE9wdGlvbnMuY29sb3JzLmxvd2VyLHRoaXMuYm94T3B0aW9ucy5jb2xvcnMudXBwZXJdKTt2YXIgZj10aGlzLnlSYXRpb1t0aGlzLnlheGlzSW5kZXhdLHg9ZS5yZWFsSW5kZXgsYj10aGlzLmdldE9ITENWYWx1ZSh4LGMpLHY9cix5PXI7Yi5vPmIuYyYmKGQ9ITEpO3ZhciB3PU1hdGgubWluKGIubyxiLmMpLGs9TWF0aC5tYXgoYi5vLGIuYyksQT1iLm07bi5nbG9iYWxzLmlzWE51bWVyaWMmJihpPShuLmdsb2JhbHMuc2VyaWVzWFt4XVtjXS1uLmdsb2JhbHMubWluWCkvdGhpcy54UmF0aW8tcy8yKTt2YXIgUz1pK3MqdGhpcy52aXNpYmxlSTt2b2lkIDA9PT10aGlzLnNlcmllc1toXVtjXXx8bnVsbD09PXRoaXMuc2VyaWVzW2hdW2NdPyh3PXIsaz1yKToodz1yLXcvZixrPXItay9mLHY9ci1iLmgvZix5PXItYi5sL2YsQT1yLWIubS9mKTt2YXIgQz1sLm1vdmUoUyxyKSxMPWwubW92ZShTK3MvMix3KTtyZXR1cm4gbi5nbG9iYWxzLnByZXZpb3VzUGF0aHMubGVuZ3RoPjAmJihMPXRoaXMuZ2V0UHJldmlvdXNQYXRoKHgsYywhMCkpLEM9dGhpcy5pc0JveFBsb3Q/W2wubW92ZShTLHcpK2wubGluZShTK3MvMix3KStsLmxpbmUoUytzLzIsdikrbC5saW5lKFMrcy80LHYpK2wubGluZShTK3Mtcy80LHYpK2wubGluZShTK3MvMix2KStsLmxpbmUoUytzLzIsdykrbC5saW5lKFMrcyx3KStsLmxpbmUoUytzLEEpK2wubGluZShTLEEpK2wubGluZShTLHcrby8yKSxsLm1vdmUoUyxBKStsLmxpbmUoUytzLEEpK2wubGluZShTK3MsaykrbC5saW5lKFMrcy8yLGspK2wubGluZShTK3MvMix5KStsLmxpbmUoUytzLXMvNCx5KStsLmxpbmUoUytzLzQseSkrbC5saW5lKFMrcy8yLHkpK2wubGluZShTK3MvMixrKStsLmxpbmUoUyxrKStsLmxpbmUoUyxBKStcInpcIl06W2wubW92ZShTLGspK2wubGluZShTK3MvMixrKStsLmxpbmUoUytzLzIsdikrbC5saW5lKFMrcy8yLGspK2wubGluZShTK3MsaykrbC5saW5lKFMrcyx3KStsLmxpbmUoUytzLzIsdykrbC5saW5lKFMrcy8yLHkpK2wubGluZShTK3MvMix3KStsLmxpbmUoUyx3KStsLmxpbmUoUyxrLW8vMildLEwrPWwubW92ZShTLHcpLG4uZ2xvYmFscy5pc1hOdW1lcmljfHwoaSs9YSkse3BhdGhUbzpDLHBhdGhGcm9tOkwseDppLHk6ayxiYXJYUG9zaXRpb246Uyxjb2xvcjp0aGlzLmlzQm94UGxvdD9wOmQ/W2ddOlt1XX19fSx7a2V5OlwiZHJhd0hvcml6b250YWxCb3hQYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaW5kZXhlczt0Lng7dmFyIGk9dC55LGE9dC55RGl2aXNpb24scz10LmJhckhlaWdodCxyPXQuemVyb1csbz10LnN0cm9rZVdpZHRoLG49dGhpcy53LGw9bmV3IG0odGhpcy5jdHgpLGg9ZS5pLGM9ZS5qLGQ9dGhpcy5ib3hPcHRpb25zLmNvbG9ycy5sb3dlcjt0aGlzLmlzQm94UGxvdCYmKGQ9W3RoaXMuYm94T3B0aW9ucy5jb2xvcnMubG93ZXIsdGhpcy5ib3hPcHRpb25zLmNvbG9ycy51cHBlcl0pO3ZhciBnPXRoaXMuaW52ZXJ0ZWRZUmF0aW8sdT1lLnJlYWxJbmRleCxwPXRoaXMuZ2V0T0hMQ1ZhbHVlKHUsYyksZj1yLHg9cixiPU1hdGgubWluKHAubyxwLmMpLHY9TWF0aC5tYXgocC5vLHAuYykseT1wLm07bi5nbG9iYWxzLmlzWE51bWVyaWMmJihpPShuLmdsb2JhbHMuc2VyaWVzWFt1XVtjXS1uLmdsb2JhbHMubWluWCkvdGhpcy5pbnZlcnRlZFhSYXRpby1zLzIpO3ZhciB3PWkrcyp0aGlzLnZpc2libGVJO3ZvaWQgMD09PXRoaXMuc2VyaWVzW2hdW2NdfHxudWxsPT09dGhpcy5zZXJpZXNbaF1bY10/KGI9cix2PXIpOihiPXIrYi9nLHY9cit2L2csZj1yK3AuaC9nLHg9citwLmwvZyx5PXIrcC5tL2cpO3ZhciBrPWwubW92ZShyLHcpLEE9bC5tb3ZlKGIsdytzLzIpO3JldHVybiBuLmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGg+MCYmKEE9dGhpcy5nZXRQcmV2aW91c1BhdGgodSxjLCEwKSksaz1bbC5tb3ZlKGIsdykrbC5saW5lKGIsdytzLzIpK2wubGluZShmLHcrcy8yKStsLmxpbmUoZix3K3MvMi1zLzQpK2wubGluZShmLHcrcy8yK3MvNCkrbC5saW5lKGYsdytzLzIpK2wubGluZShiLHcrcy8yKStsLmxpbmUoYix3K3MpK2wubGluZSh5LHcrcykrbC5saW5lKHksdykrbC5saW5lKGIrby8yLHcpLGwubW92ZSh5LHcpK2wubGluZSh5LHcrcykrbC5saW5lKHYsdytzKStsLmxpbmUodix3K3MvMikrbC5saW5lKHgsdytzLzIpK2wubGluZSh4LHcrcy1zLzQpK2wubGluZSh4LHcrcy80KStsLmxpbmUoeCx3K3MvMikrbC5saW5lKHYsdytzLzIpK2wubGluZSh2LHcpK2wubGluZSh5LHcpK1wielwiXSxBKz1sLm1vdmUoYix3KSxuLmdsb2JhbHMuaXNYTnVtZXJpY3x8KGkrPWEpLHtwYXRoVG86ayxwYXRoRnJvbTpBLHg6dix5OmksYmFyWVBvc2l0aW9uOncsY29sb3I6ZH19fSx7a2V5OlwiZ2V0T0hMQ1ZhbHVlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7cmV0dXJue286dGhpcy5pc0JveFBsb3Q/aS5nbG9iYWxzLnNlcmllc0NhbmRsZUhbdF1bZV06aS5nbG9iYWxzLnNlcmllc0NhbmRsZU9bdF1bZV0saDp0aGlzLmlzQm94UGxvdD9pLmdsb2JhbHMuc2VyaWVzQ2FuZGxlT1t0XVtlXTppLmdsb2JhbHMuc2VyaWVzQ2FuZGxlSFt0XVtlXSxtOmkuZ2xvYmFscy5zZXJpZXNDYW5kbGVNW3RdW2VdLGw6dGhpcy5pc0JveFBsb3Q/aS5nbG9iYWxzLnNlcmllc0NhbmRsZUNbdF1bZV06aS5nbG9iYWxzLnNlcmllc0NhbmRsZUxbdF1bZV0sYzp0aGlzLmlzQm94UGxvdD9pLmdsb2JhbHMuc2VyaWVzQ2FuZGxlTFt0XVtlXTppLmdsb2JhbHMuc2VyaWVzQ2FuZGxlQ1t0XVtlXX19fV0pLHN9KCksQXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIHIodCxbe2tleTpcImNoZWNrQ29sb3JSYW5nZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9ITEsaT10LmNvbmZpZy5wbG90T3B0aW9uc1t0LmNvbmZpZy5jaGFydC50eXBlXTtyZXR1cm4gaS5jb2xvclNjYWxlLnJhbmdlcy5sZW5ndGg+MCYmaS5jb2xvclNjYWxlLnJhbmdlcy5tYXAoKGZ1bmN0aW9uKHQsaSl7dC5mcm9tPD0wJiYoZT0hMCl9KSksZX19LHtrZXk6XCJnZXRTaGFkZUNvbG9yXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSl7dmFyIHM9dGhpcy53LHI9MSxvPXMuY29uZmlnLnBsb3RPcHRpb25zW3RdLnNoYWRlSW50ZW5zaXR5LG49dGhpcy5kZXRlcm1pbmVDb2xvcih0LGUsaSk7cy5nbG9iYWxzLmhhc05lZ3N8fGE/cj1zLmNvbmZpZy5wbG90T3B0aW9uc1t0XS5yZXZlcnNlTmVnYXRpdmVTaGFkZT9uLnBlcmNlbnQ8MD9uLnBlcmNlbnQvMTAwKigxLjI1Km8pOigxLW4ucGVyY2VudC8xMDApKigxLjI1Km8pOm4ucGVyY2VudDw9MD8xLSgxK24ucGVyY2VudC8xMDApKm86KDEtbi5wZXJjZW50LzEwMCkqbzoocj0xLW4ucGVyY2VudC8xMDAsXCJ0cmVlbWFwXCI9PT10JiYocj0oMS1uLnBlcmNlbnQvMTAwKSooMS4yNSpvKSkpO3ZhciBsPW4uY29sb3IsaD1uZXcgeDtyZXR1cm4gcy5jb25maWcucGxvdE9wdGlvbnNbdF0uZW5hYmxlU2hhZGVzJiYobD1cImRhcmtcIj09PXRoaXMudy5jb25maWcudGhlbWUubW9kZT94LmhleFRvUmdiYShoLnNoYWRlQ29sb3IoLTEqcixuLmNvbG9yKSxzLmNvbmZpZy5maWxsLm9wYWNpdHkpOnguaGV4VG9SZ2JhKGguc2hhZGVDb2xvcihyLG4uY29sb3IpLHMuY29uZmlnLmZpbGwub3BhY2l0eSkpLHtjb2xvcjpsLGNvbG9yUHJvcHM6bn19fSx7a2V5OlwiZGV0ZXJtaW5lQ29sb3JcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy53LHM9YS5nbG9iYWxzLnNlcmllc1tlXVtpXSxyPWEuY29uZmlnLnBsb3RPcHRpb25zW3RdLG89ci5jb2xvclNjYWxlLmludmVyc2U/aTplO3IuZGlzdHJpYnV0ZWQmJlwidHJlZW1hcFwiPT09YS5jb25maWcuY2hhcnQudHlwZSYmKG89aSk7dmFyIG49YS5nbG9iYWxzLmNvbG9yc1tvXSxsPW51bGwsaD1NYXRoLm1pbi5hcHBseShNYXRoLHUoYS5nbG9iYWxzLnNlcmllc1tlXSkpLGM9TWF0aC5tYXguYXBwbHkoTWF0aCx1KGEuZ2xvYmFscy5zZXJpZXNbZV0pKTtyLmRpc3RyaWJ1dGVkfHxcImhlYXRtYXBcIiE9PXR8fChoPWEuZ2xvYmFscy5taW5ZLGM9YS5nbG9iYWxzLm1heFkpLHZvaWQgMCE9PXIuY29sb3JTY2FsZS5taW4mJihoPXIuY29sb3JTY2FsZS5taW48YS5nbG9iYWxzLm1pblk/ci5jb2xvclNjYWxlLm1pbjphLmdsb2JhbHMubWluWSxjPXIuY29sb3JTY2FsZS5tYXg+YS5nbG9iYWxzLm1heFk/ci5jb2xvclNjYWxlLm1heDphLmdsb2JhbHMubWF4WSk7dmFyIGQ9TWF0aC5hYnMoYykrTWF0aC5hYnMoaCksZz0xMDAqcy8oMD09PWQ/ZC0xZS02OmQpO3IuY29sb3JTY2FsZS5yYW5nZXMubGVuZ3RoPjAmJnIuY29sb3JTY2FsZS5yYW5nZXMubWFwKChmdW5jdGlvbih0LGUpe2lmKHM+PXQuZnJvbSYmczw9dC50byl7bj10LmNvbG9yLGw9dC5mb3JlQ29sb3I/dC5mb3JlQ29sb3I6bnVsbCxoPXQuZnJvbSxjPXQudG87dmFyIGk9TWF0aC5hYnMoYykrTWF0aC5hYnMoaCk7Zz0xMDAqcy8oMD09PWk/aS0xZS02OmkpfX0pKTtyZXR1cm57Y29sb3I6bixmb3JlQ29sb3I6bCxwZXJjZW50Omd9fX0se2tleTpcImNhbGN1bGF0ZURhdGFMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LnRleHQsaT10LngsYT10Lnkscz10Lmkscj10Lmosbz10LmNvbG9yUHJvcHMsbj10LmZvbnRTaXplLGw9dGhpcy53LmNvbmZpZy5kYXRhTGFiZWxzLGg9bmV3IG0odGhpcy5jdHgpLGM9bmV3IE8odGhpcy5jdHgpLGQ9bnVsbDtpZihsLmVuYWJsZWQpe2Q9aC5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGEtbGFiZWxzXCJ9KTt2YXIgZz1sLm9mZnNldFgsdT1sLm9mZnNldFkscD1pK2csZj1hK3BhcnNlRmxvYXQobC5zdHlsZS5mb250U2l6ZSkvMyt1O2MucGxvdERhdGFMYWJlbHNUZXh0KHt4OnAseTpmLHRleHQ6ZSxpOnMsajpyLGNvbG9yOm8uZm9yZUNvbG9yLHBhcmVudDpkLGZvbnRTaXplOm4sZGF0YUxhYmVsc0NvbmZpZzpsfSl9cmV0dXJuIGR9fSx7a2V5OlwiYWRkTGlzdGVuZXJzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9bmV3IG0odGhpcy5jdHgpO3Qubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VlbnRlclwiLGUucGF0aE1vdXNlRW50ZXIuYmluZCh0aGlzLHQpKSx0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIixlLnBhdGhNb3VzZUxlYXZlLmJpbmQodGhpcyx0KSksdC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIixlLnBhdGhNb3VzZURvd24uYmluZCh0aGlzLHQpKX19XSksdH0oKSxTdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxpKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMueFJhdGlvPWkueFJhdGlvLHRoaXMueVJhdGlvPWkueVJhdGlvLHRoaXMuZHluYW1pY0FuaW09dGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24sdGhpcy5oZWxwZXJzPW5ldyBBdChlKSx0aGlzLnJlY3RSYWRpdXM9dGhpcy53LmNvbmZpZy5wbG90T3B0aW9ucy5oZWF0bWFwLnJhZGl1cyx0aGlzLnN0cm9rZVdpZHRoPXRoaXMudy5jb25maWcuc3Ryb2tlLnNob3c/dGhpcy53LmNvbmZpZy5zdHJva2Uud2lkdGg6MH1yZXR1cm4gcih0LFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPW5ldyBtKHRoaXMuY3R4KSxhPWkuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1oZWF0bWFwXCJ9KTthLmF0dHIoXCJjbGlwLXBhdGhcIixcInVybCgjZ3JpZFJlY3RNYXNrXCIuY29uY2F0KGUuZ2xvYmFscy5jdWlkLFwiKVwiKSk7dmFyIHM9ZS5nbG9iYWxzLmdyaWRXaWR0aC9lLmdsb2JhbHMuZGF0YVBvaW50cyxyPWUuZ2xvYmFscy5ncmlkSGVpZ2h0L2UuZ2xvYmFscy5zZXJpZXMubGVuZ3RoLG89MCxuPSExO3RoaXMubmVnUmFuZ2U9dGhpcy5oZWxwZXJzLmNoZWNrQ29sb3JSYW5nZSgpO3ZhciBsPXQuc2xpY2UoKTtlLmNvbmZpZy55YXhpc1swXS5yZXZlcnNlZCYmKG49ITAsbC5yZXZlcnNlKCkpO2Zvcih2YXIgaD1uPzA6bC5sZW5ndGgtMTtuP2g8bC5sZW5ndGg6aD49MDtuP2grKzpoLS0pe3ZhciBjPWkuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXMgYXBleGNoYXJ0cy1oZWF0bWFwLXNlcmllc1wiLHNlcmllc05hbWU6eC5lc2NhcGVTdHJpbmcoZS5nbG9iYWxzLnNlcmllc05hbWVzW2hdKSxyZWw6aCsxLFwiZGF0YTpyZWFsSW5kZXhcIjpofSk7aWYodGhpcy5jdHguc2VyaWVzLmFkZENvbGxhcHNlZENsYXNzVG9TZXJpZXMoYyxoKSxlLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWQpe3ZhciBkPWUuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3c7bmV3IHYodGhpcy5jdHgpLmRyb3BTaGFkb3coYyxkLGgpfWZvcih2YXIgZz0wLHU9ZS5jb25maWcucGxvdE9wdGlvbnMuaGVhdG1hcC5zaGFkZUludGVuc2l0eSxwPTA7cDxsW2hdLmxlbmd0aDtwKyspe3ZhciBmPXRoaXMuaGVscGVycy5nZXRTaGFkZUNvbG9yKGUuY29uZmlnLmNoYXJ0LnR5cGUsaCxwLHRoaXMubmVnUmFuZ2UpLGI9Zi5jb2xvcix5PWYuY29sb3JQcm9wcztpZihcImltYWdlXCI9PT1lLmNvbmZpZy5maWxsLnR5cGUpYj1uZXcgUih0aGlzLmN0eCkuZmlsbFBhdGgoe3Nlcmllc051bWJlcjpoLGRhdGFQb2ludEluZGV4OnAsb3BhY2l0eTplLmdsb2JhbHMuaGFzTmVncz95LnBlcmNlbnQ8MD8xLSgxK3kucGVyY2VudC8xMDApOnUreS5wZXJjZW50LzEwMDp5LnBlcmNlbnQvMTAwLHBhdHRlcm5JRDp4LnJhbmRvbUlkKCksd2lkdGg6ZS5jb25maWcuZmlsbC5pbWFnZS53aWR0aD9lLmNvbmZpZy5maWxsLmltYWdlLndpZHRoOnMsaGVpZ2h0OmUuY29uZmlnLmZpbGwuaW1hZ2UuaGVpZ2h0P2UuY29uZmlnLmZpbGwuaW1hZ2UuaGVpZ2h0OnJ9KTt2YXIgdz10aGlzLnJlY3RSYWRpdXMsaz1pLmRyYXdSZWN0KGcsbyxzLHIsdyk7aWYoay5hdHRyKHtjeDpnLGN5Om99KSxrLm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtaGVhdG1hcC1yZWN0XCIpLGMuYWRkKGspLGsuYXR0cih7ZmlsbDpiLGk6aCxpbmRleDpoLGo6cCx2YWw6bFtoXVtwXSxcInN0cm9rZS13aWR0aFwiOnRoaXMuc3Ryb2tlV2lkdGgsc3Ryb2tlOmUuY29uZmlnLnBsb3RPcHRpb25zLmhlYXRtYXAudXNlRmlsbENvbG9yQXNTdHJva2U/YjplLmdsb2JhbHMuc3Ryb2tlLmNvbG9yc1swXSxjb2xvcjpifSksdGhpcy5oZWxwZXJzLmFkZExpc3RlbmVycyhrKSxlLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmVuYWJsZWQmJiFlLmdsb2JhbHMuZGF0YUNoYW5nZWQpe3ZhciBBPTE7ZS5nbG9iYWxzLnJlc2l6ZWR8fChBPWUuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQpLHRoaXMuYW5pbWF0ZUhlYXRNYXAoayxnLG8scyxyLEEpfWlmKGUuZ2xvYmFscy5kYXRhQ2hhbmdlZCl7dmFyIFM9MTtpZih0aGlzLmR5bmFtaWNBbmltLmVuYWJsZWQmJmUuZ2xvYmFscy5zaG91bGRBbmltYXRlKXtTPXRoaXMuZHluYW1pY0FuaW0uc3BlZWQ7dmFyIEM9ZS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbaF0mJmUuZ2xvYmFscy5wcmV2aW91c1BhdGhzW2hdW3BdJiZlLmdsb2JhbHMucHJldmlvdXNQYXRoc1toXVtwXS5jb2xvcjtDfHwoQz1cInJnYmEoMjU1LCAyNTUsIDI1NSwgMClcIiksdGhpcy5hbmltYXRlSGVhdENvbG9yKGsseC5pc0NvbG9ySGV4KEMpP0M6eC5yZ2IyaGV4KEMpLHguaXNDb2xvckhleChiKT9iOngucmdiMmhleChiKSxTKX19dmFyIEw9KDAsZS5jb25maWcuZGF0YUxhYmVscy5mb3JtYXR0ZXIpKGUuZ2xvYmFscy5zZXJpZXNbaF1bcF0se3ZhbHVlOmUuZ2xvYmFscy5zZXJpZXNbaF1bcF0sc2VyaWVzSW5kZXg6aCxkYXRhUG9pbnRJbmRleDpwLHc6ZX0pLFA9dGhpcy5oZWxwZXJzLmNhbGN1bGF0ZURhdGFMYWJlbHMoe3RleHQ6TCx4Omcrcy8yLHk6bytyLzIsaTpoLGo6cCxjb2xvclByb3BzOnksc2VyaWVzOmx9KTtudWxsIT09UCYmYy5hZGQoUCksZys9c31vKz1yLGEuYWRkKGMpfXZhciBJPWUuZ2xvYmFscy55QXhpc1NjYWxlWzBdLnJlc3VsdC5zbGljZSgpO2UuY29uZmlnLnlheGlzWzBdLnJldmVyc2VkP0kudW5zaGlmdChcIlwiKTpJLnB1c2goXCJcIiksZS5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ucmVzdWx0PUk7dmFyIFQ9ZS5nbG9iYWxzLmdyaWRIZWlnaHQvZS5nbG9iYWxzLnNlcmllcy5sZW5ndGg7cmV0dXJuIGUuY29uZmlnLnlheGlzWzBdLmxhYmVscy5vZmZzZXRZPS1ULzIsYX19LHtrZXk6XCJhbmltYXRlSGVhdE1hcFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyxyKXt2YXIgbz1uZXcgYih0aGlzLmN0eCk7by5hbmltYXRlUmVjdCh0LHt4OmUrYS8yLHk6aStzLzIsd2lkdGg6MCxoZWlnaHQ6MH0se3g6ZSx5Omksd2lkdGg6YSxoZWlnaHQ6c30sciwoZnVuY3Rpb24oKXtvLmFuaW1hdGlvbkNvbXBsZXRlZCh0KX0pKX19LHtrZXk6XCJhbmltYXRlSGVhdENvbG9yXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSl7dC5hdHRyKHtmaWxsOmV9KS5hbmltYXRlKGEpLmF0dHIoe2ZpbGw6aX0pfX1dKSx0fSgpLEN0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJkcmF3WUF4aXNUZXh0c1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzPXRoaXMudyxyPXMuY29uZmlnLnlheGlzWzBdLG89cy5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbMF07cmV0dXJuIG5ldyBtKHRoaXMuY3R4KS5kcmF3VGV4dCh7eDp0K3IubGFiZWxzLm9mZnNldFgseTplK3IubGFiZWxzLm9mZnNldFksdGV4dDpvKGEsaSksdGV4dEFuY2hvcjpcIm1pZGRsZVwiLGZvbnRTaXplOnIubGFiZWxzLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6ci5sYWJlbHMuc3R5bGUuZm9udEZhbWlseSxmb3JlQ29sb3I6QXJyYXkuaXNBcnJheShyLmxhYmVscy5zdHlsZS5jb2xvcnMpP3IubGFiZWxzLnN0eWxlLmNvbG9yc1tpXTpyLmxhYmVscy5zdHlsZS5jb2xvcnN9KX19XSksdH0oKSxMdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudzt2YXIgaT10aGlzLnc7dGhpcy5jaGFydFR5cGU9dGhpcy53LmNvbmZpZy5jaGFydC50eXBlLHRoaXMuaW5pdGlhbEFuaW09dGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmVuYWJsZWQsdGhpcy5keW5hbWljQW5pbT10aGlzLmluaXRpYWxBbmltJiZ0aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5lbmFibGVkLHRoaXMuYW5pbUJlZ2luQXJyPVswXSx0aGlzLmFuaW1EdXI9MCx0aGlzLmRvbnV0RGF0YUxhYmVscz10aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5kb251dC5sYWJlbHMsdGhpcy5saW5lQ29sb3JBcnI9dm9pZCAwIT09aS5nbG9iYWxzLnN0cm9rZS5jb2xvcnM/aS5nbG9iYWxzLnN0cm9rZS5jb2xvcnM6aS5nbG9iYWxzLmNvbG9ycyx0aGlzLmRlZmF1bHRTaXplPU1hdGgubWluKGkuZ2xvYmFscy5ncmlkV2lkdGgsaS5nbG9iYWxzLmdyaWRIZWlnaHQpLHRoaXMuY2VudGVyWT10aGlzLmRlZmF1bHRTaXplLzIsdGhpcy5jZW50ZXJYPWkuZ2xvYmFscy5ncmlkV2lkdGgvMixcInJhZGlhbEJhclwiPT09aS5jb25maWcuY2hhcnQudHlwZT90aGlzLmZ1bGxBbmdsZT0zNjA6dGhpcy5mdWxsQW5nbGU9TWF0aC5hYnMoaS5jb25maWcucGxvdE9wdGlvbnMucGllLmVuZEFuZ2xlLWkuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5zdGFydEFuZ2xlKSx0aGlzLmluaXRpYWxBbmdsZT1pLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuc3RhcnRBbmdsZSV0aGlzLmZ1bGxBbmdsZSxpLmdsb2JhbHMucmFkaWFsU2l6ZT10aGlzLmRlZmF1bHRTaXplLzIuMDUtaS5jb25maWcuc3Ryb2tlLndpZHRoLShpLmNvbmZpZy5jaGFydC5zcGFya2xpbmUuZW5hYmxlZD8wOmkuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuYmx1ciksdGhpcy5kb251dFNpemU9aS5nbG9iYWxzLnJhZGlhbFNpemUqcGFyc2VJbnQoaS5jb25maWcucGxvdE9wdGlvbnMucGllLmRvbnV0LnNpemUsMTApLzEwMCx0aGlzLm1heFk9MCx0aGlzLnNsaWNlTGFiZWxzPVtdLHRoaXMuc2xpY2VTaXplcz1bXSx0aGlzLnByZXZTZWN0b3JBbmdsZUFycj1bXX1yZXR1cm4gcih0LFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10aGlzLncsYT1uZXcgbSh0aGlzLmN0eCk7aWYodGhpcy5yZXQ9YS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXBpZVwifSksaS5nbG9iYWxzLm5vRGF0YSlyZXR1cm4gdGhpcy5yZXQ7Zm9yKHZhciBzPTAscj0wO3I8dC5sZW5ndGg7cisrKXMrPXgubmVnVG9aZXJvKHRbcl0pO3ZhciBvPVtdLG49YS5ncm91cCgpOzA9PT1zJiYocz0xZS01KSx0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2UubWF4WT1NYXRoLm1heChlLm1heFksdCl9KSksaS5jb25maWcueWF4aXNbMF0ubWF4JiYodGhpcy5tYXhZPWkuY29uZmlnLnlheGlzWzBdLm1heCksXCJiYWNrXCI9PT1pLmNvbmZpZy5ncmlkLnBvc2l0aW9uJiZcInBvbGFyQXJlYVwiPT09dGhpcy5jaGFydFR5cGUmJnRoaXMuZHJhd1BvbGFyRWxlbWVudHModGhpcy5yZXQpO2Zvcih2YXIgbD0wO2w8dC5sZW5ndGg7bCsrKXt2YXIgaD10aGlzLmZ1bGxBbmdsZSp4Lm5lZ1RvWmVybyh0W2xdKS9zO28ucHVzaChoKSxcInBvbGFyQXJlYVwiPT09dGhpcy5jaGFydFR5cGU/KG9bbF09dGhpcy5mdWxsQW5nbGUvdC5sZW5ndGgsdGhpcy5zbGljZVNpemVzLnB1c2goaS5nbG9iYWxzLnJhZGlhbFNpemUqdFtsXS90aGlzLm1heFkpKTp0aGlzLnNsaWNlU2l6ZXMucHVzaChpLmdsb2JhbHMucmFkaWFsU2l6ZSl9aWYoaS5nbG9iYWxzLmRhdGFDaGFuZ2VkKXtmb3IodmFyIGMsZD0wLGc9MDtnPGkuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aDtnKyspZCs9eC5uZWdUb1plcm8oaS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbZ10pO2Zvcih2YXIgdT0wO3U8aS5nbG9iYWxzLnByZXZpb3VzUGF0aHMubGVuZ3RoO3UrKyljPXRoaXMuZnVsbEFuZ2xlKngubmVnVG9aZXJvKGkuZ2xvYmFscy5wcmV2aW91c1BhdGhzW3VdKS9kLHRoaXMucHJldlNlY3RvckFuZ2xlQXJyLnB1c2goYyl9dGhpcy5kb251dFNpemU8MCYmKHRoaXMuZG9udXRTaXplPTApO3ZhciBwPWkuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5jdXN0b21TY2FsZSxmPWkuZ2xvYmFscy5ncmlkV2lkdGgvMixiPWkuZ2xvYmFscy5ncmlkSGVpZ2h0LzIsdj1mLWkuZ2xvYmFscy5ncmlkV2lkdGgvMipwLHk9Yi1pLmdsb2JhbHMuZ3JpZEhlaWdodC8yKnA7aWYoXCJkb251dFwiPT09dGhpcy5jaGFydFR5cGUpe3ZhciB3PWEuZHJhd0NpcmNsZSh0aGlzLmRvbnV0U2l6ZSk7dy5hdHRyKHtjeDp0aGlzLmNlbnRlclgsY3k6dGhpcy5jZW50ZXJZLGZpbGw6aS5jb25maWcucGxvdE9wdGlvbnMucGllLmRvbnV0LmJhY2tncm91bmQ/aS5jb25maWcucGxvdE9wdGlvbnMucGllLmRvbnV0LmJhY2tncm91bmQ6XCJ0cmFuc3BhcmVudFwifSksbi5hZGQodyl9dmFyIGs9dGhpcy5kcmF3QXJjcyhvLHQpO2lmKHRoaXMuc2xpY2VMYWJlbHMuZm9yRWFjaCgoZnVuY3Rpb24odCl7ay5hZGQodCl9KSksbi5hdHRyKHt0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIuY29uY2F0KHYsXCIsIFwiKS5jb25jYXQoeSxcIikgc2NhbGUoXCIpLmNvbmNhdChwLFwiKVwiKX0pLG4uYWRkKGspLHRoaXMucmV0LmFkZChuKSx0aGlzLmRvbnV0RGF0YUxhYmVscy5zaG93KXt2YXIgQT10aGlzLnJlbmRlcklubmVyRGF0YUxhYmVscyh0aGlzLmRvbnV0RGF0YUxhYmVscyx7aG9sbG93U2l6ZTp0aGlzLmRvbnV0U2l6ZSxjZW50ZXJYOnRoaXMuY2VudGVyWCxjZW50ZXJZOnRoaXMuY2VudGVyWSxvcGFjaXR5OnRoaXMuZG9udXREYXRhTGFiZWxzLnNob3csdHJhbnNsYXRlWDp2LHRyYW5zbGF0ZVk6eX0pO3RoaXMucmV0LmFkZChBKX1yZXR1cm5cImZyb250XCI9PT1pLmNvbmZpZy5ncmlkLnBvc2l0aW9uJiZcInBvbGFyQXJlYVwiPT09dGhpcy5jaGFydFR5cGUmJnRoaXMuZHJhd1BvbGFyRWxlbWVudHModGhpcy5yZXQpLHRoaXMucmV0fX0se2tleTpcImRyYXdBcmNzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT1uZXcgdih0aGlzLmN0eCkscz1uZXcgbSh0aGlzLmN0eCkscj1uZXcgUih0aGlzLmN0eCksbz1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2xpY2VzXCJ9KSxuPXRoaXMuaW5pdGlhbEFuZ2xlLGw9dGhpcy5pbml0aWFsQW5nbGUsaD10aGlzLmluaXRpYWxBbmdsZSxjPXRoaXMuaW5pdGlhbEFuZ2xlO3RoaXMuc3Ryb2tlV2lkdGg9aS5jb25maWcuc3Ryb2tlLnNob3c/aS5jb25maWcuc3Ryb2tlLndpZHRoOjA7Zm9yKHZhciBkPTA7ZDx0Lmxlbmd0aDtkKyspe3ZhciBnPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXMgYXBleGNoYXJ0cy1waWUtc2VyaWVzXCIsc2VyaWVzTmFtZTp4LmVzY2FwZVN0cmluZyhpLmdsb2JhbHMuc2VyaWVzTmFtZXNbZF0pLHJlbDpkKzEsXCJkYXRhOnJlYWxJbmRleFwiOmR9KTtvLmFkZChnKSxsPWMsaD0obj1oKSt0W2RdLGM9bCt0aGlzLnByZXZTZWN0b3JBbmdsZUFycltkXTt2YXIgdT1oPG4/dGhpcy5mdWxsQW5nbGUraC1uOmgtbixwPXIuZmlsbFBhdGgoe3Nlcmllc051bWJlcjpkLHNpemU6dGhpcy5zbGljZVNpemVzW2RdLHZhbHVlOmVbZF19KSxmPXRoaXMuZ2V0Q2hhbmdlZFBhdGgobCxjKSxiPXMuZHJhd1BhdGgoe2Q6ZixzdHJva2U6QXJyYXkuaXNBcnJheSh0aGlzLmxpbmVDb2xvckFycik/dGhpcy5saW5lQ29sb3JBcnJbZF06dGhpcy5saW5lQ29sb3JBcnIsc3Ryb2tlV2lkdGg6MCxmaWxsOnAsZmlsbE9wYWNpdHk6aS5jb25maWcuZmlsbC5vcGFjaXR5LGNsYXNzZXM6XCJhcGV4Y2hhcnRzLXBpZS1hcmVhIGFwZXhjaGFydHMtXCIuY29uY2F0KHRoaXMuY2hhcnRUeXBlLnRvTG93ZXJDYXNlKCksXCItc2xpY2UtXCIpLmNvbmNhdChkKX0pO2lmKGIuYXR0cih7aW5kZXg6MCxqOmR9KSxhLnNldFNlbGVjdGlvbkZpbHRlcihiLDAsZCksaS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkKXt2YXIgeT1pLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93O2EuZHJvcFNoYWRvdyhiLHksZCl9dGhpcy5hZGRMaXN0ZW5lcnMoYix0aGlzLmRvbnV0RGF0YUxhYmVscyksbS5zZXRBdHRycyhiLm5vZGUse1wiZGF0YTphbmdsZVwiOnUsXCJkYXRhOnN0YXJ0QW5nbGVcIjpuLFwiZGF0YTpzdHJva2VXaWR0aFwiOnRoaXMuc3Ryb2tlV2lkdGgsXCJkYXRhOnZhbHVlXCI6ZVtkXX0pO3ZhciB3PXt4OjAseTowfTtcInBpZVwiPT09dGhpcy5jaGFydFR5cGV8fFwicG9sYXJBcmVhXCI9PT10aGlzLmNoYXJ0VHlwZT93PXgucG9sYXJUb0NhcnRlc2lhbih0aGlzLmNlbnRlclgsdGhpcy5jZW50ZXJZLGkuZ2xvYmFscy5yYWRpYWxTaXplLzEuMjUraS5jb25maWcucGxvdE9wdGlvbnMucGllLmRhdGFMYWJlbHMub2Zmc2V0LChuK3UvMikldGhpcy5mdWxsQW5nbGUpOlwiZG9udXRcIj09PXRoaXMuY2hhcnRUeXBlJiYodz14LnBvbGFyVG9DYXJ0ZXNpYW4odGhpcy5jZW50ZXJYLHRoaXMuY2VudGVyWSwoaS5nbG9iYWxzLnJhZGlhbFNpemUrdGhpcy5kb251dFNpemUpLzIraS5jb25maWcucGxvdE9wdGlvbnMucGllLmRhdGFMYWJlbHMub2Zmc2V0LChuK3UvMikldGhpcy5mdWxsQW5nbGUpKSxnLmFkZChiKTt2YXIgaz0wO2lmKCF0aGlzLmluaXRpYWxBbmltfHxpLmdsb2JhbHMucmVzaXplZHx8aS5nbG9iYWxzLmRhdGFDaGFuZ2VkP3RoaXMuYW5pbUJlZ2luQXJyLnB1c2goMCk6KDA9PT0oaz11L3RoaXMuZnVsbEFuZ2xlKmkuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQpJiYoaz0xKSx0aGlzLmFuaW1EdXI9ayt0aGlzLmFuaW1EdXIsdGhpcy5hbmltQmVnaW5BcnIucHVzaCh0aGlzLmFuaW1EdXIpKSx0aGlzLmR5bmFtaWNBbmltJiZpLmdsb2JhbHMuZGF0YUNoYW5nZWQ/dGhpcy5hbmltYXRlUGF0aHMoYix7c2l6ZTp0aGlzLnNsaWNlU2l6ZXNbZF0sZW5kQW5nbGU6aCxzdGFydEFuZ2xlOm4scHJldlN0YXJ0QW5nbGU6bCxwcmV2RW5kQW5nbGU6YyxhbmltYXRlU3RhcnRpbmdQb3M6ITAsaTpkLGFuaW1CZWdpbkFycjp0aGlzLmFuaW1CZWdpbkFycixzaG91bGRTZXRQcmV2UGF0aHM6ITAsZHVyOmkuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5zcGVlZH0pOnRoaXMuYW5pbWF0ZVBhdGhzKGIse3NpemU6dGhpcy5zbGljZVNpemVzW2RdLGVuZEFuZ2xlOmgsc3RhcnRBbmdsZTpuLGk6ZCx0b3RhbEl0ZW1zOnQubGVuZ3RoLTEsYW5pbUJlZ2luQXJyOnRoaXMuYW5pbUJlZ2luQXJyLGR1cjprfSksaS5jb25maWcucGxvdE9wdGlvbnMucGllLmV4cGFuZE9uQ2xpY2smJlwicG9sYXJBcmVhXCIhPT10aGlzLmNoYXJ0VHlwZSYmYi5jbGljayh0aGlzLnBpZUNsaWNrZWQuYmluZCh0aGlzLGQpKSx2b2lkIDAhPT1pLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzWzBdJiZpLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzWzBdLmluZGV4T2YoZCk+LTEmJnRoaXMucGllQ2xpY2tlZChkKSxpLmNvbmZpZy5kYXRhTGFiZWxzLmVuYWJsZWQpe3ZhciBBPXcueCxTPXcueSxDPTEwMCp1L3RoaXMuZnVsbEFuZ2xlK1wiJVwiO2lmKDAhPT11JiZpLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZGF0YUxhYmVscy5taW5BbmdsZVRvU2hvd0xhYmVsPHRbZF0pe3ZhciBMPWkuY29uZmlnLmRhdGFMYWJlbHMuZm9ybWF0dGVyO3ZvaWQgMCE9PUwmJihDPUwoaS5nbG9iYWxzLnNlcmllc1BlcmNlbnRbZF1bMF0se3Nlcmllc0luZGV4OmQsdzppfSkpO3ZhciBQPWkuZ2xvYmFscy5kYXRhTGFiZWxzLnN0eWxlLmNvbG9yc1tkXSxJPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhbGFiZWxzXCJ9KSxUPXMuZHJhd1RleHQoe3g6QSx5OlMsdGV4dDpDLHRleHRBbmNob3I6XCJtaWRkbGVcIixmb250U2l6ZTppLmNvbmZpZy5kYXRhTGFiZWxzLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6aS5jb25maWcuZGF0YUxhYmVscy5zdHlsZS5mb250RmFtaWx5LGZvbnRXZWlnaHQ6aS5jb25maWcuZGF0YUxhYmVscy5zdHlsZS5mb250V2VpZ2h0LGZvcmVDb2xvcjpQfSk7aWYoSS5hZGQoVCksaS5jb25maWcuZGF0YUxhYmVscy5kcm9wU2hhZG93LmVuYWJsZWQpe3ZhciBNPWkuY29uZmlnLmRhdGFMYWJlbHMuZHJvcFNoYWRvdzthLmRyb3BTaGFkb3coVCxNKX1ULm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtcGllLWxhYmVsXCIpLGkuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuYW5pbWF0ZSYmITE9PT1pLmdsb2JhbHMucmVzaXplZCYmKFQubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1waWUtbGFiZWwtZGVsYXlcIiksVC5ub2RlLnN0eWxlLmFuaW1hdGlvbkRlbGF5PWkuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQvOTQwK1wic1wiKSx0aGlzLnNsaWNlTGFiZWxzLnB1c2goSSl9fX1yZXR1cm4gb319LHtrZXk6XCJhZGRMaXN0ZW5lcnNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPW5ldyBtKHRoaXMuY3R4KTt0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZW50ZXJcIixpLnBhdGhNb3VzZUVudGVyLmJpbmQodGhpcyx0KSksdC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsaS5wYXRoTW91c2VMZWF2ZS5iaW5kKHRoaXMsdCkpLHQubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VsZWF2ZVwiLHRoaXMucmV2ZXJ0RGF0YUxhYmVsc0lubmVyLmJpbmQodGhpcyx0Lm5vZGUsZSkpLHQubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsaS5wYXRoTW91c2VEb3duLmJpbmQodGhpcyx0KSksdGhpcy5kb251dERhdGFMYWJlbHMudG90YWwuc2hvd0Fsd2F5c3x8KHQubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VlbnRlclwiLHRoaXMucHJpbnREYXRhTGFiZWxzSW5uZXIuYmluZCh0aGlzLHQubm9kZSxlKSksdC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIix0aGlzLnByaW50RGF0YUxhYmVsc0lubmVyLmJpbmQodGhpcyx0Lm5vZGUsZSkpKX19LHtrZXk6XCJhbmltYXRlUGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPWUuZW5kQW5nbGU8ZS5zdGFydEFuZ2xlP3RoaXMuZnVsbEFuZ2xlK2UuZW5kQW5nbGUtZS5zdGFydEFuZ2xlOmUuZW5kQW5nbGUtZS5zdGFydEFuZ2xlLHM9YSxyPWUuc3RhcnRBbmdsZSxvPWUuc3RhcnRBbmdsZTt2b2lkIDAhPT1lLnByZXZTdGFydEFuZ2xlJiZ2b2lkIDAhPT1lLnByZXZFbmRBbmdsZSYmKHI9ZS5wcmV2RW5kQW5nbGUscz1lLnByZXZFbmRBbmdsZTxlLnByZXZTdGFydEFuZ2xlP3RoaXMuZnVsbEFuZ2xlK2UucHJldkVuZEFuZ2xlLWUucHJldlN0YXJ0QW5nbGU6ZS5wcmV2RW5kQW5nbGUtZS5wcmV2U3RhcnRBbmdsZSksZS5pPT09aS5jb25maWcuc2VyaWVzLmxlbmd0aC0xJiYoYStvPnRoaXMuZnVsbEFuZ2xlP2UuZW5kQW5nbGU9ZS5lbmRBbmdsZS0oYStvKTphK288dGhpcy5mdWxsQW5nbGUmJihlLmVuZEFuZ2xlPWUuZW5kQW5nbGUrKHRoaXMuZnVsbEFuZ2xlLShhK28pKSkpLGE9PT10aGlzLmZ1bGxBbmdsZSYmKGE9dGhpcy5mdWxsQW5nbGUtLjAxKSx0aGlzLmFuaW1hdGVBcmModCxyLG8sYSxzLGUpfX0se2tleTpcImFuaW1hdGVBcmNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMscil7dmFyIG8sbj10aGlzLGw9dGhpcy53LGg9bmV3IGIodGhpcy5jdHgpLGM9ci5zaXplOyhpc05hTihlKXx8aXNOYU4ocykpJiYoZT1pLHM9YSxyLmR1cj0wKTt2YXIgZD1hLGc9aSx1PWU8aT90aGlzLmZ1bGxBbmdsZStlLWk6ZS1pO2wuZ2xvYmFscy5kYXRhQ2hhbmdlZCYmci5zaG91bGRTZXRQcmV2UGF0aHMmJnIucHJldkVuZEFuZ2xlJiYobz1uLmdldFBpZVBhdGgoe21lOm4sc3RhcnRBbmdsZTpyLnByZXZTdGFydEFuZ2xlLGFuZ2xlOnIucHJldkVuZEFuZ2xlPHIucHJldlN0YXJ0QW5nbGU/dGhpcy5mdWxsQW5nbGUrci5wcmV2RW5kQW5nbGUtci5wcmV2U3RhcnRBbmdsZTpyLnByZXZFbmRBbmdsZS1yLnByZXZTdGFydEFuZ2xlLHNpemU6Y30pLHQuYXR0cih7ZDpvfSkpLDAhPT1yLmR1cj90LmFuaW1hdGUoci5kdXIsbC5nbG9iYWxzLmVhc2luZyxyLmFuaW1CZWdpbkFycltyLmldKS5hZnRlckFsbCgoZnVuY3Rpb24oKXtcInBpZVwiIT09bi5jaGFydFR5cGUmJlwiZG9udXRcIiE9PW4uY2hhcnRUeXBlJiZcInBvbGFyQXJlYVwiIT09bi5jaGFydFR5cGV8fHRoaXMuYW5pbWF0ZShsLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uc3BlZWQpLmF0dHIoe1wic3Ryb2tlLXdpZHRoXCI6bi5zdHJva2VXaWR0aH0pLHIuaT09PWwuY29uZmlnLnNlcmllcy5sZW5ndGgtMSYmaC5hbmltYXRpb25Db21wbGV0ZWQodCl9KSkuZHVyaW5nKChmdW5jdGlvbihsKXtkPXUrKGEtdSkqbCxyLmFuaW1hdGVTdGFydGluZ1BvcyYmKGQ9cysoYS1zKSpsLGc9ZS1zKyhpLShlLXMpKSpsKSxvPW4uZ2V0UGllUGF0aCh7bWU6bixzdGFydEFuZ2xlOmcsYW5nbGU6ZCxzaXplOmN9KSx0Lm5vZGUuc2V0QXR0cmlidXRlKFwiZGF0YTpwYXRoT3JpZ1wiLG8pLHQuYXR0cih7ZDpvfSl9KSk6KG89bi5nZXRQaWVQYXRoKHttZTpuLHN0YXJ0QW5nbGU6ZyxhbmdsZTphLHNpemU6Y30pLHIuaXNUcmFja3x8KGwuZ2xvYmFscy5hbmltYXRpb25FbmRlZD0hMCksdC5ub2RlLnNldEF0dHJpYnV0ZShcImRhdGE6cGF0aE9yaWdcIixvKSx0LmF0dHIoe2Q6byxcInN0cm9rZS13aWR0aFwiOm4uc3Ryb2tlV2lkdGh9KSl9fSx7a2V5OlwicGllQ2xpY2tlZFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGk9dGhpcy53LGE9dGhpcyxzPWEuc2xpY2VTaXplc1t0XSsoaS5jb25maWcucGxvdE9wdGlvbnMucGllLmV4cGFuZE9uQ2xpY2s/NDowKSxyPWkuZ2xvYmFscy5kb20uUGFwZXIuc2VsZWN0KFwiLmFwZXhjaGFydHMtXCIuY29uY2F0KGEuY2hhcnRUeXBlLnRvTG93ZXJDYXNlKCksXCItc2xpY2UtXCIpLmNvbmNhdCh0KSkubWVtYmVyc1swXTtpZihcInRydWVcIiE9PXIuYXR0cihcImRhdGE6cGllQ2xpY2tlZFwiKSl7dmFyIG89aS5nbG9iYWxzLmRvbS5iYXNlRWwuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImFwZXhjaGFydHMtcGllLWFyZWFcIik7QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChvLChmdW5jdGlvbih0KXt0LnNldEF0dHJpYnV0ZShcImRhdGE6cGllQ2xpY2tlZFwiLFwiZmFsc2VcIik7dmFyIGU9dC5nZXRBdHRyaWJ1dGUoXCJkYXRhOnBhdGhPcmlnXCIpO2UmJnQuc2V0QXR0cmlidXRlKFwiZFwiLGUpfSkpLHIuYXR0cihcImRhdGE6cGllQ2xpY2tlZFwiLFwidHJ1ZVwiKTt2YXIgbj1wYXJzZUludChyLmF0dHIoXCJkYXRhOnN0YXJ0QW5nbGVcIiksMTApLGw9cGFyc2VJbnQoci5hdHRyKFwiZGF0YTphbmdsZVwiKSwxMCk7ZT1hLmdldFBpZVBhdGgoe21lOmEsc3RhcnRBbmdsZTpuLGFuZ2xlOmwsc2l6ZTpzfSksMzYwIT09bCYmci5wbG90KGUpfWVsc2V7ci5hdHRyKHtcImRhdGE6cGllQ2xpY2tlZFwiOlwiZmFsc2VcIn0pLHRoaXMucmV2ZXJ0RGF0YUxhYmVsc0lubmVyKHIubm9kZSx0aGlzLmRvbnV0RGF0YUxhYmVscyk7dmFyIGg9ci5hdHRyKFwiZGF0YTpwYXRoT3JpZ1wiKTtyLmF0dHIoe2Q6aH0pfX19LHtrZXk6XCJnZXRDaGFuZ2VkUGF0aFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9XCJcIjtyZXR1cm4gdGhpcy5keW5hbWljQW5pbSYmdGhpcy53Lmdsb2JhbHMuZGF0YUNoYW5nZWQmJihpPXRoaXMuZ2V0UGllUGF0aCh7bWU6dGhpcyxzdGFydEFuZ2xlOnQsYW5nbGU6ZS10LHNpemU6dGhpcy5zaXplfSkpLGl9fSx7a2V5OlwiZ2V0UGllUGF0aFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQubWUsaT10LnN0YXJ0QW5nbGUsYT10LmFuZ2xlLHM9dC5zaXplLHI9aSxvPU1hdGguUEkqKHItOTApLzE4MCxuPWEraTtNYXRoLmNlaWwobik+PXRoaXMuZnVsbEFuZ2xlK3RoaXMudy5jb25maWcucGxvdE9wdGlvbnMucGllLnN0YXJ0QW5nbGUldGhpcy5mdWxsQW5nbGUmJihuPXRoaXMuZnVsbEFuZ2xlK3RoaXMudy5jb25maWcucGxvdE9wdGlvbnMucGllLnN0YXJ0QW5nbGUldGhpcy5mdWxsQW5nbGUtLjAxKSxNYXRoLmNlaWwobik+dGhpcy5mdWxsQW5nbGUmJihuLT10aGlzLmZ1bGxBbmdsZSk7dmFyIGw9TWF0aC5QSSoobi05MCkvMTgwLGg9ZS5jZW50ZXJYK3MqTWF0aC5jb3MobyksYz1lLmNlbnRlclkrcypNYXRoLnNpbihvKSxkPWUuY2VudGVyWCtzKk1hdGguY29zKGwpLGc9ZS5jZW50ZXJZK3MqTWF0aC5zaW4obCksdT14LnBvbGFyVG9DYXJ0ZXNpYW4oZS5jZW50ZXJYLGUuY2VudGVyWSxlLmRvbnV0U2l6ZSxuKSxwPXgucG9sYXJUb0NhcnRlc2lhbihlLmNlbnRlclgsZS5jZW50ZXJZLGUuZG9udXRTaXplLHIpLGY9YT4xODA/MTowLGI9W1wiTVwiLGgsYyxcIkFcIixzLHMsMCxmLDEsZCxnXTtyZXR1cm5cImRvbnV0XCI9PT1lLmNoYXJ0VHlwZT9bXS5jb25jYXQoYixbXCJMXCIsdS54LHUueSxcIkFcIixlLmRvbnV0U2l6ZSxlLmRvbnV0U2l6ZSwwLGYsMCxwLngscC55LFwiTFwiLGgsYyxcInpcIl0pLmpvaW4oXCIgXCIpOlwicGllXCI9PT1lLmNoYXJ0VHlwZXx8XCJwb2xhckFyZWFcIj09PWUuY2hhcnRUeXBlP1tdLmNvbmNhdChiLFtcIkxcIixlLmNlbnRlclgsZS5jZW50ZXJZLFwiTFwiLGgsY10pLmpvaW4oXCIgXCIpOltdLmNvbmNhdChiKS5qb2luKFwiIFwiKX19LHtrZXk6XCJkcmF3UG9sYXJFbGVtZW50c1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPW5ldyBfKHRoaXMuY3R4KSxhPW5ldyBtKHRoaXMuY3R4KSxzPW5ldyBDdCh0aGlzLmN0eCkscj1hLmdyb3VwKCksbz1hLmdyb3VwKCksbj1pLm5pY2VTY2FsZSgwLE1hdGguY2VpbCh0aGlzLm1heFkpLGUuY29uZmlnLnlheGlzWzBdLnRpY2tBbW91bnQsMCwhMCksbD1uLnJlc3VsdC5yZXZlcnNlKCksaD1uLnJlc3VsdC5sZW5ndGg7dGhpcy5tYXhZPW4ubmljZU1heDtmb3IodmFyIGM9ZS5nbG9iYWxzLnJhZGlhbFNpemUsZD1jLyhoLTEpLGc9MDtnPGgtMTtnKyspe3ZhciB1PWEuZHJhd0NpcmNsZShjKTtpZih1LmF0dHIoe2N4OnRoaXMuY2VudGVyWCxjeTp0aGlzLmNlbnRlclksZmlsbDpcIm5vbmVcIixcInN0cm9rZS13aWR0aFwiOmUuY29uZmlnLnBsb3RPcHRpb25zLnBvbGFyQXJlYS5yaW5ncy5zdHJva2VXaWR0aCxzdHJva2U6ZS5jb25maWcucGxvdE9wdGlvbnMucG9sYXJBcmVhLnJpbmdzLnN0cm9rZUNvbG9yfSksZS5jb25maWcueWF4aXNbMF0uc2hvdyl7dmFyIHA9cy5kcmF3WUF4aXNUZXh0cyh0aGlzLmNlbnRlclgsdGhpcy5jZW50ZXJZLWMrcGFyc2VJbnQoZS5jb25maWcueWF4aXNbMF0ubGFiZWxzLnN0eWxlLmZvbnRTaXplLDEwKS8yLGcsbFtnXSk7by5hZGQocCl9ci5hZGQodSksYy09ZH10aGlzLmRyYXdTcG9rZXModCksdC5hZGQociksdC5hZGQobyl9fSx7a2V5OlwicmVuZGVySW5uZXJEYXRhTGFiZWxzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT1uZXcgbSh0aGlzLmN0eCkscz1hLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZGF0YWxhYmVscy1ncm91cFwiLHRyYW5zZm9ybTpcInRyYW5zbGF0ZShcIi5jb25jYXQoZS50cmFuc2xhdGVYP2UudHJhbnNsYXRlWDowLFwiLCBcIikuY29uY2F0KGUudHJhbnNsYXRlWT9lLnRyYW5zbGF0ZVk6MCxcIikgc2NhbGUoXCIpLmNvbmNhdChpLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuY3VzdG9tU2NhbGUsXCIpXCIpfSkscj10LnRvdGFsLnNob3c7cy5ub2RlLnN0eWxlLm9wYWNpdHk9ZS5vcGFjaXR5O3ZhciBvLG4sbD1lLmNlbnRlclgsaD1lLmNlbnRlclk7bz12b2lkIDA9PT10Lm5hbWUuY29sb3I/aS5nbG9iYWxzLmNvbG9yc1swXTp0Lm5hbWUuY29sb3I7dmFyIGM9dC5uYW1lLmZvbnRTaXplLGQ9dC5uYW1lLmZvbnRGYW1pbHksZz10Lm5hbWUuZm9udFdlaWdodDtuPXZvaWQgMD09PXQudmFsdWUuY29sb3I/aS5jb25maWcuY2hhcnQuZm9yZUNvbG9yOnQudmFsdWUuY29sb3I7dmFyIHU9dC52YWx1ZS5mb3JtYXR0ZXIscD1cIlwiLGY9XCJcIjtpZihyPyhvPXQudG90YWwuY29sb3IsYz10LnRvdGFsLmZvbnRTaXplLGQ9dC50b3RhbC5mb250RmFtaWx5LGc9dC50b3RhbC5mb250V2VpZ2h0LGY9dC50b3RhbC5sYWJlbCxwPXQudG90YWwuZm9ybWF0dGVyKGkpKToxPT09aS5nbG9iYWxzLnNlcmllcy5sZW5ndGgmJihwPXUoaS5nbG9iYWxzLnNlcmllc1swXSxpKSxmPWkuZ2xvYmFscy5zZXJpZXNOYW1lc1swXSksZiYmKGY9dC5uYW1lLmZvcm1hdHRlcihmLHQudG90YWwuc2hvdyxpKSksdC5uYW1lLnNob3cpe3ZhciB4PWEuZHJhd1RleHQoe3g6bCx5OmgrcGFyc2VGbG9hdCh0Lm5hbWUub2Zmc2V0WSksdGV4dDpmLHRleHRBbmNob3I6XCJtaWRkbGVcIixmb3JlQ29sb3I6byxmb250U2l6ZTpjLGZvbnRXZWlnaHQ6Zyxmb250RmFtaWx5OmR9KTt4Lm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtZGF0YWxhYmVsLWxhYmVsXCIpLHMuYWRkKHgpfWlmKHQudmFsdWUuc2hvdyl7dmFyIGI9dC5uYW1lLnNob3c/cGFyc2VGbG9hdCh0LnZhbHVlLm9mZnNldFkpKzE2OnQudmFsdWUub2Zmc2V0WSx2PWEuZHJhd1RleHQoe3g6bCx5OmgrYix0ZXh0OnAsdGV4dEFuY2hvcjpcIm1pZGRsZVwiLGZvcmVDb2xvcjpuLGZvbnRXZWlnaHQ6dC52YWx1ZS5mb250V2VpZ2h0LGZvbnRTaXplOnQudmFsdWUuZm9udFNpemUsZm9udEZhbWlseTp0LnZhbHVlLmZvbnRGYW1pbHl9KTt2Lm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtZGF0YWxhYmVsLXZhbHVlXCIpLHMuYWRkKHYpfXJldHVybiBzfX0se2tleTpcInByaW50SW5uZXJMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt2YXIgcyxyPXRoaXMudzthP3M9dm9pZCAwPT09dC5uYW1lLmNvbG9yP3IuZ2xvYmFscy5jb2xvcnNbcGFyc2VJbnQoYS5wYXJlbnROb2RlLmdldEF0dHJpYnV0ZShcInJlbFwiKSwxMCktMV06dC5uYW1lLmNvbG9yOnIuZ2xvYmFscy5zZXJpZXMubGVuZ3RoPjEmJnQudG90YWwuc2hvdyYmKHM9dC50b3RhbC5jb2xvcik7dmFyIG89ci5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWRhdGFsYWJlbC1sYWJlbFwiKSxuPXIuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1kYXRhbGFiZWwtdmFsdWVcIik7aT0oMCx0LnZhbHVlLmZvcm1hdHRlcikoaSxyKSxhfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiB0LnRvdGFsLmZvcm1hdHRlcnx8KGk9dC50b3RhbC5mb3JtYXR0ZXIocikpO3ZhciBsPWU9PT10LnRvdGFsLmxhYmVsO2U9dC5uYW1lLmZvcm1hdHRlcihlLGwsciksbnVsbCE9PW8mJihvLnRleHRDb250ZW50PWUpLG51bGwhPT1uJiYobi50ZXh0Q29udGVudD1pKSxudWxsIT09byYmKG8uc3R5bGUuZmlsbD1zKX19LHtrZXk6XCJwcmludERhdGFMYWJlbHNJbm5lclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9dC5nZXRBdHRyaWJ1dGUoXCJkYXRhOnZhbHVlXCIpLHM9aS5nbG9iYWxzLnNlcmllc05hbWVzW3BhcnNlSW50KHQucGFyZW50Tm9kZS5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksMTApLTFdO2kuZ2xvYmFscy5zZXJpZXMubGVuZ3RoPjEmJnRoaXMucHJpbnRJbm5lckxhYmVscyhlLHMsYSx0KTt2YXIgcj1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtZGF0YWxhYmVscy1ncm91cFwiKTtudWxsIT09ciYmKHIuc3R5bGUub3BhY2l0eT0xKX19LHtrZXk6XCJkcmF3U3Bva2VzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXRoaXMudyxhPW5ldyBtKHRoaXMuY3R4KSxzPWkuY29uZmlnLnBsb3RPcHRpb25zLnBvbGFyQXJlYS5zcG9rZXM7aWYoMCE9PXMuc3Ryb2tlV2lkdGgpe2Zvcih2YXIgcj1bXSxvPTM2MC9pLmdsb2JhbHMuc2VyaWVzLmxlbmd0aCxuPTA7bjxpLmdsb2JhbHMuc2VyaWVzLmxlbmd0aDtuKyspci5wdXNoKHgucG9sYXJUb0NhcnRlc2lhbih0aGlzLmNlbnRlclgsdGhpcy5jZW50ZXJZLGkuZ2xvYmFscy5yYWRpYWxTaXplLGkuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5zdGFydEFuZ2xlK28qbikpO3IuZm9yRWFjaCgoZnVuY3Rpb24oaSxyKXt2YXIgbz1hLmRyYXdMaW5lKGkueCxpLnksZS5jZW50ZXJYLGUuY2VudGVyWSxBcnJheS5pc0FycmF5KHMuY29ubmVjdG9yQ29sb3JzKT9zLmNvbm5lY3RvckNvbG9yc1tyXTpzLmNvbm5lY3RvckNvbG9ycyk7dC5hZGQobyl9KSl9fX0se2tleTpcInJldmVydERhdGFMYWJlbHNJbm5lclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLHM9dGhpcy53LHI9cy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWRhdGFsYWJlbHMtZ3JvdXBcIiksbz0hMSxuPXMuZ2xvYmFscy5kb20uYmFzZUVsLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJhcGV4Y2hhcnRzLXBpZS1hcmVhXCIpLGw9ZnVuY3Rpb24odCl7dmFyIGk9dC5tYWtlU2xpY2VPdXQscz10LnByaW50TGFiZWw7QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChuLChmdW5jdGlvbih0KXtcInRydWVcIj09PXQuZ2V0QXR0cmlidXRlKFwiZGF0YTpwaWVDbGlja2VkXCIpJiYoaSYmKG89ITApLHMmJmEucHJpbnREYXRhTGFiZWxzSW5uZXIodCxlKSl9KSl9O2lmKGwoe21ha2VTbGljZU91dDohMCxwcmludExhYmVsOiExfSksZS50b3RhbC5zaG93JiZzLmdsb2JhbHMuc2VyaWVzLmxlbmd0aD4xKW8mJiFlLnRvdGFsLnNob3dBbHdheXM/bCh7bWFrZVNsaWNlT3V0OiExLHByaW50TGFiZWw6ITB9KTp0aGlzLnByaW50SW5uZXJMYWJlbHMoZSxlLnRvdGFsLmxhYmVsLGUudG90YWwuZm9ybWF0dGVyKHMpKTtlbHNlIGlmKGwoe21ha2VTbGljZU91dDohMSxwcmludExhYmVsOiEwfSksIW8paWYocy5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50cy5sZW5ndGgmJnMuZ2xvYmFscy5zZXJpZXMubGVuZ3RoPjEpaWYocy5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1swXS5sZW5ndGg+MCl7dmFyIGg9cy5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1swXSxjPXMuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1cIi5jb25jYXQodGhpcy5jaGFydFR5cGUudG9Mb3dlckNhc2UoKSxcIi1zbGljZS1cIikuY29uY2F0KGgpKTt0aGlzLnByaW50RGF0YUxhYmVsc0lubmVyKGMsZSl9ZWxzZSByJiZzLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzLmxlbmd0aCYmMD09PXMuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbMF0ubGVuZ3RoJiYoci5zdHlsZS5vcGFjaXR5PTApO2Vsc2UgciYmcy5nbG9iYWxzLnNlcmllcy5sZW5ndGg+MSYmKHIuc3R5bGUub3BhY2l0eT0wKX19XSksdH0oKSxQdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLmNoYXJ0VHlwZT10aGlzLncuY29uZmlnLmNoYXJ0LnR5cGUsdGhpcy5pbml0aWFsQW5pbT10aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZCx0aGlzLmR5bmFtaWNBbmltPXRoaXMuaW5pdGlhbEFuaW0mJnRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQsdGhpcy5hbmltRHVyPTA7dmFyIGk9dGhpcy53O3RoaXMuZ3JhcGhpY3M9bmV3IG0odGhpcy5jdHgpLHRoaXMubGluZUNvbG9yQXJyPXZvaWQgMCE9PWkuZ2xvYmFscy5zdHJva2UuY29sb3JzP2kuZ2xvYmFscy5zdHJva2UuY29sb3JzOmkuZ2xvYmFscy5jb2xvcnMsdGhpcy5kZWZhdWx0U2l6ZT1pLmdsb2JhbHMuc3ZnSGVpZ2h0PGkuZ2xvYmFscy5zdmdXaWR0aD9pLmdsb2JhbHMuZ3JpZEhlaWdodCsxLjUqaS5nbG9iYWxzLmdvbGRlblBhZGRpbmc6aS5nbG9iYWxzLmdyaWRXaWR0aCx0aGlzLmlzTG9nPWkuY29uZmlnLnlheGlzWzBdLmxvZ2FyaXRobWljLHRoaXMuY29yZVV0aWxzPW5ldyB5KHRoaXMuY3R4KSx0aGlzLm1heFZhbHVlPXRoaXMuaXNMb2c/dGhpcy5jb3JlVXRpbHMuZ2V0TG9nVmFsKGkuZ2xvYmFscy5tYXhZLDApOmkuZ2xvYmFscy5tYXhZLHRoaXMubWluVmFsdWU9dGhpcy5pc0xvZz90aGlzLmNvcmVVdGlscy5nZXRMb2dWYWwodGhpcy53Lmdsb2JhbHMubWluWSwwKTppLmdsb2JhbHMubWluWSx0aGlzLnBvbHlnb25zPWkuY29uZmlnLnBsb3RPcHRpb25zLnJhZGFyLnBvbHlnb25zLHRoaXMuc3Ryb2tlV2lkdGg9aS5jb25maWcuc3Ryb2tlLnNob3c/aS5jb25maWcuc3Ryb2tlLndpZHRoOjAsdGhpcy5zaXplPXRoaXMuZGVmYXVsdFNpemUvMi4xLXRoaXMuc3Ryb2tlV2lkdGgtaS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5ibHVyLGkuY29uZmlnLnhheGlzLmxhYmVscy5zaG93JiYodGhpcy5zaXplPXRoaXMuc2l6ZS1pLmdsb2JhbHMueEF4aXNMYWJlbHNXaWR0aC8xLjc1KSx2b2lkIDAhPT1pLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRhci5zaXplJiYodGhpcy5zaXplPWkuY29uZmlnLnBsb3RPcHRpb25zLnJhZGFyLnNpemUpLHRoaXMuZGF0YVJhZGl1c09mUGVyY2VudD1bXSx0aGlzLmRhdGFSYWRpdXM9W10sdGhpcy5hbmdsZUFycj1bXSx0aGlzLnlheGlzTGFiZWxzVGV4dHNQb3M9W119cmV0dXJuIHIodCxbe2tleTpcImRyYXdcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgaT10aGlzLGE9dGhpcy53LHM9bmV3IFIodGhpcy5jdHgpLHI9W10sbz1uZXcgTyh0aGlzLmN0eCk7dC5sZW5ndGgmJih0aGlzLmRhdGFQb2ludHNMZW49dFthLmdsb2JhbHMubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoKSx0aGlzLmRpc0FuZ2xlPTIqTWF0aC5QSS90aGlzLmRhdGFQb2ludHNMZW47dmFyIG49YS5nbG9iYWxzLmdyaWRXaWR0aC8yLGw9YS5nbG9iYWxzLmdyaWRIZWlnaHQvMixoPW4rYS5jb25maWcucGxvdE9wdGlvbnMucmFkYXIub2Zmc2V0WCxjPWwrYS5jb25maWcucGxvdE9wdGlvbnMucmFkYXIub2Zmc2V0WSxkPXRoaXMuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1yYWRhci1zZXJpZXMgYXBleGNoYXJ0cy1wbG90LXNlcmllc1wiLHRyYW5zZm9ybTpcInRyYW5zbGF0ZShcIi5jb25jYXQoaHx8MCxcIiwgXCIpLmNvbmNhdChjfHwwLFwiKVwiKX0pLGc9W10sdT1udWxsLHA9bnVsbDtpZih0aGlzLnlheGlzTGFiZWxzPXRoaXMuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy15YXhpc1wifSksdC5mb3JFYWNoKChmdW5jdGlvbih0LG4pe3ZhciBsPXQubGVuZ3RoPT09YS5nbG9iYWxzLmRhdGFQb2ludHMsaD1pLmdyYXBoaWNzLmdyb3VwKCkuYXR0cih7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllc1wiLFwiZGF0YTpsb25nZXN0U2VyaWVzXCI6bCxzZXJpZXNOYW1lOnguZXNjYXBlU3RyaW5nKGEuZ2xvYmFscy5zZXJpZXNOYW1lc1tuXSkscmVsOm4rMSxcImRhdGE6cmVhbEluZGV4XCI6bn0pO2kuZGF0YVJhZGl1c09mUGVyY2VudFtuXT1bXSxpLmRhdGFSYWRpdXNbbl09W10saS5hbmdsZUFycltuXT1bXSx0LmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dmFyIGE9TWF0aC5hYnMoaS5tYXhWYWx1ZS1pLm1pblZhbHVlKTt0Kz1NYXRoLmFicyhpLm1pblZhbHVlKSxpLmlzTG9nJiYodD1pLmNvcmVVdGlscy5nZXRMb2dWYWwodCwwKSksaS5kYXRhUmFkaXVzT2ZQZXJjZW50W25dW2VdPXQvYSxpLmRhdGFSYWRpdXNbbl1bZV09aS5kYXRhUmFkaXVzT2ZQZXJjZW50W25dW2VdKmkuc2l6ZSxpLmFuZ2xlQXJyW25dW2VdPWUqaS5kaXNBbmdsZX0pKSxnPWkuZ2V0RGF0YVBvaW50c1BvcyhpLmRhdGFSYWRpdXNbbl0saS5hbmdsZUFycltuXSk7dmFyIGM9aS5jcmVhdGVQYXRocyhnLHt4OjAseTowfSk7dT1pLmdyYXBoaWNzLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMtd3JhcCBhcGV4Y2hhcnRzLWVsZW1lbnQtaGlkZGVuXCJ9KSxwPWkuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhbGFiZWxzXCIsXCJkYXRhOnJlYWxJbmRleFwiOm59KSxhLmdsb2JhbHMuZGVsYXllZEVsZW1lbnRzLnB1c2goe2VsOnUubm9kZSxpbmRleDpufSk7dmFyIGQ9e2k6bixyZWFsSW5kZXg6bixhbmltYXRpb25EZWxheTpuLGluaXRpYWxTcGVlZDphLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLnNwZWVkLGRhdGFDaGFuZ2VTcGVlZDphLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uc3BlZWQsY2xhc3NOYW1lOlwiYXBleGNoYXJ0cy1yYWRhclwiLHNob3VsZENsaXBUb0dyaWQ6ITEsYmluZEV2ZW50c09uUGF0aHM6ITEsc3Ryb2tlOmEuZ2xvYmFscy5zdHJva2UuY29sb3JzW25dLHN0cm9rZUxpbmVDYXA6YS5jb25maWcuc3Ryb2tlLmxpbmVDYXB9LGY9bnVsbDthLmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGg+MCYmKGY9aS5nZXRQcmV2aW91c1BhdGgobikpO2Zvcih2YXIgYj0wO2I8Yy5saW5lUGF0aHNUby5sZW5ndGg7YisrKXt2YXIgbT1pLmdyYXBoaWNzLnJlbmRlclBhdGhzKGUoZSh7fSxkKSx7fSx7cGF0aEZyb206bnVsbD09PWY/Yy5saW5lUGF0aHNGcm9tW2JdOmYscGF0aFRvOmMubGluZVBhdGhzVG9bYl0sc3Ryb2tlV2lkdGg6QXJyYXkuaXNBcnJheShpLnN0cm9rZVdpZHRoKT9pLnN0cm9rZVdpZHRoW25dOmkuc3Ryb2tlV2lkdGgsZmlsbDpcIm5vbmVcIixkcmF3U2hhZG93OiExfSkpO2guYWRkKG0pO3ZhciB5PXMuZmlsbFBhdGgoe3Nlcmllc051bWJlcjpufSksdz1pLmdyYXBoaWNzLnJlbmRlclBhdGhzKGUoZSh7fSxkKSx7fSx7cGF0aEZyb206bnVsbD09PWY/Yy5hcmVhUGF0aHNGcm9tW2JdOmYscGF0aFRvOmMuYXJlYVBhdGhzVG9bYl0sc3Ryb2tlV2lkdGg6MCxmaWxsOnksZHJhd1NoYWRvdzohMX0pKTtpZihhLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWQpe3ZhciBrPW5ldyB2KGkuY3R4KSxBPWEuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3c7ay5kcm9wU2hhZG93KHcsT2JqZWN0LmFzc2lnbih7fSxBLHtub1VzZXJTcGFjZU9uVXNlOiEwfSksbil9aC5hZGQodyl9dC5mb3JFYWNoKChmdW5jdGlvbih0LHMpe3ZhciByPW5ldyBEKGkuY3R4KS5nZXRNYXJrZXJDb25maWcoe2Nzc0NsYXNzOlwiYXBleGNoYXJ0cy1tYXJrZXJcIixzZXJpZXNJbmRleDpuLGRhdGFQb2ludEluZGV4OnN9KSxsPWkuZ3JhcGhpY3MuZHJhd01hcmtlcihnW3NdLngsZ1tzXS55LHIpO2wuYXR0cihcInJlbFwiLHMpLGwuYXR0cihcImpcIixzKSxsLmF0dHIoXCJpbmRleFwiLG4pLGwubm9kZS5zZXRBdHRyaWJ1dGUoXCJkZWZhdWx0LW1hcmtlci1zaXplXCIsci5wU2l6ZSk7dmFyIGM9aS5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzXCJ9KTtjJiZjLmFkZChsKSx1LmFkZChjKSxoLmFkZCh1KTt2YXIgZD1hLmNvbmZpZy5kYXRhTGFiZWxzO2lmKGQuZW5hYmxlZCl7dmFyIGY9ZC5mb3JtYXR0ZXIoYS5nbG9iYWxzLnNlcmllc1tuXVtzXSx7c2VyaWVzSW5kZXg6bixkYXRhUG9pbnRJbmRleDpzLHc6YX0pO28ucGxvdERhdGFMYWJlbHNUZXh0KHt4Omdbc10ueCx5Omdbc10ueSx0ZXh0OmYsdGV4dEFuY2hvcjpcIm1pZGRsZVwiLGk6bixqOm4scGFyZW50OnAsb2Zmc2V0Q29ycmVjdGlvbjohMSxkYXRhTGFiZWxzQ29uZmlnOmUoe30sZCl9KX1oLmFkZChwKX0pKSxyLnB1c2goaCl9KSksdGhpcy5kcmF3UG9seWdvbnMoe3BhcmVudDpkfSksYS5jb25maWcueGF4aXMubGFiZWxzLnNob3cpe3ZhciBmPXRoaXMuZHJhd1hBeGlzVGV4dHMoKTtkLmFkZChmKX1yZXR1cm4gci5mb3JFYWNoKChmdW5jdGlvbih0KXtkLmFkZCh0KX0pKSxkLmFkZCh0aGlzLnlheGlzTGFiZWxzKSxkfX0se2tleTpcImRyYXdQb2x5Z29uc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLGk9dGhpcy53LGE9dC5wYXJlbnQscz1uZXcgQ3QodGhpcy5jdHgpLHI9aS5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ucmVzdWx0LnJldmVyc2UoKSxvPXIubGVuZ3RoLG49W10sbD10aGlzLnNpemUvKG8tMSksaD0wO2g8bztoKyspbltoXT1sKmg7bi5yZXZlcnNlKCk7dmFyIGM9W10sZD1bXTtuLmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7dmFyIGE9eC5nZXRQb2x5Z29uUG9zKHQsZS5kYXRhUG9pbnRzTGVuKSxzPVwiXCI7YS5mb3JFYWNoKChmdW5jdGlvbih0LGEpe2lmKDA9PT1pKXt2YXIgcj1lLmdyYXBoaWNzLmRyYXdMaW5lKHQueCx0LnksMCwwLEFycmF5LmlzQXJyYXkoZS5wb2x5Z29ucy5jb25uZWN0b3JDb2xvcnMpP2UucG9seWdvbnMuY29ubmVjdG9yQ29sb3JzW2FdOmUucG9seWdvbnMuY29ubmVjdG9yQ29sb3JzKTtkLnB1c2gocil9MD09PWEmJmUueWF4aXNMYWJlbHNUZXh0c1Bvcy5wdXNoKHt4OnQueCx5OnQueX0pLHMrPXQueCtcIixcIit0LnkrXCIgXCJ9KSksYy5wdXNoKHMpfSkpLGMuZm9yRWFjaCgoZnVuY3Rpb24odCxzKXt2YXIgcj1lLnBvbHlnb25zLnN0cm9rZUNvbG9ycyxvPWUucG9seWdvbnMuc3Ryb2tlV2lkdGgsbj1lLmdyYXBoaWNzLmRyYXdQb2x5Z29uKHQsQXJyYXkuaXNBcnJheShyKT9yW3NdOnIsQXJyYXkuaXNBcnJheShvKT9vW3NdOm8saS5nbG9iYWxzLnJhZGFyUG9seWdvbnMuZmlsbC5jb2xvcnNbc10pO2EuYWRkKG4pfSkpLGQuZm9yRWFjaCgoZnVuY3Rpb24odCl7YS5hZGQodCl9KSksaS5jb25maWcueWF4aXNbMF0uc2hvdyYmdGhpcy55YXhpc0xhYmVsc1RleHRzUG9zLmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7dmFyIGE9cy5kcmF3WUF4aXNUZXh0cyh0LngsdC55LGkscltpXSk7ZS55YXhpc0xhYmVscy5hZGQoYSl9KSl9fSx7a2V5OlwiZHJhd1hBeGlzVGV4dHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsaT10aGlzLncsYT1pLmNvbmZpZy54YXhpcy5sYWJlbHMscz10aGlzLmdyYXBoaWNzLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteGF4aXNcIn0pLHI9eC5nZXRQb2x5Z29uUG9zKHRoaXMuc2l6ZSx0aGlzLmRhdGFQb2ludHNMZW4pO3JldHVybiBpLmdsb2JhbHMubGFiZWxzLmZvckVhY2goKGZ1bmN0aW9uKG8sbil7dmFyIGw9aS5jb25maWcueGF4aXMubGFiZWxzLmZvcm1hdHRlcixoPW5ldyBPKHQuY3R4KTtpZihyW25dKXt2YXIgYz10LmdldFRleHRQb3MocltuXSx0LnNpemUpLGQ9bChvLHtzZXJpZXNJbmRleDotMSxkYXRhUG9pbnRJbmRleDpuLHc6aX0pO2gucGxvdERhdGFMYWJlbHNUZXh0KHt4OmMubmV3WCx5OmMubmV3WSx0ZXh0OmQsdGV4dEFuY2hvcjpjLnRleHRBbmNob3IsaTpuLGo6bixwYXJlbnQ6cyxjb2xvcjpBcnJheS5pc0FycmF5KGEuc3R5bGUuY29sb3JzKSYmYS5zdHlsZS5jb2xvcnNbbl0/YS5zdHlsZS5jb2xvcnNbbl06XCIjYThhOGE4XCIsZGF0YUxhYmVsc0NvbmZpZzplKHt0ZXh0QW5jaG9yOmMudGV4dEFuY2hvcixkcm9wU2hhZG93OntlbmFibGVkOiExfX0sYSksb2Zmc2V0Q29ycmVjdGlvbjohMX0pfX0pKSxzfX0se2tleTpcImNyZWF0ZVBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLGE9W10scz1bXSxyPVtdLG89W107aWYodC5sZW5ndGgpe3M9W3RoaXMuZ3JhcGhpY3MubW92ZShlLngsZS55KV0sbz1bdGhpcy5ncmFwaGljcy5tb3ZlKGUueCxlLnkpXTt2YXIgbj10aGlzLmdyYXBoaWNzLm1vdmUodFswXS54LHRbMF0ueSksbD10aGlzLmdyYXBoaWNzLm1vdmUodFswXS54LHRbMF0ueSk7dC5mb3JFYWNoKChmdW5jdGlvbihlLGEpe24rPWkuZ3JhcGhpY3MubGluZShlLngsZS55KSxsKz1pLmdyYXBoaWNzLmxpbmUoZS54LGUueSksYT09PXQubGVuZ3RoLTEmJihuKz1cIlpcIixsKz1cIlpcIil9KSksYS5wdXNoKG4pLHIucHVzaChsKX1yZXR1cm57bGluZVBhdGhzRnJvbTpzLGxpbmVQYXRoc1RvOmEsYXJlYVBhdGhzRnJvbTpvLGFyZWFQYXRoc1RvOnJ9fX0se2tleTpcImdldFRleHRQb3NcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPVwibWlkZGxlXCIsYT10Lngscz10Lnk7cmV0dXJuIE1hdGguYWJzKHQueCk+PTEwP3QueD4wPyhpPVwic3RhcnRcIixhKz0xMCk6dC54PDAmJihpPVwiZW5kXCIsYS09MTApOmk9XCJtaWRkbGVcIixNYXRoLmFicyh0LnkpPj1lLTEwJiYodC55PDA/cy09MTA6dC55PjAmJihzKz0xMCkpLHt0ZXh0QW5jaG9yOmksbmV3WDphLG5ld1k6c319fSx7a2V5OlwiZ2V0UHJldmlvdXNQYXRoXCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudyxpPW51bGwsYT0wO2E8ZS5nbG9iYWxzLnByZXZpb3VzUGF0aHMubGVuZ3RoO2ErKyl7dmFyIHM9ZS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbYV07cy5wYXRocy5sZW5ndGg+MCYmcGFyc2VJbnQocy5yZWFsSW5kZXgsMTApPT09cGFyc2VJbnQodCwxMCkmJnZvaWQgMCE9PWUuZ2xvYmFscy5wcmV2aW91c1BhdGhzW2FdLnBhdGhzWzBdJiYoaT1lLmdsb2JhbHMucHJldmlvdXNQYXRoc1thXS5wYXRoc1swXS5kKX1yZXR1cm4gaX19LHtrZXk6XCJnZXREYXRhUG9pbnRzUG9zXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06dGhpcy5kYXRhUG9pbnRzTGVuO3Q9dHx8W10sZT1lfHxbXTtmb3IodmFyIGE9W10scz0wO3M8aTtzKyspe3ZhciByPXt9O3IueD10W3NdKk1hdGguc2luKGVbc10pLHIueT0tdFtzXSpNYXRoLmNvcyhlW3NdKSxhLnB1c2gocil9cmV0dXJuIGF9fV0pLHR9KCksSXQ9ZnVuY3Rpb24odCl7bihpLEx0KTt2YXIgZT1kKGkpO2Z1bmN0aW9uIGkodCl7dmFyIHM7YSh0aGlzLGkpLChzPWUuY2FsbCh0aGlzLHQpKS5jdHg9dCxzLnc9dC53LHMuYW5pbUJlZ2luQXJyPVswXSxzLmFuaW1EdXI9MDt2YXIgcj1zLnc7cmV0dXJuIHMuc3RhcnRBbmdsZT1yLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuc3RhcnRBbmdsZSxzLmVuZEFuZ2xlPXIuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5lbmRBbmdsZSxzLnRvdGFsQW5nbGU9TWF0aC5hYnMoci5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmVuZEFuZ2xlLXIuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5zdGFydEFuZ2xlKSxzLnRyYWNrU3RhcnRBbmdsZT1yLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIudHJhY2suc3RhcnRBbmdsZSxzLnRyYWNrRW5kQW5nbGU9ci5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLnRyYWNrLmVuZEFuZ2xlLHMuZG9udXREYXRhTGFiZWxzPXMudy5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmRhdGFMYWJlbHMscy5yYWRpYWxEYXRhTGFiZWxzPXMuZG9udXREYXRhTGFiZWxzLHMudHJhY2tTdGFydEFuZ2xlfHwocy50cmFja1N0YXJ0QW5nbGU9cy5zdGFydEFuZ2xlKSxzLnRyYWNrRW5kQW5nbGV8fChzLnRyYWNrRW5kQW5nbGU9cy5lbmRBbmdsZSksMzYwPT09cy5lbmRBbmdsZSYmKHMuZW5kQW5nbGU9MzU5Ljk5KSxzLm1hcmdpbj1wYXJzZUludChyLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIudHJhY2subWFyZ2luLDEwKSxzfXJldHVybiByKGksW3trZXk6XCJkcmF3XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9bmV3IG0odGhpcy5jdHgpLGE9aS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXJhZGlhbGJhclwifSk7aWYoZS5nbG9iYWxzLm5vRGF0YSlyZXR1cm4gYTt2YXIgcz1pLmdyb3VwKCkscj10aGlzLmRlZmF1bHRTaXplLzIsbz1lLmdsb2JhbHMuZ3JpZFdpZHRoLzIsbj10aGlzLmRlZmF1bHRTaXplLzIuMDU7ZS5jb25maWcuY2hhcnQuc3BhcmtsaW5lLmVuYWJsZWR8fChuPW4tZS5jb25maWcuc3Ryb2tlLndpZHRoLWUuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuYmx1cik7dmFyIGw9ZS5nbG9iYWxzLmZpbGwuY29sb3JzO2lmKGUuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci50cmFjay5zaG93KXt2YXIgaD10aGlzLmRyYXdUcmFja3Moe3NpemU6bixjZW50ZXJYOm8sY2VudGVyWTpyLGNvbG9yQXJyOmwsc2VyaWVzOnR9KTtzLmFkZChoKX12YXIgYz10aGlzLmRyYXdBcmNzKHtzaXplOm4sY2VudGVyWDpvLGNlbnRlclk6cixjb2xvckFycjpsLHNlcmllczp0fSksZD0zNjA7ZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLnN0YXJ0QW5nbGU8MCYmKGQ9dGhpcy50b3RhbEFuZ2xlKTt2YXIgZz0oMzYwLWQpLzM2MDtpZihlLmdsb2JhbHMucmFkaWFsU2l6ZT1uLW4qZyx0aGlzLnJhZGlhbERhdGFMYWJlbHMudmFsdWUuc2hvdyl7dmFyIHU9TWF0aC5tYXgodGhpcy5yYWRpYWxEYXRhTGFiZWxzLnZhbHVlLm9mZnNldFksdGhpcy5yYWRpYWxEYXRhTGFiZWxzLm5hbWUub2Zmc2V0WSk7ZS5nbG9iYWxzLnJhZGlhbFNpemUrPXUqZ31yZXR1cm4gcy5hZGQoYy5nKSxcImZyb250XCI9PT1lLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LnBvc2l0aW9uJiYoYy5nLmFkZChjLmVsSG9sbG93KSxjLmRhdGFMYWJlbHMmJmMuZy5hZGQoYy5kYXRhTGFiZWxzKSksYS5hZGQocyksYX19LHtrZXk6XCJkcmF3VHJhY2tzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9bmV3IG0odGhpcy5jdHgpLGE9aS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXRyYWNrc1wifSkscz1uZXcgdih0aGlzLmN0eCkscj1uZXcgUih0aGlzLmN0eCksbz10aGlzLmdldFN0cm9rZVdpZHRoKHQpO3Quc2l6ZT10LnNpemUtby8yO2Zvcih2YXIgbj0wO248dC5zZXJpZXMubGVuZ3RoO24rKyl7dmFyIGw9aS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXJhZGlhbGJhci10cmFjayBhcGV4Y2hhcnRzLXRyYWNrXCJ9KTthLmFkZChsKSxsLmF0dHIoe3JlbDpuKzF9KSx0LnNpemU9dC5zaXplLW8tdGhpcy5tYXJnaW47dmFyIGg9ZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLnRyYWNrLGM9ci5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOjAsc2l6ZTp0LnNpemUsZmlsbENvbG9yczpBcnJheS5pc0FycmF5KGguYmFja2dyb3VuZCk/aC5iYWNrZ3JvdW5kW25dOmguYmFja2dyb3VuZCxzb2xpZDohMH0pLGQ9dGhpcy50cmFja1N0YXJ0QW5nbGUsZz10aGlzLnRyYWNrRW5kQW5nbGU7TWF0aC5hYnMoZykrTWF0aC5hYnMoZCk+PTM2MCYmKGc9MzYwLU1hdGguYWJzKHRoaXMuc3RhcnRBbmdsZSktLjEpO3ZhciB1PWkuZHJhd1BhdGgoe2Q6XCJcIixzdHJva2U6YyxzdHJva2VXaWR0aDpvKnBhcnNlSW50KGguc3Ryb2tlV2lkdGgsMTApLzEwMCxmaWxsOlwibm9uZVwiLHN0cm9rZU9wYWNpdHk6aC5vcGFjaXR5LGNsYXNzZXM6XCJhcGV4Y2hhcnRzLXJhZGlhbGJhci1hcmVhXCJ9KTtpZihoLmRyb3BTaGFkb3cuZW5hYmxlZCl7dmFyIHA9aC5kcm9wU2hhZG93O3MuZHJvcFNoYWRvdyh1LHApfWwuYWRkKHUpLHUuYXR0cihcImlkXCIsXCJhcGV4Y2hhcnRzLXJhZGlhbGJhclRyYWNrLVwiK24pLHRoaXMuYW5pbWF0ZVBhdGhzKHUse2NlbnRlclg6dC5jZW50ZXJYLGNlbnRlclk6dC5jZW50ZXJZLGVuZEFuZ2xlOmcsc3RhcnRBbmdsZTpkLHNpemU6dC5zaXplLGk6bix0b3RhbEl0ZW1zOjIsYW5pbUJlZ2luQXJyOjAsZHVyOjAsaXNUcmFjazohMCxlYXNpbmc6ZS5nbG9iYWxzLmVhc2luZ30pfXJldHVybiBhfX0se2tleTpcImRyYXdBcmNzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9bmV3IG0odGhpcy5jdHgpLGE9bmV3IFIodGhpcy5jdHgpLHM9bmV3IHYodGhpcy5jdHgpLHI9aS5ncm91cCgpLG89dGhpcy5nZXRTdHJva2VXaWR0aCh0KTt0LnNpemU9dC5zaXplLW8vMjt2YXIgbj1lLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmJhY2tncm91bmQsbD10LnNpemUtbyp0LnNlcmllcy5sZW5ndGgtdGhpcy5tYXJnaW4qdC5zZXJpZXMubGVuZ3RoLW8qcGFyc2VJbnQoZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLnRyYWNrLnN0cm9rZVdpZHRoLDEwKS8xMDAvMixoPWwtZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5tYXJnaW47dm9pZCAwIT09ZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5pbWFnZSYmKG49dGhpcy5kcmF3SG9sbG93SW1hZ2UodCxyLGwsbikpO3ZhciBjPXRoaXMuZHJhd0hvbGxvdyh7c2l6ZTpoLGNlbnRlclg6dC5jZW50ZXJYLGNlbnRlclk6dC5jZW50ZXJZLGZpbGw6bnx8XCJ0cmFuc3BhcmVudFwifSk7aWYoZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5kcm9wU2hhZG93LmVuYWJsZWQpe3ZhciBkPWUuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuZHJvcFNoYWRvdztzLmRyb3BTaGFkb3coYyxkKX12YXIgZz0xOyF0aGlzLnJhZGlhbERhdGFMYWJlbHMudG90YWwuc2hvdyYmZS5nbG9iYWxzLnNlcmllcy5sZW5ndGg+MSYmKGc9MCk7dmFyIHU9bnVsbDt0aGlzLnJhZGlhbERhdGFMYWJlbHMuc2hvdyYmKHU9dGhpcy5yZW5kZXJJbm5lckRhdGFMYWJlbHModGhpcy5yYWRpYWxEYXRhTGFiZWxzLHtob2xsb3dTaXplOmwsY2VudGVyWDp0LmNlbnRlclgsY2VudGVyWTp0LmNlbnRlclksb3BhY2l0eTpnfSkpLFwiYmFja1wiPT09ZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5wb3NpdGlvbiYmKHIuYWRkKGMpLHUmJnIuYWRkKHUpKTt2YXIgcD0hMTtlLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaW52ZXJzZU9yZGVyJiYocD0hMCk7Zm9yKHZhciBmPXA/dC5zZXJpZXMubGVuZ3RoLTE6MDtwP2Y+PTA6Zjx0LnNlcmllcy5sZW5ndGg7cD9mLS06ZisrKXt2YXIgYj1pLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzIGFwZXhjaGFydHMtcmFkaWFsLXNlcmllc1wiLHNlcmllc05hbWU6eC5lc2NhcGVTdHJpbmcoZS5nbG9iYWxzLnNlcmllc05hbWVzW2ZdKX0pO3IuYWRkKGIpLGIuYXR0cih7cmVsOmYrMSxcImRhdGE6cmVhbEluZGV4XCI6Zn0pLHRoaXMuY3R4LnNlcmllcy5hZGRDb2xsYXBzZWRDbGFzc1RvU2VyaWVzKGIsZiksdC5zaXplPXQuc2l6ZS1vLXRoaXMubWFyZ2luO3ZhciB5PWEuZmlsbFBhdGgoe3Nlcmllc051bWJlcjpmLHNpemU6dC5zaXplLHZhbHVlOnQuc2VyaWVzW2ZdfSksdz10aGlzLnN0YXJ0QW5nbGUsaz12b2lkIDAsQT14Lm5lZ1RvWmVybyh0LnNlcmllc1tmXT4xMDA/MTAwOnQuc2VyaWVzW2ZdKS8xMDAsUz1NYXRoLnJvdW5kKHRoaXMudG90YWxBbmdsZSpBKSt0aGlzLnN0YXJ0QW5nbGUsQz12b2lkIDA7ZS5nbG9iYWxzLmRhdGFDaGFuZ2VkJiYoaz10aGlzLnN0YXJ0QW5nbGUsQz1NYXRoLnJvdW5kKHRoaXMudG90YWxBbmdsZSp4Lm5lZ1RvWmVybyhlLmdsb2JhbHMucHJldmlvdXNQYXRoc1tmXSkvMTAwKStrKSxNYXRoLmFicyhTKStNYXRoLmFicyh3KT49MzYwJiYoUy09LjAxKSxNYXRoLmFicyhDKStNYXRoLmFicyhrKT49MzYwJiYoQy09LjAxKTt2YXIgTD1TLXcsUD1BcnJheS5pc0FycmF5KGUuY29uZmlnLnN0cm9rZS5kYXNoQXJyYXkpP2UuY29uZmlnLnN0cm9rZS5kYXNoQXJyYXlbZl06ZS5jb25maWcuc3Ryb2tlLmRhc2hBcnJheSxJPWkuZHJhd1BhdGgoe2Q6XCJcIixzdHJva2U6eSxzdHJva2VXaWR0aDpvLGZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6ZS5jb25maWcuZmlsbC5vcGFjaXR5LGNsYXNzZXM6XCJhcGV4Y2hhcnRzLXJhZGlhbGJhci1hcmVhIGFwZXhjaGFydHMtcmFkaWFsYmFyLXNsaWNlLVwiK2Ysc3Ryb2tlRGFzaEFycmF5OlB9KTtpZihtLnNldEF0dHJzKEkubm9kZSx7XCJkYXRhOmFuZ2xlXCI6TCxcImRhdGE6dmFsdWVcIjp0LnNlcmllc1tmXX0pLGUuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZCl7dmFyIFQ9ZS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdztzLmRyb3BTaGFkb3coSSxULGYpfXMuc2V0U2VsZWN0aW9uRmlsdGVyKEksMCxmKSx0aGlzLmFkZExpc3RlbmVycyhJLHRoaXMucmFkaWFsRGF0YUxhYmVscyksYi5hZGQoSSksSS5hdHRyKHtpbmRleDowLGo6Zn0pO3ZhciBNPTA7IXRoaXMuaW5pdGlhbEFuaW18fGUuZ2xvYmFscy5yZXNpemVkfHxlLmdsb2JhbHMuZGF0YUNoYW5nZWR8fChNPWUuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQpLGUuZ2xvYmFscy5kYXRhQ2hhbmdlZCYmKE09ZS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLnNwZWVkKSx0aGlzLmFuaW1EdXI9TS8oMS4yKnQuc2VyaWVzLmxlbmd0aCkrdGhpcy5hbmltRHVyLHRoaXMuYW5pbUJlZ2luQXJyLnB1c2godGhpcy5hbmltRHVyKSx0aGlzLmFuaW1hdGVQYXRocyhJLHtjZW50ZXJYOnQuY2VudGVyWCxjZW50ZXJZOnQuY2VudGVyWSxlbmRBbmdsZTpTLHN0YXJ0QW5nbGU6dyxwcmV2RW5kQW5nbGU6QyxwcmV2U3RhcnRBbmdsZTprLHNpemU6dC5zaXplLGk6Zix0b3RhbEl0ZW1zOjIsYW5pbUJlZ2luQXJyOnRoaXMuYW5pbUJlZ2luQXJyLGR1cjpNLHNob3VsZFNldFByZXZQYXRoczohMCxlYXNpbmc6ZS5nbG9iYWxzLmVhc2luZ30pfXJldHVybntnOnIsZWxIb2xsb3c6YyxkYXRhTGFiZWxzOnV9fX0se2tleTpcImRyYXdIb2xsb3dcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1uZXcgbSh0aGlzLmN0eCkuZHJhd0NpcmNsZSgyKnQuc2l6ZSk7cmV0dXJuIGUuYXR0cih7Y2xhc3M6XCJhcGV4Y2hhcnRzLXJhZGlhbGJhci1ob2xsb3dcIixjeDp0LmNlbnRlclgsY3k6dC5jZW50ZXJZLHI6dC5zaXplLGZpbGw6dC5maWxsfSksZX19LHtrZXk6XCJkcmF3SG9sbG93SW1hZ2VcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt2YXIgcz10aGlzLncscj1uZXcgUih0aGlzLmN0eCksbz14LnJhbmRvbUlkKCksbj1zLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmltYWdlO2lmKHMuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuaW1hZ2VDbGlwcGVkKXIuY2xpcHBlZEltZ0FyZWEoe3dpZHRoOmksaGVpZ2h0OmksaW1hZ2U6bixwYXR0ZXJuSUQ6XCJwYXR0ZXJuXCIuY29uY2F0KHMuZ2xvYmFscy5jdWlkKS5jb25jYXQobyl9KSxhPVwidXJsKCNwYXR0ZXJuXCIuY29uY2F0KHMuZ2xvYmFscy5jdWlkKS5jb25jYXQobyxcIilcIik7ZWxzZXt2YXIgbD1zLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmltYWdlV2lkdGgsaD1zLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmltYWdlSGVpZ2h0O2lmKHZvaWQgMD09PWwmJnZvaWQgMD09PWgpe3ZhciBjPXMuZ2xvYmFscy5kb20uUGFwZXIuaW1hZ2UobikubG9hZGVkKChmdW5jdGlvbihlKXt0aGlzLm1vdmUodC5jZW50ZXJYLWUud2lkdGgvMitzLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmltYWdlT2Zmc2V0WCx0LmNlbnRlclktZS5oZWlnaHQvMitzLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmltYWdlT2Zmc2V0WSl9KSk7ZS5hZGQoYyl9ZWxzZXt2YXIgZD1zLmdsb2JhbHMuZG9tLlBhcGVyLmltYWdlKG4pLmxvYWRlZCgoZnVuY3Rpb24oZSl7dGhpcy5tb3ZlKHQuY2VudGVyWC1sLzIrcy5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5pbWFnZU9mZnNldFgsdC5jZW50ZXJZLWgvMitzLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmltYWdlT2Zmc2V0WSksdGhpcy5zaXplKGwsaCl9KSk7ZS5hZGQoZCl9fXJldHVybiBhfX0se2tleTpcImdldFN0cm9rZVdpZHRoXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53O3JldHVybiB0LnNpemUqKDEwMC1wYXJzZUludChlLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LnNpemUsMTApKS8xMDAvKHQuc2VyaWVzLmxlbmd0aCsxKS10aGlzLm1hcmdpbn19XSksaX0oKSxUdD1mdW5jdGlvbih0KXtuKHMseXQpO3ZhciBpPWQocyk7ZnVuY3Rpb24gcygpe3JldHVybiBhKHRoaXMscyksaS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHIocyxbe2tleTpcImRyYXdcIix2YWx1ZTpmdW5jdGlvbih0LGkpe3ZhciBhPXRoaXMudyxzPW5ldyBtKHRoaXMuY3R4KTt0aGlzLnJhbmdlQmFyT3B0aW9ucz10aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLnJhbmdlQmFyLHRoaXMuc2VyaWVzPXQsdGhpcy5zZXJpZXNSYW5nZVN0YXJ0PWEuZ2xvYmFscy5zZXJpZXNSYW5nZVN0YXJ0LHRoaXMuc2VyaWVzUmFuZ2VFbmQ9YS5nbG9iYWxzLnNlcmllc1JhbmdlRW5kLHRoaXMuYmFySGVscGVycy5pbml0VmFyaWFibGVzKHQpO2Zvcih2YXIgcj1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtcmFuZ2ViYXItc2VyaWVzIGFwZXhjaGFydHMtcGxvdC1zZXJpZXNcIn0pLG89MDtvPHQubGVuZ3RoO28rKyl7dmFyIG4sbCxoLGM9dm9pZCAwLGQ9dm9pZCAwLGc9dm9pZCAwLHU9YS5nbG9iYWxzLmNvbWJvQ2hhcnRzP2lbb106byxwPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXNcIixzZXJpZXNOYW1lOnguZXNjYXBlU3RyaW5nKGEuZ2xvYmFscy5zZXJpZXNOYW1lc1t1XSkscmVsOm8rMSxcImRhdGE6cmVhbEluZGV4XCI6dX0pO3RoaXMuY3R4LnNlcmllcy5hZGRDb2xsYXBzZWRDbGFzc1RvU2VyaWVzKHAsdSksdFtvXS5sZW5ndGg+MCYmKHRoaXMudmlzaWJsZUk9dGhpcy52aXNpYmxlSSsxKTt2YXIgZj0wLGI9MDt0aGlzLnlSYXRpby5sZW5ndGg+MSYmKHRoaXMueWF4aXNJbmRleD11KTt2YXIgdj10aGlzLmJhckhlbHBlcnMuaW5pdGlhbFBvc2l0aW9ucygpO2Q9di55LGg9di56ZXJvVyxjPXYueCxiPXYuYmFyV2lkdGgsbj12LnhEaXZpc2lvbixsPXYuemVyb0g7Zm9yKHZhciB5PXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhbGFiZWxzXCIsXCJkYXRhOnJlYWxJbmRleFwiOnV9KSx3PXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1yYW5nZWJhci1nb2Fscy1tYXJrZXJzXCIsc3R5bGU6XCJwb2ludGVyLWV2ZW50czogbm9uZVwifSksaz0wO2s8YS5nbG9iYWxzLmRhdGFQb2ludHM7aysrKXt2YXIgQT10aGlzLmJhckhlbHBlcnMuZ2V0U3Ryb2tlV2lkdGgobyxrLHUpLFM9dGhpcy5zZXJpZXNSYW5nZVN0YXJ0W29dW2tdLEM9dGhpcy5zZXJpZXNSYW5nZUVuZFtvXVtrXSxMPW51bGwsUD1udWxsLEk9e3g6Yyx5OmQsc3Ryb2tlV2lkdGg6QSxlbFNlcmllczpwfTtpZihnPXYueURpdmlzaW9uLGY9di5iYXJIZWlnaHQsdGhpcy5pc0hvcml6b250YWwpe1A9ZCtmKnRoaXMudmlzaWJsZUk7dmFyIFQ9dGhpcy5zZXJpZXNMZW47YS5jb25maWcucGxvdE9wdGlvbnMuYmFyLnJhbmdlQmFyR3JvdXBSb3dzJiYoVD0xKTt2YXIgTT0oZy1mKlQpLzI7aWYodm9pZCAwPT09YS5jb25maWcuc2VyaWVzW29dLmRhdGFba10pYnJlYWs7aWYoYS5jb25maWcuc2VyaWVzW29dLmRhdGFba10ueCl7dmFyIFg9dGhpcy5kZXRlY3RPdmVybGFwcGluZ0JhcnMoe2k6byxqOmssYmFyWVBvc2l0aW9uOlAsc3J0eTpNLGJhckhlaWdodDpmLHlEaXZpc2lvbjpnLGluaXRQb3NpdGlvbnM6dn0pO2Y9WC5iYXJIZWlnaHQsUD1YLmJhcllQb3NpdGlvbn1iPShMPXRoaXMuZHJhd1JhbmdlQmFyUGF0aHMoZSh7aW5kZXhlczp7aTpvLGo6ayxyZWFsSW5kZXg6dX0sYmFySGVpZ2h0OmYsYmFyWVBvc2l0aW9uOlAsemVyb1c6aCx5RGl2aXNpb246Zyx5MTpTLHkyOkN9LEkpKSkuYmFyV2lkdGh9ZWxzZSBmPShMPXRoaXMuZHJhd1JhbmdlQ29sdW1uUGF0aHMoZSh7aW5kZXhlczp7aTpvLGo6ayxyZWFsSW5kZXg6dX0semVyb0g6bCxiYXJXaWR0aDpiLHhEaXZpc2lvbjpufSxJKSkpLmJhckhlaWdodDt2YXIgej10aGlzLmJhckhlbHBlcnMuZHJhd0dvYWxMaW5lKHtiYXJYUG9zaXRpb246TC5iYXJYUG9zaXRpb24sYmFyWVBvc2l0aW9uOlAsZ29hbFg6TC5nb2FsWCxnb2FsWTpMLmdvYWxZLGJhckhlaWdodDpmLGJhcldpZHRoOmJ9KTt6JiZ3LmFkZCh6KSxkPUwueSxjPUwueDt2YXIgRT10aGlzLmJhckhlbHBlcnMuZ2V0UGF0aEZpbGxDb2xvcih0LG8sayx1KSxZPWEuZ2xvYmFscy5zdHJva2UuY29sb3JzW3VdO3RoaXMucmVuZGVyU2VyaWVzKHtyZWFsSW5kZXg6dSxwYXRoRmlsbDpFLGxpbmVGaWxsOlksajprLGk6byx4OmMseTpkLHkxOlMseTI6QyxwYXRoRnJvbTpMLnBhdGhGcm9tLHBhdGhUbzpMLnBhdGhUbyxzdHJva2VXaWR0aDpBLGVsU2VyaWVzOnAsc2VyaWVzOnQsYmFySGVpZ2h0OmYsYmFyWVBvc2l0aW9uOlAsYmFyV2lkdGg6YixlbERhdGFMYWJlbHNXcmFwOnksZWxHb2Fsc01hcmtlcnM6dyx2aXNpYmxlU2VyaWVzOnRoaXMudmlzaWJsZUksdHlwZTpcInJhbmdlYmFyXCJ9KX1yLmFkZChwKX1yZXR1cm4gcn19LHtrZXk6XCJkZXRlY3RPdmVybGFwcGluZ0JhcnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmksaT10LmosYT10LmJhcllQb3NpdGlvbixzPXQuc3J0eSxyPXQuYmFySGVpZ2h0LG89dC55RGl2aXNpb24sbj10LmluaXRQb3NpdGlvbnMsbD10aGlzLncsaD1bXSxjPWwuY29uZmlnLnNlcmllc1tlXS5kYXRhW2ldLnJhbmdlTmFtZSxkPWwuY29uZmlnLnNlcmllc1tlXS5kYXRhW2ldLngsZz1sLmdsb2JhbHMubGFiZWxzLmluZGV4T2YoZCksdT1sLmdsb2JhbHMuc2VyaWVzUmFuZ2VbZV0uZmluZEluZGV4KChmdW5jdGlvbih0KXtyZXR1cm4gdC54PT09ZCYmdC5vdmVybGFwcy5sZW5ndGg+MH0pKTtyZXR1cm4gYT1sLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIucmFuZ2VCYXJHcm91cFJvd3M/cytvKmc6cytyKnRoaXMudmlzaWJsZUkrbypnLHU+LTEmJiFsLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIucmFuZ2VCYXJPdmVybGFwJiYoaD1sLmdsb2JhbHMuc2VyaWVzUmFuZ2VbZV1bdV0ub3ZlcmxhcHMpLmluZGV4T2YoYyk+LTEmJihhPShyPW4uYmFySGVpZ2h0L2gubGVuZ3RoKSp0aGlzLnZpc2libGVJK28qKDEwMC1wYXJzZUludCh0aGlzLmJhck9wdGlvbnMuYmFySGVpZ2h0LDEwKSkvMTAwLzIrcioodGhpcy52aXNpYmxlSStoLmluZGV4T2YoYykpK28qZykse2JhcllQb3NpdGlvbjphLGJhckhlaWdodDpyfX19LHtrZXk6XCJkcmF3UmFuZ2VDb2x1bW5QYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaW5kZXhlcyxpPXQueDt0LnN0cm9rZVdpZHRoO3ZhciBhPXQueERpdmlzaW9uLHM9dC5iYXJXaWR0aCxyPXQuemVyb0gsbz10aGlzLncsbj1lLmksbD1lLmosaD10aGlzLnlSYXRpb1t0aGlzLnlheGlzSW5kZXhdLGM9ZS5yZWFsSW5kZXgsZD10aGlzLmdldFJhbmdlVmFsdWUoYyxsKSxnPU1hdGgubWluKGQuc3RhcnQsZC5lbmQpLHU9TWF0aC5tYXgoZC5zdGFydCxkLmVuZCk7by5nbG9iYWxzLmlzWE51bWVyaWMmJihpPShvLmdsb2JhbHMuc2VyaWVzWFtuXVtsXS1vLmdsb2JhbHMubWluWCkvdGhpcy54UmF0aW8tcy8yKTt2YXIgcD1pK3MqdGhpcy52aXNpYmxlSTt2b2lkIDA9PT10aGlzLnNlcmllc1tuXVtsXXx8bnVsbD09PXRoaXMuc2VyaWVzW25dW2xdP2c9cjooZz1yLWcvaCx1PXItdS9oKTt2YXIgZj1NYXRoLmFicyh1LWcpLHg9dGhpcy5iYXJIZWxwZXJzLmdldENvbHVtblBhdGhzKHtiYXJYUG9zaXRpb246cCxiYXJXaWR0aDpzLHkxOmcseTI6dSxzdHJva2VXaWR0aDp0aGlzLnN0cm9rZVdpZHRoLHNlcmllczp0aGlzLnNlcmllc1JhbmdlRW5kLHJlYWxJbmRleDplLnJlYWxJbmRleCxpOmMsajpsLHc6b30pO3JldHVybiBvLmdsb2JhbHMuaXNYTnVtZXJpY3x8KGkrPWEpLHtwYXRoVG86eC5wYXRoVG8scGF0aEZyb206eC5wYXRoRnJvbSxiYXJIZWlnaHQ6Zix4OmkseTp1LGdvYWxZOnRoaXMuYmFySGVscGVycy5nZXRHb2FsVmFsdWVzKFwieVwiLG51bGwscixuLGwpLGJhclhQb3NpdGlvbjpwfX19LHtrZXk6XCJkcmF3UmFuZ2VCYXJQYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaW5kZXhlcyxpPXQueSxhPXQueTEscz10LnkyLHI9dC55RGl2aXNpb24sbz10LmJhckhlaWdodCxuPXQuYmFyWVBvc2l0aW9uLGw9dC56ZXJvVyxoPXRoaXMudyxjPWwrYS90aGlzLmludmVydGVkWVJhdGlvLGQ9bCtzL3RoaXMuaW52ZXJ0ZWRZUmF0aW8sZz1NYXRoLmFicyhkLWMpLHU9dGhpcy5iYXJIZWxwZXJzLmdldEJhcnBhdGhzKHtiYXJZUG9zaXRpb246bixiYXJIZWlnaHQ6byx4MTpjLHgyOmQsc3Ryb2tlV2lkdGg6dGhpcy5zdHJva2VXaWR0aCxzZXJpZXM6dGhpcy5zZXJpZXNSYW5nZUVuZCxpOmUucmVhbEluZGV4LHJlYWxJbmRleDplLnJlYWxJbmRleCxqOmUuaix3Omh9KTtyZXR1cm4gaC5nbG9iYWxzLmlzWE51bWVyaWN8fChpKz1yKSx7cGF0aFRvOnUucGF0aFRvLHBhdGhGcm9tOnUucGF0aEZyb20sYmFyV2lkdGg6Zyx4OmQsZ29hbFg6dGhpcy5iYXJIZWxwZXJzLmdldEdvYWxWYWx1ZXMoXCJ4XCIsbCxudWxsLGUucmVhbEluZGV4LGUuaikseTppfX19LHtrZXk6XCJnZXRSYW5nZVZhbHVlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7cmV0dXJue3N0YXJ0OmkuZ2xvYmFscy5zZXJpZXNSYW5nZVN0YXJ0W3RdW2VdLGVuZDppLmdsb2JhbHMuc2VyaWVzUmFuZ2VFbmRbdF1bZV19fX1dKSxzfSgpLE10PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLmxpbmVDdHg9ZX1yZXR1cm4gcih0LFt7a2V5Olwic2FtZVZhbHVlU2VyaWVzRml4XCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7aWYoKFwiZ3JhZGllbnRcIj09PWkuY29uZmlnLmZpbGwudHlwZXx8XCJncmFkaWVudFwiPT09aS5jb25maWcuZmlsbC50eXBlW3RdKSYmbmV3IHkodGhpcy5saW5lQ3R4LmN0eCxpKS5zZXJpZXNIYXZlU2FtZVZhbHVlcyh0KSl7dmFyIGE9ZVt0XS5zbGljZSgpO2FbYS5sZW5ndGgtMV09YVthLmxlbmd0aC0xXSsxZS02LGVbdF09YX1yZXR1cm4gZX19LHtrZXk6XCJjYWxjdWxhdGVQb2ludHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LnNlcmllcyxpPXQucmVhbEluZGV4LGE9dC54LHM9dC55LHI9dC5pLG89dC5qLG49dC5wcmV2WSxsPXRoaXMudyxoPVtdLGM9W107aWYoMD09PW8pe3ZhciBkPXRoaXMubGluZUN0eC5jYXRlZ29yeUF4aXNDb3JyZWN0aW9uK2wuY29uZmlnLm1hcmtlcnMub2Zmc2V0WDtsLmdsb2JhbHMuaXNYTnVtZXJpYyYmKGQ9KGwuZ2xvYmFscy5zZXJpZXNYW2ldWzBdLWwuZ2xvYmFscy5taW5YKS90aGlzLmxpbmVDdHgueFJhdGlvK2wuY29uZmlnLm1hcmtlcnMub2Zmc2V0WCksaC5wdXNoKGQpLGMucHVzaCh4LmlzTnVtYmVyKGVbcl1bMF0pP24rbC5jb25maWcubWFya2Vycy5vZmZzZXRZOm51bGwpLGgucHVzaChhK2wuY29uZmlnLm1hcmtlcnMub2Zmc2V0WCksYy5wdXNoKHguaXNOdW1iZXIoZVtyXVtvKzFdKT9zK2wuY29uZmlnLm1hcmtlcnMub2Zmc2V0WTpudWxsKX1lbHNlIGgucHVzaChhK2wuY29uZmlnLm1hcmtlcnMub2Zmc2V0WCksYy5wdXNoKHguaXNOdW1iZXIoZVtyXVtvKzFdKT9zK2wuY29uZmlnLm1hcmtlcnMub2Zmc2V0WTpudWxsKTtyZXR1cm57eDpoLHk6Y319fSx7a2V5OlwiY2hlY2tQcmV2aW91c1BhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQucGF0aEZyb21MaW5lLGk9dC5wYXRoRnJvbUFyZWEsYT10LnJlYWxJbmRleCxzPXRoaXMudyxyPTA7cjxzLmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGg7cisrKXt2YXIgbz1zLmdsb2JhbHMucHJldmlvdXNQYXRoc1tyXTsoXCJsaW5lXCI9PT1vLnR5cGV8fFwiYXJlYVwiPT09by50eXBlKSYmby5wYXRocy5sZW5ndGg+MCYmcGFyc2VJbnQoby5yZWFsSW5kZXgsMTApPT09cGFyc2VJbnQoYSwxMCkmJihcImxpbmVcIj09PW8udHlwZT8odGhpcy5saW5lQ3R4LmFwcGVuZFBhdGhGcm9tPSExLGU9cy5nbG9iYWxzLnByZXZpb3VzUGF0aHNbcl0ucGF0aHNbMF0uZCk6XCJhcmVhXCI9PT1vLnR5cGUmJih0aGlzLmxpbmVDdHguYXBwZW5kUGF0aEZyb209ITEsaT1zLmdsb2JhbHMucHJldmlvdXNQYXRoc1tyXS5wYXRoc1swXS5kLHMuY29uZmlnLnN0cm9rZS5zaG93JiZzLmdsb2JhbHMucHJldmlvdXNQYXRoc1tyXS5wYXRoc1sxXSYmKGU9cy5nbG9iYWxzLnByZXZpb3VzUGF0aHNbcl0ucGF0aHNbMV0uZCkpKX1yZXR1cm57cGF0aEZyb21MaW5lOmUscGF0aEZyb21BcmVhOml9fX0se2tleTpcImRldGVybWluZUZpcnN0UHJldllcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpPXQuaSxhPXQuc2VyaWVzLHM9dC5wcmV2WSxyPXQubGluZVlQb3NpdGlvbixvPXRoaXMudztpZih2b2lkIDAhPT0obnVsbD09PShlPWFbaV0pfHx2b2lkIDA9PT1lP3ZvaWQgMDplWzBdKSlzPShyPW8uY29uZmlnLmNoYXJ0LnN0YWNrZWQmJmk+MD90aGlzLmxpbmVDdHgucHJldlNlcmllc1lbaS0xXVswXTp0aGlzLmxpbmVDdHguemVyb1kpLWFbaV1bMF0vdGhpcy5saW5lQ3R4LnlSYXRpb1t0aGlzLmxpbmVDdHgueWF4aXNJbmRleF0rMioodGhpcy5saW5lQ3R4LmlzUmV2ZXJzZWQ/YVtpXVswXS90aGlzLmxpbmVDdHgueVJhdGlvW3RoaXMubGluZUN0eC55YXhpc0luZGV4XTowKTtlbHNlIGlmKG8uY29uZmlnLmNoYXJ0LnN0YWNrZWQmJmk+MCYmdm9pZCAwPT09YVtpXVswXSlmb3IodmFyIG49aS0xO24+PTA7bi0tKWlmKG51bGwhPT1hW25dWzBdJiZ2b2lkIDAhPT1hW25dWzBdKXtzPXI9dGhpcy5saW5lQ3R4LnByZXZTZXJpZXNZW25dWzBdO2JyZWFrfXJldHVybntwcmV2WTpzLGxpbmVZUG9zaXRpb246cn19fV0pLHR9KCksWHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsaSxzKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMueHlSYXRpb3M9aSx0aGlzLnBvaW50c0NoYXJ0PSEoXCJidWJibGVcIiE9PXRoaXMudy5jb25maWcuY2hhcnQudHlwZSYmXCJzY2F0dGVyXCIhPT10aGlzLncuY29uZmlnLmNoYXJ0LnR5cGUpfHxzLHRoaXMuc2NhdHRlcj1uZXcgSCh0aGlzLmN0eCksdGhpcy5ub05lZ2F0aXZlcz10aGlzLncuZ2xvYmFscy5taW5YPT09TnVtYmVyLk1BWF9WQUxVRSx0aGlzLmxpbmVIZWxwZXJzPW5ldyBNdCh0aGlzKSx0aGlzLm1hcmtlcnM9bmV3IEQodGhpcy5jdHgpLHRoaXMucHJldlNlcmllc1k9W10sdGhpcy5jYXRlZ29yeUF4aXNDb3JyZWN0aW9uPTAsdGhpcy55YXhpc0luZGV4PTB9cmV0dXJuIHIodCxbe2tleTpcImRyYXdcIix2YWx1ZTpmdW5jdGlvbih0LGksYSxzKXt2YXIgcj10aGlzLncsbz1uZXcgbSh0aGlzLmN0eCksbj1yLmdsb2JhbHMuY29tYm9DaGFydHM/aTpyLmNvbmZpZy5jaGFydC50eXBlLGw9by5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLVwiLmNvbmNhdChuLFwiLXNlcmllcyBhcGV4Y2hhcnRzLXBsb3Qtc2VyaWVzXCIpfSksaD1uZXcgeSh0aGlzLmN0eCxyKTt0aGlzLnlSYXRpbz10aGlzLnh5UmF0aW9zLnlSYXRpbyx0aGlzLnpSYXRpbz10aGlzLnh5UmF0aW9zLnpSYXRpbyx0aGlzLnhSYXRpbz10aGlzLnh5UmF0aW9zLnhSYXRpbyx0aGlzLmJhc2VMaW5lWT10aGlzLnh5UmF0aW9zLmJhc2VMaW5lWSx0PWguZ2V0TG9nU2VyaWVzKHQpLHRoaXMueVJhdGlvPWguZ2V0TG9nWVJhdGlvcyh0aGlzLnlSYXRpbyk7Zm9yKHZhciBjPVtdLGQ9MDtkPHQubGVuZ3RoO2QrKyl7dD10aGlzLmxpbmVIZWxwZXJzLnNhbWVWYWx1ZVNlcmllc0ZpeChkLHQpO3ZhciBnPXIuZ2xvYmFscy5jb21ib0NoYXJ0cz9hW2RdOmQ7dGhpcy5faW5pdFNlcmllVmFyaWFibGVzKHQsZCxnKTt2YXIgdT1bXSxwPVtdLGY9ci5nbG9iYWxzLnBhZEhvcml6b250YWwrdGhpcy5jYXRlZ29yeUF4aXNDb3JyZWN0aW9uO3RoaXMuY3R4LnNlcmllcy5hZGRDb2xsYXBzZWRDbGFzc1RvU2VyaWVzKHRoaXMuZWxTZXJpZXMsZyksci5nbG9iYWxzLmlzWE51bWVyaWMmJnIuZ2xvYmFscy5zZXJpZXNYLmxlbmd0aD4wJiYoZj0oci5nbG9iYWxzLnNlcmllc1hbZ11bMF0tci5nbG9iYWxzLm1pblgpL3RoaXMueFJhdGlvKSxwLnB1c2goZik7dmFyIHgsYj1mLHY9dm9pZCAwLHc9YixrPXRoaXMuemVyb1ksQT10aGlzLnplcm9ZO2s9dGhpcy5saW5lSGVscGVycy5kZXRlcm1pbmVGaXJzdFByZXZZKHtpOmQsc2VyaWVzOnQscHJldlk6ayxsaW5lWVBvc2l0aW9uOjB9KS5wcmV2WSx1LnB1c2goaykseD1rO1wicmFuZ2VBcmVhXCI9PT1uJiYodj1BPXRoaXMubGluZUhlbHBlcnMuZGV0ZXJtaW5lRmlyc3RQcmV2WSh7aTpkLHNlcmllczpzLHByZXZZOkEsbGluZVlQb3NpdGlvbjowfSkucHJldlkpO3ZhciBTPXt0eXBlOm4sc2VyaWVzOnQscmVhbEluZGV4OmcsaTpkLHg6Zix5OjEscFg6YixwWTp4LHBhdGhzRnJvbTp0aGlzLl9jYWxjdWxhdGVQYXRoc0Zyb20oe3R5cGU6bixzZXJpZXM6dCxpOmQscmVhbEluZGV4OmcscHJldlg6dyxwcmV2WTprLHByZXZZMjpBfSksbGluZVBhdGhzOltdLGFyZWFQYXRoczpbXSxzZXJpZXNJbmRleDphLGxpbmVZUG9zaXRpb246MCx4QXJyajpwLHlBcnJqOnUsc2VyaWVzUmFuZ2VFbmQ6c30sQz10aGlzLl9pdGVyYXRlT3ZlckRhdGFQb2ludHMoZShlKHt9LFMpLHt9LHtpdGVyYXRpb25zOlwicmFuZ2VBcmVhXCI9PT1uP3RbZF0ubGVuZ3RoLTE6dm9pZCAwLGlzUmFuZ2VTdGFydDohMH0pKTtpZihcInJhbmdlQXJlYVwiPT09bil7dmFyIEw9dGhpcy5fY2FsY3VsYXRlUGF0aHNGcm9tKHtzZXJpZXM6cyxpOmQscmVhbEluZGV4OmcscHJldlg6dyxwcmV2WTpBfSksUD10aGlzLl9pdGVyYXRlT3ZlckRhdGFQb2ludHMoZShlKHt9LFMpLHt9LHtzZXJpZXM6cyxwWTp2LHBhdGhzRnJvbTpMLGl0ZXJhdGlvbnM6c1tkXS5sZW5ndGgtMSxpc1JhbmdlU3RhcnQ6ITF9KSk7Qy5saW5lUGF0aHNbMF09UC5saW5lUGF0aCtDLmxpbmVQYXRoLEMucGF0aEZyb21MaW5lPVAucGF0aEZyb21MaW5lK0MucGF0aEZyb21MaW5lfXRoaXMuX2hhbmRsZVBhdGhzKHt0eXBlOm4scmVhbEluZGV4OmcsaTpkLHBhdGhzOkN9KSx0aGlzLmVsU2VyaWVzLmFkZCh0aGlzLmVsUG9pbnRzTWFpbiksdGhpcy5lbFNlcmllcy5hZGQodGhpcy5lbERhdGFMYWJlbHNXcmFwKSxjLnB1c2godGhpcy5lbFNlcmllcyl9aWYoci5jb25maWcuY2hhcnQuc3RhY2tlZClmb3IodmFyIEk9Yy5sZW5ndGg7ST4wO0ktLSlsLmFkZChjW0ktMV0pO2Vsc2UgZm9yKHZhciBUPTA7VDxjLmxlbmd0aDtUKyspbC5hZGQoY1tUXSk7cmV0dXJuIGx9fSx7a2V5OlwiX2luaXRTZXJpZVZhcmlhYmxlc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLncscz1uZXcgbSh0aGlzLmN0eCk7dGhpcy54RGl2aXNpb249YS5nbG9iYWxzLmdyaWRXaWR0aC8oYS5nbG9iYWxzLmRhdGFQb2ludHMtKFwib25cIj09PWEuY29uZmlnLnhheGlzLnRpY2tQbGFjZW1lbnQ/MTowKSksdGhpcy5zdHJva2VXaWR0aD1BcnJheS5pc0FycmF5KGEuY29uZmlnLnN0cm9rZS53aWR0aCk/YS5jb25maWcuc3Ryb2tlLndpZHRoW2ldOmEuY29uZmlnLnN0cm9rZS53aWR0aCx0aGlzLnlSYXRpby5sZW5ndGg+MSYmKHRoaXMueWF4aXNJbmRleD1pKSx0aGlzLmlzUmV2ZXJzZWQ9YS5jb25maWcueWF4aXNbdGhpcy55YXhpc0luZGV4XSYmYS5jb25maWcueWF4aXNbdGhpcy55YXhpc0luZGV4XS5yZXZlcnNlZCx0aGlzLnplcm9ZPWEuZ2xvYmFscy5ncmlkSGVpZ2h0LXRoaXMuYmFzZUxpbmVZW3RoaXMueWF4aXNJbmRleF0tKHRoaXMuaXNSZXZlcnNlZD9hLmdsb2JhbHMuZ3JpZEhlaWdodDowKSsodGhpcy5pc1JldmVyc2VkPzIqdGhpcy5iYXNlTGluZVlbdGhpcy55YXhpc0luZGV4XTowKSx0aGlzLmFyZWFCb3R0b21ZPXRoaXMuemVyb1ksKHRoaXMuemVyb1k+YS5nbG9iYWxzLmdyaWRIZWlnaHR8fFwiZW5kXCI9PT1hLmNvbmZpZy5wbG90T3B0aW9ucy5hcmVhLmZpbGxUbykmJih0aGlzLmFyZWFCb3R0b21ZPWEuZ2xvYmFscy5ncmlkSGVpZ2h0KSx0aGlzLmNhdGVnb3J5QXhpc0NvcnJlY3Rpb249dGhpcy54RGl2aXNpb24vMix0aGlzLmVsU2VyaWVzPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXNcIixzZXJpZXNOYW1lOnguZXNjYXBlU3RyaW5nKGEuZ2xvYmFscy5zZXJpZXNOYW1lc1tpXSl9KSx0aGlzLmVsUG9pbnRzTWFpbj1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMtd3JhcFwiLFwiZGF0YTpyZWFsSW5kZXhcIjppfSksdGhpcy5lbERhdGFMYWJlbHNXcmFwPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhbGFiZWxzXCIsXCJkYXRhOnJlYWxJbmRleFwiOml9KTt2YXIgcj10W2VdLmxlbmd0aD09PWEuZ2xvYmFscy5kYXRhUG9pbnRzO3RoaXMuZWxTZXJpZXMuYXR0cih7XCJkYXRhOmxvbmdlc3RTZXJpZXNcIjpyLHJlbDplKzEsXCJkYXRhOnJlYWxJbmRleFwiOml9KSx0aGlzLmFwcGVuZFBhdGhGcm9tPSEwfX0se2tleTpcIl9jYWxjdWxhdGVQYXRoc0Zyb21cIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpLGEscyxyPXQudHlwZSxvPXQuc2VyaWVzLG49dC5pLGw9dC5yZWFsSW5kZXgsaD10LnByZXZYLGM9dC5wcmV2WSxkPXQucHJldlkyLGc9dGhpcy53LHU9bmV3IG0odGhpcy5jdHgpO2lmKG51bGw9PT1vW25dWzBdKXtmb3IodmFyIHA9MDtwPG9bbl0ubGVuZ3RoO3ArKylpZihudWxsIT09b1tuXVtwXSl7aD10aGlzLnhEaXZpc2lvbipwLGM9dGhpcy56ZXJvWS1vW25dW3BdL3RoaXMueVJhdGlvW3RoaXMueWF4aXNJbmRleF0sZT11Lm1vdmUoaCxjKSxpPXUubW92ZShoLHRoaXMuYXJlYUJvdHRvbVkpO2JyZWFrfX1lbHNlIGU9dS5tb3ZlKGgsYyksXCJyYW5nZUFyZWFcIj09PXImJihlPXUubW92ZShoLGQpK3UubGluZShoLGMpKSxpPXUubW92ZShoLHRoaXMuYXJlYUJvdHRvbVkpK3UubGluZShoLGMpO2lmKGE9dS5tb3ZlKC0xLHRoaXMuemVyb1kpK3UubGluZSgtMSx0aGlzLnplcm9ZKSxzPXUubW92ZSgtMSx0aGlzLnplcm9ZKSt1LmxpbmUoLTEsdGhpcy56ZXJvWSksZy5nbG9iYWxzLnByZXZpb3VzUGF0aHMubGVuZ3RoPjApe3ZhciBmPXRoaXMubGluZUhlbHBlcnMuY2hlY2tQcmV2aW91c1BhdGhzKHtwYXRoRnJvbUxpbmU6YSxwYXRoRnJvbUFyZWE6cyxyZWFsSW5kZXg6bH0pO2E9Zi5wYXRoRnJvbUxpbmUscz1mLnBhdGhGcm9tQXJlYX1yZXR1cm57cHJldlg6aCxwcmV2WTpjLGxpbmVQYXRoOmUsYXJlYVBhdGg6aSxwYXRoRnJvbUxpbmU6YSxwYXRoRnJvbUFyZWE6c319fSx7a2V5OlwiX2hhbmRsZVBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGk9dC50eXBlLGE9dC5yZWFsSW5kZXgscz10Lmkscj10LnBhdGhzLG89dGhpcy53LG49bmV3IG0odGhpcy5jdHgpLGw9bmV3IFIodGhpcy5jdHgpO3RoaXMucHJldlNlcmllc1kucHVzaChyLnlBcnJqKSxvLmdsb2JhbHMuc2VyaWVzWHZhbHVlc1thXT1yLnhBcnJqLG8uZ2xvYmFscy5zZXJpZXNZdmFsdWVzW2FdPXIueUFycmo7dmFyIGg9by5jb25maWcuZm9yZWNhc3REYXRhUG9pbnRzO2lmKGguY291bnQ+MCYmXCJyYW5nZUFyZWFcIiE9PWkpe3ZhciBjPW8uZ2xvYmFscy5zZXJpZXNYdmFsdWVzW2FdW28uZ2xvYmFscy5zZXJpZXNYdmFsdWVzW2FdLmxlbmd0aC1oLmNvdW50LTFdLGQ9bi5kcmF3UmVjdChjLDAsby5nbG9iYWxzLmdyaWRXaWR0aCxvLmdsb2JhbHMuZ3JpZEhlaWdodCwwKTtvLmdsb2JhbHMuZG9tLmVsRm9yZWNhc3RNYXNrLmFwcGVuZENoaWxkKGQubm9kZSk7dmFyIGc9bi5kcmF3UmVjdCgwLDAsYyxvLmdsb2JhbHMuZ3JpZEhlaWdodCwwKTtvLmdsb2JhbHMuZG9tLmVsTm9uRm9yZWNhc3RNYXNrLmFwcGVuZENoaWxkKGcubm9kZSl9dGhpcy5wb2ludHNDaGFydHx8by5nbG9iYWxzLmRlbGF5ZWRFbGVtZW50cy5wdXNoKHtlbDp0aGlzLmVsUG9pbnRzTWFpbi5ub2RlLGluZGV4OmF9KTt2YXIgdT17aTpzLHJlYWxJbmRleDphLGFuaW1hdGlvbkRlbGF5OnMsaW5pdGlhbFNwZWVkOm8uY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQsZGF0YUNoYW5nZVNwZWVkOm8uY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5zcGVlZCxjbGFzc05hbWU6XCJhcGV4Y2hhcnRzLVwiLmNvbmNhdChpKX07aWYoXCJhcmVhXCI9PT1pKWZvcih2YXIgcD1sLmZpbGxQYXRoKHtzZXJpZXNOdW1iZXI6YX0pLGY9MDtmPHIuYXJlYVBhdGhzLmxlbmd0aDtmKyspe3ZhciB4PW4ucmVuZGVyUGF0aHMoZShlKHt9LHUpLHt9LHtwYXRoRnJvbTpyLnBhdGhGcm9tQXJlYSxwYXRoVG86ci5hcmVhUGF0aHNbZl0sc3Ryb2tlOlwibm9uZVwiLHN0cm9rZVdpZHRoOjAsc3Ryb2tlTGluZUNhcDpudWxsLGZpbGw6cH0pKTt0aGlzLmVsU2VyaWVzLmFkZCh4KX1pZihvLmNvbmZpZy5zdHJva2Uuc2hvdyYmIXRoaXMucG9pbnRzQ2hhcnQpe3ZhciBiPW51bGw7aWYoXCJsaW5lXCI9PT1pKWI9bC5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOmEsaTpzfSk7ZWxzZSBpZihcInNvbGlkXCI9PT1vLmNvbmZpZy5zdHJva2UuZmlsbC50eXBlKWI9by5nbG9iYWxzLnN0cm9rZS5jb2xvcnNbYV07ZWxzZXt2YXIgdj1vLmNvbmZpZy5maWxsO28uY29uZmlnLmZpbGw9by5jb25maWcuc3Ryb2tlLmZpbGwsYj1sLmZpbGxQYXRoKHtzZXJpZXNOdW1iZXI6YSxpOnN9KSxvLmNvbmZpZy5maWxsPXZ9Zm9yKHZhciB5PTA7eTxyLmxpbmVQYXRocy5sZW5ndGg7eSsrKXt2YXIgdz1iO1wicmFuZ2VBcmVhXCI9PT1pJiYodz1sLmZpbGxQYXRoKHtzZXJpZXNOdW1iZXI6YX0pKTt2YXIgaz1lKGUoe30sdSkse30se3BhdGhGcm9tOnIucGF0aEZyb21MaW5lLHBhdGhUbzpyLmxpbmVQYXRoc1t5XSxzdHJva2U6YixzdHJva2VXaWR0aDp0aGlzLnN0cm9rZVdpZHRoLHN0cm9rZUxpbmVDYXA6by5jb25maWcuc3Ryb2tlLmxpbmVDYXAsZmlsbDpcInJhbmdlQXJlYVwiPT09aT93Olwibm9uZVwifSksQT1uLnJlbmRlclBhdGhzKGspO2lmKHRoaXMuZWxTZXJpZXMuYWRkKEEpLEEuYXR0cihcImZpbGwtcnVsZVwiLFwiZXZlbm9kZFwiKSxoLmNvdW50PjAmJlwicmFuZ2VBcmVhXCIhPT1pKXt2YXIgUz1uLnJlbmRlclBhdGhzKGspO1Mubm9kZS5zZXRBdHRyaWJ1dGUoXCJzdHJva2UtZGFzaGFycmF5XCIsaC5kYXNoQXJyYXkpLGguc3Ryb2tlV2lkdGgmJlMubm9kZS5zZXRBdHRyaWJ1dGUoXCJzdHJva2Utd2lkdGhcIixoLnN0cm9rZVdpZHRoKSx0aGlzLmVsU2VyaWVzLmFkZChTKSxTLmF0dHIoXCJjbGlwLXBhdGhcIixcInVybCgjZm9yZWNhc3RNYXNrXCIuY29uY2F0KG8uZ2xvYmFscy5jdWlkLFwiKVwiKSksQS5hdHRyKFwiY2xpcC1wYXRoXCIsXCJ1cmwoI25vbkZvcmVjYXN0TWFza1wiLmNvbmNhdChvLmdsb2JhbHMuY3VpZCxcIilcIikpfX19fX0se2tleTpcIl9pdGVyYXRlT3ZlckRhdGFQb2ludHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LnR5cGUsaT10LnNlcmllcyxhPXQuaXRlcmF0aW9ucyxzPXQucmVhbEluZGV4LHI9dC5pLG89dC54LG49dC55LGw9dC5wWCxoPXQucFksYz10LnBhdGhzRnJvbSxkPXQubGluZVBhdGhzLGc9dC5hcmVhUGF0aHMsdT10LnNlcmllc0luZGV4LHA9dC5saW5lWVBvc2l0aW9uLGY9dC54QXJyaixiPXQueUFycmosdj10LmlzUmFuZ2VTdGFydCx5PXQuc2VyaWVzUmFuZ2VFbmQsdz10aGlzLncsaz1uZXcgbSh0aGlzLmN0eCksQT10aGlzLnlSYXRpbyxTPWMucHJldlksQz1jLmxpbmVQYXRoLEw9Yy5hcmVhUGF0aCxQPWMucGF0aEZyb21MaW5lLEk9Yy5wYXRoRnJvbUFyZWEsVD14LmlzTnVtYmVyKHcuZ2xvYmFscy5taW5ZQXJyW3NdKT93Lmdsb2JhbHMubWluWUFycltzXTp3Lmdsb2JhbHMubWluWTthfHwoYT13Lmdsb2JhbHMuZGF0YVBvaW50cz4xP3cuZ2xvYmFscy5kYXRhUG9pbnRzLTE6dy5nbG9iYWxzLmRhdGFQb2ludHMpO2Zvcih2YXIgTT1uLFg9MDtYPGE7WCsrKXt2YXIgej12b2lkIDA9PT1pW3JdW1grMV18fG51bGw9PT1pW3JdW1grMV07aWYody5nbG9iYWxzLmlzWE51bWVyaWMpe3ZhciBFPXcuZ2xvYmFscy5zZXJpZXNYW3NdW1grMV07dm9pZCAwPT09dy5nbG9iYWxzLnNlcmllc1hbc11bWCsxXSYmKEU9dy5nbG9iYWxzLnNlcmllc1hbc11bYS0xXSksbz0oRS13Lmdsb2JhbHMubWluWCkvdGhpcy54UmF0aW99ZWxzZSBvKz10aGlzLnhEaXZpc2lvbjtpZih3LmNvbmZpZy5jaGFydC5zdGFja2VkKWlmKHI+MCYmdy5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5sZW5ndGg8dy5jb25maWcuc2VyaWVzLmxlbmd0aC0xKXtwPXRoaXMucHJldlNlcmllc1lbZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQsaT0wO2k8dy5nbG9iYWxzLnNlcmllcy5sZW5ndGg7aSsrKWlmKHcuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YodCk+LTEpe2UtLTticmVha31yZXR1cm4gZT49MD9lOjB9KHItMSldW1grMV19ZWxzZSBwPXRoaXMuemVyb1k7ZWxzZSBwPXRoaXMuemVyb1k7ej9uPXAtVC9BW3RoaXMueWF4aXNJbmRleF0rMioodGhpcy5pc1JldmVyc2VkP1QvQVt0aGlzLnlheGlzSW5kZXhdOjApOihuPXAtaVtyXVtYKzFdL0FbdGhpcy55YXhpc0luZGV4XSsyKih0aGlzLmlzUmV2ZXJzZWQ/aVtyXVtYKzFdL0FbdGhpcy55YXhpc0luZGV4XTowKSxcInJhbmdlQXJlYVwiPT09ZSYmKE09cC15W3JdW1grMV0vQVt0aGlzLnlheGlzSW5kZXhdKzIqKHRoaXMuaXNSZXZlcnNlZD95W3JdW1grMV0vQVt0aGlzLnlheGlzSW5kZXhdOjApKSksZi5wdXNoKG8pLGIucHVzaChuKTt2YXIgWT10aGlzLmxpbmVIZWxwZXJzLmNhbGN1bGF0ZVBvaW50cyh7c2VyaWVzOmkseDpvLHk6bixyZWFsSW5kZXg6cyxpOnIsajpYLHByZXZZOlN9KSxGPXRoaXMuX2NyZWF0ZVBhdGhzKHt0eXBlOmUsc2VyaWVzOmksaTpyLHJlYWxJbmRleDpzLGo6WCx4Om8seTpuLHkyOk0scFg6bCxwWTpoLGxpbmVQYXRoOkMsYXJlYVBhdGg6TCxsaW5lUGF0aHM6ZCxhcmVhUGF0aHM6ZyxzZXJpZXNJbmRleDp1LGlzUmFuZ2VTdGFydDp2fSk7Zz1GLmFyZWFQYXRocyxkPUYubGluZVBhdGhzLGw9Ri5wWCxoPUYucFksTD1GLmFyZWFQYXRoLEM9Ri5saW5lUGF0aCx0aGlzLmFwcGVuZFBhdGhGcm9tJiYoUCs9ay5saW5lKG8sdGhpcy56ZXJvWSksSSs9ay5saW5lKG8sdGhpcy56ZXJvWSkpLHRoaXMuaGFuZGxlTnVsbERhdGFQb2ludHMoaSxZLHIsWCxzKSx0aGlzLl9oYW5kbGVNYXJrZXJzQW5kTGFiZWxzKHt0eXBlOmUscG9pbnRzUG9zOlksaTpyLGo6WCxyZWFsSW5kZXg6cyxpc1JhbmdlU3RhcnQ6dn0pfXJldHVybnt5QXJyajpiLHhBcnJqOmYscGF0aEZyb21BcmVhOkksYXJlYVBhdGhzOmcscGF0aEZyb21MaW5lOlAsbGluZVBhdGhzOmQsbGluZVBhdGg6QyxhcmVhUGF0aDpMfX19LHtrZXk6XCJfaGFuZGxlTWFya2Vyc0FuZExhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQudHlwZSxpPXQucG9pbnRzUG9zLGE9dC5pc1JhbmdlU3RhcnQscz10Lmkscj10Lmosbz10LnJlYWxJbmRleCxuPXRoaXMudyxsPW5ldyBPKHRoaXMuY3R4KTtpZih0aGlzLnBvaW50c0NoYXJ0KXRoaXMuc2NhdHRlci5kcmF3KHRoaXMuZWxTZXJpZXMscix7cmVhbEluZGV4Om8scG9pbnRzUG9zOmkselJhdGlvOnRoaXMuelJhdGlvLGVsUGFyZW50OnRoaXMuZWxQb2ludHNNYWlufSk7ZWxzZXtuLmdsb2JhbHMuc2VyaWVzW3NdLmxlbmd0aD4xJiZ0aGlzLmVsUG9pbnRzTWFpbi5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWVsZW1lbnQtaGlkZGVuXCIpO3ZhciBoPXRoaXMubWFya2Vycy5wbG90Q2hhcnRNYXJrZXJzKGksbyxyKzEpO251bGwhPT1oJiZ0aGlzLmVsUG9pbnRzTWFpbi5hZGQoaCl9dmFyIGM9bC5kcmF3RGF0YUxhYmVsKHt0eXBlOmUsaXNSYW5nZVN0YXJ0OmEscG9zOmksaTpvLGo6cisxfSk7bnVsbCE9PWMmJnRoaXMuZWxEYXRhTGFiZWxzV3JhcC5hZGQoYyl9fSx7a2V5OlwiX2NyZWF0ZVBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC50eXBlLGk9dC5zZXJpZXMsYT10Lmkscz10LnJlYWxJbmRleCxyPXQuaixvPXQueCxuPXQueSxsPXQueTIsaD10LnBYLGM9dC5wWSxkPXQubGluZVBhdGgsZz10LmFyZWFQYXRoLHU9dC5saW5lUGF0aHMscD10LmFyZWFQYXRocyxmPXQuc2VyaWVzSW5kZXgseD10LmlzUmFuZ2VTdGFydCxiPXRoaXMudyx2PW5ldyBtKHRoaXMuY3R4KSx5PWIuY29uZmlnLnN0cm9rZS5jdXJ2ZSx3PXRoaXMuYXJlYUJvdHRvbVk7aWYoQXJyYXkuaXNBcnJheShiLmNvbmZpZy5zdHJva2UuY3VydmUpJiYoeT1BcnJheS5pc0FycmF5KGYpP2IuY29uZmlnLnN0cm9rZS5jdXJ2ZVtmW2FdXTpiLmNvbmZpZy5zdHJva2UuY3VydmVbYV0pLFwic21vb3RoXCI9PT15KXt2YXIgaz0uMzUqKG8taCk7Yi5nbG9iYWxzLmhhc051bGxWYWx1ZXM/KG51bGwhPT1pW2FdW3JdJiYobnVsbCE9PWlbYV1bcisxXT8oZD12Lm1vdmUoaCxjKSt2LmN1cnZlKGgrayxjLG8tayxuLG8rMSxuKSxnPXYubW92ZShoKzEsYykrdi5jdXJ2ZShoK2ssYyxvLWssbixvKzEsbikrdi5saW5lKG8sdykrdi5saW5lKGgsdykrXCJ6XCIpOihkPXYubW92ZShoLGMpLGc9di5tb3ZlKGgsYykrXCJ6XCIpKSx1LnB1c2goZCkscC5wdXNoKGcpKTooZCs9di5jdXJ2ZShoK2ssYyxvLWssbixvLG4pLGcrPXYuY3VydmUoaCtrLGMsby1rLG4sbyxuKSksaD1vLGM9bixyPT09aVthXS5sZW5ndGgtMiYmKGc9Zyt2LmN1cnZlKGgsYyxvLG4sbyx3KSt2Lm1vdmUobyxuKStcInpcIixcInJhbmdlQXJlYVwiPT09ZSYmeD9kPWQrdi5jdXJ2ZShoLGMsbyxuLG8sbCkrdi5tb3ZlKG8sbCkrXCJ6XCI6Yi5nbG9iYWxzLmhhc051bGxWYWx1ZXN8fCh1LnB1c2goZCkscC5wdXNoKGcpKSl9ZWxzZXtpZihudWxsPT09aVthXVtyKzFdKXtkKz12Lm1vdmUobyxuKTt2YXIgQT1iLmdsb2JhbHMuaXNYTnVtZXJpYz8oYi5nbG9iYWxzLnNlcmllc1hbc11bcl0tYi5nbG9iYWxzLm1pblgpL3RoaXMueFJhdGlvOm8tdGhpcy54RGl2aXNpb247Zz1nK3YubGluZShBLHcpK3YubW92ZShvLG4pK1wielwifW51bGw9PT1pW2FdW3JdJiYoZCs9di5tb3ZlKG8sbiksZys9di5tb3ZlKG8sdykpLFwic3RlcGxpbmVcIj09PXk/KGQ9ZCt2LmxpbmUobyxudWxsLFwiSFwiKSt2LmxpbmUobnVsbCxuLFwiVlwiKSxnPWcrdi5saW5lKG8sbnVsbCxcIkhcIikrdi5saW5lKG51bGwsbixcIlZcIikpOlwic3RyYWlnaHRcIj09PXkmJihkKz12LmxpbmUobyxuKSxnKz12LmxpbmUobyxuKSkscj09PWlbYV0ubGVuZ3RoLTImJihnPWcrdi5saW5lKG8sdykrdi5tb3ZlKG8sbikrXCJ6XCIsXCJyYW5nZUFyZWFcIj09PWUmJng/ZD1kK3YubGluZShvLGwpK3YubW92ZShvLGwpK1wielwiOih1LnB1c2goZCkscC5wdXNoKGcpKSl9cmV0dXJue2xpbmVQYXRoczp1LGFyZWFQYXRoczpwLHBYOmgscFk6YyxsaW5lUGF0aDpkLGFyZWFQYXRoOmd9fX0se2tleTpcImhhbmRsZU51bGxEYXRhUG9pbnRzXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSxzKXt2YXIgcj10aGlzLnc7aWYobnVsbD09PXRbaV1bYV0mJnIuY29uZmlnLm1hcmtlcnMuc2hvd051bGxEYXRhUG9pbnRzfHwxPT09dFtpXS5sZW5ndGgpe3ZhciBvPXRoaXMubWFya2Vycy5wbG90Q2hhcnRNYXJrZXJzKGUscyxhKzEsdGhpcy5zdHJva2VXaWR0aC1yLmNvbmZpZy5tYXJrZXJzLnN0cm9rZVdpZHRoLzIsITApO251bGwhPT1vJiZ0aGlzLmVsUG9pbnRzTWFpbi5hZGQobyl9fX1dKSx0fSgpO3dpbmRvdy5UcmVlbWFwU3F1YXJlZD17fSx3aW5kb3cuVHJlZW1hcFNxdWFyZWQuZ2VuZXJhdGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsaSxhLHMpe3RoaXMueG9mZnNldD1lLHRoaXMueW9mZnNldD1pLHRoaXMuaGVpZ2h0PXMsdGhpcy53aWR0aD1hLHRoaXMuc2hvcnRlc3RFZGdlPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGgubWluKHRoaXMuaGVpZ2h0LHRoaXMud2lkdGgpfSx0aGlzLmdldENvb3JkaW5hdGVzPWZ1bmN0aW9uKHQpe3ZhciBlLGk9W10sYT10aGlzLnhvZmZzZXQscz10aGlzLnlvZmZzZXQsbz1yKHQpL3RoaXMuaGVpZ2h0LG49cih0KS90aGlzLndpZHRoO2lmKHRoaXMud2lkdGg+PXRoaXMuaGVpZ2h0KWZvcihlPTA7ZTx0Lmxlbmd0aDtlKyspaS5wdXNoKFthLHMsYStvLHMrdFtlXS9vXSkscys9dFtlXS9vO2Vsc2UgZm9yKGU9MDtlPHQubGVuZ3RoO2UrKylpLnB1c2goW2EscyxhK3RbZV0vbixzK25dKSxhKz10W2VdL247cmV0dXJuIGl9LHRoaXMuY3V0QXJlYT1mdW5jdGlvbihlKXt2YXIgaTtpZih0aGlzLndpZHRoPj10aGlzLmhlaWdodCl7dmFyIGE9ZS90aGlzLmhlaWdodCxzPXRoaXMud2lkdGgtYTtpPW5ldyB0KHRoaXMueG9mZnNldCthLHRoaXMueW9mZnNldCxzLHRoaXMuaGVpZ2h0KX1lbHNle3ZhciByPWUvdGhpcy53aWR0aCxvPXRoaXMuaGVpZ2h0LXI7aT1uZXcgdCh0aGlzLnhvZmZzZXQsdGhpcy55b2Zmc2V0K3IsdGhpcy53aWR0aCxvKX1yZXR1cm4gaX19ZnVuY3Rpb24gZShlLGEscyxvLG4pe289dm9pZCAwPT09bz8wOm8sbj12b2lkIDA9PT1uPzA6bjt2YXIgbD1pKGZ1bmN0aW9uKHQsZSl7dmFyIGksYT1bXSxzPWUvcih0KTtmb3IoaT0wO2k8dC5sZW5ndGg7aSsrKWFbaV09dFtpXSpzO3JldHVybiBhfShlLGEqcyksW10sbmV3IHQobyxuLGEscyksW10pO3JldHVybiBmdW5jdGlvbih0KXt2YXIgZSxpLGE9W107Zm9yKGU9MDtlPHQubGVuZ3RoO2UrKylmb3IoaT0wO2k8dFtlXS5sZW5ndGg7aSsrKWEucHVzaCh0W2VdW2ldKTtyZXR1cm4gYX0obCl9ZnVuY3Rpb24gaSh0LGUscyxvKXt2YXIgbixsLGg7aWYoMCE9PXQubGVuZ3RoKXJldHVybiBuPXMuc2hvcnRlc3RFZGdlKCksZnVuY3Rpb24odCxlLGkpe3ZhciBzO2lmKDA9PT10Lmxlbmd0aClyZXR1cm4hMDsocz10LnNsaWNlKCkpLnB1c2goZSk7dmFyIHI9YSh0LGkpLG89YShzLGkpO3JldHVybiByPj1vfShlLGw9dFswXSxuKT8oZS5wdXNoKGwpLGkodC5zbGljZSgxKSxlLHMsbykpOihoPXMuY3V0QXJlYShyKGUpLG8pLG8ucHVzaChzLmdldENvb3JkaW5hdGVzKGUpKSxpKHQsW10saCxvKSksbztvLnB1c2gocy5nZXRDb29yZGluYXRlcyhlKSl9ZnVuY3Rpb24gYSh0LGUpe3ZhciBpPU1hdGgubWluLmFwcGx5KE1hdGgsdCksYT1NYXRoLm1heC5hcHBseShNYXRoLHQpLHM9cih0KTtyZXR1cm4gTWF0aC5tYXgoTWF0aC5wb3coZSwyKSphL01hdGgucG93KHMsMiksTWF0aC5wb3cocywyKS8oTWF0aC5wb3coZSwyKSppKSl9ZnVuY3Rpb24gcyh0KXtyZXR1cm4gdCYmdC5jb25zdHJ1Y3Rvcj09PUFycmF5fWZ1bmN0aW9uIHIodCl7dmFyIGUsaT0wO2ZvcihlPTA7ZTx0Lmxlbmd0aDtlKyspaSs9dFtlXTtyZXR1cm4gaX1mdW5jdGlvbiBvKHQpe3ZhciBlLGk9MDtpZihzKHRbMF0pKWZvcihlPTA7ZTx0Lmxlbmd0aDtlKyspaSs9byh0W2VdKTtlbHNlIGk9cih0KTtyZXR1cm4gaX1yZXR1cm4gZnVuY3Rpb24gdChpLGEscixuLGwpe249dm9pZCAwPT09bj8wOm4sbD12b2lkIDA9PT1sPzA6bDt2YXIgaCxjLGQ9W10sZz1bXTtpZihzKGlbMF0pKXtmb3IoYz0wO2M8aS5sZW5ndGg7YysrKWRbY109byhpW2NdKTtmb3IoaD1lKGQsYSxyLG4sbCksYz0wO2M8aS5sZW5ndGg7YysrKWcucHVzaCh0KGlbY10saFtjXVsyXS1oW2NdWzBdLGhbY11bM10taFtjXVsxXSxoW2NdWzBdLGhbY11bMV0pKX1lbHNlIGc9ZShpLGEscixuLGwpO3JldHVybiBnfX0oKTt2YXIgenQsRXQsWXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsaSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLnN0cm9rZVdpZHRoPXRoaXMudy5jb25maWcuc3Ryb2tlLndpZHRoLHRoaXMuaGVscGVycz1uZXcgQXQoZSksdGhpcy5keW5hbWljQW5pbT10aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbix0aGlzLmxhYmVscz1bXX1yZXR1cm4gcih0LFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10aGlzLncsYT1uZXcgbSh0aGlzLmN0eCkscz1uZXcgUih0aGlzLmN0eCkscj1hLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtdHJlZW1hcFwifSk7aWYoaS5nbG9iYWxzLm5vRGF0YSlyZXR1cm4gcjt2YXIgbz1bXTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT10Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIE1hdGguYWJzKHQpfSkpO28ucHVzaChlKX0pKSx0aGlzLm5lZ1JhbmdlPXRoaXMuaGVscGVycy5jaGVja0NvbG9yUmFuZ2UoKSxpLmNvbmZpZy5zZXJpZXMuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXt0LmRhdGEuZm9yRWFjaCgoZnVuY3Rpb24odCl7QXJyYXkuaXNBcnJheShlLmxhYmVsc1tpXSl8fChlLmxhYmVsc1tpXT1bXSksZS5sYWJlbHNbaV0ucHVzaCh0LngpfSkpfSkpLHdpbmRvdy5UcmVlbWFwU3F1YXJlZC5nZW5lcmF0ZShvLGkuZ2xvYmFscy5ncmlkV2lkdGgsaS5nbG9iYWxzLmdyaWRIZWlnaHQpLmZvckVhY2goKGZ1bmN0aW9uKG8sbil7dmFyIGw9YS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllcyBhcGV4Y2hhcnRzLXRyZWVtYXAtc2VyaWVzXCIsc2VyaWVzTmFtZTp4LmVzY2FwZVN0cmluZyhpLmdsb2JhbHMuc2VyaWVzTmFtZXNbbl0pLHJlbDpuKzEsXCJkYXRhOnJlYWxJbmRleFwiOm59KTtpZihpLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWQpe3ZhciBoPWkuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3c7bmV3IHYoZS5jdHgpLmRyb3BTaGFkb3cocixoLG4pfXZhciBjPWEuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhLWxhYmVsc1wifSk7by5mb3JFYWNoKChmdW5jdGlvbihyLG8pe3ZhciBoPXJbMF0sYz1yWzFdLGQ9clsyXSxnPXJbM10sdT1hLmRyYXdSZWN0KGgsYyxkLWgsZy1jLDAsXCIjZmZmXCIsMSxlLnN0cm9rZVdpZHRoLGkuY29uZmlnLnBsb3RPcHRpb25zLnRyZWVtYXAudXNlRmlsbENvbG9yQXNTdHJva2U/ZjppLmdsb2JhbHMuc3Ryb2tlLmNvbG9yc1tuXSk7dS5hdHRyKHtjeDpoLGN5OmMsaW5kZXg6bixpOm4sajpvLHdpZHRoOmQtaCxoZWlnaHQ6Zy1jfSk7dmFyIHA9ZS5oZWxwZXJzLmdldFNoYWRlQ29sb3IoaS5jb25maWcuY2hhcnQudHlwZSxuLG8sZS5uZWdSYW5nZSksZj1wLmNvbG9yO3ZvaWQgMCE9PWkuY29uZmlnLnNlcmllc1tuXS5kYXRhW29dJiZpLmNvbmZpZy5zZXJpZXNbbl0uZGF0YVtvXS5maWxsQ29sb3ImJihmPWkuY29uZmlnLnNlcmllc1tuXS5kYXRhW29dLmZpbGxDb2xvcik7dmFyIHg9cy5maWxsUGF0aCh7Y29sb3I6ZixzZXJpZXNOdW1iZXI6bixkYXRhUG9pbnRJbmRleDpvfSk7dS5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXRyZWVtYXAtcmVjdFwiKSx1LmF0dHIoe2ZpbGw6eH0pLGUuaGVscGVycy5hZGRMaXN0ZW5lcnModSk7dmFyIGI9e3g6aCsoZC1oKS8yLHk6YysoZy1jKS8yLHdpZHRoOjAsaGVpZ2h0OjB9LHY9e3g6aCx5OmMsd2lkdGg6ZC1oLGhlaWdodDpnLWN9O2lmKGkuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZCYmIWkuZ2xvYmFscy5kYXRhQ2hhbmdlZCl7dmFyIG09MTtpLmdsb2JhbHMucmVzaXplZHx8KG09aS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5zcGVlZCksZS5hbmltYXRlVHJlZW1hcCh1LGIsdixtKX1pZihpLmdsb2JhbHMuZGF0YUNoYW5nZWQpe3ZhciB5PTE7ZS5keW5hbWljQW5pbS5lbmFibGVkJiZpLmdsb2JhbHMuc2hvdWxkQW5pbWF0ZSYmKHk9ZS5keW5hbWljQW5pbS5zcGVlZCxpLmdsb2JhbHMucHJldmlvdXNQYXRoc1tuXSYmaS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbbl1bb10mJmkuZ2xvYmFscy5wcmV2aW91c1BhdGhzW25dW29dLnJlY3QmJihiPWkuZ2xvYmFscy5wcmV2aW91c1BhdGhzW25dW29dLnJlY3QpLGUuYW5pbWF0ZVRyZWVtYXAodSxiLHYseSkpfXZhciB3PWUuZ2V0Rm9udFNpemUociksaz1pLmNvbmZpZy5kYXRhTGFiZWxzLmZvcm1hdHRlcihlLmxhYmVsc1tuXVtvXSx7dmFsdWU6aS5nbG9iYWxzLnNlcmllc1tuXVtvXSxzZXJpZXNJbmRleDpuLGRhdGFQb2ludEluZGV4Om8sdzppfSksQT1lLmhlbHBlcnMuY2FsY3VsYXRlRGF0YUxhYmVscyh7dGV4dDprLHg6KGgrZCkvMix5OihjK2cpLzIrZS5zdHJva2VXaWR0aC8yK3cvMyxpOm4sajpvLGNvbG9yUHJvcHM6cCxmb250U2l6ZTp3LHNlcmllczp0fSk7aS5jb25maWcuZGF0YUxhYmVscy5lbmFibGVkJiZBJiZlLnJvdGF0ZVRvRml0TGFiZWwoQSx3LGssaCxjLGQsZyksbC5hZGQodSksbnVsbCE9PUEmJmwuYWRkKEEpfSkpLGwuYWRkKGMpLHIuYWRkKGwpfSkpLHJ9fSx7a2V5OlwiZ2V0Rm9udFNpemVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnc7dmFyIGksYSxzLHIsbz1mdW5jdGlvbiB0KGUpe3ZhciBpLGE9MDtpZihBcnJheS5pc0FycmF5KGVbMF0pKWZvcihpPTA7aTxlLmxlbmd0aDtpKyspYSs9dChlW2ldKTtlbHNlIGZvcihpPTA7aTxlLmxlbmd0aDtpKyspYSs9ZVtpXS5sZW5ndGg7cmV0dXJuIGF9KHRoaXMubGFiZWxzKS9mdW5jdGlvbiB0KGUpe3ZhciBpLGE9MDtpZihBcnJheS5pc0FycmF5KGVbMF0pKWZvcihpPTA7aTxlLmxlbmd0aDtpKyspYSs9dChlW2ldKTtlbHNlIGZvcihpPTA7aTxlLmxlbmd0aDtpKyspYSs9MTtyZXR1cm4gYX0odGhpcy5sYWJlbHMpO3JldHVybiBpPXRbMl0tdFswXSxhPXRbM10tdFsxXSxzPWkqYSxyPU1hdGgucG93KHMsLjUpLE1hdGgubWluKHIvbyxwYXJzZUludChlLmNvbmZpZy5kYXRhTGFiZWxzLnN0eWxlLmZvbnRTaXplLDEwKSl9fSx7a2V5Olwicm90YXRlVG9GaXRMYWJlbFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyxyLG8pe3ZhciBuPW5ldyBtKHRoaXMuY3R4KSxsPW4uZ2V0VGV4dFJlY3RzKGksZSk7aWYobC53aWR0aCt0aGlzLncuY29uZmlnLnN0cm9rZS53aWR0aCs1PnItYSYmbC53aWR0aDw9by1zKXt2YXIgaD1uLnJvdGF0ZUFyb3VuZENlbnRlcih0Lm5vZGUpO3Qubm9kZS5zZXRBdHRyaWJ1dGUoXCJ0cmFuc2Zvcm1cIixcInJvdGF0ZSgtOTAgXCIuY29uY2F0KGgueCxcIiBcIikuY29uY2F0KGgueSxcIilcIikpfX19LHtrZXk6XCJhbmltYXRlVHJlZW1hcFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzPW5ldyBiKHRoaXMuY3R4KTtzLmFuaW1hdGVSZWN0KHQse3g6ZS54LHk6ZS55LHdpZHRoOmUud2lkdGgsaGVpZ2h0OmUuaGVpZ2h0fSx7eDppLngseTppLnksd2lkdGg6aS53aWR0aCxoZWlnaHQ6aS5oZWlnaHR9LGEsKGZ1bmN0aW9uKCl7cy5hbmltYXRpb25Db21wbGV0ZWQodCl9KSl9fV0pLHR9KCksRnQ9ODY0MDAsUnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy50aW1lU2NhbGVBcnJheT1bXSx0aGlzLnV0Yz10aGlzLncuY29uZmlnLnhheGlzLmxhYmVscy5kYXRldGltZVVUQ31yZXR1cm4gcih0LFt7a2V5OlwiY2FsY3VsYXRlVGltZVNjYWxlVGlja3NcIix2YWx1ZTpmdW5jdGlvbih0LGkpe3ZhciBhPXRoaXMscz10aGlzLnc7aWYocy5nbG9iYWxzLmFsbFNlcmllc0NvbGxhcHNlZClyZXR1cm4gcy5nbG9iYWxzLmxhYmVscz1bXSxzLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzPVtdLFtdO3ZhciByPW5ldyBJKHRoaXMuY3R4KSxvPShpLXQpLzg2NGU1O3RoaXMuZGV0ZXJtaW5lSW50ZXJ2YWwobykscy5nbG9iYWxzLmRpc2FibGVab29tSW49ITEscy5nbG9iYWxzLmRpc2FibGVab29tT3V0PSExLG88LjAwMDExNTc0MDc0MDc0MDc0MDc1P3MuZ2xvYmFscy5kaXNhYmxlWm9vbUluPSEwOm8+NWU0JiYocy5nbG9iYWxzLmRpc2FibGVab29tT3V0PSEwKTt2YXIgbj1yLmdldFRpbWVVbml0c2Zyb21UaW1lc3RhbXAodCxpLHRoaXMudXRjKSxsPXMuZ2xvYmFscy5ncmlkV2lkdGgvbyxoPWwvMjQsYz1oLzYwLGQ9Yy82MCxnPU1hdGguZmxvb3IoMjQqbyksdT1NYXRoLmZsb29yKDE0NDAqbykscD1NYXRoLmZsb29yKG8qRnQpLGY9TWF0aC5mbG9vcihvKSx4PU1hdGguZmxvb3Ioby8zMCksYj1NYXRoLmZsb29yKG8vMzY1KSx2PXttaW5NaWxsaXNlY29uZDpuLm1pbk1pbGxpc2Vjb25kLG1pblNlY29uZDpuLm1pblNlY29uZCxtaW5NaW51dGU6bi5taW5NaW51dGUsbWluSG91cjpuLm1pbkhvdXIsbWluRGF0ZTpuLm1pbkRhdGUsbWluTW9udGg6bi5taW5Nb250aCxtaW5ZZWFyOm4ubWluWWVhcn0sbT17Zmlyc3RWYWw6dixjdXJyZW50TWlsbGlzZWNvbmQ6di5taW5NaWxsaXNlY29uZCxjdXJyZW50U2Vjb25kOnYubWluU2Vjb25kLGN1cnJlbnRNaW51dGU6di5taW5NaW51dGUsY3VycmVudEhvdXI6di5taW5Ib3VyLGN1cnJlbnRNb250aERhdGU6di5taW5EYXRlLGN1cnJlbnREYXRlOnYubWluRGF0ZSxjdXJyZW50TW9udGg6di5taW5Nb250aCxjdXJyZW50WWVhcjp2Lm1pblllYXIsZGF5c1dpZHRoT25YQXhpczpsLGhvdXJzV2lkdGhPblhBeGlzOmgsbWludXRlc1dpZHRoT25YQXhpczpjLHNlY29uZHNXaWR0aE9uWEF4aXM6ZCxudW1iZXJPZlNlY29uZHM6cCxudW1iZXJPZk1pbnV0ZXM6dSxudW1iZXJPZkhvdXJzOmcsbnVtYmVyT2ZEYXlzOmYsbnVtYmVyT2ZNb250aHM6eCxudW1iZXJPZlllYXJzOmJ9O3N3aXRjaCh0aGlzLnRpY2tJbnRlcnZhbCl7Y2FzZVwieWVhcnNcIjp0aGlzLmdlbmVyYXRlWWVhclNjYWxlKG0pO2JyZWFrO2Nhc2VcIm1vbnRoc1wiOmNhc2VcImhhbGZfeWVhclwiOnRoaXMuZ2VuZXJhdGVNb250aFNjYWxlKG0pO2JyZWFrO2Nhc2VcIm1vbnRoc19kYXlzXCI6Y2FzZVwibW9udGhzX2ZvcnRuaWdodFwiOmNhc2VcImRheXNcIjpjYXNlXCJ3ZWVrX2RheXNcIjp0aGlzLmdlbmVyYXRlRGF5U2NhbGUobSk7YnJlYWs7Y2FzZVwiaG91cnNcIjp0aGlzLmdlbmVyYXRlSG91clNjYWxlKG0pO2JyZWFrO2Nhc2VcIm1pbnV0ZXNfZml2ZXNcIjpjYXNlXCJtaW51dGVzXCI6dGhpcy5nZW5lcmF0ZU1pbnV0ZVNjYWxlKG0pO2JyZWFrO2Nhc2VcInNlY29uZHNfdGVuc1wiOmNhc2VcInNlY29uZHNfZml2ZXNcIjpjYXNlXCJzZWNvbmRzXCI6dGhpcy5nZW5lcmF0ZVNlY29uZFNjYWxlKG0pfXZhciB5PXRoaXMudGltZVNjYWxlQXJyYXkubWFwKChmdW5jdGlvbih0KXt2YXIgaT17cG9zaXRpb246dC5wb3NpdGlvbix1bml0OnQudW5pdCx5ZWFyOnQueWVhcixkYXk6dC5kYXk/dC5kYXk6MSxob3VyOnQuaG91cj90LmhvdXI6MCxtb250aDp0Lm1vbnRoKzF9O3JldHVyblwibW9udGhcIj09PXQudW5pdD9lKGUoe30saSkse30se2RheToxLHZhbHVlOnQudmFsdWUrMX0pOlwiZGF5XCI9PT10LnVuaXR8fFwiaG91clwiPT09dC51bml0P2UoZSh7fSxpKSx7fSx7dmFsdWU6dC52YWx1ZX0pOlwibWludXRlXCI9PT10LnVuaXQ/ZShlKHt9LGkpLHt9LHt2YWx1ZTp0LnZhbHVlLG1pbnV0ZTp0LnZhbHVlfSk6XCJzZWNvbmRcIj09PXQudW5pdD9lKGUoe30saSkse30se3ZhbHVlOnQudmFsdWUsbWludXRlOnQubWludXRlLHNlY29uZDp0LnNlY29uZH0pOnR9KSk7cmV0dXJuIHkuZmlsdGVyKChmdW5jdGlvbih0KXt2YXIgZT0xLGk9TWF0aC5jZWlsKHMuZ2xvYmFscy5ncmlkV2lkdGgvMTIwKSxyPXQudmFsdWU7dm9pZCAwIT09cy5jb25maWcueGF4aXMudGlja0Ftb3VudCYmKGk9cy5jb25maWcueGF4aXMudGlja0Ftb3VudCkseS5sZW5ndGg+aSYmKGU9TWF0aC5mbG9vcih5Lmxlbmd0aC9pKSk7dmFyIG89ITEsbj0hMTtzd2l0Y2goYS50aWNrSW50ZXJ2YWwpe2Nhc2VcInllYXJzXCI6XCJ5ZWFyXCI9PT10LnVuaXQmJihvPSEwKTticmVhaztjYXNlXCJoYWxmX3llYXJcIjplPTcsXCJ5ZWFyXCI9PT10LnVuaXQmJihvPSEwKTticmVhaztjYXNlXCJtb250aHNcIjplPTEsXCJ5ZWFyXCI9PT10LnVuaXQmJihvPSEwKTticmVhaztjYXNlXCJtb250aHNfZm9ydG5pZ2h0XCI6ZT0xNSxcInllYXJcIiE9PXQudW5pdCYmXCJtb250aFwiIT09dC51bml0fHwobz0hMCksMzA9PT1yJiYobj0hMCk7YnJlYWs7Y2FzZVwibW9udGhzX2RheXNcIjplPTEwLFwibW9udGhcIj09PXQudW5pdCYmKG89ITApLDMwPT09ciYmKG49ITApO2JyZWFrO2Nhc2VcIndlZWtfZGF5c1wiOmU9OCxcIm1vbnRoXCI9PT10LnVuaXQmJihvPSEwKTticmVhaztjYXNlXCJkYXlzXCI6ZT0xLFwibW9udGhcIj09PXQudW5pdCYmKG89ITApO2JyZWFrO2Nhc2VcImhvdXJzXCI6XCJkYXlcIj09PXQudW5pdCYmKG89ITApO2JyZWFrO2Nhc2VcIm1pbnV0ZXNfZml2ZXNcIjpjYXNlXCJzZWNvbmRzX2ZpdmVzXCI6ciU1IT0wJiYobj0hMCk7YnJlYWs7Y2FzZVwic2Vjb25kc190ZW5zXCI6ciUxMCE9MCYmKG49ITApfWlmKFwiaG91cnNcIj09PWEudGlja0ludGVydmFsfHxcIm1pbnV0ZXNfZml2ZXNcIj09PWEudGlja0ludGVydmFsfHxcInNlY29uZHNfdGVuc1wiPT09YS50aWNrSW50ZXJ2YWx8fFwic2Vjb25kc19maXZlc1wiPT09YS50aWNrSW50ZXJ2YWwpe2lmKCFuKXJldHVybiEwfWVsc2UgaWYoKHIlZT09MHx8bykmJiFuKXJldHVybiEwfSkpfX0se2tleTpcInJlY2FsY0RpbWVuc2lvbnNCYXNlZE9uRm9ybWF0XCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT10aGlzLmZvcm1hdERhdGVzKHQpLHM9dGhpcy5yZW1vdmVPdmVybGFwcGluZ1RTKGEpO2kuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHM9cy5zbGljZSgpLG5ldyBvdCh0aGlzLmN0eCkucGxvdENvb3JkcygpfX0se2tleTpcImRldGVybWluZUludGVydmFsXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9MjQqdCxpPTYwKmU7c3dpdGNoKCEwKXtjYXNlIHQvMzY1PjU6dGhpcy50aWNrSW50ZXJ2YWw9XCJ5ZWFyc1wiO2JyZWFrO2Nhc2UgdD44MDA6dGhpcy50aWNrSW50ZXJ2YWw9XCJoYWxmX3llYXJcIjticmVhaztjYXNlIHQ+MTgwOnRoaXMudGlja0ludGVydmFsPVwibW9udGhzXCI7YnJlYWs7Y2FzZSB0PjkwOnRoaXMudGlja0ludGVydmFsPVwibW9udGhzX2ZvcnRuaWdodFwiO2JyZWFrO2Nhc2UgdD42MDp0aGlzLnRpY2tJbnRlcnZhbD1cIm1vbnRoc19kYXlzXCI7YnJlYWs7Y2FzZSB0PjMwOnRoaXMudGlja0ludGVydmFsPVwid2Vla19kYXlzXCI7YnJlYWs7Y2FzZSB0PjI6dGhpcy50aWNrSW50ZXJ2YWw9XCJkYXlzXCI7YnJlYWs7Y2FzZSBlPjIuNDp0aGlzLnRpY2tJbnRlcnZhbD1cImhvdXJzXCI7YnJlYWs7Y2FzZSBpPjE1OnRoaXMudGlja0ludGVydmFsPVwibWludXRlc19maXZlc1wiO2JyZWFrO2Nhc2UgaT41OnRoaXMudGlja0ludGVydmFsPVwibWludXRlc1wiO2JyZWFrO2Nhc2UgaT4xOnRoaXMudGlja0ludGVydmFsPVwic2Vjb25kc190ZW5zXCI7YnJlYWs7Y2FzZSA2MCppPjIwOnRoaXMudGlja0ludGVydmFsPVwic2Vjb25kc19maXZlc1wiO2JyZWFrO2RlZmF1bHQ6dGhpcy50aWNrSW50ZXJ2YWw9XCJzZWNvbmRzXCJ9fX0se2tleTpcImdlbmVyYXRlWWVhclNjYWxlXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5maXJzdFZhbCxpPXQuY3VycmVudE1vbnRoLGE9dC5jdXJyZW50WWVhcixzPXQuZGF5c1dpZHRoT25YQXhpcyxyPXQubnVtYmVyT2ZZZWFycyxvPWUubWluWWVhcixuPTAsbD1uZXcgSSh0aGlzLmN0eCksaD1cInllYXJcIjtpZihlLm1pbkRhdGU+MXx8ZS5taW5Nb250aD4wKXt2YXIgYz1sLmRldGVybWluZVJlbWFpbmluZ0RheXNPZlllYXIoZS5taW5ZZWFyLGUubWluTW9udGgsZS5taW5EYXRlKTtuPShsLmRldGVybWluZURheXNPZlllYXIoZS5taW5ZZWFyKS1jKzEpKnMsbz1lLm1pblllYXIrMSx0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOm4sdmFsdWU6byx1bml0OmgseWVhcjpvLG1vbnRoOngubW9udGhNb2QoaSsxKX0pfWVsc2UgMT09PWUubWluRGF0ZSYmMD09PWUubWluTW9udGgmJnRoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246bix2YWx1ZTpvLHVuaXQ6aCx5ZWFyOmEsbW9udGg6eC5tb250aE1vZChpKzEpfSk7Zm9yKHZhciBkPW8sZz1uLHU9MDt1PHI7dSsrKWQrKyxnPWwuZGV0ZXJtaW5lRGF5c09mWWVhcihkLTEpKnMrZyx0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOmcsdmFsdWU6ZCx1bml0OmgseWVhcjpkLG1vbnRoOjF9KX19LHtrZXk6XCJnZW5lcmF0ZU1vbnRoU2NhbGVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmZpcnN0VmFsLGk9dC5jdXJyZW50TW9udGhEYXRlLGE9dC5jdXJyZW50TW9udGgscz10LmN1cnJlbnRZZWFyLHI9dC5kYXlzV2lkdGhPblhBeGlzLG89dC5udW1iZXJPZk1vbnRocyxuPWEsbD0wLGg9bmV3IEkodGhpcy5jdHgpLGM9XCJtb250aFwiLGQ9MDtpZihlLm1pbkRhdGU+MSl7bD0oaC5kZXRlcm1pbmVEYXlzT2ZNb250aHMoYSsxLGUubWluWWVhciktaSsxKSpyLG49eC5tb250aE1vZChhKzEpO3ZhciBnPXMrZCx1PXgubW9udGhNb2QobikscD1uOzA9PT1uJiYoYz1cInllYXJcIixwPWcsdT0xLGcrPWQrPTEpLHRoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246bCx2YWx1ZTpwLHVuaXQ6Yyx5ZWFyOmcsbW9udGg6dX0pfWVsc2UgdGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHtwb3NpdGlvbjpsLHZhbHVlOm4sdW5pdDpjLHllYXI6cyxtb250aDp4Lm1vbnRoTW9kKGEpfSk7Zm9yKHZhciBmPW4rMSxiPWwsdj0wLG09MTt2PG87disrLG0rKyl7MD09PShmPXgubW9udGhNb2QoZikpPyhjPVwieWVhclwiLGQrPTEpOmM9XCJtb250aFwiO3ZhciB5PXRoaXMuX2dldFllYXIocyxmLGQpO2I9aC5kZXRlcm1pbmVEYXlzT2ZNb250aHMoZix5KSpyK2I7dmFyIHc9MD09PWY/eTpmO3RoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246Yix2YWx1ZTp3LHVuaXQ6Yyx5ZWFyOnksbW9udGg6MD09PWY/MTpmfSksZisrfX19LHtrZXk6XCJnZW5lcmF0ZURheVNjYWxlXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5maXJzdFZhbCxpPXQuY3VycmVudE1vbnRoLGE9dC5jdXJyZW50WWVhcixzPXQuaG91cnNXaWR0aE9uWEF4aXMscj10Lm51bWJlck9mRGF5cyxvPW5ldyBJKHRoaXMuY3R4KSxuPVwiZGF5XCIsbD1lLm1pbkRhdGUrMSxoPWwsYz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHQ+by5kZXRlcm1pbmVEYXlzT2ZNb250aHMoZSsxLGkpPyhoPTEsbj1cIm1vbnRoXCIsZz1lKz0xLGUpOmV9LGQ9KDI0LWUubWluSG91cikqcyxnPWwsdT1jKGgsaSxhKTswPT09ZS5taW5Ib3VyJiYxPT09ZS5taW5EYXRlPyhkPTAsZz14Lm1vbnRoTW9kKGUubWluTW9udGgpLG49XCJtb250aFwiLGg9ZS5taW5EYXRlLHIrKyk6MSE9PWUubWluRGF0ZSYmMD09PWUubWluSG91ciYmMD09PWUubWluTWludXRlJiYoZD0wLGw9ZS5taW5EYXRlLGc9bCx1PWMoaD1sLGksYSkpLHRoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246ZCx2YWx1ZTpnLHVuaXQ6bix5ZWFyOnRoaXMuX2dldFllYXIoYSx1LDApLG1vbnRoOngubW9udGhNb2QodSksZGF5Omh9KTtmb3IodmFyIHA9ZCxmPTA7ZjxyO2YrKyl7bj1cImRheVwiLHU9YyhoKz0xLHUsdGhpcy5fZ2V0WWVhcihhLHUsMCkpO3ZhciBiPXRoaXMuX2dldFllYXIoYSx1LDApO3A9MjQqcytwO3ZhciB2PTE9PT1oP3gubW9udGhNb2QodSk6aDt0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOnAsdmFsdWU6dix1bml0Om4seWVhcjpiLG1vbnRoOngubW9udGhNb2QodSksZGF5OnZ9KX19fSx7a2V5OlwiZ2VuZXJhdGVIb3VyU2NhbGVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmZpcnN0VmFsLGk9dC5jdXJyZW50RGF0ZSxhPXQuY3VycmVudE1vbnRoLHM9dC5jdXJyZW50WWVhcixyPXQubWludXRlc1dpZHRoT25YQXhpcyxvPXQubnVtYmVyT2ZIb3VycyxuPW5ldyBJKHRoaXMuY3R4KSxsPVwiaG91clwiLGg9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD5uLmRldGVybWluZURheXNPZk1vbnRocyhlKzEscykmJihmPTEsZSs9MSkse21vbnRoOmUsZGF0ZTpmfX0sYz1mdW5jdGlvbih0LGUpe3JldHVybiB0Pm4uZGV0ZXJtaW5lRGF5c09mTW9udGhzKGUrMSxzKT9lKz0xOmV9LGQ9NjAtKGUubWluTWludXRlK2UubWluU2Vjb25kLzYwKSxnPWQqcix1PWUubWluSG91cisxLHA9dSsxOzYwPT09ZCYmKGc9MCxwPSh1PWUubWluSG91cikrMSk7dmFyIGY9aSxiPWMoZixhKTt0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOmcsdmFsdWU6dSx1bml0OmwsZGF5OmYsaG91cjpwLHllYXI6cyxtb250aDp4Lm1vbnRoTW9kKGIpfSk7Zm9yKHZhciB2PWcsbT0wO208bzttKyspe2lmKGw9XCJob3VyXCIscD49MjQpcD0wLGw9XCJkYXlcIixiPWgoZis9MSxiKS5tb250aCxiPWMoZixiKTt2YXIgeT10aGlzLl9nZXRZZWFyKHMsYiwwKTt2PTYwKnIrdjt2YXIgdz0wPT09cD9mOnA7dGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHtwb3NpdGlvbjp2LHZhbHVlOncsdW5pdDpsLGhvdXI6cCxkYXk6Zix5ZWFyOnksbW9udGg6eC5tb250aE1vZChiKX0pLHArK319fSx7a2V5OlwiZ2VuZXJhdGVNaW51dGVTY2FsZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10LmN1cnJlbnRNaWxsaXNlY29uZCxpPXQuY3VycmVudFNlY29uZCxhPXQuY3VycmVudE1pbnV0ZSxzPXQuY3VycmVudEhvdXIscj10LmN1cnJlbnREYXRlLG89dC5jdXJyZW50TW9udGgsbj10LmN1cnJlbnRZZWFyLGw9dC5taW51dGVzV2lkdGhPblhBeGlzLGg9dC5zZWNvbmRzV2lkdGhPblhBeGlzLGM9dC5udW1iZXJPZk1pbnV0ZXMsZD1hKzEsZz1yLHU9byxwPW4sZj1zLGI9KDYwLWktZS8xZTMpKmgsdj0wO3Y8Yzt2KyspZD49NjAmJihkPTAsMjQ9PT0oZis9MSkmJihmPTApKSx0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOmIsdmFsdWU6ZCx1bml0OlwibWludXRlXCIsaG91cjpmLG1pbnV0ZTpkLGRheTpnLHllYXI6dGhpcy5fZ2V0WWVhcihwLHUsMCksbW9udGg6eC5tb250aE1vZCh1KX0pLGIrPWwsZCsrfX0se2tleTpcImdlbmVyYXRlU2Vjb25kU2NhbGVcIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dC5jdXJyZW50TWlsbGlzZWNvbmQsaT10LmN1cnJlbnRTZWNvbmQsYT10LmN1cnJlbnRNaW51dGUscz10LmN1cnJlbnRIb3VyLHI9dC5jdXJyZW50RGF0ZSxvPXQuY3VycmVudE1vbnRoLG49dC5jdXJyZW50WWVhcixsPXQuc2Vjb25kc1dpZHRoT25YQXhpcyxoPXQubnVtYmVyT2ZTZWNvbmRzLGM9aSsxLGQ9YSxnPXIsdT1vLHA9bixmPXMsYj0oMWUzLWUpLzFlMypsLHY9MDt2PGg7disrKWM+PTYwJiYoYz0wLCsrZD49NjAmJihkPTAsMjQ9PT0rK2YmJihmPTApKSksdGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHtwb3NpdGlvbjpiLHZhbHVlOmMsdW5pdDpcInNlY29uZFwiLGhvdXI6ZixtaW51dGU6ZCxzZWNvbmQ6YyxkYXk6Zyx5ZWFyOnRoaXMuX2dldFllYXIocCx1LDApLG1vbnRoOngubW9udGhNb2QodSl9KSxiKz1sLGMrK319LHtrZXk6XCJjcmVhdGVSYXdEYXRlU3RyaW5nXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10LnllYXI7cmV0dXJuIDA9PT10Lm1vbnRoJiYodC5tb250aD0xKSxpKz1cIi1cIisoXCIwXCIrdC5tb250aC50b1N0cmluZygpKS5zbGljZSgtMiksXCJkYXlcIj09PXQudW5pdD9pKz1cImRheVwiPT09dC51bml0P1wiLVwiKyhcIjBcIitlKS5zbGljZSgtMik6XCItMDFcIjppKz1cIi1cIisoXCIwXCIrKHQuZGF5P3QuZGF5OlwiMVwiKSkuc2xpY2UoLTIpLFwiaG91clwiPT09dC51bml0P2krPVwiaG91clwiPT09dC51bml0P1wiVFwiKyhcIjBcIitlKS5zbGljZSgtMik6XCJUMDBcIjppKz1cIlRcIisoXCIwXCIrKHQuaG91cj90LmhvdXI6XCIwXCIpKS5zbGljZSgtMiksXCJtaW51dGVcIj09PXQudW5pdD9pKz1cIjpcIisoXCIwXCIrZSkuc2xpY2UoLTIpOmkrPVwiOlwiKyh0Lm1pbnV0ZT8oXCIwXCIrdC5taW51dGUpLnNsaWNlKC0yKTpcIjAwXCIpLFwic2Vjb25kXCI9PT10LnVuaXQ/aSs9XCI6XCIrKFwiMFwiK2UpLnNsaWNlKC0yKTppKz1cIjowMFwiLHRoaXMudXRjJiYoaSs9XCIuMDAwWlwiKSxpfX0se2tleTpcImZvcm1hdERhdGVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXRoaXMudztyZXR1cm4gdC5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBhPXQudmFsdWUudG9TdHJpbmcoKSxzPW5ldyBJKGUuY3R4KSxyPWUuY3JlYXRlUmF3RGF0ZVN0cmluZyh0LGEpLG89cy5nZXREYXRlKHMucGFyc2VEYXRlKHIpKTtpZihlLnV0Y3x8KG89cy5nZXREYXRlKHMucGFyc2VEYXRlV2l0aFRpbWV6b25lKHIpKSksdm9pZCAwPT09aS5jb25maWcueGF4aXMubGFiZWxzLmZvcm1hdCl7dmFyIG49XCJkZCBNTU1cIixsPWkuY29uZmlnLnhheGlzLmxhYmVscy5kYXRldGltZUZvcm1hdHRlcjtcInllYXJcIj09PXQudW5pdCYmKG49bC55ZWFyKSxcIm1vbnRoXCI9PT10LnVuaXQmJihuPWwubW9udGgpLFwiZGF5XCI9PT10LnVuaXQmJihuPWwuZGF5KSxcImhvdXJcIj09PXQudW5pdCYmKG49bC5ob3VyKSxcIm1pbnV0ZVwiPT09dC51bml0JiYobj1sLm1pbnV0ZSksXCJzZWNvbmRcIj09PXQudW5pdCYmKG49bC5zZWNvbmQpLGE9cy5mb3JtYXREYXRlKG8sbil9ZWxzZSBhPXMuZm9ybWF0RGF0ZShvLGkuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXQpO3JldHVybntkYXRlU3RyaW5nOnIscG9zaXRpb246dC5wb3NpdGlvbix2YWx1ZTphLHVuaXQ6dC51bml0LHllYXI6dC55ZWFyLG1vbnRoOnQubW9udGh9fSkpfX0se2tleTpcInJlbW92ZU92ZXJsYXBwaW5nVFNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpPXRoaXMsYT1uZXcgbSh0aGlzLmN0eCkscz0hMTt0Lmxlbmd0aD4wJiZ0WzBdLnZhbHVlJiZ0LmV2ZXJ5KChmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZS5sZW5ndGg9PT10WzBdLnZhbHVlLmxlbmd0aH0pKSYmKHM9ITAsZT1hLmdldFRleHRSZWN0cyh0WzBdLnZhbHVlKS53aWR0aCk7dmFyIHI9MCxvPXQubWFwKChmdW5jdGlvbihvLG4pe2lmKG4+MCYmaS53LmNvbmZpZy54YXhpcy5sYWJlbHMuaGlkZU92ZXJsYXBwaW5nTGFiZWxzKXt2YXIgbD1zP2U6YS5nZXRUZXh0UmVjdHModFtyXS52YWx1ZSkud2lkdGgsaD10W3JdLnBvc2l0aW9uO3JldHVybiBvLnBvc2l0aW9uPmgrbCsxMD8ocj1uLG8pOm51bGx9cmV0dXJuIG99KSk7cmV0dXJuIG89by5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT09dH0pKX19LHtrZXk6XCJfZ2V0WWVhclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdCtNYXRoLmZsb29yKGUvMTIpK2l9fV0pLHR9KCksRHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsaSl7YSh0aGlzLHQpLHRoaXMuY3R4PWksdGhpcy53PWkudyx0aGlzLmVsPWV9cmV0dXJuIHIodCxbe2tleTpcInNldHVwRWxlbWVudHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5nbG9iYWxzLGU9dGhpcy53LmNvbmZpZyxpPWUuY2hhcnQudHlwZTt0LmF4aXNDaGFydHM9W1wibGluZVwiLFwiYXJlYVwiLFwiYmFyXCIsXCJyYW5nZUJhclwiLFwicmFuZ2VBcmVhXCIsXCJjYW5kbGVzdGlja1wiLFwiYm94UGxvdFwiLFwic2NhdHRlclwiLFwiYnViYmxlXCIsXCJyYWRhclwiLFwiaGVhdG1hcFwiLFwidHJlZW1hcFwiXS5pbmRleE9mKGkpPi0xLHQueHlDaGFydHM9W1wibGluZVwiLFwiYXJlYVwiLFwiYmFyXCIsXCJyYW5nZUJhclwiLFwicmFuZ2VBcmVhXCIsXCJjYW5kbGVzdGlja1wiLFwiYm94UGxvdFwiLFwic2NhdHRlclwiLFwiYnViYmxlXCJdLmluZGV4T2YoaSk+LTEsdC5pc0Jhckhvcml6b250YWw9KFwiYmFyXCI9PT1lLmNoYXJ0LnR5cGV8fFwicmFuZ2VCYXJcIj09PWUuY2hhcnQudHlwZXx8XCJib3hQbG90XCI9PT1lLmNoYXJ0LnR5cGUpJiZlLnBsb3RPcHRpb25zLmJhci5ob3Jpem9udGFsLHQuY2hhcnRDbGFzcz1cIi5hcGV4Y2hhcnRzXCIrdC5jaGFydElELHQuZG9tLmJhc2VFbD10aGlzLmVsLHQuZG9tLmVsV3JhcD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLG0uc2V0QXR0cnModC5kb20uZWxXcmFwLHtpZDp0LmNoYXJ0Q2xhc3Muc3Vic3RyaW5nKDEpLGNsYXNzOlwiYXBleGNoYXJ0cy1jYW52YXMgXCIrdC5jaGFydENsYXNzLnN1YnN0cmluZygxKX0pLHRoaXMuZWwuYXBwZW5kQ2hpbGQodC5kb20uZWxXcmFwKSx0LmRvbS5QYXBlcj1uZXcgd2luZG93LlNWRy5Eb2ModC5kb20uZWxXcmFwKSx0LmRvbS5QYXBlci5hdHRyKHtjbGFzczpcImFwZXhjaGFydHMtc3ZnXCIsXCJ4bWxuczpkYXRhXCI6XCJBcGV4Q2hhcnRzTlNcIix0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIuY29uY2F0KGUuY2hhcnQub2Zmc2V0WCxcIiwgXCIpLmNvbmNhdChlLmNoYXJ0Lm9mZnNldFksXCIpXCIpfSksdC5kb20uUGFwZXIubm9kZS5zdHlsZS5iYWNrZ3JvdW5kPWUuY2hhcnQuYmFja2dyb3VuZCx0aGlzLnNldFNWR0RpbWVuc2lvbnMoKSx0LmRvbS5lbExlZ2VuZEZvcmVpZ249ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQuU1ZHTlMsXCJmb3JlaWduT2JqZWN0XCIpLG0uc2V0QXR0cnModC5kb20uZWxMZWdlbmRGb3JlaWduLHt4OjAseTowLHdpZHRoOnQuc3ZnV2lkdGgsaGVpZ2h0OnQuc3ZnSGVpZ2h0fSksdC5kb20uZWxMZWdlbmRXcmFwPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksdC5kb20uZWxMZWdlbmRXcmFwLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWxlZ2VuZFwiKSx0LmRvbS5lbExlZ2VuZFdyYXAuc2V0QXR0cmlidXRlKFwieG1sbnNcIixcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIiksdC5kb20uZWxMZWdlbmRGb3JlaWduLmFwcGVuZENoaWxkKHQuZG9tLmVsTGVnZW5kV3JhcCksdC5kb20uUGFwZXIubm9kZS5hcHBlbmRDaGlsZCh0LmRvbS5lbExlZ2VuZEZvcmVpZ24pLHQuZG9tLmVsR3JhcGhpY2FsPXQuZG9tLlBhcGVyLmdyb3VwKCkuYXR0cih7Y2xhc3M6XCJhcGV4Y2hhcnRzLWlubmVyIGFwZXhjaGFydHMtZ3JhcGhpY2FsXCJ9KSx0LmRvbS5lbERlZnM9dC5kb20uUGFwZXIuZGVmcygpLHQuZG9tLlBhcGVyLmFkZCh0LmRvbS5lbEdyYXBoaWNhbCksdC5kb20uZWxHcmFwaGljYWwuYWRkKHQuZG9tLmVsRGVmcyl9fSx7a2V5OlwicGxvdENoYXJ0VHlwZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9aS5jb25maWcscz1pLmdsb2JhbHMscj17c2VyaWVzOltdLGk6W119LG89e3NlcmllczpbXSxpOltdfSxuPXtzZXJpZXM6W10saTpbXX0sbD17c2VyaWVzOltdLGk6W119LGg9e3NlcmllczpbXSxpOltdfSxjPXtzZXJpZXM6W10saTpbXX0sZD17c2VyaWVzOltdLGk6W119LGc9e3NlcmllczpbXSxpOltdfSx1PXtzZXJpZXM6W10sc2VyaWVzUmFuZ2VFbmQ6W10saTpbXX07cy5zZXJpZXMubWFwKChmdW5jdGlvbihlLHApe3ZhciBmPTA7dm9pZCAwIT09dFtwXS50eXBlPyhcImNvbHVtblwiPT09dFtwXS50eXBlfHxcImJhclwiPT09dFtwXS50eXBlPyhzLnNlcmllcy5sZW5ndGg+MSYmYS5wbG90T3B0aW9ucy5iYXIuaG9yaXpvbnRhbCYmY29uc29sZS53YXJuKFwiSG9yaXpvbnRhbCBiYXJzIGFyZSBub3Qgc3VwcG9ydGVkIGluIGEgbWl4ZWQvY29tYm8gY2hhcnQuIFBsZWFzZSB0dXJuIG9mZiBgcGxvdE9wdGlvbnMuYmFyLmhvcml6b250YWxgXCIpLGguc2VyaWVzLnB1c2goZSksaC5pLnB1c2gocCksZisrLGkuZ2xvYmFscy5jb2x1bW5TZXJpZXM9aC5zZXJpZXMpOlwiYXJlYVwiPT09dFtwXS50eXBlPyhvLnNlcmllcy5wdXNoKGUpLG8uaS5wdXNoKHApLGYrKyk6XCJsaW5lXCI9PT10W3BdLnR5cGU/KHIuc2VyaWVzLnB1c2goZSksci5pLnB1c2gocCksZisrKTpcInNjYXR0ZXJcIj09PXRbcF0udHlwZT8obi5zZXJpZXMucHVzaChlKSxuLmkucHVzaChwKSk6XCJidWJibGVcIj09PXRbcF0udHlwZT8obC5zZXJpZXMucHVzaChlKSxsLmkucHVzaChwKSxmKyspOlwiY2FuZGxlc3RpY2tcIj09PXRbcF0udHlwZT8oYy5zZXJpZXMucHVzaChlKSxjLmkucHVzaChwKSxmKyspOlwiYm94UGxvdFwiPT09dFtwXS50eXBlPyhkLnNlcmllcy5wdXNoKGUpLGQuaS5wdXNoKHApLGYrKyk6XCJyYW5nZUJhclwiPT09dFtwXS50eXBlPyhnLnNlcmllcy5wdXNoKGUpLGcuaS5wdXNoKHApLGYrKyk6XCJyYW5nZUFyZWFcIj09PXRbcF0udHlwZT8odS5zZXJpZXMucHVzaChzLnNlcmllc1JhbmdlU3RhcnRbcF0pLHUuc2VyaWVzUmFuZ2VFbmQucHVzaChzLnNlcmllc1JhbmdlRW5kW3BdKSx1LmkucHVzaChwKSxmKyspOmNvbnNvbGUud2FybihcIllvdSBoYXZlIHNwZWNpZmllZCBhbiB1bnJlY29nbml6ZWQgY2hhcnQgdHlwZS4gQXZhaWxhYmxlIHR5cGVzIGZvciB0aGlzIHByb3BlcnR5IGFyZSBsaW5lL2FyZWEvY29sdW1uL2Jhci9zY2F0dGVyL2J1YmJsZS9jYW5kbGVzdGljay9ib3hQbG90L3JhbmdlQmFyL3JhbmdlQXJlYVwiKSxmPjEmJihzLmNvbWJvQ2hhcnRzPSEwKSk6KHIuc2VyaWVzLnB1c2goZSksci5pLnB1c2gocCkpfSkpO3ZhciBwPW5ldyBYdCh0aGlzLmN0eCxlKSxmPW5ldyBrdCh0aGlzLmN0eCxlKTt0aGlzLmN0eC5waWU9bmV3IEx0KHRoaXMuY3R4KTt2YXIgeD1uZXcgSXQodGhpcy5jdHgpO3RoaXMuY3R4LnJhbmdlQmFyPW5ldyBUdCh0aGlzLmN0eCxlKTt2YXIgYj1uZXcgUHQodGhpcy5jdHgpLHY9W107aWYocy5jb21ib0NoYXJ0cyl7aWYoby5zZXJpZXMubGVuZ3RoPjAmJnYucHVzaChwLmRyYXcoby5zZXJpZXMsXCJhcmVhXCIsby5pKSksaC5zZXJpZXMubGVuZ3RoPjApaWYoaS5jb25maWcuY2hhcnQuc3RhY2tlZCl7dmFyIG09bmV3IHd0KHRoaXMuY3R4LGUpO3YucHVzaChtLmRyYXcoaC5zZXJpZXMsaC5pKSl9ZWxzZSB0aGlzLmN0eC5iYXI9bmV3IHl0KHRoaXMuY3R4LGUpLHYucHVzaCh0aGlzLmN0eC5iYXIuZHJhdyhoLnNlcmllcyxoLmkpKTtpZih1LnNlcmllcy5sZW5ndGg+MCYmdi5wdXNoKHAuZHJhdyh1LnNlcmllcyxcInJhbmdlQXJlYVwiLHUuaSx1LnNlcmllc1JhbmdlRW5kKSksci5zZXJpZXMubGVuZ3RoPjAmJnYucHVzaChwLmRyYXcoci5zZXJpZXMsXCJsaW5lXCIsci5pKSksYy5zZXJpZXMubGVuZ3RoPjAmJnYucHVzaChmLmRyYXcoYy5zZXJpZXMsXCJjYW5kbGVzdGlja1wiLGMuaSkpLGQuc2VyaWVzLmxlbmd0aD4wJiZ2LnB1c2goZi5kcmF3KGQuc2VyaWVzLFwiYm94UGxvdFwiLGQuaSkpLGcuc2VyaWVzLmxlbmd0aD4wJiZ2LnB1c2godGhpcy5jdHgucmFuZ2VCYXIuZHJhdyhnLnNlcmllcyxnLmkpKSxuLnNlcmllcy5sZW5ndGg+MCl7dmFyIHk9bmV3IFh0KHRoaXMuY3R4LGUsITApO3YucHVzaCh5LmRyYXcobi5zZXJpZXMsXCJzY2F0dGVyXCIsbi5pKSl9aWYobC5zZXJpZXMubGVuZ3RoPjApe3ZhciB3PW5ldyBYdCh0aGlzLmN0eCxlLCEwKTt2LnB1c2gody5kcmF3KGwuc2VyaWVzLFwiYnViYmxlXCIsbC5pKSl9fWVsc2Ugc3dpdGNoKGEuY2hhcnQudHlwZSl7Y2FzZVwibGluZVwiOnY9cC5kcmF3KHMuc2VyaWVzLFwibGluZVwiKTticmVhaztjYXNlXCJhcmVhXCI6dj1wLmRyYXcocy5zZXJpZXMsXCJhcmVhXCIpO2JyZWFrO2Nhc2VcImJhclwiOmlmKGEuY2hhcnQuc3RhY2tlZCl2PW5ldyB3dCh0aGlzLmN0eCxlKS5kcmF3KHMuc2VyaWVzKTtlbHNlIHRoaXMuY3R4LmJhcj1uZXcgeXQodGhpcy5jdHgsZSksdj10aGlzLmN0eC5iYXIuZHJhdyhzLnNlcmllcyk7YnJlYWs7Y2FzZVwiY2FuZGxlc3RpY2tcIjp2PW5ldyBrdCh0aGlzLmN0eCxlKS5kcmF3KHMuc2VyaWVzLFwiY2FuZGxlc3RpY2tcIik7YnJlYWs7Y2FzZVwiYm94UGxvdFwiOnY9bmV3IGt0KHRoaXMuY3R4LGUpLmRyYXcocy5zZXJpZXMsXCJib3hQbG90XCIpO2JyZWFrO2Nhc2VcInJhbmdlQmFyXCI6dj10aGlzLmN0eC5yYW5nZUJhci5kcmF3KHMuc2VyaWVzKTticmVhaztjYXNlXCJyYW5nZUFyZWFcIjp2PXAuZHJhdyhzLnNlcmllc1JhbmdlU3RhcnQsXCJyYW5nZUFyZWFcIix2b2lkIDAscy5zZXJpZXNSYW5nZUVuZCk7YnJlYWs7Y2FzZVwiaGVhdG1hcFwiOnY9bmV3IFN0KHRoaXMuY3R4LGUpLmRyYXcocy5zZXJpZXMpO2JyZWFrO2Nhc2VcInRyZWVtYXBcIjp2PW5ldyBZdCh0aGlzLmN0eCxlKS5kcmF3KHMuc2VyaWVzKTticmVhaztjYXNlXCJwaWVcIjpjYXNlXCJkb251dFwiOmNhc2VcInBvbGFyQXJlYVwiOnY9dGhpcy5jdHgucGllLmRyYXcocy5zZXJpZXMpO2JyZWFrO2Nhc2VcInJhZGlhbEJhclwiOnY9eC5kcmF3KHMuc2VyaWVzKTticmVhaztjYXNlXCJyYWRhclwiOnY9Yi5kcmF3KHMuc2VyaWVzKTticmVhaztkZWZhdWx0OnY9cC5kcmF3KHMuc2VyaWVzKX1yZXR1cm4gdn19LHtrZXk6XCJzZXRTVkdEaW1lbnNpb25zXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncuZ2xvYmFscyxlPXRoaXMudy5jb25maWc7dC5zdmdXaWR0aD1lLmNoYXJ0LndpZHRoLHQuc3ZnSGVpZ2h0PWUuY2hhcnQuaGVpZ2h0O3ZhciBpPXguZ2V0RGltZW5zaW9ucyh0aGlzLmVsKSxhPWUuY2hhcnQud2lkdGgudG9TdHJpbmcoKS5zcGxpdCgvWzAtOV0rL2cpLnBvcCgpO1wiJVwiPT09YT94LmlzTnVtYmVyKGlbMF0pJiYoMD09PWlbMF0ud2lkdGgmJihpPXguZ2V0RGltZW5zaW9ucyh0aGlzLmVsLnBhcmVudE5vZGUpKSx0LnN2Z1dpZHRoPWlbMF0qcGFyc2VJbnQoZS5jaGFydC53aWR0aCwxMCkvMTAwKTpcInB4XCIhPT1hJiZcIlwiIT09YXx8KHQuc3ZnV2lkdGg9cGFyc2VJbnQoZS5jaGFydC53aWR0aCwxMCkpO3ZhciBzPWUuY2hhcnQuaGVpZ2h0LnRvU3RyaW5nKCkuc3BsaXQoL1swLTldKy9nKS5wb3AoKTtpZihcImF1dG9cIiE9PXQuc3ZnSGVpZ2h0JiZcIlwiIT09dC5zdmdIZWlnaHQpaWYoXCIlXCI9PT1zKXt2YXIgcj14LmdldERpbWVuc2lvbnModGhpcy5lbC5wYXJlbnROb2RlKTt0LnN2Z0hlaWdodD1yWzFdKnBhcnNlSW50KGUuY2hhcnQuaGVpZ2h0LDEwKS8xMDB9ZWxzZSB0LnN2Z0hlaWdodD1wYXJzZUludChlLmNoYXJ0LmhlaWdodCwxMCk7ZWxzZSB0LmF4aXNDaGFydHM/dC5zdmdIZWlnaHQ9dC5zdmdXaWR0aC8xLjYxOnQuc3ZnSGVpZ2h0PXQuc3ZnV2lkdGgvMS4yO2lmKHQuc3ZnV2lkdGg8MCYmKHQuc3ZnV2lkdGg9MCksdC5zdmdIZWlnaHQ8MCYmKHQuc3ZnSGVpZ2h0PTApLG0uc2V0QXR0cnModC5kb20uUGFwZXIubm9kZSx7d2lkdGg6dC5zdmdXaWR0aCxoZWlnaHQ6dC5zdmdIZWlnaHR9KSxcIiVcIiE9PXMpe3ZhciBvPWUuY2hhcnQuc3BhcmtsaW5lLmVuYWJsZWQ/MDp0LmF4aXNDaGFydHM/ZS5jaGFydC5wYXJlbnRIZWlnaHRPZmZzZXQ6MDt0LmRvbS5QYXBlci5ub2RlLnBhcmVudE5vZGUucGFyZW50Tm9kZS5zdHlsZS5taW5IZWlnaHQ9dC5zdmdIZWlnaHQrbytcInB4XCJ9dC5kb20uZWxXcmFwLnN0eWxlLndpZHRoPXQuc3ZnV2lkdGgrXCJweFwiLHQuZG9tLmVsV3JhcC5zdHlsZS5oZWlnaHQ9dC5zdmdIZWlnaHQrXCJweFwifX0se2tleTpcInNoaWZ0R3JhcGhQb3NpdGlvblwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53Lmdsb2JhbHMsZT10LnRyYW5zbGF0ZVksaT17dHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiK3QudHJhbnNsYXRlWCtcIiwgXCIrZStcIilcIn07bS5zZXRBdHRycyh0LmRvbS5lbEdyYXBoaWNhbC5ub2RlLGkpfX0se2tleTpcInJlc2l6ZU5vbkF4aXNDaGFydHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXQuZ2xvYmFscyxpPTAsYT10LmNvbmZpZy5jaGFydC5zcGFya2xpbmUuZW5hYmxlZD8xOjE1O2ErPXQuY29uZmlnLmdyaWQucGFkZGluZy5ib3R0b20sXCJ0b3BcIiE9PXQuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiYmXCJib3R0b21cIiE9PXQuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbnx8IXQuY29uZmlnLmxlZ2VuZC5zaG93fHx0LmNvbmZpZy5sZWdlbmQuZmxvYXRpbmd8fChpPW5ldyBsdCh0aGlzLmN0eCkubGVnZW5kSGVscGVycy5nZXRMZWdlbmRCQm94KCkuY2x3aCsxMCk7dmFyIHM9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXJhZGlhbGJhciwgLmFwZXhjaGFydHMtcGllXCIpLHI9Mi4wNSp0Lmdsb2JhbHMucmFkaWFsU2l6ZTtpZihzJiYhdC5jb25maWcuY2hhcnQuc3BhcmtsaW5lLmVuYWJsZWQmJjAhPT10LmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuc3RhcnRBbmdsZSl7dmFyIG89eC5nZXRCb3VuZGluZ0NsaWVudFJlY3Qocyk7cj1vLmJvdHRvbTt2YXIgbj1vLmJvdHRvbS1vLnRvcDtyPU1hdGgubWF4KDIuMDUqdC5nbG9iYWxzLnJhZGlhbFNpemUsbil9dmFyIGw9citlLnRyYW5zbGF0ZVkraSthO2UuZG9tLmVsTGVnZW5kRm9yZWlnbiYmZS5kb20uZWxMZWdlbmRGb3JlaWduLnNldEF0dHJpYnV0ZShcImhlaWdodFwiLGwpLHQuY29uZmlnLmNoYXJ0LmhlaWdodCYmU3RyaW5nKHQuY29uZmlnLmNoYXJ0LmhlaWdodCkuaW5kZXhPZihcIiVcIik+MHx8KGUuZG9tLmVsV3JhcC5zdHlsZS5oZWlnaHQ9bCtcInB4XCIsbS5zZXRBdHRycyhlLmRvbS5QYXBlci5ub2RlLHtoZWlnaHQ6bH0pLGUuZG9tLlBhcGVyLm5vZGUucGFyZW50Tm9kZS5wYXJlbnROb2RlLnN0eWxlLm1pbkhlaWdodD1sK1wicHhcIil9fSx7a2V5OlwiY29yZUNhbGN1bGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7bmV3IFUodGhpcy5jdHgpLmluaXQoKX19LHtrZXk6XCJyZXNldEdsb2JhbHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT1mdW5jdGlvbigpe3JldHVybiB0LncuY29uZmlnLnNlcmllcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybltdfSkpfSxpPW5ldyBZLGE9dGhpcy53Lmdsb2JhbHM7aS5pbml0R2xvYmFsVmFycyhhKSxhLnNlcmllc1h2YWx1ZXM9ZSgpLGEuc2VyaWVzWXZhbHVlcz1lKCl9fSx7a2V5OlwiaXNNdWx0aXBsZVlcIix2YWx1ZTpmdW5jdGlvbigpe2lmKHRoaXMudy5jb25maWcueWF4aXMuY29uc3RydWN0b3I9PT1BcnJheSYmdGhpcy53LmNvbmZpZy55YXhpcy5sZW5ndGg+MSlyZXR1cm4gdGhpcy53Lmdsb2JhbHMuaXNNdWx0aXBsZVlBeGlzPSEwLCEwfX0se2tleTpcInh5U2V0dGluZ3NcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PW51bGwsZT10aGlzLnc7aWYoZS5nbG9iYWxzLmF4aXNDaGFydHMpe2lmKFwiYmFja1wiPT09ZS5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5wb3NpdGlvbiluZXcgUSh0aGlzLmN0eCkuZHJhd1hDcm9zc2hhaXJzKCk7aWYoXCJiYWNrXCI9PT1lLmNvbmZpZy55YXhpc1swXS5jcm9zc2hhaXJzLnBvc2l0aW9uKW5ldyBRKHRoaXMuY3R4KS5kcmF3WUNyb3NzaGFpcnMoKTtpZihcImRhdGV0aW1lXCI9PT1lLmNvbmZpZy54YXhpcy50eXBlJiZ2b2lkIDA9PT1lLmNvbmZpZy54YXhpcy5sYWJlbHMuZm9ybWF0dGVyKXt0aGlzLmN0eC50aW1lU2NhbGU9bmV3IFJ0KHRoaXMuY3R4KTt2YXIgaT1bXTtpc0Zpbml0ZShlLmdsb2JhbHMubWluWCkmJmlzRmluaXRlKGUuZ2xvYmFscy5tYXhYKSYmIWUuZ2xvYmFscy5pc0Jhckhvcml6b250YWw/aT10aGlzLmN0eC50aW1lU2NhbGUuY2FsY3VsYXRlVGltZVNjYWxlVGlja3MoZS5nbG9iYWxzLm1pblgsZS5nbG9iYWxzLm1heFgpOmUuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJihpPXRoaXMuY3R4LnRpbWVTY2FsZS5jYWxjdWxhdGVUaW1lU2NhbGVUaWNrcyhlLmdsb2JhbHMubWluWSxlLmdsb2JhbHMubWF4WSkpLHRoaXMuY3R4LnRpbWVTY2FsZS5yZWNhbGNEaW1lbnNpb25zQmFzZWRPbkZvcm1hdChpKX10PW5ldyB5KHRoaXMuY3R4KS5nZXRDYWxjdWxhdGVkUmF0aW9zKCl9cmV0dXJuIHR9fSx7a2V5OlwidXBkYXRlU291cmNlQ2hhcnRcIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmN0eC53Lmdsb2JhbHMuc2VsZWN0aW9uPXZvaWQgMCx0aGlzLmN0eC51cGRhdGVIZWxwZXJzLl91cGRhdGVPcHRpb25zKHtjaGFydDp7c2VsZWN0aW9uOnt4YXhpczp7bWluOnQudy5nbG9iYWxzLm1pblgsbWF4OnQudy5nbG9iYWxzLm1heFh9fX19LCExLCExKX19LHtrZXk6XCJzZXR1cEJydXNoSGFuZGxlclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxpPXRoaXMudztpZihpLmNvbmZpZy5jaGFydC5icnVzaC5lbmFibGVkJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBpLmNvbmZpZy5jaGFydC5ldmVudHMuc2VsZWN0aW9uKXt2YXIgYT1pLmNvbmZpZy5jaGFydC5icnVzaC50YXJnZXRzfHxbaS5jb25maWcuY2hhcnQuYnJ1c2gudGFyZ2V0XTthLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBpPUFwZXhDaGFydHMuZ2V0Q2hhcnRCeUlEKGUpO2kudy5nbG9iYWxzLmJydXNoU291cmNlPXQuY3R4LFwiZnVuY3Rpb25cIiE9dHlwZW9mIGkudy5jb25maWcuY2hhcnQuZXZlbnRzLnpvb21lZCYmKGkudy5jb25maWcuY2hhcnQuZXZlbnRzLnpvb21lZD1mdW5jdGlvbigpe3QudXBkYXRlU291cmNlQ2hhcnQoaSl9KSxcImZ1bmN0aW9uXCIhPXR5cGVvZiBpLncuY29uZmlnLmNoYXJ0LmV2ZW50cy5zY3JvbGxlZCYmKGkudy5jb25maWcuY2hhcnQuZXZlbnRzLnNjcm9sbGVkPWZ1bmN0aW9uKCl7dC51cGRhdGVTb3VyY2VDaGFydChpKX0pfSkpLGkuY29uZmlnLmNoYXJ0LmV2ZW50cy5zZWxlY3Rpb249ZnVuY3Rpb24odCxzKXthLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBhPUFwZXhDaGFydHMuZ2V0Q2hhcnRCeUlEKHQpLHI9eC5jbG9uZShpLmNvbmZpZy55YXhpcyk7aWYoaS5jb25maWcuY2hhcnQuYnJ1c2guYXV0b1NjYWxlWWF4aXMmJjE9PT1hLncuZ2xvYmFscy5zZXJpZXMubGVuZ3RoKXt2YXIgbz1uZXcgXyhhKTtyPW8uYXV0b1NjYWxlWShhLHIscyl9dmFyIG49YS53LmNvbmZpZy55YXhpcy5yZWR1Y2UoKGZ1bmN0aW9uKHQsaSxzKXtyZXR1cm5bXS5jb25jYXQodSh0KSxbZShlKHt9LGEudy5jb25maWcueWF4aXNbc10pLHt9LHttaW46clswXS5taW4sbWF4OnJbMF0ubWF4fSldKX0pLFtdKTthLmN0eC51cGRhdGVIZWxwZXJzLl91cGRhdGVPcHRpb25zKHt4YXhpczp7bWluOnMueGF4aXMubWluLG1heDpzLnhheGlzLm1heH0seWF4aXM6bn0sITEsITEsITEsITEpfSkpfX19fV0pLHR9KCksSHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIHIodCxbe2tleTpcIl91cGRhdGVPcHRpb25zXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxhPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV0scz0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdLHI9IShhcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXSl8fGFyZ3VtZW50c1szXSxvPWFyZ3VtZW50cy5sZW5ndGg+NCYmdm9pZCAwIT09YXJndW1lbnRzWzRdJiZhcmd1bWVudHNbNF07cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihuKXt2YXIgbD1bZS5jdHhdO3ImJihsPWUuY3R4LmdldFN5bmNlZENoYXJ0cygpKSxlLmN0eC53Lmdsb2JhbHMuaXNFeGVjQ2FsbGVkJiYobD1bZS5jdHhdLGUuY3R4LncuZ2xvYmFscy5pc0V4ZWNDYWxsZWQ9ITEpLGwuZm9yRWFjaCgoZnVuY3Rpb24ocixoKXt2YXIgYz1yLnc7aWYoYy5nbG9iYWxzLnNob3VsZEFuaW1hdGU9cyxhfHwoYy5nbG9iYWxzLnJlc2l6ZWQ9ITAsYy5nbG9iYWxzLmRhdGFDaGFuZ2VkPSEwLHMmJnIuc2VyaWVzLmdldFByZXZpb3VzUGF0aHMoKSksdCYmXCJvYmplY3RcIj09PWkodCkmJihyLmNvbmZpZz1uZXcgRSh0KSx0PXkuZXh0ZW5kQXJyYXlQcm9wcyhyLmNvbmZpZyx0LGMpLHIudy5nbG9iYWxzLmNoYXJ0SUQhPT1lLmN0eC53Lmdsb2JhbHMuY2hhcnRJRCYmZGVsZXRlIHQuc2VyaWVzLGMuY29uZmlnPXguZXh0ZW5kKGMuY29uZmlnLHQpLG8mJihjLmdsb2JhbHMubGFzdFhBeGlzPXQueGF4aXM/eC5jbG9uZSh0LnhheGlzKTpbXSxjLmdsb2JhbHMubGFzdFlBeGlzPXQueWF4aXM/eC5jbG9uZSh0LnlheGlzKTpbXSxjLmdsb2JhbHMuaW5pdGlhbENvbmZpZz14LmV4dGVuZCh7fSxjLmNvbmZpZyksYy5nbG9iYWxzLmluaXRpYWxTZXJpZXM9eC5jbG9uZShjLmNvbmZpZy5zZXJpZXMpLHQuc2VyaWVzKSkpe2Zvcih2YXIgZD0wO2Q8Yy5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMubGVuZ3RoO2QrKyl7dmFyIGc9Yy5jb25maWcuc2VyaWVzW2MuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzW2RdXTtjLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzW2RdLmRhdGE9Yy5nbG9iYWxzLmF4aXNDaGFydHM/Zy5kYXRhLnNsaWNlKCk6Z31mb3IodmFyIHU9MDt1PGMuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmxlbmd0aDt1Kyspe3ZhciBwPWMuY29uZmlnLnNlcmllc1tjLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlc1t1XV07Yy5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc1t1XS5kYXRhPWMuZ2xvYmFscy5heGlzQ2hhcnRzP3AuZGF0YS5zbGljZSgpOnB9ci5zZXJpZXMuZW1wdHlDb2xsYXBzZWRTZXJpZXMoYy5jb25maWcuc2VyaWVzKX1yZXR1cm4gci51cGRhdGUodCkudGhlbigoZnVuY3Rpb24oKXtoPT09bC5sZW5ndGgtMSYmbihyKX0pKX0pKX0pKX19LHtrZXk6XCJfdXBkYXRlU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLGE9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXTtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHMpe3ZhciByLG89aS53O3JldHVybiBvLmdsb2JhbHMuc2hvdWxkQW5pbWF0ZT1lLG8uZ2xvYmFscy5kYXRhQ2hhbmdlZD0hMCxlJiZpLmN0eC5zZXJpZXMuZ2V0UHJldmlvdXNQYXRocygpLG8uZ2xvYmFscy5heGlzQ2hhcnRzPygwPT09KHI9dC5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGkuX2V4dGVuZFNlcmllcyh0LGUpfSkpKS5sZW5ndGgmJihyPVt7ZGF0YTpbXX1dKSxvLmNvbmZpZy5zZXJpZXM9cik6by5jb25maWcuc2VyaWVzPXQuc2xpY2UoKSxhJiYoby5nbG9iYWxzLmluaXRpYWxDb25maWcuc2VyaWVzPXguY2xvbmUoby5jb25maWcuc2VyaWVzKSxvLmdsb2JhbHMuaW5pdGlhbFNlcmllcz14LmNsb25lKG8uY29uZmlnLnNlcmllcykpLGkuY3R4LnVwZGF0ZSgpLnRoZW4oKGZ1bmN0aW9uKCl7cyhpLmN0eCl9KSl9KSl9fSx7a2V5OlwiX2V4dGVuZFNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQsaSl7dmFyIGE9dGhpcy53LHM9YS5jb25maWcuc2VyaWVzW2ldO3JldHVybiBlKGUoe30sYS5jb25maWcuc2VyaWVzW2ldKSx7fSx7bmFtZTp0Lm5hbWU/dC5uYW1lOnMmJnMubmFtZSxjb2xvcjp0LmNvbG9yP3QuY29sb3I6cyYmcy5jb2xvcix0eXBlOnQudHlwZT90LnR5cGU6cyYmcy50eXBlLGRhdGE6dC5kYXRhP3QuZGF0YTpzJiZzLmRhdGF9KX19LHtrZXk6XCJ0b2dnbGVEYXRhUG9pbnRTZWxlY3Rpb25cIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPW51bGwscz1cIi5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiLmNvbmNhdCh0LFwiJ11cIik7cmV0dXJuIGkuZ2xvYmFscy5heGlzQ2hhcnRzP2E9aS5nbG9iYWxzLmRvbS5QYXBlci5zZWxlY3QoXCJcIi5jb25jYXQocyxcIiBwYXRoW2o9J1wiKS5jb25jYXQoZSxcIiddLCBcIikuY29uY2F0KHMsXCIgY2lyY2xlW2o9J1wiKS5jb25jYXQoZSxcIiddLCBcIikuY29uY2F0KHMsXCIgcmVjdFtqPSdcIikuY29uY2F0KGUsXCInXVwiKSkubWVtYmVyc1swXTp2b2lkIDA9PT1lJiYoYT1pLmdsb2JhbHMuZG9tLlBhcGVyLnNlbGVjdChcIlwiLmNvbmNhdChzLFwiIHBhdGhbaj0nXCIpLmNvbmNhdCh0LFwiJ11cIikpLm1lbWJlcnNbMF0sXCJwaWVcIiE9PWkuY29uZmlnLmNoYXJ0LnR5cGUmJlwicG9sYXJBcmVhXCIhPT1pLmNvbmZpZy5jaGFydC50eXBlJiZcImRvbnV0XCIhPT1pLmNvbmZpZy5jaGFydC50eXBlfHx0aGlzLmN0eC5waWUucGllQ2xpY2tlZCh0KSksYT8obmV3IG0odGhpcy5jdHgpLnBhdGhNb3VzZURvd24oYSxudWxsKSxhLm5vZGU/YS5ub2RlOm51bGwpOihjb25zb2xlLndhcm4oXCJ0b2dnbGVEYXRhUG9pbnRTZWxlY3Rpb246IEVsZW1lbnQgbm90IGZvdW5kXCIpLG51bGwpfX0se2tleTpcImZvcmNlWEF4aXNVcGRhdGVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnc7aWYoW1wibWluXCIsXCJtYXhcIl0uZm9yRWFjaCgoZnVuY3Rpb24oaSl7dm9pZCAwIT09dC54YXhpc1tpXSYmKGUuY29uZmlnLnhheGlzW2ldPXQueGF4aXNbaV0sZS5nbG9iYWxzLmxhc3RYQXhpc1tpXT10LnhheGlzW2ldKX0pKSx0LnhheGlzLmNhdGVnb3JpZXMmJnQueGF4aXMuY2F0ZWdvcmllcy5sZW5ndGgmJihlLmNvbmZpZy54YXhpcy5jYXRlZ29yaWVzPXQueGF4aXMuY2F0ZWdvcmllcyksZS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljKXt2YXIgaT1uZXcgeih0KTt0PWkuY29udmVydENhdFRvTnVtZXJpY1hheGlzKHQsdGhpcy5jdHgpfXJldHVybiB0fX0se2tleTpcImZvcmNlWUF4aXNVcGRhdGVcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5jaGFydCYmdC5jaGFydC5zdGFja2VkJiZcIjEwMCVcIj09PXQuY2hhcnQuc3RhY2tUeXBlJiYoQXJyYXkuaXNBcnJheSh0LnlheGlzKT90LnlheGlzLmZvckVhY2goKGZ1bmN0aW9uKGUsaSl7dC55YXhpc1tpXS5taW49MCx0LnlheGlzW2ldLm1heD0xMDB9KSk6KHQueWF4aXMubWluPTAsdC55YXhpcy5tYXg9MTAwKSksdH19LHtrZXk6XCJyZXZlcnREZWZhdWx0QXhpc01pbk1heFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10aGlzLncsYT1pLmdsb2JhbHMubGFzdFhBeGlzLHM9aS5nbG9iYWxzLmxhc3RZQXhpczt0JiZ0LnhheGlzJiYoYT10LnhheGlzKSx0JiZ0LnlheGlzJiYocz10LnlheGlzKSxpLmNvbmZpZy54YXhpcy5taW49YS5taW4saS5jb25maWcueGF4aXMubWF4PWEubWF4O3ZhciByPWZ1bmN0aW9uKHQpe3ZvaWQgMCE9PXNbdF0mJihpLmNvbmZpZy55YXhpc1t0XS5taW49c1t0XS5taW4saS5jb25maWcueWF4aXNbdF0ubWF4PXNbdF0ubWF4KX07aS5jb25maWcueWF4aXMubWFwKChmdW5jdGlvbih0LGEpe2kuZ2xvYmFscy56b29tZWR8fHZvaWQgMCE9PXNbYV0/cihhKTp2b2lkIDAhPT1lLmN0eC5vcHRzLnlheGlzW2FdJiYodC5taW49ZS5jdHgub3B0cy55YXhpc1thXS5taW4sdC5tYXg9ZS5jdHgub3B0cy55YXhpc1thXS5tYXgpfSkpfX1dKSx0fSgpO3p0PVwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OnZvaWQgMCxFdD1mdW5jdGlvbih0LGUpe3ZhciBhPSh2b2lkIDAhPT10aGlzP3RoaXM6dCkuU1ZHPWZ1bmN0aW9uKHQpe2lmKGEuc3VwcG9ydGVkKXJldHVybiB0PW5ldyBhLkRvYyh0KSxhLnBhcnNlci5kcmF3fHxhLnByZXBhcmUoKSx0fTtpZihhLm5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixhLnhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy9cIixhLnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLGEuc3ZnanM9XCJodHRwOi8vc3ZnanMuZGV2XCIsYS5zdXBwb3J0ZWQ9ITAsIWEuc3VwcG9ydGVkKXJldHVybiExO2EuZGlkPTFlMyxhLmVpZD1mdW5jdGlvbih0KXtyZXR1cm5cIlN2Z2pzXCIrZCh0KSthLmRpZCsrfSxhLmNyZWF0ZT1mdW5jdGlvbih0KXt2YXIgaT1lLmNyZWF0ZUVsZW1lbnROUyh0aGlzLm5zLHQpO3JldHVybiBpLnNldEF0dHJpYnV0ZShcImlkXCIsdGhpcy5laWQodCkpLGl9LGEuZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIHQsZTtlPSh0PVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSkucG9wKCk7Zm9yKHZhciBpPXQubGVuZ3RoLTE7aT49MDtpLS0paWYodFtpXSlmb3IodmFyIHMgaW4gZSl0W2ldLnByb3RvdHlwZVtzXT1lW3NdO2EuU2V0JiZhLlNldC5pbmhlcml0JiZhLlNldC5pbmhlcml0KCl9LGEuaW52ZW50PWZ1bmN0aW9uKHQpe3ZhciBlPVwiZnVuY3Rpb25cIj09dHlwZW9mIHQuY3JlYXRlP3QuY3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsYS5jcmVhdGUodC5jcmVhdGUpKX07cmV0dXJuIHQuaW5oZXJpdCYmKGUucHJvdG90eXBlPW5ldyB0LmluaGVyaXQpLHQuZXh0ZW5kJiZhLmV4dGVuZChlLHQuZXh0ZW5kKSx0LmNvbnN0cnVjdCYmYS5leHRlbmQodC5wYXJlbnR8fGEuQ29udGFpbmVyLHQuY29uc3RydWN0KSxlfSxhLmFkb3B0PWZ1bmN0aW9uKGUpe3JldHVybiBlP2UuaW5zdGFuY2U/ZS5pbnN0YW5jZTooKGk9XCJzdmdcIj09ZS5ub2RlTmFtZT9lLnBhcmVudE5vZGUgaW5zdGFuY2VvZiB0LlNWR0VsZW1lbnQ/bmV3IGEuTmVzdGVkOm5ldyBhLkRvYzpcImxpbmVhckdyYWRpZW50XCI9PWUubm9kZU5hbWU/bmV3IGEuR3JhZGllbnQoXCJsaW5lYXJcIik6XCJyYWRpYWxHcmFkaWVudFwiPT1lLm5vZGVOYW1lP25ldyBhLkdyYWRpZW50KFwicmFkaWFsXCIpOmFbZChlLm5vZGVOYW1lKV0/bmV3KGFbZChlLm5vZGVOYW1lKV0pOm5ldyBhLkVsZW1lbnQoZSkpLnR5cGU9ZS5ub2RlTmFtZSxpLm5vZGU9ZSxlLmluc3RhbmNlPWksaSBpbnN0YW5jZW9mIGEuRG9jJiZpLm5hbWVzcGFjZSgpLmRlZnMoKSxpLnNldERhdGEoSlNPTi5wYXJzZShlLmdldEF0dHJpYnV0ZShcInN2Z2pzOmRhdGFcIikpfHx7fSksaSk6bnVsbDt2YXIgaX0sYS5wcmVwYXJlPWZ1bmN0aW9uKCl7dmFyIHQ9ZS5nZXRFbGVtZW50c0J5VGFnTmFtZShcImJvZHlcIilbMF0saT0odD9uZXcgYS5Eb2ModCk6YS5hZG9wdChlLmRvY3VtZW50RWxlbWVudCkubmVzdGVkKCkpLnNpemUoMiwwKTthLnBhcnNlcj17Ym9keTp0fHxlLmRvY3VtZW50RWxlbWVudCxkcmF3Omkuc3R5bGUoXCJvcGFjaXR5OjA7cG9zaXRpb246YWJzb2x1dGU7bGVmdDotMTAwJTt0b3A6LTEwMCU7b3ZlcmZsb3c6aGlkZGVuXCIpLm5vZGUscG9seTppLnBvbHlsaW5lKCkubm9kZSxwYXRoOmkucGF0aCgpLm5vZGUsbmF0aXZlOmEuY3JlYXRlKFwic3ZnXCIpfX0sYS5wYXJzZXI9e25hdGl2ZTphLmNyZWF0ZShcInN2Z1wiKX0sZS5hZGRFdmVudExpc3RlbmVyKFwiRE9NQ29udGVudExvYWRlZFwiLChmdW5jdGlvbigpe2EucGFyc2VyLmRyYXd8fGEucHJlcGFyZSgpfSksITEpLGEucmVnZXg9e251bWJlckFuZFVuaXQ6L14oWystXT8oXFxkKyhcXC5cXGQqKT98XFwuXFxkKykoZVsrLV0/XFxkKyk/KShbYS16JV0qKSQvaSxoZXg6L14jPyhbYS1mXFxkXXsyfSkoW2EtZlxcZF17Mn0pKFthLWZcXGRdezJ9KSQvaSxyZ2I6L3JnYlxcKChcXGQrKSwoXFxkKyksKFxcZCspXFwpLyxyZWZlcmVuY2U6LyMoW2EtejAtOVxcLV9dKykvaSx0cmFuc2Zvcm1zOi9cXClcXHMqLD9cXHMqLyx3aGl0ZXNwYWNlOi9cXHMvZyxpc0hleDovXiNbYS1mMC05XXszLDZ9JC9pLGlzUmdiOi9ecmdiXFwoLyxpc0NzczovW146XSs6W147XSs7Py8saXNCbGFuazovXihcXHMrKT8kLyxpc051bWJlcjovXlsrLV0/KFxcZCsoXFwuXFxkKik/fFxcLlxcZCspKGVbKy1dP1xcZCspPyQvaSxpc1BlcmNlbnQ6L14tP1tcXGRcXC5dKyUkLyxpc0ltYWdlOi9cXC4oanBnfGpwZWd8cG5nfGdpZnxzdmcpKFxcP1tePV0rLiopPy9pLGRlbGltaXRlcjovW1xccyxdKy8saHlwaGVuOi8oW15lXSlcXC0vZ2kscGF0aExldHRlcnM6L1tNTEhWQ1NRVEFaXS9naSxpc1BhdGhMZXR0ZXI6L1tNTEhWQ1NRVEFaXS9pLG51bWJlcnNXaXRoRG90czovKChcXGQ/XFwuXFxkKyg/OmVbKy1dP1xcZCspPykoKD86XFwuXFxkKyg/OmVbKy1dP1xcZCspPykrKSkrL2dpLGRvdHM6L1xcLi9nfSxhLnV0aWxzPXttYXA6ZnVuY3Rpb24odCxlKXtmb3IodmFyIGk9dC5sZW5ndGgsYT1bXSxzPTA7czxpO3MrKylhLnB1c2goZSh0W3NdKSk7cmV0dXJuIGF9LGZpbHRlcjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgaT10Lmxlbmd0aCxhPVtdLHM9MDtzPGk7cysrKWUodFtzXSkmJmEucHVzaCh0W3NdKTtyZXR1cm4gYX0sZmlsdGVyU1ZHRWxlbWVudHM6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZmlsdGVyKGUsKGZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgdC5TVkdFbGVtZW50fSkpfX0sYS5kZWZhdWx0cz17YXR0cnM6e1wiZmlsbC1vcGFjaXR5XCI6MSxcInN0cm9rZS1vcGFjaXR5XCI6MSxcInN0cm9rZS13aWR0aFwiOjAsXCJzdHJva2UtbGluZWpvaW5cIjpcIm1pdGVyXCIsXCJzdHJva2UtbGluZWNhcFwiOlwiYnV0dFwiLGZpbGw6XCIjMDAwMDAwXCIsc3Ryb2tlOlwiIzAwMDAwMFwiLG9wYWNpdHk6MSx4OjAseTowLGN4OjAsY3k6MCx3aWR0aDowLGhlaWdodDowLHI6MCxyeDowLHJ5OjAsb2Zmc2V0OjAsXCJzdG9wLW9wYWNpdHlcIjoxLFwic3RvcC1jb2xvclwiOlwiIzAwMDAwMFwiLFwiZm9udC1zaXplXCI6MTYsXCJmb250LWZhbWlseVwiOlwiSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZlwiLFwidGV4dC1hbmNob3JcIjpcInN0YXJ0XCJ9fSxhLkNvbG9yPWZ1bmN0aW9uKHQpe3ZhciBlLHM7dGhpcy5yPTAsdGhpcy5nPTAsdGhpcy5iPTAsdCYmKFwic3RyaW5nXCI9PXR5cGVvZiB0P2EucmVnZXguaXNSZ2IudGVzdCh0KT8oZT1hLnJlZ2V4LnJnYi5leGVjKHQucmVwbGFjZShhLnJlZ2V4LndoaXRlc3BhY2UsXCJcIikpLHRoaXMucj1wYXJzZUludChlWzFdKSx0aGlzLmc9cGFyc2VJbnQoZVsyXSksdGhpcy5iPXBhcnNlSW50KGVbM10pKTphLnJlZ2V4LmlzSGV4LnRlc3QodCkmJihlPWEucmVnZXguaGV4LmV4ZWMoND09KHM9dCkubGVuZ3RoP1tcIiNcIixzLnN1YnN0cmluZygxLDIpLHMuc3Vic3RyaW5nKDEsMikscy5zdWJzdHJpbmcoMiwzKSxzLnN1YnN0cmluZygyLDMpLHMuc3Vic3RyaW5nKDMsNCkscy5zdWJzdHJpbmcoMyw0KV0uam9pbihcIlwiKTpzKSx0aGlzLnI9cGFyc2VJbnQoZVsxXSwxNiksdGhpcy5nPXBhcnNlSW50KGVbMl0sMTYpLHRoaXMuYj1wYXJzZUludChlWzNdLDE2KSk6XCJvYmplY3RcIj09PWkodCkmJih0aGlzLnI9dC5yLHRoaXMuZz10LmcsdGhpcy5iPXQuYikpfSxhLmV4dGVuZChhLkNvbG9yLHt0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRvSGV4KCl9LHRvSGV4OmZ1bmN0aW9uKCl7cmV0dXJuXCIjXCIrZyh0aGlzLnIpK2codGhpcy5nKStnKHRoaXMuYil9LHRvUmdiOmZ1bmN0aW9uKCl7cmV0dXJuXCJyZ2IoXCIrW3RoaXMucix0aGlzLmcsdGhpcy5iXS5qb2luKCkrXCIpXCJ9LGJyaWdodG5lc3M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yLzI1NSouMyt0aGlzLmcvMjU1Ki41OSt0aGlzLmIvMjU1Ki4xMX0sbW9ycGg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGVzdGluYXRpb249bmV3IGEuQ29sb3IodCksdGhpc30sYXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGVzdGluYXRpb24/KHQ9dDwwPzA6dD4xPzE6dCxuZXcgYS5Db2xvcih7cjp+fih0aGlzLnIrKHRoaXMuZGVzdGluYXRpb24uci10aGlzLnIpKnQpLGc6fn4odGhpcy5nKyh0aGlzLmRlc3RpbmF0aW9uLmctdGhpcy5nKSp0KSxiOn5+KHRoaXMuYisodGhpcy5kZXN0aW5hdGlvbi5iLXRoaXMuYikqdCl9KSk6dGhpc319KSxhLkNvbG9yLnRlc3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHQrPVwiXCIsYS5yZWdleC5pc0hleC50ZXN0KHQpfHxhLnJlZ2V4LmlzUmdiLnRlc3QodCl9LGEuQ29sb3IuaXNSZ2I9ZnVuY3Rpb24odCl7cmV0dXJuIHQmJlwibnVtYmVyXCI9PXR5cGVvZiB0LnImJlwibnVtYmVyXCI9PXR5cGVvZiB0LmcmJlwibnVtYmVyXCI9PXR5cGVvZiB0LmJ9LGEuQ29sb3IuaXNDb2xvcj1mdW5jdGlvbih0KXtyZXR1cm4gYS5Db2xvci5pc1JnYih0KXx8YS5Db2xvci50ZXN0KHQpfSxhLkFycmF5PWZ1bmN0aW9uKHQsZSl7MD09KHQ9KHR8fFtdKS52YWx1ZU9mKCkpLmxlbmd0aCYmZSYmKHQ9ZS52YWx1ZU9mKCkpLHRoaXMudmFsdWU9dGhpcy5wYXJzZSh0KX0sYS5leHRlbmQoYS5BcnJheSx7dG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZS5qb2luKFwiIFwiKX0sdmFsdWVPZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlfSxwYXJzZTpmdW5jdGlvbih0KXtyZXR1cm4gdD10LnZhbHVlT2YoKSxBcnJheS5pc0FycmF5KHQpP3Q6dGhpcy5zcGxpdCh0KX19KSxhLlBvaW50QXJyYXk9ZnVuY3Rpb24odCxlKXthLkFycmF5LmNhbGwodGhpcyx0LGV8fFtbMCwwXV0pfSxhLlBvaW50QXJyYXkucHJvdG90eXBlPW5ldyBhLkFycmF5LGEuUG9pbnRBcnJheS5wcm90b3R5cGUuY29uc3RydWN0b3I9YS5Qb2ludEFycmF5O2Zvcih2YXIgcz17TTpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIGUueD1pLng9dFswXSxlLnk9aS55PXRbMV0sW1wiTVwiLGUueCxlLnldfSxMOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUueD10WzBdLGUueT10WzFdLFtcIkxcIix0WzBdLHRbMV1dfSxIOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUueD10WzBdLFtcIkhcIix0WzBdXX0sVjpmdW5jdGlvbih0LGUpe3JldHVybiBlLnk9dFswXSxbXCJWXCIsdFswXV19LEM6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS54PXRbNF0sZS55PXRbNV0sW1wiQ1wiLHRbMF0sdFsxXSx0WzJdLHRbM10sdFs0XSx0WzVdXX0sUTpmdW5jdGlvbih0LGUpe3JldHVybiBlLng9dFsyXSxlLnk9dFszXSxbXCJRXCIsdFswXSx0WzFdLHRbMl0sdFszXV19LFo6ZnVuY3Rpb24odCxlLGkpe3JldHVybiBlLng9aS54LGUueT1pLnksW1wiWlwiXX19LHI9XCJtbGh2cXRjc2F6XCIuc3BsaXQoXCJcIiksbz0wLG49ci5sZW5ndGg7bzxuOysrbylzW3Jbb11dPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlLGksYSl7aWYoXCJIXCI9PXQpZVswXT1lWzBdK2kueDtlbHNlIGlmKFwiVlwiPT10KWVbMF09ZVswXStpLnk7ZWxzZSBpZihcIkFcIj09dCllWzVdPWVbNV0raS54LGVbNl09ZVs2XStpLnk7ZWxzZSBmb3IodmFyIHI9MCxvPWUubGVuZ3RoO3I8bzsrK3IpZVtyXT1lW3JdKyhyJTI/aS55OmkueCk7aWYocyYmXCJmdW5jdGlvblwiPT10eXBlb2Ygc1t0XSlyZXR1cm4gc1t0XShlLGksYSl9fShyW29dLnRvVXBwZXJDYXNlKCkpO2EuUGF0aEFycmF5PWZ1bmN0aW9uKHQsZSl7YS5BcnJheS5jYWxsKHRoaXMsdCxlfHxbW1wiTVwiLDAsMF1dKX0sYS5QYXRoQXJyYXkucHJvdG90eXBlPW5ldyBhLkFycmF5LGEuUGF0aEFycmF5LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hLlBhdGhBcnJheSxhLmV4dGVuZChhLlBhdGhBcnJheSx7dG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAsaT10Lmxlbmd0aCxhPVwiXCI7ZTxpO2UrKylhKz10W2VdWzBdLG51bGwhPXRbZV1bMV0mJihhKz10W2VdWzFdLG51bGwhPXRbZV1bMl0mJihhKz1cIiBcIixhKz10W2VdWzJdLG51bGwhPXRbZV1bM10mJihhKz1cIiBcIixhKz10W2VdWzNdLGErPVwiIFwiLGErPXRbZV1bNF0sbnVsbCE9dFtlXVs1XSYmKGErPVwiIFwiLGErPXRbZV1bNV0sYSs9XCIgXCIsYSs9dFtlXVs2XSxudWxsIT10W2VdWzddJiYoYSs9XCIgXCIsYSs9dFtlXVs3XSkpKSkpO3JldHVybiBhK1wiIFwifSh0aGlzLnZhbHVlKX0sbW92ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuYmJveCgpO3JldHVybiBpLngsaS55LHRoaXN9LGF0OmZ1bmN0aW9uKHQpe2lmKCF0aGlzLmRlc3RpbmF0aW9uKXJldHVybiB0aGlzO2Zvcih2YXIgZT10aGlzLnZhbHVlLGk9dGhpcy5kZXN0aW5hdGlvbi52YWx1ZSxzPVtdLHI9bmV3IGEuUGF0aEFycmF5LG89MCxuPWUubGVuZ3RoO288bjtvKyspe3Nbb109W2Vbb11bMF1dO2Zvcih2YXIgbD0xLGg9ZVtvXS5sZW5ndGg7bDxoO2wrKylzW29dW2xdPWVbb11bbF0rKGlbb11bbF0tZVtvXVtsXSkqdDtcIkFcIj09PXNbb11bMF0mJihzW29dWzRdPSsoMCE9c1tvXVs0XSksc1tvXVs1XT0rKDAhPXNbb11bNV0pKX1yZXR1cm4gci52YWx1ZT1zLHJ9LHBhcnNlOmZ1bmN0aW9uKHQpe2lmKHQgaW5zdGFuY2VvZiBhLlBhdGhBcnJheSlyZXR1cm4gdC52YWx1ZU9mKCk7dmFyIGUsaT17TToyLEw6MixIOjEsVjoxLEM6NixTOjQsUTo0LFQ6MixBOjcsWjowfTt0PVwic3RyaW5nXCI9PXR5cGVvZiB0P3QucmVwbGFjZShhLnJlZ2V4Lm51bWJlcnNXaXRoRG90cyxoKS5yZXBsYWNlKGEucmVnZXgucGF0aExldHRlcnMsXCIgJCYgXCIpLnJlcGxhY2UoYS5yZWdleC5oeXBoZW4sXCIkMSAtXCIpLnRyaW0oKS5zcGxpdChhLnJlZ2V4LmRlbGltaXRlcik6dC5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuW10uY29uY2F0LmNhbGwodCxlKX0pLFtdKTt2YXIgcj1bXSxvPW5ldyBhLlBvaW50LG49bmV3IGEuUG9pbnQsbD0wLGM9dC5sZW5ndGg7ZG97YS5yZWdleC5pc1BhdGhMZXR0ZXIudGVzdCh0W2xdKT8oZT10W2xdLCsrbCk6XCJNXCI9PWU/ZT1cIkxcIjpcIm1cIj09ZSYmKGU9XCJsXCIpLHIucHVzaChzW2VdLmNhbGwobnVsbCx0LnNsaWNlKGwsbCs9aVtlLnRvVXBwZXJDYXNlKCldKS5tYXAocGFyc2VGbG9hdCksbyxuKSl9d2hpbGUoYz5sKTtyZXR1cm4gcn0sYmJveDpmdW5jdGlvbigpe3JldHVybiBhLnBhcnNlci5kcmF3fHxhLnByZXBhcmUoKSxhLnBhcnNlci5wYXRoLnNldEF0dHJpYnV0ZShcImRcIix0aGlzLnRvU3RyaW5nKCkpLGEucGFyc2VyLnBhdGguZ2V0QkJveCgpfX0pLGEuTnVtYmVyPWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCxlKXt0aGlzLnZhbHVlPTAsdGhpcy51bml0PWV8fFwiXCIsXCJudW1iZXJcIj09dHlwZW9mIHQ/dGhpcy52YWx1ZT1pc05hTih0KT8wOmlzRmluaXRlKHQpP3Q6dDwwPy0zNGUzNzozNGUzNzpcInN0cmluZ1wiPT10eXBlb2YgdD8oZT10Lm1hdGNoKGEucmVnZXgubnVtYmVyQW5kVW5pdCkpJiYodGhpcy52YWx1ZT1wYXJzZUZsb2F0KGVbMV0pLFwiJVwiPT1lWzVdP3RoaXMudmFsdWUvPTEwMDpcInNcIj09ZVs1XSYmKHRoaXMudmFsdWUqPTFlMyksdGhpcy51bml0PWVbNV0pOnQgaW5zdGFuY2VvZiBhLk51bWJlciYmKHRoaXMudmFsdWU9dC52YWx1ZU9mKCksdGhpcy51bml0PXQudW5pdCl9LGV4dGVuZDp7dG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4oXCIlXCI9PXRoaXMudW5pdD9+figxZTgqdGhpcy52YWx1ZSkvMWU2Olwic1wiPT10aGlzLnVuaXQ/dGhpcy52YWx1ZS8xZTM6dGhpcy52YWx1ZSkrdGhpcy51bml0fSx0b0pTT046ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b1N0cmluZygpfSx2YWx1ZU9mOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWV9LHBsdXM6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bmV3IGEuTnVtYmVyKHQpLG5ldyBhLk51bWJlcih0aGlzK3QsdGhpcy51bml0fHx0LnVuaXQpfSxtaW51czpmdW5jdGlvbih0KXtyZXR1cm4gdD1uZXcgYS5OdW1iZXIodCksbmV3IGEuTnVtYmVyKHRoaXMtdCx0aGlzLnVuaXR8fHQudW5pdCl9LHRpbWVzOmZ1bmN0aW9uKHQpe3JldHVybiB0PW5ldyBhLk51bWJlcih0KSxuZXcgYS5OdW1iZXIodGhpcyp0LHRoaXMudW5pdHx8dC51bml0KX0sZGl2aWRlOmZ1bmN0aW9uKHQpe3JldHVybiB0PW5ldyBhLk51bWJlcih0KSxuZXcgYS5OdW1iZXIodGhpcy90LHRoaXMudW5pdHx8dC51bml0KX0sdG86ZnVuY3Rpb24odCl7dmFyIGU9bmV3IGEuTnVtYmVyKHRoaXMpO3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiB0JiYoZS51bml0PXQpLGV9LG1vcnBoOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRlc3RpbmF0aW9uPW5ldyBhLk51bWJlcih0KSx0LnJlbGF0aXZlJiYodGhpcy5kZXN0aW5hdGlvbi52YWx1ZSs9dGhpcy52YWx1ZSksdGhpc30sYXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGVzdGluYXRpb24/bmV3IGEuTnVtYmVyKHRoaXMuZGVzdGluYXRpb24pLm1pbnVzKHRoaXMpLnRpbWVzKHQpLnBsdXModGhpcyk6dGhpc319fSksYS5FbGVtZW50PWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7dGhpcy5fc3Ryb2tlPWEuZGVmYXVsdHMuYXR0cnMuc3Ryb2tlLHRoaXMuX2V2ZW50PW51bGwsdGhpcy5kb209e30sKHRoaXMubm9kZT10KSYmKHRoaXMudHlwZT10Lm5vZGVOYW1lLHRoaXMubm9kZS5pbnN0YW5jZT10aGlzLHRoaXMuX3N0cm9rZT10LmdldEF0dHJpYnV0ZShcInN0cm9rZVwiKXx8dGhpcy5fc3Ryb2tlKX0sZXh0ZW5kOnt4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJ4XCIsdCl9LHk6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXR0cihcInlcIix0KX0sY3g6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy54KCkrdGhpcy53aWR0aCgpLzI6dGhpcy54KHQtdGhpcy53aWR0aCgpLzIpfSxjeTpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLnkoKSt0aGlzLmhlaWdodCgpLzI6dGhpcy55KHQtdGhpcy5oZWlnaHQoKS8yKX0sbW92ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLngodCkueShlKX0sY2VudGVyOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuY3godCkuY3koZSl9LHdpZHRoOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJ3aWR0aFwiLHQpfSxoZWlnaHQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXR0cihcImhlaWdodFwiLHQpfSxzaXplOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dSh0aGlzLHQsZSk7cmV0dXJuIHRoaXMud2lkdGgobmV3IGEuTnVtYmVyKGkud2lkdGgpKS5oZWlnaHQobmV3IGEuTnVtYmVyKGkuaGVpZ2h0KSl9LGNsb25lOmZ1bmN0aW9uKHQpe3RoaXMud3JpdGVEYXRhVG9Eb20oKTt2YXIgZT14KHRoaXMubm9kZS5jbG9uZU5vZGUoITApKTtyZXR1cm4gdD90LmFkZChlKTp0aGlzLmFmdGVyKGUpLGV9LHJlbW92ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLnJlbW92ZUVsZW1lbnQodGhpcyksdGhpc30scmVwbGFjZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hZnRlcih0KS5yZW1vdmUoKSx0fSxhZGRUbzpmdW5jdGlvbih0KXtyZXR1cm4gdC5wdXQodGhpcyl9LHB1dEluOmZ1bmN0aW9uKHQpe3JldHVybiB0LmFkZCh0aGlzKX0saWQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXR0cihcImlkXCIsdCl9LHNob3c6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdHlsZShcImRpc3BsYXlcIixcIlwiKX0saGlkZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0eWxlKFwiZGlzcGxheVwiLFwibm9uZVwiKX0sdmlzaWJsZTpmdW5jdGlvbigpe3JldHVyblwibm9uZVwiIT10aGlzLnN0eWxlKFwiZGlzcGxheVwiKX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hdHRyKFwiaWRcIil9LGNsYXNzZXM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmF0dHIoXCJjbGFzc1wiKTtyZXR1cm4gbnVsbD09dD9bXTp0LnRyaW0oKS5zcGxpdChhLnJlZ2V4LmRlbGltaXRlcil9LGhhc0NsYXNzOmZ1bmN0aW9uKHQpe3JldHVybi0xIT10aGlzLmNsYXNzZXMoKS5pbmRleE9mKHQpfSxhZGRDbGFzczpmdW5jdGlvbih0KXtpZighdGhpcy5oYXNDbGFzcyh0KSl7dmFyIGU9dGhpcy5jbGFzc2VzKCk7ZS5wdXNoKHQpLHRoaXMuYXR0cihcImNsYXNzXCIsZS5qb2luKFwiIFwiKSl9cmV0dXJuIHRoaXN9LHJlbW92ZUNsYXNzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmhhc0NsYXNzKHQpJiZ0aGlzLmF0dHIoXCJjbGFzc1wiLHRoaXMuY2xhc3NlcygpLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGUhPXR9KSkuam9pbihcIiBcIikpLHRoaXN9LHRvZ2dsZUNsYXNzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmhhc0NsYXNzKHQpP3RoaXMucmVtb3ZlQ2xhc3ModCk6dGhpcy5hZGRDbGFzcyh0KX0scmVmZXJlbmNlOmZ1bmN0aW9uKHQpe3JldHVybiBhLmdldCh0aGlzLmF0dHIodCkpfSxwYXJlbnQ6ZnVuY3Rpb24oZSl7dmFyIGk9dGhpcztpZighaS5ub2RlLnBhcmVudE5vZGUpcmV0dXJuIG51bGw7aWYoaT1hLmFkb3B0KGkubm9kZS5wYXJlbnROb2RlKSwhZSlyZXR1cm4gaTtmb3IoO2kmJmkubm9kZSBpbnN0YW5jZW9mIHQuU1ZHRWxlbWVudDspe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlP2kubWF0Y2hlcyhlKTppIGluc3RhbmNlb2YgZSlyZXR1cm4gaTtpZighaS5ub2RlLnBhcmVudE5vZGV8fFwiI2RvY3VtZW50XCI9PWkubm9kZS5wYXJlbnROb2RlLm5vZGVOYW1lKXJldHVybiBudWxsO2k9YS5hZG9wdChpLm5vZGUucGFyZW50Tm9kZSl9fSxkb2M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIGEuRG9jP3RoaXM6dGhpcy5wYXJlbnQoYS5Eb2MpfSxwYXJlbnRzOmZ1bmN0aW9uKHQpe3ZhciBlPVtdLGk9dGhpcztkb3tpZighKGk9aS5wYXJlbnQodCkpfHwhaS5ub2RlKWJyZWFrO2UucHVzaChpKX13aGlsZShpLnBhcmVudCk7cmV0dXJuIGV9LG1hdGNoZXM6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7cmV0dXJuKHQubWF0Y2hlc3x8dC5tYXRjaGVzU2VsZWN0b3J8fHQubXNNYXRjaGVzU2VsZWN0b3J8fHQubW96TWF0Y2hlc1NlbGVjdG9yfHx0LndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8dC5vTWF0Y2hlc1NlbGVjdG9yKS5jYWxsKHQsZSl9KHRoaXMubm9kZSx0KX0sbmF0aXZlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZX0sc3ZnOmZ1bmN0aW9uKHQpe3ZhciBpPWUuY3JlYXRlRWxlbWVudChcInN2Z1wiKTtpZighKHQmJnRoaXMgaW5zdGFuY2VvZiBhLlBhcmVudCkpcmV0dXJuIGkuYXBwZW5kQ2hpbGQodD1lLmNyZWF0ZUVsZW1lbnQoXCJzdmdcIikpLHRoaXMud3JpdGVEYXRhVG9Eb20oKSx0LmFwcGVuZENoaWxkKHRoaXMubm9kZS5jbG9uZU5vZGUoITApKSxpLmlubmVySFRNTC5yZXBsYWNlKC9ePHN2Zz4vLFwiXCIpLnJlcGxhY2UoLzxcXC9zdmc+JC8sXCJcIik7aS5pbm5lckhUTUw9XCI8c3ZnPlwiK3QucmVwbGFjZSgvXFxuLyxcIlwiKS5yZXBsYWNlKC88KFtcXHc6LV0rKShbXjxdKz8pXFwvPi9nLFwiPCQxJDI+PC8kMT5cIikrXCI8L3N2Zz5cIjtmb3IodmFyIHM9MCxyPWkuZmlyc3RDaGlsZC5jaGlsZE5vZGVzLmxlbmd0aDtzPHI7cysrKXRoaXMubm9kZS5hcHBlbmRDaGlsZChpLmZpcnN0Q2hpbGQuZmlyc3RDaGlsZCk7cmV0dXJuIHRoaXN9LHdyaXRlRGF0YVRvRG9tOmZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMuZWFjaHx8dGhpcy5saW5lcykmJih0aGlzLmVhY2g/dGhpczp0aGlzLmxpbmVzKCkpLmVhY2goKGZ1bmN0aW9uKCl7dGhpcy53cml0ZURhdGFUb0RvbSgpfSkpLHRoaXMubm9kZS5yZW1vdmVBdHRyaWJ1dGUoXCJzdmdqczpkYXRhXCIpLE9iamVjdC5rZXlzKHRoaXMuZG9tKS5sZW5ndGgmJnRoaXMubm9kZS5zZXRBdHRyaWJ1dGUoXCJzdmdqczpkYXRhXCIsSlNPTi5zdHJpbmdpZnkodGhpcy5kb20pKSx0aGlzfSxzZXREYXRhOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRvbT10LHRoaXN9LGlzOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbih0LGUpe3JldHVybiB0IGluc3RhbmNlb2YgZX0odGhpcyx0KX19fSksYS5lYXNpbmc9e1wiLVwiOmZ1bmN0aW9uKHQpe3JldHVybiB0fSxcIjw+XCI6ZnVuY3Rpb24odCl7cmV0dXJuLU1hdGguY29zKHQqTWF0aC5QSSkvMisuNX0sXCI+XCI6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGguc2luKHQqTWF0aC5QSS8yKX0sXCI8XCI6ZnVuY3Rpb24odCl7cmV0dXJuIDEtTWF0aC5jb3ModCpNYXRoLlBJLzIpfX0sYS5tb3JwaD1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxpKXtyZXR1cm4gbmV3IGEuTW9ycGhPYmooZSxpKS5hdCh0KX19LGEuU2l0dWF0aW9uPWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7dGhpcy5pbml0PSExLHRoaXMucmV2ZXJzZWQ9ITEsdGhpcy5yZXZlcnNpbmc9ITEsdGhpcy5kdXJhdGlvbj1uZXcgYS5OdW1iZXIodC5kdXJhdGlvbikudmFsdWVPZigpLHRoaXMuZGVsYXk9bmV3IGEuTnVtYmVyKHQuZGVsYXkpLnZhbHVlT2YoKSx0aGlzLnN0YXJ0PStuZXcgRGF0ZSt0aGlzLmRlbGF5LHRoaXMuZmluaXNoPXRoaXMuc3RhcnQrdGhpcy5kdXJhdGlvbix0aGlzLmVhc2U9dC5lYXNlLHRoaXMubG9vcD0wLHRoaXMubG9vcHM9ITEsdGhpcy5hbmltYXRpb25zPXt9LHRoaXMuYXR0cnM9e30sdGhpcy5zdHlsZXM9e30sdGhpcy50cmFuc2Zvcm1zPVtdLHRoaXMub25jZT17fX19KSxhLkZYPWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7dGhpcy5fdGFyZ2V0PXQsdGhpcy5zaXR1YXRpb25zPVtdLHRoaXMuYWN0aXZlPSExLHRoaXMuc2l0dWF0aW9uPW51bGwsdGhpcy5wYXVzZWQ9ITEsdGhpcy5sYXN0UG9zPTAsdGhpcy5wb3M9MCx0aGlzLmFic1Bvcz0wLHRoaXMuX3NwZWVkPTF9LGV4dGVuZDp7YW5pbWF0ZTpmdW5jdGlvbih0LGUscyl7XCJvYmplY3RcIj09PWkodCkmJihlPXQuZWFzZSxzPXQuZGVsYXksdD10LmR1cmF0aW9uKTt2YXIgcj1uZXcgYS5TaXR1YXRpb24oe2R1cmF0aW9uOnR8fDFlMyxkZWxheTpzfHwwLGVhc2U6YS5lYXNpbmdbZXx8XCItXCJdfHxlfSk7cmV0dXJuIHRoaXMucXVldWUociksdGhpc30sdGFyZ2V0OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0IGluc3RhbmNlb2YgYS5FbGVtZW50Pyh0aGlzLl90YXJnZXQ9dCx0aGlzKTp0aGlzLl90YXJnZXR9LHRpbWVUb0Fic1BvczpmdW5jdGlvbih0KXtyZXR1cm4odC10aGlzLnNpdHVhdGlvbi5zdGFydCkvKHRoaXMuc2l0dWF0aW9uLmR1cmF0aW9uL3RoaXMuX3NwZWVkKX0sYWJzUG9zVG9UaW1lOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNpdHVhdGlvbi5kdXJhdGlvbi90aGlzLl9zcGVlZCp0K3RoaXMuc2l0dWF0aW9uLnN0YXJ0fSxzdGFydEFuaW1GcmFtZTpmdW5jdGlvbigpe3RoaXMuc3RvcEFuaW1GcmFtZSgpLHRoaXMuYW5pbWF0aW9uRnJhbWU9dC5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKXt0aGlzLnN0ZXAoKX0uYmluZCh0aGlzKSl9LHN0b3BBbmltRnJhbWU6ZnVuY3Rpb24oKXt0LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuYW5pbWF0aW9uRnJhbWUpfSxzdGFydDpmdW5jdGlvbigpe3JldHVybiF0aGlzLmFjdGl2ZSYmdGhpcy5zaXR1YXRpb24mJih0aGlzLmFjdGl2ZT0hMCx0aGlzLnN0YXJ0Q3VycmVudCgpKSx0aGlzfSxzdGFydEN1cnJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaXR1YXRpb24uc3RhcnQ9K25ldyBEYXRlK3RoaXMuc2l0dWF0aW9uLmRlbGF5L3RoaXMuX3NwZWVkLHRoaXMuc2l0dWF0aW9uLmZpbmlzaD10aGlzLnNpdHVhdGlvbi5zdGFydCt0aGlzLnNpdHVhdGlvbi5kdXJhdGlvbi90aGlzLl9zcGVlZCx0aGlzLmluaXRBbmltYXRpb25zKCkuc3RlcCgpfSxxdWV1ZTpmdW5jdGlvbih0KXtyZXR1cm4oXCJmdW5jdGlvblwiPT10eXBlb2YgdHx8dCBpbnN0YW5jZW9mIGEuU2l0dWF0aW9uKSYmdGhpcy5zaXR1YXRpb25zLnB1c2godCksdGhpcy5zaXR1YXRpb258fCh0aGlzLnNpdHVhdGlvbj10aGlzLnNpdHVhdGlvbnMuc2hpZnQoKSksdGhpc30sZGVxdWV1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0b3AoKSx0aGlzLnNpdHVhdGlvbj10aGlzLnNpdHVhdGlvbnMuc2hpZnQoKSx0aGlzLnNpdHVhdGlvbiYmKHRoaXMuc2l0dWF0aW9uIGluc3RhbmNlb2YgYS5TaXR1YXRpb24/dGhpcy5zdGFydCgpOnRoaXMuc2l0dWF0aW9uLmNhbGwodGhpcykpLHRoaXN9LGluaXRBbmltYXRpb25zOmZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLnNpdHVhdGlvbjtpZihlLmluaXQpcmV0dXJuIHRoaXM7Zm9yKHZhciBpIGluIGUuYW5pbWF0aW9ucyl7dD10aGlzLnRhcmdldCgpW2ldKCksQXJyYXkuaXNBcnJheSh0KXx8KHQ9W3RdKSxBcnJheS5pc0FycmF5KGUuYW5pbWF0aW9uc1tpXSl8fChlLmFuaW1hdGlvbnNbaV09W2UuYW5pbWF0aW9uc1tpXV0pO2Zvcih2YXIgcz10Lmxlbmd0aDtzLS07KWUuYW5pbWF0aW9uc1tpXVtzXWluc3RhbmNlb2YgYS5OdW1iZXImJih0W3NdPW5ldyBhLk51bWJlcih0W3NdKSksZS5hbmltYXRpb25zW2ldW3NdPXRbc10ubW9ycGgoZS5hbmltYXRpb25zW2ldW3NdKX1mb3IodmFyIGkgaW4gZS5hdHRycyllLmF0dHJzW2ldPW5ldyBhLk1vcnBoT2JqKHRoaXMudGFyZ2V0KCkuYXR0cihpKSxlLmF0dHJzW2ldKTtmb3IodmFyIGkgaW4gZS5zdHlsZXMpZS5zdHlsZXNbaV09bmV3IGEuTW9ycGhPYmoodGhpcy50YXJnZXQoKS5zdHlsZShpKSxlLnN0eWxlc1tpXSk7cmV0dXJuIGUuaW5pdGlhbFRyYW5zZm9ybWF0aW9uPXRoaXMudGFyZ2V0KCkubWF0cml4aWZ5KCksZS5pbml0PSEwLHRoaXN9LGNsZWFyUXVldWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaXR1YXRpb25zPVtdLHRoaXN9LGNsZWFyQ3VycmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNpdHVhdGlvbj1udWxsLHRoaXN9LHN0b3A6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLmFjdGl2ZTtyZXR1cm4gdGhpcy5hY3RpdmU9ITEsZSYmdGhpcy5jbGVhclF1ZXVlKCksdCYmdGhpcy5zaXR1YXRpb24mJighaSYmdGhpcy5zdGFydEN1cnJlbnQoKSx0aGlzLmF0RW5kKCkpLHRoaXMuc3RvcEFuaW1GcmFtZSgpLHRoaXMuY2xlYXJDdXJyZW50KCl9LGFmdGVyOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMubGFzdCgpO3JldHVybiB0aGlzLnRhcmdldCgpLm9uKFwiZmluaXNoZWQuZnhcIiwoZnVuY3Rpb24gaShhKXthLmRldGFpbC5zaXR1YXRpb249PWUmJih0LmNhbGwodGhpcyxlKSx0aGlzLm9mZihcImZpbmlzaGVkLmZ4XCIsaSkpfSkpLHRoaXMuX2NhbGxTdGFydCgpfSxkdXJpbmc6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5sYXN0KCksaT1mdW5jdGlvbihpKXtpLmRldGFpbC5zaXR1YXRpb249PWUmJnQuY2FsbCh0aGlzLGkuZGV0YWlsLnBvcyxhLm1vcnBoKGkuZGV0YWlsLnBvcyksaS5kZXRhaWwuZWFzZWQsZSl9O3JldHVybiB0aGlzLnRhcmdldCgpLm9mZihcImR1cmluZy5meFwiLGkpLm9uKFwiZHVyaW5nLmZ4XCIsaSksdGhpcy5hZnRlcigoZnVuY3Rpb24oKXt0aGlzLm9mZihcImR1cmluZy5meFwiLGkpfSkpLHRoaXMuX2NhbGxTdGFydCgpfSxhZnRlckFsbDpmdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbiBlKGkpe3QuY2FsbCh0aGlzKSx0aGlzLm9mZihcImFsbGZpbmlzaGVkLmZ4XCIsZSl9O3JldHVybiB0aGlzLnRhcmdldCgpLm9mZihcImFsbGZpbmlzaGVkLmZ4XCIsZSkub24oXCJhbGxmaW5pc2hlZC5meFwiLGUpLHRoaXMuX2NhbGxTdGFydCgpfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2l0dWF0aW9ucy5sZW5ndGg/dGhpcy5zaXR1YXRpb25zW3RoaXMuc2l0dWF0aW9ucy5sZW5ndGgtMV06dGhpcy5zaXR1YXRpb259LGFkZDpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMubGFzdCgpW2l8fFwiYW5pbWF0aW9uc1wiXVt0XT1lLHRoaXMuX2NhbGxTdGFydCgpfSxzdGVwOmZ1bmN0aW9uKHQpe3ZhciBlLGksYTt0fHwodGhpcy5hYnNQb3M9dGhpcy50aW1lVG9BYnNQb3MoK25ldyBEYXRlKSksITEhPT10aGlzLnNpdHVhdGlvbi5sb29wcz8oZT1NYXRoLm1heCh0aGlzLmFic1BvcywwKSxpPU1hdGguZmxvb3IoZSksITA9PT10aGlzLnNpdHVhdGlvbi5sb29wc3x8aTx0aGlzLnNpdHVhdGlvbi5sb29wcz8odGhpcy5wb3M9ZS1pLGE9dGhpcy5zaXR1YXRpb24ubG9vcCx0aGlzLnNpdHVhdGlvbi5sb29wPWkpOih0aGlzLmFic1Bvcz10aGlzLnNpdHVhdGlvbi5sb29wcyx0aGlzLnBvcz0xLGE9dGhpcy5zaXR1YXRpb24ubG9vcC0xLHRoaXMuc2l0dWF0aW9uLmxvb3A9dGhpcy5zaXR1YXRpb24ubG9vcHMpLHRoaXMuc2l0dWF0aW9uLnJldmVyc2luZyYmKHRoaXMuc2l0dWF0aW9uLnJldmVyc2VkPXRoaXMuc2l0dWF0aW9uLnJldmVyc2VkIT1Cb29sZWFuKCh0aGlzLnNpdHVhdGlvbi5sb29wLWEpJTIpKSk6KHRoaXMuYWJzUG9zPU1hdGgubWluKHRoaXMuYWJzUG9zLDEpLHRoaXMucG9zPXRoaXMuYWJzUG9zKSx0aGlzLnBvczwwJiYodGhpcy5wb3M9MCksdGhpcy5zaXR1YXRpb24ucmV2ZXJzZWQmJih0aGlzLnBvcz0xLXRoaXMucG9zKTt2YXIgcz10aGlzLnNpdHVhdGlvbi5lYXNlKHRoaXMucG9zKTtmb3IodmFyIHIgaW4gdGhpcy5zaXR1YXRpb24ub25jZSlyPnRoaXMubGFzdFBvcyYmcjw9cyYmKHRoaXMuc2l0dWF0aW9uLm9uY2Vbcl0uY2FsbCh0aGlzLnRhcmdldCgpLHRoaXMucG9zLHMpLGRlbGV0ZSB0aGlzLnNpdHVhdGlvbi5vbmNlW3JdKTtyZXR1cm4gdGhpcy5hY3RpdmUmJnRoaXMudGFyZ2V0KCkuZmlyZShcImR1cmluZ1wiLHtwb3M6dGhpcy5wb3MsZWFzZWQ6cyxmeDp0aGlzLHNpdHVhdGlvbjp0aGlzLnNpdHVhdGlvbn0pLHRoaXMuc2l0dWF0aW9uPyh0aGlzLmVhY2hBdCgpLDE9PXRoaXMucG9zJiYhdGhpcy5zaXR1YXRpb24ucmV2ZXJzZWR8fHRoaXMuc2l0dWF0aW9uLnJldmVyc2VkJiYwPT10aGlzLnBvcz8odGhpcy5zdG9wQW5pbUZyYW1lKCksdGhpcy50YXJnZXQoKS5maXJlKFwiZmluaXNoZWRcIix7Zng6dGhpcyxzaXR1YXRpb246dGhpcy5zaXR1YXRpb259KSx0aGlzLnNpdHVhdGlvbnMubGVuZ3RofHwodGhpcy50YXJnZXQoKS5maXJlKFwiYWxsZmluaXNoZWRcIiksdGhpcy5zaXR1YXRpb25zLmxlbmd0aHx8KHRoaXMudGFyZ2V0KCkub2ZmKFwiLmZ4XCIpLHRoaXMuYWN0aXZlPSExKSksdGhpcy5hY3RpdmU/dGhpcy5kZXF1ZXVlKCk6dGhpcy5jbGVhckN1cnJlbnQoKSk6IXRoaXMucGF1c2VkJiZ0aGlzLmFjdGl2ZSYmdGhpcy5zdGFydEFuaW1GcmFtZSgpLHRoaXMubGFzdFBvcz1zLHRoaXMpOnRoaXN9LGVhY2hBdDpmdW5jdGlvbigpe3ZhciB0LGU9dGhpcyxpPXRoaXMudGFyZ2V0KCkscz10aGlzLnNpdHVhdGlvbjtmb3IodmFyIHIgaW4gcy5hbmltYXRpb25zKXQ9W10uY29uY2F0KHMuYW5pbWF0aW9uc1tyXSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm5cInN0cmluZ1wiIT10eXBlb2YgdCYmdC5hdD90LmF0KHMuZWFzZShlLnBvcyksZS5wb3MpOnR9KSksaVtyXS5hcHBseShpLHQpO2Zvcih2YXIgciBpbiBzLmF0dHJzKXQ9W3JdLmNvbmNhdChzLmF0dHJzW3JdKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVyblwic3RyaW5nXCIhPXR5cGVvZiB0JiZ0LmF0P3QuYXQocy5lYXNlKGUucG9zKSxlLnBvcyk6dH0pKSxpLmF0dHIuYXBwbHkoaSx0KTtmb3IodmFyIHIgaW4gcy5zdHlsZXMpdD1bcl0uY29uY2F0KHMuc3R5bGVzW3JdKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVyblwic3RyaW5nXCIhPXR5cGVvZiB0JiZ0LmF0P3QuYXQocy5lYXNlKGUucG9zKSxlLnBvcyk6dH0pKSxpLnN0eWxlLmFwcGx5KGksdCk7aWYocy50cmFuc2Zvcm1zLmxlbmd0aCl7dD1zLmluaXRpYWxUcmFuc2Zvcm1hdGlvbixyPTA7Zm9yKHZhciBvPXMudHJhbnNmb3Jtcy5sZW5ndGg7cjxvO3IrKyl7dmFyIG49cy50cmFuc2Zvcm1zW3JdO24gaW5zdGFuY2VvZiBhLk1hdHJpeD90PW4ucmVsYXRpdmU/dC5tdWx0aXBseSgobmV3IGEuTWF0cml4KS5tb3JwaChuKS5hdChzLmVhc2UodGhpcy5wb3MpKSk6dC5tb3JwaChuKS5hdChzLmVhc2UodGhpcy5wb3MpKToobi5yZWxhdGl2ZXx8bi51bmRvKHQuZXh0cmFjdCgpKSx0PXQubXVsdGlwbHkobi5hdChzLmVhc2UodGhpcy5wb3MpKSkpfWkubWF0cml4KHQpfXJldHVybiB0aGlzfSxvbmNlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLmxhc3QoKTtyZXR1cm4gaXx8KHQ9YS5lYXNlKHQpKSxhLm9uY2VbdF09ZSx0aGlzfSxfY2FsbFN0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24oKXt0aGlzLnN0YXJ0KCl9LmJpbmQodGhpcyksMCksdGhpc319LHBhcmVudDphLkVsZW1lbnQsY29uc3RydWN0OnthbmltYXRlOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4odGhpcy5meHx8KHRoaXMuZng9bmV3IGEuRlgodGhpcykpKS5hbmltYXRlKHQsZSxpKX0sZGVsYXk6ZnVuY3Rpb24odCl7cmV0dXJuKHRoaXMuZnh8fCh0aGlzLmZ4PW5ldyBhLkZYKHRoaXMpKSkuZGVsYXkodCl9LHN0b3A6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5meCYmdGhpcy5meC5zdG9wKHQsZSksdGhpc30sZmluaXNoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZngmJnRoaXMuZnguZmluaXNoKCksdGhpc319fSksYS5Nb3JwaE9iaj1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGEuQ29sb3IuaXNDb2xvcihlKT9uZXcgYS5Db2xvcih0KS5tb3JwaChlKTphLnJlZ2V4LmRlbGltaXRlci50ZXN0KHQpP2EucmVnZXgucGF0aExldHRlcnMudGVzdCh0KT9uZXcgYS5QYXRoQXJyYXkodCkubW9ycGgoZSk6bmV3IGEuQXJyYXkodCkubW9ycGgoZSk6YS5yZWdleC5udW1iZXJBbmRVbml0LnRlc3QoZSk/bmV3IGEuTnVtYmVyKHQpLm1vcnBoKGUpOih0aGlzLnZhbHVlPXQsdm9pZCh0aGlzLmRlc3RpbmF0aW9uPWUpKX0sZXh0ZW5kOnthdDpmdW5jdGlvbih0LGUpe3JldHVybiBlPDE/dGhpcy52YWx1ZTp0aGlzLmRlc3RpbmF0aW9ufSx2YWx1ZU9mOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWV9fX0pLGEuZXh0ZW5kKGEuRlgse2F0dHI6ZnVuY3Rpb24odCxlLGEpe2lmKFwib2JqZWN0XCI9PT1pKHQpKWZvcih2YXIgcyBpbiB0KXRoaXMuYXR0cihzLHRbc10pO2Vsc2UgdGhpcy5hZGQodCxlLFwiYXR0cnNcIik7cmV0dXJuIHRoaXN9LHBsb3Q6ZnVuY3Rpb24odCxlLGksYSl7cmV0dXJuIDQ9PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5wbG90KFt0LGUsaSxhXSk6dGhpcy5hZGQoXCJwbG90XCIsbmV3KHRoaXMudGFyZ2V0KCkubW9ycGhBcnJheSkodCkpfX0pLGEuQm94PWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCxlLHMscil7aWYoIShcIm9iamVjdFwiIT09aSh0KXx8dCBpbnN0YW5jZW9mIGEuRWxlbWVudCkpcmV0dXJuIGEuQm94LmNhbGwodGhpcyxudWxsIT10LmxlZnQ/dC5sZWZ0OnQueCxudWxsIT10LnRvcD90LnRvcDp0LnksdC53aWR0aCx0LmhlaWdodCk7dmFyIG87ND09YXJndW1lbnRzLmxlbmd0aCYmKHRoaXMueD10LHRoaXMueT1lLHRoaXMud2lkdGg9cyx0aGlzLmhlaWdodD1yKSxudWxsPT0obz10aGlzKS54JiYoby54PTAsby55PTAsby53aWR0aD0wLG8uaGVpZ2h0PTApLG8udz1vLndpZHRoLG8uaD1vLmhlaWdodCxvLngyPW8ueCtvLndpZHRoLG8ueTI9by55K28uaGVpZ2h0LG8uY3g9by54K28ud2lkdGgvMixvLmN5PW8ueStvLmhlaWdodC8yfX0pLGEuQkJveD1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQpe2lmKGEuQm94LmFwcGx5KHRoaXMsW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKSx0IGluc3RhbmNlb2YgYS5FbGVtZW50KXt2YXIgaTt0cnl7aWYoIWUuZG9jdW1lbnRFbGVtZW50LmNvbnRhaW5zKXtmb3IodmFyIHM9dC5ub2RlO3MucGFyZW50Tm9kZTspcz1zLnBhcmVudE5vZGU7aWYocyE9ZSl0aHJvdyBuZXcgRXJyb3IoXCJFbGVtZW50IG5vdCBpbiB0aGUgZG9tXCIpfWk9dC5ub2RlLmdldEJCb3goKX1jYXRjaChlKXtpZih0IGluc3RhbmNlb2YgYS5TaGFwZSl7YS5wYXJzZXIuZHJhd3x8YS5wcmVwYXJlKCk7dmFyIHI9dC5jbG9uZShhLnBhcnNlci5kcmF3Lmluc3RhbmNlKS5zaG93KCk7ciYmci5ub2RlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiByLm5vZGUuZ2V0QkJveCYmKGk9ci5ub2RlLmdldEJCb3goKSksciYmXCJmdW5jdGlvblwiPT10eXBlb2Ygci5yZW1vdmUmJnIucmVtb3ZlKCl9ZWxzZSBpPXt4OnQubm9kZS5jbGllbnRMZWZ0LHk6dC5ub2RlLmNsaWVudFRvcCx3aWR0aDp0Lm5vZGUuY2xpZW50V2lkdGgsaGVpZ2h0OnQubm9kZS5jbGllbnRIZWlnaHR9fWEuQm94LmNhbGwodGhpcyxpKX19LGluaGVyaXQ6YS5Cb3gscGFyZW50OmEuRWxlbWVudCxjb25zdHJ1Y3Q6e2Jib3g6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGEuQkJveCh0aGlzKX19fSksYS5CQm94LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hLkJCb3gsYS5NYXRyaXg9YS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbih0KXt2YXIgZT1mKFsxLDAsMCwxLDAsMF0pO3Q9bnVsbD09PXQ/ZTp0IGluc3RhbmNlb2YgYS5FbGVtZW50P3QubWF0cml4aWZ5KCk6XCJzdHJpbmdcIj09dHlwZW9mIHQ/Zih0LnNwbGl0KGEucmVnZXguZGVsaW1pdGVyKS5tYXAocGFyc2VGbG9hdCkpOjY9PWFyZ3VtZW50cy5sZW5ndGg/ZihbXS5zbGljZS5jYWxsKGFyZ3VtZW50cykpOkFycmF5LmlzQXJyYXkodCk/Zih0KTp0JiZcIm9iamVjdFwiPT09aSh0KT90OmU7Zm9yKHZhciBzPXYubGVuZ3RoLTE7cz49MDstLXMpdGhpc1t2W3NdXT1udWxsIT10W3Zbc11dP3RbdltzXV06ZVt2W3NdXX0sZXh0ZW5kOntleHRyYWN0OmZ1bmN0aW9uKCl7dmFyIHQ9cCh0aGlzLDAsMSk7cCh0aGlzLDEsMCk7dmFyIGU9MTgwL01hdGguUEkqTWF0aC5hdGFuMih0LnksdC54KS05MDtyZXR1cm57eDp0aGlzLmUseTp0aGlzLmYsdHJhbnNmb3JtZWRYOih0aGlzLmUqTWF0aC5jb3MoZSpNYXRoLlBJLzE4MCkrdGhpcy5mKk1hdGguc2luKGUqTWF0aC5QSS8xODApKS9NYXRoLnNxcnQodGhpcy5hKnRoaXMuYSt0aGlzLmIqdGhpcy5iKSx0cmFuc2Zvcm1lZFk6KHRoaXMuZipNYXRoLmNvcyhlKk1hdGguUEkvMTgwKSt0aGlzLmUqTWF0aC5zaW4oLWUqTWF0aC5QSS8xODApKS9NYXRoLnNxcnQodGhpcy5jKnRoaXMuYyt0aGlzLmQqdGhpcy5kKSxyb3RhdGlvbjplLGE6dGhpcy5hLGI6dGhpcy5iLGM6dGhpcy5jLGQ6dGhpcy5kLGU6dGhpcy5lLGY6dGhpcy5mLG1hdHJpeDpuZXcgYS5NYXRyaXgodGhpcyl9fSxjbG9uZTpmdW5jdGlvbigpe3JldHVybiBuZXcgYS5NYXRyaXgodGhpcyl9LG1vcnBoOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRlc3RpbmF0aW9uPW5ldyBhLk1hdHJpeCh0KSx0aGlzfSxtdWx0aXBseTpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IGEuTWF0cml4KHRoaXMubmF0aXZlKCkubXVsdGlwbHkoZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBhLk1hdHJpeHx8KHQ9bmV3IGEuTWF0cml4KHQpKSx0fSh0KS5uYXRpdmUoKSkpfSxpbnZlcnNlOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBhLk1hdHJpeCh0aGlzLm5hdGl2ZSgpLmludmVyc2UoKSl9LHRyYW5zbGF0ZTpmdW5jdGlvbih0LGUpe3JldHVybiBuZXcgYS5NYXRyaXgodGhpcy5uYXRpdmUoKS50cmFuc2xhdGUodHx8MCxlfHwwKSl9LG5hdGl2ZTpmdW5jdGlvbigpe2Zvcih2YXIgdD1hLnBhcnNlci5uYXRpdmUuY3JlYXRlU1ZHTWF0cml4KCksZT12Lmxlbmd0aC0xO2U+PTA7ZS0tKXRbdltlXV09dGhpc1t2W2VdXTtyZXR1cm4gdH0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm5cIm1hdHJpeChcIitiKHRoaXMuYSkrXCIsXCIrYih0aGlzLmIpK1wiLFwiK2IodGhpcy5jKStcIixcIitiKHRoaXMuZCkrXCIsXCIrYih0aGlzLmUpK1wiLFwiK2IodGhpcy5mKStcIilcIn19LHBhcmVudDphLkVsZW1lbnQsY29uc3RydWN0OntjdG06ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGEuTWF0cml4KHRoaXMubm9kZS5nZXRDVE0oKSl9LHNjcmVlbkNUTTpmdW5jdGlvbigpe2lmKHRoaXMgaW5zdGFuY2VvZiBhLk5lc3RlZCl7dmFyIHQ9dGhpcy5yZWN0KDEsMSksZT10Lm5vZGUuZ2V0U2NyZWVuQ1RNKCk7cmV0dXJuIHQucmVtb3ZlKCksbmV3IGEuTWF0cml4KGUpfXJldHVybiBuZXcgYS5NYXRyaXgodGhpcy5ub2RlLmdldFNjcmVlbkNUTSgpKX19fSksYS5Qb2ludD1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQsZSl7dmFyIGE7YT1BcnJheS5pc0FycmF5KHQpP3t4OnRbMF0seTp0WzFdfTpcIm9iamVjdFwiPT09aSh0KT97eDp0LngseTp0Lnl9Om51bGwhPXQ/e3g6dCx5Om51bGwhPWU/ZTp0fTp7eDowLHk6MH0sdGhpcy54PWEueCx0aGlzLnk9YS55fSxleHRlbmQ6e2Nsb25lOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBhLlBvaW50KHRoaXMpfSxtb3JwaDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmRlc3RpbmF0aW9uPW5ldyBhLlBvaW50KHQsZSksdGhpc319fSksYS5leHRlbmQoYS5FbGVtZW50LHtwb2ludDpmdW5jdGlvbih0LGUpe3JldHVybiBuZXcgYS5Qb2ludCh0LGUpLnRyYW5zZm9ybSh0aGlzLnNjcmVlbkNUTSgpLmludmVyc2UoKSl9fSksYS5leHRlbmQoYS5FbGVtZW50LHthdHRyOmZ1bmN0aW9uKHQsZSxzKXtpZihudWxsPT10KXtmb3IodD17fSxzPShlPXRoaXMubm9kZS5hdHRyaWJ1dGVzKS5sZW5ndGgtMTtzPj0wO3MtLSl0W2Vbc10ubm9kZU5hbWVdPWEucmVnZXguaXNOdW1iZXIudGVzdChlW3NdLm5vZGVWYWx1ZSk/cGFyc2VGbG9hdChlW3NdLm5vZGVWYWx1ZSk6ZVtzXS5ub2RlVmFsdWU7cmV0dXJuIHR9aWYoXCJvYmplY3RcIj09PWkodCkpZm9yKHZhciByIGluIHQpdGhpcy5hdHRyKHIsdFtyXSk7ZWxzZSBpZihudWxsPT09ZSl0aGlzLm5vZGUucmVtb3ZlQXR0cmlidXRlKHQpO2Vsc2V7aWYobnVsbD09ZSlyZXR1cm4gbnVsbD09KGU9dGhpcy5ub2RlLmdldEF0dHJpYnV0ZSh0KSk/YS5kZWZhdWx0cy5hdHRyc1t0XTphLnJlZ2V4LmlzTnVtYmVyLnRlc3QoZSk/cGFyc2VGbG9hdChlKTplO1wic3Ryb2tlLXdpZHRoXCI9PXQ/dGhpcy5hdHRyKFwic3Ryb2tlXCIscGFyc2VGbG9hdChlKT4wP3RoaXMuX3N0cm9rZTpudWxsKTpcInN0cm9rZVwiPT10JiYodGhpcy5fc3Ryb2tlPWUpLFwiZmlsbFwiIT10JiZcInN0cm9rZVwiIT10fHwoYS5yZWdleC5pc0ltYWdlLnRlc3QoZSkmJihlPXRoaXMuZG9jKCkuZGVmcygpLmltYWdlKGUsMCwwKSksZSBpbnN0YW5jZW9mIGEuSW1hZ2UmJihlPXRoaXMuZG9jKCkuZGVmcygpLnBhdHRlcm4oMCwwLChmdW5jdGlvbigpe3RoaXMuYWRkKGUpfSkpKSksXCJudW1iZXJcIj09dHlwZW9mIGU/ZT1uZXcgYS5OdW1iZXIoZSk6YS5Db2xvci5pc0NvbG9yKGUpP2U9bmV3IGEuQ29sb3IoZSk6QXJyYXkuaXNBcnJheShlKSYmKGU9bmV3IGEuQXJyYXkoZSkpLFwibGVhZGluZ1wiPT10P3RoaXMubGVhZGluZyYmdGhpcy5sZWFkaW5nKGUpOlwic3RyaW5nXCI9PXR5cGVvZiBzP3RoaXMubm9kZS5zZXRBdHRyaWJ1dGVOUyhzLHQsZS50b1N0cmluZygpKTp0aGlzLm5vZGUuc2V0QXR0cmlidXRlKHQsZS50b1N0cmluZygpKSwhdGhpcy5yZWJ1aWxkfHxcImZvbnQtc2l6ZVwiIT10JiZcInhcIiE9dHx8dGhpcy5yZWJ1aWxkKHQsZSl9cmV0dXJuIHRoaXN9fSksYS5leHRlbmQoYS5FbGVtZW50LHt0cmFuc2Zvcm06ZnVuY3Rpb24odCxlKXt2YXIgcztyZXR1cm5cIm9iamVjdFwiIT09aSh0KT8ocz1uZXcgYS5NYXRyaXgodGhpcykuZXh0cmFjdCgpLFwic3RyaW5nXCI9PXR5cGVvZiB0P3NbdF06cyk6KHM9bmV3IGEuTWF0cml4KHRoaXMpLGU9ISFlfHwhIXQucmVsYXRpdmUsbnVsbCE9dC5hJiYocz1lP3MubXVsdGlwbHkobmV3IGEuTWF0cml4KHQpKTpuZXcgYS5NYXRyaXgodCkpLHRoaXMuYXR0cihcInRyYW5zZm9ybVwiLHMpKX19KSxhLmV4dGVuZChhLkVsZW1lbnQse3VudHJhbnNmb3JtOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXR0cihcInRyYW5zZm9ybVwiLG51bGwpfSxtYXRyaXhpZnk6ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5hdHRyKFwidHJhbnNmb3JtXCIpfHxcIlwiKS5zcGxpdChhLnJlZ2V4LnRyYW5zZm9ybXMpLnNsaWNlKDAsLTEpLm1hcCgoZnVuY3Rpb24odCl7dmFyIGU9dC50cmltKCkuc3BsaXQoXCIoXCIpO3JldHVybltlWzBdLGVbMV0uc3BsaXQoYS5yZWdleC5kZWxpbWl0ZXIpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHBhcnNlRmxvYXQodCl9KSldfSkpLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm5cIm1hdHJpeFwiPT1lWzBdP3QubXVsdGlwbHkoZihlWzFdKSk6dFtlWzBdXS5hcHBseSh0LGVbMV0pfSksbmV3IGEuTWF0cml4KX0sdG9QYXJlbnQ6ZnVuY3Rpb24odCl7aWYodGhpcz09dClyZXR1cm4gdGhpczt2YXIgZT10aGlzLnNjcmVlbkNUTSgpLGk9dC5zY3JlZW5DVE0oKS5pbnZlcnNlKCk7cmV0dXJuIHRoaXMuYWRkVG8odCkudW50cmFuc2Zvcm0oKS50cmFuc2Zvcm0oaS5tdWx0aXBseShlKSksdGhpc30sdG9Eb2M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b1BhcmVudCh0aGlzLmRvYygpKX19KSxhLlRyYW5zZm9ybWF0aW9uPWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCxlKXtpZihhcmd1bWVudHMubGVuZ3RoPjEmJlwiYm9vbGVhblwiIT10eXBlb2YgZSlyZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKTtpZihBcnJheS5pc0FycmF5KHQpKWZvcih2YXIgYT0wLHM9dGhpcy5hcmd1bWVudHMubGVuZ3RoO2E8czsrK2EpdGhpc1t0aGlzLmFyZ3VtZW50c1thXV09dFthXTtlbHNlIGlmKHQmJlwib2JqZWN0XCI9PT1pKHQpKWZvcihhPTAscz10aGlzLmFyZ3VtZW50cy5sZW5ndGg7YTxzOysrYSl0aGlzW3RoaXMuYXJndW1lbnRzW2FdXT10W3RoaXMuYXJndW1lbnRzW2FdXTt0aGlzLmludmVyc2VkPSExLCEwPT09ZSYmKHRoaXMuaW52ZXJzZWQ9ITApfX0pLGEuVHJhbnNsYXRlPWEuaW52ZW50KHtwYXJlbnQ6YS5NYXRyaXgsaW5oZXJpdDphLlRyYW5zZm9ybWF0aW9uLGNyZWF0ZTpmdW5jdGlvbih0LGUpe3RoaXMuY29uc3RydWN0b3IuYXBwbHkodGhpcyxbXS5zbGljZS5jYWxsKGFyZ3VtZW50cykpfSxleHRlbmQ6e2FyZ3VtZW50czpbXCJ0cmFuc2Zvcm1lZFhcIixcInRyYW5zZm9ybWVkWVwiXSxtZXRob2Q6XCJ0cmFuc2xhdGVcIn19KSxhLmV4dGVuZChhLkVsZW1lbnQse3N0eWxlOmZ1bmN0aW9uKHQsZSl7aWYoMD09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdGhpcy5ub2RlLnN0eWxlLmNzc1RleHR8fFwiXCI7aWYoYXJndW1lbnRzLmxlbmd0aDwyKWlmKFwib2JqZWN0XCI9PT1pKHQpKWZvcih2YXIgcyBpbiB0KXRoaXMuc3R5bGUocyx0W3NdKTtlbHNle2lmKCFhLnJlZ2V4LmlzQ3NzLnRlc3QodCkpcmV0dXJuIHRoaXMubm9kZS5zdHlsZVtjKHQpXTtmb3IodD10LnNwbGl0KC9cXHMqO1xccyovKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiEhdH0pKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnNwbGl0KC9cXHMqOlxccyovKX0pKTtlPXQucG9wKCk7KXRoaXMuc3R5bGUoZVswXSxlWzFdKX1lbHNlIHRoaXMubm9kZS5zdHlsZVtjKHQpXT1udWxsPT09ZXx8YS5yZWdleC5pc0JsYW5rLnRlc3QoZSk/XCJcIjplO3JldHVybiB0aGlzfX0pLGEuUGFyZW50PWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsdCl9LGluaGVyaXQ6YS5FbGVtZW50LGV4dGVuZDp7Y2hpbGRyZW46ZnVuY3Rpb24oKXtyZXR1cm4gYS51dGlscy5tYXAoYS51dGlscy5maWx0ZXJTVkdFbGVtZW50cyh0aGlzLm5vZGUuY2hpbGROb2RlcyksKGZ1bmN0aW9uKHQpe3JldHVybiBhLmFkb3B0KHQpfSkpfSxhZGQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09ZT90aGlzLm5vZGUuYXBwZW5kQ2hpbGQodC5ub2RlKTp0Lm5vZGUhPXRoaXMubm9kZS5jaGlsZE5vZGVzW2VdJiZ0aGlzLm5vZGUuaW5zZXJ0QmVmb3JlKHQubm9kZSx0aGlzLm5vZGUuY2hpbGROb2Rlc1tlXSksdGhpc30scHV0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuYWRkKHQsZSksdH0saGFzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmluZGV4KHQpPj0wfSxpbmRleDpmdW5jdGlvbih0KXtyZXR1cm5bXS5zbGljZS5jYWxsKHRoaXMubm9kZS5jaGlsZE5vZGVzKS5pbmRleE9mKHQubm9kZSl9LGdldDpmdW5jdGlvbih0KXtyZXR1cm4gYS5hZG9wdCh0aGlzLm5vZGUuY2hpbGROb2Rlc1t0XSl9LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0KDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0KHRoaXMubm9kZS5jaGlsZE5vZGVzLmxlbmd0aC0xKX0sZWFjaDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgaT10aGlzLmNoaWxkcmVuKCkscz0wLHI9aS5sZW5ndGg7czxyO3MrKylpW3NdaW5zdGFuY2VvZiBhLkVsZW1lbnQmJnQuYXBwbHkoaVtzXSxbcyxpXSksZSYmaVtzXWluc3RhbmNlb2YgYS5Db250YWluZXImJmlbc10uZWFjaCh0LGUpO3JldHVybiB0aGlzfSxyZW1vdmVFbGVtZW50OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm5vZGUucmVtb3ZlQ2hpbGQodC5ub2RlKSx0aGlzfSxjbGVhcjpmdW5jdGlvbigpe2Zvcig7dGhpcy5ub2RlLmhhc0NoaWxkTm9kZXMoKTspdGhpcy5ub2RlLnJlbW92ZUNoaWxkKHRoaXMubm9kZS5sYXN0Q2hpbGQpO3JldHVybiBkZWxldGUgdGhpcy5fZGVmcyx0aGlzfSxkZWZzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9jKCkuZGVmcygpfX19KSxhLmV4dGVuZChhLlBhcmVudCx7dW5ncm91cDpmdW5jdGlvbih0LGUpe3JldHVybiAwPT09ZXx8dGhpcyBpbnN0YW5jZW9mIGEuRGVmc3x8dGhpcy5ub2RlPT1hLnBhcnNlci5kcmF3fHwodD10fHwodGhpcyBpbnN0YW5jZW9mIGEuRG9jP3RoaXM6dGhpcy5wYXJlbnQoYS5QYXJlbnQpKSxlPWV8fDEvMCx0aGlzLmVhY2goKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBhLkRlZnM/dGhpczp0aGlzIGluc3RhbmNlb2YgYS5QYXJlbnQ/dGhpcy51bmdyb3VwKHQsZS0xKTp0aGlzLnRvUGFyZW50KHQpfSkpLHRoaXMubm9kZS5maXJzdENoaWxkfHx0aGlzLnJlbW92ZSgpKSx0aGlzfSxmbGF0dGVuOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMudW5ncm91cCh0LGUpfX0pLGEuQ29udGFpbmVyPWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsdCl9LGluaGVyaXQ6YS5QYXJlbnR9KSxhLlZpZXdCb3g9YS5pbnZlbnQoe3BhcmVudDphLkNvbnRhaW5lcixjb25zdHJ1Y3Q6e319KSxbXCJjbGlja1wiLFwiZGJsY2xpY2tcIixcIm1vdXNlZG93blwiLFwibW91c2V1cFwiLFwibW91c2VvdmVyXCIsXCJtb3VzZW91dFwiLFwibW91c2Vtb3ZlXCIsXCJ0b3VjaHN0YXJ0XCIsXCJ0b3VjaG1vdmVcIixcInRvdWNobGVhdmVcIixcInRvdWNoZW5kXCIsXCJ0b3VjaGNhbmNlbFwiXS5mb3JFYWNoKChmdW5jdGlvbih0KXthLkVsZW1lbnQucHJvdG90eXBlW3RdPWZ1bmN0aW9uKGUpe3JldHVybiBhLm9uKHRoaXMubm9kZSx0LGUpLHRoaXN9fSkpLGEubGlzdGVuZXJzPVtdLGEuaGFuZGxlck1hcD1bXSxhLmxpc3RlbmVySWQ9MCxhLm9uPWZ1bmN0aW9uKHQsZSxpLHMscil7dmFyIG89aS5iaW5kKHN8fHQuaW5zdGFuY2V8fHQpLG49KGEuaGFuZGxlck1hcC5pbmRleE9mKHQpKzF8fGEuaGFuZGxlck1hcC5wdXNoKHQpKS0xLGw9ZS5zcGxpdChcIi5cIilbMF0saD1lLnNwbGl0KFwiLlwiKVsxXXx8XCIqXCI7YS5saXN0ZW5lcnNbbl09YS5saXN0ZW5lcnNbbl18fHt9LGEubGlzdGVuZXJzW25dW2xdPWEubGlzdGVuZXJzW25dW2xdfHx7fSxhLmxpc3RlbmVyc1tuXVtsXVtoXT1hLmxpc3RlbmVyc1tuXVtsXVtoXXx8e30saS5fc3ZnanNMaXN0ZW5lcklkfHwoaS5fc3ZnanNMaXN0ZW5lcklkPSsrYS5saXN0ZW5lcklkKSxhLmxpc3RlbmVyc1tuXVtsXVtoXVtpLl9zdmdqc0xpc3RlbmVySWRdPW8sdC5hZGRFdmVudExpc3RlbmVyKGwsbyxyfHx7cGFzc2l2ZTohMH0pfSxhLm9mZj1mdW5jdGlvbih0LGUsaSl7dmFyIHM9YS5oYW5kbGVyTWFwLmluZGV4T2YodCkscj1lJiZlLnNwbGl0KFwiLlwiKVswXSxvPWUmJmUuc3BsaXQoXCIuXCIpWzFdLG49XCJcIjtpZigtMSE9cylpZihpKXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBpJiYoaT1pLl9zdmdqc0xpc3RlbmVySWQpLCFpKXJldHVybjthLmxpc3RlbmVyc1tzXVtyXSYmYS5saXN0ZW5lcnNbc11bcl1bb3x8XCIqXCJdJiYodC5yZW1vdmVFdmVudExpc3RlbmVyKHIsYS5saXN0ZW5lcnNbc11bcl1bb3x8XCIqXCJdW2ldLCExKSxkZWxldGUgYS5saXN0ZW5lcnNbc11bcl1bb3x8XCIqXCJdW2ldKX1lbHNlIGlmKG8mJnIpe2lmKGEubGlzdGVuZXJzW3NdW3JdJiZhLmxpc3RlbmVyc1tzXVtyXVtvXSl7Zm9yKHZhciBsIGluIGEubGlzdGVuZXJzW3NdW3JdW29dKWEub2ZmKHQsW3Isb10uam9pbihcIi5cIiksbCk7ZGVsZXRlIGEubGlzdGVuZXJzW3NdW3JdW29dfX1lbHNlIGlmKG8pZm9yKHZhciBoIGluIGEubGlzdGVuZXJzW3NdKWZvcih2YXIgbiBpbiBhLmxpc3RlbmVyc1tzXVtoXSlvPT09biYmYS5vZmYodCxbaCxvXS5qb2luKFwiLlwiKSk7ZWxzZSBpZihyKXtpZihhLmxpc3RlbmVyc1tzXVtyXSl7Zm9yKHZhciBuIGluIGEubGlzdGVuZXJzW3NdW3JdKWEub2ZmKHQsW3Isbl0uam9pbihcIi5cIikpO2RlbGV0ZSBhLmxpc3RlbmVyc1tzXVtyXX19ZWxzZXtmb3IodmFyIGggaW4gYS5saXN0ZW5lcnNbc10pYS5vZmYodCxoKTtkZWxldGUgYS5saXN0ZW5lcnNbc10sZGVsZXRlIGEuaGFuZGxlck1hcFtzXX19LGEuZXh0ZW5kKGEuRWxlbWVudCx7b246ZnVuY3Rpb24odCxlLGkscyl7cmV0dXJuIGEub24odGhpcy5ub2RlLHQsZSxpLHMpLHRoaXN9LG9mZjpmdW5jdGlvbih0LGUpe3JldHVybiBhLm9mZih0aGlzLm5vZGUsdCxlKSx0aGlzfSxmaXJlOmZ1bmN0aW9uKGUsaSl7cmV0dXJuIGUgaW5zdGFuY2VvZiB0LkV2ZW50P3RoaXMubm9kZS5kaXNwYXRjaEV2ZW50KGUpOnRoaXMubm9kZS5kaXNwYXRjaEV2ZW50KGU9bmV3IGEuQ3VzdG9tRXZlbnQoZSx7ZGV0YWlsOmksY2FuY2VsYWJsZTohMH0pKSx0aGlzLl9ldmVudD1lLHRoaXN9LGV2ZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2V2ZW50fX0pLGEuRGVmcz1hLmludmVudCh7Y3JlYXRlOlwiZGVmc1wiLGluaGVyaXQ6YS5Db250YWluZXJ9KSxhLkc9YS5pbnZlbnQoe2NyZWF0ZTpcImdcIixpbmhlcml0OmEuQ29udGFpbmVyLGV4dGVuZDp7eDpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLnRyYW5zZm9ybShcInhcIik6dGhpcy50cmFuc2Zvcm0oe3g6dC10aGlzLngoKX0sITApfX0sY29uc3RydWN0Ontncm91cDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1dChuZXcgYS5HKX19fSksYS5Eb2M9YS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbih0KXt0JiYoXCJzdmdcIj09KHQ9XCJzdHJpbmdcIj09dHlwZW9mIHQ/ZS5nZXRFbGVtZW50QnlJZCh0KTp0KS5ub2RlTmFtZT90aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyx0KToodGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsYS5jcmVhdGUoXCJzdmdcIikpLHQuYXBwZW5kQ2hpbGQodGhpcy5ub2RlKSx0aGlzLnNpemUoXCIxMDAlXCIsXCIxMDAlXCIpKSx0aGlzLm5hbWVzcGFjZSgpLmRlZnMoKSl9LGluaGVyaXQ6YS5Db250YWluZXIsZXh0ZW5kOntuYW1lc3BhY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hdHRyKHt4bWxuczphLm5zLHZlcnNpb246XCIxLjFcIn0pLmF0dHIoXCJ4bWxuczp4bGlua1wiLGEueGxpbmssYS54bWxucykuYXR0cihcInhtbG5zOnN2Z2pzXCIsYS5zdmdqcyxhLnhtbG5zKX0sZGVmczpmdW5jdGlvbigpe3ZhciB0O3JldHVybiB0aGlzLl9kZWZzfHwoKHQ9dGhpcy5ub2RlLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiZGVmc1wiKVswXSk/dGhpcy5fZGVmcz1hLmFkb3B0KHQpOnRoaXMuX2RlZnM9bmV3IGEuRGVmcyx0aGlzLm5vZGUuYXBwZW5kQ2hpbGQodGhpcy5fZGVmcy5ub2RlKSksdGhpcy5fZGVmc30scGFyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZS5wYXJlbnROb2RlJiZcIiNkb2N1bWVudFwiIT10aGlzLm5vZGUucGFyZW50Tm9kZS5ub2RlTmFtZT90aGlzLm5vZGUucGFyZW50Tm9kZTpudWxsfSxyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5yZW1vdmVDaGlsZCh0aGlzLm5vZGUpLHRoaXN9LGNsZWFyOmZ1bmN0aW9uKCl7Zm9yKDt0aGlzLm5vZGUuaGFzQ2hpbGROb2RlcygpOyl0aGlzLm5vZGUucmVtb3ZlQ2hpbGQodGhpcy5ub2RlLmxhc3RDaGlsZCk7cmV0dXJuIGRlbGV0ZSB0aGlzLl9kZWZzLGEucGFyc2VyLmRyYXcmJiFhLnBhcnNlci5kcmF3LnBhcmVudE5vZGUmJnRoaXMubm9kZS5hcHBlbmRDaGlsZChhLnBhcnNlci5kcmF3KSx0aGlzfSxjbG9uZTpmdW5jdGlvbih0KXt0aGlzLndyaXRlRGF0YVRvRG9tKCk7dmFyIGU9dGhpcy5ub2RlLGk9eChlLmNsb25lTm9kZSghMCkpO3JldHVybiB0Pyh0Lm5vZGV8fHQpLmFwcGVuZENoaWxkKGkubm9kZSk6ZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShpLm5vZGUsZS5uZXh0U2libGluZyksaX19fSksYS5leHRlbmQoYS5FbGVtZW50LHt9KSxhLkdyYWRpZW50PWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsYS5jcmVhdGUodCtcIkdyYWRpZW50XCIpKSx0aGlzLnR5cGU9dH0saW5oZXJpdDphLkNvbnRhaW5lcixleHRlbmQ6e2F0OmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5wdXQobmV3IGEuU3RvcCkudXBkYXRlKHQsZSxpKX0sdXBkYXRlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsZWFyKCksXCJmdW5jdGlvblwiPT10eXBlb2YgdCYmdC5jYWxsKHRoaXMsdGhpcyksdGhpc30sZmlsbDpmdW5jdGlvbigpe3JldHVyblwidXJsKCNcIit0aGlzLmlkKCkrXCIpXCJ9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsbCgpfSxhdHRyOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm5cInRyYW5zZm9ybVwiPT10JiYodD1cImdyYWRpZW50VHJhbnNmb3JtXCIpLGEuQ29udGFpbmVyLnByb3RvdHlwZS5hdHRyLmNhbGwodGhpcyx0LGUsaSl9fSxjb25zdHJ1Y3Q6e2dyYWRpZW50OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuZGVmcygpLmdyYWRpZW50KHQsZSl9fX0pLGEuZXh0ZW5kKGEuR3JhZGllbnQsYS5GWCx7ZnJvbTpmdW5jdGlvbih0LGUpe3JldHVyblwicmFkaWFsXCI9PSh0aGlzLl90YXJnZXR8fHRoaXMpLnR5cGU/dGhpcy5hdHRyKHtmeDpuZXcgYS5OdW1iZXIodCksZnk6bmV3IGEuTnVtYmVyKGUpfSk6dGhpcy5hdHRyKHt4MTpuZXcgYS5OdW1iZXIodCkseTE6bmV3IGEuTnVtYmVyKGUpfSl9LHRvOmZ1bmN0aW9uKHQsZSl7cmV0dXJuXCJyYWRpYWxcIj09KHRoaXMuX3RhcmdldHx8dGhpcykudHlwZT90aGlzLmF0dHIoe2N4Om5ldyBhLk51bWJlcih0KSxjeTpuZXcgYS5OdW1iZXIoZSl9KTp0aGlzLmF0dHIoe3gyOm5ldyBhLk51bWJlcih0KSx5MjpuZXcgYS5OdW1iZXIoZSl9KX19KSxhLmV4dGVuZChhLkRlZnMse2dyYWRpZW50OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucHV0KG5ldyBhLkdyYWRpZW50KHQpKS51cGRhdGUoZSl9fSksYS5TdG9wPWEuaW52ZW50KHtjcmVhdGU6XCJzdG9wXCIsaW5oZXJpdDphLkVsZW1lbnQsZXh0ZW5kOnt1cGRhdGU6ZnVuY3Rpb24odCl7cmV0dXJuKFwibnVtYmVyXCI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2YgYS5OdW1iZXIpJiYodD17b2Zmc2V0OmFyZ3VtZW50c1swXSxjb2xvcjphcmd1bWVudHNbMV0sb3BhY2l0eTphcmd1bWVudHNbMl19KSxudWxsIT10Lm9wYWNpdHkmJnRoaXMuYXR0cihcInN0b3Atb3BhY2l0eVwiLHQub3BhY2l0eSksbnVsbCE9dC5jb2xvciYmdGhpcy5hdHRyKFwic3RvcC1jb2xvclwiLHQuY29sb3IpLG51bGwhPXQub2Zmc2V0JiZ0aGlzLmF0dHIoXCJvZmZzZXRcIixuZXcgYS5OdW1iZXIodC5vZmZzZXQpKSx0aGlzfX19KSxhLlBhdHRlcm49YS5pbnZlbnQoe2NyZWF0ZTpcInBhdHRlcm5cIixpbmhlcml0OmEuQ29udGFpbmVyLGV4dGVuZDp7ZmlsbDpmdW5jdGlvbigpe3JldHVyblwidXJsKCNcIit0aGlzLmlkKCkrXCIpXCJ9LHVwZGF0ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbGVhcigpLFwiZnVuY3Rpb25cIj09dHlwZW9mIHQmJnQuY2FsbCh0aGlzLHRoaXMpLHRoaXN9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsbCgpfSxhdHRyOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm5cInRyYW5zZm9ybVwiPT10JiYodD1cInBhdHRlcm5UcmFuc2Zvcm1cIiksYS5Db250YWluZXIucHJvdG90eXBlLmF0dHIuY2FsbCh0aGlzLHQsZSxpKX19LGNvbnN0cnVjdDp7cGF0dGVybjpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMuZGVmcygpLnBhdHRlcm4odCxlLGkpfX19KSxhLmV4dGVuZChhLkRlZnMse3BhdHRlcm46ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLnB1dChuZXcgYS5QYXR0ZXJuKS51cGRhdGUoaSkuYXR0cih7eDowLHk6MCx3aWR0aDp0LGhlaWdodDplLHBhdHRlcm5Vbml0czpcInVzZXJTcGFjZU9uVXNlXCJ9KX19KSxhLlNoYXBlPWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsdCl9LGluaGVyaXQ6YS5FbGVtZW50fSksYS5TeW1ib2w9YS5pbnZlbnQoe2NyZWF0ZTpcInN5bWJvbFwiLGluaGVyaXQ6YS5Db250YWluZXIsY29uc3RydWN0OntzeW1ib2w6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXQobmV3IGEuU3ltYm9sKX19fSksYS5Vc2U9YS5pbnZlbnQoe2NyZWF0ZTpcInVzZVwiLGluaGVyaXQ6YS5TaGFwZSxleHRlbmQ6e2VsZW1lbnQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5hdHRyKFwiaHJlZlwiLChlfHxcIlwiKStcIiNcIit0LGEueGxpbmspfX0sY29uc3RydWN0Ont1c2U6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wdXQobmV3IGEuVXNlKS5lbGVtZW50KHQsZSl9fX0pLGEuUmVjdD1hLmludmVudCh7Y3JlYXRlOlwicmVjdFwiLGluaGVyaXQ6YS5TaGFwZSxjb25zdHJ1Y3Q6e3JlY3Q6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wdXQobmV3IGEuUmVjdCkuc2l6ZSh0LGUpfX19KSxhLkNpcmNsZT1hLmludmVudCh7Y3JlYXRlOlwiY2lyY2xlXCIsaW5oZXJpdDphLlNoYXBlLGNvbnN0cnVjdDp7Y2lyY2xlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnB1dChuZXcgYS5DaXJjbGUpLnJ4KG5ldyBhLk51bWJlcih0KS5kaXZpZGUoMikpLm1vdmUoMCwwKX19fSksYS5leHRlbmQoYS5DaXJjbGUsYS5GWCx7cng6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXR0cihcInJcIix0KX0scnk6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucngodCl9fSksYS5FbGxpcHNlPWEuaW52ZW50KHtjcmVhdGU6XCJlbGxpcHNlXCIsaW5oZXJpdDphLlNoYXBlLGNvbnN0cnVjdDp7ZWxsaXBzZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnB1dChuZXcgYS5FbGxpcHNlKS5zaXplKHQsZSkubW92ZSgwLDApfX19KSxhLmV4dGVuZChhLkVsbGlwc2UsYS5SZWN0LGEuRlgse3J4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJyeFwiLHQpfSxyeTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hdHRyKFwicnlcIix0KX19KSxhLmV4dGVuZChhLkNpcmNsZSxhLkVsbGlwc2Use3g6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5jeCgpLXRoaXMucngoKTp0aGlzLmN4KHQrdGhpcy5yeCgpKX0seTpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLmN5KCktdGhpcy5yeSgpOnRoaXMuY3kodCt0aGlzLnJ5KCkpfSxjeDpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLmF0dHIoXCJjeFwiKTp0aGlzLmF0dHIoXCJjeFwiLHQpfSxjeTpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLmF0dHIoXCJjeVwiKTp0aGlzLmF0dHIoXCJjeVwiLHQpfSx3aWR0aDpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD8yKnRoaXMucngoKTp0aGlzLnJ4KG5ldyBhLk51bWJlcih0KS5kaXZpZGUoMikpfSxoZWlnaHQ6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/Mip0aGlzLnJ5KCk6dGhpcy5yeShuZXcgYS5OdW1iZXIodCkuZGl2aWRlKDIpKX0sc2l6ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXUodGhpcyx0LGUpO3JldHVybiB0aGlzLnJ4KG5ldyBhLk51bWJlcihpLndpZHRoKS5kaXZpZGUoMikpLnJ5KG5ldyBhLk51bWJlcihpLmhlaWdodCkuZGl2aWRlKDIpKX19KSxhLkxpbmU9YS5pbnZlbnQoe2NyZWF0ZTpcImxpbmVcIixpbmhlcml0OmEuU2hhcGUsZXh0ZW5kOnthcnJheTpmdW5jdGlvbigpe3JldHVybiBuZXcgYS5Qb2ludEFycmF5KFtbdGhpcy5hdHRyKFwieDFcIiksdGhpcy5hdHRyKFwieTFcIildLFt0aGlzLmF0dHIoXCJ4MlwiKSx0aGlzLmF0dHIoXCJ5MlwiKV1dKX0scGxvdDpmdW5jdGlvbih0LGUsaSxzKXtyZXR1cm4gbnVsbD09dD90aGlzLmFycmF5KCk6KHQ9dm9pZCAwIT09ZT97eDE6dCx5MTplLHgyOmkseTI6c306bmV3IGEuUG9pbnRBcnJheSh0KS50b0xpbmUoKSx0aGlzLmF0dHIodCkpfSxtb3ZlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuYXR0cih0aGlzLmFycmF5KCkubW92ZSh0LGUpLnRvTGluZSgpKX0sc2l6ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXUodGhpcyx0LGUpO3JldHVybiB0aGlzLmF0dHIodGhpcy5hcnJheSgpLnNpemUoaS53aWR0aCxpLmhlaWdodCkudG9MaW5lKCkpfX0sY29uc3RydWN0OntsaW5lOmZ1bmN0aW9uKHQsZSxpLHMpe3JldHVybiBhLkxpbmUucHJvdG90eXBlLnBsb3QuYXBwbHkodGhpcy5wdXQobmV3IGEuTGluZSksbnVsbCE9dD9bdCxlLGksc106WzAsMCwwLDBdKX19fSksYS5Qb2x5bGluZT1hLmludmVudCh7Y3JlYXRlOlwicG9seWxpbmVcIixpbmhlcml0OmEuU2hhcGUsY29uc3RydWN0Ontwb2x5bGluZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wdXQobmV3IGEuUG9seWxpbmUpLnBsb3QodHx8bmV3IGEuUG9pbnRBcnJheSl9fX0pLGEuUG9seWdvbj1hLmludmVudCh7Y3JlYXRlOlwicG9seWdvblwiLGluaGVyaXQ6YS5TaGFwZSxjb25zdHJ1Y3Q6e3BvbHlnb246ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucHV0KG5ldyBhLlBvbHlnb24pLnBsb3QodHx8bmV3IGEuUG9pbnRBcnJheSl9fX0pLGEuZXh0ZW5kKGEuUG9seWxpbmUsYS5Qb2x5Z29uLHthcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcnJheXx8KHRoaXMuX2FycmF5PW5ldyBhLlBvaW50QXJyYXkodGhpcy5hdHRyKFwicG9pbnRzXCIpKSl9LHBsb3Q6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5hcnJheSgpOnRoaXMuY2xlYXIoKS5hdHRyKFwicG9pbnRzXCIsXCJzdHJpbmdcIj09dHlwZW9mIHQ/dDp0aGlzLl9hcnJheT1uZXcgYS5Qb2ludEFycmF5KHQpKX0sY2xlYXI6ZnVuY3Rpb24oKXtyZXR1cm4gZGVsZXRlIHRoaXMuX2FycmF5LHRoaXN9LG1vdmU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5hdHRyKFwicG9pbnRzXCIsdGhpcy5hcnJheSgpLm1vdmUodCxlKSl9LHNpemU6ZnVuY3Rpb24odCxlKXt2YXIgaT11KHRoaXMsdCxlKTtyZXR1cm4gdGhpcy5hdHRyKFwicG9pbnRzXCIsdGhpcy5hcnJheSgpLnNpemUoaS53aWR0aCxpLmhlaWdodCkpfX0pLGEuZXh0ZW5kKGEuTGluZSxhLlBvbHlsaW5lLGEuUG9seWdvbix7bW9ycGhBcnJheTphLlBvaW50QXJyYXkseDpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLmJib3goKS54OnRoaXMubW92ZSh0LHRoaXMuYmJveCgpLnkpfSx5OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuYmJveCgpLnk6dGhpcy5tb3ZlKHRoaXMuYmJveCgpLngsdCl9LHdpZHRoOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuYmJveCgpO3JldHVybiBudWxsPT10P2Uud2lkdGg6dGhpcy5zaXplKHQsZS5oZWlnaHQpfSxoZWlnaHQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5iYm94KCk7cmV0dXJuIG51bGw9PXQ/ZS5oZWlnaHQ6dGhpcy5zaXplKGUud2lkdGgsdCl9fSksYS5QYXRoPWEuaW52ZW50KHtjcmVhdGU6XCJwYXRoXCIsaW5oZXJpdDphLlNoYXBlLGV4dGVuZDp7bW9ycGhBcnJheTphLlBhdGhBcnJheSxhcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcnJheXx8KHRoaXMuX2FycmF5PW5ldyBhLlBhdGhBcnJheSh0aGlzLmF0dHIoXCJkXCIpKSl9LHBsb3Q6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5hcnJheSgpOnRoaXMuY2xlYXIoKS5hdHRyKFwiZFwiLFwic3RyaW5nXCI9PXR5cGVvZiB0P3Q6dGhpcy5fYXJyYXk9bmV3IGEuUGF0aEFycmF5KHQpKX0sY2xlYXI6ZnVuY3Rpb24oKXtyZXR1cm4gZGVsZXRlIHRoaXMuX2FycmF5LHRoaXN9fSxjb25zdHJ1Y3Q6e3BhdGg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucHV0KG5ldyBhLlBhdGgpLnBsb3QodHx8bmV3IGEuUGF0aEFycmF5KX19fSksYS5JbWFnZT1hLmludmVudCh7Y3JlYXRlOlwiaW1hZ2VcIixpbmhlcml0OmEuU2hhcGUsZXh0ZW5kOntsb2FkOmZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiB0aGlzO3ZhciBpPXRoaXMscz1uZXcgdC5JbWFnZTtyZXR1cm4gYS5vbihzLFwibG9hZFwiLChmdW5jdGlvbigpe2Eub2ZmKHMpO3ZhciB0PWkucGFyZW50KGEuUGF0dGVybik7bnVsbCE9PXQmJigwPT1pLndpZHRoKCkmJjA9PWkuaGVpZ2h0KCkmJmkuc2l6ZShzLndpZHRoLHMuaGVpZ2h0KSx0JiYwPT10LndpZHRoKCkmJjA9PXQuaGVpZ2h0KCkmJnQuc2l6ZShpLndpZHRoKCksaS5oZWlnaHQoKSksXCJmdW5jdGlvblwiPT10eXBlb2YgaS5fbG9hZGVkJiZpLl9sb2FkZWQuY2FsbChpLHt3aWR0aDpzLndpZHRoLGhlaWdodDpzLmhlaWdodCxyYXRpbzpzLndpZHRoL3MuaGVpZ2h0LHVybDplfSkpfSkpLGEub24ocyxcImVycm9yXCIsKGZ1bmN0aW9uKHQpe2Eub2ZmKHMpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGkuX2Vycm9yJiZpLl9lcnJvci5jYWxsKGksdCl9KSksdGhpcy5hdHRyKFwiaHJlZlwiLHMuc3JjPXRoaXMuc3JjPWUsYS54bGluayl9LGxvYWRlZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbG9hZGVkPXQsdGhpc30sZXJyb3I6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2Vycm9yPXQsdGhpc319LGNvbnN0cnVjdDp7aW1hZ2U6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLnB1dChuZXcgYS5JbWFnZSkubG9hZCh0KS5zaXplKGV8fDAsaXx8ZXx8MCl9fX0pLGEuVGV4dD1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsYS5jcmVhdGUoXCJ0ZXh0XCIpKSx0aGlzLmRvbS5sZWFkaW5nPW5ldyBhLk51bWJlcigxLjMpLHRoaXMuX3JlYnVpbGQ9ITAsdGhpcy5fYnVpbGQ9ITEsdGhpcy5hdHRyKFwiZm9udC1mYW1pbHlcIixhLmRlZmF1bHRzLmF0dHJzW1wiZm9udC1mYW1pbHlcIl0pfSxpbmhlcml0OmEuU2hhcGUsZXh0ZW5kOnt4OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuYXR0cihcInhcIik6dGhpcy5hdHRyKFwieFwiLHQpfSx0ZXh0OmZ1bmN0aW9uKHQpe2lmKHZvaWQgMD09PXQpe3Q9XCJcIjtmb3IodmFyIGU9dGhpcy5ub2RlLmNoaWxkTm9kZXMsaT0wLHM9ZS5sZW5ndGg7aTxzOysraSkwIT1pJiYzIT1lW2ldLm5vZGVUeXBlJiYxPT1hLmFkb3B0KGVbaV0pLmRvbS5uZXdMaW5lZCYmKHQrPVwiXFxuXCIpLHQrPWVbaV0udGV4dENvbnRlbnQ7cmV0dXJuIHR9aWYodGhpcy5jbGVhcigpLmJ1aWxkKCEwKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0KXQuY2FsbCh0aGlzLHRoaXMpO2Vsc2V7aT0wO2Zvcih2YXIgcj0odD10LnNwbGl0KFwiXFxuXCIpKS5sZW5ndGg7aTxyO2krKyl0aGlzLnRzcGFuKHRbaV0pLm5ld0xpbmUoKX1yZXR1cm4gdGhpcy5idWlsZCghMSkucmVidWlsZCgpfSxzaXplOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJmb250LXNpemVcIix0KS5yZWJ1aWxkKCl9LGxlYWRpbmc6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5kb20ubGVhZGluZzoodGhpcy5kb20ubGVhZGluZz1uZXcgYS5OdW1iZXIodCksdGhpcy5yZWJ1aWxkKCkpfSxsaW5lczpmdW5jdGlvbigpe3ZhciB0PSh0aGlzLnRleHRQYXRoJiZ0aGlzLnRleHRQYXRoKCl8fHRoaXMpLm5vZGUsZT1hLnV0aWxzLm1hcChhLnV0aWxzLmZpbHRlclNWR0VsZW1lbnRzKHQuY2hpbGROb2RlcyksKGZ1bmN0aW9uKHQpe3JldHVybiBhLmFkb3B0KHQpfSkpO3JldHVybiBuZXcgYS5TZXQoZSl9LHJlYnVpbGQ6ZnVuY3Rpb24odCl7aWYoXCJib29sZWFuXCI9PXR5cGVvZiB0JiYodGhpcy5fcmVidWlsZD10KSx0aGlzLl9yZWJ1aWxkKXt2YXIgZT10aGlzLGk9MCxzPXRoaXMuZG9tLmxlYWRpbmcqbmV3IGEuTnVtYmVyKHRoaXMuYXR0cihcImZvbnQtc2l6ZVwiKSk7dGhpcy5saW5lcygpLmVhY2goKGZ1bmN0aW9uKCl7dGhpcy5kb20ubmV3TGluZWQmJihlLnRleHRQYXRoKCl8fHRoaXMuYXR0cihcInhcIixlLmF0dHIoXCJ4XCIpKSxcIlxcblwiPT10aGlzLnRleHQoKT9pKz1zOih0aGlzLmF0dHIoXCJkeVwiLHMraSksaT0wKSl9KSksdGhpcy5maXJlKFwicmVidWlsZFwiKX1yZXR1cm4gdGhpc30sYnVpbGQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2J1aWxkPSEhdCx0aGlzfSxzZXREYXRhOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRvbT10LHRoaXMuZG9tLmxlYWRpbmc9bmV3IGEuTnVtYmVyKHQubGVhZGluZ3x8MS4zKSx0aGlzfX0sY29uc3RydWN0Ont0ZXh0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnB1dChuZXcgYS5UZXh0KS50ZXh0KHQpfSxwbGFpbjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wdXQobmV3IGEuVGV4dCkucGxhaW4odCl9fX0pLGEuVHNwYW49YS5pbnZlbnQoe2NyZWF0ZTpcInRzcGFuXCIsaW5oZXJpdDphLlNoYXBlLGV4dGVuZDp7dGV4dDpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLm5vZGUudGV4dENvbnRlbnQrKHRoaXMuZG9tLm5ld0xpbmVkP1wiXFxuXCI6XCJcIik6KFwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/dC5jYWxsKHRoaXMsdGhpcyk6dGhpcy5wbGFpbih0KSx0aGlzKX0sZHg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXR0cihcImR4XCIsdCl9LGR5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJkeVwiLHQpfSxuZXdMaW5lOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5wYXJlbnQoYS5UZXh0KTtyZXR1cm4gdGhpcy5kb20ubmV3TGluZWQ9ITAsdGhpcy5keSh0LmRvbS5sZWFkaW5nKnQuYXR0cihcImZvbnQtc2l6ZVwiKSkuYXR0cihcInhcIix0LngoKSl9fX0pLGEuZXh0ZW5kKGEuVGV4dCxhLlRzcGFuLHtwbGFpbjpmdW5jdGlvbih0KXtyZXR1cm4hMT09PXRoaXMuX2J1aWxkJiZ0aGlzLmNsZWFyKCksdGhpcy5ub2RlLmFwcGVuZENoaWxkKGUuY3JlYXRlVGV4dE5vZGUodCkpLHRoaXN9LHRzcGFuOmZ1bmN0aW9uKHQpe3ZhciBlPSh0aGlzLnRleHRQYXRoJiZ0aGlzLnRleHRQYXRoKCl8fHRoaXMpLm5vZGUsaT1uZXcgYS5Uc3BhbjtyZXR1cm4hMT09PXRoaXMuX2J1aWxkJiZ0aGlzLmNsZWFyKCksZS5hcHBlbmRDaGlsZChpLm5vZGUpLGkudGV4dCh0KX0sY2xlYXI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9KHRoaXMudGV4dFBhdGgmJnRoaXMudGV4dFBhdGgoKXx8dGhpcykubm9kZTt0Lmhhc0NoaWxkTm9kZXMoKTspdC5yZW1vdmVDaGlsZCh0Lmxhc3RDaGlsZCk7cmV0dXJuIHRoaXN9LGxlbmd0aDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGUuZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoKCl9fSksYS5UZXh0UGF0aD1hLmludmVudCh7Y3JlYXRlOlwidGV4dFBhdGhcIixpbmhlcml0OmEuUGFyZW50LHBhcmVudDphLlRleHQsY29uc3RydWN0Onttb3JwaEFycmF5OmEuUGF0aEFycmF5LGFycmF5OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy50cmFjaygpO3JldHVybiB0P3QuYXJyYXkoKTpudWxsfSxwbG90OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudHJhY2soKSxpPW51bGw7cmV0dXJuIGUmJihpPWUucGxvdCh0KSksbnVsbD09dD9pOnRoaXN9LHRyYWNrOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy50ZXh0UGF0aCgpO2lmKHQpcmV0dXJuIHQucmVmZXJlbmNlKFwiaHJlZlwiKX0sdGV4dFBhdGg6ZnVuY3Rpb24oKXtpZih0aGlzLm5vZGUuZmlyc3RDaGlsZCYmXCJ0ZXh0UGF0aFwiPT10aGlzLm5vZGUuZmlyc3RDaGlsZC5ub2RlTmFtZSlyZXR1cm4gYS5hZG9wdCh0aGlzLm5vZGUuZmlyc3RDaGlsZCl9fX0pLGEuTmVzdGVkPWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxhLmNyZWF0ZShcInN2Z1wiKSksdGhpcy5zdHlsZShcIm92ZXJmbG93XCIsXCJ2aXNpYmxlXCIpfSxpbmhlcml0OmEuQ29udGFpbmVyLGNvbnN0cnVjdDp7bmVzdGVkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHV0KG5ldyBhLk5lc3RlZCl9fX0pO3ZhciBsPXtzdHJva2U6W1wiY29sb3JcIixcIndpZHRoXCIsXCJvcGFjaXR5XCIsXCJsaW5lY2FwXCIsXCJsaW5lam9pblwiLFwibWl0ZXJsaW1pdFwiLFwiZGFzaGFycmF5XCIsXCJkYXNob2Zmc2V0XCJdLGZpbGw6W1wiY29sb3JcIixcIm9wYWNpdHlcIixcInJ1bGVcIl0scHJlZml4OmZ1bmN0aW9uKHQsZSl7cmV0dXJuXCJjb2xvclwiPT1lP3Q6dCtcIi1cIitlfX07ZnVuY3Rpb24gaCh0LGUsaSxzKXtyZXR1cm4gaStzLnJlcGxhY2UoYS5yZWdleC5kb3RzLFwiIC5cIil9ZnVuY3Rpb24gYyh0KXtyZXR1cm4gdC50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLy0oLikvZywoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS50b1VwcGVyQ2FzZSgpfSkpfWZ1bmN0aW9uIGQodCl7cmV0dXJuIHQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrdC5zbGljZSgxKX1mdW5jdGlvbiBnKHQpe3ZhciBlPXQudG9TdHJpbmcoMTYpO3JldHVybiAxPT1lLmxlbmd0aD9cIjBcIitlOmV9ZnVuY3Rpb24gdSh0LGUsaSl7aWYobnVsbD09ZXx8bnVsbD09aSl7dmFyIGE9dC5iYm94KCk7bnVsbD09ZT9lPWEud2lkdGgvYS5oZWlnaHQqaTpudWxsPT1pJiYoaT1hLmhlaWdodC9hLndpZHRoKmUpfXJldHVybnt3aWR0aDplLGhlaWdodDppfX1mdW5jdGlvbiBwKHQsZSxpKXtyZXR1cm57eDplKnQuYStpKnQuYyswLHk6ZSp0LmIraSp0LmQrMH19ZnVuY3Rpb24gZih0KXtyZXR1cm57YTp0WzBdLGI6dFsxXSxjOnRbMl0sZDp0WzNdLGU6dFs0XSxmOnRbNV19fWZ1bmN0aW9uIHgoZSl7Zm9yKHZhciBpPWUuY2hpbGROb2Rlcy5sZW5ndGgtMTtpPj0wO2ktLSllLmNoaWxkTm9kZXNbaV1pbnN0YW5jZW9mIHQuU1ZHRWxlbWVudCYmeChlLmNoaWxkTm9kZXNbaV0pO3JldHVybiBhLmFkb3B0KGUpLmlkKGEuZWlkKGUubm9kZU5hbWUpKX1mdW5jdGlvbiBiKHQpe3JldHVybiBNYXRoLmFicyh0KT4xZS0zNz90OjB9W1wiZmlsbFwiLFwic3Ryb2tlXCJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPXt9O2VbdF09ZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSlyZXR1cm4gdGhpcztpZihcInN0cmluZ1wiPT10eXBlb2YgZXx8YS5Db2xvci5pc1JnYihlKXx8ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgZS5maWxsKXRoaXMuYXR0cih0LGUpO2Vsc2UgZm9yKHZhciBpPWxbdF0ubGVuZ3RoLTE7aT49MDtpLS0pbnVsbCE9ZVtsW3RdW2ldXSYmdGhpcy5hdHRyKGwucHJlZml4KHQsbFt0XVtpXSksZVtsW3RdW2ldXSk7cmV0dXJuIHRoaXN9LGEuZXh0ZW5kKGEuRWxlbWVudCxhLkZYLGUpfSkpLGEuZXh0ZW5kKGEuRWxlbWVudCxhLkZYLHt0cmFuc2xhdGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy50cmFuc2Zvcm0oe3g6dCx5OmV9KX0sbWF0cml4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJ0cmFuc2Zvcm1cIixuZXcgYS5NYXRyaXgoNj09YXJndW1lbnRzLmxlbmd0aD9bXS5zbGljZS5jYWxsKGFyZ3VtZW50cyk6dCkpfSxvcGFjaXR5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJvcGFjaXR5XCIsdCl9LGR4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLngobmV3IGEuTnVtYmVyKHQpLnBsdXModGhpcyBpbnN0YW5jZW9mIGEuRlg/MDp0aGlzLngoKSksITApfSxkeTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy55KG5ldyBhLk51bWJlcih0KS5wbHVzKHRoaXMgaW5zdGFuY2VvZiBhLkZYPzA6dGhpcy55KCkpLCEwKX19KSxhLmV4dGVuZChhLlBhdGgse2xlbmd0aDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGUuZ2V0VG90YWxMZW5ndGgoKX0scG9pbnRBdDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5ub2RlLmdldFBvaW50QXRMZW5ndGgodCl9fSksYS5TZXQ9YS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbih0KXtBcnJheS5pc0FycmF5KHQpP3RoaXMubWVtYmVycz10OnRoaXMuY2xlYXIoKX0sZXh0ZW5kOnthZGQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10uc2xpY2UuY2FsbChhcmd1bWVudHMpLGU9MCxpPXQubGVuZ3RoO2U8aTtlKyspdGhpcy5tZW1iZXJzLnB1c2godFtlXSk7cmV0dXJuIHRoaXN9LHJlbW92ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmluZGV4KHQpO3JldHVybiBlPi0xJiZ0aGlzLm1lbWJlcnMuc3BsaWNlKGUsMSksdGhpc30sZWFjaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9MCxpPXRoaXMubWVtYmVycy5sZW5ndGg7ZTxpO2UrKyl0LmFwcGx5KHRoaXMubWVtYmVyc1tlXSxbZSx0aGlzLm1lbWJlcnNdKTtyZXR1cm4gdGhpc30sY2xlYXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tZW1iZXJzPVtdLHRoaXN9LGxlbmd0aDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1lbWJlcnMubGVuZ3RofSxoYXM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaW5kZXgodCk+PTB9LGluZGV4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm1lbWJlcnMuaW5kZXhPZih0KX0sZ2V0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm1lbWJlcnNbdF19LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0KDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0KHRoaXMubWVtYmVycy5sZW5ndGgtMSl9LHZhbHVlT2Y6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tZW1iZXJzfX0sY29uc3RydWN0OntzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBhLlNldCh0KX19fSksYS5GWC5TZXQ9YS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbih0KXt0aGlzLnNldD10fX0pLGEuU2V0LmluaGVyaXQ9ZnVuY3Rpb24oKXt2YXIgdD1bXTtmb3IodmFyIGUgaW4gYS5TaGFwZS5wcm90b3R5cGUpXCJmdW5jdGlvblwiPT10eXBlb2YgYS5TaGFwZS5wcm90b3R5cGVbZV0mJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGEuU2V0LnByb3RvdHlwZVtlXSYmdC5wdXNoKGUpO2Zvcih2YXIgZSBpbiB0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2EuU2V0LnByb3RvdHlwZVt0XT1mdW5jdGlvbigpe2Zvcih2YXIgZT0wLGk9dGhpcy5tZW1iZXJzLmxlbmd0aDtlPGk7ZSsrKXRoaXMubWVtYmVyc1tlXSYmXCJmdW5jdGlvblwiPT10eXBlb2YgdGhpcy5tZW1iZXJzW2VdW3RdJiZ0aGlzLm1lbWJlcnNbZV1bdF0uYXBwbHkodGhpcy5tZW1iZXJzW2VdLGFyZ3VtZW50cyk7cmV0dXJuXCJhbmltYXRlXCI9PXQ/dGhpcy5meHx8KHRoaXMuZng9bmV3IGEuRlguU2V0KHRoaXMpKTp0aGlzfX0pKSx0PVtdLGEuRlgucHJvdG90eXBlKVwiZnVuY3Rpb25cIj09dHlwZW9mIGEuRlgucHJvdG90eXBlW2VdJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBhLkZYLlNldC5wcm90b3R5cGVbZV0mJnQucHVzaChlKTt0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2EuRlguU2V0LnByb3RvdHlwZVt0XT1mdW5jdGlvbigpe2Zvcih2YXIgZT0wLGk9dGhpcy5zZXQubWVtYmVycy5sZW5ndGg7ZTxpO2UrKyl0aGlzLnNldC5tZW1iZXJzW2VdLmZ4W3RdLmFwcGx5KHRoaXMuc2V0Lm1lbWJlcnNbZV0uZngsYXJndW1lbnRzKTtyZXR1cm4gdGhpc319KSl9LGEuZXh0ZW5kKGEuRWxlbWVudCx7fSksYS5leHRlbmQoYS5FbGVtZW50LHtyZW1lbWJlcjpmdW5jdGlvbih0LGUpe2lmKFwib2JqZWN0XCI9PT1pKGFyZ3VtZW50c1swXSkpZm9yKHZhciBhIGluIHQpdGhpcy5yZW1lbWJlcihhLHRbYV0pO2Vsc2V7aWYoMT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdGhpcy5tZW1vcnkoKVt0XTt0aGlzLm1lbW9yeSgpW3RdPWV9cmV0dXJuIHRoaXN9LGZvcmdldDpmdW5jdGlvbigpe2lmKDA9PWFyZ3VtZW50cy5sZW5ndGgpdGhpcy5fbWVtb3J5PXt9O2Vsc2UgZm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgtMTt0Pj0wO3QtLSlkZWxldGUgdGhpcy5tZW1vcnkoKVthcmd1bWVudHNbdF1dO3JldHVybiB0aGlzfSxtZW1vcnk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWVtb3J5fHwodGhpcy5fbWVtb3J5PXt9KX19KSxhLmdldD1mdW5jdGlvbih0KXt2YXIgaT1lLmdldEVsZW1lbnRCeUlkKGZ1bmN0aW9uKHQpe3ZhciBlPSh0fHxcIlwiKS50b1N0cmluZygpLm1hdGNoKGEucmVnZXgucmVmZXJlbmNlKTtpZihlKXJldHVybiBlWzFdfSh0KXx8dCk7cmV0dXJuIGEuYWRvcHQoaSl9LGEuc2VsZWN0PWZ1bmN0aW9uKHQsaSl7cmV0dXJuIG5ldyBhLlNldChhLnV0aWxzLm1hcCgoaXx8ZSkucXVlcnlTZWxlY3RvckFsbCh0KSwoZnVuY3Rpb24odCl7cmV0dXJuIGEuYWRvcHQodCl9KSkpfSxhLmV4dGVuZChhLlBhcmVudCx7c2VsZWN0OmZ1bmN0aW9uKHQpe3JldHVybiBhLnNlbGVjdCh0LHRoaXMubm9kZSl9fSk7dmFyIHY9XCJhYmNkZWZcIi5zcGxpdChcIlwiKTtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0LkN1c3RvbUV2ZW50KXt2YXIgbT1mdW5jdGlvbih0LGkpe2k9aXx8e2J1YmJsZXM6ITEsY2FuY2VsYWJsZTohMSxkZXRhaWw6dm9pZCAwfTt2YXIgYT1lLmNyZWF0ZUV2ZW50KFwiQ3VzdG9tRXZlbnRcIik7cmV0dXJuIGEuaW5pdEN1c3RvbUV2ZW50KHQsaS5idWJibGVzLGkuY2FuY2VsYWJsZSxpLmRldGFpbCksYX07bS5wcm90b3R5cGU9dC5FdmVudC5wcm90b3R5cGUsYS5DdXN0b21FdmVudD1tfWVsc2UgYS5DdXN0b21FdmVudD10LkN1c3RvbUV2ZW50O3JldHVybiBhfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKChmdW5jdGlvbigpe3JldHVybiBFdCh6dCx6dC5kb2N1bWVudCl9KSk6XCJvYmplY3RcIj09PShcInVuZGVmaW5lZFwiPT10eXBlb2YgZXhwb3J0cz9cInVuZGVmaW5lZFwiOmkoZXhwb3J0cykpJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgbW9kdWxlP21vZHVsZS5leHBvcnRzPXp0LmRvY3VtZW50P0V0KHp0LHp0LmRvY3VtZW50KTpmdW5jdGlvbih0KXtyZXR1cm4gRXQodCx0LmRvY3VtZW50KX06enQuU1ZHPUV0KHp0LHp0LmRvY3VtZW50KSxcbi8qISBzdmcuZmlsdGVyLmpzIC0gdjIuMC4yIC0gMjAxNi0wMi0yNFxuKiBodHRwczovL2dpdGh1Yi5jb20vd291dC9zdmcuZmlsdGVyLmpzXG4qIENvcHlyaWdodCAoYykgMjAxNiBXb3V0IEZpZXJlbnM7IExpY2Vuc2VkIE1JVCAqL1xuZnVuY3Rpb24oKXtTVkcuRmlsdGVyPVNWRy5pbnZlbnQoe2NyZWF0ZTpcImZpbHRlclwiLGluaGVyaXQ6U1ZHLlBhcmVudCxleHRlbmQ6e3NvdXJjZTpcIlNvdXJjZUdyYXBoaWNcIixzb3VyY2VBbHBoYTpcIlNvdXJjZUFscGhhXCIsYmFja2dyb3VuZDpcIkJhY2tncm91bmRJbWFnZVwiLGJhY2tncm91bmRBbHBoYTpcIkJhY2tncm91bmRBbHBoYVwiLGZpbGw6XCJGaWxsUGFpbnRcIixzdHJva2U6XCJTdHJva2VQYWludFwiLGF1dG9TZXRJbjohMCxwdXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5hZGQodCxlKSwhdC5hdHRyKFwiaW5cIikmJnRoaXMuYXV0b1NldEluJiZ0LmF0dHIoXCJpblwiLHRoaXMuc291cmNlKSx0LmF0dHIoXCJyZXN1bHRcIil8fHQuYXR0cihcInJlc3VsdFwiLHQpLHR9LGJsZW5kOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5CbGVuZEVmZmVjdCh0LGUsaSkpfSxjb2xvck1hdHJpeDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLkNvbG9yTWF0cml4RWZmZWN0KHQsZSkpfSxjb252b2x2ZU1hdHJpeDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5Db252b2x2ZU1hdHJpeEVmZmVjdCh0KSl9LGNvbXBvbmVudFRyYW5zZmVyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLkNvbXBvbmVudFRyYW5zZmVyRWZmZWN0KHQpKX0sY29tcG9zaXRlOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5Db21wb3NpdGVFZmZlY3QodCxlLGkpKX0sZmxvb2Q6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5GbG9vZEVmZmVjdCh0LGUpKX0sb2Zmc2V0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuT2Zmc2V0RWZmZWN0KHQsZSkpfSxpbWFnZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5JbWFnZUVmZmVjdCh0KSl9LG1lcmdlOmZ1bmN0aW9uKCl7dmFyIHQ9W3ZvaWQgMF07Zm9yKHZhciBlIGluIGFyZ3VtZW50cyl0LnB1c2goYXJndW1lbnRzW2VdKTtyZXR1cm4gdGhpcy5wdXQobmV3KFNWRy5NZXJnZUVmZmVjdC5iaW5kLmFwcGx5KFNWRy5NZXJnZUVmZmVjdCx0KSkpfSxnYXVzc2lhbkJsdXI6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5HYXVzc2lhbkJsdXJFZmZlY3QodCxlKSl9LG1vcnBob2xvZ3k6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5Nb3JwaG9sb2d5RWZmZWN0KHQsZSkpfSxkaWZmdXNlTGlnaHRpbmc6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLkRpZmZ1c2VMaWdodGluZ0VmZmVjdCh0LGUsaSkpfSxkaXNwbGFjZW1lbnRNYXA6ZnVuY3Rpb24odCxlLGksYSxzKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5EaXNwbGFjZW1lbnRNYXBFZmZlY3QodCxlLGksYSxzKSl9LHNwZWN1bGFyTGlnaHRpbmc6ZnVuY3Rpb24odCxlLGksYSl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuU3BlY3VsYXJMaWdodGluZ0VmZmVjdCh0LGUsaSxhKSl9LHRpbGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5UaWxlRWZmZWN0KX0sdHVyYnVsZW5jZTpmdW5jdGlvbih0LGUsaSxhLHMpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLlR1cmJ1bGVuY2VFZmZlY3QodCxlLGksYSxzKSl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuXCJ1cmwoI1wiK3RoaXMuYXR0cihcImlkXCIpK1wiKVwifX19KSxTVkcuZXh0ZW5kKFNWRy5EZWZzLHtmaWx0ZXI6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5wdXQobmV3IFNWRy5GaWx0ZXIpO3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHQmJnQuY2FsbChlLGUpLGV9fSksU1ZHLmV4dGVuZChTVkcuQ29udGFpbmVyLHtmaWx0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGVmcygpLmZpbHRlcih0KX19KSxTVkcuZXh0ZW5kKFNWRy5FbGVtZW50LFNWRy5HLFNWRy5OZXN0ZWQse2ZpbHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5maWx0ZXJlcj10IGluc3RhbmNlb2YgU1ZHLkVsZW1lbnQ/dDp0aGlzLmRvYygpLmZpbHRlcih0KSx0aGlzLmRvYygpJiZ0aGlzLmZpbHRlcmVyLmRvYygpIT09dGhpcy5kb2MoKSYmdGhpcy5kb2MoKS5kZWZzKCkuYWRkKHRoaXMuZmlsdGVyZXIpLHRoaXMuYXR0cihcImZpbHRlclwiLHRoaXMuZmlsdGVyZXIpLHRoaXMuZmlsdGVyZXJ9LHVuZmlsdGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmZpbHRlcmVyJiYhMD09PXQmJnRoaXMuZmlsdGVyZXIucmVtb3ZlKCksZGVsZXRlIHRoaXMuZmlsdGVyZXIsdGhpcy5hdHRyKFwiZmlsdGVyXCIsbnVsbCl9fSksU1ZHLkVmZmVjdD1TVkcuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyl9LGluaGVyaXQ6U1ZHLkVsZW1lbnQsZXh0ZW5kOntpbjpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLnNlbGVjdCgnW3Jlc3VsdD1cIicrdGhpcy5hdHRyKFwiaW5cIikrJ1wiXScpLmdldCgwKXx8dGhpcy5hdHRyKFwiaW5cIik6dGhpcy5hdHRyKFwiaW5cIix0KX0scmVzdWx0OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuYXR0cihcInJlc3VsdFwiKTp0aGlzLmF0dHIoXCJyZXN1bHRcIix0KX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZXN1bHQoKX19fSksU1ZHLlBhcmVudEVmZmVjdD1TVkcuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyl9LGluaGVyaXQ6U1ZHLlBhcmVudCxleHRlbmQ6e2luOmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuc2VsZWN0KCdbcmVzdWx0PVwiJyt0aGlzLmF0dHIoXCJpblwiKSsnXCJdJykuZ2V0KDApfHx0aGlzLmF0dHIoXCJpblwiKTp0aGlzLmF0dHIoXCJpblwiLHQpfSxyZXN1bHQ6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5hdHRyKFwicmVzdWx0XCIpOnRoaXMuYXR0cihcInJlc3VsdFwiLHQpfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJlc3VsdCgpfX19KTt2YXIgdD17YmxlbmQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5ibGVuZCh0aGlzLHQsZSl9LGNvbG9yTWF0cml4OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuY29sb3JNYXRyaXgodCxlKS5pbih0aGlzKX0sY29udm9sdmVNYXRyaXg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuY29udm9sdmVNYXRyaXgodCkuaW4odGhpcyl9LGNvbXBvbmVudFRyYW5zZmVyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLmNvbXBvbmVudFRyYW5zZmVyKHQpLmluKHRoaXMpfSxjb21wb3NpdGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5jb21wb3NpdGUodGhpcyx0LGUpfSxmbG9vZDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLmZsb29kKHQsZSl9LG9mZnNldDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLm9mZnNldCh0LGUpLmluKHRoaXMpfSxpbWFnZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5pbWFnZSh0KX0sbWVyZ2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5tZXJnZS5hcHBseSh0aGlzLnBhcmVudCgpLFt0aGlzXS5jb25jYXQoYXJndW1lbnRzKSl9LGdhdXNzaWFuQmx1cjpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLmdhdXNzaWFuQmx1cih0LGUpLmluKHRoaXMpfSxtb3JwaG9sb2d5OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkubW9ycGhvbG9neSh0LGUpLmluKHRoaXMpfSxkaWZmdXNlTGlnaHRpbmc6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLmRpZmZ1c2VMaWdodGluZyh0LGUsaSkuaW4odGhpcyl9LGRpc3BsYWNlbWVudE1hcDpmdW5jdGlvbih0LGUsaSxhKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5kaXNwbGFjZW1lbnRNYXAodGhpcyx0LGUsaSxhKX0sc3BlY3VsYXJMaWdodGluZzpmdW5jdGlvbih0LGUsaSxhKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5zcGVjdWxhckxpZ2h0aW5nKHQsZSxpLGEpLmluKHRoaXMpfSx0aWxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkudGlsZSgpLmluKHRoaXMpfSx0dXJidWxlbmNlOmZ1bmN0aW9uKHQsZSxpLGEscyl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkudHVyYnVsZW5jZSh0LGUsaSxhLHMpLmluKHRoaXMpfX07U1ZHLmV4dGVuZChTVkcuRWZmZWN0LHQpLFNWRy5leHRlbmQoU1ZHLlBhcmVudEVmZmVjdCx0KSxTVkcuQ2hpbGRFZmZlY3Q9U1ZHLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpfSxpbmhlcml0OlNWRy5FbGVtZW50LGV4dGVuZDp7aW46ZnVuY3Rpb24odCl7dGhpcy5hdHRyKFwiaW5cIix0KX19fSk7dmFyIGU9e2JsZW5kOmZ1bmN0aW9uKHQsZSxpKXt0aGlzLmF0dHIoe2luOnQsaW4yOmUsbW9kZTppfHxcIm5vcm1hbFwifSl9LGNvbG9yTWF0cml4OmZ1bmN0aW9uKHQsZSl7XCJtYXRyaXhcIj09dCYmKGU9cyhlKSksdGhpcy5hdHRyKHt0eXBlOnQsdmFsdWVzOnZvaWQgMD09PWU/bnVsbDplfSl9LGNvbnZvbHZlTWF0cml4OmZ1bmN0aW9uKHQpe3Q9cyh0KSx0aGlzLmF0dHIoe29yZGVyOk1hdGguc3FydCh0LnNwbGl0KFwiIFwiKS5sZW5ndGgpLGtlcm5lbE1hdHJpeDp0fSl9LGNvbXBvc2l0ZTpmdW5jdGlvbih0LGUsaSl7dGhpcy5hdHRyKHtpbjp0LGluMjplLG9wZXJhdG9yOml9KX0sZmxvb2Q6ZnVuY3Rpb24odCxlKXt0aGlzLmF0dHIoXCJmbG9vZC1jb2xvclwiLHQpLG51bGwhPWUmJnRoaXMuYXR0cihcImZsb29kLW9wYWNpdHlcIixlKX0sb2Zmc2V0OmZ1bmN0aW9uKHQsZSl7dGhpcy5hdHRyKHtkeDp0LGR5OmV9KX0saW1hZ2U6ZnVuY3Rpb24odCl7dGhpcy5hdHRyKFwiaHJlZlwiLHQsU1ZHLnhsaW5rKX0sZGlzcGxhY2VtZW50TWFwOmZ1bmN0aW9uKHQsZSxpLGEscyl7dGhpcy5hdHRyKHtpbjp0LGluMjplLHNjYWxlOmkseENoYW5uZWxTZWxlY3RvcjphLHlDaGFubmVsU2VsZWN0b3I6c30pfSxnYXVzc2lhbkJsdXI6ZnVuY3Rpb24odCxlKXtudWxsIT10fHxudWxsIT1lP3RoaXMuYXR0cihcInN0ZERldmlhdGlvblwiLGZ1bmN0aW9uKHQpe2lmKCFBcnJheS5pc0FycmF5KHQpKXJldHVybiB0O2Zvcih2YXIgZT0wLGk9dC5sZW5ndGgsYT1bXTtlPGk7ZSsrKWEucHVzaCh0W2VdKTtyZXR1cm4gYS5qb2luKFwiIFwiKX0oQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSkpOnRoaXMuYXR0cihcInN0ZERldmlhdGlvblwiLFwiMCAwXCIpfSxtb3JwaG9sb2d5OmZ1bmN0aW9uKHQsZSl7dGhpcy5hdHRyKHtvcGVyYXRvcjp0LHJhZGl1czplfSl9LHRpbGU6ZnVuY3Rpb24oKXt9LHR1cmJ1bGVuY2U6ZnVuY3Rpb24odCxlLGksYSxzKXt0aGlzLmF0dHIoe251bU9jdGF2ZXM6ZSxzZWVkOmksc3RpdGNoVGlsZXM6YSxiYXNlRnJlcXVlbmN5OnQsdHlwZTpzfSl9fSxpPXttZXJnZTpmdW5jdGlvbigpe3ZhciB0O2lmKGFyZ3VtZW50c1swXWluc3RhbmNlb2YgU1ZHLlNldCl7dmFyIGU9dGhpczthcmd1bWVudHNbMF0uZWFjaCgoZnVuY3Rpb24odCl7dGhpcyBpbnN0YW5jZW9mIFNWRy5NZXJnZU5vZGU/ZS5wdXQodGhpcyk6KHRoaXMgaW5zdGFuY2VvZiBTVkcuRWZmZWN0fHx0aGlzIGluc3RhbmNlb2YgU1ZHLlBhcmVudEVmZmVjdCkmJmUucHV0KG5ldyBTVkcuTWVyZ2VOb2RlKHRoaXMpKX0pKX1lbHNle3Q9QXJyYXkuaXNBcnJheShhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7Zm9yKHZhciBpPTA7aTx0Lmxlbmd0aDtpKyspdFtpXWluc3RhbmNlb2YgU1ZHLk1lcmdlTm9kZT90aGlzLnB1dCh0W2ldKTp0aGlzLnB1dChuZXcgU1ZHLk1lcmdlTm9kZSh0W2ldKSl9fSxjb21wb25lbnRUcmFuc2ZlcjpmdW5jdGlvbih0KXtpZih0aGlzLnJnYj1uZXcgU1ZHLlNldCxbXCJyXCIsXCJnXCIsXCJiXCIsXCJhXCJdLmZvckVhY2goZnVuY3Rpb24odCl7dGhpc1t0XT1uZXcoU1ZHW1wiRnVuY1wiK3QudG9VcHBlckNhc2UoKV0pKFwiaWRlbnRpdHlcIiksdGhpcy5yZ2IuYWRkKHRoaXNbdF0pLHRoaXMubm9kZS5hcHBlbmRDaGlsZCh0aGlzW3RdLm5vZGUpfS5iaW5kKHRoaXMpKSx0KWZvcih2YXIgZSBpbiB0LnJnYiYmKFtcInJcIixcImdcIixcImJcIl0uZm9yRWFjaChmdW5jdGlvbihlKXt0aGlzW2VdLmF0dHIodC5yZ2IpfS5iaW5kKHRoaXMpKSxkZWxldGUgdC5yZ2IpLHQpdGhpc1tlXS5hdHRyKHRbZV0pfSxkaWZmdXNlTGlnaHRpbmc6ZnVuY3Rpb24odCxlLGkpe3RoaXMuYXR0cih7c3VyZmFjZVNjYWxlOnQsZGlmZnVzZUNvbnN0YW50OmUsa2VybmVsVW5pdExlbmd0aDppfSl9LHNwZWN1bGFyTGlnaHRpbmc6ZnVuY3Rpb24odCxlLGksYSl7dGhpcy5hdHRyKHtzdXJmYWNlU2NhbGU6dCxkaWZmdXNlQ29uc3RhbnQ6ZSxzcGVjdWxhckV4cG9uZW50Omksa2VybmVsVW5pdExlbmd0aDphfSl9fSxhPXtkaXN0YW50TGlnaHQ6ZnVuY3Rpb24odCxlKXt0aGlzLmF0dHIoe2F6aW11dGg6dCxlbGV2YXRpb246ZX0pfSxwb2ludExpZ2h0OmZ1bmN0aW9uKHQsZSxpKXt0aGlzLmF0dHIoe3g6dCx5OmUsejppfSl9LHNwb3RMaWdodDpmdW5jdGlvbih0LGUsaSxhLHMscil7dGhpcy5hdHRyKHt4OnQseTplLHo6aSxwb2ludHNBdFg6YSxwb2ludHNBdFk6cyxwb2ludHNBdFo6cn0pfSxtZXJnZU5vZGU6ZnVuY3Rpb24odCl7dGhpcy5hdHRyKFwiaW5cIix0KX19O2Z1bmN0aW9uIHModCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCkmJih0PW5ldyBTVkcuQXJyYXkodCkpLHQudG9TdHJpbmcoKS5yZXBsYWNlKC9eXFxzKy8sXCJcIikucmVwbGFjZSgvXFxzKyQvLFwiXCIpLnJlcGxhY2UoL1xccysvZyxcIiBcIil9ZnVuY3Rpb24gcigpe3ZhciB0PWZ1bmN0aW9uKCl7fTtmb3IodmFyIGUgaW5cImZ1bmN0aW9uXCI9PXR5cGVvZiBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aC0xXSYmKHQ9YXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGgtMV0sQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKGFyZ3VtZW50cyxhcmd1bWVudHMubGVuZ3RoLTEsMSkpLGFyZ3VtZW50cylmb3IodmFyIGkgaW4gYXJndW1lbnRzW2VdKXQoYXJndW1lbnRzW2VdW2ldLGksYXJndW1lbnRzW2VdKX1bXCJyXCIsXCJnXCIsXCJiXCIsXCJhXCJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe2FbXCJGdW5jXCIrdC50b1VwcGVyQ2FzZSgpXT1mdW5jdGlvbih0KXtzd2l0Y2godGhpcy5hdHRyKFwidHlwZVwiLHQpLHQpe2Nhc2VcInRhYmxlXCI6dGhpcy5hdHRyKFwidGFibGVWYWx1ZXNcIixhcmd1bWVudHNbMV0pO2JyZWFrO2Nhc2VcImxpbmVhclwiOnRoaXMuYXR0cihcInNsb3BlXCIsYXJndW1lbnRzWzFdKSx0aGlzLmF0dHIoXCJpbnRlcmNlcHRcIixhcmd1bWVudHNbMl0pO2JyZWFrO2Nhc2VcImdhbW1hXCI6dGhpcy5hdHRyKFwiYW1wbGl0dWRlXCIsYXJndW1lbnRzWzFdKSx0aGlzLmF0dHIoXCJleHBvbmVudFwiLGFyZ3VtZW50c1syXSksdGhpcy5hdHRyKFwib2Zmc2V0XCIsYXJndW1lbnRzWzJdKX19fSkpLHIoZSwoZnVuY3Rpb24odCxlKXt2YXIgaT1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSk7U1ZHW2krXCJFZmZlY3RcIl09U1ZHLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsU1ZHLmNyZWF0ZShcImZlXCIraSkpLHQuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMucmVzdWx0KHRoaXMuYXR0cihcImlkXCIpK1wiT3V0XCIpfSxpbmhlcml0OlNWRy5FZmZlY3QsZXh0ZW5kOnt9fSl9KSkscihpLChmdW5jdGlvbih0LGUpe3ZhciBpPWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKTtTVkdbaStcIkVmZmVjdFwiXT1TVkcuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxTVkcuY3JlYXRlKFwiZmVcIitpKSksdC5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5yZXN1bHQodGhpcy5hdHRyKFwiaWRcIikrXCJPdXRcIil9LGluaGVyaXQ6U1ZHLlBhcmVudEVmZmVjdCxleHRlbmQ6e319KX0pKSxyKGEsKGZ1bmN0aW9uKHQsZSl7dmFyIGk9ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStlLnNsaWNlKDEpO1NWR1tpXT1TVkcuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxTVkcuY3JlYXRlKFwiZmVcIitpKSksdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGluaGVyaXQ6U1ZHLkNoaWxkRWZmZWN0LGV4dGVuZDp7fX0pfSkpLFNWRy5leHRlbmQoU1ZHLk1lcmdlRWZmZWN0LHtpbjpmdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIFNWRy5NZXJnZU5vZGU/dGhpcy5hZGQodCwwKTp0aGlzLmFkZChuZXcgU1ZHLk1lcmdlTm9kZSh0KSwwKSx0aGlzfX0pLFNWRy5leHRlbmQoU1ZHLkNvbXBvc2l0ZUVmZmVjdCxTVkcuQmxlbmRFZmZlY3QsU1ZHLkRpc3BsYWNlbWVudE1hcEVmZmVjdCx7aW4yOmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuc2VsZWN0KCdbcmVzdWx0PVwiJyt0aGlzLmF0dHIoXCJpbjJcIikrJ1wiXScpLmdldCgwKXx8dGhpcy5hdHRyKFwiaW4yXCIpOnRoaXMuYXR0cihcImluMlwiLHQpfX0pLFNWRy5maWx0ZXI9e3NlcGlhdG9uZTpbLjM0MywuNjY5LC4xMTksMCwwLC4yNDksLjYyNiwuMTMsMCwwLC4xNzIsLjMzNCwuMTExLDAsMCwwLDAsMCwxLDBdfX0uY2FsbCh2b2lkIDApLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LHMscixvLG4sbCxoKXtmb3IodmFyIGM9dC5zbGljZShzLHJ8fGgpLGQ9by5zbGljZShuLGx8fGgpLGc9MCx1PXtwb3M6WzAsMF0sc3RhcnQ6WzAsMF19LHA9e3BvczpbMCwwXSxzdGFydDpbMCwwXX07Oyl7aWYoY1tnXT1lLmNhbGwodSxjW2ddKSxkW2ddPWUuY2FsbChwLGRbZ10pLGNbZ11bMF0hPWRbZ11bMF18fFwiTVwiPT1jW2ddWzBdfHxcIkFcIj09Y1tnXVswXSYmKGNbZ11bNF0hPWRbZ11bNF18fGNbZ11bNV0hPWRbZ11bNV0pPyhBcnJheS5wcm90b3R5cGUuc3BsaWNlLmFwcGx5KGMsW2csMV0uY29uY2F0KGEuY2FsbCh1LGNbZ10pKSksQXJyYXkucHJvdG90eXBlLnNwbGljZS5hcHBseShkLFtnLDFdLmNvbmNhdChhLmNhbGwocCxkW2ddKSkpKTooY1tnXT1pLmNhbGwodSxjW2ddKSxkW2ddPWkuY2FsbChwLGRbZ10pKSwrK2c9PWMubGVuZ3RoJiZnPT1kLmxlbmd0aClicmVhaztnPT1jLmxlbmd0aCYmYy5wdXNoKFtcIkNcIix1LnBvc1swXSx1LnBvc1sxXSx1LnBvc1swXSx1LnBvc1sxXSx1LnBvc1swXSx1LnBvc1sxXV0pLGc9PWQubGVuZ3RoJiZkLnB1c2goW1wiQ1wiLHAucG9zWzBdLHAucG9zWzFdLHAucG9zWzBdLHAucG9zWzFdLHAucG9zWzBdLHAucG9zWzFdXSl9cmV0dXJue3N0YXJ0OmMsZGVzdDpkfX1mdW5jdGlvbiBlKHQpe3N3aXRjaCh0WzBdKXtjYXNlXCJ6XCI6Y2FzZVwiWlwiOnRbMF09XCJMXCIsdFsxXT10aGlzLnN0YXJ0WzBdLHRbMl09dGhpcy5zdGFydFsxXTticmVhaztjYXNlXCJIXCI6dFswXT1cIkxcIix0WzJdPXRoaXMucG9zWzFdO2JyZWFrO2Nhc2VcIlZcIjp0WzBdPVwiTFwiLHRbMl09dFsxXSx0WzFdPXRoaXMucG9zWzBdO2JyZWFrO2Nhc2VcIlRcIjp0WzBdPVwiUVwiLHRbM109dFsxXSx0WzRdPXRbMl0sdFsxXT10aGlzLnJlZmxlY3Rpb25bMV0sdFsyXT10aGlzLnJlZmxlY3Rpb25bMF07YnJlYWs7Y2FzZVwiU1wiOnRbMF09XCJDXCIsdFs2XT10WzRdLHRbNV09dFszXSx0WzRdPXRbMl0sdFszXT10WzFdLHRbMl09dGhpcy5yZWZsZWN0aW9uWzFdLHRbMV09dGhpcy5yZWZsZWN0aW9uWzBdfXJldHVybiB0fWZ1bmN0aW9uIGkodCl7dmFyIGU9dC5sZW5ndGg7cmV0dXJuIHRoaXMucG9zPVt0W2UtMl0sdFtlLTFdXSwtMSE9XCJTQ1FUXCIuaW5kZXhPZih0WzBdKSYmKHRoaXMucmVmbGVjdGlvbj1bMip0aGlzLnBvc1swXS10W2UtNF0sMip0aGlzLnBvc1sxXS10W2UtM11dKSx0fWZ1bmN0aW9uIGEodCl7dmFyIGU9W3RdO3N3aXRjaCh0WzBdKXtjYXNlXCJNXCI6cmV0dXJuIHRoaXMucG9zPXRoaXMuc3RhcnQ9W3RbMV0sdFsyXV0sZTtjYXNlXCJMXCI6dFs1XT10WzNdPXRbMV0sdFs2XT10WzRdPXRbMl0sdFsxXT10aGlzLnBvc1swXSx0WzJdPXRoaXMucG9zWzFdO2JyZWFrO2Nhc2VcIlFcIjp0WzZdPXRbNF0sdFs1XT10WzNdLHRbNF09MSp0WzRdLzMrMip0WzJdLzMsdFszXT0xKnRbM10vMysyKnRbMV0vMyx0WzJdPTEqdGhpcy5wb3NbMV0vMysyKnRbMl0vMyx0WzFdPTEqdGhpcy5wb3NbMF0vMysyKnRbMV0vMzticmVhaztjYXNlXCJBXCI6ZT1mdW5jdGlvbih0LGUpe3ZhciBpLGEscyxyLG8sbixsLGgsYyxkLGcsdSxwLGYseCxiLHYsbSx5LHcsayxBLFMsQyxMLFAsST1NYXRoLmFicyhlWzFdKSxUPU1hdGguYWJzKGVbMl0pLE09ZVszXSUzNjAsWD1lWzRdLHo9ZVs1XSxFPWVbNl0sWT1lWzddLEY9bmV3IFNWRy5Qb2ludCh0KSxSPW5ldyBTVkcuUG9pbnQoRSxZKSxEPVtdO2lmKDA9PT1JfHwwPT09VHx8Ri54PT09Ui54JiZGLnk9PT1SLnkpcmV0dXJuW1tcIkNcIixGLngsRi55LFIueCxSLnksUi54LFIueV1dO2k9bmV3IFNWRy5Qb2ludCgoRi54LVIueCkvMiwoRi55LVIueSkvMikudHJhbnNmb3JtKChuZXcgU1ZHLk1hdHJpeCkucm90YXRlKE0pKSwoYT1pLngqaS54LyhJKkkpK2kueSppLnkvKFQqVCkpPjEmJihJKj1hPU1hdGguc3FydChhKSxUKj1hKTtzPShuZXcgU1ZHLk1hdHJpeCkucm90YXRlKE0pLnNjYWxlKDEvSSwxL1QpLnJvdGF0ZSgtTSksRj1GLnRyYW5zZm9ybShzKSxSPVIudHJhbnNmb3JtKHMpLHI9W1IueC1GLngsUi55LUYueV0sbj1yWzBdKnJbMF0rclsxXSpyWzFdLG89TWF0aC5zcXJ0KG4pLHJbMF0vPW8sclsxXS89byxsPW48ND9NYXRoLnNxcnQoMS1uLzQpOjAsWD09PXomJihsKj0tMSk7aD1uZXcgU1ZHLlBvaW50KChSLngrRi54KS8yK2wqLXJbMV0sKFIueStGLnkpLzIrbCpyWzBdKSxjPW5ldyBTVkcuUG9pbnQoRi54LWgueCxGLnktaC55KSxkPW5ldyBTVkcuUG9pbnQoUi54LWgueCxSLnktaC55KSxnPU1hdGguYWNvcyhjLngvTWF0aC5zcXJ0KGMueCpjLngrYy55KmMueSkpLGMueTwwJiYoZyo9LTEpO3U9TWF0aC5hY29zKGQueC9NYXRoLnNxcnQoZC54KmQueCtkLnkqZC55KSksZC55PDAmJih1Kj0tMSk7eiYmZz51JiYodSs9MipNYXRoLlBJKTsheiYmZzx1JiYodS09MipNYXRoLlBJKTtmb3IoZj1NYXRoLmNlaWwoMipNYXRoLmFicyhnLXUpL01hdGguUEkpLGI9W10sdj1nLHA9KHUtZykvZix4PTQqTWF0aC50YW4ocC80KS8zLGs9MDtrPD1mO2srKyl5PU1hdGguY29zKHYpLG09TWF0aC5zaW4odiksdz1uZXcgU1ZHLlBvaW50KGgueCt5LGgueSttKSxiW2tdPVtuZXcgU1ZHLlBvaW50KHcueCt4Km0sdy55LXgqeSksdyxuZXcgU1ZHLlBvaW50KHcueC14Km0sdy55K3gqeSldLHYrPXA7Zm9yKGJbMF1bMF09YlswXVsxXS5jbG9uZSgpLGJbYi5sZW5ndGgtMV1bMl09YltiLmxlbmd0aC0xXVsxXS5jbG9uZSgpLHM9KG5ldyBTVkcuTWF0cml4KS5yb3RhdGUoTSkuc2NhbGUoSSxUKS5yb3RhdGUoLU0pLGs9MCxBPWIubGVuZ3RoO2s8QTtrKyspYltrXVswXT1iW2tdWzBdLnRyYW5zZm9ybShzKSxiW2tdWzFdPWJba11bMV0udHJhbnNmb3JtKHMpLGJba11bMl09YltrXVsyXS50cmFuc2Zvcm0ocyk7Zm9yKGs9MSxBPWIubGVuZ3RoO2s8QTtrKyspUz0odz1iW2stMV1bMl0pLngsQz13LnksTD0odz1iW2tdWzBdKS54LFA9dy55LEU9KHc9YltrXVsxXSkueCxZPXcueSxELnB1c2goW1wiQ1wiLFMsQyxMLFAsRSxZXSk7cmV0dXJuIER9KHRoaXMucG9zLHQpLHQ9ZVswXX1yZXR1cm4gdFswXT1cIkNcIix0aGlzLnBvcz1bdFs1XSx0WzZdXSx0aGlzLnJlZmxlY3Rpb249WzIqdFs1XS10WzNdLDIqdFs2XS10WzRdXSxlfWZ1bmN0aW9uIHModCxlKXtpZighMT09PWUpcmV0dXJuITE7Zm9yKHZhciBpPWUsYT10Lmxlbmd0aDtpPGE7KytpKWlmKFwiTVwiPT10W2ldWzBdKXJldHVybiBpO3JldHVybiExfVNWRy5leHRlbmQoU1ZHLlBhdGhBcnJheSx7bW9ycGg6ZnVuY3Rpb24oZSl7Zm9yKHZhciBpPXRoaXMudmFsdWUsYT10aGlzLnBhcnNlKGUpLHI9MCxvPTAsbj0hMSxsPSExOyExIT09cnx8ITEhPT1vOyl7dmFyIGg7bj1zKGksITEhPT1yJiZyKzEpLGw9cyhhLCExIT09byYmbysxKSwhMT09PXImJihyPTA9PShoPW5ldyBTVkcuUGF0aEFycmF5KGMuc3RhcnQpLmJib3goKSkuaGVpZ2h0fHwwPT1oLndpZHRoP2kucHVzaChpWzBdKS0xOmkucHVzaChbXCJNXCIsaC54K2gud2lkdGgvMixoLnkraC5oZWlnaHQvMl0pLTEpLCExPT09byYmKG89MD09KGg9bmV3IFNWRy5QYXRoQXJyYXkoYy5kZXN0KS5iYm94KCkpLmhlaWdodHx8MD09aC53aWR0aD9hLnB1c2goYVswXSktMTphLnB1c2goW1wiTVwiLGgueCtoLndpZHRoLzIsaC55K2guaGVpZ2h0LzJdKS0xKTt2YXIgYz10KGkscixuLGEsbyxsKTtpPWkuc2xpY2UoMCxyKS5jb25jYXQoYy5zdGFydCwhMT09PW4/W106aS5zbGljZShuKSksYT1hLnNsaWNlKDAsbykuY29uY2F0KGMuZGVzdCwhMT09PWw/W106YS5zbGljZShsKSkscj0hMSE9PW4mJnIrYy5zdGFydC5sZW5ndGgsbz0hMSE9PWwmJm8rYy5kZXN0Lmxlbmd0aH1yZXR1cm4gdGhpcy52YWx1ZT1pLHRoaXMuZGVzdGluYXRpb249bmV3IFNWRy5QYXRoQXJyYXksdGhpcy5kZXN0aW5hdGlvbi52YWx1ZT1hLHRoaXN9fSl9KCksXG4vKiEgc3ZnLmRyYWdnYWJsZS5qcyAtIHYyLjIuMiAtIDIwMTktMDEtMDhcbiogaHR0cHM6Ly9naXRodWIuY29tL3N2Z2RvdGpzL3N2Zy5kcmFnZ2FibGUuanNcbiogQ29weXJpZ2h0IChjKSAyMDE5IFdvdXQgRmllcmVuczsgTGljZW5zZWQgTUlUICovXG5mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dC5yZW1lbWJlcihcIl9kcmFnZ2FibGVcIix0aGlzKSx0aGlzLmVsPXR9dC5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXM7dGhpcy5jb25zdHJhaW50PXQsdGhpcy52YWx1ZT1lLHRoaXMuZWwub24oXCJtb3VzZWRvd24uZHJhZ1wiLChmdW5jdGlvbih0KXtpLnN0YXJ0KHQpfSkpLHRoaXMuZWwub24oXCJ0b3VjaHN0YXJ0LmRyYWdcIiwoZnVuY3Rpb24odCl7aS5zdGFydCh0KX0pKX0sdC5wcm90b3R5cGUudHJhbnNmb3JtUG9pbnQ9ZnVuY3Rpb24odCxlKXt2YXIgaT0odD10fHx3aW5kb3cuZXZlbnQpLmNoYW5nZWRUb3VjaGVzJiZ0LmNoYW5nZWRUb3VjaGVzWzBdfHx0O3JldHVybiB0aGlzLnAueD1pLmNsaWVudFgtKGV8fDApLHRoaXMucC55PWkuY2xpZW50WSx0aGlzLnAubWF0cml4VHJhbnNmb3JtKHRoaXMubSl9LHQucHJvdG90eXBlLmdldEJCb3g9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmVsLmJib3goKTtyZXR1cm4gdGhpcy5lbCBpbnN0YW5jZW9mIFNWRy5OZXN0ZWQmJih0PXRoaXMuZWwucmJveCgpKSwodGhpcy5lbCBpbnN0YW5jZW9mIFNWRy5HfHx0aGlzLmVsIGluc3RhbmNlb2YgU1ZHLlVzZXx8dGhpcy5lbCBpbnN0YW5jZW9mIFNWRy5OZXN0ZWQpJiYodC54PXRoaXMuZWwueCgpLHQueT10aGlzLmVsLnkoKSksdH0sdC5wcm90b3R5cGUuc3RhcnQ9ZnVuY3Rpb24odCl7aWYoXCJjbGlja1wiIT10LnR5cGUmJlwibW91c2Vkb3duXCIhPXQudHlwZSYmXCJtb3VzZW1vdmVcIiE9dC50eXBlfHwxPT0odC53aGljaHx8dC5idXR0b25zKSl7dmFyIGU9dGhpcztpZih0aGlzLmVsLmZpcmUoXCJiZWZvcmVkcmFnXCIse2V2ZW50OnQsaGFuZGxlcjp0aGlzfSksIXRoaXMuZWwuZXZlbnQoKS5kZWZhdWx0UHJldmVudGVkKXt0LnByZXZlbnREZWZhdWx0KCksdC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLnBhcmVudD10aGlzLnBhcmVudHx8dGhpcy5lbC5wYXJlbnQoU1ZHLk5lc3RlZCl8fHRoaXMuZWwucGFyZW50KFNWRy5Eb2MpLHRoaXMucD10aGlzLnBhcmVudC5ub2RlLmNyZWF0ZVNWR1BvaW50KCksdGhpcy5tPXRoaXMuZWwubm9kZS5nZXRTY3JlZW5DVE0oKS5pbnZlcnNlKCk7dmFyIGksYT10aGlzLmdldEJCb3goKTtpZih0aGlzLmVsIGluc3RhbmNlb2YgU1ZHLlRleHQpc3dpdGNoKGk9dGhpcy5lbC5ub2RlLmdldENvbXB1dGVkVGV4dExlbmd0aCgpLHRoaXMuZWwuYXR0cihcInRleHQtYW5jaG9yXCIpKXtjYXNlXCJtaWRkbGVcIjppLz0yO2JyZWFrO2Nhc2VcInN0YXJ0XCI6aT0wfXRoaXMuc3RhcnRQb2ludHM9e3BvaW50OnRoaXMudHJhbnNmb3JtUG9pbnQodCxpKSxib3g6YSx0cmFuc2Zvcm06dGhpcy5lbC50cmFuc2Zvcm0oKX0sU1ZHLm9uKHdpbmRvdyxcIm1vdXNlbW92ZS5kcmFnXCIsKGZ1bmN0aW9uKHQpe2UuZHJhZyh0KX0pKSxTVkcub24od2luZG93LFwidG91Y2htb3ZlLmRyYWdcIiwoZnVuY3Rpb24odCl7ZS5kcmFnKHQpfSkpLFNWRy5vbih3aW5kb3csXCJtb3VzZXVwLmRyYWdcIiwoZnVuY3Rpb24odCl7ZS5lbmQodCl9KSksU1ZHLm9uKHdpbmRvdyxcInRvdWNoZW5kLmRyYWdcIiwoZnVuY3Rpb24odCl7ZS5lbmQodCl9KSksdGhpcy5lbC5maXJlKFwiZHJhZ3N0YXJ0XCIse2V2ZW50OnQscDp0aGlzLnN0YXJ0UG9pbnRzLnBvaW50LG06dGhpcy5tLGhhbmRsZXI6dGhpc30pfX19LHQucHJvdG90eXBlLmRyYWc9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXRCQm94KCksaT10aGlzLnRyYW5zZm9ybVBvaW50KHQpLGE9dGhpcy5zdGFydFBvaW50cy5ib3gueCtpLngtdGhpcy5zdGFydFBvaW50cy5wb2ludC54LHM9dGhpcy5zdGFydFBvaW50cy5ib3gueStpLnktdGhpcy5zdGFydFBvaW50cy5wb2ludC55LHI9dGhpcy5jb25zdHJhaW50LG89aS54LXRoaXMuc3RhcnRQb2ludHMucG9pbnQueCxuPWkueS10aGlzLnN0YXJ0UG9pbnRzLnBvaW50Lnk7aWYodGhpcy5lbC5maXJlKFwiZHJhZ21vdmVcIix7ZXZlbnQ6dCxwOmksbTp0aGlzLm0saGFuZGxlcjp0aGlzfSksdGhpcy5lbC5ldmVudCgpLmRlZmF1bHRQcmV2ZW50ZWQpcmV0dXJuIGk7aWYoXCJmdW5jdGlvblwiPT10eXBlb2Ygcil7dmFyIGw9ci5jYWxsKHRoaXMuZWwsYSxzLHRoaXMubSk7XCJib29sZWFuXCI9PXR5cGVvZiBsJiYobD17eDpsLHk6bH0pLCEwPT09bC54P3RoaXMuZWwueChhKTohMSE9PWwueCYmdGhpcy5lbC54KGwueCksITA9PT1sLnk/dGhpcy5lbC55KHMpOiExIT09bC55JiZ0aGlzLmVsLnkobC55KX1lbHNlXCJvYmplY3RcIj09dHlwZW9mIHImJihudWxsIT1yLm1pblgmJmE8ci5taW5YP289KGE9ci5taW5YKS10aGlzLnN0YXJ0UG9pbnRzLmJveC54Om51bGwhPXIubWF4WCYmYT5yLm1heFgtZS53aWR0aCYmKG89KGE9ci5tYXhYLWUud2lkdGgpLXRoaXMuc3RhcnRQb2ludHMuYm94LngpLG51bGwhPXIubWluWSYmczxyLm1pblk/bj0ocz1yLm1pblkpLXRoaXMuc3RhcnRQb2ludHMuYm94Lnk6bnVsbCE9ci5tYXhZJiZzPnIubWF4WS1lLmhlaWdodCYmKG49KHM9ci5tYXhZLWUuaGVpZ2h0KS10aGlzLnN0YXJ0UG9pbnRzLmJveC55KSxudWxsIT1yLnNuYXBUb0dyaWQmJihhLT1hJXIuc25hcFRvR3JpZCxzLT1zJXIuc25hcFRvR3JpZCxvLT1vJXIuc25hcFRvR3JpZCxuLT1uJXIuc25hcFRvR3JpZCksdGhpcy5lbCBpbnN0YW5jZW9mIFNWRy5HP3RoaXMuZWwubWF0cml4KHRoaXMuc3RhcnRQb2ludHMudHJhbnNmb3JtKS50cmFuc2Zvcm0oe3g6byx5Om59LCEwKTp0aGlzLmVsLm1vdmUoYSxzKSk7cmV0dXJuIGl9LHQucHJvdG90eXBlLmVuZD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmRyYWcodCk7dGhpcy5lbC5maXJlKFwiZHJhZ2VuZFwiLHtldmVudDp0LHA6ZSxtOnRoaXMubSxoYW5kbGVyOnRoaXN9KSxTVkcub2ZmKHdpbmRvdyxcIm1vdXNlbW92ZS5kcmFnXCIpLFNWRy5vZmYod2luZG93LFwidG91Y2htb3ZlLmRyYWdcIiksU1ZHLm9mZih3aW5kb3csXCJtb3VzZXVwLmRyYWdcIiksU1ZHLm9mZih3aW5kb3csXCJ0b3VjaGVuZC5kcmFnXCIpfSxTVkcuZXh0ZW5kKFNWRy5FbGVtZW50LHtkcmFnZ2FibGU6ZnVuY3Rpb24oZSxpKXtcImZ1bmN0aW9uXCIhPXR5cGVvZiBlJiZcIm9iamVjdFwiIT10eXBlb2YgZXx8KGk9ZSxlPSEwKTt2YXIgYT10aGlzLnJlbWVtYmVyKFwiX2RyYWdnYWJsZVwiKXx8bmV3IHQodGhpcyk7cmV0dXJuKGU9dm9pZCAwPT09ZXx8ZSk/YS5pbml0KGl8fHt9LGUpOih0aGlzLm9mZihcIm1vdXNlZG93bi5kcmFnXCIpLHRoaXMub2ZmKFwidG91Y2hzdGFydC5kcmFnXCIpKSx0aGlzfX0pfS5jYWxsKHZvaWQgMCksZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuZWw9dCx0LnJlbWVtYmVyKFwiX3NlbGVjdEhhbmRsZXJcIix0aGlzKSx0aGlzLnBvaW50U2VsZWN0aW9uPXtpc1NlbGVjdGVkOiExfSx0aGlzLnJlY3RTZWxlY3Rpb249e2lzU2VsZWN0ZWQ6ITF9LHRoaXMucG9pbnRzTGlzdD17bHQ6WzAsMF0scnQ6W1wid2lkdGhcIiwwXSxyYjpbXCJ3aWR0aFwiLFwiaGVpZ2h0XCJdLGxiOlswLFwiaGVpZ2h0XCJdLHQ6W1wid2lkdGhcIiwwXSxyOltcIndpZHRoXCIsXCJoZWlnaHRcIl0sYjpbXCJ3aWR0aFwiLFwiaGVpZ2h0XCJdLGw6WzAsXCJoZWlnaHRcIl19LHRoaXMucG9pbnRDb29yZD1mdW5jdGlvbih0LGUsaSl7dmFyIGE9XCJzdHJpbmdcIiE9dHlwZW9mIHQ/dDplW3RdO3JldHVybiBpP2EvMjphfSx0aGlzLnBvaW50Q29vcmRzPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5wb2ludHNMaXN0W3RdO3JldHVybnt4OnRoaXMucG9pbnRDb29yZChpWzBdLGUsXCJ0XCI9PT10fHxcImJcIj09PXQpLHk6dGhpcy5wb2ludENvb3JkKGlbMV0sZSxcInJcIj09PXR8fFwibFwiPT09dCl9fX10LnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5lbC5iYm94KCk7dGhpcy5vcHRpb25zPXt9O3ZhciBhPXRoaXMuZWwuc2VsZWN0aXplLmRlZmF1bHRzLnBvaW50cztmb3IodmFyIHMgaW4gdGhpcy5lbC5zZWxlY3RpemUuZGVmYXVsdHMpdGhpcy5vcHRpb25zW3NdPXRoaXMuZWwuc2VsZWN0aXplLmRlZmF1bHRzW3NdLHZvaWQgMCE9PWVbc10mJih0aGlzLm9wdGlvbnNbc109ZVtzXSk7dmFyIHI9W1wicG9pbnRzXCIsXCJwb2ludHNFeGNsdWRlXCJdO2Zvcih2YXIgcyBpbiByKXt2YXIgbz10aGlzLm9wdGlvbnNbcltzXV07XCJzdHJpbmdcIj09dHlwZW9mIG8/bz1vLmxlbmd0aD4wP28uc3BsaXQoL1xccyosXFxzKi9pKTpbXTpcImJvb2xlYW5cIj09dHlwZW9mIG8mJlwicG9pbnRzXCI9PT1yW3NdJiYobz1vP2E6W10pLHRoaXMub3B0aW9uc1tyW3NdXT1vfXRoaXMub3B0aW9ucy5wb2ludHM9W2EsdGhpcy5vcHRpb25zLnBvaW50c10ucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0LmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIGUuaW5kZXhPZih0KT4tMX0pKX0pKSx0aGlzLm9wdGlvbnMucG9pbnRzPVt0aGlzLm9wdGlvbnMucG9pbnRzLHRoaXMub3B0aW9ucy5wb2ludHNFeGNsdWRlXS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gZS5pbmRleE9mKHQpPDB9KSl9KSksdGhpcy5wYXJlbnQ9dGhpcy5lbC5wYXJlbnQoKSx0aGlzLm5lc3RlZD10aGlzLm5lc3RlZHx8dGhpcy5wYXJlbnQuZ3JvdXAoKSx0aGlzLm5lc3RlZC5tYXRyaXgobmV3IFNWRy5NYXRyaXgodGhpcy5lbCkudHJhbnNsYXRlKGkueCxpLnkpKSx0aGlzLm9wdGlvbnMuZGVlcFNlbGVjdCYmLTEhPT1bXCJsaW5lXCIsXCJwb2x5bGluZVwiLFwicG9seWdvblwiXS5pbmRleE9mKHRoaXMuZWwudHlwZSk/dGhpcy5zZWxlY3RQb2ludHModCk6dGhpcy5zZWxlY3RSZWN0KHQpLHRoaXMub2JzZXJ2ZSgpLHRoaXMuY2xlYW51cCgpfSx0LnByb3RvdHlwZS5zZWxlY3RQb2ludHM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucG9pbnRTZWxlY3Rpb24uaXNTZWxlY3RlZD10LHRoaXMucG9pbnRTZWxlY3Rpb24uc2V0fHwodGhpcy5wb2ludFNlbGVjdGlvbi5zZXQ9dGhpcy5wYXJlbnQuc2V0KCksdGhpcy5kcmF3UG9pbnRzKCkpLHRoaXN9LHQucHJvdG90eXBlLmdldFBvaW50QXJyYXk9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmVsLmJib3goKTtyZXR1cm4gdGhpcy5lbC5hcnJheSgpLnZhbHVlT2YoKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybltlWzBdLXQueCxlWzFdLXQueV19KSl9LHQucHJvdG90eXBlLmRyYXdQb2ludHM9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcyxlPXRoaXMuZ2V0UG9pbnRBcnJheSgpLGk9MCxhPWUubGVuZ3RoO2k8YTsrK2kpe3ZhciBzPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihpKXsoaT1pfHx3aW5kb3cuZXZlbnQpLnByZXZlbnREZWZhdWx0P2kucHJldmVudERlZmF1bHQoKTppLnJldHVyblZhbHVlPSExLGkuc3RvcFByb3BhZ2F0aW9uKCk7dmFyIGE9aS5wYWdlWHx8aS50b3VjaGVzWzBdLnBhZ2VYLHM9aS5wYWdlWXx8aS50b3VjaGVzWzBdLnBhZ2VZO3QuZWwuZmlyZShcInBvaW50XCIse3g6YSx5OnMsaTplLGV2ZW50Oml9KX19KGkpLHI9dGhpcy5kcmF3UG9pbnQoZVtpXVswXSxlW2ldWzFdKS5hZGRDbGFzcyh0aGlzLm9wdGlvbnMuY2xhc3NQb2ludHMpLmFkZENsYXNzKHRoaXMub3B0aW9ucy5jbGFzc1BvaW50cytcIl9wb2ludFwiKS5vbihcInRvdWNoc3RhcnRcIixzKS5vbihcIm1vdXNlZG93blwiLHMpO3RoaXMucG9pbnRTZWxlY3Rpb24uc2V0LmFkZChyKX19LHQucHJvdG90eXBlLmRyYXdQb2ludD1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMub3B0aW9ucy5wb2ludFR5cGU7c3dpdGNoKGkpe2Nhc2VcImNpcmNsZVwiOnJldHVybiB0aGlzLmRyYXdDaXJjbGUodCxlKTtjYXNlXCJyZWN0XCI6cmV0dXJuIHRoaXMuZHJhd1JlY3QodCxlKTtkZWZhdWx0OmlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGkpcmV0dXJuIGkuY2FsbCh0aGlzLHQsZSk7dGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBcIitpK1wiIHBvaW50IHR5cGUhXCIpfX0sdC5wcm90b3R5cGUuZHJhd0NpcmNsZT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLm5lc3RlZC5jaXJjbGUodGhpcy5vcHRpb25zLnBvaW50U2l6ZSkuY2VudGVyKHQsZSl9LHQucHJvdG90eXBlLmRyYXdSZWN0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMubmVzdGVkLnJlY3QodGhpcy5vcHRpb25zLnBvaW50U2l6ZSx0aGlzLm9wdGlvbnMucG9pbnRTaXplKS5jZW50ZXIodCxlKX0sdC5wcm90b3R5cGUudXBkYXRlUG9pbnRTZWxlY3Rpb249ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmdldFBvaW50QXJyYXkoKTt0aGlzLnBvaW50U2VsZWN0aW9uLnNldC5lYWNoKChmdW5jdGlvbihlKXt0aGlzLmN4KCk9PT10W2VdWzBdJiZ0aGlzLmN5KCk9PT10W2VdWzFdfHx0aGlzLmNlbnRlcih0W2VdWzBdLHRbZV1bMV0pfSkpfSx0LnByb3RvdHlwZS51cGRhdGVSZWN0U2VsZWN0aW9uPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMuZWwuYmJveCgpO2lmKHRoaXMucmVjdFNlbGVjdGlvbi5zZXQuZ2V0KDApLmF0dHIoe3dpZHRoOmUud2lkdGgsaGVpZ2h0OmUuaGVpZ2h0fSksdGhpcy5vcHRpb25zLnBvaW50cy5sZW5ndGgmJnRoaXMub3B0aW9ucy5wb2ludHMubWFwKChmdW5jdGlvbihpLGEpe3ZhciBzPXQucG9pbnRDb29yZHMoaSxlKTt0LnJlY3RTZWxlY3Rpb24uc2V0LmdldChhKzEpLmNlbnRlcihzLngscy55KX0pKSx0aGlzLm9wdGlvbnMucm90YXRpb25Qb2ludCl7dmFyIGk9dGhpcy5yZWN0U2VsZWN0aW9uLnNldC5sZW5ndGgoKTt0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmdldChpLTEpLmNlbnRlcihlLndpZHRoLzIsMjApfX0sdC5wcm90b3R5cGUuc2VsZWN0UmVjdD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dGhpcy5lbC5iYm94KCk7ZnVuY3Rpb24gYSh0KXtyZXR1cm4gZnVuY3Rpb24oaSl7KGk9aXx8d2luZG93LmV2ZW50KS5wcmV2ZW50RGVmYXVsdD9pLnByZXZlbnREZWZhdWx0KCk6aS5yZXR1cm5WYWx1ZT0hMSxpLnN0b3BQcm9wYWdhdGlvbigpO3ZhciBhPWkucGFnZVh8fGkudG91Y2hlc1swXS5wYWdlWCxzPWkucGFnZVl8fGkudG91Y2hlc1swXS5wYWdlWTtlLmVsLmZpcmUodCx7eDphLHk6cyxldmVudDppfSl9fWlmKHRoaXMucmVjdFNlbGVjdGlvbi5pc1NlbGVjdGVkPXQsdGhpcy5yZWN0U2VsZWN0aW9uLnNldD10aGlzLnJlY3RTZWxlY3Rpb24uc2V0fHx0aGlzLnBhcmVudC5zZXQoKSx0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmdldCgwKXx8dGhpcy5yZWN0U2VsZWN0aW9uLnNldC5hZGQodGhpcy5uZXN0ZWQucmVjdChpLndpZHRoLGkuaGVpZ2h0KS5hZGRDbGFzcyh0aGlzLm9wdGlvbnMuY2xhc3NSZWN0KSksdGhpcy5vcHRpb25zLnBvaW50cy5sZW5ndGgmJnRoaXMucmVjdFNlbGVjdGlvbi5zZXQubGVuZ3RoKCk8Mil7dGhpcy5vcHRpb25zLnBvaW50cy5tYXAoKGZ1bmN0aW9uKHQscyl7dmFyIHI9ZS5wb2ludENvb3Jkcyh0LGkpLG89ZS5kcmF3UG9pbnQoci54LHIueSkuYXR0cihcImNsYXNzXCIsZS5vcHRpb25zLmNsYXNzUG9pbnRzK1wiX1wiK3QpLm9uKFwibW91c2Vkb3duXCIsYSh0KSkub24oXCJ0b3VjaHN0YXJ0XCIsYSh0KSk7ZS5yZWN0U2VsZWN0aW9uLnNldC5hZGQobyl9KSksdGhpcy5yZWN0U2VsZWN0aW9uLnNldC5lYWNoKChmdW5jdGlvbigpe3RoaXMuYWRkQ2xhc3MoZS5vcHRpb25zLmNsYXNzUG9pbnRzKX0pKX1pZih0aGlzLm9wdGlvbnMucm90YXRpb25Qb2ludCYmKHRoaXMub3B0aW9ucy5wb2ludHMmJiF0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmdldCg5KXx8IXRoaXMub3B0aW9ucy5wb2ludHMmJiF0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmdldCgxKSkpe3ZhciBzPWZ1bmN0aW9uKHQpeyh0PXR8fHdpbmRvdy5ldmVudCkucHJldmVudERlZmF1bHQ/dC5wcmV2ZW50RGVmYXVsdCgpOnQucmV0dXJuVmFsdWU9ITEsdC5zdG9wUHJvcGFnYXRpb24oKTt2YXIgaT10LnBhZ2VYfHx0LnRvdWNoZXNbMF0ucGFnZVgsYT10LnBhZ2VZfHx0LnRvdWNoZXNbMF0ucGFnZVk7ZS5lbC5maXJlKFwicm90XCIse3g6aSx5OmEsZXZlbnQ6dH0pfSxyPXRoaXMuZHJhd1BvaW50KGkud2lkdGgvMiwyMCkuYXR0cihcImNsYXNzXCIsdGhpcy5vcHRpb25zLmNsYXNzUG9pbnRzK1wiX3JvdFwiKS5vbihcInRvdWNoc3RhcnRcIixzKS5vbihcIm1vdXNlZG93blwiLHMpO3RoaXMucmVjdFNlbGVjdGlvbi5zZXQuYWRkKHIpfX0sdC5wcm90b3R5cGUuaGFuZGxlcj1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZWwuYmJveCgpO3RoaXMubmVzdGVkLm1hdHJpeChuZXcgU1ZHLk1hdHJpeCh0aGlzLmVsKS50cmFuc2xhdGUodC54LHQueSkpLHRoaXMucmVjdFNlbGVjdGlvbi5pc1NlbGVjdGVkJiZ0aGlzLnVwZGF0ZVJlY3RTZWxlY3Rpb24oKSx0aGlzLnBvaW50U2VsZWN0aW9uLmlzU2VsZWN0ZWQmJnRoaXMudXBkYXRlUG9pbnRTZWxlY3Rpb24oKX0sdC5wcm90b3R5cGUub2JzZXJ2ZT1mdW5jdGlvbigpe3ZhciB0PXRoaXM7aWYoTXV0YXRpb25PYnNlcnZlcilpZih0aGlzLnJlY3RTZWxlY3Rpb24uaXNTZWxlY3RlZHx8dGhpcy5wb2ludFNlbGVjdGlvbi5pc1NlbGVjdGVkKXRoaXMub2JzZXJ2ZXJJbnN0PXRoaXMub2JzZXJ2ZXJJbnN0fHxuZXcgTXV0YXRpb25PYnNlcnZlcigoZnVuY3Rpb24oKXt0LmhhbmRsZXIoKX0pKSx0aGlzLm9ic2VydmVySW5zdC5vYnNlcnZlKHRoaXMuZWwubm9kZSx7YXR0cmlidXRlczohMH0pO2Vsc2UgdHJ5e3RoaXMub2JzZXJ2ZXJJbnN0LmRpc2Nvbm5lY3QoKSxkZWxldGUgdGhpcy5vYnNlcnZlckluc3R9Y2F0Y2godCl7fWVsc2UgdGhpcy5lbC5vZmYoXCJET01BdHRyTW9kaWZpZWQuc2VsZWN0XCIpLCh0aGlzLnJlY3RTZWxlY3Rpb24uaXNTZWxlY3RlZHx8dGhpcy5wb2ludFNlbGVjdGlvbi5pc1NlbGVjdGVkKSYmdGhpcy5lbC5vbihcIkRPTUF0dHJNb2RpZmllZC5zZWxlY3RcIiwoZnVuY3Rpb24oKXt0LmhhbmRsZXIoKX0pKX0sdC5wcm90b3R5cGUuY2xlYW51cD1mdW5jdGlvbigpeyF0aGlzLnJlY3RTZWxlY3Rpb24uaXNTZWxlY3RlZCYmdGhpcy5yZWN0U2VsZWN0aW9uLnNldCYmKHRoaXMucmVjdFNlbGVjdGlvbi5zZXQuZWFjaCgoZnVuY3Rpb24oKXt0aGlzLnJlbW92ZSgpfSkpLHRoaXMucmVjdFNlbGVjdGlvbi5zZXQuY2xlYXIoKSxkZWxldGUgdGhpcy5yZWN0U2VsZWN0aW9uLnNldCksIXRoaXMucG9pbnRTZWxlY3Rpb24uaXNTZWxlY3RlZCYmdGhpcy5wb2ludFNlbGVjdGlvbi5zZXQmJih0aGlzLnBvaW50U2VsZWN0aW9uLnNldC5lYWNoKChmdW5jdGlvbigpe3RoaXMucmVtb3ZlKCl9KSksdGhpcy5wb2ludFNlbGVjdGlvbi5zZXQuY2xlYXIoKSxkZWxldGUgdGhpcy5wb2ludFNlbGVjdGlvbi5zZXQpLHRoaXMucG9pbnRTZWxlY3Rpb24uaXNTZWxlY3RlZHx8dGhpcy5yZWN0U2VsZWN0aW9uLmlzU2VsZWN0ZWR8fCh0aGlzLm5lc3RlZC5yZW1vdmUoKSxkZWxldGUgdGhpcy5uZXN0ZWQpfSxTVkcuZXh0ZW5kKFNWRy5FbGVtZW50LHtzZWxlY3RpemU6ZnVuY3Rpb24oZSxpKXtyZXR1cm5cIm9iamVjdFwiPT10eXBlb2YgZSYmKGk9ZSxlPSEwKSwodGhpcy5yZW1lbWJlcihcIl9zZWxlY3RIYW5kbGVyXCIpfHxuZXcgdCh0aGlzKSkuaW5pdCh2b2lkIDA9PT1lfHxlLGl8fHt9KSx0aGlzfX0pLFNWRy5FbGVtZW50LnByb3RvdHlwZS5zZWxlY3RpemUuZGVmYXVsdHM9e3BvaW50czpbXCJsdFwiLFwicnRcIixcInJiXCIsXCJsYlwiLFwidFwiLFwiclwiLFwiYlwiLFwibFwiXSxwb2ludHNFeGNsdWRlOltdLGNsYXNzUmVjdDpcInN2Z19zZWxlY3RfYm91bmRpbmdSZWN0XCIsY2xhc3NQb2ludHM6XCJzdmdfc2VsZWN0X3BvaW50c1wiLHBvaW50U2l6ZTo3LHJvdGF0aW9uUG9pbnQ6ITAsZGVlcFNlbGVjdDohMSxwb2ludFR5cGU6XCJjaXJjbGVcIn19KCksZnVuY3Rpb24oKXsoZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3QucmVtZW1iZXIoXCJfcmVzaXplSGFuZGxlclwiLHRoaXMpLHRoaXMuZWw9dCx0aGlzLnBhcmFtZXRlcnM9e30sdGhpcy5sYXN0VXBkYXRlQ2FsbD1udWxsLHRoaXMucD10LmRvYygpLm5vZGUuY3JlYXRlU1ZHUG9pbnQoKX10LnByb3RvdHlwZS50cmFuc2Zvcm1Qb2ludD1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMucC54PXQtKHRoaXMub2Zmc2V0Lngtd2luZG93LnBhZ2VYT2Zmc2V0KSx0aGlzLnAueT1lLSh0aGlzLm9mZnNldC55LXdpbmRvdy5wYWdlWU9mZnNldCksdGhpcy5wLm1hdHJpeFRyYW5zZm9ybShpfHx0aGlzLm0pfSx0LnByb3RvdHlwZS5fZXh0cmFjdFBvc2l0aW9uPWZ1bmN0aW9uKHQpe3JldHVybnt4Om51bGwhPXQuY2xpZW50WD90LmNsaWVudFg6dC50b3VjaGVzWzBdLmNsaWVudFgseTpudWxsIT10LmNsaWVudFk/dC5jbGllbnRZOnQudG91Y2hlc1swXS5jbGllbnRZfX0sdC5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO2lmKHRoaXMuc3RvcCgpLFwic3RvcFwiIT09dCl7Zm9yKHZhciBpIGluIHRoaXMub3B0aW9ucz17fSx0aGlzLmVsLnJlc2l6ZS5kZWZhdWx0cyl0aGlzLm9wdGlvbnNbaV09dGhpcy5lbC5yZXNpemUuZGVmYXVsdHNbaV0sdm9pZCAwIT09dFtpXSYmKHRoaXMub3B0aW9uc1tpXT10W2ldKTt0aGlzLmVsLm9uKFwibHQucmVzaXplXCIsKGZ1bmN0aW9uKHQpe2UucmVzaXplKHR8fHdpbmRvdy5ldmVudCl9KSksdGhpcy5lbC5vbihcInJ0LnJlc2l6ZVwiLChmdW5jdGlvbih0KXtlLnJlc2l6ZSh0fHx3aW5kb3cuZXZlbnQpfSkpLHRoaXMuZWwub24oXCJyYi5yZXNpemVcIiwoZnVuY3Rpb24odCl7ZS5yZXNpemUodHx8d2luZG93LmV2ZW50KX0pKSx0aGlzLmVsLm9uKFwibGIucmVzaXplXCIsKGZ1bmN0aW9uKHQpe2UucmVzaXplKHR8fHdpbmRvdy5ldmVudCl9KSksdGhpcy5lbC5vbihcInQucmVzaXplXCIsKGZ1bmN0aW9uKHQpe2UucmVzaXplKHR8fHdpbmRvdy5ldmVudCl9KSksdGhpcy5lbC5vbihcInIucmVzaXplXCIsKGZ1bmN0aW9uKHQpe2UucmVzaXplKHR8fHdpbmRvdy5ldmVudCl9KSksdGhpcy5lbC5vbihcImIucmVzaXplXCIsKGZ1bmN0aW9uKHQpe2UucmVzaXplKHR8fHdpbmRvdy5ldmVudCl9KSksdGhpcy5lbC5vbihcImwucmVzaXplXCIsKGZ1bmN0aW9uKHQpe2UucmVzaXplKHR8fHdpbmRvdy5ldmVudCl9KSksdGhpcy5lbC5vbihcInJvdC5yZXNpemVcIiwoZnVuY3Rpb24odCl7ZS5yZXNpemUodHx8d2luZG93LmV2ZW50KX0pKSx0aGlzLmVsLm9uKFwicG9pbnQucmVzaXplXCIsKGZ1bmN0aW9uKHQpe2UucmVzaXplKHR8fHdpbmRvdy5ldmVudCl9KSksdGhpcy51cGRhdGUoKX19LHQucHJvdG90eXBlLnN0b3A9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbC5vZmYoXCJsdC5yZXNpemVcIiksdGhpcy5lbC5vZmYoXCJydC5yZXNpemVcIiksdGhpcy5lbC5vZmYoXCJyYi5yZXNpemVcIiksdGhpcy5lbC5vZmYoXCJsYi5yZXNpemVcIiksdGhpcy5lbC5vZmYoXCJ0LnJlc2l6ZVwiKSx0aGlzLmVsLm9mZihcInIucmVzaXplXCIpLHRoaXMuZWwub2ZmKFwiYi5yZXNpemVcIiksdGhpcy5lbC5vZmYoXCJsLnJlc2l6ZVwiKSx0aGlzLmVsLm9mZihcInJvdC5yZXNpemVcIiksdGhpcy5lbC5vZmYoXCJwb2ludC5yZXNpemVcIiksdGhpc30sdC5wcm90b3R5cGUucmVzaXplPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy5tPXRoaXMuZWwubm9kZS5nZXRTY3JlZW5DVE0oKS5pbnZlcnNlKCksdGhpcy5vZmZzZXQ9e3g6d2luZG93LnBhZ2VYT2Zmc2V0LHk6d2luZG93LnBhZ2VZT2Zmc2V0fTt2YXIgaT10aGlzLl9leHRyYWN0UG9zaXRpb24odC5kZXRhaWwuZXZlbnQpO2lmKHRoaXMucGFyYW1ldGVycz17dHlwZTp0aGlzLmVsLnR5cGUscDp0aGlzLnRyYW5zZm9ybVBvaW50KGkueCxpLnkpLHg6dC5kZXRhaWwueCx5OnQuZGV0YWlsLnksYm94OnRoaXMuZWwuYmJveCgpLHJvdGF0aW9uOnRoaXMuZWwudHJhbnNmb3JtKCkucm90YXRpb259LFwidGV4dFwiPT09dGhpcy5lbC50eXBlJiYodGhpcy5wYXJhbWV0ZXJzLmZvbnRTaXplPXRoaXMuZWwuYXR0cigpW1wiZm9udC1zaXplXCJdKSx2b2lkIDAhPT10LmRldGFpbC5pKXt2YXIgYT10aGlzLmVsLmFycmF5KCkudmFsdWVPZigpO3RoaXMucGFyYW1ldGVycy5pPXQuZGV0YWlsLmksdGhpcy5wYXJhbWV0ZXJzLnBvaW50Q29vcmRzPVthW3QuZGV0YWlsLmldWzBdLGFbdC5kZXRhaWwuaV1bMV1dfXN3aXRjaCh0LnR5cGUpe2Nhc2VcImx0XCI6dGhpcy5jYWxjPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5zbmFwVG9HcmlkKHQsZSk7aWYodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aC1pWzBdPjAmJnRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0LWlbMV0+MCl7aWYoXCJ0ZXh0XCI9PT10aGlzLnBhcmFtZXRlcnMudHlwZSlyZXR1cm4gdGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCtpWzBdLHRoaXMucGFyYW1ldGVycy5ib3gueSksdm9pZCB0aGlzLmVsLmF0dHIoXCJmb250LXNpemVcIix0aGlzLnBhcmFtZXRlcnMuZm9udFNpemUtaVswXSk7aT10aGlzLmNoZWNrQXNwZWN0UmF0aW8oaSksdGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCtpWzBdLHRoaXMucGFyYW1ldGVycy5ib3gueStpWzFdKS5zaXplKHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgtaVswXSx0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodC1pWzFdKX19O2JyZWFrO2Nhc2VcInJ0XCI6dGhpcy5jYWxjPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5zbmFwVG9HcmlkKHQsZSwyKTtpZih0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoK2lbMF0+MCYmdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQtaVsxXT4wKXtpZihcInRleHRcIj09PXRoaXMucGFyYW1ldGVycy50eXBlKXJldHVybiB0aGlzLmVsLm1vdmUodGhpcy5wYXJhbWV0ZXJzLmJveC54LWlbMF0sdGhpcy5wYXJhbWV0ZXJzLmJveC55KSx2b2lkIHRoaXMuZWwuYXR0cihcImZvbnQtc2l6ZVwiLHRoaXMucGFyYW1ldGVycy5mb250U2l6ZStpWzBdKTtpPXRoaXMuY2hlY2tBc3BlY3RSYXRpbyhpLCEwKSx0aGlzLmVsLm1vdmUodGhpcy5wYXJhbWV0ZXJzLmJveC54LHRoaXMucGFyYW1ldGVycy5ib3gueStpWzFdKS5zaXplKHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgraVswXSx0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodC1pWzFdKX19O2JyZWFrO2Nhc2VcInJiXCI6dGhpcy5jYWxjPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5zbmFwVG9HcmlkKHQsZSwwKTtpZih0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoK2lbMF0+MCYmdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQraVsxXT4wKXtpZihcInRleHRcIj09PXRoaXMucGFyYW1ldGVycy50eXBlKXJldHVybiB0aGlzLmVsLm1vdmUodGhpcy5wYXJhbWV0ZXJzLmJveC54LWlbMF0sdGhpcy5wYXJhbWV0ZXJzLmJveC55KSx2b2lkIHRoaXMuZWwuYXR0cihcImZvbnQtc2l6ZVwiLHRoaXMucGFyYW1ldGVycy5mb250U2l6ZStpWzBdKTtpPXRoaXMuY2hlY2tBc3BlY3RSYXRpbyhpKSx0aGlzLmVsLm1vdmUodGhpcy5wYXJhbWV0ZXJzLmJveC54LHRoaXMucGFyYW1ldGVycy5ib3gueSkuc2l6ZSh0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoK2lbMF0sdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQraVsxXSl9fTticmVhaztjYXNlXCJsYlwiOnRoaXMuY2FsYz1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuc25hcFRvR3JpZCh0LGUsMSk7aWYodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aC1pWzBdPjAmJnRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0K2lbMV0+MCl7aWYoXCJ0ZXh0XCI9PT10aGlzLnBhcmFtZXRlcnMudHlwZSlyZXR1cm4gdGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCtpWzBdLHRoaXMucGFyYW1ldGVycy5ib3gueSksdm9pZCB0aGlzLmVsLmF0dHIoXCJmb250LXNpemVcIix0aGlzLnBhcmFtZXRlcnMuZm9udFNpemUtaVswXSk7aT10aGlzLmNoZWNrQXNwZWN0UmF0aW8oaSwhMCksdGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCtpWzBdLHRoaXMucGFyYW1ldGVycy5ib3gueSkuc2l6ZSh0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoLWlbMF0sdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQraVsxXSl9fTticmVhaztjYXNlXCJ0XCI6dGhpcy5jYWxjPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5zbmFwVG9HcmlkKHQsZSwyKTtpZih0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodC1pWzFdPjApe2lmKFwidGV4dFwiPT09dGhpcy5wYXJhbWV0ZXJzLnR5cGUpcmV0dXJuO3RoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngsdGhpcy5wYXJhbWV0ZXJzLmJveC55K2lbMV0pLmhlaWdodCh0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodC1pWzFdKX19O2JyZWFrO2Nhc2VcInJcIjp0aGlzLmNhbGM9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnNuYXBUb0dyaWQodCxlLDApO2lmKHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgraVswXT4wKXtpZihcInRleHRcIj09PXRoaXMucGFyYW1ldGVycy50eXBlKXJldHVybjt0aGlzLmVsLm1vdmUodGhpcy5wYXJhbWV0ZXJzLmJveC54LHRoaXMucGFyYW1ldGVycy5ib3gueSkud2lkdGgodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aCtpWzBdKX19O2JyZWFrO2Nhc2VcImJcIjp0aGlzLmNhbGM9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnNuYXBUb0dyaWQodCxlLDApO2lmKHRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0K2lbMV0+MCl7aWYoXCJ0ZXh0XCI9PT10aGlzLnBhcmFtZXRlcnMudHlwZSlyZXR1cm47dGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCx0aGlzLnBhcmFtZXRlcnMuYm94LnkpLmhlaWdodCh0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodCtpWzFdKX19O2JyZWFrO2Nhc2VcImxcIjp0aGlzLmNhbGM9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnNuYXBUb0dyaWQodCxlLDEpO2lmKHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgtaVswXT4wKXtpZihcInRleHRcIj09PXRoaXMucGFyYW1ldGVycy50eXBlKXJldHVybjt0aGlzLmVsLm1vdmUodGhpcy5wYXJhbWV0ZXJzLmJveC54K2lbMF0sdGhpcy5wYXJhbWV0ZXJzLmJveC55KS53aWR0aCh0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoLWlbMF0pfX07YnJlYWs7Y2FzZVwicm90XCI6dGhpcy5jYWxjPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dCt0aGlzLnBhcmFtZXRlcnMucC54LGE9ZSt0aGlzLnBhcmFtZXRlcnMucC55LHM9TWF0aC5hdGFuMih0aGlzLnBhcmFtZXRlcnMucC55LXRoaXMucGFyYW1ldGVycy5ib3gueS10aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodC8yLHRoaXMucGFyYW1ldGVycy5wLngtdGhpcy5wYXJhbWV0ZXJzLmJveC54LXRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgvMikscj1NYXRoLmF0YW4yKGEtdGhpcy5wYXJhbWV0ZXJzLmJveC55LXRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0LzIsaS10aGlzLnBhcmFtZXRlcnMuYm94LngtdGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aC8yKSxvPXRoaXMucGFyYW1ldGVycy5yb3RhdGlvbisxODAqKHItcykvTWF0aC5QSSt0aGlzLm9wdGlvbnMuc25hcFRvQW5nbGUvMjt0aGlzLmVsLmNlbnRlcih0aGlzLnBhcmFtZXRlcnMuYm94LmN4LHRoaXMucGFyYW1ldGVycy5ib3guY3kpLnJvdGF0ZShvLW8ldGhpcy5vcHRpb25zLnNuYXBUb0FuZ2xlLHRoaXMucGFyYW1ldGVycy5ib3guY3gsdGhpcy5wYXJhbWV0ZXJzLmJveC5jeSl9O2JyZWFrO2Nhc2VcInBvaW50XCI6dGhpcy5jYWxjPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5zbmFwVG9HcmlkKHQsZSx0aGlzLnBhcmFtZXRlcnMucG9pbnRDb29yZHNbMF0sdGhpcy5wYXJhbWV0ZXJzLnBvaW50Q29vcmRzWzFdKSxhPXRoaXMuZWwuYXJyYXkoKS52YWx1ZU9mKCk7YVt0aGlzLnBhcmFtZXRlcnMuaV1bMF09dGhpcy5wYXJhbWV0ZXJzLnBvaW50Q29vcmRzWzBdK2lbMF0sYVt0aGlzLnBhcmFtZXRlcnMuaV1bMV09dGhpcy5wYXJhbWV0ZXJzLnBvaW50Q29vcmRzWzFdK2lbMV0sdGhpcy5lbC5wbG90KGEpfX10aGlzLmVsLmZpcmUoXCJyZXNpemVzdGFydFwiLHtkeDp0aGlzLnBhcmFtZXRlcnMueCxkeTp0aGlzLnBhcmFtZXRlcnMueSxldmVudDp0fSksU1ZHLm9uKHdpbmRvdyxcInRvdWNobW92ZS5yZXNpemVcIiwoZnVuY3Rpb24odCl7ZS51cGRhdGUodHx8d2luZG93LmV2ZW50KX0pKSxTVkcub24od2luZG93LFwidG91Y2hlbmQucmVzaXplXCIsKGZ1bmN0aW9uKCl7ZS5kb25lKCl9KSksU1ZHLm9uKHdpbmRvdyxcIm1vdXNlbW92ZS5yZXNpemVcIiwoZnVuY3Rpb24odCl7ZS51cGRhdGUodHx8d2luZG93LmV2ZW50KX0pKSxTVkcub24od2luZG93LFwibW91c2V1cC5yZXNpemVcIiwoZnVuY3Rpb24oKXtlLmRvbmUoKX0pKX0sdC5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHQpe2lmKHQpe3ZhciBlPXRoaXMuX2V4dHJhY3RQb3NpdGlvbih0KSxpPXRoaXMudHJhbnNmb3JtUG9pbnQoZS54LGUueSksYT1pLngtdGhpcy5wYXJhbWV0ZXJzLnAueCxzPWkueS10aGlzLnBhcmFtZXRlcnMucC55O3RoaXMubGFzdFVwZGF0ZUNhbGw9W2Esc10sdGhpcy5jYWxjKGEscyksdGhpcy5lbC5maXJlKFwicmVzaXppbmdcIix7ZHg6YSxkeTpzLGV2ZW50OnR9KX1lbHNlIHRoaXMubGFzdFVwZGF0ZUNhbGwmJnRoaXMuY2FsYyh0aGlzLmxhc3RVcGRhdGVDYWxsWzBdLHRoaXMubGFzdFVwZGF0ZUNhbGxbMV0pfSx0LnByb3RvdHlwZS5kb25lPWZ1bmN0aW9uKCl7dGhpcy5sYXN0VXBkYXRlQ2FsbD1udWxsLFNWRy5vZmYod2luZG93LFwibW91c2Vtb3ZlLnJlc2l6ZVwiKSxTVkcub2ZmKHdpbmRvdyxcIm1vdXNldXAucmVzaXplXCIpLFNWRy5vZmYod2luZG93LFwidG91Y2htb3ZlLnJlc2l6ZVwiKSxTVkcub2ZmKHdpbmRvdyxcInRvdWNoZW5kLnJlc2l6ZVwiKSx0aGlzLmVsLmZpcmUoXCJyZXNpemVkb25lXCIpfSx0LnByb3RvdHlwZS5zbmFwVG9HcmlkPWZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzO3JldHVybiB2b2lkIDAhPT1hP3M9WyhpK3QpJXRoaXMub3B0aW9ucy5zbmFwVG9HcmlkLChhK2UpJXRoaXMub3B0aW9ucy5zbmFwVG9HcmlkXTooaT1udWxsPT1pPzM6aSxzPVsodGhpcy5wYXJhbWV0ZXJzLmJveC54K3QrKDEmaT8wOnRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgpKSV0aGlzLm9wdGlvbnMuc25hcFRvR3JpZCwodGhpcy5wYXJhbWV0ZXJzLmJveC55K2UrKDImaT8wOnRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0KSkldGhpcy5vcHRpb25zLnNuYXBUb0dyaWRdKSx0PDAmJihzWzBdLT10aGlzLm9wdGlvbnMuc25hcFRvR3JpZCksZTwwJiYoc1sxXS09dGhpcy5vcHRpb25zLnNuYXBUb0dyaWQpLHQtPU1hdGguYWJzKHNbMF0pPHRoaXMub3B0aW9ucy5zbmFwVG9HcmlkLzI/c1swXTpzWzBdLSh0PDA/LXRoaXMub3B0aW9ucy5zbmFwVG9HcmlkOnRoaXMub3B0aW9ucy5zbmFwVG9HcmlkKSxlLT1NYXRoLmFicyhzWzFdKTx0aGlzLm9wdGlvbnMuc25hcFRvR3JpZC8yP3NbMV06c1sxXS0oZTwwPy10aGlzLm9wdGlvbnMuc25hcFRvR3JpZDp0aGlzLm9wdGlvbnMuc25hcFRvR3JpZCksdGhpcy5jb25zdHJhaW50VG9Cb3godCxlLGksYSl9LHQucHJvdG90eXBlLmNvbnN0cmFpbnRUb0JveD1mdW5jdGlvbih0LGUsaSxhKXt2YXIgcyxyLG89dGhpcy5vcHRpb25zLmNvbnN0cmFpbnR8fHt9O3JldHVybiB2b2lkIDAhPT1hPyhzPWkscj1hKToocz10aGlzLnBhcmFtZXRlcnMuYm94LngrKDEmaT8wOnRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgpLHI9dGhpcy5wYXJhbWV0ZXJzLmJveC55KygyJmk/MDp0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodCkpLHZvaWQgMCE9PW8ubWluWCYmcyt0PG8ubWluWCYmKHQ9by5taW5YLXMpLHZvaWQgMCE9PW8ubWF4WCYmcyt0Pm8ubWF4WCYmKHQ9by5tYXhYLXMpLHZvaWQgMCE9PW8ubWluWSYmcitlPG8ubWluWSYmKGU9by5taW5ZLXIpLHZvaWQgMCE9PW8ubWF4WSYmcitlPm8ubWF4WSYmKGU9by5tYXhZLXIpLFt0LGVdfSx0LnByb3RvdHlwZS5jaGVja0FzcGVjdFJhdGlvPWZ1bmN0aW9uKHQsZSl7aWYoIXRoaXMub3B0aW9ucy5zYXZlQXNwZWN0UmF0aW8pcmV0dXJuIHQ7dmFyIGk9dC5zbGljZSgpLGE9dGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aC90aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodCxzPXRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgrdFswXSxyPXRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0LXRbMV0sbz1zL3I7cmV0dXJuIG88YT8oaVsxXT1zL2EtdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQsZSYmKGlbMV09LWlbMV0pKTpvPmEmJihpWzBdPXRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgtciphLGUmJihpWzBdPS1pWzBdKSksaX0sU1ZHLmV4dGVuZChTVkcuRWxlbWVudCx7cmVzaXplOmZ1bmN0aW9uKGUpe3JldHVybih0aGlzLnJlbWVtYmVyKFwiX3Jlc2l6ZUhhbmRsZXJcIil8fG5ldyB0KHRoaXMpKS5pbml0KGV8fHt9KSx0aGlzfX0pLFNWRy5FbGVtZW50LnByb3RvdHlwZS5yZXNpemUuZGVmYXVsdHM9e3NuYXBUb0FuZ2xlOi4xLHNuYXBUb0dyaWQ6MSxjb25zdHJhaW50Ont9LHNhdmVBc3BlY3RSYXRpbzohMX19KS5jYWxsKHRoaXMpfSgpLHZvaWQgMD09PXdpbmRvdy5BcGV4JiYod2luZG93LkFwZXg9e30pO3ZhciBPdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5OlwiaW5pdE1vZHVsZXNcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY3R4LnB1YmxpY01ldGhvZHM9W1widXBkYXRlT3B0aW9uc1wiLFwidXBkYXRlU2VyaWVzXCIsXCJhcHBlbmREYXRhXCIsXCJhcHBlbmRTZXJpZXNcIixcInRvZ2dsZVNlcmllc1wiLFwic2hvd1Nlcmllc1wiLFwiaGlkZVNlcmllc1wiLFwic2V0TG9jYWxlXCIsXCJyZXNldFNlcmllc1wiLFwiem9vbVhcIixcInRvZ2dsZURhdGFQb2ludFNlbGVjdGlvblwiLFwiZGF0YVVSSVwiLFwiZXhwb3J0VG9DU1ZcIixcImFkZFhheGlzQW5ub3RhdGlvblwiLFwiYWRkWWF4aXNBbm5vdGF0aW9uXCIsXCJhZGRQb2ludEFubm90YXRpb25cIixcImNsZWFyQW5ub3RhdGlvbnNcIixcInJlbW92ZUFubm90YXRpb25cIixcInBhcGVyXCIsXCJkZXN0cm95XCJdLHRoaXMuY3R4LmV2ZW50TGlzdD1bXCJjbGlja1wiLFwibW91c2Vkb3duXCIsXCJtb3VzZW1vdmVcIixcIm1vdXNlbGVhdmVcIixcInRvdWNoc3RhcnRcIixcInRvdWNobW92ZVwiLFwidG91Y2hsZWF2ZVwiLFwibW91c2V1cFwiLFwidG91Y2hlbmRcIl0sdGhpcy5jdHguYW5pbWF0aW9ucz1uZXcgYih0aGlzLmN0eCksdGhpcy5jdHguYXhlcz1uZXcgSih0aGlzLmN0eCksdGhpcy5jdHguY29yZT1uZXcgRHQodGhpcy5jdHguZWwsdGhpcy5jdHgpLHRoaXMuY3R4LmNvbmZpZz1uZXcgRSh7fSksdGhpcy5jdHguZGF0YT1uZXcgVyh0aGlzLmN0eCksdGhpcy5jdHguZ3JpZD1uZXcgaih0aGlzLmN0eCksdGhpcy5jdHguZ3JhcGhpY3M9bmV3IG0odGhpcy5jdHgpLHRoaXMuY3R4LmNvcmVVdGlscz1uZXcgeSh0aGlzLmN0eCksdGhpcy5jdHguY3Jvc3NoYWlycz1uZXcgUSh0aGlzLmN0eCksdGhpcy5jdHguZXZlbnRzPW5ldyBaKHRoaXMuY3R4KSx0aGlzLmN0eC5leHBvcnRzPW5ldyBHKHRoaXMuY3R4KSx0aGlzLmN0eC5sb2NhbGl6YXRpb249bmV3ICQodGhpcy5jdHgpLHRoaXMuY3R4Lm9wdGlvbnM9bmV3IEwsdGhpcy5jdHgucmVzcG9uc2l2ZT1uZXcgSyh0aGlzLmN0eCksdGhpcy5jdHguc2VyaWVzPW5ldyBOKHRoaXMuY3R4KSx0aGlzLmN0eC50aGVtZT1uZXcgdHQodGhpcy5jdHgpLHRoaXMuY3R4LmZvcm1hdHRlcnM9bmV3IFQodGhpcy5jdHgpLHRoaXMuY3R4LnRpdGxlU3VidGl0bGU9bmV3IGV0KHRoaXMuY3R4KSx0aGlzLmN0eC5sZWdlbmQ9bmV3IGx0KHRoaXMuY3R4KSx0aGlzLmN0eC50b29sYmFyPW5ldyBodCh0aGlzLmN0eCksdGhpcy5jdHgudG9vbHRpcD1uZXcgYnQodGhpcy5jdHgpLHRoaXMuY3R4LmRpbWVuc2lvbnM9bmV3IG90KHRoaXMuY3R4KSx0aGlzLmN0eC51cGRhdGVIZWxwZXJzPW5ldyBIdCh0aGlzLmN0eCksdGhpcy5jdHguem9vbVBhblNlbGVjdGlvbj1uZXcgY3QodGhpcy5jdHgpLHRoaXMuY3R4LncuZ2xvYmFscy50b29sdGlwPW5ldyBidCh0aGlzLmN0eCl9fV0pLHR9KCksTnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIHIodCxbe2tleTpcImNsZWFyXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5pc1VwZGF0aW5nO3RoaXMuY3R4Lnpvb21QYW5TZWxlY3Rpb24mJnRoaXMuY3R4Lnpvb21QYW5TZWxlY3Rpb24uZGVzdHJveSgpLHRoaXMuY3R4LnRvb2xiYXImJnRoaXMuY3R4LnRvb2xiYXIuZGVzdHJveSgpLHRoaXMuY3R4LmFuaW1hdGlvbnM9bnVsbCx0aGlzLmN0eC5heGVzPW51bGwsdGhpcy5jdHguYW5ub3RhdGlvbnM9bnVsbCx0aGlzLmN0eC5jb3JlPW51bGwsdGhpcy5jdHguZGF0YT1udWxsLHRoaXMuY3R4LmdyaWQ9bnVsbCx0aGlzLmN0eC5zZXJpZXM9bnVsbCx0aGlzLmN0eC5yZXNwb25zaXZlPW51bGwsdGhpcy5jdHgudGhlbWU9bnVsbCx0aGlzLmN0eC5mb3JtYXR0ZXJzPW51bGwsdGhpcy5jdHgudGl0bGVTdWJ0aXRsZT1udWxsLHRoaXMuY3R4LmxlZ2VuZD1udWxsLHRoaXMuY3R4LmRpbWVuc2lvbnM9bnVsbCx0aGlzLmN0eC5vcHRpb25zPW51bGwsdGhpcy5jdHguY3Jvc3NoYWlycz1udWxsLHRoaXMuY3R4Lnpvb21QYW5TZWxlY3Rpb249bnVsbCx0aGlzLmN0eC51cGRhdGVIZWxwZXJzPW51bGwsdGhpcy5jdHgudG9vbGJhcj1udWxsLHRoaXMuY3R4LmxvY2FsaXphdGlvbj1udWxsLHRoaXMuY3R4LncuZ2xvYmFscy50b29sdGlwPW51bGwsdGhpcy5jbGVhckRvbUVsZW1lbnRzKHtpc1VwZGF0aW5nOmV9KX19LHtrZXk6XCJraWxsU1ZHXCIsdmFsdWU6ZnVuY3Rpb24odCl7dC5lYWNoKChmdW5jdGlvbih0LGUpe3RoaXMucmVtb3ZlQ2xhc3MoXCIqXCIpLHRoaXMub2ZmKCksdGhpcy5zdG9wKCl9KSwhMCksdC51bmdyb3VwKCksdC5jbGVhcigpfX0se2tleTpcImNsZWFyRG9tRWxlbWVudHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dC5pc1VwZGF0aW5nLGE9dGhpcy53Lmdsb2JhbHMuZG9tLlBhcGVyLm5vZGU7YS5wYXJlbnROb2RlJiZhLnBhcmVudE5vZGUucGFyZW50Tm9kZSYmIWkmJihhLnBhcmVudE5vZGUucGFyZW50Tm9kZS5zdHlsZS5taW5IZWlnaHQ9XCJ1bnNldFwiKTt2YXIgcz10aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsO3MmJnRoaXMuY3R4LmV2ZW50TGlzdC5mb3JFYWNoKChmdW5jdGlvbih0KXtzLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxlLmN0eC5ldmVudHMuZG9jdW1lbnRFdmVudCl9KSk7dmFyIHI9dGhpcy53Lmdsb2JhbHMuZG9tO2lmKG51bGwhPT10aGlzLmN0eC5lbClmb3IoO3RoaXMuY3R4LmVsLmZpcnN0Q2hpbGQ7KXRoaXMuY3R4LmVsLnJlbW92ZUNoaWxkKHRoaXMuY3R4LmVsLmZpcnN0Q2hpbGQpO3RoaXMua2lsbFNWRyhyLlBhcGVyKSxyLlBhcGVyLnJlbW92ZSgpLHIuZWxXcmFwPW51bGwsci5lbEdyYXBoaWNhbD1udWxsLHIuZWxMZWdlbmRXcmFwPW51bGwsci5lbExlZ2VuZEZvcmVpZ249bnVsbCxyLmJhc2VFbD1udWxsLHIuZWxHcmlkUmVjdD1udWxsLHIuZWxHcmlkUmVjdE1hc2s9bnVsbCxyLmVsR3JpZFJlY3RNYXJrZXJNYXNrPW51bGwsci5lbEZvcmVjYXN0TWFzaz1udWxsLHIuZWxOb25Gb3JlY2FzdE1hc2s9bnVsbCxyLmVsRGVmcz1udWxsfX1dKSx0fSgpLFd0PW5ldyBXZWFrTWFwO3ZhciBCdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxpKXthKHRoaXMsdCksdGhpcy5vcHRzPWksdGhpcy5jdHg9dGhpcyx0aGlzLnc9bmV3IEYoaSkuaW5pdCgpLHRoaXMuZWw9ZSx0aGlzLncuZ2xvYmFscy5jdWlkPXgucmFuZG9tSWQoKSx0aGlzLncuZ2xvYmFscy5jaGFydElEPXRoaXMudy5jb25maWcuY2hhcnQuaWQ/eC5lc2NhcGVTdHJpbmcodGhpcy53LmNvbmZpZy5jaGFydC5pZCk6dGhpcy53Lmdsb2JhbHMuY3VpZCxuZXcgT3QodGhpcykuaW5pdE1vZHVsZXMoKSx0aGlzLmNyZWF0ZT14LmJpbmQodGhpcy5jcmVhdGUsdGhpcyksdGhpcy53aW5kb3dSZXNpemVIYW5kbGVyPXRoaXMuX3dpbmRvd1Jlc2l6ZUhhbmRsZXIuYmluZCh0aGlzKSx0aGlzLnBhcmVudFJlc2l6ZUhhbmRsZXI9dGhpcy5fcGFyZW50UmVzaXplQ2FsbGJhY2suYmluZCh0aGlzKX1yZXR1cm4gcih0LFt7a2V5OlwicmVuZGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSxpKXtpZihudWxsIT09dC5lbCl7dm9pZCAwPT09QXBleC5fY2hhcnRJbnN0YW5jZXMmJihBcGV4Ll9jaGFydEluc3RhbmNlcz1bXSksdC53LmNvbmZpZy5jaGFydC5pZCYmQXBleC5fY2hhcnRJbnN0YW5jZXMucHVzaCh7aWQ6dC53Lmdsb2JhbHMuY2hhcnRJRCxncm91cDp0LncuY29uZmlnLmNoYXJ0Lmdyb3VwLGNoYXJ0OnR9KSx0LnNldExvY2FsZSh0LncuY29uZmlnLmNoYXJ0LmRlZmF1bHRMb2NhbGUpO3ZhciBhPXQudy5jb25maWcuY2hhcnQuZXZlbnRzLmJlZm9yZU1vdW50O2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGEmJmEodCx0LncpLHQuZXZlbnRzLmZpcmVFdmVudChcImJlZm9yZU1vdW50XCIsW3QsdC53XSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIix0LndpbmRvd1Jlc2l6ZUhhbmRsZXIpLGZ1bmN0aW9uKHQsZSl7dmFyIGk9ITE7aWYodC5ub2RlVHlwZSE9PU5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERSl7dmFyIGE9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcIm5vbmVcIiE9PXQuc3R5bGUuZGlzcGxheSYmMCE9PWEud2lkdGh8fChpPSEwKX12YXIgcz1uZXcgUmVzaXplT2JzZXJ2ZXIoKGZ1bmN0aW9uKGEpe2kmJmUuY2FsbCh0LGEpLGk9ITB9KSk7dC5ub2RlVHlwZT09PU5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERT9BcnJheS5mcm9tKHQuY2hpbGRyZW4pLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBzLm9ic2VydmUodCl9KSk6cy5vYnNlcnZlKHQpLFd0LnNldChlLHMpfSh0LmVsLnBhcmVudE5vZGUsdC5wYXJlbnRSZXNpemVIYW5kbGVyKSwhdC5jc3Mpe3ZhciBzPXQuZWwuZ2V0Um9vdE5vZGUmJnQuZWwuZ2V0Um9vdE5vZGUoKSxyPXguaXMoXCJTaGFkb3dSb290XCIscyksbz10LmVsLm93bmVyRG9jdW1lbnQsbj1vLmdldEVsZW1lbnRCeUlkKFwiYXBleGNoYXJ0cy1jc3NcIik7IXImJm58fCh0LmNzcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIiksdC5jc3MuaWQ9XCJhcGV4Y2hhcnRzLWNzc1wiLHQuY3NzLnRleHRDb250ZW50PSdAa2V5ZnJhbWVzIG9wYXF1ZSB7XFxuICAwJSB7XFxuICAgICAgb3BhY2l0eTogMFxcbiAgfVxcblxcbiAgdG8ge1xcbiAgICAgIG9wYWNpdHk6IDFcXG4gIH1cXG59XFxuXFxuQGtleWZyYW1lcyByZXNpemVhbmltIHtcXG4gIDAlLHRvIHtcXG4gICAgICBvcGFjaXR5OiAwXFxuICB9XFxufVxcblxcbi5hcGV4Y2hhcnRzLWNhbnZhcyB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB1c2VyLXNlbGVjdDogbm9uZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy1jYW52YXMgOjotd2Via2l0LXNjcm9sbGJhciB7XFxuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XFxuICB3aWR0aDogNnB4XFxufVxcblxcbi5hcGV4Y2hhcnRzLWNhbnZhcyA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcXG4gIGJvcmRlci1yYWRpdXM6IDRweDtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwwLDAsLjUpO1xcbiAgYm94LXNoYWRvdzogMCAwIDFweCByZ2JhKDI1NSwyNTUsMjU1LC41KTtcXG4gIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDFweCByZ2JhKDI1NSwyNTUsMjU1LC41KVxcbn1cXG5cXG4uYXBleGNoYXJ0cy1pbm5lciB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmVcXG59XFxuXFxuLmFwZXhjaGFydHMtdGV4dCB0c3BhbiB7XFxuICBmb250LWZhbWlseTogaW5oZXJpdFxcbn1cXG5cXG4ubGVnZW5kLW1vdXNlb3Zlci1pbmFjdGl2ZSB7XFxuICB0cmFuc2l0aW9uOiAuMTVzIGVhc2UgYWxsO1xcbiAgb3BhY2l0eTogLjJcXG59XFxuXFxuLmFwZXhjaGFydHMtbGVnZW5kLXRleHQge1xcbiAgcGFkZGluZy1sZWZ0OiAxNXB4O1xcbiAgbWFyZ2luLWxlZnQ6IC0xNXB4O1xcbn1cXG5cXG4uYXBleGNoYXJ0cy1zZXJpZXMtY29sbGFwc2VkIHtcXG4gIG9wYWNpdHk6IDBcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcCB7XFxuICBib3JkZXItcmFkaXVzOiA1cHg7XFxuICBib3gtc2hhZG93OiAycHggMnB4IDZweCAtNHB4ICM5OTk7XFxuICBjdXJzb3I6IGRlZmF1bHQ7XFxuICBmb250LXNpemU6IDE0cHg7XFxuICBsZWZ0OiA2MnB4O1xcbiAgb3BhY2l0eTogMDtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAyMHB4O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gIHotaW5kZXg6IDEyO1xcbiAgdHJhbnNpdGlvbjogLjE1cyBlYXNlIGFsbFxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLmFwZXhjaGFydHMtYWN0aXZlIHtcXG4gIG9wYWNpdHk6IDE7XFxuICB0cmFuc2l0aW9uOiAuMTVzIGVhc2UgYWxsXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAuYXBleGNoYXJ0cy10aGVtZS1saWdodCB7XFxuICBib3JkZXI6IDFweCBzb2xpZCAjZTNlM2UzO1xcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwuOTYpXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAuYXBleGNoYXJ0cy10aGVtZS1kYXJrIHtcXG4gIGNvbG9yOiAjZmZmO1xcbiAgYmFja2dyb3VuZDogcmdiYSgzMCwzMCwzMCwuOClcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcCAqIHtcXG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0XFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGl0bGUge1xcbiAgcGFkZGluZzogNnB4O1xcbiAgZm9udC1zaXplOiAxNXB4O1xcbiAgbWFyZ2luLWJvdHRvbTogNHB4XFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAuYXBleGNoYXJ0cy10aGVtZS1saWdodCAuYXBleGNoYXJ0cy10b29sdGlwLXRpdGxlIHtcXG4gIGJhY2tncm91bmQ6ICNlY2VmZjE7XFxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZFxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLmFwZXhjaGFydHMtdGhlbWUtZGFyayAuYXBleGNoYXJ0cy10b29sdGlwLXRpdGxlIHtcXG4gIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsLjcpO1xcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICMzMzNcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLXZhbHVlLC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC15LXZhbHVlLC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC16LXZhbHVlIHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIG1hcmdpbi1sZWZ0OiA1cHg7XFxuICBmb250LXdlaWdodDogNjAwXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC1nb2Fscy1sYWJlbDplbXB0eSwuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtdmFsdWU6ZW1wdHksLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LXktbGFiZWw6ZW1wdHksLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LXktdmFsdWU6ZW1wdHksLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LXotdmFsdWU6ZW1wdHksLmFwZXhjaGFydHMtdG9vbHRpcC10aXRsZTplbXB0eSB7XFxuICBkaXNwbGF5OiBub25lXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC1nb2Fscy1sYWJlbCwuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtdmFsdWUge1xcbiAgcGFkZGluZzogNnB4IDAgNXB4XFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtZ29hbHMtZ3JvdXAsLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLWxhYmVsLC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC1nb2Fscy12YWx1ZSB7XFxuICBkaXNwbGF5OiBmbGV4XFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC1nb2Fscy1sYWJlbDpub3QoOmVtcHR5KSwuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtdmFsdWU6bm90KDplbXB0eSkge1xcbiAgbWFyZ2luLXRvcDogLTZweFxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLW1hcmtlciB7XFxuICB3aWR0aDogMTJweDtcXG4gIGhlaWdodDogMTJweDtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHRvcDogMDtcXG4gIG1hcmdpbi1yaWdodDogMTBweDtcXG4gIGJvcmRlci1yYWRpdXM6IDUwJVxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLXNlcmllcy1ncm91cCB7XFxuICBwYWRkaW5nOiAwIDEwcHg7XFxuICBkaXNwbGF5OiBub25lO1xcbiAgdGV4dC1hbGlnbjogbGVmdDtcXG4gIGp1c3RpZnktY29udGVudDogbGVmdDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXJcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC1zZXJpZXMtZ3JvdXAuYXBleGNoYXJ0cy1hY3RpdmUgLmFwZXhjaGFydHMtdG9vbHRpcC1tYXJrZXIge1xcbiAgb3BhY2l0eTogMVxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLXNlcmllcy1ncm91cC5hcGV4Y2hhcnRzLWFjdGl2ZSwuYXBleGNoYXJ0cy10b29sdGlwLXNlcmllcy1ncm91cDpsYXN0LWNoaWxkIHtcXG4gIHBhZGRpbmctYm90dG9tOiA0cHhcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC1zZXJpZXMtZ3JvdXAtaGlkZGVuIHtcXG4gIG9wYWNpdHk6IDA7XFxuICBoZWlnaHQ6IDA7XFxuICBsaW5lLWhlaWdodDogMDtcXG4gIHBhZGRpbmc6IDAhaW1wb3J0YW50XFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAteS1ncm91cCB7XFxuICBwYWRkaW5nOiA2cHggMCA1cHhcXG59XFxuXFxuLmFwZXhjaGFydHMtY3VzdG9tLXRvb2x0aXAsLmFwZXhjaGFydHMtdG9vbHRpcC1ib3gge1xcbiAgcGFkZGluZzogNHB4IDhweFxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLWJveFBsb3Qge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLWJveD5kaXYge1xcbiAgbWFyZ2luOiA0cHggMFxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLWJveCBzcGFuLnZhbHVlIHtcXG4gIGZvbnQtd2VpZ2h0OiA3MDBcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC1yYW5nZWJhciB7XFxuICBwYWRkaW5nOiA1cHggOHB4XFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtcmFuZ2ViYXIgLmNhdGVnb3J5IHtcXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XFxuICBjb2xvcjogIzc3N1xcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLXJhbmdlYmFyIC5zZXJpZXMtbmFtZSB7XFxuICBmb250LXdlaWdodDogNzAwO1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICBtYXJnaW4tYm90dG9tOiA1cHhcXG59XFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLC5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcCB7XFxuICBvcGFjaXR5OiAwO1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICBjb2xvcjogIzM3M2QzZjtcXG4gIGZvbnQtc2l6ZTogMTNweDtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIGJvcmRlci1yYWRpdXM6IDJweDtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHotaW5kZXg6IDEwO1xcbiAgYmFja2dyb3VuZDogI2VjZWZmMTtcXG4gIGJvcmRlcjogMXB4IHNvbGlkICM5MGE0YWVcXG59XFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwIHtcXG4gIHBhZGRpbmc6IDlweCAxMHB4O1xcbiAgdHJhbnNpdGlvbjogLjE1cyBlYXNlIGFsbFxcbn1cXG5cXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAuYXBleGNoYXJ0cy10aGVtZS1kYXJrIHtcXG4gIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsLjcpO1xcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLDAsMCwuNSk7XFxuICBjb2xvcjogI2ZmZlxcbn1cXG5cXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXA6YWZ0ZXIsLmFwZXhjaGFydHMteGF4aXN0b29sdGlwOmJlZm9yZSB7XFxuICBsZWZ0OiA1MCU7XFxuICBib3JkZXI6IHNvbGlkIHRyYW5zcGFyZW50O1xcbiAgY29udGVudDogXCIgXCI7XFxuICBoZWlnaHQ6IDA7XFxuICB3aWR0aDogMDtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lXFxufVxcblxcbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcDphZnRlciB7XFxuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgYm9yZGVyLXdpZHRoOiA2cHg7XFxuICBtYXJnaW4tbGVmdDogLTZweFxcbn1cXG5cXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXA6YmVmb3JlIHtcXG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBib3JkZXItd2lkdGg6IDdweDtcXG4gIG1hcmdpbi1sZWZ0OiAtN3B4XFxufVxcblxcbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC1ib3R0b206YWZ0ZXIsLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLWJvdHRvbTpiZWZvcmUge1xcbiAgYm90dG9tOiAxMDAlXFxufVxcblxcbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC10b3A6YWZ0ZXIsLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLXRvcDpiZWZvcmUge1xcbiAgdG9wOiAxMDAlXFxufVxcblxcbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC1ib3R0b206YWZ0ZXIge1xcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI2VjZWZmMVxcbn1cXG5cXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtYm90dG9tOmJlZm9yZSB7XFxuICBib3JkZXItYm90dG9tLWNvbG9yOiAjOTBhNGFlXFxufVxcblxcbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC1ib3R0b20uYXBleGNoYXJ0cy10aGVtZS1kYXJrOmFmdGVyLC5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC1ib3R0b20uYXBleGNoYXJ0cy10aGVtZS1kYXJrOmJlZm9yZSB7XFxuICBib3JkZXItYm90dG9tLWNvbG9yOiByZ2JhKDAsMCwwLC41KVxcbn1cXG5cXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtdG9wOmFmdGVyIHtcXG4gIGJvcmRlci10b3AtY29sb3I6ICNlY2VmZjFcXG59XFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLXRvcDpiZWZvcmUge1xcbiAgYm9yZGVyLXRvcC1jb2xvcjogIzkwYTRhZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtdG9wLmFwZXhjaGFydHMtdGhlbWUtZGFyazphZnRlciwuYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtdG9wLmFwZXhjaGFydHMtdGhlbWUtZGFyazpiZWZvcmUge1xcbiAgYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgwLDAsMCwuNSlcXG59XFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLmFwZXhjaGFydHMtYWN0aXZlIHtcXG4gIG9wYWNpdHk6IDE7XFxuICB0cmFuc2l0aW9uOiAuMTVzIGVhc2UgYWxsXFxufVxcblxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcCB7XFxuICBwYWRkaW5nOiA0cHggMTBweFxcbn1cXG5cXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAuYXBleGNoYXJ0cy10aGVtZS1kYXJrIHtcXG4gIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsLjcpO1xcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLDAsMCwuNSk7XFxuICBjb2xvcjogI2ZmZlxcbn1cXG5cXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXA6YWZ0ZXIsLmFwZXhjaGFydHMteWF4aXN0b29sdGlwOmJlZm9yZSB7XFxuICB0b3A6IDUwJTtcXG4gIGJvcmRlcjogc29saWQgdHJhbnNwYXJlbnQ7XFxuICBjb250ZW50OiBcIiBcIjtcXG4gIGhlaWdodDogMDtcXG4gIHdpZHRoOiAwO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmVcXG59XFxuXFxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwOmFmdGVyIHtcXG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBib3JkZXItd2lkdGg6IDZweDtcXG4gIG1hcmdpbi10b3A6IC02cHhcXG59XFxuXFxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwOmJlZm9yZSB7XFxuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgYm9yZGVyLXdpZHRoOiA3cHg7XFxuICBtYXJnaW4tdG9wOiAtN3B4XFxufVxcblxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1sZWZ0OmFmdGVyLC5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1sZWZ0OmJlZm9yZSB7XFxuICBsZWZ0OiAxMDAlXFxufVxcblxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1yaWdodDphZnRlciwuYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtcmlnaHQ6YmVmb3JlIHtcXG4gIHJpZ2h0OiAxMDAlXFxufVxcblxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1sZWZ0OmFmdGVyIHtcXG4gIGJvcmRlci1sZWZ0LWNvbG9yOiAjZWNlZmYxXFxufVxcblxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1sZWZ0OmJlZm9yZSB7XFxuICBib3JkZXItbGVmdC1jb2xvcjogIzkwYTRhZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtbGVmdC5hcGV4Y2hhcnRzLXRoZW1lLWRhcms6YWZ0ZXIsLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLWxlZnQuYXBleGNoYXJ0cy10aGVtZS1kYXJrOmJlZm9yZSB7XFxuICBib3JkZXItbGVmdC1jb2xvcjogcmdiYSgwLDAsMCwuNSlcXG59XFxuXFxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLXJpZ2h0OmFmdGVyIHtcXG4gIGJvcmRlci1yaWdodC1jb2xvcjogI2VjZWZmMVxcbn1cXG5cXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtcmlnaHQ6YmVmb3JlIHtcXG4gIGJvcmRlci1yaWdodC1jb2xvcjogIzkwYTRhZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtcmlnaHQuYXBleGNoYXJ0cy10aGVtZS1kYXJrOmFmdGVyLC5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1yaWdodC5hcGV4Y2hhcnRzLXRoZW1lLWRhcms6YmVmb3JlIHtcXG4gIGJvcmRlci1yaWdodC1jb2xvcjogcmdiYSgwLDAsMCwuNSlcXG59XFxuXFxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLmFwZXhjaGFydHMtYWN0aXZlIHtcXG4gIG9wYWNpdHk6IDFcXG59XFxuXFxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLWhpZGRlbiB7XFxuICBkaXNwbGF5OiBub25lXFxufVxcblxcbi5hcGV4Y2hhcnRzLXhjcm9zc2hhaXJzLC5hcGV4Y2hhcnRzLXljcm9zc2hhaXJzIHtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbiAgb3BhY2l0eTogMDtcXG4gIHRyYW5zaXRpb246IC4xNXMgZWFzZSBhbGxcXG59XFxuXFxuLmFwZXhjaGFydHMteGNyb3NzaGFpcnMuYXBleGNoYXJ0cy1hY3RpdmUsLmFwZXhjaGFydHMteWNyb3NzaGFpcnMuYXBleGNoYXJ0cy1hY3RpdmUge1xcbiAgb3BhY2l0eTogMTtcXG4gIHRyYW5zaXRpb246IC4xNXMgZWFzZSBhbGxcXG59XFxuXFxuLmFwZXhjaGFydHMteWNyb3NzaGFpcnMtaGlkZGVuIHtcXG4gIG9wYWNpdHk6IDBcXG59XFxuXFxuLmFwZXhjaGFydHMtc2VsZWN0aW9uLXJlY3Qge1xcbiAgY3Vyc29yOiBtb3ZlXFxufVxcblxcbi5zdmdfc2VsZWN0X2JvdW5kaW5nUmVjdCwuc3ZnX3NlbGVjdF9wb2ludHNfcm90IHtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbiAgb3BhY2l0eTogMDtcXG4gIHZpc2liaWxpdHk6IGhpZGRlblxcbn1cXG5cXG4uYXBleGNoYXJ0cy1zZWxlY3Rpb24tcmVjdCtnIC5zdmdfc2VsZWN0X2JvdW5kaW5nUmVjdCwuYXBleGNoYXJ0cy1zZWxlY3Rpb24tcmVjdCtnIC5zdmdfc2VsZWN0X3BvaW50c19yb3Qge1xcbiAgb3BhY2l0eTogMDtcXG4gIHZpc2liaWxpdHk6IGhpZGRlblxcbn1cXG5cXG4uYXBleGNoYXJ0cy1zZWxlY3Rpb24tcmVjdCtnIC5zdmdfc2VsZWN0X3BvaW50c19sLC5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1yZWN0K2cgLnN2Z19zZWxlY3RfcG9pbnRzX3Ige1xcbiAgY3Vyc29yOiBldy1yZXNpemU7XFxuICBvcGFjaXR5OiAxO1xcbiAgdmlzaWJpbGl0eTogdmlzaWJsZVxcbn1cXG5cXG4uc3ZnX3NlbGVjdF9wb2ludHMge1xcbiAgZmlsbDogI2VmZWZlZjtcXG4gIHN0cm9rZTogIzMzMztcXG4gIHJ4OiAyXFxufVxcblxcbi5hcGV4Y2hhcnRzLXN2Zy5hcGV4Y2hhcnRzLXpvb21hYmxlLmhvdmVyaW5nLXpvb20ge1xcbiAgY3Vyc29yOiBjcm9zc2hhaXJcXG59XFxuXFxuLmFwZXhjaGFydHMtc3ZnLmFwZXhjaGFydHMtem9vbWFibGUuaG92ZXJpbmctcGFuIHtcXG4gIGN1cnNvcjogbW92ZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy1tZW51LWljb24sLmFwZXhjaGFydHMtcGFuLWljb24sLmFwZXhjaGFydHMtcmVzZXQtaWNvbiwuYXBleGNoYXJ0cy1zZWxlY3Rpb24taWNvbiwuYXBleGNoYXJ0cy10b29sYmFyLWN1c3RvbS1pY29uLC5hcGV4Y2hhcnRzLXpvb20taWNvbiwuYXBleGNoYXJ0cy16b29taW4taWNvbiwuYXBleGNoYXJ0cy16b29tb3V0LWljb24ge1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgd2lkdGg6IDIwcHg7XFxuICBoZWlnaHQ6IDIwcHg7XFxuICBsaW5lLWhlaWdodDogMjRweDtcXG4gIGNvbG9yOiAjNmU4MTkyO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyXFxufVxcblxcbi5hcGV4Y2hhcnRzLW1lbnUtaWNvbiBzdmcsLmFwZXhjaGFydHMtcmVzZXQtaWNvbiBzdmcsLmFwZXhjaGFydHMtem9vbS1pY29uIHN2ZywuYXBleGNoYXJ0cy16b29taW4taWNvbiBzdmcsLmFwZXhjaGFydHMtem9vbW91dC1pY29uIHN2ZyB7XFxuICBmaWxsOiAjNmU4MTkyXFxufVxcblxcbi5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1pY29uIHN2ZyB7XFxuICBmaWxsOiAjNDQ0O1xcbiAgdHJhbnNmb3JtOiBzY2FsZSguNzYpXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsgLmFwZXhjaGFydHMtbWVudS1pY29uIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLXBhbi1pY29uIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLXJlc2V0LWljb24gc3ZnLC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsgLmFwZXhjaGFydHMtc2VsZWN0aW9uLWljb24gc3ZnLC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsgLmFwZXhjaGFydHMtdG9vbGJhci1jdXN0b20taWNvbiBzdmcsLmFwZXhjaGFydHMtdGhlbWUtZGFyayAuYXBleGNoYXJ0cy16b29tLWljb24gc3ZnLC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsgLmFwZXhjaGFydHMtem9vbWluLWljb24gc3ZnLC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsgLmFwZXhjaGFydHMtem9vbW91dC1pY29uIHN2ZyB7XFxuICBmaWxsOiAjZjNmNGY1XFxufVxcblxcbi5hcGV4Y2hhcnRzLWNhbnZhcyAuYXBleGNoYXJ0cy1yZXNldC16b29tLWljb24uYXBleGNoYXJ0cy1zZWxlY3RlZCBzdmcsLmFwZXhjaGFydHMtY2FudmFzIC5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1pY29uLmFwZXhjaGFydHMtc2VsZWN0ZWQgc3ZnLC5hcGV4Y2hhcnRzLWNhbnZhcyAuYXBleGNoYXJ0cy16b29tLWljb24uYXBleGNoYXJ0cy1zZWxlY3RlZCBzdmcge1xcbiAgZmlsbDogIzAwOGZmYlxcbn1cXG5cXG4uYXBleGNoYXJ0cy10aGVtZS1saWdodCAuYXBleGNoYXJ0cy1tZW51LWljb246aG92ZXIgc3ZnLC5hcGV4Y2hhcnRzLXRoZW1lLWxpZ2h0IC5hcGV4Y2hhcnRzLXJlc2V0LWljb246aG92ZXIgc3ZnLC5hcGV4Y2hhcnRzLXRoZW1lLWxpZ2h0IC5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1pY29uOm5vdCguYXBleGNoYXJ0cy1zZWxlY3RlZCk6aG92ZXIgc3ZnLC5hcGV4Y2hhcnRzLXRoZW1lLWxpZ2h0IC5hcGV4Y2hhcnRzLXpvb20taWNvbjpub3QoLmFwZXhjaGFydHMtc2VsZWN0ZWQpOmhvdmVyIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1saWdodCAuYXBleGNoYXJ0cy16b29taW4taWNvbjpob3ZlciBzdmcsLmFwZXhjaGFydHMtdGhlbWUtbGlnaHQgLmFwZXhjaGFydHMtem9vbW91dC1pY29uOmhvdmVyIHN2ZyB7XFxuICBmaWxsOiAjMzMzXFxufVxcblxcbi5hcGV4Y2hhcnRzLW1lbnUtaWNvbiwuYXBleGNoYXJ0cy1zZWxlY3Rpb24taWNvbiB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmVcXG59XFxuXFxuLmFwZXhjaGFydHMtcmVzZXQtaWNvbiB7XFxuICBtYXJnaW4tbGVmdDogNXB4XFxufVxcblxcbi5hcGV4Y2hhcnRzLW1lbnUtaWNvbiwuYXBleGNoYXJ0cy1yZXNldC1pY29uLC5hcGV4Y2hhcnRzLXpvb20taWNvbiB7XFxuICB0cmFuc2Zvcm06IHNjYWxlKC44NSlcXG59XFxuXFxuLmFwZXhjaGFydHMtem9vbWluLWljb24sLmFwZXhjaGFydHMtem9vbW91dC1pY29uIHtcXG4gIHRyYW5zZm9ybTogc2NhbGUoLjcpXFxufVxcblxcbi5hcGV4Y2hhcnRzLXpvb21vdXQtaWNvbiB7XFxuICBtYXJnaW4tcmlnaHQ6IDNweFxcbn1cXG5cXG4uYXBleGNoYXJ0cy1wYW4taWNvbiB7XFxuICB0cmFuc2Zvcm06IHNjYWxlKC42Mik7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBsZWZ0OiAxcHg7XFxuICB0b3A6IDBcXG59XFxuXFxuLmFwZXhjaGFydHMtcGFuLWljb24gc3ZnIHtcXG4gIGZpbGw6ICNmZmY7XFxuICBzdHJva2U6ICM2ZTgxOTI7XFxuICBzdHJva2Utd2lkdGg6IDJcXG59XFxuXFxuLmFwZXhjaGFydHMtcGFuLWljb24uYXBleGNoYXJ0cy1zZWxlY3RlZCBzdmcge1xcbiAgc3Ryb2tlOiAjMDA4ZmZiXFxufVxcblxcbi5hcGV4Y2hhcnRzLXBhbi1pY29uOm5vdCguYXBleGNoYXJ0cy1zZWxlY3RlZCk6aG92ZXIgc3ZnIHtcXG4gIHN0cm9rZTogIzMzM1xcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sYmFyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHotaW5kZXg6IDExO1xcbiAgbWF4LXdpZHRoOiAxNzZweDtcXG4gIHRleHQtYWxpZ246IHJpZ2h0O1xcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xcbiAgcGFkZGluZzogMCA2cHggMnB4O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXJcXG59XFxuXFxuLmFwZXhjaGFydHMtbWVudSB7XFxuICBiYWNrZ3JvdW5kOiAjZmZmO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAxMDAlO1xcbiAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcXG4gIGJvcmRlci1yYWRpdXM6IDNweDtcXG4gIHBhZGRpbmc6IDNweDtcXG4gIHJpZ2h0OiAxMHB4O1xcbiAgb3BhY2l0eTogMDtcXG4gIG1pbi13aWR0aDogMTEwcHg7XFxuICB0cmFuc2l0aW9uOiAuMTVzIGVhc2UgYWxsO1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmVcXG59XFxuXFxuLmFwZXhjaGFydHMtbWVudS5hcGV4Y2hhcnRzLW1lbnUtb3BlbiB7XFxuICBvcGFjaXR5OiAxO1xcbiAgcG9pbnRlci1ldmVudHM6IGFsbDtcXG4gIHRyYW5zaXRpb246IC4xNXMgZWFzZSBhbGxcXG59XFxuXFxuLmFwZXhjaGFydHMtbWVudS1pdGVtIHtcXG4gIHBhZGRpbmc6IDZweCA3cHg7XFxuICBmb250LXNpemU6IDEycHg7XFxuICBjdXJzb3I6IHBvaW50ZXJcXG59XFxuXFxuLmFwZXhjaGFydHMtdGhlbWUtbGlnaHQgLmFwZXhjaGFydHMtbWVudS1pdGVtOmhvdmVyIHtcXG4gIGJhY2tncm91bmQ6ICNlZWVcXG59XFxuXFxuLmFwZXhjaGFydHMtdGhlbWUtZGFyayAuYXBleGNoYXJ0cy1tZW51IHtcXG4gIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsLjcpO1xcbiAgY29sb3I6ICNmZmZcXG59XFxuXFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDo3NjhweCkge1xcbiAgLmFwZXhjaGFydHMtY2FudmFzOmhvdmVyIC5hcGV4Y2hhcnRzLXRvb2xiYXIge1xcbiAgICAgIG9wYWNpdHk6IDFcXG4gIH1cXG59XFxuXFxuLmFwZXhjaGFydHMtY2FudmFzIC5hcGV4Y2hhcnRzLWVsZW1lbnQtaGlkZGVuLC5hcGV4Y2hhcnRzLWRhdGFsYWJlbC5hcGV4Y2hhcnRzLWVsZW1lbnQtaGlkZGVuLC5hcGV4Y2hhcnRzLWhpZGUgLmFwZXhjaGFydHMtc2VyaWVzLXBvaW50cyB7XFxuICBvcGFjaXR5OiAwXFxufVxcblxcbi5hcGV4Y2hhcnRzLWRhdGFsYWJlbCwuYXBleGNoYXJ0cy1kYXRhbGFiZWwtbGFiZWwsLmFwZXhjaGFydHMtZGF0YWxhYmVsLXZhbHVlLC5hcGV4Y2hhcnRzLWRhdGFsYWJlbHMsLmFwZXhjaGFydHMtcGllLWxhYmVsIHtcXG4gIGN1cnNvcjogZGVmYXVsdDtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lXFxufVxcblxcbi5hcGV4Y2hhcnRzLXBpZS1sYWJlbC1kZWxheSB7XFxuICBvcGFjaXR5OiAwO1xcbiAgYW5pbWF0aW9uLW5hbWU6IG9wYXF1ZTtcXG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogLjNzO1xcbiAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7XFxuICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlXFxufVxcblxcbi5hcGV4Y2hhcnRzLWFubm90YXRpb24tcmVjdCwuYXBleGNoYXJ0cy1hcmVhLXNlcmllcyAuYXBleGNoYXJ0cy1hcmVhLC5hcGV4Y2hhcnRzLWFyZWEtc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzIC5hcGV4Y2hhcnRzLW1hcmtlci5uby1wb2ludGVyLWV2ZW50cywuYXBleGNoYXJ0cy1ncmlkbGluZSwuYXBleGNoYXJ0cy1saW5lLC5hcGV4Y2hhcnRzLWxpbmUtc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzIC5hcGV4Y2hhcnRzLW1hcmtlci5uby1wb2ludGVyLWV2ZW50cywuYXBleGNoYXJ0cy1wb2ludC1hbm5vdGF0aW9uLWxhYmVsLC5hcGV4Y2hhcnRzLXJhZGFyLXNlcmllcyBwYXRoLC5hcGV4Y2hhcnRzLXJhZGFyLXNlcmllcyBwb2x5Z29uLC5hcGV4Y2hhcnRzLXRvb2xiYXIgc3ZnLC5hcGV4Y2hhcnRzLXRvb2x0aXAgLmFwZXhjaGFydHMtbWFya2VyLC5hcGV4Y2hhcnRzLXhheGlzLWFubm90YXRpb24tbGFiZWwsLmFwZXhjaGFydHMteWF4aXMtYW5ub3RhdGlvbi1sYWJlbCwuYXBleGNoYXJ0cy16b29tLXJlY3Qge1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmVcXG59XFxuXFxuLmFwZXhjaGFydHMtbWFya2VyIHtcXG4gIHRyYW5zaXRpb246IC4xNXMgZWFzZSBhbGxcXG59XFxuXFxuLnJlc2l6ZS10cmlnZ2VycyB7XFxuICBhbmltYXRpb246IDFtcyByZXNpemVhbmltO1xcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xcbiAgb3BhY2l0eTogMDtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgb3ZlcmZsb3c6IGhpZGRlblxcbn1cXG5cXG4uY29udHJhY3QtdHJpZ2dlcjpiZWZvcmUsLnJlc2l6ZS10cmlnZ2VycywucmVzaXplLXRyaWdnZXJzPmRpdiB7XFxuICBjb250ZW50OiBcIiBcIjtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAwO1xcbiAgbGVmdDogMFxcbn1cXG5cXG4ucmVzaXplLXRyaWdnZXJzPmRpdiB7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMTAwJTtcXG4gIGJhY2tncm91bmQ6ICNlZWU7XFxuICBvdmVyZmxvdzogYXV0b1xcbn1cXG5cXG4uY29udHJhY3QtdHJpZ2dlcjpiZWZvcmUge1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHdpZHRoOiAyMDAlO1xcbiAgaGVpZ2h0OiAyMDAlXFxufVxcbicscj9zLnByZXBlbmQodC5jc3MpOm8uaGVhZC5hcHBlbmRDaGlsZCh0LmNzcykpfXZhciBsPXQuY3JlYXRlKHQudy5jb25maWcuc2VyaWVzLHt9KTtpZighbClyZXR1cm4gZSh0KTt0Lm1vdW50KGwpLnRoZW4oKGZ1bmN0aW9uKCl7XCJmdW5jdGlvblwiPT10eXBlb2YgdC53LmNvbmZpZy5jaGFydC5ldmVudHMubW91bnRlZCYmdC53LmNvbmZpZy5jaGFydC5ldmVudHMubW91bnRlZCh0LHQudyksdC5ldmVudHMuZmlyZUV2ZW50KFwibW91bnRlZFwiLFt0LHQud10pLGUobCl9KSkuY2F0Y2goKGZ1bmN0aW9uKHQpe2kodCl9KSl9ZWxzZSBpKG5ldyBFcnJvcihcIkVsZW1lbnQgbm90IGZvdW5kXCIpKX0pKX19LHtrZXk6XCJjcmVhdGVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztuZXcgT3QodGhpcykuaW5pdE1vZHVsZXMoKTt2YXIgYT10aGlzLncuZ2xvYmFsczsoYS5ub0RhdGE9ITEsYS5hbmltYXRpb25FbmRlZD0hMSx0aGlzLnJlc3BvbnNpdmUuY2hlY2tSZXNwb25zaXZlQ29uZmlnKGUpLGkuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYykmJm5ldyB6KGkuY29uZmlnKS5jb252ZXJ0Q2F0VG9OdW1lcmljWGF4aXMoaS5jb25maWcsdGhpcy5jdHgpO2lmKG51bGw9PT10aGlzLmVsKXJldHVybiBhLmFuaW1hdGlvbkVuZGVkPSEwLG51bGw7aWYodGhpcy5jb3JlLnNldHVwRWxlbWVudHMoKSxcInRyZWVtYXBcIj09PWkuY29uZmlnLmNoYXJ0LnR5cGUmJihpLmNvbmZpZy5ncmlkLnNob3c9ITEsaS5jb25maWcueWF4aXNbMF0uc2hvdz0hMSksMD09PWEuc3ZnV2lkdGgpcmV0dXJuIGEuYW5pbWF0aW9uRW5kZWQ9ITAsbnVsbDt2YXIgcz15LmNoZWNrQ29tYm9TZXJpZXModCk7YS5jb21ib0NoYXJ0cz1zLmNvbWJvQ2hhcnRzLGEuY29tYm9CYXJDb3VudD1zLmNvbWJvQmFyQ291bnQ7dmFyIHI9dC5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZGF0YSYmMD09PXQuZGF0YS5sZW5ndGh9KSk7KDA9PT10Lmxlbmd0aHx8cikmJnRoaXMuc2VyaWVzLmhhbmRsZU5vRGF0YSgpLHRoaXMuZXZlbnRzLnNldHVwRXZlbnRIYW5kbGVycygpLHRoaXMuZGF0YS5wYXJzZURhdGEodCksdGhpcy50aGVtZS5pbml0KCksbmV3IEQodGhpcykuc2V0R2xvYmFsTWFya2VyU2l6ZSgpLHRoaXMuZm9ybWF0dGVycy5zZXRMYWJlbEZvcm1hdHRlcnMoKSx0aGlzLnRpdGxlU3VidGl0bGUuZHJhdygpLGEubm9EYXRhJiZhLmNvbGxhcHNlZFNlcmllcy5sZW5ndGghPT1hLnNlcmllcy5sZW5ndGgmJiFpLmNvbmZpZy5sZWdlbmQuc2hvd0ZvclNpbmdsZVNlcmllc3x8dGhpcy5sZWdlbmQuaW5pdCgpLHRoaXMuc2VyaWVzLmhhc0FsbFNlcmllc0VxdWFsWCgpLGEuYXhpc0NoYXJ0cyYmKHRoaXMuY29yZS5jb3JlQ2FsY3VsYXRpb25zKCksXCJjYXRlZ29yeVwiIT09aS5jb25maWcueGF4aXMudHlwZSYmdGhpcy5mb3JtYXR0ZXJzLnNldExhYmVsRm9ybWF0dGVycygpLHRoaXMuY3R4LnRvb2xiYXIubWluWD1pLmdsb2JhbHMubWluWCx0aGlzLmN0eC50b29sYmFyLm1heFg9aS5nbG9iYWxzLm1heFgpLHRoaXMuZm9ybWF0dGVycy5oZWF0bWFwTGFiZWxGb3JtYXR0ZXJzKCksbmV3IHkodGhpcykuZ2V0TGFyZ2VzdE1hcmtlclNpemUoKSx0aGlzLmRpbWVuc2lvbnMucGxvdENvb3JkcygpO3ZhciBvPXRoaXMuY29yZS54eVNldHRpbmdzKCk7dGhpcy5ncmlkLmNyZWF0ZUdyaWRNYXNrKCk7dmFyIG49dGhpcy5jb3JlLnBsb3RDaGFydFR5cGUodCxvKSxsPW5ldyBPKHRoaXMpO3JldHVybiBsLmJyaW5nRm9yd2FyZCgpLGkuY29uZmlnLmRhdGFMYWJlbHMuYmFja2dyb3VuZC5lbmFibGVkJiZsLmRhdGFMYWJlbHNCYWNrZ3JvdW5kKCksdGhpcy5jb3JlLnNoaWZ0R3JhcGhQb3NpdGlvbigpLHtlbEdyYXBoOm4seHlSYXRpb3M6byxkaW1lbnNpb25zOntwbG90OntsZWZ0OmkuZ2xvYmFscy50cmFuc2xhdGVYLHRvcDppLmdsb2JhbHMudHJhbnNsYXRlWSx3aWR0aDppLmdsb2JhbHMuZ3JpZFdpZHRoLGhlaWdodDppLmdsb2JhbHMuZ3JpZEhlaWdodH19fX19LHtrZXk6XCJtb3VudFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsLGk9dGhpcyxhPWkudztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHMscil7aWYobnVsbD09PWkuZWwpcmV0dXJuIHIobmV3IEVycm9yKFwiTm90IGVub3VnaCBkYXRhIHRvIGRpc3BsYXkgb3IgdGFyZ2V0IGVsZW1lbnQgbm90IGZvdW5kXCIpKTsobnVsbD09PWV8fGEuZ2xvYmFscy5hbGxTZXJpZXNDb2xsYXBzZWQpJiZpLnNlcmllcy5oYW5kbGVOb0RhdGEoKSxpLmdyaWQ9bmV3IGooaSk7dmFyIG89aS5ncmlkLmRyYXdHcmlkKCk7aWYoaS5hbm5vdGF0aW9ucz1uZXcgUChpKSxpLmFubm90YXRpb25zLmRyYXdJbWFnZUFubm9zKCksaS5hbm5vdGF0aW9ucy5kcmF3VGV4dEFubm9zKCksXCJiYWNrXCI9PT1hLmNvbmZpZy5ncmlkLnBvc2l0aW9uJiZvJiZhLmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZChvLmVsKSxBcnJheS5pc0FycmF5KGUuZWxHcmFwaCkpZm9yKHZhciBuPTA7bjxlLmVsR3JhcGgubGVuZ3RoO24rKylhLmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZChlLmVsR3JhcGhbbl0pO2Vsc2UgYS5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQoZS5lbEdyYXBoKTtcImZyb250XCI9PT1hLmNvbmZpZy5ncmlkLnBvc2l0aW9uJiZvJiZhLmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZChvLmVsKSxvJiZvLmVsR3JpZEJvcmRlcnMmJm8uZWxHcmlkQm9yZGVycy5ub2RlJiZhLmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZChvLmVsR3JpZEJvcmRlcnMpLFwiZnJvbnRcIj09PWEuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMucG9zaXRpb24mJmkuY3Jvc3NoYWlycy5kcmF3WENyb3NzaGFpcnMoKSxcImZyb250XCI9PT1hLmNvbmZpZy55YXhpc1swXS5jcm9zc2hhaXJzLnBvc2l0aW9uJiZpLmNyb3NzaGFpcnMuZHJhd1lDcm9zc2hhaXJzKCksXCJ0cmVlbWFwXCIhPT1hLmNvbmZpZy5jaGFydC50eXBlJiZpLmF4ZXMuZHJhd0F4aXMoYS5jb25maWcuY2hhcnQudHlwZSxvKTt2YXIgbD1uZXcgVih0LmN0eCxvKSxoPW5ldyBxKHQuY3R4LG8pO2lmKG51bGwhPT1vJiYobC54QXhpc0xhYmVsQ29ycmVjdGlvbnMoby54QXhpc1RpY2tXaWR0aCksaC5zZXRZQXhpc1RleHRBbGlnbm1lbnRzKCksYS5jb25maWcueWF4aXMubWFwKChmdW5jdGlvbih0LGUpey0xPT09YS5nbG9iYWxzLmlnbm9yZVlBeGlzSW5kZXhlcy5pbmRleE9mKGUpJiZoLnlBeGlzVGl0bGVSb3RhdGUoZSx0Lm9wcG9zaXRlKX0pKSksaS5hbm5vdGF0aW9ucy5kcmF3QXhlc0Fubm90YXRpb25zKCksIWEuZ2xvYmFscy5ub0RhdGEpe2lmKGEuY29uZmlnLnRvb2x0aXAuZW5hYmxlZCYmIWEuZ2xvYmFscy5ub0RhdGEmJmkudy5nbG9iYWxzLnRvb2x0aXAuZHJhd1Rvb2x0aXAoZS54eVJhdGlvcyksYS5nbG9iYWxzLmF4aXNDaGFydHMmJihhLmdsb2JhbHMuaXNYTnVtZXJpY3x8YS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljfHxhLmdsb2JhbHMuaXNSYW5nZUJhcikpKGEuY29uZmlnLmNoYXJ0Lnpvb20uZW5hYmxlZHx8YS5jb25maWcuY2hhcnQuc2VsZWN0aW9uJiZhLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24uZW5hYmxlZHx8YS5jb25maWcuY2hhcnQucGFuJiZhLmNvbmZpZy5jaGFydC5wYW4uZW5hYmxlZCkmJmkuem9vbVBhblNlbGVjdGlvbi5pbml0KHt4eVJhdGlvczplLnh5UmF0aW9zfSk7ZWxzZXt2YXIgYz1hLmNvbmZpZy5jaGFydC50b29sYmFyLnRvb2xzO1tcInpvb21cIixcInpvb21pblwiLFwiem9vbW91dFwiLFwic2VsZWN0aW9uXCIsXCJwYW5cIixcInJlc2V0XCJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe2NbdF09ITF9KSl9YS5jb25maWcuY2hhcnQudG9vbGJhci5zaG93JiYhYS5nbG9iYWxzLmFsbFNlcmllc0NvbGxhcHNlZCYmaS50b29sYmFyLmNyZWF0ZVRvb2xiYXIoKX1hLmdsb2JhbHMubWVtb3J5Lm1ldGhvZHNUb0V4ZWMubGVuZ3RoPjAmJmEuZ2xvYmFscy5tZW1vcnkubWV0aG9kc1RvRXhlYy5mb3JFYWNoKChmdW5jdGlvbih0KXt0Lm1ldGhvZCh0LnBhcmFtcywhMSx0LmNvbnRleHQpfSkpLGEuZ2xvYmFscy5heGlzQ2hhcnRzfHxhLmdsb2JhbHMubm9EYXRhfHxpLmNvcmUucmVzaXplTm9uQXhpc0NoYXJ0cygpLHMoaSl9KSl9fSx7a2V5OlwiZGVzdHJveVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZTt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLHRoaXMud2luZG93UmVzaXplSGFuZGxlciksdGhpcy5lbC5wYXJlbnROb2RlLHQ9dGhpcy5wYXJlbnRSZXNpemVIYW5kbGVyLChlPVd0LmdldCh0KSkmJihlLmRpc2Nvbm5lY3QoKSxXdC5kZWxldGUodCkpO3ZhciBpPXRoaXMudy5jb25maWcuY2hhcnQuaWQ7aSYmQXBleC5fY2hhcnRJbnN0YW5jZXMuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0LmlkPT09eC5lc2NhcGVTdHJpbmcoaSkmJkFwZXguX2NoYXJ0SW5zdGFuY2VzLnNwbGljZShlLDEpfSkpLG5ldyBOdCh0aGlzLmN0eCkuY2xlYXIoe2lzVXBkYXRpbmc6ITF9KX19LHtrZXk6XCJ1cGRhdGVPcHRpb25zXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV0sYT0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdLHM9IShhcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXSl8fGFyZ3VtZW50c1szXSxyPSEoYXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0pfHxhcmd1bWVudHNbNF0sbz10aGlzLnc7cmV0dXJuIG8uZ2xvYmFscy5zZWxlY3Rpb249dm9pZCAwLHQuc2VyaWVzJiYodGhpcy5zZXJpZXMucmVzZXRTZXJpZXMoITEsITAsITEpLHQuc2VyaWVzLmxlbmd0aCYmdC5zZXJpZXNbMF0uZGF0YSYmKHQuc2VyaWVzPXQuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCxpKXtyZXR1cm4gZS51cGRhdGVIZWxwZXJzLl9leHRlbmRTZXJpZXModCxpKX0pKSksdGhpcy51cGRhdGVIZWxwZXJzLnJldmVydERlZmF1bHRBeGlzTWluTWF4KCkpLHQueGF4aXMmJih0PXRoaXMudXBkYXRlSGVscGVycy5mb3JjZVhBeGlzVXBkYXRlKHQpKSx0LnlheGlzJiYodD10aGlzLnVwZGF0ZUhlbHBlcnMuZm9yY2VZQXhpc1VwZGF0ZSh0KSksby5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMubGVuZ3RoPjAmJnRoaXMuc2VyaWVzLmNsZWFyUHJldmlvdXNQYXRocygpLHQudGhlbWUmJih0PXRoaXMudGhlbWUudXBkYXRlVGhlbWVPcHRpb25zKHQpKSx0aGlzLnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZU9wdGlvbnModCxpLGEscyxyKX19LHtrZXk6XCJ1cGRhdGVTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpbXSxlPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0saT0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdO3JldHVybiB0aGlzLnNlcmllcy5yZXNldFNlcmllcyghMSksdGhpcy51cGRhdGVIZWxwZXJzLnJldmVydERlZmF1bHRBeGlzTWluTWF4KCksdGhpcy51cGRhdGVIZWxwZXJzLl91cGRhdGVTZXJpZXModCxlLGkpfX0se2tleTpcImFwcGVuZFNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0saT0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdLGE9dGhpcy53LmNvbmZpZy5zZXJpZXMuc2xpY2UoKTtyZXR1cm4gYS5wdXNoKHQpLHRoaXMuc2VyaWVzLnJlc2V0U2VyaWVzKCExKSx0aGlzLnVwZGF0ZUhlbHBlcnMucmV2ZXJ0RGVmYXVsdEF4aXNNaW5NYXgoKSx0aGlzLnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZVNlcmllcyhhLGUsaSl9fSx7a2V5OlwiYXBwZW5kRGF0YVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0saT10aGlzO2kudy5nbG9iYWxzLmRhdGFDaGFuZ2VkPSEwLGkuc2VyaWVzLmdldFByZXZpb3VzUGF0aHMoKTtmb3IodmFyIGE9aS53LmNvbmZpZy5zZXJpZXMuc2xpY2UoKSxzPTA7czxhLmxlbmd0aDtzKyspaWYobnVsbCE9PXRbc10mJnZvaWQgMCE9PXRbc10pZm9yKHZhciByPTA7cjx0W3NdLmRhdGEubGVuZ3RoO3IrKylhW3NdLmRhdGEucHVzaCh0W3NdLmRhdGFbcl0pO3JldHVybiBpLncuY29uZmlnLnNlcmllcz1hLGUmJihpLncuZ2xvYmFscy5pbml0aWFsU2VyaWVzPXguY2xvbmUoaS53LmNvbmZpZy5zZXJpZXMpKSx0aGlzLnVwZGF0ZSgpfX0se2tleTpcInVwZGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihpLGEpe25ldyBOdChlLmN0eCkuY2xlYXIoe2lzVXBkYXRpbmc6ITB9KTt2YXIgcz1lLmNyZWF0ZShlLncuY29uZmlnLnNlcmllcyx0KTtpZighcylyZXR1cm4gaShlKTtlLm1vdW50KHMpLnRoZW4oKGZ1bmN0aW9uKCl7XCJmdW5jdGlvblwiPT10eXBlb2YgZS53LmNvbmZpZy5jaGFydC5ldmVudHMudXBkYXRlZCYmZS53LmNvbmZpZy5jaGFydC5ldmVudHMudXBkYXRlZChlLGUudyksZS5ldmVudHMuZmlyZUV2ZW50KFwidXBkYXRlZFwiLFtlLGUud10pLGUudy5nbG9iYWxzLmlzRGlydHk9ITAsaShlKX0pKS5jYXRjaCgoZnVuY3Rpb24odCl7YSh0KX0pKX0pKX19LHtrZXk6XCJnZXRTeW5jZWRDaGFydHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZ2V0R3JvdXBlZENoYXJ0cygpLGU9W3RoaXNdO3JldHVybiB0Lmxlbmd0aCYmKGU9W10sdC5mb3JFYWNoKChmdW5jdGlvbih0KXtlLnB1c2godCl9KSkpLGV9fSx7a2V5OlwiZ2V0R3JvdXBlZENoYXJ0c1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gQXBleC5fY2hhcnRJbnN0YW5jZXMuZmlsdGVyKChmdW5jdGlvbih0KXtpZih0Lmdyb3VwKXJldHVybiEwfSkpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQudy5jb25maWcuY2hhcnQuZ3JvdXA9PT1lLmdyb3VwP2UuY2hhcnQ6dH0pKX19LHtrZXk6XCJ0b2dnbGVTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zZXJpZXMudG9nZ2xlU2VyaWVzKHQpfX0se2tleTpcImhpZ2hsaWdodFNlcmllc09uTGVnZW5kSG92ZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnNlcmllcy50b2dnbGVTZXJpZXNPbkhvdmVyKHQsZSl9fSx7a2V5Olwic2hvd1Nlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuc2VyaWVzLnNob3dTZXJpZXModCl9fSx7a2V5OlwiaGlkZVNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuc2VyaWVzLmhpZGVTZXJpZXModCl9fSx7a2V5OlwicmVzZXRTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PSEoYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0pfHxhcmd1bWVudHNbMF0sZT0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdO3RoaXMuc2VyaWVzLnJlc2V0U2VyaWVzKHQsZSl9fSx7a2V5OlwiYWRkRXZlbnRMaXN0ZW5lclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dGhpcy5ldmVudHMuYWRkRXZlbnRMaXN0ZW5lcih0LGUpfX0se2tleTpcInJlbW92ZUV2ZW50TGlzdGVuZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3RoaXMuZXZlbnRzLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxlKX19LHtrZXk6XCJhZGRYYXhpc0Fubm90YXRpb25cIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdLGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOnZvaWQgMCxhPXRoaXM7aSYmKGE9aSksYS5hbm5vdGF0aW9ucy5hZGRYYXhpc0Fubm90YXRpb25FeHRlcm5hbCh0LGUsYSl9fSx7a2V5OlwiYWRkWWF4aXNBbm5vdGF0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSxpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp2b2lkIDAsYT10aGlzO2kmJihhPWkpLGEuYW5ub3RhdGlvbnMuYWRkWWF4aXNBbm5vdGF0aW9uRXh0ZXJuYWwodCxlLGEpfX0se2tleTpcImFkZFBvaW50QW5ub3RhdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0saT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06dm9pZCAwLGE9dGhpcztpJiYoYT1pKSxhLmFubm90YXRpb25zLmFkZFBvaW50QW5ub3RhdGlvbkV4dGVybmFsKHQsZSxhKX19LHtrZXk6XCJjbGVhckFubm90YXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06dm9pZCAwLGU9dGhpczt0JiYoZT10KSxlLmFubm90YXRpb25zLmNsZWFyQW5ub3RhdGlvbnMoZSl9fSx7a2V5OlwicmVtb3ZlQW5ub3RhdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp2b2lkIDAsaT10aGlzO2UmJihpPWUpLGkuYW5ub3RhdGlvbnMucmVtb3ZlQW5ub3RhdGlvbihpLHQpfX0se2tleTpcImdldENoYXJ0QXJlYVwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWlubmVyXCIpfX0se2tleTpcImdldFNlcmllc1RvdGFsWFJhbmdlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5jb3JlVXRpbHMuZ2V0U2VyaWVzVG90YWxzWFJhbmdlKHQsZSl9fSx7a2V5OlwiZ2V0SGlnaGVzdFZhbHVlSW5TZXJpZXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowO3JldHVybiBuZXcgVSh0aGlzLmN0eCkuZ2V0TWluWU1heFkodCkuaGlnaGVzdFl9fSx7a2V5OlwiZ2V0TG93ZXN0VmFsdWVJblNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOjA7cmV0dXJuIG5ldyBVKHRoaXMuY3R4KS5nZXRNaW5ZTWF4WSh0KS5sb3dlc3RZfX0se2tleTpcImdldFNlcmllc1RvdGFsXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuc2VyaWVzVG90YWxzfX0se2tleTpcInRvZ2dsZURhdGFQb2ludFNlbGVjdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMudXBkYXRlSGVscGVycy50b2dnbGVEYXRhUG9pbnRTZWxlY3Rpb24odCxlKX19LHtrZXk6XCJ6b29tWFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dGhpcy5jdHgudG9vbGJhci56b29tVXBkYXRlT3B0aW9ucyh0LGUpfX0se2tleTpcInNldExvY2FsZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMubG9jYWxpemF0aW9uLnNldEN1cnJlbnRMb2NhbGVWYWx1ZXModCl9fSx7a2V5OlwiZGF0YVVSSVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRyh0aGlzLmN0eCkuZGF0YVVSSSh0KX19LHtrZXk6XCJleHBvcnRUb0NTVlwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9O3JldHVybiBuZXcgRyh0aGlzLmN0eCkuZXhwb3J0VG9DU1YodCl9fSx7a2V5OlwicGFwZXJcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLncuZ2xvYmFscy5kb20uUGFwZXJ9fSx7a2V5OlwiX3BhcmVudFJlc2l6ZUNhbGxiYWNrXCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLncuZ2xvYmFscy5hbmltYXRpb25FbmRlZCYmdGhpcy53LmNvbmZpZy5jaGFydC5yZWRyYXdPblBhcmVudFJlc2l6ZSYmdGhpcy5fd2luZG93UmVzaXplKCl9fSx7a2V5OlwiX3dpbmRvd1Jlc2l6ZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztjbGVhclRpbWVvdXQodGhpcy53Lmdsb2JhbHMucmVzaXplVGltZXIpLHRoaXMudy5nbG9iYWxzLnJlc2l6ZVRpbWVyPXdpbmRvdy5zZXRUaW1lb3V0KChmdW5jdGlvbigpe3Qudy5nbG9iYWxzLnJlc2l6ZWQ9ITAsdC53Lmdsb2JhbHMuZGF0YUNoYW5nZWQ9ITEsdC5jdHgudXBkYXRlKCl9KSwxNTApfX0se2tleTpcIl93aW5kb3dSZXNpemVIYW5kbGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncuY29uZmlnLmNoYXJ0LnJlZHJhd09uV2luZG93UmVzaXplO1wiZnVuY3Rpb25cIj09dHlwZW9mIHQmJih0PXQoKSksdCYmdGhpcy5fd2luZG93UmVzaXplKCl9fV0sW3trZXk6XCJnZXRDaGFydEJ5SURcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT14LmVzY2FwZVN0cmluZyh0KSxpPUFwZXguX2NoYXJ0SW5zdGFuY2VzLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHQuaWQ9PT1lfSkpWzBdO3JldHVybiBpJiZpLmNoYXJ0fX0se2tleTpcImluaXRPbkxvYWRcIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiW2RhdGEtYXBleGNoYXJ0c11cIiksaT0wO2k8ZS5sZW5ndGg7aSsrKXtuZXcgdChlW2ldLEpTT04ucGFyc2UoZVtpXS5nZXRBdHRyaWJ1dGUoXCJkYXRhLW9wdGlvbnNcIikpKS5yZW5kZXIoKX19fSx7a2V5OlwiZXhlY1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5nZXRDaGFydEJ5SUQodCk7aWYoaSl7aS53Lmdsb2JhbHMuaXNFeGVjQ2FsbGVkPSEwO3ZhciBhPW51bGw7aWYoLTEhPT1pLnB1YmxpY01ldGhvZHMuaW5kZXhPZihlKSl7Zm9yKHZhciBzPWFyZ3VtZW50cy5sZW5ndGgscj1uZXcgQXJyYXkocz4yP3MtMjowKSxvPTI7bzxzO28rKylyW28tMl09YXJndW1lbnRzW29dO2E9aVtlXS5hcHBseShpLHIpfXJldHVybiBhfX19LHtrZXk6XCJtZXJnZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHguZXh0ZW5kKHQsZSl9fV0pLHR9KCk7bW9kdWxlLmV4cG9ydHM9QnQ7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbGliL2F4aW9zJyk7IiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG52YXIgc2V0dGxlID0gcmVxdWlyZSgnLi8uLi9jb3JlL3NldHRsZScpO1xudmFyIGNvb2tpZXMgPSByZXF1aXJlKCcuLy4uL2hlbHBlcnMvY29va2llcycpO1xudmFyIGJ1aWxkVVJMID0gcmVxdWlyZSgnLi8uLi9oZWxwZXJzL2J1aWxkVVJMJyk7XG52YXIgYnVpbGRGdWxsUGF0aCA9IHJlcXVpcmUoJy4uL2NvcmUvYnVpbGRGdWxsUGF0aCcpO1xudmFyIHBhcnNlSGVhZGVycyA9IHJlcXVpcmUoJy4vLi4vaGVscGVycy9wYXJzZUhlYWRlcnMnKTtcbnZhciBpc1VSTFNhbWVPcmlnaW4gPSByZXF1aXJlKCcuLy4uL2hlbHBlcnMvaXNVUkxTYW1lT3JpZ2luJyk7XG52YXIgY3JlYXRlRXJyb3IgPSByZXF1aXJlKCcuLi9jb3JlL2NyZWF0ZUVycm9yJyk7XG52YXIgZGVmYXVsdHMgPSByZXF1aXJlKCcuLi9kZWZhdWx0cycpO1xudmFyIENhbmNlbCA9IHJlcXVpcmUoJy4uL2NhbmNlbC9DYW5jZWwnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB4aHJBZGFwdGVyKGNvbmZpZykge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gZGlzcGF0Y2hYaHJSZXF1ZXN0KHJlc29sdmUsIHJlamVjdCkge1xuICAgIHZhciByZXF1ZXN0RGF0YSA9IGNvbmZpZy5kYXRhO1xuICAgIHZhciByZXF1ZXN0SGVhZGVycyA9IGNvbmZpZy5oZWFkZXJzO1xuICAgIHZhciByZXNwb25zZVR5cGUgPSBjb25maWcucmVzcG9uc2VUeXBlO1xuICAgIHZhciBvbkNhbmNlbGVkO1xuICAgIGZ1bmN0aW9uIGRvbmUoKSB7XG4gICAgICBpZiAoY29uZmlnLmNhbmNlbFRva2VuKSB7XG4gICAgICAgIGNvbmZpZy5jYW5jZWxUb2tlbi51bnN1YnNjcmliZShvbkNhbmNlbGVkKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy5zaWduYWwpIHtcbiAgICAgICAgY29uZmlnLnNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uQ2FuY2VsZWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh1dGlscy5pc0Zvcm1EYXRhKHJlcXVlc3REYXRhKSkge1xuICAgICAgZGVsZXRlIHJlcXVlc3RIZWFkZXJzWydDb250ZW50LVR5cGUnXTsgLy8gTGV0IHRoZSBicm93c2VyIHNldCBpdFxuICAgIH1cblxuICAgIHZhciByZXF1ZXN0ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG5cbiAgICAvLyBIVFRQIGJhc2ljIGF1dGhlbnRpY2F0aW9uXG4gICAgaWYgKGNvbmZpZy5hdXRoKSB7XG4gICAgICB2YXIgdXNlcm5hbWUgPSBjb25maWcuYXV0aC51c2VybmFtZSB8fCAnJztcbiAgICAgIHZhciBwYXNzd29yZCA9IGNvbmZpZy5hdXRoLnBhc3N3b3JkID8gdW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KGNvbmZpZy5hdXRoLnBhc3N3b3JkKSkgOiAnJztcbiAgICAgIHJlcXVlc3RIZWFkZXJzLkF1dGhvcml6YXRpb24gPSAnQmFzaWMgJyArIGJ0b2EodXNlcm5hbWUgKyAnOicgKyBwYXNzd29yZCk7XG4gICAgfVxuXG4gICAgdmFyIGZ1bGxQYXRoID0gYnVpbGRGdWxsUGF0aChjb25maWcuYmFzZVVSTCwgY29uZmlnLnVybCk7XG4gICAgcmVxdWVzdC5vcGVuKGNvbmZpZy5tZXRob2QudG9VcHBlckNhc2UoKSwgYnVpbGRVUkwoZnVsbFBhdGgsIGNvbmZpZy5wYXJhbXMsIGNvbmZpZy5wYXJhbXNTZXJpYWxpemVyKSwgdHJ1ZSk7XG5cbiAgICAvLyBTZXQgdGhlIHJlcXVlc3QgdGltZW91dCBpbiBNU1xuICAgIHJlcXVlc3QudGltZW91dCA9IGNvbmZpZy50aW1lb3V0O1xuXG4gICAgZnVuY3Rpb24gb25sb2FkZW5kKCkge1xuICAgICAgaWYgKCFyZXF1ZXN0KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIC8vIFByZXBhcmUgdGhlIHJlc3BvbnNlXG4gICAgICB2YXIgcmVzcG9uc2VIZWFkZXJzID0gJ2dldEFsbFJlc3BvbnNlSGVhZGVycycgaW4gcmVxdWVzdCA/IHBhcnNlSGVhZGVycyhyZXF1ZXN0LmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSA6IG51bGw7XG4gICAgICB2YXIgcmVzcG9uc2VEYXRhID0gIXJlc3BvbnNlVHlwZSB8fCByZXNwb25zZVR5cGUgPT09ICd0ZXh0JyB8fCAgcmVzcG9uc2VUeXBlID09PSAnanNvbicgP1xuICAgICAgICByZXF1ZXN0LnJlc3BvbnNlVGV4dCA6IHJlcXVlc3QucmVzcG9uc2U7XG4gICAgICB2YXIgcmVzcG9uc2UgPSB7XG4gICAgICAgIGRhdGE6IHJlc3BvbnNlRGF0YSxcbiAgICAgICAgc3RhdHVzOiByZXF1ZXN0LnN0YXR1cyxcbiAgICAgICAgc3RhdHVzVGV4dDogcmVxdWVzdC5zdGF0dXNUZXh0LFxuICAgICAgICBoZWFkZXJzOiByZXNwb25zZUhlYWRlcnMsXG4gICAgICAgIGNvbmZpZzogY29uZmlnLFxuICAgICAgICByZXF1ZXN0OiByZXF1ZXN0XG4gICAgICB9O1xuXG4gICAgICBzZXR0bGUoZnVuY3Rpb24gX3Jlc29sdmUodmFsdWUpIHtcbiAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0sIGZ1bmN0aW9uIF9yZWplY3QoZXJyKSB7XG4gICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9LCByZXNwb25zZSk7XG5cbiAgICAgIC8vIENsZWFuIHVwIHJlcXVlc3RcbiAgICAgIHJlcXVlc3QgPSBudWxsO1xuICAgIH1cblxuICAgIGlmICgnb25sb2FkZW5kJyBpbiByZXF1ZXN0KSB7XG4gICAgICAvLyBVc2Ugb25sb2FkZW5kIGlmIGF2YWlsYWJsZVxuICAgICAgcmVxdWVzdC5vbmxvYWRlbmQgPSBvbmxvYWRlbmQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIExpc3RlbiBmb3IgcmVhZHkgc3RhdGUgdG8gZW11bGF0ZSBvbmxvYWRlbmRcbiAgICAgIHJlcXVlc3Qub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gaGFuZGxlTG9hZCgpIHtcbiAgICAgICAgaWYgKCFyZXF1ZXN0IHx8IHJlcXVlc3QucmVhZHlTdGF0ZSAhPT0gNCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSByZXF1ZXN0IGVycm9yZWQgb3V0IGFuZCB3ZSBkaWRuJ3QgZ2V0IGEgcmVzcG9uc2UsIHRoaXMgd2lsbCBiZVxuICAgICAgICAvLyBoYW5kbGVkIGJ5IG9uZXJyb3IgaW5zdGVhZFxuICAgICAgICAvLyBXaXRoIG9uZSBleGNlcHRpb246IHJlcXVlc3QgdGhhdCB1c2luZyBmaWxlOiBwcm90b2NvbCwgbW9zdCBicm93c2Vyc1xuICAgICAgICAvLyB3aWxsIHJldHVybiBzdGF0dXMgYXMgMCBldmVuIHRob3VnaCBpdCdzIGEgc3VjY2Vzc2Z1bCByZXF1ZXN0XG4gICAgICAgIGlmIChyZXF1ZXN0LnN0YXR1cyA9PT0gMCAmJiAhKHJlcXVlc3QucmVzcG9uc2VVUkwgJiYgcmVxdWVzdC5yZXNwb25zZVVSTC5pbmRleE9mKCdmaWxlOicpID09PSAwKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyByZWFkeXN0YXRlIGhhbmRsZXIgaXMgY2FsbGluZyBiZWZvcmUgb25lcnJvciBvciBvbnRpbWVvdXQgaGFuZGxlcnMsXG4gICAgICAgIC8vIHNvIHdlIHNob3VsZCBjYWxsIG9ubG9hZGVuZCBvbiB0aGUgbmV4dCAndGljaydcbiAgICAgICAgc2V0VGltZW91dChvbmxvYWRlbmQpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgYnJvd3NlciByZXF1ZXN0IGNhbmNlbGxhdGlvbiAoYXMgb3Bwb3NlZCB0byBhIG1hbnVhbCBjYW5jZWxsYXRpb24pXG4gICAgcmVxdWVzdC5vbmFib3J0ID0gZnVuY3Rpb24gaGFuZGxlQWJvcnQoKSB7XG4gICAgICBpZiAoIXJlcXVlc3QpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByZWplY3QoY3JlYXRlRXJyb3IoJ1JlcXVlc3QgYWJvcnRlZCcsIGNvbmZpZywgJ0VDT05OQUJPUlRFRCcsIHJlcXVlc3QpKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxuICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgfTtcblxuICAgIC8vIEhhbmRsZSBsb3cgbGV2ZWwgbmV0d29yayBlcnJvcnNcbiAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbiBoYW5kbGVFcnJvcigpIHtcbiAgICAgIC8vIFJlYWwgZXJyb3JzIGFyZSBoaWRkZW4gZnJvbSB1cyBieSB0aGUgYnJvd3NlclxuICAgICAgLy8gb25lcnJvciBzaG91bGQgb25seSBmaXJlIGlmIGl0J3MgYSBuZXR3b3JrIGVycm9yXG4gICAgICByZWplY3QoY3JlYXRlRXJyb3IoJ05ldHdvcmsgRXJyb3InLCBjb25maWcsIG51bGwsIHJlcXVlc3QpKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxuICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgfTtcblxuICAgIC8vIEhhbmRsZSB0aW1lb3V0XG4gICAgcmVxdWVzdC5vbnRpbWVvdXQgPSBmdW5jdGlvbiBoYW5kbGVUaW1lb3V0KCkge1xuICAgICAgdmFyIHRpbWVvdXRFcnJvck1lc3NhZ2UgPSBjb25maWcudGltZW91dCA/ICd0aW1lb3V0IG9mICcgKyBjb25maWcudGltZW91dCArICdtcyBleGNlZWRlZCcgOiAndGltZW91dCBleGNlZWRlZCc7XG4gICAgICB2YXIgdHJhbnNpdGlvbmFsID0gY29uZmlnLnRyYW5zaXRpb25hbCB8fCBkZWZhdWx0cy50cmFuc2l0aW9uYWw7XG4gICAgICBpZiAoY29uZmlnLnRpbWVvdXRFcnJvck1lc3NhZ2UpIHtcbiAgICAgICAgdGltZW91dEVycm9yTWVzc2FnZSA9IGNvbmZpZy50aW1lb3V0RXJyb3JNZXNzYWdlO1xuICAgICAgfVxuICAgICAgcmVqZWN0KGNyZWF0ZUVycm9yKFxuICAgICAgICB0aW1lb3V0RXJyb3JNZXNzYWdlLFxuICAgICAgICBjb25maWcsXG4gICAgICAgIHRyYW5zaXRpb25hbC5jbGFyaWZ5VGltZW91dEVycm9yID8gJ0VUSU1FRE9VVCcgOiAnRUNPTk5BQk9SVEVEJyxcbiAgICAgICAgcmVxdWVzdCkpO1xuXG4gICAgICAvLyBDbGVhbiB1cCByZXF1ZXN0XG4gICAgICByZXF1ZXN0ID0gbnVsbDtcbiAgICB9O1xuXG4gICAgLy8gQWRkIHhzcmYgaGVhZGVyXG4gICAgLy8gVGhpcyBpcyBvbmx5IGRvbmUgaWYgcnVubmluZyBpbiBhIHN0YW5kYXJkIGJyb3dzZXIgZW52aXJvbm1lbnQuXG4gICAgLy8gU3BlY2lmaWNhbGx5IG5vdCBpZiB3ZSdyZSBpbiBhIHdlYiB3b3JrZXIsIG9yIHJlYWN0LW5hdGl2ZS5cbiAgICBpZiAodXRpbHMuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKSkge1xuICAgICAgLy8gQWRkIHhzcmYgaGVhZGVyXG4gICAgICB2YXIgeHNyZlZhbHVlID0gKGNvbmZpZy53aXRoQ3JlZGVudGlhbHMgfHwgaXNVUkxTYW1lT3JpZ2luKGZ1bGxQYXRoKSkgJiYgY29uZmlnLnhzcmZDb29raWVOYW1lID9cbiAgICAgICAgY29va2llcy5yZWFkKGNvbmZpZy54c3JmQ29va2llTmFtZSkgOlxuICAgICAgICB1bmRlZmluZWQ7XG5cbiAgICAgIGlmICh4c3JmVmFsdWUpIHtcbiAgICAgICAgcmVxdWVzdEhlYWRlcnNbY29uZmlnLnhzcmZIZWFkZXJOYW1lXSA9IHhzcmZWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBZGQgaGVhZGVycyB0byB0aGUgcmVxdWVzdFxuICAgIGlmICgnc2V0UmVxdWVzdEhlYWRlcicgaW4gcmVxdWVzdCkge1xuICAgICAgdXRpbHMuZm9yRWFjaChyZXF1ZXN0SGVhZGVycywgZnVuY3Rpb24gc2V0UmVxdWVzdEhlYWRlcih2YWwsIGtleSkge1xuICAgICAgICBpZiAodHlwZW9mIHJlcXVlc3REYXRhID09PSAndW5kZWZpbmVkJyAmJiBrZXkudG9Mb3dlckNhc2UoKSA9PT0gJ2NvbnRlbnQtdHlwZScpIHtcbiAgICAgICAgICAvLyBSZW1vdmUgQ29udGVudC1UeXBlIGlmIGRhdGEgaXMgdW5kZWZpbmVkXG4gICAgICAgICAgZGVsZXRlIHJlcXVlc3RIZWFkZXJzW2tleV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gT3RoZXJ3aXNlIGFkZCBoZWFkZXIgdG8gdGhlIHJlcXVlc3RcbiAgICAgICAgICByZXF1ZXN0LnNldFJlcXVlc3RIZWFkZXIoa2V5LCB2YWwpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBBZGQgd2l0aENyZWRlbnRpYWxzIHRvIHJlcXVlc3QgaWYgbmVlZGVkXG4gICAgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChjb25maWcud2l0aENyZWRlbnRpYWxzKSkge1xuICAgICAgcmVxdWVzdC53aXRoQ3JlZGVudGlhbHMgPSAhIWNvbmZpZy53aXRoQ3JlZGVudGlhbHM7XG4gICAgfVxuXG4gICAgLy8gQWRkIHJlc3BvbnNlVHlwZSB0byByZXF1ZXN0IGlmIG5lZWRlZFxuICAgIGlmIChyZXNwb25zZVR5cGUgJiYgcmVzcG9uc2VUeXBlICE9PSAnanNvbicpIHtcbiAgICAgIHJlcXVlc3QucmVzcG9uc2VUeXBlID0gY29uZmlnLnJlc3BvbnNlVHlwZTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgcHJvZ3Jlc3MgaWYgbmVlZGVkXG4gICAgaWYgKHR5cGVvZiBjb25maWcub25Eb3dubG9hZFByb2dyZXNzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXF1ZXN0LmFkZEV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgY29uZmlnLm9uRG93bmxvYWRQcm9ncmVzcyk7XG4gICAgfVxuXG4gICAgLy8gTm90IGFsbCBicm93c2VycyBzdXBwb3J0IHVwbG9hZCBldmVudHNcbiAgICBpZiAodHlwZW9mIGNvbmZpZy5vblVwbG9hZFByb2dyZXNzID09PSAnZnVuY3Rpb24nICYmIHJlcXVlc3QudXBsb2FkKSB7XG4gICAgICByZXF1ZXN0LnVwbG9hZC5hZGRFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIGNvbmZpZy5vblVwbG9hZFByb2dyZXNzKTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlnLmNhbmNlbFRva2VuIHx8IGNvbmZpZy5zaWduYWwpIHtcbiAgICAgIC8vIEhhbmRsZSBjYW5jZWxsYXRpb25cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gICAgICBvbkNhbmNlbGVkID0gZnVuY3Rpb24oY2FuY2VsKSB7XG4gICAgICAgIGlmICghcmVxdWVzdCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZWplY3QoIWNhbmNlbCB8fCAoY2FuY2VsICYmIGNhbmNlbC50eXBlKSA/IG5ldyBDYW5jZWwoJ2NhbmNlbGVkJykgOiBjYW5jZWwpO1xuICAgICAgICByZXF1ZXN0LmFib3J0KCk7XG4gICAgICAgIHJlcXVlc3QgPSBudWxsO1xuICAgICAgfTtcblxuICAgICAgY29uZmlnLmNhbmNlbFRva2VuICYmIGNvbmZpZy5jYW5jZWxUb2tlbi5zdWJzY3JpYmUob25DYW5jZWxlZCk7XG4gICAgICBpZiAoY29uZmlnLnNpZ25hbCkge1xuICAgICAgICBjb25maWcuc2lnbmFsLmFib3J0ZWQgPyBvbkNhbmNlbGVkKCkgOiBjb25maWcuc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25DYW5jZWxlZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFyZXF1ZXN0RGF0YSkge1xuICAgICAgcmVxdWVzdERhdGEgPSBudWxsO1xuICAgIH1cblxuICAgIC8vIFNlbmQgdGhlIHJlcXVlc3RcbiAgICByZXF1ZXN0LnNlbmQocmVxdWVzdERhdGEpO1xuICB9KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKTtcbnZhciBiaW5kID0gcmVxdWlyZSgnLi9oZWxwZXJzL2JpbmQnKTtcbnZhciBBeGlvcyA9IHJlcXVpcmUoJy4vY29yZS9BeGlvcycpO1xudmFyIG1lcmdlQ29uZmlnID0gcmVxdWlyZSgnLi9jb3JlL21lcmdlQ29uZmlnJyk7XG52YXIgZGVmYXVsdHMgPSByZXF1aXJlKCcuL2RlZmF1bHRzJyk7XG5cbi8qKlxuICogQ3JlYXRlIGFuIGluc3RhbmNlIG9mIEF4aW9zXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGRlZmF1bHRDb25maWcgVGhlIGRlZmF1bHQgY29uZmlnIGZvciB0aGUgaW5zdGFuY2VcbiAqIEByZXR1cm4ge0F4aW9zfSBBIG5ldyBpbnN0YW5jZSBvZiBBeGlvc1xuICovXG5mdW5jdGlvbiBjcmVhdGVJbnN0YW5jZShkZWZhdWx0Q29uZmlnKSB7XG4gIHZhciBjb250ZXh0ID0gbmV3IEF4aW9zKGRlZmF1bHRDb25maWcpO1xuICB2YXIgaW5zdGFuY2UgPSBiaW5kKEF4aW9zLnByb3RvdHlwZS5yZXF1ZXN0LCBjb250ZXh0KTtcblxuICAvLyBDb3B5IGF4aW9zLnByb3RvdHlwZSB0byBpbnN0YW5jZVxuICB1dGlscy5leHRlbmQoaW5zdGFuY2UsIEF4aW9zLnByb3RvdHlwZSwgY29udGV4dCk7XG5cbiAgLy8gQ29weSBjb250ZXh0IHRvIGluc3RhbmNlXG4gIHV0aWxzLmV4dGVuZChpbnN0YW5jZSwgY29udGV4dCk7XG5cbiAgLy8gRmFjdG9yeSBmb3IgY3JlYXRpbmcgbmV3IGluc3RhbmNlc1xuICBpbnN0YW5jZS5jcmVhdGUgPSBmdW5jdGlvbiBjcmVhdGUoaW5zdGFuY2VDb25maWcpIHtcbiAgICByZXR1cm4gY3JlYXRlSW5zdGFuY2UobWVyZ2VDb25maWcoZGVmYXVsdENvbmZpZywgaW5zdGFuY2VDb25maWcpKTtcbiAgfTtcblxuICByZXR1cm4gaW5zdGFuY2U7XG59XG5cbi8vIENyZWF0ZSB0aGUgZGVmYXVsdCBpbnN0YW5jZSB0byBiZSBleHBvcnRlZFxudmFyIGF4aW9zID0gY3JlYXRlSW5zdGFuY2UoZGVmYXVsdHMpO1xuXG4vLyBFeHBvc2UgQXhpb3MgY2xhc3MgdG8gYWxsb3cgY2xhc3MgaW5oZXJpdGFuY2VcbmF4aW9zLkF4aW9zID0gQXhpb3M7XG5cbi8vIEV4cG9zZSBDYW5jZWwgJiBDYW5jZWxUb2tlblxuYXhpb3MuQ2FuY2VsID0gcmVxdWlyZSgnLi9jYW5jZWwvQ2FuY2VsJyk7XG5heGlvcy5DYW5jZWxUb2tlbiA9IHJlcXVpcmUoJy4vY2FuY2VsL0NhbmNlbFRva2VuJyk7XG5heGlvcy5pc0NhbmNlbCA9IHJlcXVpcmUoJy4vY2FuY2VsL2lzQ2FuY2VsJyk7XG5heGlvcy5WRVJTSU9OID0gcmVxdWlyZSgnLi9lbnYvZGF0YScpLnZlcnNpb247XG5cbi8vIEV4cG9zZSBhbGwvc3ByZWFkXG5heGlvcy5hbGwgPSBmdW5jdGlvbiBhbGwocHJvbWlzZXMpIHtcbiAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VzKTtcbn07XG5heGlvcy5zcHJlYWQgPSByZXF1aXJlKCcuL2hlbHBlcnMvc3ByZWFkJyk7XG5cbi8vIEV4cG9zZSBpc0F4aW9zRXJyb3JcbmF4aW9zLmlzQXhpb3NFcnJvciA9IHJlcXVpcmUoJy4vaGVscGVycy9pc0F4aW9zRXJyb3InKTtcblxubW9kdWxlLmV4cG9ydHMgPSBheGlvcztcblxuLy8gQWxsb3cgdXNlIG9mIGRlZmF1bHQgaW1wb3J0IHN5bnRheCBpbiBUeXBlU2NyaXB0XG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gYXhpb3M7XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQSBgQ2FuY2VsYCBpcyBhbiBvYmplY3QgdGhhdCBpcyB0aHJvd24gd2hlbiBhbiBvcGVyYXRpb24gaXMgY2FuY2VsZWQuXG4gKlxuICogQGNsYXNzXG4gKiBAcGFyYW0ge3N0cmluZz19IG1lc3NhZ2UgVGhlIG1lc3NhZ2UuXG4gKi9cbmZ1bmN0aW9uIENhbmNlbChtZXNzYWdlKSB7XG4gIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG59XG5cbkNhbmNlbC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgcmV0dXJuICdDYW5jZWwnICsgKHRoaXMubWVzc2FnZSA/ICc6ICcgKyB0aGlzLm1lc3NhZ2UgOiAnJyk7XG59O1xuXG5DYW5jZWwucHJvdG90eXBlLl9fQ0FOQ0VMX18gPSB0cnVlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IENhbmNlbDtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIENhbmNlbCA9IHJlcXVpcmUoJy4vQ2FuY2VsJyk7XG5cbi8qKlxuICogQSBgQ2FuY2VsVG9rZW5gIGlzIGFuIG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlcXVlc3QgY2FuY2VsbGF0aW9uIG9mIGFuIG9wZXJhdGlvbi5cbiAqXG4gKiBAY2xhc3NcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGV4ZWN1dG9yIFRoZSBleGVjdXRvciBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gQ2FuY2VsVG9rZW4oZXhlY3V0b3IpIHtcbiAgaWYgKHR5cGVvZiBleGVjdXRvciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2V4ZWN1dG9yIG11c3QgYmUgYSBmdW5jdGlvbi4nKTtcbiAgfVxuXG4gIHZhciByZXNvbHZlUHJvbWlzZTtcblxuICB0aGlzLnByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiBwcm9taXNlRXhlY3V0b3IocmVzb2x2ZSkge1xuICAgIHJlc29sdmVQcm9taXNlID0gcmVzb2x2ZTtcbiAgfSk7XG5cbiAgdmFyIHRva2VuID0gdGhpcztcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICB0aGlzLnByb21pc2UudGhlbihmdW5jdGlvbihjYW5jZWwpIHtcbiAgICBpZiAoIXRva2VuLl9saXN0ZW5lcnMpIHJldHVybjtcblxuICAgIHZhciBpO1xuICAgIHZhciBsID0gdG9rZW4uX2xpc3RlbmVycy5sZW5ndGg7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICB0b2tlbi5fbGlzdGVuZXJzW2ldKGNhbmNlbCk7XG4gICAgfVxuICAgIHRva2VuLl9saXN0ZW5lcnMgPSBudWxsO1xuICB9KTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICB0aGlzLnByb21pc2UudGhlbiA9IGZ1bmN0aW9uKG9uZnVsZmlsbGVkKSB7XG4gICAgdmFyIF9yZXNvbHZlO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gICAgdmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlKSB7XG4gICAgICB0b2tlbi5zdWJzY3JpYmUocmVzb2x2ZSk7XG4gICAgICBfcmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgfSkudGhlbihvbmZ1bGZpbGxlZCk7XG5cbiAgICBwcm9taXNlLmNhbmNlbCA9IGZ1bmN0aW9uIHJlamVjdCgpIHtcbiAgICAgIHRva2VuLnVuc3Vic2NyaWJlKF9yZXNvbHZlKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHByb21pc2U7XG4gIH07XG5cbiAgZXhlY3V0b3IoZnVuY3Rpb24gY2FuY2VsKG1lc3NhZ2UpIHtcbiAgICBpZiAodG9rZW4ucmVhc29uKSB7XG4gICAgICAvLyBDYW5jZWxsYXRpb24gaGFzIGFscmVhZHkgYmVlbiByZXF1ZXN0ZWRcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0b2tlbi5yZWFzb24gPSBuZXcgQ2FuY2VsKG1lc3NhZ2UpO1xuICAgIHJlc29sdmVQcm9taXNlKHRva2VuLnJlYXNvbik7XG4gIH0pO1xufVxuXG4vKipcbiAqIFRocm93cyBhIGBDYW5jZWxgIGlmIGNhbmNlbGxhdGlvbiBoYXMgYmVlbiByZXF1ZXN0ZWQuXG4gKi9cbkNhbmNlbFRva2VuLnByb3RvdHlwZS50aHJvd0lmUmVxdWVzdGVkID0gZnVuY3Rpb24gdGhyb3dJZlJlcXVlc3RlZCgpIHtcbiAgaWYgKHRoaXMucmVhc29uKSB7XG4gICAgdGhyb3cgdGhpcy5yZWFzb247XG4gIH1cbn07XG5cbi8qKlxuICogU3Vic2NyaWJlIHRvIHRoZSBjYW5jZWwgc2lnbmFsXG4gKi9cblxuQ2FuY2VsVG9rZW4ucHJvdG90eXBlLnN1YnNjcmliZSA9IGZ1bmN0aW9uIHN1YnNjcmliZShsaXN0ZW5lcikge1xuICBpZiAodGhpcy5yZWFzb24pIHtcbiAgICBsaXN0ZW5lcih0aGlzLnJlYXNvbik7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHRoaXMuX2xpc3RlbmVycykge1xuICAgIHRoaXMuX2xpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLl9saXN0ZW5lcnMgPSBbbGlzdGVuZXJdO1xuICB9XG59O1xuXG4vKipcbiAqIFVuc3Vic2NyaWJlIGZyb20gdGhlIGNhbmNlbCBzaWduYWxcbiAqL1xuXG5DYW5jZWxUb2tlbi5wcm90b3R5cGUudW5zdWJzY3JpYmUgPSBmdW5jdGlvbiB1bnN1YnNjcmliZShsaXN0ZW5lcikge1xuICBpZiAoIXRoaXMuX2xpc3RlbmVycykge1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIgaW5kZXggPSB0aGlzLl9saXN0ZW5lcnMuaW5kZXhPZihsaXN0ZW5lcik7XG4gIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICB0aGlzLl9saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgfVxufTtcblxuLyoqXG4gKiBSZXR1cm5zIGFuIG9iamVjdCB0aGF0IGNvbnRhaW5zIGEgbmV3IGBDYW5jZWxUb2tlbmAgYW5kIGEgZnVuY3Rpb24gdGhhdCwgd2hlbiBjYWxsZWQsXG4gKiBjYW5jZWxzIHRoZSBgQ2FuY2VsVG9rZW5gLlxuICovXG5DYW5jZWxUb2tlbi5zb3VyY2UgPSBmdW5jdGlvbiBzb3VyY2UoKSB7XG4gIHZhciBjYW5jZWw7XG4gIHZhciB0b2tlbiA9IG5ldyBDYW5jZWxUb2tlbihmdW5jdGlvbiBleGVjdXRvcihjKSB7XG4gICAgY2FuY2VsID0gYztcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgdG9rZW46IHRva2VuLFxuICAgIGNhbmNlbDogY2FuY2VsXG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IENhbmNlbFRva2VuO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzQ2FuY2VsKHZhbHVlKSB7XG4gIHJldHVybiAhISh2YWx1ZSAmJiB2YWx1ZS5fX0NBTkNFTF9fKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcbnZhciBidWlsZFVSTCA9IHJlcXVpcmUoJy4uL2hlbHBlcnMvYnVpbGRVUkwnKTtcbnZhciBJbnRlcmNlcHRvck1hbmFnZXIgPSByZXF1aXJlKCcuL0ludGVyY2VwdG9yTWFuYWdlcicpO1xudmFyIGRpc3BhdGNoUmVxdWVzdCA9IHJlcXVpcmUoJy4vZGlzcGF0Y2hSZXF1ZXN0Jyk7XG52YXIgbWVyZ2VDb25maWcgPSByZXF1aXJlKCcuL21lcmdlQ29uZmlnJyk7XG52YXIgdmFsaWRhdG9yID0gcmVxdWlyZSgnLi4vaGVscGVycy92YWxpZGF0b3InKTtcblxudmFyIHZhbGlkYXRvcnMgPSB2YWxpZGF0b3IudmFsaWRhdG9ycztcbi8qKlxuICogQ3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIEF4aW9zXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGluc3RhbmNlQ29uZmlnIFRoZSBkZWZhdWx0IGNvbmZpZyBmb3IgdGhlIGluc3RhbmNlXG4gKi9cbmZ1bmN0aW9uIEF4aW9zKGluc3RhbmNlQ29uZmlnKSB7XG4gIHRoaXMuZGVmYXVsdHMgPSBpbnN0YW5jZUNvbmZpZztcbiAgdGhpcy5pbnRlcmNlcHRvcnMgPSB7XG4gICAgcmVxdWVzdDogbmV3IEludGVyY2VwdG9yTWFuYWdlcigpLFxuICAgIHJlc3BvbnNlOiBuZXcgSW50ZXJjZXB0b3JNYW5hZ2VyKClcbiAgfTtcbn1cblxuLyoqXG4gKiBEaXNwYXRjaCBhIHJlcXVlc3RcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIFRoZSBjb25maWcgc3BlY2lmaWMgZm9yIHRoaXMgcmVxdWVzdCAobWVyZ2VkIHdpdGggdGhpcy5kZWZhdWx0cylcbiAqL1xuQXhpb3MucHJvdG90eXBlLnJlcXVlc3QgPSBmdW5jdGlvbiByZXF1ZXN0KGNvbmZpZ09yVXJsLCBjb25maWcpIHtcbiAgLyplc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246MCovXG4gIC8vIEFsbG93IGZvciBheGlvcygnZXhhbXBsZS91cmwnWywgY29uZmlnXSkgYSBsYSBmZXRjaCBBUElcbiAgaWYgKHR5cGVvZiBjb25maWdPclVybCA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25maWcgPSBjb25maWcgfHwge307XG4gICAgY29uZmlnLnVybCA9IGNvbmZpZ09yVXJsO1xuICB9IGVsc2Uge1xuICAgIGNvbmZpZyA9IGNvbmZpZ09yVXJsIHx8IHt9O1xuICB9XG5cbiAgaWYgKCFjb25maWcudXJsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdQcm92aWRlZCBjb25maWcgdXJsIGlzIG5vdCB2YWxpZCcpO1xuICB9XG5cbiAgY29uZmlnID0gbWVyZ2VDb25maWcodGhpcy5kZWZhdWx0cywgY29uZmlnKTtcblxuICAvLyBTZXQgY29uZmlnLm1ldGhvZFxuICBpZiAoY29uZmlnLm1ldGhvZCkge1xuICAgIGNvbmZpZy5tZXRob2QgPSBjb25maWcubWV0aG9kLnRvTG93ZXJDYXNlKCk7XG4gIH0gZWxzZSBpZiAodGhpcy5kZWZhdWx0cy5tZXRob2QpIHtcbiAgICBjb25maWcubWV0aG9kID0gdGhpcy5kZWZhdWx0cy5tZXRob2QudG9Mb3dlckNhc2UoKTtcbiAgfSBlbHNlIHtcbiAgICBjb25maWcubWV0aG9kID0gJ2dldCc7XG4gIH1cblxuICB2YXIgdHJhbnNpdGlvbmFsID0gY29uZmlnLnRyYW5zaXRpb25hbDtcblxuICBpZiAodHJhbnNpdGlvbmFsICE9PSB1bmRlZmluZWQpIHtcbiAgICB2YWxpZGF0b3IuYXNzZXJ0T3B0aW9ucyh0cmFuc2l0aW9uYWwsIHtcbiAgICAgIHNpbGVudEpTT05QYXJzaW5nOiB2YWxpZGF0b3JzLnRyYW5zaXRpb25hbCh2YWxpZGF0b3JzLmJvb2xlYW4pLFxuICAgICAgZm9yY2VkSlNPTlBhcnNpbmc6IHZhbGlkYXRvcnMudHJhbnNpdGlvbmFsKHZhbGlkYXRvcnMuYm9vbGVhbiksXG4gICAgICBjbGFyaWZ5VGltZW91dEVycm9yOiB2YWxpZGF0b3JzLnRyYW5zaXRpb25hbCh2YWxpZGF0b3JzLmJvb2xlYW4pXG4gICAgfSwgZmFsc2UpO1xuICB9XG5cbiAgLy8gZmlsdGVyIG91dCBza2lwcGVkIGludGVyY2VwdG9yc1xuICB2YXIgcmVxdWVzdEludGVyY2VwdG9yQ2hhaW4gPSBbXTtcbiAgdmFyIHN5bmNocm9ub3VzUmVxdWVzdEludGVyY2VwdG9ycyA9IHRydWU7XG4gIHRoaXMuaW50ZXJjZXB0b3JzLnJlcXVlc3QuZm9yRWFjaChmdW5jdGlvbiB1bnNoaWZ0UmVxdWVzdEludGVyY2VwdG9ycyhpbnRlcmNlcHRvcikge1xuICAgIGlmICh0eXBlb2YgaW50ZXJjZXB0b3IucnVuV2hlbiA9PT0gJ2Z1bmN0aW9uJyAmJiBpbnRlcmNlcHRvci5ydW5XaGVuKGNvbmZpZykgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3luY2hyb25vdXNSZXF1ZXN0SW50ZXJjZXB0b3JzID0gc3luY2hyb25vdXNSZXF1ZXN0SW50ZXJjZXB0b3JzICYmIGludGVyY2VwdG9yLnN5bmNocm9ub3VzO1xuXG4gICAgcmVxdWVzdEludGVyY2VwdG9yQ2hhaW4udW5zaGlmdChpbnRlcmNlcHRvci5mdWxmaWxsZWQsIGludGVyY2VwdG9yLnJlamVjdGVkKTtcbiAgfSk7XG5cbiAgdmFyIHJlc3BvbnNlSW50ZXJjZXB0b3JDaGFpbiA9IFtdO1xuICB0aGlzLmludGVyY2VwdG9ycy5yZXNwb25zZS5mb3JFYWNoKGZ1bmN0aW9uIHB1c2hSZXNwb25zZUludGVyY2VwdG9ycyhpbnRlcmNlcHRvcikge1xuICAgIHJlc3BvbnNlSW50ZXJjZXB0b3JDaGFpbi5wdXNoKGludGVyY2VwdG9yLmZ1bGZpbGxlZCwgaW50ZXJjZXB0b3IucmVqZWN0ZWQpO1xuICB9KTtcblxuICB2YXIgcHJvbWlzZTtcblxuICBpZiAoIXN5bmNocm9ub3VzUmVxdWVzdEludGVyY2VwdG9ycykge1xuICAgIHZhciBjaGFpbiA9IFtkaXNwYXRjaFJlcXVlc3QsIHVuZGVmaW5lZF07XG5cbiAgICBBcnJheS5wcm90b3R5cGUudW5zaGlmdC5hcHBseShjaGFpbiwgcmVxdWVzdEludGVyY2VwdG9yQ2hhaW4pO1xuICAgIGNoYWluID0gY2hhaW4uY29uY2F0KHJlc3BvbnNlSW50ZXJjZXB0b3JDaGFpbik7XG5cbiAgICBwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKGNvbmZpZyk7XG4gICAgd2hpbGUgKGNoYWluLmxlbmd0aCkge1xuICAgICAgcHJvbWlzZSA9IHByb21pc2UudGhlbihjaGFpbi5zaGlmdCgpLCBjaGFpbi5zaGlmdCgpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfVxuXG5cbiAgdmFyIG5ld0NvbmZpZyA9IGNvbmZpZztcbiAgd2hpbGUgKHJlcXVlc3RJbnRlcmNlcHRvckNoYWluLmxlbmd0aCkge1xuICAgIHZhciBvbkZ1bGZpbGxlZCA9IHJlcXVlc3RJbnRlcmNlcHRvckNoYWluLnNoaWZ0KCk7XG4gICAgdmFyIG9uUmVqZWN0ZWQgPSByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbi5zaGlmdCgpO1xuICAgIHRyeSB7XG4gICAgICBuZXdDb25maWcgPSBvbkZ1bGZpbGxlZChuZXdDb25maWcpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBvblJlamVjdGVkKGVycm9yKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHRyeSB7XG4gICAgcHJvbWlzZSA9IGRpc3BhdGNoUmVxdWVzdChuZXdDb25maWcpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gIH1cblxuICB3aGlsZSAocmVzcG9uc2VJbnRlcmNlcHRvckNoYWluLmxlbmd0aCkge1xuICAgIHByb21pc2UgPSBwcm9taXNlLnRoZW4ocmVzcG9uc2VJbnRlcmNlcHRvckNoYWluLnNoaWZ0KCksIHJlc3BvbnNlSW50ZXJjZXB0b3JDaGFpbi5zaGlmdCgpKTtcbiAgfVxuXG4gIHJldHVybiBwcm9taXNlO1xufTtcblxuQXhpb3MucHJvdG90eXBlLmdldFVyaSA9IGZ1bmN0aW9uIGdldFVyaShjb25maWcpIHtcbiAgaWYgKCFjb25maWcudXJsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdQcm92aWRlZCBjb25maWcgdXJsIGlzIG5vdCB2YWxpZCcpO1xuICB9XG4gIGNvbmZpZyA9IG1lcmdlQ29uZmlnKHRoaXMuZGVmYXVsdHMsIGNvbmZpZyk7XG4gIHJldHVybiBidWlsZFVSTChjb25maWcudXJsLCBjb25maWcucGFyYW1zLCBjb25maWcucGFyYW1zU2VyaWFsaXplcikucmVwbGFjZSgvXlxcPy8sICcnKTtcbn07XG5cbi8vIFByb3ZpZGUgYWxpYXNlcyBmb3Igc3VwcG9ydGVkIHJlcXVlc3QgbWV0aG9kc1xudXRpbHMuZm9yRWFjaChbJ2RlbGV0ZScsICdnZXQnLCAnaGVhZCcsICdvcHRpb25zJ10sIGZ1bmN0aW9uIGZvckVhY2hNZXRob2ROb0RhdGEobWV0aG9kKSB7XG4gIC8qZXNsaW50IGZ1bmMtbmFtZXM6MCovXG4gIEF4aW9zLnByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24odXJsLCBjb25maWcpIHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KG1lcmdlQ29uZmlnKGNvbmZpZyB8fCB7fSwge1xuICAgICAgbWV0aG9kOiBtZXRob2QsXG4gICAgICB1cmw6IHVybCxcbiAgICAgIGRhdGE6IChjb25maWcgfHwge30pLmRhdGFcbiAgICB9KSk7XG4gIH07XG59KTtcblxudXRpbHMuZm9yRWFjaChbJ3Bvc3QnLCAncHV0JywgJ3BhdGNoJ10sIGZ1bmN0aW9uIGZvckVhY2hNZXRob2RXaXRoRGF0YShtZXRob2QpIHtcbiAgLyplc2xpbnQgZnVuYy1uYW1lczowKi9cbiAgQXhpb3MucHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbih1cmwsIGRhdGEsIGNvbmZpZykge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QobWVyZ2VDb25maWcoY29uZmlnIHx8IHt9LCB7XG4gICAgICBtZXRob2Q6IG1ldGhvZCxcbiAgICAgIHVybDogdXJsLFxuICAgICAgZGF0YTogZGF0YVxuICAgIH0pKTtcbiAgfTtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEF4aW9zO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG5cbmZ1bmN0aW9uIEludGVyY2VwdG9yTWFuYWdlcigpIHtcbiAgdGhpcy5oYW5kbGVycyA9IFtdO1xufVxuXG4vKipcbiAqIEFkZCBhIG5ldyBpbnRlcmNlcHRvciB0byB0aGUgc3RhY2tcbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdWxmaWxsZWQgVGhlIGZ1bmN0aW9uIHRvIGhhbmRsZSBgdGhlbmAgZm9yIGEgYFByb21pc2VgXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSByZWplY3RlZCBUaGUgZnVuY3Rpb24gdG8gaGFuZGxlIGByZWplY3RgIGZvciBhIGBQcm9taXNlYFxuICpcbiAqIEByZXR1cm4ge051bWJlcn0gQW4gSUQgdXNlZCB0byByZW1vdmUgaW50ZXJjZXB0b3IgbGF0ZXJcbiAqL1xuSW50ZXJjZXB0b3JNYW5hZ2VyLnByb3RvdHlwZS51c2UgPSBmdW5jdGlvbiB1c2UoZnVsZmlsbGVkLCByZWplY3RlZCwgb3B0aW9ucykge1xuICB0aGlzLmhhbmRsZXJzLnB1c2goe1xuICAgIGZ1bGZpbGxlZDogZnVsZmlsbGVkLFxuICAgIHJlamVjdGVkOiByZWplY3RlZCxcbiAgICBzeW5jaHJvbm91czogb3B0aW9ucyA/IG9wdGlvbnMuc3luY2hyb25vdXMgOiBmYWxzZSxcbiAgICBydW5XaGVuOiBvcHRpb25zID8gb3B0aW9ucy5ydW5XaGVuIDogbnVsbFxuICB9KTtcbiAgcmV0dXJuIHRoaXMuaGFuZGxlcnMubGVuZ3RoIC0gMTtcbn07XG5cbi8qKlxuICogUmVtb3ZlIGFuIGludGVyY2VwdG9yIGZyb20gdGhlIHN0YWNrXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IGlkIFRoZSBJRCB0aGF0IHdhcyByZXR1cm5lZCBieSBgdXNlYFxuICovXG5JbnRlcmNlcHRvck1hbmFnZXIucHJvdG90eXBlLmVqZWN0ID0gZnVuY3Rpb24gZWplY3QoaWQpIHtcbiAgaWYgKHRoaXMuaGFuZGxlcnNbaWRdKSB7XG4gICAgdGhpcy5oYW5kbGVyc1tpZF0gPSBudWxsO1xuICB9XG59O1xuXG4vKipcbiAqIEl0ZXJhdGUgb3ZlciBhbGwgdGhlIHJlZ2lzdGVyZWQgaW50ZXJjZXB0b3JzXG4gKlxuICogVGhpcyBtZXRob2QgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3Igc2tpcHBpbmcgb3ZlciBhbnlcbiAqIGludGVyY2VwdG9ycyB0aGF0IG1heSBoYXZlIGJlY29tZSBgbnVsbGAgY2FsbGluZyBgZWplY3RgLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFRoZSBmdW5jdGlvbiB0byBjYWxsIGZvciBlYWNoIGludGVyY2VwdG9yXG4gKi9cbkludGVyY2VwdG9yTWFuYWdlci5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uIGZvckVhY2goZm4pIHtcbiAgdXRpbHMuZm9yRWFjaCh0aGlzLmhhbmRsZXJzLCBmdW5jdGlvbiBmb3JFYWNoSGFuZGxlcihoKSB7XG4gICAgaWYgKGggIT09IG51bGwpIHtcbiAgICAgIGZuKGgpO1xuICAgIH1cbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEludGVyY2VwdG9yTWFuYWdlcjtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGlzQWJzb2x1dGVVUkwgPSByZXF1aXJlKCcuLi9oZWxwZXJzL2lzQWJzb2x1dGVVUkwnKTtcbnZhciBjb21iaW5lVVJMcyA9IHJlcXVpcmUoJy4uL2hlbHBlcnMvY29tYmluZVVSTHMnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IFVSTCBieSBjb21iaW5pbmcgdGhlIGJhc2VVUkwgd2l0aCB0aGUgcmVxdWVzdGVkVVJMLFxuICogb25seSB3aGVuIHRoZSByZXF1ZXN0ZWRVUkwgaXMgbm90IGFscmVhZHkgYW4gYWJzb2x1dGUgVVJMLlxuICogSWYgdGhlIHJlcXVlc3RVUkwgaXMgYWJzb2x1dGUsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgcmVxdWVzdGVkVVJMIHVudG91Y2hlZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYmFzZVVSTCBUaGUgYmFzZSBVUkxcbiAqIEBwYXJhbSB7c3RyaW5nfSByZXF1ZXN0ZWRVUkwgQWJzb2x1dGUgb3IgcmVsYXRpdmUgVVJMIHRvIGNvbWJpbmVcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBjb21iaW5lZCBmdWxsIHBhdGhcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBidWlsZEZ1bGxQYXRoKGJhc2VVUkwsIHJlcXVlc3RlZFVSTCkge1xuICBpZiAoYmFzZVVSTCAmJiAhaXNBYnNvbHV0ZVVSTChyZXF1ZXN0ZWRVUkwpKSB7XG4gICAgcmV0dXJuIGNvbWJpbmVVUkxzKGJhc2VVUkwsIHJlcXVlc3RlZFVSTCk7XG4gIH1cbiAgcmV0dXJuIHJlcXVlc3RlZFVSTDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBlbmhhbmNlRXJyb3IgPSByZXF1aXJlKCcuL2VuaGFuY2VFcnJvcicpO1xuXG4vKipcbiAqIENyZWF0ZSBhbiBFcnJvciB3aXRoIHRoZSBzcGVjaWZpZWQgbWVzc2FnZSwgY29uZmlnLCBlcnJvciBjb2RlLCByZXF1ZXN0IGFuZCByZXNwb25zZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcgVGhlIGNvbmZpZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbY29kZV0gVGhlIGVycm9yIGNvZGUgKGZvciBleGFtcGxlLCAnRUNPTk5BQk9SVEVEJykuXG4gKiBAcGFyYW0ge09iamVjdH0gW3JlcXVlc3RdIFRoZSByZXF1ZXN0LlxuICogQHBhcmFtIHtPYmplY3R9IFtyZXNwb25zZV0gVGhlIHJlc3BvbnNlLlxuICogQHJldHVybnMge0Vycm9yfSBUaGUgY3JlYXRlZCBlcnJvci5cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjcmVhdGVFcnJvcihtZXNzYWdlLCBjb25maWcsIGNvZGUsIHJlcXVlc3QsIHJlc3BvbnNlKSB7XG4gIHZhciBlcnJvciA9IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgcmV0dXJuIGVuaGFuY2VFcnJvcihlcnJvciwgY29uZmlnLCBjb2RlLCByZXF1ZXN0LCByZXNwb25zZSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG52YXIgdHJhbnNmb3JtRGF0YSA9IHJlcXVpcmUoJy4vdHJhbnNmb3JtRGF0YScpO1xudmFyIGlzQ2FuY2VsID0gcmVxdWlyZSgnLi4vY2FuY2VsL2lzQ2FuY2VsJyk7XG52YXIgZGVmYXVsdHMgPSByZXF1aXJlKCcuLi9kZWZhdWx0cycpO1xudmFyIENhbmNlbCA9IHJlcXVpcmUoJy4uL2NhbmNlbC9DYW5jZWwnKTtcblxuLyoqXG4gKiBUaHJvd3MgYSBgQ2FuY2VsYCBpZiBjYW5jZWxsYXRpb24gaGFzIGJlZW4gcmVxdWVzdGVkLlxuICovXG5mdW5jdGlvbiB0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKGNvbmZpZykge1xuICBpZiAoY29uZmlnLmNhbmNlbFRva2VuKSB7XG4gICAgY29uZmlnLmNhbmNlbFRva2VuLnRocm93SWZSZXF1ZXN0ZWQoKTtcbiAgfVxuXG4gIGlmIChjb25maWcuc2lnbmFsICYmIGNvbmZpZy5zaWduYWwuYWJvcnRlZCkge1xuICAgIHRocm93IG5ldyBDYW5jZWwoJ2NhbmNlbGVkJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBEaXNwYXRjaCBhIHJlcXVlc3QgdG8gdGhlIHNlcnZlciB1c2luZyB0aGUgY29uZmlndXJlZCBhZGFwdGVyLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBjb25maWcgVGhlIGNvbmZpZyB0aGF0IGlzIHRvIGJlIHVzZWQgZm9yIHRoZSByZXF1ZXN0XG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gVGhlIFByb21pc2UgdG8gYmUgZnVsZmlsbGVkXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZGlzcGF0Y2hSZXF1ZXN0KGNvbmZpZykge1xuICB0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKGNvbmZpZyk7XG5cbiAgLy8gRW5zdXJlIGhlYWRlcnMgZXhpc3RcbiAgY29uZmlnLmhlYWRlcnMgPSBjb25maWcuaGVhZGVycyB8fCB7fTtcblxuICAvLyBUcmFuc2Zvcm0gcmVxdWVzdCBkYXRhXG4gIGNvbmZpZy5kYXRhID0gdHJhbnNmb3JtRGF0YS5jYWxsKFxuICAgIGNvbmZpZyxcbiAgICBjb25maWcuZGF0YSxcbiAgICBjb25maWcuaGVhZGVycyxcbiAgICBjb25maWcudHJhbnNmb3JtUmVxdWVzdFxuICApO1xuXG4gIC8vIEZsYXR0ZW4gaGVhZGVyc1xuICBjb25maWcuaGVhZGVycyA9IHV0aWxzLm1lcmdlKFxuICAgIGNvbmZpZy5oZWFkZXJzLmNvbW1vbiB8fCB7fSxcbiAgICBjb25maWcuaGVhZGVyc1tjb25maWcubWV0aG9kXSB8fCB7fSxcbiAgICBjb25maWcuaGVhZGVyc1xuICApO1xuXG4gIHV0aWxzLmZvckVhY2goXG4gICAgWydkZWxldGUnLCAnZ2V0JywgJ2hlYWQnLCAncG9zdCcsICdwdXQnLCAncGF0Y2gnLCAnY29tbW9uJ10sXG4gICAgZnVuY3Rpb24gY2xlYW5IZWFkZXJDb25maWcobWV0aG9kKSB7XG4gICAgICBkZWxldGUgY29uZmlnLmhlYWRlcnNbbWV0aG9kXTtcbiAgICB9XG4gICk7XG5cbiAgdmFyIGFkYXB0ZXIgPSBjb25maWcuYWRhcHRlciB8fCBkZWZhdWx0cy5hZGFwdGVyO1xuXG4gIHJldHVybiBhZGFwdGVyKGNvbmZpZykudGhlbihmdW5jdGlvbiBvbkFkYXB0ZXJSZXNvbHV0aW9uKHJlc3BvbnNlKSB7XG4gICAgdGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZChjb25maWcpO1xuXG4gICAgLy8gVHJhbnNmb3JtIHJlc3BvbnNlIGRhdGFcbiAgICByZXNwb25zZS5kYXRhID0gdHJhbnNmb3JtRGF0YS5jYWxsKFxuICAgICAgY29uZmlnLFxuICAgICAgcmVzcG9uc2UuZGF0YSxcbiAgICAgIHJlc3BvbnNlLmhlYWRlcnMsXG4gICAgICBjb25maWcudHJhbnNmb3JtUmVzcG9uc2VcbiAgICApO1xuXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9LCBmdW5jdGlvbiBvbkFkYXB0ZXJSZWplY3Rpb24ocmVhc29uKSB7XG4gICAgaWYgKCFpc0NhbmNlbChyZWFzb24pKSB7XG4gICAgICB0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKGNvbmZpZyk7XG5cbiAgICAgIC8vIFRyYW5zZm9ybSByZXNwb25zZSBkYXRhXG4gICAgICBpZiAocmVhc29uICYmIHJlYXNvbi5yZXNwb25zZSkge1xuICAgICAgICByZWFzb24ucmVzcG9uc2UuZGF0YSA9IHRyYW5zZm9ybURhdGEuY2FsbChcbiAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgcmVhc29uLnJlc3BvbnNlLmRhdGEsXG4gICAgICAgICAgcmVhc29uLnJlc3BvbnNlLmhlYWRlcnMsXG4gICAgICAgICAgY29uZmlnLnRyYW5zZm9ybVJlc3BvbnNlXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHJlYXNvbik7XG4gIH0pO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBVcGRhdGUgYW4gRXJyb3Igd2l0aCB0aGUgc3BlY2lmaWVkIGNvbmZpZywgZXJyb3IgY29kZSwgYW5kIHJlc3BvbnNlLlxuICpcbiAqIEBwYXJhbSB7RXJyb3J9IGVycm9yIFRoZSBlcnJvciB0byB1cGRhdGUuXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIFRoZSBjb25maWcuXG4gKiBAcGFyYW0ge3N0cmluZ30gW2NvZGVdIFRoZSBlcnJvciBjb2RlIChmb3IgZXhhbXBsZSwgJ0VDT05OQUJPUlRFRCcpLlxuICogQHBhcmFtIHtPYmplY3R9IFtyZXF1ZXN0XSBUaGUgcmVxdWVzdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbcmVzcG9uc2VdIFRoZSByZXNwb25zZS5cbiAqIEByZXR1cm5zIHtFcnJvcn0gVGhlIGVycm9yLlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGVuaGFuY2VFcnJvcihlcnJvciwgY29uZmlnLCBjb2RlLCByZXF1ZXN0LCByZXNwb25zZSkge1xuICBlcnJvci5jb25maWcgPSBjb25maWc7XG4gIGlmIChjb2RlKSB7XG4gICAgZXJyb3IuY29kZSA9IGNvZGU7XG4gIH1cblxuICBlcnJvci5yZXF1ZXN0ID0gcmVxdWVzdDtcbiAgZXJyb3IucmVzcG9uc2UgPSByZXNwb25zZTtcbiAgZXJyb3IuaXNBeGlvc0Vycm9yID0gdHJ1ZTtcblxuICBlcnJvci50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIFN0YW5kYXJkXG4gICAgICBtZXNzYWdlOiB0aGlzLm1lc3NhZ2UsXG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICAvLyBNaWNyb3NvZnRcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgbnVtYmVyOiB0aGlzLm51bWJlcixcbiAgICAgIC8vIE1vemlsbGFcbiAgICAgIGZpbGVOYW1lOiB0aGlzLmZpbGVOYW1lLFxuICAgICAgbGluZU51bWJlcjogdGhpcy5saW5lTnVtYmVyLFxuICAgICAgY29sdW1uTnVtYmVyOiB0aGlzLmNvbHVtbk51bWJlcixcbiAgICAgIHN0YWNrOiB0aGlzLnN0YWNrLFxuICAgICAgLy8gQXhpb3NcbiAgICAgIGNvbmZpZzogdGhpcy5jb25maWcsXG4gICAgICBjb2RlOiB0aGlzLmNvZGUsXG4gICAgICBzdGF0dXM6IHRoaXMucmVzcG9uc2UgJiYgdGhpcy5yZXNwb25zZS5zdGF0dXMgPyB0aGlzLnJlc3BvbnNlLnN0YXR1cyA6IG51bGxcbiAgICB9O1xuICB9O1xuICByZXR1cm4gZXJyb3I7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xuXG4vKipcbiAqIENvbmZpZy1zcGVjaWZpYyBtZXJnZS1mdW5jdGlvbiB3aGljaCBjcmVhdGVzIGEgbmV3IGNvbmZpZy1vYmplY3RcbiAqIGJ5IG1lcmdpbmcgdHdvIGNvbmZpZ3VyYXRpb24gb2JqZWN0cyB0b2dldGhlci5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnMVxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZzJcbiAqIEByZXR1cm5zIHtPYmplY3R9IE5ldyBvYmplY3QgcmVzdWx0aW5nIGZyb20gbWVyZ2luZyBjb25maWcyIHRvIGNvbmZpZzFcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBtZXJnZUNvbmZpZyhjb25maWcxLCBjb25maWcyKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICBjb25maWcyID0gY29uZmlnMiB8fCB7fTtcbiAgdmFyIGNvbmZpZyA9IHt9O1xuXG4gIGZ1bmN0aW9uIGdldE1lcmdlZFZhbHVlKHRhcmdldCwgc291cmNlKSB7XG4gICAgaWYgKHV0aWxzLmlzUGxhaW5PYmplY3QodGFyZ2V0KSAmJiB1dGlscy5pc1BsYWluT2JqZWN0KHNvdXJjZSkpIHtcbiAgICAgIHJldHVybiB1dGlscy5tZXJnZSh0YXJnZXQsIHNvdXJjZSk7XG4gICAgfSBlbHNlIGlmICh1dGlscy5pc1BsYWluT2JqZWN0KHNvdXJjZSkpIHtcbiAgICAgIHJldHVybiB1dGlscy5tZXJnZSh7fSwgc291cmNlKTtcbiAgICB9IGVsc2UgaWYgKHV0aWxzLmlzQXJyYXkoc291cmNlKSkge1xuICAgICAgcmV0dXJuIHNvdXJjZS5zbGljZSgpO1xuICAgIH1cbiAgICByZXR1cm4gc291cmNlO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXG4gIGZ1bmN0aW9uIG1lcmdlRGVlcFByb3BlcnRpZXMocHJvcCkge1xuICAgIGlmICghdXRpbHMuaXNVbmRlZmluZWQoY29uZmlnMltwcm9wXSkpIHtcbiAgICAgIHJldHVybiBnZXRNZXJnZWRWYWx1ZShjb25maWcxW3Byb3BdLCBjb25maWcyW3Byb3BdKTtcbiAgICB9IGVsc2UgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChjb25maWcxW3Byb3BdKSkge1xuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKHVuZGVmaW5lZCwgY29uZmlnMVtwcm9wXSk7XG4gICAgfVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXG4gIGZ1bmN0aW9uIHZhbHVlRnJvbUNvbmZpZzIocHJvcCkge1xuICAgIGlmICghdXRpbHMuaXNVbmRlZmluZWQoY29uZmlnMltwcm9wXSkpIHtcbiAgICAgIHJldHVybiBnZXRNZXJnZWRWYWx1ZSh1bmRlZmluZWQsIGNvbmZpZzJbcHJvcF0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb25zaXN0ZW50LXJldHVyblxuICBmdW5jdGlvbiBkZWZhdWx0VG9Db25maWcyKHByb3ApIHtcbiAgICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGNvbmZpZzJbcHJvcF0pKSB7XG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBjb25maWcyW3Byb3BdKTtcbiAgICB9IGVsc2UgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChjb25maWcxW3Byb3BdKSkge1xuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKHVuZGVmaW5lZCwgY29uZmlnMVtwcm9wXSk7XG4gICAgfVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXG4gIGZ1bmN0aW9uIG1lcmdlRGlyZWN0S2V5cyhwcm9wKSB7XG4gICAgaWYgKHByb3AgaW4gY29uZmlnMikge1xuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKGNvbmZpZzFbcHJvcF0sIGNvbmZpZzJbcHJvcF0pO1xuICAgIH0gZWxzZSBpZiAocHJvcCBpbiBjb25maWcxKSB7XG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBjb25maWcxW3Byb3BdKTtcbiAgICB9XG4gIH1cblxuICB2YXIgbWVyZ2VNYXAgPSB7XG4gICAgJ3VybCc6IHZhbHVlRnJvbUNvbmZpZzIsXG4gICAgJ21ldGhvZCc6IHZhbHVlRnJvbUNvbmZpZzIsXG4gICAgJ2RhdGEnOiB2YWx1ZUZyb21Db25maWcyLFxuICAgICdiYXNlVVJMJzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAndHJhbnNmb3JtUmVxdWVzdCc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ3RyYW5zZm9ybVJlc3BvbnNlJzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAncGFyYW1zU2VyaWFsaXplcic6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ3RpbWVvdXQnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICd0aW1lb3V0TWVzc2FnZSc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ3dpdGhDcmVkZW50aWFscyc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ2FkYXB0ZXInOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICdyZXNwb25zZVR5cGUnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICd4c3JmQ29va2llTmFtZSc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ3hzcmZIZWFkZXJOYW1lJzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAnb25VcGxvYWRQcm9ncmVzcyc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ29uRG93bmxvYWRQcm9ncmVzcyc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ2RlY29tcHJlc3MnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICdtYXhDb250ZW50TGVuZ3RoJzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAnbWF4Qm9keUxlbmd0aCc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ3RyYW5zcG9ydCc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ2h0dHBBZ2VudCc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ2h0dHBzQWdlbnQnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICdjYW5jZWxUb2tlbic6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ3NvY2tldFBhdGgnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICdyZXNwb25zZUVuY29kaW5nJzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAndmFsaWRhdGVTdGF0dXMnOiBtZXJnZURpcmVjdEtleXNcbiAgfTtcblxuICB1dGlscy5mb3JFYWNoKE9iamVjdC5rZXlzKGNvbmZpZzEpLmNvbmNhdChPYmplY3Qua2V5cyhjb25maWcyKSksIGZ1bmN0aW9uIGNvbXB1dGVDb25maWdWYWx1ZShwcm9wKSB7XG4gICAgdmFyIG1lcmdlID0gbWVyZ2VNYXBbcHJvcF0gfHwgbWVyZ2VEZWVwUHJvcGVydGllcztcbiAgICB2YXIgY29uZmlnVmFsdWUgPSBtZXJnZShwcm9wKTtcbiAgICAodXRpbHMuaXNVbmRlZmluZWQoY29uZmlnVmFsdWUpICYmIG1lcmdlICE9PSBtZXJnZURpcmVjdEtleXMpIHx8IChjb25maWdbcHJvcF0gPSBjb25maWdWYWx1ZSk7XG4gIH0pO1xuXG4gIHJldHVybiBjb25maWc7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgY3JlYXRlRXJyb3IgPSByZXF1aXJlKCcuL2NyZWF0ZUVycm9yJyk7XG5cbi8qKlxuICogUmVzb2x2ZSBvciByZWplY3QgYSBQcm9taXNlIGJhc2VkIG9uIHJlc3BvbnNlIHN0YXR1cy5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSByZXNvbHZlIEEgZnVuY3Rpb24gdGhhdCByZXNvbHZlcyB0aGUgcHJvbWlzZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHJlamVjdCBBIGZ1bmN0aW9uIHRoYXQgcmVqZWN0cyB0aGUgcHJvbWlzZS5cbiAqIEBwYXJhbSB7b2JqZWN0fSByZXNwb25zZSBUaGUgcmVzcG9uc2UuXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgcmVzcG9uc2UpIHtcbiAgdmFyIHZhbGlkYXRlU3RhdHVzID0gcmVzcG9uc2UuY29uZmlnLnZhbGlkYXRlU3RhdHVzO1xuICBpZiAoIXJlc3BvbnNlLnN0YXR1cyB8fCAhdmFsaWRhdGVTdGF0dXMgfHwgdmFsaWRhdGVTdGF0dXMocmVzcG9uc2Uuc3RhdHVzKSkge1xuICAgIHJlc29sdmUocmVzcG9uc2UpO1xuICB9IGVsc2Uge1xuICAgIHJlamVjdChjcmVhdGVFcnJvcihcbiAgICAgICdSZXF1ZXN0IGZhaWxlZCB3aXRoIHN0YXR1cyBjb2RlICcgKyByZXNwb25zZS5zdGF0dXMsXG4gICAgICByZXNwb25zZS5jb25maWcsXG4gICAgICBudWxsLFxuICAgICAgcmVzcG9uc2UucmVxdWVzdCxcbiAgICAgIHJlc3BvbnNlXG4gICAgKSk7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcbnZhciBkZWZhdWx0cyA9IHJlcXVpcmUoJy4vLi4vZGVmYXVsdHMnKTtcblxuLyoqXG4gKiBUcmFuc2Zvcm0gdGhlIGRhdGEgZm9yIGEgcmVxdWVzdCBvciBhIHJlc3BvbnNlXG4gKlxuICogQHBhcmFtIHtPYmplY3R8U3RyaW5nfSBkYXRhIFRoZSBkYXRhIHRvIGJlIHRyYW5zZm9ybWVkXG4gKiBAcGFyYW0ge0FycmF5fSBoZWFkZXJzIFRoZSBoZWFkZXJzIGZvciB0aGUgcmVxdWVzdCBvciByZXNwb25zZVxuICogQHBhcmFtIHtBcnJheXxGdW5jdGlvbn0gZm5zIEEgc2luZ2xlIGZ1bmN0aW9uIG9yIEFycmF5IG9mIGZ1bmN0aW9uc1xuICogQHJldHVybnMgeyp9IFRoZSByZXN1bHRpbmcgdHJhbnNmb3JtZWQgZGF0YVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHRyYW5zZm9ybURhdGEoZGF0YSwgaGVhZGVycywgZm5zKSB7XG4gIHZhciBjb250ZXh0ID0gdGhpcyB8fCBkZWZhdWx0cztcbiAgLyplc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246MCovXG4gIHV0aWxzLmZvckVhY2goZm5zLCBmdW5jdGlvbiB0cmFuc2Zvcm0oZm4pIHtcbiAgICBkYXRhID0gZm4uY2FsbChjb250ZXh0LCBkYXRhLCBoZWFkZXJzKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGRhdGE7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG52YXIgbm9ybWFsaXplSGVhZGVyTmFtZSA9IHJlcXVpcmUoJy4vaGVscGVycy9ub3JtYWxpemVIZWFkZXJOYW1lJyk7XG52YXIgZW5oYW5jZUVycm9yID0gcmVxdWlyZSgnLi9jb3JlL2VuaGFuY2VFcnJvcicpO1xuXG52YXIgREVGQVVMVF9DT05URU5UX1RZUEUgPSB7XG4gICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ1xufTtcblxuZnVuY3Rpb24gc2V0Q29udGVudFR5cGVJZlVuc2V0KGhlYWRlcnMsIHZhbHVlKSB7XG4gIGlmICghdXRpbHMuaXNVbmRlZmluZWQoaGVhZGVycykgJiYgdXRpbHMuaXNVbmRlZmluZWQoaGVhZGVyc1snQ29udGVudC1UeXBlJ10pKSB7XG4gICAgaGVhZGVyc1snQ29udGVudC1UeXBlJ10gPSB2YWx1ZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXREZWZhdWx0QWRhcHRlcigpIHtcbiAgdmFyIGFkYXB0ZXI7XG4gIGlmICh0eXBlb2YgWE1MSHR0cFJlcXVlc3QgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgLy8gRm9yIGJyb3dzZXJzIHVzZSBYSFIgYWRhcHRlclxuICAgIGFkYXB0ZXIgPSByZXF1aXJlKCcuL2FkYXB0ZXJzL3hocicpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocHJvY2VzcykgPT09ICdbb2JqZWN0IHByb2Nlc3NdJykge1xuICAgIC8vIEZvciBub2RlIHVzZSBIVFRQIGFkYXB0ZXJcbiAgICBhZGFwdGVyID0gcmVxdWlyZSgnLi9hZGFwdGVycy9odHRwJyk7XG4gIH1cbiAgcmV0dXJuIGFkYXB0ZXI7XG59XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeVNhZmVseShyYXdWYWx1ZSwgcGFyc2VyLCBlbmNvZGVyKSB7XG4gIGlmICh1dGlscy5pc1N0cmluZyhyYXdWYWx1ZSkpIHtcbiAgICB0cnkge1xuICAgICAgKHBhcnNlciB8fCBKU09OLnBhcnNlKShyYXdWYWx1ZSk7XG4gICAgICByZXR1cm4gdXRpbHMudHJpbShyYXdWYWx1ZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUubmFtZSAhPT0gJ1N5bnRheEVycm9yJykge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAoZW5jb2RlciB8fCBKU09OLnN0cmluZ2lmeSkocmF3VmFsdWUpO1xufVxuXG52YXIgZGVmYXVsdHMgPSB7XG5cbiAgdHJhbnNpdGlvbmFsOiB7XG4gICAgc2lsZW50SlNPTlBhcnNpbmc6IHRydWUsXG4gICAgZm9yY2VkSlNPTlBhcnNpbmc6IHRydWUsXG4gICAgY2xhcmlmeVRpbWVvdXRFcnJvcjogZmFsc2VcbiAgfSxcblxuICBhZGFwdGVyOiBnZXREZWZhdWx0QWRhcHRlcigpLFxuXG4gIHRyYW5zZm9ybVJlcXVlc3Q6IFtmdW5jdGlvbiB0cmFuc2Zvcm1SZXF1ZXN0KGRhdGEsIGhlYWRlcnMpIHtcbiAgICBub3JtYWxpemVIZWFkZXJOYW1lKGhlYWRlcnMsICdBY2NlcHQnKTtcbiAgICBub3JtYWxpemVIZWFkZXJOYW1lKGhlYWRlcnMsICdDb250ZW50LVR5cGUnKTtcblxuICAgIGlmICh1dGlscy5pc0Zvcm1EYXRhKGRhdGEpIHx8XG4gICAgICB1dGlscy5pc0FycmF5QnVmZmVyKGRhdGEpIHx8XG4gICAgICB1dGlscy5pc0J1ZmZlcihkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNTdHJlYW0oZGF0YSkgfHxcbiAgICAgIHV0aWxzLmlzRmlsZShkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNCbG9iKGRhdGEpXG4gICAgKSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gICAgaWYgKHV0aWxzLmlzQXJyYXlCdWZmZXJWaWV3KGRhdGEpKSB7XG4gICAgICByZXR1cm4gZGF0YS5idWZmZXI7XG4gICAgfVxuICAgIGlmICh1dGlscy5pc1VSTFNlYXJjaFBhcmFtcyhkYXRhKSkge1xuICAgICAgc2V0Q29udGVudFR5cGVJZlVuc2V0KGhlYWRlcnMsICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtOCcpO1xuICAgICAgcmV0dXJuIGRhdGEudG9TdHJpbmcoKTtcbiAgICB9XG4gICAgaWYgKHV0aWxzLmlzT2JqZWN0KGRhdGEpIHx8IChoZWFkZXJzICYmIGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddID09PSAnYXBwbGljYXRpb24vanNvbicpKSB7XG4gICAgICBzZXRDb250ZW50VHlwZUlmVW5zZXQoaGVhZGVycywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcbiAgICAgIHJldHVybiBzdHJpbmdpZnlTYWZlbHkoZGF0YSk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XSxcblxuICB0cmFuc2Zvcm1SZXNwb25zZTogW2Z1bmN0aW9uIHRyYW5zZm9ybVJlc3BvbnNlKGRhdGEpIHtcbiAgICB2YXIgdHJhbnNpdGlvbmFsID0gdGhpcy50cmFuc2l0aW9uYWwgfHwgZGVmYXVsdHMudHJhbnNpdGlvbmFsO1xuICAgIHZhciBzaWxlbnRKU09OUGFyc2luZyA9IHRyYW5zaXRpb25hbCAmJiB0cmFuc2l0aW9uYWwuc2lsZW50SlNPTlBhcnNpbmc7XG4gICAgdmFyIGZvcmNlZEpTT05QYXJzaW5nID0gdHJhbnNpdGlvbmFsICYmIHRyYW5zaXRpb25hbC5mb3JjZWRKU09OUGFyc2luZztcbiAgICB2YXIgc3RyaWN0SlNPTlBhcnNpbmcgPSAhc2lsZW50SlNPTlBhcnNpbmcgJiYgdGhpcy5yZXNwb25zZVR5cGUgPT09ICdqc29uJztcblxuICAgIGlmIChzdHJpY3RKU09OUGFyc2luZyB8fCAoZm9yY2VkSlNPTlBhcnNpbmcgJiYgdXRpbHMuaXNTdHJpbmcoZGF0YSkgJiYgZGF0YS5sZW5ndGgpKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShkYXRhKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKHN0cmljdEpTT05QYXJzaW5nKSB7XG4gICAgICAgICAgaWYgKGUubmFtZSA9PT0gJ1N5bnRheEVycm9yJykge1xuICAgICAgICAgICAgdGhyb3cgZW5oYW5jZUVycm9yKGUsIHRoaXMsICdFX0pTT05fUEFSU0UnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkYXRhO1xuICB9XSxcblxuICAvKipcbiAgICogQSB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyB0byBhYm9ydCBhIHJlcXVlc3QuIElmIHNldCB0byAwIChkZWZhdWx0KSBhXG4gICAqIHRpbWVvdXQgaXMgbm90IGNyZWF0ZWQuXG4gICAqL1xuICB0aW1lb3V0OiAwLFxuXG4gIHhzcmZDb29raWVOYW1lOiAnWFNSRi1UT0tFTicsXG4gIHhzcmZIZWFkZXJOYW1lOiAnWC1YU1JGLVRPS0VOJyxcblxuICBtYXhDb250ZW50TGVuZ3RoOiAtMSxcbiAgbWF4Qm9keUxlbmd0aDogLTEsXG5cbiAgdmFsaWRhdGVTdGF0dXM6IGZ1bmN0aW9uIHZhbGlkYXRlU3RhdHVzKHN0YXR1cykge1xuICAgIHJldHVybiBzdGF0dXMgPj0gMjAwICYmIHN0YXR1cyA8IDMwMDtcbiAgfSxcblxuICBoZWFkZXJzOiB7XG4gICAgY29tbW9uOiB7XG4gICAgICAnQWNjZXB0JzogJ2FwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKidcbiAgICB9XG4gIH1cbn07XG5cbnV0aWxzLmZvckVhY2goWydkZWxldGUnLCAnZ2V0JywgJ2hlYWQnXSwgZnVuY3Rpb24gZm9yRWFjaE1ldGhvZE5vRGF0YShtZXRob2QpIHtcbiAgZGVmYXVsdHMuaGVhZGVyc1ttZXRob2RdID0ge307XG59KTtcblxudXRpbHMuZm9yRWFjaChbJ3Bvc3QnLCAncHV0JywgJ3BhdGNoJ10sIGZ1bmN0aW9uIGZvckVhY2hNZXRob2RXaXRoRGF0YShtZXRob2QpIHtcbiAgZGVmYXVsdHMuaGVhZGVyc1ttZXRob2RdID0gdXRpbHMubWVyZ2UoREVGQVVMVF9DT05URU5UX1RZUEUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZGVmYXVsdHM7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgXCJ2ZXJzaW9uXCI6IFwiMC4yNS4wXCJcbn07IiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGJpbmQoZm4sIHRoaXNBcmcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHdyYXAoKSB7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIH1cbiAgICByZXR1cm4gZm4uYXBwbHkodGhpc0FyZywgYXJncyk7XG4gIH07XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG5cbmZ1bmN0aW9uIGVuY29kZSh2YWwpIHtcbiAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudCh2YWwpLlxuICAgIHJlcGxhY2UoLyUzQS9naSwgJzonKS5cbiAgICByZXBsYWNlKC8lMjQvZywgJyQnKS5cbiAgICByZXBsYWNlKC8lMkMvZ2ksICcsJykuXG4gICAgcmVwbGFjZSgvJTIwL2csICcrJykuXG4gICAgcmVwbGFjZSgvJTVCL2dpLCAnWycpLlxuICAgIHJlcGxhY2UoLyU1RC9naSwgJ10nKTtcbn1cblxuLyoqXG4gKiBCdWlsZCBhIFVSTCBieSBhcHBlbmRpbmcgcGFyYW1zIHRvIHRoZSBlbmRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdXJsIFRoZSBiYXNlIG9mIHRoZSB1cmwgKGUuZy4sIGh0dHA6Ly93d3cuZ29vZ2xlLmNvbSlcbiAqIEBwYXJhbSB7b2JqZWN0fSBbcGFyYW1zXSBUaGUgcGFyYW1zIHRvIGJlIGFwcGVuZGVkXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZm9ybWF0dGVkIHVybFxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGJ1aWxkVVJMKHVybCwgcGFyYW1zLCBwYXJhbXNTZXJpYWxpemVyKSB7XG4gIC8qZXNsaW50IG5vLXBhcmFtLXJlYXNzaWduOjAqL1xuICBpZiAoIXBhcmFtcykge1xuICAgIHJldHVybiB1cmw7XG4gIH1cblxuICB2YXIgc2VyaWFsaXplZFBhcmFtcztcbiAgaWYgKHBhcmFtc1NlcmlhbGl6ZXIpIHtcbiAgICBzZXJpYWxpemVkUGFyYW1zID0gcGFyYW1zU2VyaWFsaXplcihwYXJhbXMpO1xuICB9IGVsc2UgaWYgKHV0aWxzLmlzVVJMU2VhcmNoUGFyYW1zKHBhcmFtcykpIHtcbiAgICBzZXJpYWxpemVkUGFyYW1zID0gcGFyYW1zLnRvU3RyaW5nKCk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHBhcnRzID0gW107XG5cbiAgICB1dGlscy5mb3JFYWNoKHBhcmFtcywgZnVuY3Rpb24gc2VyaWFsaXplKHZhbCwga2V5KSB7XG4gICAgICBpZiAodmFsID09PSBudWxsIHx8IHR5cGVvZiB2YWwgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHV0aWxzLmlzQXJyYXkodmFsKSkge1xuICAgICAgICBrZXkgPSBrZXkgKyAnW10nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsID0gW3ZhbF07XG4gICAgICB9XG5cbiAgICAgIHV0aWxzLmZvckVhY2godmFsLCBmdW5jdGlvbiBwYXJzZVZhbHVlKHYpIHtcbiAgICAgICAgaWYgKHV0aWxzLmlzRGF0ZSh2KSkge1xuICAgICAgICAgIHYgPSB2LnRvSVNPU3RyaW5nKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodXRpbHMuaXNPYmplY3QodikpIHtcbiAgICAgICAgICB2ID0gSlNPTi5zdHJpbmdpZnkodik7XG4gICAgICAgIH1cbiAgICAgICAgcGFydHMucHVzaChlbmNvZGUoa2V5KSArICc9JyArIGVuY29kZSh2KSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHNlcmlhbGl6ZWRQYXJhbXMgPSBwYXJ0cy5qb2luKCcmJyk7XG4gIH1cblxuICBpZiAoc2VyaWFsaXplZFBhcmFtcykge1xuICAgIHZhciBoYXNobWFya0luZGV4ID0gdXJsLmluZGV4T2YoJyMnKTtcbiAgICBpZiAoaGFzaG1hcmtJbmRleCAhPT0gLTEpIHtcbiAgICAgIHVybCA9IHVybC5zbGljZSgwLCBoYXNobWFya0luZGV4KTtcbiAgICB9XG5cbiAgICB1cmwgKz0gKHVybC5pbmRleE9mKCc/JykgPT09IC0xID8gJz8nIDogJyYnKSArIHNlcmlhbGl6ZWRQYXJhbXM7XG4gIH1cblxuICByZXR1cm4gdXJsO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IFVSTCBieSBjb21iaW5pbmcgdGhlIHNwZWNpZmllZCBVUkxzXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGJhc2VVUkwgVGhlIGJhc2UgVVJMXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVsYXRpdmVVUkwgVGhlIHJlbGF0aXZlIFVSTFxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbWJpbmVkIFVSTFxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNvbWJpbmVVUkxzKGJhc2VVUkwsIHJlbGF0aXZlVVJMKSB7XG4gIHJldHVybiByZWxhdGl2ZVVSTFxuICAgID8gYmFzZVVSTC5yZXBsYWNlKC9cXC8rJC8sICcnKSArICcvJyArIHJlbGF0aXZlVVJMLnJlcGxhY2UoL15cXC8rLywgJycpXG4gICAgOiBiYXNlVVJMO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IChcbiAgdXRpbHMuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKSA/XG5cbiAgLy8gU3RhbmRhcmQgYnJvd3NlciBlbnZzIHN1cHBvcnQgZG9jdW1lbnQuY29va2llXG4gICAgKGZ1bmN0aW9uIHN0YW5kYXJkQnJvd3NlckVudigpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbiB3cml0ZShuYW1lLCB2YWx1ZSwgZXhwaXJlcywgcGF0aCwgZG9tYWluLCBzZWN1cmUpIHtcbiAgICAgICAgICB2YXIgY29va2llID0gW107XG4gICAgICAgICAgY29va2llLnB1c2gobmFtZSArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSkpO1xuXG4gICAgICAgICAgaWYgKHV0aWxzLmlzTnVtYmVyKGV4cGlyZXMpKSB7XG4gICAgICAgICAgICBjb29raWUucHVzaCgnZXhwaXJlcz0nICsgbmV3IERhdGUoZXhwaXJlcykudG9HTVRTdHJpbmcoKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHV0aWxzLmlzU3RyaW5nKHBhdGgpKSB7XG4gICAgICAgICAgICBjb29raWUucHVzaCgncGF0aD0nICsgcGF0aCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHV0aWxzLmlzU3RyaW5nKGRvbWFpbikpIHtcbiAgICAgICAgICAgIGNvb2tpZS5wdXNoKCdkb21haW49JyArIGRvbWFpbik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHNlY3VyZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgY29va2llLnB1c2goJ3NlY3VyZScpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IGNvb2tpZS5qb2luKCc7ICcpO1xuICAgICAgICB9LFxuXG4gICAgICAgIHJlYWQ6IGZ1bmN0aW9uIHJlYWQobmFtZSkge1xuICAgICAgICAgIHZhciBtYXRjaCA9IGRvY3VtZW50LmNvb2tpZS5tYXRjaChuZXcgUmVnRXhwKCcoXnw7XFxcXHMqKSgnICsgbmFtZSArICcpPShbXjtdKiknKSk7XG4gICAgICAgICAgcmV0dXJuIChtYXRjaCA/IGRlY29kZVVSSUNvbXBvbmVudChtYXRjaFszXSkgOiBudWxsKTtcbiAgICAgICAgfSxcblxuICAgICAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZShuYW1lKSB7XG4gICAgICAgICAgdGhpcy53cml0ZShuYW1lLCAnJywgRGF0ZS5ub3coKSAtIDg2NDAwMDAwKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9KSgpIDpcblxuICAvLyBOb24gc3RhbmRhcmQgYnJvd3NlciBlbnYgKHdlYiB3b3JrZXJzLCByZWFjdC1uYXRpdmUpIGxhY2sgbmVlZGVkIHN1cHBvcnQuXG4gICAgKGZ1bmN0aW9uIG5vblN0YW5kYXJkQnJvd3NlckVudigpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbiB3cml0ZSgpIHt9LFxuICAgICAgICByZWFkOiBmdW5jdGlvbiByZWFkKCkgeyByZXR1cm4gbnVsbDsgfSxcbiAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoKSB7fVxuICAgICAgfTtcbiAgICB9KSgpXG4pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgc3BlY2lmaWVkIFVSTCBpcyBhYnNvbHV0ZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgVGhlIFVSTCB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgc3BlY2lmaWVkIFVSTCBpcyBhYnNvbHV0ZSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNBYnNvbHV0ZVVSTCh1cmwpIHtcbiAgLy8gQSBVUkwgaXMgY29uc2lkZXJlZCBhYnNvbHV0ZSBpZiBpdCBiZWdpbnMgd2l0aCBcIjxzY2hlbWU+Oi8vXCIgb3IgXCIvL1wiIChwcm90b2NvbC1yZWxhdGl2ZSBVUkwpLlxuICAvLyBSRkMgMzk4NiBkZWZpbmVzIHNjaGVtZSBuYW1lIGFzIGEgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyBiZWdpbm5pbmcgd2l0aCBhIGxldHRlciBhbmQgZm9sbG93ZWRcbiAgLy8gYnkgYW55IGNvbWJpbmF0aW9uIG9mIGxldHRlcnMsIGRpZ2l0cywgcGx1cywgcGVyaW9kLCBvciBoeXBoZW4uXG4gIHJldHVybiAvXihbYS16XVthLXpcXGQrXFwtLl0qOik/XFwvXFwvL2kudGVzdCh1cmwpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgcGF5bG9hZCBpcyBhbiBlcnJvciB0aHJvd24gYnkgQXhpb3NcbiAqXG4gKiBAcGFyYW0geyp9IHBheWxvYWQgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSBwYXlsb2FkIGlzIGFuIGVycm9yIHRocm93biBieSBBeGlvcywgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNBeGlvc0Vycm9yKHBheWxvYWQpIHtcbiAgcmV0dXJuIHV0aWxzLmlzT2JqZWN0KHBheWxvYWQpICYmIChwYXlsb2FkLmlzQXhpb3NFcnJvciA9PT0gdHJ1ZSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gKFxuICB1dGlscy5pc1N0YW5kYXJkQnJvd3NlckVudigpID9cblxuICAvLyBTdGFuZGFyZCBicm93c2VyIGVudnMgaGF2ZSBmdWxsIHN1cHBvcnQgb2YgdGhlIEFQSXMgbmVlZGVkIHRvIHRlc3RcbiAgLy8gd2hldGhlciB0aGUgcmVxdWVzdCBVUkwgaXMgb2YgdGhlIHNhbWUgb3JpZ2luIGFzIGN1cnJlbnQgbG9jYXRpb24uXG4gICAgKGZ1bmN0aW9uIHN0YW5kYXJkQnJvd3NlckVudigpIHtcbiAgICAgIHZhciBtc2llID0gLyhtc2llfHRyaWRlbnQpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcbiAgICAgIHZhciB1cmxQYXJzaW5nTm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgIHZhciBvcmlnaW5VUkw7XG5cbiAgICAgIC8qKlxuICAgICogUGFyc2UgYSBVUkwgdG8gZGlzY292ZXIgaXQncyBjb21wb25lbnRzXG4gICAgKlxuICAgICogQHBhcmFtIHtTdHJpbmd9IHVybCBUaGUgVVJMIHRvIGJlIHBhcnNlZFxuICAgICogQHJldHVybnMge09iamVjdH1cbiAgICAqL1xuICAgICAgZnVuY3Rpb24gcmVzb2x2ZVVSTCh1cmwpIHtcbiAgICAgICAgdmFyIGhyZWYgPSB1cmw7XG5cbiAgICAgICAgaWYgKG1zaWUpIHtcbiAgICAgICAgLy8gSUUgbmVlZHMgYXR0cmlidXRlIHNldCB0d2ljZSB0byBub3JtYWxpemUgcHJvcGVydGllc1xuICAgICAgICAgIHVybFBhcnNpbmdOb2RlLnNldEF0dHJpYnV0ZSgnaHJlZicsIGhyZWYpO1xuICAgICAgICAgIGhyZWYgPSB1cmxQYXJzaW5nTm9kZS5ocmVmO1xuICAgICAgICB9XG5cbiAgICAgICAgdXJsUGFyc2luZ05vZGUuc2V0QXR0cmlidXRlKCdocmVmJywgaHJlZik7XG5cbiAgICAgICAgLy8gdXJsUGFyc2luZ05vZGUgcHJvdmlkZXMgdGhlIFVybFV0aWxzIGludGVyZmFjZSAtIGh0dHA6Ly91cmwuc3BlYy53aGF0d2cub3JnLyN1cmx1dGlsc1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGhyZWY6IHVybFBhcnNpbmdOb2RlLmhyZWYsXG4gICAgICAgICAgcHJvdG9jb2w6IHVybFBhcnNpbmdOb2RlLnByb3RvY29sID8gdXJsUGFyc2luZ05vZGUucHJvdG9jb2wucmVwbGFjZSgvOiQvLCAnJykgOiAnJyxcbiAgICAgICAgICBob3N0OiB1cmxQYXJzaW5nTm9kZS5ob3N0LFxuICAgICAgICAgIHNlYXJjaDogdXJsUGFyc2luZ05vZGUuc2VhcmNoID8gdXJsUGFyc2luZ05vZGUuc2VhcmNoLnJlcGxhY2UoL15cXD8vLCAnJykgOiAnJyxcbiAgICAgICAgICBoYXNoOiB1cmxQYXJzaW5nTm9kZS5oYXNoID8gdXJsUGFyc2luZ05vZGUuaGFzaC5yZXBsYWNlKC9eIy8sICcnKSA6ICcnLFxuICAgICAgICAgIGhvc3RuYW1lOiB1cmxQYXJzaW5nTm9kZS5ob3N0bmFtZSxcbiAgICAgICAgICBwb3J0OiB1cmxQYXJzaW5nTm9kZS5wb3J0LFxuICAgICAgICAgIHBhdGhuYW1lOiAodXJsUGFyc2luZ05vZGUucGF0aG5hbWUuY2hhckF0KDApID09PSAnLycpID9cbiAgICAgICAgICAgIHVybFBhcnNpbmdOb2RlLnBhdGhuYW1lIDpcbiAgICAgICAgICAgICcvJyArIHVybFBhcnNpbmdOb2RlLnBhdGhuYW1lXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIG9yaWdpblVSTCA9IHJlc29sdmVVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpO1xuXG4gICAgICAvKipcbiAgICAqIERldGVybWluZSBpZiBhIFVSTCBzaGFyZXMgdGhlIHNhbWUgb3JpZ2luIGFzIHRoZSBjdXJyZW50IGxvY2F0aW9uXG4gICAgKlxuICAgICogQHBhcmFtIHtTdHJpbmd9IHJlcXVlc3RVUkwgVGhlIFVSTCB0byB0ZXN0XG4gICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBVUkwgc2hhcmVzIHRoZSBzYW1lIG9yaWdpbiwgb3RoZXJ3aXNlIGZhbHNlXG4gICAgKi9cbiAgICAgIHJldHVybiBmdW5jdGlvbiBpc1VSTFNhbWVPcmlnaW4ocmVxdWVzdFVSTCkge1xuICAgICAgICB2YXIgcGFyc2VkID0gKHV0aWxzLmlzU3RyaW5nKHJlcXVlc3RVUkwpKSA/IHJlc29sdmVVUkwocmVxdWVzdFVSTCkgOiByZXF1ZXN0VVJMO1xuICAgICAgICByZXR1cm4gKHBhcnNlZC5wcm90b2NvbCA9PT0gb3JpZ2luVVJMLnByb3RvY29sICYmXG4gICAgICAgICAgICBwYXJzZWQuaG9zdCA9PT0gb3JpZ2luVVJMLmhvc3QpO1xuICAgICAgfTtcbiAgICB9KSgpIDpcblxuICAvLyBOb24gc3RhbmRhcmQgYnJvd3NlciBlbnZzICh3ZWIgd29ya2VycywgcmVhY3QtbmF0aXZlKSBsYWNrIG5lZWRlZCBzdXBwb3J0LlxuICAgIChmdW5jdGlvbiBub25TdGFuZGFyZEJyb3dzZXJFbnYoKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gaXNVUkxTYW1lT3JpZ2luKCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH07XG4gICAgfSkoKVxuKTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBub3JtYWxpemVIZWFkZXJOYW1lKGhlYWRlcnMsIG5vcm1hbGl6ZWROYW1lKSB7XG4gIHV0aWxzLmZvckVhY2goaGVhZGVycywgZnVuY3Rpb24gcHJvY2Vzc0hlYWRlcih2YWx1ZSwgbmFtZSkge1xuICAgIGlmIChuYW1lICE9PSBub3JtYWxpemVkTmFtZSAmJiBuYW1lLnRvVXBwZXJDYXNlKCkgPT09IG5vcm1hbGl6ZWROYW1lLnRvVXBwZXJDYXNlKCkpIHtcbiAgICAgIGhlYWRlcnNbbm9ybWFsaXplZE5hbWVdID0gdmFsdWU7XG4gICAgICBkZWxldGUgaGVhZGVyc1tuYW1lXTtcbiAgICB9XG4gIH0pO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xuXG4vLyBIZWFkZXJzIHdob3NlIGR1cGxpY2F0ZXMgYXJlIGlnbm9yZWQgYnkgbm9kZVxuLy8gYy5mLiBodHRwczovL25vZGVqcy5vcmcvYXBpL2h0dHAuaHRtbCNodHRwX21lc3NhZ2VfaGVhZGVyc1xudmFyIGlnbm9yZUR1cGxpY2F0ZU9mID0gW1xuICAnYWdlJywgJ2F1dGhvcml6YXRpb24nLCAnY29udGVudC1sZW5ndGgnLCAnY29udGVudC10eXBlJywgJ2V0YWcnLFxuICAnZXhwaXJlcycsICdmcm9tJywgJ2hvc3QnLCAnaWYtbW9kaWZpZWQtc2luY2UnLCAnaWYtdW5tb2RpZmllZC1zaW5jZScsXG4gICdsYXN0LW1vZGlmaWVkJywgJ2xvY2F0aW9uJywgJ21heC1mb3J3YXJkcycsICdwcm94eS1hdXRob3JpemF0aW9uJyxcbiAgJ3JlZmVyZXInLCAncmV0cnktYWZ0ZXInLCAndXNlci1hZ2VudCdcbl07XG5cbi8qKlxuICogUGFyc2UgaGVhZGVycyBpbnRvIGFuIG9iamVjdFxuICpcbiAqIGBgYFxuICogRGF0ZTogV2VkLCAyNyBBdWcgMjAxNCAwODo1ODo0OSBHTVRcbiAqIENvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvblxuICogQ29ubmVjdGlvbjoga2VlcC1hbGl2ZVxuICogVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5rZWRcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBoZWFkZXJzIEhlYWRlcnMgbmVlZGluZyB0byBiZSBwYXJzZWRcbiAqIEByZXR1cm5zIHtPYmplY3R9IEhlYWRlcnMgcGFyc2VkIGludG8gYW4gb2JqZWN0XG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcGFyc2VIZWFkZXJzKGhlYWRlcnMpIHtcbiAgdmFyIHBhcnNlZCA9IHt9O1xuICB2YXIga2V5O1xuICB2YXIgdmFsO1xuICB2YXIgaTtcblxuICBpZiAoIWhlYWRlcnMpIHsgcmV0dXJuIHBhcnNlZDsgfVxuXG4gIHV0aWxzLmZvckVhY2goaGVhZGVycy5zcGxpdCgnXFxuJyksIGZ1bmN0aW9uIHBhcnNlcihsaW5lKSB7XG4gICAgaSA9IGxpbmUuaW5kZXhPZignOicpO1xuICAgIGtleSA9IHV0aWxzLnRyaW0obGluZS5zdWJzdHIoMCwgaSkpLnRvTG93ZXJDYXNlKCk7XG4gICAgdmFsID0gdXRpbHMudHJpbShsaW5lLnN1YnN0cihpICsgMSkpO1xuXG4gICAgaWYgKGtleSkge1xuICAgICAgaWYgKHBhcnNlZFtrZXldICYmIGlnbm9yZUR1cGxpY2F0ZU9mLmluZGV4T2Yoa2V5KSA+PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChrZXkgPT09ICdzZXQtY29va2llJykge1xuICAgICAgICBwYXJzZWRba2V5XSA9IChwYXJzZWRba2V5XSA/IHBhcnNlZFtrZXldIDogW10pLmNvbmNhdChbdmFsXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJzZWRba2V5XSA9IHBhcnNlZFtrZXldID8gcGFyc2VkW2tleV0gKyAnLCAnICsgdmFsIDogdmFsO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHBhcnNlZDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogU3ludGFjdGljIHN1Z2FyIGZvciBpbnZva2luZyBhIGZ1bmN0aW9uIGFuZCBleHBhbmRpbmcgYW4gYXJyYXkgZm9yIGFyZ3VtZW50cy5cbiAqXG4gKiBDb21tb24gdXNlIGNhc2Ugd291bGQgYmUgdG8gdXNlIGBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHlgLlxuICpcbiAqICBgYGBqc1xuICogIGZ1bmN0aW9uIGYoeCwgeSwgeikge31cbiAqICB2YXIgYXJncyA9IFsxLCAyLCAzXTtcbiAqICBmLmFwcGx5KG51bGwsIGFyZ3MpO1xuICogIGBgYFxuICpcbiAqIFdpdGggYHNwcmVhZGAgdGhpcyBleGFtcGxlIGNhbiBiZSByZS13cml0dGVuLlxuICpcbiAqICBgYGBqc1xuICogIHNwcmVhZChmdW5jdGlvbih4LCB5LCB6KSB7fSkoWzEsIDIsIDNdKTtcbiAqICBgYGBcbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFja1xuICogQHJldHVybnMge0Z1bmN0aW9ufVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHNwcmVhZChjYWxsYmFjaykge1xuICByZXR1cm4gZnVuY3Rpb24gd3JhcChhcnIpIHtcbiAgICByZXR1cm4gY2FsbGJhY2suYXBwbHkobnVsbCwgYXJyKTtcbiAgfTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBWRVJTSU9OID0gcmVxdWlyZSgnLi4vZW52L2RhdGEnKS52ZXJzaW9uO1xuXG52YXIgdmFsaWRhdG9ycyA9IHt9O1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuWydvYmplY3QnLCAnYm9vbGVhbicsICdudW1iZXInLCAnZnVuY3Rpb24nLCAnc3RyaW5nJywgJ3N5bWJvbCddLmZvckVhY2goZnVuY3Rpb24odHlwZSwgaSkge1xuICB2YWxpZGF0b3JzW3R5cGVdID0gZnVuY3Rpb24gdmFsaWRhdG9yKHRoaW5nKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGluZyA9PT0gdHlwZSB8fCAnYScgKyAoaSA8IDEgPyAnbiAnIDogJyAnKSArIHR5cGU7XG4gIH07XG59KTtcblxudmFyIGRlcHJlY2F0ZWRXYXJuaW5ncyA9IHt9O1xuXG4vKipcbiAqIFRyYW5zaXRpb25hbCBvcHRpb24gdmFsaWRhdG9yXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufGJvb2xlYW4/fSB2YWxpZGF0b3IgLSBzZXQgdG8gZmFsc2UgaWYgdGhlIHRyYW5zaXRpb25hbCBvcHRpb24gaGFzIGJlZW4gcmVtb3ZlZFxuICogQHBhcmFtIHtzdHJpbmc/fSB2ZXJzaW9uIC0gZGVwcmVjYXRlZCB2ZXJzaW9uIC8gcmVtb3ZlZCBzaW5jZSB2ZXJzaW9uXG4gKiBAcGFyYW0ge3N0cmluZz99IG1lc3NhZ2UgLSBzb21lIG1lc3NhZ2Ugd2l0aCBhZGRpdGlvbmFsIGluZm9cbiAqIEByZXR1cm5zIHtmdW5jdGlvbn1cbiAqL1xudmFsaWRhdG9ycy50cmFuc2l0aW9uYWwgPSBmdW5jdGlvbiB0cmFuc2l0aW9uYWwodmFsaWRhdG9yLCB2ZXJzaW9uLCBtZXNzYWdlKSB7XG4gIGZ1bmN0aW9uIGZvcm1hdE1lc3NhZ2Uob3B0LCBkZXNjKSB7XG4gICAgcmV0dXJuICdbQXhpb3MgdicgKyBWRVJTSU9OICsgJ10gVHJhbnNpdGlvbmFsIG9wdGlvbiBcXCcnICsgb3B0ICsgJ1xcJycgKyBkZXNjICsgKG1lc3NhZ2UgPyAnLiAnICsgbWVzc2FnZSA6ICcnKTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gIHJldHVybiBmdW5jdGlvbih2YWx1ZSwgb3B0LCBvcHRzKSB7XG4gICAgaWYgKHZhbGlkYXRvciA9PT0gZmFsc2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihmb3JtYXRNZXNzYWdlKG9wdCwgJyBoYXMgYmVlbiByZW1vdmVkJyArICh2ZXJzaW9uID8gJyBpbiAnICsgdmVyc2lvbiA6ICcnKSkpO1xuICAgIH1cblxuICAgIGlmICh2ZXJzaW9uICYmICFkZXByZWNhdGVkV2FybmluZ3Nbb3B0XSkge1xuICAgICAgZGVwcmVjYXRlZFdhcm5pbmdzW29wdF0gPSB0cnVlO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgZm9ybWF0TWVzc2FnZShcbiAgICAgICAgICBvcHQsXG4gICAgICAgICAgJyBoYXMgYmVlbiBkZXByZWNhdGVkIHNpbmNlIHYnICsgdmVyc2lvbiArICcgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmVhciBmdXR1cmUnXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRvciA/IHZhbGlkYXRvcih2YWx1ZSwgb3B0LCBvcHRzKSA6IHRydWU7XG4gIH07XG59O1xuXG4vKipcbiAqIEFzc2VydCBvYmplY3QncyBwcm9wZXJ0aWVzIHR5cGVcbiAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zXG4gKiBAcGFyYW0ge29iamVjdH0gc2NoZW1hXG4gKiBAcGFyYW0ge2Jvb2xlYW4/fSBhbGxvd1Vua25vd25cbiAqL1xuXG5mdW5jdGlvbiBhc3NlcnRPcHRpb25zKG9wdGlvbnMsIHNjaGVtYSwgYWxsb3dVbmtub3duKSB7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gIH1cbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvcHRpb25zKTtcbiAgdmFyIGkgPSBrZXlzLmxlbmd0aDtcbiAgd2hpbGUgKGktLSA+IDApIHtcbiAgICB2YXIgb3B0ID0ga2V5c1tpXTtcbiAgICB2YXIgdmFsaWRhdG9yID0gc2NoZW1hW29wdF07XG4gICAgaWYgKHZhbGlkYXRvcikge1xuICAgICAgdmFyIHZhbHVlID0gb3B0aW9uc1tvcHRdO1xuICAgICAgdmFyIHJlc3VsdCA9IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsaWRhdG9yKHZhbHVlLCBvcHQsIG9wdGlvbnMpO1xuICAgICAgaWYgKHJlc3VsdCAhPT0gdHJ1ZSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb24gJyArIG9wdCArICcgbXVzdCBiZSAnICsgcmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoYWxsb3dVbmtub3duICE9PSB0cnVlKSB7XG4gICAgICB0aHJvdyBFcnJvcignVW5rbm93biBvcHRpb24gJyArIG9wdCk7XG4gICAgfVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBhc3NlcnRPcHRpb25zOiBhc3NlcnRPcHRpb25zLFxuICB2YWxpZGF0b3JzOiB2YWxpZGF0b3JzXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYmluZCA9IHJlcXVpcmUoJy4vaGVscGVycy9iaW5kJyk7XG5cbi8vIHV0aWxzIGlzIGEgbGlicmFyeSBvZiBnZW5lcmljIGhlbHBlciBmdW5jdGlvbnMgbm9uLXNwZWNpZmljIHRvIGF4aW9zXG5cbnZhciB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYW4gQXJyYXlcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhbiBBcnJheSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXkodmFsKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHZhbCk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgdW5kZWZpbmVkXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHZhbHVlIGlzIHVuZGVmaW5lZCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzVW5kZWZpbmVkKHZhbCkge1xuICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ3VuZGVmaW5lZCc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBCdWZmZXJcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEJ1ZmZlciwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQnVmZmVyKHZhbCkge1xuICByZXR1cm4gdmFsICE9PSBudWxsICYmICFpc1VuZGVmaW5lZCh2YWwpICYmIHZhbC5jb25zdHJ1Y3RvciAhPT0gbnVsbCAmJiAhaXNVbmRlZmluZWQodmFsLmNvbnN0cnVjdG9yKVxuICAgICYmIHR5cGVvZiB2YWwuY29uc3RydWN0b3IuaXNCdWZmZXIgPT09ICdmdW5jdGlvbicgJiYgdmFsLmNvbnN0cnVjdG9yLmlzQnVmZmVyKHZhbCk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYW4gQXJyYXlCdWZmZXJcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhbiBBcnJheUJ1ZmZlciwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlCdWZmZXIodmFsKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbCkgPT09ICdbb2JqZWN0IEFycmF5QnVmZmVyXSc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBGb3JtRGF0YVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGFuIEZvcm1EYXRhLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNGb3JtRGF0YSh2YWwpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgRm9ybURhdGFdJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIHZpZXcgb24gYW4gQXJyYXlCdWZmZXJcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIHZpZXcgb24gYW4gQXJyYXlCdWZmZXIsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5QnVmZmVyVmlldyh2YWwpIHtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKCh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnKSAmJiAoQXJyYXlCdWZmZXIuaXNWaWV3KSkge1xuICAgIHJlc3VsdCA9IEFycmF5QnVmZmVyLmlzVmlldyh2YWwpO1xuICB9IGVsc2Uge1xuICAgIHJlc3VsdCA9ICh2YWwpICYmICh2YWwuYnVmZmVyKSAmJiAoaXNBcnJheUJ1ZmZlcih2YWwuYnVmZmVyKSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIFN0cmluZ1xuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgU3RyaW5nLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTdHJpbmcodmFsKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsID09PSAnc3RyaW5nJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIE51bWJlclxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgTnVtYmVyLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNOdW1iZXIodmFsKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsID09PSAnbnVtYmVyJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhbiBPYmplY3RcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhbiBPYmplY3QsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdCh2YWwpIHtcbiAgcmV0dXJuIHZhbCAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0Jztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIHBsYWluIE9iamVjdFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBwbGFpbiBPYmplY3QsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1BsYWluT2JqZWN0KHZhbCkge1xuICBpZiAodG9TdHJpbmcuY2FsbCh2YWwpICE9PSAnW29iamVjdCBPYmplY3RdJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBwcm90b3R5cGUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsKTtcbiAgcmV0dXJuIHByb3RvdHlwZSA9PT0gbnVsbCB8fCBwcm90b3R5cGUgPT09IE9iamVjdC5wcm90b3R5cGU7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBEYXRlXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBEYXRlLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNEYXRlKHZhbCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbCh2YWwpID09PSAnW29iamVjdCBEYXRlXSc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBGaWxlXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBGaWxlLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNGaWxlKHZhbCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbCh2YWwpID09PSAnW29iamVjdCBGaWxlXSc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBCbG9iXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBCbG9iLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNCbG9iKHZhbCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbCh2YWwpID09PSAnW29iamVjdCBCbG9iXSc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBGdW5jdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgRnVuY3Rpb24sIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbCh2YWwpID09PSAnW29iamVjdCBGdW5jdGlvbl0nO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgU3RyZWFtXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBTdHJlYW0sIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1N0cmVhbSh2YWwpIHtcbiAgcmV0dXJuIGlzT2JqZWN0KHZhbCkgJiYgaXNGdW5jdGlvbih2YWwucGlwZSk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBVUkxTZWFyY2hQYXJhbXMgb2JqZWN0XG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBVUkxTZWFyY2hQYXJhbXMgb2JqZWN0LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNVUkxTZWFyY2hQYXJhbXModmFsKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbCkgPT09ICdbb2JqZWN0IFVSTFNlYXJjaFBhcmFtc10nO1xufVxuXG4vKipcbiAqIFRyaW0gZXhjZXNzIHdoaXRlc3BhY2Ugb2ZmIHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZiBhIHN0cmluZ1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHIgVGhlIFN0cmluZyB0byB0cmltXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgU3RyaW5nIGZyZWVkIG9mIGV4Y2VzcyB3aGl0ZXNwYWNlXG4gKi9cbmZ1bmN0aW9uIHRyaW0oc3RyKSB7XG4gIHJldHVybiBzdHIudHJpbSA/IHN0ci50cmltKCkgOiBzdHIucmVwbGFjZSgvXlxccyt8XFxzKyQvZywgJycpO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiB3ZSdyZSBydW5uaW5nIGluIGEgc3RhbmRhcmQgYnJvd3NlciBlbnZpcm9ubWVudFxuICpcbiAqIFRoaXMgYWxsb3dzIGF4aW9zIHRvIHJ1biBpbiBhIHdlYiB3b3JrZXIsIGFuZCByZWFjdC1uYXRpdmUuXG4gKiBCb3RoIGVudmlyb25tZW50cyBzdXBwb3J0IFhNTEh0dHBSZXF1ZXN0LCBidXQgbm90IGZ1bGx5IHN0YW5kYXJkIGdsb2JhbHMuXG4gKlxuICogd2ViIHdvcmtlcnM6XG4gKiAgdHlwZW9mIHdpbmRvdyAtPiB1bmRlZmluZWRcbiAqICB0eXBlb2YgZG9jdW1lbnQgLT4gdW5kZWZpbmVkXG4gKlxuICogcmVhY3QtbmF0aXZlOlxuICogIG5hdmlnYXRvci5wcm9kdWN0IC0+ICdSZWFjdE5hdGl2ZSdcbiAqIG5hdGl2ZXNjcmlwdFxuICogIG5hdmlnYXRvci5wcm9kdWN0IC0+ICdOYXRpdmVTY3JpcHQnIG9yICdOUydcbiAqL1xuZnVuY3Rpb24gaXNTdGFuZGFyZEJyb3dzZXJFbnYoKSB7XG4gIGlmICh0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiAobmF2aWdhdG9yLnByb2R1Y3QgPT09ICdSZWFjdE5hdGl2ZScgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3IucHJvZHVjdCA9PT0gJ05hdGl2ZVNjcmlwdCcgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3IucHJvZHVjdCA9PT0gJ05TJykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIChcbiAgICB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJlxuICAgIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCdcbiAgKTtcbn1cblxuLyoqXG4gKiBJdGVyYXRlIG92ZXIgYW4gQXJyYXkgb3IgYW4gT2JqZWN0IGludm9raW5nIGEgZnVuY3Rpb24gZm9yIGVhY2ggaXRlbS5cbiAqXG4gKiBJZiBgb2JqYCBpcyBhbiBBcnJheSBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBwYXNzaW5nXG4gKiB0aGUgdmFsdWUsIGluZGV4LCBhbmQgY29tcGxldGUgYXJyYXkgZm9yIGVhY2ggaXRlbS5cbiAqXG4gKiBJZiAnb2JqJyBpcyBhbiBPYmplY3QgY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgcGFzc2luZ1xuICogdGhlIHZhbHVlLCBrZXksIGFuZCBjb21wbGV0ZSBvYmplY3QgZm9yIGVhY2ggcHJvcGVydHkuXG4gKlxuICogQHBhcmFtIHtPYmplY3R8QXJyYXl9IG9iaiBUaGUgb2JqZWN0IHRvIGl0ZXJhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFRoZSBjYWxsYmFjayB0byBpbnZva2UgZm9yIGVhY2ggaXRlbVxuICovXG5mdW5jdGlvbiBmb3JFYWNoKG9iaiwgZm4pIHtcbiAgLy8gRG9uJ3QgYm90aGVyIGlmIG5vIHZhbHVlIHByb3ZpZGVkXG4gIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBGb3JjZSBhbiBhcnJheSBpZiBub3QgYWxyZWFkeSBzb21ldGhpbmcgaXRlcmFibGVcbiAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB7XG4gICAgLyplc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246MCovXG4gICAgb2JqID0gW29ial07XG4gIH1cblxuICBpZiAoaXNBcnJheShvYmopKSB7XG4gICAgLy8gSXRlcmF0ZSBvdmVyIGFycmF5IHZhbHVlc1xuICAgIGZvciAodmFyIGkgPSAwLCBsID0gb2JqLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgZm4uY2FsbChudWxsLCBvYmpbaV0sIGksIG9iaik7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIEl0ZXJhdGUgb3ZlciBvYmplY3Qga2V5c1xuICAgIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7XG4gICAgICAgIGZuLmNhbGwobnVsbCwgb2JqW2tleV0sIGtleSwgb2JqKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBBY2NlcHRzIHZhcmFyZ3MgZXhwZWN0aW5nIGVhY2ggYXJndW1lbnQgdG8gYmUgYW4gb2JqZWN0LCB0aGVuXG4gKiBpbW11dGFibHkgbWVyZ2VzIHRoZSBwcm9wZXJ0aWVzIG9mIGVhY2ggb2JqZWN0IGFuZCByZXR1cm5zIHJlc3VsdC5cbiAqXG4gKiBXaGVuIG11bHRpcGxlIG9iamVjdHMgY29udGFpbiB0aGUgc2FtZSBrZXkgdGhlIGxhdGVyIG9iamVjdCBpblxuICogdGhlIGFyZ3VtZW50cyBsaXN0IHdpbGwgdGFrZSBwcmVjZWRlbmNlLlxuICpcbiAqIEV4YW1wbGU6XG4gKlxuICogYGBganNcbiAqIHZhciByZXN1bHQgPSBtZXJnZSh7Zm9vOiAxMjN9LCB7Zm9vOiA0NTZ9KTtcbiAqIGNvbnNvbGUubG9nKHJlc3VsdC5mb28pOyAvLyBvdXRwdXRzIDQ1NlxuICogYGBgXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9iajEgT2JqZWN0IHRvIG1lcmdlXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXN1bHQgb2YgYWxsIG1lcmdlIHByb3BlcnRpZXNcbiAqL1xuZnVuY3Rpb24gbWVyZ2UoLyogb2JqMSwgb2JqMiwgb2JqMywgLi4uICovKSB7XG4gIHZhciByZXN1bHQgPSB7fTtcbiAgZnVuY3Rpb24gYXNzaWduVmFsdWUodmFsLCBrZXkpIHtcbiAgICBpZiAoaXNQbGFpbk9iamVjdChyZXN1bHRba2V5XSkgJiYgaXNQbGFpbk9iamVjdCh2YWwpKSB7XG4gICAgICByZXN1bHRba2V5XSA9IG1lcmdlKHJlc3VsdFtrZXldLCB2YWwpO1xuICAgIH0gZWxzZSBpZiAoaXNQbGFpbk9iamVjdCh2YWwpKSB7XG4gICAgICByZXN1bHRba2V5XSA9IG1lcmdlKHt9LCB2YWwpO1xuICAgIH0gZWxzZSBpZiAoaXNBcnJheSh2YWwpKSB7XG4gICAgICByZXN1bHRba2V5XSA9IHZhbC5zbGljZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHRba2V5XSA9IHZhbDtcbiAgICB9XG4gIH1cblxuICBmb3IgKHZhciBpID0gMCwgbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBmb3JFYWNoKGFyZ3VtZW50c1tpXSwgYXNzaWduVmFsdWUpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogRXh0ZW5kcyBvYmplY3QgYSBieSBtdXRhYmx5IGFkZGluZyB0byBpdCB0aGUgcHJvcGVydGllcyBvZiBvYmplY3QgYi5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gYSBUaGUgb2JqZWN0IHRvIGJlIGV4dGVuZGVkXG4gKiBAcGFyYW0ge09iamVjdH0gYiBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyBmcm9tXG4gKiBAcGFyYW0ge09iamVjdH0gdGhpc0FyZyBUaGUgb2JqZWN0IHRvIGJpbmQgZnVuY3Rpb24gdG9cbiAqIEByZXR1cm4ge09iamVjdH0gVGhlIHJlc3VsdGluZyB2YWx1ZSBvZiBvYmplY3QgYVxuICovXG5mdW5jdGlvbiBleHRlbmQoYSwgYiwgdGhpc0FyZykge1xuICBmb3JFYWNoKGIsIGZ1bmN0aW9uIGFzc2lnblZhbHVlKHZhbCwga2V5KSB7XG4gICAgaWYgKHRoaXNBcmcgJiYgdHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgYVtrZXldID0gYmluZCh2YWwsIHRoaXNBcmcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhW2tleV0gPSB2YWw7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGE7XG59XG5cbi8qKlxuICogUmVtb3ZlIGJ5dGUgb3JkZXIgbWFya2VyLiBUaGlzIGNhdGNoZXMgRUYgQkIgQkYgKHRoZSBVVEYtOCBCT00pXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGNvbnRlbnQgd2l0aCBCT01cbiAqIEByZXR1cm4ge3N0cmluZ30gY29udGVudCB2YWx1ZSB3aXRob3V0IEJPTVxuICovXG5mdW5jdGlvbiBzdHJpcEJPTShjb250ZW50KSB7XG4gIGlmIChjb250ZW50LmNoYXJDb2RlQXQoMCkgPT09IDB4RkVGRikge1xuICAgIGNvbnRlbnQgPSBjb250ZW50LnNsaWNlKDEpO1xuICB9XG4gIHJldHVybiBjb250ZW50O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgaXNBcnJheTogaXNBcnJheSxcbiAgaXNBcnJheUJ1ZmZlcjogaXNBcnJheUJ1ZmZlcixcbiAgaXNCdWZmZXI6IGlzQnVmZmVyLFxuICBpc0Zvcm1EYXRhOiBpc0Zvcm1EYXRhLFxuICBpc0FycmF5QnVmZmVyVmlldzogaXNBcnJheUJ1ZmZlclZpZXcsXG4gIGlzU3RyaW5nOiBpc1N0cmluZyxcbiAgaXNOdW1iZXI6IGlzTnVtYmVyLFxuICBpc09iamVjdDogaXNPYmplY3QsXG4gIGlzUGxhaW5PYmplY3Q6IGlzUGxhaW5PYmplY3QsXG4gIGlzVW5kZWZpbmVkOiBpc1VuZGVmaW5lZCxcbiAgaXNEYXRlOiBpc0RhdGUsXG4gIGlzRmlsZTogaXNGaWxlLFxuICBpc0Jsb2I6IGlzQmxvYixcbiAgaXNGdW5jdGlvbjogaXNGdW5jdGlvbixcbiAgaXNTdHJlYW06IGlzU3RyZWFtLFxuICBpc1VSTFNlYXJjaFBhcmFtczogaXNVUkxTZWFyY2hQYXJhbXMsXG4gIGlzU3RhbmRhcmRCcm93c2VyRW52OiBpc1N0YW5kYXJkQnJvd3NlckVudixcbiAgZm9yRWFjaDogZm9yRWFjaCxcbiAgbWVyZ2U6IG1lcmdlLFxuICBleHRlbmQ6IGV4dGVuZCxcbiAgdHJpbTogdHJpbSxcbiAgc3RyaXBCT006IHN0cmlwQk9NXG59O1xuIiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSwgdW5kZWYpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIiksIHJlcXVpcmUoXCIuL2VuYy1iYXNlNjRcIiksIHJlcXVpcmUoXCIuL21kNVwiKSwgcmVxdWlyZShcIi4vZXZwa2RmXCIpLCByZXF1aXJlKFwiLi9jaXBoZXItY29yZVwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCIsIFwiLi9lbmMtYmFzZTY0XCIsIFwiLi9tZDVcIiwgXCIuL2V2cGtkZlwiLCBcIi4vY2lwaGVyLWNvcmVcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdChmdW5jdGlvbiAoKSB7XG5cdCAgICAvLyBTaG9ydGN1dHNcblx0ICAgIHZhciBDID0gQ3J5cHRvSlM7XG5cdCAgICB2YXIgQ19saWIgPSBDLmxpYjtcblx0ICAgIHZhciBCbG9ja0NpcGhlciA9IENfbGliLkJsb2NrQ2lwaGVyO1xuXHQgICAgdmFyIENfYWxnbyA9IEMuYWxnbztcblxuXHQgICAgLy8gTG9va3VwIHRhYmxlc1xuXHQgICAgdmFyIFNCT1ggPSBbXTtcblx0ICAgIHZhciBJTlZfU0JPWCA9IFtdO1xuXHQgICAgdmFyIFNVQl9NSVhfMCA9IFtdO1xuXHQgICAgdmFyIFNVQl9NSVhfMSA9IFtdO1xuXHQgICAgdmFyIFNVQl9NSVhfMiA9IFtdO1xuXHQgICAgdmFyIFNVQl9NSVhfMyA9IFtdO1xuXHQgICAgdmFyIElOVl9TVUJfTUlYXzAgPSBbXTtcblx0ICAgIHZhciBJTlZfU1VCX01JWF8xID0gW107XG5cdCAgICB2YXIgSU5WX1NVQl9NSVhfMiA9IFtdO1xuXHQgICAgdmFyIElOVl9TVUJfTUlYXzMgPSBbXTtcblxuXHQgICAgLy8gQ29tcHV0ZSBsb29rdXAgdGFibGVzXG5cdCAgICAoZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIC8vIENvbXB1dGUgZG91YmxlIHRhYmxlXG5cdCAgICAgICAgdmFyIGQgPSBbXTtcblx0ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI1NjsgaSsrKSB7XG5cdCAgICAgICAgICAgIGlmIChpIDwgMTI4KSB7XG5cdCAgICAgICAgICAgICAgICBkW2ldID0gaSA8PCAxO1xuXHQgICAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgZFtpXSA9IChpIDw8IDEpIF4gMHgxMWI7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cblx0ICAgICAgICAvLyBXYWxrIEdGKDJeOClcblx0ICAgICAgICB2YXIgeCA9IDA7XG5cdCAgICAgICAgdmFyIHhpID0gMDtcblx0ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI1NjsgaSsrKSB7XG5cdCAgICAgICAgICAgIC8vIENvbXB1dGUgc2JveFxuXHQgICAgICAgICAgICB2YXIgc3ggPSB4aSBeICh4aSA8PCAxKSBeICh4aSA8PCAyKSBeICh4aSA8PCAzKSBeICh4aSA8PCA0KTtcblx0ICAgICAgICAgICAgc3ggPSAoc3ggPj4+IDgpIF4gKHN4ICYgMHhmZikgXiAweDYzO1xuXHQgICAgICAgICAgICBTQk9YW3hdID0gc3g7XG5cdCAgICAgICAgICAgIElOVl9TQk9YW3N4XSA9IHg7XG5cblx0ICAgICAgICAgICAgLy8gQ29tcHV0ZSBtdWx0aXBsaWNhdGlvblxuXHQgICAgICAgICAgICB2YXIgeDIgPSBkW3hdO1xuXHQgICAgICAgICAgICB2YXIgeDQgPSBkW3gyXTtcblx0ICAgICAgICAgICAgdmFyIHg4ID0gZFt4NF07XG5cblx0ICAgICAgICAgICAgLy8gQ29tcHV0ZSBzdWIgYnl0ZXMsIG1peCBjb2x1bW5zIHRhYmxlc1xuXHQgICAgICAgICAgICB2YXIgdCA9IChkW3N4XSAqIDB4MTAxKSBeIChzeCAqIDB4MTAxMDEwMCk7XG5cdCAgICAgICAgICAgIFNVQl9NSVhfMFt4XSA9ICh0IDw8IDI0KSB8ICh0ID4+PiA4KTtcblx0ICAgICAgICAgICAgU1VCX01JWF8xW3hdID0gKHQgPDwgMTYpIHwgKHQgPj4+IDE2KTtcblx0ICAgICAgICAgICAgU1VCX01JWF8yW3hdID0gKHQgPDwgOCkgIHwgKHQgPj4+IDI0KTtcblx0ICAgICAgICAgICAgU1VCX01JWF8zW3hdID0gdDtcblxuXHQgICAgICAgICAgICAvLyBDb21wdXRlIGludiBzdWIgYnl0ZXMsIGludiBtaXggY29sdW1ucyB0YWJsZXNcblx0ICAgICAgICAgICAgdmFyIHQgPSAoeDggKiAweDEwMTAxMDEpIF4gKHg0ICogMHgxMDAwMSkgXiAoeDIgKiAweDEwMSkgXiAoeCAqIDB4MTAxMDEwMCk7XG5cdCAgICAgICAgICAgIElOVl9TVUJfTUlYXzBbc3hdID0gKHQgPDwgMjQpIHwgKHQgPj4+IDgpO1xuXHQgICAgICAgICAgICBJTlZfU1VCX01JWF8xW3N4XSA9ICh0IDw8IDE2KSB8ICh0ID4+PiAxNik7XG5cdCAgICAgICAgICAgIElOVl9TVUJfTUlYXzJbc3hdID0gKHQgPDwgOCkgIHwgKHQgPj4+IDI0KTtcblx0ICAgICAgICAgICAgSU5WX1NVQl9NSVhfM1tzeF0gPSB0O1xuXG5cdCAgICAgICAgICAgIC8vIENvbXB1dGUgbmV4dCBjb3VudGVyXG5cdCAgICAgICAgICAgIGlmICgheCkge1xuXHQgICAgICAgICAgICAgICAgeCA9IHhpID0gMTtcblx0ICAgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgICAgIHggPSB4MiBeIGRbZFtkW3g4IF4geDJdXV07XG5cdCAgICAgICAgICAgICAgICB4aSBePSBkW2RbeGldXTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgIH0oKSk7XG5cblx0ICAgIC8vIFByZWNvbXB1dGVkIFJjb24gbG9va3VwXG5cdCAgICB2YXIgUkNPTiA9IFsweDAwLCAweDAxLCAweDAyLCAweDA0LCAweDA4LCAweDEwLCAweDIwLCAweDQwLCAweDgwLCAweDFiLCAweDM2XTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBBRVMgYmxvY2sgY2lwaGVyIGFsZ29yaXRobS5cblx0ICAgICAqL1xuXHQgICAgdmFyIEFFUyA9IENfYWxnby5BRVMgPSBCbG9ja0NpcGhlci5leHRlbmQoe1xuXHQgICAgICAgIF9kb1Jlc2V0OiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIHZhciB0O1xuXG5cdCAgICAgICAgICAgIC8vIFNraXAgcmVzZXQgb2YgblJvdW5kcyBoYXMgYmVlbiBzZXQgYmVmb3JlIGFuZCBrZXkgZGlkIG5vdCBjaGFuZ2Vcblx0ICAgICAgICAgICAgaWYgKHRoaXMuX25Sb3VuZHMgJiYgdGhpcy5fa2V5UHJpb3JSZXNldCA9PT0gdGhpcy5fa2V5KSB7XG5cdCAgICAgICAgICAgICAgICByZXR1cm47XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIGtleSA9IHRoaXMuX2tleVByaW9yUmVzZXQgPSB0aGlzLl9rZXk7XG5cdCAgICAgICAgICAgIHZhciBrZXlXb3JkcyA9IGtleS53b3Jkcztcblx0ICAgICAgICAgICAgdmFyIGtleVNpemUgPSBrZXkuc2lnQnl0ZXMgLyA0O1xuXG5cdCAgICAgICAgICAgIC8vIENvbXB1dGUgbnVtYmVyIG9mIHJvdW5kc1xuXHQgICAgICAgICAgICB2YXIgblJvdW5kcyA9IHRoaXMuX25Sb3VuZHMgPSBrZXlTaXplICsgNjtcblxuXHQgICAgICAgICAgICAvLyBDb21wdXRlIG51bWJlciBvZiBrZXkgc2NoZWR1bGUgcm93c1xuXHQgICAgICAgICAgICB2YXIga3NSb3dzID0gKG5Sb3VuZHMgKyAxKSAqIDQ7XG5cblx0ICAgICAgICAgICAgLy8gQ29tcHV0ZSBrZXkgc2NoZWR1bGVcblx0ICAgICAgICAgICAgdmFyIGtleVNjaGVkdWxlID0gdGhpcy5fa2V5U2NoZWR1bGUgPSBbXTtcblx0ICAgICAgICAgICAgZm9yICh2YXIga3NSb3cgPSAwOyBrc1JvdyA8IGtzUm93czsga3NSb3crKykge1xuXHQgICAgICAgICAgICAgICAgaWYgKGtzUm93IDwga2V5U2l6ZSkge1xuXHQgICAgICAgICAgICAgICAgICAgIGtleVNjaGVkdWxlW2tzUm93XSA9IGtleVdvcmRzW2tzUm93XTtcblx0ICAgICAgICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgICAgICAgICAgdCA9IGtleVNjaGVkdWxlW2tzUm93IC0gMV07XG5cblx0ICAgICAgICAgICAgICAgICAgICBpZiAoIShrc1JvdyAlIGtleVNpemUpKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJvdCB3b3JkXG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHQgPSAodCA8PCA4KSB8ICh0ID4+PiAyNCk7XG5cblx0ICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3ViIHdvcmRcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdCA9IChTQk9YW3QgPj4+IDI0XSA8PCAyNCkgfCAoU0JPWFsodCA+Pj4gMTYpICYgMHhmZl0gPDwgMTYpIHwgKFNCT1hbKHQgPj4+IDgpICYgMHhmZl0gPDwgOCkgfCBTQk9YW3QgJiAweGZmXTtcblxuXHQgICAgICAgICAgICAgICAgICAgICAgICAvLyBNaXggUmNvblxuXHQgICAgICAgICAgICAgICAgICAgICAgICB0IF49IFJDT05bKGtzUm93IC8ga2V5U2l6ZSkgfCAwXSA8PCAyNDtcblx0ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGtleVNpemUgPiA2ICYmIGtzUm93ICUga2V5U2l6ZSA9PSA0KSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1YiB3b3JkXG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHQgPSAoU0JPWFt0ID4+PiAyNF0gPDwgMjQpIHwgKFNCT1hbKHQgPj4+IDE2KSAmIDB4ZmZdIDw8IDE2KSB8IChTQk9YWyh0ID4+PiA4KSAmIDB4ZmZdIDw8IDgpIHwgU0JPWFt0ICYgMHhmZl07XG5cdCAgICAgICAgICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgICAgICAgICAga2V5U2NoZWR1bGVba3NSb3ddID0ga2V5U2NoZWR1bGVba3NSb3cgLSBrZXlTaXplXSBeIHQ7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBDb21wdXRlIGludiBrZXkgc2NoZWR1bGVcblx0ICAgICAgICAgICAgdmFyIGludktleVNjaGVkdWxlID0gdGhpcy5faW52S2V5U2NoZWR1bGUgPSBbXTtcblx0ICAgICAgICAgICAgZm9yICh2YXIgaW52S3NSb3cgPSAwOyBpbnZLc1JvdyA8IGtzUm93czsgaW52S3NSb3crKykge1xuXHQgICAgICAgICAgICAgICAgdmFyIGtzUm93ID0ga3NSb3dzIC0gaW52S3NSb3c7XG5cblx0ICAgICAgICAgICAgICAgIGlmIChpbnZLc1JvdyAlIDQpIHtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGtleVNjaGVkdWxlW2tzUm93XTtcblx0ICAgICAgICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBrZXlTY2hlZHVsZVtrc1JvdyAtIDRdO1xuXHQgICAgICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgICAgICBpZiAoaW52S3NSb3cgPCA0IHx8IGtzUm93IDw9IDQpIHtcblx0ICAgICAgICAgICAgICAgICAgICBpbnZLZXlTY2hlZHVsZVtpbnZLc1Jvd10gPSB0O1xuXHQgICAgICAgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgICAgICAgICBpbnZLZXlTY2hlZHVsZVtpbnZLc1Jvd10gPSBJTlZfU1VCX01JWF8wW1NCT1hbdCA+Pj4gMjRdXSBeIElOVl9TVUJfTUlYXzFbU0JPWFsodCA+Pj4gMTYpICYgMHhmZl1dIF5cblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTlZfU1VCX01JWF8yW1NCT1hbKHQgPj4+IDgpICYgMHhmZl1dIF4gSU5WX1NVQl9NSVhfM1tTQk9YW3QgJiAweGZmXV07XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgZW5jcnlwdEJsb2NrOiBmdW5jdGlvbiAoTSwgb2Zmc2V0KSB7XG5cdCAgICAgICAgICAgIHRoaXMuX2RvQ3J5cHRCbG9jayhNLCBvZmZzZXQsIHRoaXMuX2tleVNjaGVkdWxlLCBTVUJfTUlYXzAsIFNVQl9NSVhfMSwgU1VCX01JWF8yLCBTVUJfTUlYXzMsIFNCT1gpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBkZWNyeXB0QmxvY2s6IGZ1bmN0aW9uIChNLCBvZmZzZXQpIHtcblx0ICAgICAgICAgICAgLy8gU3dhcCAybmQgYW5kIDR0aCByb3dzXG5cdCAgICAgICAgICAgIHZhciB0ID0gTVtvZmZzZXQgKyAxXTtcblx0ICAgICAgICAgICAgTVtvZmZzZXQgKyAxXSA9IE1bb2Zmc2V0ICsgM107XG5cdCAgICAgICAgICAgIE1bb2Zmc2V0ICsgM10gPSB0O1xuXG5cdCAgICAgICAgICAgIHRoaXMuX2RvQ3J5cHRCbG9jayhNLCBvZmZzZXQsIHRoaXMuX2ludktleVNjaGVkdWxlLCBJTlZfU1VCX01JWF8wLCBJTlZfU1VCX01JWF8xLCBJTlZfU1VCX01JWF8yLCBJTlZfU1VCX01JWF8zLCBJTlZfU0JPWCk7XG5cblx0ICAgICAgICAgICAgLy8gSW52IHN3YXAgMm5kIGFuZCA0dGggcm93c1xuXHQgICAgICAgICAgICB2YXIgdCA9IE1bb2Zmc2V0ICsgMV07XG5cdCAgICAgICAgICAgIE1bb2Zmc2V0ICsgMV0gPSBNW29mZnNldCArIDNdO1xuXHQgICAgICAgICAgICBNW29mZnNldCArIDNdID0gdDtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgX2RvQ3J5cHRCbG9jazogZnVuY3Rpb24gKE0sIG9mZnNldCwga2V5U2NoZWR1bGUsIFNVQl9NSVhfMCwgU1VCX01JWF8xLCBTVUJfTUlYXzIsIFNVQl9NSVhfMywgU0JPWCkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dFxuXHQgICAgICAgICAgICB2YXIgblJvdW5kcyA9IHRoaXMuX25Sb3VuZHM7XG5cblx0ICAgICAgICAgICAgLy8gR2V0IGlucHV0LCBhZGQgcm91bmQga2V5XG5cdCAgICAgICAgICAgIHZhciBzMCA9IE1bb2Zmc2V0XSAgICAgXiBrZXlTY2hlZHVsZVswXTtcblx0ICAgICAgICAgICAgdmFyIHMxID0gTVtvZmZzZXQgKyAxXSBeIGtleVNjaGVkdWxlWzFdO1xuXHQgICAgICAgICAgICB2YXIgczIgPSBNW29mZnNldCArIDJdIF4ga2V5U2NoZWR1bGVbMl07XG5cdCAgICAgICAgICAgIHZhciBzMyA9IE1bb2Zmc2V0ICsgM10gXiBrZXlTY2hlZHVsZVszXTtcblxuXHQgICAgICAgICAgICAvLyBLZXkgc2NoZWR1bGUgcm93IGNvdW50ZXJcblx0ICAgICAgICAgICAgdmFyIGtzUm93ID0gNDtcblxuXHQgICAgICAgICAgICAvLyBSb3VuZHNcblx0ICAgICAgICAgICAgZm9yICh2YXIgcm91bmQgPSAxOyByb3VuZCA8IG5Sb3VuZHM7IHJvdW5kKyspIHtcblx0ICAgICAgICAgICAgICAgIC8vIFNoaWZ0IHJvd3MsIHN1YiBieXRlcywgbWl4IGNvbHVtbnMsIGFkZCByb3VuZCBrZXlcblx0ICAgICAgICAgICAgICAgIHZhciB0MCA9IFNVQl9NSVhfMFtzMCA+Pj4gMjRdIF4gU1VCX01JWF8xWyhzMSA+Pj4gMTYpICYgMHhmZl0gXiBTVUJfTUlYXzJbKHMyID4+PiA4KSAmIDB4ZmZdIF4gU1VCX01JWF8zW3MzICYgMHhmZl0gXiBrZXlTY2hlZHVsZVtrc1JvdysrXTtcblx0ICAgICAgICAgICAgICAgIHZhciB0MSA9IFNVQl9NSVhfMFtzMSA+Pj4gMjRdIF4gU1VCX01JWF8xWyhzMiA+Pj4gMTYpICYgMHhmZl0gXiBTVUJfTUlYXzJbKHMzID4+PiA4KSAmIDB4ZmZdIF4gU1VCX01JWF8zW3MwICYgMHhmZl0gXiBrZXlTY2hlZHVsZVtrc1JvdysrXTtcblx0ICAgICAgICAgICAgICAgIHZhciB0MiA9IFNVQl9NSVhfMFtzMiA+Pj4gMjRdIF4gU1VCX01JWF8xWyhzMyA+Pj4gMTYpICYgMHhmZl0gXiBTVUJfTUlYXzJbKHMwID4+PiA4KSAmIDB4ZmZdIF4gU1VCX01JWF8zW3MxICYgMHhmZl0gXiBrZXlTY2hlZHVsZVtrc1JvdysrXTtcblx0ICAgICAgICAgICAgICAgIHZhciB0MyA9IFNVQl9NSVhfMFtzMyA+Pj4gMjRdIF4gU1VCX01JWF8xWyhzMCA+Pj4gMTYpICYgMHhmZl0gXiBTVUJfTUlYXzJbKHMxID4+PiA4KSAmIDB4ZmZdIF4gU1VCX01JWF8zW3MyICYgMHhmZl0gXiBrZXlTY2hlZHVsZVtrc1JvdysrXTtcblxuXHQgICAgICAgICAgICAgICAgLy8gVXBkYXRlIHN0YXRlXG5cdCAgICAgICAgICAgICAgICBzMCA9IHQwO1xuXHQgICAgICAgICAgICAgICAgczEgPSB0MTtcblx0ICAgICAgICAgICAgICAgIHMyID0gdDI7XG5cdCAgICAgICAgICAgICAgICBzMyA9IHQzO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gU2hpZnQgcm93cywgc3ViIGJ5dGVzLCBhZGQgcm91bmQga2V5XG5cdCAgICAgICAgICAgIHZhciB0MCA9ICgoU0JPWFtzMCA+Pj4gMjRdIDw8IDI0KSB8IChTQk9YWyhzMSA+Pj4gMTYpICYgMHhmZl0gPDwgMTYpIHwgKFNCT1hbKHMyID4+PiA4KSAmIDB4ZmZdIDw8IDgpIHwgU0JPWFtzMyAmIDB4ZmZdKSBeIGtleVNjaGVkdWxlW2tzUm93KytdO1xuXHQgICAgICAgICAgICB2YXIgdDEgPSAoKFNCT1hbczEgPj4+IDI0XSA8PCAyNCkgfCAoU0JPWFsoczIgPj4+IDE2KSAmIDB4ZmZdIDw8IDE2KSB8IChTQk9YWyhzMyA+Pj4gOCkgJiAweGZmXSA8PCA4KSB8IFNCT1hbczAgJiAweGZmXSkgXiBrZXlTY2hlZHVsZVtrc1JvdysrXTtcblx0ICAgICAgICAgICAgdmFyIHQyID0gKChTQk9YW3MyID4+PiAyNF0gPDwgMjQpIHwgKFNCT1hbKHMzID4+PiAxNikgJiAweGZmXSA8PCAxNikgfCAoU0JPWFsoczAgPj4+IDgpICYgMHhmZl0gPDwgOCkgfCBTQk9YW3MxICYgMHhmZl0pIF4ga2V5U2NoZWR1bGVba3NSb3crK107XG5cdCAgICAgICAgICAgIHZhciB0MyA9ICgoU0JPWFtzMyA+Pj4gMjRdIDw8IDI0KSB8IChTQk9YWyhzMCA+Pj4gMTYpICYgMHhmZl0gPDwgMTYpIHwgKFNCT1hbKHMxID4+PiA4KSAmIDB4ZmZdIDw8IDgpIHwgU0JPWFtzMiAmIDB4ZmZdKSBeIGtleVNjaGVkdWxlW2tzUm93KytdO1xuXG5cdCAgICAgICAgICAgIC8vIFNldCBvdXRwdXRcblx0ICAgICAgICAgICAgTVtvZmZzZXRdICAgICA9IHQwO1xuXHQgICAgICAgICAgICBNW29mZnNldCArIDFdID0gdDE7XG5cdCAgICAgICAgICAgIE1bb2Zmc2V0ICsgMl0gPSB0Mjtcblx0ICAgICAgICAgICAgTVtvZmZzZXQgKyAzXSA9IHQzO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBrZXlTaXplOiAyNTYvMzJcblx0ICAgIH0pO1xuXG5cdCAgICAvKipcblx0ICAgICAqIFNob3J0Y3V0IGZ1bmN0aW9ucyB0byB0aGUgY2lwaGVyJ3Mgb2JqZWN0IGludGVyZmFjZS5cblx0ICAgICAqXG5cdCAgICAgKiBAZXhhbXBsZVxuXHQgICAgICpcblx0ICAgICAqICAgICB2YXIgY2lwaGVydGV4dCA9IENyeXB0b0pTLkFFUy5lbmNyeXB0KG1lc3NhZ2UsIGtleSwgY2ZnKTtcblx0ICAgICAqICAgICB2YXIgcGxhaW50ZXh0ICA9IENyeXB0b0pTLkFFUy5kZWNyeXB0KGNpcGhlcnRleHQsIGtleSwgY2ZnKTtcblx0ICAgICAqL1xuXHQgICAgQy5BRVMgPSBCbG9ja0NpcGhlci5fY3JlYXRlSGVscGVyKEFFUyk7XG5cdH0oKSk7XG5cblxuXHRyZXR1cm4gQ3J5cHRvSlMuQUVTO1xuXG59KSk7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSwgdW5kZWYpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIiksIHJlcXVpcmUoXCIuL2V2cGtkZlwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCIsIFwiLi9ldnBrZGZcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdC8qKlxuXHQgKiBDaXBoZXIgY29yZSBjb21wb25lbnRzLlxuXHQgKi9cblx0Q3J5cHRvSlMubGliLkNpcGhlciB8fCAoZnVuY3Rpb24gKHVuZGVmaW5lZCkge1xuXHQgICAgLy8gU2hvcnRjdXRzXG5cdCAgICB2YXIgQyA9IENyeXB0b0pTO1xuXHQgICAgdmFyIENfbGliID0gQy5saWI7XG5cdCAgICB2YXIgQmFzZSA9IENfbGliLkJhc2U7XG5cdCAgICB2YXIgV29yZEFycmF5ID0gQ19saWIuV29yZEFycmF5O1xuXHQgICAgdmFyIEJ1ZmZlcmVkQmxvY2tBbGdvcml0aG0gPSBDX2xpYi5CdWZmZXJlZEJsb2NrQWxnb3JpdGhtO1xuXHQgICAgdmFyIENfZW5jID0gQy5lbmM7XG5cdCAgICB2YXIgVXRmOCA9IENfZW5jLlV0Zjg7XG5cdCAgICB2YXIgQmFzZTY0ID0gQ19lbmMuQmFzZTY0O1xuXHQgICAgdmFyIENfYWxnbyA9IEMuYWxnbztcblx0ICAgIHZhciBFdnBLREYgPSBDX2FsZ28uRXZwS0RGO1xuXG5cdCAgICAvKipcblx0ICAgICAqIEFic3RyYWN0IGJhc2UgY2lwaGVyIHRlbXBsYXRlLlxuXHQgICAgICpcblx0ICAgICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBrZXlTaXplIFRoaXMgY2lwaGVyJ3Mga2V5IHNpemUuIERlZmF1bHQ6IDQgKDEyOCBiaXRzKVxuXHQgICAgICogQHByb3BlcnR5IHtudW1iZXJ9IGl2U2l6ZSBUaGlzIGNpcGhlcidzIElWIHNpemUuIERlZmF1bHQ6IDQgKDEyOCBiaXRzKVxuXHQgICAgICogQHByb3BlcnR5IHtudW1iZXJ9IF9FTkNfWEZPUk1fTU9ERSBBIGNvbnN0YW50IHJlcHJlc2VudGluZyBlbmNyeXB0aW9uIG1vZGUuXG5cdCAgICAgKiBAcHJvcGVydHkge251bWJlcn0gX0RFQ19YRk9STV9NT0RFIEEgY29uc3RhbnQgcmVwcmVzZW50aW5nIGRlY3J5cHRpb24gbW9kZS5cblx0ICAgICAqL1xuXHQgICAgdmFyIENpcGhlciA9IENfbGliLkNpcGhlciA9IEJ1ZmZlcmVkQmxvY2tBbGdvcml0aG0uZXh0ZW5kKHtcblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb25maWd1cmF0aW9uIG9wdGlvbnMuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcHJvcGVydHkge1dvcmRBcnJheX0gaXYgVGhlIElWIHRvIHVzZSBmb3IgdGhpcyBvcGVyYXRpb24uXG5cdCAgICAgICAgICovXG5cdCAgICAgICAgY2ZnOiBCYXNlLmV4dGVuZCgpLFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ3JlYXRlcyB0aGlzIGNpcGhlciBpbiBlbmNyeXB0aW9uIG1vZGUuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge1dvcmRBcnJheX0ga2V5IFRoZSBrZXkuXG5cdCAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IGNmZyAoT3B0aW9uYWwpIFRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gdXNlIGZvciB0aGlzIG9wZXJhdGlvbi5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge0NpcGhlcn0gQSBjaXBoZXIgaW5zdGFuY2UuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBjaXBoZXIgPSBDcnlwdG9KUy5hbGdvLkFFUy5jcmVhdGVFbmNyeXB0b3Ioa2V5V29yZEFycmF5LCB7IGl2OiBpdldvcmRBcnJheSB9KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBjcmVhdGVFbmNyeXB0b3I6IGZ1bmN0aW9uIChrZXksIGNmZykge1xuXHQgICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGUodGhpcy5fRU5DX1hGT1JNX01PREUsIGtleSwgY2ZnKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ3JlYXRlcyB0aGlzIGNpcGhlciBpbiBkZWNyeXB0aW9uIG1vZGUuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge1dvcmRBcnJheX0ga2V5IFRoZSBrZXkuXG5cdCAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IGNmZyAoT3B0aW9uYWwpIFRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gdXNlIGZvciB0aGlzIG9wZXJhdGlvbi5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge0NpcGhlcn0gQSBjaXBoZXIgaW5zdGFuY2UuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBjaXBoZXIgPSBDcnlwdG9KUy5hbGdvLkFFUy5jcmVhdGVEZWNyeXB0b3Ioa2V5V29yZEFycmF5LCB7IGl2OiBpdldvcmRBcnJheSB9KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBjcmVhdGVEZWNyeXB0b3I6IGZ1bmN0aW9uIChrZXksIGNmZykge1xuXHQgICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGUodGhpcy5fREVDX1hGT1JNX01PREUsIGtleSwgY2ZnKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogSW5pdGlhbGl6ZXMgYSBuZXdseSBjcmVhdGVkIGNpcGhlci5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4Zm9ybU1vZGUgRWl0aGVyIHRoZSBlbmNyeXB0aW9uIG9yIGRlY3J5cHRpb24gdHJhbnNvcm1hdGlvbiBtb2RlIGNvbnN0YW50LlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fSBrZXkgVGhlIGtleS5cblx0ICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIChPcHRpb25hbCkgVGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byB1c2UgZm9yIHRoaXMgb3BlcmF0aW9uLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgY2lwaGVyID0gQ3J5cHRvSlMuYWxnby5BRVMuY3JlYXRlKENyeXB0b0pTLmFsZ28uQUVTLl9FTkNfWEZPUk1fTU9ERSwga2V5V29yZEFycmF5LCB7IGl2OiBpdldvcmRBcnJheSB9KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBpbml0OiBmdW5jdGlvbiAoeGZvcm1Nb2RlLCBrZXksIGNmZykge1xuXHQgICAgICAgICAgICAvLyBBcHBseSBjb25maWcgZGVmYXVsdHNcblx0ICAgICAgICAgICAgdGhpcy5jZmcgPSB0aGlzLmNmZy5leHRlbmQoY2ZnKTtcblxuXHQgICAgICAgICAgICAvLyBTdG9yZSB0cmFuc2Zvcm0gbW9kZSBhbmQga2V5XG5cdCAgICAgICAgICAgIHRoaXMuX3hmb3JtTW9kZSA9IHhmb3JtTW9kZTtcblx0ICAgICAgICAgICAgdGhpcy5fa2V5ID0ga2V5O1xuXG5cdCAgICAgICAgICAgIC8vIFNldCBpbml0aWFsIHZhbHVlc1xuXHQgICAgICAgICAgICB0aGlzLnJlc2V0KCk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIFJlc2V0cyB0aGlzIGNpcGhlciB0byBpdHMgaW5pdGlhbCBzdGF0ZS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgY2lwaGVyLnJlc2V0KCk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgcmVzZXQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgLy8gUmVzZXQgZGF0YSBidWZmZXJcblx0ICAgICAgICAgICAgQnVmZmVyZWRCbG9ja0FsZ29yaXRobS5yZXNldC5jYWxsKHRoaXMpO1xuXG5cdCAgICAgICAgICAgIC8vIFBlcmZvcm0gY29uY3JldGUtY2lwaGVyIGxvZ2ljXG5cdCAgICAgICAgICAgIHRoaXMuX2RvUmVzZXQoKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQWRkcyBkYXRhIHRvIGJlIGVuY3J5cHRlZCBvciBkZWNyeXB0ZWQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IGRhdGFVcGRhdGUgVGhlIGRhdGEgdG8gZW5jcnlwdCBvciBkZWNyeXB0LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgZGF0YSBhZnRlciBwcm9jZXNzaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgZW5jcnlwdGVkID0gY2lwaGVyLnByb2Nlc3MoJ2RhdGEnKTtcblx0ICAgICAgICAgKiAgICAgdmFyIGVuY3J5cHRlZCA9IGNpcGhlci5wcm9jZXNzKHdvcmRBcnJheSk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgcHJvY2VzczogZnVuY3Rpb24gKGRhdGFVcGRhdGUpIHtcblx0ICAgICAgICAgICAgLy8gQXBwZW5kXG5cdCAgICAgICAgICAgIHRoaXMuX2FwcGVuZChkYXRhVXBkYXRlKTtcblxuXHQgICAgICAgICAgICAvLyBQcm9jZXNzIGF2YWlsYWJsZSBibG9ja3Ncblx0ICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb2Nlc3MoKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogRmluYWxpemVzIHRoZSBlbmNyeXB0aW9uIG9yIGRlY3J5cHRpb24gcHJvY2Vzcy5cblx0ICAgICAgICAgKiBOb3RlIHRoYXQgdGhlIGZpbmFsaXplIG9wZXJhdGlvbiBpcyBlZmZlY3RpdmVseSBhIGRlc3RydWN0aXZlLCByZWFkLW9uY2Ugb3BlcmF0aW9uLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBkYXRhVXBkYXRlIFRoZSBmaW5hbCBkYXRhIHRvIGVuY3J5cHQgb3IgZGVjcnlwdC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIGRhdGEgYWZ0ZXIgZmluYWwgcHJvY2Vzc2luZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIGVuY3J5cHRlZCA9IGNpcGhlci5maW5hbGl6ZSgpO1xuXHQgICAgICAgICAqICAgICB2YXIgZW5jcnlwdGVkID0gY2lwaGVyLmZpbmFsaXplKCdkYXRhJyk7XG5cdCAgICAgICAgICogICAgIHZhciBlbmNyeXB0ZWQgPSBjaXBoZXIuZmluYWxpemUod29yZEFycmF5KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBmaW5hbGl6ZTogZnVuY3Rpb24gKGRhdGFVcGRhdGUpIHtcblx0ICAgICAgICAgICAgLy8gRmluYWwgZGF0YSB1cGRhdGVcblx0ICAgICAgICAgICAgaWYgKGRhdGFVcGRhdGUpIHtcblx0ICAgICAgICAgICAgICAgIHRoaXMuX2FwcGVuZChkYXRhVXBkYXRlKTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIFBlcmZvcm0gY29uY3JldGUtY2lwaGVyIGxvZ2ljXG5cdCAgICAgICAgICAgIHZhciBmaW5hbFByb2Nlc3NlZERhdGEgPSB0aGlzLl9kb0ZpbmFsaXplKCk7XG5cblx0ICAgICAgICAgICAgcmV0dXJuIGZpbmFsUHJvY2Vzc2VkRGF0YTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAga2V5U2l6ZTogMTI4LzMyLFxuXG5cdCAgICAgICAgaXZTaXplOiAxMjgvMzIsXG5cblx0ICAgICAgICBfRU5DX1hGT1JNX01PREU6IDEsXG5cblx0ICAgICAgICBfREVDX1hGT1JNX01PREU6IDIsXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDcmVhdGVzIHNob3J0Y3V0IGZ1bmN0aW9ucyB0byBhIGNpcGhlcidzIG9iamVjdCBpbnRlcmZhY2UuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge0NpcGhlcn0gY2lwaGVyIFRoZSBjaXBoZXIgdG8gY3JlYXRlIGEgaGVscGVyIGZvci5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge09iamVjdH0gQW4gb2JqZWN0IHdpdGggZW5jcnlwdCBhbmQgZGVjcnlwdCBzaG9ydGN1dCBmdW5jdGlvbnMuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBBRVMgPSBDcnlwdG9KUy5saWIuQ2lwaGVyLl9jcmVhdGVIZWxwZXIoQ3J5cHRvSlMuYWxnby5BRVMpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIF9jcmVhdGVIZWxwZXI6IChmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIGZ1bmN0aW9uIHNlbGVjdENpcGhlclN0cmF0ZWd5KGtleSkge1xuXHQgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBrZXkgPT0gJ3N0cmluZycpIHtcblx0ICAgICAgICAgICAgICAgICAgICByZXR1cm4gUGFzc3dvcmRCYXNlZENpcGhlcjtcblx0ICAgICAgICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNlcmlhbGl6YWJsZUNpcGhlcjtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoY2lwaGVyKSB7XG5cdCAgICAgICAgICAgICAgICByZXR1cm4ge1xuXHQgICAgICAgICAgICAgICAgICAgIGVuY3J5cHQ6IGZ1bmN0aW9uIChtZXNzYWdlLCBrZXksIGNmZykge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0Q2lwaGVyU3RyYXRlZ3koa2V5KS5lbmNyeXB0KGNpcGhlciwgbWVzc2FnZSwga2V5LCBjZmcpO1xuXHQgICAgICAgICAgICAgICAgICAgIH0sXG5cblx0ICAgICAgICAgICAgICAgICAgICBkZWNyeXB0OiBmdW5jdGlvbiAoY2lwaGVydGV4dCwga2V5LCBjZmcpIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdENpcGhlclN0cmF0ZWd5KGtleSkuZGVjcnlwdChjaXBoZXIsIGNpcGhlcnRleHQsIGtleSwgY2ZnKTtcblx0ICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICB9O1xuXHQgICAgICAgICAgICB9O1xuXHQgICAgICAgIH0oKSlcblx0ICAgIH0pO1xuXG5cdCAgICAvKipcblx0ICAgICAqIEFic3RyYWN0IGJhc2Ugc3RyZWFtIGNpcGhlciB0ZW1wbGF0ZS5cblx0ICAgICAqXG5cdCAgICAgKiBAcHJvcGVydHkge251bWJlcn0gYmxvY2tTaXplIFRoZSBudW1iZXIgb2YgMzItYml0IHdvcmRzIHRoaXMgY2lwaGVyIG9wZXJhdGVzIG9uLiBEZWZhdWx0OiAxICgzMiBiaXRzKVxuXHQgICAgICovXG5cdCAgICB2YXIgU3RyZWFtQ2lwaGVyID0gQ19saWIuU3RyZWFtQ2lwaGVyID0gQ2lwaGVyLmV4dGVuZCh7XG5cdCAgICAgICAgX2RvRmluYWxpemU6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgLy8gUHJvY2VzcyBwYXJ0aWFsIGJsb2Nrc1xuXHQgICAgICAgICAgICB2YXIgZmluYWxQcm9jZXNzZWRCbG9ja3MgPSB0aGlzLl9wcm9jZXNzKCEhJ2ZsdXNoJyk7XG5cblx0ICAgICAgICAgICAgcmV0dXJuIGZpbmFsUHJvY2Vzc2VkQmxvY2tzO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBibG9ja1NpemU6IDFcblx0ICAgIH0pO1xuXG5cdCAgICAvKipcblx0ICAgICAqIE1vZGUgbmFtZXNwYWNlLlxuXHQgICAgICovXG5cdCAgICB2YXIgQ19tb2RlID0gQy5tb2RlID0ge307XG5cblx0ICAgIC8qKlxuXHQgICAgICogQWJzdHJhY3QgYmFzZSBibG9jayBjaXBoZXIgbW9kZSB0ZW1wbGF0ZS5cblx0ICAgICAqL1xuXHQgICAgdmFyIEJsb2NrQ2lwaGVyTW9kZSA9IENfbGliLkJsb2NrQ2lwaGVyTW9kZSA9IEJhc2UuZXh0ZW5kKHtcblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDcmVhdGVzIHRoaXMgbW9kZSBmb3IgZW5jcnlwdGlvbi5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7Q2lwaGVyfSBjaXBoZXIgQSBibG9jayBjaXBoZXIgaW5zdGFuY2UuXG5cdCAgICAgICAgICogQHBhcmFtIHtBcnJheX0gaXYgVGhlIElWIHdvcmRzLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgbW9kZSA9IENyeXB0b0pTLm1vZGUuQ0JDLmNyZWF0ZUVuY3J5cHRvcihjaXBoZXIsIGl2LndvcmRzKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBjcmVhdGVFbmNyeXB0b3I6IGZ1bmN0aW9uIChjaXBoZXIsIGl2KSB7XG5cdCAgICAgICAgICAgIHJldHVybiB0aGlzLkVuY3J5cHRvci5jcmVhdGUoY2lwaGVyLCBpdik7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENyZWF0ZXMgdGhpcyBtb2RlIGZvciBkZWNyeXB0aW9uLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtDaXBoZXJ9IGNpcGhlciBBIGJsb2NrIGNpcGhlciBpbnN0YW5jZS5cblx0ICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBpdiBUaGUgSVYgd29yZHMuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBtb2RlID0gQ3J5cHRvSlMubW9kZS5DQkMuY3JlYXRlRGVjcnlwdG9yKGNpcGhlciwgaXYud29yZHMpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGNyZWF0ZURlY3J5cHRvcjogZnVuY3Rpb24gKGNpcGhlciwgaXYpIHtcblx0ICAgICAgICAgICAgcmV0dXJuIHRoaXMuRGVjcnlwdG9yLmNyZWF0ZShjaXBoZXIsIGl2KTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogSW5pdGlhbGl6ZXMgYSBuZXdseSBjcmVhdGVkIG1vZGUuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge0NpcGhlcn0gY2lwaGVyIEEgYmxvY2sgY2lwaGVyIGluc3RhbmNlLlxuXHQgICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGl2IFRoZSBJViB3b3Jkcy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIG1vZGUgPSBDcnlwdG9KUy5tb2RlLkNCQy5FbmNyeXB0b3IuY3JlYXRlKGNpcGhlciwgaXYud29yZHMpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGluaXQ6IGZ1bmN0aW9uIChjaXBoZXIsIGl2KSB7XG5cdCAgICAgICAgICAgIHRoaXMuX2NpcGhlciA9IGNpcGhlcjtcblx0ICAgICAgICAgICAgdGhpcy5faXYgPSBpdjtcblx0ICAgICAgICB9XG5cdCAgICB9KTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBDaXBoZXIgQmxvY2sgQ2hhaW5pbmcgbW9kZS5cblx0ICAgICAqL1xuXHQgICAgdmFyIENCQyA9IENfbW9kZS5DQkMgPSAoZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIEFic3RyYWN0IGJhc2UgQ0JDIG1vZGUuXG5cdCAgICAgICAgICovXG5cdCAgICAgICAgdmFyIENCQyA9IEJsb2NrQ2lwaGVyTW9kZS5leHRlbmQoKTtcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENCQyBlbmNyeXB0b3IuXG5cdCAgICAgICAgICovXG5cdCAgICAgICAgQ0JDLkVuY3J5cHRvciA9IENCQy5leHRlbmQoe1xuXHQgICAgICAgICAgICAvKipcblx0ICAgICAgICAgICAgICogUHJvY2Vzc2VzIHRoZSBkYXRhIGJsb2NrIGF0IG9mZnNldC5cblx0ICAgICAgICAgICAgICpcblx0ICAgICAgICAgICAgICogQHBhcmFtIHtBcnJheX0gd29yZHMgVGhlIGRhdGEgd29yZHMgdG8gb3BlcmF0ZSBvbi5cblx0ICAgICAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IG9mZnNldCBUaGUgb2Zmc2V0IHdoZXJlIHRoZSBibG9jayBzdGFydHMuXG5cdCAgICAgICAgICAgICAqXG5cdCAgICAgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICAgICAqXG5cdCAgICAgICAgICAgICAqICAgICBtb2RlLnByb2Nlc3NCbG9jayhkYXRhLndvcmRzLCBvZmZzZXQpO1xuXHQgICAgICAgICAgICAgKi9cblx0ICAgICAgICAgICAgcHJvY2Vzc0Jsb2NrOiBmdW5jdGlvbiAod29yZHMsIG9mZnNldCkge1xuXHQgICAgICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgICAgICB2YXIgY2lwaGVyID0gdGhpcy5fY2lwaGVyO1xuXHQgICAgICAgICAgICAgICAgdmFyIGJsb2NrU2l6ZSA9IGNpcGhlci5ibG9ja1NpemU7XG5cblx0ICAgICAgICAgICAgICAgIC8vIFhPUiBhbmQgZW5jcnlwdFxuXHQgICAgICAgICAgICAgICAgeG9yQmxvY2suY2FsbCh0aGlzLCB3b3Jkcywgb2Zmc2V0LCBibG9ja1NpemUpO1xuXHQgICAgICAgICAgICAgICAgY2lwaGVyLmVuY3J5cHRCbG9jayh3b3Jkcywgb2Zmc2V0KTtcblxuXHQgICAgICAgICAgICAgICAgLy8gUmVtZW1iZXIgdGhpcyBibG9jayB0byB1c2Ugd2l0aCBuZXh0IGJsb2NrXG5cdCAgICAgICAgICAgICAgICB0aGlzLl9wcmV2QmxvY2sgPSB3b3Jkcy5zbGljZShvZmZzZXQsIG9mZnNldCArIGJsb2NrU2l6ZSk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9KTtcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENCQyBkZWNyeXB0b3IuXG5cdCAgICAgICAgICovXG5cdCAgICAgICAgQ0JDLkRlY3J5cHRvciA9IENCQy5leHRlbmQoe1xuXHQgICAgICAgICAgICAvKipcblx0ICAgICAgICAgICAgICogUHJvY2Vzc2VzIHRoZSBkYXRhIGJsb2NrIGF0IG9mZnNldC5cblx0ICAgICAgICAgICAgICpcblx0ICAgICAgICAgICAgICogQHBhcmFtIHtBcnJheX0gd29yZHMgVGhlIGRhdGEgd29yZHMgdG8gb3BlcmF0ZSBvbi5cblx0ICAgICAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IG9mZnNldCBUaGUgb2Zmc2V0IHdoZXJlIHRoZSBibG9jayBzdGFydHMuXG5cdCAgICAgICAgICAgICAqXG5cdCAgICAgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICAgICAqXG5cdCAgICAgICAgICAgICAqICAgICBtb2RlLnByb2Nlc3NCbG9jayhkYXRhLndvcmRzLCBvZmZzZXQpO1xuXHQgICAgICAgICAgICAgKi9cblx0ICAgICAgICAgICAgcHJvY2Vzc0Jsb2NrOiBmdW5jdGlvbiAod29yZHMsIG9mZnNldCkge1xuXHQgICAgICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgICAgICB2YXIgY2lwaGVyID0gdGhpcy5fY2lwaGVyO1xuXHQgICAgICAgICAgICAgICAgdmFyIGJsb2NrU2l6ZSA9IGNpcGhlci5ibG9ja1NpemU7XG5cblx0ICAgICAgICAgICAgICAgIC8vIFJlbWVtYmVyIHRoaXMgYmxvY2sgdG8gdXNlIHdpdGggbmV4dCBibG9ja1xuXHQgICAgICAgICAgICAgICAgdmFyIHRoaXNCbG9jayA9IHdvcmRzLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgYmxvY2tTaXplKTtcblxuXHQgICAgICAgICAgICAgICAgLy8gRGVjcnlwdCBhbmQgWE9SXG5cdCAgICAgICAgICAgICAgICBjaXBoZXIuZGVjcnlwdEJsb2NrKHdvcmRzLCBvZmZzZXQpO1xuXHQgICAgICAgICAgICAgICAgeG9yQmxvY2suY2FsbCh0aGlzLCB3b3Jkcywgb2Zmc2V0LCBibG9ja1NpemUpO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBUaGlzIGJsb2NrIGJlY29tZXMgdGhlIHByZXZpb3VzIGJsb2NrXG5cdCAgICAgICAgICAgICAgICB0aGlzLl9wcmV2QmxvY2sgPSB0aGlzQmxvY2s7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9KTtcblxuXHQgICAgICAgIGZ1bmN0aW9uIHhvckJsb2NrKHdvcmRzLCBvZmZzZXQsIGJsb2NrU2l6ZSkge1xuXHQgICAgICAgICAgICB2YXIgYmxvY2s7XG5cblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRcblx0ICAgICAgICAgICAgdmFyIGl2ID0gdGhpcy5faXY7XG5cblx0ICAgICAgICAgICAgLy8gQ2hvb3NlIG1peGluZyBibG9ja1xuXHQgICAgICAgICAgICBpZiAoaXYpIHtcblx0ICAgICAgICAgICAgICAgIGJsb2NrID0gaXY7XG5cblx0ICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBJViBmb3Igc3Vic2VxdWVudCBibG9ja3Ncblx0ICAgICAgICAgICAgICAgIHRoaXMuX2l2ID0gdW5kZWZpbmVkO1xuXHQgICAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgYmxvY2sgPSB0aGlzLl9wcmV2QmxvY2s7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBYT1IgYmxvY2tzXG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmxvY2tTaXplOyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIHdvcmRzW29mZnNldCArIGldIF49IGJsb2NrW2ldO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgcmV0dXJuIENCQztcblx0ICAgIH0oKSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogUGFkZGluZyBuYW1lc3BhY2UuXG5cdCAgICAgKi9cblx0ICAgIHZhciBDX3BhZCA9IEMucGFkID0ge307XG5cblx0ICAgIC8qKlxuXHQgICAgICogUEtDUyAjNS83IHBhZGRpbmcgc3RyYXRlZ3kuXG5cdCAgICAgKi9cblx0ICAgIHZhciBQa2NzNyA9IENfcGFkLlBrY3M3ID0ge1xuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIFBhZHMgZGF0YSB1c2luZyB0aGUgYWxnb3JpdGhtIGRlZmluZWQgaW4gUEtDUyAjNS83LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtXb3JkQXJyYXl9IGRhdGEgVGhlIGRhdGEgdG8gcGFkLlxuXHQgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBibG9ja1NpemUgVGhlIG11bHRpcGxlIHRoYXQgdGhlIGRhdGEgc2hvdWxkIGJlIHBhZGRlZCB0by5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgQ3J5cHRvSlMucGFkLlBrY3M3LnBhZCh3b3JkQXJyYXksIDQpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIHBhZDogZnVuY3Rpb24gKGRhdGEsIGJsb2NrU2l6ZSkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dFxuXHQgICAgICAgICAgICB2YXIgYmxvY2tTaXplQnl0ZXMgPSBibG9ja1NpemUgKiA0O1xuXG5cdCAgICAgICAgICAgIC8vIENvdW50IHBhZGRpbmcgYnl0ZXNcblx0ICAgICAgICAgICAgdmFyIG5QYWRkaW5nQnl0ZXMgPSBibG9ja1NpemVCeXRlcyAtIGRhdGEuc2lnQnl0ZXMgJSBibG9ja1NpemVCeXRlcztcblxuXHQgICAgICAgICAgICAvLyBDcmVhdGUgcGFkZGluZyB3b3JkXG5cdCAgICAgICAgICAgIHZhciBwYWRkaW5nV29yZCA9IChuUGFkZGluZ0J5dGVzIDw8IDI0KSB8IChuUGFkZGluZ0J5dGVzIDw8IDE2KSB8IChuUGFkZGluZ0J5dGVzIDw8IDgpIHwgblBhZGRpbmdCeXRlcztcblxuXHQgICAgICAgICAgICAvLyBDcmVhdGUgcGFkZGluZ1xuXHQgICAgICAgICAgICB2YXIgcGFkZGluZ1dvcmRzID0gW107XG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgblBhZGRpbmdCeXRlczsgaSArPSA0KSB7XG5cdCAgICAgICAgICAgICAgICBwYWRkaW5nV29yZHMucHVzaChwYWRkaW5nV29yZCk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgdmFyIHBhZGRpbmcgPSBXb3JkQXJyYXkuY3JlYXRlKHBhZGRpbmdXb3JkcywgblBhZGRpbmdCeXRlcyk7XG5cblx0ICAgICAgICAgICAgLy8gQWRkIHBhZGRpbmdcblx0ICAgICAgICAgICAgZGF0YS5jb25jYXQocGFkZGluZyk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIFVucGFkcyBkYXRhIHRoYXQgaGFkIGJlZW4gcGFkZGVkIHVzaW5nIHRoZSBhbGdvcml0aG0gZGVmaW5lZCBpbiBQS0NTICM1LzcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge1dvcmRBcnJheX0gZGF0YSBUaGUgZGF0YSB0byB1bnBhZC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgQ3J5cHRvSlMucGFkLlBrY3M3LnVucGFkKHdvcmRBcnJheSk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgdW5wYWQ6IGZ1bmN0aW9uIChkYXRhKSB7XG5cdCAgICAgICAgICAgIC8vIEdldCBudW1iZXIgb2YgcGFkZGluZyBieXRlcyBmcm9tIGxhc3QgYnl0ZVxuXHQgICAgICAgICAgICB2YXIgblBhZGRpbmdCeXRlcyA9IGRhdGEud29yZHNbKGRhdGEuc2lnQnl0ZXMgLSAxKSA+Pj4gMl0gJiAweGZmO1xuXG5cdCAgICAgICAgICAgIC8vIFJlbW92ZSBwYWRkaW5nXG5cdCAgICAgICAgICAgIGRhdGEuc2lnQnl0ZXMgLT0gblBhZGRpbmdCeXRlcztcblx0ICAgICAgICB9XG5cdCAgICB9O1xuXG5cdCAgICAvKipcblx0ICAgICAqIEFic3RyYWN0IGJhc2UgYmxvY2sgY2lwaGVyIHRlbXBsYXRlLlxuXHQgICAgICpcblx0ICAgICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBibG9ja1NpemUgVGhlIG51bWJlciBvZiAzMi1iaXQgd29yZHMgdGhpcyBjaXBoZXIgb3BlcmF0ZXMgb24uIERlZmF1bHQ6IDQgKDEyOCBiaXRzKVxuXHQgICAgICovXG5cdCAgICB2YXIgQmxvY2tDaXBoZXIgPSBDX2xpYi5CbG9ja0NpcGhlciA9IENpcGhlci5leHRlbmQoe1xuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwcm9wZXJ0eSB7TW9kZX0gbW9kZSBUaGUgYmxvY2sgbW9kZSB0byB1c2UuIERlZmF1bHQ6IENCQ1xuXHQgICAgICAgICAqIEBwcm9wZXJ0eSB7UGFkZGluZ30gcGFkZGluZyBUaGUgcGFkZGluZyBzdHJhdGVneSB0byB1c2UuIERlZmF1bHQ6IFBrY3M3XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgY2ZnOiBDaXBoZXIuY2ZnLmV4dGVuZCh7XG5cdCAgICAgICAgICAgIG1vZGU6IENCQyxcblx0ICAgICAgICAgICAgcGFkZGluZzogUGtjczdcblx0ICAgICAgICB9KSxcblxuXHQgICAgICAgIHJlc2V0OiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIHZhciBtb2RlQ3JlYXRvcjtcblxuXHQgICAgICAgICAgICAvLyBSZXNldCBjaXBoZXJcblx0ICAgICAgICAgICAgQ2lwaGVyLnJlc2V0LmNhbGwodGhpcyk7XG5cblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBjZmcgPSB0aGlzLmNmZztcblx0ICAgICAgICAgICAgdmFyIGl2ID0gY2ZnLml2O1xuXHQgICAgICAgICAgICB2YXIgbW9kZSA9IGNmZy5tb2RlO1xuXG5cdCAgICAgICAgICAgIC8vIFJlc2V0IGJsb2NrIG1vZGVcblx0ICAgICAgICAgICAgaWYgKHRoaXMuX3hmb3JtTW9kZSA9PSB0aGlzLl9FTkNfWEZPUk1fTU9ERSkge1xuXHQgICAgICAgICAgICAgICAgbW9kZUNyZWF0b3IgPSBtb2RlLmNyZWF0ZUVuY3J5cHRvcjtcblx0ICAgICAgICAgICAgfSBlbHNlIC8qIGlmICh0aGlzLl94Zm9ybU1vZGUgPT0gdGhpcy5fREVDX1hGT1JNX01PREUpICovIHtcblx0ICAgICAgICAgICAgICAgIG1vZGVDcmVhdG9yID0gbW9kZS5jcmVhdGVEZWNyeXB0b3I7XG5cdCAgICAgICAgICAgICAgICAvLyBLZWVwIGF0IGxlYXN0IG9uZSBibG9jayBpbiB0aGUgYnVmZmVyIGZvciB1bnBhZGRpbmdcblx0ICAgICAgICAgICAgICAgIHRoaXMuX21pbkJ1ZmZlclNpemUgPSAxO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgaWYgKHRoaXMuX21vZGUgJiYgdGhpcy5fbW9kZS5fX2NyZWF0b3IgPT0gbW9kZUNyZWF0b3IpIHtcblx0ICAgICAgICAgICAgICAgIHRoaXMuX21vZGUuaW5pdCh0aGlzLCBpdiAmJiBpdi53b3Jkcyk7XG5cdCAgICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgICAgICB0aGlzLl9tb2RlID0gbW9kZUNyZWF0b3IuY2FsbChtb2RlLCB0aGlzLCBpdiAmJiBpdi53b3Jkcyk7XG5cdCAgICAgICAgICAgICAgICB0aGlzLl9tb2RlLl9fY3JlYXRvciA9IG1vZGVDcmVhdG9yO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIF9kb1Byb2Nlc3NCbG9jazogZnVuY3Rpb24gKHdvcmRzLCBvZmZzZXQpIHtcblx0ICAgICAgICAgICAgdGhpcy5fbW9kZS5wcm9jZXNzQmxvY2sod29yZHMsIG9mZnNldCk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIF9kb0ZpbmFsaXplOiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIHZhciBmaW5hbFByb2Nlc3NlZEJsb2NrcztcblxuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dFxuXHQgICAgICAgICAgICB2YXIgcGFkZGluZyA9IHRoaXMuY2ZnLnBhZGRpbmc7XG5cblx0ICAgICAgICAgICAgLy8gRmluYWxpemVcblx0ICAgICAgICAgICAgaWYgKHRoaXMuX3hmb3JtTW9kZSA9PSB0aGlzLl9FTkNfWEZPUk1fTU9ERSkge1xuXHQgICAgICAgICAgICAgICAgLy8gUGFkIGRhdGFcblx0ICAgICAgICAgICAgICAgIHBhZGRpbmcucGFkKHRoaXMuX2RhdGEsIHRoaXMuYmxvY2tTaXplKTtcblxuXHQgICAgICAgICAgICAgICAgLy8gUHJvY2VzcyBmaW5hbCBibG9ja3Ncblx0ICAgICAgICAgICAgICAgIGZpbmFsUHJvY2Vzc2VkQmxvY2tzID0gdGhpcy5fcHJvY2VzcyghISdmbHVzaCcpO1xuXHQgICAgICAgICAgICB9IGVsc2UgLyogaWYgKHRoaXMuX3hmb3JtTW9kZSA9PSB0aGlzLl9ERUNfWEZPUk1fTU9ERSkgKi8ge1xuXHQgICAgICAgICAgICAgICAgLy8gUHJvY2VzcyBmaW5hbCBibG9ja3Ncblx0ICAgICAgICAgICAgICAgIGZpbmFsUHJvY2Vzc2VkQmxvY2tzID0gdGhpcy5fcHJvY2VzcyghISdmbHVzaCcpO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBVbnBhZCBkYXRhXG5cdCAgICAgICAgICAgICAgICBwYWRkaW5nLnVucGFkKGZpbmFsUHJvY2Vzc2VkQmxvY2tzKTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIHJldHVybiBmaW5hbFByb2Nlc3NlZEJsb2Nrcztcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgYmxvY2tTaXplOiAxMjgvMzJcblx0ICAgIH0pO1xuXG5cdCAgICAvKipcblx0ICAgICAqIEEgY29sbGVjdGlvbiBvZiBjaXBoZXIgcGFyYW1ldGVycy5cblx0ICAgICAqXG5cdCAgICAgKiBAcHJvcGVydHkge1dvcmRBcnJheX0gY2lwaGVydGV4dCBUaGUgcmF3IGNpcGhlcnRleHQuXG5cdCAgICAgKiBAcHJvcGVydHkge1dvcmRBcnJheX0ga2V5IFRoZSBrZXkgdG8gdGhpcyBjaXBoZXJ0ZXh0LlxuXHQgICAgICogQHByb3BlcnR5IHtXb3JkQXJyYXl9IGl2IFRoZSBJViB1c2VkIGluIHRoZSBjaXBoZXJpbmcgb3BlcmF0aW9uLlxuXHQgICAgICogQHByb3BlcnR5IHtXb3JkQXJyYXl9IHNhbHQgVGhlIHNhbHQgdXNlZCB3aXRoIGEga2V5IGRlcml2YXRpb24gZnVuY3Rpb24uXG5cdCAgICAgKiBAcHJvcGVydHkge0NpcGhlcn0gYWxnb3JpdGhtIFRoZSBjaXBoZXIgYWxnb3JpdGhtLlxuXHQgICAgICogQHByb3BlcnR5IHtNb2RlfSBtb2RlIFRoZSBibG9jayBtb2RlIHVzZWQgaW4gdGhlIGNpcGhlcmluZyBvcGVyYXRpb24uXG5cdCAgICAgKiBAcHJvcGVydHkge1BhZGRpbmd9IHBhZGRpbmcgVGhlIHBhZGRpbmcgc2NoZW1lIHVzZWQgaW4gdGhlIGNpcGhlcmluZyBvcGVyYXRpb24uXG5cdCAgICAgKiBAcHJvcGVydHkge251bWJlcn0gYmxvY2tTaXplIFRoZSBibG9jayBzaXplIG9mIHRoZSBjaXBoZXIuXG5cdCAgICAgKiBAcHJvcGVydHkge0Zvcm1hdH0gZm9ybWF0dGVyIFRoZSBkZWZhdWx0IGZvcm1hdHRpbmcgc3RyYXRlZ3kgdG8gY29udmVydCB0aGlzIGNpcGhlciBwYXJhbXMgb2JqZWN0IHRvIGEgc3RyaW5nLlxuXHQgICAgICovXG5cdCAgICB2YXIgQ2lwaGVyUGFyYW1zID0gQ19saWIuQ2lwaGVyUGFyYW1zID0gQmFzZS5leHRlbmQoe1xuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIEluaXRpYWxpemVzIGEgbmV3bHkgY3JlYXRlZCBjaXBoZXIgcGFyYW1zIG9iamVjdC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBjaXBoZXJQYXJhbXMgQW4gb2JqZWN0IHdpdGggYW55IG9mIHRoZSBwb3NzaWJsZSBjaXBoZXIgcGFyYW1ldGVycy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIGNpcGhlclBhcmFtcyA9IENyeXB0b0pTLmxpYi5DaXBoZXJQYXJhbXMuY3JlYXRlKHtcblx0ICAgICAgICAgKiAgICAgICAgIGNpcGhlcnRleHQ6IGNpcGhlcnRleHRXb3JkQXJyYXksXG5cdCAgICAgICAgICogICAgICAgICBrZXk6IGtleVdvcmRBcnJheSxcblx0ICAgICAgICAgKiAgICAgICAgIGl2OiBpdldvcmRBcnJheSxcblx0ICAgICAgICAgKiAgICAgICAgIHNhbHQ6IHNhbHRXb3JkQXJyYXksXG5cdCAgICAgICAgICogICAgICAgICBhbGdvcml0aG06IENyeXB0b0pTLmFsZ28uQUVTLFxuXHQgICAgICAgICAqICAgICAgICAgbW9kZTogQ3J5cHRvSlMubW9kZS5DQkMsXG5cdCAgICAgICAgICogICAgICAgICBwYWRkaW5nOiBDcnlwdG9KUy5wYWQuUEtDUzcsXG5cdCAgICAgICAgICogICAgICAgICBibG9ja1NpemU6IDQsXG5cdCAgICAgICAgICogICAgICAgICBmb3JtYXR0ZXI6IENyeXB0b0pTLmZvcm1hdC5PcGVuU1NMXG5cdCAgICAgICAgICogICAgIH0pO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGluaXQ6IGZ1bmN0aW9uIChjaXBoZXJQYXJhbXMpIHtcblx0ICAgICAgICAgICAgdGhpcy5taXhJbihjaXBoZXJQYXJhbXMpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb252ZXJ0cyB0aGlzIGNpcGhlciBwYXJhbXMgb2JqZWN0IHRvIGEgc3RyaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtGb3JtYXR9IGZvcm1hdHRlciAoT3B0aW9uYWwpIFRoZSBmb3JtYXR0aW5nIHN0cmF0ZWd5IHRvIHVzZS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIHN0cmluZ2lmaWVkIGNpcGhlciBwYXJhbXMuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAdGhyb3dzIEVycm9yIElmIG5laXRoZXIgdGhlIGZvcm1hdHRlciBub3IgdGhlIGRlZmF1bHQgZm9ybWF0dGVyIGlzIHNldC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIHN0cmluZyA9IGNpcGhlclBhcmFtcyArICcnO1xuXHQgICAgICAgICAqICAgICB2YXIgc3RyaW5nID0gY2lwaGVyUGFyYW1zLnRvU3RyaW5nKCk7XG5cdCAgICAgICAgICogICAgIHZhciBzdHJpbmcgPSBjaXBoZXJQYXJhbXMudG9TdHJpbmcoQ3J5cHRvSlMuZm9ybWF0Lk9wZW5TU0wpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIHRvU3RyaW5nOiBmdW5jdGlvbiAoZm9ybWF0dGVyKSB7XG5cdCAgICAgICAgICAgIHJldHVybiAoZm9ybWF0dGVyIHx8IHRoaXMuZm9ybWF0dGVyKS5zdHJpbmdpZnkodGhpcyk7XG5cdCAgICAgICAgfVxuXHQgICAgfSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogRm9ybWF0IG5hbWVzcGFjZS5cblx0ICAgICAqL1xuXHQgICAgdmFyIENfZm9ybWF0ID0gQy5mb3JtYXQgPSB7fTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBPcGVuU1NMIGZvcm1hdHRpbmcgc3RyYXRlZ3kuXG5cdCAgICAgKi9cblx0ICAgIHZhciBPcGVuU1NMRm9ybWF0dGVyID0gQ19mb3JtYXQuT3BlblNTTCA9IHtcblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb252ZXJ0cyBhIGNpcGhlciBwYXJhbXMgb2JqZWN0IHRvIGFuIE9wZW5TU0wtY29tcGF0aWJsZSBzdHJpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge0NpcGhlclBhcmFtc30gY2lwaGVyUGFyYW1zIFRoZSBjaXBoZXIgcGFyYW1zIG9iamVjdC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIE9wZW5TU0wtY29tcGF0aWJsZSBzdHJpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBvcGVuU1NMU3RyaW5nID0gQ3J5cHRvSlMuZm9ybWF0Lk9wZW5TU0wuc3RyaW5naWZ5KGNpcGhlclBhcmFtcyk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgc3RyaW5naWZ5OiBmdW5jdGlvbiAoY2lwaGVyUGFyYW1zKSB7XG5cdCAgICAgICAgICAgIHZhciB3b3JkQXJyYXk7XG5cblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBjaXBoZXJ0ZXh0ID0gY2lwaGVyUGFyYW1zLmNpcGhlcnRleHQ7XG5cdCAgICAgICAgICAgIHZhciBzYWx0ID0gY2lwaGVyUGFyYW1zLnNhbHQ7XG5cblx0ICAgICAgICAgICAgLy8gRm9ybWF0XG5cdCAgICAgICAgICAgIGlmIChzYWx0KSB7XG5cdCAgICAgICAgICAgICAgICB3b3JkQXJyYXkgPSBXb3JkQXJyYXkuY3JlYXRlKFsweDUzNjE2Yzc0LCAweDY1NjQ1ZjVmXSkuY29uY2F0KHNhbHQpLmNvbmNhdChjaXBoZXJ0ZXh0KTtcblx0ICAgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgICAgIHdvcmRBcnJheSA9IGNpcGhlcnRleHQ7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICByZXR1cm4gd29yZEFycmF5LnRvU3RyaW5nKEJhc2U2NCk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbnZlcnRzIGFuIE9wZW5TU0wtY29tcGF0aWJsZSBzdHJpbmcgdG8gYSBjaXBoZXIgcGFyYW1zIG9iamVjdC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcGVuU1NMU3RyIFRoZSBPcGVuU1NMLWNvbXBhdGlibGUgc3RyaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7Q2lwaGVyUGFyYW1zfSBUaGUgY2lwaGVyIHBhcmFtcyBvYmplY3QuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBjaXBoZXJQYXJhbXMgPSBDcnlwdG9KUy5mb3JtYXQuT3BlblNTTC5wYXJzZShvcGVuU1NMU3RyaW5nKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBwYXJzZTogZnVuY3Rpb24gKG9wZW5TU0xTdHIpIHtcblx0ICAgICAgICAgICAgdmFyIHNhbHQ7XG5cblx0ICAgICAgICAgICAgLy8gUGFyc2UgYmFzZTY0XG5cdCAgICAgICAgICAgIHZhciBjaXBoZXJ0ZXh0ID0gQmFzZTY0LnBhcnNlKG9wZW5TU0xTdHIpO1xuXG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0XG5cdCAgICAgICAgICAgIHZhciBjaXBoZXJ0ZXh0V29yZHMgPSBjaXBoZXJ0ZXh0LndvcmRzO1xuXG5cdCAgICAgICAgICAgIC8vIFRlc3QgZm9yIHNhbHRcblx0ICAgICAgICAgICAgaWYgKGNpcGhlcnRleHRXb3Jkc1swXSA9PSAweDUzNjE2Yzc0ICYmIGNpcGhlcnRleHRXb3Jkc1sxXSA9PSAweDY1NjQ1ZjVmKSB7XG5cdCAgICAgICAgICAgICAgICAvLyBFeHRyYWN0IHNhbHRcblx0ICAgICAgICAgICAgICAgIHNhbHQgPSBXb3JkQXJyYXkuY3JlYXRlKGNpcGhlcnRleHRXb3Jkcy5zbGljZSgyLCA0KSk7XG5cblx0ICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBzYWx0IGZyb20gY2lwaGVydGV4dFxuXHQgICAgICAgICAgICAgICAgY2lwaGVydGV4dFdvcmRzLnNwbGljZSgwLCA0KTtcblx0ICAgICAgICAgICAgICAgIGNpcGhlcnRleHQuc2lnQnl0ZXMgLT0gMTY7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICByZXR1cm4gQ2lwaGVyUGFyYW1zLmNyZWF0ZSh7IGNpcGhlcnRleHQ6IGNpcGhlcnRleHQsIHNhbHQ6IHNhbHQgfSk7XG5cdCAgICAgICAgfVxuXHQgICAgfTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBBIGNpcGhlciB3cmFwcGVyIHRoYXQgcmV0dXJucyBjaXBoZXJ0ZXh0IGFzIGEgc2VyaWFsaXphYmxlIGNpcGhlciBwYXJhbXMgb2JqZWN0LlxuXHQgICAgICovXG5cdCAgICB2YXIgU2VyaWFsaXphYmxlQ2lwaGVyID0gQ19saWIuU2VyaWFsaXphYmxlQ2lwaGVyID0gQmFzZS5leHRlbmQoe1xuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwcm9wZXJ0eSB7Rm9ybWF0dGVyfSBmb3JtYXQgVGhlIGZvcm1hdHRpbmcgc3RyYXRlZ3kgdG8gY29udmVydCBjaXBoZXIgcGFyYW0gb2JqZWN0cyB0byBhbmQgZnJvbSBhIHN0cmluZy4gRGVmYXVsdDogT3BlblNTTFxuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGNmZzogQmFzZS5leHRlbmQoe1xuXHQgICAgICAgICAgICBmb3JtYXQ6IE9wZW5TU0xGb3JtYXR0ZXJcblx0ICAgICAgICB9KSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIEVuY3J5cHRzIGEgbWVzc2FnZS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7Q2lwaGVyfSBjaXBoZXIgVGhlIGNpcGhlciBhbGdvcml0aG0gdG8gdXNlLlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gbWVzc2FnZSBUaGUgbWVzc2FnZSB0byBlbmNyeXB0LlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fSBrZXkgVGhlIGtleS5cblx0ICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIChPcHRpb25hbCkgVGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byB1c2UgZm9yIHRoaXMgb3BlcmF0aW9uLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7Q2lwaGVyUGFyYW1zfSBBIGNpcGhlciBwYXJhbXMgb2JqZWN0LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgY2lwaGVydGV4dFBhcmFtcyA9IENyeXB0b0pTLmxpYi5TZXJpYWxpemFibGVDaXBoZXIuZW5jcnlwdChDcnlwdG9KUy5hbGdvLkFFUywgbWVzc2FnZSwga2V5KTtcblx0ICAgICAgICAgKiAgICAgdmFyIGNpcGhlcnRleHRQYXJhbXMgPSBDcnlwdG9KUy5saWIuU2VyaWFsaXphYmxlQ2lwaGVyLmVuY3J5cHQoQ3J5cHRvSlMuYWxnby5BRVMsIG1lc3NhZ2UsIGtleSwgeyBpdjogaXYgfSk7XG5cdCAgICAgICAgICogICAgIHZhciBjaXBoZXJ0ZXh0UGFyYW1zID0gQ3J5cHRvSlMubGliLlNlcmlhbGl6YWJsZUNpcGhlci5lbmNyeXB0KENyeXB0b0pTLmFsZ28uQUVTLCBtZXNzYWdlLCBrZXksIHsgaXY6IGl2LCBmb3JtYXQ6IENyeXB0b0pTLmZvcm1hdC5PcGVuU1NMIH0pO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGVuY3J5cHQ6IGZ1bmN0aW9uIChjaXBoZXIsIG1lc3NhZ2UsIGtleSwgY2ZnKSB7XG5cdCAgICAgICAgICAgIC8vIEFwcGx5IGNvbmZpZyBkZWZhdWx0c1xuXHQgICAgICAgICAgICBjZmcgPSB0aGlzLmNmZy5leHRlbmQoY2ZnKTtcblxuXHQgICAgICAgICAgICAvLyBFbmNyeXB0XG5cdCAgICAgICAgICAgIHZhciBlbmNyeXB0b3IgPSBjaXBoZXIuY3JlYXRlRW5jcnlwdG9yKGtleSwgY2ZnKTtcblx0ICAgICAgICAgICAgdmFyIGNpcGhlcnRleHQgPSBlbmNyeXB0b3IuZmluYWxpemUobWVzc2FnZSk7XG5cblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRcblx0ICAgICAgICAgICAgdmFyIGNpcGhlckNmZyA9IGVuY3J5cHRvci5jZmc7XG5cblx0ICAgICAgICAgICAgLy8gQ3JlYXRlIGFuZCByZXR1cm4gc2VyaWFsaXphYmxlIGNpcGhlciBwYXJhbXNcblx0ICAgICAgICAgICAgcmV0dXJuIENpcGhlclBhcmFtcy5jcmVhdGUoe1xuXHQgICAgICAgICAgICAgICAgY2lwaGVydGV4dDogY2lwaGVydGV4dCxcblx0ICAgICAgICAgICAgICAgIGtleToga2V5LFxuXHQgICAgICAgICAgICAgICAgaXY6IGNpcGhlckNmZy5pdixcblx0ICAgICAgICAgICAgICAgIGFsZ29yaXRobTogY2lwaGVyLFxuXHQgICAgICAgICAgICAgICAgbW9kZTogY2lwaGVyQ2ZnLm1vZGUsXG5cdCAgICAgICAgICAgICAgICBwYWRkaW5nOiBjaXBoZXJDZmcucGFkZGluZyxcblx0ICAgICAgICAgICAgICAgIGJsb2NrU2l6ZTogY2lwaGVyLmJsb2NrU2l6ZSxcblx0ICAgICAgICAgICAgICAgIGZvcm1hdHRlcjogY2ZnLmZvcm1hdFxuXHQgICAgICAgICAgICB9KTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogRGVjcnlwdHMgc2VyaWFsaXplZCBjaXBoZXJ0ZXh0LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtDaXBoZXJ9IGNpcGhlciBUaGUgY2lwaGVyIGFsZ29yaXRobSB0byB1c2UuXG5cdCAgICAgICAgICogQHBhcmFtIHtDaXBoZXJQYXJhbXN8c3RyaW5nfSBjaXBoZXJ0ZXh0IFRoZSBjaXBoZXJ0ZXh0IHRvIGRlY3J5cHQuXG5cdCAgICAgICAgICogQHBhcmFtIHtXb3JkQXJyYXl9IGtleSBUaGUga2V5LlxuXHQgICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcgKE9wdGlvbmFsKSBUaGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHVzZSBmb3IgdGhpcyBvcGVyYXRpb24uXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSBwbGFpbnRleHQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBwbGFpbnRleHQgPSBDcnlwdG9KUy5saWIuU2VyaWFsaXphYmxlQ2lwaGVyLmRlY3J5cHQoQ3J5cHRvSlMuYWxnby5BRVMsIGZvcm1hdHRlZENpcGhlcnRleHQsIGtleSwgeyBpdjogaXYsIGZvcm1hdDogQ3J5cHRvSlMuZm9ybWF0Lk9wZW5TU0wgfSk7XG5cdCAgICAgICAgICogICAgIHZhciBwbGFpbnRleHQgPSBDcnlwdG9KUy5saWIuU2VyaWFsaXphYmxlQ2lwaGVyLmRlY3J5cHQoQ3J5cHRvSlMuYWxnby5BRVMsIGNpcGhlcnRleHRQYXJhbXMsIGtleSwgeyBpdjogaXYsIGZvcm1hdDogQ3J5cHRvSlMuZm9ybWF0Lk9wZW5TU0wgfSk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgZGVjcnlwdDogZnVuY3Rpb24gKGNpcGhlciwgY2lwaGVydGV4dCwga2V5LCBjZmcpIHtcblx0ICAgICAgICAgICAgLy8gQXBwbHkgY29uZmlnIGRlZmF1bHRzXG5cdCAgICAgICAgICAgIGNmZyA9IHRoaXMuY2ZnLmV4dGVuZChjZmcpO1xuXG5cdCAgICAgICAgICAgIC8vIENvbnZlcnQgc3RyaW5nIHRvIENpcGhlclBhcmFtc1xuXHQgICAgICAgICAgICBjaXBoZXJ0ZXh0ID0gdGhpcy5fcGFyc2UoY2lwaGVydGV4dCwgY2ZnLmZvcm1hdCk7XG5cblx0ICAgICAgICAgICAgLy8gRGVjcnlwdFxuXHQgICAgICAgICAgICB2YXIgcGxhaW50ZXh0ID0gY2lwaGVyLmNyZWF0ZURlY3J5cHRvcihrZXksIGNmZykuZmluYWxpemUoY2lwaGVydGV4dC5jaXBoZXJ0ZXh0KTtcblxuXHQgICAgICAgICAgICByZXR1cm4gcGxhaW50ZXh0O1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb252ZXJ0cyBzZXJpYWxpemVkIGNpcGhlcnRleHQgdG8gQ2lwaGVyUGFyYW1zLFxuXHQgICAgICAgICAqIGVsc2UgYXNzdW1lZCBDaXBoZXJQYXJhbXMgYWxyZWFkeSBhbmQgcmV0dXJucyBjaXBoZXJ0ZXh0IHVuY2hhbmdlZC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7Q2lwaGVyUGFyYW1zfHN0cmluZ30gY2lwaGVydGV4dCBUaGUgY2lwaGVydGV4dC5cblx0ICAgICAgICAgKiBAcGFyYW0ge0Zvcm1hdHRlcn0gZm9ybWF0IFRoZSBmb3JtYXR0aW5nIHN0cmF0ZWd5IHRvIHVzZSB0byBwYXJzZSBzZXJpYWxpemVkIGNpcGhlcnRleHQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtDaXBoZXJQYXJhbXN9IFRoZSB1bnNlcmlhbGl6ZWQgY2lwaGVydGV4dC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIGNpcGhlcnRleHRQYXJhbXMgPSBDcnlwdG9KUy5saWIuU2VyaWFsaXphYmxlQ2lwaGVyLl9wYXJzZShjaXBoZXJ0ZXh0U3RyaW5nT3JQYXJhbXMsIGZvcm1hdCk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgX3BhcnNlOiBmdW5jdGlvbiAoY2lwaGVydGV4dCwgZm9ybWF0KSB7XG5cdCAgICAgICAgICAgIGlmICh0eXBlb2YgY2lwaGVydGV4dCA9PSAnc3RyaW5nJykge1xuXHQgICAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdC5wYXJzZShjaXBoZXJ0ZXh0LCB0aGlzKTtcblx0ICAgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgICAgIHJldHVybiBjaXBoZXJ0ZXh0O1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgfSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogS2V5IGRlcml2YXRpb24gZnVuY3Rpb24gbmFtZXNwYWNlLlxuXHQgICAgICovXG5cdCAgICB2YXIgQ19rZGYgPSBDLmtkZiA9IHt9O1xuXG5cdCAgICAvKipcblx0ICAgICAqIE9wZW5TU0wga2V5IGRlcml2YXRpb24gZnVuY3Rpb24uXG5cdCAgICAgKi9cblx0ICAgIHZhciBPcGVuU1NMS2RmID0gQ19rZGYuT3BlblNTTCA9IHtcblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBEZXJpdmVzIGEga2V5IGFuZCBJViBmcm9tIGEgcGFzc3dvcmQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gcGFzc3dvcmQgVGhlIHBhc3N3b3JkIHRvIGRlcml2ZSBmcm9tLlxuXHQgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBrZXlTaXplIFRoZSBzaXplIGluIHdvcmRzIG9mIHRoZSBrZXkgdG8gZ2VuZXJhdGUuXG5cdCAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IGl2U2l6ZSBUaGUgc2l6ZSBpbiB3b3JkcyBvZiB0aGUgSVYgdG8gZ2VuZXJhdGUuXG5cdCAgICAgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBzYWx0IChPcHRpb25hbCkgQSA2NC1iaXQgc2FsdCB0byB1c2UuIElmIG9taXR0ZWQsIGEgc2FsdCB3aWxsIGJlIGdlbmVyYXRlZCByYW5kb21seS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge0NpcGhlclBhcmFtc30gQSBjaXBoZXIgcGFyYW1zIG9iamVjdCB3aXRoIHRoZSBrZXksIElWLCBhbmQgc2FsdC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIGRlcml2ZWRQYXJhbXMgPSBDcnlwdG9KUy5rZGYuT3BlblNTTC5leGVjdXRlKCdQYXNzd29yZCcsIDI1Ni8zMiwgMTI4LzMyKTtcblx0ICAgICAgICAgKiAgICAgdmFyIGRlcml2ZWRQYXJhbXMgPSBDcnlwdG9KUy5rZGYuT3BlblNTTC5leGVjdXRlKCdQYXNzd29yZCcsIDI1Ni8zMiwgMTI4LzMyLCAnc2FsdHNhbHQnKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBleGVjdXRlOiBmdW5jdGlvbiAocGFzc3dvcmQsIGtleVNpemUsIGl2U2l6ZSwgc2FsdCkge1xuXHQgICAgICAgICAgICAvLyBHZW5lcmF0ZSByYW5kb20gc2FsdFxuXHQgICAgICAgICAgICBpZiAoIXNhbHQpIHtcblx0ICAgICAgICAgICAgICAgIHNhbHQgPSBXb3JkQXJyYXkucmFuZG9tKDY0LzgpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gRGVyaXZlIGtleSBhbmQgSVZcblx0ICAgICAgICAgICAgdmFyIGtleSA9IEV2cEtERi5jcmVhdGUoeyBrZXlTaXplOiBrZXlTaXplICsgaXZTaXplIH0pLmNvbXB1dGUocGFzc3dvcmQsIHNhbHQpO1xuXG5cdCAgICAgICAgICAgIC8vIFNlcGFyYXRlIGtleSBhbmQgSVZcblx0ICAgICAgICAgICAgdmFyIGl2ID0gV29yZEFycmF5LmNyZWF0ZShrZXkud29yZHMuc2xpY2Uoa2V5U2l6ZSksIGl2U2l6ZSAqIDQpO1xuXHQgICAgICAgICAgICBrZXkuc2lnQnl0ZXMgPSBrZXlTaXplICogNDtcblxuXHQgICAgICAgICAgICAvLyBSZXR1cm4gcGFyYW1zXG5cdCAgICAgICAgICAgIHJldHVybiBDaXBoZXJQYXJhbXMuY3JlYXRlKHsga2V5OiBrZXksIGl2OiBpdiwgc2FsdDogc2FsdCB9KTtcblx0ICAgICAgICB9XG5cdCAgICB9O1xuXG5cdCAgICAvKipcblx0ICAgICAqIEEgc2VyaWFsaXphYmxlIGNpcGhlciB3cmFwcGVyIHRoYXQgZGVyaXZlcyB0aGUga2V5IGZyb20gYSBwYXNzd29yZCxcblx0ICAgICAqIGFuZCByZXR1cm5zIGNpcGhlcnRleHQgYXMgYSBzZXJpYWxpemFibGUgY2lwaGVyIHBhcmFtcyBvYmplY3QuXG5cdCAgICAgKi9cblx0ICAgIHZhciBQYXNzd29yZEJhc2VkQ2lwaGVyID0gQ19saWIuUGFzc3dvcmRCYXNlZENpcGhlciA9IFNlcmlhbGl6YWJsZUNpcGhlci5leHRlbmQoe1xuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwcm9wZXJ0eSB7S0RGfSBrZGYgVGhlIGtleSBkZXJpdmF0aW9uIGZ1bmN0aW9uIHRvIHVzZSB0byBnZW5lcmF0ZSBhIGtleSBhbmQgSVYgZnJvbSBhIHBhc3N3b3JkLiBEZWZhdWx0OiBPcGVuU1NMXG5cdCAgICAgICAgICovXG5cdCAgICAgICAgY2ZnOiBTZXJpYWxpemFibGVDaXBoZXIuY2ZnLmV4dGVuZCh7XG5cdCAgICAgICAgICAgIGtkZjogT3BlblNTTEtkZlxuXHQgICAgICAgIH0pLFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogRW5jcnlwdHMgYSBtZXNzYWdlIHVzaW5nIGEgcGFzc3dvcmQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge0NpcGhlcn0gY2lwaGVyIFRoZSBjaXBoZXIgYWxnb3JpdGhtIHRvIHVzZS5cblx0ICAgICAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IG1lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gZW5jcnlwdC5cblx0ICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gcGFzc3dvcmQgVGhlIHBhc3N3b3JkLlxuXHQgICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcgKE9wdGlvbmFsKSBUaGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHVzZSBmb3IgdGhpcyBvcGVyYXRpb24uXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtDaXBoZXJQYXJhbXN9IEEgY2lwaGVyIHBhcmFtcyBvYmplY3QuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBjaXBoZXJ0ZXh0UGFyYW1zID0gQ3J5cHRvSlMubGliLlBhc3N3b3JkQmFzZWRDaXBoZXIuZW5jcnlwdChDcnlwdG9KUy5hbGdvLkFFUywgbWVzc2FnZSwgJ3Bhc3N3b3JkJyk7XG5cdCAgICAgICAgICogICAgIHZhciBjaXBoZXJ0ZXh0UGFyYW1zID0gQ3J5cHRvSlMubGliLlBhc3N3b3JkQmFzZWRDaXBoZXIuZW5jcnlwdChDcnlwdG9KUy5hbGdvLkFFUywgbWVzc2FnZSwgJ3Bhc3N3b3JkJywgeyBmb3JtYXQ6IENyeXB0b0pTLmZvcm1hdC5PcGVuU1NMIH0pO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGVuY3J5cHQ6IGZ1bmN0aW9uIChjaXBoZXIsIG1lc3NhZ2UsIHBhc3N3b3JkLCBjZmcpIHtcblx0ICAgICAgICAgICAgLy8gQXBwbHkgY29uZmlnIGRlZmF1bHRzXG5cdCAgICAgICAgICAgIGNmZyA9IHRoaXMuY2ZnLmV4dGVuZChjZmcpO1xuXG5cdCAgICAgICAgICAgIC8vIERlcml2ZSBrZXkgYW5kIG90aGVyIHBhcmFtc1xuXHQgICAgICAgICAgICB2YXIgZGVyaXZlZFBhcmFtcyA9IGNmZy5rZGYuZXhlY3V0ZShwYXNzd29yZCwgY2lwaGVyLmtleVNpemUsIGNpcGhlci5pdlNpemUpO1xuXG5cdCAgICAgICAgICAgIC8vIEFkZCBJViB0byBjb25maWdcblx0ICAgICAgICAgICAgY2ZnLml2ID0gZGVyaXZlZFBhcmFtcy5pdjtcblxuXHQgICAgICAgICAgICAvLyBFbmNyeXB0XG5cdCAgICAgICAgICAgIHZhciBjaXBoZXJ0ZXh0ID0gU2VyaWFsaXphYmxlQ2lwaGVyLmVuY3J5cHQuY2FsbCh0aGlzLCBjaXBoZXIsIG1lc3NhZ2UsIGRlcml2ZWRQYXJhbXMua2V5LCBjZmcpO1xuXG5cdCAgICAgICAgICAgIC8vIE1peCBpbiBkZXJpdmVkIHBhcmFtc1xuXHQgICAgICAgICAgICBjaXBoZXJ0ZXh0Lm1peEluKGRlcml2ZWRQYXJhbXMpO1xuXG5cdCAgICAgICAgICAgIHJldHVybiBjaXBoZXJ0ZXh0O1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBEZWNyeXB0cyBzZXJpYWxpemVkIGNpcGhlcnRleHQgdXNpbmcgYSBwYXNzd29yZC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7Q2lwaGVyfSBjaXBoZXIgVGhlIGNpcGhlciBhbGdvcml0aG0gdG8gdXNlLlxuXHQgICAgICAgICAqIEBwYXJhbSB7Q2lwaGVyUGFyYW1zfHN0cmluZ30gY2lwaGVydGV4dCBUaGUgY2lwaGVydGV4dCB0byBkZWNyeXB0LlxuXHQgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwYXNzd29yZCBUaGUgcGFzc3dvcmQuXG5cdCAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IGNmZyAoT3B0aW9uYWwpIFRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gdXNlIGZvciB0aGlzIG9wZXJhdGlvbi5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIHBsYWludGV4dC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIHBsYWludGV4dCA9IENyeXB0b0pTLmxpYi5QYXNzd29yZEJhc2VkQ2lwaGVyLmRlY3J5cHQoQ3J5cHRvSlMuYWxnby5BRVMsIGZvcm1hdHRlZENpcGhlcnRleHQsICdwYXNzd29yZCcsIHsgZm9ybWF0OiBDcnlwdG9KUy5mb3JtYXQuT3BlblNTTCB9KTtcblx0ICAgICAgICAgKiAgICAgdmFyIHBsYWludGV4dCA9IENyeXB0b0pTLmxpYi5QYXNzd29yZEJhc2VkQ2lwaGVyLmRlY3J5cHQoQ3J5cHRvSlMuYWxnby5BRVMsIGNpcGhlcnRleHRQYXJhbXMsICdwYXNzd29yZCcsIHsgZm9ybWF0OiBDcnlwdG9KUy5mb3JtYXQuT3BlblNTTCB9KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBkZWNyeXB0OiBmdW5jdGlvbiAoY2lwaGVyLCBjaXBoZXJ0ZXh0LCBwYXNzd29yZCwgY2ZnKSB7XG5cdCAgICAgICAgICAgIC8vIEFwcGx5IGNvbmZpZyBkZWZhdWx0c1xuXHQgICAgICAgICAgICBjZmcgPSB0aGlzLmNmZy5leHRlbmQoY2ZnKTtcblxuXHQgICAgICAgICAgICAvLyBDb252ZXJ0IHN0cmluZyB0byBDaXBoZXJQYXJhbXNcblx0ICAgICAgICAgICAgY2lwaGVydGV4dCA9IHRoaXMuX3BhcnNlKGNpcGhlcnRleHQsIGNmZy5mb3JtYXQpO1xuXG5cdCAgICAgICAgICAgIC8vIERlcml2ZSBrZXkgYW5kIG90aGVyIHBhcmFtc1xuXHQgICAgICAgICAgICB2YXIgZGVyaXZlZFBhcmFtcyA9IGNmZy5rZGYuZXhlY3V0ZShwYXNzd29yZCwgY2lwaGVyLmtleVNpemUsIGNpcGhlci5pdlNpemUsIGNpcGhlcnRleHQuc2FsdCk7XG5cblx0ICAgICAgICAgICAgLy8gQWRkIElWIHRvIGNvbmZpZ1xuXHQgICAgICAgICAgICBjZmcuaXYgPSBkZXJpdmVkUGFyYW1zLml2O1xuXG5cdCAgICAgICAgICAgIC8vIERlY3J5cHRcblx0ICAgICAgICAgICAgdmFyIHBsYWludGV4dCA9IFNlcmlhbGl6YWJsZUNpcGhlci5kZWNyeXB0LmNhbGwodGhpcywgY2lwaGVyLCBjaXBoZXJ0ZXh0LCBkZXJpdmVkUGFyYW1zLmtleSwgY2ZnKTtcblxuXHQgICAgICAgICAgICByZXR1cm4gcGxhaW50ZXh0O1xuXHQgICAgICAgIH1cblx0ICAgIH0pO1xuXHR9KCkpO1xuXG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5KSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeSgpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0cm9vdC5DcnlwdG9KUyA9IGZhY3RvcnkoKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoKSB7XG5cblx0LypnbG9iYWxzIHdpbmRvdywgZ2xvYmFsLCByZXF1aXJlKi9cblxuXHQvKipcblx0ICogQ3J5cHRvSlMgY29yZSBjb21wb25lbnRzLlxuXHQgKi9cblx0dmFyIENyeXB0b0pTID0gQ3J5cHRvSlMgfHwgKGZ1bmN0aW9uIChNYXRoLCB1bmRlZmluZWQpIHtcblxuXHQgICAgdmFyIGNyeXB0bztcblxuXHQgICAgLy8gTmF0aXZlIGNyeXB0byBmcm9tIHdpbmRvdyAoQnJvd3Nlcilcblx0ICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuY3J5cHRvKSB7XG5cdCAgICAgICAgY3J5cHRvID0gd2luZG93LmNyeXB0bztcblx0ICAgIH1cblxuXHQgICAgLy8gTmF0aXZlIGNyeXB0byBpbiB3ZWIgd29ya2VyIChCcm93c2VyKVxuXHQgICAgaWYgKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyAmJiBzZWxmLmNyeXB0bykge1xuXHQgICAgICAgIGNyeXB0byA9IHNlbGYuY3J5cHRvO1xuXHQgICAgfVxuXG5cdCAgICAvLyBOYXRpdmUgY3J5cHRvIGZyb20gd29ya2VyXG5cdCAgICBpZiAodHlwZW9mIGdsb2JhbFRoaXMgIT09ICd1bmRlZmluZWQnICYmIGdsb2JhbFRoaXMuY3J5cHRvKSB7XG5cdCAgICAgICAgY3J5cHRvID0gZ2xvYmFsVGhpcy5jcnlwdG87XG5cdCAgICB9XG5cblx0ICAgIC8vIE5hdGl2ZSAoZXhwZXJpbWVudGFsIElFIDExKSBjcnlwdG8gZnJvbSB3aW5kb3cgKEJyb3dzZXIpXG5cdCAgICBpZiAoIWNyeXB0byAmJiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cubXNDcnlwdG8pIHtcblx0ICAgICAgICBjcnlwdG8gPSB3aW5kb3cubXNDcnlwdG87XG5cdCAgICB9XG5cblx0ICAgIC8vIE5hdGl2ZSBjcnlwdG8gZnJvbSBnbG9iYWwgKE5vZGVKUylcblx0ICAgIGlmICghY3J5cHRvICYmIHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnICYmIGdsb2JhbC5jcnlwdG8pIHtcblx0ICAgICAgICBjcnlwdG8gPSBnbG9iYWwuY3J5cHRvO1xuXHQgICAgfVxuXG5cdCAgICAvLyBOYXRpdmUgY3J5cHRvIGltcG9ydCB2aWEgcmVxdWlyZSAoTm9kZUpTKVxuXHQgICAgaWYgKCFjcnlwdG8gJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicpIHtcblx0ICAgICAgICB0cnkge1xuXHQgICAgICAgICAgICBjcnlwdG8gPSByZXF1aXJlKCdjcnlwdG8nKTtcblx0ICAgICAgICB9IGNhdGNoIChlcnIpIHt9XG5cdCAgICB9XG5cblx0ICAgIC8qXG5cdCAgICAgKiBDcnlwdG9ncmFwaGljYWxseSBzZWN1cmUgcHNldWRvcmFuZG9tIG51bWJlciBnZW5lcmF0b3Jcblx0ICAgICAqXG5cdCAgICAgKiBBcyBNYXRoLnJhbmRvbSgpIGlzIGNyeXB0b2dyYXBoaWNhbGx5IG5vdCBzYWZlIHRvIHVzZVxuXHQgICAgICovXG5cdCAgICB2YXIgY3J5cHRvU2VjdXJlUmFuZG9tSW50ID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIGlmIChjcnlwdG8pIHtcblx0ICAgICAgICAgICAgLy8gVXNlIGdldFJhbmRvbVZhbHVlcyBtZXRob2QgKEJyb3dzZXIpXG5cdCAgICAgICAgICAgIGlmICh0eXBlb2YgY3J5cHRvLmdldFJhbmRvbVZhbHVlcyA9PT0gJ2Z1bmN0aW9uJykge1xuXHQgICAgICAgICAgICAgICAgdHJ5IHtcblx0ICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDMyQXJyYXkoMSkpWzBdO1xuXHQgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7fVxuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gVXNlIHJhbmRvbUJ5dGVzIG1ldGhvZCAoTm9kZUpTKVxuXHQgICAgICAgICAgICBpZiAodHlwZW9mIGNyeXB0by5yYW5kb21CeXRlcyA9PT0gJ2Z1bmN0aW9uJykge1xuXHQgICAgICAgICAgICAgICAgdHJ5IHtcblx0ICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3J5cHRvLnJhbmRvbUJ5dGVzKDQpLnJlYWRJbnQzMkxFKCk7XG5cdCAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHt9XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05hdGl2ZSBjcnlwdG8gbW9kdWxlIGNvdWxkIG5vdCBiZSB1c2VkIHRvIGdldCBzZWN1cmUgcmFuZG9tIG51bWJlci4nKTtcblx0ICAgIH07XG5cblx0ICAgIC8qXG5cdCAgICAgKiBMb2NhbCBwb2x5ZmlsbCBvZiBPYmplY3QuY3JlYXRlXG5cblx0ICAgICAqL1xuXHQgICAgdmFyIGNyZWF0ZSA9IE9iamVjdC5jcmVhdGUgfHwgKGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICBmdW5jdGlvbiBGKCkge31cblxuXHQgICAgICAgIHJldHVybiBmdW5jdGlvbiAob2JqKSB7XG5cdCAgICAgICAgICAgIHZhciBzdWJ0eXBlO1xuXG5cdCAgICAgICAgICAgIEYucHJvdG90eXBlID0gb2JqO1xuXG5cdCAgICAgICAgICAgIHN1YnR5cGUgPSBuZXcgRigpO1xuXG5cdCAgICAgICAgICAgIEYucHJvdG90eXBlID0gbnVsbDtcblxuXHQgICAgICAgICAgICByZXR1cm4gc3VidHlwZTtcblx0ICAgICAgICB9O1xuXHQgICAgfSgpKTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBDcnlwdG9KUyBuYW1lc3BhY2UuXG5cdCAgICAgKi9cblx0ICAgIHZhciBDID0ge307XG5cblx0ICAgIC8qKlxuXHQgICAgICogTGlicmFyeSBuYW1lc3BhY2UuXG5cdCAgICAgKi9cblx0ICAgIHZhciBDX2xpYiA9IEMubGliID0ge307XG5cblx0ICAgIC8qKlxuXHQgICAgICogQmFzZSBvYmplY3QgZm9yIHByb3RvdHlwYWwgaW5oZXJpdGFuY2UuXG5cdCAgICAgKi9cblx0ICAgIHZhciBCYXNlID0gQ19saWIuQmFzZSA9IChmdW5jdGlvbiAoKSB7XG5cblxuXHQgICAgICAgIHJldHVybiB7XG5cdCAgICAgICAgICAgIC8qKlxuXHQgICAgICAgICAgICAgKiBDcmVhdGVzIGEgbmV3IG9iamVjdCB0aGF0IGluaGVyaXRzIGZyb20gdGhpcyBvYmplY3QuXG5cdCAgICAgICAgICAgICAqXG5cdCAgICAgICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvdmVycmlkZXMgUHJvcGVydGllcyB0byBjb3B5IGludG8gdGhlIG5ldyBvYmplY3QuXG5cdCAgICAgICAgICAgICAqXG5cdCAgICAgICAgICAgICAqIEByZXR1cm4ge09iamVjdH0gVGhlIG5ldyBvYmplY3QuXG5cdCAgICAgICAgICAgICAqXG5cdCAgICAgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgICAgICpcblx0ICAgICAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgICAgICpcblx0ICAgICAgICAgICAgICogICAgIHZhciBNeVR5cGUgPSBDcnlwdG9KUy5saWIuQmFzZS5leHRlbmQoe1xuXHQgICAgICAgICAgICAgKiAgICAgICAgIGZpZWxkOiAndmFsdWUnLFxuXHQgICAgICAgICAgICAgKlxuXHQgICAgICAgICAgICAgKiAgICAgICAgIG1ldGhvZDogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAgKiAgICAgICAgIH1cblx0ICAgICAgICAgICAgICogICAgIH0pO1xuXHQgICAgICAgICAgICAgKi9cblx0ICAgICAgICAgICAgZXh0ZW5kOiBmdW5jdGlvbiAob3ZlcnJpZGVzKSB7XG5cdCAgICAgICAgICAgICAgICAvLyBTcGF3blxuXHQgICAgICAgICAgICAgICAgdmFyIHN1YnR5cGUgPSBjcmVhdGUodGhpcyk7XG5cblx0ICAgICAgICAgICAgICAgIC8vIEF1Z21lbnRcblx0ICAgICAgICAgICAgICAgIGlmIChvdmVycmlkZXMpIHtcblx0ICAgICAgICAgICAgICAgICAgICBzdWJ0eXBlLm1peEluKG92ZXJyaWRlcyk7XG5cdCAgICAgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBkZWZhdWx0IGluaXRpYWxpemVyXG5cdCAgICAgICAgICAgICAgICBpZiAoIXN1YnR5cGUuaGFzT3duUHJvcGVydHkoJ2luaXQnKSB8fCB0aGlzLmluaXQgPT09IHN1YnR5cGUuaW5pdCkge1xuXHQgICAgICAgICAgICAgICAgICAgIHN1YnR5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgc3VidHlwZS4kc3VwZXIuaW5pdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXHQgICAgICAgICAgICAgICAgICAgIH07XG5cdCAgICAgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgICAgIC8vIEluaXRpYWxpemVyJ3MgcHJvdG90eXBlIGlzIHRoZSBzdWJ0eXBlIG9iamVjdFxuXHQgICAgICAgICAgICAgICAgc3VidHlwZS5pbml0LnByb3RvdHlwZSA9IHN1YnR5cGU7XG5cblx0ICAgICAgICAgICAgICAgIC8vIFJlZmVyZW5jZSBzdXBlcnR5cGVcblx0ICAgICAgICAgICAgICAgIHN1YnR5cGUuJHN1cGVyID0gdGhpcztcblxuXHQgICAgICAgICAgICAgICAgcmV0dXJuIHN1YnR5cGU7XG5cdCAgICAgICAgICAgIH0sXG5cblx0ICAgICAgICAgICAgLyoqXG5cdCAgICAgICAgICAgICAqIEV4dGVuZHMgdGhpcyBvYmplY3QgYW5kIHJ1bnMgdGhlIGluaXQgbWV0aG9kLlxuXHQgICAgICAgICAgICAgKiBBcmd1bWVudHMgdG8gY3JlYXRlKCkgd2lsbCBiZSBwYXNzZWQgdG8gaW5pdCgpLlxuXHQgICAgICAgICAgICAgKlxuXHQgICAgICAgICAgICAgKiBAcmV0dXJuIHtPYmplY3R9IFRoZSBuZXcgb2JqZWN0LlxuXHQgICAgICAgICAgICAgKlxuXHQgICAgICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICAgICAqXG5cdCAgICAgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICAgICAqXG5cdCAgICAgICAgICAgICAqICAgICB2YXIgaW5zdGFuY2UgPSBNeVR5cGUuY3JlYXRlKCk7XG5cdCAgICAgICAgICAgICAqL1xuXHQgICAgICAgICAgICBjcmVhdGU6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgICAgIHZhciBpbnN0YW5jZSA9IHRoaXMuZXh0ZW5kKCk7XG5cdCAgICAgICAgICAgICAgICBpbnN0YW5jZS5pbml0LmFwcGx5KGluc3RhbmNlLCBhcmd1bWVudHMpO1xuXG5cdCAgICAgICAgICAgICAgICByZXR1cm4gaW5zdGFuY2U7XG5cdCAgICAgICAgICAgIH0sXG5cblx0ICAgICAgICAgICAgLyoqXG5cdCAgICAgICAgICAgICAqIEluaXRpYWxpemVzIGEgbmV3bHkgY3JlYXRlZCBvYmplY3QuXG5cdCAgICAgICAgICAgICAqIE92ZXJyaWRlIHRoaXMgbWV0aG9kIHRvIGFkZCBzb21lIGxvZ2ljIHdoZW4geW91ciBvYmplY3RzIGFyZSBjcmVhdGVkLlxuXHQgICAgICAgICAgICAgKlxuXHQgICAgICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAgICAgKlxuXHQgICAgICAgICAgICAgKiAgICAgdmFyIE15VHlwZSA9IENyeXB0b0pTLmxpYi5CYXNlLmV4dGVuZCh7XG5cdCAgICAgICAgICAgICAqICAgICAgICAgaW5pdDogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAgKiAgICAgICAgICAgICAvLyAuLi5cblx0ICAgICAgICAgICAgICogICAgICAgICB9XG5cdCAgICAgICAgICAgICAqICAgICB9KTtcblx0ICAgICAgICAgICAgICovXG5cdCAgICAgICAgICAgIGluaXQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgfSxcblxuXHQgICAgICAgICAgICAvKipcblx0ICAgICAgICAgICAgICogQ29waWVzIHByb3BlcnRpZXMgaW50byB0aGlzIG9iamVjdC5cblx0ICAgICAgICAgICAgICpcblx0ICAgICAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IHByb3BlcnRpZXMgVGhlIHByb3BlcnRpZXMgdG8gbWl4IGluLlxuXHQgICAgICAgICAgICAgKlxuXHQgICAgICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAgICAgKlxuXHQgICAgICAgICAgICAgKiAgICAgTXlUeXBlLm1peEluKHtcblx0ICAgICAgICAgICAgICogICAgICAgICBmaWVsZDogJ3ZhbHVlJ1xuXHQgICAgICAgICAgICAgKiAgICAgfSk7XG5cdCAgICAgICAgICAgICAqL1xuXHQgICAgICAgICAgICBtaXhJbjogZnVuY3Rpb24gKHByb3BlcnRpZXMpIHtcblx0ICAgICAgICAgICAgICAgIGZvciAodmFyIHByb3BlcnR5TmFtZSBpbiBwcm9wZXJ0aWVzKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkocHJvcGVydHlOYW1lKSkge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB0aGlzW3Byb3BlcnR5TmFtZV0gPSBwcm9wZXJ0aWVzW3Byb3BlcnR5TmFtZV07XG5cdCAgICAgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgICAgICAvLyBJRSB3b24ndCBjb3B5IHRvU3RyaW5nIHVzaW5nIHRoZSBsb29wIGFib3ZlXG5cdCAgICAgICAgICAgICAgICBpZiAocHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eSgndG9TdHJpbmcnKSkge1xuXHQgICAgICAgICAgICAgICAgICAgIHRoaXMudG9TdHJpbmcgPSBwcm9wZXJ0aWVzLnRvU3RyaW5nO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9LFxuXG5cdCAgICAgICAgICAgIC8qKlxuXHQgICAgICAgICAgICAgKiBDcmVhdGVzIGEgY29weSBvZiB0aGlzIG9iamVjdC5cblx0ICAgICAgICAgICAgICpcblx0ICAgICAgICAgICAgICogQHJldHVybiB7T2JqZWN0fSBUaGUgY2xvbmUuXG5cdCAgICAgICAgICAgICAqXG5cdCAgICAgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICAgICAqXG5cdCAgICAgICAgICAgICAqICAgICB2YXIgY2xvbmUgPSBpbnN0YW5jZS5jbG9uZSgpO1xuXHQgICAgICAgICAgICAgKi9cblx0ICAgICAgICAgICAgY2xvbmU6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmluaXQucHJvdG90eXBlLmV4dGVuZCh0aGlzKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH07XG5cdCAgICB9KCkpO1xuXG5cdCAgICAvKipcblx0ICAgICAqIEFuIGFycmF5IG9mIDMyLWJpdCB3b3Jkcy5cblx0ICAgICAqXG5cdCAgICAgKiBAcHJvcGVydHkge0FycmF5fSB3b3JkcyBUaGUgYXJyYXkgb2YgMzItYml0IHdvcmRzLlxuXHQgICAgICogQHByb3BlcnR5IHtudW1iZXJ9IHNpZ0J5dGVzIFRoZSBudW1iZXIgb2Ygc2lnbmlmaWNhbnQgYnl0ZXMgaW4gdGhpcyB3b3JkIGFycmF5LlxuXHQgICAgICovXG5cdCAgICB2YXIgV29yZEFycmF5ID0gQ19saWIuV29yZEFycmF5ID0gQmFzZS5leHRlbmQoe1xuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIEluaXRpYWxpemVzIGEgbmV3bHkgY3JlYXRlZCB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtBcnJheX0gd29yZHMgKE9wdGlvbmFsKSBBbiBhcnJheSBvZiAzMi1iaXQgd29yZHMuXG5cdCAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IHNpZ0J5dGVzIChPcHRpb25hbCkgVGhlIG51bWJlciBvZiBzaWduaWZpY2FudCBieXRlcyBpbiB0aGUgd29yZHMuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciB3b3JkQXJyYXkgPSBDcnlwdG9KUy5saWIuV29yZEFycmF5LmNyZWF0ZSgpO1xuXHQgICAgICAgICAqICAgICB2YXIgd29yZEFycmF5ID0gQ3J5cHRvSlMubGliLldvcmRBcnJheS5jcmVhdGUoWzB4MDAwMTAyMDMsIDB4MDQwNTA2MDddKTtcblx0ICAgICAgICAgKiAgICAgdmFyIHdvcmRBcnJheSA9IENyeXB0b0pTLmxpYi5Xb3JkQXJyYXkuY3JlYXRlKFsweDAwMDEwMjAzLCAweDA0MDUwNjA3XSwgNik7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgaW5pdDogZnVuY3Rpb24gKHdvcmRzLCBzaWdCeXRlcykge1xuXHQgICAgICAgICAgICB3b3JkcyA9IHRoaXMud29yZHMgPSB3b3JkcyB8fCBbXTtcblxuXHQgICAgICAgICAgICBpZiAoc2lnQnl0ZXMgIT0gdW5kZWZpbmVkKSB7XG5cdCAgICAgICAgICAgICAgICB0aGlzLnNpZ0J5dGVzID0gc2lnQnl0ZXM7XG5cdCAgICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgICAgICB0aGlzLnNpZ0J5dGVzID0gd29yZHMubGVuZ3RoICogNDtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb252ZXJ0cyB0aGlzIHdvcmQgYXJyYXkgdG8gYSBzdHJpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge0VuY29kZXJ9IGVuY29kZXIgKE9wdGlvbmFsKSBUaGUgZW5jb2Rpbmcgc3RyYXRlZ3kgdG8gdXNlLiBEZWZhdWx0OiBDcnlwdG9KUy5lbmMuSGV4XG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBzdHJpbmdpZmllZCB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgc3RyaW5nID0gd29yZEFycmF5ICsgJyc7XG5cdCAgICAgICAgICogICAgIHZhciBzdHJpbmcgPSB3b3JkQXJyYXkudG9TdHJpbmcoKTtcblx0ICAgICAgICAgKiAgICAgdmFyIHN0cmluZyA9IHdvcmRBcnJheS50b1N0cmluZyhDcnlwdG9KUy5lbmMuVXRmOCk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgdG9TdHJpbmc6IGZ1bmN0aW9uIChlbmNvZGVyKSB7XG5cdCAgICAgICAgICAgIHJldHVybiAoZW5jb2RlciB8fCBIZXgpLnN0cmluZ2lmeSh0aGlzKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29uY2F0ZW5hdGVzIGEgd29yZCBhcnJheSB0byB0aGlzIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge1dvcmRBcnJheX0gd29yZEFycmF5IFRoZSB3b3JkIGFycmF5IHRvIGFwcGVuZC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhpcyB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB3b3JkQXJyYXkxLmNvbmNhdCh3b3JkQXJyYXkyKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBjb25jYXQ6IGZ1bmN0aW9uICh3b3JkQXJyYXkpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciB0aGlzV29yZHMgPSB0aGlzLndvcmRzO1xuXHQgICAgICAgICAgICB2YXIgdGhhdFdvcmRzID0gd29yZEFycmF5LndvcmRzO1xuXHQgICAgICAgICAgICB2YXIgdGhpc1NpZ0J5dGVzID0gdGhpcy5zaWdCeXRlcztcblx0ICAgICAgICAgICAgdmFyIHRoYXRTaWdCeXRlcyA9IHdvcmRBcnJheS5zaWdCeXRlcztcblxuXHQgICAgICAgICAgICAvLyBDbGFtcCBleGNlc3MgYml0c1xuXHQgICAgICAgICAgICB0aGlzLmNsYW1wKCk7XG5cblx0ICAgICAgICAgICAgLy8gQ29uY2F0XG5cdCAgICAgICAgICAgIGlmICh0aGlzU2lnQnl0ZXMgJSA0KSB7XG5cdCAgICAgICAgICAgICAgICAvLyBDb3B5IG9uZSBieXRlIGF0IGEgdGltZVxuXHQgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGF0U2lnQnl0ZXM7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciB0aGF0Qnl0ZSA9ICh0aGF0V29yZHNbaSA+Pj4gMl0gPj4+ICgyNCAtIChpICUgNCkgKiA4KSkgJiAweGZmO1xuXHQgICAgICAgICAgICAgICAgICAgIHRoaXNXb3Jkc1sodGhpc1NpZ0J5dGVzICsgaSkgPj4+IDJdIHw9IHRoYXRCeXRlIDw8ICgyNCAtICgodGhpc1NpZ0J5dGVzICsgaSkgJSA0KSAqIDgpO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgLy8gQ29weSBvbmUgd29yZCBhdCBhIHRpbWVcblx0ICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdGhhdFNpZ0J5dGVzOyBqICs9IDQpIHtcblx0ICAgICAgICAgICAgICAgICAgICB0aGlzV29yZHNbKHRoaXNTaWdCeXRlcyArIGopID4+PiAyXSA9IHRoYXRXb3Jkc1tqID4+PiAyXTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB0aGlzLnNpZ0J5dGVzICs9IHRoYXRTaWdCeXRlcztcblxuXHQgICAgICAgICAgICAvLyBDaGFpbmFibGVcblx0ICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIFJlbW92ZXMgaW5zaWduaWZpY2FudCBiaXRzLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB3b3JkQXJyYXkuY2xhbXAoKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBjbGFtcDogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIHdvcmRzID0gdGhpcy53b3Jkcztcblx0ICAgICAgICAgICAgdmFyIHNpZ0J5dGVzID0gdGhpcy5zaWdCeXRlcztcblxuXHQgICAgICAgICAgICAvLyBDbGFtcFxuXHQgICAgICAgICAgICB3b3Jkc1tzaWdCeXRlcyA+Pj4gMl0gJj0gMHhmZmZmZmZmZiA8PCAoMzIgLSAoc2lnQnl0ZXMgJSA0KSAqIDgpO1xuXHQgICAgICAgICAgICB3b3Jkcy5sZW5ndGggPSBNYXRoLmNlaWwoc2lnQnl0ZXMgLyA0KTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ3JlYXRlcyBhIGNvcHkgb2YgdGhpcyB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgY2xvbmUuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBjbG9uZSA9IHdvcmRBcnJheS5jbG9uZSgpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGNsb25lOiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIHZhciBjbG9uZSA9IEJhc2UuY2xvbmUuY2FsbCh0aGlzKTtcblx0ICAgICAgICAgICAgY2xvbmUud29yZHMgPSB0aGlzLndvcmRzLnNsaWNlKDApO1xuXG5cdCAgICAgICAgICAgIHJldHVybiBjbG9uZTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ3JlYXRlcyBhIHdvcmQgYXJyYXkgZmlsbGVkIHdpdGggcmFuZG9tIGJ5dGVzLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IG5CeXRlcyBUaGUgbnVtYmVyIG9mIHJhbmRvbSBieXRlcyB0byBnZW5lcmF0ZS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIHJhbmRvbSB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgd29yZEFycmF5ID0gQ3J5cHRvSlMubGliLldvcmRBcnJheS5yYW5kb20oMTYpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIHJhbmRvbTogZnVuY3Rpb24gKG5CeXRlcykge1xuXHQgICAgICAgICAgICB2YXIgd29yZHMgPSBbXTtcblxuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5CeXRlczsgaSArPSA0KSB7XG5cdCAgICAgICAgICAgICAgICB3b3Jkcy5wdXNoKGNyeXB0b1NlY3VyZVJhbmRvbUludCgpKTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIHJldHVybiBuZXcgV29yZEFycmF5LmluaXQod29yZHMsIG5CeXRlcyk7XG5cdCAgICAgICAgfVxuXHQgICAgfSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogRW5jb2RlciBuYW1lc3BhY2UuXG5cdCAgICAgKi9cblx0ICAgIHZhciBDX2VuYyA9IEMuZW5jID0ge307XG5cblx0ICAgIC8qKlxuXHQgICAgICogSGV4IGVuY29kaW5nIHN0cmF0ZWd5LlxuXHQgICAgICovXG5cdCAgICB2YXIgSGV4ID0gQ19lbmMuSGV4ID0ge1xuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbnZlcnRzIGEgd29yZCBhcnJheSB0byBhIGhleCBzdHJpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge1dvcmRBcnJheX0gd29yZEFycmF5IFRoZSB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgaGV4IHN0cmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIGhleFN0cmluZyA9IENyeXB0b0pTLmVuYy5IZXguc3RyaW5naWZ5KHdvcmRBcnJheSk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgc3RyaW5naWZ5OiBmdW5jdGlvbiAod29yZEFycmF5KSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgd29yZHMgPSB3b3JkQXJyYXkud29yZHM7XG5cdCAgICAgICAgICAgIHZhciBzaWdCeXRlcyA9IHdvcmRBcnJheS5zaWdCeXRlcztcblxuXHQgICAgICAgICAgICAvLyBDb252ZXJ0XG5cdCAgICAgICAgICAgIHZhciBoZXhDaGFycyA9IFtdO1xuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpZ0J5dGVzOyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIHZhciBiaXRlID0gKHdvcmRzW2kgPj4+IDJdID4+PiAoMjQgLSAoaSAlIDQpICogOCkpICYgMHhmZjtcblx0ICAgICAgICAgICAgICAgIGhleENoYXJzLnB1c2goKGJpdGUgPj4+IDQpLnRvU3RyaW5nKDE2KSk7XG5cdCAgICAgICAgICAgICAgICBoZXhDaGFycy5wdXNoKChiaXRlICYgMHgwZikudG9TdHJpbmcoMTYpKTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIHJldHVybiBoZXhDaGFycy5qb2luKCcnKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29udmVydHMgYSBoZXggc3RyaW5nIHRvIGEgd29yZCBhcnJheS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBoZXhTdHIgVGhlIGhleCBzdHJpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgd29yZEFycmF5ID0gQ3J5cHRvSlMuZW5jLkhleC5wYXJzZShoZXhTdHJpbmcpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIHBhcnNlOiBmdW5jdGlvbiAoaGV4U3RyKSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0XG5cdCAgICAgICAgICAgIHZhciBoZXhTdHJMZW5ndGggPSBoZXhTdHIubGVuZ3RoO1xuXG5cdCAgICAgICAgICAgIC8vIENvbnZlcnRcblx0ICAgICAgICAgICAgdmFyIHdvcmRzID0gW107XG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaGV4U3RyTGVuZ3RoOyBpICs9IDIpIHtcblx0ICAgICAgICAgICAgICAgIHdvcmRzW2kgPj4+IDNdIHw9IHBhcnNlSW50KGhleFN0ci5zdWJzdHIoaSwgMiksIDE2KSA8PCAoMjQgLSAoaSAlIDgpICogNCk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICByZXR1cm4gbmV3IFdvcmRBcnJheS5pbml0KHdvcmRzLCBoZXhTdHJMZW5ndGggLyAyKTtcblx0ICAgICAgICB9XG5cdCAgICB9O1xuXG5cdCAgICAvKipcblx0ICAgICAqIExhdGluMSBlbmNvZGluZyBzdHJhdGVneS5cblx0ICAgICAqL1xuXHQgICAgdmFyIExhdGluMSA9IENfZW5jLkxhdGluMSA9IHtcblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb252ZXJ0cyBhIHdvcmQgYXJyYXkgdG8gYSBMYXRpbjEgc3RyaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtXb3JkQXJyYXl9IHdvcmRBcnJheSBUaGUgd29yZCBhcnJheS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIExhdGluMSBzdHJpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBsYXRpbjFTdHJpbmcgPSBDcnlwdG9KUy5lbmMuTGF0aW4xLnN0cmluZ2lmeSh3b3JkQXJyYXkpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIHN0cmluZ2lmeTogZnVuY3Rpb24gKHdvcmRBcnJheSkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIHdvcmRzID0gd29yZEFycmF5LndvcmRzO1xuXHQgICAgICAgICAgICB2YXIgc2lnQnl0ZXMgPSB3b3JkQXJyYXkuc2lnQnl0ZXM7XG5cblx0ICAgICAgICAgICAgLy8gQ29udmVydFxuXHQgICAgICAgICAgICB2YXIgbGF0aW4xQ2hhcnMgPSBbXTtcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaWdCeXRlczsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICB2YXIgYml0ZSA9ICh3b3Jkc1tpID4+PiAyXSA+Pj4gKDI0IC0gKGkgJSA0KSAqIDgpKSAmIDB4ZmY7XG5cdCAgICAgICAgICAgICAgICBsYXRpbjFDaGFycy5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYml0ZSkpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgcmV0dXJuIGxhdGluMUNoYXJzLmpvaW4oJycpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb252ZXJ0cyBhIExhdGluMSBzdHJpbmcgdG8gYSB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGxhdGluMVN0ciBUaGUgTGF0aW4xIHN0cmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciB3b3JkQXJyYXkgPSBDcnlwdG9KUy5lbmMuTGF0aW4xLnBhcnNlKGxhdGluMVN0cmluZyk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgcGFyc2U6IGZ1bmN0aW9uIChsYXRpbjFTdHIpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRcblx0ICAgICAgICAgICAgdmFyIGxhdGluMVN0ckxlbmd0aCA9IGxhdGluMVN0ci5sZW5ndGg7XG5cblx0ICAgICAgICAgICAgLy8gQ29udmVydFxuXHQgICAgICAgICAgICB2YXIgd29yZHMgPSBbXTtcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXRpbjFTdHJMZW5ndGg7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgd29yZHNbaSA+Pj4gMl0gfD0gKGxhdGluMVN0ci5jaGFyQ29kZUF0KGkpICYgMHhmZikgPDwgKDI0IC0gKGkgJSA0KSAqIDgpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgcmV0dXJuIG5ldyBXb3JkQXJyYXkuaW5pdCh3b3JkcywgbGF0aW4xU3RyTGVuZ3RoKTtcblx0ICAgICAgICB9XG5cdCAgICB9O1xuXG5cdCAgICAvKipcblx0ICAgICAqIFVURi04IGVuY29kaW5nIHN0cmF0ZWd5LlxuXHQgICAgICovXG5cdCAgICB2YXIgVXRmOCA9IENfZW5jLlV0ZjggPSB7XG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29udmVydHMgYSB3b3JkIGFycmF5IHRvIGEgVVRGLTggc3RyaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtXb3JkQXJyYXl9IHdvcmRBcnJheSBUaGUgd29yZCBhcnJheS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIFVURi04IHN0cmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIHV0ZjhTdHJpbmcgPSBDcnlwdG9KUy5lbmMuVXRmOC5zdHJpbmdpZnkod29yZEFycmF5KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBzdHJpbmdpZnk6IGZ1bmN0aW9uICh3b3JkQXJyYXkpIHtcblx0ICAgICAgICAgICAgdHJ5IHtcblx0ICAgICAgICAgICAgICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoZXNjYXBlKExhdGluMS5zdHJpbmdpZnkod29yZEFycmF5KSkpO1xuXHQgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG5cdCAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01hbGZvcm1lZCBVVEYtOCBkYXRhJyk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29udmVydHMgYSBVVEYtOCBzdHJpbmcgdG8gYSB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHV0ZjhTdHIgVGhlIFVURi04IHN0cmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciB3b3JkQXJyYXkgPSBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZSh1dGY4U3RyaW5nKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBwYXJzZTogZnVuY3Rpb24gKHV0ZjhTdHIpIHtcblx0ICAgICAgICAgICAgcmV0dXJuIExhdGluMS5wYXJzZSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQodXRmOFN0cikpKTtcblx0ICAgICAgICB9XG5cdCAgICB9O1xuXG5cdCAgICAvKipcblx0ICAgICAqIEFic3RyYWN0IGJ1ZmZlcmVkIGJsb2NrIGFsZ29yaXRobSB0ZW1wbGF0ZS5cblx0ICAgICAqXG5cdCAgICAgKiBUaGUgcHJvcGVydHkgYmxvY2tTaXplIG11c3QgYmUgaW1wbGVtZW50ZWQgaW4gYSBjb25jcmV0ZSBzdWJ0eXBlLlxuXHQgICAgICpcblx0ICAgICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBfbWluQnVmZmVyU2l6ZSBUaGUgbnVtYmVyIG9mIGJsb2NrcyB0aGF0IHNob3VsZCBiZSBrZXB0IHVucHJvY2Vzc2VkIGluIHRoZSBidWZmZXIuIERlZmF1bHQ6IDBcblx0ICAgICAqL1xuXHQgICAgdmFyIEJ1ZmZlcmVkQmxvY2tBbGdvcml0aG0gPSBDX2xpYi5CdWZmZXJlZEJsb2NrQWxnb3JpdGhtID0gQmFzZS5leHRlbmQoe1xuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIFJlc2V0cyB0aGlzIGJsb2NrIGFsZ29yaXRobSdzIGRhdGEgYnVmZmVyIHRvIGl0cyBpbml0aWFsIHN0YXRlLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICBidWZmZXJlZEJsb2NrQWxnb3JpdGhtLnJlc2V0KCk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgcmVzZXQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgLy8gSW5pdGlhbCB2YWx1ZXNcblx0ICAgICAgICAgICAgdGhpcy5fZGF0YSA9IG5ldyBXb3JkQXJyYXkuaW5pdCgpO1xuXHQgICAgICAgICAgICB0aGlzLl9uRGF0YUJ5dGVzID0gMDtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQWRkcyBuZXcgZGF0YSB0byB0aGlzIGJsb2NrIGFsZ29yaXRobSdzIGJ1ZmZlci5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gZGF0YSBUaGUgZGF0YSB0byBhcHBlbmQuIFN0cmluZ3MgYXJlIGNvbnZlcnRlZCB0byBhIFdvcmRBcnJheSB1c2luZyBVVEYtOC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgYnVmZmVyZWRCbG9ja0FsZ29yaXRobS5fYXBwZW5kKCdkYXRhJyk7XG5cdCAgICAgICAgICogICAgIGJ1ZmZlcmVkQmxvY2tBbGdvcml0aG0uX2FwcGVuZCh3b3JkQXJyYXkpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIF9hcHBlbmQ6IGZ1bmN0aW9uIChkYXRhKSB7XG5cdCAgICAgICAgICAgIC8vIENvbnZlcnQgc3RyaW5nIHRvIFdvcmRBcnJheSwgZWxzZSBhc3N1bWUgV29yZEFycmF5IGFscmVhZHlcblx0ICAgICAgICAgICAgaWYgKHR5cGVvZiBkYXRhID09ICdzdHJpbmcnKSB7XG5cdCAgICAgICAgICAgICAgICBkYXRhID0gVXRmOC5wYXJzZShkYXRhKTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIEFwcGVuZFxuXHQgICAgICAgICAgICB0aGlzLl9kYXRhLmNvbmNhdChkYXRhKTtcblx0ICAgICAgICAgICAgdGhpcy5fbkRhdGFCeXRlcyArPSBkYXRhLnNpZ0J5dGVzO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBQcm9jZXNzZXMgYXZhaWxhYmxlIGRhdGEgYmxvY2tzLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogVGhpcyBtZXRob2QgaW52b2tlcyBfZG9Qcm9jZXNzQmxvY2sob2Zmc2V0KSwgd2hpY2ggbXVzdCBiZSBpbXBsZW1lbnRlZCBieSBhIGNvbmNyZXRlIHN1YnR5cGUuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGRvRmx1c2ggV2hldGhlciBhbGwgYmxvY2tzIGFuZCBwYXJ0aWFsIGJsb2NrcyBzaG91bGQgYmUgcHJvY2Vzc2VkLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgcHJvY2Vzc2VkIGRhdGEuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBwcm9jZXNzZWREYXRhID0gYnVmZmVyZWRCbG9ja0FsZ29yaXRobS5fcHJvY2VzcygpO1xuXHQgICAgICAgICAqICAgICB2YXIgcHJvY2Vzc2VkRGF0YSA9IGJ1ZmZlcmVkQmxvY2tBbGdvcml0aG0uX3Byb2Nlc3MoISEnZmx1c2gnKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBfcHJvY2VzczogZnVuY3Rpb24gKGRvRmx1c2gpIHtcblx0ICAgICAgICAgICAgdmFyIHByb2Nlc3NlZFdvcmRzO1xuXG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgZGF0YSA9IHRoaXMuX2RhdGE7XG5cdCAgICAgICAgICAgIHZhciBkYXRhV29yZHMgPSBkYXRhLndvcmRzO1xuXHQgICAgICAgICAgICB2YXIgZGF0YVNpZ0J5dGVzID0gZGF0YS5zaWdCeXRlcztcblx0ICAgICAgICAgICAgdmFyIGJsb2NrU2l6ZSA9IHRoaXMuYmxvY2tTaXplO1xuXHQgICAgICAgICAgICB2YXIgYmxvY2tTaXplQnl0ZXMgPSBibG9ja1NpemUgKiA0O1xuXG5cdCAgICAgICAgICAgIC8vIENvdW50IGJsb2NrcyByZWFkeVxuXHQgICAgICAgICAgICB2YXIgbkJsb2Nrc1JlYWR5ID0gZGF0YVNpZ0J5dGVzIC8gYmxvY2tTaXplQnl0ZXM7XG5cdCAgICAgICAgICAgIGlmIChkb0ZsdXNoKSB7XG5cdCAgICAgICAgICAgICAgICAvLyBSb3VuZCB1cCB0byBpbmNsdWRlIHBhcnRpYWwgYmxvY2tzXG5cdCAgICAgICAgICAgICAgICBuQmxvY2tzUmVhZHkgPSBNYXRoLmNlaWwobkJsb2Nrc1JlYWR5KTtcblx0ICAgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgICAgIC8vIFJvdW5kIGRvd24gdG8gaW5jbHVkZSBvbmx5IGZ1bGwgYmxvY2tzLFxuXHQgICAgICAgICAgICAgICAgLy8gbGVzcyB0aGUgbnVtYmVyIG9mIGJsb2NrcyB0aGF0IG11c3QgcmVtYWluIGluIHRoZSBidWZmZXJcblx0ICAgICAgICAgICAgICAgIG5CbG9ja3NSZWFkeSA9IE1hdGgubWF4KChuQmxvY2tzUmVhZHkgfCAwKSAtIHRoaXMuX21pbkJ1ZmZlclNpemUsIDApO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gQ291bnQgd29yZHMgcmVhZHlcblx0ICAgICAgICAgICAgdmFyIG5Xb3Jkc1JlYWR5ID0gbkJsb2Nrc1JlYWR5ICogYmxvY2tTaXplO1xuXG5cdCAgICAgICAgICAgIC8vIENvdW50IGJ5dGVzIHJlYWR5XG5cdCAgICAgICAgICAgIHZhciBuQnl0ZXNSZWFkeSA9IE1hdGgubWluKG5Xb3Jkc1JlYWR5ICogNCwgZGF0YVNpZ0J5dGVzKTtcblxuXHQgICAgICAgICAgICAvLyBQcm9jZXNzIGJsb2Nrc1xuXHQgICAgICAgICAgICBpZiAobldvcmRzUmVhZHkpIHtcblx0ICAgICAgICAgICAgICAgIGZvciAodmFyIG9mZnNldCA9IDA7IG9mZnNldCA8IG5Xb3Jkc1JlYWR5OyBvZmZzZXQgKz0gYmxvY2tTaXplKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgLy8gUGVyZm9ybSBjb25jcmV0ZS1hbGdvcml0aG0gbG9naWNcblx0ICAgICAgICAgICAgICAgICAgICB0aGlzLl9kb1Byb2Nlc3NCbG9jayhkYXRhV29yZHMsIG9mZnNldCk7XG5cdCAgICAgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBwcm9jZXNzZWQgd29yZHNcblx0ICAgICAgICAgICAgICAgIHByb2Nlc3NlZFdvcmRzID0gZGF0YVdvcmRzLnNwbGljZSgwLCBuV29yZHNSZWFkeSk7XG5cdCAgICAgICAgICAgICAgICBkYXRhLnNpZ0J5dGVzIC09IG5CeXRlc1JlYWR5O1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gUmV0dXJuIHByb2Nlc3NlZCB3b3Jkc1xuXHQgICAgICAgICAgICByZXR1cm4gbmV3IFdvcmRBcnJheS5pbml0KHByb2Nlc3NlZFdvcmRzLCBuQnl0ZXNSZWFkeSk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENyZWF0ZXMgYSBjb3B5IG9mIHRoaXMgb2JqZWN0LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7T2JqZWN0fSBUaGUgY2xvbmUuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBjbG9uZSA9IGJ1ZmZlcmVkQmxvY2tBbGdvcml0aG0uY2xvbmUoKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBjbG9uZTogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICB2YXIgY2xvbmUgPSBCYXNlLmNsb25lLmNhbGwodGhpcyk7XG5cdCAgICAgICAgICAgIGNsb25lLl9kYXRhID0gdGhpcy5fZGF0YS5jbG9uZSgpO1xuXG5cdCAgICAgICAgICAgIHJldHVybiBjbG9uZTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgX21pbkJ1ZmZlclNpemU6IDBcblx0ICAgIH0pO1xuXG5cdCAgICAvKipcblx0ICAgICAqIEFic3RyYWN0IGhhc2hlciB0ZW1wbGF0ZS5cblx0ICAgICAqXG5cdCAgICAgKiBAcHJvcGVydHkge251bWJlcn0gYmxvY2tTaXplIFRoZSBudW1iZXIgb2YgMzItYml0IHdvcmRzIHRoaXMgaGFzaGVyIG9wZXJhdGVzIG9uLiBEZWZhdWx0OiAxNiAoNTEyIGJpdHMpXG5cdCAgICAgKi9cblx0ICAgIHZhciBIYXNoZXIgPSBDX2xpYi5IYXNoZXIgPSBCdWZmZXJlZEJsb2NrQWxnb3JpdGhtLmV4dGVuZCh7XG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29uZmlndXJhdGlvbiBvcHRpb25zLlxuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGNmZzogQmFzZS5leHRlbmQoKSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIEluaXRpYWxpemVzIGEgbmV3bHkgY3JlYXRlZCBoYXNoZXIuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIChPcHRpb25hbCkgVGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byB1c2UgZm9yIHRoaXMgaGFzaCBjb21wdXRhdGlvbi5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIGhhc2hlciA9IENyeXB0b0pTLmFsZ28uU0hBMjU2LmNyZWF0ZSgpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGluaXQ6IGZ1bmN0aW9uIChjZmcpIHtcblx0ICAgICAgICAgICAgLy8gQXBwbHkgY29uZmlnIGRlZmF1bHRzXG5cdCAgICAgICAgICAgIHRoaXMuY2ZnID0gdGhpcy5jZmcuZXh0ZW5kKGNmZyk7XG5cblx0ICAgICAgICAgICAgLy8gU2V0IGluaXRpYWwgdmFsdWVzXG5cdCAgICAgICAgICAgIHRoaXMucmVzZXQoKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogUmVzZXRzIHRoaXMgaGFzaGVyIHRvIGl0cyBpbml0aWFsIHN0YXRlLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICBoYXNoZXIucmVzZXQoKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICByZXNldDogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAvLyBSZXNldCBkYXRhIGJ1ZmZlclxuXHQgICAgICAgICAgICBCdWZmZXJlZEJsb2NrQWxnb3JpdGhtLnJlc2V0LmNhbGwodGhpcyk7XG5cblx0ICAgICAgICAgICAgLy8gUGVyZm9ybSBjb25jcmV0ZS1oYXNoZXIgbG9naWNcblx0ICAgICAgICAgICAgdGhpcy5fZG9SZXNldCgpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBVcGRhdGVzIHRoaXMgaGFzaGVyIHdpdGggYSBtZXNzYWdlLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBtZXNzYWdlVXBkYXRlIFRoZSBtZXNzYWdlIHRvIGFwcGVuZC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge0hhc2hlcn0gVGhpcyBoYXNoZXIuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIGhhc2hlci51cGRhdGUoJ21lc3NhZ2UnKTtcblx0ICAgICAgICAgKiAgICAgaGFzaGVyLnVwZGF0ZSh3b3JkQXJyYXkpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIHVwZGF0ZTogZnVuY3Rpb24gKG1lc3NhZ2VVcGRhdGUpIHtcblx0ICAgICAgICAgICAgLy8gQXBwZW5kXG5cdCAgICAgICAgICAgIHRoaXMuX2FwcGVuZChtZXNzYWdlVXBkYXRlKTtcblxuXHQgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGhhc2hcblx0ICAgICAgICAgICAgdGhpcy5fcHJvY2VzcygpO1xuXG5cdCAgICAgICAgICAgIC8vIENoYWluYWJsZVxuXHQgICAgICAgICAgICByZXR1cm4gdGhpcztcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogRmluYWxpemVzIHRoZSBoYXNoIGNvbXB1dGF0aW9uLlxuXHQgICAgICAgICAqIE5vdGUgdGhhdCB0aGUgZmluYWxpemUgb3BlcmF0aW9uIGlzIGVmZmVjdGl2ZWx5IGEgZGVzdHJ1Y3RpdmUsIHJlYWQtb25jZSBvcGVyYXRpb24uXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IG1lc3NhZ2VVcGRhdGUgKE9wdGlvbmFsKSBBIGZpbmFsIG1lc3NhZ2UgdXBkYXRlLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgaGFzaC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIGhhc2ggPSBoYXNoZXIuZmluYWxpemUoKTtcblx0ICAgICAgICAgKiAgICAgdmFyIGhhc2ggPSBoYXNoZXIuZmluYWxpemUoJ21lc3NhZ2UnKTtcblx0ICAgICAgICAgKiAgICAgdmFyIGhhc2ggPSBoYXNoZXIuZmluYWxpemUod29yZEFycmF5KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBmaW5hbGl6ZTogZnVuY3Rpb24gKG1lc3NhZ2VVcGRhdGUpIHtcblx0ICAgICAgICAgICAgLy8gRmluYWwgbWVzc2FnZSB1cGRhdGVcblx0ICAgICAgICAgICAgaWYgKG1lc3NhZ2VVcGRhdGUpIHtcblx0ICAgICAgICAgICAgICAgIHRoaXMuX2FwcGVuZChtZXNzYWdlVXBkYXRlKTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIFBlcmZvcm0gY29uY3JldGUtaGFzaGVyIGxvZ2ljXG5cdCAgICAgICAgICAgIHZhciBoYXNoID0gdGhpcy5fZG9GaW5hbGl6ZSgpO1xuXG5cdCAgICAgICAgICAgIHJldHVybiBoYXNoO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBibG9ja1NpemU6IDUxMi8zMixcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENyZWF0ZXMgYSBzaG9ydGN1dCBmdW5jdGlvbiB0byBhIGhhc2hlcidzIG9iamVjdCBpbnRlcmZhY2UuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge0hhc2hlcn0gaGFzaGVyIFRoZSBoYXNoZXIgdG8gY3JlYXRlIGEgaGVscGVyIGZvci5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge0Z1bmN0aW9ufSBUaGUgc2hvcnRjdXQgZnVuY3Rpb24uXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBTSEEyNTYgPSBDcnlwdG9KUy5saWIuSGFzaGVyLl9jcmVhdGVIZWxwZXIoQ3J5cHRvSlMuYWxnby5TSEEyNTYpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIF9jcmVhdGVIZWxwZXI6IGZ1bmN0aW9uIChoYXNoZXIpIHtcblx0ICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChtZXNzYWdlLCBjZmcpIHtcblx0ICAgICAgICAgICAgICAgIHJldHVybiBuZXcgaGFzaGVyLmluaXQoY2ZnKS5maW5hbGl6ZShtZXNzYWdlKTtcblx0ICAgICAgICAgICAgfTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ3JlYXRlcyBhIHNob3J0Y3V0IGZ1bmN0aW9uIHRvIHRoZSBITUFDJ3Mgb2JqZWN0IGludGVyZmFjZS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7SGFzaGVyfSBoYXNoZXIgVGhlIGhhc2hlciB0byB1c2UgaW4gdGhpcyBITUFDIGhlbHBlci5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge0Z1bmN0aW9ufSBUaGUgc2hvcnRjdXQgZnVuY3Rpb24uXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBIbWFjU0hBMjU2ID0gQ3J5cHRvSlMubGliLkhhc2hlci5fY3JlYXRlSG1hY0hlbHBlcihDcnlwdG9KUy5hbGdvLlNIQTI1Nik7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgX2NyZWF0ZUhtYWNIZWxwZXI6IGZ1bmN0aW9uIChoYXNoZXIpIHtcblx0ICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChtZXNzYWdlLCBrZXkpIHtcblx0ICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ19hbGdvLkhNQUMuaW5pdChoYXNoZXIsIGtleSkuZmluYWxpemUobWVzc2FnZSk7XG5cdCAgICAgICAgICAgIH07XG5cdCAgICAgICAgfVxuXHQgICAgfSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogQWxnb3JpdGhtIG5hbWVzcGFjZS5cblx0ICAgICAqL1xuXHQgICAgdmFyIENfYWxnbyA9IEMuYWxnbyA9IHt9O1xuXG5cdCAgICByZXR1cm4gQztcblx0fShNYXRoKSk7XG5cblxuXHRyZXR1cm4gQ3J5cHRvSlM7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5KSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdChmdW5jdGlvbiAoKSB7XG5cdCAgICAvLyBTaG9ydGN1dHNcblx0ICAgIHZhciBDID0gQ3J5cHRvSlM7XG5cdCAgICB2YXIgQ19saWIgPSBDLmxpYjtcblx0ICAgIHZhciBXb3JkQXJyYXkgPSBDX2xpYi5Xb3JkQXJyYXk7XG5cdCAgICB2YXIgQ19lbmMgPSBDLmVuYztcblxuXHQgICAgLyoqXG5cdCAgICAgKiBCYXNlNjQgZW5jb2Rpbmcgc3RyYXRlZ3kuXG5cdCAgICAgKi9cblx0ICAgIHZhciBCYXNlNjQgPSBDX2VuYy5CYXNlNjQgPSB7XG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29udmVydHMgYSB3b3JkIGFycmF5IHRvIGEgQmFzZTY0IHN0cmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fSB3b3JkQXJyYXkgVGhlIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBCYXNlNjQgc3RyaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgYmFzZTY0U3RyaW5nID0gQ3J5cHRvSlMuZW5jLkJhc2U2NC5zdHJpbmdpZnkod29yZEFycmF5KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBzdHJpbmdpZnk6IGZ1bmN0aW9uICh3b3JkQXJyYXkpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciB3b3JkcyA9IHdvcmRBcnJheS53b3Jkcztcblx0ICAgICAgICAgICAgdmFyIHNpZ0J5dGVzID0gd29yZEFycmF5LnNpZ0J5dGVzO1xuXHQgICAgICAgICAgICB2YXIgbWFwID0gdGhpcy5fbWFwO1xuXG5cdCAgICAgICAgICAgIC8vIENsYW1wIGV4Y2VzcyBiaXRzXG5cdCAgICAgICAgICAgIHdvcmRBcnJheS5jbGFtcCgpO1xuXG5cdCAgICAgICAgICAgIC8vIENvbnZlcnRcblx0ICAgICAgICAgICAgdmFyIGJhc2U2NENoYXJzID0gW107XG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2lnQnl0ZXM7IGkgKz0gMykge1xuXHQgICAgICAgICAgICAgICAgdmFyIGJ5dGUxID0gKHdvcmRzW2kgPj4+IDJdICAgICAgID4+PiAoMjQgLSAoaSAlIDQpICogOCkpICAgICAgICYgMHhmZjtcblx0ICAgICAgICAgICAgICAgIHZhciBieXRlMiA9ICh3b3Jkc1soaSArIDEpID4+PiAyXSA+Pj4gKDI0IC0gKChpICsgMSkgJSA0KSAqIDgpKSAmIDB4ZmY7XG5cdCAgICAgICAgICAgICAgICB2YXIgYnl0ZTMgPSAod29yZHNbKGkgKyAyKSA+Pj4gMl0gPj4+ICgyNCAtICgoaSArIDIpICUgNCkgKiA4KSkgJiAweGZmO1xuXG5cdCAgICAgICAgICAgICAgICB2YXIgdHJpcGxldCA9IChieXRlMSA8PCAxNikgfCAoYnl0ZTIgPDwgOCkgfCBieXRlMztcblxuXHQgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IChqIDwgNCkgJiYgKGkgKyBqICogMC43NSA8IHNpZ0J5dGVzKTsgaisrKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgYmFzZTY0Q2hhcnMucHVzaChtYXAuY2hhckF0KCh0cmlwbGV0ID4+PiAoNiAqICgzIC0gaikpKSAmIDB4M2YpKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIEFkZCBwYWRkaW5nXG5cdCAgICAgICAgICAgIHZhciBwYWRkaW5nQ2hhciA9IG1hcC5jaGFyQXQoNjQpO1xuXHQgICAgICAgICAgICBpZiAocGFkZGluZ0NoYXIpIHtcblx0ICAgICAgICAgICAgICAgIHdoaWxlIChiYXNlNjRDaGFycy5sZW5ndGggJSA0KSB7XG5cdCAgICAgICAgICAgICAgICAgICAgYmFzZTY0Q2hhcnMucHVzaChwYWRkaW5nQ2hhcik7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICByZXR1cm4gYmFzZTY0Q2hhcnMuam9pbignJyk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbnZlcnRzIGEgQmFzZTY0IHN0cmluZyB0byBhIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gYmFzZTY0U3RyIFRoZSBCYXNlNjQgc3RyaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgd29yZCBhcnJheS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIHdvcmRBcnJheSA9IENyeXB0b0pTLmVuYy5CYXNlNjQucGFyc2UoYmFzZTY0U3RyaW5nKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBwYXJzZTogZnVuY3Rpb24gKGJhc2U2NFN0cikge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIGJhc2U2NFN0ckxlbmd0aCA9IGJhc2U2NFN0ci5sZW5ndGg7XG5cdCAgICAgICAgICAgIHZhciBtYXAgPSB0aGlzLl9tYXA7XG5cdCAgICAgICAgICAgIHZhciByZXZlcnNlTWFwID0gdGhpcy5fcmV2ZXJzZU1hcDtcblxuXHQgICAgICAgICAgICBpZiAoIXJldmVyc2VNYXApIHtcblx0ICAgICAgICAgICAgICAgICAgICByZXZlcnNlTWFwID0gdGhpcy5fcmV2ZXJzZU1hcCA9IFtdO1xuXHQgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbWFwLmxlbmd0aDsgaisrKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHJldmVyc2VNYXBbbWFwLmNoYXJDb2RlQXQoaildID0gajtcblx0ICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBJZ25vcmUgcGFkZGluZ1xuXHQgICAgICAgICAgICB2YXIgcGFkZGluZ0NoYXIgPSBtYXAuY2hhckF0KDY0KTtcblx0ICAgICAgICAgICAgaWYgKHBhZGRpbmdDaGFyKSB7XG5cdCAgICAgICAgICAgICAgICB2YXIgcGFkZGluZ0luZGV4ID0gYmFzZTY0U3RyLmluZGV4T2YocGFkZGluZ0NoYXIpO1xuXHQgICAgICAgICAgICAgICAgaWYgKHBhZGRpbmdJbmRleCAhPT0gLTEpIHtcblx0ICAgICAgICAgICAgICAgICAgICBiYXNlNjRTdHJMZW5ndGggPSBwYWRkaW5nSW5kZXg7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBDb252ZXJ0XG5cdCAgICAgICAgICAgIHJldHVybiBwYXJzZUxvb3AoYmFzZTY0U3RyLCBiYXNlNjRTdHJMZW5ndGgsIHJldmVyc2VNYXApO1xuXG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIF9tYXA6ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPSdcblx0ICAgIH07XG5cblx0ICAgIGZ1bmN0aW9uIHBhcnNlTG9vcChiYXNlNjRTdHIsIGJhc2U2NFN0ckxlbmd0aCwgcmV2ZXJzZU1hcCkge1xuXHQgICAgICB2YXIgd29yZHMgPSBbXTtcblx0ICAgICAgdmFyIG5CeXRlcyA9IDA7XG5cdCAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmFzZTY0U3RyTGVuZ3RoOyBpKyspIHtcblx0ICAgICAgICAgIGlmIChpICUgNCkge1xuXHQgICAgICAgICAgICAgIHZhciBiaXRzMSA9IHJldmVyc2VNYXBbYmFzZTY0U3RyLmNoYXJDb2RlQXQoaSAtIDEpXSA8PCAoKGkgJSA0KSAqIDIpO1xuXHQgICAgICAgICAgICAgIHZhciBiaXRzMiA9IHJldmVyc2VNYXBbYmFzZTY0U3RyLmNoYXJDb2RlQXQoaSldID4+PiAoNiAtIChpICUgNCkgKiAyKTtcblx0ICAgICAgICAgICAgICB2YXIgYml0c0NvbWJpbmVkID0gYml0czEgfCBiaXRzMjtcblx0ICAgICAgICAgICAgICB3b3Jkc1tuQnl0ZXMgPj4+IDJdIHw9IGJpdHNDb21iaW5lZCA8PCAoMjQgLSAobkJ5dGVzICUgNCkgKiA4KTtcblx0ICAgICAgICAgICAgICBuQnl0ZXMrKztcblx0ICAgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgICByZXR1cm4gV29yZEFycmF5LmNyZWF0ZSh3b3JkcywgbkJ5dGVzKTtcblx0ICAgIH1cblx0fSgpKTtcblxuXG5cdHJldHVybiBDcnlwdG9KUy5lbmMuQmFzZTY0O1xuXG59KSk7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSkge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0ZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHQoZnVuY3Rpb24gKCkge1xuXHQgICAgLy8gU2hvcnRjdXRzXG5cdCAgICB2YXIgQyA9IENyeXB0b0pTO1xuXHQgICAgdmFyIENfbGliID0gQy5saWI7XG5cdCAgICB2YXIgV29yZEFycmF5ID0gQ19saWIuV29yZEFycmF5O1xuXHQgICAgdmFyIENfZW5jID0gQy5lbmM7XG5cblx0ICAgIC8qKlxuXHQgICAgICogQmFzZTY0dXJsIGVuY29kaW5nIHN0cmF0ZWd5LlxuXHQgICAgICovXG5cdCAgICB2YXIgQmFzZTY0dXJsID0gQ19lbmMuQmFzZTY0dXJsID0ge1xuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbnZlcnRzIGEgd29yZCBhcnJheSB0byBhIEJhc2U2NHVybCBzdHJpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge1dvcmRBcnJheX0gd29yZEFycmF5IFRoZSB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtib29sZWFufSB1cmxTYWZlIFdoZXRoZXIgdG8gdXNlIHVybCBzYWZlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBCYXNlNjR1cmwgc3RyaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgYmFzZTY0U3RyaW5nID0gQ3J5cHRvSlMuZW5jLkJhc2U2NHVybC5zdHJpbmdpZnkod29yZEFycmF5KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBzdHJpbmdpZnk6IGZ1bmN0aW9uICh3b3JkQXJyYXksIHVybFNhZmU9dHJ1ZSkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIHdvcmRzID0gd29yZEFycmF5LndvcmRzO1xuXHQgICAgICAgICAgICB2YXIgc2lnQnl0ZXMgPSB3b3JkQXJyYXkuc2lnQnl0ZXM7XG5cdCAgICAgICAgICAgIHZhciBtYXAgPSB1cmxTYWZlID8gdGhpcy5fc2FmZV9tYXAgOiB0aGlzLl9tYXA7XG5cblx0ICAgICAgICAgICAgLy8gQ2xhbXAgZXhjZXNzIGJpdHNcblx0ICAgICAgICAgICAgd29yZEFycmF5LmNsYW1wKCk7XG5cblx0ICAgICAgICAgICAgLy8gQ29udmVydFxuXHQgICAgICAgICAgICB2YXIgYmFzZTY0Q2hhcnMgPSBbXTtcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaWdCeXRlczsgaSArPSAzKSB7XG5cdCAgICAgICAgICAgICAgICB2YXIgYnl0ZTEgPSAod29yZHNbaSA+Pj4gMl0gICAgICAgPj4+ICgyNCAtIChpICUgNCkgKiA4KSkgICAgICAgJiAweGZmO1xuXHQgICAgICAgICAgICAgICAgdmFyIGJ5dGUyID0gKHdvcmRzWyhpICsgMSkgPj4+IDJdID4+PiAoMjQgLSAoKGkgKyAxKSAlIDQpICogOCkpICYgMHhmZjtcblx0ICAgICAgICAgICAgICAgIHZhciBieXRlMyA9ICh3b3Jkc1soaSArIDIpID4+PiAyXSA+Pj4gKDI0IC0gKChpICsgMikgJSA0KSAqIDgpKSAmIDB4ZmY7XG5cblx0ICAgICAgICAgICAgICAgIHZhciB0cmlwbGV0ID0gKGJ5dGUxIDw8IDE2KSB8IChieXRlMiA8PCA4KSB8IGJ5dGUzO1xuXG5cdCAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgKGogPCA0KSAmJiAoaSArIGogKiAwLjc1IDwgc2lnQnl0ZXMpOyBqKyspIHtcblx0ICAgICAgICAgICAgICAgICAgICBiYXNlNjRDaGFycy5wdXNoKG1hcC5jaGFyQXQoKHRyaXBsZXQgPj4+ICg2ICogKDMgLSBqKSkpICYgMHgzZikpO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gQWRkIHBhZGRpbmdcblx0ICAgICAgICAgICAgdmFyIHBhZGRpbmdDaGFyID0gbWFwLmNoYXJBdCg2NCk7XG5cdCAgICAgICAgICAgIGlmIChwYWRkaW5nQ2hhcikge1xuXHQgICAgICAgICAgICAgICAgd2hpbGUgKGJhc2U2NENoYXJzLmxlbmd0aCAlIDQpIHtcblx0ICAgICAgICAgICAgICAgICAgICBiYXNlNjRDaGFycy5wdXNoKHBhZGRpbmdDaGFyKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIHJldHVybiBiYXNlNjRDaGFycy5qb2luKCcnKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29udmVydHMgYSBCYXNlNjR1cmwgc3RyaW5nIHRvIGEgd29yZCBhcnJheS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlNjRTdHIgVGhlIEJhc2U2NHVybCBzdHJpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHVybFNhZmUgV2hldGhlciB0byB1c2UgdXJsIHNhZmVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAc3RhdGljXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciB3b3JkQXJyYXkgPSBDcnlwdG9KUy5lbmMuQmFzZTY0dXJsLnBhcnNlKGJhc2U2NFN0cmluZyk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgcGFyc2U6IGZ1bmN0aW9uIChiYXNlNjRTdHIsIHVybFNhZmU9dHJ1ZSkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIGJhc2U2NFN0ckxlbmd0aCA9IGJhc2U2NFN0ci5sZW5ndGg7XG5cdCAgICAgICAgICAgIHZhciBtYXAgPSB1cmxTYWZlID8gdGhpcy5fc2FmZV9tYXAgOiB0aGlzLl9tYXA7XG5cdCAgICAgICAgICAgIHZhciByZXZlcnNlTWFwID0gdGhpcy5fcmV2ZXJzZU1hcDtcblxuXHQgICAgICAgICAgICBpZiAoIXJldmVyc2VNYXApIHtcblx0ICAgICAgICAgICAgICAgIHJldmVyc2VNYXAgPSB0aGlzLl9yZXZlcnNlTWFwID0gW107XG5cdCAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG1hcC5sZW5ndGg7IGorKykge1xuXHQgICAgICAgICAgICAgICAgICAgIHJldmVyc2VNYXBbbWFwLmNoYXJDb2RlQXQoaildID0gajtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIElnbm9yZSBwYWRkaW5nXG5cdCAgICAgICAgICAgIHZhciBwYWRkaW5nQ2hhciA9IG1hcC5jaGFyQXQoNjQpO1xuXHQgICAgICAgICAgICBpZiAocGFkZGluZ0NoYXIpIHtcblx0ICAgICAgICAgICAgICAgIHZhciBwYWRkaW5nSW5kZXggPSBiYXNlNjRTdHIuaW5kZXhPZihwYWRkaW5nQ2hhcik7XG5cdCAgICAgICAgICAgICAgICBpZiAocGFkZGluZ0luZGV4ICE9PSAtMSkge1xuXHQgICAgICAgICAgICAgICAgICAgIGJhc2U2NFN0ckxlbmd0aCA9IHBhZGRpbmdJbmRleDtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIENvbnZlcnRcblx0ICAgICAgICAgICAgcmV0dXJuIHBhcnNlTG9vcChiYXNlNjRTdHIsIGJhc2U2NFN0ckxlbmd0aCwgcmV2ZXJzZU1hcCk7XG5cblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgX21hcDogJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89Jyxcblx0ICAgICAgICBfc2FmZV9tYXA6ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OS1fJyxcblx0ICAgIH07XG5cblx0ICAgIGZ1bmN0aW9uIHBhcnNlTG9vcChiYXNlNjRTdHIsIGJhc2U2NFN0ckxlbmd0aCwgcmV2ZXJzZU1hcCkge1xuXHQgICAgICAgIHZhciB3b3JkcyA9IFtdO1xuXHQgICAgICAgIHZhciBuQnl0ZXMgPSAwO1xuXHQgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmFzZTY0U3RyTGVuZ3RoOyBpKyspIHtcblx0ICAgICAgICAgICAgaWYgKGkgJSA0KSB7XG5cdCAgICAgICAgICAgICAgICB2YXIgYml0czEgPSByZXZlcnNlTWFwW2Jhc2U2NFN0ci5jaGFyQ29kZUF0KGkgLSAxKV0gPDwgKChpICUgNCkgKiAyKTtcblx0ICAgICAgICAgICAgICAgIHZhciBiaXRzMiA9IHJldmVyc2VNYXBbYmFzZTY0U3RyLmNoYXJDb2RlQXQoaSldID4+PiAoNiAtIChpICUgNCkgKiAyKTtcblx0ICAgICAgICAgICAgICAgIHZhciBiaXRzQ29tYmluZWQgPSBiaXRzMSB8IGJpdHMyO1xuXHQgICAgICAgICAgICAgICAgd29yZHNbbkJ5dGVzID4+PiAyXSB8PSBiaXRzQ29tYmluZWQgPDwgKDI0IC0gKG5CeXRlcyAlIDQpICogOCk7XG5cdCAgICAgICAgICAgICAgICBuQnl0ZXMrKztcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4gV29yZEFycmF5LmNyZWF0ZSh3b3JkcywgbkJ5dGVzKTtcblx0ICAgIH1cblx0fSgpKTtcblxuXHRyZXR1cm4gQ3J5cHRvSlMuZW5jLkJhc2U2NHVybDtcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0KGZ1bmN0aW9uICgpIHtcblx0ICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgdmFyIEMgPSBDcnlwdG9KUztcblx0ICAgIHZhciBDX2xpYiA9IEMubGliO1xuXHQgICAgdmFyIFdvcmRBcnJheSA9IENfbGliLldvcmRBcnJheTtcblx0ICAgIHZhciBDX2VuYyA9IEMuZW5jO1xuXG5cdCAgICAvKipcblx0ICAgICAqIFVURi0xNiBCRSBlbmNvZGluZyBzdHJhdGVneS5cblx0ICAgICAqL1xuXHQgICAgdmFyIFV0ZjE2QkUgPSBDX2VuYy5VdGYxNiA9IENfZW5jLlV0ZjE2QkUgPSB7XG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29udmVydHMgYSB3b3JkIGFycmF5IHRvIGEgVVRGLTE2IEJFIHN0cmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fSB3b3JkQXJyYXkgVGhlIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBVVEYtMTYgQkUgc3RyaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgdXRmMTZTdHJpbmcgPSBDcnlwdG9KUy5lbmMuVXRmMTYuc3RyaW5naWZ5KHdvcmRBcnJheSk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgc3RyaW5naWZ5OiBmdW5jdGlvbiAod29yZEFycmF5KSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgd29yZHMgPSB3b3JkQXJyYXkud29yZHM7XG5cdCAgICAgICAgICAgIHZhciBzaWdCeXRlcyA9IHdvcmRBcnJheS5zaWdCeXRlcztcblxuXHQgICAgICAgICAgICAvLyBDb252ZXJ0XG5cdCAgICAgICAgICAgIHZhciB1dGYxNkNoYXJzID0gW107XG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2lnQnl0ZXM7IGkgKz0gMikge1xuXHQgICAgICAgICAgICAgICAgdmFyIGNvZGVQb2ludCA9ICh3b3Jkc1tpID4+PiAyXSA+Pj4gKDE2IC0gKGkgJSA0KSAqIDgpKSAmIDB4ZmZmZjtcblx0ICAgICAgICAgICAgICAgIHV0ZjE2Q2hhcnMucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGVQb2ludCkpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgcmV0dXJuIHV0ZjE2Q2hhcnMuam9pbignJyk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbnZlcnRzIGEgVVRGLTE2IEJFIHN0cmluZyB0byBhIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXRmMTZTdHIgVGhlIFVURi0xNiBCRSBzdHJpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgd29yZEFycmF5ID0gQ3J5cHRvSlMuZW5jLlV0ZjE2LnBhcnNlKHV0ZjE2U3RyaW5nKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBwYXJzZTogZnVuY3Rpb24gKHV0ZjE2U3RyKSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0XG5cdCAgICAgICAgICAgIHZhciB1dGYxNlN0ckxlbmd0aCA9IHV0ZjE2U3RyLmxlbmd0aDtcblxuXHQgICAgICAgICAgICAvLyBDb252ZXJ0XG5cdCAgICAgICAgICAgIHZhciB3b3JkcyA9IFtdO1xuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHV0ZjE2U3RyTGVuZ3RoOyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIHdvcmRzW2kgPj4+IDFdIHw9IHV0ZjE2U3RyLmNoYXJDb2RlQXQoaSkgPDwgKDE2IC0gKGkgJSAyKSAqIDE2KTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIHJldHVybiBXb3JkQXJyYXkuY3JlYXRlKHdvcmRzLCB1dGYxNlN0ckxlbmd0aCAqIDIpO1xuXHQgICAgICAgIH1cblx0ICAgIH07XG5cblx0ICAgIC8qKlxuXHQgICAgICogVVRGLTE2IExFIGVuY29kaW5nIHN0cmF0ZWd5LlxuXHQgICAgICovXG5cdCAgICBDX2VuYy5VdGYxNkxFID0ge1xuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbnZlcnRzIGEgd29yZCBhcnJheSB0byBhIFVURi0xNiBMRSBzdHJpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge1dvcmRBcnJheX0gd29yZEFycmF5IFRoZSB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgVVRGLTE2IExFIHN0cmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIHV0ZjE2U3RyID0gQ3J5cHRvSlMuZW5jLlV0ZjE2TEUuc3RyaW5naWZ5KHdvcmRBcnJheSk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgc3RyaW5naWZ5OiBmdW5jdGlvbiAod29yZEFycmF5KSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgd29yZHMgPSB3b3JkQXJyYXkud29yZHM7XG5cdCAgICAgICAgICAgIHZhciBzaWdCeXRlcyA9IHdvcmRBcnJheS5zaWdCeXRlcztcblxuXHQgICAgICAgICAgICAvLyBDb252ZXJ0XG5cdCAgICAgICAgICAgIHZhciB1dGYxNkNoYXJzID0gW107XG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2lnQnl0ZXM7IGkgKz0gMikge1xuXHQgICAgICAgICAgICAgICAgdmFyIGNvZGVQb2ludCA9IHN3YXBFbmRpYW4oKHdvcmRzW2kgPj4+IDJdID4+PiAoMTYgLSAoaSAlIDQpICogOCkpICYgMHhmZmZmKTtcblx0ICAgICAgICAgICAgICAgIHV0ZjE2Q2hhcnMucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGVQb2ludCkpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgcmV0dXJuIHV0ZjE2Q2hhcnMuam9pbignJyk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbnZlcnRzIGEgVVRGLTE2IExFIHN0cmluZyB0byBhIHdvcmQgYXJyYXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXRmMTZTdHIgVGhlIFVURi0xNiBMRSBzdHJpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgd29yZEFycmF5ID0gQ3J5cHRvSlMuZW5jLlV0ZjE2TEUucGFyc2UodXRmMTZTdHIpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIHBhcnNlOiBmdW5jdGlvbiAodXRmMTZTdHIpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRcblx0ICAgICAgICAgICAgdmFyIHV0ZjE2U3RyTGVuZ3RoID0gdXRmMTZTdHIubGVuZ3RoO1xuXG5cdCAgICAgICAgICAgIC8vIENvbnZlcnRcblx0ICAgICAgICAgICAgdmFyIHdvcmRzID0gW107XG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdXRmMTZTdHJMZW5ndGg7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgd29yZHNbaSA+Pj4gMV0gfD0gc3dhcEVuZGlhbih1dGYxNlN0ci5jaGFyQ29kZUF0KGkpIDw8ICgxNiAtIChpICUgMikgKiAxNikpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgcmV0dXJuIFdvcmRBcnJheS5jcmVhdGUod29yZHMsIHV0ZjE2U3RyTGVuZ3RoICogMik7XG5cdCAgICAgICAgfVxuXHQgICAgfTtcblxuXHQgICAgZnVuY3Rpb24gc3dhcEVuZGlhbih3b3JkKSB7XG5cdCAgICAgICAgcmV0dXJuICgod29yZCA8PCA4KSAmIDB4ZmYwMGZmMDApIHwgKCh3b3JkID4+PiA4KSAmIDB4MDBmZjAwZmYpO1xuXHQgICAgfVxuXHR9KCkpO1xuXG5cblx0cmV0dXJuIENyeXB0b0pTLmVuYy5VdGYxNjtcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnksIHVuZGVmKSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpLCByZXF1aXJlKFwiLi9zaGExXCIpLCByZXF1aXJlKFwiLi9obWFjXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIiwgXCIuL3NoYTFcIiwgXCIuL2htYWNcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdChmdW5jdGlvbiAoKSB7XG5cdCAgICAvLyBTaG9ydGN1dHNcblx0ICAgIHZhciBDID0gQ3J5cHRvSlM7XG5cdCAgICB2YXIgQ19saWIgPSBDLmxpYjtcblx0ICAgIHZhciBCYXNlID0gQ19saWIuQmFzZTtcblx0ICAgIHZhciBXb3JkQXJyYXkgPSBDX2xpYi5Xb3JkQXJyYXk7XG5cdCAgICB2YXIgQ19hbGdvID0gQy5hbGdvO1xuXHQgICAgdmFyIE1ENSA9IENfYWxnby5NRDU7XG5cblx0ICAgIC8qKlxuXHQgICAgICogVGhpcyBrZXkgZGVyaXZhdGlvbiBmdW5jdGlvbiBpcyBtZWFudCB0byBjb25mb3JtIHdpdGggRVZQX0J5dGVzVG9LZXkuXG5cdCAgICAgKiB3d3cub3BlbnNzbC5vcmcvZG9jcy9jcnlwdG8vRVZQX0J5dGVzVG9LZXkuaHRtbFxuXHQgICAgICovXG5cdCAgICB2YXIgRXZwS0RGID0gQ19hbGdvLkV2cEtERiA9IEJhc2UuZXh0ZW5kKHtcblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb25maWd1cmF0aW9uIG9wdGlvbnMuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcHJvcGVydHkge251bWJlcn0ga2V5U2l6ZSBUaGUga2V5IHNpemUgaW4gd29yZHMgdG8gZ2VuZXJhdGUuIERlZmF1bHQ6IDQgKDEyOCBiaXRzKVxuXHQgICAgICAgICAqIEBwcm9wZXJ0eSB7SGFzaGVyfSBoYXNoZXIgVGhlIGhhc2ggYWxnb3JpdGhtIHRvIHVzZS4gRGVmYXVsdDogTUQ1XG5cdCAgICAgICAgICogQHByb3BlcnR5IHtudW1iZXJ9IGl0ZXJhdGlvbnMgVGhlIG51bWJlciBvZiBpdGVyYXRpb25zIHRvIHBlcmZvcm0uIERlZmF1bHQ6IDFcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBjZmc6IEJhc2UuZXh0ZW5kKHtcblx0ICAgICAgICAgICAga2V5U2l6ZTogMTI4LzMyLFxuXHQgICAgICAgICAgICBoYXNoZXI6IE1ENSxcblx0ICAgICAgICAgICAgaXRlcmF0aW9uczogMVxuXHQgICAgICAgIH0pLFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogSW5pdGlhbGl6ZXMgYSBuZXdseSBjcmVhdGVkIGtleSBkZXJpdmF0aW9uIGZ1bmN0aW9uLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IGNmZyAoT3B0aW9uYWwpIFRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gdXNlIGZvciB0aGUgZGVyaXZhdGlvbi5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIGtkZiA9IENyeXB0b0pTLmFsZ28uRXZwS0RGLmNyZWF0ZSgpO1xuXHQgICAgICAgICAqICAgICB2YXIga2RmID0gQ3J5cHRvSlMuYWxnby5FdnBLREYuY3JlYXRlKHsga2V5U2l6ZTogOCB9KTtcblx0ICAgICAgICAgKiAgICAgdmFyIGtkZiA9IENyeXB0b0pTLmFsZ28uRXZwS0RGLmNyZWF0ZSh7IGtleVNpemU6IDgsIGl0ZXJhdGlvbnM6IDEwMDAgfSk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgaW5pdDogZnVuY3Rpb24gKGNmZykge1xuXHQgICAgICAgICAgICB0aGlzLmNmZyA9IHRoaXMuY2ZnLmV4dGVuZChjZmcpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBEZXJpdmVzIGEga2V5IGZyb20gYSBwYXNzd29yZC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gcGFzc3dvcmQgVGhlIHBhc3N3b3JkLlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gc2FsdCBBIHNhbHQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSBkZXJpdmVkIGtleS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIGtleSA9IGtkZi5jb21wdXRlKHBhc3N3b3JkLCBzYWx0KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBjb21wdXRlOiBmdW5jdGlvbiAocGFzc3dvcmQsIHNhbHQpIHtcblx0ICAgICAgICAgICAgdmFyIGJsb2NrO1xuXG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0XG5cdCAgICAgICAgICAgIHZhciBjZmcgPSB0aGlzLmNmZztcblxuXHQgICAgICAgICAgICAvLyBJbml0IGhhc2hlclxuXHQgICAgICAgICAgICB2YXIgaGFzaGVyID0gY2ZnLmhhc2hlci5jcmVhdGUoKTtcblxuXHQgICAgICAgICAgICAvLyBJbml0aWFsIHZhbHVlc1xuXHQgICAgICAgICAgICB2YXIgZGVyaXZlZEtleSA9IFdvcmRBcnJheS5jcmVhdGUoKTtcblxuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIGRlcml2ZWRLZXlXb3JkcyA9IGRlcml2ZWRLZXkud29yZHM7XG5cdCAgICAgICAgICAgIHZhciBrZXlTaXplID0gY2ZnLmtleVNpemU7XG5cdCAgICAgICAgICAgIHZhciBpdGVyYXRpb25zID0gY2ZnLml0ZXJhdGlvbnM7XG5cblx0ICAgICAgICAgICAgLy8gR2VuZXJhdGUga2V5XG5cdCAgICAgICAgICAgIHdoaWxlIChkZXJpdmVkS2V5V29yZHMubGVuZ3RoIDwga2V5U2l6ZSkge1xuXHQgICAgICAgICAgICAgICAgaWYgKGJsb2NrKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgaGFzaGVyLnVwZGF0ZShibG9jayk7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICBibG9jayA9IGhhc2hlci51cGRhdGUocGFzc3dvcmQpLmZpbmFsaXplKHNhbHQpO1xuXHQgICAgICAgICAgICAgICAgaGFzaGVyLnJlc2V0KCk7XG5cblx0ICAgICAgICAgICAgICAgIC8vIEl0ZXJhdGlvbnNcblx0ICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgaXRlcmF0aW9uczsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgYmxvY2sgPSBoYXNoZXIuZmluYWxpemUoYmxvY2spO1xuXHQgICAgICAgICAgICAgICAgICAgIGhhc2hlci5yZXNldCgpO1xuXHQgICAgICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgICAgICBkZXJpdmVkS2V5LmNvbmNhdChibG9jayk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgZGVyaXZlZEtleS5zaWdCeXRlcyA9IGtleVNpemUgKiA0O1xuXG5cdCAgICAgICAgICAgIHJldHVybiBkZXJpdmVkS2V5O1xuXHQgICAgICAgIH1cblx0ICAgIH0pO1xuXG5cdCAgICAvKipcblx0ICAgICAqIERlcml2ZXMgYSBrZXkgZnJvbSBhIHBhc3N3b3JkLlxuXHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gcGFzc3dvcmQgVGhlIHBhc3N3b3JkLlxuXHQgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBzYWx0IEEgc2FsdC5cblx0ICAgICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcgKE9wdGlvbmFsKSBUaGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHVzZSBmb3IgdGhpcyBjb21wdXRhdGlvbi5cblx0ICAgICAqXG5cdCAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSBkZXJpdmVkIGtleS5cblx0ICAgICAqXG5cdCAgICAgKiBAc3RhdGljXG5cdCAgICAgKlxuXHQgICAgICogQGV4YW1wbGVcblx0ICAgICAqXG5cdCAgICAgKiAgICAgdmFyIGtleSA9IENyeXB0b0pTLkV2cEtERihwYXNzd29yZCwgc2FsdCk7XG5cdCAgICAgKiAgICAgdmFyIGtleSA9IENyeXB0b0pTLkV2cEtERihwYXNzd29yZCwgc2FsdCwgeyBrZXlTaXplOiA4IH0pO1xuXHQgICAgICogICAgIHZhciBrZXkgPSBDcnlwdG9KUy5FdnBLREYocGFzc3dvcmQsIHNhbHQsIHsga2V5U2l6ZTogOCwgaXRlcmF0aW9uczogMTAwMCB9KTtcblx0ICAgICAqL1xuXHQgICAgQy5FdnBLREYgPSBmdW5jdGlvbiAocGFzc3dvcmQsIHNhbHQsIGNmZykge1xuXHQgICAgICAgIHJldHVybiBFdnBLREYuY3JlYXRlKGNmZykuY29tcHV0ZShwYXNzd29yZCwgc2FsdCk7XG5cdCAgICB9O1xuXHR9KCkpO1xuXG5cblx0cmV0dXJuIENyeXB0b0pTLkV2cEtERjtcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnksIHVuZGVmKSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpLCByZXF1aXJlKFwiLi9jaXBoZXItY29yZVwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCIsIFwiLi9jaXBoZXItY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0KGZ1bmN0aW9uICh1bmRlZmluZWQpIHtcblx0ICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgdmFyIEMgPSBDcnlwdG9KUztcblx0ICAgIHZhciBDX2xpYiA9IEMubGliO1xuXHQgICAgdmFyIENpcGhlclBhcmFtcyA9IENfbGliLkNpcGhlclBhcmFtcztcblx0ICAgIHZhciBDX2VuYyA9IEMuZW5jO1xuXHQgICAgdmFyIEhleCA9IENfZW5jLkhleDtcblx0ICAgIHZhciBDX2Zvcm1hdCA9IEMuZm9ybWF0O1xuXG5cdCAgICB2YXIgSGV4Rm9ybWF0dGVyID0gQ19mb3JtYXQuSGV4ID0ge1xuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbnZlcnRzIHRoZSBjaXBoZXJ0ZXh0IG9mIGEgY2lwaGVyIHBhcmFtcyBvYmplY3QgdG8gYSBoZXhhZGVjaW1hbGx5IGVuY29kZWQgc3RyaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtDaXBoZXJQYXJhbXN9IGNpcGhlclBhcmFtcyBUaGUgY2lwaGVyIHBhcmFtcyBvYmplY3QuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBoZXhhZGVjaW1hbGx5IGVuY29kZWQgc3RyaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHN0YXRpY1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgaGV4U3RyaW5nID0gQ3J5cHRvSlMuZm9ybWF0LkhleC5zdHJpbmdpZnkoY2lwaGVyUGFyYW1zKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBzdHJpbmdpZnk6IGZ1bmN0aW9uIChjaXBoZXJQYXJhbXMpIHtcblx0ICAgICAgICAgICAgcmV0dXJuIGNpcGhlclBhcmFtcy5jaXBoZXJ0ZXh0LnRvU3RyaW5nKEhleCk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbnZlcnRzIGEgaGV4YWRlY2ltYWxseSBlbmNvZGVkIGNpcGhlcnRleHQgc3RyaW5nIHRvIGEgY2lwaGVyIHBhcmFtcyBvYmplY3QuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gaW5wdXQgVGhlIGhleGFkZWNpbWFsbHkgZW5jb2RlZCBzdHJpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtDaXBoZXJQYXJhbXN9IFRoZSBjaXBoZXIgcGFyYW1zIG9iamVjdC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBzdGF0aWNcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIGNpcGhlclBhcmFtcyA9IENyeXB0b0pTLmZvcm1hdC5IZXgucGFyc2UoaGV4U3RyaW5nKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBwYXJzZTogZnVuY3Rpb24gKGlucHV0KSB7XG5cdCAgICAgICAgICAgIHZhciBjaXBoZXJ0ZXh0ID0gSGV4LnBhcnNlKGlucHV0KTtcblx0ICAgICAgICAgICAgcmV0dXJuIENpcGhlclBhcmFtcy5jcmVhdGUoeyBjaXBoZXJ0ZXh0OiBjaXBoZXJ0ZXh0IH0pO1xuXHQgICAgICAgIH1cblx0ICAgIH07XG5cdH0oKSk7XG5cblxuXHRyZXR1cm4gQ3J5cHRvSlMuZm9ybWF0LkhleDtcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0KGZ1bmN0aW9uICgpIHtcblx0ICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgdmFyIEMgPSBDcnlwdG9KUztcblx0ICAgIHZhciBDX2xpYiA9IEMubGliO1xuXHQgICAgdmFyIEJhc2UgPSBDX2xpYi5CYXNlO1xuXHQgICAgdmFyIENfZW5jID0gQy5lbmM7XG5cdCAgICB2YXIgVXRmOCA9IENfZW5jLlV0Zjg7XG5cdCAgICB2YXIgQ19hbGdvID0gQy5hbGdvO1xuXG5cdCAgICAvKipcblx0ICAgICAqIEhNQUMgYWxnb3JpdGhtLlxuXHQgICAgICovXG5cdCAgICB2YXIgSE1BQyA9IENfYWxnby5ITUFDID0gQmFzZS5leHRlbmQoe1xuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIEluaXRpYWxpemVzIGEgbmV3bHkgY3JlYXRlZCBITUFDLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtIYXNoZXJ9IGhhc2hlciBUaGUgaGFzaCBhbGdvcml0aG0gdG8gdXNlLlxuXHQgICAgICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30ga2V5IFRoZSBzZWNyZXQga2V5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgaG1hY0hhc2hlciA9IENyeXB0b0pTLmFsZ28uSE1BQy5jcmVhdGUoQ3J5cHRvSlMuYWxnby5TSEEyNTYsIGtleSk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgaW5pdDogZnVuY3Rpb24gKGhhc2hlciwga2V5KSB7XG5cdCAgICAgICAgICAgIC8vIEluaXQgaGFzaGVyXG5cdCAgICAgICAgICAgIGhhc2hlciA9IHRoaXMuX2hhc2hlciA9IG5ldyBoYXNoZXIuaW5pdCgpO1xuXG5cdCAgICAgICAgICAgIC8vIENvbnZlcnQgc3RyaW5nIHRvIFdvcmRBcnJheSwgZWxzZSBhc3N1bWUgV29yZEFycmF5IGFscmVhZHlcblx0ICAgICAgICAgICAgaWYgKHR5cGVvZiBrZXkgPT0gJ3N0cmluZycpIHtcblx0ICAgICAgICAgICAgICAgIGtleSA9IFV0ZjgucGFyc2Uoa2V5KTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgaGFzaGVyQmxvY2tTaXplID0gaGFzaGVyLmJsb2NrU2l6ZTtcblx0ICAgICAgICAgICAgdmFyIGhhc2hlckJsb2NrU2l6ZUJ5dGVzID0gaGFzaGVyQmxvY2tTaXplICogNDtcblxuXHQgICAgICAgICAgICAvLyBBbGxvdyBhcmJpdHJhcnkgbGVuZ3RoIGtleXNcblx0ICAgICAgICAgICAgaWYgKGtleS5zaWdCeXRlcyA+IGhhc2hlckJsb2NrU2l6ZUJ5dGVzKSB7XG5cdCAgICAgICAgICAgICAgICBrZXkgPSBoYXNoZXIuZmluYWxpemUoa2V5KTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIENsYW1wIGV4Y2VzcyBiaXRzXG5cdCAgICAgICAgICAgIGtleS5jbGFtcCgpO1xuXG5cdCAgICAgICAgICAgIC8vIENsb25lIGtleSBmb3IgaW5uZXIgYW5kIG91dGVyIHBhZHNcblx0ICAgICAgICAgICAgdmFyIG9LZXkgPSB0aGlzLl9vS2V5ID0ga2V5LmNsb25lKCk7XG5cdCAgICAgICAgICAgIHZhciBpS2V5ID0gdGhpcy5faUtleSA9IGtleS5jbG9uZSgpO1xuXG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgb0tleVdvcmRzID0gb0tleS53b3Jkcztcblx0ICAgICAgICAgICAgdmFyIGlLZXlXb3JkcyA9IGlLZXkud29yZHM7XG5cblx0ICAgICAgICAgICAgLy8gWE9SIGtleXMgd2l0aCBwYWQgY29uc3RhbnRzXG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaGFzaGVyQmxvY2tTaXplOyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIG9LZXlXb3Jkc1tpXSBePSAweDVjNWM1YzVjO1xuXHQgICAgICAgICAgICAgICAgaUtleVdvcmRzW2ldIF49IDB4MzYzNjM2MzY7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgb0tleS5zaWdCeXRlcyA9IGlLZXkuc2lnQnl0ZXMgPSBoYXNoZXJCbG9ja1NpemVCeXRlcztcblxuXHQgICAgICAgICAgICAvLyBTZXQgaW5pdGlhbCB2YWx1ZXNcblx0ICAgICAgICAgICAgdGhpcy5yZXNldCgpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBSZXNldHMgdGhpcyBITUFDIHRvIGl0cyBpbml0aWFsIHN0YXRlLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICBobWFjSGFzaGVyLnJlc2V0KCk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgcmVzZXQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRcblx0ICAgICAgICAgICAgdmFyIGhhc2hlciA9IHRoaXMuX2hhc2hlcjtcblxuXHQgICAgICAgICAgICAvLyBSZXNldFxuXHQgICAgICAgICAgICBoYXNoZXIucmVzZXQoKTtcblx0ICAgICAgICAgICAgaGFzaGVyLnVwZGF0ZSh0aGlzLl9pS2V5KTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogVXBkYXRlcyB0aGlzIEhNQUMgd2l0aCBhIG1lc3NhZ2UuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IG1lc3NhZ2VVcGRhdGUgVGhlIG1lc3NhZ2UgdG8gYXBwZW5kLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7SE1BQ30gVGhpcyBITUFDIGluc3RhbmNlLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICBobWFjSGFzaGVyLnVwZGF0ZSgnbWVzc2FnZScpO1xuXHQgICAgICAgICAqICAgICBobWFjSGFzaGVyLnVwZGF0ZSh3b3JkQXJyYXkpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIHVwZGF0ZTogZnVuY3Rpb24gKG1lc3NhZ2VVcGRhdGUpIHtcblx0ICAgICAgICAgICAgdGhpcy5faGFzaGVyLnVwZGF0ZShtZXNzYWdlVXBkYXRlKTtcblxuXHQgICAgICAgICAgICAvLyBDaGFpbmFibGVcblx0ICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIEZpbmFsaXplcyB0aGUgSE1BQyBjb21wdXRhdGlvbi5cblx0ICAgICAgICAgKiBOb3RlIHRoYXQgdGhlIGZpbmFsaXplIG9wZXJhdGlvbiBpcyBlZmZlY3RpdmVseSBhIGRlc3RydWN0aXZlLCByZWFkLW9uY2Ugb3BlcmF0aW9uLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBtZXNzYWdlVXBkYXRlIChPcHRpb25hbCkgQSBmaW5hbCBtZXNzYWdlIHVwZGF0ZS5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIEhNQUMuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBobWFjID0gaG1hY0hhc2hlci5maW5hbGl6ZSgpO1xuXHQgICAgICAgICAqICAgICB2YXIgaG1hYyA9IGhtYWNIYXNoZXIuZmluYWxpemUoJ21lc3NhZ2UnKTtcblx0ICAgICAgICAgKiAgICAgdmFyIGhtYWMgPSBobWFjSGFzaGVyLmZpbmFsaXplKHdvcmRBcnJheSk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgZmluYWxpemU6IGZ1bmN0aW9uIChtZXNzYWdlVXBkYXRlKSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0XG5cdCAgICAgICAgICAgIHZhciBoYXNoZXIgPSB0aGlzLl9oYXNoZXI7XG5cblx0ICAgICAgICAgICAgLy8gQ29tcHV0ZSBITUFDXG5cdCAgICAgICAgICAgIHZhciBpbm5lckhhc2ggPSBoYXNoZXIuZmluYWxpemUobWVzc2FnZVVwZGF0ZSk7XG5cdCAgICAgICAgICAgIGhhc2hlci5yZXNldCgpO1xuXHQgICAgICAgICAgICB2YXIgaG1hYyA9IGhhc2hlci5maW5hbGl6ZSh0aGlzLl9vS2V5LmNsb25lKCkuY29uY2F0KGlubmVySGFzaCkpO1xuXG5cdCAgICAgICAgICAgIHJldHVybiBobWFjO1xuXHQgICAgICAgIH1cblx0ICAgIH0pO1xuXHR9KCkpO1xuXG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5LCB1bmRlZikge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSwgcmVxdWlyZShcIi4veDY0LWNvcmVcIiksIHJlcXVpcmUoXCIuL2xpYi10eXBlZGFycmF5c1wiKSwgcmVxdWlyZShcIi4vZW5jLXV0ZjE2XCIpLCByZXF1aXJlKFwiLi9lbmMtYmFzZTY0XCIpLCByZXF1aXJlKFwiLi9lbmMtYmFzZTY0dXJsXCIpLCByZXF1aXJlKFwiLi9tZDVcIiksIHJlcXVpcmUoXCIuL3NoYTFcIiksIHJlcXVpcmUoXCIuL3NoYTI1NlwiKSwgcmVxdWlyZShcIi4vc2hhMjI0XCIpLCByZXF1aXJlKFwiLi9zaGE1MTJcIiksIHJlcXVpcmUoXCIuL3NoYTM4NFwiKSwgcmVxdWlyZShcIi4vc2hhM1wiKSwgcmVxdWlyZShcIi4vcmlwZW1kMTYwXCIpLCByZXF1aXJlKFwiLi9obWFjXCIpLCByZXF1aXJlKFwiLi9wYmtkZjJcIiksIHJlcXVpcmUoXCIuL2V2cGtkZlwiKSwgcmVxdWlyZShcIi4vY2lwaGVyLWNvcmVcIiksIHJlcXVpcmUoXCIuL21vZGUtY2ZiXCIpLCByZXF1aXJlKFwiLi9tb2RlLWN0clwiKSwgcmVxdWlyZShcIi4vbW9kZS1jdHItZ2xhZG1hblwiKSwgcmVxdWlyZShcIi4vbW9kZS1vZmJcIiksIHJlcXVpcmUoXCIuL21vZGUtZWNiXCIpLCByZXF1aXJlKFwiLi9wYWQtYW5zaXg5MjNcIiksIHJlcXVpcmUoXCIuL3BhZC1pc28xMDEyNlwiKSwgcmVxdWlyZShcIi4vcGFkLWlzbzk3OTcxXCIpLCByZXF1aXJlKFwiLi9wYWQtemVyb3BhZGRpbmdcIiksIHJlcXVpcmUoXCIuL3BhZC1ub3BhZGRpbmdcIiksIHJlcXVpcmUoXCIuL2Zvcm1hdC1oZXhcIiksIHJlcXVpcmUoXCIuL2Flc1wiKSwgcmVxdWlyZShcIi4vdHJpcGxlZGVzXCIpLCByZXF1aXJlKFwiLi9yYzRcIiksIHJlcXVpcmUoXCIuL3JhYmJpdFwiKSwgcmVxdWlyZShcIi4vcmFiYml0LWxlZ2FjeVwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCIsIFwiLi94NjQtY29yZVwiLCBcIi4vbGliLXR5cGVkYXJyYXlzXCIsIFwiLi9lbmMtdXRmMTZcIiwgXCIuL2VuYy1iYXNlNjRcIiwgXCIuL2VuYy1iYXNlNjR1cmxcIiwgXCIuL21kNVwiLCBcIi4vc2hhMVwiLCBcIi4vc2hhMjU2XCIsIFwiLi9zaGEyMjRcIiwgXCIuL3NoYTUxMlwiLCBcIi4vc2hhMzg0XCIsIFwiLi9zaGEzXCIsIFwiLi9yaXBlbWQxNjBcIiwgXCIuL2htYWNcIiwgXCIuL3Bia2RmMlwiLCBcIi4vZXZwa2RmXCIsIFwiLi9jaXBoZXItY29yZVwiLCBcIi4vbW9kZS1jZmJcIiwgXCIuL21vZGUtY3RyXCIsIFwiLi9tb2RlLWN0ci1nbGFkbWFuXCIsIFwiLi9tb2RlLW9mYlwiLCBcIi4vbW9kZS1lY2JcIiwgXCIuL3BhZC1hbnNpeDkyM1wiLCBcIi4vcGFkLWlzbzEwMTI2XCIsIFwiLi9wYWQtaXNvOTc5NzFcIiwgXCIuL3BhZC16ZXJvcGFkZGluZ1wiLCBcIi4vcGFkLW5vcGFkZGluZ1wiLCBcIi4vZm9ybWF0LWhleFwiLCBcIi4vYWVzXCIsIFwiLi90cmlwbGVkZXNcIiwgXCIuL3JjNFwiLCBcIi4vcmFiYml0XCIsIFwiLi9yYWJiaXQtbGVnYWN5XCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0cm9vdC5DcnlwdG9KUyA9IGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0cmV0dXJuIENyeXB0b0pTO1xuXG59KSk7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSkge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0ZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHQoZnVuY3Rpb24gKCkge1xuXHQgICAgLy8gQ2hlY2sgaWYgdHlwZWQgYXJyYXlzIGFyZSBzdXBwb3J0ZWRcblx0ICAgIGlmICh0eXBlb2YgQXJyYXlCdWZmZXIgIT0gJ2Z1bmN0aW9uJykge1xuXHQgICAgICAgIHJldHVybjtcblx0ICAgIH1cblxuXHQgICAgLy8gU2hvcnRjdXRzXG5cdCAgICB2YXIgQyA9IENyeXB0b0pTO1xuXHQgICAgdmFyIENfbGliID0gQy5saWI7XG5cdCAgICB2YXIgV29yZEFycmF5ID0gQ19saWIuV29yZEFycmF5O1xuXG5cdCAgICAvLyBSZWZlcmVuY2Ugb3JpZ2luYWwgaW5pdFxuXHQgICAgdmFyIHN1cGVySW5pdCA9IFdvcmRBcnJheS5pbml0O1xuXG5cdCAgICAvLyBBdWdtZW50IFdvcmRBcnJheS5pbml0IHRvIGhhbmRsZSB0eXBlZCBhcnJheXNcblx0ICAgIHZhciBzdWJJbml0ID0gV29yZEFycmF5LmluaXQgPSBmdW5jdGlvbiAodHlwZWRBcnJheSkge1xuXHQgICAgICAgIC8vIENvbnZlcnQgYnVmZmVycyB0byB1aW50OFxuXHQgICAgICAgIGlmICh0eXBlZEFycmF5IGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcblx0ICAgICAgICAgICAgdHlwZWRBcnJheSA9IG5ldyBVaW50OEFycmF5KHR5cGVkQXJyYXkpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIC8vIENvbnZlcnQgb3RoZXIgYXJyYXkgdmlld3MgdG8gdWludDhcblx0ICAgICAgICBpZiAoXG5cdCAgICAgICAgICAgIHR5cGVkQXJyYXkgaW5zdGFuY2VvZiBJbnQ4QXJyYXkgfHxcblx0ICAgICAgICAgICAgKHR5cGVvZiBVaW50OENsYW1wZWRBcnJheSAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlZEFycmF5IGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXkpIHx8XG5cdCAgICAgICAgICAgIHR5cGVkQXJyYXkgaW5zdGFuY2VvZiBJbnQxNkFycmF5IHx8XG5cdCAgICAgICAgICAgIHR5cGVkQXJyYXkgaW5zdGFuY2VvZiBVaW50MTZBcnJheSB8fFxuXHQgICAgICAgICAgICB0eXBlZEFycmF5IGluc3RhbmNlb2YgSW50MzJBcnJheSB8fFxuXHQgICAgICAgICAgICB0eXBlZEFycmF5IGluc3RhbmNlb2YgVWludDMyQXJyYXkgfHxcblx0ICAgICAgICAgICAgdHlwZWRBcnJheSBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheSB8fFxuXHQgICAgICAgICAgICB0eXBlZEFycmF5IGluc3RhbmNlb2YgRmxvYXQ2NEFycmF5XG5cdCAgICAgICAgKSB7XG5cdCAgICAgICAgICAgIHR5cGVkQXJyYXkgPSBuZXcgVWludDhBcnJheSh0eXBlZEFycmF5LmJ1ZmZlciwgdHlwZWRBcnJheS5ieXRlT2Zmc2V0LCB0eXBlZEFycmF5LmJ5dGVMZW5ndGgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIC8vIEhhbmRsZSBVaW50OEFycmF5XG5cdCAgICAgICAgaWYgKHR5cGVkQXJyYXkgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0XG5cdCAgICAgICAgICAgIHZhciB0eXBlZEFycmF5Qnl0ZUxlbmd0aCA9IHR5cGVkQXJyYXkuYnl0ZUxlbmd0aDtcblxuXHQgICAgICAgICAgICAvLyBFeHRyYWN0IGJ5dGVzXG5cdCAgICAgICAgICAgIHZhciB3b3JkcyA9IFtdO1xuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHR5cGVkQXJyYXlCeXRlTGVuZ3RoOyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIHdvcmRzW2kgPj4+IDJdIHw9IHR5cGVkQXJyYXlbaV0gPDwgKDI0IC0gKGkgJSA0KSAqIDgpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGlzIHdvcmQgYXJyYXlcblx0ICAgICAgICAgICAgc3VwZXJJbml0LmNhbGwodGhpcywgd29yZHMsIHR5cGVkQXJyYXlCeXRlTGVuZ3RoKTtcblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICAvLyBFbHNlIGNhbGwgbm9ybWFsIGluaXRcblx0ICAgICAgICAgICAgc3VwZXJJbml0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cdCAgICAgICAgfVxuXHQgICAgfTtcblxuXHQgICAgc3ViSW5pdC5wcm90b3R5cGUgPSBXb3JkQXJyYXk7XG5cdH0oKSk7XG5cblxuXHRyZXR1cm4gQ3J5cHRvSlMubGliLldvcmRBcnJheTtcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0KGZ1bmN0aW9uIChNYXRoKSB7XG5cdCAgICAvLyBTaG9ydGN1dHNcblx0ICAgIHZhciBDID0gQ3J5cHRvSlM7XG5cdCAgICB2YXIgQ19saWIgPSBDLmxpYjtcblx0ICAgIHZhciBXb3JkQXJyYXkgPSBDX2xpYi5Xb3JkQXJyYXk7XG5cdCAgICB2YXIgSGFzaGVyID0gQ19saWIuSGFzaGVyO1xuXHQgICAgdmFyIENfYWxnbyA9IEMuYWxnbztcblxuXHQgICAgLy8gQ29uc3RhbnRzIHRhYmxlXG5cdCAgICB2YXIgVCA9IFtdO1xuXG5cdCAgICAvLyBDb21wdXRlIGNvbnN0YW50c1xuXHQgICAgKGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY0OyBpKyspIHtcblx0ICAgICAgICAgICAgVFtpXSA9IChNYXRoLmFicyhNYXRoLnNpbihpICsgMSkpICogMHgxMDAwMDAwMDApIHwgMDtcblx0ICAgICAgICB9XG5cdCAgICB9KCkpO1xuXG5cdCAgICAvKipcblx0ICAgICAqIE1ENSBoYXNoIGFsZ29yaXRobS5cblx0ICAgICAqL1xuXHQgICAgdmFyIE1ENSA9IENfYWxnby5NRDUgPSBIYXNoZXIuZXh0ZW5kKHtcblx0ICAgICAgICBfZG9SZXNldDogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICB0aGlzLl9oYXNoID0gbmV3IFdvcmRBcnJheS5pbml0KFtcblx0ICAgICAgICAgICAgICAgIDB4Njc0NTIzMDEsIDB4ZWZjZGFiODksXG5cdCAgICAgICAgICAgICAgICAweDk4YmFkY2ZlLCAweDEwMzI1NDc2XG5cdCAgICAgICAgICAgIF0pO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBfZG9Qcm9jZXNzQmxvY2s6IGZ1bmN0aW9uIChNLCBvZmZzZXQpIHtcblx0ICAgICAgICAgICAgLy8gU3dhcCBlbmRpYW5cblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgICAgIHZhciBvZmZzZXRfaSA9IG9mZnNldCArIGk7XG5cdCAgICAgICAgICAgICAgICB2YXIgTV9vZmZzZXRfaSA9IE1bb2Zmc2V0X2ldO1xuXG5cdCAgICAgICAgICAgICAgICBNW29mZnNldF9pXSA9IChcblx0ICAgICAgICAgICAgICAgICAgICAoKChNX29mZnNldF9pIDw8IDgpICB8IChNX29mZnNldF9pID4+PiAyNCkpICYgMHgwMGZmMDBmZikgfFxuXHQgICAgICAgICAgICAgICAgICAgICgoKE1fb2Zmc2V0X2kgPDwgMjQpIHwgKE1fb2Zmc2V0X2kgPj4+IDgpKSAgJiAweGZmMDBmZjAwKVxuXHQgICAgICAgICAgICAgICAgKTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgSCA9IHRoaXMuX2hhc2gud29yZHM7XG5cblx0ICAgICAgICAgICAgdmFyIE1fb2Zmc2V0XzAgID0gTVtvZmZzZXQgKyAwXTtcblx0ICAgICAgICAgICAgdmFyIE1fb2Zmc2V0XzEgID0gTVtvZmZzZXQgKyAxXTtcblx0ICAgICAgICAgICAgdmFyIE1fb2Zmc2V0XzIgID0gTVtvZmZzZXQgKyAyXTtcblx0ICAgICAgICAgICAgdmFyIE1fb2Zmc2V0XzMgID0gTVtvZmZzZXQgKyAzXTtcblx0ICAgICAgICAgICAgdmFyIE1fb2Zmc2V0XzQgID0gTVtvZmZzZXQgKyA0XTtcblx0ICAgICAgICAgICAgdmFyIE1fb2Zmc2V0XzUgID0gTVtvZmZzZXQgKyA1XTtcblx0ICAgICAgICAgICAgdmFyIE1fb2Zmc2V0XzYgID0gTVtvZmZzZXQgKyA2XTtcblx0ICAgICAgICAgICAgdmFyIE1fb2Zmc2V0XzcgID0gTVtvZmZzZXQgKyA3XTtcblx0ICAgICAgICAgICAgdmFyIE1fb2Zmc2V0XzggID0gTVtvZmZzZXQgKyA4XTtcblx0ICAgICAgICAgICAgdmFyIE1fb2Zmc2V0XzkgID0gTVtvZmZzZXQgKyA5XTtcblx0ICAgICAgICAgICAgdmFyIE1fb2Zmc2V0XzEwID0gTVtvZmZzZXQgKyAxMF07XG5cdCAgICAgICAgICAgIHZhciBNX29mZnNldF8xMSA9IE1bb2Zmc2V0ICsgMTFdO1xuXHQgICAgICAgICAgICB2YXIgTV9vZmZzZXRfMTIgPSBNW29mZnNldCArIDEyXTtcblx0ICAgICAgICAgICAgdmFyIE1fb2Zmc2V0XzEzID0gTVtvZmZzZXQgKyAxM107XG5cdCAgICAgICAgICAgIHZhciBNX29mZnNldF8xNCA9IE1bb2Zmc2V0ICsgMTRdO1xuXHQgICAgICAgICAgICB2YXIgTV9vZmZzZXRfMTUgPSBNW29mZnNldCArIDE1XTtcblxuXHQgICAgICAgICAgICAvLyBXb3JraW5nIHZhcmlhbGJlc1xuXHQgICAgICAgICAgICB2YXIgYSA9IEhbMF07XG5cdCAgICAgICAgICAgIHZhciBiID0gSFsxXTtcblx0ICAgICAgICAgICAgdmFyIGMgPSBIWzJdO1xuXHQgICAgICAgICAgICB2YXIgZCA9IEhbM107XG5cblx0ICAgICAgICAgICAgLy8gQ29tcHV0YXRpb25cblx0ICAgICAgICAgICAgYSA9IEZGKGEsIGIsIGMsIGQsIE1fb2Zmc2V0XzAsICA3LCAgVFswXSk7XG5cdCAgICAgICAgICAgIGQgPSBGRihkLCBhLCBiLCBjLCBNX29mZnNldF8xLCAgMTIsIFRbMV0pO1xuXHQgICAgICAgICAgICBjID0gRkYoYywgZCwgYSwgYiwgTV9vZmZzZXRfMiwgIDE3LCBUWzJdKTtcblx0ICAgICAgICAgICAgYiA9IEZGKGIsIGMsIGQsIGEsIE1fb2Zmc2V0XzMsICAyMiwgVFszXSk7XG5cdCAgICAgICAgICAgIGEgPSBGRihhLCBiLCBjLCBkLCBNX29mZnNldF80LCAgNywgIFRbNF0pO1xuXHQgICAgICAgICAgICBkID0gRkYoZCwgYSwgYiwgYywgTV9vZmZzZXRfNSwgIDEyLCBUWzVdKTtcblx0ICAgICAgICAgICAgYyA9IEZGKGMsIGQsIGEsIGIsIE1fb2Zmc2V0XzYsICAxNywgVFs2XSk7XG5cdCAgICAgICAgICAgIGIgPSBGRihiLCBjLCBkLCBhLCBNX29mZnNldF83LCAgMjIsIFRbN10pO1xuXHQgICAgICAgICAgICBhID0gRkYoYSwgYiwgYywgZCwgTV9vZmZzZXRfOCwgIDcsICBUWzhdKTtcblx0ICAgICAgICAgICAgZCA9IEZGKGQsIGEsIGIsIGMsIE1fb2Zmc2V0XzksICAxMiwgVFs5XSk7XG5cdCAgICAgICAgICAgIGMgPSBGRihjLCBkLCBhLCBiLCBNX29mZnNldF8xMCwgMTcsIFRbMTBdKTtcblx0ICAgICAgICAgICAgYiA9IEZGKGIsIGMsIGQsIGEsIE1fb2Zmc2V0XzExLCAyMiwgVFsxMV0pO1xuXHQgICAgICAgICAgICBhID0gRkYoYSwgYiwgYywgZCwgTV9vZmZzZXRfMTIsIDcsICBUWzEyXSk7XG5cdCAgICAgICAgICAgIGQgPSBGRihkLCBhLCBiLCBjLCBNX29mZnNldF8xMywgMTIsIFRbMTNdKTtcblx0ICAgICAgICAgICAgYyA9IEZGKGMsIGQsIGEsIGIsIE1fb2Zmc2V0XzE0LCAxNywgVFsxNF0pO1xuXHQgICAgICAgICAgICBiID0gRkYoYiwgYywgZCwgYSwgTV9vZmZzZXRfMTUsIDIyLCBUWzE1XSk7XG5cblx0ICAgICAgICAgICAgYSA9IEdHKGEsIGIsIGMsIGQsIE1fb2Zmc2V0XzEsICA1LCAgVFsxNl0pO1xuXHQgICAgICAgICAgICBkID0gR0coZCwgYSwgYiwgYywgTV9vZmZzZXRfNiwgIDksICBUWzE3XSk7XG5cdCAgICAgICAgICAgIGMgPSBHRyhjLCBkLCBhLCBiLCBNX29mZnNldF8xMSwgMTQsIFRbMThdKTtcblx0ICAgICAgICAgICAgYiA9IEdHKGIsIGMsIGQsIGEsIE1fb2Zmc2V0XzAsICAyMCwgVFsxOV0pO1xuXHQgICAgICAgICAgICBhID0gR0coYSwgYiwgYywgZCwgTV9vZmZzZXRfNSwgIDUsICBUWzIwXSk7XG5cdCAgICAgICAgICAgIGQgPSBHRyhkLCBhLCBiLCBjLCBNX29mZnNldF8xMCwgOSwgIFRbMjFdKTtcblx0ICAgICAgICAgICAgYyA9IEdHKGMsIGQsIGEsIGIsIE1fb2Zmc2V0XzE1LCAxNCwgVFsyMl0pO1xuXHQgICAgICAgICAgICBiID0gR0coYiwgYywgZCwgYSwgTV9vZmZzZXRfNCwgIDIwLCBUWzIzXSk7XG5cdCAgICAgICAgICAgIGEgPSBHRyhhLCBiLCBjLCBkLCBNX29mZnNldF85LCAgNSwgIFRbMjRdKTtcblx0ICAgICAgICAgICAgZCA9IEdHKGQsIGEsIGIsIGMsIE1fb2Zmc2V0XzE0LCA5LCAgVFsyNV0pO1xuXHQgICAgICAgICAgICBjID0gR0coYywgZCwgYSwgYiwgTV9vZmZzZXRfMywgIDE0LCBUWzI2XSk7XG5cdCAgICAgICAgICAgIGIgPSBHRyhiLCBjLCBkLCBhLCBNX29mZnNldF84LCAgMjAsIFRbMjddKTtcblx0ICAgICAgICAgICAgYSA9IEdHKGEsIGIsIGMsIGQsIE1fb2Zmc2V0XzEzLCA1LCAgVFsyOF0pO1xuXHQgICAgICAgICAgICBkID0gR0coZCwgYSwgYiwgYywgTV9vZmZzZXRfMiwgIDksICBUWzI5XSk7XG5cdCAgICAgICAgICAgIGMgPSBHRyhjLCBkLCBhLCBiLCBNX29mZnNldF83LCAgMTQsIFRbMzBdKTtcblx0ICAgICAgICAgICAgYiA9IEdHKGIsIGMsIGQsIGEsIE1fb2Zmc2V0XzEyLCAyMCwgVFszMV0pO1xuXG5cdCAgICAgICAgICAgIGEgPSBISChhLCBiLCBjLCBkLCBNX29mZnNldF81LCAgNCwgIFRbMzJdKTtcblx0ICAgICAgICAgICAgZCA9IEhIKGQsIGEsIGIsIGMsIE1fb2Zmc2V0XzgsICAxMSwgVFszM10pO1xuXHQgICAgICAgICAgICBjID0gSEgoYywgZCwgYSwgYiwgTV9vZmZzZXRfMTEsIDE2LCBUWzM0XSk7XG5cdCAgICAgICAgICAgIGIgPSBISChiLCBjLCBkLCBhLCBNX29mZnNldF8xNCwgMjMsIFRbMzVdKTtcblx0ICAgICAgICAgICAgYSA9IEhIKGEsIGIsIGMsIGQsIE1fb2Zmc2V0XzEsICA0LCAgVFszNl0pO1xuXHQgICAgICAgICAgICBkID0gSEgoZCwgYSwgYiwgYywgTV9vZmZzZXRfNCwgIDExLCBUWzM3XSk7XG5cdCAgICAgICAgICAgIGMgPSBISChjLCBkLCBhLCBiLCBNX29mZnNldF83LCAgMTYsIFRbMzhdKTtcblx0ICAgICAgICAgICAgYiA9IEhIKGIsIGMsIGQsIGEsIE1fb2Zmc2V0XzEwLCAyMywgVFszOV0pO1xuXHQgICAgICAgICAgICBhID0gSEgoYSwgYiwgYywgZCwgTV9vZmZzZXRfMTMsIDQsICBUWzQwXSk7XG5cdCAgICAgICAgICAgIGQgPSBISChkLCBhLCBiLCBjLCBNX29mZnNldF8wLCAgMTEsIFRbNDFdKTtcblx0ICAgICAgICAgICAgYyA9IEhIKGMsIGQsIGEsIGIsIE1fb2Zmc2V0XzMsICAxNiwgVFs0Ml0pO1xuXHQgICAgICAgICAgICBiID0gSEgoYiwgYywgZCwgYSwgTV9vZmZzZXRfNiwgIDIzLCBUWzQzXSk7XG5cdCAgICAgICAgICAgIGEgPSBISChhLCBiLCBjLCBkLCBNX29mZnNldF85LCAgNCwgIFRbNDRdKTtcblx0ICAgICAgICAgICAgZCA9IEhIKGQsIGEsIGIsIGMsIE1fb2Zmc2V0XzEyLCAxMSwgVFs0NV0pO1xuXHQgICAgICAgICAgICBjID0gSEgoYywgZCwgYSwgYiwgTV9vZmZzZXRfMTUsIDE2LCBUWzQ2XSk7XG5cdCAgICAgICAgICAgIGIgPSBISChiLCBjLCBkLCBhLCBNX29mZnNldF8yLCAgMjMsIFRbNDddKTtcblxuXHQgICAgICAgICAgICBhID0gSUkoYSwgYiwgYywgZCwgTV9vZmZzZXRfMCwgIDYsICBUWzQ4XSk7XG5cdCAgICAgICAgICAgIGQgPSBJSShkLCBhLCBiLCBjLCBNX29mZnNldF83LCAgMTAsIFRbNDldKTtcblx0ICAgICAgICAgICAgYyA9IElJKGMsIGQsIGEsIGIsIE1fb2Zmc2V0XzE0LCAxNSwgVFs1MF0pO1xuXHQgICAgICAgICAgICBiID0gSUkoYiwgYywgZCwgYSwgTV9vZmZzZXRfNSwgIDIxLCBUWzUxXSk7XG5cdCAgICAgICAgICAgIGEgPSBJSShhLCBiLCBjLCBkLCBNX29mZnNldF8xMiwgNiwgIFRbNTJdKTtcblx0ICAgICAgICAgICAgZCA9IElJKGQsIGEsIGIsIGMsIE1fb2Zmc2V0XzMsICAxMCwgVFs1M10pO1xuXHQgICAgICAgICAgICBjID0gSUkoYywgZCwgYSwgYiwgTV9vZmZzZXRfMTAsIDE1LCBUWzU0XSk7XG5cdCAgICAgICAgICAgIGIgPSBJSShiLCBjLCBkLCBhLCBNX29mZnNldF8xLCAgMjEsIFRbNTVdKTtcblx0ICAgICAgICAgICAgYSA9IElJKGEsIGIsIGMsIGQsIE1fb2Zmc2V0XzgsICA2LCAgVFs1Nl0pO1xuXHQgICAgICAgICAgICBkID0gSUkoZCwgYSwgYiwgYywgTV9vZmZzZXRfMTUsIDEwLCBUWzU3XSk7XG5cdCAgICAgICAgICAgIGMgPSBJSShjLCBkLCBhLCBiLCBNX29mZnNldF82LCAgMTUsIFRbNThdKTtcblx0ICAgICAgICAgICAgYiA9IElJKGIsIGMsIGQsIGEsIE1fb2Zmc2V0XzEzLCAyMSwgVFs1OV0pO1xuXHQgICAgICAgICAgICBhID0gSUkoYSwgYiwgYywgZCwgTV9vZmZzZXRfNCwgIDYsICBUWzYwXSk7XG5cdCAgICAgICAgICAgIGQgPSBJSShkLCBhLCBiLCBjLCBNX29mZnNldF8xMSwgMTAsIFRbNjFdKTtcblx0ICAgICAgICAgICAgYyA9IElJKGMsIGQsIGEsIGIsIE1fb2Zmc2V0XzIsICAxNSwgVFs2Ml0pO1xuXHQgICAgICAgICAgICBiID0gSUkoYiwgYywgZCwgYSwgTV9vZmZzZXRfOSwgIDIxLCBUWzYzXSk7XG5cblx0ICAgICAgICAgICAgLy8gSW50ZXJtZWRpYXRlIGhhc2ggdmFsdWVcblx0ICAgICAgICAgICAgSFswXSA9IChIWzBdICsgYSkgfCAwO1xuXHQgICAgICAgICAgICBIWzFdID0gKEhbMV0gKyBiKSB8IDA7XG5cdCAgICAgICAgICAgIEhbMl0gPSAoSFsyXSArIGMpIHwgMDtcblx0ICAgICAgICAgICAgSFszXSA9IChIWzNdICsgZCkgfCAwO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBfZG9GaW5hbGl6ZTogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIGRhdGEgPSB0aGlzLl9kYXRhO1xuXHQgICAgICAgICAgICB2YXIgZGF0YVdvcmRzID0gZGF0YS53b3JkcztcblxuXHQgICAgICAgICAgICB2YXIgbkJpdHNUb3RhbCA9IHRoaXMuX25EYXRhQnl0ZXMgKiA4O1xuXHQgICAgICAgICAgICB2YXIgbkJpdHNMZWZ0ID0gZGF0YS5zaWdCeXRlcyAqIDg7XG5cblx0ICAgICAgICAgICAgLy8gQWRkIHBhZGRpbmdcblx0ICAgICAgICAgICAgZGF0YVdvcmRzW25CaXRzTGVmdCA+Pj4gNV0gfD0gMHg4MCA8PCAoMjQgLSBuQml0c0xlZnQgJSAzMik7XG5cblx0ICAgICAgICAgICAgdmFyIG5CaXRzVG90YWxIID0gTWF0aC5mbG9vcihuQml0c1RvdGFsIC8gMHgxMDAwMDAwMDApO1xuXHQgICAgICAgICAgICB2YXIgbkJpdHNUb3RhbEwgPSBuQml0c1RvdGFsO1xuXHQgICAgICAgICAgICBkYXRhV29yZHNbKCgobkJpdHNMZWZ0ICsgNjQpID4+PiA5KSA8PCA0KSArIDE1XSA9IChcblx0ICAgICAgICAgICAgICAgICgoKG5CaXRzVG90YWxIIDw8IDgpICB8IChuQml0c1RvdGFsSCA+Pj4gMjQpKSAmIDB4MDBmZjAwZmYpIHxcblx0ICAgICAgICAgICAgICAgICgoKG5CaXRzVG90YWxIIDw8IDI0KSB8IChuQml0c1RvdGFsSCA+Pj4gOCkpICAmIDB4ZmYwMGZmMDApXG5cdCAgICAgICAgICAgICk7XG5cdCAgICAgICAgICAgIGRhdGFXb3Jkc1soKChuQml0c0xlZnQgKyA2NCkgPj4+IDkpIDw8IDQpICsgMTRdID0gKFxuXHQgICAgICAgICAgICAgICAgKCgobkJpdHNUb3RhbEwgPDwgOCkgIHwgKG5CaXRzVG90YWxMID4+PiAyNCkpICYgMHgwMGZmMDBmZikgfFxuXHQgICAgICAgICAgICAgICAgKCgobkJpdHNUb3RhbEwgPDwgMjQpIHwgKG5CaXRzVG90YWxMID4+PiA4KSkgICYgMHhmZjAwZmYwMClcblx0ICAgICAgICAgICAgKTtcblxuXHQgICAgICAgICAgICBkYXRhLnNpZ0J5dGVzID0gKGRhdGFXb3Jkcy5sZW5ndGggKyAxKSAqIDQ7XG5cblx0ICAgICAgICAgICAgLy8gSGFzaCBmaW5hbCBibG9ja3Ncblx0ICAgICAgICAgICAgdGhpcy5fcHJvY2VzcygpO1xuXG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgaGFzaCA9IHRoaXMuX2hhc2g7XG5cdCAgICAgICAgICAgIHZhciBIID0gaGFzaC53b3JkcztcblxuXHQgICAgICAgICAgICAvLyBTd2FwIGVuZGlhblxuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgLy8gU2hvcnRjdXRcblx0ICAgICAgICAgICAgICAgIHZhciBIX2kgPSBIW2ldO1xuXG5cdCAgICAgICAgICAgICAgICBIW2ldID0gKCgoSF9pIDw8IDgpICB8IChIX2kgPj4+IDI0KSkgJiAweDAwZmYwMGZmKSB8XG5cdCAgICAgICAgICAgICAgICAgICAgICAgKCgoSF9pIDw8IDI0KSB8IChIX2kgPj4+IDgpKSAgJiAweGZmMDBmZjAwKTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIFJldHVybiBmaW5hbCBjb21wdXRlZCBoYXNoXG5cdCAgICAgICAgICAgIHJldHVybiBoYXNoO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBjbG9uZTogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICB2YXIgY2xvbmUgPSBIYXNoZXIuY2xvbmUuY2FsbCh0aGlzKTtcblx0ICAgICAgICAgICAgY2xvbmUuX2hhc2ggPSB0aGlzLl9oYXNoLmNsb25lKCk7XG5cblx0ICAgICAgICAgICAgcmV0dXJuIGNsb25lO1xuXHQgICAgICAgIH1cblx0ICAgIH0pO1xuXG5cdCAgICBmdW5jdGlvbiBGRihhLCBiLCBjLCBkLCB4LCBzLCB0KSB7XG5cdCAgICAgICAgdmFyIG4gPSBhICsgKChiICYgYykgfCAofmIgJiBkKSkgKyB4ICsgdDtcblx0ICAgICAgICByZXR1cm4gKChuIDw8IHMpIHwgKG4gPj4+ICgzMiAtIHMpKSkgKyBiO1xuXHQgICAgfVxuXG5cdCAgICBmdW5jdGlvbiBHRyhhLCBiLCBjLCBkLCB4LCBzLCB0KSB7XG5cdCAgICAgICAgdmFyIG4gPSBhICsgKChiICYgZCkgfCAoYyAmIH5kKSkgKyB4ICsgdDtcblx0ICAgICAgICByZXR1cm4gKChuIDw8IHMpIHwgKG4gPj4+ICgzMiAtIHMpKSkgKyBiO1xuXHQgICAgfVxuXG5cdCAgICBmdW5jdGlvbiBISChhLCBiLCBjLCBkLCB4LCBzLCB0KSB7XG5cdCAgICAgICAgdmFyIG4gPSBhICsgKGIgXiBjIF4gZCkgKyB4ICsgdDtcblx0ICAgICAgICByZXR1cm4gKChuIDw8IHMpIHwgKG4gPj4+ICgzMiAtIHMpKSkgKyBiO1xuXHQgICAgfVxuXG5cdCAgICBmdW5jdGlvbiBJSShhLCBiLCBjLCBkLCB4LCBzLCB0KSB7XG5cdCAgICAgICAgdmFyIG4gPSBhICsgKGMgXiAoYiB8IH5kKSkgKyB4ICsgdDtcblx0ICAgICAgICByZXR1cm4gKChuIDw8IHMpIHwgKG4gPj4+ICgzMiAtIHMpKSkgKyBiO1xuXHQgICAgfVxuXG5cdCAgICAvKipcblx0ICAgICAqIFNob3J0Y3V0IGZ1bmN0aW9uIHRvIHRoZSBoYXNoZXIncyBvYmplY3QgaW50ZXJmYWNlLlxuXHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gbWVzc2FnZSBUaGUgbWVzc2FnZSB0byBoYXNoLlxuXHQgICAgICpcblx0ICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIGhhc2guXG5cdCAgICAgKlxuXHQgICAgICogQHN0YXRpY1xuXHQgICAgICpcblx0ICAgICAqIEBleGFtcGxlXG5cdCAgICAgKlxuXHQgICAgICogICAgIHZhciBoYXNoID0gQ3J5cHRvSlMuTUQ1KCdtZXNzYWdlJyk7XG5cdCAgICAgKiAgICAgdmFyIGhhc2ggPSBDcnlwdG9KUy5NRDUod29yZEFycmF5KTtcblx0ICAgICAqL1xuXHQgICAgQy5NRDUgPSBIYXNoZXIuX2NyZWF0ZUhlbHBlcihNRDUpO1xuXG5cdCAgICAvKipcblx0ICAgICAqIFNob3J0Y3V0IGZ1bmN0aW9uIHRvIHRoZSBITUFDJ3Mgb2JqZWN0IGludGVyZmFjZS5cblx0ICAgICAqXG5cdCAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IG1lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gaGFzaC5cblx0ICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30ga2V5IFRoZSBzZWNyZXQga2V5LlxuXHQgICAgICpcblx0ICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIEhNQUMuXG5cdCAgICAgKlxuXHQgICAgICogQHN0YXRpY1xuXHQgICAgICpcblx0ICAgICAqIEBleGFtcGxlXG5cdCAgICAgKlxuXHQgICAgICogICAgIHZhciBobWFjID0gQ3J5cHRvSlMuSG1hY01ENShtZXNzYWdlLCBrZXkpO1xuXHQgICAgICovXG5cdCAgICBDLkhtYWNNRDUgPSBIYXNoZXIuX2NyZWF0ZUhtYWNIZWxwZXIoTUQ1KTtcblx0fShNYXRoKSk7XG5cblxuXHRyZXR1cm4gQ3J5cHRvSlMuTUQ1O1xuXG59KSk7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSwgdW5kZWYpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIiksIHJlcXVpcmUoXCIuL2NpcGhlci1jb3JlXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIiwgXCIuL2NpcGhlci1jb3JlXCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0ZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHQvKipcblx0ICogQ2lwaGVyIEZlZWRiYWNrIGJsb2NrIG1vZGUuXG5cdCAqL1xuXHRDcnlwdG9KUy5tb2RlLkNGQiA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICB2YXIgQ0ZCID0gQ3J5cHRvSlMubGliLkJsb2NrQ2lwaGVyTW9kZS5leHRlbmQoKTtcblxuXHQgICAgQ0ZCLkVuY3J5cHRvciA9IENGQi5leHRlbmQoe1xuXHQgICAgICAgIHByb2Nlc3NCbG9jazogZnVuY3Rpb24gKHdvcmRzLCBvZmZzZXQpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBjaXBoZXIgPSB0aGlzLl9jaXBoZXI7XG5cdCAgICAgICAgICAgIHZhciBibG9ja1NpemUgPSBjaXBoZXIuYmxvY2tTaXplO1xuXG5cdCAgICAgICAgICAgIGdlbmVyYXRlS2V5c3RyZWFtQW5kRW5jcnlwdC5jYWxsKHRoaXMsIHdvcmRzLCBvZmZzZXQsIGJsb2NrU2l6ZSwgY2lwaGVyKTtcblxuXHQgICAgICAgICAgICAvLyBSZW1lbWJlciB0aGlzIGJsb2NrIHRvIHVzZSB3aXRoIG5leHQgYmxvY2tcblx0ICAgICAgICAgICAgdGhpcy5fcHJldkJsb2NrID0gd29yZHMuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBibG9ja1NpemUpO1xuXHQgICAgICAgIH1cblx0ICAgIH0pO1xuXG5cdCAgICBDRkIuRGVjcnlwdG9yID0gQ0ZCLmV4dGVuZCh7XG5cdCAgICAgICAgcHJvY2Vzc0Jsb2NrOiBmdW5jdGlvbiAod29yZHMsIG9mZnNldCkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIGNpcGhlciA9IHRoaXMuX2NpcGhlcjtcblx0ICAgICAgICAgICAgdmFyIGJsb2NrU2l6ZSA9IGNpcGhlci5ibG9ja1NpemU7XG5cblx0ICAgICAgICAgICAgLy8gUmVtZW1iZXIgdGhpcyBibG9jayB0byB1c2Ugd2l0aCBuZXh0IGJsb2NrXG5cdCAgICAgICAgICAgIHZhciB0aGlzQmxvY2sgPSB3b3Jkcy5zbGljZShvZmZzZXQsIG9mZnNldCArIGJsb2NrU2l6ZSk7XG5cblx0ICAgICAgICAgICAgZ2VuZXJhdGVLZXlzdHJlYW1BbmRFbmNyeXB0LmNhbGwodGhpcywgd29yZHMsIG9mZnNldCwgYmxvY2tTaXplLCBjaXBoZXIpO1xuXG5cdCAgICAgICAgICAgIC8vIFRoaXMgYmxvY2sgYmVjb21lcyB0aGUgcHJldmlvdXMgYmxvY2tcblx0ICAgICAgICAgICAgdGhpcy5fcHJldkJsb2NrID0gdGhpc0Jsb2NrO1xuXHQgICAgICAgIH1cblx0ICAgIH0pO1xuXG5cdCAgICBmdW5jdGlvbiBnZW5lcmF0ZUtleXN0cmVhbUFuZEVuY3J5cHQod29yZHMsIG9mZnNldCwgYmxvY2tTaXplLCBjaXBoZXIpIHtcblx0ICAgICAgICB2YXIga2V5c3RyZWFtO1xuXG5cdCAgICAgICAgLy8gU2hvcnRjdXRcblx0ICAgICAgICB2YXIgaXYgPSB0aGlzLl9pdjtcblxuXHQgICAgICAgIC8vIEdlbmVyYXRlIGtleXN0cmVhbVxuXHQgICAgICAgIGlmIChpdikge1xuXHQgICAgICAgICAgICBrZXlzdHJlYW0gPSBpdi5zbGljZSgwKTtcblxuXHQgICAgICAgICAgICAvLyBSZW1vdmUgSVYgZm9yIHN1YnNlcXVlbnQgYmxvY2tzXG5cdCAgICAgICAgICAgIHRoaXMuX2l2ID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgIGtleXN0cmVhbSA9IHRoaXMuX3ByZXZCbG9jaztcblx0ICAgICAgICB9XG5cdCAgICAgICAgY2lwaGVyLmVuY3J5cHRCbG9jayhrZXlzdHJlYW0sIDApO1xuXG5cdCAgICAgICAgLy8gRW5jcnlwdFxuXHQgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmxvY2tTaXplOyBpKyspIHtcblx0ICAgICAgICAgICAgd29yZHNbb2Zmc2V0ICsgaV0gXj0ga2V5c3RyZWFtW2ldO1xuXHQgICAgICAgIH1cblx0ICAgIH1cblxuXHQgICAgcmV0dXJuIENGQjtcblx0fSgpKTtcblxuXG5cdHJldHVybiBDcnlwdG9KUy5tb2RlLkNGQjtcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnksIHVuZGVmKSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpLCByZXF1aXJlKFwiLi9jaXBoZXItY29yZVwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCIsIFwiLi9jaXBoZXItY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0LyoqIEBwcmVzZXJ2ZVxuXHQgKiBDb3VudGVyIGJsb2NrIG1vZGUgY29tcGF0aWJsZSB3aXRoICBEciBCcmlhbiBHbGFkbWFuIGZpbGVlbmMuY1xuXHQgKiBkZXJpdmVkIGZyb20gQ3J5cHRvSlMubW9kZS5DVFJcblx0ICogSmFuIEhydWJ5IGpocnVieS53ZWJAZ21haWwuY29tXG5cdCAqL1xuXHRDcnlwdG9KUy5tb2RlLkNUUkdsYWRtYW4gPSAoZnVuY3Rpb24gKCkge1xuXHQgICAgdmFyIENUUkdsYWRtYW4gPSBDcnlwdG9KUy5saWIuQmxvY2tDaXBoZXJNb2RlLmV4dGVuZCgpO1xuXG5cdFx0ZnVuY3Rpb24gaW5jV29yZCh3b3JkKVxuXHRcdHtcblx0XHRcdGlmICgoKHdvcmQgPj4gMjQpICYgMHhmZikgPT09IDB4ZmYpIHsgLy9vdmVyZmxvd1xuXHRcdFx0dmFyIGIxID0gKHdvcmQgPj4gMTYpJjB4ZmY7XG5cdFx0XHR2YXIgYjIgPSAod29yZCA+PiA4KSYweGZmO1xuXHRcdFx0dmFyIGIzID0gd29yZCAmIDB4ZmY7XG5cblx0XHRcdGlmIChiMSA9PT0gMHhmZikgLy8gb3ZlcmZsb3cgYjFcblx0XHRcdHtcblx0XHRcdGIxID0gMDtcblx0XHRcdGlmIChiMiA9PT0gMHhmZilcblx0XHRcdHtcblx0XHRcdFx0YjIgPSAwO1xuXHRcdFx0XHRpZiAoYjMgPT09IDB4ZmYpXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRiMyA9IDA7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0KytiMztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0ZWxzZVxuXHRcdFx0e1xuXHRcdFx0XHQrK2IyO1xuXHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0ZWxzZVxuXHRcdFx0e1xuXHRcdFx0KytiMTtcblx0XHRcdH1cblxuXHRcdFx0d29yZCA9IDA7XG5cdFx0XHR3b3JkICs9IChiMSA8PCAxNik7XG5cdFx0XHR3b3JkICs9IChiMiA8PCA4KTtcblx0XHRcdHdvcmQgKz0gYjM7XG5cdFx0XHR9XG5cdFx0XHRlbHNlXG5cdFx0XHR7XG5cdFx0XHR3b3JkICs9ICgweDAxIDw8IDI0KTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB3b3JkO1xuXHRcdH1cblxuXHRcdGZ1bmN0aW9uIGluY0NvdW50ZXIoY291bnRlcilcblx0XHR7XG5cdFx0XHRpZiAoKGNvdW50ZXJbMF0gPSBpbmNXb3JkKGNvdW50ZXJbMF0pKSA9PT0gMClcblx0XHRcdHtcblx0XHRcdFx0Ly8gZW5jcl9kYXRhIGluIGZpbGVlbmMuYyBmcm9tICBEciBCcmlhbiBHbGFkbWFuJ3MgY291bnRzIG9ubHkgd2l0aCBEV09SRCBqIDwgOFxuXHRcdFx0XHRjb3VudGVyWzFdID0gaW5jV29yZChjb3VudGVyWzFdKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBjb3VudGVyO1xuXHRcdH1cblxuXHQgICAgdmFyIEVuY3J5cHRvciA9IENUUkdsYWRtYW4uRW5jcnlwdG9yID0gQ1RSR2xhZG1hbi5leHRlbmQoe1xuXHQgICAgICAgIHByb2Nlc3NCbG9jazogZnVuY3Rpb24gKHdvcmRzLCBvZmZzZXQpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBjaXBoZXIgPSB0aGlzLl9jaXBoZXJcblx0ICAgICAgICAgICAgdmFyIGJsb2NrU2l6ZSA9IGNpcGhlci5ibG9ja1NpemU7XG5cdCAgICAgICAgICAgIHZhciBpdiA9IHRoaXMuX2l2O1xuXHQgICAgICAgICAgICB2YXIgY291bnRlciA9IHRoaXMuX2NvdW50ZXI7XG5cblx0ICAgICAgICAgICAgLy8gR2VuZXJhdGUga2V5c3RyZWFtXG5cdCAgICAgICAgICAgIGlmIChpdikge1xuXHQgICAgICAgICAgICAgICAgY291bnRlciA9IHRoaXMuX2NvdW50ZXIgPSBpdi5zbGljZSgwKTtcblxuXHQgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIElWIGZvciBzdWJzZXF1ZW50IGJsb2Nrc1xuXHQgICAgICAgICAgICAgICAgdGhpcy5faXYgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgICAgIH1cblxuXHRcdFx0XHRpbmNDb3VudGVyKGNvdW50ZXIpO1xuXG5cdFx0XHRcdHZhciBrZXlzdHJlYW0gPSBjb3VudGVyLnNsaWNlKDApO1xuXHQgICAgICAgICAgICBjaXBoZXIuZW5jcnlwdEJsb2NrKGtleXN0cmVhbSwgMCk7XG5cblx0ICAgICAgICAgICAgLy8gRW5jcnlwdFxuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJsb2NrU2l6ZTsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICB3b3Jkc1tvZmZzZXQgKyBpXSBePSBrZXlzdHJlYW1baV07XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICB9KTtcblxuXHQgICAgQ1RSR2xhZG1hbi5EZWNyeXB0b3IgPSBFbmNyeXB0b3I7XG5cblx0ICAgIHJldHVybiBDVFJHbGFkbWFuO1xuXHR9KCkpO1xuXG5cblxuXG5cdHJldHVybiBDcnlwdG9KUy5tb2RlLkNUUkdsYWRtYW47XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5LCB1bmRlZikge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSwgcmVxdWlyZShcIi4vY2lwaGVyLWNvcmVcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiLCBcIi4vY2lwaGVyLWNvcmVcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdC8qKlxuXHQgKiBDb3VudGVyIGJsb2NrIG1vZGUuXG5cdCAqL1xuXHRDcnlwdG9KUy5tb2RlLkNUUiA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICB2YXIgQ1RSID0gQ3J5cHRvSlMubGliLkJsb2NrQ2lwaGVyTW9kZS5leHRlbmQoKTtcblxuXHQgICAgdmFyIEVuY3J5cHRvciA9IENUUi5FbmNyeXB0b3IgPSBDVFIuZXh0ZW5kKHtcblx0ICAgICAgICBwcm9jZXNzQmxvY2s6IGZ1bmN0aW9uICh3b3Jkcywgb2Zmc2V0KSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgY2lwaGVyID0gdGhpcy5fY2lwaGVyXG5cdCAgICAgICAgICAgIHZhciBibG9ja1NpemUgPSBjaXBoZXIuYmxvY2tTaXplO1xuXHQgICAgICAgICAgICB2YXIgaXYgPSB0aGlzLl9pdjtcblx0ICAgICAgICAgICAgdmFyIGNvdW50ZXIgPSB0aGlzLl9jb3VudGVyO1xuXG5cdCAgICAgICAgICAgIC8vIEdlbmVyYXRlIGtleXN0cmVhbVxuXHQgICAgICAgICAgICBpZiAoaXYpIHtcblx0ICAgICAgICAgICAgICAgIGNvdW50ZXIgPSB0aGlzLl9jb3VudGVyID0gaXYuc2xpY2UoMCk7XG5cblx0ICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBJViBmb3Igc3Vic2VxdWVudCBibG9ja3Ncblx0ICAgICAgICAgICAgICAgIHRoaXMuX2l2ID0gdW5kZWZpbmVkO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIHZhciBrZXlzdHJlYW0gPSBjb3VudGVyLnNsaWNlKDApO1xuXHQgICAgICAgICAgICBjaXBoZXIuZW5jcnlwdEJsb2NrKGtleXN0cmVhbSwgMCk7XG5cblx0ICAgICAgICAgICAgLy8gSW5jcmVtZW50IGNvdW50ZXJcblx0ICAgICAgICAgICAgY291bnRlcltibG9ja1NpemUgLSAxXSA9IChjb3VudGVyW2Jsb2NrU2l6ZSAtIDFdICsgMSkgfCAwXG5cblx0ICAgICAgICAgICAgLy8gRW5jcnlwdFxuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJsb2NrU2l6ZTsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICB3b3Jkc1tvZmZzZXQgKyBpXSBePSBrZXlzdHJlYW1baV07XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICB9KTtcblxuXHQgICAgQ1RSLkRlY3J5cHRvciA9IEVuY3J5cHRvcjtcblxuXHQgICAgcmV0dXJuIENUUjtcblx0fSgpKTtcblxuXG5cdHJldHVybiBDcnlwdG9KUy5tb2RlLkNUUjtcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnksIHVuZGVmKSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpLCByZXF1aXJlKFwiLi9jaXBoZXItY29yZVwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCIsIFwiLi9jaXBoZXItY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0LyoqXG5cdCAqIEVsZWN0cm9uaWMgQ29kZWJvb2sgYmxvY2sgbW9kZS5cblx0ICovXG5cdENyeXB0b0pTLm1vZGUuRUNCID0gKGZ1bmN0aW9uICgpIHtcblx0ICAgIHZhciBFQ0IgPSBDcnlwdG9KUy5saWIuQmxvY2tDaXBoZXJNb2RlLmV4dGVuZCgpO1xuXG5cdCAgICBFQ0IuRW5jcnlwdG9yID0gRUNCLmV4dGVuZCh7XG5cdCAgICAgICAgcHJvY2Vzc0Jsb2NrOiBmdW5jdGlvbiAod29yZHMsIG9mZnNldCkge1xuXHQgICAgICAgICAgICB0aGlzLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHdvcmRzLCBvZmZzZXQpO1xuXHQgICAgICAgIH1cblx0ICAgIH0pO1xuXG5cdCAgICBFQ0IuRGVjcnlwdG9yID0gRUNCLmV4dGVuZCh7XG5cdCAgICAgICAgcHJvY2Vzc0Jsb2NrOiBmdW5jdGlvbiAod29yZHMsIG9mZnNldCkge1xuXHQgICAgICAgICAgICB0aGlzLl9jaXBoZXIuZGVjcnlwdEJsb2NrKHdvcmRzLCBvZmZzZXQpO1xuXHQgICAgICAgIH1cblx0ICAgIH0pO1xuXG5cdCAgICByZXR1cm4gRUNCO1xuXHR9KCkpO1xuXG5cblx0cmV0dXJuIENyeXB0b0pTLm1vZGUuRUNCO1xuXG59KSk7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSwgdW5kZWYpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIiksIHJlcXVpcmUoXCIuL2NpcGhlci1jb3JlXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIiwgXCIuL2NpcGhlci1jb3JlXCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0ZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHQvKipcblx0ICogT3V0cHV0IEZlZWRiYWNrIGJsb2NrIG1vZGUuXG5cdCAqL1xuXHRDcnlwdG9KUy5tb2RlLk9GQiA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICB2YXIgT0ZCID0gQ3J5cHRvSlMubGliLkJsb2NrQ2lwaGVyTW9kZS5leHRlbmQoKTtcblxuXHQgICAgdmFyIEVuY3J5cHRvciA9IE9GQi5FbmNyeXB0b3IgPSBPRkIuZXh0ZW5kKHtcblx0ICAgICAgICBwcm9jZXNzQmxvY2s6IGZ1bmN0aW9uICh3b3Jkcywgb2Zmc2V0KSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgY2lwaGVyID0gdGhpcy5fY2lwaGVyXG5cdCAgICAgICAgICAgIHZhciBibG9ja1NpemUgPSBjaXBoZXIuYmxvY2tTaXplO1xuXHQgICAgICAgICAgICB2YXIgaXYgPSB0aGlzLl9pdjtcblx0ICAgICAgICAgICAgdmFyIGtleXN0cmVhbSA9IHRoaXMuX2tleXN0cmVhbTtcblxuXHQgICAgICAgICAgICAvLyBHZW5lcmF0ZSBrZXlzdHJlYW1cblx0ICAgICAgICAgICAgaWYgKGl2KSB7XG5cdCAgICAgICAgICAgICAgICBrZXlzdHJlYW0gPSB0aGlzLl9rZXlzdHJlYW0gPSBpdi5zbGljZSgwKTtcblxuXHQgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIElWIGZvciBzdWJzZXF1ZW50IGJsb2Nrc1xuXHQgICAgICAgICAgICAgICAgdGhpcy5faXYgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgY2lwaGVyLmVuY3J5cHRCbG9jayhrZXlzdHJlYW0sIDApO1xuXG5cdCAgICAgICAgICAgIC8vIEVuY3J5cHRcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBibG9ja1NpemU7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgd29yZHNbb2Zmc2V0ICsgaV0gXj0ga2V5c3RyZWFtW2ldO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgfSk7XG5cblx0ICAgIE9GQi5EZWNyeXB0b3IgPSBFbmNyeXB0b3I7XG5cblx0ICAgIHJldHVybiBPRkI7XG5cdH0oKSk7XG5cblxuXHRyZXR1cm4gQ3J5cHRvSlMubW9kZS5PRkI7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5LCB1bmRlZikge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSwgcmVxdWlyZShcIi4vY2lwaGVyLWNvcmVcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiLCBcIi4vY2lwaGVyLWNvcmVcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdC8qKlxuXHQgKiBBTlNJIFguOTIzIHBhZGRpbmcgc3RyYXRlZ3kuXG5cdCAqL1xuXHRDcnlwdG9KUy5wYWQuQW5zaVg5MjMgPSB7XG5cdCAgICBwYWQ6IGZ1bmN0aW9uIChkYXRhLCBibG9ja1NpemUpIHtcblx0ICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICB2YXIgZGF0YVNpZ0J5dGVzID0gZGF0YS5zaWdCeXRlcztcblx0ICAgICAgICB2YXIgYmxvY2tTaXplQnl0ZXMgPSBibG9ja1NpemUgKiA0O1xuXG5cdCAgICAgICAgLy8gQ291bnQgcGFkZGluZyBieXRlc1xuXHQgICAgICAgIHZhciBuUGFkZGluZ0J5dGVzID0gYmxvY2tTaXplQnl0ZXMgLSBkYXRhU2lnQnl0ZXMgJSBibG9ja1NpemVCeXRlcztcblxuXHQgICAgICAgIC8vIENvbXB1dGUgbGFzdCBieXRlIHBvc2l0aW9uXG5cdCAgICAgICAgdmFyIGxhc3RCeXRlUG9zID0gZGF0YVNpZ0J5dGVzICsgblBhZGRpbmdCeXRlcyAtIDE7XG5cblx0ICAgICAgICAvLyBQYWRcblx0ICAgICAgICBkYXRhLmNsYW1wKCk7XG5cdCAgICAgICAgZGF0YS53b3Jkc1tsYXN0Qnl0ZVBvcyA+Pj4gMl0gfD0gblBhZGRpbmdCeXRlcyA8PCAoMjQgLSAobGFzdEJ5dGVQb3MgJSA0KSAqIDgpO1xuXHQgICAgICAgIGRhdGEuc2lnQnl0ZXMgKz0gblBhZGRpbmdCeXRlcztcblx0ICAgIH0sXG5cblx0ICAgIHVucGFkOiBmdW5jdGlvbiAoZGF0YSkge1xuXHQgICAgICAgIC8vIEdldCBudW1iZXIgb2YgcGFkZGluZyBieXRlcyBmcm9tIGxhc3QgYnl0ZVxuXHQgICAgICAgIHZhciBuUGFkZGluZ0J5dGVzID0gZGF0YS53b3Jkc1soZGF0YS5zaWdCeXRlcyAtIDEpID4+PiAyXSAmIDB4ZmY7XG5cblx0ICAgICAgICAvLyBSZW1vdmUgcGFkZGluZ1xuXHQgICAgICAgIGRhdGEuc2lnQnl0ZXMgLT0gblBhZGRpbmdCeXRlcztcblx0ICAgIH1cblx0fTtcblxuXG5cdHJldHVybiBDcnlwdG9KUy5wYWQuQW5zaXg5MjM7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5LCB1bmRlZikge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSwgcmVxdWlyZShcIi4vY2lwaGVyLWNvcmVcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiLCBcIi4vY2lwaGVyLWNvcmVcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdC8qKlxuXHQgKiBJU08gMTAxMjYgcGFkZGluZyBzdHJhdGVneS5cblx0ICovXG5cdENyeXB0b0pTLnBhZC5Jc28xMDEyNiA9IHtcblx0ICAgIHBhZDogZnVuY3Rpb24gKGRhdGEsIGJsb2NrU2l6ZSkge1xuXHQgICAgICAgIC8vIFNob3J0Y3V0XG5cdCAgICAgICAgdmFyIGJsb2NrU2l6ZUJ5dGVzID0gYmxvY2tTaXplICogNDtcblxuXHQgICAgICAgIC8vIENvdW50IHBhZGRpbmcgYnl0ZXNcblx0ICAgICAgICB2YXIgblBhZGRpbmdCeXRlcyA9IGJsb2NrU2l6ZUJ5dGVzIC0gZGF0YS5zaWdCeXRlcyAlIGJsb2NrU2l6ZUJ5dGVzO1xuXG5cdCAgICAgICAgLy8gUGFkXG5cdCAgICAgICAgZGF0YS5jb25jYXQoQ3J5cHRvSlMubGliLldvcmRBcnJheS5yYW5kb20oblBhZGRpbmdCeXRlcyAtIDEpKS5cblx0ICAgICAgICAgICAgIGNvbmNhdChDcnlwdG9KUy5saWIuV29yZEFycmF5LmNyZWF0ZShbblBhZGRpbmdCeXRlcyA8PCAyNF0sIDEpKTtcblx0ICAgIH0sXG5cblx0ICAgIHVucGFkOiBmdW5jdGlvbiAoZGF0YSkge1xuXHQgICAgICAgIC8vIEdldCBudW1iZXIgb2YgcGFkZGluZyBieXRlcyBmcm9tIGxhc3QgYnl0ZVxuXHQgICAgICAgIHZhciBuUGFkZGluZ0J5dGVzID0gZGF0YS53b3Jkc1soZGF0YS5zaWdCeXRlcyAtIDEpID4+PiAyXSAmIDB4ZmY7XG5cblx0ICAgICAgICAvLyBSZW1vdmUgcGFkZGluZ1xuXHQgICAgICAgIGRhdGEuc2lnQnl0ZXMgLT0gblBhZGRpbmdCeXRlcztcblx0ICAgIH1cblx0fTtcblxuXG5cdHJldHVybiBDcnlwdG9KUy5wYWQuSXNvMTAxMjY7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5LCB1bmRlZikge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSwgcmVxdWlyZShcIi4vY2lwaGVyLWNvcmVcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiLCBcIi4vY2lwaGVyLWNvcmVcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdC8qKlxuXHQgKiBJU08vSUVDIDk3OTctMSBQYWRkaW5nIE1ldGhvZCAyLlxuXHQgKi9cblx0Q3J5cHRvSlMucGFkLklzbzk3OTcxID0ge1xuXHQgICAgcGFkOiBmdW5jdGlvbiAoZGF0YSwgYmxvY2tTaXplKSB7XG5cdCAgICAgICAgLy8gQWRkIDB4ODAgYnl0ZVxuXHQgICAgICAgIGRhdGEuY29uY2F0KENyeXB0b0pTLmxpYi5Xb3JkQXJyYXkuY3JlYXRlKFsweDgwMDAwMDAwXSwgMSkpO1xuXG5cdCAgICAgICAgLy8gWmVybyBwYWQgdGhlIHJlc3Rcblx0ICAgICAgICBDcnlwdG9KUy5wYWQuWmVyb1BhZGRpbmcucGFkKGRhdGEsIGJsb2NrU2l6ZSk7XG5cdCAgICB9LFxuXG5cdCAgICB1bnBhZDogZnVuY3Rpb24gKGRhdGEpIHtcblx0ICAgICAgICAvLyBSZW1vdmUgemVybyBwYWRkaW5nXG5cdCAgICAgICAgQ3J5cHRvSlMucGFkLlplcm9QYWRkaW5nLnVucGFkKGRhdGEpO1xuXG5cdCAgICAgICAgLy8gUmVtb3ZlIG9uZSBtb3JlIGJ5dGUgLS0gdGhlIDB4ODAgYnl0ZVxuXHQgICAgICAgIGRhdGEuc2lnQnl0ZXMtLTtcblx0ICAgIH1cblx0fTtcblxuXG5cdHJldHVybiBDcnlwdG9KUy5wYWQuSXNvOTc5NzE7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5LCB1bmRlZikge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSwgcmVxdWlyZShcIi4vY2lwaGVyLWNvcmVcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiLCBcIi4vY2lwaGVyLWNvcmVcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdC8qKlxuXHQgKiBBIG5vb3AgcGFkZGluZyBzdHJhdGVneS5cblx0ICovXG5cdENyeXB0b0pTLnBhZC5Ob1BhZGRpbmcgPSB7XG5cdCAgICBwYWQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgIH0sXG5cblx0ICAgIHVucGFkOiBmdW5jdGlvbiAoKSB7XG5cdCAgICB9XG5cdH07XG5cblxuXHRyZXR1cm4gQ3J5cHRvSlMucGFkLk5vUGFkZGluZztcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnksIHVuZGVmKSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpLCByZXF1aXJlKFwiLi9jaXBoZXItY29yZVwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCIsIFwiLi9jaXBoZXItY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0LyoqXG5cdCAqIFplcm8gcGFkZGluZyBzdHJhdGVneS5cblx0ICovXG5cdENyeXB0b0pTLnBhZC5aZXJvUGFkZGluZyA9IHtcblx0ICAgIHBhZDogZnVuY3Rpb24gKGRhdGEsIGJsb2NrU2l6ZSkge1xuXHQgICAgICAgIC8vIFNob3J0Y3V0XG5cdCAgICAgICAgdmFyIGJsb2NrU2l6ZUJ5dGVzID0gYmxvY2tTaXplICogNDtcblxuXHQgICAgICAgIC8vIFBhZFxuXHQgICAgICAgIGRhdGEuY2xhbXAoKTtcblx0ICAgICAgICBkYXRhLnNpZ0J5dGVzICs9IGJsb2NrU2l6ZUJ5dGVzIC0gKChkYXRhLnNpZ0J5dGVzICUgYmxvY2tTaXplQnl0ZXMpIHx8IGJsb2NrU2l6ZUJ5dGVzKTtcblx0ICAgIH0sXG5cblx0ICAgIHVucGFkOiBmdW5jdGlvbiAoZGF0YSkge1xuXHQgICAgICAgIC8vIFNob3J0Y3V0XG5cdCAgICAgICAgdmFyIGRhdGFXb3JkcyA9IGRhdGEud29yZHM7XG5cblx0ICAgICAgICAvLyBVbnBhZFxuXHQgICAgICAgIHZhciBpID0gZGF0YS5zaWdCeXRlcyAtIDE7XG5cdCAgICAgICAgZm9yICh2YXIgaSA9IGRhdGEuc2lnQnl0ZXMgLSAxOyBpID49IDA7IGktLSkge1xuXHQgICAgICAgICAgICBpZiAoKChkYXRhV29yZHNbaSA+Pj4gMl0gPj4+ICgyNCAtIChpICUgNCkgKiA4KSkgJiAweGZmKSkge1xuXHQgICAgICAgICAgICAgICAgZGF0YS5zaWdCeXRlcyA9IGkgKyAxO1xuXHQgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICB9XG5cdH07XG5cblxuXHRyZXR1cm4gQ3J5cHRvSlMucGFkLlplcm9QYWRkaW5nO1xuXG59KSk7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSwgdW5kZWYpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIiksIHJlcXVpcmUoXCIuL3NoYTFcIiksIHJlcXVpcmUoXCIuL2htYWNcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiLCBcIi4vc2hhMVwiLCBcIi4vaG1hY1wiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0KGZ1bmN0aW9uICgpIHtcblx0ICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgdmFyIEMgPSBDcnlwdG9KUztcblx0ICAgIHZhciBDX2xpYiA9IEMubGliO1xuXHQgICAgdmFyIEJhc2UgPSBDX2xpYi5CYXNlO1xuXHQgICAgdmFyIFdvcmRBcnJheSA9IENfbGliLldvcmRBcnJheTtcblx0ICAgIHZhciBDX2FsZ28gPSBDLmFsZ287XG5cdCAgICB2YXIgU0hBMSA9IENfYWxnby5TSEExO1xuXHQgICAgdmFyIEhNQUMgPSBDX2FsZ28uSE1BQztcblxuXHQgICAgLyoqXG5cdCAgICAgKiBQYXNzd29yZC1CYXNlZCBLZXkgRGVyaXZhdGlvbiBGdW5jdGlvbiAyIGFsZ29yaXRobS5cblx0ICAgICAqL1xuXHQgICAgdmFyIFBCS0RGMiA9IENfYWxnby5QQktERjIgPSBCYXNlLmV4dGVuZCh7XG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29uZmlndXJhdGlvbiBvcHRpb25zLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHByb3BlcnR5IHtudW1iZXJ9IGtleVNpemUgVGhlIGtleSBzaXplIGluIHdvcmRzIHRvIGdlbmVyYXRlLiBEZWZhdWx0OiA0ICgxMjggYml0cylcblx0ICAgICAgICAgKiBAcHJvcGVydHkge0hhc2hlcn0gaGFzaGVyIFRoZSBoYXNoZXIgdG8gdXNlLiBEZWZhdWx0OiBTSEExXG5cdCAgICAgICAgICogQHByb3BlcnR5IHtudW1iZXJ9IGl0ZXJhdGlvbnMgVGhlIG51bWJlciBvZiBpdGVyYXRpb25zIHRvIHBlcmZvcm0uIERlZmF1bHQ6IDFcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBjZmc6IEJhc2UuZXh0ZW5kKHtcblx0ICAgICAgICAgICAga2V5U2l6ZTogMTI4LzMyLFxuXHQgICAgICAgICAgICBoYXNoZXI6IFNIQTEsXG5cdCAgICAgICAgICAgIGl0ZXJhdGlvbnM6IDFcblx0ICAgICAgICB9KSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIEluaXRpYWxpemVzIGEgbmV3bHkgY3JlYXRlZCBrZXkgZGVyaXZhdGlvbiBmdW5jdGlvbi5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcgKE9wdGlvbmFsKSBUaGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHVzZSBmb3IgdGhlIGRlcml2YXRpb24uXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBrZGYgPSBDcnlwdG9KUy5hbGdvLlBCS0RGMi5jcmVhdGUoKTtcblx0ICAgICAgICAgKiAgICAgdmFyIGtkZiA9IENyeXB0b0pTLmFsZ28uUEJLREYyLmNyZWF0ZSh7IGtleVNpemU6IDggfSk7XG5cdCAgICAgICAgICogICAgIHZhciBrZGYgPSBDcnlwdG9KUy5hbGdvLlBCS0RGMi5jcmVhdGUoeyBrZXlTaXplOiA4LCBpdGVyYXRpb25zOiAxMDAwIH0pO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGluaXQ6IGZ1bmN0aW9uIChjZmcpIHtcblx0ICAgICAgICAgICAgdGhpcy5jZmcgPSB0aGlzLmNmZy5leHRlbmQoY2ZnKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29tcHV0ZXMgdGhlIFBhc3N3b3JkLUJhc2VkIEtleSBEZXJpdmF0aW9uIEZ1bmN0aW9uIDIuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IHBhc3N3b3JkIFRoZSBwYXNzd29yZC5cblx0ICAgICAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IHNhbHQgQSBzYWx0LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgZGVyaXZlZCBrZXkuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBrZXkgPSBrZGYuY29tcHV0ZShwYXNzd29yZCwgc2FsdCk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgY29tcHV0ZTogZnVuY3Rpb24gKHBhc3N3b3JkLCBzYWx0KSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0XG5cdCAgICAgICAgICAgIHZhciBjZmcgPSB0aGlzLmNmZztcblxuXHQgICAgICAgICAgICAvLyBJbml0IEhNQUNcblx0ICAgICAgICAgICAgdmFyIGhtYWMgPSBITUFDLmNyZWF0ZShjZmcuaGFzaGVyLCBwYXNzd29yZCk7XG5cblx0ICAgICAgICAgICAgLy8gSW5pdGlhbCB2YWx1ZXNcblx0ICAgICAgICAgICAgdmFyIGRlcml2ZWRLZXkgPSBXb3JkQXJyYXkuY3JlYXRlKCk7XG5cdCAgICAgICAgICAgIHZhciBibG9ja0luZGV4ID0gV29yZEFycmF5LmNyZWF0ZShbMHgwMDAwMDAwMV0pO1xuXG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgZGVyaXZlZEtleVdvcmRzID0gZGVyaXZlZEtleS53b3Jkcztcblx0ICAgICAgICAgICAgdmFyIGJsb2NrSW5kZXhXb3JkcyA9IGJsb2NrSW5kZXgud29yZHM7XG5cdCAgICAgICAgICAgIHZhciBrZXlTaXplID0gY2ZnLmtleVNpemU7XG5cdCAgICAgICAgICAgIHZhciBpdGVyYXRpb25zID0gY2ZnLml0ZXJhdGlvbnM7XG5cblx0ICAgICAgICAgICAgLy8gR2VuZXJhdGUga2V5XG5cdCAgICAgICAgICAgIHdoaWxlIChkZXJpdmVkS2V5V29yZHMubGVuZ3RoIDwga2V5U2l6ZSkge1xuXHQgICAgICAgICAgICAgICAgdmFyIGJsb2NrID0gaG1hYy51cGRhdGUoc2FsdCkuZmluYWxpemUoYmxvY2tJbmRleCk7XG5cdCAgICAgICAgICAgICAgICBobWFjLnJlc2V0KCk7XG5cblx0ICAgICAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICAgICAgdmFyIGJsb2NrV29yZHMgPSBibG9jay53b3Jkcztcblx0ICAgICAgICAgICAgICAgIHZhciBibG9ja1dvcmRzTGVuZ3RoID0gYmxvY2tXb3Jkcy5sZW5ndGg7XG5cblx0ICAgICAgICAgICAgICAgIC8vIEl0ZXJhdGlvbnNcblx0ICAgICAgICAgICAgICAgIHZhciBpbnRlcm1lZGlhdGUgPSBibG9jaztcblx0ICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgaXRlcmF0aW9uczsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgaW50ZXJtZWRpYXRlID0gaG1hYy5maW5hbGl6ZShpbnRlcm1lZGlhdGUpO1xuXHQgICAgICAgICAgICAgICAgICAgIGhtYWMucmVzZXQoKTtcblxuXHQgICAgICAgICAgICAgICAgICAgIC8vIFNob3J0Y3V0XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIGludGVybWVkaWF0ZVdvcmRzID0gaW50ZXJtZWRpYXRlLndvcmRzO1xuXG5cdCAgICAgICAgICAgICAgICAgICAgLy8gWE9SIGludGVybWVkaWF0ZSB3aXRoIGJsb2NrXG5cdCAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBibG9ja1dvcmRzTGVuZ3RoOyBqKyspIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tXb3Jkc1tqXSBePSBpbnRlcm1lZGlhdGVXb3Jkc1tqXTtcblx0ICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgICAgIGRlcml2ZWRLZXkuY29uY2F0KGJsb2NrKTtcblx0ICAgICAgICAgICAgICAgIGJsb2NrSW5kZXhXb3Jkc1swXSsrO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIGRlcml2ZWRLZXkuc2lnQnl0ZXMgPSBrZXlTaXplICogNDtcblxuXHQgICAgICAgICAgICByZXR1cm4gZGVyaXZlZEtleTtcblx0ICAgICAgICB9XG5cdCAgICB9KTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBDb21wdXRlcyB0aGUgUGFzc3dvcmQtQmFzZWQgS2V5IERlcml2YXRpb24gRnVuY3Rpb24gMi5cblx0ICAgICAqXG5cdCAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IHBhc3N3b3JkIFRoZSBwYXNzd29yZC5cblx0ICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gc2FsdCBBIHNhbHQuXG5cdCAgICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIChPcHRpb25hbCkgVGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byB1c2UgZm9yIHRoaXMgY29tcHV0YXRpb24uXG5cdCAgICAgKlxuXHQgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgZGVyaXZlZCBrZXkuXG5cdCAgICAgKlxuXHQgICAgICogQHN0YXRpY1xuXHQgICAgICpcblx0ICAgICAqIEBleGFtcGxlXG5cdCAgICAgKlxuXHQgICAgICogICAgIHZhciBrZXkgPSBDcnlwdG9KUy5QQktERjIocGFzc3dvcmQsIHNhbHQpO1xuXHQgICAgICogICAgIHZhciBrZXkgPSBDcnlwdG9KUy5QQktERjIocGFzc3dvcmQsIHNhbHQsIHsga2V5U2l6ZTogOCB9KTtcblx0ICAgICAqICAgICB2YXIga2V5ID0gQ3J5cHRvSlMuUEJLREYyKHBhc3N3b3JkLCBzYWx0LCB7IGtleVNpemU6IDgsIGl0ZXJhdGlvbnM6IDEwMDAgfSk7XG5cdCAgICAgKi9cblx0ICAgIEMuUEJLREYyID0gZnVuY3Rpb24gKHBhc3N3b3JkLCBzYWx0LCBjZmcpIHtcblx0ICAgICAgICByZXR1cm4gUEJLREYyLmNyZWF0ZShjZmcpLmNvbXB1dGUocGFzc3dvcmQsIHNhbHQpO1xuXHQgICAgfTtcblx0fSgpKTtcblxuXG5cdHJldHVybiBDcnlwdG9KUy5QQktERjI7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5LCB1bmRlZikge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSwgcmVxdWlyZShcIi4vZW5jLWJhc2U2NFwiKSwgcmVxdWlyZShcIi4vbWQ1XCIpLCByZXF1aXJlKFwiLi9ldnBrZGZcIiksIHJlcXVpcmUoXCIuL2NpcGhlci1jb3JlXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIiwgXCIuL2VuYy1iYXNlNjRcIiwgXCIuL21kNVwiLCBcIi4vZXZwa2RmXCIsIFwiLi9jaXBoZXItY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0KGZ1bmN0aW9uICgpIHtcblx0ICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgdmFyIEMgPSBDcnlwdG9KUztcblx0ICAgIHZhciBDX2xpYiA9IEMubGliO1xuXHQgICAgdmFyIFN0cmVhbUNpcGhlciA9IENfbGliLlN0cmVhbUNpcGhlcjtcblx0ICAgIHZhciBDX2FsZ28gPSBDLmFsZ287XG5cblx0ICAgIC8vIFJldXNhYmxlIG9iamVjdHNcblx0ICAgIHZhciBTICA9IFtdO1xuXHQgICAgdmFyIENfID0gW107XG5cdCAgICB2YXIgRyAgPSBbXTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBSYWJiaXQgc3RyZWFtIGNpcGhlciBhbGdvcml0aG0uXG5cdCAgICAgKlxuXHQgICAgICogVGhpcyBpcyBhIGxlZ2FjeSB2ZXJzaW9uIHRoYXQgbmVnbGVjdGVkIHRvIGNvbnZlcnQgdGhlIGtleSB0byBsaXR0bGUtZW5kaWFuLlxuXHQgICAgICogVGhpcyBlcnJvciBkb2Vzbid0IGFmZmVjdCB0aGUgY2lwaGVyJ3Mgc2VjdXJpdHksXG5cdCAgICAgKiBidXQgaXQgZG9lcyBhZmZlY3QgaXRzIGNvbXBhdGliaWxpdHkgd2l0aCBvdGhlciBpbXBsZW1lbnRhdGlvbnMuXG5cdCAgICAgKi9cblx0ICAgIHZhciBSYWJiaXRMZWdhY3kgPSBDX2FsZ28uUmFiYml0TGVnYWN5ID0gU3RyZWFtQ2lwaGVyLmV4dGVuZCh7XG5cdCAgICAgICAgX2RvUmVzZXQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBLID0gdGhpcy5fa2V5LndvcmRzO1xuXHQgICAgICAgICAgICB2YXIgaXYgPSB0aGlzLmNmZy5pdjtcblxuXHQgICAgICAgICAgICAvLyBHZW5lcmF0ZSBpbml0aWFsIHN0YXRlIHZhbHVlc1xuXHQgICAgICAgICAgICB2YXIgWCA9IHRoaXMuX1ggPSBbXG5cdCAgICAgICAgICAgICAgICBLWzBdLCAoS1szXSA8PCAxNikgfCAoS1syXSA+Pj4gMTYpLFxuXHQgICAgICAgICAgICAgICAgS1sxXSwgKEtbMF0gPDwgMTYpIHwgKEtbM10gPj4+IDE2KSxcblx0ICAgICAgICAgICAgICAgIEtbMl0sIChLWzFdIDw8IDE2KSB8IChLWzBdID4+PiAxNiksXG5cdCAgICAgICAgICAgICAgICBLWzNdLCAoS1syXSA8PCAxNikgfCAoS1sxXSA+Pj4gMTYpXG5cdCAgICAgICAgICAgIF07XG5cblx0ICAgICAgICAgICAgLy8gR2VuZXJhdGUgaW5pdGlhbCBjb3VudGVyIHZhbHVlc1xuXHQgICAgICAgICAgICB2YXIgQyA9IHRoaXMuX0MgPSBbXG5cdCAgICAgICAgICAgICAgICAoS1syXSA8PCAxNikgfCAoS1syXSA+Pj4gMTYpLCAoS1swXSAmIDB4ZmZmZjAwMDApIHwgKEtbMV0gJiAweDAwMDBmZmZmKSxcblx0ICAgICAgICAgICAgICAgIChLWzNdIDw8IDE2KSB8IChLWzNdID4+PiAxNiksIChLWzFdICYgMHhmZmZmMDAwMCkgfCAoS1syXSAmIDB4MDAwMGZmZmYpLFxuXHQgICAgICAgICAgICAgICAgKEtbMF0gPDwgMTYpIHwgKEtbMF0gPj4+IDE2KSwgKEtbMl0gJiAweGZmZmYwMDAwKSB8IChLWzNdICYgMHgwMDAwZmZmZiksXG5cdCAgICAgICAgICAgICAgICAoS1sxXSA8PCAxNikgfCAoS1sxXSA+Pj4gMTYpLCAoS1szXSAmIDB4ZmZmZjAwMDApIHwgKEtbMF0gJiAweDAwMDBmZmZmKVxuXHQgICAgICAgICAgICBdO1xuXG5cdCAgICAgICAgICAgIC8vIENhcnJ5IGJpdFxuXHQgICAgICAgICAgICB0aGlzLl9iID0gMDtcblxuXHQgICAgICAgICAgICAvLyBJdGVyYXRlIHRoZSBzeXN0ZW0gZm91ciB0aW1lc1xuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgbmV4dFN0YXRlLmNhbGwodGhpcyk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBNb2RpZnkgdGhlIGNvdW50ZXJzXG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgODsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICBDW2ldIF49IFhbKGkgKyA0KSAmIDddO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gSVYgc2V0dXBcblx0ICAgICAgICAgICAgaWYgKGl2KSB7XG5cdCAgICAgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgICAgIHZhciBJViA9IGl2LndvcmRzO1xuXHQgICAgICAgICAgICAgICAgdmFyIElWXzAgPSBJVlswXTtcblx0ICAgICAgICAgICAgICAgIHZhciBJVl8xID0gSVZbMV07XG5cblx0ICAgICAgICAgICAgICAgIC8vIEdlbmVyYXRlIGZvdXIgc3VidmVjdG9yc1xuXHQgICAgICAgICAgICAgICAgdmFyIGkwID0gKCgoSVZfMCA8PCA4KSB8IChJVl8wID4+PiAyNCkpICYgMHgwMGZmMDBmZikgfCAoKChJVl8wIDw8IDI0KSB8IChJVl8wID4+PiA4KSkgJiAweGZmMDBmZjAwKTtcblx0ICAgICAgICAgICAgICAgIHZhciBpMiA9ICgoKElWXzEgPDwgOCkgfCAoSVZfMSA+Pj4gMjQpKSAmIDB4MDBmZjAwZmYpIHwgKCgoSVZfMSA8PCAyNCkgfCAoSVZfMSA+Pj4gOCkpICYgMHhmZjAwZmYwMCk7XG5cdCAgICAgICAgICAgICAgICB2YXIgaTEgPSAoaTAgPj4+IDE2KSB8IChpMiAmIDB4ZmZmZjAwMDApO1xuXHQgICAgICAgICAgICAgICAgdmFyIGkzID0gKGkyIDw8IDE2KSAgfCAoaTAgJiAweDAwMDBmZmZmKTtcblxuXHQgICAgICAgICAgICAgICAgLy8gTW9kaWZ5IGNvdW50ZXIgdmFsdWVzXG5cdCAgICAgICAgICAgICAgICBDWzBdIF49IGkwO1xuXHQgICAgICAgICAgICAgICAgQ1sxXSBePSBpMTtcblx0ICAgICAgICAgICAgICAgIENbMl0gXj0gaTI7XG5cdCAgICAgICAgICAgICAgICBDWzNdIF49IGkzO1xuXHQgICAgICAgICAgICAgICAgQ1s0XSBePSBpMDtcblx0ICAgICAgICAgICAgICAgIENbNV0gXj0gaTE7XG5cdCAgICAgICAgICAgICAgICBDWzZdIF49IGkyO1xuXHQgICAgICAgICAgICAgICAgQ1s3XSBePSBpMztcblxuXHQgICAgICAgICAgICAgICAgLy8gSXRlcmF0ZSB0aGUgc3lzdGVtIGZvdXIgdGltZXNcblx0ICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgbmV4dFN0YXRlLmNhbGwodGhpcyk7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgX2RvUHJvY2Vzc0Jsb2NrOiBmdW5jdGlvbiAoTSwgb2Zmc2V0KSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0XG5cdCAgICAgICAgICAgIHZhciBYID0gdGhpcy5fWDtcblxuXHQgICAgICAgICAgICAvLyBJdGVyYXRlIHRoZSBzeXN0ZW1cblx0ICAgICAgICAgICAgbmV4dFN0YXRlLmNhbGwodGhpcyk7XG5cblx0ICAgICAgICAgICAgLy8gR2VuZXJhdGUgZm91ciBrZXlzdHJlYW0gd29yZHNcblx0ICAgICAgICAgICAgU1swXSA9IFhbMF0gXiAoWFs1XSA+Pj4gMTYpIF4gKFhbM10gPDwgMTYpO1xuXHQgICAgICAgICAgICBTWzFdID0gWFsyXSBeIChYWzddID4+PiAxNikgXiAoWFs1XSA8PCAxNik7XG5cdCAgICAgICAgICAgIFNbMl0gPSBYWzRdIF4gKFhbMV0gPj4+IDE2KSBeIChYWzddIDw8IDE2KTtcblx0ICAgICAgICAgICAgU1szXSA9IFhbNl0gXiAoWFszXSA+Pj4gMTYpIF4gKFhbMV0gPDwgMTYpO1xuXG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICAvLyBTd2FwIGVuZGlhblxuXHQgICAgICAgICAgICAgICAgU1tpXSA9ICgoKFNbaV0gPDwgOCkgIHwgKFNbaV0gPj4+IDI0KSkgJiAweDAwZmYwMGZmKSB8XG5cdCAgICAgICAgICAgICAgICAgICAgICAgKCgoU1tpXSA8PCAyNCkgfCAoU1tpXSA+Pj4gOCkpICAmIDB4ZmYwMGZmMDApO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBFbmNyeXB0XG5cdCAgICAgICAgICAgICAgICBNW29mZnNldCArIGldIF49IFNbaV07XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgYmxvY2tTaXplOiAxMjgvMzIsXG5cblx0ICAgICAgICBpdlNpemU6IDY0LzMyXG5cdCAgICB9KTtcblxuXHQgICAgZnVuY3Rpb24gbmV4dFN0YXRlKCkge1xuXHQgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgIHZhciBYID0gdGhpcy5fWDtcblx0ICAgICAgICB2YXIgQyA9IHRoaXMuX0M7XG5cblx0ICAgICAgICAvLyBTYXZlIG9sZCBjb3VudGVyIHZhbHVlc1xuXHQgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgODsgaSsrKSB7XG5cdCAgICAgICAgICAgIENfW2ldID0gQ1tpXTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgICAvLyBDYWxjdWxhdGUgbmV3IGNvdW50ZXIgdmFsdWVzXG5cdCAgICAgICAgQ1swXSA9IChDWzBdICsgMHg0ZDM0ZDM0ZCArIHRoaXMuX2IpIHwgMDtcblx0ICAgICAgICBDWzFdID0gKENbMV0gKyAweGQzNGQzNGQzICsgKChDWzBdID4+PiAwKSA8IChDX1swXSA+Pj4gMCkgPyAxIDogMCkpIHwgMDtcblx0ICAgICAgICBDWzJdID0gKENbMl0gKyAweDM0ZDM0ZDM0ICsgKChDWzFdID4+PiAwKSA8IChDX1sxXSA+Pj4gMCkgPyAxIDogMCkpIHwgMDtcblx0ICAgICAgICBDWzNdID0gKENbM10gKyAweDRkMzRkMzRkICsgKChDWzJdID4+PiAwKSA8IChDX1syXSA+Pj4gMCkgPyAxIDogMCkpIHwgMDtcblx0ICAgICAgICBDWzRdID0gKENbNF0gKyAweGQzNGQzNGQzICsgKChDWzNdID4+PiAwKSA8IChDX1szXSA+Pj4gMCkgPyAxIDogMCkpIHwgMDtcblx0ICAgICAgICBDWzVdID0gKENbNV0gKyAweDM0ZDM0ZDM0ICsgKChDWzRdID4+PiAwKSA8IChDX1s0XSA+Pj4gMCkgPyAxIDogMCkpIHwgMDtcblx0ICAgICAgICBDWzZdID0gKENbNl0gKyAweDRkMzRkMzRkICsgKChDWzVdID4+PiAwKSA8IChDX1s1XSA+Pj4gMCkgPyAxIDogMCkpIHwgMDtcblx0ICAgICAgICBDWzddID0gKENbN10gKyAweGQzNGQzNGQzICsgKChDWzZdID4+PiAwKSA8IChDX1s2XSA+Pj4gMCkgPyAxIDogMCkpIHwgMDtcblx0ICAgICAgICB0aGlzLl9iID0gKENbN10gPj4+IDApIDwgKENfWzddID4+PiAwKSA/IDEgOiAwO1xuXG5cdCAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBnLXZhbHVlc1xuXHQgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgODsgaSsrKSB7XG5cdCAgICAgICAgICAgIHZhciBneCA9IFhbaV0gKyBDW2ldO1xuXG5cdCAgICAgICAgICAgIC8vIENvbnN0cnVjdCBoaWdoIGFuZCBsb3cgYXJndW1lbnQgZm9yIHNxdWFyaW5nXG5cdCAgICAgICAgICAgIHZhciBnYSA9IGd4ICYgMHhmZmZmO1xuXHQgICAgICAgICAgICB2YXIgZ2IgPSBneCA+Pj4gMTY7XG5cblx0ICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIGhpZ2ggYW5kIGxvdyByZXN1bHQgb2Ygc3F1YXJpbmdcblx0ICAgICAgICAgICAgdmFyIGdoID0gKCgoKGdhICogZ2EpID4+PiAxNykgKyBnYSAqIGdiKSA+Pj4gMTUpICsgZ2IgKiBnYjtcblx0ICAgICAgICAgICAgdmFyIGdsID0gKCgoZ3ggJiAweGZmZmYwMDAwKSAqIGd4KSB8IDApICsgKCgoZ3ggJiAweDAwMDBmZmZmKSAqIGd4KSB8IDApO1xuXG5cdCAgICAgICAgICAgIC8vIEhpZ2ggWE9SIGxvd1xuXHQgICAgICAgICAgICBHW2ldID0gZ2ggXiBnbDtcblx0ICAgICAgICB9XG5cblx0ICAgICAgICAvLyBDYWxjdWxhdGUgbmV3IHN0YXRlIHZhbHVlc1xuXHQgICAgICAgIFhbMF0gPSAoR1swXSArICgoR1s3XSA8PCAxNikgfCAoR1s3XSA+Pj4gMTYpKSArICgoR1s2XSA8PCAxNikgfCAoR1s2XSA+Pj4gMTYpKSkgfCAwO1xuXHQgICAgICAgIFhbMV0gPSAoR1sxXSArICgoR1swXSA8PCA4KSAgfCAoR1swXSA+Pj4gMjQpKSArIEdbN10pIHwgMDtcblx0ICAgICAgICBYWzJdID0gKEdbMl0gKyAoKEdbMV0gPDwgMTYpIHwgKEdbMV0gPj4+IDE2KSkgKyAoKEdbMF0gPDwgMTYpIHwgKEdbMF0gPj4+IDE2KSkpIHwgMDtcblx0ICAgICAgICBYWzNdID0gKEdbM10gKyAoKEdbMl0gPDwgOCkgIHwgKEdbMl0gPj4+IDI0KSkgKyBHWzFdKSB8IDA7XG5cdCAgICAgICAgWFs0XSA9IChHWzRdICsgKChHWzNdIDw8IDE2KSB8IChHWzNdID4+PiAxNikpICsgKChHWzJdIDw8IDE2KSB8IChHWzJdID4+PiAxNikpKSB8IDA7XG5cdCAgICAgICAgWFs1XSA9IChHWzVdICsgKChHWzRdIDw8IDgpICB8IChHWzRdID4+PiAyNCkpICsgR1szXSkgfCAwO1xuXHQgICAgICAgIFhbNl0gPSAoR1s2XSArICgoR1s1XSA8PCAxNikgfCAoR1s1XSA+Pj4gMTYpKSArICgoR1s0XSA8PCAxNikgfCAoR1s0XSA+Pj4gMTYpKSkgfCAwO1xuXHQgICAgICAgIFhbN10gPSAoR1s3XSArICgoR1s2XSA8PCA4KSAgfCAoR1s2XSA+Pj4gMjQpKSArIEdbNV0pIHwgMDtcblx0ICAgIH1cblxuXHQgICAgLyoqXG5cdCAgICAgKiBTaG9ydGN1dCBmdW5jdGlvbnMgdG8gdGhlIGNpcGhlcidzIG9iamVjdCBpbnRlcmZhY2UuXG5cdCAgICAgKlxuXHQgICAgICogQGV4YW1wbGVcblx0ICAgICAqXG5cdCAgICAgKiAgICAgdmFyIGNpcGhlcnRleHQgPSBDcnlwdG9KUy5SYWJiaXRMZWdhY3kuZW5jcnlwdChtZXNzYWdlLCBrZXksIGNmZyk7XG5cdCAgICAgKiAgICAgdmFyIHBsYWludGV4dCAgPSBDcnlwdG9KUy5SYWJiaXRMZWdhY3kuZGVjcnlwdChjaXBoZXJ0ZXh0LCBrZXksIGNmZyk7XG5cdCAgICAgKi9cblx0ICAgIEMuUmFiYml0TGVnYWN5ID0gU3RyZWFtQ2lwaGVyLl9jcmVhdGVIZWxwZXIoUmFiYml0TGVnYWN5KTtcblx0fSgpKTtcblxuXG5cdHJldHVybiBDcnlwdG9KUy5SYWJiaXRMZWdhY3k7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5LCB1bmRlZikge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSwgcmVxdWlyZShcIi4vZW5jLWJhc2U2NFwiKSwgcmVxdWlyZShcIi4vbWQ1XCIpLCByZXF1aXJlKFwiLi9ldnBrZGZcIiksIHJlcXVpcmUoXCIuL2NpcGhlci1jb3JlXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIiwgXCIuL2VuYy1iYXNlNjRcIiwgXCIuL21kNVwiLCBcIi4vZXZwa2RmXCIsIFwiLi9jaXBoZXItY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0KGZ1bmN0aW9uICgpIHtcblx0ICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgdmFyIEMgPSBDcnlwdG9KUztcblx0ICAgIHZhciBDX2xpYiA9IEMubGliO1xuXHQgICAgdmFyIFN0cmVhbUNpcGhlciA9IENfbGliLlN0cmVhbUNpcGhlcjtcblx0ICAgIHZhciBDX2FsZ28gPSBDLmFsZ287XG5cblx0ICAgIC8vIFJldXNhYmxlIG9iamVjdHNcblx0ICAgIHZhciBTICA9IFtdO1xuXHQgICAgdmFyIENfID0gW107XG5cdCAgICB2YXIgRyAgPSBbXTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBSYWJiaXQgc3RyZWFtIGNpcGhlciBhbGdvcml0aG1cblx0ICAgICAqL1xuXHQgICAgdmFyIFJhYmJpdCA9IENfYWxnby5SYWJiaXQgPSBTdHJlYW1DaXBoZXIuZXh0ZW5kKHtcblx0ICAgICAgICBfZG9SZXNldDogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIEsgPSB0aGlzLl9rZXkud29yZHM7XG5cdCAgICAgICAgICAgIHZhciBpdiA9IHRoaXMuY2ZnLml2O1xuXG5cdCAgICAgICAgICAgIC8vIFN3YXAgZW5kaWFuXG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICBLW2ldID0gKCgoS1tpXSA8PCA4KSAgfCAoS1tpXSA+Pj4gMjQpKSAmIDB4MDBmZjAwZmYpIHxcblx0ICAgICAgICAgICAgICAgICAgICAgICAoKChLW2ldIDw8IDI0KSB8IChLW2ldID4+PiA4KSkgICYgMHhmZjAwZmYwMCk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBHZW5lcmF0ZSBpbml0aWFsIHN0YXRlIHZhbHVlc1xuXHQgICAgICAgICAgICB2YXIgWCA9IHRoaXMuX1ggPSBbXG5cdCAgICAgICAgICAgICAgICBLWzBdLCAoS1szXSA8PCAxNikgfCAoS1syXSA+Pj4gMTYpLFxuXHQgICAgICAgICAgICAgICAgS1sxXSwgKEtbMF0gPDwgMTYpIHwgKEtbM10gPj4+IDE2KSxcblx0ICAgICAgICAgICAgICAgIEtbMl0sIChLWzFdIDw8IDE2KSB8IChLWzBdID4+PiAxNiksXG5cdCAgICAgICAgICAgICAgICBLWzNdLCAoS1syXSA8PCAxNikgfCAoS1sxXSA+Pj4gMTYpXG5cdCAgICAgICAgICAgIF07XG5cblx0ICAgICAgICAgICAgLy8gR2VuZXJhdGUgaW5pdGlhbCBjb3VudGVyIHZhbHVlc1xuXHQgICAgICAgICAgICB2YXIgQyA9IHRoaXMuX0MgPSBbXG5cdCAgICAgICAgICAgICAgICAoS1syXSA8PCAxNikgfCAoS1syXSA+Pj4gMTYpLCAoS1swXSAmIDB4ZmZmZjAwMDApIHwgKEtbMV0gJiAweDAwMDBmZmZmKSxcblx0ICAgICAgICAgICAgICAgIChLWzNdIDw8IDE2KSB8IChLWzNdID4+PiAxNiksIChLWzFdICYgMHhmZmZmMDAwMCkgfCAoS1syXSAmIDB4MDAwMGZmZmYpLFxuXHQgICAgICAgICAgICAgICAgKEtbMF0gPDwgMTYpIHwgKEtbMF0gPj4+IDE2KSwgKEtbMl0gJiAweGZmZmYwMDAwKSB8IChLWzNdICYgMHgwMDAwZmZmZiksXG5cdCAgICAgICAgICAgICAgICAoS1sxXSA8PCAxNikgfCAoS1sxXSA+Pj4gMTYpLCAoS1szXSAmIDB4ZmZmZjAwMDApIHwgKEtbMF0gJiAweDAwMDBmZmZmKVxuXHQgICAgICAgICAgICBdO1xuXG5cdCAgICAgICAgICAgIC8vIENhcnJ5IGJpdFxuXHQgICAgICAgICAgICB0aGlzLl9iID0gMDtcblxuXHQgICAgICAgICAgICAvLyBJdGVyYXRlIHRoZSBzeXN0ZW0gZm91ciB0aW1lc1xuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgbmV4dFN0YXRlLmNhbGwodGhpcyk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBNb2RpZnkgdGhlIGNvdW50ZXJzXG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgODsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICBDW2ldIF49IFhbKGkgKyA0KSAmIDddO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gSVYgc2V0dXBcblx0ICAgICAgICAgICAgaWYgKGl2KSB7XG5cdCAgICAgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgICAgIHZhciBJViA9IGl2LndvcmRzO1xuXHQgICAgICAgICAgICAgICAgdmFyIElWXzAgPSBJVlswXTtcblx0ICAgICAgICAgICAgICAgIHZhciBJVl8xID0gSVZbMV07XG5cblx0ICAgICAgICAgICAgICAgIC8vIEdlbmVyYXRlIGZvdXIgc3VidmVjdG9yc1xuXHQgICAgICAgICAgICAgICAgdmFyIGkwID0gKCgoSVZfMCA8PCA4KSB8IChJVl8wID4+PiAyNCkpICYgMHgwMGZmMDBmZikgfCAoKChJVl8wIDw8IDI0KSB8IChJVl8wID4+PiA4KSkgJiAweGZmMDBmZjAwKTtcblx0ICAgICAgICAgICAgICAgIHZhciBpMiA9ICgoKElWXzEgPDwgOCkgfCAoSVZfMSA+Pj4gMjQpKSAmIDB4MDBmZjAwZmYpIHwgKCgoSVZfMSA8PCAyNCkgfCAoSVZfMSA+Pj4gOCkpICYgMHhmZjAwZmYwMCk7XG5cdCAgICAgICAgICAgICAgICB2YXIgaTEgPSAoaTAgPj4+IDE2KSB8IChpMiAmIDB4ZmZmZjAwMDApO1xuXHQgICAgICAgICAgICAgICAgdmFyIGkzID0gKGkyIDw8IDE2KSAgfCAoaTAgJiAweDAwMDBmZmZmKTtcblxuXHQgICAgICAgICAgICAgICAgLy8gTW9kaWZ5IGNvdW50ZXIgdmFsdWVzXG5cdCAgICAgICAgICAgICAgICBDWzBdIF49IGkwO1xuXHQgICAgICAgICAgICAgICAgQ1sxXSBePSBpMTtcblx0ICAgICAgICAgICAgICAgIENbMl0gXj0gaTI7XG5cdCAgICAgICAgICAgICAgICBDWzNdIF49IGkzO1xuXHQgICAgICAgICAgICAgICAgQ1s0XSBePSBpMDtcblx0ICAgICAgICAgICAgICAgIENbNV0gXj0gaTE7XG5cdCAgICAgICAgICAgICAgICBDWzZdIF49IGkyO1xuXHQgICAgICAgICAgICAgICAgQ1s3XSBePSBpMztcblxuXHQgICAgICAgICAgICAgICAgLy8gSXRlcmF0ZSB0aGUgc3lzdGVtIGZvdXIgdGltZXNcblx0ICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgbmV4dFN0YXRlLmNhbGwodGhpcyk7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgX2RvUHJvY2Vzc0Jsb2NrOiBmdW5jdGlvbiAoTSwgb2Zmc2V0KSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0XG5cdCAgICAgICAgICAgIHZhciBYID0gdGhpcy5fWDtcblxuXHQgICAgICAgICAgICAvLyBJdGVyYXRlIHRoZSBzeXN0ZW1cblx0ICAgICAgICAgICAgbmV4dFN0YXRlLmNhbGwodGhpcyk7XG5cblx0ICAgICAgICAgICAgLy8gR2VuZXJhdGUgZm91ciBrZXlzdHJlYW0gd29yZHNcblx0ICAgICAgICAgICAgU1swXSA9IFhbMF0gXiAoWFs1XSA+Pj4gMTYpIF4gKFhbM10gPDwgMTYpO1xuXHQgICAgICAgICAgICBTWzFdID0gWFsyXSBeIChYWzddID4+PiAxNikgXiAoWFs1XSA8PCAxNik7XG5cdCAgICAgICAgICAgIFNbMl0gPSBYWzRdIF4gKFhbMV0gPj4+IDE2KSBeIChYWzddIDw8IDE2KTtcblx0ICAgICAgICAgICAgU1szXSA9IFhbNl0gXiAoWFszXSA+Pj4gMTYpIF4gKFhbMV0gPDwgMTYpO1xuXG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICAvLyBTd2FwIGVuZGlhblxuXHQgICAgICAgICAgICAgICAgU1tpXSA9ICgoKFNbaV0gPDwgOCkgIHwgKFNbaV0gPj4+IDI0KSkgJiAweDAwZmYwMGZmKSB8XG5cdCAgICAgICAgICAgICAgICAgICAgICAgKCgoU1tpXSA8PCAyNCkgfCAoU1tpXSA+Pj4gOCkpICAmIDB4ZmYwMGZmMDApO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBFbmNyeXB0XG5cdCAgICAgICAgICAgICAgICBNW29mZnNldCArIGldIF49IFNbaV07XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgYmxvY2tTaXplOiAxMjgvMzIsXG5cblx0ICAgICAgICBpdlNpemU6IDY0LzMyXG5cdCAgICB9KTtcblxuXHQgICAgZnVuY3Rpb24gbmV4dFN0YXRlKCkge1xuXHQgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgIHZhciBYID0gdGhpcy5fWDtcblx0ICAgICAgICB2YXIgQyA9IHRoaXMuX0M7XG5cblx0ICAgICAgICAvLyBTYXZlIG9sZCBjb3VudGVyIHZhbHVlc1xuXHQgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgODsgaSsrKSB7XG5cdCAgICAgICAgICAgIENfW2ldID0gQ1tpXTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgICAvLyBDYWxjdWxhdGUgbmV3IGNvdW50ZXIgdmFsdWVzXG5cdCAgICAgICAgQ1swXSA9IChDWzBdICsgMHg0ZDM0ZDM0ZCArIHRoaXMuX2IpIHwgMDtcblx0ICAgICAgICBDWzFdID0gKENbMV0gKyAweGQzNGQzNGQzICsgKChDWzBdID4+PiAwKSA8IChDX1swXSA+Pj4gMCkgPyAxIDogMCkpIHwgMDtcblx0ICAgICAgICBDWzJdID0gKENbMl0gKyAweDM0ZDM0ZDM0ICsgKChDWzFdID4+PiAwKSA8IChDX1sxXSA+Pj4gMCkgPyAxIDogMCkpIHwgMDtcblx0ICAgICAgICBDWzNdID0gKENbM10gKyAweDRkMzRkMzRkICsgKChDWzJdID4+PiAwKSA8IChDX1syXSA+Pj4gMCkgPyAxIDogMCkpIHwgMDtcblx0ICAgICAgICBDWzRdID0gKENbNF0gKyAweGQzNGQzNGQzICsgKChDWzNdID4+PiAwKSA8IChDX1szXSA+Pj4gMCkgPyAxIDogMCkpIHwgMDtcblx0ICAgICAgICBDWzVdID0gKENbNV0gKyAweDM0ZDM0ZDM0ICsgKChDWzRdID4+PiAwKSA8IChDX1s0XSA+Pj4gMCkgPyAxIDogMCkpIHwgMDtcblx0ICAgICAgICBDWzZdID0gKENbNl0gKyAweDRkMzRkMzRkICsgKChDWzVdID4+PiAwKSA8IChDX1s1XSA+Pj4gMCkgPyAxIDogMCkpIHwgMDtcblx0ICAgICAgICBDWzddID0gKENbN10gKyAweGQzNGQzNGQzICsgKChDWzZdID4+PiAwKSA8IChDX1s2XSA+Pj4gMCkgPyAxIDogMCkpIHwgMDtcblx0ICAgICAgICB0aGlzLl9iID0gKENbN10gPj4+IDApIDwgKENfWzddID4+PiAwKSA/IDEgOiAwO1xuXG5cdCAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBnLXZhbHVlc1xuXHQgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgODsgaSsrKSB7XG5cdCAgICAgICAgICAgIHZhciBneCA9IFhbaV0gKyBDW2ldO1xuXG5cdCAgICAgICAgICAgIC8vIENvbnN0cnVjdCBoaWdoIGFuZCBsb3cgYXJndW1lbnQgZm9yIHNxdWFyaW5nXG5cdCAgICAgICAgICAgIHZhciBnYSA9IGd4ICYgMHhmZmZmO1xuXHQgICAgICAgICAgICB2YXIgZ2IgPSBneCA+Pj4gMTY7XG5cblx0ICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIGhpZ2ggYW5kIGxvdyByZXN1bHQgb2Ygc3F1YXJpbmdcblx0ICAgICAgICAgICAgdmFyIGdoID0gKCgoKGdhICogZ2EpID4+PiAxNykgKyBnYSAqIGdiKSA+Pj4gMTUpICsgZ2IgKiBnYjtcblx0ICAgICAgICAgICAgdmFyIGdsID0gKCgoZ3ggJiAweGZmZmYwMDAwKSAqIGd4KSB8IDApICsgKCgoZ3ggJiAweDAwMDBmZmZmKSAqIGd4KSB8IDApO1xuXG5cdCAgICAgICAgICAgIC8vIEhpZ2ggWE9SIGxvd1xuXHQgICAgICAgICAgICBHW2ldID0gZ2ggXiBnbDtcblx0ICAgICAgICB9XG5cblx0ICAgICAgICAvLyBDYWxjdWxhdGUgbmV3IHN0YXRlIHZhbHVlc1xuXHQgICAgICAgIFhbMF0gPSAoR1swXSArICgoR1s3XSA8PCAxNikgfCAoR1s3XSA+Pj4gMTYpKSArICgoR1s2XSA8PCAxNikgfCAoR1s2XSA+Pj4gMTYpKSkgfCAwO1xuXHQgICAgICAgIFhbMV0gPSAoR1sxXSArICgoR1swXSA8PCA4KSAgfCAoR1swXSA+Pj4gMjQpKSArIEdbN10pIHwgMDtcblx0ICAgICAgICBYWzJdID0gKEdbMl0gKyAoKEdbMV0gPDwgMTYpIHwgKEdbMV0gPj4+IDE2KSkgKyAoKEdbMF0gPDwgMTYpIHwgKEdbMF0gPj4+IDE2KSkpIHwgMDtcblx0ICAgICAgICBYWzNdID0gKEdbM10gKyAoKEdbMl0gPDwgOCkgIHwgKEdbMl0gPj4+IDI0KSkgKyBHWzFdKSB8IDA7XG5cdCAgICAgICAgWFs0XSA9IChHWzRdICsgKChHWzNdIDw8IDE2KSB8IChHWzNdID4+PiAxNikpICsgKChHWzJdIDw8IDE2KSB8IChHWzJdID4+PiAxNikpKSB8IDA7XG5cdCAgICAgICAgWFs1XSA9IChHWzVdICsgKChHWzRdIDw8IDgpICB8IChHWzRdID4+PiAyNCkpICsgR1szXSkgfCAwO1xuXHQgICAgICAgIFhbNl0gPSAoR1s2XSArICgoR1s1XSA8PCAxNikgfCAoR1s1XSA+Pj4gMTYpKSArICgoR1s0XSA8PCAxNikgfCAoR1s0XSA+Pj4gMTYpKSkgfCAwO1xuXHQgICAgICAgIFhbN10gPSAoR1s3XSArICgoR1s2XSA8PCA4KSAgfCAoR1s2XSA+Pj4gMjQpKSArIEdbNV0pIHwgMDtcblx0ICAgIH1cblxuXHQgICAgLyoqXG5cdCAgICAgKiBTaG9ydGN1dCBmdW5jdGlvbnMgdG8gdGhlIGNpcGhlcidzIG9iamVjdCBpbnRlcmZhY2UuXG5cdCAgICAgKlxuXHQgICAgICogQGV4YW1wbGVcblx0ICAgICAqXG5cdCAgICAgKiAgICAgdmFyIGNpcGhlcnRleHQgPSBDcnlwdG9KUy5SYWJiaXQuZW5jcnlwdChtZXNzYWdlLCBrZXksIGNmZyk7XG5cdCAgICAgKiAgICAgdmFyIHBsYWludGV4dCAgPSBDcnlwdG9KUy5SYWJiaXQuZGVjcnlwdChjaXBoZXJ0ZXh0LCBrZXksIGNmZyk7XG5cdCAgICAgKi9cblx0ICAgIEMuUmFiYml0ID0gU3RyZWFtQ2lwaGVyLl9jcmVhdGVIZWxwZXIoUmFiYml0KTtcblx0fSgpKTtcblxuXG5cdHJldHVybiBDcnlwdG9KUy5SYWJiaXQ7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5LCB1bmRlZikge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSwgcmVxdWlyZShcIi4vZW5jLWJhc2U2NFwiKSwgcmVxdWlyZShcIi4vbWQ1XCIpLCByZXF1aXJlKFwiLi9ldnBrZGZcIiksIHJlcXVpcmUoXCIuL2NpcGhlci1jb3JlXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIiwgXCIuL2VuYy1iYXNlNjRcIiwgXCIuL21kNVwiLCBcIi4vZXZwa2RmXCIsIFwiLi9jaXBoZXItY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0KGZ1bmN0aW9uICgpIHtcblx0ICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgdmFyIEMgPSBDcnlwdG9KUztcblx0ICAgIHZhciBDX2xpYiA9IEMubGliO1xuXHQgICAgdmFyIFN0cmVhbUNpcGhlciA9IENfbGliLlN0cmVhbUNpcGhlcjtcblx0ICAgIHZhciBDX2FsZ28gPSBDLmFsZ287XG5cblx0ICAgIC8qKlxuXHQgICAgICogUkM0IHN0cmVhbSBjaXBoZXIgYWxnb3JpdGhtLlxuXHQgICAgICovXG5cdCAgICB2YXIgUkM0ID0gQ19hbGdvLlJDNCA9IFN0cmVhbUNpcGhlci5leHRlbmQoe1xuXHQgICAgICAgIF9kb1Jlc2V0OiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIga2V5ID0gdGhpcy5fa2V5O1xuXHQgICAgICAgICAgICB2YXIga2V5V29yZHMgPSBrZXkud29yZHM7XG5cdCAgICAgICAgICAgIHZhciBrZXlTaWdCeXRlcyA9IGtleS5zaWdCeXRlcztcblxuXHQgICAgICAgICAgICAvLyBJbml0IHNib3hcblx0ICAgICAgICAgICAgdmFyIFMgPSB0aGlzLl9TID0gW107XG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjU2OyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIFNbaV0gPSBpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gS2V5IHNldHVwXG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBqID0gMDsgaSA8IDI1NjsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICB2YXIga2V5Qnl0ZUluZGV4ID0gaSAlIGtleVNpZ0J5dGVzO1xuXHQgICAgICAgICAgICAgICAgdmFyIGtleUJ5dGUgPSAoa2V5V29yZHNba2V5Qnl0ZUluZGV4ID4+PiAyXSA+Pj4gKDI0IC0gKGtleUJ5dGVJbmRleCAlIDQpICogOCkpICYgMHhmZjtcblxuXHQgICAgICAgICAgICAgICAgaiA9IChqICsgU1tpXSArIGtleUJ5dGUpICUgMjU2O1xuXG5cdCAgICAgICAgICAgICAgICAvLyBTd2FwXG5cdCAgICAgICAgICAgICAgICB2YXIgdCA9IFNbaV07XG5cdCAgICAgICAgICAgICAgICBTW2ldID0gU1tqXTtcblx0ICAgICAgICAgICAgICAgIFNbal0gPSB0O1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gQ291bnRlcnNcblx0ICAgICAgICAgICAgdGhpcy5faSA9IHRoaXMuX2ogPSAwO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBfZG9Qcm9jZXNzQmxvY2s6IGZ1bmN0aW9uIChNLCBvZmZzZXQpIHtcblx0ICAgICAgICAgICAgTVtvZmZzZXRdIF49IGdlbmVyYXRlS2V5c3RyZWFtV29yZC5jYWxsKHRoaXMpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBrZXlTaXplOiAyNTYvMzIsXG5cblx0ICAgICAgICBpdlNpemU6IDBcblx0ICAgIH0pO1xuXG5cdCAgICBmdW5jdGlvbiBnZW5lcmF0ZUtleXN0cmVhbVdvcmQoKSB7XG5cdCAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgdmFyIFMgPSB0aGlzLl9TO1xuXHQgICAgICAgIHZhciBpID0gdGhpcy5faTtcblx0ICAgICAgICB2YXIgaiA9IHRoaXMuX2o7XG5cblx0ICAgICAgICAvLyBHZW5lcmF0ZSBrZXlzdHJlYW0gd29yZFxuXHQgICAgICAgIHZhciBrZXlzdHJlYW1Xb3JkID0gMDtcblx0ICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IDQ7IG4rKykge1xuXHQgICAgICAgICAgICBpID0gKGkgKyAxKSAlIDI1Njtcblx0ICAgICAgICAgICAgaiA9IChqICsgU1tpXSkgJSAyNTY7XG5cblx0ICAgICAgICAgICAgLy8gU3dhcFxuXHQgICAgICAgICAgICB2YXIgdCA9IFNbaV07XG5cdCAgICAgICAgICAgIFNbaV0gPSBTW2pdO1xuXHQgICAgICAgICAgICBTW2pdID0gdDtcblxuXHQgICAgICAgICAgICBrZXlzdHJlYW1Xb3JkIHw9IFNbKFNbaV0gKyBTW2pdKSAlIDI1Nl0gPDwgKDI0IC0gbiAqIDgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIC8vIFVwZGF0ZSBjb3VudGVyc1xuXHQgICAgICAgIHRoaXMuX2kgPSBpO1xuXHQgICAgICAgIHRoaXMuX2ogPSBqO1xuXG5cdCAgICAgICAgcmV0dXJuIGtleXN0cmVhbVdvcmQ7XG5cdCAgICB9XG5cblx0ICAgIC8qKlxuXHQgICAgICogU2hvcnRjdXQgZnVuY3Rpb25zIHRvIHRoZSBjaXBoZXIncyBvYmplY3QgaW50ZXJmYWNlLlxuXHQgICAgICpcblx0ICAgICAqIEBleGFtcGxlXG5cdCAgICAgKlxuXHQgICAgICogICAgIHZhciBjaXBoZXJ0ZXh0ID0gQ3J5cHRvSlMuUkM0LmVuY3J5cHQobWVzc2FnZSwga2V5LCBjZmcpO1xuXHQgICAgICogICAgIHZhciBwbGFpbnRleHQgID0gQ3J5cHRvSlMuUkM0LmRlY3J5cHQoY2lwaGVydGV4dCwga2V5LCBjZmcpO1xuXHQgICAgICovXG5cdCAgICBDLlJDNCA9IFN0cmVhbUNpcGhlci5fY3JlYXRlSGVscGVyKFJDNCk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogTW9kaWZpZWQgUkM0IHN0cmVhbSBjaXBoZXIgYWxnb3JpdGhtLlxuXHQgICAgICovXG5cdCAgICB2YXIgUkM0RHJvcCA9IENfYWxnby5SQzREcm9wID0gUkM0LmV4dGVuZCh7XG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29uZmlndXJhdGlvbiBvcHRpb25zLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHByb3BlcnR5IHtudW1iZXJ9IGRyb3AgVGhlIG51bWJlciBvZiBrZXlzdHJlYW0gd29yZHMgdG8gZHJvcC4gRGVmYXVsdCAxOTJcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBjZmc6IFJDNC5jZmcuZXh0ZW5kKHtcblx0ICAgICAgICAgICAgZHJvcDogMTkyXG5cdCAgICAgICAgfSksXG5cblx0ICAgICAgICBfZG9SZXNldDogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICBSQzQuX2RvUmVzZXQuY2FsbCh0aGlzKTtcblxuXHQgICAgICAgICAgICAvLyBEcm9wXG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSB0aGlzLmNmZy5kcm9wOyBpID4gMDsgaS0tKSB7XG5cdCAgICAgICAgICAgICAgICBnZW5lcmF0ZUtleXN0cmVhbVdvcmQuY2FsbCh0aGlzKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgIH0pO1xuXG5cdCAgICAvKipcblx0ICAgICAqIFNob3J0Y3V0IGZ1bmN0aW9ucyB0byB0aGUgY2lwaGVyJ3Mgb2JqZWN0IGludGVyZmFjZS5cblx0ICAgICAqXG5cdCAgICAgKiBAZXhhbXBsZVxuXHQgICAgICpcblx0ICAgICAqICAgICB2YXIgY2lwaGVydGV4dCA9IENyeXB0b0pTLlJDNERyb3AuZW5jcnlwdChtZXNzYWdlLCBrZXksIGNmZyk7XG5cdCAgICAgKiAgICAgdmFyIHBsYWludGV4dCAgPSBDcnlwdG9KUy5SQzREcm9wLmRlY3J5cHQoY2lwaGVydGV4dCwga2V5LCBjZmcpO1xuXHQgICAgICovXG5cdCAgICBDLlJDNERyb3AgPSBTdHJlYW1DaXBoZXIuX2NyZWF0ZUhlbHBlcihSQzREcm9wKTtcblx0fSgpKTtcblxuXG5cdHJldHVybiBDcnlwdG9KUy5SQzQ7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5KSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdC8qKiBAcHJlc2VydmVcblx0KGMpIDIwMTIgYnkgQ8OpZHJpYyBNZXNuaWwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cblx0UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OlxuXG5cdCAgICAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cblx0ICAgIC0gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuXG5cdFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgXCJBUyBJU1wiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cblx0Ki9cblxuXHQoZnVuY3Rpb24gKE1hdGgpIHtcblx0ICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgdmFyIEMgPSBDcnlwdG9KUztcblx0ICAgIHZhciBDX2xpYiA9IEMubGliO1xuXHQgICAgdmFyIFdvcmRBcnJheSA9IENfbGliLldvcmRBcnJheTtcblx0ICAgIHZhciBIYXNoZXIgPSBDX2xpYi5IYXNoZXI7XG5cdCAgICB2YXIgQ19hbGdvID0gQy5hbGdvO1xuXG5cdCAgICAvLyBDb25zdGFudHMgdGFibGVcblx0ICAgIHZhciBfemwgPSBXb3JkQXJyYXkuY3JlYXRlKFtcblx0ICAgICAgICAwLCAgMSwgIDIsICAzLCAgNCwgIDUsICA2LCAgNywgIDgsICA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LFxuXHQgICAgICAgIDcsICA0LCAxMywgIDEsIDEwLCAgNiwgMTUsICAzLCAxMiwgIDAsICA5LCAgNSwgIDIsIDE0LCAxMSwgIDgsXG5cdCAgICAgICAgMywgMTAsIDE0LCAgNCwgIDksIDE1LCAgOCwgIDEsICAyLCAgNywgIDAsICA2LCAxMywgMTEsICA1LCAxMixcblx0ICAgICAgICAxLCAgOSwgMTEsIDEwLCAgMCwgIDgsIDEyLCAgNCwgMTMsICAzLCAgNywgMTUsIDE0LCAgNSwgIDYsICAyLFxuXHQgICAgICAgIDQsICAwLCAgNSwgIDksICA3LCAxMiwgIDIsIDEwLCAxNCwgIDEsICAzLCAgOCwgMTEsICA2LCAxNSwgMTNdKTtcblx0ICAgIHZhciBfenIgPSBXb3JkQXJyYXkuY3JlYXRlKFtcblx0ICAgICAgICA1LCAxNCwgIDcsICAwLCAgOSwgIDIsIDExLCAgNCwgMTMsICA2LCAxNSwgIDgsICAxLCAxMCwgIDMsIDEyLFxuXHQgICAgICAgIDYsIDExLCAgMywgIDcsICAwLCAxMywgIDUsIDEwLCAxNCwgMTUsICA4LCAxMiwgIDQsICA5LCAgMSwgIDIsXG5cdCAgICAgICAgMTUsICA1LCAgMSwgIDMsICA3LCAxNCwgIDYsICA5LCAxMSwgIDgsIDEyLCAgMiwgMTAsICAwLCAgNCwgMTMsXG5cdCAgICAgICAgOCwgIDYsICA0LCAgMSwgIDMsIDExLCAxNSwgIDAsICA1LCAxMiwgIDIsIDEzLCAgOSwgIDcsIDEwLCAxNCxcblx0ICAgICAgICAxMiwgMTUsIDEwLCAgNCwgIDEsICA1LCAgOCwgIDcsICA2LCAgMiwgMTMsIDE0LCAgMCwgIDMsICA5LCAxMV0pO1xuXHQgICAgdmFyIF9zbCA9IFdvcmRBcnJheS5jcmVhdGUoW1xuXHQgICAgICAgICAxMSwgMTQsIDE1LCAxMiwgIDUsICA4LCAgNywgIDksIDExLCAxMywgMTQsIDE1LCAgNiwgIDcsICA5LCAgOCxcblx0ICAgICAgICA3LCA2LCAgIDgsIDEzLCAxMSwgIDksICA3LCAxNSwgIDcsIDEyLCAxNSwgIDksIDExLCAgNywgMTMsIDEyLFxuXHQgICAgICAgIDExLCAxMywgIDYsICA3LCAxNCwgIDksIDEzLCAxNSwgMTQsICA4LCAxMywgIDYsICA1LCAxMiwgIDcsICA1LFxuXHQgICAgICAgICAgMTEsIDEyLCAxNCwgMTUsIDE0LCAxNSwgIDksICA4LCAgOSwgMTQsICA1LCAgNiwgIDgsICA2LCAgNSwgMTIsXG5cdCAgICAgICAgOSwgMTUsICA1LCAxMSwgIDYsICA4LCAxMywgMTIsICA1LCAxMiwgMTMsIDE0LCAxMSwgIDgsICA1LCAgNiBdKTtcblx0ICAgIHZhciBfc3IgPSBXb3JkQXJyYXkuY3JlYXRlKFtcblx0ICAgICAgICA4LCAgOSwgIDksIDExLCAxMywgMTUsIDE1LCAgNSwgIDcsICA3LCAgOCwgMTEsIDE0LCAxNCwgMTIsICA2LFxuXHQgICAgICAgIDksIDEzLCAxNSwgIDcsIDEyLCAgOCwgIDksIDExLCAgNywgIDcsIDEyLCAgNywgIDYsIDE1LCAxMywgMTEsXG5cdCAgICAgICAgOSwgIDcsIDE1LCAxMSwgIDgsICA2LCAgNiwgMTQsIDEyLCAxMywgIDUsIDE0LCAxMywgMTMsICA3LCAgNSxcblx0ICAgICAgICAxNSwgIDUsICA4LCAxMSwgMTQsIDE0LCAgNiwgMTQsICA2LCAgOSwgMTIsICA5LCAxMiwgIDUsIDE1LCAgOCxcblx0ICAgICAgICA4LCAgNSwgMTIsICA5LCAxMiwgIDUsIDE0LCAgNiwgIDgsIDEzLCAgNiwgIDUsIDE1LCAxMywgMTEsIDExIF0pO1xuXG5cdCAgICB2YXIgX2hsID0gIFdvcmRBcnJheS5jcmVhdGUoWyAweDAwMDAwMDAwLCAweDVBODI3OTk5LCAweDZFRDlFQkExLCAweDhGMUJCQ0RDLCAweEE5NTNGRDRFXSk7XG5cdCAgICB2YXIgX2hyID0gIFdvcmRBcnJheS5jcmVhdGUoWyAweDUwQTI4QkU2LCAweDVDNEREMTI0LCAweDZENzAzRUYzLCAweDdBNkQ3NkU5LCAweDAwMDAwMDAwXSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogUklQRU1EMTYwIGhhc2ggYWxnb3JpdGhtLlxuXHQgICAgICovXG5cdCAgICB2YXIgUklQRU1EMTYwID0gQ19hbGdvLlJJUEVNRDE2MCA9IEhhc2hlci5leHRlbmQoe1xuXHQgICAgICAgIF9kb1Jlc2V0OiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIHRoaXMuX2hhc2ggID0gV29yZEFycmF5LmNyZWF0ZShbMHg2NzQ1MjMwMSwgMHhFRkNEQUI4OSwgMHg5OEJBRENGRSwgMHgxMDMyNTQ3NiwgMHhDM0QyRTFGMF0pO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBfZG9Qcm9jZXNzQmxvY2s6IGZ1bmN0aW9uIChNLCBvZmZzZXQpIHtcblxuXHQgICAgICAgICAgICAvLyBTd2FwIGVuZGlhblxuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICAgICAgdmFyIG9mZnNldF9pID0gb2Zmc2V0ICsgaTtcblx0ICAgICAgICAgICAgICAgIHZhciBNX29mZnNldF9pID0gTVtvZmZzZXRfaV07XG5cblx0ICAgICAgICAgICAgICAgIC8vIFN3YXBcblx0ICAgICAgICAgICAgICAgIE1bb2Zmc2V0X2ldID0gKFxuXHQgICAgICAgICAgICAgICAgICAgICgoKE1fb2Zmc2V0X2kgPDwgOCkgIHwgKE1fb2Zmc2V0X2kgPj4+IDI0KSkgJiAweDAwZmYwMGZmKSB8XG5cdCAgICAgICAgICAgICAgICAgICAgKCgoTV9vZmZzZXRfaSA8PCAyNCkgfCAoTV9vZmZzZXRfaSA+Pj4gOCkpICAmIDB4ZmYwMGZmMDApXG5cdCAgICAgICAgICAgICAgICApO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0XG5cdCAgICAgICAgICAgIHZhciBIICA9IHRoaXMuX2hhc2gud29yZHM7XG5cdCAgICAgICAgICAgIHZhciBobCA9IF9obC53b3Jkcztcblx0ICAgICAgICAgICAgdmFyIGhyID0gX2hyLndvcmRzO1xuXHQgICAgICAgICAgICB2YXIgemwgPSBfemwud29yZHM7XG5cdCAgICAgICAgICAgIHZhciB6ciA9IF96ci53b3Jkcztcblx0ICAgICAgICAgICAgdmFyIHNsID0gX3NsLndvcmRzO1xuXHQgICAgICAgICAgICB2YXIgc3IgPSBfc3Iud29yZHM7XG5cblx0ICAgICAgICAgICAgLy8gV29ya2luZyB2YXJpYWJsZXNcblx0ICAgICAgICAgICAgdmFyIGFsLCBibCwgY2wsIGRsLCBlbDtcblx0ICAgICAgICAgICAgdmFyIGFyLCBiciwgY3IsIGRyLCBlcjtcblxuXHQgICAgICAgICAgICBhciA9IGFsID0gSFswXTtcblx0ICAgICAgICAgICAgYnIgPSBibCA9IEhbMV07XG5cdCAgICAgICAgICAgIGNyID0gY2wgPSBIWzJdO1xuXHQgICAgICAgICAgICBkciA9IGRsID0gSFszXTtcblx0ICAgICAgICAgICAgZXIgPSBlbCA9IEhbNF07XG5cdCAgICAgICAgICAgIC8vIENvbXB1dGF0aW9uXG5cdCAgICAgICAgICAgIHZhciB0O1xuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDgwOyBpICs9IDEpIHtcblx0ICAgICAgICAgICAgICAgIHQgPSAoYWwgKyAgTVtvZmZzZXQremxbaV1dKXwwO1xuXHQgICAgICAgICAgICAgICAgaWYgKGk8MTYpe1xuXHRcdCAgICAgICAgICAgIHQgKz0gIGYxKGJsLGNsLGRsKSArIGhsWzBdO1xuXHQgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpPDMyKSB7XG5cdFx0ICAgICAgICAgICAgdCArPSAgZjIoYmwsY2wsZGwpICsgaGxbMV07XG5cdCAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGk8NDgpIHtcblx0XHQgICAgICAgICAgICB0ICs9ICBmMyhibCxjbCxkbCkgKyBobFsyXTtcblx0ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaTw2NCkge1xuXHRcdCAgICAgICAgICAgIHQgKz0gIGY0KGJsLGNsLGRsKSArIGhsWzNdO1xuXHQgICAgICAgICAgICAgICAgfSBlbHNlIHsvLyBpZiAoaTw4MCkge1xuXHRcdCAgICAgICAgICAgIHQgKz0gIGY1KGJsLGNsLGRsKSArIGhsWzRdO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgdCA9IHR8MDtcblx0ICAgICAgICAgICAgICAgIHQgPSAgcm90bCh0LHNsW2ldKTtcblx0ICAgICAgICAgICAgICAgIHQgPSAodCtlbCl8MDtcblx0ICAgICAgICAgICAgICAgIGFsID0gZWw7XG5cdCAgICAgICAgICAgICAgICBlbCA9IGRsO1xuXHQgICAgICAgICAgICAgICAgZGwgPSByb3RsKGNsLCAxMCk7XG5cdCAgICAgICAgICAgICAgICBjbCA9IGJsO1xuXHQgICAgICAgICAgICAgICAgYmwgPSB0O1xuXG5cdCAgICAgICAgICAgICAgICB0ID0gKGFyICsgTVtvZmZzZXQrenJbaV1dKXwwO1xuXHQgICAgICAgICAgICAgICAgaWYgKGk8MTYpe1xuXHRcdCAgICAgICAgICAgIHQgKz0gIGY1KGJyLGNyLGRyKSArIGhyWzBdO1xuXHQgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpPDMyKSB7XG5cdFx0ICAgICAgICAgICAgdCArPSAgZjQoYnIsY3IsZHIpICsgaHJbMV07XG5cdCAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGk8NDgpIHtcblx0XHQgICAgICAgICAgICB0ICs9ICBmMyhicixjcixkcikgKyBoclsyXTtcblx0ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaTw2NCkge1xuXHRcdCAgICAgICAgICAgIHQgKz0gIGYyKGJyLGNyLGRyKSArIGhyWzNdO1xuXHQgICAgICAgICAgICAgICAgfSBlbHNlIHsvLyBpZiAoaTw4MCkge1xuXHRcdCAgICAgICAgICAgIHQgKz0gIGYxKGJyLGNyLGRyKSArIGhyWzRdO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgdCA9IHR8MDtcblx0ICAgICAgICAgICAgICAgIHQgPSAgcm90bCh0LHNyW2ldKSA7XG5cdCAgICAgICAgICAgICAgICB0ID0gKHQrZXIpfDA7XG5cdCAgICAgICAgICAgICAgICBhciA9IGVyO1xuXHQgICAgICAgICAgICAgICAgZXIgPSBkcjtcblx0ICAgICAgICAgICAgICAgIGRyID0gcm90bChjciwgMTApO1xuXHQgICAgICAgICAgICAgICAgY3IgPSBicjtcblx0ICAgICAgICAgICAgICAgIGJyID0gdDtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAvLyBJbnRlcm1lZGlhdGUgaGFzaCB2YWx1ZVxuXHQgICAgICAgICAgICB0ICAgID0gKEhbMV0gKyBjbCArIGRyKXwwO1xuXHQgICAgICAgICAgICBIWzFdID0gKEhbMl0gKyBkbCArIGVyKXwwO1xuXHQgICAgICAgICAgICBIWzJdID0gKEhbM10gKyBlbCArIGFyKXwwO1xuXHQgICAgICAgICAgICBIWzNdID0gKEhbNF0gKyBhbCArIGJyKXwwO1xuXHQgICAgICAgICAgICBIWzRdID0gKEhbMF0gKyBibCArIGNyKXwwO1xuXHQgICAgICAgICAgICBIWzBdID0gIHQ7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIF9kb0ZpbmFsaXplOiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgZGF0YSA9IHRoaXMuX2RhdGE7XG5cdCAgICAgICAgICAgIHZhciBkYXRhV29yZHMgPSBkYXRhLndvcmRzO1xuXG5cdCAgICAgICAgICAgIHZhciBuQml0c1RvdGFsID0gdGhpcy5fbkRhdGFCeXRlcyAqIDg7XG5cdCAgICAgICAgICAgIHZhciBuQml0c0xlZnQgPSBkYXRhLnNpZ0J5dGVzICogODtcblxuXHQgICAgICAgICAgICAvLyBBZGQgcGFkZGluZ1xuXHQgICAgICAgICAgICBkYXRhV29yZHNbbkJpdHNMZWZ0ID4+PiA1XSB8PSAweDgwIDw8ICgyNCAtIG5CaXRzTGVmdCAlIDMyKTtcblx0ICAgICAgICAgICAgZGF0YVdvcmRzWygoKG5CaXRzTGVmdCArIDY0KSA+Pj4gOSkgPDwgNCkgKyAxNF0gPSAoXG5cdCAgICAgICAgICAgICAgICAoKChuQml0c1RvdGFsIDw8IDgpICB8IChuQml0c1RvdGFsID4+PiAyNCkpICYgMHgwMGZmMDBmZikgfFxuXHQgICAgICAgICAgICAgICAgKCgobkJpdHNUb3RhbCA8PCAyNCkgfCAobkJpdHNUb3RhbCA+Pj4gOCkpICAmIDB4ZmYwMGZmMDApXG5cdCAgICAgICAgICAgICk7XG5cdCAgICAgICAgICAgIGRhdGEuc2lnQnl0ZXMgPSAoZGF0YVdvcmRzLmxlbmd0aCArIDEpICogNDtcblxuXHQgICAgICAgICAgICAvLyBIYXNoIGZpbmFsIGJsb2Nrc1xuXHQgICAgICAgICAgICB0aGlzLl9wcm9jZXNzKCk7XG5cblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBoYXNoID0gdGhpcy5faGFzaDtcblx0ICAgICAgICAgICAgdmFyIEggPSBoYXNoLndvcmRzO1xuXG5cdCAgICAgICAgICAgIC8vIFN3YXAgZW5kaWFuXG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNTsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICAvLyBTaG9ydGN1dFxuXHQgICAgICAgICAgICAgICAgdmFyIEhfaSA9IEhbaV07XG5cblx0ICAgICAgICAgICAgICAgIC8vIFN3YXBcblx0ICAgICAgICAgICAgICAgIEhbaV0gPSAoKChIX2kgPDwgOCkgIHwgKEhfaSA+Pj4gMjQpKSAmIDB4MDBmZjAwZmYpIHxcblx0ICAgICAgICAgICAgICAgICAgICAgICAoKChIX2kgPDwgMjQpIHwgKEhfaSA+Pj4gOCkpICAmIDB4ZmYwMGZmMDApO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gUmV0dXJuIGZpbmFsIGNvbXB1dGVkIGhhc2hcblx0ICAgICAgICAgICAgcmV0dXJuIGhhc2g7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIGNsb25lOiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIHZhciBjbG9uZSA9IEhhc2hlci5jbG9uZS5jYWxsKHRoaXMpO1xuXHQgICAgICAgICAgICBjbG9uZS5faGFzaCA9IHRoaXMuX2hhc2guY2xvbmUoKTtcblxuXHQgICAgICAgICAgICByZXR1cm4gY2xvbmU7XG5cdCAgICAgICAgfVxuXHQgICAgfSk7XG5cblxuXHQgICAgZnVuY3Rpb24gZjEoeCwgeSwgeikge1xuXHQgICAgICAgIHJldHVybiAoKHgpIF4gKHkpIF4gKHopKTtcblxuXHQgICAgfVxuXG5cdCAgICBmdW5jdGlvbiBmMih4LCB5LCB6KSB7XG5cdCAgICAgICAgcmV0dXJuICgoKHgpJih5KSkgfCAoKH54KSYoeikpKTtcblx0ICAgIH1cblxuXHQgICAgZnVuY3Rpb24gZjMoeCwgeSwgeikge1xuXHQgICAgICAgIHJldHVybiAoKCh4KSB8ICh+KHkpKSkgXiAoeikpO1xuXHQgICAgfVxuXG5cdCAgICBmdW5jdGlvbiBmNCh4LCB5LCB6KSB7XG5cdCAgICAgICAgcmV0dXJuICgoKHgpICYgKHopKSB8ICgoeSkmKH4oeikpKSk7XG5cdCAgICB9XG5cblx0ICAgIGZ1bmN0aW9uIGY1KHgsIHksIHopIHtcblx0ICAgICAgICByZXR1cm4gKCh4KSBeICgoeSkgfCh+KHopKSkpO1xuXG5cdCAgICB9XG5cblx0ICAgIGZ1bmN0aW9uIHJvdGwoeCxuKSB7XG5cdCAgICAgICAgcmV0dXJuICh4PDxuKSB8ICh4Pj4+KDMyLW4pKTtcblx0ICAgIH1cblxuXG5cdCAgICAvKipcblx0ICAgICAqIFNob3J0Y3V0IGZ1bmN0aW9uIHRvIHRoZSBoYXNoZXIncyBvYmplY3QgaW50ZXJmYWNlLlxuXHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gbWVzc2FnZSBUaGUgbWVzc2FnZSB0byBoYXNoLlxuXHQgICAgICpcblx0ICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIGhhc2guXG5cdCAgICAgKlxuXHQgICAgICogQHN0YXRpY1xuXHQgICAgICpcblx0ICAgICAqIEBleGFtcGxlXG5cdCAgICAgKlxuXHQgICAgICogICAgIHZhciBoYXNoID0gQ3J5cHRvSlMuUklQRU1EMTYwKCdtZXNzYWdlJyk7XG5cdCAgICAgKiAgICAgdmFyIGhhc2ggPSBDcnlwdG9KUy5SSVBFTUQxNjAod29yZEFycmF5KTtcblx0ICAgICAqL1xuXHQgICAgQy5SSVBFTUQxNjAgPSBIYXNoZXIuX2NyZWF0ZUhlbHBlcihSSVBFTUQxNjApO1xuXG5cdCAgICAvKipcblx0ICAgICAqIFNob3J0Y3V0IGZ1bmN0aW9uIHRvIHRoZSBITUFDJ3Mgb2JqZWN0IGludGVyZmFjZS5cblx0ICAgICAqXG5cdCAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IG1lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gaGFzaC5cblx0ICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30ga2V5IFRoZSBzZWNyZXQga2V5LlxuXHQgICAgICpcblx0ICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIEhNQUMuXG5cdCAgICAgKlxuXHQgICAgICogQHN0YXRpY1xuXHQgICAgICpcblx0ICAgICAqIEBleGFtcGxlXG5cdCAgICAgKlxuXHQgICAgICogICAgIHZhciBobWFjID0gQ3J5cHRvSlMuSG1hY1JJUEVNRDE2MChtZXNzYWdlLCBrZXkpO1xuXHQgICAgICovXG5cdCAgICBDLkhtYWNSSVBFTUQxNjAgPSBIYXNoZXIuX2NyZWF0ZUhtYWNIZWxwZXIoUklQRU1EMTYwKTtcblx0fShNYXRoKSk7XG5cblxuXHRyZXR1cm4gQ3J5cHRvSlMuUklQRU1EMTYwO1xuXG59KSk7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSkge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0ZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHQoZnVuY3Rpb24gKCkge1xuXHQgICAgLy8gU2hvcnRjdXRzXG5cdCAgICB2YXIgQyA9IENyeXB0b0pTO1xuXHQgICAgdmFyIENfbGliID0gQy5saWI7XG5cdCAgICB2YXIgV29yZEFycmF5ID0gQ19saWIuV29yZEFycmF5O1xuXHQgICAgdmFyIEhhc2hlciA9IENfbGliLkhhc2hlcjtcblx0ICAgIHZhciBDX2FsZ28gPSBDLmFsZ287XG5cblx0ICAgIC8vIFJldXNhYmxlIG9iamVjdFxuXHQgICAgdmFyIFcgPSBbXTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBTSEEtMSBoYXNoIGFsZ29yaXRobS5cblx0ICAgICAqL1xuXHQgICAgdmFyIFNIQTEgPSBDX2FsZ28uU0hBMSA9IEhhc2hlci5leHRlbmQoe1xuXHQgICAgICAgIF9kb1Jlc2V0OiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIHRoaXMuX2hhc2ggPSBuZXcgV29yZEFycmF5LmluaXQoW1xuXHQgICAgICAgICAgICAgICAgMHg2NzQ1MjMwMSwgMHhlZmNkYWI4OSxcblx0ICAgICAgICAgICAgICAgIDB4OThiYWRjZmUsIDB4MTAzMjU0NzYsXG5cdCAgICAgICAgICAgICAgICAweGMzZDJlMWYwXG5cdCAgICAgICAgICAgIF0pO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBfZG9Qcm9jZXNzQmxvY2s6IGZ1bmN0aW9uIChNLCBvZmZzZXQpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRcblx0ICAgICAgICAgICAgdmFyIEggPSB0aGlzLl9oYXNoLndvcmRzO1xuXG5cdCAgICAgICAgICAgIC8vIFdvcmtpbmcgdmFyaWFibGVzXG5cdCAgICAgICAgICAgIHZhciBhID0gSFswXTtcblx0ICAgICAgICAgICAgdmFyIGIgPSBIWzFdO1xuXHQgICAgICAgICAgICB2YXIgYyA9IEhbMl07XG5cdCAgICAgICAgICAgIHZhciBkID0gSFszXTtcblx0ICAgICAgICAgICAgdmFyIGUgPSBIWzRdO1xuXG5cdCAgICAgICAgICAgIC8vIENvbXB1dGF0aW9uXG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgODA7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgaWYgKGkgPCAxNikge1xuXHQgICAgICAgICAgICAgICAgICAgIFdbaV0gPSBNW29mZnNldCArIGldIHwgMDtcblx0ICAgICAgICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBXW2kgLSAzXSBeIFdbaSAtIDhdIF4gV1tpIC0gMTRdIF4gV1tpIC0gMTZdO1xuXHQgICAgICAgICAgICAgICAgICAgIFdbaV0gPSAobiA8PCAxKSB8IChuID4+PiAzMSk7XG5cdCAgICAgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgICAgIHZhciB0ID0gKChhIDw8IDUpIHwgKGEgPj4+IDI3KSkgKyBlICsgV1tpXTtcblx0ICAgICAgICAgICAgICAgIGlmIChpIDwgMjApIHtcblx0ICAgICAgICAgICAgICAgICAgICB0ICs9ICgoYiAmIGMpIHwgKH5iICYgZCkpICsgMHg1YTgyNzk5OTtcblx0ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaSA8IDQwKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgdCArPSAoYiBeIGMgXiBkKSArIDB4NmVkOWViYTE7XG5cdCAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGkgPCA2MCkge1xuXHQgICAgICAgICAgICAgICAgICAgIHQgKz0gKChiICYgYykgfCAoYiAmIGQpIHwgKGMgJiBkKSkgLSAweDcwZTQ0MzI0O1xuXHQgICAgICAgICAgICAgICAgfSBlbHNlIC8qIGlmIChpIDwgODApICovIHtcblx0ICAgICAgICAgICAgICAgICAgICB0ICs9IChiIF4gYyBeIGQpIC0gMHgzNTlkM2UyYTtcblx0ICAgICAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAgICAgZSA9IGQ7XG5cdCAgICAgICAgICAgICAgICBkID0gYztcblx0ICAgICAgICAgICAgICAgIGMgPSAoYiA8PCAzMCkgfCAoYiA+Pj4gMik7XG5cdCAgICAgICAgICAgICAgICBiID0gYTtcblx0ICAgICAgICAgICAgICAgIGEgPSB0O1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gSW50ZXJtZWRpYXRlIGhhc2ggdmFsdWVcblx0ICAgICAgICAgICAgSFswXSA9IChIWzBdICsgYSkgfCAwO1xuXHQgICAgICAgICAgICBIWzFdID0gKEhbMV0gKyBiKSB8IDA7XG5cdCAgICAgICAgICAgIEhbMl0gPSAoSFsyXSArIGMpIHwgMDtcblx0ICAgICAgICAgICAgSFszXSA9IChIWzNdICsgZCkgfCAwO1xuXHQgICAgICAgICAgICBIWzRdID0gKEhbNF0gKyBlKSB8IDA7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIF9kb0ZpbmFsaXplOiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgZGF0YSA9IHRoaXMuX2RhdGE7XG5cdCAgICAgICAgICAgIHZhciBkYXRhV29yZHMgPSBkYXRhLndvcmRzO1xuXG5cdCAgICAgICAgICAgIHZhciBuQml0c1RvdGFsID0gdGhpcy5fbkRhdGFCeXRlcyAqIDg7XG5cdCAgICAgICAgICAgIHZhciBuQml0c0xlZnQgPSBkYXRhLnNpZ0J5dGVzICogODtcblxuXHQgICAgICAgICAgICAvLyBBZGQgcGFkZGluZ1xuXHQgICAgICAgICAgICBkYXRhV29yZHNbbkJpdHNMZWZ0ID4+PiA1XSB8PSAweDgwIDw8ICgyNCAtIG5CaXRzTGVmdCAlIDMyKTtcblx0ICAgICAgICAgICAgZGF0YVdvcmRzWygoKG5CaXRzTGVmdCArIDY0KSA+Pj4gOSkgPDwgNCkgKyAxNF0gPSBNYXRoLmZsb29yKG5CaXRzVG90YWwgLyAweDEwMDAwMDAwMCk7XG5cdCAgICAgICAgICAgIGRhdGFXb3Jkc1soKChuQml0c0xlZnQgKyA2NCkgPj4+IDkpIDw8IDQpICsgMTVdID0gbkJpdHNUb3RhbDtcblx0ICAgICAgICAgICAgZGF0YS5zaWdCeXRlcyA9IGRhdGFXb3Jkcy5sZW5ndGggKiA0O1xuXG5cdCAgICAgICAgICAgIC8vIEhhc2ggZmluYWwgYmxvY2tzXG5cdCAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3MoKTtcblxuXHQgICAgICAgICAgICAvLyBSZXR1cm4gZmluYWwgY29tcHV0ZWQgaGFzaFxuXHQgICAgICAgICAgICByZXR1cm4gdGhpcy5faGFzaDtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgY2xvbmU6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgdmFyIGNsb25lID0gSGFzaGVyLmNsb25lLmNhbGwodGhpcyk7XG5cdCAgICAgICAgICAgIGNsb25lLl9oYXNoID0gdGhpcy5faGFzaC5jbG9uZSgpO1xuXG5cdCAgICAgICAgICAgIHJldHVybiBjbG9uZTtcblx0ICAgICAgICB9XG5cdCAgICB9KTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBTaG9ydGN1dCBmdW5jdGlvbiB0byB0aGUgaGFzaGVyJ3Mgb2JqZWN0IGludGVyZmFjZS5cblx0ICAgICAqXG5cdCAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IG1lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gaGFzaC5cblx0ICAgICAqXG5cdCAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSBoYXNoLlxuXHQgICAgICpcblx0ICAgICAqIEBzdGF0aWNcblx0ICAgICAqXG5cdCAgICAgKiBAZXhhbXBsZVxuXHQgICAgICpcblx0ICAgICAqICAgICB2YXIgaGFzaCA9IENyeXB0b0pTLlNIQTEoJ21lc3NhZ2UnKTtcblx0ICAgICAqICAgICB2YXIgaGFzaCA9IENyeXB0b0pTLlNIQTEod29yZEFycmF5KTtcblx0ICAgICAqL1xuXHQgICAgQy5TSEExID0gSGFzaGVyLl9jcmVhdGVIZWxwZXIoU0hBMSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogU2hvcnRjdXQgZnVuY3Rpb24gdG8gdGhlIEhNQUMncyBvYmplY3QgaW50ZXJmYWNlLlxuXHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gbWVzc2FnZSBUaGUgbWVzc2FnZSB0byBoYXNoLlxuXHQgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBrZXkgVGhlIHNlY3JldCBrZXkuXG5cdCAgICAgKlxuXHQgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgSE1BQy5cblx0ICAgICAqXG5cdCAgICAgKiBAc3RhdGljXG5cdCAgICAgKlxuXHQgICAgICogQGV4YW1wbGVcblx0ICAgICAqXG5cdCAgICAgKiAgICAgdmFyIGhtYWMgPSBDcnlwdG9KUy5IbWFjU0hBMShtZXNzYWdlLCBrZXkpO1xuXHQgICAgICovXG5cdCAgICBDLkhtYWNTSEExID0gSGFzaGVyLl9jcmVhdGVIbWFjSGVscGVyKFNIQTEpO1xuXHR9KCkpO1xuXG5cblx0cmV0dXJuIENyeXB0b0pTLlNIQTE7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5LCB1bmRlZikge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSwgcmVxdWlyZShcIi4vc2hhMjU2XCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIiwgXCIuL3NoYTI1NlwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0KGZ1bmN0aW9uICgpIHtcblx0ICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgdmFyIEMgPSBDcnlwdG9KUztcblx0ICAgIHZhciBDX2xpYiA9IEMubGliO1xuXHQgICAgdmFyIFdvcmRBcnJheSA9IENfbGliLldvcmRBcnJheTtcblx0ICAgIHZhciBDX2FsZ28gPSBDLmFsZ287XG5cdCAgICB2YXIgU0hBMjU2ID0gQ19hbGdvLlNIQTI1NjtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBTSEEtMjI0IGhhc2ggYWxnb3JpdGhtLlxuXHQgICAgICovXG5cdCAgICB2YXIgU0hBMjI0ID0gQ19hbGdvLlNIQTIyNCA9IFNIQTI1Ni5leHRlbmQoe1xuXHQgICAgICAgIF9kb1Jlc2V0OiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIHRoaXMuX2hhc2ggPSBuZXcgV29yZEFycmF5LmluaXQoW1xuXHQgICAgICAgICAgICAgICAgMHhjMTA1OWVkOCwgMHgzNjdjZDUwNywgMHgzMDcwZGQxNywgMHhmNzBlNTkzOSxcblx0ICAgICAgICAgICAgICAgIDB4ZmZjMDBiMzEsIDB4Njg1ODE1MTEsIDB4NjRmOThmYTcsIDB4YmVmYTRmYTRcblx0ICAgICAgICAgICAgXSk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIF9kb0ZpbmFsaXplOiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIHZhciBoYXNoID0gU0hBMjU2Ll9kb0ZpbmFsaXplLmNhbGwodGhpcyk7XG5cblx0ICAgICAgICAgICAgaGFzaC5zaWdCeXRlcyAtPSA0O1xuXG5cdCAgICAgICAgICAgIHJldHVybiBoYXNoO1xuXHQgICAgICAgIH1cblx0ICAgIH0pO1xuXG5cdCAgICAvKipcblx0ICAgICAqIFNob3J0Y3V0IGZ1bmN0aW9uIHRvIHRoZSBoYXNoZXIncyBvYmplY3QgaW50ZXJmYWNlLlxuXHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gbWVzc2FnZSBUaGUgbWVzc2FnZSB0byBoYXNoLlxuXHQgICAgICpcblx0ICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIGhhc2guXG5cdCAgICAgKlxuXHQgICAgICogQHN0YXRpY1xuXHQgICAgICpcblx0ICAgICAqIEBleGFtcGxlXG5cdCAgICAgKlxuXHQgICAgICogICAgIHZhciBoYXNoID0gQ3J5cHRvSlMuU0hBMjI0KCdtZXNzYWdlJyk7XG5cdCAgICAgKiAgICAgdmFyIGhhc2ggPSBDcnlwdG9KUy5TSEEyMjQod29yZEFycmF5KTtcblx0ICAgICAqL1xuXHQgICAgQy5TSEEyMjQgPSBTSEEyNTYuX2NyZWF0ZUhlbHBlcihTSEEyMjQpO1xuXG5cdCAgICAvKipcblx0ICAgICAqIFNob3J0Y3V0IGZ1bmN0aW9uIHRvIHRoZSBITUFDJ3Mgb2JqZWN0IGludGVyZmFjZS5cblx0ICAgICAqXG5cdCAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IG1lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gaGFzaC5cblx0ICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30ga2V5IFRoZSBzZWNyZXQga2V5LlxuXHQgICAgICpcblx0ICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIEhNQUMuXG5cdCAgICAgKlxuXHQgICAgICogQHN0YXRpY1xuXHQgICAgICpcblx0ICAgICAqIEBleGFtcGxlXG5cdCAgICAgKlxuXHQgICAgICogICAgIHZhciBobWFjID0gQ3J5cHRvSlMuSG1hY1NIQTIyNChtZXNzYWdlLCBrZXkpO1xuXHQgICAgICovXG5cdCAgICBDLkhtYWNTSEEyMjQgPSBTSEEyNTYuX2NyZWF0ZUhtYWNIZWxwZXIoU0hBMjI0KTtcblx0fSgpKTtcblxuXG5cdHJldHVybiBDcnlwdG9KUy5TSEEyMjQ7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5KSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIl0sIGZhY3RvcnkpO1xuXHR9XG5cdGVsc2Uge1xuXHRcdC8vIEdsb2JhbCAoYnJvd3Nlcilcblx0XHRmYWN0b3J5KHJvb3QuQ3J5cHRvSlMpO1xuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChDcnlwdG9KUykge1xuXG5cdChmdW5jdGlvbiAoTWF0aCkge1xuXHQgICAgLy8gU2hvcnRjdXRzXG5cdCAgICB2YXIgQyA9IENyeXB0b0pTO1xuXHQgICAgdmFyIENfbGliID0gQy5saWI7XG5cdCAgICB2YXIgV29yZEFycmF5ID0gQ19saWIuV29yZEFycmF5O1xuXHQgICAgdmFyIEhhc2hlciA9IENfbGliLkhhc2hlcjtcblx0ICAgIHZhciBDX2FsZ28gPSBDLmFsZ287XG5cblx0ICAgIC8vIEluaXRpYWxpemF0aW9uIGFuZCByb3VuZCBjb25zdGFudHMgdGFibGVzXG5cdCAgICB2YXIgSCA9IFtdO1xuXHQgICAgdmFyIEsgPSBbXTtcblxuXHQgICAgLy8gQ29tcHV0ZSBjb25zdGFudHNcblx0ICAgIChmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgZnVuY3Rpb24gaXNQcmltZShuKSB7XG5cdCAgICAgICAgICAgIHZhciBzcXJ0TiA9IE1hdGguc3FydChuKTtcblx0ICAgICAgICAgICAgZm9yICh2YXIgZmFjdG9yID0gMjsgZmFjdG9yIDw9IHNxcnROOyBmYWN0b3IrKykge1xuXHQgICAgICAgICAgICAgICAgaWYgKCEobiAlIGZhY3RvcikpIHtcblx0ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBmdW5jdGlvbiBnZXRGcmFjdGlvbmFsQml0cyhuKSB7XG5cdCAgICAgICAgICAgIHJldHVybiAoKG4gLSAobiB8IDApKSAqIDB4MTAwMDAwMDAwKSB8IDA7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdmFyIG4gPSAyO1xuXHQgICAgICAgIHZhciBuUHJpbWUgPSAwO1xuXHQgICAgICAgIHdoaWxlIChuUHJpbWUgPCA2NCkge1xuXHQgICAgICAgICAgICBpZiAoaXNQcmltZShuKSkge1xuXHQgICAgICAgICAgICAgICAgaWYgKG5QcmltZSA8IDgpIHtcblx0ICAgICAgICAgICAgICAgICAgICBIW25QcmltZV0gPSBnZXRGcmFjdGlvbmFsQml0cyhNYXRoLnBvdyhuLCAxIC8gMikpO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgS1tuUHJpbWVdID0gZ2V0RnJhY3Rpb25hbEJpdHMoTWF0aC5wb3cobiwgMSAvIDMpKTtcblxuXHQgICAgICAgICAgICAgICAgblByaW1lKys7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICBuKys7XG5cdCAgICAgICAgfVxuXHQgICAgfSgpKTtcblxuXHQgICAgLy8gUmV1c2FibGUgb2JqZWN0XG5cdCAgICB2YXIgVyA9IFtdO1xuXG5cdCAgICAvKipcblx0ICAgICAqIFNIQS0yNTYgaGFzaCBhbGdvcml0aG0uXG5cdCAgICAgKi9cblx0ICAgIHZhciBTSEEyNTYgPSBDX2FsZ28uU0hBMjU2ID0gSGFzaGVyLmV4dGVuZCh7XG5cdCAgICAgICAgX2RvUmVzZXQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgdGhpcy5faGFzaCA9IG5ldyBXb3JkQXJyYXkuaW5pdChILnNsaWNlKDApKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgX2RvUHJvY2Vzc0Jsb2NrOiBmdW5jdGlvbiAoTSwgb2Zmc2V0KSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0XG5cdCAgICAgICAgICAgIHZhciBIID0gdGhpcy5faGFzaC53b3JkcztcblxuXHQgICAgICAgICAgICAvLyBXb3JraW5nIHZhcmlhYmxlc1xuXHQgICAgICAgICAgICB2YXIgYSA9IEhbMF07XG5cdCAgICAgICAgICAgIHZhciBiID0gSFsxXTtcblx0ICAgICAgICAgICAgdmFyIGMgPSBIWzJdO1xuXHQgICAgICAgICAgICB2YXIgZCA9IEhbM107XG5cdCAgICAgICAgICAgIHZhciBlID0gSFs0XTtcblx0ICAgICAgICAgICAgdmFyIGYgPSBIWzVdO1xuXHQgICAgICAgICAgICB2YXIgZyA9IEhbNl07XG5cdCAgICAgICAgICAgIHZhciBoID0gSFs3XTtcblxuXHQgICAgICAgICAgICAvLyBDb21wdXRhdGlvblxuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY0OyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIGlmIChpIDwgMTYpIHtcblx0ICAgICAgICAgICAgICAgICAgICBXW2ldID0gTVtvZmZzZXQgKyBpXSB8IDA7XG5cdCAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBnYW1tYTB4ID0gV1tpIC0gMTVdO1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBnYW1tYTAgID0gKChnYW1tYTB4IDw8IDI1KSB8IChnYW1tYTB4ID4+PiA3KSkgIF5cblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZ2FtbWEweCA8PCAxNCkgfCAoZ2FtbWEweCA+Pj4gMTgpKSBeXG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdhbW1hMHggPj4+IDMpO1xuXG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIGdhbW1hMXggPSBXW2kgLSAyXTtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgZ2FtbWExICA9ICgoZ2FtbWExeCA8PCAxNSkgfCAoZ2FtbWExeCA+Pj4gMTcpKSBeXG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGdhbW1hMXggPDwgMTMpIHwgKGdhbW1hMXggPj4+IDE5KSkgXlxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnYW1tYTF4ID4+PiAxMCk7XG5cblx0ICAgICAgICAgICAgICAgICAgICBXW2ldID0gZ2FtbWEwICsgV1tpIC0gN10gKyBnYW1tYTEgKyBXW2kgLSAxNl07XG5cdCAgICAgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgICAgIHZhciBjaCAgPSAoZSAmIGYpIF4gKH5lICYgZyk7XG5cdCAgICAgICAgICAgICAgICB2YXIgbWFqID0gKGEgJiBiKSBeIChhICYgYykgXiAoYiAmIGMpO1xuXG5cdCAgICAgICAgICAgICAgICB2YXIgc2lnbWEwID0gKChhIDw8IDMwKSB8IChhID4+PiAyKSkgXiAoKGEgPDwgMTkpIHwgKGEgPj4+IDEzKSkgXiAoKGEgPDwgMTApIHwgKGEgPj4+IDIyKSk7XG5cdCAgICAgICAgICAgICAgICB2YXIgc2lnbWExID0gKChlIDw8IDI2KSB8IChlID4+PiA2KSkgXiAoKGUgPDwgMjEpIHwgKGUgPj4+IDExKSkgXiAoKGUgPDwgNykgIHwgKGUgPj4+IDI1KSk7XG5cblx0ICAgICAgICAgICAgICAgIHZhciB0MSA9IGggKyBzaWdtYTEgKyBjaCArIEtbaV0gKyBXW2ldO1xuXHQgICAgICAgICAgICAgICAgdmFyIHQyID0gc2lnbWEwICsgbWFqO1xuXG5cdCAgICAgICAgICAgICAgICBoID0gZztcblx0ICAgICAgICAgICAgICAgIGcgPSBmO1xuXHQgICAgICAgICAgICAgICAgZiA9IGU7XG5cdCAgICAgICAgICAgICAgICBlID0gKGQgKyB0MSkgfCAwO1xuXHQgICAgICAgICAgICAgICAgZCA9IGM7XG5cdCAgICAgICAgICAgICAgICBjID0gYjtcblx0ICAgICAgICAgICAgICAgIGIgPSBhO1xuXHQgICAgICAgICAgICAgICAgYSA9ICh0MSArIHQyKSB8IDA7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBJbnRlcm1lZGlhdGUgaGFzaCB2YWx1ZVxuXHQgICAgICAgICAgICBIWzBdID0gKEhbMF0gKyBhKSB8IDA7XG5cdCAgICAgICAgICAgIEhbMV0gPSAoSFsxXSArIGIpIHwgMDtcblx0ICAgICAgICAgICAgSFsyXSA9IChIWzJdICsgYykgfCAwO1xuXHQgICAgICAgICAgICBIWzNdID0gKEhbM10gKyBkKSB8IDA7XG5cdCAgICAgICAgICAgIEhbNF0gPSAoSFs0XSArIGUpIHwgMDtcblx0ICAgICAgICAgICAgSFs1XSA9IChIWzVdICsgZikgfCAwO1xuXHQgICAgICAgICAgICBIWzZdID0gKEhbNl0gKyBnKSB8IDA7XG5cdCAgICAgICAgICAgIEhbN10gPSAoSFs3XSArIGgpIHwgMDtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgX2RvRmluYWxpemU6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciBkYXRhID0gdGhpcy5fZGF0YTtcblx0ICAgICAgICAgICAgdmFyIGRhdGFXb3JkcyA9IGRhdGEud29yZHM7XG5cblx0ICAgICAgICAgICAgdmFyIG5CaXRzVG90YWwgPSB0aGlzLl9uRGF0YUJ5dGVzICogODtcblx0ICAgICAgICAgICAgdmFyIG5CaXRzTGVmdCA9IGRhdGEuc2lnQnl0ZXMgKiA4O1xuXG5cdCAgICAgICAgICAgIC8vIEFkZCBwYWRkaW5nXG5cdCAgICAgICAgICAgIGRhdGFXb3Jkc1tuQml0c0xlZnQgPj4+IDVdIHw9IDB4ODAgPDwgKDI0IC0gbkJpdHNMZWZ0ICUgMzIpO1xuXHQgICAgICAgICAgICBkYXRhV29yZHNbKCgobkJpdHNMZWZ0ICsgNjQpID4+PiA5KSA8PCA0KSArIDE0XSA9IE1hdGguZmxvb3IobkJpdHNUb3RhbCAvIDB4MTAwMDAwMDAwKTtcblx0ICAgICAgICAgICAgZGF0YVdvcmRzWygoKG5CaXRzTGVmdCArIDY0KSA+Pj4gOSkgPDwgNCkgKyAxNV0gPSBuQml0c1RvdGFsO1xuXHQgICAgICAgICAgICBkYXRhLnNpZ0J5dGVzID0gZGF0YVdvcmRzLmxlbmd0aCAqIDQ7XG5cblx0ICAgICAgICAgICAgLy8gSGFzaCBmaW5hbCBibG9ja3Ncblx0ICAgICAgICAgICAgdGhpcy5fcHJvY2VzcygpO1xuXG5cdCAgICAgICAgICAgIC8vIFJldHVybiBmaW5hbCBjb21wdXRlZCBoYXNoXG5cdCAgICAgICAgICAgIHJldHVybiB0aGlzLl9oYXNoO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBjbG9uZTogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICB2YXIgY2xvbmUgPSBIYXNoZXIuY2xvbmUuY2FsbCh0aGlzKTtcblx0ICAgICAgICAgICAgY2xvbmUuX2hhc2ggPSB0aGlzLl9oYXNoLmNsb25lKCk7XG5cblx0ICAgICAgICAgICAgcmV0dXJuIGNsb25lO1xuXHQgICAgICAgIH1cblx0ICAgIH0pO1xuXG5cdCAgICAvKipcblx0ICAgICAqIFNob3J0Y3V0IGZ1bmN0aW9uIHRvIHRoZSBoYXNoZXIncyBvYmplY3QgaW50ZXJmYWNlLlxuXHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gbWVzc2FnZSBUaGUgbWVzc2FnZSB0byBoYXNoLlxuXHQgICAgICpcblx0ICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIGhhc2guXG5cdCAgICAgKlxuXHQgICAgICogQHN0YXRpY1xuXHQgICAgICpcblx0ICAgICAqIEBleGFtcGxlXG5cdCAgICAgKlxuXHQgICAgICogICAgIHZhciBoYXNoID0gQ3J5cHRvSlMuU0hBMjU2KCdtZXNzYWdlJyk7XG5cdCAgICAgKiAgICAgdmFyIGhhc2ggPSBDcnlwdG9KUy5TSEEyNTYod29yZEFycmF5KTtcblx0ICAgICAqL1xuXHQgICAgQy5TSEEyNTYgPSBIYXNoZXIuX2NyZWF0ZUhlbHBlcihTSEEyNTYpO1xuXG5cdCAgICAvKipcblx0ICAgICAqIFNob3J0Y3V0IGZ1bmN0aW9uIHRvIHRoZSBITUFDJ3Mgb2JqZWN0IGludGVyZmFjZS5cblx0ICAgICAqXG5cdCAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IG1lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gaGFzaC5cblx0ICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30ga2V5IFRoZSBzZWNyZXQga2V5LlxuXHQgICAgICpcblx0ICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIEhNQUMuXG5cdCAgICAgKlxuXHQgICAgICogQHN0YXRpY1xuXHQgICAgICpcblx0ICAgICAqIEBleGFtcGxlXG5cdCAgICAgKlxuXHQgICAgICogICAgIHZhciBobWFjID0gQ3J5cHRvSlMuSG1hY1NIQTI1NihtZXNzYWdlLCBrZXkpO1xuXHQgICAgICovXG5cdCAgICBDLkhtYWNTSEEyNTYgPSBIYXNoZXIuX2NyZWF0ZUhtYWNIZWxwZXIoU0hBMjU2KTtcblx0fShNYXRoKSk7XG5cblxuXHRyZXR1cm4gQ3J5cHRvSlMuU0hBMjU2O1xuXG59KSk7IiwiOyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSwgdW5kZWYpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIiksIHJlcXVpcmUoXCIuL3g2NC1jb3JlXCIpKTtcblx0fVxuXHRlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIEFNRFxuXHRcdGRlZmluZShbXCIuL2NvcmVcIiwgXCIuL3g2NC1jb3JlXCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0ZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHQoZnVuY3Rpb24gKE1hdGgpIHtcblx0ICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgdmFyIEMgPSBDcnlwdG9KUztcblx0ICAgIHZhciBDX2xpYiA9IEMubGliO1xuXHQgICAgdmFyIFdvcmRBcnJheSA9IENfbGliLldvcmRBcnJheTtcblx0ICAgIHZhciBIYXNoZXIgPSBDX2xpYi5IYXNoZXI7XG5cdCAgICB2YXIgQ194NjQgPSBDLng2NDtcblx0ICAgIHZhciBYNjRXb3JkID0gQ194NjQuV29yZDtcblx0ICAgIHZhciBDX2FsZ28gPSBDLmFsZ287XG5cblx0ICAgIC8vIENvbnN0YW50cyB0YWJsZXNcblx0ICAgIHZhciBSSE9fT0ZGU0VUUyA9IFtdO1xuXHQgICAgdmFyIFBJX0lOREVYRVMgID0gW107XG5cdCAgICB2YXIgUk9VTkRfQ09OU1RBTlRTID0gW107XG5cblx0ICAgIC8vIENvbXB1dGUgQ29uc3RhbnRzXG5cdCAgICAoZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIC8vIENvbXB1dGUgcmhvIG9mZnNldCBjb25zdGFudHNcblx0ICAgICAgICB2YXIgeCA9IDEsIHkgPSAwO1xuXHQgICAgICAgIGZvciAodmFyIHQgPSAwOyB0IDwgMjQ7IHQrKykge1xuXHQgICAgICAgICAgICBSSE9fT0ZGU0VUU1t4ICsgNSAqIHldID0gKCh0ICsgMSkgKiAodCArIDIpIC8gMikgJSA2NDtcblxuXHQgICAgICAgICAgICB2YXIgbmV3WCA9IHkgJSA1O1xuXHQgICAgICAgICAgICB2YXIgbmV3WSA9ICgyICogeCArIDMgKiB5KSAlIDU7XG5cdCAgICAgICAgICAgIHggPSBuZXdYO1xuXHQgICAgICAgICAgICB5ID0gbmV3WTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgICAvLyBDb21wdXRlIHBpIGluZGV4IGNvbnN0YW50c1xuXHQgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgNTsgeCsrKSB7XG5cdCAgICAgICAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwgNTsgeSsrKSB7XG5cdCAgICAgICAgICAgICAgICBQSV9JTkRFWEVTW3ggKyA1ICogeV0gPSB5ICsgKCgyICogeCArIDMgKiB5KSAlIDUpICogNTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblxuXHQgICAgICAgIC8vIENvbXB1dGUgcm91bmQgY29uc3RhbnRzXG5cdCAgICAgICAgdmFyIExGU1IgPSAweDAxO1xuXHQgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjQ7IGkrKykge1xuXHQgICAgICAgICAgICB2YXIgcm91bmRDb25zdGFudE1zdyA9IDA7XG5cdCAgICAgICAgICAgIHZhciByb3VuZENvbnN0YW50THN3ID0gMDtcblxuXHQgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDc7IGorKykge1xuXHQgICAgICAgICAgICAgICAgaWYgKExGU1IgJiAweDAxKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIGJpdFBvc2l0aW9uID0gKDEgPDwgaikgLSAxO1xuXHQgICAgICAgICAgICAgICAgICAgIGlmIChiaXRQb3NpdGlvbiA8IDMyKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHJvdW5kQ29uc3RhbnRMc3cgXj0gMSA8PCBiaXRQb3NpdGlvbjtcblx0ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgLyogaWYgKGJpdFBvc2l0aW9uID49IDMyKSAqLyB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHJvdW5kQ29uc3RhbnRNc3cgXj0gMSA8PCAoYml0UG9zaXRpb24gLSAzMik7XG5cdCAgICAgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgICAgICAvLyBDb21wdXRlIG5leHQgTEZTUlxuXHQgICAgICAgICAgICAgICAgaWYgKExGU1IgJiAweDgwKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgLy8gUHJpbWl0aXZlIHBvbHlub21pYWwgb3ZlciBHRigyKTogeF44ICsgeF42ICsgeF41ICsgeF40ICsgMVxuXHQgICAgICAgICAgICAgICAgICAgIExGU1IgPSAoTEZTUiA8PCAxKSBeIDB4NzE7XG5cdCAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgICAgIExGU1IgPDw9IDE7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICBST1VORF9DT05TVEFOVFNbaV0gPSBYNjRXb3JkLmNyZWF0ZShyb3VuZENvbnN0YW50TXN3LCByb3VuZENvbnN0YW50THN3KTtcblx0ICAgICAgICB9XG5cdCAgICB9KCkpO1xuXG5cdCAgICAvLyBSZXVzYWJsZSBvYmplY3RzIGZvciB0ZW1wb3JhcnkgdmFsdWVzXG5cdCAgICB2YXIgVCA9IFtdO1xuXHQgICAgKGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI1OyBpKyspIHtcblx0ICAgICAgICAgICAgVFtpXSA9IFg2NFdvcmQuY3JlYXRlKCk7XG5cdCAgICAgICAgfVxuXHQgICAgfSgpKTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBTSEEtMyBoYXNoIGFsZ29yaXRobS5cblx0ICAgICAqL1xuXHQgICAgdmFyIFNIQTMgPSBDX2FsZ28uU0hBMyA9IEhhc2hlci5leHRlbmQoe1xuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBvdXRwdXRMZW5ndGhcblx0ICAgICAgICAgKiAgIFRoZSBkZXNpcmVkIG51bWJlciBvZiBiaXRzIGluIHRoZSBvdXRwdXQgaGFzaC5cblx0ICAgICAgICAgKiAgIE9ubHkgdmFsdWVzIHBlcm1pdHRlZCBhcmU6IDIyNCwgMjU2LCAzODQsIDUxMi5cblx0ICAgICAgICAgKiAgIERlZmF1bHQ6IDUxMlxuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGNmZzogSGFzaGVyLmNmZy5leHRlbmQoe1xuXHQgICAgICAgICAgICBvdXRwdXRMZW5ndGg6IDUxMlxuXHQgICAgICAgIH0pLFxuXG5cdCAgICAgICAgX2RvUmVzZXQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgdmFyIHN0YXRlID0gdGhpcy5fc3RhdGUgPSBbXVxuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI1OyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIHN0YXRlW2ldID0gbmV3IFg2NFdvcmQuaW5pdCgpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgdGhpcy5ibG9ja1NpemUgPSAoMTYwMCAtIDIgKiB0aGlzLmNmZy5vdXRwdXRMZW5ndGgpIC8gMzI7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIF9kb1Byb2Nlc3NCbG9jazogZnVuY3Rpb24gKE0sIG9mZnNldCkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIHN0YXRlID0gdGhpcy5fc3RhdGU7XG5cdCAgICAgICAgICAgIHZhciBuQmxvY2tTaXplTGFuZXMgPSB0aGlzLmJsb2NrU2l6ZSAvIDI7XG5cblx0ICAgICAgICAgICAgLy8gQWJzb3JiXG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbkJsb2NrU2l6ZUxhbmVzOyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICAgICAgdmFyIE0yaSAgPSBNW29mZnNldCArIDIgKiBpXTtcblx0ICAgICAgICAgICAgICAgIHZhciBNMmkxID0gTVtvZmZzZXQgKyAyICogaSArIDFdO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBTd2FwIGVuZGlhblxuXHQgICAgICAgICAgICAgICAgTTJpID0gKFxuXHQgICAgICAgICAgICAgICAgICAgICgoKE0yaSA8PCA4KSAgfCAoTTJpID4+PiAyNCkpICYgMHgwMGZmMDBmZikgfFxuXHQgICAgICAgICAgICAgICAgICAgICgoKE0yaSA8PCAyNCkgfCAoTTJpID4+PiA4KSkgICYgMHhmZjAwZmYwMClcblx0ICAgICAgICAgICAgICAgICk7XG5cdCAgICAgICAgICAgICAgICBNMmkxID0gKFxuXHQgICAgICAgICAgICAgICAgICAgICgoKE0yaTEgPDwgOCkgIHwgKE0yaTEgPj4+IDI0KSkgJiAweDAwZmYwMGZmKSB8XG5cdCAgICAgICAgICAgICAgICAgICAgKCgoTTJpMSA8PCAyNCkgfCAoTTJpMSA+Pj4gOCkpICAmIDB4ZmYwMGZmMDApXG5cdCAgICAgICAgICAgICAgICApO1xuXG5cdCAgICAgICAgICAgICAgICAvLyBBYnNvcmIgbWVzc2FnZSBpbnRvIHN0YXRlXG5cdCAgICAgICAgICAgICAgICB2YXIgbGFuZSA9IHN0YXRlW2ldO1xuXHQgICAgICAgICAgICAgICAgbGFuZS5oaWdoIF49IE0yaTE7XG5cdCAgICAgICAgICAgICAgICBsYW5lLmxvdyAgXj0gTTJpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gUm91bmRzXG5cdCAgICAgICAgICAgIGZvciAodmFyIHJvdW5kID0gMDsgcm91bmQgPCAyNDsgcm91bmQrKykge1xuXHQgICAgICAgICAgICAgICAgLy8gVGhldGFcblx0ICAgICAgICAgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgNTsgeCsrKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgLy8gTWl4IGNvbHVtbiBsYW5lc1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciB0TXN3ID0gMCwgdExzdyA9IDA7XG5cdCAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkgPCA1OyB5KyspIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxhbmUgPSBzdGF0ZVt4ICsgNSAqIHldO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB0TXN3IF49IGxhbmUuaGlnaDtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdExzdyBePSBsYW5lLmxvdztcblx0ICAgICAgICAgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgICAgICAgICAvLyBUZW1wb3JhcnkgdmFsdWVzXG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIFR4ID0gVFt4XTtcblx0ICAgICAgICAgICAgICAgICAgICBUeC5oaWdoID0gdE1zdztcblx0ICAgICAgICAgICAgICAgICAgICBUeC5sb3cgID0gdExzdztcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgNTsgeCsrKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIFR4NCA9IFRbKHggKyA0KSAlIDVdO1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBUeDEgPSBUWyh4ICsgMSkgJSA1XTtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgVHgxTXN3ID0gVHgxLmhpZ2g7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIFR4MUxzdyA9IFR4MS5sb3c7XG5cblx0ICAgICAgICAgICAgICAgICAgICAvLyBNaXggc3Vycm91bmRpbmcgY29sdW1uc1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciB0TXN3ID0gVHg0LmhpZ2ggXiAoKFR4MU1zdyA8PCAxKSB8IChUeDFMc3cgPj4+IDMxKSk7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIHRMc3cgPSBUeDQubG93ICBeICgoVHgxTHN3IDw8IDEpIHwgKFR4MU1zdyA+Pj4gMzEpKTtcblx0ICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB5ID0gMDsgeSA8IDU7IHkrKykge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGFuZSA9IHN0YXRlW3ggKyA1ICogeV07XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIGxhbmUuaGlnaCBePSB0TXN3O1xuXHQgICAgICAgICAgICAgICAgICAgICAgICBsYW5lLmxvdyAgXj0gdExzdztcblx0ICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgICAgIC8vIFJobyBQaVxuXHQgICAgICAgICAgICAgICAgZm9yICh2YXIgbGFuZUluZGV4ID0gMTsgbGFuZUluZGV4IDwgMjU7IGxhbmVJbmRleCsrKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIHRNc3c7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIHRMc3c7XG5cblx0ICAgICAgICAgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgbGFuZSA9IHN0YXRlW2xhbmVJbmRleF07XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIGxhbmVNc3cgPSBsYW5lLmhpZ2g7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIGxhbmVMc3cgPSBsYW5lLmxvdztcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgcmhvT2Zmc2V0ID0gUkhPX09GRlNFVFNbbGFuZUluZGV4XTtcblxuXHQgICAgICAgICAgICAgICAgICAgIC8vIFJvdGF0ZSBsYW5lc1xuXHQgICAgICAgICAgICAgICAgICAgIGlmIChyaG9PZmZzZXQgPCAzMikge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB0TXN3ID0gKGxhbmVNc3cgPDwgcmhvT2Zmc2V0KSB8IChsYW5lTHN3ID4+PiAoMzIgLSByaG9PZmZzZXQpKTtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdExzdyA9IChsYW5lTHN3IDw8IHJob09mZnNldCkgfCAobGFuZU1zdyA+Pj4gKDMyIC0gcmhvT2Zmc2V0KSk7XG5cdCAgICAgICAgICAgICAgICAgICAgfSBlbHNlIC8qIGlmIChyaG9PZmZzZXQgPj0gMzIpICovIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdE1zdyA9IChsYW5lTHN3IDw8IChyaG9PZmZzZXQgLSAzMikpIHwgKGxhbmVNc3cgPj4+ICg2NCAtIHJob09mZnNldCkpO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB0THN3ID0gKGxhbmVNc3cgPDwgKHJob09mZnNldCAtIDMyKSkgfCAobGFuZUxzdyA+Pj4gKDY0IC0gcmhvT2Zmc2V0KSk7XG5cdCAgICAgICAgICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgICAgICAgICAgLy8gVHJhbnNwb3NlIGxhbmVzXG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIFRQaUxhbmUgPSBUW1BJX0lOREVYRVNbbGFuZUluZGV4XV07XG5cdCAgICAgICAgICAgICAgICAgICAgVFBpTGFuZS5oaWdoID0gdE1zdztcblx0ICAgICAgICAgICAgICAgICAgICBUUGlMYW5lLmxvdyAgPSB0THN3O1xuXHQgICAgICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgICAgICAvLyBSaG8gcGkgYXQgeCA9IHkgPSAwXG5cdCAgICAgICAgICAgICAgICB2YXIgVDAgPSBUWzBdO1xuXHQgICAgICAgICAgICAgICAgdmFyIHN0YXRlMCA9IHN0YXRlWzBdO1xuXHQgICAgICAgICAgICAgICAgVDAuaGlnaCA9IHN0YXRlMC5oaWdoO1xuXHQgICAgICAgICAgICAgICAgVDAubG93ICA9IHN0YXRlMC5sb3c7XG5cblx0ICAgICAgICAgICAgICAgIC8vIENoaVxuXHQgICAgICAgICAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCA1OyB4KyspIHtcblx0ICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB5ID0gMDsgeSA8IDU7IHkrKykge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxhbmVJbmRleCA9IHggKyA1ICogeTtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxhbmUgPSBzdGF0ZVtsYW5lSW5kZXhdO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB2YXIgVExhbmUgPSBUW2xhbmVJbmRleF07XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHZhciBUeDFMYW5lID0gVFsoKHggKyAxKSAlIDUpICsgNSAqIHldO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB2YXIgVHgyTGFuZSA9IFRbKCh4ICsgMikgJSA1KSArIDUgKiB5XTtcblxuXHQgICAgICAgICAgICAgICAgICAgICAgICAvLyBNaXggcm93c1xuXHQgICAgICAgICAgICAgICAgICAgICAgICBsYW5lLmhpZ2ggPSBUTGFuZS5oaWdoIF4gKH5UeDFMYW5lLmhpZ2ggJiBUeDJMYW5lLmhpZ2gpO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICBsYW5lLmxvdyAgPSBUTGFuZS5sb3cgIF4gKH5UeDFMYW5lLmxvdyAgJiBUeDJMYW5lLmxvdyk7XG5cdCAgICAgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgICAgICAvLyBJb3RhXG5cdCAgICAgICAgICAgICAgICB2YXIgbGFuZSA9IHN0YXRlWzBdO1xuXHQgICAgICAgICAgICAgICAgdmFyIHJvdW5kQ29uc3RhbnQgPSBST1VORF9DT05TVEFOVFNbcm91bmRdO1xuXHQgICAgICAgICAgICAgICAgbGFuZS5oaWdoIF49IHJvdW5kQ29uc3RhbnQuaGlnaDtcblx0ICAgICAgICAgICAgICAgIGxhbmUubG93ICBePSByb3VuZENvbnN0YW50Lmxvdztcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBfZG9GaW5hbGl6ZTogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIGRhdGEgPSB0aGlzLl9kYXRhO1xuXHQgICAgICAgICAgICB2YXIgZGF0YVdvcmRzID0gZGF0YS53b3Jkcztcblx0ICAgICAgICAgICAgdmFyIG5CaXRzVG90YWwgPSB0aGlzLl9uRGF0YUJ5dGVzICogODtcblx0ICAgICAgICAgICAgdmFyIG5CaXRzTGVmdCA9IGRhdGEuc2lnQnl0ZXMgKiA4O1xuXHQgICAgICAgICAgICB2YXIgYmxvY2tTaXplQml0cyA9IHRoaXMuYmxvY2tTaXplICogMzI7XG5cblx0ICAgICAgICAgICAgLy8gQWRkIHBhZGRpbmdcblx0ICAgICAgICAgICAgZGF0YVdvcmRzW25CaXRzTGVmdCA+Pj4gNV0gfD0gMHgxIDw8ICgyNCAtIG5CaXRzTGVmdCAlIDMyKTtcblx0ICAgICAgICAgICAgZGF0YVdvcmRzWygoTWF0aC5jZWlsKChuQml0c0xlZnQgKyAxKSAvIGJsb2NrU2l6ZUJpdHMpICogYmxvY2tTaXplQml0cykgPj4+IDUpIC0gMV0gfD0gMHg4MDtcblx0ICAgICAgICAgICAgZGF0YS5zaWdCeXRlcyA9IGRhdGFXb3Jkcy5sZW5ndGggKiA0O1xuXG5cdCAgICAgICAgICAgIC8vIEhhc2ggZmluYWwgYmxvY2tzXG5cdCAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3MoKTtcblxuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIHN0YXRlID0gdGhpcy5fc3RhdGU7XG5cdCAgICAgICAgICAgIHZhciBvdXRwdXRMZW5ndGhCeXRlcyA9IHRoaXMuY2ZnLm91dHB1dExlbmd0aCAvIDg7XG5cdCAgICAgICAgICAgIHZhciBvdXRwdXRMZW5ndGhMYW5lcyA9IG91dHB1dExlbmd0aEJ5dGVzIC8gODtcblxuXHQgICAgICAgICAgICAvLyBTcXVlZXplXG5cdCAgICAgICAgICAgIHZhciBoYXNoV29yZHMgPSBbXTtcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvdXRwdXRMZW5ndGhMYW5lczsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgICAgIHZhciBsYW5lID0gc3RhdGVbaV07XG5cdCAgICAgICAgICAgICAgICB2YXIgbGFuZU1zdyA9IGxhbmUuaGlnaDtcblx0ICAgICAgICAgICAgICAgIHZhciBsYW5lTHN3ID0gbGFuZS5sb3c7XG5cblx0ICAgICAgICAgICAgICAgIC8vIFN3YXAgZW5kaWFuXG5cdCAgICAgICAgICAgICAgICBsYW5lTXN3ID0gKFxuXHQgICAgICAgICAgICAgICAgICAgICgoKGxhbmVNc3cgPDwgOCkgIHwgKGxhbmVNc3cgPj4+IDI0KSkgJiAweDAwZmYwMGZmKSB8XG5cdCAgICAgICAgICAgICAgICAgICAgKCgobGFuZU1zdyA8PCAyNCkgfCAobGFuZU1zdyA+Pj4gOCkpICAmIDB4ZmYwMGZmMDApXG5cdCAgICAgICAgICAgICAgICApO1xuXHQgICAgICAgICAgICAgICAgbGFuZUxzdyA9IChcblx0ICAgICAgICAgICAgICAgICAgICAoKChsYW5lTHN3IDw8IDgpICB8IChsYW5lTHN3ID4+PiAyNCkpICYgMHgwMGZmMDBmZikgfFxuXHQgICAgICAgICAgICAgICAgICAgICgoKGxhbmVMc3cgPDwgMjQpIHwgKGxhbmVMc3cgPj4+IDgpKSAgJiAweGZmMDBmZjAwKVxuXHQgICAgICAgICAgICAgICAgKTtcblxuXHQgICAgICAgICAgICAgICAgLy8gU3F1ZWV6ZSBzdGF0ZSB0byByZXRyaWV2ZSBoYXNoXG5cdCAgICAgICAgICAgICAgICBoYXNoV29yZHMucHVzaChsYW5lTHN3KTtcblx0ICAgICAgICAgICAgICAgIGhhc2hXb3Jkcy5wdXNoKGxhbmVNc3cpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gUmV0dXJuIGZpbmFsIGNvbXB1dGVkIGhhc2hcblx0ICAgICAgICAgICAgcmV0dXJuIG5ldyBXb3JkQXJyYXkuaW5pdChoYXNoV29yZHMsIG91dHB1dExlbmd0aEJ5dGVzKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgY2xvbmU6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgdmFyIGNsb25lID0gSGFzaGVyLmNsb25lLmNhbGwodGhpcyk7XG5cblx0ICAgICAgICAgICAgdmFyIHN0YXRlID0gY2xvbmUuX3N0YXRlID0gdGhpcy5fc3RhdGUuc2xpY2UoMCk7XG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjU7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgc3RhdGVbaV0gPSBzdGF0ZVtpXS5jbG9uZSgpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgcmV0dXJuIGNsb25lO1xuXHQgICAgICAgIH1cblx0ICAgIH0pO1xuXG5cdCAgICAvKipcblx0ICAgICAqIFNob3J0Y3V0IGZ1bmN0aW9uIHRvIHRoZSBoYXNoZXIncyBvYmplY3QgaW50ZXJmYWNlLlxuXHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gbWVzc2FnZSBUaGUgbWVzc2FnZSB0byBoYXNoLlxuXHQgICAgICpcblx0ICAgICAqIEByZXR1cm4ge1dvcmRBcnJheX0gVGhlIGhhc2guXG5cdCAgICAgKlxuXHQgICAgICogQHN0YXRpY1xuXHQgICAgICpcblx0ICAgICAqIEBleGFtcGxlXG5cdCAgICAgKlxuXHQgICAgICogICAgIHZhciBoYXNoID0gQ3J5cHRvSlMuU0hBMygnbWVzc2FnZScpO1xuXHQgICAgICogICAgIHZhciBoYXNoID0gQ3J5cHRvSlMuU0hBMyh3b3JkQXJyYXkpO1xuXHQgICAgICovXG5cdCAgICBDLlNIQTMgPSBIYXNoZXIuX2NyZWF0ZUhlbHBlcihTSEEzKTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBTaG9ydGN1dCBmdW5jdGlvbiB0byB0aGUgSE1BQydzIG9iamVjdCBpbnRlcmZhY2UuXG5cdCAgICAgKlxuXHQgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBtZXNzYWdlIFRoZSBtZXNzYWdlIHRvIGhhc2guXG5cdCAgICAgKiBAcGFyYW0ge1dvcmRBcnJheXxzdHJpbmd9IGtleSBUaGUgc2VjcmV0IGtleS5cblx0ICAgICAqXG5cdCAgICAgKiBAcmV0dXJuIHtXb3JkQXJyYXl9IFRoZSBITUFDLlxuXHQgICAgICpcblx0ICAgICAqIEBzdGF0aWNcblx0ICAgICAqXG5cdCAgICAgKiBAZXhhbXBsZVxuXHQgICAgICpcblx0ICAgICAqICAgICB2YXIgaG1hYyA9IENyeXB0b0pTLkhtYWNTSEEzKG1lc3NhZ2UsIGtleSk7XG5cdCAgICAgKi9cblx0ICAgIEMuSG1hY1NIQTMgPSBIYXNoZXIuX2NyZWF0ZUhtYWNIZWxwZXIoU0hBMyk7XG5cdH0oTWF0aCkpO1xuXG5cblx0cmV0dXJuIENyeXB0b0pTLlNIQTM7XG5cbn0pKTsiLCI7KGZ1bmN0aW9uIChyb290LCBmYWN0b3J5LCB1bmRlZikge1xuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBDb21tb25KU1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIi4vY29yZVwiKSwgcmVxdWlyZShcIi4veDY0LWNvcmVcIiksIHJlcXVpcmUoXCIuL3NoYTUxMlwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCIsIFwiLi94NjQtY29yZVwiLCBcIi4vc2hhNTEyXCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0ZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHQoZnVuY3Rpb24gKCkge1xuXHQgICAgLy8gU2hvcnRjdXRzXG5cdCAgICB2YXIgQyA9IENyeXB0b0pTO1xuXHQgICAgdmFyIENfeDY0ID0gQy54NjQ7XG5cdCAgICB2YXIgWDY0V29yZCA9IENfeDY0LldvcmQ7XG5cdCAgICB2YXIgWDY0V29yZEFycmF5ID0gQ194NjQuV29yZEFycmF5O1xuXHQgICAgdmFyIENfYWxnbyA9IEMuYWxnbztcblx0ICAgIHZhciBTSEE1MTIgPSBDX2FsZ28uU0hBNTEyO1xuXG5cdCAgICAvKipcblx0ICAgICAqIFNIQS0zODQgaGFzaCBhbGdvcml0aG0uXG5cdCAgICAgKi9cblx0ICAgIHZhciBTSEEzODQgPSBDX2FsZ28uU0hBMzg0ID0gU0hBNTEyLmV4dGVuZCh7XG5cdCAgICAgICAgX2RvUmVzZXQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgdGhpcy5faGFzaCA9IG5ldyBYNjRXb3JkQXJyYXkuaW5pdChbXG5cdCAgICAgICAgICAgICAgICBuZXcgWDY0V29yZC5pbml0KDB4Y2JiYjlkNWQsIDB4YzEwNTllZDgpLCBuZXcgWDY0V29yZC5pbml0KDB4NjI5YTI5MmEsIDB4MzY3Y2Q1MDcpLFxuXHQgICAgICAgICAgICAgICAgbmV3IFg2NFdvcmQuaW5pdCgweDkxNTkwMTVhLCAweDMwNzBkZDE3KSwgbmV3IFg2NFdvcmQuaW5pdCgweDE1MmZlY2Q4LCAweGY3MGU1OTM5KSxcblx0ICAgICAgICAgICAgICAgIG5ldyBYNjRXb3JkLmluaXQoMHg2NzMzMjY2NywgMHhmZmMwMGIzMSksIG5ldyBYNjRXb3JkLmluaXQoMHg4ZWI0NGE4NywgMHg2ODU4MTUxMSksXG5cdCAgICAgICAgICAgICAgICBuZXcgWDY0V29yZC5pbml0KDB4ZGIwYzJlMGQsIDB4NjRmOThmYTcpLCBuZXcgWDY0V29yZC5pbml0KDB4NDdiNTQ4MWQsIDB4YmVmYTRmYTQpXG5cdCAgICAgICAgICAgIF0pO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBfZG9GaW5hbGl6ZTogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICB2YXIgaGFzaCA9IFNIQTUxMi5fZG9GaW5hbGl6ZS5jYWxsKHRoaXMpO1xuXG5cdCAgICAgICAgICAgIGhhc2guc2lnQnl0ZXMgLT0gMTY7XG5cblx0ICAgICAgICAgICAgcmV0dXJuIGhhc2g7XG5cdCAgICAgICAgfVxuXHQgICAgfSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogU2hvcnRjdXQgZnVuY3Rpb24gdG8gdGhlIGhhc2hlcidzIG9iamVjdCBpbnRlcmZhY2UuXG5cdCAgICAgKlxuXHQgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBtZXNzYWdlIFRoZSBtZXNzYWdlIHRvIGhhc2guXG5cdCAgICAgKlxuXHQgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgaGFzaC5cblx0ICAgICAqXG5cdCAgICAgKiBAc3RhdGljXG5cdCAgICAgKlxuXHQgICAgICogQGV4YW1wbGVcblx0ICAgICAqXG5cdCAgICAgKiAgICAgdmFyIGhhc2ggPSBDcnlwdG9KUy5TSEEzODQoJ21lc3NhZ2UnKTtcblx0ICAgICAqICAgICB2YXIgaGFzaCA9IENyeXB0b0pTLlNIQTM4NCh3b3JkQXJyYXkpO1xuXHQgICAgICovXG5cdCAgICBDLlNIQTM4NCA9IFNIQTUxMi5fY3JlYXRlSGVscGVyKFNIQTM4NCk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogU2hvcnRjdXQgZnVuY3Rpb24gdG8gdGhlIEhNQUMncyBvYmplY3QgaW50ZXJmYWNlLlxuXHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gbWVzc2FnZSBUaGUgbWVzc2FnZSB0byBoYXNoLlxuXHQgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBrZXkgVGhlIHNlY3JldCBrZXkuXG5cdCAgICAgKlxuXHQgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgSE1BQy5cblx0ICAgICAqXG5cdCAgICAgKiBAc3RhdGljXG5cdCAgICAgKlxuXHQgICAgICogQGV4YW1wbGVcblx0ICAgICAqXG5cdCAgICAgKiAgICAgdmFyIGhtYWMgPSBDcnlwdG9KUy5IbWFjU0hBMzg0KG1lc3NhZ2UsIGtleSk7XG5cdCAgICAgKi9cblx0ICAgIEMuSG1hY1NIQTM4NCA9IFNIQTUxMi5fY3JlYXRlSG1hY0hlbHBlcihTSEEzODQpO1xuXHR9KCkpO1xuXG5cblx0cmV0dXJuIENyeXB0b0pTLlNIQTM4NDtcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnksIHVuZGVmKSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpLCByZXF1aXJlKFwiLi94NjQtY29yZVwiKSk7XG5cdH1cblx0ZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyBBTURcblx0XHRkZWZpbmUoW1wiLi9jb3JlXCIsIFwiLi94NjQtY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0KGZ1bmN0aW9uICgpIHtcblx0ICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgdmFyIEMgPSBDcnlwdG9KUztcblx0ICAgIHZhciBDX2xpYiA9IEMubGliO1xuXHQgICAgdmFyIEhhc2hlciA9IENfbGliLkhhc2hlcjtcblx0ICAgIHZhciBDX3g2NCA9IEMueDY0O1xuXHQgICAgdmFyIFg2NFdvcmQgPSBDX3g2NC5Xb3JkO1xuXHQgICAgdmFyIFg2NFdvcmRBcnJheSA9IENfeDY0LldvcmRBcnJheTtcblx0ICAgIHZhciBDX2FsZ28gPSBDLmFsZ287XG5cblx0ICAgIGZ1bmN0aW9uIFg2NFdvcmRfY3JlYXRlKCkge1xuXHQgICAgICAgIHJldHVybiBYNjRXb3JkLmNyZWF0ZS5hcHBseShYNjRXb3JkLCBhcmd1bWVudHMpO1xuXHQgICAgfVxuXG5cdCAgICAvLyBDb25zdGFudHNcblx0ICAgIHZhciBLID0gW1xuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4NDI4YTJmOTgsIDB4ZDcyOGFlMjIpLCBYNjRXb3JkX2NyZWF0ZSgweDcxMzc0NDkxLCAweDIzZWY2NWNkKSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweGI1YzBmYmNmLCAweGVjNGQzYjJmKSwgWDY0V29yZF9jcmVhdGUoMHhlOWI1ZGJhNSwgMHg4MTg5ZGJiYyksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHgzOTU2YzI1YiwgMHhmMzQ4YjUzOCksIFg2NFdvcmRfY3JlYXRlKDB4NTlmMTExZjEsIDB4YjYwNWQwMTkpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4OTIzZjgyYTQsIDB4YWYxOTRmOWIpLCBYNjRXb3JkX2NyZWF0ZSgweGFiMWM1ZWQ1LCAweGRhNmQ4MTE4KSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweGQ4MDdhYTk4LCAweGEzMDMwMjQyKSwgWDY0V29yZF9jcmVhdGUoMHgxMjgzNWIwMSwgMHg0NTcwNmZiZSksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHgyNDMxODViZSwgMHg0ZWU0YjI4YyksIFg2NFdvcmRfY3JlYXRlKDB4NTUwYzdkYzMsIDB4ZDVmZmI0ZTIpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4NzJiZTVkNzQsIDB4ZjI3Yjg5NmYpLCBYNjRXb3JkX2NyZWF0ZSgweDgwZGViMWZlLCAweDNiMTY5NmIxKSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweDliZGMwNmE3LCAweDI1YzcxMjM1KSwgWDY0V29yZF9jcmVhdGUoMHhjMTliZjE3NCwgMHhjZjY5MjY5NCksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHhlNDliNjljMSwgMHg5ZWYxNGFkMiksIFg2NFdvcmRfY3JlYXRlKDB4ZWZiZTQ3ODYsIDB4Mzg0ZjI1ZTMpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4MGZjMTlkYzYsIDB4OGI4Y2Q1YjUpLCBYNjRXb3JkX2NyZWF0ZSgweDI0MGNhMWNjLCAweDc3YWM5YzY1KSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweDJkZTkyYzZmLCAweDU5MmIwMjc1KSwgWDY0V29yZF9jcmVhdGUoMHg0YTc0ODRhYSwgMHg2ZWE2ZTQ4MyksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHg1Y2IwYTlkYywgMHhiZDQxZmJkNCksIFg2NFdvcmRfY3JlYXRlKDB4NzZmOTg4ZGEsIDB4ODMxMTUzYjUpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4OTgzZTUxNTIsIDB4ZWU2NmRmYWIpLCBYNjRXb3JkX2NyZWF0ZSgweGE4MzFjNjZkLCAweDJkYjQzMjEwKSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweGIwMDMyN2M4LCAweDk4ZmIyMTNmKSwgWDY0V29yZF9jcmVhdGUoMHhiZjU5N2ZjNywgMHhiZWVmMGVlNCksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHhjNmUwMGJmMywgMHgzZGE4OGZjMiksIFg2NFdvcmRfY3JlYXRlKDB4ZDVhNzkxNDcsIDB4OTMwYWE3MjUpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4MDZjYTYzNTEsIDB4ZTAwMzgyNmYpLCBYNjRXb3JkX2NyZWF0ZSgweDE0MjkyOTY3LCAweDBhMGU2ZTcwKSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweDI3YjcwYTg1LCAweDQ2ZDIyZmZjKSwgWDY0V29yZF9jcmVhdGUoMHgyZTFiMjEzOCwgMHg1YzI2YzkyNiksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHg0ZDJjNmRmYywgMHg1YWM0MmFlZCksIFg2NFdvcmRfY3JlYXRlKDB4NTMzODBkMTMsIDB4OWQ5NWIzZGYpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4NjUwYTczNTQsIDB4OGJhZjYzZGUpLCBYNjRXb3JkX2NyZWF0ZSgweDc2NmEwYWJiLCAweDNjNzdiMmE4KSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweDgxYzJjOTJlLCAweDQ3ZWRhZWU2KSwgWDY0V29yZF9jcmVhdGUoMHg5MjcyMmM4NSwgMHgxNDgyMzUzYiksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHhhMmJmZThhMSwgMHg0Y2YxMDM2NCksIFg2NFdvcmRfY3JlYXRlKDB4YTgxYTY2NGIsIDB4YmM0MjMwMDEpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4YzI0YjhiNzAsIDB4ZDBmODk3OTEpLCBYNjRXb3JkX2NyZWF0ZSgweGM3NmM1MWEzLCAweDA2NTRiZTMwKSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweGQxOTJlODE5LCAweGQ2ZWY1MjE4KSwgWDY0V29yZF9jcmVhdGUoMHhkNjk5MDYyNCwgMHg1NTY1YTkxMCksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHhmNDBlMzU4NSwgMHg1NzcxMjAyYSksIFg2NFdvcmRfY3JlYXRlKDB4MTA2YWEwNzAsIDB4MzJiYmQxYjgpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4MTlhNGMxMTYsIDB4YjhkMmQwYzgpLCBYNjRXb3JkX2NyZWF0ZSgweDFlMzc2YzA4LCAweDUxNDFhYjUzKSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweDI3NDg3NzRjLCAweGRmOGVlYjk5KSwgWDY0V29yZF9jcmVhdGUoMHgzNGIwYmNiNSwgMHhlMTliNDhhOCksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHgzOTFjMGNiMywgMHhjNWM5NWE2MyksIFg2NFdvcmRfY3JlYXRlKDB4NGVkOGFhNGEsIDB4ZTM0MThhY2IpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4NWI5Y2NhNGYsIDB4Nzc2M2UzNzMpLCBYNjRXb3JkX2NyZWF0ZSgweDY4MmU2ZmYzLCAweGQ2YjJiOGEzKSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweDc0OGY4MmVlLCAweDVkZWZiMmZjKSwgWDY0V29yZF9jcmVhdGUoMHg3OGE1NjM2ZiwgMHg0MzE3MmY2MCksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHg4NGM4NzgxNCwgMHhhMWYwYWI3MiksIFg2NFdvcmRfY3JlYXRlKDB4OGNjNzAyMDgsIDB4MWE2NDM5ZWMpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4OTBiZWZmZmEsIDB4MjM2MzFlMjgpLCBYNjRXb3JkX2NyZWF0ZSgweGE0NTA2Y2ViLCAweGRlODJiZGU5KSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweGJlZjlhM2Y3LCAweGIyYzY3OTE1KSwgWDY0V29yZF9jcmVhdGUoMHhjNjcxNzhmMiwgMHhlMzcyNTMyYiksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHhjYTI3M2VjZSwgMHhlYTI2NjE5YyksIFg2NFdvcmRfY3JlYXRlKDB4ZDE4NmI4YzcsIDB4MjFjMGMyMDcpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4ZWFkYTdkZDYsIDB4Y2RlMGViMWUpLCBYNjRXb3JkX2NyZWF0ZSgweGY1N2Q0ZjdmLCAweGVlNmVkMTc4KSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweDA2ZjA2N2FhLCAweDcyMTc2ZmJhKSwgWDY0V29yZF9jcmVhdGUoMHgwYTYzN2RjNSwgMHhhMmM4OThhNiksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHgxMTNmOTgwNCwgMHhiZWY5MGRhZSksIFg2NFdvcmRfY3JlYXRlKDB4MWI3MTBiMzUsIDB4MTMxYzQ3MWIpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4MjhkYjc3ZjUsIDB4MjMwNDdkODQpLCBYNjRXb3JkX2NyZWF0ZSgweDMyY2FhYjdiLCAweDQwYzcyNDkzKSxcblx0ICAgICAgICBYNjRXb3JkX2NyZWF0ZSgweDNjOWViZTBhLCAweDE1YzliZWJjKSwgWDY0V29yZF9jcmVhdGUoMHg0MzFkNjdjNCwgMHg5YzEwMGQ0YyksXG5cdCAgICAgICAgWDY0V29yZF9jcmVhdGUoMHg0Y2M1ZDRiZSwgMHhjYjNlNDJiNiksIFg2NFdvcmRfY3JlYXRlKDB4NTk3ZjI5OWMsIDB4ZmM2NTdlMmEpLFxuXHQgICAgICAgIFg2NFdvcmRfY3JlYXRlKDB4NWZjYjZmYWIsIDB4M2FkNmZhZWMpLCBYNjRXb3JkX2NyZWF0ZSgweDZjNDQxOThjLCAweDRhNDc1ODE3KVxuXHQgICAgXTtcblxuXHQgICAgLy8gUmV1c2FibGUgb2JqZWN0c1xuXHQgICAgdmFyIFcgPSBbXTtcblx0ICAgIChmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA4MDsgaSsrKSB7XG5cdCAgICAgICAgICAgIFdbaV0gPSBYNjRXb3JkX2NyZWF0ZSgpO1xuXHQgICAgICAgIH1cblx0ICAgIH0oKSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogU0hBLTUxMiBoYXNoIGFsZ29yaXRobS5cblx0ICAgICAqL1xuXHQgICAgdmFyIFNIQTUxMiA9IENfYWxnby5TSEE1MTIgPSBIYXNoZXIuZXh0ZW5kKHtcblx0ICAgICAgICBfZG9SZXNldDogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICB0aGlzLl9oYXNoID0gbmV3IFg2NFdvcmRBcnJheS5pbml0KFtcblx0ICAgICAgICAgICAgICAgIG5ldyBYNjRXb3JkLmluaXQoMHg2YTA5ZTY2NywgMHhmM2JjYzkwOCksIG5ldyBYNjRXb3JkLmluaXQoMHhiYjY3YWU4NSwgMHg4NGNhYTczYiksXG5cdCAgICAgICAgICAgICAgICBuZXcgWDY0V29yZC5pbml0KDB4M2M2ZWYzNzIsIDB4ZmU5NGY4MmIpLCBuZXcgWDY0V29yZC5pbml0KDB4YTU0ZmY1M2EsIDB4NWYxZDM2ZjEpLFxuXHQgICAgICAgICAgICAgICAgbmV3IFg2NFdvcmQuaW5pdCgweDUxMGU1MjdmLCAweGFkZTY4MmQxKSwgbmV3IFg2NFdvcmQuaW5pdCgweDliMDU2ODhjLCAweDJiM2U2YzFmKSxcblx0ICAgICAgICAgICAgICAgIG5ldyBYNjRXb3JkLmluaXQoMHgxZjgzZDlhYiwgMHhmYjQxYmQ2YiksIG5ldyBYNjRXb3JkLmluaXQoMHg1YmUwY2QxOSwgMHgxMzdlMjE3OSlcblx0ICAgICAgICAgICAgXSk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIF9kb1Byb2Nlc3NCbG9jazogZnVuY3Rpb24gKE0sIG9mZnNldCkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIEggPSB0aGlzLl9oYXNoLndvcmRzO1xuXG5cdCAgICAgICAgICAgIHZhciBIMCA9IEhbMF07XG5cdCAgICAgICAgICAgIHZhciBIMSA9IEhbMV07XG5cdCAgICAgICAgICAgIHZhciBIMiA9IEhbMl07XG5cdCAgICAgICAgICAgIHZhciBIMyA9IEhbM107XG5cdCAgICAgICAgICAgIHZhciBINCA9IEhbNF07XG5cdCAgICAgICAgICAgIHZhciBINSA9IEhbNV07XG5cdCAgICAgICAgICAgIHZhciBINiA9IEhbNl07XG5cdCAgICAgICAgICAgIHZhciBINyA9IEhbN107XG5cblx0ICAgICAgICAgICAgdmFyIEgwaCA9IEgwLmhpZ2g7XG5cdCAgICAgICAgICAgIHZhciBIMGwgPSBIMC5sb3c7XG5cdCAgICAgICAgICAgIHZhciBIMWggPSBIMS5oaWdoO1xuXHQgICAgICAgICAgICB2YXIgSDFsID0gSDEubG93O1xuXHQgICAgICAgICAgICB2YXIgSDJoID0gSDIuaGlnaDtcblx0ICAgICAgICAgICAgdmFyIEgybCA9IEgyLmxvdztcblx0ICAgICAgICAgICAgdmFyIEgzaCA9IEgzLmhpZ2g7XG5cdCAgICAgICAgICAgIHZhciBIM2wgPSBIMy5sb3c7XG5cdCAgICAgICAgICAgIHZhciBINGggPSBINC5oaWdoO1xuXHQgICAgICAgICAgICB2YXIgSDRsID0gSDQubG93O1xuXHQgICAgICAgICAgICB2YXIgSDVoID0gSDUuaGlnaDtcblx0ICAgICAgICAgICAgdmFyIEg1bCA9IEg1Lmxvdztcblx0ICAgICAgICAgICAgdmFyIEg2aCA9IEg2LmhpZ2g7XG5cdCAgICAgICAgICAgIHZhciBINmwgPSBINi5sb3c7XG5cdCAgICAgICAgICAgIHZhciBIN2ggPSBINy5oaWdoO1xuXHQgICAgICAgICAgICB2YXIgSDdsID0gSDcubG93O1xuXG5cdCAgICAgICAgICAgIC8vIFdvcmtpbmcgdmFyaWFibGVzXG5cdCAgICAgICAgICAgIHZhciBhaCA9IEgwaDtcblx0ICAgICAgICAgICAgdmFyIGFsID0gSDBsO1xuXHQgICAgICAgICAgICB2YXIgYmggPSBIMWg7XG5cdCAgICAgICAgICAgIHZhciBibCA9IEgxbDtcblx0ICAgICAgICAgICAgdmFyIGNoID0gSDJoO1xuXHQgICAgICAgICAgICB2YXIgY2wgPSBIMmw7XG5cdCAgICAgICAgICAgIHZhciBkaCA9IEgzaDtcblx0ICAgICAgICAgICAgdmFyIGRsID0gSDNsO1xuXHQgICAgICAgICAgICB2YXIgZWggPSBINGg7XG5cdCAgICAgICAgICAgIHZhciBlbCA9IEg0bDtcblx0ICAgICAgICAgICAgdmFyIGZoID0gSDVoO1xuXHQgICAgICAgICAgICB2YXIgZmwgPSBINWw7XG5cdCAgICAgICAgICAgIHZhciBnaCA9IEg2aDtcblx0ICAgICAgICAgICAgdmFyIGdsID0gSDZsO1xuXHQgICAgICAgICAgICB2YXIgaGggPSBIN2g7XG5cdCAgICAgICAgICAgIHZhciBobCA9IEg3bDtcblxuXHQgICAgICAgICAgICAvLyBSb3VuZHNcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA4MDsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICB2YXIgV2lsO1xuXHQgICAgICAgICAgICAgICAgdmFyIFdpaDtcblxuXHQgICAgICAgICAgICAgICAgLy8gU2hvcnRjdXRcblx0ICAgICAgICAgICAgICAgIHZhciBXaSA9IFdbaV07XG5cblx0ICAgICAgICAgICAgICAgIC8vIEV4dGVuZCBtZXNzYWdlXG5cdCAgICAgICAgICAgICAgICBpZiAoaSA8IDE2KSB7XG5cdCAgICAgICAgICAgICAgICAgICAgV2loID0gV2kuaGlnaCA9IE1bb2Zmc2V0ICsgaSAqIDJdICAgICB8IDA7XG5cdCAgICAgICAgICAgICAgICAgICAgV2lsID0gV2kubG93ICA9IE1bb2Zmc2V0ICsgaSAqIDIgKyAxXSB8IDA7XG5cdCAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgICAgIC8vIEdhbW1hMFxuXHQgICAgICAgICAgICAgICAgICAgIHZhciBnYW1tYTB4ICA9IFdbaSAtIDE1XTtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgZ2FtbWEweGggPSBnYW1tYTB4LmhpZ2g7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIGdhbW1hMHhsID0gZ2FtbWEweC5sb3c7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIGdhbW1hMGggID0gKChnYW1tYTB4aCA+Pj4gMSkgfCAoZ2FtbWEweGwgPDwgMzEpKSBeICgoZ2FtbWEweGggPj4+IDgpIHwgKGdhbW1hMHhsIDw8IDI0KSkgXiAoZ2FtbWEweGggPj4+IDcpO1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBnYW1tYTBsICA9ICgoZ2FtbWEweGwgPj4+IDEpIHwgKGdhbW1hMHhoIDw8IDMxKSkgXiAoKGdhbW1hMHhsID4+PiA4KSB8IChnYW1tYTB4aCA8PCAyNCkpIF4gKChnYW1tYTB4bCA+Pj4gNykgfCAoZ2FtbWEweGggPDwgMjUpKTtcblxuXHQgICAgICAgICAgICAgICAgICAgIC8vIEdhbW1hMVxuXHQgICAgICAgICAgICAgICAgICAgIHZhciBnYW1tYTF4ICA9IFdbaSAtIDJdO1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBnYW1tYTF4aCA9IGdhbW1hMXguaGlnaDtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgZ2FtbWExeGwgPSBnYW1tYTF4Lmxvdztcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgZ2FtbWExaCAgPSAoKGdhbW1hMXhoID4+PiAxOSkgfCAoZ2FtbWExeGwgPDwgMTMpKSBeICgoZ2FtbWExeGggPDwgMykgfCAoZ2FtbWExeGwgPj4+IDI5KSkgXiAoZ2FtbWExeGggPj4+IDYpO1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBnYW1tYTFsICA9ICgoZ2FtbWExeGwgPj4+IDE5KSB8IChnYW1tYTF4aCA8PCAxMykpIF4gKChnYW1tYTF4bCA8PCAzKSB8IChnYW1tYTF4aCA+Pj4gMjkpKSBeICgoZ2FtbWExeGwgPj4+IDYpIHwgKGdhbW1hMXhoIDw8IDI2KSk7XG5cblx0ICAgICAgICAgICAgICAgICAgICAvLyBXW2ldID0gZ2FtbWEwICsgV1tpIC0gN10gKyBnYW1tYTEgKyBXW2kgLSAxNl1cblx0ICAgICAgICAgICAgICAgICAgICB2YXIgV2k3ICA9IFdbaSAtIDddO1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBXaTdoID0gV2k3LmhpZ2g7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIFdpN2wgPSBXaTcubG93O1xuXG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIFdpMTYgID0gV1tpIC0gMTZdO1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBXaTE2aCA9IFdpMTYuaGlnaDtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgV2kxNmwgPSBXaTE2LmxvdztcblxuXHQgICAgICAgICAgICAgICAgICAgIFdpbCA9IGdhbW1hMGwgKyBXaTdsO1xuXHQgICAgICAgICAgICAgICAgICAgIFdpaCA9IGdhbW1hMGggKyBXaTdoICsgKChXaWwgPj4+IDApIDwgKGdhbW1hMGwgPj4+IDApID8gMSA6IDApO1xuXHQgICAgICAgICAgICAgICAgICAgIFdpbCA9IFdpbCArIGdhbW1hMWw7XG5cdCAgICAgICAgICAgICAgICAgICAgV2loID0gV2loICsgZ2FtbWExaCArICgoV2lsID4+PiAwKSA8IChnYW1tYTFsID4+PiAwKSA/IDEgOiAwKTtcblx0ICAgICAgICAgICAgICAgICAgICBXaWwgPSBXaWwgKyBXaTE2bDtcblx0ICAgICAgICAgICAgICAgICAgICBXaWggPSBXaWggKyBXaTE2aCArICgoV2lsID4+PiAwKSA8IChXaTE2bCA+Pj4gMCkgPyAxIDogMCk7XG5cblx0ICAgICAgICAgICAgICAgICAgICBXaS5oaWdoID0gV2loO1xuXHQgICAgICAgICAgICAgICAgICAgIFdpLmxvdyAgPSBXaWw7XG5cdCAgICAgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgICAgIHZhciBjaGggID0gKGVoICYgZmgpIF4gKH5laCAmIGdoKTtcblx0ICAgICAgICAgICAgICAgIHZhciBjaGwgID0gKGVsICYgZmwpIF4gKH5lbCAmIGdsKTtcblx0ICAgICAgICAgICAgICAgIHZhciBtYWpoID0gKGFoICYgYmgpIF4gKGFoICYgY2gpIF4gKGJoICYgY2gpO1xuXHQgICAgICAgICAgICAgICAgdmFyIG1hamwgPSAoYWwgJiBibCkgXiAoYWwgJiBjbCkgXiAoYmwgJiBjbCk7XG5cblx0ICAgICAgICAgICAgICAgIHZhciBzaWdtYTBoID0gKChhaCA+Pj4gMjgpIHwgKGFsIDw8IDQpKSAgXiAoKGFoIDw8IDMwKSAgfCAoYWwgPj4+IDIpKSBeICgoYWggPDwgMjUpIHwgKGFsID4+PiA3KSk7XG5cdCAgICAgICAgICAgICAgICB2YXIgc2lnbWEwbCA9ICgoYWwgPj4+IDI4KSB8IChhaCA8PCA0KSkgIF4gKChhbCA8PCAzMCkgIHwgKGFoID4+PiAyKSkgXiAoKGFsIDw8IDI1KSB8IChhaCA+Pj4gNykpO1xuXHQgICAgICAgICAgICAgICAgdmFyIHNpZ21hMWggPSAoKGVoID4+PiAxNCkgfCAoZWwgPDwgMTgpKSBeICgoZWggPj4+IDE4KSB8IChlbCA8PCAxNCkpIF4gKChlaCA8PCAyMykgfCAoZWwgPj4+IDkpKTtcblx0ICAgICAgICAgICAgICAgIHZhciBzaWdtYTFsID0gKChlbCA+Pj4gMTQpIHwgKGVoIDw8IDE4KSkgXiAoKGVsID4+PiAxOCkgfCAoZWggPDwgMTQpKSBeICgoZWwgPDwgMjMpIHwgKGVoID4+PiA5KSk7XG5cblx0ICAgICAgICAgICAgICAgIC8vIHQxID0gaCArIHNpZ21hMSArIGNoICsgS1tpXSArIFdbaV1cblx0ICAgICAgICAgICAgICAgIHZhciBLaSAgPSBLW2ldO1xuXHQgICAgICAgICAgICAgICAgdmFyIEtpaCA9IEtpLmhpZ2g7XG5cdCAgICAgICAgICAgICAgICB2YXIgS2lsID0gS2kubG93O1xuXG5cdCAgICAgICAgICAgICAgICB2YXIgdDFsID0gaGwgKyBzaWdtYTFsO1xuXHQgICAgICAgICAgICAgICAgdmFyIHQxaCA9IGhoICsgc2lnbWExaCArICgodDFsID4+PiAwKSA8IChobCA+Pj4gMCkgPyAxIDogMCk7XG5cdCAgICAgICAgICAgICAgICB2YXIgdDFsID0gdDFsICsgY2hsO1xuXHQgICAgICAgICAgICAgICAgdmFyIHQxaCA9IHQxaCArIGNoaCArICgodDFsID4+PiAwKSA8IChjaGwgPj4+IDApID8gMSA6IDApO1xuXHQgICAgICAgICAgICAgICAgdmFyIHQxbCA9IHQxbCArIEtpbDtcblx0ICAgICAgICAgICAgICAgIHZhciB0MWggPSB0MWggKyBLaWggKyAoKHQxbCA+Pj4gMCkgPCAoS2lsID4+PiAwKSA/IDEgOiAwKTtcblx0ICAgICAgICAgICAgICAgIHZhciB0MWwgPSB0MWwgKyBXaWw7XG5cdCAgICAgICAgICAgICAgICB2YXIgdDFoID0gdDFoICsgV2loICsgKCh0MWwgPj4+IDApIDwgKFdpbCA+Pj4gMCkgPyAxIDogMCk7XG5cblx0ICAgICAgICAgICAgICAgIC8vIHQyID0gc2lnbWEwICsgbWFqXG5cdCAgICAgICAgICAgICAgICB2YXIgdDJsID0gc2lnbWEwbCArIG1hamw7XG5cdCAgICAgICAgICAgICAgICB2YXIgdDJoID0gc2lnbWEwaCArIG1hamggKyAoKHQybCA+Pj4gMCkgPCAoc2lnbWEwbCA+Pj4gMCkgPyAxIDogMCk7XG5cblx0ICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSB3b3JraW5nIHZhcmlhYmxlc1xuXHQgICAgICAgICAgICAgICAgaGggPSBnaDtcblx0ICAgICAgICAgICAgICAgIGhsID0gZ2w7XG5cdCAgICAgICAgICAgICAgICBnaCA9IGZoO1xuXHQgICAgICAgICAgICAgICAgZ2wgPSBmbDtcblx0ICAgICAgICAgICAgICAgIGZoID0gZWg7XG5cdCAgICAgICAgICAgICAgICBmbCA9IGVsO1xuXHQgICAgICAgICAgICAgICAgZWwgPSAoZGwgKyB0MWwpIHwgMDtcblx0ICAgICAgICAgICAgICAgIGVoID0gKGRoICsgdDFoICsgKChlbCA+Pj4gMCkgPCAoZGwgPj4+IDApID8gMSA6IDApKSB8IDA7XG5cdCAgICAgICAgICAgICAgICBkaCA9IGNoO1xuXHQgICAgICAgICAgICAgICAgZGwgPSBjbDtcblx0ICAgICAgICAgICAgICAgIGNoID0gYmg7XG5cdCAgICAgICAgICAgICAgICBjbCA9IGJsO1xuXHQgICAgICAgICAgICAgICAgYmggPSBhaDtcblx0ICAgICAgICAgICAgICAgIGJsID0gYWw7XG5cdCAgICAgICAgICAgICAgICBhbCA9ICh0MWwgKyB0MmwpIHwgMDtcblx0ICAgICAgICAgICAgICAgIGFoID0gKHQxaCArIHQyaCArICgoYWwgPj4+IDApIDwgKHQxbCA+Pj4gMCkgPyAxIDogMCkpIHwgMDtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIEludGVybWVkaWF0ZSBoYXNoIHZhbHVlXG5cdCAgICAgICAgICAgIEgwbCA9IEgwLmxvdyAgPSAoSDBsICsgYWwpO1xuXHQgICAgICAgICAgICBIMC5oaWdoID0gKEgwaCArIGFoICsgKChIMGwgPj4+IDApIDwgKGFsID4+PiAwKSA/IDEgOiAwKSk7XG5cdCAgICAgICAgICAgIEgxbCA9IEgxLmxvdyAgPSAoSDFsICsgYmwpO1xuXHQgICAgICAgICAgICBIMS5oaWdoID0gKEgxaCArIGJoICsgKChIMWwgPj4+IDApIDwgKGJsID4+PiAwKSA/IDEgOiAwKSk7XG5cdCAgICAgICAgICAgIEgybCA9IEgyLmxvdyAgPSAoSDJsICsgY2wpO1xuXHQgICAgICAgICAgICBIMi5oaWdoID0gKEgyaCArIGNoICsgKChIMmwgPj4+IDApIDwgKGNsID4+PiAwKSA/IDEgOiAwKSk7XG5cdCAgICAgICAgICAgIEgzbCA9IEgzLmxvdyAgPSAoSDNsICsgZGwpO1xuXHQgICAgICAgICAgICBIMy5oaWdoID0gKEgzaCArIGRoICsgKChIM2wgPj4+IDApIDwgKGRsID4+PiAwKSA/IDEgOiAwKSk7XG5cdCAgICAgICAgICAgIEg0bCA9IEg0LmxvdyAgPSAoSDRsICsgZWwpO1xuXHQgICAgICAgICAgICBINC5oaWdoID0gKEg0aCArIGVoICsgKChINGwgPj4+IDApIDwgKGVsID4+PiAwKSA/IDEgOiAwKSk7XG5cdCAgICAgICAgICAgIEg1bCA9IEg1LmxvdyAgPSAoSDVsICsgZmwpO1xuXHQgICAgICAgICAgICBINS5oaWdoID0gKEg1aCArIGZoICsgKChINWwgPj4+IDApIDwgKGZsID4+PiAwKSA/IDEgOiAwKSk7XG5cdCAgICAgICAgICAgIEg2bCA9IEg2LmxvdyAgPSAoSDZsICsgZ2wpO1xuXHQgICAgICAgICAgICBINi5oaWdoID0gKEg2aCArIGdoICsgKChINmwgPj4+IDApIDwgKGdsID4+PiAwKSA/IDEgOiAwKSk7XG5cdCAgICAgICAgICAgIEg3bCA9IEg3LmxvdyAgPSAoSDdsICsgaGwpO1xuXHQgICAgICAgICAgICBINy5oaWdoID0gKEg3aCArIGhoICsgKChIN2wgPj4+IDApIDwgKGhsID4+PiAwKSA/IDEgOiAwKSk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIF9kb0ZpbmFsaXplOiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIgZGF0YSA9IHRoaXMuX2RhdGE7XG5cdCAgICAgICAgICAgIHZhciBkYXRhV29yZHMgPSBkYXRhLndvcmRzO1xuXG5cdCAgICAgICAgICAgIHZhciBuQml0c1RvdGFsID0gdGhpcy5fbkRhdGFCeXRlcyAqIDg7XG5cdCAgICAgICAgICAgIHZhciBuQml0c0xlZnQgPSBkYXRhLnNpZ0J5dGVzICogODtcblxuXHQgICAgICAgICAgICAvLyBBZGQgcGFkZGluZ1xuXHQgICAgICAgICAgICBkYXRhV29yZHNbbkJpdHNMZWZ0ID4+PiA1XSB8PSAweDgwIDw8ICgyNCAtIG5CaXRzTGVmdCAlIDMyKTtcblx0ICAgICAgICAgICAgZGF0YVdvcmRzWygoKG5CaXRzTGVmdCArIDEyOCkgPj4+IDEwKSA8PCA1KSArIDMwXSA9IE1hdGguZmxvb3IobkJpdHNUb3RhbCAvIDB4MTAwMDAwMDAwKTtcblx0ICAgICAgICAgICAgZGF0YVdvcmRzWygoKG5CaXRzTGVmdCArIDEyOCkgPj4+IDEwKSA8PCA1KSArIDMxXSA9IG5CaXRzVG90YWw7XG5cdCAgICAgICAgICAgIGRhdGEuc2lnQnl0ZXMgPSBkYXRhV29yZHMubGVuZ3RoICogNDtcblxuXHQgICAgICAgICAgICAvLyBIYXNoIGZpbmFsIGJsb2Nrc1xuXHQgICAgICAgICAgICB0aGlzLl9wcm9jZXNzKCk7XG5cblx0ICAgICAgICAgICAgLy8gQ29udmVydCBoYXNoIHRvIDMyLWJpdCB3b3JkIGFycmF5IGJlZm9yZSByZXR1cm5pbmdcblx0ICAgICAgICAgICAgdmFyIGhhc2ggPSB0aGlzLl9oYXNoLnRvWDMyKCk7XG5cblx0ICAgICAgICAgICAgLy8gUmV0dXJuIGZpbmFsIGNvbXB1dGVkIGhhc2hcblx0ICAgICAgICAgICAgcmV0dXJuIGhhc2g7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIGNsb25lOiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIHZhciBjbG9uZSA9IEhhc2hlci5jbG9uZS5jYWxsKHRoaXMpO1xuXHQgICAgICAgICAgICBjbG9uZS5faGFzaCA9IHRoaXMuX2hhc2guY2xvbmUoKTtcblxuXHQgICAgICAgICAgICByZXR1cm4gY2xvbmU7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIGJsb2NrU2l6ZTogMTAyNC8zMlxuXHQgICAgfSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogU2hvcnRjdXQgZnVuY3Rpb24gdG8gdGhlIGhhc2hlcidzIG9iamVjdCBpbnRlcmZhY2UuXG5cdCAgICAgKlxuXHQgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBtZXNzYWdlIFRoZSBtZXNzYWdlIHRvIGhhc2guXG5cdCAgICAgKlxuXHQgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgaGFzaC5cblx0ICAgICAqXG5cdCAgICAgKiBAc3RhdGljXG5cdCAgICAgKlxuXHQgICAgICogQGV4YW1wbGVcblx0ICAgICAqXG5cdCAgICAgKiAgICAgdmFyIGhhc2ggPSBDcnlwdG9KUy5TSEE1MTIoJ21lc3NhZ2UnKTtcblx0ICAgICAqICAgICB2YXIgaGFzaCA9IENyeXB0b0pTLlNIQTUxMih3b3JkQXJyYXkpO1xuXHQgICAgICovXG5cdCAgICBDLlNIQTUxMiA9IEhhc2hlci5fY3JlYXRlSGVscGVyKFNIQTUxMik7XG5cblx0ICAgIC8qKlxuXHQgICAgICogU2hvcnRjdXQgZnVuY3Rpb24gdG8gdGhlIEhNQUMncyBvYmplY3QgaW50ZXJmYWNlLlxuXHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7V29yZEFycmF5fHN0cmluZ30gbWVzc2FnZSBUaGUgbWVzc2FnZSB0byBoYXNoLlxuXHQgICAgICogQHBhcmFtIHtXb3JkQXJyYXl8c3RyaW5nfSBrZXkgVGhlIHNlY3JldCBrZXkuXG5cdCAgICAgKlxuXHQgICAgICogQHJldHVybiB7V29yZEFycmF5fSBUaGUgSE1BQy5cblx0ICAgICAqXG5cdCAgICAgKiBAc3RhdGljXG5cdCAgICAgKlxuXHQgICAgICogQGV4YW1wbGVcblx0ICAgICAqXG5cdCAgICAgKiAgICAgdmFyIGhtYWMgPSBDcnlwdG9KUy5IbWFjU0hBNTEyKG1lc3NhZ2UsIGtleSk7XG5cdCAgICAgKi9cblx0ICAgIEMuSG1hY1NIQTUxMiA9IEhhc2hlci5fY3JlYXRlSG1hY0hlbHBlcihTSEE1MTIpO1xuXHR9KCkpO1xuXG5cblx0cmV0dXJuIENyeXB0b0pTLlNIQTUxMjtcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnksIHVuZGVmKSB7XG5cdGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xuXHRcdC8vIENvbW1vbkpTXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwiLi9jb3JlXCIpLCByZXF1aXJlKFwiLi9lbmMtYmFzZTY0XCIpLCByZXF1aXJlKFwiLi9tZDVcIiksIHJlcXVpcmUoXCIuL2V2cGtkZlwiKSwgcmVxdWlyZShcIi4vY2lwaGVyLWNvcmVcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiLCBcIi4vZW5jLWJhc2U2NFwiLCBcIi4vbWQ1XCIsIFwiLi9ldnBrZGZcIiwgXCIuL2NpcGhlci1jb3JlXCJdLCBmYWN0b3J5KTtcblx0fVxuXHRlbHNlIHtcblx0XHQvLyBHbG9iYWwgKGJyb3dzZXIpXG5cdFx0ZmFjdG9yeShyb290LkNyeXB0b0pTKTtcblx0fVxufSh0aGlzLCBmdW5jdGlvbiAoQ3J5cHRvSlMpIHtcblxuXHQoZnVuY3Rpb24gKCkge1xuXHQgICAgLy8gU2hvcnRjdXRzXG5cdCAgICB2YXIgQyA9IENyeXB0b0pTO1xuXHQgICAgdmFyIENfbGliID0gQy5saWI7XG5cdCAgICB2YXIgV29yZEFycmF5ID0gQ19saWIuV29yZEFycmF5O1xuXHQgICAgdmFyIEJsb2NrQ2lwaGVyID0gQ19saWIuQmxvY2tDaXBoZXI7XG5cdCAgICB2YXIgQ19hbGdvID0gQy5hbGdvO1xuXG5cdCAgICAvLyBQZXJtdXRlZCBDaG9pY2UgMSBjb25zdGFudHNcblx0ICAgIHZhciBQQzEgPSBbXG5cdCAgICAgICAgNTcsIDQ5LCA0MSwgMzMsIDI1LCAxNywgOSwgIDEsXG5cdCAgICAgICAgNTgsIDUwLCA0MiwgMzQsIDI2LCAxOCwgMTAsIDIsXG5cdCAgICAgICAgNTksIDUxLCA0MywgMzUsIDI3LCAxOSwgMTEsIDMsXG5cdCAgICAgICAgNjAsIDUyLCA0NCwgMzYsIDYzLCA1NSwgNDcsIDM5LFxuXHQgICAgICAgIDMxLCAyMywgMTUsIDcsICA2MiwgNTQsIDQ2LCAzOCxcblx0ICAgICAgICAzMCwgMjIsIDE0LCA2LCAgNjEsIDUzLCA0NSwgMzcsXG5cdCAgICAgICAgMjksIDIxLCAxMywgNSwgIDI4LCAyMCwgMTIsIDRcblx0ICAgIF07XG5cblx0ICAgIC8vIFBlcm11dGVkIENob2ljZSAyIGNvbnN0YW50c1xuXHQgICAgdmFyIFBDMiA9IFtcblx0ICAgICAgICAxNCwgMTcsIDExLCAyNCwgMSwgIDUsXG5cdCAgICAgICAgMywgIDI4LCAxNSwgNiwgIDIxLCAxMCxcblx0ICAgICAgICAyMywgMTksIDEyLCA0LCAgMjYsIDgsXG5cdCAgICAgICAgMTYsIDcsICAyNywgMjAsIDEzLCAyLFxuXHQgICAgICAgIDQxLCA1MiwgMzEsIDM3LCA0NywgNTUsXG5cdCAgICAgICAgMzAsIDQwLCA1MSwgNDUsIDMzLCA0OCxcblx0ICAgICAgICA0NCwgNDksIDM5LCA1NiwgMzQsIDUzLFxuXHQgICAgICAgIDQ2LCA0MiwgNTAsIDM2LCAyOSwgMzJcblx0ICAgIF07XG5cblx0ICAgIC8vIEN1bXVsYXRpdmUgYml0IHNoaWZ0IGNvbnN0YW50c1xuXHQgICAgdmFyIEJJVF9TSElGVFMgPSBbMSwgIDIsICA0LCAgNiwgIDgsICAxMCwgMTIsIDE0LCAxNSwgMTcsIDE5LCAyMSwgMjMsIDI1LCAyNywgMjhdO1xuXG5cdCAgICAvLyBTQk9YZXMgYW5kIHJvdW5kIHBlcm11dGF0aW9uIGNvbnN0YW50c1xuXHQgICAgdmFyIFNCT1hfUCA9IFtcblx0ICAgICAgICB7XG5cdCAgICAgICAgICAgIDB4MDogMHg4MDgyMDAsXG5cdCAgICAgICAgICAgIDB4MTAwMDAwMDA6IDB4ODAwMCxcblx0ICAgICAgICAgICAgMHgyMDAwMDAwMDogMHg4MDgwMDIsXG5cdCAgICAgICAgICAgIDB4MzAwMDAwMDA6IDB4Mixcblx0ICAgICAgICAgICAgMHg0MDAwMDAwMDogMHgyMDAsXG5cdCAgICAgICAgICAgIDB4NTAwMDAwMDA6IDB4ODA4MjAyLFxuXHQgICAgICAgICAgICAweDYwMDAwMDAwOiAweDgwMDIwMixcblx0ICAgICAgICAgICAgMHg3MDAwMDAwMDogMHg4MDAwMDAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMDA6IDB4MjAyLFxuXHQgICAgICAgICAgICAweDkwMDAwMDAwOiAweDgwMDIwMCxcblx0ICAgICAgICAgICAgMHhhMDAwMDAwMDogMHg4MjAwLFxuXHQgICAgICAgICAgICAweGIwMDAwMDAwOiAweDgwODAwMCxcblx0ICAgICAgICAgICAgMHhjMDAwMDAwMDogMHg4MDAyLFxuXHQgICAgICAgICAgICAweGQwMDAwMDAwOiAweDgwMDAwMixcblx0ICAgICAgICAgICAgMHhlMDAwMDAwMDogMHgwLFxuXHQgICAgICAgICAgICAweGYwMDAwMDAwOiAweDgyMDIsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMDogMHgwLFxuXHQgICAgICAgICAgICAweDE4MDAwMDAwOiAweDgwODIwMixcblx0ICAgICAgICAgICAgMHgyODAwMDAwMDogMHg4MjAyLFxuXHQgICAgICAgICAgICAweDM4MDAwMDAwOiAweDgwMDAsXG5cdCAgICAgICAgICAgIDB4NDgwMDAwMDA6IDB4ODA4MjAwLFxuXHQgICAgICAgICAgICAweDU4MDAwMDAwOiAweDIwMCxcblx0ICAgICAgICAgICAgMHg2ODAwMDAwMDogMHg4MDgwMDIsXG5cdCAgICAgICAgICAgIDB4NzgwMDAwMDA6IDB4Mixcblx0ICAgICAgICAgICAgMHg4ODAwMDAwMDogMHg4MDAyMDAsXG5cdCAgICAgICAgICAgIDB4OTgwMDAwMDA6IDB4ODIwMCxcblx0ICAgICAgICAgICAgMHhhODAwMDAwMDogMHg4MDgwMDAsXG5cdCAgICAgICAgICAgIDB4YjgwMDAwMDA6IDB4ODAwMjAyLFxuXHQgICAgICAgICAgICAweGM4MDAwMDAwOiAweDgwMDAwMixcblx0ICAgICAgICAgICAgMHhkODAwMDAwMDogMHg4MDAyLFxuXHQgICAgICAgICAgICAweGU4MDAwMDAwOiAweDIwMixcblx0ICAgICAgICAgICAgMHhmODAwMDAwMDogMHg4MDAwMDAsXG5cdCAgICAgICAgICAgIDB4MTogMHg4MDAwLFxuXHQgICAgICAgICAgICAweDEwMDAwMDAxOiAweDIsXG5cdCAgICAgICAgICAgIDB4MjAwMDAwMDE6IDB4ODA4MjAwLFxuXHQgICAgICAgICAgICAweDMwMDAwMDAxOiAweDgwMDAwMCxcblx0ICAgICAgICAgICAgMHg0MDAwMDAwMTogMHg4MDgwMDIsXG5cdCAgICAgICAgICAgIDB4NTAwMDAwMDE6IDB4ODIwMCxcblx0ICAgICAgICAgICAgMHg2MDAwMDAwMTogMHgyMDAsXG5cdCAgICAgICAgICAgIDB4NzAwMDAwMDE6IDB4ODAwMjAyLFxuXHQgICAgICAgICAgICAweDgwMDAwMDAxOiAweDgwODIwMixcblx0ICAgICAgICAgICAgMHg5MDAwMDAwMTogMHg4MDgwMDAsXG5cdCAgICAgICAgICAgIDB4YTAwMDAwMDE6IDB4ODAwMDAyLFxuXHQgICAgICAgICAgICAweGIwMDAwMDAxOiAweDgyMDIsXG5cdCAgICAgICAgICAgIDB4YzAwMDAwMDE6IDB4MjAyLFxuXHQgICAgICAgICAgICAweGQwMDAwMDAxOiAweDgwMDIwMCxcblx0ICAgICAgICAgICAgMHhlMDAwMDAwMTogMHg4MDAyLFxuXHQgICAgICAgICAgICAweGYwMDAwMDAxOiAweDAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMTogMHg4MDgyMDIsXG5cdCAgICAgICAgICAgIDB4MTgwMDAwMDE6IDB4ODA4MDAwLFxuXHQgICAgICAgICAgICAweDI4MDAwMDAxOiAweDgwMDAwMCxcblx0ICAgICAgICAgICAgMHgzODAwMDAwMTogMHgyMDAsXG5cdCAgICAgICAgICAgIDB4NDgwMDAwMDE6IDB4ODAwMCxcblx0ICAgICAgICAgICAgMHg1ODAwMDAwMTogMHg4MDAwMDIsXG5cdCAgICAgICAgICAgIDB4NjgwMDAwMDE6IDB4Mixcblx0ICAgICAgICAgICAgMHg3ODAwMDAwMTogMHg4MjAyLFxuXHQgICAgICAgICAgICAweDg4MDAwMDAxOiAweDgwMDIsXG5cdCAgICAgICAgICAgIDB4OTgwMDAwMDE6IDB4ODAwMjAyLFxuXHQgICAgICAgICAgICAweGE4MDAwMDAxOiAweDIwMixcblx0ICAgICAgICAgICAgMHhiODAwMDAwMTogMHg4MDgyMDAsXG5cdCAgICAgICAgICAgIDB4YzgwMDAwMDE6IDB4ODAwMjAwLFxuXHQgICAgICAgICAgICAweGQ4MDAwMDAxOiAweDAsXG5cdCAgICAgICAgICAgIDB4ZTgwMDAwMDE6IDB4ODIwMCxcblx0ICAgICAgICAgICAgMHhmODAwMDAwMTogMHg4MDgwMDJcblx0ICAgICAgICB9LFxuXHQgICAgICAgIHtcblx0ICAgICAgICAgICAgMHgwOiAweDQwMDg0MDEwLFxuXHQgICAgICAgICAgICAweDEwMDAwMDA6IDB4NDAwMCxcblx0ICAgICAgICAgICAgMHgyMDAwMDAwOiAweDgwMDAwLFxuXHQgICAgICAgICAgICAweDMwMDAwMDA6IDB4NDAwODAwMTAsXG5cdCAgICAgICAgICAgIDB4NDAwMDAwMDogMHg0MDAwMDAxMCxcblx0ICAgICAgICAgICAgMHg1MDAwMDAwOiAweDQwMDg0MDAwLFxuXHQgICAgICAgICAgICAweDYwMDAwMDA6IDB4NDAwMDQwMDAsXG5cdCAgICAgICAgICAgIDB4NzAwMDAwMDogMHgxMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAwOiAweDg0MDAwLFxuXHQgICAgICAgICAgICAweDkwMDAwMDA6IDB4NDAwMDQwMTAsXG5cdCAgICAgICAgICAgIDB4YTAwMDAwMDogMHg0MDAwMDAwMCxcblx0ICAgICAgICAgICAgMHhiMDAwMDAwOiAweDg0MDEwLFxuXHQgICAgICAgICAgICAweGMwMDAwMDA6IDB4ODAwMTAsXG5cdCAgICAgICAgICAgIDB4ZDAwMDAwMDogMHgwLFxuXHQgICAgICAgICAgICAweGUwMDAwMDA6IDB4NDAxMCxcblx0ICAgICAgICAgICAgMHhmMDAwMDAwOiAweDQwMDgwMDAwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDogMHg0MDAwNDAwMCxcblx0ICAgICAgICAgICAgMHgxODAwMDAwOiAweDg0MDEwLFxuXHQgICAgICAgICAgICAweDI4MDAwMDA6IDB4MTAsXG5cdCAgICAgICAgICAgIDB4MzgwMDAwMDogMHg0MDAwNDAxMCxcblx0ICAgICAgICAgICAgMHg0ODAwMDAwOiAweDQwMDg0MDEwLFxuXHQgICAgICAgICAgICAweDU4MDAwMDA6IDB4NDAwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4NjgwMDAwMDogMHg4MDAwMCxcblx0ICAgICAgICAgICAgMHg3ODAwMDAwOiAweDQwMDgwMDEwLFxuXHQgICAgICAgICAgICAweDg4MDAwMDA6IDB4ODAwMTAsXG5cdCAgICAgICAgICAgIDB4OTgwMDAwMDogMHgwLFxuXHQgICAgICAgICAgICAweGE4MDAwMDA6IDB4NDAwMCxcblx0ICAgICAgICAgICAgMHhiODAwMDAwOiAweDQwMDgwMDAwLFxuXHQgICAgICAgICAgICAweGM4MDAwMDA6IDB4NDAwMDAwMTAsXG5cdCAgICAgICAgICAgIDB4ZDgwMDAwMDogMHg4NDAwMCxcblx0ICAgICAgICAgICAgMHhlODAwMDAwOiAweDQwMDg0MDAwLFxuXHQgICAgICAgICAgICAweGY4MDAwMDA6IDB4NDAxMCxcblx0ICAgICAgICAgICAgMHgxMDAwMDAwMDogMHgwLFxuXHQgICAgICAgICAgICAweDExMDAwMDAwOiAweDQwMDgwMDEwLFxuXHQgICAgICAgICAgICAweDEyMDAwMDAwOiAweDQwMDA0MDEwLFxuXHQgICAgICAgICAgICAweDEzMDAwMDAwOiAweDQwMDg0MDAwLFxuXHQgICAgICAgICAgICAweDE0MDAwMDAwOiAweDQwMDgwMDAwLFxuXHQgICAgICAgICAgICAweDE1MDAwMDAwOiAweDEwLFxuXHQgICAgICAgICAgICAweDE2MDAwMDAwOiAweDg0MDEwLFxuXHQgICAgICAgICAgICAweDE3MDAwMDAwOiAweDQwMDAsXG5cdCAgICAgICAgICAgIDB4MTgwMDAwMDA6IDB4NDAxMCxcblx0ICAgICAgICAgICAgMHgxOTAwMDAwMDogMHg4MDAwMCxcblx0ICAgICAgICAgICAgMHgxYTAwMDAwMDogMHg4MDAxMCxcblx0ICAgICAgICAgICAgMHgxYjAwMDAwMDogMHg0MDAwMDAxMCxcblx0ICAgICAgICAgICAgMHgxYzAwMDAwMDogMHg4NDAwMCxcblx0ICAgICAgICAgICAgMHgxZDAwMDAwMDogMHg0MDAwNDAwMCxcblx0ICAgICAgICAgICAgMHgxZTAwMDAwMDogMHg0MDAwMDAwMCxcblx0ICAgICAgICAgICAgMHgxZjAwMDAwMDogMHg0MDA4NDAxMCxcblx0ICAgICAgICAgICAgMHgxMDgwMDAwMDogMHg4NDAxMCxcblx0ICAgICAgICAgICAgMHgxMTgwMDAwMDogMHg4MDAwMCxcblx0ICAgICAgICAgICAgMHgxMjgwMDAwMDogMHg0MDA4MDAwMCxcblx0ICAgICAgICAgICAgMHgxMzgwMDAwMDogMHg0MDAwLFxuXHQgICAgICAgICAgICAweDE0ODAwMDAwOiAweDQwMDA0MDAwLFxuXHQgICAgICAgICAgICAweDE1ODAwMDAwOiAweDQwMDg0MDEwLFxuXHQgICAgICAgICAgICAweDE2ODAwMDAwOiAweDEwLFxuXHQgICAgICAgICAgICAweDE3ODAwMDAwOiAweDQwMDAwMDAwLFxuXHQgICAgICAgICAgICAweDE4ODAwMDAwOiAweDQwMDg0MDAwLFxuXHQgICAgICAgICAgICAweDE5ODAwMDAwOiAweDQwMDAwMDEwLFxuXHQgICAgICAgICAgICAweDFhODAwMDAwOiAweDQwMDA0MDEwLFxuXHQgICAgICAgICAgICAweDFiODAwMDAwOiAweDgwMDEwLFxuXHQgICAgICAgICAgICAweDFjODAwMDAwOiAweDAsXG5cdCAgICAgICAgICAgIDB4MWQ4MDAwMDA6IDB4NDAxMCxcblx0ICAgICAgICAgICAgMHgxZTgwMDAwMDogMHg0MDA4MDAxMCxcblx0ICAgICAgICAgICAgMHgxZjgwMDAwMDogMHg4NDAwMFxuXHQgICAgICAgIH0sXG5cdCAgICAgICAge1xuXHQgICAgICAgICAgICAweDA6IDB4MTA0LFxuXHQgICAgICAgICAgICAweDEwMDAwMDogMHgwLFxuXHQgICAgICAgICAgICAweDIwMDAwMDogMHg0MDAwMTAwLFxuXHQgICAgICAgICAgICAweDMwMDAwMDogMHgxMDEwNCxcblx0ICAgICAgICAgICAgMHg0MDAwMDA6IDB4MTAwMDQsXG5cdCAgICAgICAgICAgIDB4NTAwMDAwOiAweDQwMDAwMDQsXG5cdCAgICAgICAgICAgIDB4NjAwMDAwOiAweDQwMTAxMDQsXG5cdCAgICAgICAgICAgIDB4NzAwMDAwOiAweDQwMTAwMDAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwOiAweDQwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4OTAwMDAwOiAweDQwMTAxMDAsXG5cdCAgICAgICAgICAgIDB4YTAwMDAwOiAweDEwMTAwLFxuXHQgICAgICAgICAgICAweGIwMDAwMDogMHg0MDEwMDA0LFxuXHQgICAgICAgICAgICAweGMwMDAwMDogMHg0MDAwMTA0LFxuXHQgICAgICAgICAgICAweGQwMDAwMDogMHgxMDAwMCxcblx0ICAgICAgICAgICAgMHhlMDAwMDA6IDB4NCxcblx0ICAgICAgICAgICAgMHhmMDAwMDA6IDB4MTAwLFxuXHQgICAgICAgICAgICAweDgwMDAwOiAweDQwMTAxMDAsXG5cdCAgICAgICAgICAgIDB4MTgwMDAwOiAweDQwMTAwMDQsXG5cdCAgICAgICAgICAgIDB4MjgwMDAwOiAweDAsXG5cdCAgICAgICAgICAgIDB4MzgwMDAwOiAweDQwMDAxMDAsXG5cdCAgICAgICAgICAgIDB4NDgwMDAwOiAweDQwMDAwMDQsXG5cdCAgICAgICAgICAgIDB4NTgwMDAwOiAweDEwMDAwLFxuXHQgICAgICAgICAgICAweDY4MDAwMDogMHgxMDAwNCxcblx0ICAgICAgICAgICAgMHg3ODAwMDA6IDB4MTA0LFxuXHQgICAgICAgICAgICAweDg4MDAwMDogMHg0LFxuXHQgICAgICAgICAgICAweDk4MDAwMDogMHgxMDAsXG5cdCAgICAgICAgICAgIDB4YTgwMDAwOiAweDQwMTAwMDAsXG5cdCAgICAgICAgICAgIDB4YjgwMDAwOiAweDEwMTA0LFxuXHQgICAgICAgICAgICAweGM4MDAwMDogMHgxMDEwMCxcblx0ICAgICAgICAgICAgMHhkODAwMDA6IDB4NDAwMDEwNCxcblx0ICAgICAgICAgICAgMHhlODAwMDA6IDB4NDAxMDEwNCxcblx0ICAgICAgICAgICAgMHhmODAwMDA6IDB4NDAwMDAwMCxcblx0ICAgICAgICAgICAgMHgxMDAwMDAwOiAweDQwMTAxMDAsXG5cdCAgICAgICAgICAgIDB4MTEwMDAwMDogMHgxMDAwNCxcblx0ICAgICAgICAgICAgMHgxMjAwMDAwOiAweDEwMDAwLFxuXHQgICAgICAgICAgICAweDEzMDAwMDA6IDB4NDAwMDEwMCxcblx0ICAgICAgICAgICAgMHgxNDAwMDAwOiAweDEwMCxcblx0ICAgICAgICAgICAgMHgxNTAwMDAwOiAweDQwMTAxMDQsXG5cdCAgICAgICAgICAgIDB4MTYwMDAwMDogMHg0MDAwMDA0LFxuXHQgICAgICAgICAgICAweDE3MDAwMDA6IDB4MCxcblx0ICAgICAgICAgICAgMHgxODAwMDAwOiAweDQwMDAxMDQsXG5cdCAgICAgICAgICAgIDB4MTkwMDAwMDogMHg0MDAwMDAwLFxuXHQgICAgICAgICAgICAweDFhMDAwMDA6IDB4NCxcblx0ICAgICAgICAgICAgMHgxYjAwMDAwOiAweDEwMTAwLFxuXHQgICAgICAgICAgICAweDFjMDAwMDA6IDB4NDAxMDAwMCxcblx0ICAgICAgICAgICAgMHgxZDAwMDAwOiAweDEwNCxcblx0ICAgICAgICAgICAgMHgxZTAwMDAwOiAweDEwMTA0LFxuXHQgICAgICAgICAgICAweDFmMDAwMDA6IDB4NDAxMDAwNCxcblx0ICAgICAgICAgICAgMHgxMDgwMDAwOiAweDQwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MTE4MDAwMDogMHgxMDQsXG5cdCAgICAgICAgICAgIDB4MTI4MDAwMDogMHg0MDEwMTAwLFxuXHQgICAgICAgICAgICAweDEzODAwMDA6IDB4MCxcblx0ICAgICAgICAgICAgMHgxNDgwMDAwOiAweDEwMDA0LFxuXHQgICAgICAgICAgICAweDE1ODAwMDA6IDB4NDAwMDEwMCxcblx0ICAgICAgICAgICAgMHgxNjgwMDAwOiAweDEwMCxcblx0ICAgICAgICAgICAgMHgxNzgwMDAwOiAweDQwMTAwMDQsXG5cdCAgICAgICAgICAgIDB4MTg4MDAwMDogMHgxMDAwMCxcblx0ICAgICAgICAgICAgMHgxOTgwMDAwOiAweDQwMTAxMDQsXG5cdCAgICAgICAgICAgIDB4MWE4MDAwMDogMHgxMDEwNCxcblx0ICAgICAgICAgICAgMHgxYjgwMDAwOiAweDQwMDAwMDQsXG5cdCAgICAgICAgICAgIDB4MWM4MDAwMDogMHg0MDAwMTA0LFxuXHQgICAgICAgICAgICAweDFkODAwMDA6IDB4NDAxMDAwMCxcblx0ICAgICAgICAgICAgMHgxZTgwMDAwOiAweDQsXG5cdCAgICAgICAgICAgIDB4MWY4MDAwMDogMHgxMDEwMFxuXHQgICAgICAgIH0sXG5cdCAgICAgICAge1xuXHQgICAgICAgICAgICAweDA6IDB4ODA0MDEwMDAsXG5cdCAgICAgICAgICAgIDB4MTAwMDA6IDB4ODAwMDEwNDAsXG5cdCAgICAgICAgICAgIDB4MjAwMDA6IDB4NDAxMDQwLFxuXHQgICAgICAgICAgICAweDMwMDAwOiAweDgwNDAwMDAwLFxuXHQgICAgICAgICAgICAweDQwMDAwOiAweDAsXG5cdCAgICAgICAgICAgIDB4NTAwMDA6IDB4NDAxMDAwLFxuXHQgICAgICAgICAgICAweDYwMDAwOiAweDgwMDAwMDQwLFxuXHQgICAgICAgICAgICAweDcwMDAwOiAweDQwMDA0MCxcblx0ICAgICAgICAgICAgMHg4MDAwMDogMHg4MDAwMDAwMCxcblx0ICAgICAgICAgICAgMHg5MDAwMDogMHg0MDAwMDAsXG5cdCAgICAgICAgICAgIDB4YTAwMDA6IDB4NDAsXG5cdCAgICAgICAgICAgIDB4YjAwMDA6IDB4ODAwMDEwMDAsXG5cdCAgICAgICAgICAgIDB4YzAwMDA6IDB4ODA0MDAwNDAsXG5cdCAgICAgICAgICAgIDB4ZDAwMDA6IDB4MTA0MCxcblx0ICAgICAgICAgICAgMHhlMDAwMDogMHgxMDAwLFxuXHQgICAgICAgICAgICAweGYwMDAwOiAweDgwNDAxMDQwLFxuXHQgICAgICAgICAgICAweDgwMDA6IDB4ODAwMDEwNDAsXG5cdCAgICAgICAgICAgIDB4MTgwMDA6IDB4NDAsXG5cdCAgICAgICAgICAgIDB4MjgwMDA6IDB4ODA0MDAwNDAsXG5cdCAgICAgICAgICAgIDB4MzgwMDA6IDB4ODAwMDEwMDAsXG5cdCAgICAgICAgICAgIDB4NDgwMDA6IDB4NDAxMDAwLFxuXHQgICAgICAgICAgICAweDU4MDAwOiAweDgwNDAxMDQwLFxuXHQgICAgICAgICAgICAweDY4MDAwOiAweDAsXG5cdCAgICAgICAgICAgIDB4NzgwMDA6IDB4ODA0MDAwMDAsXG5cdCAgICAgICAgICAgIDB4ODgwMDA6IDB4MTAwMCxcblx0ICAgICAgICAgICAgMHg5ODAwMDogMHg4MDQwMTAwMCxcblx0ICAgICAgICAgICAgMHhhODAwMDogMHg0MDAwMDAsXG5cdCAgICAgICAgICAgIDB4YjgwMDA6IDB4MTA0MCxcblx0ICAgICAgICAgICAgMHhjODAwMDogMHg4MDAwMDAwMCxcblx0ICAgICAgICAgICAgMHhkODAwMDogMHg0MDAwNDAsXG5cdCAgICAgICAgICAgIDB4ZTgwMDA6IDB4NDAxMDQwLFxuXHQgICAgICAgICAgICAweGY4MDAwOiAweDgwMDAwMDQwLFxuXHQgICAgICAgICAgICAweDEwMDAwMDogMHg0MDAwNDAsXG5cdCAgICAgICAgICAgIDB4MTEwMDAwOiAweDQwMTAwMCxcblx0ICAgICAgICAgICAgMHgxMjAwMDA6IDB4ODAwMDAwNDAsXG5cdCAgICAgICAgICAgIDB4MTMwMDAwOiAweDAsXG5cdCAgICAgICAgICAgIDB4MTQwMDAwOiAweDEwNDAsXG5cdCAgICAgICAgICAgIDB4MTUwMDAwOiAweDgwNDAwMDQwLFxuXHQgICAgICAgICAgICAweDE2MDAwMDogMHg4MDQwMTAwMCxcblx0ICAgICAgICAgICAgMHgxNzAwMDA6IDB4ODAwMDEwNDAsXG5cdCAgICAgICAgICAgIDB4MTgwMDAwOiAweDgwNDAxMDQwLFxuXHQgICAgICAgICAgICAweDE5MDAwMDogMHg4MDAwMDAwMCxcblx0ICAgICAgICAgICAgMHgxYTAwMDA6IDB4ODA0MDAwMDAsXG5cdCAgICAgICAgICAgIDB4MWIwMDAwOiAweDQwMTA0MCxcblx0ICAgICAgICAgICAgMHgxYzAwMDA6IDB4ODAwMDEwMDAsXG5cdCAgICAgICAgICAgIDB4MWQwMDAwOiAweDQwMDAwMCxcblx0ICAgICAgICAgICAgMHgxZTAwMDA6IDB4NDAsXG5cdCAgICAgICAgICAgIDB4MWYwMDAwOiAweDEwMDAsXG5cdCAgICAgICAgICAgIDB4MTA4MDAwOiAweDgwNDAwMDAwLFxuXHQgICAgICAgICAgICAweDExODAwMDogMHg4MDQwMTA0MCxcblx0ICAgICAgICAgICAgMHgxMjgwMDA6IDB4MCxcblx0ICAgICAgICAgICAgMHgxMzgwMDA6IDB4NDAxMDAwLFxuXHQgICAgICAgICAgICAweDE0ODAwMDogMHg0MDAwNDAsXG5cdCAgICAgICAgICAgIDB4MTU4MDAwOiAweDgwMDAwMDAwLFxuXHQgICAgICAgICAgICAweDE2ODAwMDogMHg4MDAwMTA0MCxcblx0ICAgICAgICAgICAgMHgxNzgwMDA6IDB4NDAsXG5cdCAgICAgICAgICAgIDB4MTg4MDAwOiAweDgwMDAwMDQwLFxuXHQgICAgICAgICAgICAweDE5ODAwMDogMHgxMDAwLFxuXHQgICAgICAgICAgICAweDFhODAwMDogMHg4MDAwMTAwMCxcblx0ICAgICAgICAgICAgMHgxYjgwMDA6IDB4ODA0MDAwNDAsXG5cdCAgICAgICAgICAgIDB4MWM4MDAwOiAweDEwNDAsXG5cdCAgICAgICAgICAgIDB4MWQ4MDAwOiAweDgwNDAxMDAwLFxuXHQgICAgICAgICAgICAweDFlODAwMDogMHg0MDAwMDAsXG5cdCAgICAgICAgICAgIDB4MWY4MDAwOiAweDQwMTA0MFxuXHQgICAgICAgIH0sXG5cdCAgICAgICAge1xuXHQgICAgICAgICAgICAweDA6IDB4ODAsXG5cdCAgICAgICAgICAgIDB4MTAwMDogMHgxMDQwMDAwLFxuXHQgICAgICAgICAgICAweDIwMDA6IDB4NDAwMDAsXG5cdCAgICAgICAgICAgIDB4MzAwMDogMHgyMDAwMDAwMCxcblx0ICAgICAgICAgICAgMHg0MDAwOiAweDIwMDQwMDgwLFxuXHQgICAgICAgICAgICAweDUwMDA6IDB4MTAwMDA4MCxcblx0ICAgICAgICAgICAgMHg2MDAwOiAweDIxMDAwMDgwLFxuXHQgICAgICAgICAgICAweDcwMDA6IDB4NDAwODAsXG5cdCAgICAgICAgICAgIDB4ODAwMDogMHgxMDAwMDAwLFxuXHQgICAgICAgICAgICAweDkwMDA6IDB4MjAwNDAwMDAsXG5cdCAgICAgICAgICAgIDB4YTAwMDogMHgyMDAwMDA4MCxcblx0ICAgICAgICAgICAgMHhiMDAwOiAweDIxMDQwMDgwLFxuXHQgICAgICAgICAgICAweGMwMDA6IDB4MjEwNDAwMDAsXG5cdCAgICAgICAgICAgIDB4ZDAwMDogMHgwLFxuXHQgICAgICAgICAgICAweGUwMDA6IDB4MTA0MDA4MCxcblx0ICAgICAgICAgICAgMHhmMDAwOiAweDIxMDAwMDAwLFxuXHQgICAgICAgICAgICAweDgwMDogMHgxMDQwMDgwLFxuXHQgICAgICAgICAgICAweDE4MDA6IDB4MjEwMDAwODAsXG5cdCAgICAgICAgICAgIDB4MjgwMDogMHg4MCxcblx0ICAgICAgICAgICAgMHgzODAwOiAweDEwNDAwMDAsXG5cdCAgICAgICAgICAgIDB4NDgwMDogMHg0MDAwMCxcblx0ICAgICAgICAgICAgMHg1ODAwOiAweDIwMDQwMDgwLFxuXHQgICAgICAgICAgICAweDY4MDA6IDB4MjEwNDAwMDAsXG5cdCAgICAgICAgICAgIDB4NzgwMDogMHgyMDAwMDAwMCxcblx0ICAgICAgICAgICAgMHg4ODAwOiAweDIwMDQwMDAwLFxuXHQgICAgICAgICAgICAweDk4MDA6IDB4MCxcblx0ICAgICAgICAgICAgMHhhODAwOiAweDIxMDQwMDgwLFxuXHQgICAgICAgICAgICAweGI4MDA6IDB4MTAwMDA4MCxcblx0ICAgICAgICAgICAgMHhjODAwOiAweDIwMDAwMDgwLFxuXHQgICAgICAgICAgICAweGQ4MDA6IDB4MjEwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4ZTgwMDogMHgxMDAwMDAwLFxuXHQgICAgICAgICAgICAweGY4MDA6IDB4NDAwODAsXG5cdCAgICAgICAgICAgIDB4MTAwMDA6IDB4NDAwMDAsXG5cdCAgICAgICAgICAgIDB4MTEwMDA6IDB4ODAsXG5cdCAgICAgICAgICAgIDB4MTIwMDA6IDB4MjAwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MTMwMDA6IDB4MjEwMDAwODAsXG5cdCAgICAgICAgICAgIDB4MTQwMDA6IDB4MTAwMDA4MCxcblx0ICAgICAgICAgICAgMHgxNTAwMDogMHgyMTA0MDAwMCxcblx0ICAgICAgICAgICAgMHgxNjAwMDogMHgyMDA0MDA4MCxcblx0ICAgICAgICAgICAgMHgxNzAwMDogMHgxMDAwMDAwLFxuXHQgICAgICAgICAgICAweDE4MDAwOiAweDIxMDQwMDgwLFxuXHQgICAgICAgICAgICAweDE5MDAwOiAweDIxMDAwMDAwLFxuXHQgICAgICAgICAgICAweDFhMDAwOiAweDEwNDAwMDAsXG5cdCAgICAgICAgICAgIDB4MWIwMDA6IDB4MjAwNDAwMDAsXG5cdCAgICAgICAgICAgIDB4MWMwMDA6IDB4NDAwODAsXG5cdCAgICAgICAgICAgIDB4MWQwMDA6IDB4MjAwMDAwODAsXG5cdCAgICAgICAgICAgIDB4MWUwMDA6IDB4MCxcblx0ICAgICAgICAgICAgMHgxZjAwMDogMHgxMDQwMDgwLFxuXHQgICAgICAgICAgICAweDEwODAwOiAweDIxMDAwMDgwLFxuXHQgICAgICAgICAgICAweDExODAwOiAweDEwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MTI4MDA6IDB4MTA0MDAwMCxcblx0ICAgICAgICAgICAgMHgxMzgwMDogMHgyMDA0MDA4MCxcblx0ICAgICAgICAgICAgMHgxNDgwMDogMHgyMDAwMDAwMCxcblx0ICAgICAgICAgICAgMHgxNTgwMDogMHgxMDQwMDgwLFxuXHQgICAgICAgICAgICAweDE2ODAwOiAweDgwLFxuXHQgICAgICAgICAgICAweDE3ODAwOiAweDIxMDQwMDAwLFxuXHQgICAgICAgICAgICAweDE4ODAwOiAweDQwMDgwLFxuXHQgICAgICAgICAgICAweDE5ODAwOiAweDIxMDQwMDgwLFxuXHQgICAgICAgICAgICAweDFhODAwOiAweDAsXG5cdCAgICAgICAgICAgIDB4MWI4MDA6IDB4MjEwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MWM4MDA6IDB4MTAwMDA4MCxcblx0ICAgICAgICAgICAgMHgxZDgwMDogMHg0MDAwMCxcblx0ICAgICAgICAgICAgMHgxZTgwMDogMHgyMDA0MDAwMCxcblx0ICAgICAgICAgICAgMHgxZjgwMDogMHgyMDAwMDA4MFxuXHQgICAgICAgIH0sXG5cdCAgICAgICAge1xuXHQgICAgICAgICAgICAweDA6IDB4MTAwMDAwMDgsXG5cdCAgICAgICAgICAgIDB4MTAwOiAweDIwMDAsXG5cdCAgICAgICAgICAgIDB4MjAwOiAweDEwMjAwMDAwLFxuXHQgICAgICAgICAgICAweDMwMDogMHgxMDIwMjAwOCxcblx0ICAgICAgICAgICAgMHg0MDA6IDB4MTAwMDIwMDAsXG5cdCAgICAgICAgICAgIDB4NTAwOiAweDIwMDAwMCxcblx0ICAgICAgICAgICAgMHg2MDA6IDB4MjAwMDA4LFxuXHQgICAgICAgICAgICAweDcwMDogMHgxMDAwMDAwMCxcblx0ICAgICAgICAgICAgMHg4MDA6IDB4MCxcblx0ICAgICAgICAgICAgMHg5MDA6IDB4MTAwMDIwMDgsXG5cdCAgICAgICAgICAgIDB4YTAwOiAweDIwMjAwMCxcblx0ICAgICAgICAgICAgMHhiMDA6IDB4OCxcblx0ICAgICAgICAgICAgMHhjMDA6IDB4MTAyMDAwMDgsXG5cdCAgICAgICAgICAgIDB4ZDAwOiAweDIwMjAwOCxcblx0ICAgICAgICAgICAgMHhlMDA6IDB4MjAwOCxcblx0ICAgICAgICAgICAgMHhmMDA6IDB4MTAyMDIwMDAsXG5cdCAgICAgICAgICAgIDB4ODA6IDB4MTAyMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MTgwOiAweDEwMjAyMDA4LFxuXHQgICAgICAgICAgICAweDI4MDogMHg4LFxuXHQgICAgICAgICAgICAweDM4MDogMHgyMDAwMDAsXG5cdCAgICAgICAgICAgIDB4NDgwOiAweDIwMjAwOCxcblx0ICAgICAgICAgICAgMHg1ODA6IDB4MTAwMDAwMDgsXG5cdCAgICAgICAgICAgIDB4NjgwOiAweDEwMDAyMDAwLFxuXHQgICAgICAgICAgICAweDc4MDogMHgyMDA4LFxuXHQgICAgICAgICAgICAweDg4MDogMHgyMDAwMDgsXG5cdCAgICAgICAgICAgIDB4OTgwOiAweDIwMDAsXG5cdCAgICAgICAgICAgIDB4YTgwOiAweDEwMDAyMDA4LFxuXHQgICAgICAgICAgICAweGI4MDogMHgxMDIwMDAwOCxcblx0ICAgICAgICAgICAgMHhjODA6IDB4MCxcblx0ICAgICAgICAgICAgMHhkODA6IDB4MTAyMDIwMDAsXG5cdCAgICAgICAgICAgIDB4ZTgwOiAweDIwMjAwMCxcblx0ICAgICAgICAgICAgMHhmODA6IDB4MTAwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MTAwMDogMHgxMDAwMjAwMCxcblx0ICAgICAgICAgICAgMHgxMTAwOiAweDEwMjAwMDA4LFxuXHQgICAgICAgICAgICAweDEyMDA6IDB4MTAyMDIwMDgsXG5cdCAgICAgICAgICAgIDB4MTMwMDogMHgyMDA4LFxuXHQgICAgICAgICAgICAweDE0MDA6IDB4MjAwMDAwLFxuXHQgICAgICAgICAgICAweDE1MDA6IDB4MTAwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MTYwMDogMHgxMDAwMDAwOCxcblx0ICAgICAgICAgICAgMHgxNzAwOiAweDIwMjAwMCxcblx0ICAgICAgICAgICAgMHgxODAwOiAweDIwMjAwOCxcblx0ICAgICAgICAgICAgMHgxOTAwOiAweDAsXG5cdCAgICAgICAgICAgIDB4MWEwMDogMHg4LFxuXHQgICAgICAgICAgICAweDFiMDA6IDB4MTAyMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MWMwMDogMHgyMDAwLFxuXHQgICAgICAgICAgICAweDFkMDA6IDB4MTAwMDIwMDgsXG5cdCAgICAgICAgICAgIDB4MWUwMDogMHgxMDIwMjAwMCxcblx0ICAgICAgICAgICAgMHgxZjAwOiAweDIwMDAwOCxcblx0ICAgICAgICAgICAgMHgxMDgwOiAweDgsXG5cdCAgICAgICAgICAgIDB4MTE4MDogMHgyMDIwMDAsXG5cdCAgICAgICAgICAgIDB4MTI4MDogMHgyMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MTM4MDogMHgxMDAwMDAwOCxcblx0ICAgICAgICAgICAgMHgxNDgwOiAweDEwMDAyMDAwLFxuXHQgICAgICAgICAgICAweDE1ODA6IDB4MjAwOCxcblx0ICAgICAgICAgICAgMHgxNjgwOiAweDEwMjAyMDA4LFxuXHQgICAgICAgICAgICAweDE3ODA6IDB4MTAyMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MTg4MDogMHgxMDIwMjAwMCxcblx0ICAgICAgICAgICAgMHgxOTgwOiAweDEwMjAwMDA4LFxuXHQgICAgICAgICAgICAweDFhODA6IDB4MjAwMCxcblx0ICAgICAgICAgICAgMHgxYjgwOiAweDIwMjAwOCxcblx0ICAgICAgICAgICAgMHgxYzgwOiAweDIwMDAwOCxcblx0ICAgICAgICAgICAgMHgxZDgwOiAweDAsXG5cdCAgICAgICAgICAgIDB4MWU4MDogMHgxMDAwMDAwMCxcblx0ICAgICAgICAgICAgMHgxZjgwOiAweDEwMDAyMDA4XG5cdCAgICAgICAgfSxcblx0ICAgICAgICB7XG5cdCAgICAgICAgICAgIDB4MDogMHgxMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MTA6IDB4MjAwMDQwMSxcblx0ICAgICAgICAgICAgMHgyMDogMHg0MDAsXG5cdCAgICAgICAgICAgIDB4MzA6IDB4MTAwNDAxLFxuXHQgICAgICAgICAgICAweDQwOiAweDIxMDA0MDEsXG5cdCAgICAgICAgICAgIDB4NTA6IDB4MCxcblx0ICAgICAgICAgICAgMHg2MDogMHgxLFxuXHQgICAgICAgICAgICAweDcwOiAweDIxMDAwMDEsXG5cdCAgICAgICAgICAgIDB4ODA6IDB4MjAwMDQwMCxcblx0ICAgICAgICAgICAgMHg5MDogMHgxMDAwMDEsXG5cdCAgICAgICAgICAgIDB4YTA6IDB4MjAwMDAwMSxcblx0ICAgICAgICAgICAgMHhiMDogMHgyMTAwNDAwLFxuXHQgICAgICAgICAgICAweGMwOiAweDIxMDAwMDAsXG5cdCAgICAgICAgICAgIDB4ZDA6IDB4NDAxLFxuXHQgICAgICAgICAgICAweGUwOiAweDEwMDQwMCxcblx0ICAgICAgICAgICAgMHhmMDogMHgyMDAwMDAwLFxuXHQgICAgICAgICAgICAweDg6IDB4MjEwMDAwMSxcblx0ICAgICAgICAgICAgMHgxODogMHgwLFxuXHQgICAgICAgICAgICAweDI4OiAweDIwMDA0MDEsXG5cdCAgICAgICAgICAgIDB4Mzg6IDB4MjEwMDQwMCxcblx0ICAgICAgICAgICAgMHg0ODogMHgxMDAwMDAsXG5cdCAgICAgICAgICAgIDB4NTg6IDB4MjAwMDAwMSxcblx0ICAgICAgICAgICAgMHg2ODogMHgyMDAwMDAwLFxuXHQgICAgICAgICAgICAweDc4OiAweDQwMSxcblx0ICAgICAgICAgICAgMHg4ODogMHgxMDA0MDEsXG5cdCAgICAgICAgICAgIDB4OTg6IDB4MjAwMDQwMCxcblx0ICAgICAgICAgICAgMHhhODogMHgyMTAwMDAwLFxuXHQgICAgICAgICAgICAweGI4OiAweDEwMDAwMSxcblx0ICAgICAgICAgICAgMHhjODogMHg0MDAsXG5cdCAgICAgICAgICAgIDB4ZDg6IDB4MjEwMDQwMSxcblx0ICAgICAgICAgICAgMHhlODogMHgxLFxuXHQgICAgICAgICAgICAweGY4OiAweDEwMDQwMCxcblx0ICAgICAgICAgICAgMHgxMDA6IDB4MjAwMDAwMCxcblx0ICAgICAgICAgICAgMHgxMTA6IDB4MTAwMDAwLFxuXHQgICAgICAgICAgICAweDEyMDogMHgyMDAwNDAxLFxuXHQgICAgICAgICAgICAweDEzMDogMHgyMTAwMDAxLFxuXHQgICAgICAgICAgICAweDE0MDogMHgxMDAwMDEsXG5cdCAgICAgICAgICAgIDB4MTUwOiAweDIwMDA0MDAsXG5cdCAgICAgICAgICAgIDB4MTYwOiAweDIxMDA0MDAsXG5cdCAgICAgICAgICAgIDB4MTcwOiAweDEwMDQwMSxcblx0ICAgICAgICAgICAgMHgxODA6IDB4NDAxLFxuXHQgICAgICAgICAgICAweDE5MDogMHgyMTAwNDAxLFxuXHQgICAgICAgICAgICAweDFhMDogMHgxMDA0MDAsXG5cdCAgICAgICAgICAgIDB4MWIwOiAweDEsXG5cdCAgICAgICAgICAgIDB4MWMwOiAweDAsXG5cdCAgICAgICAgICAgIDB4MWQwOiAweDIxMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MWUwOiAweDIwMDAwMDEsXG5cdCAgICAgICAgICAgIDB4MWYwOiAweDQwMCxcblx0ICAgICAgICAgICAgMHgxMDg6IDB4MTAwNDAwLFxuXHQgICAgICAgICAgICAweDExODogMHgyMDAwNDAxLFxuXHQgICAgICAgICAgICAweDEyODogMHgyMTAwMDAxLFxuXHQgICAgICAgICAgICAweDEzODogMHgxLFxuXHQgICAgICAgICAgICAweDE0ODogMHgyMDAwMDAwLFxuXHQgICAgICAgICAgICAweDE1ODogMHgxMDAwMDAsXG5cdCAgICAgICAgICAgIDB4MTY4OiAweDQwMSxcblx0ICAgICAgICAgICAgMHgxNzg6IDB4MjEwMDQwMCxcblx0ICAgICAgICAgICAgMHgxODg6IDB4MjAwMDAwMSxcblx0ICAgICAgICAgICAgMHgxOTg6IDB4MjEwMDAwMCxcblx0ICAgICAgICAgICAgMHgxYTg6IDB4MCxcblx0ICAgICAgICAgICAgMHgxYjg6IDB4MjEwMDQwMSxcblx0ICAgICAgICAgICAgMHgxYzg6IDB4MTAwNDAxLFxuXHQgICAgICAgICAgICAweDFkODogMHg0MDAsXG5cdCAgICAgICAgICAgIDB4MWU4OiAweDIwMDA0MDAsXG5cdCAgICAgICAgICAgIDB4MWY4OiAweDEwMDAwMVxuXHQgICAgICAgIH0sXG5cdCAgICAgICAge1xuXHQgICAgICAgICAgICAweDA6IDB4ODAwMDgyMCxcblx0ICAgICAgICAgICAgMHgxOiAweDIwMDAwLFxuXHQgICAgICAgICAgICAweDI6IDB4ODAwMDAwMCxcblx0ICAgICAgICAgICAgMHgzOiAweDIwLFxuXHQgICAgICAgICAgICAweDQ6IDB4MjAwMjAsXG5cdCAgICAgICAgICAgIDB4NTogMHg4MDIwODIwLFxuXHQgICAgICAgICAgICAweDY6IDB4ODAyMDgwMCxcblx0ICAgICAgICAgICAgMHg3OiAweDgwMCxcblx0ICAgICAgICAgICAgMHg4OiAweDgwMjAwMDAsXG5cdCAgICAgICAgICAgIDB4OTogMHg4MDAwODAwLFxuXHQgICAgICAgICAgICAweGE6IDB4MjA4MDAsXG5cdCAgICAgICAgICAgIDB4YjogMHg4MDIwMDIwLFxuXHQgICAgICAgICAgICAweGM6IDB4ODIwLFxuXHQgICAgICAgICAgICAweGQ6IDB4MCxcblx0ICAgICAgICAgICAgMHhlOiAweDgwMDAwMjAsXG5cdCAgICAgICAgICAgIDB4ZjogMHgyMDgyMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAwMDogMHg4MDAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMDE6IDB4ODAyMDgyMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAwMjogMHg4MDAwODIwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDAzOiAweDgwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMDQ6IDB4ODAyMDAwMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAwNTogMHgyMDgwMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAwNjogMHgyMDgyMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAwNzogMHgyMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAwODogMHg4MDAwMDIwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDA5OiAweDgyMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAwYTogMHgyMDAyMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAwYjogMHg4MDIwODAwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDBjOiAweDAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMGQ6IDB4ODAyMDAyMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAwZTogMHg4MDAwODAwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDBmOiAweDIwMDAwLFxuXHQgICAgICAgICAgICAweDEwOiAweDIwODIwLFxuXHQgICAgICAgICAgICAweDExOiAweDgwMjA4MDAsXG5cdCAgICAgICAgICAgIDB4MTI6IDB4MjAsXG5cdCAgICAgICAgICAgIDB4MTM6IDB4ODAwLFxuXHQgICAgICAgICAgICAweDE0OiAweDgwMDA4MDAsXG5cdCAgICAgICAgICAgIDB4MTU6IDB4ODAwMDAyMCxcblx0ICAgICAgICAgICAgMHgxNjogMHg4MDIwMDIwLFxuXHQgICAgICAgICAgICAweDE3OiAweDIwMDAwLFxuXHQgICAgICAgICAgICAweDE4OiAweDAsXG5cdCAgICAgICAgICAgIDB4MTk6IDB4MjAwMjAsXG5cdCAgICAgICAgICAgIDB4MWE6IDB4ODAyMDAwMCxcblx0ICAgICAgICAgICAgMHgxYjogMHg4MDAwODIwLFxuXHQgICAgICAgICAgICAweDFjOiAweDgwMjA4MjAsXG5cdCAgICAgICAgICAgIDB4MWQ6IDB4MjA4MDAsXG5cdCAgICAgICAgICAgIDB4MWU6IDB4ODIwLFxuXHQgICAgICAgICAgICAweDFmOiAweDgwMDAwMDAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMTA6IDB4MjAwMDAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMTE6IDB4ODAwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDEyOiAweDgwMjAwMjAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMTM6IDB4MjA4MjAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMTQ6IDB4MjAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMTU6IDB4ODAyMDAwMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAxNjogMHg4MDAwMDAwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDE3OiAweDgwMDA4MjAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMTg6IDB4ODAyMDgyMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAxOTogMHg4MDAwMDIwLFxuXHQgICAgICAgICAgICAweDgwMDAwMDFhOiAweDgwMDA4MDAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMWI6IDB4MCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAxYzogMHgyMDgwMCxcblx0ICAgICAgICAgICAgMHg4MDAwMDAxZDogMHg4MjAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMWU6IDB4MjAwMjAsXG5cdCAgICAgICAgICAgIDB4ODAwMDAwMWY6IDB4ODAyMDgwMFxuXHQgICAgICAgIH1cblx0ICAgIF07XG5cblx0ICAgIC8vIE1hc2tzIHRoYXQgc2VsZWN0IHRoZSBTQk9YIGlucHV0XG5cdCAgICB2YXIgU0JPWF9NQVNLID0gW1xuXHQgICAgICAgIDB4ZjgwMDAwMDEsIDB4MWY4MDAwMDAsIDB4MDFmODAwMDAsIDB4MDAxZjgwMDAsXG5cdCAgICAgICAgMHgwMDAxZjgwMCwgMHgwMDAwMWY4MCwgMHgwMDAwMDFmOCwgMHg4MDAwMDAxZlxuXHQgICAgXTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBERVMgYmxvY2sgY2lwaGVyIGFsZ29yaXRobS5cblx0ICAgICAqL1xuXHQgICAgdmFyIERFUyA9IENfYWxnby5ERVMgPSBCbG9ja0NpcGhlci5leHRlbmQoe1xuXHQgICAgICAgIF9kb1Jlc2V0OiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICB2YXIga2V5ID0gdGhpcy5fa2V5O1xuXHQgICAgICAgICAgICB2YXIga2V5V29yZHMgPSBrZXkud29yZHM7XG5cblx0ICAgICAgICAgICAgLy8gU2VsZWN0IDU2IGJpdHMgYWNjb3JkaW5nIHRvIFBDMVxuXHQgICAgICAgICAgICB2YXIga2V5Qml0cyA9IFtdO1xuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDU2OyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIHZhciBrZXlCaXRQb3MgPSBQQzFbaV0gLSAxO1xuXHQgICAgICAgICAgICAgICAga2V5Qml0c1tpXSA9IChrZXlXb3Jkc1trZXlCaXRQb3MgPj4+IDVdID4+PiAoMzEgLSBrZXlCaXRQb3MgJSAzMikpICYgMTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIC8vIEFzc2VtYmxlIDE2IHN1YmtleXNcblx0ICAgICAgICAgICAgdmFyIHN1YktleXMgPSB0aGlzLl9zdWJLZXlzID0gW107XG5cdCAgICAgICAgICAgIGZvciAodmFyIG5TdWJLZXkgPSAwOyBuU3ViS2V5IDwgMTY7IG5TdWJLZXkrKykge1xuXHQgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIHN1YmtleVxuXHQgICAgICAgICAgICAgICAgdmFyIHN1YktleSA9IHN1YktleXNbblN1YktleV0gPSBbXTtcblxuXHQgICAgICAgICAgICAgICAgLy8gU2hvcnRjdXRcblx0ICAgICAgICAgICAgICAgIHZhciBiaXRTaGlmdCA9IEJJVF9TSElGVFNbblN1YktleV07XG5cblx0ICAgICAgICAgICAgICAgIC8vIFNlbGVjdCA0OCBiaXRzIGFjY29yZGluZyB0byBQQzJcblx0ICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjQ7IGkrKykge1xuXHQgICAgICAgICAgICAgICAgICAgIC8vIFNlbGVjdCBmcm9tIHRoZSBsZWZ0IDI4IGtleSBiaXRzXG5cdCAgICAgICAgICAgICAgICAgICAgc3ViS2V5WyhpIC8gNikgfCAwXSB8PSBrZXlCaXRzWygoUEMyW2ldIC0gMSkgKyBiaXRTaGlmdCkgJSAyOF0gPDwgKDMxIC0gaSAlIDYpO1xuXG5cdCAgICAgICAgICAgICAgICAgICAgLy8gU2VsZWN0IGZyb20gdGhlIHJpZ2h0IDI4IGtleSBiaXRzXG5cdCAgICAgICAgICAgICAgICAgICAgc3ViS2V5WzQgKyAoKGkgLyA2KSB8IDApXSB8PSBrZXlCaXRzWzI4ICsgKCgoUEMyW2kgKyAyNF0gLSAxKSArIGJpdFNoaWZ0KSAlIDI4KV0gPDwgKDMxIC0gaSAlIDYpO1xuXHQgICAgICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgICAgICAvLyBTaW5jZSBlYWNoIHN1YmtleSBpcyBhcHBsaWVkIHRvIGFuIGV4cGFuZGVkIDMyLWJpdCBpbnB1dCxcblx0ICAgICAgICAgICAgICAgIC8vIHRoZSBzdWJrZXkgY2FuIGJlIGJyb2tlbiBpbnRvIDggdmFsdWVzIHNjYWxlZCB0byAzMi1iaXRzLFxuXHQgICAgICAgICAgICAgICAgLy8gd2hpY2ggYWxsb3dzIHRoZSBrZXkgdG8gYmUgdXNlZCB3aXRob3V0IGV4cGFuc2lvblxuXHQgICAgICAgICAgICAgICAgc3ViS2V5WzBdID0gKHN1YktleVswXSA8PCAxKSB8IChzdWJLZXlbMF0gPj4+IDMxKTtcblx0ICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgNzsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgc3ViS2V5W2ldID0gc3ViS2V5W2ldID4+PiAoKGkgLSAxKSAqIDQgKyAzKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIHN1YktleVs3XSA9IChzdWJLZXlbN10gPDwgNSkgfCAoc3ViS2V5WzddID4+PiAyNyk7XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICAvLyBDb21wdXRlIGludmVyc2Ugc3Via2V5c1xuXHQgICAgICAgICAgICB2YXIgaW52U3ViS2V5cyA9IHRoaXMuX2ludlN1YktleXMgPSBbXTtcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICBpbnZTdWJLZXlzW2ldID0gc3ViS2V5c1sxNSAtIGldO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIGVuY3J5cHRCbG9jazogZnVuY3Rpb24gKE0sIG9mZnNldCkge1xuXHQgICAgICAgICAgICB0aGlzLl9kb0NyeXB0QmxvY2soTSwgb2Zmc2V0LCB0aGlzLl9zdWJLZXlzKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgZGVjcnlwdEJsb2NrOiBmdW5jdGlvbiAoTSwgb2Zmc2V0KSB7XG5cdCAgICAgICAgICAgIHRoaXMuX2RvQ3J5cHRCbG9jayhNLCBvZmZzZXQsIHRoaXMuX2ludlN1YktleXMpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBfZG9DcnlwdEJsb2NrOiBmdW5jdGlvbiAoTSwgb2Zmc2V0LCBzdWJLZXlzKSB7XG5cdCAgICAgICAgICAgIC8vIEdldCBpbnB1dFxuXHQgICAgICAgICAgICB0aGlzLl9sQmxvY2sgPSBNW29mZnNldF07XG5cdCAgICAgICAgICAgIHRoaXMuX3JCbG9jayA9IE1bb2Zmc2V0ICsgMV07XG5cblx0ICAgICAgICAgICAgLy8gSW5pdGlhbCBwZXJtdXRhdGlvblxuXHQgICAgICAgICAgICBleGNoYW5nZUxSLmNhbGwodGhpcywgNCwgIDB4MGYwZjBmMGYpO1xuXHQgICAgICAgICAgICBleGNoYW5nZUxSLmNhbGwodGhpcywgMTYsIDB4MDAwMGZmZmYpO1xuXHQgICAgICAgICAgICBleGNoYW5nZVJMLmNhbGwodGhpcywgMiwgIDB4MzMzMzMzMzMpO1xuXHQgICAgICAgICAgICBleGNoYW5nZVJMLmNhbGwodGhpcywgOCwgIDB4MDBmZjAwZmYpO1xuXHQgICAgICAgICAgICBleGNoYW5nZUxSLmNhbGwodGhpcywgMSwgIDB4NTU1NTU1NTUpO1xuXG5cdCAgICAgICAgICAgIC8vIFJvdW5kc1xuXHQgICAgICAgICAgICBmb3IgKHZhciByb3VuZCA9IDA7IHJvdW5kIDwgMTY7IHJvdW5kKyspIHtcblx0ICAgICAgICAgICAgICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgICAgICAgICAgICAgdmFyIHN1YktleSA9IHN1YktleXNbcm91bmRdO1xuXHQgICAgICAgICAgICAgICAgdmFyIGxCbG9jayA9IHRoaXMuX2xCbG9jaztcblx0ICAgICAgICAgICAgICAgIHZhciByQmxvY2sgPSB0aGlzLl9yQmxvY2s7XG5cblx0ICAgICAgICAgICAgICAgIC8vIEZlaXN0ZWwgZnVuY3Rpb25cblx0ICAgICAgICAgICAgICAgIHZhciBmID0gMDtcblx0ICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgODsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgZiB8PSBTQk9YX1BbaV1bKChyQmxvY2sgXiBzdWJLZXlbaV0pICYgU0JPWF9NQVNLW2ldKSA+Pj4gMF07XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICB0aGlzLl9sQmxvY2sgPSByQmxvY2s7XG5cdCAgICAgICAgICAgICAgICB0aGlzLl9yQmxvY2sgPSBsQmxvY2sgXiBmO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gVW5kbyBzd2FwIGZyb20gbGFzdCByb3VuZFxuXHQgICAgICAgICAgICB2YXIgdCA9IHRoaXMuX2xCbG9jaztcblx0ICAgICAgICAgICAgdGhpcy5fbEJsb2NrID0gdGhpcy5fckJsb2NrO1xuXHQgICAgICAgICAgICB0aGlzLl9yQmxvY2sgPSB0O1xuXG5cdCAgICAgICAgICAgIC8vIEZpbmFsIHBlcm11dGF0aW9uXG5cdCAgICAgICAgICAgIGV4Y2hhbmdlTFIuY2FsbCh0aGlzLCAxLCAgMHg1NTU1NTU1NSk7XG5cdCAgICAgICAgICAgIGV4Y2hhbmdlUkwuY2FsbCh0aGlzLCA4LCAgMHgwMGZmMDBmZik7XG5cdCAgICAgICAgICAgIGV4Y2hhbmdlUkwuY2FsbCh0aGlzLCAyLCAgMHgzMzMzMzMzMyk7XG5cdCAgICAgICAgICAgIGV4Y2hhbmdlTFIuY2FsbCh0aGlzLCAxNiwgMHgwMDAwZmZmZik7XG5cdCAgICAgICAgICAgIGV4Y2hhbmdlTFIuY2FsbCh0aGlzLCA0LCAgMHgwZjBmMGYwZik7XG5cblx0ICAgICAgICAgICAgLy8gU2V0IG91dHB1dFxuXHQgICAgICAgICAgICBNW29mZnNldF0gPSB0aGlzLl9sQmxvY2s7XG5cdCAgICAgICAgICAgIE1bb2Zmc2V0ICsgMV0gPSB0aGlzLl9yQmxvY2s7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIGtleVNpemU6IDY0LzMyLFxuXG5cdCAgICAgICAgaXZTaXplOiA2NC8zMixcblxuXHQgICAgICAgIGJsb2NrU2l6ZTogNjQvMzJcblx0ICAgIH0pO1xuXG5cdCAgICAvLyBTd2FwIGJpdHMgYWNyb3NzIHRoZSBsZWZ0IGFuZCByaWdodCB3b3Jkc1xuXHQgICAgZnVuY3Rpb24gZXhjaGFuZ2VMUihvZmZzZXQsIG1hc2spIHtcblx0ICAgICAgICB2YXIgdCA9ICgodGhpcy5fbEJsb2NrID4+PiBvZmZzZXQpIF4gdGhpcy5fckJsb2NrKSAmIG1hc2s7XG5cdCAgICAgICAgdGhpcy5fckJsb2NrIF49IHQ7XG5cdCAgICAgICAgdGhpcy5fbEJsb2NrIF49IHQgPDwgb2Zmc2V0O1xuXHQgICAgfVxuXG5cdCAgICBmdW5jdGlvbiBleGNoYW5nZVJMKG9mZnNldCwgbWFzaykge1xuXHQgICAgICAgIHZhciB0ID0gKCh0aGlzLl9yQmxvY2sgPj4+IG9mZnNldCkgXiB0aGlzLl9sQmxvY2spICYgbWFzaztcblx0ICAgICAgICB0aGlzLl9sQmxvY2sgXj0gdDtcblx0ICAgICAgICB0aGlzLl9yQmxvY2sgXj0gdCA8PCBvZmZzZXQ7XG5cdCAgICB9XG5cblx0ICAgIC8qKlxuXHQgICAgICogU2hvcnRjdXQgZnVuY3Rpb25zIHRvIHRoZSBjaXBoZXIncyBvYmplY3QgaW50ZXJmYWNlLlxuXHQgICAgICpcblx0ICAgICAqIEBleGFtcGxlXG5cdCAgICAgKlxuXHQgICAgICogICAgIHZhciBjaXBoZXJ0ZXh0ID0gQ3J5cHRvSlMuREVTLmVuY3J5cHQobWVzc2FnZSwga2V5LCBjZmcpO1xuXHQgICAgICogICAgIHZhciBwbGFpbnRleHQgID0gQ3J5cHRvSlMuREVTLmRlY3J5cHQoY2lwaGVydGV4dCwga2V5LCBjZmcpO1xuXHQgICAgICovXG5cdCAgICBDLkRFUyA9IEJsb2NrQ2lwaGVyLl9jcmVhdGVIZWxwZXIoREVTKTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBUcmlwbGUtREVTIGJsb2NrIGNpcGhlciBhbGdvcml0aG0uXG5cdCAgICAgKi9cblx0ICAgIHZhciBUcmlwbGVERVMgPSBDX2FsZ28uVHJpcGxlREVTID0gQmxvY2tDaXBoZXIuZXh0ZW5kKHtcblx0ICAgICAgICBfZG9SZXNldDogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAvLyBTaG9ydGN1dHNcblx0ICAgICAgICAgICAgdmFyIGtleSA9IHRoaXMuX2tleTtcblx0ICAgICAgICAgICAgdmFyIGtleVdvcmRzID0ga2V5LndvcmRzO1xuXHQgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGtleSBsZW5ndGggaXMgdmFsaWQgKDY0LCAxMjggb3IgPj0gMTkyIGJpdClcblx0ICAgICAgICAgICAgaWYgKGtleVdvcmRzLmxlbmd0aCAhPT0gMiAmJiBrZXlXb3Jkcy5sZW5ndGggIT09IDQgJiYga2V5V29yZHMubGVuZ3RoIDwgNikge1xuXHQgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGtleSBsZW5ndGggLSAzREVTIHJlcXVpcmVzIHRoZSBrZXkgbGVuZ3RoIHRvIGJlIDY0LCAxMjgsIDE5MiBvciA+MTkyLicpO1xuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgLy8gRXh0ZW5kIHRoZSBrZXkgYWNjb3JkaW5nIHRvIHRoZSBrZXlpbmcgb3B0aW9ucyBkZWZpbmVkIGluIDNERVMgc3RhbmRhcmRcblx0ICAgICAgICAgICAgdmFyIGtleTEgPSBrZXlXb3Jkcy5zbGljZSgwLCAyKTtcblx0ICAgICAgICAgICAgdmFyIGtleTIgPSBrZXlXb3Jkcy5sZW5ndGggPCA0ID8ga2V5V29yZHMuc2xpY2UoMCwgMikgOiBrZXlXb3Jkcy5zbGljZSgyLCA0KTtcblx0ICAgICAgICAgICAgdmFyIGtleTMgPSBrZXlXb3Jkcy5sZW5ndGggPCA2ID8ga2V5V29yZHMuc2xpY2UoMCwgMikgOiBrZXlXb3Jkcy5zbGljZSg0LCA2KTtcblxuXHQgICAgICAgICAgICAvLyBDcmVhdGUgREVTIGluc3RhbmNlc1xuXHQgICAgICAgICAgICB0aGlzLl9kZXMxID0gREVTLmNyZWF0ZUVuY3J5cHRvcihXb3JkQXJyYXkuY3JlYXRlKGtleTEpKTtcblx0ICAgICAgICAgICAgdGhpcy5fZGVzMiA9IERFUy5jcmVhdGVFbmNyeXB0b3IoV29yZEFycmF5LmNyZWF0ZShrZXkyKSk7XG5cdCAgICAgICAgICAgIHRoaXMuX2RlczMgPSBERVMuY3JlYXRlRW5jcnlwdG9yKFdvcmRBcnJheS5jcmVhdGUoa2V5MykpO1xuXHQgICAgICAgIH0sXG5cblx0ICAgICAgICBlbmNyeXB0QmxvY2s6IGZ1bmN0aW9uIChNLCBvZmZzZXQpIHtcblx0ICAgICAgICAgICAgdGhpcy5fZGVzMS5lbmNyeXB0QmxvY2soTSwgb2Zmc2V0KTtcblx0ICAgICAgICAgICAgdGhpcy5fZGVzMi5kZWNyeXB0QmxvY2soTSwgb2Zmc2V0KTtcblx0ICAgICAgICAgICAgdGhpcy5fZGVzMy5lbmNyeXB0QmxvY2soTSwgb2Zmc2V0KTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgZGVjcnlwdEJsb2NrOiBmdW5jdGlvbiAoTSwgb2Zmc2V0KSB7XG5cdCAgICAgICAgICAgIHRoaXMuX2RlczMuZGVjcnlwdEJsb2NrKE0sIG9mZnNldCk7XG5cdCAgICAgICAgICAgIHRoaXMuX2RlczIuZW5jcnlwdEJsb2NrKE0sIG9mZnNldCk7XG5cdCAgICAgICAgICAgIHRoaXMuX2RlczEuZGVjcnlwdEJsb2NrKE0sIG9mZnNldCk7XG5cdCAgICAgICAgfSxcblxuXHQgICAgICAgIGtleVNpemU6IDE5Mi8zMixcblxuXHQgICAgICAgIGl2U2l6ZTogNjQvMzIsXG5cblx0ICAgICAgICBibG9ja1NpemU6IDY0LzMyXG5cdCAgICB9KTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiBTaG9ydGN1dCBmdW5jdGlvbnMgdG8gdGhlIGNpcGhlcidzIG9iamVjdCBpbnRlcmZhY2UuXG5cdCAgICAgKlxuXHQgICAgICogQGV4YW1wbGVcblx0ICAgICAqXG5cdCAgICAgKiAgICAgdmFyIGNpcGhlcnRleHQgPSBDcnlwdG9KUy5UcmlwbGVERVMuZW5jcnlwdChtZXNzYWdlLCBrZXksIGNmZyk7XG5cdCAgICAgKiAgICAgdmFyIHBsYWludGV4dCAgPSBDcnlwdG9KUy5UcmlwbGVERVMuZGVjcnlwdChjaXBoZXJ0ZXh0LCBrZXksIGNmZyk7XG5cdCAgICAgKi9cblx0ICAgIEMuVHJpcGxlREVTID0gQmxvY2tDaXBoZXIuX2NyZWF0ZUhlbHBlcihUcmlwbGVERVMpO1xuXHR9KCkpO1xuXG5cblx0cmV0dXJuIENyeXB0b0pTLlRyaXBsZURFUztcblxufSkpOyIsIjsoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0Ly8gQ29tbW9uSlNcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCIuL2NvcmVcIikpO1xuXHR9XG5cdGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gQU1EXG5cdFx0ZGVmaW5lKFtcIi4vY29yZVwiXSwgZmFjdG9yeSk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0Ly8gR2xvYmFsIChicm93c2VyKVxuXHRcdGZhY3Rvcnkocm9vdC5DcnlwdG9KUyk7XG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKENyeXB0b0pTKSB7XG5cblx0KGZ1bmN0aW9uICh1bmRlZmluZWQpIHtcblx0ICAgIC8vIFNob3J0Y3V0c1xuXHQgICAgdmFyIEMgPSBDcnlwdG9KUztcblx0ICAgIHZhciBDX2xpYiA9IEMubGliO1xuXHQgICAgdmFyIEJhc2UgPSBDX2xpYi5CYXNlO1xuXHQgICAgdmFyIFgzMldvcmRBcnJheSA9IENfbGliLldvcmRBcnJheTtcblxuXHQgICAgLyoqXG5cdCAgICAgKiB4NjQgbmFtZXNwYWNlLlxuXHQgICAgICovXG5cdCAgICB2YXIgQ194NjQgPSBDLng2NCA9IHt9O1xuXG5cdCAgICAvKipcblx0ICAgICAqIEEgNjQtYml0IHdvcmQuXG5cdCAgICAgKi9cblx0ICAgIHZhciBYNjRXb3JkID0gQ194NjQuV29yZCA9IEJhc2UuZXh0ZW5kKHtcblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBJbml0aWFsaXplcyBhIG5ld2x5IGNyZWF0ZWQgNjQtYml0IHdvcmQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gaGlnaCBUaGUgaGlnaCAzMiBiaXRzLlxuXHQgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsb3cgVGhlIGxvdyAzMiBiaXRzLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgeDY0V29yZCA9IENyeXB0b0pTLng2NC5Xb3JkLmNyZWF0ZSgweDAwMDEwMjAzLCAweDA0MDUwNjA3KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICBpbml0OiBmdW5jdGlvbiAoaGlnaCwgbG93KSB7XG5cdCAgICAgICAgICAgIHRoaXMuaGlnaCA9IGhpZ2g7XG5cdCAgICAgICAgICAgIHRoaXMubG93ID0gbG93O1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIEJpdHdpc2UgTk9UcyB0aGlzIHdvcmQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtYNjRXb3JkfSBBIG5ldyB4NjQtV29yZCBvYmplY3QgYWZ0ZXIgbmVnYXRpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBuZWdhdGVkID0geDY0V29yZC5ub3QoKTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICAvLyBub3Q6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgLy8gdmFyIGhpZ2ggPSB+dGhpcy5oaWdoO1xuXHQgICAgICAgICAgICAvLyB2YXIgbG93ID0gfnRoaXMubG93O1xuXG5cdCAgICAgICAgICAgIC8vIHJldHVybiBYNjRXb3JkLmNyZWF0ZShoaWdoLCBsb3cpO1xuXHQgICAgICAgIC8vIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBCaXR3aXNlIEFORHMgdGhpcyB3b3JkIHdpdGggdGhlIHBhc3NlZCB3b3JkLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtYNjRXb3JkfSB3b3JkIFRoZSB4NjQtV29yZCB0byBBTkQgd2l0aCB0aGlzIHdvcmQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtYNjRXb3JkfSBBIG5ldyB4NjQtV29yZCBvYmplY3QgYWZ0ZXIgQU5EaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgYW5kZWQgPSB4NjRXb3JkLmFuZChhbm90aGVyWDY0V29yZCk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgLy8gYW5kOiBmdW5jdGlvbiAod29yZCkge1xuXHQgICAgICAgICAgICAvLyB2YXIgaGlnaCA9IHRoaXMuaGlnaCAmIHdvcmQuaGlnaDtcblx0ICAgICAgICAgICAgLy8gdmFyIGxvdyA9IHRoaXMubG93ICYgd29yZC5sb3c7XG5cblx0ICAgICAgICAgICAgLy8gcmV0dXJuIFg2NFdvcmQuY3JlYXRlKGhpZ2gsIGxvdyk7XG5cdCAgICAgICAgLy8gfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIEJpdHdpc2UgT1JzIHRoaXMgd29yZCB3aXRoIHRoZSBwYXNzZWQgd29yZC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7WDY0V29yZH0gd29yZCBUaGUgeDY0LVdvcmQgdG8gT1Igd2l0aCB0aGlzIHdvcmQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtYNjRXb3JkfSBBIG5ldyB4NjQtV29yZCBvYmplY3QgYWZ0ZXIgT1JpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBvcmVkID0geDY0V29yZC5vcihhbm90aGVyWDY0V29yZCk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgLy8gb3I6IGZ1bmN0aW9uICh3b3JkKSB7XG5cdCAgICAgICAgICAgIC8vIHZhciBoaWdoID0gdGhpcy5oaWdoIHwgd29yZC5oaWdoO1xuXHQgICAgICAgICAgICAvLyB2YXIgbG93ID0gdGhpcy5sb3cgfCB3b3JkLmxvdztcblxuXHQgICAgICAgICAgICAvLyByZXR1cm4gWDY0V29yZC5jcmVhdGUoaGlnaCwgbG93KTtcblx0ICAgICAgICAvLyB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQml0d2lzZSBYT1JzIHRoaXMgd29yZCB3aXRoIHRoZSBwYXNzZWQgd29yZC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7WDY0V29yZH0gd29yZCBUaGUgeDY0LVdvcmQgdG8gWE9SIHdpdGggdGhpcyB3b3JkLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7WDY0V29yZH0gQSBuZXcgeDY0LVdvcmQgb2JqZWN0IGFmdGVyIFhPUmluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIHhvcmVkID0geDY0V29yZC54b3IoYW5vdGhlclg2NFdvcmQpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIC8vIHhvcjogZnVuY3Rpb24gKHdvcmQpIHtcblx0ICAgICAgICAgICAgLy8gdmFyIGhpZ2ggPSB0aGlzLmhpZ2ggXiB3b3JkLmhpZ2g7XG5cdCAgICAgICAgICAgIC8vIHZhciBsb3cgPSB0aGlzLmxvdyBeIHdvcmQubG93O1xuXG5cdCAgICAgICAgICAgIC8vIHJldHVybiBYNjRXb3JkLmNyZWF0ZShoaWdoLCBsb3cpO1xuXHQgICAgICAgIC8vIH0sXG5cblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBTaGlmdHMgdGhpcyB3b3JkIG4gYml0cyB0byB0aGUgbGVmdC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgYml0cyB0byBzaGlmdC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge1g2NFdvcmR9IEEgbmV3IHg2NC1Xb3JkIG9iamVjdCBhZnRlciBzaGlmdGluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIHNoaWZ0ZWQgPSB4NjRXb3JkLnNoaWZ0TCgyNSk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgLy8gc2hpZnRMOiBmdW5jdGlvbiAobikge1xuXHQgICAgICAgICAgICAvLyBpZiAobiA8IDMyKSB7XG5cdCAgICAgICAgICAgICAgICAvLyB2YXIgaGlnaCA9ICh0aGlzLmhpZ2ggPDwgbikgfCAodGhpcy5sb3cgPj4+ICgzMiAtIG4pKTtcblx0ICAgICAgICAgICAgICAgIC8vIHZhciBsb3cgPSB0aGlzLmxvdyA8PCBuO1xuXHQgICAgICAgICAgICAvLyB9IGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgLy8gdmFyIGhpZ2ggPSB0aGlzLmxvdyA8PCAobiAtIDMyKTtcblx0ICAgICAgICAgICAgICAgIC8vIHZhciBsb3cgPSAwO1xuXHQgICAgICAgICAgICAvLyB9XG5cblx0ICAgICAgICAgICAgLy8gcmV0dXJuIFg2NFdvcmQuY3JlYXRlKGhpZ2gsIGxvdyk7XG5cdCAgICAgICAgLy8gfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIFNoaWZ0cyB0aGlzIHdvcmQgbiBiaXRzIHRvIHRoZSByaWdodC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgYml0cyB0byBzaGlmdC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEByZXR1cm4ge1g2NFdvcmR9IEEgbmV3IHg2NC1Xb3JkIG9iamVjdCBhZnRlciBzaGlmdGluZy5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBleGFtcGxlXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiAgICAgdmFyIHNoaWZ0ZWQgPSB4NjRXb3JkLnNoaWZ0Uig3KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICAvLyBzaGlmdFI6IGZ1bmN0aW9uIChuKSB7XG5cdCAgICAgICAgICAgIC8vIGlmIChuIDwgMzIpIHtcblx0ICAgICAgICAgICAgICAgIC8vIHZhciBsb3cgPSAodGhpcy5sb3cgPj4+IG4pIHwgKHRoaXMuaGlnaCA8PCAoMzIgLSBuKSk7XG5cdCAgICAgICAgICAgICAgICAvLyB2YXIgaGlnaCA9IHRoaXMuaGlnaCA+Pj4gbjtcblx0ICAgICAgICAgICAgLy8gfSBlbHNlIHtcblx0ICAgICAgICAgICAgICAgIC8vIHZhciBsb3cgPSB0aGlzLmhpZ2ggPj4+IChuIC0gMzIpO1xuXHQgICAgICAgICAgICAgICAgLy8gdmFyIGhpZ2ggPSAwO1xuXHQgICAgICAgICAgICAvLyB9XG5cblx0ICAgICAgICAgICAgLy8gcmV0dXJuIFg2NFdvcmQuY3JlYXRlKGhpZ2gsIGxvdyk7XG5cdCAgICAgICAgLy8gfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIFJvdGF0ZXMgdGhpcyB3b3JkIG4gYml0cyB0byB0aGUgbGVmdC5cblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgYml0cyB0byByb3RhdGUuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtYNjRXb3JkfSBBIG5ldyB4NjQtV29yZCBvYmplY3QgYWZ0ZXIgcm90YXRpbmcuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciByb3RhdGVkID0geDY0V29yZC5yb3RMKDI1KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICAvLyByb3RMOiBmdW5jdGlvbiAobikge1xuXHQgICAgICAgICAgICAvLyByZXR1cm4gdGhpcy5zaGlmdEwobikub3IodGhpcy5zaGlmdFIoNjQgLSBuKSk7XG5cdCAgICAgICAgLy8gfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIFJvdGF0ZXMgdGhpcyB3b3JkIG4gYml0cyB0byB0aGUgcmlnaHQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIGJpdHMgdG8gcm90YXRlLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7WDY0V29yZH0gQSBuZXcgeDY0LVdvcmQgb2JqZWN0IGFmdGVyIHJvdGF0aW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgcm90YXRlZCA9IHg2NFdvcmQucm90Uig3KTtcblx0ICAgICAgICAgKi9cblx0ICAgICAgICAvLyByb3RSOiBmdW5jdGlvbiAobikge1xuXHQgICAgICAgICAgICAvLyByZXR1cm4gdGhpcy5zaGlmdFIobikub3IodGhpcy5zaGlmdEwoNjQgLSBuKSk7XG5cdCAgICAgICAgLy8gfSxcblxuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIEFkZHMgdGhpcyB3b3JkIHdpdGggdGhlIHBhc3NlZCB3b3JkLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtYNjRXb3JkfSB3b3JkIFRoZSB4NjQtV29yZCB0byBhZGQgd2l0aCB0aGlzIHdvcmQuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAcmV0dXJuIHtYNjRXb3JkfSBBIG5ldyB4NjQtV29yZCBvYmplY3QgYWZ0ZXIgYWRkaW5nLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgYWRkZWQgPSB4NjRXb3JkLmFkZChhbm90aGVyWDY0V29yZCk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgLy8gYWRkOiBmdW5jdGlvbiAod29yZCkge1xuXHQgICAgICAgICAgICAvLyB2YXIgbG93ID0gKHRoaXMubG93ICsgd29yZC5sb3cpIHwgMDtcblx0ICAgICAgICAgICAgLy8gdmFyIGNhcnJ5ID0gKGxvdyA+Pj4gMCkgPCAodGhpcy5sb3cgPj4+IDApID8gMSA6IDA7XG5cdCAgICAgICAgICAgIC8vIHZhciBoaWdoID0gKHRoaXMuaGlnaCArIHdvcmQuaGlnaCArIGNhcnJ5KSB8IDA7XG5cblx0ICAgICAgICAgICAgLy8gcmV0dXJuIFg2NFdvcmQuY3JlYXRlKGhpZ2gsIGxvdyk7XG5cdCAgICAgICAgLy8gfVxuXHQgICAgfSk7XG5cblx0ICAgIC8qKlxuXHQgICAgICogQW4gYXJyYXkgb2YgNjQtYml0IHdvcmRzLlxuXHQgICAgICpcblx0ICAgICAqIEBwcm9wZXJ0eSB7QXJyYXl9IHdvcmRzIFRoZSBhcnJheSBvZiBDcnlwdG9KUy54NjQuV29yZCBvYmplY3RzLlxuXHQgICAgICogQHByb3BlcnR5IHtudW1iZXJ9IHNpZ0J5dGVzIFRoZSBudW1iZXIgb2Ygc2lnbmlmaWNhbnQgYnl0ZXMgaW4gdGhpcyB3b3JkIGFycmF5LlxuXHQgICAgICovXG5cdCAgICB2YXIgWDY0V29yZEFycmF5ID0gQ194NjQuV29yZEFycmF5ID0gQmFzZS5leHRlbmQoe1xuXHQgICAgICAgIC8qKlxuXHQgICAgICAgICAqIEluaXRpYWxpemVzIGEgbmV3bHkgY3JlYXRlZCB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHBhcmFtIHtBcnJheX0gd29yZHMgKE9wdGlvbmFsKSBBbiBhcnJheSBvZiBDcnlwdG9KUy54NjQuV29yZCBvYmplY3RzLlxuXHQgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzaWdCeXRlcyAoT3B0aW9uYWwpIFRoZSBudW1iZXIgb2Ygc2lnbmlmaWNhbnQgYnl0ZXMgaW4gdGhlIHdvcmRzLlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgd29yZEFycmF5ID0gQ3J5cHRvSlMueDY0LldvcmRBcnJheS5jcmVhdGUoKTtcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgd29yZEFycmF5ID0gQ3J5cHRvSlMueDY0LldvcmRBcnJheS5jcmVhdGUoW1xuXHQgICAgICAgICAqICAgICAgICAgQ3J5cHRvSlMueDY0LldvcmQuY3JlYXRlKDB4MDAwMTAyMDMsIDB4MDQwNTA2MDcpLFxuXHQgICAgICAgICAqICAgICAgICAgQ3J5cHRvSlMueDY0LldvcmQuY3JlYXRlKDB4MTgxOTFhMWIsIDB4MWMxZDFlMWYpXG5cdCAgICAgICAgICogICAgIF0pO1xuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciB3b3JkQXJyYXkgPSBDcnlwdG9KUy54NjQuV29yZEFycmF5LmNyZWF0ZShbXG5cdCAgICAgICAgICogICAgICAgICBDcnlwdG9KUy54NjQuV29yZC5jcmVhdGUoMHgwMDAxMDIwMywgMHgwNDA1MDYwNyksXG5cdCAgICAgICAgICogICAgICAgICBDcnlwdG9KUy54NjQuV29yZC5jcmVhdGUoMHgxODE5MWExYiwgMHgxYzFkMWUxZilcblx0ICAgICAgICAgKiAgICAgXSwgMTApO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGluaXQ6IGZ1bmN0aW9uICh3b3Jkcywgc2lnQnl0ZXMpIHtcblx0ICAgICAgICAgICAgd29yZHMgPSB0aGlzLndvcmRzID0gd29yZHMgfHwgW107XG5cblx0ICAgICAgICAgICAgaWYgKHNpZ0J5dGVzICE9IHVuZGVmaW5lZCkge1xuXHQgICAgICAgICAgICAgICAgdGhpcy5zaWdCeXRlcyA9IHNpZ0J5dGVzO1xuXHQgICAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgdGhpcy5zaWdCeXRlcyA9IHdvcmRzLmxlbmd0aCAqIDg7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ29udmVydHMgdGhpcyA2NC1iaXQgd29yZCBhcnJheSB0byBhIDMyLWJpdCB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7Q3J5cHRvSlMubGliLldvcmRBcnJheX0gVGhpcyB3b3JkIGFycmF5J3MgZGF0YSBhcyBhIDMyLWJpdCB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQGV4YW1wbGVcblx0ICAgICAgICAgKlxuXHQgICAgICAgICAqICAgICB2YXIgeDMyV29yZEFycmF5ID0geDY0V29yZEFycmF5LnRvWDMyKCk7XG5cdCAgICAgICAgICovXG5cdCAgICAgICAgdG9YMzI6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgLy8gU2hvcnRjdXRzXG5cdCAgICAgICAgICAgIHZhciB4NjRXb3JkcyA9IHRoaXMud29yZHM7XG5cdCAgICAgICAgICAgIHZhciB4NjRXb3Jkc0xlbmd0aCA9IHg2NFdvcmRzLmxlbmd0aDtcblxuXHQgICAgICAgICAgICAvLyBDb252ZXJ0XG5cdCAgICAgICAgICAgIHZhciB4MzJXb3JkcyA9IFtdO1xuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHg2NFdvcmRzTGVuZ3RoOyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIHZhciB4NjRXb3JkID0geDY0V29yZHNbaV07XG5cdCAgICAgICAgICAgICAgICB4MzJXb3Jkcy5wdXNoKHg2NFdvcmQuaGlnaCk7XG5cdCAgICAgICAgICAgICAgICB4MzJXb3Jkcy5wdXNoKHg2NFdvcmQubG93KTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIHJldHVybiBYMzJXb3JkQXJyYXkuY3JlYXRlKHgzMldvcmRzLCB0aGlzLnNpZ0J5dGVzKTtcblx0ICAgICAgICB9LFxuXG5cdCAgICAgICAgLyoqXG5cdCAgICAgICAgICogQ3JlYXRlcyBhIGNvcHkgb2YgdGhpcyB3b3JkIGFycmF5LlxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogQHJldHVybiB7WDY0V29yZEFycmF5fSBUaGUgY2xvbmUuXG5cdCAgICAgICAgICpcblx0ICAgICAgICAgKiBAZXhhbXBsZVxuXHQgICAgICAgICAqXG5cdCAgICAgICAgICogICAgIHZhciBjbG9uZSA9IHg2NFdvcmRBcnJheS5jbG9uZSgpO1xuXHQgICAgICAgICAqL1xuXHQgICAgICAgIGNsb25lOiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIHZhciBjbG9uZSA9IEJhc2UuY2xvbmUuY2FsbCh0aGlzKTtcblxuXHQgICAgICAgICAgICAvLyBDbG9uZSBcIndvcmRzXCIgYXJyYXlcblx0ICAgICAgICAgICAgdmFyIHdvcmRzID0gY2xvbmUud29yZHMgPSB0aGlzLndvcmRzLnNsaWNlKDApO1xuXG5cdCAgICAgICAgICAgIC8vIENsb25lIGVhY2ggWDY0V29yZCBvYmplY3Rcblx0ICAgICAgICAgICAgdmFyIHdvcmRzTGVuZ3RoID0gd29yZHMubGVuZ3RoO1xuXHQgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHdvcmRzTGVuZ3RoOyBpKyspIHtcblx0ICAgICAgICAgICAgICAgIHdvcmRzW2ldID0gd29yZHNbaV0uY2xvbmUoKTtcblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIHJldHVybiBjbG9uZTtcblx0ICAgICAgICB9XG5cdCAgICB9KTtcblx0fSgpKTtcblxuXG5cdHJldHVybiBDcnlwdG9KUztcblxufSkpOyIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5kcF9faW5wdXRfd3JhcHtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlO2JveC1zaXppbmc6dW5zZXR9LmRwX19pbnB1dF93cmFwOmZvY3Vze2JvcmRlci1jb2xvcjp2YXIoLS1kcC1ib3JkZXItY29sb3ItaG92ZXIpO291dGxpbmU6bm9uZX0uZHBfX2lucHV0e2JhY2tncm91bmQtY29sb3I6dmFyKC0tZHAtYmFja2dyb3VuZC1jb2xvcik7Ym9yZGVyLXJhZGl1czp2YXIoLS1kcC1ib3JkZXItcmFkaXVzKTtmb250LWZhbWlseTp2YXIoLS1kcC1mb250LWZhbWlseSk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1kcC1ib3JkZXItY29sb3IpO291dGxpbmU6bm9uZTt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuMnMgY3ViaWMtYmV6aWVyKDAuNjQ1LCAwLjA0NSwgMC4zNTUsIDEpO3dpZHRoOjEwMCU7Zm9udC1zaXplOnZhcigtLWRwLWZvbnQtc2l6ZSk7bGluZS1oZWlnaHQ6Y2FsYyh2YXIoLS1kcC1mb250LXNpemUpKjEuNSk7cGFkZGluZzp2YXIoLS1kcC1pbnB1dC1wYWRkaW5nKTtjb2xvcjp2YXIoLS1kcC10ZXh0LWNvbG9yKTtib3gtc2l6aW5nOmJvcmRlci1ib3h9LmRwX19pbnB1dDo6LW1vei1wbGFjZWhvbGRlcntvcGFjaXR5Oi43fS5kcF9faW5wdXQ6OnBsYWNlaG9sZGVye29wYWNpdHk6Ljd9LmRwX19pbnB1dDpob3Zlcntib3JkZXItY29sb3I6dmFyKC0tZHAtYm9yZGVyLWNvbG9yLWhvdmVyKX0uZHBfX2lucHV0X3JlZ3tjYXJldC1jb2xvcjpyZ2JhKDAsMCwwLDApfS5kcF9faW5wdXRfZm9jdXN7Ym9yZGVyLWNvbG9yOnZhcigtLWRwLWJvcmRlci1jb2xvci1ob3Zlcil9LmRwX19kaXNhYmxlZHtiYWNrZ3JvdW5kOnZhcigtLWRwLWRpc2FibGVkLWNvbG9yKX0uZHBfX2Rpc2FibGVkOjotbW96LXBsYWNlaG9sZGVye2NvbG9yOnZhcigtLWRwLWRpc2FibGVkLWNvbG9yLXRleHQpfS5kcF9fZGlzYWJsZWQ6OnBsYWNlaG9sZGVye2NvbG9yOnZhcigtLWRwLWRpc2FibGVkLWNvbG9yLXRleHQpfS5kcF9faW5wdXRfaWNvbnN7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6dmFyKC0tZHAtZm9udC1zaXplKTtoZWlnaHQ6dmFyKC0tZHAtZm9udC1zaXplKTtzdHJva2Utd2lkdGg6MDtmb250LXNpemU6dmFyKC0tZHAtZm9udC1zaXplKTtsaW5lLWhlaWdodDpjYWxjKHZhcigtLWRwLWZvbnQtc2l6ZSkqMS41KTtwYWRkaW5nOjZweCAxMnB4O2NvbG9yOnZhcigtLWRwLWljb24tY29sb3IpO2JveC1zaXppbmc6Y29udGVudC1ib3h9LmRwX19pbnB1dF9pY29ue2N1cnNvcjpwb2ludGVyO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7bGVmdDowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpO2NvbG9yOnZhcigtLWRwLWljb24tY29sb3IpfS5kcF9fY2xlYXJfaWNvbntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO3JpZ2h0OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7Y3Vyc29yOnBvaW50ZXI7Y29sb3I6dmFyKC0tZHAtaWNvbi1jb2xvcil9LmRwX19pbnB1dF9pY29uX3BhZHtwYWRkaW5nLWxlZnQ6dmFyKC0tZHAtaW5wdXQtaWNvbi1wYWRkaW5nKX0uZHBfX2lucHV0X3ZhbGlke2JveC1zaGFkb3c6MCAwIHZhcigtLWRwLWJvcmRlci1yYWRpdXMpIHZhcigtLWRwLXN1Y2Nlc3MtY29sb3IpO2JvcmRlci1jb2xvcjp2YXIoLS1kcC1zdWNjZXNzLWNvbG9yKX0uZHBfX2lucHV0X3ZhbGlkOmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1kcC1zdWNjZXNzLWNvbG9yKX0uZHBfX2lucHV0X2ludmFsaWR7Ym94LXNoYWRvdzowIDAgdmFyKC0tZHAtYm9yZGVyLXJhZGl1cykgdmFyKC0tZHAtZGFuZ2VyLWNvbG9yKTtib3JkZXItY29sb3I6dmFyKC0tZHAtZGFuZ2VyLWNvbG9yKX0uZHBfX2lucHV0X2ludmFsaWQ6aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWRwLWRhbmdlci1jb2xvcil9LmRwX19tZW51e3Bvc2l0aW9uOmFic29sdXRlO2JhY2tncm91bmQ6dmFyKC0tZHAtYmFja2dyb3VuZC1jb2xvcik7Ym9yZGVyLXJhZGl1czp2YXIoLS1kcC1ib3JkZXItcmFkaXVzKTttaW4td2lkdGg6dmFyKC0tZHAtbWVudS1taW4td2lkdGgpO2ZvbnQtZmFtaWx5OnZhcigtLWRwLWZvbnQtZmFtaWx5KTtmb250LXNpemU6dmFyKC0tZHAtZm9udC1zaXplKTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1kcC1tZW51LWJvcmRlci1jb2xvcik7Ym94LXNpemluZzpib3JkZXItYm94fS5kcF9fbWVudTo6YWZ0ZXJ7Ym94LXNpemluZzpib3JkZXItYm94fS5kcF9fbWVudTo6YmVmb3Jle2JveC1zaXppbmc6Ym9yZGVyLWJveH0uZHBfX21lbnU6Zm9jdXN7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1kcC1tZW51LWJvcmRlci1jb2xvcik7b3V0bGluZTpub25lfS5kcF9fbWVudV9pbm5lcntwYWRkaW5nOnZhcigtLWRwLW1lbnUtcGFkZGluZyl9LmRwX19tZW51X2luZGV4e3otaW5kZXg6OTk5OTl9LmRwX19tZW51X3JlYWRvbmx5LC5kcF9fbWVudV9kaXNhYmxlZHtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowO3otaW5kZXg6MX0uZHBfX21lbnVfZGlzYWJsZWR7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC41KTtjdXJzb3I6bm90LWFsbG93ZWR9LmRwX19tZW51X3JlYWRvbmx5e2JhY2tncm91bmQ6cmdiYSgwLDAsMCwwKTtjdXJzb3I6ZGVmYXVsdH0uZHBfX2Fycm93X3RvcHtsZWZ0OjUwJTt0b3A6LTFweDtoZWlnaHQ6MTJweDt3aWR0aDoxMnB4O2JhY2tncm91bmQtY29sb3I6dmFyKC0tZHAtYmFja2dyb3VuZC1jb2xvcik7cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkIHZhcigtLWRwLW1lbnUtYm9yZGVyLWNvbG9yKTtib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1kcC1tZW51LWJvcmRlci1jb2xvcik7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLCAtNTAlKSByb3RhdGUoNDVkZWcpfS5kcF9fYXJyb3dfYm90dG9te2xlZnQ6NTAlO2JvdHRvbTotMXB4O2hlaWdodDoxMnB4O3dpZHRoOjEycHg7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1kcC1iYWNrZ3JvdW5kLWNvbG9yKTtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmlnaHQ6MXB4IHNvbGlkIHZhcigtLWRwLW1lbnUtYm9yZGVyLWNvbG9yKTtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1kcC1tZW51LWJvcmRlci1jb2xvcik7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLCA1MCUpIHJvdGF0ZSg0NWRlZyl9LmRwX19hY3Rpb25fZXh0cmF7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZzoycHggMH0uZHBfX3ByZXNldF9yYW5nZXN7cGFkZGluZzo1cHg7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCB2YXIoLS1kcC1ib3JkZXItY29sb3IpfS5kcF9fc2lkZWJhcl9sZWZ0e3BhZGRpbmc6NXB4O2JvcmRlci1yaWdodDoxcHggc29saWQgdmFyKC0tZHAtYm9yZGVyLWNvbG9yKX0uZHBfX3NpZGViYXJfcmlnaHR7cGFkZGluZzo1cHg7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkIHZhcigtLWRwLWJvcmRlci1jb2xvcil9LmRwX19wcmVzZXRfcmFuZ2V7cGFkZGluZzo1cHg7ZGlzcGxheTpibG9jazt3aGl0ZS1zcGFjZTpub3dyYXA7Y29sb3I6dmFyKC0tZHAtdGV4dC1jb2xvcik7Ym9yZGVyLXJhZGl1czp2YXIoLS1kcC1ib3JkZXItcmFkaXVzKTt0cmFuc2l0aW9uOnZhcigtLWRwLWNvbW1vbi10cmFuc2l0aW9uKX0uZHBfX3ByZXNldF9yYW5nZTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWRwLWhvdmVyLWNvbG9yKTtjdXJzb3I6cG9pbnRlcn0uZHBfX21lbnVfY29udGVudF93cmFwcGVye2Rpc3BsYXk6ZmxleH0uZHBfX2NhbGVuZGFyX2hlYWRlcntwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7Y29sb3I6dmFyKC0tZHAtdGV4dC1jb2xvcik7d2hpdGUtc3BhY2U6bm93cmFwO2ZvbnQtd2VpZ2h0OmJvbGR9LmRwX19jYWxlbmRhcl9oZWFkZXJfaXRlbXt0ZXh0LWFsaWduOmNlbnRlcjtmbGV4LWdyb3c6MTtoZWlnaHQ6dmFyKC0tZHAtY2VsbC1zaXplKTtwYWRkaW5nOnZhcigtLWRwLWNlbGwtcGFkZGluZyk7d2lkdGg6dmFyKC0tZHAtY2VsbC1zaXplKTtib3gtc2l6aW5nOmJvcmRlci1ib3h9LmRwX19jYWxlbmRhcl9yb3d7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO21hcmdpbjp2YXIoLS1kcC1yb3ctbWFyaW5nKX0uZHBfX2NhbGVuZGFyX2l0ZW17dGV4dC1hbGlnbjpjZW50ZXI7ZmxleC1ncm93OjE7Ym94LXNpemluZzpib3JkZXItYm94O2NvbG9yOnZhcigtLWRwLXRleHQtY29sb3IpfS5kcF9fY2FsZW5kYXJ7cG9zaXRpb246cmVsYXRpdmV9LmRwX19jYWxlbmRhcl9oZWFkZXJfY2VsbHtib3JkZXItYm90dG9tOnRoaW4gc29saWQgdmFyKC0tZHAtYm9yZGVyLWNvbG9yKTtwYWRkaW5nOnZhcigtLWRwLWNhbGVuZGFyLWhlYWRlci1jZWxsLXBhZGRpbmcpfS5kcF9fY2VsbF9pbm5lcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO3RleHQtYWxpZ246Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Ym9yZGVyLXJhZGl1czp2YXIoLS1kcC1jZWxsLWJvcmRlci1yYWRpdXMpO2hlaWdodDp2YXIoLS1kcC1jZWxsLXNpemUpO3BhZGRpbmc6dmFyKC0tZHAtY2VsbC1wYWRkaW5nKTt3aWR0aDp2YXIoLS1kcC1jZWxsLXNpemUpO2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwwKTtib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmV9LmRwX19jZWxsX2lubmVyOmhvdmVye3RyYW5zaXRpb246YWxsIC4yc30uZHBfX2NlbGxfYXV0b19yYW5nZV9zdGFydCwuZHBfX2RhdGVfaG92ZXJfc3RhcnQ6aG92ZXIsLmRwX19yYW5nZV9zdGFydHtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjB9LmRwX19jZWxsX2F1dG9fcmFuZ2VfZW5kLC5kcF9fZGF0ZV9ob3Zlcl9lbmQ6aG92ZXIsLmRwX19yYW5nZV9lbmR7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowO2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MH0uZHBfX3JhbmdlX2VuZCwuZHBfX3JhbmdlX3N0YXJ0LC5kcF9fYWN0aXZlX2RhdGV7YmFja2dyb3VuZDp2YXIoLS1kcC1wcmltYXJ5LWNvbG9yKTtjb2xvcjp2YXIoLS1kcC1wcmltYXJ5LXRleHQtY29sb3IpfS5kcF9fY2VsbF9hdXRvX3JhbmdlX2VuZCwuZHBfX2NlbGxfYXV0b19yYW5nZV9zdGFydHtib3JkZXItdG9wOjFweCBkYXNoZWQgdmFyKC0tZHAtcHJpbWFyeS1jb2xvcik7Ym9yZGVyLWJvdHRvbToxcHggZGFzaGVkIHZhcigtLWRwLXByaW1hcnktY29sb3IpfS5kcF9fZGF0ZV9ob3Zlcl9lbmQ6aG92ZXIsLmRwX19kYXRlX2hvdmVyX3N0YXJ0OmhvdmVyLC5kcF9fZGF0ZV9ob3Zlcjpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWRwLWhvdmVyLWNvbG9yKTtjb2xvcjp2YXIoLS1kcC1ob3Zlci10ZXh0LWNvbG9yKX0uZHBfX2NlbGxfb2Zmc2V0e2NvbG9yOnZhcigtLWRwLXNlY29uZGFyeS1jb2xvcil9LmRwX19jZWxsX2Rpc2FibGVke2NvbG9yOnZhcigtLWRwLXNlY29uZGFyeS1jb2xvcik7Y3Vyc29yOm5vdC1hbGxvd2VkfS5kcF9fcmFuZ2VfYmV0d2VlbntiYWNrZ3JvdW5kOnZhcigtLWRwLWhvdmVyLWNvbG9yKTtib3JkZXItcmFkaXVzOjA7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1kcC1ob3Zlci1jb2xvcil9LmRwX19yYW5nZV9iZXR3ZWVuX3dlZWt7YmFja2dyb3VuZDp2YXIoLS1kcC1wcmltYXJ5LWNvbG9yKTtjb2xvcjp2YXIoLS1kcC1wcmltYXJ5LXRleHQtY29sb3IpO2JvcmRlci1yYWRpdXM6MDtib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1kcC1wcmltYXJ5LWNvbG9yKTtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1kcC1wcmltYXJ5LWNvbG9yKX0uZHBfX3RvZGF5e2JvcmRlcjoxcHggc29saWQgdmFyKC0tZHAtcHJpbWFyeS1jb2xvcil9LmRwX193ZWVrX251bXtjb2xvcjp2YXIoLS1kcC1zZWNvbmRhcnktY29sb3IpO3RleHQtYWxpZ246Y2VudGVyfS5kcF9fY2VsbF9hdXRvX3Jhbmdle2JvcmRlci1yYWRpdXM6MDtib3JkZXItdG9wOjFweCBkYXNoZWQgdmFyKC0tZHAtcHJpbWFyeS1jb2xvcik7Ym9yZGVyLWJvdHRvbToxcHggZGFzaGVkIHZhcigtLWRwLXByaW1hcnktY29sb3IpfS5kcF9fY2VsbF9hdXRvX3JhbmdlX3N0YXJ0e2JvcmRlci1sZWZ0OjFweCBkYXNoZWQgdmFyKC0tZHAtcHJpbWFyeS1jb2xvcil9LmRwX19jZWxsX2F1dG9fcmFuZ2VfZW5ke2JvcmRlci1yaWdodDoxcHggZGFzaGVkIHZhcigtLWRwLXByaW1hcnktY29sb3IpfS5kcF9fY2FsZW5kYXJfaGVhZGVyX3NlcGFyYXRvcnt3aWR0aDoxMDAlO2hlaWdodDoxcHg7YmFja2dyb3VuZDp2YXIoLS1kcC1ib3JkZXItY29sb3IpfS5kcF9fY2FsZW5kYXJfbmV4dHttYXJnaW4tbGVmdDp2YXIoLS1kcC1tdWx0aS1jYWxlbmRhcnMtc3BhY2luZyl9LmRwX19tYXJrZXJfbGluZSwuZHBfX21hcmtlcl9kb3R7aGVpZ2h0OjVweDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWRwLW1hcmtlci1jb2xvcik7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjB9LmRwX19tYXJrZXJfZG90e3dpZHRoOjVweDtib3JkZXItcmFkaXVzOjUwJTtsZWZ0OjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKX0uZHBfX21hcmtlcl9saW5le3dpZHRoOjEwMCU7bGVmdDowfS5kcF9fbWFya2VyX3Rvb2x0aXB7cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czp2YXIoLS1kcC1ib3JkZXItcmFkaXVzKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWRwLXRvb2x0aXAtY29sb3IpO3BhZGRpbmc6NXB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tZHAtYm9yZGVyLWNvbG9yKTt6LWluZGV4Ojk5OTk5O2JveC1zaXppbmc6Ym9yZGVyLWJveDtjdXJzb3I6ZGVmYXVsdH0uZHBfX3Rvb2x0aXBfY29udGVudHt3aGl0ZS1zcGFjZTpub3dyYXB9LmRwX190b29sdGlwX3RleHR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtmbGV4LWZsb3c6cm93IG5vd3JhcDtjb2xvcjp2YXIoLS1kcC10ZXh0LWNvbG9yKX0uZHBfX3Rvb2x0aXBfbWFya3toZWlnaHQ6NXB4O3dpZHRoOjVweDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWRwLXRleHQtY29sb3IpO2NvbG9yOnZhcigtLWRwLXRleHQtY29sb3IpO21hcmdpbi1yaWdodDo1cHh9LmRwX19hcnJvd19ib3R0b21fdHB7Ym90dG9tOjA7aGVpZ2h0OjhweDt3aWR0aDo4cHg7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1kcC10b29sdGlwLWNvbG9yKTtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmlnaHQ6MXB4IHNvbGlkIHZhcigtLWRwLWJvcmRlci1jb2xvcik7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tZHAtYm9yZGVyLWNvbG9yKTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsIDUwJSkgcm90YXRlKDQ1ZGVnKX0uZHBfX2luc3RhbmNlX2NhbGVuZGFye3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCV9QG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAod2lkdGggPD0gNjAwcHgpey5kcF9fZmxleF9kaXNwbGF5e2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn19LmRwX19jZWxsX2hpZ2hsaWdodHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWRwLWhpZ2hsaWdodC1jb2xvcil9LmRwX19tb250aF95ZWFyX3Jvd3tkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2hlaWdodDp2YXIoLS1kcC1tb250aC15ZWFyLXJvdy1oZWlnaHQpO2NvbG9yOnZhcigtLWRwLXRleHQtY29sb3IpO2JveC1zaXppbmc6Ym9yZGVyLWJveH0uZHBfX2lubmVyX25hdntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Y3Vyc29yOnBvaW50ZXI7aGVpZ2h0OnZhcigtLWRwLW1vbnRoLXllYXItcm93LWJ1dHRvbi1zaXplKTt3aWR0aDp2YXIoLS1kcC1tb250aC15ZWFyLXJvdy1idXR0b24tc2l6ZSk7Y29sb3I6dmFyKC0tZHAtaWNvbi1jb2xvcik7dGV4dC1hbGlnbjpjZW50ZXI7Ym9yZGVyLXJhZGl1czo1MCV9LmRwX19pbm5lcl9uYXYgc3Zne2hlaWdodDp2YXIoLS1kcC1idXR0b24taWNvbi1oZWlnaHQpO3dpZHRoOnZhcigtLWRwLWJ1dHRvbi1pY29uLWhlaWdodCl9LmRwX19pbm5lcl9uYXY6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1kcC1ob3Zlci1jb2xvcik7Y29sb3I6dmFyKC0tZHAtaG92ZXItaWNvbi1jb2xvcil9LmRwX19pbm5lcl9uYXZfZGlzYWJsZWQ6aG92ZXIsLmRwX19pbm5lcl9uYXZfZGlzYWJsZWR7YmFja2dyb3VuZDp2YXIoLS1kcC1kaXNhYmxlZC1jb2xvcik7Y29sb3I6dmFyKC0tZHAtZGlzYWJsZWQtY29sb3ItdGV4dCk7Y3Vyc29yOm5vdC1hbGxvd2VkfS5kcF9fbW9udGhfeWVhcl9zZWxlY3R7d2lkdGg6NTAlO3RleHQtYWxpZ246Y2VudGVyO2N1cnNvcjpwb2ludGVyO2hlaWdodDp2YXIoLS1kcC1tb250aC15ZWFyLXJvdy1oZWlnaHQpO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtib3JkZXItcmFkaXVzOnZhcigtLWRwLWJvcmRlci1yYWRpdXMpO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjp2YXIoLS1kcC10ZXh0LWNvbG9yKX0uZHBfX21vbnRoX3llYXJfc2VsZWN0OmhvdmVye2JhY2tncm91bmQ6dmFyKC0tZHAtaG92ZXItY29sb3IpO2NvbG9yOnZhcigtLWRwLWhvdmVyLXRleHQtY29sb3IpfS5kcF9fbW9udGhfeWVhcl93cmFwe2Rpc3BsYXk6ZmxleDt3aWR0aDoxMDAlfS5kcF9feWVhcl9kaXNhYmxlX3NlbGVjdHtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kfS5kcF9fb3ZlcmxheXtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2JhY2tncm91bmQ6dmFyKC0tZHAtYmFja2dyb3VuZC1jb2xvcik7dG9wOjA7bGVmdDowO3RyYW5zaXRpb246b3BhY2l0eSAxcyBlYXNlLW91dDt6LWluZGV4Ojk5OTk5O2ZvbnQtZmFtaWx5OnZhcigtLWRwLWZvbnQtZmFtaWx5KTtjb2xvcjp2YXIoLS1kcC10ZXh0LWNvbG9yKTtib3gtc2l6aW5nOmJvcmRlci1ib3h9LmRwX19vdmVybGF5X2NvbnRhaW5lcjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2t7Ym94LXNoYWRvdzp2YXIoLS1kcC1zY3JvbGwtYmFyLWJhY2tncm91bmQpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tZHAtc2Nyb2xsLWJhci1iYWNrZ3JvdW5kKX0uZHBfX292ZXJsYXlfY29udGFpbmVyOjotd2Via2l0LXNjcm9sbGJhcnt3aWR0aDo1cHg7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1kcC1zY3JvbGwtYmFyLWJhY2tncm91bmQpfS5kcF9fb3ZlcmxheV9jb250YWluZXI6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1ie2JhY2tncm91bmQtY29sb3I6dmFyKC0tZHAtc2Nyb2xsLWJhci1jb2xvcik7Ym9yZGVyLXJhZGl1czoxMHB4fS5kcF9fb3ZlcmxheTpmb2N1c3tib3JkZXI6bm9uZTtvdXRsaW5lOm5vbmV9LmRwX19jb250YWluZXJfZmxleHtkaXNwbGF5OmZsZXh9LmRwX19jb250YWluZXJfYmxvY2t7ZGlzcGxheTpibG9ja30uZHBfX292ZXJsYXlfY29udGFpbmVye2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtvdmVyZmxvdy15OmF1dG99LmRwX190aW1lX3BpY2tlcl9vdmVybGF5X2NvbnRhaW5lcntoZWlnaHQ6MTAwJX0uZHBfX292ZXJsYXlfcm93e3BhZGRpbmc6MDtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTpmbGV4O21hcmdpbi1sZWZ0OmF1dG87bWFyZ2luLXJpZ2h0OmF1dG87ZmxleC13cmFwOndyYXA7bWF4LXdpZHRoOjEwMCU7d2lkdGg6MTAwJTthbGlnbi1pdGVtczpjZW50ZXJ9LmRwX19mbGV4X3Jvd3tmbGV4OjF9LmRwX19vdmVybGF5X2NvbHtib3gtc2l6aW5nOmJvcmRlci1ib3g7d2lkdGg6MzMlO3BhZGRpbmc6dmFyKC0tZHAtb3ZlcmxheS1jb2wtcGFkZGluZyk7d2hpdGUtc3BhY2U6bm93cmFwfS5kcF9fb3ZlcmxheV9jZWxsX3BhZHtwYWRkaW5nOnZhcigtLWRwLWNvbW1vbi1wYWRkaW5nKSAwfS5kcF9fb3ZlcmxheV9jZWxsX2FjdGl2ZXtjdXJzb3I6cG9pbnRlcjtib3JkZXItcmFkaXVzOnZhcigtLWRwLWJvcmRlci1yYWRpdXMpO3RleHQtYWxpZ246Y2VudGVyO2JhY2tncm91bmQ6dmFyKC0tZHAtcHJpbWFyeS1jb2xvcik7Y29sb3I6dmFyKC0tZHAtcHJpbWFyeS10ZXh0LWNvbG9yKX0uZHBfX292ZXJsYXlfY2VsbHtjdXJzb3I6cG9pbnRlcjtib3JkZXItcmFkaXVzOnZhcigtLWRwLWJvcmRlci1yYWRpdXMpO3RleHQtYWxpZ246Y2VudGVyfS5kcF9fb3ZlcmxheV9jZWxsOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tZHAtaG92ZXItY29sb3IpO2NvbG9yOnZhcigtLWRwLWhvdmVyLXRleHQtY29sb3IpfS5kcF9fY2VsbF9pbl9iZXR3ZWVue2JhY2tncm91bmQ6dmFyKC0tZHAtaG92ZXItY29sb3IpO2NvbG9yOnZhcigtLWRwLWhvdmVyLXRleHQtY29sb3IpfS5kcF9fb3Zlcl9hY3Rpb25fc2Nyb2xse3JpZ2h0OjVweDtib3gtc2l6aW5nOmJvcmRlci1ib3h9LmRwX19vdmVybGF5X2NlbGxfZGlzYWJsZWR7Y3Vyc29yOm5vdC1hbGxvd2VkO2JhY2tncm91bmQ6dmFyKC0tZHAtZGlzYWJsZWQtY29sb3IpfS5kcF9fb3ZlcmxheV9jZWxsX2Rpc2FibGVkOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tZHAtZGlzYWJsZWQtY29sb3IpfS5kcF9fb3ZlcmxheV9jZWxsX2FjdGl2ZV9kaXNhYmxlZHtjdXJzb3I6bm90LWFsbG93ZWQ7YmFja2dyb3VuZDp2YXIoLS1kcC1wcmltYXJ5LWRpc2FibGVkLWNvbG9yKX0uZHBfX292ZXJsYXlfY2VsbF9hY3RpdmVfZGlzYWJsZWQ6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1kcC1wcmltYXJ5LWRpc2FibGVkLWNvbG9yKX0uZHBfX21vbnRoX3BpY2tlcl9oZWFkZXJ7ZGlzcGxheTpmbGV4O3dpZHRoOjEwMCU7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2hlaWdodDp2YXIoLS1kcC1jZWxsLXNpemUpfS5kcF9fdGltZV9pbnB1dHt3aWR0aDoxMDAlO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7Zm9udC1mYW1pbHk6dmFyKC0tZHAtZm9udC1mYW1pbHkpO2NvbG9yOnZhcigtLWRwLXRleHQtY29sb3IpfS5kcF9fdGltZV9jb2xfcmVne3BhZGRpbmc6MCAyMHB4fS5kcF9fdGltZV9jb2xfcmVnX3dpdGhfYnV0dG9ue3BhZGRpbmc6MCAxNXB4fS5kcF9fdGltZV9jb2xfc2Vje3BhZGRpbmc6MCAxMHB4fS5kcF9fdGltZV9jb2xfc2VjX3dpdGhfYnV0dG9ue3BhZGRpbmc6MCA1cHh9LmRwX190aW1lX2NvbHtmb250LXNpemU6dmFyKC0tZHAtdGltZS1mb250LXNpemUpO3RleHQtYWxpZ246Y2VudGVyO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LmRwX190aW1lX2Rpc3BsYXl7Y3Vyc29yOnBvaW50ZXI7Y29sb3I6dmFyKC0tZHAtdGV4dC1jb2xvcik7Ym9yZGVyLXJhZGl1czp2YXIoLS1kcC1ib3JkZXItcmFkaXVzKTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7cGFkZGluZzowIDNweH0uZHBfX3RpbWVfZGlzcGxheTpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWRwLWhvdmVyLWNvbG9yKTtjb2xvcjp2YXIoLS1kcC1ob3Zlci10ZXh0LWNvbG9yKX0uZHBfX2luY19kZWNfYnV0dG9ue3BhZGRpbmc6NXB4O21hcmdpbjowO2hlaWdodDp2YXIoLS1kcC10aW1lLWluYy1kZWMtYnV0dG9uLXNpemUpO3dpZHRoOnZhcigtLWRwLXRpbWUtaW5jLWRlYy1idXR0b24tc2l6ZSk7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2N1cnNvcjpwb2ludGVyO2JvcmRlci1yYWRpdXM6NTAlO2NvbG9yOnZhcigtLWRwLWljb24tY29sb3IpO2JveC1zaXppbmc6Ym9yZGVyLWJveH0uZHBfX2luY19kZWNfYnV0dG9uIHN2Z3toZWlnaHQ6dmFyKC0tZHAtdGltZS1pbmMtZGVjLWJ1dHRvbi1zaXplKTt3aWR0aDp2YXIoLS1kcC10aW1lLWluYy1kZWMtYnV0dG9uLXNpemUpfS5kcF9faW5jX2RlY19idXR0b246aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1kcC1ob3Zlci1jb2xvcik7Y29sb3I6dmFyKC0tZHAtcHJpbWFyeS1jb2xvcil9LmRwX19pbmNfZGVjX2J1dHRvbl9kaXNhYmxlZDpob3ZlciwuZHBfX2luY19kZWNfYnV0dG9uX2Rpc2FibGVke2JhY2tncm91bmQ6dmFyKC0tZHAtZGlzYWJsZWQtY29sb3IpO2NvbG9yOnZhcigtLWRwLWRpc2FibGVkLWNvbG9yLXRleHQpO2N1cnNvcjpub3QtYWxsb3dlZH0uZHBfX3BtX2FtX2J1dHRvbntiYWNrZ3JvdW5kOnZhcigtLWRwLXByaW1hcnktY29sb3IpO2NvbG9yOnZhcigtLWRwLXByaW1hcnktdGV4dC1jb2xvcik7Ym9yZGVyOm5vbmU7cGFkZGluZzp2YXIoLS1kcC1jb21tb24tcGFkZGluZyk7Ym9yZGVyLXJhZGl1czp2YXIoLS1kcC1ib3JkZXItcmFkaXVzKTtjdXJzb3I6cG9pbnRlcn0uZHBfX2FjdGlvbl9yb3d7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjt3aWR0aDoxMDAlO3BhZGRpbmc6dmFyKC0tZHAtY29tbW9uLXBhZGRpbmcpO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjp2YXIoLS1kcC10ZXh0LWNvbG9yKTtmbGV4LWZsb3c6cm93IG5vd3JhcH0uZHBfX2FjdGlvbl9yb3cgc3Zne2hlaWdodDp2YXIoLS1kcC1idXR0b24taWNvbi1oZWlnaHQpO3dpZHRoOmF1dG99LmRwX19zZWxlY3Rpb25fcHJldmlld3tkaXNwbGF5OmJsb2NrO2NvbG9yOnZhcigtLWRwLXRleHQtY29sb3IpO2ZvbnQtc2l6ZTp2YXIoLS1kcC1wcmV2aWV3LWZvbnQtc2l6ZSk7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS5kcF9fYWN0aW9uX2J1dHRvbnN7ZGlzcGxheTpmbGV4O2ZsZXg6MDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO21hcmdpbi1sZWZ0OmF1dG99LmRwX19hY3Rpb25fYnV0dG9ue2JhY2tncm91bmQ6cmdiYSgwLDAsMCwwKTtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMCwwLDAsMCk7cGFkZGluZzp2YXIoLS1kcC1hY3Rpb24tYnV0dG9ucy1wYWRkaW5nKTtsaW5lLWhlaWdodDppbml0aWFsO21hcmdpbi1sZWZ0OjNweDtoZWlnaHQ6dmFyKC0tZHAtYWN0aW9uLWJ1dHRvbi1oZWlnaHQpO2N1cnNvcjpwb2ludGVyO2JvcmRlci1yYWRpdXM6dmFyKC0tZHAtYm9yZGVyLXJhZGl1cyl9LmRwX19hY3Rpb25fc2VsZWN0e2JhY2tncm91bmQ6dmFyKC0tZHAtcHJpbWFyeS1jb2xvcik7Y29sb3I6dmFyKC0tZHAtcHJpbWFyeS10ZXh0LWNvbG9yKX0uZHBfX2FjdGlvbl9zZWxlY3Q6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1kcC1wcmltYXJ5LWNvbG9yKTt0cmFuc2l0aW9uOnZhcigtLWRwLWFjdGlvbi1yb3ctdHJhbnN0aW9uKX0uZHBfX2FjdGlvbl9zZWxlY3Q6ZGlzYWJsZWR7YmFja2dyb3VuZDp2YXIoLS1kcC1wcmltYXJ5LWRpc2FibGVkLWNvbG9yKTtjdXJzb3I6bm90LWFsbG93ZWR9LmRwX19hY3Rpb25fY2FuY2Vse2NvbG9yOnZhcigtLWRwLXRleHQtY29sb3IpO2JvcmRlcjoxcHggc29saWQgdmFyKC0tZHAtYm9yZGVyLWNvbG9yKX0uZHBfX2FjdGlvbl9jYW5jZWw6aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWRwLXByaW1hcnktY29sb3IpO3RyYW5zaXRpb246dmFyKC0tZHAtYWN0aW9uLXJvdy10cmFuc3Rpb24pfTpyb290ey0tZHAtY29tbW9uLXRyYW5zaXRpb246IGFsbCAwLjFzIGVhc2UtaW47LS1kcC1tZW51LXBhZGRpbmc6IDZweCA4cHg7LS1kcC1hbmltYXRpb24tZHVyYXRpb246IDAuMXM7LS1kcC1tZW51LWFwcGVhci10cmFuc2l0aW9uLXRpbWluZzogY3ViaWMtYmV6aWVyKC40LCAwLCAxLCAxKTstLWRwLXRyYW5zaXRpb24tdGltaW5nOiBlYXNlLW91dDstLWRwLWFjdGlvbi1yb3ctdHJhbnN0aW9uOiBhbGwgMC4ycyBlYXNlLWluOy0tZHAtZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIGJsaW5rbWFjc3lzdGVtZm9udCwgXFxcIlNlZ29lIFVJXFxcIiwgcm9ib3RvLCBveHlnZW4sIHVidW50dSwgY2FudGFyZWxsLCBcXFwiT3BlbiBTYW5zXFxcIiwgXFxcIkhlbHZldGljYSBOZXVlXFxcIiwgc2Fucy1zZXJpZjstLWRwLWJvcmRlci1yYWRpdXM6IDRweDstLWRwLWNlbGwtYm9yZGVyLXJhZGl1czogNHB4Oy0tZHAtdHJhbnNpdGlvbi1sZW5ndGg6IDIycHg7LS1kcC10cmFuc2l0aW9uLXRpbWluZy1nZW5lcmFsOiAwLjFzOy0tZHAtYnV0dG9uLWhlaWdodDogMzVweDstLWRwLW1vbnRoLXllYXItcm93LWhlaWdodDogMzVweDstLWRwLW1vbnRoLXllYXItcm93LWJ1dHRvbi1zaXplOiAyNXB4Oy0tZHAtYnV0dG9uLWljb24taGVpZ2h0OiAyMHB4Oy0tZHAtY2FsZW5kYXItd3JhcC1wYWRkaW5nOiAwIDVweDstLWRwLWNlbGwtc2l6ZTogMzVweDstLWRwLWNlbGwtcGFkZGluZzogNXB4Oy0tZHAtY29tbW9uLXBhZGRpbmc6IDEwcHg7LS1kcC1pbnB1dC1pY29uLXBhZGRpbmc6IDM1cHg7LS1kcC1pbnB1dC1wYWRkaW5nOiA2cHggMzBweCA2cHggMTJweDstLWRwLW1lbnUtbWluLXdpZHRoOiAyNjBweDstLWRwLWFjdGlvbi1idXR0b25zLXBhZGRpbmc6IDFweCA2cHg7LS1kcC1yb3ctbWFyaW5nOiA1cHggMDstLWRwLWNhbGVuZGFyLWhlYWRlci1jZWxsLXBhZGRpbmc6IDAuNXJlbTstLWRwLW11bHRpLWNhbGVuZGFycy1zcGFjaW5nOiAxMHB4Oy0tZHAtb3ZlcmxheS1jb2wtcGFkZGluZzogM3B4Oy0tZHAtdGltZS1pbmMtZGVjLWJ1dHRvbi1zaXplOiAzMnB4Oy0tZHAtZm9udC1zaXplOiAxcmVtOy0tZHAtcHJldmlldy1mb250LXNpemU6IDAuOHJlbTstLWRwLXRpbWUtZm9udC1zaXplOiAycmVtOy0tZHAtYWN0aW9uLWJ1dHRvbi1oZWlnaHQ6IDIycHh9LmRwX190aGVtZV9kYXJrey0tZHAtYmFja2dyb3VuZC1jb2xvcjogIzIxMjEyMTstLWRwLXRleHQtY29sb3I6ICNmZmY7LS1kcC1ob3Zlci1jb2xvcjogIzQ4NDg0ODstLWRwLWhvdmVyLXRleHQtY29sb3I6ICNmZmY7LS1kcC1ob3Zlci1pY29uLWNvbG9yOiAjOTU5NTk1Oy0tZHAtcHJpbWFyeS1jb2xvcjogIzAwNWNiMjstLWRwLXByaW1hcnktZGlzYWJsZWQtY29sb3I6ICM2MWE4ZWE7LS1kcC1wcmltYXJ5LXRleHQtY29sb3I6ICNmZmY7LS1kcC1zZWNvbmRhcnktY29sb3I6ICNhOWE5YTk7LS1kcC1ib3JkZXItY29sb3I6ICMyZDJkMmQ7LS1kcC1tZW51LWJvcmRlci1jb2xvcjogIzJkMmQyZDstLWRwLWJvcmRlci1jb2xvci1ob3ZlcjogI2FhYWViNzstLWRwLWRpc2FibGVkLWNvbG9yOiAjNzM3MzczOy0tZHAtZGlzYWJsZWQtY29sb3ItdGV4dDogI2QwZDBkMDstLWRwLXNjcm9sbC1iYXItYmFja2dyb3VuZDogIzIxMjEyMTstLWRwLXNjcm9sbC1iYXItY29sb3I6ICM0ODQ4NDg7LS1kcC1zdWNjZXNzLWNvbG9yOiAjMDA3MDFhOy0tZHAtc3VjY2Vzcy1jb2xvci1kaXNhYmxlZDogIzQyOGY1OTstLWRwLWljb24tY29sb3I6ICM5NTk1OTU7LS1kcC1kYW5nZXItY29sb3I6ICNlNTM5MzU7LS1kcC1tYXJrZXItY29sb3I6ICNlNTM5MzU7LS1kcC10b29sdGlwLWNvbG9yOiAjM2UzZTNlOy0tZHAtaGlnaGxpZ2h0LWNvbG9yOiByZ2IoMCA5MiAxNzggLyAyMCUpfS5kcF9fdGhlbWVfbGlnaHR7LS1kcC1iYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOy0tZHAtdGV4dC1jb2xvcjogIzIxMjEyMTstLWRwLWhvdmVyLWNvbG9yOiAjZjNmM2YzOy0tZHAtaG92ZXItdGV4dC1jb2xvcjogIzIxMjEyMTstLWRwLWhvdmVyLWljb24tY29sb3I6ICM5NTk1OTU7LS1kcC1wcmltYXJ5LWNvbG9yOiAjMTk3NmQyOy0tZHAtcHJpbWFyeS1kaXNhYmxlZC1jb2xvcjogIzZiYWNlYTstLWRwLXByaW1hcnktdGV4dC1jb2xvcjogI2Y4ZjVmNTstLWRwLXNlY29uZGFyeS1jb2xvcjogI2MwYzRjYzstLWRwLWJvcmRlci1jb2xvcjogI2RkZDstLWRwLW1lbnUtYm9yZGVyLWNvbG9yOiAjZGRkOy0tZHAtYm9yZGVyLWNvbG9yLWhvdmVyOiAjYWFhZWI3Oy0tZHAtZGlzYWJsZWQtY29sb3I6ICNmNmY2ZjY7LS1kcC1zY3JvbGwtYmFyLWJhY2tncm91bmQ6ICNmM2YzZjM7LS1kcC1zY3JvbGwtYmFyLWNvbG9yOiAjOTU5NTk1Oy0tZHAtc3VjY2Vzcy1jb2xvcjogIzc2ZDI3NTstLWRwLXN1Y2Nlc3MtY29sb3ItZGlzYWJsZWQ6ICNhM2Q5YjE7LS1kcC1pY29uLWNvbG9yOiAjOTU5NTk1Oy0tZHAtZGFuZ2VyLWNvbG9yOiAjZmY2ZjYwOy0tZHAtbWFya2VyLWNvbG9yOiAjZmY2ZjYwOy0tZHAtdG9vbHRpcC1jb2xvcjogI2ZhZmFmYTstLWRwLWRpc2FibGVkLWNvbG9yLXRleHQ6ICM4ZThlOGU7LS1kcC1oaWdobGlnaHQtY29sb3I6IHJnYigyNSAxMTggMjEwIC8gMTAlKX0uZHBfX2J0bntiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOm5vbmU7Zm9udDppbmhlcml0O2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246dmFyKC0tZHAtY29tbW9uLXRyYW5zaXRpb24pO2xpbmUtaGVpZ2h0Om5vcm1hbH0uZHBfX21haW57Zm9udC1mYW1pbHk6dmFyKC0tZHAtZm9udC1mYW1pbHkpOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTAwJX0uZHBfX3BvaW50ZXJ7Y3Vyc29yOnBvaW50ZXJ9LmRwX19pY29ue3N0cm9rZTpjdXJyZW50Y29sb3I7ZmlsbDpjdXJyZW50Y29sb3J9LmRwX19idXR0b257d2lkdGg6MTAwJTt0ZXh0LWFsaWduOmNlbnRlcjtjb2xvcjp2YXIoLS1kcC1pY29uLWNvbG9yKTtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2FsaWduLWNvbnRlbnQ6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7cGFkZGluZzp2YXIoLS1kcC1jb21tb24tcGFkZGluZyk7Ym94LXNpemluZzpib3JkZXItYm94O2hlaWdodDp2YXIoLS1kcC1idXR0b24taGVpZ2h0KX0uZHBfX2J1dHRvbi5kcF9fb3ZlcmxheV9hY3Rpb257cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjB9LmRwX19idXR0b246aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1kcC1ob3Zlci1jb2xvcik7Y29sb3I6dmFyKC0tZHAtaG92ZXItaWNvbi1jb2xvcil9LmRwX19idXR0b24gc3Zne2hlaWdodDp2YXIoLS1kcC1idXR0b24taWNvbi1oZWlnaHQpO3dpZHRoOmF1dG99LmRwX19idXR0b25fYm90dG9te2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6dmFyKC0tZHAtYm9yZGVyLXJhZGl1cyk7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6dmFyKC0tZHAtYm9yZGVyLXJhZGl1cyl9LmRwX19mbGV4X2Rpc3BsYXl7ZGlzcGxheTpmbGV4fS5kcF9fZmxleF9kaXNwbGF5X3dpdGhfaW5wdXR7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9LmRwX19yZWxhdGl2ZXtwb3NpdGlvbjpyZWxhdGl2ZX0uY2FsZW5kYXItbmV4dC1lbnRlci1hY3RpdmUsLmNhbGVuZGFyLW5leHQtbGVhdmUtYWN0aXZlLC5jYWxlbmRhci1wcmV2LWVudGVyLWFjdGl2ZSwuY2FsZW5kYXItcHJldi1sZWF2ZS1hY3RpdmV7dHJhbnNpdGlvbjphbGwgdmFyKC0tZHAtdHJhbnNpdGlvbi10aW1pbmctZ2VuZXJhbCkgZWFzZS1vdXR9LmNhbGVuZGFyLW5leHQtZW50ZXItZnJvbXtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVgodmFyKC0tZHAtdHJhbnNpdGlvbi1sZW5ndGgpKX0uY2FsZW5kYXItbmV4dC1sZWF2ZS10b3tvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoY2FsYyh2YXIoLS1kcC10cmFuc2l0aW9uLWxlbmd0aCkgKiAtMSkpfS5jYWxlbmRhci1wcmV2LWVudGVyLWZyb217b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVYKGNhbGModmFyKC0tZHAtdHJhbnNpdGlvbi1sZW5ndGgpICogLTEpKX0uY2FsZW5kYXItcHJldi1sZWF2ZS10b3tvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVgodmFyKC0tZHAtdHJhbnNpdGlvbi1sZW5ndGgpKX0uZHAtc2xpZGUtdXAtZW50ZXItYWN0aXZlLC5kcC1zbGlkZS11cC1sZWF2ZS1hY3RpdmUsLmRwLXNsaWRlLWRvd24tZW50ZXItYWN0aXZlLC5kcC1zbGlkZS1kb3duLWxlYXZlLWFjdGl2ZXt0cmFuc2l0aW9uOmFsbCB2YXIoLS1kcC1hbmltYXRpb24tZHVyYXRpb24pIHZhcigtLWRwLXRyYW5zaXRpb24tdGltaW5nKX0uZHAtc2xpZGUtZG93bi1sZWF2ZS10bywuZHAtc2xpZGUtdXAtZW50ZXItZnJvbXtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkodmFyKC0tZHAtdHJhbnNpdGlvbi1sZW5ndGgpKX0uZHAtc2xpZGUtZG93bi1lbnRlci1mcm9tLC5kcC1zbGlkZS11cC1sZWF2ZS10b3tvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoY2FsYyh2YXIoLS1kcC10cmFuc2l0aW9uLWxlbmd0aCkgKiAtMSkpfS5kcF9fbWVudV90cmFuc2l0aW9uZWR7dHJhbnNpdGlvbjphbGwgdmFyKC0tZHAtYW5pbWF0aW9uLWR1cmF0aW9uKSB2YXIoLS1kcC1tZW51LWFwcGVhci10cmFuc2l0aW9uLXRpbWluZyl9LyojIHNvdXJjZU1hcHBpbmdVUkw9bWFpbi5jc3MubWFwICovXFxuXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0B2dWVwaWMvdnVlLWRhdGVwaWNrZXIvc3JjL1Z1ZURhdGVQaWNrZXIvc3R5bGUvY29tcG9uZW50cy9fRGF0ZXBpY2tlcklucHV0LnNjc3NcIixcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9AdnVlcGljL3Z1ZS1kYXRlcGlja2VyL3NyYy9WdWVEYXRlUGlja2VyL3N0eWxlL2NvbXBvbmVudHMvX0RhdGVwaWNrZXJNZW51LnNjc3NcIixcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9AdnVlcGljL3Z1ZS1kYXRlcGlja2VyL3NyYy9WdWVEYXRlUGlja2VyL3N0eWxlL2NvbXBvbmVudHMvX0NhbGVuZGFyLnNjc3NcIixcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9AdnVlcGljL3Z1ZS1kYXRlcGlja2VyL3NyYy9WdWVEYXRlUGlja2VyL3N0eWxlL2NvbXBvbmVudHMvX01vbnRoWWVhcklucHV0LnNjc3NcIixcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9AdnVlcGljL3Z1ZS1kYXRlcGlja2VyL3NyYy9WdWVEYXRlUGlja2VyL3N0eWxlL2NvbXBvbmVudHMvX1NlbGVjdGlvbkdyaWQuc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0B2dWVwaWMvdnVlLWRhdGVwaWNrZXIvc3JjL1Z1ZURhdGVQaWNrZXIvc3R5bGUvY29tcG9uZW50cy9fVGltZUlucHV0LnNjc3NcIixcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9AdnVlcGljL3Z1ZS1kYXRlcGlja2VyL3NyYy9WdWVEYXRlUGlja2VyL3N0eWxlL2NvbXBvbmVudHMvX0FjdGlvblJvdy5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQHZ1ZXBpYy92dWUtZGF0ZXBpY2tlci9zcmMvVnVlRGF0ZVBpY2tlci9zdHlsZS9tYWluLnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUEsZ0JBQ0UsaUJBQUEsQ0FDQSxVQUFBLENBQ0EsZ0JBQUEsQ0FFQSxzQkFDRSx5Q0FBQSxDQUNBLFlBQUEsQ0FJSixXQUNFLDJDQUFBLENBQ0EscUNBQUEsQ0FDQSxpQ0FBQSxDQUNBLHVDQUFBLENBQ0EsWUFBQSxDQUNBLGdFQUFBLENBQ0EsVUFBQSxDQUNBLDZCQUFBLENBQ0EseUNBQUEsQ0FDQSwrQkFBQSxDQUNBLDBCQUFBLENBQ0EscUJBQUEsQ0FFQSw2QkFDRSxVQUFBLENBREYsd0JBQ0UsVUFBQSxDQUdGLGlCQUNFLHlDQUFBLENBSUosZUFD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QSxDQUdGLDBCQUNFLFNBQUEsQ0FDQSxpREFBQSxDQUdGLHdCQUNFLFNBQUEsQ0FDQSw0REFBQSxDQUdGLDBCQUNFLFNBQUEsQ0FDQSw0REFBQSxDQUdGLHdCQUNFLFNBQUEsQ0FDQSxpREFBQSxDQUdGLDRHQUlFLHVFQUFBLENBR0YsZ0RBRUUsU0FBQSxDQUNBLGlEQUFBLENBR0YsZ0RBRUUsU0FBQSxDQUNBLDREQUFBLENBR0YsdUJBQ0UsbUZBQUEsQ0FBQSxtQ0FBQVwiLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5tdWx0aXNlbGVjdHthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZDp2YXIoLS1tcy1iZywjZmZmKTtib3JkZXI6dmFyKC0tbXMtYm9yZGVyLXdpZHRoLDFweCkgc29saWQgdmFyKC0tbXMtYm9yZGVyLWNvbG9yLCNkMWQ1ZGIpO2JvcmRlci1yYWRpdXM6dmFyKC0tbXMtcmFkaXVzLDRweCk7Ym94LXNpemluZzpib3JkZXItYm94O2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6ZmxleDtmb250LXNpemU6dmFyKC0tbXMtZm9udC1zaXplLDFyZW0pO2p1c3RpZnktY29udGVudDpmbGV4LWVuZDttYXJnaW46MCBhdXRvO21pbi1oZWlnaHQ6Y2FsYyh2YXIoLS1tcy1ib3JkZXItd2lkdGgsIDFweCkqMiArIHZhcigtLW1zLWZvbnQtc2l6ZSwgMXJlbSkqdmFyKC0tbXMtbGluZS1oZWlnaHQsIDEuMzc1KSArIHZhcigtLW1zLXB5LCAuNXJlbSkqMik7b3V0bGluZTpub25lO3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCV9Lm11bHRpc2VsZWN0LmlzLW9wZW57Ym9yZGVyLXJhZGl1czp2YXIoLS1tcy1yYWRpdXMsNHB4KSB2YXIoLS1tcy1yYWRpdXMsNHB4KSAwIDB9Lm11bHRpc2VsZWN0LmlzLW9wZW4tdG9we2JvcmRlci1yYWRpdXM6MCAwIHZhcigtLW1zLXJhZGl1cyw0cHgpIHZhcigtLW1zLXJhZGl1cyw0cHgpfS5tdWx0aXNlbGVjdC5pcy1kaXNhYmxlZHtiYWNrZ3JvdW5kOnZhcigtLW1zLWJnLWRpc2FibGVkLCNmM2Y0ZjYpO2N1cnNvcjpkZWZhdWx0fS5tdWx0aXNlbGVjdC5pcy1hY3RpdmV7Ym94LXNoYWRvdzowIDAgMCB2YXIoLS1tcy1yaW5nLXdpZHRoLDNweCkgdmFyKC0tbXMtcmluZy1jb2xvcixyZ2JhKDE2LDE4NSwxMjksLjE4OCkpfS5tdWx0aXNlbGVjdC1tdWx0aXBsZS1sYWJlbCwubXVsdGlzZWxlY3QtcGxhY2Vob2xkZXIsLm11bHRpc2VsZWN0LXNpbmdsZS1sYWJlbHthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTpmbGV4O2hlaWdodDoxMDAlO2xlZnQ6MDtsaW5lLWhlaWdodDp2YXIoLS1tcy1saW5lLWhlaWdodCwxLjM3NSk7bWF4LXdpZHRoOjEwMCU7cGFkZGluZy1sZWZ0OnZhcigtLW1zLXB4LC44NzVyZW0pO3BhZGRpbmctcmlnaHQ6Y2FsYygxLjI1cmVtICsgdmFyKC0tbXMtcHgsIC44NzVyZW0pKjMpO3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246YWJzb2x1dGU7dG9wOjB9Lm11bHRpc2VsZWN0LXBsYWNlaG9sZGVye2NvbG9yOnZhcigtLW1zLXBsYWNlaG9sZGVyLWNvbG9yLCM5Y2EzYWYpfS5tdWx0aXNlbGVjdC1zaW5nbGUtbGFiZWwtdGV4dHtkaXNwbGF5OmJsb2NrO21heC13aWR0aDoxMDAlO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcH0ubXVsdGlzZWxlY3Qtc2VhcmNoey13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZTtiYWNrZ3JvdW5kOnZhcigtLW1zLWJnLCNmZmYpO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6dmFyKC0tbXMtcmFkaXVzLDRweCk7Ym90dG9tOjA7Ym94LXNpemluZzpib3JkZXItYm94O2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7aGVpZ2h0OjEwMCU7bGVmdDowO291dGxpbmU6bm9uZTtwYWRkaW5nLWxlZnQ6dmFyKC0tbXMtcHgsLjg3NXJlbSk7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDt0b3A6MDt3aWR0aDoxMDAlfS5tdWx0aXNlbGVjdC1zZWFyY2g6Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sLm11bHRpc2VsZWN0LXNlYXJjaDo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiwubXVsdGlzZWxlY3Qtc2VhcmNoOjotd2Via2l0LXNlYXJjaC1yZXN1bHRzLWJ1dHRvbiwubXVsdGlzZWxlY3Qtc2VhcmNoOjotd2Via2l0LXNlYXJjaC1yZXN1bHRzLWRlY29yYXRpb257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9Lm11bHRpc2VsZWN0LXRhZ3N7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtmbGV4LWdyb3c6MTtmbGV4LXNocmluazoxO2ZsZXgtd3JhcDp3cmFwO21hcmdpbjp2YXIoLS1tcy10YWctbXksLjI1cmVtKSAwIDA7cGFkZGluZy1sZWZ0OnZhcigtLW1zLXB5LC41cmVtKX0ubXVsdGlzZWxlY3QtdGFne2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kOnZhcigtLW1zLXRhZy1iZywjMTBiOTgxKTtib3JkZXItcmFkaXVzOnZhcigtLW1zLXRhZy1yYWRpdXMsNHB4KTtjb2xvcjp2YXIoLS1tcy10YWctY29sb3IsI2ZmZik7ZGlzcGxheTpmbGV4O2ZvbnQtc2l6ZTp2YXIoLS1tcy10YWctZm9udC1zaXplLC44NzVyZW0pO2ZvbnQtd2VpZ2h0OnZhcigtLW1zLXRhZy1mb250LXdlaWdodCw2MDApO2xpbmUtaGVpZ2h0OnZhcigtLW1zLXRhZy1saW5lLWhlaWdodCwxLjI1cmVtKTttYXJnaW4tYm90dG9tOnZhcigtLW1zLXRhZy1teSwuMjVyZW0pO21hcmdpbi1yaWdodDp2YXIoLS1tcy10YWctbXgsLjI1cmVtKTtwYWRkaW5nOnZhcigtLW1zLXRhZy1weSwuMTI1cmVtKSAwIHZhcigtLW1zLXRhZy1weSwuMTI1cmVtKSB2YXIoLS1tcy10YWctcHgsLjVyZW0pO3doaXRlLXNwYWNlOm5vd3JhcH0ubXVsdGlzZWxlY3QtdGFnLmlzLWRpc2FibGVke2JhY2tncm91bmQ6dmFyKC0tbXMtdGFnLWJnLWRpc2FibGVkLCM5Y2EzYWYpO2NvbG9yOnZhcigtLW1zLXRhZy1jb2xvci1kaXNhYmxlZCwjZmZmKTtwYWRkaW5nLXJpZ2h0OnZhcigtLW1zLXRhZy1weCwuNXJlbSl9Lm11bHRpc2VsZWN0LXRhZy1yZW1vdmV7YWxpZ24taXRlbXM6Y2VudGVyO2JvcmRlci1yYWRpdXM6dmFyKC0tbXMtdGFnLXJlbW92ZS1yYWRpdXMsNHB4KTtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjttYXJnaW46dmFyKC0tbXMtdGFnLXJlbW92ZS1teSwwKSB2YXIoLS1tcy10YWctcmVtb3ZlLW14LC4xMjVyZW0pO3BhZGRpbmc6dmFyKC0tbXMtdGFnLXJlbW92ZS1weSwuMjVyZW0pIHZhcigtLW1zLXRhZy1yZW1vdmUtcHgsLjI1cmVtKX0ubXVsdGlzZWxlY3QtdGFnLXJlbW92ZTpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA2Myl9Lm11bHRpc2VsZWN0LXRhZy1yZW1vdmUtaWNvbntiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcjtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6Ljc1cmVtOy13ZWJraXQtbWFzay1pbWFnZTp1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB2aWV3Qm94PScwIDAgMzIwIDUxMicgZmlsbD0nY3VycmVudENvbG9yJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBkPSdtMjA3LjYgMjU2IDEwNy43Mi0xMDcuNzJjNi4yMy02LjIzIDYuMjMtMTYuMzQgMC0yMi41OGwtMjUuMDMtMjUuMDNjLTYuMjMtNi4yMy0xNi4zNC02LjIzLTIyLjU4IDBMMTYwIDIwOC40IDUyLjI4IDEwMC42OGMtNi4yMy02LjIzLTE2LjM0LTYuMjMtMjIuNTggMEw0LjY4IDEyNS43Yy02LjIzIDYuMjMtNi4yMyAxNi4zNCAwIDIyLjU4TDExMi40IDI1NiA0LjY4IDM2My43MmMtNi4yMyA2LjIzLTYuMjMgMTYuMzQgMCAyMi41OGwyNS4wMyAyNS4wM2M2LjIzIDYuMjMgMTYuMzQgNi4yMyAyMi41OCAwTDE2MCAzMDMuNmwxMDcuNzIgMTA3LjcyYzYuMjMgNi4yMyAxNi4zNCA2LjIzIDIyLjU4IDBsMjUuMDMtMjUuMDNjNi4yMy02LjIzIDYuMjMtMTYuMzQgMC0yMi41OEwyMDcuNiAyNTZ6Jy8lM0UlM0Mvc3ZnJTNFXFxcIik7bWFzay1pbWFnZTp1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB2aWV3Qm94PScwIDAgMzIwIDUxMicgZmlsbD0nY3VycmVudENvbG9yJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBkPSdtMjA3LjYgMjU2IDEwNy43Mi0xMDcuNzJjNi4yMy02LjIzIDYuMjMtMTYuMzQgMC0yMi41OGwtMjUuMDMtMjUuMDNjLTYuMjMtNi4yMy0xNi4zNC02LjIzLTIyLjU4IDBMMTYwIDIwOC40IDUyLjI4IDEwMC42OGMtNi4yMy02LjIzLTE2LjM0LTYuMjMtMjIuNTggMEw0LjY4IDEyNS43Yy02LjIzIDYuMjMtNi4yMyAxNi4zNCAwIDIyLjU4TDExMi40IDI1NiA0LjY4IDM2My43MmMtNi4yMyA2LjIzLTYuMjMgMTYuMzQgMCAyMi41OGwyNS4wMyAyNS4wM2M2LjIzIDYuMjMgMTYuMzQgNi4yMyAyMi41OCAwTDE2MCAzMDMuNmwxMDcuNzIgMTA3LjcyYzYuMjMgNi4yMyAxNi4zNCA2LjIzIDIyLjU4IDBsMjUuMDMtMjUuMDNjNi4yMy02LjIzIDYuMjMtMTYuMzQgMC0yMi41OEwyMDcuNiAyNTZ6Jy8lM0UlM0Mvc3ZnJTNFXFxcIik7LXdlYmtpdC1tYXNrLXBvc2l0aW9uOmNlbnRlcjttYXNrLXBvc2l0aW9uOmNlbnRlcjstd2Via2l0LW1hc2stcmVwZWF0Om5vLXJlcGVhdDttYXNrLXJlcGVhdDpuby1yZXBlYXQ7LXdlYmtpdC1tYXNrLXNpemU6Y29udGFpbjttYXNrLXNpemU6Y29udGFpbjtvcGFjaXR5Oi44O3dpZHRoOi43NXJlbX0ubXVsdGlzZWxlY3QtdGFncy1zZWFyY2gtd3JhcHBlcntkaXNwbGF5OmlubGluZS1ibG9jaztmbGV4LWdyb3c6MTtmbGV4LXNocmluazoxO2hlaWdodDoxMDAlO21hcmdpbjowIHZhcigtLW1zLXRhZy1teCw0cHgpIHZhcigtLW1zLXRhZy1teSw0cHgpO3Bvc2l0aW9uOnJlbGF0aXZlfS5tdWx0aXNlbGVjdC10YWdzLXNlYXJjaC1jb3B5e2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoxcHg7dmlzaWJpbGl0eTpoaWRkZW47d2hpdGUtc3BhY2U6cHJlLXdyYXA7d2lkdGg6MTAwJX0ubXVsdGlzZWxlY3QtdGFncy1zZWFyY2h7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7YXBwZWFyYW5jZTpub25lO2JvcmRlcjowO2JvdHRvbTowO2JveC1zaXppbmc6Ym9yZGVyLWJveDtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2xlZnQ6MDtvdXRsaW5lOm5vbmU7cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7dG9wOjA7d2lkdGg6MTAwJX0ubXVsdGlzZWxlY3QtdGFncy1zZWFyY2g6Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sLm11bHRpc2VsZWN0LXRhZ3Mtc2VhcmNoOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uLC5tdWx0aXNlbGVjdC10YWdzLXNlYXJjaDo6LXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1idXR0b24sLm11bHRpc2VsZWN0LXRhZ3Mtc2VhcmNoOjotd2Via2l0LXNlYXJjaC1yZXN1bHRzLWRlY29yYXRpb257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9Lm11bHRpc2VsZWN0LWluaWZpdGV7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21pbi1oZWlnaHQ6Y2FsYyh2YXIoLS1tcy1ib3JkZXItd2lkdGgsIDFweCkqMiArIHZhcigtLW1zLWZvbnQtc2l6ZSwgMXJlbSkqdmFyKC0tbXMtbGluZS1oZWlnaHQsIDEuMzc1KSArIHZhcigtLW1zLXB5LCAuNXJlbSkqMik7d2lkdGg6MTAwJX0ubXVsdGlzZWxlY3QtaW5pZml0ZS1zcGlubmVyLC5tdWx0aXNlbGVjdC1zcGlubmVyey13ZWJraXQtYW5pbWF0aW9uOm11bHRpc2VsZWN0LXNwaW4gMXMgbGluZWFyIGluZmluaXRlO2FuaW1hdGlvbjptdWx0aXNlbGVjdC1zcGluIDFzIGxpbmVhciBpbmZpbml0ZTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLW1zLXNwaW5uZXItY29sb3IsIzEwYjk4MSk7ZmxleC1ncm93OjA7ZmxleC1zaHJpbms6MDtoZWlnaHQ6MXJlbTstd2Via2l0LW1hc2staW1hZ2U6dXJsKFxcXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0Nzdmcgdmlld0JveD0nMCAwIDUxMiA1MTInIGZpbGw9J2N1cnJlbnRDb2xvcicgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggZD0nbTQ1Ni40MzMgMzcxLjcyLTI3Ljc5LTE2LjA0NWMtNy4xOTItNC4xNTItMTAuMDUyLTEzLjEzNi02LjQ4Ny0yMC42MzYgMjUuODItNTQuMzI4IDIzLjU2Ni0xMTguNjAyLTYuNzY4LTE3MS4wMy0zMC4yNjUtNTIuNTI5LTg0LjgwMi04Ni42MjEtMTQ0Ljc2LTkxLjQyNEMyNjIuMzUgNzEuOTIyIDI1NiA2NC45NTMgMjU2IDU2LjY0OVYyNC41NmMwLTkuMzEgNy45MTYtMTYuNjA5IDE3LjIwNC0xNS45NiA4MS43OTUgNS43MTcgMTU2LjQxMiA1MS45MDIgMTk3LjYxMSAxMjMuNDA4IDQxLjMwMSA3MS4zODUgNDMuOTkgMTU5LjA5NiA4LjA0MiAyMzIuNzkyLTQuMDgyIDguMzY5LTE0LjM2MSAxMS41NzUtMjIuNDI0IDYuOTJ6Jy8lM0UlM0Mvc3ZnJTNFXFxcIik7bWFzay1pbWFnZTp1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB2aWV3Qm94PScwIDAgNTEyIDUxMicgZmlsbD0nY3VycmVudENvbG9yJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBkPSdtNDU2LjQzMyAzNzEuNzItMjcuNzktMTYuMDQ1Yy03LjE5Mi00LjE1Mi0xMC4wNTItMTMuMTM2LTYuNDg3LTIwLjYzNiAyNS44Mi01NC4zMjggMjMuNTY2LTExOC42MDItNi43NjgtMTcxLjAzLTMwLjI2NS01Mi41MjktODQuODAyLTg2LjYyMS0xNDQuNzYtOTEuNDI0QzI2Mi4zNSA3MS45MjIgMjU2IDY0Ljk1MyAyNTYgNTYuNjQ5VjI0LjU2YzAtOS4zMSA3LjkxNi0xNi42MDkgMTcuMjA0LTE1Ljk2IDgxLjc5NSA1LjcxNyAxNTYuNDEyIDUxLjkwMiAxOTcuNjExIDEyMy40MDggNDEuMzAxIDcxLjM4NSA0My45OSAxNTkuMDk2IDguMDQyIDIzMi43OTItNC4wODIgOC4zNjktMTQuMzYxIDExLjU3NS0yMi40MjQgNi45MnonLyUzRSUzQy9zdmclM0VcXFwiKTstd2Via2l0LW1hc2stcG9zaXRpb246Y2VudGVyO21hc2stcG9zaXRpb246Y2VudGVyOy13ZWJraXQtbWFzay1yZXBlYXQ6bm8tcmVwZWF0O21hc2stcmVwZWF0Om5vLXJlcGVhdDstd2Via2l0LW1hc2stc2l6ZTpjb250YWluO21hc2stc2l6ZTpjb250YWluO3dpZHRoOjFyZW07ei1pbmRleDoxMH0ubXVsdGlzZWxlY3Qtc3Bpbm5lcnttYXJnaW46MCB2YXIoLS1tcy1weCwuODc1cmVtKSAwIDB9Lm11bHRpc2VsZWN0LWNsZWFye2Rpc3BsYXk6ZmxleDtmbGV4LWdyb3c6MDtmbGV4LXNocmluazowO29wYWNpdHk6MTtwYWRkaW5nOjAgdmFyKC0tbXMtcHgsLjg3NXJlbSkgMCAwO3Bvc2l0aW9uOnJlbGF0aXZlO3RyYW5zaXRpb246LjNzO3otaW5kZXg6MTB9Lm11bHRpc2VsZWN0LWNsZWFyOmhvdmVyIC5tdWx0aXNlbGVjdC1jbGVhci1pY29ue2JhY2tncm91bmQtY29sb3I6dmFyKC0tbXMtY2xlYXItY29sb3ItaG92ZXIsIzAwMCl9Lm11bHRpc2VsZWN0LWNsZWFyLWljb257YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1tcy1jbGVhci1jb2xvciwjOTk5KTtkaXNwbGF5OmlubGluZS1ibG9jazstd2Via2l0LW1hc2staW1hZ2U6dXJsKFxcXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0Nzdmcgdmlld0JveD0nMCAwIDMyMCA1MTInIGZpbGw9J2N1cnJlbnRDb2xvcicgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggZD0nbTIwNy42IDI1NiAxMDcuNzItMTA3LjcyYzYuMjMtNi4yMyA2LjIzLTE2LjM0IDAtMjIuNThsLTI1LjAzLTI1LjAzYy02LjIzLTYuMjMtMTYuMzQtNi4yMy0yMi41OCAwTDE2MCAyMDguNCA1Mi4yOCAxMDAuNjhjLTYuMjMtNi4yMy0xNi4zNC02LjIzLTIyLjU4IDBMNC42OCAxMjUuN2MtNi4yMyA2LjIzLTYuMjMgMTYuMzQgMCAyMi41OEwxMTIuNCAyNTYgNC42OCAzNjMuNzJjLTYuMjMgNi4yMy02LjIzIDE2LjM0IDAgMjIuNThsMjUuMDMgMjUuMDNjNi4yMyA2LjIzIDE2LjM0IDYuMjMgMjIuNTggMEwxNjAgMzAzLjZsMTA3LjcyIDEwNy43MmM2LjIzIDYuMjMgMTYuMzQgNi4yMyAyMi41OCAwbDI1LjAzLTI1LjAzYzYuMjMtNi4yMyA2LjIzLTE2LjM0IDAtMjIuNThMMjA3LjYgMjU2eicvJTNFJTNDL3N2ZyUzRVxcXCIpO21hc2staW1hZ2U6dXJsKFxcXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0Nzdmcgdmlld0JveD0nMCAwIDMyMCA1MTInIGZpbGw9J2N1cnJlbnRDb2xvcicgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggZD0nbTIwNy42IDI1NiAxMDcuNzItMTA3LjcyYzYuMjMtNi4yMyA2LjIzLTE2LjM0IDAtMjIuNThsLTI1LjAzLTI1LjAzYy02LjIzLTYuMjMtMTYuMzQtNi4yMy0yMi41OCAwTDE2MCAyMDguNCA1Mi4yOCAxMDAuNjhjLTYuMjMtNi4yMy0xNi4zNC02LjIzLTIyLjU4IDBMNC42OCAxMjUuN2MtNi4yMyA2LjIzLTYuMjMgMTYuMzQgMCAyMi41OEwxMTIuNCAyNTYgNC42OCAzNjMuNzJjLTYuMjMgNi4yMy02LjIzIDE2LjM0IDAgMjIuNThsMjUuMDMgMjUuMDNjNi4yMyA2LjIzIDE2LjM0IDYuMjMgMjIuNTggMEwxNjAgMzAzLjZsMTA3LjcyIDEwNy43MmM2LjIzIDYuMjMgMTYuMzQgNi4yMyAyMi41OCAwbDI1LjAzLTI1LjAzYzYuMjMtNi4yMyA2LjIzLTE2LjM0IDAtMjIuNThMMjA3LjYgMjU2eicvJTNFJTNDL3N2ZyUzRVxcXCIpO3RyYW5zaXRpb246LjNzfS5tdWx0aXNlbGVjdC1jYXJldCwubXVsdGlzZWxlY3QtY2xlYXItaWNvbntoZWlnaHQ6MS4xMjVyZW07LXdlYmtpdC1tYXNrLXBvc2l0aW9uOmNlbnRlcjttYXNrLXBvc2l0aW9uOmNlbnRlcjstd2Via2l0LW1hc2stcmVwZWF0Om5vLXJlcGVhdDttYXNrLXJlcGVhdDpuby1yZXBlYXQ7LXdlYmtpdC1tYXNrLXNpemU6Y29udGFpbjttYXNrLXNpemU6Y29udGFpbjt3aWR0aDouNjI1cmVtfS5tdWx0aXNlbGVjdC1jYXJldHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLW1zLWNhcmV0LWNvbG9yLCM5OTkpO2ZsZXgtZ3JvdzowO2ZsZXgtc2hyaW5rOjA7bWFyZ2luOjAgdmFyKC0tbXMtcHgsLjg3NXJlbSkgMCAwOy13ZWJraXQtbWFzay1pbWFnZTp1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB2aWV3Qm94PScwIDAgMzIwIDUxMicgZmlsbD0nY3VycmVudENvbG9yJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBkPSdNMzEuMyAxOTJoMjU3LjNjMTcuOCAwIDI2LjcgMjEuNSAxNC4xIDM0LjFMMTc0LjEgMzU0LjhjLTcuOCA3LjgtMjAuNSA3LjgtMjguMyAwTDE3LjIgMjI2LjFDNC42IDIxMy41IDEzLjUgMTkyIDMxLjMgMTkyeicvJTNFJTNDL3N2ZyUzRVxcXCIpO21hc2staW1hZ2U6dXJsKFxcXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0Nzdmcgdmlld0JveD0nMCAwIDMyMCA1MTInIGZpbGw9J2N1cnJlbnRDb2xvcicgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggZD0nTTMxLjMgMTkyaDI1Ny4zYzE3LjggMCAyNi43IDIxLjUgMTQuMSAzNC4xTDE3NC4xIDM1NC44Yy03LjggNy44LTIwLjUgNy44LTI4LjMgMEwxNy4yIDIyNi4xQzQuNiAyMTMuNSAxMy41IDE5MiAzMS4zIDE5MnonLyUzRSUzQy9zdmclM0VcXFwiKTtwb2ludGVyLWV2ZW50czpub25lO3Bvc2l0aW9uOnJlbGF0aXZlO3RyYW5zZm9ybTpyb3RhdGUoMGRlZyk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjNzO3otaW5kZXg6MTB9Lm11bHRpc2VsZWN0LWNhcmV0LmlzLW9wZW57cG9pbnRlci1ldmVudHM6YXV0bzt0cmFuc2Zvcm06cm90YXRlKDE4MGRlZyl9Lm11bHRpc2VsZWN0LWRyb3Bkb3duey13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNoO2JhY2tncm91bmQ6dmFyKC0tbXMtZHJvcGRvd24tYmcsI2ZmZik7Ym9yZGVyOnZhcigtLW1zLWRyb3Bkb3duLWJvcmRlci13aWR0aCwxcHgpIHNvbGlkIHZhcigtLW1zLWRyb3Bkb3duLWJvcmRlci1jb2xvciwjZDFkNWRiKTtib3JkZXItcmFkaXVzOjAgMCB2YXIoLS1tcy1kcm9wZG93bi1yYWRpdXMsNHB4KSB2YXIoLS1tcy1kcm9wZG93bi1yYWRpdXMsNHB4KTtib3R0b206MDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2xlZnQ6Y2FsYyh2YXIoLS1tcy1ib3JkZXItd2lkdGgsIDFweCkqLTEpO21hcmdpbi10b3A6Y2FsYyh2YXIoLS1tcy1ib3JkZXItd2lkdGgsIDFweCkqLTEpO21heC1oZWlnaHQ6MTVyZW07bWF4LWhlaWdodDp2YXIoLS1tcy1tYXgtaGVpZ2h0LDEwcmVtKTtvdXRsaW5lOm5vbmU7b3ZlcmZsb3cteTpzY3JvbGw7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6Y2FsYyh2YXIoLS1tcy1ib3JkZXItd2lkdGgsIDFweCkqLTEpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDEwMCUpO3otaW5kZXg6MTAwfS5tdWx0aXNlbGVjdC1kcm9wZG93bi5pcy10b3B7Ym9yZGVyLXJhZGl1czp2YXIoLS1tcy1kcm9wZG93bi1yYWRpdXMsNHB4KSB2YXIoLS1tcy1kcm9wZG93bi1yYWRpdXMsNHB4KSAwIDA7Ym90dG9tOmF1dG87dG9wOnZhcigtLW1zLWJvcmRlci13aWR0aCwxcHgpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMDAlKX0ubXVsdGlzZWxlY3QtZHJvcGRvd24uaXMtaGlkZGVue2Rpc3BsYXk6bm9uZX0ubXVsdGlzZWxlY3Qtb3B0aW9uc3tkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2xpc3Qtc3R5bGU6bm9uZTttYXJnaW46MDtwYWRkaW5nOjB9Lm11bHRpc2VsZWN0LWdyb3Vwe21hcmdpbjowO3BhZGRpbmc6MH0ubXVsdGlzZWxlY3QtZ3JvdXAtbGFiZWx7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQ6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtYmcsI2U1ZTdlYik7Ym94LXNpemluZzpib3JkZXItYm94O2NvbG9yOnZhcigtLW1zLWdyb3VwLWxhYmVsLWNvbG9yLCMzNzQxNTEpO2N1cnNvcjpkZWZhdWx0O2Rpc3BsYXk6ZmxleDtmb250LXNpemU6Ljg3NXJlbTtmb250LXdlaWdodDo2MDA7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQ7bGluZS1oZWlnaHQ6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtbGluZS1oZWlnaHQsMS4zNzUpO3BhZGRpbmc6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtcHksLjNyZW0pIHZhcigtLW1zLWdyb3VwLWxhYmVsLXB4LC43NXJlbSk7dGV4dC1hbGlnbjpsZWZ0O3RleHQtZGVjb3JhdGlvbjpub25lfS5tdWx0aXNlbGVjdC1ncm91cC1sYWJlbC5pcy1wb2ludGFibGV7Y3Vyc29yOnBvaW50ZXJ9Lm11bHRpc2VsZWN0LWdyb3VwLWxhYmVsLmlzLXBvaW50ZWR7YmFja2dyb3VuZDp2YXIoLS1tcy1ncm91cC1sYWJlbC1iZy1wb2ludGVkLCNkMWQ1ZGIpO2NvbG9yOnZhcigtLW1zLWdyb3VwLWxhYmVsLWNvbG9yLXBvaW50ZWQsIzM3NDE1MSl9Lm11bHRpc2VsZWN0LWdyb3VwLWxhYmVsLmlzLXNlbGVjdGVke2JhY2tncm91bmQ6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtYmctc2VsZWN0ZWQsIzA1OTY2OSk7Y29sb3I6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtY29sb3Itc2VsZWN0ZWQsI2ZmZil9Lm11bHRpc2VsZWN0LWdyb3VwLWxhYmVsLmlzLWRpc2FibGVke2JhY2tncm91bmQ6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtYmctZGlzYWJsZWQsI2YzZjRmNik7Y29sb3I6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtY29sb3ItZGlzYWJsZWQsI2QxZDVkYik7Y3Vyc29yOm5vdC1hbGxvd2VkfS5tdWx0aXNlbGVjdC1ncm91cC1sYWJlbC5pcy1zZWxlY3RlZC5pcy1wb2ludGVke2JhY2tncm91bmQ6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtYmctc2VsZWN0ZWQtcG9pbnRlZCwjMGM5ZTcwKTtjb2xvcjp2YXIoLS1tcy1ncm91cC1sYWJlbC1jb2xvci1zZWxlY3RlZC1wb2ludGVkLCNmZmYpfS5tdWx0aXNlbGVjdC1ncm91cC1sYWJlbC5pcy1zZWxlY3RlZC5pcy1kaXNhYmxlZHtiYWNrZ3JvdW5kOnZhcigtLW1zLWdyb3VwLWxhYmVsLWJnLXNlbGVjdGVkLWRpc2FibGVkLCM3NWNmYjEpO2NvbG9yOnZhcigtLW1zLWdyb3VwLWxhYmVsLWNvbG9yLXNlbGVjdGVkLWRpc2FibGVkLCNkMWZhZTUpfS5tdWx0aXNlbGVjdC1ncm91cC1vcHRpb25ze21hcmdpbjowO3BhZGRpbmc6MH0ubXVsdGlzZWxlY3Qtb3B0aW9ue2FsaWduLWl0ZW1zOmNlbnRlcjtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpmbGV4O2ZvbnQtc2l6ZTp2YXIoLS1tcy1vcHRpb24tZm9udC1zaXplLDFyZW0pO2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0O2xpbmUtaGVpZ2h0OnZhcigtLW1zLW9wdGlvbi1saW5lLWhlaWdodCwxLjM3NSk7cGFkZGluZzp2YXIoLS1tcy1vcHRpb24tcHksLjVyZW0pIHZhcigtLW1zLW9wdGlvbi1weCwuNzVyZW0pO3RleHQtYWxpZ246bGVmdDt0ZXh0LWRlY29yYXRpb246bm9uZX0ubXVsdGlzZWxlY3Qtb3B0aW9uLmlzLXBvaW50ZWR7YmFja2dyb3VuZDp2YXIoLS1tcy1vcHRpb24tYmctcG9pbnRlZCwjZjNmNGY2KTtjb2xvcjp2YXIoLS1tcy1vcHRpb24tY29sb3ItcG9pbnRlZCwjMWYyOTM3KX0ubXVsdGlzZWxlY3Qtb3B0aW9uLmlzLXNlbGVjdGVke2JhY2tncm91bmQ6dmFyKC0tbXMtb3B0aW9uLWJnLXNlbGVjdGVkLCMxMGI5ODEpO2NvbG9yOnZhcigtLW1zLW9wdGlvbi1jb2xvci1zZWxlY3RlZCwjZmZmKX0ubXVsdGlzZWxlY3Qtb3B0aW9uLmlzLWRpc2FibGVke2JhY2tncm91bmQ6dmFyKC0tbXMtb3B0aW9uLWJnLWRpc2FibGVkLCNmZmYpO2NvbG9yOnZhcigtLW1zLW9wdGlvbi1jb2xvci1kaXNhYmxlZCwjZDFkNWRiKTtjdXJzb3I6bm90LWFsbG93ZWR9Lm11bHRpc2VsZWN0LW9wdGlvbi5pcy1zZWxlY3RlZC5pcy1wb2ludGVke2JhY2tncm91bmQ6dmFyKC0tbXMtb3B0aW9uLWJnLXNlbGVjdGVkLXBvaW50ZWQsIzI2YzA4ZSk7Y29sb3I6dmFyKC0tbXMtb3B0aW9uLWNvbG9yLXNlbGVjdGVkLXBvaW50ZWQsI2ZmZil9Lm11bHRpc2VsZWN0LW9wdGlvbi5pcy1zZWxlY3RlZC5pcy1kaXNhYmxlZHtiYWNrZ3JvdW5kOnZhcigtLW1zLW9wdGlvbi1iZy1zZWxlY3RlZC1kaXNhYmxlZCwjODdkY2MwKTtjb2xvcjp2YXIoLS1tcy1vcHRpb24tY29sb3Itc2VsZWN0ZWQtZGlzYWJsZWQsI2QxZmFlNSl9Lm11bHRpc2VsZWN0LW5vLW9wdGlvbnMsLm11bHRpc2VsZWN0LW5vLXJlc3VsdHN7Y29sb3I6dmFyKC0tbXMtZW1wdHktY29sb3IsIzRiNTU2Myk7cGFkZGluZzp2YXIoLS1tcy1vcHRpb24tcHksLjVyZW0pIHZhcigtLW1zLW9wdGlvbi1weCwuNzVyZW0pfS5tdWx0aXNlbGVjdC1mYWtlLWlucHV0e2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym9yZGVyOjA7Ym90dG9tOi0xcHg7Zm9udC1zaXplOjA7aGVpZ2h0OjFweDtsZWZ0OjA7b3V0bGluZTpub25lO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3dpZHRoOjEwMCV9Lm11bHRpc2VsZWN0LWZha2UtaW5wdXQ6YWN0aXZlLC5tdWx0aXNlbGVjdC1mYWtlLWlucHV0OmZvY3Vze291dGxpbmU6bm9uZX0ubXVsdGlzZWxlY3Qtc3BhY2Vye2Rpc3BsYXk6bm9uZX1bZGlyPXJ0bF0gLm11bHRpc2VsZWN0LW11bHRpcGxlLWxhYmVsLFtkaXI9cnRsXSAubXVsdGlzZWxlY3QtcGxhY2Vob2xkZXIsW2Rpcj1ydGxdIC5tdWx0aXNlbGVjdC1zaW5nbGUtbGFiZWx7bGVmdDphdXRvO3BhZGRpbmctbGVmdDpjYWxjKDEuMjVyZW0gKyB2YXIoLS1tcy1weCwgLjg3NXJlbSkqMyk7cGFkZGluZy1yaWdodDp2YXIoLS1tcy1weCwuODc1cmVtKTtyaWdodDowfVtkaXI9cnRsXSAubXVsdGlzZWxlY3Qtc2VhcmNoe3BhZGRpbmctbGVmdDowO3BhZGRpbmctcmlnaHQ6dmFyKC0tbXMtcHgsLjg3NXJlbSl9W2Rpcj1ydGxdIC5tdWx0aXNlbGVjdC10YWdze3BhZGRpbmctbGVmdDowO3BhZGRpbmctcmlnaHQ6dmFyKC0tbXMtcHksLjVyZW0pfVtkaXI9cnRsXSAubXVsdGlzZWxlY3QtdGFne21hcmdpbi1sZWZ0OnZhcigtLW1zLXRhZy1teCwuMjVyZW0pO21hcmdpbi1yaWdodDowO3BhZGRpbmc6dmFyKC0tbXMtdGFnLXB5LC4xMjVyZW0pIHZhcigtLW1zLXRhZy1weCwuNXJlbSkgdmFyKC0tbXMtdGFnLXB5LC4xMjVyZW0pIDB9W2Rpcj1ydGxdIC5tdWx0aXNlbGVjdC10YWcuaXMtZGlzYWJsZWR7cGFkZGluZy1sZWZ0OnZhcigtLW1zLXRhZy1weCwuNXJlbSl9W2Rpcj1ydGxdIC5tdWx0aXNlbGVjdC1jYXJldCxbZGlyPXJ0bF0gLm11bHRpc2VsZWN0LXNwaW5uZXJ7bWFyZ2luOjAgMCAwIHZhcigtLW1zLXB4LC44NzVyZW0pfVtkaXI9cnRsXSAubXVsdGlzZWxlY3QtY2xlYXJ7cGFkZGluZzowIDAgMCB2YXIoLS1tcy1weCwuODc1cmVtKX1ALXdlYmtpdC1rZXlmcmFtZXMgbXVsdGlzZWxlY3Qtc3BpbnswJXt0cmFuc2Zvcm06cm90YXRlKDApfXRve3RyYW5zZm9ybTpyb3RhdGUoMXR1cm4pfX1Aa2V5ZnJhbWVzIG11bHRpc2VsZWN0LXNwaW57MCV7dHJhbnNmb3JtOnJvdGF0ZSgwKX10b3t0cmFuc2Zvcm06cm90YXRlKDF0dXJuKX19XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0B2dWVmb3JtL211bHRpc2VsZWN0L3RoZW1lcy9kZWZhdWx0LmNzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQSxhQUFhLGtCQUFrQixDQUFDLDRCQUE0QixDQUFDLHNFQUFzRSxDQUFDLGtDQUFrQyxDQUFDLHFCQUFxQixDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsa0NBQWtDLENBQUMsd0JBQXdCLENBQUMsYUFBYSxDQUFDLCtIQUErSCxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMscUJBQXFCLDJEQUEyRCxDQUFDLHlCQUF5QiwyREFBMkQsQ0FBQyx5QkFBeUIsd0NBQXdDLENBQUMsY0FBYyxDQUFDLHVCQUF1QixvRkFBb0YsQ0FBQywrRUFBK0Usa0JBQWtCLENBQUMsc0JBQXNCLENBQUMscUJBQXFCLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsdUNBQXVDLENBQUMsY0FBYyxDQUFDLGlDQUFpQyxDQUFDLHFEQUFxRCxDQUFDLG1CQUFtQixDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyx5QkFBeUIseUNBQXlDLENBQUMsK0JBQStCLGFBQWEsQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLHNCQUFzQixDQUFDLGtCQUFrQixDQUFDLG9CQUFvQix1QkFBdUIsQ0FBQyxvQkFBb0Is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QUE2QyxDQUFDLGtCQUFrQixDQUFDLDJDQUEyQyx1REFBdUQsQ0FBQyxrREFBa0QsQ0FBQyw0Q0FBNEMsd0RBQXdELENBQUMsc0RBQXNELENBQUMsZ0RBQWdELG1DQUFtQyxDQUFDLDREQUE0RCxDQUFDLHdCQUF3QixzQkFBc0IsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyw2REFBNkQsWUFBWSxDQUFDLG9CQUFvQixZQUFZLENBQUMsNkdBQTZHLFNBQVMsQ0FBQyxvREFBb0QsQ0FBQyxrQ0FBa0MsQ0FBQyxPQUFPLENBQUMsOEJBQThCLGNBQWMsQ0FBQyxrQ0FBa0MsQ0FBQyw0QkFBNEIsY0FBYyxDQUFDLGdDQUFnQyxDQUFDLDJCQUEyQixtQ0FBbUMsQ0FBQyxjQUFjLENBQUMsa0ZBQWtGLENBQUMsdUNBQXVDLG1DQUFtQyxDQUFDLDREQUE0RCxpQ0FBaUMsQ0FBQyw2QkFBNkIsa0NBQWtDLENBQUMsb0NBQW9DLEdBQUcsbUJBQW1CLENBQUMsR0FBRyx1QkFBdUIsQ0FBQyxDQUFDLDRCQUE0QixHQUFHLG1CQUFtQixDQUFDLEdBQUcsdUJBQXVCLENBQUNcIixcInNvdXJjZXNDb250ZW50XCI6W1wiLm11bHRpc2VsZWN0e2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kOnZhcigtLW1zLWJnLCNmZmYpO2JvcmRlcjp2YXIoLS1tcy1ib3JkZXItd2lkdGgsMXB4KSBzb2xpZCB2YXIoLS1tcy1ib3JkZXItY29sb3IsI2QxZDVkYik7Ym9yZGVyLXJhZGl1czp2YXIoLS1tcy1yYWRpdXMsNHB4KTtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpmbGV4O2ZvbnQtc2l6ZTp2YXIoLS1tcy1mb250LXNpemUsMXJlbSk7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO21hcmdpbjowIGF1dG87bWluLWhlaWdodDpjYWxjKHZhcigtLW1zLWJvcmRlci13aWR0aCwgMXB4KSoyICsgdmFyKC0tbXMtZm9udC1zaXplLCAxcmVtKSp2YXIoLS1tcy1saW5lLWhlaWdodCwgMS4zNzUpICsgdmFyKC0tbXMtcHksIC41cmVtKSoyKTtvdXRsaW5lOm5vbmU7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTAwJX0ubXVsdGlzZWxlY3QuaXMtb3Blbntib3JkZXItcmFkaXVzOnZhcigtLW1zLXJhZGl1cyw0cHgpIHZhcigtLW1zLXJhZGl1cyw0cHgpIDAgMH0ubXVsdGlzZWxlY3QuaXMtb3Blbi10b3B7Ym9yZGVyLXJhZGl1czowIDAgdmFyKC0tbXMtcmFkaXVzLDRweCkgdmFyKC0tbXMtcmFkaXVzLDRweCl9Lm11bHRpc2VsZWN0LmlzLWRpc2FibGVke2JhY2tncm91bmQ6dmFyKC0tbXMtYmctZGlzYWJsZWQsI2YzZjRmNik7Y3Vyc29yOmRlZmF1bHR9Lm11bHRpc2VsZWN0LmlzLWFjdGl2ZXtib3gtc2hhZG93OjAgMCAwIHZhcigtLW1zLXJpbmctd2lkdGgsM3B4KSB2YXIoLS1tcy1yaW5nLWNvbG9yLHJnYmEoMTYsMTg1LDEyOSwuMTg4KSl9Lm11bHRpc2VsZWN0LW11bHRpcGxlLWxhYmVsLC5tdWx0aXNlbGVjdC1wbGFjZWhvbGRlciwubXVsdGlzZWxlY3Qtc2luZ2xlLWxhYmVse2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmZsZXg7aGVpZ2h0OjEwMCU7bGVmdDowO2xpbmUtaGVpZ2h0OnZhcigtLW1zLWxpbmUtaGVpZ2h0LDEuMzc1KTttYXgtd2lkdGg6MTAwJTtwYWRkaW5nLWxlZnQ6dmFyKC0tbXMtcHgsLjg3NXJlbSk7cGFkZGluZy1yaWdodDpjYWxjKDEuMjVyZW0gKyB2YXIoLS1tcy1weCwgLjg3NXJlbSkqMyk7cG9pbnRlci1ldmVudHM6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MH0ubXVsdGlzZWxlY3QtcGxhY2Vob2xkZXJ7Y29sb3I6dmFyKC0tbXMtcGxhY2Vob2xkZXItY29sb3IsIzljYTNhZil9Lm11bHRpc2VsZWN0LXNpbmdsZS1sYWJlbC10ZXh0e2Rpc3BsYXk6YmxvY2s7bWF4LXdpZHRoOjEwMCU7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwfS5tdWx0aXNlbGVjdC1zZWFyY2h7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7YXBwZWFyYW5jZTpub25lO2JhY2tncm91bmQ6dmFyKC0tbXMtYmcsI2ZmZik7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czp2YXIoLS1tcy1yYWRpdXMsNHB4KTtib3R0b206MDtib3gtc2l6aW5nOmJvcmRlci1ib3g7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtoZWlnaHQ6MTAwJTtsZWZ0OjA7b3V0bGluZTpub25lO3BhZGRpbmctbGVmdDp2YXIoLS1tcy1weCwuODc1cmVtKTtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDowO3dpZHRoOjEwMCV9Lm11bHRpc2VsZWN0LXNlYXJjaDo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiwubXVsdGlzZWxlY3Qtc2VhcmNoOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uLC5tdWx0aXNlbGVjdC1zZWFyY2g6Oi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtYnV0dG9uLC5tdWx0aXNlbGVjdC1zZWFyY2g6Oi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtZGVjb3JhdGlvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0ubXVsdGlzZWxlY3QtdGFnc3thbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2ZsZXgtZ3JvdzoxO2ZsZXgtc2hyaW5rOjE7ZmxleC13cmFwOndyYXA7bWFyZ2luOnZhcigtLW1zLXRhZy1teSwuMjVyZW0pIDAgMDtwYWRkaW5nLWxlZnQ6dmFyKC0tbXMtcHksLjVyZW0pfS5tdWx0aXNlbGVjdC10YWd7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQ6dmFyKC0tbXMtdGFnLWJnLCMxMGI5ODEpO2JvcmRlci1yYWRpdXM6dmFyKC0tbXMtdGFnLXJhZGl1cyw0cHgpO2NvbG9yOnZhcigtLW1zLXRhZy1jb2xvciwjZmZmKTtkaXNwbGF5OmZsZXg7Zm9udC1zaXplOnZhcigtLW1zLXRhZy1mb250LXNpemUsLjg3NXJlbSk7Zm9udC13ZWlnaHQ6dmFyKC0tbXMtdGFnLWZvbnQtd2VpZ2h0LDYwMCk7bGluZS1oZWlnaHQ6dmFyKC0tbXMtdGFnLWxpbmUtaGVpZ2h0LDEuMjVyZW0pO21hcmdpbi1ib3R0b206dmFyKC0tbXMtdGFnLW15LC4yNXJlbSk7bWFyZ2luLXJpZ2h0OnZhcigtLW1zLXRhZy1teCwuMjVyZW0pO3BhZGRpbmc6dmFyKC0tbXMtdGFnLXB5LC4xMjVyZW0pIDAgdmFyKC0tbXMtdGFnLXB5LC4xMjVyZW0pIHZhcigtLW1zLXRhZy1weCwuNXJlbSk7d2hpdGUtc3BhY2U6bm93cmFwfS5tdWx0aXNlbGVjdC10YWcuaXMtZGlzYWJsZWR7YmFja2dyb3VuZDp2YXIoLS1tcy10YWctYmctZGlzYWJsZWQsIzljYTNhZik7Y29sb3I6dmFyKC0tbXMtdGFnLWNvbG9yLWRpc2FibGVkLCNmZmYpO3BhZGRpbmctcmlnaHQ6dmFyKC0tbXMtdGFnLXB4LC41cmVtKX0ubXVsdGlzZWxlY3QtdGFnLXJlbW92ZXthbGlnbi1pdGVtczpjZW50ZXI7Ym9yZGVyLXJhZGl1czp2YXIoLS1tcy10YWctcmVtb3ZlLXJhZGl1cyw0cHgpO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21hcmdpbjp2YXIoLS1tcy10YWctcmVtb3ZlLW15LDApIHZhcigtLW1zLXRhZy1yZW1vdmUtbXgsLjEyNXJlbSk7cGFkZGluZzp2YXIoLS1tcy10YWctcmVtb3ZlLXB5LC4yNXJlbSkgdmFyKC0tbXMtdGFnLXJlbW92ZS1weCwuMjVyZW0pfS5tdWx0aXNlbGVjdC10YWctcmVtb3ZlOmhvdmVye2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDYzKX0ubXVsdGlzZWxlY3QtdGFnLXJlbW92ZS1pY29ue2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDouNzVyZW07LXdlYmtpdC1tYXNrLWltYWdlOnVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHZpZXdCb3g9JzAgMCAzMjAgNTEyJyBmaWxsPSdjdXJyZW50Q29sb3InIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGQ9J20yMDcuNiAyNTYgMTA3LjcyLTEwNy43MmM2LjIzLTYuMjMgNi4yMy0xNi4zNCAwLTIyLjU4bC0yNS4wMy0yNS4wM2MtNi4yMy02LjIzLTE2LjM0LTYuMjMtMjIuNTggMEwxNjAgMjA4LjQgNTIuMjggMTAwLjY4Yy02LjIzLTYuMjMtMTYuMzQtNi4yMy0yMi41OCAwTDQuNjggMTI1LjdjLTYuMjMgNi4yMy02LjIzIDE2LjM0IDAgMjIuNThMMTEyLjQgMjU2IDQuNjggMzYzLjcyYy02LjIzIDYuMjMtNi4yMyAxNi4zNCAwIDIyLjU4bDI1LjAzIDI1LjAzYzYuMjMgNi4yMyAxNi4zNCA2LjIzIDIyLjU4IDBMMTYwIDMwMy42bDEwNy43MiAxMDcuNzJjNi4yMyA2LjIzIDE2LjM0IDYuMjMgMjIuNTggMGwyNS4wMy0yNS4wM2M2LjIzLTYuMjMgNi4yMy0xNi4zNCAwLTIyLjU4TDIwNy42IDI1NnonLyUzRSUzQy9zdmclM0VcXFwiKTttYXNrLWltYWdlOnVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHZpZXdCb3g9JzAgMCAzMjAgNTEyJyBmaWxsPSdjdXJyZW50Q29sb3InIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGQ9J20yMDcuNiAyNTYgMTA3LjcyLTEwNy43MmM2LjIzLTYuMjMgNi4yMy0xNi4zNCAwLTIyLjU4bC0yNS4wMy0yNS4wM2MtNi4yMy02LjIzLTE2LjM0LTYuMjMtMjIuNTggMEwxNjAgMjA4LjQgNTIuMjggMTAwLjY4Yy02LjIzLTYuMjMtMTYuMzQtNi4yMy0yMi41OCAwTDQuNjggMTI1LjdjLTYuMjMgNi4yMy02LjIzIDE2LjM0IDAgMjIuNThMMTEyLjQgMjU2IDQuNjggMzYzLjcyYy02LjIzIDYuMjMtNi4yMyAxNi4zNCAwIDIyLjU4bDI1LjAzIDI1LjAzYzYuMjMgNi4yMyAxNi4zNCA2LjIzIDIyLjU4IDBMMTYwIDMwMy42bDEwNy43MiAxMDcuNzJjNi4yMyA2LjIzIDE2LjM0IDYuMjMgMjIuNTggMGwyNS4wMy0yNS4wM2M2LjIzLTYuMjMgNi4yMy0xNi4zNCAwLTIyLjU4TDIwNy42IDI1NnonLyUzRSUzQy9zdmclM0VcXFwiKTstd2Via2l0LW1hc2stcG9zaXRpb246Y2VudGVyO21hc2stcG9zaXRpb246Y2VudGVyOy13ZWJraXQtbWFzay1yZXBlYXQ6bm8tcmVwZWF0O21hc2stcmVwZWF0Om5vLXJlcGVhdDstd2Via2l0LW1hc2stc2l6ZTpjb250YWluO21hc2stc2l6ZTpjb250YWluO29wYWNpdHk6Ljg7d2lkdGg6Ljc1cmVtfS5tdWx0aXNlbGVjdC10YWdzLXNlYXJjaC13cmFwcGVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZsZXgtZ3JvdzoxO2ZsZXgtc2hyaW5rOjE7aGVpZ2h0OjEwMCU7bWFyZ2luOjAgdmFyKC0tbXMtdGFnLW14LDRweCkgdmFyKC0tbXMtdGFnLW15LDRweCk7cG9zaXRpb246cmVsYXRpdmV9Lm11bHRpc2VsZWN0LXRhZ3Mtc2VhcmNoLWNvcHl7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjFweDt2aXNpYmlsaXR5OmhpZGRlbjt3aGl0ZS1zcGFjZTpwcmUtd3JhcDt3aWR0aDoxMDAlfS5tdWx0aXNlbGVjdC10YWdzLXNlYXJjaHstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmU7Ym9yZGVyOjA7Ym90dG9tOjA7Ym94LXNpemluZzpib3JkZXItYm94O2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7bGVmdDowO291dGxpbmU6bm9uZTtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDt0b3A6MDt3aWR0aDoxMDAlfS5tdWx0aXNlbGVjdC10YWdzLXNlYXJjaDo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiwubXVsdGlzZWxlY3QtdGFncy1zZWFyY2g6Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24sLm11bHRpc2VsZWN0LXRhZ3Mtc2VhcmNoOjotd2Via2l0LXNlYXJjaC1yZXN1bHRzLWJ1dHRvbiwubXVsdGlzZWxlY3QtdGFncy1zZWFyY2g6Oi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtZGVjb3JhdGlvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0ubXVsdGlzZWxlY3QtaW5pZml0ZXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7bWluLWhlaWdodDpjYWxjKHZhcigtLW1zLWJvcmRlci13aWR0aCwgMXB4KSoyICsgdmFyKC0tbXMtZm9udC1zaXplLCAxcmVtKSp2YXIoLS1tcy1saW5lLWhlaWdodCwgMS4zNzUpICsgdmFyKC0tbXMtcHksIC41cmVtKSoyKTt3aWR0aDoxMDAlfS5tdWx0aXNlbGVjdC1pbmlmaXRlLXNwaW5uZXIsLm11bHRpc2VsZWN0LXNwaW5uZXJ7LXdlYmtpdC1hbmltYXRpb246bXVsdGlzZWxlY3Qtc3BpbiAxcyBsaW5lYXIgaW5maW5pdGU7YW5pbWF0aW9uOm11bHRpc2VsZWN0LXNwaW4gMXMgbGluZWFyIGluZmluaXRlO2JhY2tncm91bmQtY29sb3I6dmFyKC0tbXMtc3Bpbm5lci1jb2xvciwjMTBiOTgxKTtmbGV4LWdyb3c6MDtmbGV4LXNocmluazowO2hlaWdodDoxcmVtOy13ZWJraXQtbWFzay1pbWFnZTp1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB2aWV3Qm94PScwIDAgNTEyIDUxMicgZmlsbD0nY3VycmVudENvbG9yJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBkPSdtNDU2LjQzMyAzNzEuNzItMjcuNzktMTYuMDQ1Yy03LjE5Mi00LjE1Mi0xMC4wNTItMTMuMTM2LTYuNDg3LTIwLjYzNiAyNS44Mi01NC4zMjggMjMuNTY2LTExOC42MDItNi43NjgtMTcxLjAzLTMwLjI2NS01Mi41MjktODQuODAyLTg2LjYyMS0xNDQuNzYtOTEuNDI0QzI2Mi4zNSA3MS45MjIgMjU2IDY0Ljk1MyAyNTYgNTYuNjQ5VjI0LjU2YzAtOS4zMSA3LjkxNi0xNi42MDkgMTcuMjA0LTE1Ljk2IDgxLjc5NSA1LjcxNyAxNTYuNDEyIDUxLjkwMiAxOTcuNjExIDEyMy40MDggNDEuMzAxIDcxLjM4NSA0My45OSAxNTkuMDk2IDguMDQyIDIzMi43OTItNC4wODIgOC4zNjktMTQuMzYxIDExLjU3NS0yMi40MjQgNi45MnonLyUzRSUzQy9zdmclM0VcXFwiKTttYXNrLWltYWdlOnVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHZpZXdCb3g9JzAgMCA1MTIgNTEyJyBmaWxsPSdjdXJyZW50Q29sb3InIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGQ9J200NTYuNDMzIDM3MS43Mi0yNy43OS0xNi4wNDVjLTcuMTkyLTQuMTUyLTEwLjA1Mi0xMy4xMzYtNi40ODctMjAuNjM2IDI1LjgyLTU0LjMyOCAyMy41NjYtMTE4LjYwMi02Ljc2OC0xNzEuMDMtMzAuMjY1LTUyLjUyOS04NC44MDItODYuNjIxLTE0NC43Ni05MS40MjRDMjYyLjM1IDcxLjkyMiAyNTYgNjQuOTUzIDI1NiA1Ni42NDlWMjQuNTZjMC05LjMxIDcuOTE2LTE2LjYwOSAxNy4yMDQtMTUuOTYgODEuNzk1IDUuNzE3IDE1Ni40MTIgNTEuOTAyIDE5Ny42MTEgMTIzLjQwOCA0MS4zMDEgNzEuMzg1IDQzLjk5IDE1OS4wOTYgOC4wNDIgMjMyLjc5Mi00LjA4MiA4LjM2OS0xNC4zNjEgMTEuNTc1LTIyLjQyNCA2LjkyeicvJTNFJTNDL3N2ZyUzRVxcXCIpOy13ZWJraXQtbWFzay1wb3NpdGlvbjpjZW50ZXI7bWFzay1wb3NpdGlvbjpjZW50ZXI7LXdlYmtpdC1tYXNrLXJlcGVhdDpuby1yZXBlYXQ7bWFzay1yZXBlYXQ6bm8tcmVwZWF0Oy13ZWJraXQtbWFzay1zaXplOmNvbnRhaW47bWFzay1zaXplOmNvbnRhaW47d2lkdGg6MXJlbTt6LWluZGV4OjEwfS5tdWx0aXNlbGVjdC1zcGlubmVye21hcmdpbjowIHZhcigtLW1zLXB4LC44NzVyZW0pIDAgMH0ubXVsdGlzZWxlY3QtY2xlYXJ7ZGlzcGxheTpmbGV4O2ZsZXgtZ3JvdzowO2ZsZXgtc2hyaW5rOjA7b3BhY2l0eToxO3BhZGRpbmc6MCB2YXIoLS1tcy1weCwuODc1cmVtKSAwIDA7cG9zaXRpb246cmVsYXRpdmU7dHJhbnNpdGlvbjouM3M7ei1pbmRleDoxMH0ubXVsdGlzZWxlY3QtY2xlYXI6aG92ZXIgLm11bHRpc2VsZWN0LWNsZWFyLWljb257YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1tcy1jbGVhci1jb2xvci1ob3ZlciwjMDAwKX0ubXVsdGlzZWxlY3QtY2xlYXItaWNvbntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLW1zLWNsZWFyLWNvbG9yLCM5OTkpO2Rpc3BsYXk6aW5saW5lLWJsb2NrOy13ZWJraXQtbWFzay1pbWFnZTp1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB2aWV3Qm94PScwIDAgMzIwIDUxMicgZmlsbD0nY3VycmVudENvbG9yJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBkPSdtMjA3LjYgMjU2IDEwNy43Mi0xMDcuNzJjNi4yMy02LjIzIDYuMjMtMTYuMzQgMC0yMi41OGwtMjUuMDMtMjUuMDNjLTYuMjMtNi4yMy0xNi4zNC02LjIzLTIyLjU4IDBMMTYwIDIwOC40IDUyLjI4IDEwMC42OGMtNi4yMy02LjIzLTE2LjM0LTYuMjMtMjIuNTggMEw0LjY4IDEyNS43Yy02LjIzIDYuMjMtNi4yMyAxNi4zNCAwIDIyLjU4TDExMi40IDI1NiA0LjY4IDM2My43MmMtNi4yMyA2LjIzLTYuMjMgMTYuMzQgMCAyMi41OGwyNS4wMyAyNS4wM2M2LjIzIDYuMjMgMTYuMzQgNi4yMyAyMi41OCAwTDE2MCAzMDMuNmwxMDcuNzIgMTA3LjcyYzYuMjMgNi4yMyAxNi4zNCA2LjIzIDIyLjU4IDBsMjUuMDMtMjUuMDNjNi4yMy02LjIzIDYuMjMtMTYuMzQgMC0yMi41OEwyMDcuNiAyNTZ6Jy8lM0UlM0Mvc3ZnJTNFXFxcIik7bWFzay1pbWFnZTp1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB2aWV3Qm94PScwIDAgMzIwIDUxMicgZmlsbD0nY3VycmVudENvbG9yJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBkPSdtMjA3LjYgMjU2IDEwNy43Mi0xMDcuNzJjNi4yMy02LjIzIDYuMjMtMTYuMzQgMC0yMi41OGwtMjUuMDMtMjUuMDNjLTYuMjMtNi4yMy0xNi4zNC02LjIzLTIyLjU4IDBMMTYwIDIwOC40IDUyLjI4IDEwMC42OGMtNi4yMy02LjIzLTE2LjM0LTYuMjMtMjIuNTggMEw0LjY4IDEyNS43Yy02LjIzIDYuMjMtNi4yMyAxNi4zNCAwIDIyLjU4TDExMi40IDI1NiA0LjY4IDM2My43MmMtNi4yMyA2LjIzLTYuMjMgMTYuMzQgMCAyMi41OGwyNS4wMyAyNS4wM2M2LjIzIDYuMjMgMTYuMzQgNi4yMyAyMi41OCAwTDE2MCAzMDMuNmwxMDcuNzIgMTA3LjcyYzYuMjMgNi4yMyAxNi4zNCA2LjIzIDIyLjU4IDBsMjUuMDMtMjUuMDNjNi4yMy02LjIzIDYuMjMtMTYuMzQgMC0yMi41OEwyMDcuNiAyNTZ6Jy8lM0UlM0Mvc3ZnJTNFXFxcIik7dHJhbnNpdGlvbjouM3N9Lm11bHRpc2VsZWN0LWNhcmV0LC5tdWx0aXNlbGVjdC1jbGVhci1pY29ue2hlaWdodDoxLjEyNXJlbTstd2Via2l0LW1hc2stcG9zaXRpb246Y2VudGVyO21hc2stcG9zaXRpb246Y2VudGVyOy13ZWJraXQtbWFzay1yZXBlYXQ6bm8tcmVwZWF0O21hc2stcmVwZWF0Om5vLXJlcGVhdDstd2Via2l0LW1hc2stc2l6ZTpjb250YWluO21hc2stc2l6ZTpjb250YWluO3dpZHRoOi42MjVyZW19Lm11bHRpc2VsZWN0LWNhcmV0e2JhY2tncm91bmQtY29sb3I6dmFyKC0tbXMtY2FyZXQtY29sb3IsIzk5OSk7ZmxleC1ncm93OjA7ZmxleC1zaHJpbms6MDttYXJnaW46MCB2YXIoLS1tcy1weCwuODc1cmVtKSAwIDA7LXdlYmtpdC1tYXNrLWltYWdlOnVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHZpZXdCb3g9JzAgMCAzMjAgNTEyJyBmaWxsPSdjdXJyZW50Q29sb3InIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGQ9J00zMS4zIDE5MmgyNTcuM2MxNy44IDAgMjYuNyAyMS41IDE0LjEgMzQuMUwxNzQuMSAzNTQuOGMtNy44IDcuOC0yMC41IDcuOC0yOC4zIDBMMTcuMiAyMjYuMUM0LjYgMjEzLjUgMTMuNSAxOTIgMzEuMyAxOTJ6Jy8lM0UlM0Mvc3ZnJTNFXFxcIik7bWFzay1pbWFnZTp1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB2aWV3Qm94PScwIDAgMzIwIDUxMicgZmlsbD0nY3VycmVudENvbG9yJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBkPSdNMzEuMyAxOTJoMjU3LjNjMTcuOCAwIDI2LjcgMjEuNSAxNC4xIDM0LjFMMTc0LjEgMzU0LjhjLTcuOCA3LjgtMjAuNSA3LjgtMjguMyAwTDE3LjIgMjI2LjFDNC42IDIxMy41IDEzLjUgMTkyIDMxLjMgMTkyeicvJTNFJTNDL3N2ZyUzRVxcXCIpO3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246cmVsYXRpdmU7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3M7ei1pbmRleDoxMH0ubXVsdGlzZWxlY3QtY2FyZXQuaXMtb3Blbntwb2ludGVyLWV2ZW50czphdXRvO3RyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKX0ubXVsdGlzZWxlY3QtZHJvcGRvd257LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7YmFja2dyb3VuZDp2YXIoLS1tcy1kcm9wZG93bi1iZywjZmZmKTtib3JkZXI6dmFyKC0tbXMtZHJvcGRvd24tYm9yZGVyLXdpZHRoLDFweCkgc29saWQgdmFyKC0tbXMtZHJvcGRvd24tYm9yZGVyLWNvbG9yLCNkMWQ1ZGIpO2JvcmRlci1yYWRpdXM6MCAwIHZhcigtLW1zLWRyb3Bkb3duLXJhZGl1cyw0cHgpIHZhcigtLW1zLWRyb3Bkb3duLXJhZGl1cyw0cHgpO2JvdHRvbTowO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bGVmdDpjYWxjKHZhcigtLW1zLWJvcmRlci13aWR0aCwgMXB4KSotMSk7bWFyZ2luLXRvcDpjYWxjKHZhcigtLW1zLWJvcmRlci13aWR0aCwgMXB4KSotMSk7bWF4LWhlaWdodDoxNXJlbTttYXgtaGVpZ2h0OnZhcigtLW1zLW1heC1oZWlnaHQsMTByZW0pO291dGxpbmU6bm9uZTtvdmVyZmxvdy15OnNjcm9sbDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDpjYWxjKHZhcigtLW1zLWJvcmRlci13aWR0aCwgMXB4KSotMSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTAwJSk7ei1pbmRleDoxMDB9Lm11bHRpc2VsZWN0LWRyb3Bkb3duLmlzLXRvcHtib3JkZXItcmFkaXVzOnZhcigtLW1zLWRyb3Bkb3duLXJhZGl1cyw0cHgpIHZhcigtLW1zLWRyb3Bkb3duLXJhZGl1cyw0cHgpIDAgMDtib3R0b206YXV0bzt0b3A6dmFyKC0tbXMtYm9yZGVyLXdpZHRoLDFweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEwMCUpfS5tdWx0aXNlbGVjdC1kcm9wZG93bi5pcy1oaWRkZW57ZGlzcGxheTpub25lfS5tdWx0aXNlbGVjdC1vcHRpb25ze2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bGlzdC1zdHlsZTpub25lO21hcmdpbjowO3BhZGRpbmc6MH0ubXVsdGlzZWxlY3QtZ3JvdXB7bWFyZ2luOjA7cGFkZGluZzowfS5tdWx0aXNlbGVjdC1ncm91cC1sYWJlbHthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZDp2YXIoLS1tcy1ncm91cC1sYWJlbC1iZywjZTVlN2ViKTtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y29sb3I6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtY29sb3IsIzM3NDE1MSk7Y3Vyc29yOmRlZmF1bHQ7ZGlzcGxheTpmbGV4O2ZvbnQtc2l6ZTouODc1cmVtO2ZvbnQtd2VpZ2h0OjYwMDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDtsaW5lLWhlaWdodDp2YXIoLS1tcy1ncm91cC1sYWJlbC1saW5lLWhlaWdodCwxLjM3NSk7cGFkZGluZzp2YXIoLS1tcy1ncm91cC1sYWJlbC1weSwuM3JlbSkgdmFyKC0tbXMtZ3JvdXAtbGFiZWwtcHgsLjc1cmVtKTt0ZXh0LWFsaWduOmxlZnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmV9Lm11bHRpc2VsZWN0LWdyb3VwLWxhYmVsLmlzLXBvaW50YWJsZXtjdXJzb3I6cG9pbnRlcn0ubXVsdGlzZWxlY3QtZ3JvdXAtbGFiZWwuaXMtcG9pbnRlZHtiYWNrZ3JvdW5kOnZhcigtLW1zLWdyb3VwLWxhYmVsLWJnLXBvaW50ZWQsI2QxZDVkYik7Y29sb3I6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtY29sb3ItcG9pbnRlZCwjMzc0MTUxKX0ubXVsdGlzZWxlY3QtZ3JvdXAtbGFiZWwuaXMtc2VsZWN0ZWR7YmFja2dyb3VuZDp2YXIoLS1tcy1ncm91cC1sYWJlbC1iZy1zZWxlY3RlZCwjMDU5NjY5KTtjb2xvcjp2YXIoLS1tcy1ncm91cC1sYWJlbC1jb2xvci1zZWxlY3RlZCwjZmZmKX0ubXVsdGlzZWxlY3QtZ3JvdXAtbGFiZWwuaXMtZGlzYWJsZWR7YmFja2dyb3VuZDp2YXIoLS1tcy1ncm91cC1sYWJlbC1iZy1kaXNhYmxlZCwjZjNmNGY2KTtjb2xvcjp2YXIoLS1tcy1ncm91cC1sYWJlbC1jb2xvci1kaXNhYmxlZCwjZDFkNWRiKTtjdXJzb3I6bm90LWFsbG93ZWR9Lm11bHRpc2VsZWN0LWdyb3VwLWxhYmVsLmlzLXNlbGVjdGVkLmlzLXBvaW50ZWR7YmFja2dyb3VuZDp2YXIoLS1tcy1ncm91cC1sYWJlbC1iZy1zZWxlY3RlZC1wb2ludGVkLCMwYzllNzApO2NvbG9yOnZhcigtLW1zLWdyb3VwLWxhYmVsLWNvbG9yLXNlbGVjdGVkLXBvaW50ZWQsI2ZmZil9Lm11bHRpc2VsZWN0LWdyb3VwLWxhYmVsLmlzLXNlbGVjdGVkLmlzLWRpc2FibGVke2JhY2tncm91bmQ6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtYmctc2VsZWN0ZWQtZGlzYWJsZWQsIzc1Y2ZiMSk7Y29sb3I6dmFyKC0tbXMtZ3JvdXAtbGFiZWwtY29sb3Itc2VsZWN0ZWQtZGlzYWJsZWQsI2QxZmFlNSl9Lm11bHRpc2VsZWN0LWdyb3VwLW9wdGlvbnN7bWFyZ2luOjA7cGFkZGluZzowfS5tdWx0aXNlbGVjdC1vcHRpb257YWxpZ24taXRlbXM6Y2VudGVyO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmZsZXg7Zm9udC1zaXplOnZhcigtLW1zLW9wdGlvbi1mb250LXNpemUsMXJlbSk7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQ7bGluZS1oZWlnaHQ6dmFyKC0tbXMtb3B0aW9uLWxpbmUtaGVpZ2h0LDEuMzc1KTtwYWRkaW5nOnZhcigtLW1zLW9wdGlvbi1weSwuNXJlbSkgdmFyKC0tbXMtb3B0aW9uLXB4LC43NXJlbSk7dGV4dC1hbGlnbjpsZWZ0O3RleHQtZGVjb3JhdGlvbjpub25lfS5tdWx0aXNlbGVjdC1vcHRpb24uaXMtcG9pbnRlZHtiYWNrZ3JvdW5kOnZhcigtLW1zLW9wdGlvbi1iZy1wb2ludGVkLCNmM2Y0ZjYpO2NvbG9yOnZhcigtLW1zLW9wdGlvbi1jb2xvci1wb2ludGVkLCMxZjI5MzcpfS5tdWx0aXNlbGVjdC1vcHRpb24uaXMtc2VsZWN0ZWR7YmFja2dyb3VuZDp2YXIoLS1tcy1vcHRpb24tYmctc2VsZWN0ZWQsIzEwYjk4MSk7Y29sb3I6dmFyKC0tbXMtb3B0aW9uLWNvbG9yLXNlbGVjdGVkLCNmZmYpfS5tdWx0aXNlbGVjdC1vcHRpb24uaXMtZGlzYWJsZWR7YmFja2dyb3VuZDp2YXIoLS1tcy1vcHRpb24tYmctZGlzYWJsZWQsI2ZmZik7Y29sb3I6dmFyKC0tbXMtb3B0aW9uLWNvbG9yLWRpc2FibGVkLCNkMWQ1ZGIpO2N1cnNvcjpub3QtYWxsb3dlZH0ubXVsdGlzZWxlY3Qtb3B0aW9uLmlzLXNlbGVjdGVkLmlzLXBvaW50ZWR7YmFja2dyb3VuZDp2YXIoLS1tcy1vcHRpb24tYmctc2VsZWN0ZWQtcG9pbnRlZCwjMjZjMDhlKTtjb2xvcjp2YXIoLS1tcy1vcHRpb24tY29sb3Itc2VsZWN0ZWQtcG9pbnRlZCwjZmZmKX0ubXVsdGlzZWxlY3Qtb3B0aW9uLmlzLXNlbGVjdGVkLmlzLWRpc2FibGVke2JhY2tncm91bmQ6dmFyKC0tbXMtb3B0aW9uLWJnLXNlbGVjdGVkLWRpc2FibGVkLCM4N2RjYzApO2NvbG9yOnZhcigtLW1zLW9wdGlvbi1jb2xvci1zZWxlY3RlZC1kaXNhYmxlZCwjZDFmYWU1KX0ubXVsdGlzZWxlY3Qtbm8tb3B0aW9ucywubXVsdGlzZWxlY3Qtbm8tcmVzdWx0c3tjb2xvcjp2YXIoLS1tcy1lbXB0eS1jb2xvciwjNGI1NTYzKTtwYWRkaW5nOnZhcigtLW1zLW9wdGlvbi1weSwuNXJlbSkgdmFyKC0tbXMtb3B0aW9uLXB4LC43NXJlbSl9Lm11bHRpc2VsZWN0LWZha2UtaW5wdXR7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXI6MDtib3R0b206LTFweDtmb250LXNpemU6MDtoZWlnaHQ6MXB4O2xlZnQ6MDtvdXRsaW5lOm5vbmU7cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7d2lkdGg6MTAwJX0ubXVsdGlzZWxlY3QtZmFrZS1pbnB1dDphY3RpdmUsLm11bHRpc2VsZWN0LWZha2UtaW5wdXQ6Zm9jdXN7b3V0bGluZTpub25lfS5tdWx0aXNlbGVjdC1zcGFjZXJ7ZGlzcGxheTpub25lfVtkaXI9cnRsXSAubXVsdGlzZWxlY3QtbXVsdGlwbGUtbGFiZWwsW2Rpcj1ydGxdIC5tdWx0aXNlbGVjdC1wbGFjZWhvbGRlcixbZGlyPXJ0bF0gLm11bHRpc2VsZWN0LXNpbmdsZS1sYWJlbHtsZWZ0OmF1dG87cGFkZGluZy1sZWZ0OmNhbGMoMS4yNXJlbSArIHZhcigtLW1zLXB4LCAuODc1cmVtKSozKTtwYWRkaW5nLXJpZ2h0OnZhcigtLW1zLXB4LC44NzVyZW0pO3JpZ2h0OjB9W2Rpcj1ydGxdIC5tdWx0aXNlbGVjdC1zZWFyY2h7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDp2YXIoLS1tcy1weCwuODc1cmVtKX1bZGlyPXJ0bF0gLm11bHRpc2VsZWN0LXRhZ3N7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDp2YXIoLS1tcy1weSwuNXJlbSl9W2Rpcj1ydGxdIC5tdWx0aXNlbGVjdC10YWd7bWFyZ2luLWxlZnQ6dmFyKC0tbXMtdGFnLW14LC4yNXJlbSk7bWFyZ2luLXJpZ2h0OjA7cGFkZGluZzp2YXIoLS1tcy10YWctcHksLjEyNXJlbSkgdmFyKC0tbXMtdGFnLXB4LC41cmVtKSB2YXIoLS1tcy10YWctcHksLjEyNXJlbSkgMH1bZGlyPXJ0bF0gLm11bHRpc2VsZWN0LXRhZy5pcy1kaXNhYmxlZHtwYWRkaW5nLWxlZnQ6dmFyKC0tbXMtdGFnLXB4LC41cmVtKX1bZGlyPXJ0bF0gLm11bHRpc2VsZWN0LWNhcmV0LFtkaXI9cnRsXSAubXVsdGlzZWxlY3Qtc3Bpbm5lcnttYXJnaW46MCAwIDAgdmFyKC0tbXMtcHgsLjg3NXJlbSl9W2Rpcj1ydGxdIC5tdWx0aXNlbGVjdC1jbGVhcntwYWRkaW5nOjAgMCAwIHZhcigtLW1zLXB4LC44NzVyZW0pfUAtd2Via2l0LWtleWZyYW1lcyBtdWx0aXNlbGVjdC1zcGluezAle3RyYW5zZm9ybTpyb3RhdGUoMCl9dG97dHJhbnNmb3JtOnJvdGF0ZSgxdHVybil9fUBrZXlmcmFtZXMgbXVsdGlzZWxlY3Qtc3BpbnswJXt0cmFuc2Zvcm06cm90YXRlKDApfXRve3RyYW5zZm9ybTpyb3RhdGUoMXR1cm4pfX1cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qXG4gIE1JVCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXG4gIEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFcbiovXG4vLyBjc3MgYmFzZSBjb2RlLCBpbmplY3RlZCBieSB0aGUgY3NzLWxvYWRlclxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcpIHtcbiAgdmFyIGxpc3QgPSBbXTsgLy8gcmV0dXJuIHRoZSBsaXN0IG9mIG1vZHVsZXMgYXMgY3NzIHN0cmluZ1xuXG4gIGxpc3QudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHZhciBjb250ZW50ID0gY3NzV2l0aE1hcHBpbmdUb1N0cmluZyhpdGVtKTtcblxuICAgICAgaWYgKGl0ZW1bMl0pIHtcbiAgICAgICAgcmV0dXJuIFwiQG1lZGlhIFwiLmNvbmNhdChpdGVtWzJdLCBcIiB7XCIpLmNvbmNhdChjb250ZW50LCBcIn1cIik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH0pLmpvaW4oXCJcIik7XG4gIH07IC8vIGltcG9ydCBhIGxpc3Qgb2YgbW9kdWxlcyBpbnRvIHRoZSBsaXN0XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG5cblxuICBsaXN0LmkgPSBmdW5jdGlvbiAobW9kdWxlcywgbWVkaWFRdWVyeSwgZGVkdXBlKSB7XG4gICAgaWYgKHR5cGVvZiBtb2R1bGVzID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgIG1vZHVsZXMgPSBbW251bGwsIG1vZHVsZXMsIFwiXCJdXTtcbiAgICB9XG5cbiAgICB2YXIgYWxyZWFkeUltcG9ydGVkTW9kdWxlcyA9IHt9O1xuXG4gICAgaWYgKGRlZHVwZSkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItZGVzdHJ1Y3R1cmluZ1xuICAgICAgICB2YXIgaWQgPSB0aGlzW2ldWzBdO1xuXG4gICAgICAgIGlmIChpZCAhPSBudWxsKSB7XG4gICAgICAgICAgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpZF0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IG1vZHVsZXMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YXIgaXRlbSA9IFtdLmNvbmNhdChtb2R1bGVzW19pXSk7XG5cbiAgICAgIGlmIChkZWR1cGUgJiYgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpdGVtWzBdXSkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29udGludWVcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChtZWRpYVF1ZXJ5KSB7XG4gICAgICAgIGlmICghaXRlbVsyXSkge1xuICAgICAgICAgIGl0ZW1bMl0gPSBtZWRpYVF1ZXJ5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMl0gPSBcIlwiLmNvbmNhdChtZWRpYVF1ZXJ5LCBcIiBhbmQgXCIpLmNvbmNhdChpdGVtWzJdKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBsaXN0LnB1c2goaXRlbSk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBsaXN0O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gX3NsaWNlZFRvQXJyYXkoYXJyLCBpKSB7IHJldHVybiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB8fCBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB8fCBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkoYXJyLCBpKSB8fCBfbm9uSXRlcmFibGVSZXN0KCk7IH1cblxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlUmVzdCgpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTsgfVxuXG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/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 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxxRUFBcUUsc0RBQVM7QUFDOUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGlCQUFpQjtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQiw2Q0FBSTtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QyxtREFBTSxHQUFHO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQix3QkFBd0I7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQix1QkFBdUI7QUFDM0M7QUFDQTtBQUNBO0FBQ0EsYUFBYSxxREFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHVCQUF1QjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxxREFBUTtBQUNqQjtBQUNBO0FBQ0EsYUFBYSxxREFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMscURBQVE7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLHFEQUFRO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxxREFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnRUFBZ0UsUUFBUTtBQUN4RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLEtBQUssR0FBRztBQUN2QjtBQUNBLEtBQUssRUFBRTtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsdUJBQXVCO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQyxxREFBUTtBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixJQUFxQztBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLDZCQUE2QjtBQUN4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLDBDQUEwQyxJQUFJO0FBQzlDLHlCQUF5QixJQUFJO0FBQzdCO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxLQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLGdCQUFnQjtBQUM1QixnQ0FBZ0MsSUFBSSxJQUFJLDJEQUEyRCxFQUFFLHVCQUF1QixLQUFLLE9BQU87QUFDeEk7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLE1BQU07QUFDMUI7QUFDQTtBQUNBLGVBQWUsMkNBQUU7QUFDakIsY0FBYywyQ0FBRTtBQUNoQixxQkFBcUIsMkNBQUU7QUFDdkI7QUFDQTtBQUNBO0FBQ0EsZUFBZSxhQUFvQjtBQUNuQztBQUNBLHdDQUF3QztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG1EQUFNLEdBQUc7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQjtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixLQUFxQztBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksb0RBQU87QUFDbkIsNEJBQTRCLGlCQUFpQjtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGtCQUFrQjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQsb0RBQU87QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsbURBQU07QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxLQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isa0JBQWtCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGtCQUFrQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLEtBQXFDO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHNCQUFzQjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksdUJBQXVCO0FBQ25DLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksU0FBUztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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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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QUN4QixhQUFhLFNBQVM7QUFDdEIsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2YsRUFBRSxzRUFBWTtBQUNkLGFBQWEsNERBQU07QUFDbkI7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN4QnNDO0FBQ0k7QUFDZTtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaURBQWlELFdBQVc7QUFDNUQ7QUFDQSxpREFBaUQsV0FBVztBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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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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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUN0S0Q7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUNqRUQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ3JMRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDbEVEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ25IRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ2pFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNq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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDbExEO0FBQ0E7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFB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QUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUN0SUQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFD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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDdEhEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ3JGRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFj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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUN2SUQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2REFBNkQ7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDeEdEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDL0hEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVEQUF1RCxJQUFJO0FBQzNELDZEQUE2RCxJQUFJO0FBQ2pFLDREQUE0RCxJQUFJO0FBQ2hFLGtFQUFrRSxJQUFJO0FBQ3RFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDdEVEO0FBQ0E7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ2hHRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQzVGRDtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsS0FBSztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQzlHRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDck5EO0FBQ0E7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUN0RkQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ3JMRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUMzRUQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNELEdBQUcsS0FDb0MsV0FBVyxtQkFBTyxDQUFDLGtEQUFXO0FBQ3JFLEdBQUcsQ0FDc0I7QUFDekIsQ0FBQyw0QkFBNEI7O0FBRTdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDeklEO0FBQ0E7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUMzSUQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDOUZEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUM5RUQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUNqRUQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkLGlDQUFpQztBQUNqQyxjQUFjO0FBQ2QsZ0NBQWdDO0FBQ2hDLGNBQWM7QUFDZCxtQ0FBbUM7QUFDbkMsY0FBYztBQUNkLG1DQUFtQztBQUNuQyxjQUFjO0FBQ2QsZ0NBQWdDO0FBQ2hDLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDN0lEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ2xHRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDOUVEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsb0NBQW9DLElBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUMvSEQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUMzRUQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FB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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ2pMRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUEsQ0FBQzs7Ozs7Ozs7Ozs7QUM1RkQ7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRCxHQUFHLEtBQ29DLFdBQVcsbUJBQU8sQ0FBQyxrREFBVztBQUNyRSxHQUFHLENBQ3NCO0FBQ3pCLENBQUMsNEJBQTRCOztBQUU3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDaEVEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSzs7QUFFTDs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQzdERDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FBRyxLQUNvQyxXQUFXLG1CQUFPLENBQUMsa0RBQVc7QUFDckUsR0FBRyxDQUNzQjtBQUN6QixDQUFDLDRCQUE0Qjs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLOztBQUVMOztBQUVBLENBQUM7Ozs7Ozs7Ozs7O0FDMUZEO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0QsR0FB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QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx3QkFBd0IseUJBQXlCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsWUFBWTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0RBQWdEO0FBQ2hELHNCQUFzQjtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsY0FBYztBQUNsQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGlCQUFpQjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsS0FBSzs7QUFFTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsUUFBUTtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsUUFBUTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLFFBQVE7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLFFBQVE7QUFDNUI7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLFFBQVE7QUFDNUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx3QkFBd0IsT0FBTztBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CLE9BQU87QUFDM0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLE9BQU87QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxvQkFBb0I7QUFDcEIsMkJBQTJCO0FBQzNCOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixVQUFVO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLFFBQWE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLFNBQU87QUFDeEMsZ0JBQWdCLDhFQUFlLElBQVcsT0FBTyxDQUFDO0FBQ2xEO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxzQ0FBc0M7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQjtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLEVBQUUsSUFBSSxFQUFFO0FBQ3BDO0FBQ0EsNEJBQTRCLEVBQUUsSUFBSSxFQUFFO0FBQ3BDO0FBQ0E7QUFDQSxxQ0FBcUMsRUFBRTtBQUN2QywrQkFBK0IsRUFBRTtBQUNqQyxpQ0FBaUMsRUFBRTtBQUNuQywrQkFBK0IsRUFBRTtBQUNqQyw2QkFBNkIsRUFBRSxJQUFJLEVBQUU7QUFDckMsNEJBQTRCLEVBQUU7QUFDOUIsbUNBQW1DLEdBQUc7QUFDdEMsNkJBQTZCLEVBQUU7QUFDL0IsK0JBQStCLEVBQUUsSUFBSSxFQUFFO0FBQ3ZDLDhCQUE4QixFQUFFLElBQUksRUFBRTtBQUN0Qyw0QkFBNEIsRUFBRTtBQUM5QiwyQkFBMkIsRUFBRTtBQUM3Qix5QkFBeUIsRUFBRTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdEQUF3RCxJQUFJLDBEQUEwRCxJQUFJLHFFQUFxRSxFQUFFO0FBQ2pNO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHlDQUF5QyxPQUFPO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsT0FBTztBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLCtCQUErQjtBQUNuRDtBQUNBOztBQUVBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsY0FBYztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsZ0JBQWdCO0FBQ3BDO0FBQ0E7QUFDQSxzQ0FBc0M7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxtQ0FBbUMsaUJBQWlCO0FBQ3BEOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0EsVUFBVTtBQUNWO0FBQ0EsVUFBVTtBQUNWO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQSxVQUFVO0FBQ1Y7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFVBQVU7QUFDVjtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isb0JBQW9CO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CLGNBQWM7QUFDbEM7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixTQUFTO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsa0JBQWtCO0FBQ2xCOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLDRHQUE0RztBQUM1RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsaUJBQWlCO0FBQ3JDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsdUJBQXVCO0FBQzNDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyxzQkFBc0I7QUFDMUQ7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0Msc0JBQXNCO0FBQzFEO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0Esd0JBQXdCO0FBQ3hCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsT0FBTztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHFDQUFxQyxPQUFPO0FBQzVDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsT0FBTztBQUM1QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxPQUFPO0FBQzVDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLE9BQU87QUFDNUM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxPQUFPO0FBQzVDOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxQ0FBcUMsT0FBTztBQUM1QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx5QkFBeUIsbUJBQW1CO0FBQzVDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHNCQUFzQixtQkFBbUI7QUFDekM7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxvQkFBb0IsUUFBUTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsT0FBTztBQUMzQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLG9DQUFvQyxJQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7O0FBRUw7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxDQUFDOzs7Ozs7Ozs7OztBQ3BqTEQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixzQkFBc0I7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHNDQUFzQzs7QUFFdEM7QUFDQTtBQUNBOztBQUVBLDRCQUE0QjtBQUM1QjtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7Ozs7Ozs7Ozs7O0FDdkw3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxNQUFNLElBQTBDO0FBQ2hEO0FBQ0EsSUFBSSxpQ0FBTyxDQUFDLHlFQUFRLENBQUMsb0NBQUUsT0FBTztBQUFBO0FBQUE7QUFBQSxrR0FBQztBQUMvQixJQUFJLEtBQUssRUFxQk47QUFDSCxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxlQUFlO0FBQ3RCLFdBQVcsV0FBVyxPQUFPO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQixvQkFBb0I7QUFDcEIsbUJBQW1CO0FBQ25CLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsUUFBUTtBQUN2QixlQUFlLFFBQVE7QUFDdkI7QUFDQSxpQkFBaUIsUUFBUTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHdCQUF3QixpQkFBaUI7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHVDQUF1QyxPQUFPO0FBQzlDOztBQUVBO0FBQ0E7QUFDQTtBQUNBLCtDQUErQyxPQUFPO0FBQ3REOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkLDBDQUEwQztBQUMxQztBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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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 4b0a8f6a2a..3bc1c7db6f 100755 --- a/public/mix-manifest.json +++ b/public/mix-manifest.json @@ -1,10 +1,10 @@ { - "/js/app.js": "/js/app.js?id=4d43eb19bdeaa85e549c8e18238b9306", + "/js/app.js": "/js/app.js?id=9956c1c1f2c821ff595393b9f2e1ef0d", "/js/script.js": "/js/script.js?id=4920eb85d84da1e87cb71769c04a12a2", "/js/webportal-script.js": "/js/webportal-script.js?id=f9c23d4bccd261db9414465886315f45", "/js/formbuilder.js": "/js/formbuilder.js?id=96f1b9dd5890b8ff09e613117dd94592", "/manifest.js": "/manifest.js?id=3ed1124c8f4dcb98acc36de67cb80349", - "/css/webportal-app.css": "/css/webportal-app.css?id=bddd8eda6dc9fb7c04027a48f8ea8661", - "/css/app.css": "/css/app.css?id=dec2a1a8cfc46a0977049353fb4c0b3b", - "/js/vendor.js": "/js/vendor.js?id=70e967c5f70013669dbc79ccaf66654c" + "/css/webportal-app.css": "/css/webportal-app.css?id=42351d18b9f0a0bb419151f44fdb92e5", + "/css/app.css": "/css/app.css?id=0aa76a80a48aa11c46971c7e99b1eee7", + "/js/vendor.js": "/js/vendor.js?id=a2b55d447dfd8b187ce74d02597deb8a" } diff --git a/resources/assets/js/components/AdminHeader.vue b/resources/assets/js/components/AdminHeader.vue index cb11c80ce3..09f5308940 100644 --- a/resources/assets/js/components/AdminHeader.vue +++ b/resources/assets/js/components/AdminHeader.vue @@ -60,7 +60,7 @@ -